{"version":3,"mappings":"yhBAAA,SAASA,GAAoBC,EAAS,CAClC,OAAO,UAAY,CACf,IAAIC,EAAY,SAAUC,EAAM,CAC5B,OAAOA,EAAK,QAAQ,CAAE,KAAM,OAAO,SAAS,QAAQ,CAAE,CAClE,EACQ,KAAK,aAAaD,CAAS,CACnC,CACA,CACO,IAAIE,GAASJ,2CCLN,SAAS,0BCKjBK,GAAe,CACnB,CACE,KAAM,IACN,KAAM,OAEN,UAAW,UAAM,OAAO,2eACxB,YAAa,SAA2B,CAAC,CAC3C,EACA,CACE,KAAM,QACN,KAAM,qBACN,MAAO,GACP,UAAW,IAAMC,aAAO,0hBAC1B,EACA,CACE,KAAM,SACN,KAAM,gCACN,MAAO,GACP,UAAW,UAAM,OAAO,syBAC1B,EACA,CACE,KAAM,QACN,KAAM,qBACN,MAAO,GACP,UAAW,UAAM,OAAO,6YAC1B,CAMF,EAKMC,GAASC,EAAa,CAE1B,QAASC,EAAiB,EAG1B,OAAQJ,EACV,CAAC,ECmBDK,EAAQ,IAAIC,EAAc,CACxB,MAAOC,EAAgBC,EAAM,QAAQ,EACrC,QAAS,UACX,CAAC,EAGD,MAAMC,EAAW,IAAIJ,EAAQ,SAG7BI,EAAS,SAASC,CAAK,EACvBD,EAAS,SAASE,CAAS,EAC3BF,EAAS,SAASG,CAAS,EAC3BH,EAAS,SAASI,CAAc,EAChCJ,EAAS,SAASK,CAAM,EAExBL,EAAS,SAASM,CAAM,EACxBN,EAAS,SAASO,CAAa,EAC/BP,EAAS,SAASQ,CAAK,EACvBR,EAAS,SAASS,CAAK,EACvBT,EAAS,SAASU,CAAQ,EAC1BV,EAAS,SAASW,CAAK,EACvBX,EAAS,SAASY,CAAO,EACzBZ,EAAS,SAASa,CAAK,EACvBb,EAAS,SAASc,CAAS,EAC3Bd,EAAS,SAASe,CAAU,EAC5Bf,EAAS,SAASgB,CAAU,EAO5B,MAAMC,GAAQC,EAAY,CACxB,QAAS,CAACtB,EAAQ,QAAQI,CAAQ,CAAC,CACrC,CAAC,EAEKmB,GAAwB,CAC5B,WAAY,uCACZ,iBAAkB,uCAClB,YAAa,sCACf,QACA,MAAMC,GACJD,KAAsBE,WAAS,cAA2B,OAAO,IAA3C,cAA8C,QAAQ,cAAe,IAEvFC,EAAY,IAAIC,EAAU,CAC9B,IAAKH,GACL,SAAU,SAAS,KAAK,QAAQ,QAClC,CAAC,EACDE,EAAU,IAAIE,GAAoB,EAClCF,EAAU,IAAIpC,IAAqB,EACnCoC,EAAU,IAAIG,GAA0B,EAExC,KAAM,CAAE,eAAiB,IAAaH,CAAS,EAE/CI,EAAQ,IACNC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,EACF,EAEA,SAAS,iBAAiB,mBAAoB,IAAM,CAClD,MAAMC,EAAS,IAAI,IAAI,SAAS,SAAS,IAAI,EAAE,aAEzCC,EAAQ,CAEZ,SAAU,QAAQD,EAAO,IAAI,UAAU,CAAC,EACxC,SAAU,QAAQA,EAAO,IAAI,UAAU,CAAC,EACxC,KAAM,QAAQA,EAAO,IAAI,MAAM,CAAC,EAChC,aAAc,SAAS,KAAK,QAAQ,eAAiB,QAGjDE,EAAMC,EAAUC,GAAWH,CAAK,EAGlCC,YAAU,kBAAmBG,EAAe,EAC5CH,UAAQ,YAAa1B,CAAS,EAClC0B,EAAI,IAAIvD,EAAM,EACduD,EAAI,IAAI/B,EAAK,EACb+B,EAAI,IAAII,EAAiB,EACzBJ,EAAI,IAAIK,EAAY,EAChBL,SAAO,aAAeM,GAAaN,CAAG,EAC1CA,EAAI,OAAO,kBAAoB,GAC3BA,QAAM,SAAS,IAAI,CACzB,CAAC","names":["pathDecoratorPlugin","options","decorator","span","plugin","publicRoutes","__vitePreload","router","createRouter","createWebHistory","VuexORM","VuexORMAxios","applyConverters","axios","database","Video","Recording","VoiceOver","AudioRecording","Upload","Action","BrowserAction","Click","Input","Keypress","Pause","Overlay","Slide","TextSlide","VideoSlide","ImageSlide","store","createStore","appsignalFrontEndKeys","appsignalFrontEndKey","_a","appsignal","Appsignal","windowEventsPlugin","networkBreadcrumbsPlugin","library","faEye","faEyeSlash","faPause","faPlay","faStop","faStopCircle","faCaretLeft","faCaretRight","faStepBackward","faStepForward","faRotateLeft","faBackward","faForward","faChevronLeft","faVolumeUp","faVolumeMute","faExpand","faCompress","faClosedCaptioning","params","props","app","createApp","PublicApp","FontAwesomeIcon","TurbolinksAdapter","MotionPlugin","errorHandler"],"sources":["../../../node_modules/@appsignal/plugin-path-decorator/dist/esm/index.js","../../../app/javascript/public/PublicApp.vue","../../../app/javascript/public/public_router.ts","../../../app/javascript/entrypoints/public_app.ts"],"sourcesContent":["function pathDecoratorPlugin(options) {\n return function () {\n var decorator = function (span) {\n return span.setTags({ path: window.location.pathname });\n };\n this.addDecorator(decorator);\n };\n}\nexport var plugin = pathDecoratorPlugin;\n//# sourceMappingURL=index.js.map","\n\n\n \n\n","import { createRouter, createWebHashHistory, createWebHistory } from \"vue-router\";\n\n// 1. Define route components.\n// These can be imported from other files\n\n// 2. Define some routes\n// Each route should map to a component.\n// We'll talk about nested routes later.\nconst publicRoutes = [\n {\n path: \"/\",\n name: \"home\",\n // component: () => import(\"@components/VideoBrowser.vue\"),\n component: () => import(\"@views/Home.vue\"),\n beforeEnter: async (): Promise => {},\n },\n {\n name: \"share\",\n path: \"/share/:videoToken\",\n props: true,\n component: () => import(\"@public/SharePage.vue\"),\n },\n {\n name: \"player\",\n path: \"/embed/:videoToken/:language?\",\n props: true,\n component: () => import(\"@public/PublicPlayer.vue\"),\n },\n {\n name: \"guide\",\n path: \"/guide/:videoToken\",\n props: true,\n component: () => import(\"@public/PublicGuide.vue\"),\n },\n // {\n // path: \"/:pathMatch(.*)*\",\n // redirect: \"/\",\n // // component: NotFound,\n // },\n];\n\n// 3. Create the router instance and pass the `routes` option\n// You can pass in additional options here, but let's\n// keep it simple for now.\nconst router = createRouter({\n // 4. Provide the history implementation to use. We are using the hash history for simplicity here.\n history: createWebHistory(), // This relies on the server to handle our dynamic URLs\n // history: createWebHashHistory(), // TODO: replace with root based history\n // routes: publicRoutes,\n routes: publicRoutes,\n});\n\nexport default router;\n","import { createApp, provide } from \"vue\";\nimport TurbolinksAdapter from \"vue-turbolinks\";\nimport { MotionPlugin } from \"@vueuse/motion\";\n// import Button from \"@components/Button.vue\";\n// import Icon from \"@components/Icon.vue\";\nimport { FontAwesomeIcon } from \"@fortawesome/vue-fontawesome\";\nimport { library } from \"@fortawesome/fontawesome-svg-core\";\nimport { faEyeSlash, faEye } from \"@fortawesome/free-regular-svg-icons\";\n// _Regular_ FontAwesome icons should be referenced with a prefix.\n// For example: `:icon=\"['far','eye']\"`\nimport {\n faPlay,\n faStop,\n faStopCircle,\n faPause,\n faCaretLeft,\n faCaretRight,\n faStepBackward,\n faStepForward,\n faRotateLeft,\n faBackward,\n faForward,\n faChevronLeft,\n faVolumeUp,\n faVolumeMute,\n faExpand,\n faCompress,\n faClosedCaptioning,\n} from \"@fortawesome/free-solid-svg-icons\";\n// _Solid_ FontAwesome icons don’t need a prefix, so like: `icon=\"pause\"`\n\nimport Appsignal from \"@appsignal/javascript\";\nimport { useAppsignal } from \"@modules/appsignal\";\nimport { plugin as windowEventsPlugin } from \"@appsignal/plugin-window-events\";\nimport { plugin as pathDecoratorPlugin } from \"@appsignal/plugin-path-decorator\";\nimport { plugin as networkBreadcrumbsPlugin } from \"@appsignal/plugin-breadcrumbs-network\";\n\nimport { createStore } from \"vuex\";\nimport VuexORM from \"@vuex-orm/core\";\nimport VuexORMAxios from \"@vuex-orm/plugin-axios\";\nimport applyConverters from \"axios-case-converter\";\nimport axios from \"axios\";\n\nimport PublicApp from \"@public/PublicApp.vue\";\n\nimport Video from \"@models/Video\";\nimport Recording from \"@models/Recording\";\nimport VoiceOver from \"@models/VoiceOver\";\nimport AudioRecording from \"@models/AudioRecording\";\nimport Upload from \"@models/Upload\";\n\nimport router from \"@public/public_router\";\nimport {\n Action,\n BrowserAction,\n Click,\n Input,\n Keypress,\n Pause,\n Overlay,\n Slide,\n TextSlide,\n VideoSlide,\n ImageSlide,\n} from \"../models/ActionHierarchy\";\n\n// import \"@assets/stylesheets/frontend.scss\";\nimport \"@assets/stylesheets/public.scss\";\n\nVuexORM.use(VuexORMAxios, {\n axios: applyConverters(axios.create()),\n baseURL: \"/api/v1/\",\n});\n\n// Create a new instance of Database.\nconst database = new VuexORM.Database();\n\n// Register Models to Database.\ndatabase.register(Video);\ndatabase.register(Recording);\ndatabase.register(VoiceOver);\ndatabase.register(AudioRecording);\ndatabase.register(Upload);\n\ndatabase.register(Action);\ndatabase.register(BrowserAction);\ndatabase.register(Click);\ndatabase.register(Input);\ndatabase.register(Keypress);\ndatabase.register(Pause);\ndatabase.register(Overlay);\ndatabase.register(Slide);\ndatabase.register(TextSlide);\ndatabase.register(VideoSlide);\ndatabase.register(ImageSlide);\n\nconst collectionsPersistedToDisk = [\"preferences\"].map(\n (collection) => `entities.${collection}.data`,\n);\n\n// Create Vuex Store and register database through Vuex ORM.\nconst store = createStore({\n plugins: [VuexORM.install(database)],\n}); // For ES Module\n\nconst appsignalFrontEndKeys = {\n production: \"0e7c6b8c-796e-4e13-9368-4f5b5ca0be85\",\n production_debug: \"2556f7fe-17aa-47d6-b63e-9ec9b2c6981e\",\n development: \"2a51a8d7-8149-4a0b-abb3-481880ae7914\",\n};\nconst appsignalFrontEndKey =\n appsignalFrontEndKeys[document.querySelector(\":root\")?.dataset.environment || \"\"];\n\nconst appsignal = new Appsignal({\n key: appsignalFrontEndKey,\n revision: document.body.dataset.revision,\n});\nappsignal.use(windowEventsPlugin());\nappsignal.use(pathDecoratorPlugin());\nappsignal.use(networkBreadcrumbsPlugin());\n\nconst { errorHandler } = useAppsignal(appsignal);\n\nlibrary.add(\n faEye,\n faEyeSlash,\n faPause,\n faPlay,\n faStop,\n faStopCircle,\n faCaretLeft,\n faCaretRight,\n faStepBackward,\n faStepForward,\n faRotateLeft,\n faBackward,\n faForward,\n faChevronLeft,\n faVolumeUp,\n faVolumeMute,\n faExpand,\n faCompress,\n faClosedCaptioning,\n);\n\ndocument.addEventListener(\"DOMContentLoaded\", () => {\n const params = new URL(document.location.href).searchParams;\n\n const props = {\n // videoToken: document.body.dataset.videoToken,\n headless: Boolean(params.get(\"headless\")),\n autoplay: Boolean(params.get(\"autoplay\")),\n loop: Boolean(params.get(\"loop\")),\n replayCanvas: document.body.dataset.replayCanvas === \"true\",\n };\n // console.log(\"initializing app with props\", props);\n const app = createApp(PublicApp, props);\n // app.component(\"Button\", Button);\n // app.component(\"Icon\", Icon);\n app.component(\"FontAwesomeIcon\", FontAwesomeIcon);\n app.provide(\"appsignal\", appsignal);\n app.use(router);\n app.use(store);\n app.use(TurbolinksAdapter);\n app.use(MotionPlugin);\n app.config.errorHandler = errorHandler(app);\n app.config.unwrapInjectedRef = true; // default in vue 3.3\n app.mount(document.body);\n});\n"],"file":"assets/public_app.a150acaf.js"}