From b61a3d9589841a4aac975b6a454c8f471cda6b36 Mon Sep 17 00:00:00 2001 From: yileifeng Date: Tue, 16 Apr 2024 15:17:19 +0000 Subject: [PATCH] =?UTF-8?q?Deploying=20to=20gh-pages=20from=20@=20ramp4-pc?= =?UTF-8?q?ar4/storylines-editor@63e78ccd3a830aee3d65f518d7017c0f28f9f715?= =?UTF-8?q?=20=F0=9F=9A=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- advanced-config-editor/StorylinesSlideSchema.json | 5 ++++- .../{chunk-common.a6225c62.css => chunk-common.1b408323.css} | 2 +- advanced-config-editor/index-ca-en.html | 4 ++-- advanced-config-editor/index-ca-fr.html | 4 ++-- advanced-config-editor/index.html | 2 +- advanced-config-editor/js/chunk-common.06872484.js | 2 ++ advanced-config-editor/js/chunk-common.06872484.js.map | 1 + advanced-config-editor/js/chunk-common.73fa598f.js | 2 -- advanced-config-editor/js/chunk-common.73fa598f.js.map | 1 - 9 files changed, 13 insertions(+), 10 deletions(-) rename advanced-config-editor/css/{chunk-common.a6225c62.css => chunk-common.1b408323.css} (73%) create mode 100644 advanced-config-editor/js/chunk-common.06872484.js create mode 100644 advanced-config-editor/js/chunk-common.06872484.js.map delete mode 100644 advanced-config-editor/js/chunk-common.73fa598f.js delete mode 100644 advanced-config-editor/js/chunk-common.73fa598f.js.map diff --git a/advanced-config-editor/StorylinesSlideSchema.json b/advanced-config-editor/StorylinesSlideSchema.json index f8b194f2..9b728cb4 100644 --- a/advanced-config-editor/StorylinesSlideSchema.json +++ b/advanced-config-editor/StorylinesSlideSchema.json @@ -272,7 +272,7 @@ }, "videoType": { "type": "string", - "enum": ["local", "external", "YouTube"] + "enum": ["", "local", "external", "YouTube"] }, "thumbnailUrl": { "type": "string", @@ -316,6 +316,9 @@ }, { "$ref": "#/$defs/chartPanel" + }, + { + "$ref": "#/$defs/multimediaVideo" } ] }, diff --git a/advanced-config-editor/css/chunk-common.a6225c62.css b/advanced-config-editor/css/chunk-common.1b408323.css similarity index 73% rename from advanced-config-editor/css/chunk-common.a6225c62.css rename to advanced-config-editor/css/chunk-common.1b408323.css index e5bf29bb..b948e8e4 100644 --- a/advanced-config-editor/css/chunk-common.a6225c62.css +++ b/advanced-config-editor/css/chunk-common.1b408323.css @@ -1,4 +1,4 @@ -.ovwContainer .layerTile{max-width:none}body{font-size:16px}#app{font-family:Segoe UI,Tahoma,Geneva,Verdana,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color:#2c3e50;--sr-accent-colour:#00d2d3;--sr-content-background:#f9fafb;--sr-border-colour:#e5e7eb}#app .scroll-arrow{animation:bounce-light 1s 4.5}#app .scroll-arrow:hover{animation-iteration-count:infinite}@keyframes bounce-light{0%,to{transform:translateY(-10%);animationtimingfunction:cubic-bezier(.8,0,1,1)}50%{transform:translateY(0);animationtimingfunction:cubic-bezier(0,0,.2,1)}}.home-btn-container{height:60vh;width:40vh}.chart-item[data-v-1df36a82]{width:46%}.chart-item .handle[data-v-1df36a82]{cursor:move;cursor:grab;cursor:-webkit-grab}.confirm-button[data-v-4ed11748]{background-color:#000!important;color:#fff!important}.cancel-button[data-v-4ed11748]{background-color:#fff!important;border:1px solid #000!important}.name-label{text-align:left!important}.chart-btn{border:none!important}.highed-chart-frame-body{pointer-events:none}.highed-toolbar-right .highed-icon{min-width:0!important;min-height:0!important;padding-left:0!important}.panel.top.highed-scrollbar{margin-bottom:0!important}.highed-res-preview{padding:4px 0}.highed-res-number:disabled{border-color:hsla(0,0%,46.3%,.3)}.highed-res-number{line-height:normal;background-color:field;border-width:2px;border-style:inset}.image-item[data-v-5bdf84fc]{width:30%;cursor:move;cursor:grab;cursor:-webkit-grab}.image-item .image-file[data-v-5bdf84fc]{aspect-ratio:auto;max-height:300px}.image-item .image-container[data-v-5bdf84fc]{display:flex;align-items:center;justify-content:center;height:300px}.image-item button[data-v-5bdf84fc]{padding:0!important}.upload-image input[type=file][data-v-39ccfdb7]:not(:focus-visible){position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}.drag-label[data-v-39ccfdb7]{width:auto!important}.text-label[data-v-39ccfdb7]{width:25%!important;margin-right:.5rem!important;margin-bottom:0!important}.dragging[data-v-39ccfdb7]{background-color:#fffaf0;border-color:#fff}label[data-v-b0fb221e]{text-align:left!important}label[data-v-681c9c6b],label[data-v-6923af36]{text-align:left!important;width:-moz-fit-content!important;width:fit-content!important}select[data-v-681c9c6b]{border:1px solid #000;background:#fff;padding:.25rem .5rem}.map-item[data-v-681c9c6b]{width:300px;background:#eee;text-align:center;padding:25px;cursor:pointer}.map-item button[data-v-681c9c6b]{padding:0!important}.edit-map[data-v-681c9c6b]{content:url(../img/edit-icon.2e67cc99.svg);margin:0 auto;margin-bottom:20px}.add-map[data-v-681c9c6b]{content:url(../img/add.daae1e59.svg);margin:0 auto;margin-bottom:20px}input[type=number][data-v-681c9c6b]{width:76px}.video-file[data-v-2d1c87e5]{max-height:300px}.video-container[data-v-2d1c87e5]{display:flex;align-items:center;justify-content:center}button[data-v-2d1c87e5]{padding:0!important}.upload-video input[type=file][data-v-996fd9c6]:not(:focus-visible){position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}.drag-label[data-v-996fd9c6]{width:auto!important}.text-label[data-v-996fd9c6]{width:25%!important;margin-right:.5rem!important;margin-bottom:0!important}.dragging[data-v-996fd9c6]{background-color:#fffaf0;border-color:#fff}label[data-v-5b666f60]{text-align:left!important;width:-moz-fit-content!important;width:fit-content!important}select[data-v-5b666f60]{border:1px solid #000;background:#fff;padding:.25rem .5rem}.table-header th[data-v-5b666f60]{text-align:center;background-color:#ddd;padding:5px}.table-contents td[data-v-5b666f60]{text-align:center;padding:5px}.table-contents[data-v-5b666f60]:hover{background-color:#eee;cursor:pointer}.table-add-row th[data-v-5b666f60]{vertical-align:top;text-align:center;border-top:1px solid #ddd;padding:5px}.table-add-row button[data-v-5b666f60],.table-add-row input[type=text][data-v-5b666f60],.table-add-row select[data-v-5b666f60]{width:150px!important;text-align:center;font-weight:400;border:1px solid #000;padding:2px!important;margin-top:0!important}.table-header th{background-color:#ddd}.table-contents td,.table-header th{text-align:center;padding:5px}.table-contents:hover{background-color:#eee;cursor:pointer}.table-add-row th{vertical-align:top;text-align:center;border-top:1px solid #ddd;padding:5px}.table-add-row button,.table-add-row input[type=text],.table-add-row select{width:150px!important;text-align:center;font-weight:400;border:1px solid #000;padding:2px!important;margin-top:0!important}label[data-v-4c97a990]{text-align:left!important;margin-left:.5rem}input[type=checkbox][data-v-4c97a990]:checked{accent-color:#000;color:#fff}select[data-v-4c97a990]{border:1px solid #000;background:#fff;padding:.25rem .5rem}.table-of-contents-slide button[data-v-4c97a990]{padding:0;border:none}.toc-slide button[data-v-33456e0a]{border:none!important;background:none!important;padding:0!important;margin:0!important}.toc-slide button[data-v-33456e0a]:hover{background:none!important}.copy-select[data-v-33456e0a]{width:450px}.editor-container[data-v-ec080f10]{margin:0 auto}.editor-container label[data-v-ec080f10]{width:10vw;text-align:right;margin-right:15px;display:inline-block}.editor-container h3[data-v-ec080f10]{font-size:larger}.editor-container input[data-v-ec080f10]{padding:5px 10px;margin-top:5px;border:1px solid #000;display:inline}.editor-container .input-error[data-v-ec080f10]{border:1px solid red}.editor-container button[data-v-ec080f10]{padding:5px 12px;margin:0 10px;font-weight:600;transition-duration:.2s}.editor-container button[data-v-ec080f10]:hover:enabled{background-color:#dbdbdb;color:#000}.editor-container button[data-v-ec080f10]:disabled{border:1px solid grey;color:grey;cursor:not-allowed}.editor-toc button[data-v-ec080f10]{background-color:#f3f4f6;color:#000;border:none;transition-duration:.2s;padding:.25 .25em!important}.editor-header[data-v-ec080f10]{top:-1px;padding-top:9px}.fade-enter-active[data-v-ec080f10],.fade-leave-active[data-v-ec080f10]{transition:opacity .2s}.fade-enter[data-v-ec080f10],.fade-leave-to[data-v-ec080f10]{opacity:0}.storyramp-app h1,.storyramp-app h2,.storyramp-app h3,.storyramp-app h4,.storyramp-app h5,.storyramp-app h6,.vfm h1,.vfm h2,.vfm h3,.vfm h4,.vfm h5,.vfm h6{font-family:Segoe UI,Tahoma,Geneva,Verdana,sans-serif;line-height:1.5;border-bottom:0}.storyramp-app .editor-container,.vfm .editor-container{margin:0 auto}.storyramp-app .vfm__content,.vfm .vfm__content{max-width:80%}.storyramp-app .editor-container label,.storyramp-app .vfm__content label,.vfm .editor-container label,.vfm .vfm__content label{width:10vw;text-align:right;margin-right:15px;display:inline-block}.storyramp-app .editor-container h3,.vfm .editor-container h3{font-size:larger}.storyramp-app .editor-container input,.storyramp-app .vfm__content input,.vfm .editor-container input,.vfm .vfm__content input{padding:5px 10px;margin-top:5px;border:1px solid #000;display:inline}.storyramp-app .editor-container .input-error,.vfm .editor-container .input-error{border:1px solid red}.storyramp-app .editor-container button,.storyramp-app .vfm__content button,.vfm .editor-container button,.vfm .vfm__content button{padding:5px 12px;margin:0 10px;font-weight:600;transition-duration:.2s}.storyramp-app .editor-container button:hover:enabled,.storyramp-app .vfm__content button:hover:enabled,.vfm .editor-container button:hover:enabled,.vfm .vfm__content button:hover:enabled{background-color:#dbdbdb;color:#000}.storyramp-app .editor-container button:disabled,.storyramp-app .vfm__content button:disabled,.vfm .editor-container button:disabled,.vfm .vfm__content button:disabled{border:1px solid grey;color:grey;cursor:not-allowed}.storyramp-app .image-preview,.vfm .image-preview{max-width:150px;max-height:150px;display:inline}.storyramp-app .h1,.storyramp-app .h2,.storyramp-app .h3,.storyramp-app .h4,.storyramp-app .h5,.storyramp-app .h6,.storyramp-app h1,.storyramp-app h2,.storyramp-app h3,.storyramp-app h4,.storyramp-app h5,.storyramp-app h6{font-family:Segoe UI,Tahoma,Geneva,Verdana,sans-serif;line-height:1.5;border-bottom:0}.storyramp-app .story-header{z-index:60}.storyramp-app .storyramp-modified{max-width:1536px;margin:0 auto;padding-left:15px;padding-top:1em;padding-bottom:1em}.storyramp-app .prose a{font-weight:700}.storyramp-app .prose a:not([panel]):after{content:url(../img/popout.fa21edcc.svg)}.storyramp-app .w-mobile-full{width:80%}@media screen and (max-width:640px){.w-mobile-full{width:100%!important}} +.ovwContainer .layerTile{max-width:none}body{font-size:16px}#app{font-family:Segoe UI,Tahoma,Geneva,Verdana,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color:#2c3e50;--sr-accent-colour:#00d2d3;--sr-content-background:#f9fafb;--sr-border-colour:#e5e7eb}#app .scroll-arrow{animation:bounce-light 1s 4.5}#app .scroll-arrow:hover{animation-iteration-count:infinite}@keyframes bounce-light{0%,to{transform:translateY(-10%);animationtimingfunction:cubic-bezier(.8,0,1,1)}50%{transform:translateY(0);animationtimingfunction:cubic-bezier(0,0,.2,1)}}.home-btn-container{height:60vh;width:40vh}.chart-item[data-v-1df36a82]{width:46%}.chart-item .handle[data-v-1df36a82]{cursor:move;cursor:grab;cursor:-webkit-grab}.confirm-button[data-v-4ed11748]{background-color:#000!important;color:#fff!important}.cancel-button[data-v-4ed11748]{background-color:#fff!important;border:1px solid #000!important}.name-label{text-align:left!important}.chart-btn{border:none!important}.highed-chart-frame-body{pointer-events:none}.highed-toolbar-right .highed-icon{min-width:0!important;min-height:0!important;padding-left:0!important}.panel.top.highed-scrollbar{margin-bottom:0!important}.highed-res-preview{padding:4px 0}.highed-res-number:disabled{border-color:hsla(0,0%,46.3%,.3)}.highed-res-number{line-height:normal;background-color:field;border-width:2px;border-style:inset}[data-v-5cc9b9fc] .jsoneditor-vue{height:100vh}.image-item[data-v-5bdf84fc]{width:30%;cursor:move;cursor:grab;cursor:-webkit-grab}.image-item .image-file[data-v-5bdf84fc]{aspect-ratio:auto;max-height:300px}.image-item .image-container[data-v-5bdf84fc]{display:flex;align-items:center;justify-content:center;height:300px}.image-item button[data-v-5bdf84fc]{padding:0!important}.upload-image input[type=file][data-v-39ccfdb7]:not(:focus-visible){position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}.drag-label[data-v-39ccfdb7]{width:auto!important}.text-label[data-v-39ccfdb7]{width:25%!important;margin-right:.5rem!important;margin-bottom:0!important}.dragging[data-v-39ccfdb7]{background-color:#fffaf0;border-color:#fff}label[data-v-b0fb221e]{text-align:left!important}label[data-v-681c9c6b],label[data-v-6923af36]{text-align:left!important;width:-moz-fit-content!important;width:fit-content!important}select[data-v-681c9c6b]{border:1px solid #000;background:#fff;padding:.25rem .5rem}.map-item[data-v-681c9c6b]{width:300px;background:#eee;text-align:center;padding:25px;cursor:pointer}.map-item button[data-v-681c9c6b]{padding:0!important}.edit-map[data-v-681c9c6b]{content:url(../img/edit-icon.2e67cc99.svg);margin:0 auto;margin-bottom:20px}.add-map[data-v-681c9c6b]{content:url(../img/add.daae1e59.svg);margin:0 auto;margin-bottom:20px}input[type=number][data-v-681c9c6b]{width:76px}.video-file[data-v-2d1c87e5]{max-height:300px}.video-container[data-v-2d1c87e5]{display:flex;align-items:center;justify-content:center}button[data-v-2d1c87e5]{padding:0!important}.upload-video input[type=file][data-v-996fd9c6]:not(:focus-visible){position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}.drag-label[data-v-996fd9c6]{width:auto!important}.text-label[data-v-996fd9c6]{width:25%!important;margin-right:.5rem!important;margin-bottom:0!important}.dragging[data-v-996fd9c6]{background-color:#fffaf0;border-color:#fff}label[data-v-5b666f60]{text-align:left!important;width:-moz-fit-content!important;width:fit-content!important}select[data-v-5b666f60]{border:1px solid #000;background:#fff;padding:.25rem .5rem}.table-header th[data-v-5b666f60]{text-align:center;background-color:#ddd;padding:5px}.table-contents td[data-v-5b666f60]{text-align:center;padding:5px}.table-contents[data-v-5b666f60]:hover{background-color:#eee;cursor:pointer}.table-add-row th[data-v-5b666f60]{vertical-align:top;text-align:center;border-top:1px solid #ddd;padding:5px}.table-add-row button[data-v-5b666f60],.table-add-row input[type=text][data-v-5b666f60],.table-add-row select[data-v-5b666f60]{width:150px!important;text-align:center;font-weight:400;border:1px solid #000;padding:2px!important;margin-top:0!important}.table-header th{background-color:#ddd}.table-contents td,.table-header th{text-align:center;padding:5px}.table-contents:hover{background-color:#eee;cursor:pointer}.table-add-row th{vertical-align:top;text-align:center;border-top:1px solid #ddd;padding:5px}.table-add-row button,.table-add-row input[type=text],.table-add-row select{width:150px!important;text-align:center;font-weight:400;border:1px solid #000;padding:2px!important;margin-top:0!important}label[data-v-4c97a990]{text-align:left!important;margin-left:.5rem}input[type=checkbox][data-v-4c97a990]:checked{accent-color:#000;color:#fff}select[data-v-4c97a990]{border:1px solid #000;background:#fff;padding:.25rem .5rem}.table-of-contents-slide button[data-v-4c97a990]{padding:0;border:none}.toc-slide button[data-v-33456e0a]{border:none!important;background:none!important;padding:0!important;margin:0!important}.toc-slide button[data-v-33456e0a]:hover{background:none!important}.copy-select[data-v-33456e0a]{width:450px}.editor-container[data-v-ec080f10]{margin:0 auto}.editor-container label[data-v-ec080f10]{width:10vw;text-align:right;margin-right:15px;display:inline-block}.editor-container h3[data-v-ec080f10]{font-size:larger}.editor-container input[data-v-ec080f10]{padding:5px 10px;margin-top:5px;border:1px solid #000;display:inline}.editor-container .input-error[data-v-ec080f10]{border:1px solid red}.editor-container button[data-v-ec080f10]{padding:5px 12px;margin:0 10px;font-weight:600;transition-duration:.2s}.editor-container button[data-v-ec080f10]:hover:enabled{background-color:#dbdbdb;color:#000}.editor-container button[data-v-ec080f10]:disabled{border:1px solid grey;color:grey;cursor:not-allowed}.editor-toc button[data-v-ec080f10]{background-color:#f3f4f6;color:#000;border:none;transition-duration:.2s;padding:.25 .25em!important}.editor-header[data-v-ec080f10]{top:-1px;padding-top:9px}.fade-enter-active[data-v-ec080f10],.fade-leave-active[data-v-ec080f10]{transition:opacity .2s}.fade-enter[data-v-ec080f10],.fade-leave-to[data-v-ec080f10]{opacity:0}.storyramp-app h1,.storyramp-app h2,.storyramp-app h3,.storyramp-app h4,.storyramp-app h5,.storyramp-app h6,.vfm h1,.vfm h2,.vfm h3,.vfm h4,.vfm h5,.vfm h6{font-family:Segoe UI,Tahoma,Geneva,Verdana,sans-serif;line-height:1.5;border-bottom:0}.storyramp-app .editor-container,.vfm .editor-container{margin:0 auto}.storyramp-app .vfm__content,.vfm .vfm__content{max-width:80%}.storyramp-app .editor-container label,.storyramp-app .vfm__content label,.vfm .editor-container label,.vfm .vfm__content label{width:10vw;text-align:right;margin-right:15px;display:inline-block}.storyramp-app .editor-container h3,.vfm .editor-container h3{font-size:larger}.storyramp-app .editor-container input,.storyramp-app .vfm__content input,.vfm .editor-container input,.vfm .vfm__content input{padding:5px 10px;margin-top:5px;border:1px solid #000;display:inline}.storyramp-app .editor-container .input-error,.vfm .editor-container .input-error{border:1px solid red}.storyramp-app .editor-container button,.storyramp-app .vfm__content button,.vfm .editor-container button,.vfm .vfm__content button{padding:5px 12px;margin:0 10px;font-weight:600;transition-duration:.2s}.storyramp-app .editor-container button:hover:enabled,.storyramp-app .vfm__content button:hover:enabled,.vfm .editor-container button:hover:enabled,.vfm .vfm__content button:hover:enabled{background-color:#dbdbdb;color:#000}.storyramp-app .editor-container button:disabled,.storyramp-app .vfm__content button:disabled,.vfm .editor-container button:disabled,.vfm .vfm__content button:disabled{border:1px solid grey;color:grey;cursor:not-allowed}.storyramp-app .image-preview,.vfm .image-preview{max-width:150px;max-height:150px;display:inline}.storyramp-app .h1,.storyramp-app .h2,.storyramp-app .h3,.storyramp-app .h4,.storyramp-app .h5,.storyramp-app .h6,.storyramp-app h1,.storyramp-app h2,.storyramp-app h3,.storyramp-app h4,.storyramp-app h5,.storyramp-app h6{font-family:Segoe UI,Tahoma,Geneva,Verdana,sans-serif;line-height:1.5;border-bottom:0}.storyramp-app .story-header{z-index:60}.storyramp-app .storyramp-modified{max-width:1536px;margin:0 auto;padding-left:15px;padding-top:1em;padding-bottom:1em}.storyramp-app .prose a{font-weight:700}.storyramp-app .prose a:not([panel]):after{content:url(../img/popout.fa21edcc.svg)}.storyramp-app .w-mobile-full{width:80%}@media screen and (max-width:640px){.w-mobile-full{width:100%!important}} /* ! tailwindcss v2.2.17 | MIT License | https://tailwindcss.com */ diff --git a/advanced-config-editor/index-ca-en.html b/advanced-config-editor/index-ca-en.html index da619ff1..b58a44d5 100644 --- a/advanced-config-editor/index-ca-en.html +++ b/advanced-config-editor/index-ca-en.html @@ -1,4 +1,4 @@ -RAMP Storylines
d<%= require('html-loader!../src/assets/static/cdts/top-en.html') %>
d<%= require('html-loader!../src/assets/static/cdts/top-en.html') %>
\ No newline at end of file + } \ No newline at end of file diff --git a/advanced-config-editor/index-ca-fr.html b/advanced-config-editor/index-ca-fr.html index 06245c9c..9bc55be5 100644 --- a/advanced-config-editor/index-ca-fr.html +++ b/advanced-config-editor/index-ca-fr.html @@ -1,4 +1,4 @@ -Scénarios de PCAR
d<%= require('html-loader!../src/assets/static/cdts/top-fr.html') %>
d<%= require('html-loader!../src/assets/static/cdts/top-fr.html') %>
\ No newline at end of file + } \ No newline at end of file diff --git a/advanced-config-editor/index.html b/advanced-config-editor/index.html index 115a6a05..63e25f54 100644 --- a/advanced-config-editor/index.html +++ b/advanced-config-editor/index.html @@ -1 +1 @@ -<%= htmlWebpackPlugin.options.title %>
\ No newline at end of file +<%= htmlWebpackPlugin.options.title %>
\ No newline at end of file diff --git a/advanced-config-editor/js/chunk-common.06872484.js b/advanced-config-editor/js/chunk-common.06872484.js new file mode 100644 index 00000000..1000dad9 --- /dev/null +++ b/advanced-config-editor/js/chunk-common.06872484.js @@ -0,0 +1,2 @@ +(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-common"],{0:function(e,t){},"012b":function(e,t,i){},"03b2":function(e,t,i){"use strict";i("2c0d")},"0b20":function(e,t,i){"use strict";i("7550")},"0bb1":function(e,t,i){"use strict";i("4f41")},1:function(e,t,i){e.exports=i("cd49")},"124a":function(e,t,i){},"1a83":function(e,t,i){},"1c29":function(e,t,i){"use strict";i("ed05")},"20bf":function(e,t,i){},"271c":function(e,t,i){},"2c0d":function(e,t,i){},"303e":function(e,t,i){"use strict";i("124a")},"38c8":function(e,t,i){},"3d6d":function(e,t){var i=[{key:"chapters.title",enValue:"Chapters",enValid:"1",frValue:"Chapitres",frValid:"1"},{key:"chapters.return",enValue:"Return to top",enValid:"1",frValue:"Retournez en haut",frValid:"1"},{key:"chapters.menu",enValue:"Toggle menu",enValid:"1",frValue:"Menu à bascule",frValid:"1"},{key:"scrollguard.desc",enValue:"Use ctrl + scroll to zoom the map",enValid:"1",frValue:"Utilisez les touches Ctrl et + pour faire un zoom de la carte",frValid:"1"},{key:"story.window.title",enValue:"RAMP Storylines",enValid:"1",frValue:"RAMP Storylines",frValid:"0"},{key:"story.date",enValue:"Date modified:",enValid:"1",frValue:"Date de modification:",frValid:"1"},{key:"story.error",enValue:"An error occurred while loading this Storylines product. See developer console for more information.",enValid:"1",frValue:"Une erreur est survenue pendant le chargement ce synopsis produit. Voir la console du promoteur pour obtenir de plus amples renseignements.",frValid:"1"},{key:"image.fullscreen",enValue:"Full Screen",enValid:"1",frValue:"Plein Écran",frValid:"1"},{key:"dynamic.back",enValue:"Back",enValid:"1",frValue:"Retour",frValid:"0"},{key:"dynamic.textSection",enValue:"Text Section",enValid:"1",frValue:"Section de texte",frValid:"1"},{key:"dynamic.panel.collection",enValue:"Panel Collection",enValid:"1",frValue:"Collection de panneaux",frValid:"1"},{key:"dynamic.panel.id",enValue:"Panel ID",enValid:"1",frValue:"No d’identification du panneau",frValid:"1"},{key:"dynamic.panel.type",enValue:"Panel Type",enValid:"1",frValue:"Type de panneaux",frValid:"1"},{key:"dynamic.panel.actions",enValue:"Panel Actions",enValid:"1",frValue:"Actions du panneau",frValid:"1"},{key:"dynamic.panel.idTaken",enValue:"Panel ID is already",enValid:"1",frValue:"Le nom du panneau est déjà utilisé",frValid:"1"},{key:"dynamic.panel.editor",enValue:"Panel Editor:",enValid:"1",frValue:"Éditeur de panneaux:",frValid:"1"},{key:"timeslider.expand",enValue:"Expand",enValid:"1",frValue:"Développer",frValid:"1"},{key:"timeslider.minimize",enValue:"Minimize",enValid:"1",frValue:"Réduire",frValid:"1"},{key:"timeslider.play",enValue:"Play",enValid:"1",frValue:"Lecture",frValid:"1"},{key:"timeslider.pause",enValue:"Pause",enValid:"1",frValue:"Pause",frValid:"1"},{key:"fullscreen.activate",enValue:"Enter Fullscreen",enValid:"1",frValue:"Afficher le mode plein écran",frValid:"1"},{key:"fullscreen.deactivate",enValue:"Exit Fullscreen",enValid:"1",frValue:"Quitter le mode plein écran",frValid:"1"},{key:"editor.window.title",enValue:"RAMP Storylines Editor",enValid:"1",frValue:"Éditeur de scénarios de la PCAR",frValid:"1"},{key:"editor.createProduct",enValue:"Create New Storylines Product",enValid:"1",frValue:"Créer un nouveau produit de scénarios",frValid:"1"},{key:"editor.editProduct",enValue:"Edit Existing Storylines Product",enValid:"1",frValue:"Modifier un produit de scénarios",frValid:"1"},{key:"editor.editMetadata",enValue:"Edit Project Metadata",enValid:"1",frValue:"Modifier les métadonnées d’un projet",frValid:"1"},{key:"editor.productDetails",enValue:"Storylines product details",enValid:"1",frValue:"Détails du produit de scénarios",frValid:"1"},{key:"editor.metadata.instructions",enValue:'Fill in metadata details about your new Storylines product. Use the "Preview" button to see what your slides will look like.',enValid:"1",frValue:"Inscrivez les métadonnées de votre nouveau produit de scénario. Utilisez la fonction « Afficher l’aperçu » pour voir à quoi ressemblent vos diapositives.",frValid:"1"},{key:"editor.uuid",enValue:"UUID",enValid:"1",frValue:"UUID",frValid:"0"},{key:"editor.uuid.exists",enValue:"UUID already exists. Saving this will overwrite existing product.",enValid:"1",frValue:"L’IDUU existe déjà. Enregistrer ce produit écrasera le produit existant.",frValid:"1"},{key:"editor.title",enValue:"Title",enValid:"1",frValue:"Titre",frValid:"1"},{key:"editor.logo",enValue:"Logo",enValid:"1",frValue:"Logo",frValid:"1"},{key:"editor.logoPreview",enValue:"Logo Preview",enValid:"1",frValue:"Aperçu du logo",frValid:"1"},{key:"editor.logoAltText",enValue:"Logo Alt Text",enValid:"1",frValue:"Lien contextuel",frValid:"1"},{key:"editor.logoAltText.desc",enValue:"For accessibility purposes, provide description text for the logo.",enValid:"1",frValue:"Pour des raisons d'accessibilité, fournissez un texte descriptif pour le logo.",frValid:"0"},{key:"editor.contextLink",enValue:"Context Link",enValid:"1",frValue:"Lien contextuel",frValid:"1"},{key:"editor.contextLink.info",enValue:"Context link shows up at the bottom of the page to provide additional resources for interested users.",enValid:"1",frValue:"Le lien contextuel apparaît au bas de la page et fournit des ressources supplémentaires aux utilisateurs intéressés.",frValid:"1"},{key:"editor.contextLabel",enValue:"Context Label",enValid:"1",frValue:"Étiquette de contexte",frValid:"1"},{key:"editor.contextLabel.info",enValue:"Context label shows up before the context link to explain what the link is for",enValid:"1",frValue:"L’étiquette de contexte apparaît avant le lien contextuel et explique à quoi sert le lien.",frValid:"1"},{key:"editor.dateModified",enValue:"Date Modified",enValid:"1",frValue:"Date de modification",frValid:"1"},{key:"editor.load",enValue:"Load",enValid:"1",frValue:"Charger",frValid:"1"},{key:"editor.browse",enValue:"Browse",enValid:"1",frValue:"Parcourir",frValid:"1"},{key:"editor.remove",enValue:"Remove",enValid:"1",frValue:"Supprimer",frValid:"1"},{key:"editor.back",enValue:"Back",enValid:"1",frValue:"Retour",frValid:"1"},{key:"editor.next",enValue:"Next",enValid:"1",frValue:"Suivant",frValid:"1"},{key:"editor.preview",enValue:"Preview",enValid:"1",frValue:"Afficher l’aperçu",frValid:"1"},{key:"editor.confirm",enValue:"Confirm",enValid:"1",frValue:"Confirmer",frValid:"1"},{key:"editor.cancel",enValue:"Cancel",enValid:"1",frValue:"Annuler",frValid:"1"},{key:"editor.unsavedChanges",enValue:"Unsaved changes",enValid:"1",frValue:"Modifications non enregistrées",frValid:"1"},{key:"editor.saveChanges",enValue:"Save Changes",enValid:"1",frValue:"Enregistrer les modifications",frValid:"1"},{key:"editor.label.or",enValue:"or",enValid:"1",frValue:"ou",frValid:"1"},{key:"editor.label.browse",enValue:"browse",enValid:"1",frValue:"parcourir",frValid:"1"},{key:"editor.label.upload",enValue:"to upload",enValid:"1",frValue:"téléverser",frValid:"1"},{key:"editor.savingChanges",enValue:"Saving...",enValid:"1",frValue:"Enregistrement...",frValid:"1"},{key:"editor.resetChanges",enValue:"Reset Changes",enValid:"1",frValue:"Annuler les modifications",frValid:"1"},{key:"editor.refreshChanges.modal",enValue:"Are you sure you want to reload the product? All unsaved changes will be lost.",enValid:"1",frValue:"Voulez-vous vraiment recharger ce produit? Toute modification non enregistrée sera perdue.",frValid:"1"},{key:"editor.changeLang.modal",enValue:"Are you sure you want to switch languages? Unsaved changes may be lost.",enValid:"1",frValue:"Voulez-vous vraiment changer de langue? Toute modification non enregistrée sera perdue.",frValid:"1"},{key:"editor.frenchConfig",enValue:"View French Config",enValid:"1",frValue:"Afficher la configuration en français",frValid:"1"},{key:"editor.englishConfig",enValue:"View English Config",enValid:"1",frValue:"Afficher la configuration en anglais",frValid:"1"},{key:"editor.returnToLanding",enValue:"Return to Landing",enValid:"1",frValue:"Retour à la page d’accueil",frValid:"1"},{key:"editor.customConfig",enValue:"Are you sure you want to overwrite slide config and save custom changes?",enValid:"1",frValue:"Are you sure you want to overwrite slide config and save custom changes?",frValid:"0"},{key:"editor.image.delete",enValue:"Delete Image",enValid:"1",frValue:"Supprimer l'image",frValid:"1"},{key:"editor.image.label.drag",enValue:"Drag your images here",enValid:"1",frValue:"Faites glisser vos images ici",frValid:"1"},{key:"editor.image.label.caption",enValue:"Caption",enValid:"1",frValue:"Légende",frValid:"1"},{key:"editor.image.reorder",enValue:"Click and drag to reorder images",enValid:"1",frValue:"Cliquez sur les images et faites-les glisser pour changer l’ordre.",frValid:"1"},{key:"editor.image.altTag",enValue:"Alt tag",enValid:"1",frValue:"Texte de remplacement",frValid:"1"},{key:"editor.image.slideshowCaption",enValue:"Slideshow Caption",enValid:"1",frValue:"Légende du diaporama",frValid:"1"},{key:"editor.image.loadingError",enValue:"An error occurred when trying to load image",enValid:"1",frValue:"Une erreur est survenue lors du chargement de l’image.",frValid:"1"},{key:"editor.video.title",enValue:"Video Title",enValid:"1",frValue:"Titre de la vidéo",frValid:"1"},{key:"editor.video.label.drag",enValue:"Drag your video file here",enValid:"1",frValue:"Glissez votre fichier vidéo ici",frValid:"1"},{key:"editor.video.label.captions",enValue:"Video Captions",enValid:"1",frValue:"Sous-titres",frValid:"1"},{key:"editor.video.label.transcript",enValue:"Video Transcript",enValid:"1",frValue:"Transcription",frValid:"1"},{key:"editor.video.label.upload",enValue:"Upload",enValid:"1",frValue:"Télécharger",frValid:"1"},{key:"editor.video.delete",enValue:"Delete Video",enValid:"1",frValue:"Supprimer la vidéo",frValid:"1"},{key:"editor.video.pasteUrl",enValue:"Paste the URL to a video",enValid:"1",frValue:"Paste the URL to a video",frValid:"0"},{key:"editor.chart.delete",enValue:"Delete Chart",enValid:"1",frValue:"Supprimer le graphique",frValid:"1"},{key:"editor.chart.label.name",enValue:"Name",enValid:"1",frValue:"Nom",frValid:"1"},{key:"editor.chart.label.edit",enValue:"Edit",enValid:"1",frValue:"Éditer",frValid:"1"},{key:"editor.chart.label.empty",enValue:"Empty",enValid:"1",frValue:"Vide",frValid:"1"},{key:"editor.chart.label.create",enValue:"Add new chart",enValid:"1",frValue:"Ajouter un nouveau graphique",frValid:"1"},{key:"editor.chart.label.info",enValue:"Interactive chart",enValid:"1",frValue:"[FR] Interactive chart",frValid:"0"},{key:"editor.chart.label.nameExists",enValue:"There is already an existing chart with the name {name}.",enValid:"1",frValue:"There is already an existing chart with the name {name}.",frValid:"0"},{key:"editor.chart.label.info",enValue:"Interactive charts ({num})",enValid:"1",frValue:"Graphiques interactifs ({num})",frValid:"1"},{key:"editor.chart.delete.confirm",enValue:"Are you sure you want to delete the chart {name}?",enValid:"1",frValue:"Voulez-vous vraiment supprimer le graphique {nom}?",frValid:"1"},{key:"editor.map.title",enValue:"Map title",enValid:"1",frValue:"Titre de la carte",frValid:"1"},{key:"editor.map.edit.cancel",enValue:"Cancel editing",enValid:"1",frValue:"Annuler les modifications",frValid:"1"},{key:"editor.map.edit",enValue:"Map editor",enValid:"1",frValue:"Éditeur de carte",frValid:"1"},{key:"editor.map.label.name",enValue:"Map config name",enValid:"1",frValue:"Nom de la configuration de la carte",frValid:"1"},{key:"editor.map.label.create",enValue:"Create New Configuration File",enValid:"1",frValue:"Créer un nouveau fichier de configuration",frValid:"1"},{key:"editor.map.label.edit",enValue:"Edit Map Configuration",enValid:"1",frValue:"Modifier la configuration de la carte",frValid:"1"},{key:"editor.map.scrollguard.enable",enValue:"Enable scrollguard",enValid:"1",frValue:"Activer le contrôle du défilement",frValid:"1"},{key:"editor.map.timeslider.enable",enValue:"Enable Time Slider:",enValid:"1",frValue:"Activer le curseur temporel:",frValid:"1"},{key:"editor.map.timeslider.edit",enValue:"Edit Time Slider Config",enValid:"1",frValue:"Modifier la configuration du curseur temporel",frValid:"1"},{key:"editor.map.timeslider.range",enValue:"Range:",enValid:"1",frValue:"Tranche:",frValid:"1"},{key:"editor.map.timeslider.start",enValue:"Start:",enValid:"1",frValue:"Début:",frValid:"1"},{key:"editor.map.timeslider.attribute",enValue:"Attribute:",enValid:"1",frValue:"Caractéristique:",frValid:"1"},{key:"editor.map.timeslider.layers",enValue:"(OPTIONAL) Comma separated Layer IDs:",enValid:"1",frValue:"(OPTIONAL) Comma separated Layer IDs:",frValid:"0"},{key:"editor.map.timeslider.to",enValue:"to",enValid:"1",frValue:"to",frValid:"0"},{key:"editor.map.timeslider.warning",enValue:"⚠️Warning! Please ensure that:",enValid:"1",frValue:"⚠️Avertissement! Veuillez vous assurer de ce qui suit:",frValid:"1"},{key:"editor.map.timeslider.warning.bullet1",enValue:"All range and start values are positive integers.",enValid:"1",frValue:"Toutes les valeurs de la tranche et du début sont des nombres entiers positifs.",frValid:"1"},{key:"editor.map.timeslider.warning.bullet2",enValue:'The "to" value is greater than or equal to the "from" value.',enValid:"1",frValue:"La valeur « À » est supérieure ou égale à la valeur « De ».",frValid:"1"},{key:"editor.map.timeslider.warning.end",enValue:"Otherwise, your time slider config cannot be saved.",enValid:"1",frValue:"Autrement",frValid:" la configuration du curseur temporel ne pourra pas être enregistrée."},{key:"editor.slideshow.label.info",enValue:"Slideshow items ({num})",enValid:"1",frValue:"[FR] Slideshow items ({num})",frValid:"0"},{key:"editor.slideshow.label.create",enValue:"Add new item",enValid:"1",frValue:"[FR] Add new item",frValid:"0"},{key:"editor.slideshow.label.edit",enValue:"Edit existing item",enValid:"1",frValue:"[FR] Edit existing item",frValid:"0"},{key:"editor.slideshow.label.type",enValue:"Type",enValid:"1",frValue:"[FR] Type",frValid:"0"},{key:"editor.slideshow.label.add",enValue:"Add",enValid:"1",frValue:"[FR] Add",frValid:"0"},{key:"editor.slides.title",enValue:"SLIDES",enValid:"1",frValue:"DIAPOSITIVES",frValid:"1"},{key:"editor.slides.addSlide",enValue:"New Slide",enValid:"1",frValue:"Nouvelle diapositive",frValid:"1"},{key:"editor.slides.copyFromLang",enValue:"Copy slides from the other language",enValid:"1",frValue:"Copier les diapositives de l’autre langue",frValid:"1"},{key:"editor.slides.deleteSlide.confirm",enValue:"Are you sure you want to delete the slide {title}?",enValid:"1",frValue:"Voulez-vous vraiment supprimer la diapositive {titre}?",frValid:"1"},{key:"editor.slides.changeSlide.confirm",enValue:"Are you sure you want to change the slide {title}? All unsaved progress will be lost.",enValid:"1",frValue:"Voulez-vous vraiment modifier la diapositive {titre}? Toute modification non enregistrée sera perdue.",frValid:"1"},{key:"editor.slides.makeFull",enValue:"Make the right panel the full slide",enValid:"1",frValue:"Mettre la diapositive complète dans le panneau de droite",frValid:"1"},{key:"editor.slides.copyAll",enValue:"Copy all",enValid:"1",frValue:"Copier tout",frValid:"1"},{key:"editor.slides.copy",enValue:"Copy",enValid:"1",frValue:"Copier",frValid:"1"},{key:"editor.slides.slide",enValue:"Slide",enValid:"1",frValue:"Diapositive",frValid:"1"},{key:"editor.slides.previousSlide",enValue:"Previous slide",enValid:"1",frValue:"Diapositive précédente",frValid:"1"},{key:"editor.slides.nextSlide",enValue:"Next slide",enValid:"1",frValue:"Diapositive suivante",frValid:"1"},{key:"editor.slides.leftPanel",enValue:"Left panel",enValid:"1",frValue:"Panneau de gauche",frValid:"1"},{key:"editor.slides.rightPanel",enValue:"Right panel",enValid:"1",frValue:"Panneau de droite",frValid:"1"},{key:"editor.slides.fullscreenPanel",enValue:"Fullscreen panel",enValid:"1",frValue:"Panneau plein écran",frValid:"1"},{key:"editor.slides.advanced",enValue:"Advanced",enValid:"1",frValue:"Avancé",frValid:"0"},{key:"editor.slides.contentType",enValue:"Content type",enValid:"1",frValue:"Type de contenu",frValid:"1"},{key:"editor.slides.content",enValue:"Content",enValid:"1",frValue:"Contenu",frValid:"1"},{key:"editor.slides.select",enValue:"Please select a slide to edit",enValid:"1",frValue:"Veuillez sélectionner une diapositive à modifier",frValid:"1"},{key:"editor.slides.panel.body",enValue:"Panel body",enValid:"1",frValue:"Corps du panneau",frValid:"1"},{key:"editor.slides.panel.title",enValue:"Panel title",enValid:"1",frValue:"Titre du panneau",frValid:"1"},{key:"editor.slides.intro",enValue:"Intro subtitle",enValid:"1",frValue:"Sous-titre de l’introduction",frValid:"1"},{key:"editor.slides.title",enValue:"Intro title",enValid:"1",frValue:"Titre de l’introduction",frValid:"1"},{key:"editor.tocOrientation",enValue:"Table of Contents Orientation",enValid:"1",frValue:"Orientation de la table des matières",frValid:"0"},{key:"editor.tocOrientation.info",enValue:"The table of contents orientation will be set to vertical in mobile view.",enValid:"1",frValue:"L'orientation de la table des matières sera définie sur verticale en vue mobile.",frValid:"0"},{key:"editor.tocOrientation.vertical",enValue:"Vertical",enValid:"1",frValue:"Vertical",frValid:"0"},{key:"editor.tocOrientation.horizontal",enValue:"Horizontal",enValid:"1",frValue:"Horizontal",frValid:"0"}];i.columns=["key","enValue","enValid","frValue","frValid"],e.exports=i},"480b":function(e,t,i){"use strict";i("012b")},"4f41":function(e,t,i){},"518e":function(e,t,i){},"5cf1":function(e,t,i){},"5cf4":function(e,t,i){"use strict";i("689c")},6381:function(e,t,i){},"689c":function(e,t,i){},"68ee":function(e,t,i){"use strict";i("20bf")},"6abc":function(e,t,i){"use strict";i("daa0")},"6f09":function(e,t,i){"use strict";i("85c0")},"73b0":function(e,t,i){"use strict";i("271c")},7550:function(e,t,i){},7847:function(e){e.exports=JSON.parse('{"comment":"","version":"3.3.2","language":"en","ui":{"title":"Interactive map","fullscreen":true,"navBar":{"zoom":"buttons","extra":["fullscreen","geoLocator","home","help"]},"appBar":{"basemap":true},"help":{"folderName":"default"},"sideMenu":{"items":[["fullscreen","export","touch","help","about"]],"logo":false},"legend":{"allowImport":false,"isOpen":{"large":true,"medium":false,"small":false}}},"services":{"proxyUrl":"https://maps.canada.ca/wmsproxy/ws/wmsproxy/executeFromProxy","exportMapUrl":"https://maps-cartes.ec.gc.ca/arcgis/rest/services/Utilities/PrintingTools/GPServer/Export%20Web%20Map%20Task","export":{"title":{"value":""},"map":{},"mapElements":{},"legend":{},"footnote":{"value":""}},"search":{"settings":{"categories":["CITY","HAM","IR","LTM","MUN1","MUN2","PROV","STM","TERR","TOWN","UTM","VILG","UNP"],"sortOrder":["CITY","HAM","IR","LTM","MUN1","MUN2","PROV","STM","TERR","TOWN","UTM","VILG","UNP"],"maxResults":1000,"officialOnly":true},"serviceUrls":{"geoNames":"https://geogratis.gc.ca/services/geoname/en/geonames.json","geoLocation":"https://geogratis.gc.ca/services/geolocation/en/locate?q=","geoSuggest":"https://geogratis.gc.ca/services/geolocation/en/suggest?q=","provinces":"https://geogratis.gc.ca/services/geoname/en/codes/province.json","types":"https://geogratis.gc.ca/services/geoname/en/codes/concise.json"}}},"map":{"initialBasemapId":"baseNrCan","components":{"geoSearch":{"enabled":true,"showGraphic":true,"showInfo":true},"mouseInfo":{"enabled":true,"spatialReference":{"wkid":4326}},"northArrow":{"enabled":false},"basemap":{"enabled":true},"overviewMap":{"enabled":true,"layerType":"imagery"},"scaleBar":{"enabled":true}},"extentSets":[{"id":"EXT_NRCAN_Lambert_3978","default":{"xmax":3049492,"xmin":-5281457,"ymax":4482193,"ymin":-983440},"spatialReference":{"wkid":3978}},{"id":"EXT_ESRI_World_AuxMerc_3857","default":{"xmax":-5007771.626060756,"xmin":-16632697.354854,"ymax":10015875.184845109,"ymin":5022907.964742964},"spatialReference":{"wkid":102100,"latestWkid":3857}}],"lodSets":[{"id":"LOD_NRCAN_Lambert_3978","lods":[{"level":0,"resolution":38364.660062653464,"scale":145000000},{"level":1,"resolution":22489.62831258996,"scale":85000000},{"level":2,"resolution":13229.193125052918,"scale":50000000},{"level":3,"resolution":7937.5158750317505,"scale":30000000},{"level":4,"resolution":4630.2175937685215,"scale":17500000},{"level":5,"resolution":2645.8386250105837,"scale":10000000},{"level":6,"resolution":1587.5031750063501,"scale":6000000},{"level":7,"resolution":926.0435187537042,"scale":3500000},{"level":8,"resolution":529.1677250021168,"scale":2000000},{"level":9,"resolution":317.50063500127004,"scale":1200000},{"level":10,"resolution":185.20870375074085,"scale":700000},{"level":11,"resolution":111.12522225044451,"scale":420000},{"level":12,"resolution":66.1459656252646,"scale":250000},{"level":13,"resolution":38.36466006265346,"scale":145000},{"level":14,"resolution":22.48962831258996,"scale":85000},{"level":15,"resolution":13.229193125052918,"scale":50000},{"level":16,"resolution":7.9375158750317505,"scale":30000},{"level":17,"resolution":4.6302175937685215,"scale":17500}]},{"id":"LOD_ESRI_World_AuxMerc_3857","lods":[{"level":0,"resolution":19567.87924099992,"scale":73957190.948944},{"level":1,"resolution":9783.93962049996,"scale":36978595.474472},{"level":2,"resolution":4891.96981024998,"scale":18489297.737236},{"level":3,"resolution":2445.98490512499,"scale":9244648.868618},{"level":4,"resolution":1222.992452562495,"scale":4622324.434309},{"level":5,"resolution":611.4962262813797,"scale":2311162.217155},{"level":6,"resolution":305.74811314055756,"scale":1155581.108577},{"level":7,"resolution":152.87405657041106,"scale":577790.554289},{"level":8,"resolution":76.43702828507324,"scale":288895.277144},{"level":9,"resolution":38.21851414253662,"scale":144447.638572},{"level":10,"resolution":19.10925707126831,"scale":72223.819286},{"level":11,"resolution":9.554628535634155,"scale":36111.909643},{"level":12,"resolution":4.77731426794937,"scale":18055.954822},{"level":13,"resolution":2.388657133974685,"scale":9027.977411},{"level":14,"resolution":1.1943285668550503,"scale":4513.988705},{"level":15,"resolution":0.5971642835598172,"scale":2256.994353},{"level":16,"resolution":0.29858214164761665,"scale":1128.497176},{"level":17,"resolution":0.14929107082380833,"scale":564.248588},{"level":18,"resolution":0.07464553541190416,"scale":282.124294},{"level":19,"resolution":0.03732276770595208,"scale":141.062147},{"level":20,"resolution":0.01866138385297604,"scale":70.5310735}]}],"legend":{"type":"autopopulate"},"layers":[],"tileSchemas":[{"id":"EXT_NRCAN_Lambert_3978#LOD_NRCAN_Lambert_3978","name":"Lambert Maps","extentSetId":"EXT_NRCAN_Lambert_3978","lodSetId":"LOD_NRCAN_Lambert_3978","hasNorthPole":true},{"id":"EXT_ESRI_World_AuxMerc_3857#LOD_ESRI_World_AuxMerc_3857","name":"Web Mercator Maps","extentSetId":"EXT_ESRI_World_AuxMerc_3857","lodSetId":"LOD_ESRI_World_AuxMerc_3857"}],"baseMaps":[{"id":"baseNrCan","name":"Canada Base Map - Transportation (CBMT)","description":"The Canada Base Map - Transportation (CBMT) web mapping services of the Earth Sciences Sector at Natural Resources Canada, are intended primarily for online mapping application users and developers.","altText":"The Canada Base Map - Transportation (CBMT)","layers":[{"id":"CBMT","layerType":"esriFeature","url":"https://maps-cartes.services.geo.ca/server2_serveur2/rest/services/BaseMaps/CBMT3978/MapServer"}],"tileSchemaId":"EXT_NRCAN_Lambert_3978#LOD_NRCAN_Lambert_3978"},{"id":"baseSimple","name":"Canada Base Map - Simple","description":"Canada Base Map - Simple","altText":"Canada base map - Simple","layers":[{"id":"SMR","layerType":"esriFeature","url":"https://maps-cartes.services.geo.ca/server2_serveur2/rest/services/BaseMaps/Simple/MapServer"}],"tileSchemaId":"EXT_NRCAN_Lambert_3978#LOD_NRCAN_Lambert_3978"},{"id":"baseCBME_CBCE_HS_RO_3978","name":"Canada Base Map - Elevation (CBME)","description":"The Canada Base Map - Elevation (CBME) web mapping services of the Earth Sciences Sector at Natural Resources Canada, is intended primarily for online mapping application users and developers.","altText":"Canada Base Map - Elevation (CBME)","layers":[{"id":"CBME_CBCE_HS_RO_3978","layerType":"esriFeature","url":"https://maps-cartes.services.geo.ca/server2_serveur2/rest/services/BaseMaps/CBME_CBCE_HS_RO_3978/MapServer"}],"tileSchemaId":"EXT_NRCAN_Lambert_3978#LOD_NRCAN_Lambert_3978"},{"id":"baseCBMT_CBCT_GEOM_3978","name":"Canada Base Map - Transportation (CBMT)","description":" The Canada Base Map - Transportation (CBMT) web mapping services of the Earth Sciences Sector at Natural Resources Canada, are intended primarily for online mapping application users and developers.","altText":"Canada Base Map - Transportation (CBMT)","layers":[{"id":"CBMT_CBCT_GEOM_3978","layerType":"esriFeature","url":"https://maps-cartes.services.geo.ca/server2_serveur2/rest/services/BaseMaps/CBMT_CBCT_GEOM_3978/MapServer"}],"tileSchemaId":"EXT_NRCAN_Lambert_3978#LOD_NRCAN_Lambert_3978"},{"id":"baseEsriWorld","name":"World Imagery","description":"World Imagery provides one meter or better satellite and aerial imagery in many parts of the world and lower resolution satellite imagery worldwide.","altText":"World Imagery","layers":[{"id":"World_Imagery","layerType":"esriFeature","url":"https://services.arcgisonline.com/arcgis/rest/services/World_Imagery/MapServer"}],"tileSchemaId":"EXT_ESRI_World_AuxMerc_3857#LOD_ESRI_World_AuxMerc_3857"},{"id":"baseEsriPhysical","name":"World Physical Map","description":"This map presents the Natural Earth physical map at 1.24km per pixel for the world and 500m for the coterminous United States.","altText":"World Physical Map","layers":[{"id":"World_Physical_Map","layerType":"esriFeature","url":"https://services.arcgisonline.com/arcgis/rest/services/World_Physical_Map/MapServer"}],"tileSchemaId":"EXT_ESRI_World_AuxMerc_3857#LOD_ESRI_World_AuxMerc_3857"},{"id":"baseEsriRelief","name":"World Shaded Relief","description":"This map portrays surface elevation as shaded relief. This map is used as a basemap layer to add shaded relief to other GIS maps, such as the ArcGIS Online World Street Map.","altText":"World Shaded Relief","layers":[{"id":"World_Shaded_Relief","layerType":"esriFeature","url":"https://services.arcgisonline.com/arcgis/rest/services/World_Shaded_Relief/MapServer"}],"tileSchemaId":"EXT_ESRI_World_AuxMerc_3857#LOD_ESRI_World_AuxMerc_3857"},{"id":"baseEsriStreet","name":"World Street Map","description":"This worldwide street map presents highway-level data for the world.","altText":"ESWorld Street Map","layers":[{"id":"World_Street_Map","layerType":"esriFeature","url":"https://services.arcgisonline.com/arcgis/rest/services/World_Street_Map/MapServer"}],"tileSchemaId":"EXT_ESRI_World_AuxMerc_3857#LOD_ESRI_World_AuxMerc_3857"},{"id":"baseEsriTerrain","name":"World Terrain Base","description":"This map is designed to be used as a base map by GIS professionals to overlay other thematic layers such as demographics or land cover.","altText":"World Terrain Base","layers":[{"id":"World_Terrain_Base","layerType":"esriFeature","url":"https://services.arcgisonline.com/arcgis/rest/services/World_Terrain_Base/MapServer"}],"tileSchemaId":"EXT_ESRI_World_AuxMerc_3857#LOD_ESRI_World_AuxMerc_3857"},{"id":"baseEsriTopo","name":"World Topographic Map","description":"This map is designed to be used as a basemap by GIS professionals and as a reference map by anyone.","altText":"World Topographic Map","layers":[{"id":"World_Topo_Map","layerType":"esriFeature","url":"https://services.arcgisonline.com/arcgis/rest/services/World_Topo_Map/MapServer"}],"tileSchemaId":"EXT_ESRI_World_AuxMerc_3857#LOD_ESRI_World_AuxMerc_3857"}]}}')},"85c0":function(e,t,i){},9972:function(e,t,i){"use strict";i("5cf1")},"9a2c":function(e,t,i){"use strict";i("dd0c")},a229:function(e,t,i){"use strict";i("6381")},a95a:function(e,t,i){"use strict";i("1a83")},b357:function(e,t,i){"use strict";i("c962")},c3a4:function(e,t,i){},c42e:function(e,t,i){"use strict";i("f944")},c666:function(e,t,i){"use strict";i("e289")},c962:function(e,t,i){},cd49:function(e,t,i){"use strict";i.r(t);var a=i("7a23");const l={id:"app",class:"storyramp-app bg-white"};function o(e,t,i,o,n,r){const s=Object(a["resolveComponent"])("router-view");return Object(a["openBlock"])(),Object(a["createElementBlock"])("div",l,[(Object(a["openBlock"])(),Object(a["createBlock"])(s,{key:e.$route.path}))])}var n=i("9ab4"),r=i("1b40");class s extends r["c"]{onRouteUpdate(e){var t;this.$i18n.locale=null!==(t=e.params.lang)&&void 0!==t?t:"en",e.params.lang&&(document.title=this.$t(e.meta.title))}}Object(n["a"])([Object(r["d"])("$route",{immediate:!0})],s.prototype,"onRouteUpdate",null);i("9a2c");var c=i("6b0d"),d=i.n(c);const u=d()(s,[["render",o]]);var m=u,p=i("ce1f");p["b"].registerHooks(["beforeRouterEnter","beforeRouteLeave","beforeRouteUpdate"]);const h={class:"flex justify-center"},b={class:"home-btn-container border-4 border-gray-400 border-solid m-24"},g={class:"text-2xl font-bold"},f={class:"home-btn-container border-4 border-gray-400 border-solid m-24"},v={class:"text-2xl font-bold"};function O(e,t,i,l,o,n){const r=Object(a["resolveComponent"])("router-link");return Object(a["openBlock"])(),Object(a["createElementBlock"])("div",h,[Object(a["createElementVNode"])("div",b,[Object(a["createVNode"])(r,{to:{name:"metadataNew"},class:"flex justify-center h-full w-full",target:""},{default:Object(a["withCtx"])(()=>[Object(a["createElementVNode"])("button",g,"+ "+Object(a["toDisplayString"])(e.$t("editor.createProduct")),1)]),_:1})]),Object(a["createElementVNode"])("div",f,[Object(a["createVNode"])(r,{to:{name:"metadataExisting"},class:"flex justify-center h-full w-full",target:""},{default:Object(a["withCtx"])(()=>[Object(a["createElementVNode"])("button",v,Object(a["toDisplayString"])(e.$t("editor.editProduct")),1)]),_:1})])])}class j extends r["c"]{}i("9972");const V=d()(j,[["render",O]]);var y=V;const S={class:"editor-container"},C={class:"px-20 py-5"},x={class:"flex"},E={class:"flex text-2xl font-bold mb-5"},w={class:"border py-5 w-5/6"},k={key:0,class:"text-red-500"},N={key:0,class:"text-yellow-500 rounded p-1 ml-2"},T=Object(a["createElementVNode"])("span",{class:"align-middle inline-block mr-1 pb-1 fill-current"},[Object(a["createElementVNode"])("svg",{"clip-rule":"evenodd","fill-rule":"evenodd","stroke-linejoin":"round","stroke-miterlimit":"2",viewBox:"0 0 24 24",width:"18",height:"18",xmlns:"http://www.w3.org/2000/svg"},[Object(a["createElementVNode"])("path",{d:"m2.095 19.886 9.248-16.5c.133-.237.384-.384.657-.384.272 0 .524.147.656.384l9.248 16.5c.064.115.096.241.096.367 0 .385-.309.749-.752.749h-18.496c-.44 0-.752-.36-.752-.749 0-.126.031-.252.095-.367zm9.907-6.881c-.414 0-.75.336-.75.75v3.5c0 .414.336.75.75.75s.75-.336.75-.75v-3.5c0-.414-.336-.75-.75-.75zm-.002-3c-.552 0-1 .448-1 1s.448 1 1 1 1-.448 1-1-.448-1-1-1z","fill-rule":"nonzero"})])],-1),_={class:"align-center inline-block select-none"},$={key:2,class:"inline-flex align-middle mb-1"},L=Object(a["createElementVNode"])("br",null,null,-1),I={class:"mb-4"},M={class:"flex mt-8"},B={class:"ml-auto"},D=["onClick"],F={slot:"header",class:"text-lg font-bold"},P={class:"w-full flex justify-end"};function R(e,t,i,l,o,n){const r=Object(a["resolveComponent"])("spinner"),s=Object(a["resolveComponent"])("metadata-content"),c=Object(a["resolveComponent"])("router-link"),d=Object(a["resolveComponent"])("confirmation-modal"),u=Object(a["resolveComponent"])("vue-final-modal"),m=Object(a["resolveComponent"])("editor");return Object(a["openBlock"])(),Object(a["createElementBlock"])("div",S,[e.loadEditor?Object(a["createCommentVNode"])("",!0):(Object(a["openBlock"])(),Object(a["createElementBlock"])(a["Fragment"],{key:0},[Object(a["createElementVNode"])("div",C,[Object(a["createElementVNode"])("div",x,[Object(a["createElementVNode"])("div",E,Object(a["toDisplayString"])(e.editExisting?e.$t("editor.editProduct"):e.$t("editor.createProduct")),1),Object(a["createElementVNode"])("button",{onClick:t[0]||(t[0]=t=>e.swapLang())},Object(a["toDisplayString"])("en"===e.configLang?e.$t("editor.frenchConfig"):e.$t("editor.englishConfig")),1)]),Object(a["createElementVNode"])("div",w,[Object(a["createElementVNode"])("label",null,["uuid"in e.reqFields?(Object(a["openBlock"])(),Object(a["createElementBlock"])("span",k,"*")):Object(a["createCommentVNode"])("",!0),Object(a["createTextVNode"])(" "+Object(a["toDisplayString"])(e.$t("editor.uuid"))+":",1)]),Object(a["withDirectives"])(Object(a["createElementVNode"])("input",{type:"text",onInput:t[1]||(t[1]=t=>{e.error=!1,e.reqFields.uuid=!0,e.checkUuid()}),"onUpdate:modelValue":t[2]||(t[2]=t=>e.uuid=t),class:Object(a["normalizeClass"])(["w-1/3",e.error||!e.reqFields.uuid?"input-error":""])},null,34),[[a["vModelText"],e.uuid]]),e.warning?(Object(a["openBlock"])(),Object(a["createElementBlock"])("span",N,[T,Object(a["createElementVNode"])("span",_,Object(a["toDisplayString"])(e.$t("editor.uuid.exists")),1)])):Object(a["createCommentVNode"])("",!0),e.editExisting?(Object(a["openBlock"])(),Object(a["createElementBlock"])("button",{key:1,onClick:t[3]||(t[3]=(...t)=>e.generateRemoteConfig&&e.generateRemoteConfig(...t)),class:Object(a["normalizeClass"])(["bg-black text-white hover:bg-gray-800",e.error?"input-error":""])},Object(a["toDisplayString"])(e.$t("editor.load")),3)):Object(a["createCommentVNode"])("",!0),"loading"===e.loadStatus?(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",$,[Object(a["createVNode"])(r,{size:"24px",color:"#009cd1",class:"mx-2 my-auto"})])):Object(a["createCommentVNode"])("",!0)]),L,Object(a["createElementVNode"])("div",I,[Object(a["createElementVNode"])("h3",null,Object(a["toDisplayString"])(e.$t("editor.productDetails")),1),Object(a["createElementVNode"])("p",null,Object(a["toDisplayString"])(e.$t("editor.metadata.instructions")),1)]),Object(a["createVNode"])(s,{metadata:e.metadata,onMetadataChanged:e.updateMetadata,onLogoChanged:e.onFileChange,onLogoSourceChanged:e.onLogoSourceInput},null,8,["metadata","onMetadataChanged","onLogoChanged","onLogoSourceChanged"])]),Object(a["createElementVNode"])("div",M,[e.editExisting?(Object(a["openBlock"])(),Object(a["createElementBlock"])("button",{key:0,onClick:t[4]||(t[4]=t=>e.saveMetadata(!0)),class:"pl-8"},Object(a["toDisplayString"])(e.$t("editor.saveChanges")),1)):Object(a["createCommentVNode"])("",!0),Object(a["createElementVNode"])("div",B,[Object(a["createVNode"])(c,{to:{name:"home"},target:""},{default:Object(a["withCtx"])(()=>[Object(a["createElementVNode"])("button",null,Object(a["toDisplayString"])(e.$t("editor.back")),1)]),_:1}),Object(a["createElementVNode"])("button",{onClick:t[5]||(t[5]=t=>e.warning?e.$vfm.open("confirm-uuid-overwrite"):e.continueToEditor()),class:"bg-black text-white px-8"},Object(a["toDisplayString"])(e.$t("editor.next")),1),Object(a["createVNode"])(d,{name:"confirm-uuid-overwrite",message:e.$t(`Are you sure you want to overwrite product '${e.uuid}'?`),onOk:t[6]||(t[6]=t=>e.continueToEditor())},null,8,["message"])])])],64)),e.loadEditor&&"loaded"===e.loadStatus?(Object(a["openBlock"])(),Object(a["createBlock"])(m,{key:1,configs:e.configs,configFileStructure:e.configFileStructure,sourceCounts:e.sourceCounts,metadata:e.metadata,slides:e.slides,configLang:e.configLang,saving:e.saving,unsavedChanges:e.unsavedChanges,onSaveChanges:e.generateConfig,onSaveStatus:e.updateSaveStatus,onRefreshConfig:e.refreshConfig,ref:"mainEditor"},{langModal:Object(a["withCtx"])(i=>[Object(a["createElementVNode"])("button",{onClick:Object(a["withModifiers"])(t=>i.unsavedChanges?e.$vfm.open("change-lang"):e.swapLang(),["stop"])},Object(a["toDisplayString"])("en"===e.configLang?e.$t("editor.frenchConfig"):e.$t("editor.englishConfig")),9,D),Object(a["createVNode"])(d,{name:"change-lang",message:e.$t("editor.changeLang.modal"),onOk:t[7]||(t[7]=t=>e.swapLang())},null,8,["message"])]),metadataModal:Object(a["withCtx"])(()=>[Object(a["createVNode"])(u,{modalId:"metadata-edit-modal","content-class":"flex flex-col max-h-full overflow-y-auto max-w-xl mx-4 p-4 bg-white border rounded-lg space-y-2",class:"flex justify-center items-center"},{default:Object(a["withCtx"])(()=>[Object(a["createElementVNode"])("h2",F,Object(a["toDisplayString"])(e.$t("editor.editMetadata")),1),Object(a["createVNode"])(s,{metadata:e.metadata,onMetadataChanged:e.updateMetadata,onLogoChanged:e.onFileChange,onLogoSourceChanged:e.onLogoSourceInput},null,8,["metadata","onMetadataChanged","onLogoChanged","onLogoSourceChanged"]),Object(a["createElementVNode"])("div",P,[Object(a["createElementVNode"])("button",{class:"bg-black text-white hover:bg-gray-800",onClick:t[8]||(t[8]=t=>e.saveMetadata(!1))}," Done ")])]),_:1})]),_:1},8,["configs","configFileStructure","sourceCounts","metadata","slides","configLang","saving","unsavedChanges","onSaveChanges","onSaveStatus","onRefreshConfig"])):Object(a["createCommentVNode"])("",!0)])}i("88a7"),i("271a"),i("5494"),i("14d9");var A=i("0a4f"),U=i("7b97"),z=i("327a");const W=e=>(Object(a["pushScopeId"])("data-v-4c97a990"),e=e(),Object(a["popScopeId"])(),e),q={class:"sticky top-20 h-auto self-start flex-grow m-5"},H={key:0},X={class:"flex"},J={class:"flex flex-col"},G=W(()=>Object(a["createElementVNode"])("label",null,"Slide title:",-1)),Z={class:"flex"},Y=W(()=>Object(a["createElementVNode"])("span",{class:"ml-auto"},null,-1)),Q=["disabled"],K=["disabled"],ee={class:"flex mt-3"},te={class:"mx-2 font-bold"},ie=["disabled"],ae=W(()=>Object(a["createElementVNode"])("br",null,null,-1)),le={key:0,class:"flex border-b border-black"},oe=Object(a["createStaticVNode"])('',2),ne={class:"align-middle inline-block pl-1"},re=Object(a["createStaticVNode"])('',2),se={class:"align-middle inline-block pl-1"},ce={class:"align-middle inline-block pl-1"},de={key:1,class:"border-b border-black"},ue=Object(a["createStaticVNode"])('',2),me={class:"align-middle inline-block pl-1"},pe={class:"align-middle inline-block pl-1"},he={class:"flex mt-4"},be={class:"font-bold text-xl"},ge=W(()=>Object(a["createElementVNode"])("span",{class:"ml-auto flex-grow"},null,-1)),fe={key:0,class:"flex flex-col mr-8"},ve={class:"text-left text-lg"},Oe=["value"],je=["value"],Ve={key:1,class:"flex h-full mt-4 justify-center text-gray-600 text-xl"};function ye(e,t,i,l,o,n){const r=Object(a["resolveComponent"])("custom-editor"),s=Object(a["resolveComponent"])("confirmation-modal");return Object(a["openBlock"])(),Object(a["createElementBlock"])("div",q,[e.currentSlide?(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",H,[Object(a["createElementVNode"])("div",X,[Object(a["createElementVNode"])("div",J,[G,Object(a["createElementVNode"])("div",Z,[Object(a["withDirectives"])(Object(a["createElementVNode"])("input",{type:"text","onUpdate:modelValue":t[0]||(t[0]=t=>e.currentSlide.title=t),placeholder:"Add a title",class:"w-2/3"},null,512),[[a["vModelText"],e.currentSlide.title]]),Y,Object(a["createElementVNode"])("button",{onClick:t[1]||(t[1]=Object(a["withModifiers"])(t=>e.selectSlide(e.slideIndex-1),["stop"])),disabled:0===e.slideIndex,class:"border border-black"},Object(a["toDisplayString"])(e.$t("editor.slides.previousSlide")),9,Q),Object(a["createElementVNode"])("button",{onClick:t[2]||(t[2]=Object(a["withModifiers"])(t=>e.selectSlide(e.slideIndex+1),["stop"])),disabled:e.isLast,class:"border border-black"},Object(a["toDisplayString"])(e.$t("editor.slides.nextSlide")),9,K)]),Object(a["createElementVNode"])("div",ee,[Object(a["createElementVNode"])("span",te,Object(a["toDisplayString"])(e.$t("editor.slides.makeFull")),1),Object(a["withDirectives"])(Object(a["createElementVNode"])("input",{type:"checkbox",class:"rounded-none cursor-pointer w-4 h-4","onUpdate:modelValue":t[3]||(t[3]=t=>e.rightOnly=t),disabled:e.rightOnly&&"dynamic"===e.determineEditorType(e.currentSlide.panel[e.panelIndex]),onChange:t[4]||(t[4]=Object(a["withModifiers"])(t=>e.$vfm.open("right-only-"+e.slideIndex),["stop"]))},null,40,ie),[[a["vModelCheckbox"],e.rightOnly]])])])]),ae,2===e.currentSlide.panel.length?(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",le,[Object(a["createElementVNode"])("button",{onClick:t[5]||(t[5]=()=>{e.panelIndex=0,e.advancedEditorView=!1,e.saveChanges()}),class:Object(a["normalizeClass"])(["border-t border-l border-r",0!=e.panelIndex||e.advancedEditorView?"border-white":"border-black"])},[oe,Object(a["createElementVNode"])("span",ne,Object(a["toDisplayString"])(e.$t("editor.slides.leftPanel")),1)],2),Object(a["createElementVNode"])("button",{onClick:t[6]||(t[6]=()=>{e.panelIndex=1,e.advancedEditorView=!1,e.saveChanges()}),class:Object(a["normalizeClass"])(["border-t border-l border-r",1!=e.panelIndex||e.advancedEditorView?"border-white":"border-black"])},[re,Object(a["createElementVNode"])("span",se,Object(a["toDisplayString"])(e.$t("editor.slides.rightPanel")),1)],2),Object(a["createElementVNode"])("button",{onClick:t[7]||(t[7]=()=>{e.advancedEditorView=!0,e.saveChanges()}),class:Object(a["normalizeClass"])(["border-t border-l border-r",e.advancedEditorView?"border-black":"border-white"])},[Object(a["createElementVNode"])("span",ce,Object(a["toDisplayString"])(e.$t("editor.slides.advanced")),1)],2)])):(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",de,[Object(a["createElementVNode"])("button",{onClick:t[8]||(t[8]=()=>{e.advancedEditorView=!1,e.saveChanges()}),class:Object(a["normalizeClass"])(["border-t border-l border-r",e.advancedEditorView?"border-white":"border-black"])},[ue,Object(a["createElementVNode"])("span",me,Object(a["toDisplayString"])(e.$t("editor.slides.fullscreenPanel")),1)],2),Object(a["createElementVNode"])("button",{onClick:t[9]||(t[9]=()=>{e.advancedEditorView=!0,e.saveChanges()}),class:Object(a["normalizeClass"])(["border-t border-l border-r",e.advancedEditorView?"border-black":"border-white"])},[Object(a["createElementVNode"])("span",pe,Object(a["toDisplayString"])(e.$t("editor.slides.advanced")),1)],2)])),Object(a["createElementVNode"])("div",null,[Object(a["createElementVNode"])("div",he,[Object(a["createElementVNode"])("span",be,Object(a["toDisplayString"])(e.$t("editor.slides.content"))+":",1),ge,1===e.panelIndex&&!e.advancedEditorView||e.rightOnly?(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",fe,[Object(a["createElementVNode"])("label",ve,Object(a["toDisplayString"])(e.$t("editor.slides.contentType"))+":",1),Object(a["createElementVNode"])("select",{ref:"typeSelector",onInput:t[10]||(t[10]=t=>{e.$vfm.open("change-slide-"+e.slideIndex),e.newType=t.target.value}),value:e.determineEditorType(e.currentSlide.panel[e.panelIndex])},[(Object(a["openBlock"])(!0),Object(a["createElementBlock"])(a["Fragment"],null,Object(a["renderList"])(Object.keys(e.editors).filter(e=>"loading"!==e),e=>(Object(a["openBlock"])(),Object(a["createElementBlock"])("option",{key:e,value:e},Object(a["toDisplayString"])(e),9,je))),128))],40,Oe)])):Object(a["createCommentVNode"])("",!0)]),e.advancedEditorView?(Object(a["openBlock"])(),Object(a["createBlock"])(r,{key:0,ref:"editor",config:e.currentSlide,lang:e.lang,slideIndex:e.slideIndex,onSlideEdit:t[11]||(t[11]=t=>e.$emit("slide-edit")),onConfigEdited:t[12]||(t[12]=(t,i=!1)=>e.$emit("custom-slide-updated",t,i))},null,8,["config","lang","slideIndex"])):(Object(a["openBlock"])(),Object(a["createBlock"])(Object(a["resolveDynamicComponent"])(e.editors[e.determineEditorType(e.currentSlide.panel[e.panelIndex])]),{ref:"editor",key:e.panelIndex+e.determineEditorType(e.currentSlide.panel[e.panelIndex]),panel:e.currentSlide.panel[e.panelIndex],configFileStructure:e.configFileStructure,lang:e.lang,uid:e.uid,sourceCounts:e.sourceCounts,onSlideEdit:t[13]||(t[13]=t=>e.$emit("slide-edit"))},null,40,["panel","configFileStructure","lang","uid","sourceCounts"]))])])):(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",Ve,[Object(a["createElementVNode"])("span",null,Object(a["toDisplayString"])(e.$t("editor.slides.select")),1)])),Object(a["createVNode"])(s,{name:"change-slide-"+e.slideIndex,message:e.$t("editor.slides.changeSlide.confirm",{title:e.currentSlide.title}),onOk:t[14]||(t[14]=t=>e.changePanelType(e.determineEditorType(e.currentSlide.panel[e.panelIndex]),e.newType)),onCancel:e.cancelTypeChange},null,8,["name","message","onCancel"]),Object(a["createVNode"])(s,{name:"right-only-"+e.slideIndex,message:e.$t("editor.slides.changeSlide.confirm",{title:e.currentSlide.title}),onOk:t[15]||(t[15]=t=>e.toggleRightOnly()),onCancel:t[16]||(t[16]=t=>e.rightOnly=!e.rightOnly)},null,8,["name","message"])])}var Se;(function(e){e["Text"]="text",e["Image"]="image",e["Map"]="map",e["Chart"]="chart",e["Video"]="video",e["Audio"]="audio",e["Slideshow"]="slideshow",e["Dynamic"]="dynamic",e["Loading"]="loading"})(Se||(Se={}));const Ce={class:"block"},xe={class:"flex items-center"},Ee={class:"font-bold px-4"},we=["disabled"],ke={class:"flex items-center"},Ne=Object(a["createElementVNode"])("svg",{height:"18px",width:"18px",viewBox:"0 0 23 21",xmlns:"http://www.w3.org/2000/svg"},[Object(a["createElementVNode"])("path",{d:"M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z"})],-1),Te={class:"px-2"},_e=Object(a["createElementVNode"])("hr",{class:"border-solid border-t-2 border-gray-300 my-2"},null,-1),$e={key:0,class:"m-4"},Le={class:"italic text-gray-400"},Ie={class:"flex flex-wrap list-none"};function Me(e,t,i,l,o,n){const r=Object(a["resolveComponent"])("ChartPreview"),s=Object(a["resolveComponent"])("draggable"),c=Object(a["resolveComponent"])("confirmation-modal");return Object(a["openBlock"])(),Object(a["createElementBlock"])("div",Ce,[Object(a["createElementVNode"])("div",xe,[Object(a["createElementVNode"])("span",Ee,Object(a["toDisplayString"])(e.$t("editor.chart.label.info",{num:e.chartConfigs.length})),1),Object(a["createElementVNode"])("button",{class:"chart-btn bg-gray-100 cursor-pointer hover:bg-gray-200",id:"modal-btn",onClick:t[0]||(t[0]=t=>e.clearEditor()),disabled:!e.allowMany&&e.chartConfigs.length>0},[Object(a["createElementVNode"])("div",ke,[Ne,Object(a["createElementVNode"])("span",Te,Object(a["toDisplayString"])(e.$t("editor.chart.label.create")),1)])],8,we)]),_e,0===e.chartConfigs.length?(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",$e,[Object(a["createElementVNode"])("span",Le,Object(a["toDisplayString"])(e.$t("editor.chart.label.empty")),1)])):Object(a["createCommentVNode"])("",!0),Object(a["withDirectives"])(Object(a["createElementVNode"])("ul",Ie,[Object(a["createVNode"])(s,{modelValue:e.chartConfigs,"onUpdate:modelValue":t[1]||(t[1]=t=>e.chartConfigs=t),handle:".handle",onUpdate:e.onChartsEdited,class:"flex flex-wrap list-none","item-key":"name"},{item:Object(a["withCtx"])(({element:t,index:i})=>[(Object(a["openBlock"])(),Object(a["createBlock"])(r,{key:`${t.name}-${i}`,chart:t,configFileStructure:e.configFileStructure,sourceCounts:e.sourceCounts,lang:e.lang,onEdit:e.editChart,onDelete:a=>e.$vfm.open(`${t.name}-${i}`)},null,8,["chart","configFileStructure","sourceCounts","lang","onEdit","onDelete"]))]),_:1},8,["modelValue","onUpdate"])],512),[[a["vShow"],e.chartConfigs.length]]),(Object(a["openBlock"])(!0),Object(a["createElementBlock"])(a["Fragment"],null,Object(a["renderList"])(e.chartConfigs,(t,i)=>(Object(a["openBlock"])(),Object(a["createBlock"])(c,{key:`${t.name}-${i}`,name:`${t.name}-${i}`,message:e.$t("editor.chart.delete.confirm",{name:t.name}),onOk:i=>e.deleteChart(t)},null,8,["name","message","onOk"]))),128))])}const Be=e=>(Object(a["pushScopeId"])("data-v-1df36a82"),e=e(),Object(a["popScopeId"])(),e),De={class:"chart-item items-center mt-8 mx-5 overflow-hidden"},Fe={class:"relative border-solid border-2 items-center justify-center text-center w-full"},Pe=["content"],Re=Be(()=>Object(a["createElementVNode"])("svg",{class:"absolute transform -translate-x-1/2 -translate-y-1/2",height:"22px",width:"22px",viewBox:"0 0 352 512",xmlns:"http://www.w3.org/2000/svg"},[Object(a["createElementVNode"])("path",{d:"M242.72 256l100.07-100.07c12.28-12.28 12.28-32.19 0-44.48l-22.24-22.24c-12.28-12.28-32.19-12.28-44.48 0L176 189.28 75.93 89.21c-12.28-12.28-32.19-12.28-44.48 0L9.21 111.45c-12.28 12.28-12.28 32.19 0 44.48L109.28 256 9.21 356.07c-12.28 12.28-12.28 32.19 0 44.48l22.24 22.24c12.28 12.28 32.2 12.28 44.48 0L176 322.72l100.07 100.07c12.28 12.28 32.2 12.28 44.48 0l22.24-22.24c12.28-12.28 12.28-32.19 0-44.48L242.72 256z"})],-1)),Ae=[Re],Ue=Be(()=>Object(a["createElementVNode"])("button",{class:"bg-white absolute h-6 w-6 leading-5 rounded-full bottom-2 -right-1 p-0 z-10 handle"},[Object(a["createElementVNode"])("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"#000000",width:"22px",height:"22px",viewBox:"0 0 24 24"},[Object(a["createElementVNode"])("path",{"fill-rule":"evenodd",d:"M8,18 C9.1045695,18 10,18.8954305 10,20 C10,21.1045695 9.1045695,22 8,22 C6.8954305,22 6,21.1045695 6,20 C6,18.8954305 6.8954305,18 8,18 Z M16,18 C17.1045695,18 18,18.8954305 18,20 C18,21.1045695 17.1045695,22 16,22 C14.8954305,22 14,21.1045695 14,20 C14,18.8954305 14.8954305,18 16,18 Z M8,10 C9.1045695,10 10,10.8954305 10,12 C10,13.1045695 9.1045695,14 8,14 C6.8954305,14 6,13.1045695 6,12 C6,10.8954305 6.8954305,10 8,10 Z M16,10 C17.1045695,10 18,10.8954305 18,12 C18,13.1045695 17.1045695,14 16,14 C14.8954305,14 14,13.1045695 14,12 C14,10.8954305 14.8954305,10 16,10 Z M8,2 C9.1045695,2 10,2.8954305 10,4 C10,5.1045695 9.1045695,6 8,6 C6.8954305,6 6,5.1045695 6,4 C6,2.8954305 6.8954305,2 8,2 Z M16,2 C17.1045695,2 18,2.8954305 18,4 C18,5.1045695 17.1045695,6 16,6 C14.8954305,6 14,5.1045695 14,4 C14,2.8954305 14.8954305,2 16,2 Z"})])],-1)),ze={class:"flex mt-4 items-center"},We={class:"name-label font-bold flex-2"},qe={class:"font-normal"},He=["id"],Xe={class:"flex items-center"},Je=Be(()=>Object(a["createElementVNode"])("svg",{height:"18px",width:"18px",viewBox:"0 0 23 21",xmlns:"http://www.w3.org/2000/svg"},[Object(a["createElementVNode"])("path",{d:"M 18 2 L 15.585938 4.4140625 L 19.585938 8.4140625 L 22 6 L 18 2 z M 14.076172 5.9238281 L 3 17 L 3 21 L 7 21 L 18.076172 9.9238281 L 14.076172 5.9238281 z"})],-1)),Ge={class:"px-2"};function Ze(e,t,i,l,o,n){const r=Object(a["resolveComponent"])("storylines-chart"),s=Object(a["resolveDirective"])("tippy");return Object(a["openBlock"])(),Object(a["createElementBlock"])("li",De,[Object(a["createElementVNode"])("div",Fe,[Object(a["withDirectives"])((Object(a["openBlock"])(),Object(a["createElementBlock"])("button",{class:"bg-white absolute h-6 w-6 leading-5 rounded-full top-2 left-0 p-0 z-10 cursor-pointer",onClick:t[0]||(t[0]=()=>e.$emit("delete",e.chart)),content:e.$t("editor.chart.delete")},Ae,8,Pe)),[[s,{placement:"top",hideOnClick:!1,animateFill:!0}]]),Ue,e.loading?Object(a["createCommentVNode"])("",!0):(Object(a["openBlock"])(),Object(a["createBlock"])(r,{class:"w-full h-full",config:e.chartConfig,key:e.chartIdx,configFileStructure:e.configFileStructure,onLoaded:e.loadChart},null,8,["config","configFileStructure","onLoaded"]))]),Object(a["createElementVNode"])("div",ze,[Object(a["createElementVNode"])("label",We,[Object(a["createTextVNode"])(Object(a["toDisplayString"])(e.$t("editor.chart.label.name"))+": ",1),Object(a["createElementVNode"])("span",qe,Object(a["toDisplayString"])(e.chartName),1)]),Object(a["createElementVNode"])("button",{class:"chart-btn bg-gray-100 cursor-pointer hover:bg-gray-200",id:`edit-${e.chart.name}-btn`},[Object(a["createElementVNode"])("div",Xe,[Je,Object(a["createElementVNode"])("span",Ge,Object(a["toDisplayString"])(e.$t("editor.chart.label.edit")),1)])],8,He)])])}i("3c65");class Ye extends r["c"]{constructor(){super(...arguments),this.loading=!0,this.chartIdx=0,this.chartConfig={},this.chartName="",this.modalEditor=void 0}mounted(){this.chartConfig=this.chart,this.chartName=this.chart.name||"",this.loading=!1}loadChart(e){var t;if(!this.modalEditor){if(this.modalEditor=highed.ModalEditor(`edit-${this.chartName}-btn`,{allowDone:!0,features:"import templates customize done",importer:{options:"plugins csv json"},defaultChartOptions:e},e=>{const t=JSON.parse(e),i=`${this.configFileStructure.uuid}/charts/${this.lang}/${t.title.text}.json`;if(this.sourceCounts[i]>0&&t.title.text!=this.chart.name)alert(this.$t("editor.chart.label.nameExists",{name:t.title.text})),setTimeout(()=>this.modalEditor.show(),100);else{const e={name:t.title.text,config:t,src:""};this.$emit("edit",{oldChart:this.chart,newChart:e}),this.chartConfig=e,this.chartName=e.name,this.chartIdx+=1}}),void 0!==(null===(t=e.data)||void 0===t?void 0:t.csv)){const t=e.data.csv;this.modalEditor.editor.dataTable.loadCSV({csv:t})}else this.convertSeriesToCSV(e);this.modalEditor.editor.chart.options.setAll(e)}}convertSeriesToCSV(e){var t;if("pie"===(null===(t=e.chart)||void 0===t?void 0:t.type)){const t=null===e||void 0===e?void 0:e.series.data;if(t){var i;const a=[`${null===e||void 0===e?void 0:e.series.name};${null===e||void 0===e||null===(i=e.yAxis)||void 0===i?void 0:i.title.text}`,...t.map(e=>`${e.name};${e.y}`)];this.modalEditor.editor.dataTable.loadCSV({csv:a.join("\n")})}}else if(null!==e&&void 0!==e&&e.series&&null!==e&&void 0!==e&&e.series.length){let t=null===e||void 0===e?void 0:e.series.map(e=>[e.name,...e.data]);if(void 0!==e.xAxis){var a,l;const i=[null===(a=e.xAxis)||void 0===a||null===(a=a.title)||void 0===a?void 0:a.text].concat(null===(l=e.xAxis)||void 0===l?void 0:l.categories);t.unshift(i)}let i=t[0].map((e,i)=>t.map(e=>e[i]).join(";"));this.modalEditor.editor.dataTable.loadCSV({csv:i.join("\n")})}}}Object(n["a"])([Object(r["b"])()],Ye.prototype,"chart",void 0),Object(n["a"])([Object(r["b"])()],Ye.prototype,"configFileStructure",void 0),Object(n["a"])([Object(r["b"])()],Ye.prototype,"sourceCounts",void 0),Object(n["a"])([Object(r["b"])()],Ye.prototype,"lang",void 0);i("b357");const Qe=d()(Ye,[["render",Ze],["__scopeId","data-v-1df36a82"]]);var Ke=Qe;const et={slot:"header",class:"text-lg font-bold"},tt={class:"w-full flex justify-end"};function it(e,t,i,l,o,n){const r=Object(a["resolveComponent"])("vue-final-modal");return Object(a["openBlock"])(),Object(a["createBlock"])(r,{modalId:e.name,class:"flex justify-center items-center","content-class":"flex flex-col max-w-xl mx-4 p-4 bg-white dark:bg-gray-900 border dark:border-gray-700 rounded-lg space-y-2"},{default:Object(a["withCtx"])(()=>[Object(a["createElementVNode"])("h2",et,Object(a["toDisplayString"])(e.message),1),Object(a["createElementVNode"])("div",tt,[Object(a["createElementVNode"])("button",{class:"confirm-button hover:bg-gray-800",onClick:t[0]||(t[0]=Object(a["withModifiers"])((...t)=>e.onOk&&e.onOk(...t),["stop"]))},Object(a["toDisplayString"])(e.$t("editor.confirm")),1),Object(a["createElementVNode"])("button",{class:"cancel-button hover:bg-gray-100",onClick:t[1]||(t[1]=Object(a["withModifiers"])((...t)=>e.onCancel&&e.onCancel(...t),["stop"]))},Object(a["toDisplayString"])(e.$t("editor.cancel")),1)])]),_:1},8,["modalId"])}let at=class extends r["c"]{onOk(){this.$emit("ok"),this.$vfm.close(this.name)}onCancel(){this.$emit("Cancel"),this.$vfm.close(this.name)}};Object(n["a"])([Object(r["b"])()],at.prototype,"message",void 0),Object(n["a"])([Object(r["b"])()],at.prototype,"name",void 0),at=Object(n["a"])([Object(r["a"])({components:{"vue-final-modal":U["a"]}})],at);var lt=at;i("1c29");const ot=d()(lt,[["render",it],["__scopeId","data-v-4ed11748"]]);var nt=ot,rt=i("b76a"),st=i.n(rt);let ct=class extends r["c"]{constructor(){super(...arguments),this.edited=!1,this.chartConfigs=[],this.modalEditor={}}mounted(){highed.ready(()=>{this.modalEditor=highed.ModalEditor("modal-btn",{allowDone:!0,features:"import templates customize done",importer:{options:"plugins csv json"}},e=>{this.createNewChart(e.toString())})});const e=this.panel.type===Se.Slideshow?this.panel.items:this.panel.src?[this.panel]:[];void 0!==e&&e.length&&(this.chartConfigs=e.map(e=>{let t="";if(e.options&&e.options.title)t=e.options.title;else{const i=e.src.match(/.*\/(.*)$/);t=i?i[1].replace(/\.[^/.]+$/,"").replace(/\./g," "):e.src}return{name:t,...e}}))}clearEditor(){let e={title:{text:"Chart "+(this.chartConfigs.length+1)},subtitle:{text:""},credits:{enabled:!1}};e="en"===this.lang?Object.assign({},e,{lang:{thousandsSep:","}}):Object.assign({},e,{lang:{thousandsSep:" "}}),this.modalEditor.editor.chart.options.setAll(e);const t='"Column 1";"Column 2"\n" "";" "';this.modalEditor.editor.dataTable.loadCSV({csv:t})}createNewChart(e){const t=JSON.parse(e),i=`${this.configFileStructure.uuid}/charts/${this.lang}/${t.title.text}.json`;if(this.sourceCounts[i]>0)alert(this.$t("editor.chart.label.nameExists",{name:t.title.text})),setTimeout(()=>this.modalEditor.show(),100);else{const e={name:t.title.text,src:i};this.sourceCounts[i]?this.sourceCounts[i]+=1:this.sourceCounts[i]=1,this.configFileStructure.charts[this.lang].file(t.title.text+".json",JSON.stringify(t,null,4)),this.chartConfigs.push(e)}this.onChartsEdited()}editChart(e){const t=this.chartConfigs.findIndex(t=>t.name===e.oldChart.name);if(-1!==t){const i=`${this.configFileStructure.uuid}/charts/${this.lang}/${e.oldChart.name}.json`;this.sourceCounts[i]-=1,0===this.sourceCounts[i]&&this.configFileStructure.charts[this.lang].remove(e.oldChart.name+".json");const a=`${this.configFileStructure.uuid}/charts/${this.lang}/${e.newChart.name}.json`;this.sourceCounts[a]?this.sourceCounts[a]+=1:this.sourceCounts[a]=1,this.configFileStructure.charts[this.lang].file(e.newChart.name+".json",JSON.stringify(e.newChart.config,null,4)),e.newChart.src=`${this.configFileStructure.uuid}/charts/${this.lang}/${e.newChart.name}.json`,this.chartConfigs[t]={name:e.newChart.name,src:e.newChart.src}}this.onChartsEdited()}deleteChart(e){const t=this.chartConfigs.findIndex(t=>t.name===e.name);-1!==t&&(this.sourceCounts[`${this.configFileStructure.uuid}/charts/${this.lang}/${e.name}.json`]-=1,0===this.sourceCounts[`${this.configFileStructure.uuid}/charts/${this.lang}/${e.name}.json`]&&this.configFileStructure.charts[this.lang].remove(e.name+".json"),this.chartConfigs.splice(t,1)),this.onChartsEdited()}saveChanges(){if(this.edited)if(Object.keys(this.panel).forEach(e=>{delete this.panel[e]}),0===this.chartConfigs.length)this.panel.type=Se.Chart,this.panel.src="";else if(1===this.chartConfigs.length){this.panel.type=Se.Chart;const e=this.chartConfigs[0];Object.keys(e).forEach(t=>{this.panel[t]=e[t]})}else this.panel.type=Se.Slideshow,this.panel.items=this.chartConfigs.map(e=>({...e,type:Se.Chart}));this.edited=!1}onChartsEdited(){this.edited=!0,this.$emit("slide-edit")}};Object(n["a"])([Object(r["b"])()],ct.prototype,"panel",void 0),Object(n["a"])([Object(r["b"])()],ct.prototype,"configFileStructure",void 0),Object(n["a"])([Object(r["b"])()],ct.prototype,"lang",void 0),Object(n["a"])([Object(r["b"])()],ct.prototype,"sourceCounts",void 0),Object(n["a"])([Object(r["b"])({default:!0})],ct.prototype,"allowMany",void 0),ct=Object(n["a"])([Object(r["a"])({components:{ChartPreview:Ke,"confirmation-modal":nt,draggable:st.a}})],ct);var dt=ct;i("c42e");const ut=d()(dt,[["render",Me]]);var mt=ut;const pt={class:"mt-4"};function ht(e,t,i,l,o,n){const r=Object(a["resolveComponent"])("json-editor"),s=Object(a["resolveComponent"])("confirmation-modal");return Object(a["openBlock"])(),Object(a["createElementBlock"])("div",pt,[Object(a["createVNode"])(r,{modelValue:e.updatedConfig,"onUpdate:modelValue":t[0]||(t[0]=t=>e.updatedConfig=t),lang:e.lang,mode:"text","show-btns":!0,expandedOnStart:!0,onJsonChange:t[1]||(t[1]=t=>{e.updatedConfig=t,e.edited=!0,e.$emit("slide-edit")}),onJsonSave:t[2]||(t[2]=t=>e.$vfm.open("custom-editor-"+e.slideIndex))},null,8,["modelValue","lang"]),Object(a["createVNode"])(s,{name:"custom-editor-"+e.slideIndex,message:e.$t("editor.customConfig"),onOk:t[3]||(t[3]=t=>e.onJsonSave())},null,8,["name","message"])])}var bt=i("c45b");let gt=class extends r["c"]{constructor(){super(...arguments),this.schemaUrl="./StorylinesSlideSchema.json",this.updatedConfig="",this.edited=!1,this.jsonValidator=i("a41b").Validator,this.validator=new this.jsonValidator,this.storylinesSchema=""}mounted(){fetch(this.schemaUrl).then(e=>{e.json().then(e=>{this.storylinesSchema=e},e=>{console.error(e)})}),this.updatedConfig=this.config}onJsonSave(){const e=this.validator.validate(this.updatedConfig,this.storylinesSchema);e.valid?this.$emit("config-edited",this.updatedConfig,!0):(alert("Attempted to save a custom config that violates the Storylines schema."),console.error(e.errors))}saveChanges(){this.$emit("config-edited",this.updatedConfig),this.edited=!1}};Object(n["a"])([Object(r["b"])()],gt.prototype,"config",void 0),Object(n["a"])([Object(r["b"])()],gt.prototype,"lang",void 0),Object(n["a"])([Object(r["b"])()],gt.prototype,"slideIndex",void 0),gt=Object(n["a"])([Object(r["a"])({components:{"json-editor":bt["a"],"confirmation-modal":nt}})],gt);var ft=gt;i("73b0");const vt=d()(ft,[["render",ht],["__scopeId","data-v-5cc9b9fc"]]);var Ot=vt;const jt=e=>(Object(a["pushScopeId"])("data-v-39ccfdb7"),e=e(),Object(a["popScopeId"])(),e),Vt={class:"block"},yt={class:"flex drag-label cursor-pointer"},St=jt(()=>Object(a["createElementVNode"])("span",{class:"align-middle inline-block pr-4"},[Object(a["createElementVNode"])("svg",{xmlns:"http://www.w3.org/2000/svg",width:"48",height:"48",viewBox:"0 0 24 24"},[Object(a["createElementVNode"])("path",{d:"M14 9l-2.519 4-2.481-1.96-5 6.96h16l-6-9zm8-5v16h-20v-16h20zm2-2h-24v20h24v-20zm-20 6c0-1.104.896-2 2-2s2 .896 2 2c0 1.105-.896 2-2 2s-2-.895-2-2z"})])],-1)),Ct={class:"align-middle inline-block"},xt={class:"text-blue-400 font-bold"},Et=["multiple"],wt={key:1,class:"flex justify-center"},kt={class:"flex mt-4 items-center w-full text-left"},Nt={class:"text-label"},Tt=["onUpdate:modelValue"],_t={class:"flex mt-4 items-center w-full text-left"},$t={class:"text-label"},Lt=["onUpdate:modelValue"],It={class:"flex items-center w-full text-left"},Mt={class:"text-label"};function Bt(e,t,i,l,o,n){const r=Object(a["resolveComponent"])("ImagePreview"),s=Object(a["resolveComponent"])("draggable");return Object(a["openBlock"])(),Object(a["createElementBlock"])("div",Vt,[e.allowMany||!e.allowMany&&0===e.imagePreviews.length?(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",{key:0,class:Object(a["normalizeClass"])(["upload-image text-center m-5 p-12 bg-blue-100 border-4 border-dashed border-blue-300",{dragging:e.isDragging}]),onDragover:t[1]||(t[1]=Object(a["withModifiers"])(()=>e.dragging=!0,["prevent"])),onDragleave:t[2]||(t[2]=Object(a["withModifiers"])(()=>e.dragging=!1,["prevent"])),onDrop:t[3]||(t[3]=Object(a["withModifiers"])(t=>e.dropImages(t),["prevent"]))},[Object(a["createElementVNode"])("label",yt,[St,Object(a["createElementVNode"])("span",Ct,[Object(a["createElementVNode"])("span",null,[Object(a["createElementVNode"])("div",null,Object(a["toDisplayString"])(e.$t("editor.image.label.drag")),1),Object(a["createElementVNode"])("div",null,[Object(a["createTextVNode"])(Object(a["toDisplayString"])(e.$t("editor.label.or"))+" ",1),Object(a["createElementVNode"])("span",xt,Object(a["toDisplayString"])(e.$t("editor.label.browse")),1),Object(a["createTextVNode"])(" "+Object(a["toDisplayString"])(e.$t("editor.label.upload")),1)])]),Object(a["createElementVNode"])("input",{type:"file",class:"cursor-pointer",onChange:t[0]||(t[0]=(...t)=>e.onFileChange&&e.onFileChange(...t)),multiple:!!e.allowMany},null,40,Et)])])],34)):Object(a["createCommentVNode"])("",!0),e.allowMany||!e.allowMany&&0===e.imagePreviews.length?Object(a["withDirectives"])((Object(a["openBlock"])(),Object(a["createElementBlock"])("span",wt,[Object(a["createElementVNode"])("i",null,Object(a["toDisplayString"])(e.$t("editor.image.reorder")),1)],512)),[[a["vShow"],!e.imagePreviewsLoading&&e.imagePreviews.length]]):Object(a["createCommentVNode"])("",!0),Object(a["withDirectives"])(Object(a["createVNode"])(s,{modelValue:e.imagePreviews,"onUpdate:modelValue":t[6]||(t[6]=t=>e.imagePreviews=t),class:"flex flex-wrap list-none border my-4",onUpdate:e.onImagesEdited,"item-key":"id"},{item:Object(a["withCtx"])(({element:i,index:l})=>[(Object(a["openBlock"])(),Object(a["createBlock"])(r,{key:`${i.id}-${l}`,imageFile:i,onDelete:e.deleteImage},{default:Object(a["withCtx"])(()=>[Object(a["createElementVNode"])("div",kt,[Object(a["createElementVNode"])("label",Nt,Object(a["toDisplayString"])(e.$t("editor.image.altTag"))+":",1),Object(a["withDirectives"])(Object(a["createElementVNode"])("input",{class:"w-4/5",type:"text","onUpdate:modelValue":e=>i.altText=e,onChange:t[4]||(t[4]=(...t)=>e.onImagesEdited&&e.onImagesEdited(...t))},null,40,Tt),[[a["vModelText"],i.altText]])]),Object(a["createElementVNode"])("div",_t,[Object(a["createElementVNode"])("label",$t,Object(a["toDisplayString"])(e.$t("editor.image.label.caption"))+":",1),Object(a["withDirectives"])(Object(a["createElementVNode"])("input",{class:"w-4/5",type:"text","onUpdate:modelValue":e=>i.caption=e,onChange:t[5]||(t[5]=(...t)=>e.onImagesEdited&&e.onImagesEdited(...t))},null,40,Lt),[[a["vModelText"],i.caption]])])]),_:2},1032,["imageFile","onDelete"]))]),_:1},8,["modelValue","onUpdate"]),[[a["vShow"],!e.imagePreviewsLoading&&e.imagePreviews.length]]),Object(a["withDirectives"])(Object(a["createElementVNode"])("div",It,[Object(a["createElementVNode"])("label",Mt,Object(a["toDisplayString"])(e.$t("editor.image.slideshowCaption"))+":",1),Object(a["withDirectives"])(Object(a["createElementVNode"])("input",{class:"w-3/5",type:"text","onUpdate:modelValue":t[7]||(t[7]=t=>e.slideshowCaption=t),onChange:t[8]||(t[8]=(...t)=>e.onImagesEdited&&e.onImagesEdited(...t))},null,544),[[a["vModelText"],e.slideshowCaption]])],512),[[a["vShow"],e.imagePreviews.length>1]])])}const Dt=e=>(Object(a["pushScopeId"])("data-v-5bdf84fc"),e=e(),Object(a["popScopeId"])(),e),Ft={class:"image-item items-center my-8 mx-4 overflow-hidden"},Pt={class:"relative items-center justify-center text-center w-full grabbable"},Rt=["content"],At=Dt(()=>Object(a["createElementVNode"])("svg",{height:"24px",width:"24px",viewBox:"0 0 352 512",xmlns:"http://www.w3.org/2000/svg"},[Object(a["createElementVNode"])("path",{d:"M242.72 256l100.07-100.07c12.28-12.28 12.28-32.19 0-44.48l-22.24-22.24c-12.28-12.28-32.19-12.28-44.48 0L176 189.28 75.93 89.21c-12.28-12.28-32.19-12.28-44.48 0L9.21 111.45c-12.28 12.28-12.28 32.19 0 44.48L109.28 256 9.21 356.07c-12.28 12.28-12.28 32.19 0 44.48l22.24 22.24c12.28 12.28 32.2 12.28 44.48 0L176 322.72l100.07 100.07c12.28 12.28 32.2 12.28 44.48 0l22.24-22.24c12.28-12.28 12.28-32.19 0-44.48L242.72 256z"})],-1)),Ut=[At],zt={class:"flex-grow image-container"},Wt=["title","src","alt"];function qt(e,t,i,l,o,n){const r=Object(a["resolveDirective"])("tippy");return Object(a["openBlock"])(),Object(a["createElementBlock"])("li",Ft,[Object(a["createElementVNode"])("div",Pt,[Object(a["withDirectives"])((Object(a["openBlock"])(),Object(a["createElementBlock"])("button",{class:"bg-white absolute h-6 w-6 leading-5 rounded-full top-0 right-0 p-0 cursor-pointer",onClick:t[0]||(t[0]=()=>e.$emit("delete",e.imageFile)),content:e.$t("editor.image.delete")},Ut,8,Rt)),[[r,{placement:"top",hideOnClick:!1,animateFill:!0}]]),Object(a["createElementVNode"])("div",zt,[Object(a["createElementVNode"])("img",{class:"image-file object-cover",title:e.imageFile.id,src:e.imageFile.src,alt:e.imageFile.altText},null,8,Wt)])]),Object(a["renderSlot"])(e.$slots,"default",{},void 0,!0)])}class Ht extends r["c"]{}Object(n["a"])([Object(r["b"])()],Ht.prototype,"imageFile",void 0);i("5cf4");const Xt=d()(Ht,[["render",qt],["__scopeId","data-v-5bdf84fc"]]);var Jt=Xt;let Gt=class extends r["c"]{constructor(){super(...arguments),this.dragging=!1,this.edited=!1,this.imagePreviewsLoading=!1,this.imagePreviewPromises=[],this.imagePreviews=[],this.slideshowCaption=""}get isDragging(){return this.dragging}mounted(){const e=this.panel.type===Se.Slideshow?this.panel.items:this.panel.src?[this.panel]:[];void 0!==e&&e.length&&(this.imagePreviewsLoading=!0,e.map(e=>{const t=""+e.src.substring(e.src.indexOf("/")+1),i=e.src.replace(/^.*[\\/]/,""),a=this.configFileStructure.zip.file(t);a&&this.imagePreviewPromises.push(a.async("blob").then(t=>({...e,id:i||e.src,src:URL.createObjectURL(t)})))}),Promise.all(this.imagePreviewPromises).then(e=>{this.imagePreviews=e,this.imagePreviewsLoading=!1}),this.slideshowCaption=this.panel.caption)}onFileChange(e){const t=Array.from(e.target.files);this.imagePreviews.push(...t.map(e=>{const t=`${this.configFileStructure.uuid}/assets/${this.lang}/${e.name}`;this.configFileStructure.assets[this.lang].file(e.name,e),this.sourceCounts[t]?this.sourceCounts[t]+=1:this.sourceCounts[t]=1;let i=URL.createObjectURL(e);return{id:e.name,altText:"",caption:"",src:i}})),this.onImagesEdited()}dropImages(e){if(null!==e.dataTransfer){let t=[...e.dataTransfer.files];this.allowMany||(t=[t[0]]),this.imagePreviews.push(...t.map(e=>{const t=`${this.configFileStructure.uuid}/assets/${this.lang}/${e.name}`;this.configFileStructure.assets[this.lang].file(e.name,e),this.sourceCounts[t]?this.sourceCounts[t]+=1:this.sourceCounts[t]=1;let i=URL.createObjectURL(e);return{id:e.name,altText:"",caption:"",src:i}})),this.dragging=!1}this.onImagesEdited()}deleteImage(e){const t=this.imagePreviews.findIndex(t=>t.id===e.id);if(-1!==t){const e=`${this.configFileStructure.uuid}/assets/${this.lang}/${this.imagePreviews[t].id}`;this.sourceCounts[e]-=1,0===this.sourceCounts[e]&&(this.configFileStructure.assets[this.lang].remove(this.imagePreviews[t].id),URL.revokeObjectURL(this.imagePreviews[t].src)),this.imagePreviews.splice(t,1)}this.onImagesEdited()}saveChanges(){if(this.edited)if(Object.keys(this.panel).forEach(e=>{delete this.panel[e]}),0===this.imagePreviews.length)this.panel.type=Se.Image,this.panel.src="";else if(1===this.imagePreviews.length){this.panel.type=Se.Image;const e=this.imagePreviews[0];Object.keys(e).forEach(t=>{"id"!==t&&(this.panel[t]=e[t])}),this.panel.src=`${this.configFileStructure.uuid}/assets/${this.lang}/${e.id}`}else{var e;this.panel.type=Se.Slideshow,this.panel.caption=null!==(e=this.slideshowCaption)&&void 0!==e?e:void 0,this.panel.items=this.imagePreviews.map(e=>({...e,src:`${this.configFileStructure.uuid}/assets/${this.lang}/${e.id}`,type:Se.Image}))}this.edited=!1}onImagesEdited(){this.edited=!0,this.$emit("slide-edit")}};Object(n["a"])([Object(r["b"])()],Gt.prototype,"panel",void 0),Object(n["a"])([Object(r["b"])()],Gt.prototype,"configFileStructure",void 0),Object(n["a"])([Object(r["b"])()],Gt.prototype,"lang",void 0),Object(n["a"])([Object(r["b"])()],Gt.prototype,"sourceCounts",void 0),Object(n["a"])([Object(r["b"])({default:!0})],Gt.prototype,"allowMany",void 0),Gt=Object(n["a"])([Object(r["a"])({components:{ImagePreview:Jt,draggable:st.a}})],Gt);var Zt=Gt;i("6f09");const Yt=d()(Zt,[["render",Bt],["__scopeId","data-v-39ccfdb7"]]);var Qt=Yt;const Kt={class:"flex flex-col mt-4"},ei={class:"text-left"},ti={class:"text-left mt-2"};function ii(e,t,i,l,o,n){const r=Object(a["resolveComponent"])("v-md-editor");return Object(a["openBlock"])(),Object(a["createElementBlock"])("div",Kt,[Object(a["createElementVNode"])("label",ei,Object(a["toDisplayString"])(e.$t("editor.slides.panel.title"))+":",1),Object(a["withDirectives"])(Object(a["createElementVNode"])("input",{type:"text","onUpdate:modelValue":t[0]||(t[0]=t=>e.panel.title=t)},null,512),[[a["vModelText"],e.panel.title]]),Object(a["createElementVNode"])("label",ti,Object(a["toDisplayString"])(e.$t("editor.slides.panel.body"))+":",1),Object(a["createVNode"])(r,{modelValue:e.panel.content,"onUpdate:modelValue":t[1]||(t[1]=t=>e.panel.content=t),height:"400px","left-toolbar":"undo redo clear | h bold italic strikethrough quote subsuper | ul ol table hr | addLink image code | save",toolbar:e.toolbar},null,8,["modelValue","toolbar"])])}class ai extends r["c"]{constructor(){super(...arguments),this.toolbar={subsuper:{title:"Superscript/Subscript",text:"T",menus:[{name:"Superscript",text:"Superscript",action(e){e.insert(e=>{const t=e||"";return{text:`${t}`,selected:e}})}},{name:"Subscript",text:"Subscript",action(e){e.insert(e=>{const t=e||"";return{text:`${t}`,selected:e}})}}]},addLink:{title:"Insert Link",icon:"v-md-icon-link",menus:[{name:"Add External Link (New Tab)",text:"Add External Link (New Tab)",action(e){e.insert(e=>{const t=e||"";return{text:`[${t}](http://)`,selected:e}})}},{name:"Add External Link (Same Tab)",text:"Add External Link (Same Tab)",action(e){e.insert(e=>{const t=e||"";return{text:`${t}`,selected:e}})}},{name:"Add Dynamic Link",text:"Add Dynamic Link",action(e){e.insert(e=>{const t=e||"";return{text:`${t}`,selected:e}})}}]}}}}Object(n["a"])([Object(r["b"])()],ai.prototype,"panel",void 0);i("0bb1");const li=d()(ai,[["render",ii],["__scopeId","data-v-b0fb221e"]]);var oi=li;const ni=e=>(Object(a["pushScopeId"])("data-v-681c9c6b"),e=e(),Object(a["popScopeId"])(),e),ri={class:"flex flex-col"},si={class:"text-left"},ci={key:0},di={class:"mt-6"},ui=ni(()=>Object(a["createElementVNode"])("span",{class:"ml-6"},null,-1)),mi={class:"mt-6"},pi=ni(()=>Object(a["createElementVNode"])("span",{class:"mx-4"},null,-1)),hi=ni(()=>Object(a["createElementVNode"])("br",null,null,-1)),bi={key:1,class:"mb-4"},gi={class:"flex justify-between mb-4"},fi={class:"mt-2"},vi=ni(()=>Object(a["createElementVNode"])("iframe",{src:"scripts/ramp-editor/samples/fgpv-author.html",style:{width:"70vw",height:"100vh"},id:"RAMPeditorframe"},null,-1)),Oi={key:1},ji={class:"text-left mt-2"},Vi={class:"flex flex-row items-center"},yi={key:0,class:"flex flex-wrap list-none justify-center"},Si=ni(()=>Object(a["createElementVNode"])("div",{class:"add-map"},null,-1)),Ci={key:2},xi={class:"text-left mt-2"},Ei={class:"flex flex-wrap list-none justify-center"},wi=ni(()=>Object(a["createElementVNode"])("div",{class:"edit-map"},null,-1)),ki={slot:"header",class:"text-lg font-bold"},Ni={class:"w-full flex justify-end"},Ti=["disabled"];function _i(e,t,i,l,o,n){const r=Object(a["resolveComponent"])("time-slider-editor"),s=Object(a["resolveComponent"])("vue-final-modal");return Object(a["openBlock"])(),Object(a["createElementBlock"])("div",ri,[Object(a["createElementVNode"])("label",si,Object(a["toDisplayString"])(e.$t("editor.map.title"))+":",1),Object(a["withDirectives"])(Object(a["createElementVNode"])("input",{type:"text","onUpdate:modelValue":t[0]||(t[0]=t=>e.panel.title=t)},null,512),[[a["vModelText"],e.panel.title]]),"editing"===e.status?(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",ci,[Object(a["createElementVNode"])("label",di,Object(a["toDisplayString"])(e.$t("editor.map.scrollguard.enable"))+":",1),Object(a["withDirectives"])(Object(a["createElementVNode"])("input",{type:"checkbox",onChange:t[1]||(t[1]=(...t)=>e.saveScrollguard&&e.saveScrollguard(...t)),"onUpdate:modelValue":t[2]||(t[2]=t=>e.panel.scrollguard=t)},null,544),[[a["vModelCheckbox"],e.panel.scrollguard]]),ui,Object(a["createElementVNode"])("label",mi,Object(a["toDisplayString"])(e.$t("editor.map.timeslider.enable")),1),Object(a["withDirectives"])(Object(a["createElementVNode"])("input",{type:"checkbox",onChange:t[3]||(t[3]=(...t)=>e.saveTimeSlider&&e.saveTimeSlider(...t)),"onUpdate:modelValue":t[4]||(t[4]=t=>e.usingTimeSlider=t)},null,544),[[a["vModelCheckbox"],e.usingTimeSlider]]),pi,e.usingTimeSlider?(Object(a["openBlock"])(),Object(a["createElementBlock"])("button",{key:0,onClick:t[5]||(t[5]=t=>e.$vfm.open("time-slider-edit-modal")),class:"bg-black text-white hover:bg-gray-800 mt-3"},Object(a["toDisplayString"])(e.$t("editor.map.timeslider.edit")),1)):Object(a["createCommentVNode"])("",!0),hi,e.usingTimeSlider?(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",bi)):Object(a["createCommentVNode"])("",!0),Object(a["createElementVNode"])("div",gi,[Object(a["createElementVNode"])("label",fi,Object(a["toDisplayString"])(e.$t("editor.map.edit"))+":",1),Object(a["createElementVNode"])("button",{class:"border border-black hover:bg-gray-100",onClick:t[6]||(t[6]=()=>{e.status="default"})},Object(a["toDisplayString"])(e.$t("editor.map.edit.cancel")),1)]),vi])):Object(a["createCommentVNode"])("",!0),"creating"===e.status?(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",Oi,[Object(a["createElementVNode"])("label",ji,Object(a["toDisplayString"])(e.$t("editor.map.label.name"))+"*:",1),Object(a["createElementVNode"])("div",Vi,[Object(a["withDirectives"])(Object(a["createElementVNode"])("input",{type:"text","onUpdate:modelValue":t[7]||(t[7]=t=>e.newFileName=t)},null,512),[[a["vModelText"],e.newFileName]]),Object(a["createTextVNode"])(".json")]),""!=e.newFileName?(Object(a["openBlock"])(),Object(a["createElementBlock"])("ul",yi,[Object(a["createElementVNode"])("li",{class:"map-item items-center my-8 mx-5 overflow-hidden",onClick:t[8]||(t[8]=(...t)=>e.createNewConfig&&e.createNewConfig(...t))},[Si,Object(a["createTextVNode"])(" "+Object(a["toDisplayString"])(e.$t("editor.map.label.create")),1)])])):Object(a["createCommentVNode"])("",!0)])):Object(a["createCommentVNode"])("",!0),"default"===e.status?(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",Ci,[Object(a["createElementVNode"])("label",xi,Object(a["toDisplayString"])(e.$t("editor.map.edit"))+":",1),Object(a["createElementVNode"])("ul",Ei,[Object(a["createElementVNode"])("li",{class:"map-item items-center my-8 mx-5 overflow-hidden",onClick:t[9]||(t[9]=(...t)=>e.openEditor&&e.openEditor(...t))},[wi,Object(a["createTextVNode"])(" "+Object(a["toDisplayString"])(e.$t("editor.map.label.edit")),1)])])])):Object(a["createCommentVNode"])("",!0),Object(a["createVNode"])(s,{modalId:"time-slider-edit-modal","content-class":"flex flex-col max-w-xl mx-4 p-4 bg-white border rounded-lg space-y-2",class:"flex justify-center items-center"},{default:Object(a["withCtx"])(()=>[Object(a["createElementVNode"])("h2",ki,Object(a["toDisplayString"])(e.$t("editor.map.timeslider.edit")),1),Object(a["createVNode"])(r,{config:e.timeSliderConf,error:e.timeSliderError,onTimeSliderChanged:e.onTimeSliderInput},null,8,["config","error","onTimeSliderChanged"]),Object(a["createElementVNode"])("div",Ni,[Object(a["createElementVNode"])("button",{class:Object(a["normalizeClass"])(e.timeSliderError?"":"bg-black text-white hover:bg-gray-800"),disabled:e.timeSliderError,onClick:t[10]||(t[10]=(...t)=>e.saveTimeSlider&&e.saveTimeSlider(...t))}," Done ",10,Ti)])]),_:1})])}var $i=i("7847"),Li=i("ea6b");const Ii=e=>(Object(a["pushScopeId"])("data-v-6923af36"),e=e(),Object(a["popScopeId"])(),e),Mi={class:"px-5"},Bi={class:"flex items-center"},Di=["value"],Fi={class:"mx-3"},Pi=["value"],Ri=Ii(()=>Object(a["createElementVNode"])("br",null,null,-1)),Ai={class:"flex items-center"},Ui=["value"],zi={class:"mx-3"},Wi=["value"],qi=Ii(()=>Object(a["createElementVNode"])("br",null,null,-1)),Hi={key:0,class:"border-black border-2 p-3 w-2/3"},Xi={class:"w-full"},Ji=Ii(()=>Object(a["createElementVNode"])("br",null,null,-1)),Gi={class:"list-disc my-2 ml-8"},Zi={key:1},Yi=["value"],Qi=Ii(()=>Object(a["createElementVNode"])("br",null,null,-1)),Ki=Ii(()=>Object(a["createElementVNode"])("br",null,null,-1)),ea=["value"],ta=Ii(()=>Object(a["createElementVNode"])("br",null,null,-1)),ia=Ii(()=>Object(a["createElementVNode"])("br",null,null,-1));function aa(e,t,i,l,o,n){return Object(a["openBlock"])(),Object(a["createElementBlock"])("div",Mi,[Object(a["createElementVNode"])("div",Bi,[Object(a["createElementVNode"])("label",null,Object(a["toDisplayString"])(e.$t("editor.map.timeslider.range")),1),Object(a["createElementVNode"])("input",{type:"number",value:e.config.range[0],onInput:t[0]||(t[0]=t=>e.$emit("time-slider-changed","range",0,t.target.value))},null,40,Di),Object(a["createElementVNode"])("span",Fi,Object(a["toDisplayString"])(e.$t("editor.map.timeslider.to")),1),Object(a["createElementVNode"])("input",{type:"number",value:e.config.range[1],onInput:t[1]||(t[1]=t=>e.$emit("time-slider-changed","range",1,t.target.value))},null,40,Pi)]),Ri,Object(a["createElementVNode"])("div",Ai,[Object(a["createElementVNode"])("label",null,Object(a["toDisplayString"])(e.$t("editor.map.timeslider.start")),1),Object(a["createElementVNode"])("input",{class:"ml-3",type:"number",value:e.config.start[0],onInput:t[2]||(t[2]=t=>e.$emit("time-slider-changed","start",0,t.target.value))},null,40,Ui),Object(a["createElementVNode"])("span",zi,Object(a["toDisplayString"])(e.$t("editor.map.timeslider.to")),1),Object(a["createElementVNode"])("input",{type:"number",value:e.config.start[1],onInput:t[3]||(t[3]=t=>e.$emit("time-slider-changed","start",1,t.target.value))},null,40,Wi)]),qi,e.error?(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",Hi,[Object(a["createElementVNode"])("label",Xi,Object(a["toDisplayString"])(e.$t("editor.map.timeslider.warning")),1),Ji,Object(a["createElementVNode"])("ul",Gi,[Object(a["createElementVNode"])("li",null,Object(a["toDisplayString"])(e.$t("editor.map.timeslider.warning.bullet1")),1),Object(a["createElementVNode"])("li",null,Object(a["toDisplayString"])(e.$t("editor.map.timeslider.warning.bullet2")),1)]),Object(a["createElementVNode"])("span",null,Object(a["toDisplayString"])(e.$t("editor.map.timeslider.warning.end")),1)])):Object(a["createCommentVNode"])("",!0),e.error?(Object(a["openBlock"])(),Object(a["createElementBlock"])("br",Zi)):Object(a["createCommentVNode"])("",!0),Object(a["createElementVNode"])("div",null,[Object(a["createElementVNode"])("label",null,Object(a["toDisplayString"])(e.$t("editor.map.timeslider.attribute")),1),Object(a["createElementVNode"])("input",{value:e.config.attribute,onInput:t[4]||(t[4]=t=>e.$emit("time-slider-changed","attribute",void 0,t.target.value))},null,40,Yi)]),Qi,Object(a["createElementVNode"])("div",null,[Object(a["createElementVNode"])("label",null,Object(a["toDisplayString"])(e.$t("editor.map.timeslider.layers")),1),Ki,Object(a["createElementVNode"])("input",{class:"w-full",value:e.config.layers||"",onInput:t[5]||(t[5]=t=>e.$emit("time-slider-changed","layers",void 0,t.target.value))},null,40,ea)]),ta,ia])}class la extends r["c"]{}Object(n["a"])([Object(r["b"])()],la.prototype,"config",void 0),Object(n["a"])([Object(r["b"])()],la.prototype,"error",void 0);i("d618");const oa=d()(la,[["render",aa],["__scopeId","data-v-6923af36"]]);var na=oa;let ra=class extends r["c"]{constructor(){super(...arguments),this.newFileName="",this.usingTimeSlider=!!this.panel.timeSlider,this.timeSliderError=!1,this.timeSliderConf={range:[],start:[],attribute:""},this.status=""!==this.panel.config?"default":"creating",this.strippedFileName=""!==this.panel.config?this.panel.config.split("/")[3].split(".")[0]:""}mounted(){var e,t,i,a,l,o;window.addEventListener("message",this.saveEditor),this.timeSliderConf=JSON.parse(JSON.stringify({range:null!==(e=null===(t=this.panel.timeSlider)||void 0===t?void 0:t.range)&&void 0!==e?e:[1e3,(new Date).getFullYear()],start:null!==(i=null===(a=this.panel.timeSlider)||void 0===a?void 0:a.start)&&void 0!==i?i:[1e3,(new Date).getFullYear()],attribute:null!==(l=null===(o=this.panel.timeSlider)||void 0===o?void 0:o.attribute)&&void 0!==l?l:""})),this.validateTimeSlider()}beforeDestroy(){window.removeEventListener("message",this.saveEditor)}createNewConfig(){this.panel.config=`${this.configFileStructure.uuid}/ramp-config/${this.lang}/${this.newFileName}.json`,this.strippedFileName=this.panel.config.split("/")[3].split(".")[0],this.sourceCounts[this.panel.config]?this.sourceCounts[this.panel.config]+=1:this.sourceCounts[this.panel.config]=1,this.configFileStructure.rampConfig[this.lang].file(this.strippedFileName+".json",JSON.stringify("en"===this.lang?$i:Li,null,4)),this.status="default"}openEditor(){if(""!==this.panel.config&&(this.status="editing",this.panel.config)){const e=""+this.panel.config.substring(this.panel.config.indexOf("/")+1),t=this.configFileStructure.zip.file(e);t?t.async("string").then(e=>{window.config=e;const t=document.getElementById("RAMPeditorframe");t.contentWindow&&(t.contentWindow.config=e,t.contentWindow.configname=this.strippedFileName)}):fetch(this.panel.config).then(e=>{e.json().then(e=>{let t=JSON.stringify(e);window.config=t;const i=document.getElementById("RAMPeditorframe");i.contentWindow&&(i.contentWindow.config=t,i.contentWindow.configname=this.strippedFileName)})})}}saveScrollguard(e){this.panel.scrollguard=e.target.checked}saveTimeSlider(){this.timeSliderError&&this.usingTimeSlider||(this.panel.timeSlider=this.usingTimeSlider?this.timeSliderConf:void 0),this.$emit("slide-edit"),this.$vfm.close("time-slider-edit-modal")}saveEditor(e){"mapSaved"===e.data&&(this.status="default",this.configFileStructure.rampConfig[this.lang].file(this.strippedFileName+".json",JSON.stringify(JSON.parse(localStorage.RAMPconfig),null,4)),this.$emit("slide-edit"))}onTimeSliderInput(e,t,i){"layers"===e?i&&""!==i?this.timeSliderConf["layers"]=i.split(",").map(e=>e.trim()):delete this.timeSliderConf["layers"]:"attribute"===e?this.timeSliderConf[e]=i:this.timeSliderConf[e][t]=Number(i),this.validateTimeSlider()}validateTimeSlider(){this.timeSliderError=this.timeSliderConf.range.some(e=>e<0||!Number.isInteger(e))||this.timeSliderConf.start.some(e=>e<0||!Number.isInteger(e))||this.timeSliderConf.range[1](Object(a["pushScopeId"])("data-v-996fd9c6"),e=e(),Object(a["popScopeId"])(),e),ma={class:"block"},pa={class:"flex mt-4 items-center w-full text-left"},ha={class:"text-label"},ba={class:"flex drag-label cursor-pointer"},ga=ua(()=>Object(a["createElementVNode"])("span",{class:"align-middle inline-block pr-4"},[Object(a["createElementVNode"])("svg",{xmlns:"http://www.w3.org/2000/svg",width:"48",height:"48",viewBox:"0 -2 30 30"},[Object(a["createElementVNode"])("path",{d:"M599,692 C597.896,692 597,692.896 597,694 L597,698 L575,698 L575,694 C575,692.896 574.104,692 573,692 C571.896,692 571,692.896 571,694 L571,701 C571,701.479 571.521,702 572,702 L600,702 C600.604,702 601,701.542 601,701 L601,694 C601,692.896 600.104,692 599,692 L599,692 Z M582,684 L584,684 L584,693 C584,694.104 584.896,695 586,695 C587.104,695 588,694.104 588,693 L588,684 L590,684 C590.704,684 591.326,684.095 591.719,683.7 C592.11,683.307 592.11,682.668 591.719,682.274 L586.776,676.283 C586.566,676.073 586.289,675.983 586.016,675.998 C585.742,675.983 585.465,676.073 585.256,676.283 L580.313,682.274 C579.921,682.668 579.921,683.307 580.313,683.7 C580.705,684.095 581.608,684 582,684 L582,684 Z",transform:"translate(-571.000000, -676.000000)"})])],-1)),fa={class:"align-middle inline-block"},va={class:"text-blue-400 font-bold"},Oa={class:"flex mt-4 items-center w-full text-left"},ja={class:"text-label"},Va={key:1,ref:"videoUrl",class:"w-3/5",type:"search"};function ya(e,t,i,l,o,n){const r=Object(a["resolveComponent"])("VideoPreview");return Object(a["openBlock"])(),Object(a["createElementBlock"])("div",ma,[Object(a["createElementVNode"])("div",pa,[Object(a["createElementVNode"])("label",ha,Object(a["toDisplayString"])(e.$t("editor.video.title"))+":",1),Object(a["withDirectives"])(Object(a["createElementVNode"])("input",{class:"w-3/5",type:"text","onUpdate:modelValue":t[0]||(t[0]=t=>e.videoPreview.title=t),onChange:t[1]||(t[1]=(...t)=>e.onVideoEdited&&e.onVideoEdited(...t))},null,544),[[a["vModelText"],e.videoPreview.title]])]),Object(a["createElementVNode"])("div",{class:Object(a["normalizeClass"])(["upload-video text-center m-5 p-12 bg-gray-100 border-4 border-dashed border-gray-300",{dragging:e.isDragging}]),onDragover:t[3]||(t[3]=Object(a["withModifiers"])(()=>e.dragging=!0,["prevent"])),onDragleave:t[4]||(t[4]=Object(a["withModifiers"])(()=>e.dragging=!1,["prevent"])),onDrop:t[5]||(t[5]=Object(a["withModifiers"])(t=>e.dropVideo(t),["prevent"]))},[Object(a["createElementVNode"])("label",ba,[ga,Object(a["createElementVNode"])("span",fa,[Object(a["createElementVNode"])("span",null,[Object(a["createElementVNode"])("div",null,Object(a["toDisplayString"])(e.$t("editor.video.label.drag")),1),Object(a["createElementVNode"])("div",null,[Object(a["createTextVNode"])(Object(a["toDisplayString"])(e.$t("editor.label.or"))+" ",1),Object(a["createElementVNode"])("span",va,Object(a["toDisplayString"])(e.$t("editor.label.browse")),1),Object(a["createTextVNode"])(" "+Object(a["toDisplayString"])(e.$t("editor.label.upload")),1)])]),Object(a["createElementVNode"])("input",{ref:"videoFileInput",type:"file",class:"cursor-pointer",onChange:t[2]||(t[2]=(...t)=>e.onFileChange&&e.onFileChange(...t))},null,544)])])],34),Object(a["createElementVNode"])("div",Oa,[Object(a["createElementVNode"])("label",ja,Object(a["toDisplayString"])(e.$t("editor.label.or")+" "+e.$t("editor.video.pasteUrl"))+":",1),"local"!==e.videoPreview.videoType?Object(a["withDirectives"])((Object(a["openBlock"])(),Object(a["createElementBlock"])("input",{key:0,ref:"videoUrl",class:"w-3/5",type:"search","onUpdate:modelValue":t[6]||(t[6]=t=>e.videoPreview.src=t)},null,512)),[[a["vModelText"],e.videoPreview.src]]):(Object(a["openBlock"])(),Object(a["createElementBlock"])("input",Va,null,512)),Object(a["createElementVNode"])("button",{onClick:t[7]||(t[7]=(...t)=>e.uploadVideoUrl&&e.uploadVideoUrl(...t)),class:"bg-white border border-black hover:bg-gray-100"},Object(a["toDisplayString"])(e.$t("editor.video.label.upload")),1)]),e.videoPreviewLoading||0===Object.keys(e.videoPreview).length?Object(a["createCommentVNode"])("",!0):(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",{key:0,class:"flex flex-wrap justify-center list-none border my-4",onUpdate:t[8]||(t[8]=(...t)=>e.onVideoEdited&&e.onVideoEdited(...t)),"item-key":"id"},[(Object(a["openBlock"])(),Object(a["createBlock"])(r,{key:""+e.videoPreview.id,file:e.videoPreview,fileType:e.fileType,lang:e.lang,onDelete:e.deleteVideo},null,8,["file","fileType","lang","onDelete"]))],32))])}const Sa=e=>(Object(a["pushScopeId"])("data-v-2d1c87e5"),e=e(),Object(a["popScopeId"])(),e),Ca={class:"my-8 mx-4 overflow-hidden w-full"},xa={class:"relative text-center w-full grabbable"},Ea=["content"],wa=Sa(()=>Object(a["createElementVNode"])("svg",{height:"24px",width:"24px",viewBox:"0 0 352 512",xmlns:"http://www.w3.org/2000/svg"},[Object(a["createElementVNode"])("path",{d:"M242.72 256l100.07-100.07c12.28-12.28 12.28-32.19 0-44.48l-22.24-22.24c-12.28-12.28-32.19-12.28-44.48 0L176 189.28 75.93 89.21c-12.28-12.28-32.19-12.28-44.48 0L9.21 111.45c-12.28 12.28-12.28 32.19 0 44.48L109.28 256 9.21 356.07c-12.28 12.28-12.28 32.19 0 44.48l22.24 22.24c12.28 12.28 32.2 12.28 44.48 0L176 322.72l100.07 100.07c12.28 12.28 32.2 12.28 44.48 0l22.24-22.24c12.28-12.28 12.28-32.19 0-44.48L242.72 256z"})],-1)),ka=[wa],Na={class:"video-container"},Ta=["src","height","width"],_a=["title","height","width"],$a=["type","src"],La=["src","srclang","label"];function Ia(e,t,i,l,o,n){const r=Object(a["resolveDirective"])("tippy");return Object(a["openBlock"])(),Object(a["createElementBlock"])("div",Ca,[Object(a["createElementVNode"])("div",xa,[Object(a["withDirectives"])((Object(a["openBlock"])(),Object(a["createElementBlock"])("button",{class:"bg-white absolute h-6 w-6 leading-5 rounded-full top-0 right-0 p-0 cursor-pointer",onClick:t[0]||(t[0]=()=>e.$emit("delete",e.file)),content:e.$t("editor.video.delete")},ka,8,Ea)),[[r,{placement:"top",hideOnClick:!1,animateFill:!0}]]),Object(a["createElementVNode"])("div",Na,["YouTube"===e.file.videoType?(Object(a["openBlock"])(),Object(a["createElementBlock"])("iframe",{key:0,class:"w-3/5",src:e.file.src,height:e.file.height?e.file.height:400,width:e.file.width,allowfullscreen:""},null,8,Ta)):Object(a["createCommentVNode"])("",!0),"local"===e.file.videoType||"external"===e.file.videoType?(Object(a["openBlock"])(),Object(a["createElementBlock"])("video",{key:1,class:"w-3/5",title:e.file.title,height:e.file.height?e.file.height:500,width:e.file.width,controls:""},[Object(a["createElementVNode"])("source",{type:e.fileType,src:e.file.src},null,8,$a),e.file.caption?(Object(a["openBlock"])(),Object(a["createElementBlock"])("track",{key:0,kind:"captions",src:e.file.caption,srclang:e.lang,label:e.langs[e.lang]},null,8,La)):Object(a["createCommentVNode"])("",!0)],8,_a)):Object(a["createCommentVNode"])("",!0)])]),Object(a["renderSlot"])(e.$slots,"default",{},void 0,!0)])}var Ma=i("d4cd"),Ba=i.n(Ma);class Da extends r["c"]{constructor(){super(...arguments),this.md=new Ba.a({html:!0}),this.langs={en:"English",fr:"French"},this.expandTranscript=!1,this.rawTranscript="",this.transcriptContent=""}}Object(n["a"])([Object(r["b"])()],Da.prototype,"file",void 0),Object(n["a"])([Object(r["b"])()],Da.prototype,"fileType",void 0),Object(n["a"])([Object(r["b"])()],Da.prototype,"lang",void 0);i("480b");const Fa=d()(Da,[["render",Ia],["__scopeId","data-v-2d1c87e5"]]);var Pa=Fa;let Ra=class extends r["c"]{constructor(){super(...arguments),this.dragging=!1,this.edited=!1,this.fileType="",this.videoPreviewLoading=!1,this.videoPreviewPromise=void 0,this.videoPreview={},this.slideshowCaption=""}get isDragging(){return this.dragging}mounted(){if(this.panel.src)if("local"===this.panel.videoType){var e;this.videoPreviewLoading=!0;const t=""+this.panel.src.substring(this.panel.src.indexOf("/")+1),i=this.panel.src.replace(/^.*[\\/]/,""),a=this.configFileStructure.zip.file(t);a&&(this.videoPreviewPromise=a.async("blob").then(e=>({...this.panel,id:i||this.panel.src,src:URL.createObjectURL(e)}))),null===(e=this.videoPreviewPromise)||void 0===e||e.then(e=>{this.videoPreview=e,this.videoPreviewLoading=!1}),this.slideshowCaption=this.panel.caption}else this.videoPreview={id:this.panel.src,title:this.panel.title,videoType:"YouTube"===this.panel.videoType?"YouTube":"external",src:this.panel.src}}addUploadedFile(e,t){const i=`${this.configFileStructure.uuid}/assets/${this.lang}/${e.name}`;this.configFileStructure.assets[this.lang].file(e.name,e),this.sourceCounts[i]?this.sourceCounts[i]+=1:this.sourceCounts[i]=1;const a=URL.createObjectURL(e);"src"===t?(this.videoPreview={id:e.name,title:this.videoPreview.title||e.name,videoType:"local",src:a},this.findFileType(e.name)):this.videoPreview[t]=a,this.edited=!0,this.$emit("slide-edit")}onFileChange(e){const t=Array.from(e.target.files)[0];this.addUploadedFile(t,"src"),this.onVideoEdited()}findFileType(e){if("external"===this.videoPreview.videoType||"local"===this.videoPreview.videoType){const t=e.substring(e.lastIndexOf("/")+1),i=t.split(".").pop();this.fileType="video/"+i}}extractYoutubeId(e){const t=/^.*(youtu.be\/|v\/|u\/\w\/|embed\/|watch\?v=|&v=)([^#&?]*).*/,i=e.match(t);return i&&11===i[2].length?i[2]:null}uploadVideoUrl(){let e=this.$refs.videoUrl.value;const t=e.toLowerCase().includes("youtube");t&&(e=e.replace("/watch?v=","/embed/")),this.videoPreview={id:e,title:this.videoPreview.title||e,videoType:e.includes("youtube")?"YouTube":"external",src:e},this.edited=!0,this.$emit("slide-edit")}updateCaptions(e){const t=Array.from(e.target.files)[0];this.addUploadedFile(t,"caption")}updateTranscript(e){const t=Array.from(e.target.files)[0];this.addUploadedFile(t,"transcript")}dropVideo(e){if(null!==e.dataTransfer){const t=[...e.dataTransfer.files][0];this.addUploadedFile(t,"src"),this.dragging=!1}this.onVideoEdited()}deleteVideo(){this.$refs.videoFileInput.value="",this.videoPreview={},this.onVideoEdited()}saveChanges(){this.edited&&this.videoPreview&&(this.panel.title=this.videoPreview.title,this.panel.videoType=this.videoPreview.videoType,this.panel.src="local"===this.videoPreview.videoType?`${this.configFileStructure.uuid}/assets/${this.lang}/${this.videoPreview.id}`:this.videoPreview.src,this.panel.caption=this.videoPreview.caption?this.videoPreview.caption:"",this.panel.transcript=this.videoPreview.transcript?this.videoPreview.transcript:""),this.edited=!1}onVideoEdited(){this.edited=!0,this.$emit("slide-edit")}};Object(n["a"])([Object(r["b"])()],Ra.prototype,"panel",void 0),Object(n["a"])([Object(r["b"])()],Ra.prototype,"configFileStructure",void 0),Object(n["a"])([Object(r["b"])()],Ra.prototype,"lang",void 0),Object(n["a"])([Object(r["b"])()],Ra.prototype,"sourceCounts",void 0),Ra=Object(n["a"])([Object(r["a"])({components:{VideoPreview:Pa,draggable:st.a}})],Ra);var Aa=Ra;i("a229");const Ua=d()(Aa,[["render",ya],["__scopeId","data-v-996fd9c6"]]);var za=Ua;const Wa=e=>(Object(a["pushScopeId"])("data-v-5b666f60"),e=e(),Object(a["popScopeId"])(),e),qa={class:"block"},Ha={class:"flex items-center"},Xa={class:"font-bold px-4"},Ja={class:"flex items-center"},Ga=Wa(()=>Object(a["createElementVNode"])("svg",{height:"18px",width:"18px",viewBox:"0 0 23 21",xmlns:"http://www.w3.org/2000/svg"},[Object(a["createElementVNode"])("path",{d:"M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z"})],-1)),Za={class:"px-2"},Ya=Wa(()=>Object(a["createElementVNode"])("hr",{class:"border-solid border-t-2 border-gray-300 my-2"},null,-1)),Qa={class:"flex items-center w-full text-left"},Ka={class:"text-label"},el=Wa(()=>Object(a["createElementVNode"])("br",null,null,-1)),tl={class:"w-2/3 mt-5"},il={class:"table-header"},al=Wa(()=>Object(a["createElementVNode"])("th",null,null,-1)),ll=["onClick"],ol=["onClick"],nl=Wa(()=>Object(a["createElementVNode"])("br",null,null,-1)),rl=Wa(()=>Object(a["createElementVNode"])("br",null,null,-1)),sl={key:0},cl={class:"text-xl font-bold"},dl=Wa(()=>Object(a["createElementVNode"])("hr",{class:"border-solid border-t-2 border-gray-300 my-2"},null,-1)),ul={key:0},ml={class:"mb-5 text-left"},pl=["value"],hl=["value"],bl={class:"mt-3 w-full flex justify-end"},gl={key:1},fl={class:"mt-3 w-full flex justify-end"};function vl(e,t,i,l,o,n){return Object(a["openBlock"])(),Object(a["createElementBlock"])("div",qa,[Object(a["createElementVNode"])("div",Ha,[Object(a["createElementVNode"])("span",Xa,Object(a["toDisplayString"])(e.$t("editor.slideshow.label.info",{num:e.panel.items.length})),1),Object(a["createElementVNode"])("button",{class:"bg-gray-100 cursor-pointer hover:bg-gray-200",onClick:t[0]||(t[0]=t=>e.editingStatus="create")},[Object(a["createElementVNode"])("div",Ja,[Ga,Object(a["createElementVNode"])("span",Za,Object(a["toDisplayString"])(e.$t("editor.slideshow.label.create")),1)])])]),Ya,Object(a["createElementVNode"])("div",Qa,[Object(a["createElementVNode"])("label",Ka,Object(a["toDisplayString"])(e.$t("editor.image.slideshowCaption"))+":",1),Object(a["withDirectives"])(Object(a["createElementVNode"])("input",{class:"w-1/3",type:"text","onUpdate:modelValue":t[1]||(t[1]=t=>e.panel.caption=t)},null,512),[[a["vModelText"],e.panel.caption]]),el]),Object(a["createElementVNode"])("table",tl,[Object(a["createElementVNode"])("thead",null,[Object(a["createElementVNode"])("tr",il,[al,Object(a["createElementVNode"])("th",null,Object(a["toDisplayString"])(e.$t("editor.slideshow.label.type")),1),Object(a["createElementVNode"])("th",null,Object(a["toDisplayString"])(e.$t("dynamic.panel.actions")),1)])]),Object(a["createElementVNode"])("tbody",null,[(Object(a["openBlock"])(!0),Object(a["createElementBlock"])(a["Fragment"],null,Object(a["renderList"])(e.panel.items,(t,i)=>(Object(a["openBlock"])(),Object(a["createElementBlock"])("tr",{class:"table-contents",key:i},[Object(a["createElementVNode"])("td",null,Object(a["toDisplayString"])(i+1)+".",1),Object(a["createElementVNode"])("td",null,Object(a["toDisplayString"])(t.type),1),Object(a["createElementVNode"])("td",null,[Object(a["createElementVNode"])("span",{onClick:t=>e.editItem(i),class:"underline"},"Edit",8,ll),Object(a["createTextVNode"])(" | "),Object(a["createElementVNode"])("span",{onClick:t=>e.deleteItem(i),class:"underline"},"Remove",8,ol)])]))),128))])]),nl,rl,"none"!==e.editingStatus?(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",sl,[Object(a["createElementVNode"])("h2",cl,Object(a["toDisplayString"])(e.$t("editor.slideshow.label."+e.editingStatus)),1),dl,Object(a["createElementVNode"])("div",null,["create"===e.editingStatus?(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",ul,[Object(a["createElementVNode"])("label",ml,Object(a["toDisplayString"])(e.$t("editor.slideshow.label.type"))+":",1),Object(a["createElementVNode"])("select",{onInput:t[2]||(t[2]=(...t)=>e.onTypeInput&&e.onTypeInput(...t)),value:e.newSlideType},[(Object(a["openBlock"])(!0),Object(a["createElementBlock"])(a["Fragment"],null,Object(a["renderList"])(Object.keys(e.editors),e=>(Object(a["openBlock"])(),Object(a["createElementBlock"])("option",{key:e,value:e},Object(a["toDisplayString"])(e),9,hl))),128))],40,pl),"create"===e.editingStatus?(Object(a["openBlock"])(),Object(a["createBlock"])(Object(a["resolveDynamicComponent"])(e.editors[e.newSlideType]),{key:0,ref:"slideEditor",panel:JSON.parse(JSON.stringify(e.startingConfig[e.newSlideType])),configFileStructure:e.configFileStructure,lang:e.lang,sourceCounts:e.sourceCounts,allowMany:!1},null,8,["panel","configFileStructure","lang","sourceCounts"])):Object(a["createCommentVNode"])("",!0),Object(a["createElementVNode"])("div",bl,[Object(a["createElementVNode"])("button",{class:"bg-black text-white hover:bg-gray-800",onClick:t[3]||(t[3]=t=>e.saveItem(!0))},Object(a["toDisplayString"])(e.$t("editor.slideshow.label.add")),1)])])):(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",gl,[(Object(a["openBlock"])(),Object(a["createBlock"])(Object(a["resolveDynamicComponent"])(e.editors[e.panel.items[e.editingIdx].type]),{ref:"slideEditor",panel:e.panel.items[e.editingIdx],configFileStructure:e.configFileStructure,lang:e.lang,sourceCounts:e.sourceCounts,key:e.editingIdx+e.panel.items[e.editingIdx].type,allowMany:!1},null,8,["panel","configFileStructure","lang","sourceCounts"])),Object(a["createElementVNode"])("div",fl,[Object(a["createElementVNode"])("button",{class:"bg-black text-white hover:bg-gray-800",onClick:t[4]||(t[4]=t=>e.saveItem())},Object(a["toDisplayString"])(e.$t("editor.saveChanges")),1)])]))])])):Object(a["createCommentVNode"])("",!0)])}let Ol=class extends r["c"]{constructor(){super(...arguments),this.editors={text:"text-editor",image:"image-editor",chart:"chart-editor",map:"map-editor",video:"video-editor"},this.startingConfig={text:{type:Se.Text,title:"",content:""},dynamic:{type:Se.Dynamic,title:"",titleTag:"",content:"",children:[]},slideshow:{type:Se.Slideshow,items:[]},chart:{type:Se.Chart,src:""},image:{type:Se.Image,src:""},map:{type:Se.Map,config:"",title:"",scrollguard:!0},video:{type:Se.Video,title:"",videoType:"",src:""}},this.editingIdx=-1,this.newSlideName="",this.newSlideType="text",this.editingStatus="none"}onTypeInput(e){this.newSlideType=e.target.value}editItem(e){this.saveChanges(),this.editingIdx=e,this.editingStatus="edit"}deleteItem(e){const t=this.panel.items.find((t,i)=>i===e);switch(null===t||void 0===t?void 0:t.type){case"map":{const e=t;this.sourceCounts[e.config]-=1,0===this.sourceCounts[e.config]&&this.configFileStructure.zip.remove(""+e.config.substring(e.config.indexOf("/")+1));break}case"chart":{const e=t;this.sourceCounts[e.src]-=1,0===this.sourceCounts[e.src]&&this.configFileStructure.zip.remove(""+e.src.substring(e.src.indexOf("/")+1));break}case"image":{const e=t;this.sourceCounts[e.src]-=1,0===this.sourceCounts[e.src]&&this.configFileStructure.zip.remove(""+e.src.substring(e.src.indexOf("/")+1));break}case"text":break}this.panel.items=this.panel.items.filter((t,i)=>i!==e),this.editingIdx===e&&(this.editingIdx=-1,this.editingStatus="none")}saveItem(e=!1){let t;e?(t=this.$refs.slideEditor.panel,this.panel.items.push(t)):t=this.$refs.slideEditor.panel,t.type!==Se.Text&&t.type!==Se.Map&&void 0!==this.$refs.slideEditor&&"function"===typeof this.$refs.slideEditor.saveChanges&&this.$refs.slideEditor.saveChanges(),this.editingStatus="none"}saveChanges(){}};Object(n["a"])([Object(r["b"])()],Ol.prototype,"panel",void 0),Object(n["a"])([Object(r["b"])()],Ol.prototype,"configFileStructure",void 0),Object(n["a"])([Object(r["b"])()],Ol.prototype,"lang",void 0),Object(n["a"])([Object(r["b"])()],Ol.prototype,"sourceCounts",void 0),Ol=Object(n["a"])([Object(r["a"])({components:{"chart-editor":mt,"image-editor":Qt,"text-editor":oi,"map-editor":da,"video-editor":za}})],Ol);var jl=Ol;i("303e");const Vl=d()(jl,[["render",vl],["__scopeId","data-v-5b666f60"]]);var yl=Vl;const Sl={class:"block py-20 align-middle text-center h-full",style:{margin:"0 auto"}};function Cl(e,t,i,l,o,n){const r=Object(a["resolveComponent"])("spinner");return Object(a["openBlock"])(),Object(a["createElementBlock"])("div",Sl,[Object(a["createVNode"])(r,{size:"120px",color:"#009cd1",style:{margin:"0 auto"}})])}let xl=class extends r["c"]{};xl=Object(n["a"])([Object(r["a"])({components:{spinner:A["a"]}})],xl);var El=xl;const wl=d()(El,[["render",Cl]]);var kl=wl;const Nl={class:"block"},Tl={class:"flex"},_l={key:0},$l={key:1},Ll={class:"w-2/3 mt-5"},Il={class:"table-header"},Ml=["onClick"],Bl=["onClick"],Dl={class:"table-add-row"},Fl={class:"flex flex-col items-center"},Pl={key:0},Rl=["disabled"],Al={key:0},Ul=Object(a["createElementVNode"])("br",null,null,-1),zl=Object(a["createElementVNode"])("hr",null,null,-1),Wl=Object(a["createElementVNode"])("br",null,null,-1),ql={class:"font-bold text-xl"},Hl=Object(a["createElementVNode"])("br",null,null,-1);function Xl(e,t,i,l,o,n){return Object(a["openBlock"])(),Object(a["createElementBlock"])("div",Nl,[Object(a["createElementVNode"])("div",Tl,[Object(a["createElementVNode"])("button",{onClick:t[0]||(t[0]=()=>e.changePanel("text")),class:Object(a["normalizeClass"])(["border hover:bg-gray-100","text"===e.editingStatus?"border-black":"border-gray-300"])},Object(a["toDisplayString"])(e.$t("dynamic.textSection")),3),Object(a["createElementVNode"])("button",{onClick:t[1]||(t[1]=()=>e.changePanel("panels")),class:Object(a["normalizeClass"])(["border hover:bg-gray-100","text"!==e.editingStatus?"border-black":"border-gray-300"])},Object(a["toDisplayString"])(e.$t("dynamic.panel.collection")),3)]),"text"===e.editingStatus?(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",_l,[(Object(a["openBlock"])(),Object(a["createBlock"])(Object(a["resolveDynamicComponent"])("text-editor"),{key:"text",panel:e.panel,configFileStructure:e.configFileStructure,lang:e.lang},null,8,["panel","configFileStructure","lang"]))])):Object(a["createCommentVNode"])("",!0),"panels"===e.editingStatus?(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",$l,[Object(a["createElementVNode"])("table",Ll,[Object(a["createElementVNode"])("tr",Il,[Object(a["createElementVNode"])("th",null,Object(a["toDisplayString"])(e.$t("dynamic.panel.id")),1),Object(a["createElementVNode"])("th",null,Object(a["toDisplayString"])(e.$t("dynamic.panel.type")),1),Object(a["createElementVNode"])("th",null,Object(a["toDisplayString"])(e.$t("dynamic.panel.actions")),1)]),(Object(a["openBlock"])(!0),Object(a["createElementBlock"])(a["Fragment"],null,Object(a["renderList"])(e.panel.children,(t,i)=>(Object(a["openBlock"])(),Object(a["createElementBlock"])("tr",{class:"table-contents",key:i},[Object(a["createElementVNode"])("td",null,Object(a["toDisplayString"])(t.id),1),Object(a["createElementVNode"])("td",null,Object(a["toDisplayString"])(e.determineEditorType(t.panel)),1),Object(a["createElementVNode"])("td",null,[Object(a["createElementVNode"])("span",{onClick:()=>e.switchSlide(i)},Object(a["toDisplayString"])(e.$t("editor.chart.label.edit")),9,Ml),Object(a["createTextVNode"])(" | "),Object(a["createElementVNode"])("span",{onClick:()=>e.removeSlide(t,i)},Object(a["toDisplayString"])(e.$t("editor.remove")),9,Bl)])]))),128)),Object(a["createElementVNode"])("tr",Dl,[Object(a["createElementVNode"])("th",Fl,[Object(a["withDirectives"])(Object(a["createElementVNode"])("input",{type:"text",placeholder:"Enter Panel ID","onUpdate:modelValue":t[2]||(t[2]=t=>e.newSlideName=t)},null,512),[[a["vModelText"],e.newSlideName]]),e.idUsed?(Object(a["openBlock"])(),Object(a["createElementBlock"])("p",Pl,Object(a["toDisplayString"])(e.$t("dynamic.panel.idTaken")),1)):Object(a["createCommentVNode"])("",!0)]),Object(a["createElementVNode"])("th",null,[Object(a["withDirectives"])(Object(a["createElementVNode"])("select",{"onUpdate:modelValue":t[3]||(t[3]=t=>e.newSlideType=t)},[(Object(a["openBlock"])(!0),Object(a["createElementBlock"])(a["Fragment"],null,Object(a["renderList"])(Object.keys(e.editors),e=>(Object(a["openBlock"])(),Object(a["createElementBlock"])("option",{key:e},Object(a["toDisplayString"])(e),1))),128))],512),[[a["vModelSelect"],e.newSlideType]])]),Object(a["createElementVNode"])("th",null,[Object(a["createElementVNode"])("button",{onClick:t[4]||(t[4]=(...t)=>e.createNewSlide&&e.createNewSlide(...t)),disabled:e.idUsed},"Add New",8,Rl)])])]),-1!==e.editingSlide?(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",Al,[Ul,zl,Wl,Object(a["createElementVNode"])("span",ql,Object(a["toDisplayString"])(e.$t("dynamic.panel.editor")),1),Hl,(Object(a["openBlock"])(),Object(a["createBlock"])(Object(a["resolveDynamicComponent"])(e.editors[e.determineEditorType(e.panel.children[e.editingSlide].panel)]),{ref:"slide",key:e.editingSlide+e.determineEditorType(e.panel.children[e.editingSlide].panel),panel:e.panel.children[e.editingSlide].panel,configFileStructure:e.configFileStructure,lang:e.lang,sourceCounts:e.sourceCounts,onSlideEdit:t[5]||(t[5]=t=>e.$emit("slide-edit"))},null,40,["panel","configFileStructure","lang","sourceCounts"]))])):Object(a["createCommentVNode"])("",!0)])):Object(a["createCommentVNode"])("",!0)])}var Jl;let Gl=Jl=class extends r["c"]{constructor(){super(...arguments),this.editors={text:"text-editor",image:"image-editor",slideshow:"slideshow-editor",chart:"chart-editor",map:"map-editor",video:"video-editor"},this.startingConfig={text:{type:Se.Text,title:"",content:""},dynamic:{type:Se.Dynamic,title:"",titleTag:"",content:"",children:[]},slideshow:{type:Se.Slideshow,items:[],userCreated:!0},image:{type:Se.Image,src:""},chart:{type:Se.Chart,src:""},map:{type:Se.Map,config:"",title:"",scrollguard:!1},video:{type:Se.Video,title:"",videoType:"",src:""}},this.editingStatus="text",this.editingSlide=-1,this.newSlideName="",this.newSlideType="text"}get idUsed(){return this.panel.children.some(e=>e.id===this.newSlideName)}changePanel(e){"text"!==this.editingStatus&&this.saveChanges(),this.editingStatus=e}switchSlide(e){this.saveChanges(),this.editingSlide=e}removeSlide(e,t){switch(null===e||void 0===e?void 0:e.type){case"map":{const t=e;this.sourceCounts[t.config]-=1,0===this.sourceCounts[t.config]&&this.configFileStructure.zip.remove(""+t.config.substring(t.config.indexOf("/")+1));break}case"chart":{const t=e;this.sourceCounts[t.src]-=1,0===this.sourceCounts[t.src]&&this.configFileStructure.zip.remove(""+t.src.substring(t.src.indexOf("/")+1));break}case"image":{const t=e;this.sourceCounts[t.src]-=1,0===this.sourceCounts[t.src]&&this.configFileStructure.zip.remove(""+t.src.substring(t.src.indexOf("/")+1));break}case"slideshow":{const t=e;t.items.forEach(e=>{this.removeSlide(e)});break}case"video":{const t=e;"local"===t.videoType&&(this.sourceCounts[t.src]-=1,0===this.sourceCounts[t.src]&&this.configFileStructure.zip.remove(""+t.src.substring(t.src.indexOf("/")+1)));break}}t&&(this.panel.children=this.panel.children.filter((e,i)=>i!==t),this.editingSlide===t&&(this.editingSlide=-1))}createNewSlide(){if(!this.newSlideName)return;const e={id:this.newSlideName,panel:JSON.parse(JSON.stringify(this.startingConfig[this.newSlideType]))};this.newSlideName="",this.panel.children.push(e)}determineEditorType(e){if(e.type!==Se.Slideshow)return e.type;if(0===e.items.length||e.userCreated)return Se.Slideshow;const t=e.items.every(e=>e.type===Se.Chart);if(t)return Se.Chart;const i=e.items.every(e=>e.type===Se.Image);return i?Se.Image:Se.Slideshow}saveChanges(){void 0!==this.$refs.slide&&"function"===typeof this.$refs.slide.saveChanges&&this.$refs.slide.saveChanges()}};Object(n["a"])([Object(r["b"])()],Gl.prototype,"panel",void 0),Object(n["a"])([Object(r["b"])()],Gl.prototype,"configFileStructure",void 0),Object(n["a"])([Object(r["b"])()],Gl.prototype,"lang",void 0),Object(n["a"])([Object(r["b"])()],Gl.prototype,"sourceCounts",void 0),Gl=Jl=Object(n["a"])([Object(r["a"])({components:{"chart-editor":mt,"image-editor":Qt,"text-editor":oi,"slideshow-editor":yl,"dynamic-editor":Jl,"map-editor":da,"video-editor":za}})],Gl);var Zl=Gl;i("c666");const Yl=d()(Zl,[["render",Xl]]);var Ql=Yl;let Kl=class extends r["c"]{constructor(){super(...arguments),this.config=void 0,this.panelIndex=0,this.advancedEditorView=!1,this.newType="",this.rightOnly=!1,this.editors={text:"text-editor",image:"image-editor",slideshow:"slideshow-editor",chart:"chart-editor",map:"map-editor",video:"video-editor",loading:"loading-page",dynamic:"dynamic-editor"}}onSlideChange(){this.currentSlide&&(this.rightOnly=1===this.currentSlide.panel.length)}changePanelType(e,t){const i={text:{type:Se.Text,title:"",content:""},dynamic:{type:Se.Dynamic,title:this.currentSlide.panel[0]&&"text"===e?this.currentSlide.panel[0].title:"",titleTag:"",content:this.currentSlide.panel[0]&&"text"===e?this.currentSlide.panel[0].content:"",children:[]},slideshow:{type:Se.Slideshow,items:[],userCreated:!0},image:{type:Se.Image,src:""},chart:{type:Se.Chart,src:""},map:{type:Se.Map,config:"",title:"",scrollguard:!1},video:{type:Se.Video,title:"",videoType:"",src:""}};this.currentSlide.panel.forEach(e=>this.removeSourceCounts(e)),"dynamic"===t?(this.panelIndex=0,this.currentSlide["panel"]=[i[t]]):this.currentSlide.panel[this.panelIndex]=i[t]}removeSourceCounts(e){switch(e.type){case"map":{const t=e;this.sourceCounts[t.config]-=1,0===this.sourceCounts[t.config]&&this.configFileStructure.zip.remove(""+t.config.substring(t.config.indexOf("/")+1));break}case"image":{const t=e;this.sourceCounts[t.src]-=1,0===this.sourceCounts[t.src]&&this.configFileStructure.zip.remove(""+t.src.substring(t.src.indexOf("/")+1));break}case"chart":{const t=e;this.sourceCounts[t.src]-=1,0===this.sourceCounts[t.src]&&this.configFileStructure.zip.remove(""+t.src.substring(t.src.indexOf("/")+1));break}case"slideshow":{const t=e;t.items.forEach(e=>{this.removeSourceCounts(e)});break}case"video":{const t=e;"local"===t.videoType&&(this.sourceCounts[t.src]-=1,0===this.sourceCounts[t.src]&&this.configFileStructure.zip.remove(""+t.src.substring(t.src.indexOf("/")+1)));break}case"dynamic":{const t=e;t.children.forEach(e=>{this.removeSourceCounts(e.panel)});break}case"text":break}}saveChanges(){void 0!==this.$refs.editor&&"function"===typeof this.$refs.editor.saveChanges&&this.$refs.editor.saveChanges()}selectSlide(e){this.$emit("slide-change",e)}cancelTypeChange(){this.$refs.typeSelector.value=this.determineEditorType(this.currentSlide.panel[this.panelIndex])}determineEditorType(e){if(e.type!==Se.Slideshow)return e.type;if(0===e.items.length||e.userCreated)return Se.Slideshow;const t=e.items.every(e=>e.type===Se.Chart);if(t)return Se.Chart;const i=e.items.every(e=>e.type===Se.Image);return i?Se.Image:Se.Slideshow}toggleRightOnly(){this.saveChanges(),this.rightOnly?(this.panelIndex=0,this.currentSlide["panel"]=[this.currentSlide.panel[1]]):this.currentSlide["panel"]=[Object.assign({},{type:Se.Text,title:"",content:""}),Object.assign({},this.currentSlide.panel[0])]}};Object(n["a"])([Object(r["b"])()],Kl.prototype,"currentSlide",void 0),Object(n["a"])([Object(r["b"])()],Kl.prototype,"configFileStructure",void 0),Object(n["a"])([Object(r["b"])()],Kl.prototype,"lang",void 0),Object(n["a"])([Object(r["b"])()],Kl.prototype,"uid",void 0),Object(n["a"])([Object(r["b"])()],Kl.prototype,"slideIndex",void 0),Object(n["a"])([Object(r["b"])()],Kl.prototype,"isLast",void 0),Object(n["a"])([Object(r["b"])()],Kl.prototype,"sourceCounts",void 0),Object(n["a"])([Object(r["d"])("currentSlide",{deep:!0})],Kl.prototype,"onSlideChange",null),Kl=Object(n["a"])([Object(r["a"])({components:{"chart-editor":mt,"custom-editor":Ot,"image-editor":Qt,"text-editor":oi,"map-editor":da,"video-editor":za,"slideshow-editor":yl,"loading-page":kl,"dynamic-editor":Ql,"confirmation-modal":nt}})],Kl);var eo=Kl;i("0b20");const to=d()(eo,[["render",ye],["__scopeId","data-v-4c97a990"]]);var io=to;const ao=e=>(Object(a["pushScopeId"])("data-v-33456e0a"),e=e(),Object(a["popScopeId"])(),e),lo={class:"flex toc-header p-2 mt-10"},oo={class:"flex items-center justify-center font-bold"},no=ao(()=>Object(a["createElementVNode"])("span",{class:"flex-1"},null,-1)),ro=ao(()=>Object(a["createElementVNode"])("span",{class:"ml-auto"},null,-1)),so=ao(()=>Object(a["createElementVNode"])("span",{class:"align-middle inline-block px-1"},[Object(a["createElementVNode"])("svg",{xmlns:"http://www.w3.org/2000/svg",width:"10",height:"10",viewBox:"0 0 24 24"},[Object(a["createElementVNode"])("path",{d:"M24 10h-10v-10h-4v10h-10v4h10v10h4v-10h10z"})])],-1)),co={class:"align-middle inline-block"},uo=ao(()=>Object(a["createElementVNode"])("svg",{xmlns:"http://www.w3.org/2000/svg",height:"24",width:"24"},[Object(a["createElementVNode"])("path",{d:"M5 22q-.825 0-1.413-.587Q3 20.825 3 20V6h2v14h11v2Zm4-4q-.825 0-1.412-.587Q7 16.825 7 16V4q0-.825.588-1.413Q8.175 2 9 2h9q.825 0 1.413.587Q20 3.175 20 4v12q0 .825-.587 1.413Q18.825 18 18 18Zm0-2h9V4H9v12Zm0 0V4v12Z"})],-1)),mo=[uo],po={slot:"header",class:"text-xl font-bold"},ho={class:"flex flex-col"},bo={class:"text-lg font-bold my-6"},go={class:"flex"},fo=["value"],vo=["onClick"],Oo={class:"self-center overflow-ellipsis whitespace-nowrap overflow-hidden flex-grow ml-2"},jo={class:"font-bold overflow-hidden"},Vo={class:"flex"},yo={class:"flex flex-col"},So=["onClick"],Co=ao(()=>Object(a["createElementVNode"])("svg",{xmlns:"http://www.w3.org/2000/svg",width:"18",height:"18",viewBox:"0 0 24 24"},[Object(a["createElementVNode"])("path",{d:"M3 6l3 18h12l3-18h-18zm19-4v2h-20v-2h5.711c.9 0 1.631-1.099 1.631-2h5.316c0 .901.73 2 1.631 2h5.711z"})],-1)),xo=[Co],Eo=["onClick"],wo=ao(()=>Object(a["createElementVNode"])("svg",{xmlns:"http://www.w3.org/2000/svg",height:"24",width:"24"},[Object(a["createElementVNode"])("path",{d:"M5 22q-.825 0-1.413-.587Q3 20.825 3 20V6h2v14h11v2Zm4-4q-.825 0-1.412-.587Q7 16.825 7 16V4q0-.825.588-1.413Q8.175 2 9 2h9q.825 0 1.413.587Q20 3.175 20 4v12q0 .825-.587 1.413Q18.825 18 18 18Zm0-2h9V4H9v12Zm0 0V4v12Z"})],-1)),ko=[wo],No={class:"flex flex-col mr-2 ml-1 my-1"},To=["onClick","disabled"],_o=ao(()=>Object(a["createElementVNode"])("svg",{xmlns:"http://www.w3.org/2000/svg",class:"fill-current",height:"20",width:"20"},[Object(a["createElementVNode"])("path",{d:"m2 16 8-12 8 12Z"})],-1)),$o=[_o],Lo=["onClick","disabled"],Io=ao(()=>Object(a["createElementVNode"])("svg",{xmlns:"http://www.w3.org/2000/svg",class:"fill-current",height:"20",width:"20"},[Object(a["createElementVNode"])("path",{d:"m2 16 8-12 8 12Z"})],-1)),Mo=[Io];function Bo(e,t,i,l,o,n){const r=Object(a["resolveComponent"])("vue-final-modal"),s=Object(a["resolveComponent"])("confirmation-modal"),c=Object(a["resolveComponent"])("draggable"),d=Object(a["resolveDirective"])("tippy");return Object(a["openBlock"])(),Object(a["createElementBlock"])("div",null,[Object(a["createElementVNode"])("div",lo,[Object(a["createElementVNode"])("span",oo,Object(a["toDisplayString"])(e.$t("editor.slides.title")),1),no,ro,Object(a["createElementVNode"])("button",{onClick:t[0]||(t[0]=(...t)=>e.addNewSlide&&e.addNewSlide(...t))},[so,Object(a["createElementVNode"])("span",co,Object(a["toDisplayString"])(e.$t("editor.slides.addSlide")),1)]),Object(a["withDirectives"])((Object(a["openBlock"])(),Object(a["createElementBlock"])("button",{onClick:t[1]||(t[1]=Object(a["withModifiers"])(t=>e.$vfm.open("copy-from-other-lang"),["stop"]))},mo)),[[d,{delay:"200",placement:"right",content:e.$t("editor.slides.copyFromLang"),animateFill:!0}]]),Object(a["createVNode"])(r,{modalId:"copy-from-other-lang","content-class":"flex flex-col max-w-xl mx-4 p-4 bg-white border rounded-lg space-y-2",class:"flex justify-center items-center"},{default:Object(a["withCtx"])(()=>[Object(a["createElementVNode"])("h2",po,Object(a["toDisplayString"])(e.$t("editor.slides.copyFromLang")),1),Object(a["createElementVNode"])("div",ho,[Object(a["createElementVNode"])("button",{class:"w-32 h-12 ml-0",onClick:t[2]||(t[2]=t=>e.copyAllFromOtherLang(e.configFileStructure.configs["en"===e.lang?"fr":"en"].slides))},Object(a["toDisplayString"])(e.$t("editor.slides.copyAll")),1),Object(a["createElementVNode"])("span",bo,Object(a["toDisplayString"])(e.$t("editor.or")),1),Object(a["createElementVNode"])("div",go,[Object(a["withDirectives"])(Object(a["createElementVNode"])("select",{"onUpdate:modelValue":t[3]||(t[3]=t=>e.selectedForCopying=t),class:"overflow-ellipsis copy-select"},[(Object(a["openBlock"])(!0),Object(a["createElementBlock"])(a["Fragment"],null,Object(a["renderList"])(e.configFileStructure.configs["en"===e.lang?"fr":"en"].slides,(t,i)=>(Object(a["openBlock"])(),Object(a["createElementBlock"])("option",{value:i,key:t.title+i},Object(a["toDisplayString"])(e.$t("editor.slides.slide"))+" "+Object(a["toDisplayString"])(i+": "+t.title),9,fo))),128))],512),[[a["vModelSelect"],e.selectedForCopying]]),Object(a["createElementVNode"])("button",{onClick:t[4]||(t[4]=t=>e.copyFromOtherLang(e.configFileStructure.configs["en"===e.lang?"fr":"en"].slides[e.selectedForCopying]))},Object(a["toDisplayString"])(e.$t("editor.slides.copy")),1)])])]),_:1})]),Object(a["createElementVNode"])("ul",null,[Object(a["createVNode"])(c,{modelValue:e.slides,"onUpdate:modelValue":t[5]||(t[5]=t=>e.slides=t),onUpdate:t[6]||(t[6]=t=>e.$emit("slides-updated",e.slides)),"item-key":"title"},{item:Object(a["withCtx"])(({element:t,index:i})=>[Object(a["withDirectives"])((Object(a["openBlock"])(),Object(a["createElementBlock"])("li",{class:Object(a["normalizeClass"])(["toc-slide border-t flex px-2 cursor-pointer hover:bg-gray-100",e.currentSlide===t?"bg-gray-100":""]),onClick:t=>e.selectSlide(i),key:t.title+i},[Object(a["createElementVNode"])("div",Oo,[Object(a["createTextVNode"])(Object(a["toDisplayString"])(e.$t("editor.slides.slide"))+" "+Object(a["toDisplayString"])(i+1)+": ",1),Object(a["createElementVNode"])("span",jo,Object(a["toDisplayString"])(t.title||"Add a title"),1)]),Object(a["createElementVNode"])("div",Vo,[Object(a["createElementVNode"])("div",yo,[Object(a["createElementVNode"])("button",{onClick:Object(a["withModifiers"])(t=>e.$vfm.open("delete-slide-"+i),["stop"])},xo,8,So),Object(a["createElementVNode"])("button",{onClick:Object(a["withModifiers"])(t=>e.copySlide(i),["stop"])},ko,8,Eo)]),Object(a["createElementVNode"])("div",No,[Object(a["createElementVNode"])("button",{class:Object(a["normalizeClass"])(0==i?"text-gray-500 cursor-not-allowed":""),onClick:Object(a["withModifiers"])(t=>e.moveUp(i),["stop"]),disabled:0==i},$o,10,To),Object(a["createElementVNode"])("button",{class:Object(a["normalizeClass"])(["rotate-180 transform",i==e.slides.length-1?"text-gray-500 cursor-not-allowed":""]),onClick:Object(a["withModifiers"])(t=>e.moveDown(i),["stop"]),disabled:i==e.slides.length-1},Mo,10,Lo)])]),Object(a["createVNode"])(s,{name:"delete-slide-"+i,message:e.$t("editor.slides.deleteSlide.confirm",{title:t.title}),onOk:t=>e.removeSlide(i)},null,8,["name","message","onOk"])],10,vo)),[[d,{delay:"200",placement:"right",content:t.title,animateFill:!0}]])]),_:1},8,["modelValue"])])])}var Do=i("9675"),Fo=i.n(Do);let Po=class extends r["c"]{constructor(){super(...arguments),this.selectedForCopying=0}selectSlide(e){this.$emit("slide-change",e)}addNewSlide(){this.slides.push({title:"",panel:[{type:"text",title:"",content:""},{type:"text",title:"",content:""}]}),this.selectSlide(this.slides.length-1),this.$emit("slides-updated",this.slides)}copyFromOtherLang(e){e&&(this.slides.splice(this.slides.length,0,Fo()(e)),this.$emit("slides-updated",this.slides))}copyAllFromOtherLang(e){e&&(this.slides.splice(this.slides.length,0,...e.map(e=>Fo()(e))),this.$emit("slides-updated",this.slides))}copySlide(e){this.slides.splice(e+1,0,Fo()(this.slides[e])),this.$emit("slides-updated",this.slides)}removeSlide(e){e===this.slideIndex&&this.$emit("slide-change",-1),this.removeSourceCounts(e),this.slides.splice(e,1),this.$emit("slides-updated",this.slides)}removeSourceCounts(e){var t;const i=null===(t=this.slides.find((t,i)=>i===e))||void 0===t?void 0:t.panel;null===i||void 0===i||i.forEach(e=>this.removeSourceHelper(e))}removeSourceHelper(e){switch(e.type){case"map":{const t=e;this.sourceCounts[t.config]-=1,0===this.sourceCounts[t.config]&&this.configFileStructure.zip.remove(""+t.config.substring(t.config.indexOf("/")+1));break}case"image":{const t=e;this.sourceCounts[t.src]-=1,0===this.sourceCounts[t.src]&&this.configFileStructure.zip.remove(""+t.src.substring(t.src.indexOf("/")+1));break}case"chart":{const t=e;this.sourceCounts[t.src]-=1,0===this.sourceCounts[t.src]&&this.configFileStructure.zip.remove(""+t.src.substring(t.src.indexOf("/")+1));break}case"slideshow":{const t=e;t.items.forEach(e=>{this.removeSourceHelper(e)});break}case"video":{const t=e;"local"===t.videoType&&(this.sourceCounts[t.src]-=1,0===this.sourceCounts[t.src]&&this.configFileStructure.zip.remove(""+t.src.substring(t.src.indexOf("/")+1)));break}case"dynamic":{const t=e;t.children.forEach(e=>{this.removeSourceHelper(e.panel)});break}case"text":break}}moveUp(e){this.moveDown(e-1)}moveDown(e){this.slides.splice(e+1,0,this.slides.splice(e,1)[0]),this.$emit("slides-updated",this.slides)}};Object(n["a"])([Object(r["b"])()],Po.prototype,"slides",void 0),Object(n["a"])([Object(r["b"])()],Po.prototype,"currentSlide",void 0),Object(n["a"])([Object(r["b"])()],Po.prototype,"slideIndex",void 0),Object(n["a"])([Object(r["b"])()],Po.prototype,"configFileStructure",void 0),Object(n["a"])([Object(r["b"])()],Po.prototype,"lang",void 0),Object(n["a"])([Object(r["b"])()],Po.prototype,"sourceCounts",void 0),Po=Object(n["a"])([Object(r["a"])({components:{"slide-editor":io,"confirmation-modal":nt,"vue-final-modal":U["a"],draggable:st.a}})],Po);var Ro=Po;i("68ee");const Ao=d()(Ro,[["render",Bo],["__scopeId","data-v-33456e0a"]]);var Uo=Ao;const zo={class:"mb-5"},Wo=["value"],qo=Object(a["createElementVNode"])("br",null,null,-1),Ho={class:"mb-5"},Xo=["value"],Jo={class:"mb-5"},Go=["value"],Zo=Object(a["createElementVNode"])("br",null,null,-1),Yo={key:0},Qo=["src"],Ko={key:1,class:"image-preview"},en={class:"mb-5"},tn=["value"],an=Object(a["createElementVNode"])("br",null,null,-1),ln=["value"],on=Object(a["createElementVNode"])("br",null,null,-1),nn=Object(a["createElementVNode"])("label",{class:"mb-5"},null,-1),rn={class:"inline-block"},sn=Object(a["createElementVNode"])("br",null,null,-1),cn=["value"],dn=Object(a["createElementVNode"])("br",null,null,-1),un=Object(a["createElementVNode"])("label",{class:"mb-5"},null,-1),mn={class:"inline-block"},pn=Object(a["createElementVNode"])("br",null,null,-1),hn=["value"],bn=Object(a["createElementVNode"])("br",null,null,-1),gn=Object(a["createElementVNode"])("label",{class:"mb-5"},null,-1),fn={class:"inline-block"},vn=Object(a["createElementVNode"])("br",null,null,-1),On={class:"mr-15"},jn={value:"vertical"},Vn={value:"horizontal"},yn=Object(a["createElementVNode"])("br",null,null,-1),Sn=Object(a["createElementVNode"])("label",{class:"mb-5"},null,-1),Cn={class:"inline-block"},xn=Object(a["createElementVNode"])("br",null,null,-1),En={class:"mb-5"},wn=["value"],kn=Object(a["createElementVNode"])("br",null,null,-1),Nn=Object(a["createElementVNode"])("br",null,null,-1);function Tn(e,t,i,l,o,n){return Object(a["openBlock"])(),Object(a["createElementBlock"])("div",null,[Object(a["createElementVNode"])("label",zo,Object(a["toDisplayString"])(e.$t("editor.title"))+":",1),Object(a["createElementVNode"])("input",{type:"text",name:"title",value:e.metadata.title,onChange:t[0]||(t[0]=(...t)=>e.metadataChanged&&e.metadataChanged(...t)),class:"w-1/3"},null,40,Wo),qo,Object(a["createElementVNode"])("label",Ho,Object(a["toDisplayString"])(e.$t("editor.slides.title"))+":",1),Object(a["createElementVNode"])("input",{type:"text",name:"introTitle",value:e.metadata.introTitle,onChange:t[1]||(t[1]=(...t)=>e.metadataChanged&&e.metadataChanged(...t)),class:"w-1/4"},null,40,Xo),Object(a["createElementVNode"])("label",Jo,Object(a["toDisplayString"])(e.$t("editor.slides.intro"))+":",1),Object(a["createElementVNode"])("input",{type:"text",name:"introSubtitle",value:e.metadata.introSubtitle,onChange:t[2]||(t[2]=(...t)=>e.metadataChanged&&e.metadataChanged(...t)),class:"w-1/4"},null,40,Go),Zo,e.metadata.logoPreview?(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",Yo,[Object(a["createElementVNode"])("label",null,Object(a["toDisplayString"])(e.$t("editor.logoPreview"))+":",1),e.metadata.logoPreview&&"error"!=e.metadata.logoPreview?(Object(a["openBlock"])(),Object(a["createElementBlock"])("img",{key:0,src:e.metadata.logoPreview,class:"image-preview"},null,8,Qo)):Object(a["createCommentVNode"])("",!0),"error"==e.metadata.logoPreview?(Object(a["openBlock"])(),Object(a["createElementBlock"])("p",Ko,Object(a["toDisplayString"])(e.$t("editor.image.loadingError")),1)):Object(a["createCommentVNode"])("",!0)])):Object(a["createCommentVNode"])("",!0),Object(a["createElementVNode"])("label",en,Object(a["toDisplayString"])(e.$t("editor.logo"))+":",1),Object(a["createElementVNode"])("input",{type:"text",onChange:t[3]||(t[3]=t=>e.$emit("logo-source-changed",t)),value:e.metadata.logoName,class:"w-1/4"},null,40,tn),Object(a["createElementVNode"])("button",{onClick:t[4]||(t[4]=Object(a["withModifiers"])((...t)=>e.openFileSelector&&e.openFileSelector(...t),["stop"])),class:"bg-black text-white hover:bg-gray-800"},Object(a["toDisplayString"])(e.$t("editor.browse")),1),e.metadata.logoName||e.metadata.logoPreview?(Object(a["openBlock"])(),Object(a["createElementBlock"])("button",{key:1,onClick:t[5]||(t[5]=Object(a["withModifiers"])((...t)=>e.removeLogo&&e.removeLogo(...t),["stop"])),class:"border border-black"},Object(a["toDisplayString"])(e.$t("editor.remove")),1)):Object(a["createCommentVNode"])("",!0),Object(a["createElementVNode"])("input",{type:"file",id:"logoUpload",onChange:t[6]||(t[6]=t=>e.$emit("logo-changed",t)),class:"w-1/4",style:{display:"none"}},null,32),an,Object(a["createElementVNode"])("label",null,Object(a["toDisplayString"])(e.$t("editor.logoAltText"))+":",1),Object(a["createElementVNode"])("input",{type:"text",name:"logoAltText",value:e.metadata.logoAltText,onChange:t[7]||(t[7]=(...t)=>e.metadataChanged&&e.metadataChanged(...t)),class:"w-2/3"},null,40,ln),on,nn,Object(a["createElementVNode"])("p",rn,[Object(a["createElementVNode"])("i",null,Object(a["toDisplayString"])(e.$t("editor.logoAltText.desc")),1)]),sn,Object(a["createElementVNode"])("label",null,Object(a["toDisplayString"])(e.$t("editor.contextLink"))+":",1),Object(a["createElementVNode"])("input",{type:"text",name:"contextLink",value:e.metadata.contextLink,onChange:t[8]||(t[8]=(...t)=>e.metadataChanged&&e.metadataChanged(...t)),class:"w-2/3"},null,40,cn),dn,un,Object(a["createElementVNode"])("p",mn,[Object(a["createElementVNode"])("i",null,Object(a["toDisplayString"])(e.$t("editor.contextLink.info")),1)]),pn,Object(a["createElementVNode"])("label",null,Object(a["toDisplayString"])(e.$t("editor.contextLabel"))+":",1),Object(a["createElementVNode"])("input",{type:"text",name:"contextLabel",value:e.metadata.contextLabel,onChange:t[9]||(t[9]=(...t)=>e.metadataChanged&&e.metadataChanged(...t)),class:"w-2/3"},null,40,hn),bn,gn,Object(a["createElementVNode"])("p",fn,[Object(a["createElementVNode"])("i",null,Object(a["toDisplayString"])(e.$t("editor.contextLabel.info")),1)]),vn,Object(a["createElementVNode"])("label",On,Object(a["toDisplayString"])(e.$t("editor.tocOrientation"))+":",1),Object(a["withDirectives"])(Object(a["createElementVNode"])("select",{class:"border-solid border border-black p-1",name:"tocOrientation",id:"toc",onChange:t[10]||(t[10]=(...t)=>e.metadataChanged&&e.metadataChanged(...t)),"onUpdate:modelValue":t[11]||(t[11]=t=>e.metadata.tocOrientation=t)},[Object(a["createElementVNode"])("option",jn,Object(a["toDisplayString"])(e.$t("editor.tocOrientation.vertical")),1),Object(a["createElementVNode"])("option",Vn,Object(a["toDisplayString"])(e.$t("editor.tocOrientation.horizontal")),1)],544),[[a["vModelSelect"],e.metadata.tocOrientation]]),yn,Sn,Object(a["createElementVNode"])("p",Cn,[Object(a["createElementVNode"])("i",null,Object(a["toDisplayString"])(e.$t("editor.tocOrientation.info")),1)]),xn,Object(a["createElementVNode"])("label",En,Object(a["toDisplayString"])(e.$t("editor.dateModified"))+":",1),Object(a["createElementVNode"])("input",{type:"date",name:"dateModified",value:e.metadata.dateModified,onChange:t[12]||(t[12]=(...t)=>e.metadataChanged&&e.metadataChanged(...t))},null,40,wn),kn,Nn])}class _n extends r["c"]{openFileSelector(){var e;null===(e=document.getElementById("logoUpload"))||void 0===e||e.click()}metadataChanged(e){this.$emit("metadata-changed",e.target.name,e.target.value)}removeLogo(){this.metadata.logoName="",this.metadata.logoPreview=""}}Object(n["a"])([Object(r["b"])()],_n.prototype,"metadata",void 0);const $n=d()(_n,[["render",Tn]]);var Ln=$n;const In=e=>(Object(a["pushScopeId"])("data-v-ec080f10"),e=e(),Object(a["popScopeId"])(),e),Mn={class:"editor-container"},Bn={class:"editor-header sticky flex items-center border-b border-black bg-gray-200 py-2 px-2 z-10"},Dn={class:"mx-1"},Fn=In(()=>Object(a["createElementVNode"])("svg",{xmlns:"http://www.w3.org/2000/svg",width:"18",height:"18.001",viewBox:"0 0 18 18.001"},[Object(a["createElementVNode"])("path",{id:"logout-Icon-SVG-098767893",d:"M5.808,13.782v1.406A2.816,2.816,0,0,0,8.621,18h7.067A2.816,2.816,0,0,0,18.5,15.188V2.813A2.816,2.816,0,0,0,15.687,0H8.621A2.816,2.816,0,0,0,5.808,2.813V4.219a.7.7,0,0,0,1.406,0V2.813A1.408,1.408,0,0,1,8.621,1.406h7.067a1.408,1.408,0,0,1,1.406,1.406V15.188a1.408,1.408,0,0,1-1.406,1.406H8.621a1.408,1.408,0,0,1-1.406-1.406V13.782a.7.7,0,0,0-1.406,0ZM1.014,7.793,2.589,6.218a.7.7,0,0,1,.994.994l-1.12,1.12h8.443a.7.7,0,1,1,0,1.406H2.463l1.12,1.12a.7.7,0,1,1-.994.994L1.014,10.279A1.76,1.76,0,0,1,1.014,7.793Zm0,0",transform:"translate(-0.5)"})],-1)),Pn={class:"ml-3 flex flex-col"},Rn={class:"font-semibold text-lg"},An=In(()=>Object(a["createElementVNode"])("span",{class:"ml-auto"},null,-1)),Un=In(()=>Object(a["createElementVNode"])("svg",{class:"inline",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",width:"18px",height:"18px"},[Object(a["createElementVNode"])("path",{d:"M 2 2 L 4.9394531 4.9394531 C 3.1262684 6.7482143 2 9.2427079 2 12 C 2 17.514 6.486 22 12 22 C 17.514 22 22 17.514 22 12 C 22 6.486 17.514 2 12 2 L 12 4 C 16.411 4 20 7.589 20 12 C 20 16.411 16.411 20 12 20 C 7.589 20 4 16.411 4 12 C 4 9.7940092 4.9004767 7.7972757 6.3496094 6.3496094 L 9 9 L 9 2 L 2 2 z"})],-1)),zn={class:"font-normal ml-1"},Wn={key:0,class:"border-2 border-red-700 text-red-700 rounded p-1 mr-2"},qn=In(()=>Object(a["createElementVNode"])("span",{class:"align-middle inline-block mr-1 pb-1 fill-current"},[Object(a["createElementVNode"])("svg",{"clip-rule":"evenodd","fill-rule":"evenodd",class:"fill-red-600",width:"18",height:"18","stroke-linejoin":"round","stroke-miterlimit":"2",viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg"},[Object(a["createElementVNode"])("path",{d:"m12.002 21.534c5.518 0 9.998-4.48 9.998-9.998s-4.48-9.997-9.998-9.997c-5.517 0-9.997 4.479-9.997 9.997s4.48 9.998 9.997 9.998zm0-1.5c-4.69 0-8.497-3.808-8.497-8.498s3.807-8.497 8.497-8.497 8.498 3.807 8.498 8.497-3.808 8.498-8.498 8.498zm0-6.5c-.414 0-.75-.336-.75-.75v-5.5c0-.414.336-.75.75-.75s.75.336.75.75v5.5c0 .414-.336.75-.75.75zm-.002 3c.552 0 1-.448 1-1s-.448-1-1-1-1 .448-1 1 .448 1 1 1z","fill-rule":"nonzero"})])],-1)),Hn={class:"align-center inline-block select-none"},Xn=["disabled"],Jn={class:"inline-block"},Gn={key:0,class:"align-middle inline-block px-1"},Zn={class:"flex"},Yn={class:"w-80 flex-shrink-0 border-r border-black editor-toc"},Qn={class:"flex items-center justify-center border-b p-2"},Kn=In(()=>Object(a["createElementVNode"])("span",{class:"align-middle inline-block px-1"},[Object(a["createElementVNode"])("svg",{"clip-rule":"evenodd","fill-rule":"evenodd",width:"16",height:"16","stroke-linejoin":"round","stroke-miterlimit":"2",viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg"},[Object(a["createElementVNode"])("path",{d:"m4.481 15.659c-1.334 3.916-1.48 4.232-1.48 4.587 0 .528.46.749.749.749.352 0 .668-.137 4.574-1.492zm1.06-1.061 3.846 3.846 11.321-11.311c.195-.195.293-.45.293-.707 0-.255-.098-.51-.293-.706-.692-.691-1.742-1.74-2.435-2.432-.195-.195-.451-.293-.707-.293-.254 0-.51.098-.706.293z","fill-rule":"nonzero"})])],-1)),er={class:"align-middle inline-block"};function tr(e,t,i,l,o,n){const r=Object(a["resolveComponent"])("router-link"),s=Object(a["resolveComponent"])("spinner"),c=Object(a["resolveComponent"])("slide-toc"),d=Object(a["resolveComponent"])("slide-editor"),u=Object(a["resolveComponent"])("confirmation-modal"),m=Object(a["resolveDirective"])("tippy");return Object(a["openBlock"])(),Object(a["createElementBlock"])("div",Mn,[Object(a["createElementVNode"])("div",Bn,[Object(a["createElementVNode"])("span",Dn,[Object(a["withDirectives"])((Object(a["openBlock"])(),Object(a["createBlock"])(r,{to:{name:"home"},class:"mt-1 flex justify-center h-full w-full",target:""},{default:Object(a["withCtx"])(()=>[Fn]),_:1})),[[m,{delay:"200",placement:"right",content:e.$t("editor.returnToLanding"),animateFill:!0}]])]),Object(a["createElementVNode"])("div",Pn,[Object(a["createElementVNode"])("span",Rn,Object(a["toDisplayString"])(e.metadata.title),1),Object(a["createElementVNode"])("span",{class:Object(a["normalizeClass"])(e.metadata.title?"text-xs":"")},"UUID: "+Object(a["toDisplayString"])(e.uuid),3)]),An,e.unsavedChanges?Object(a["withDirectives"])((Object(a["openBlock"])(),Object(a["createElementBlock"])("button",{key:0,onClick:t[0]||(t[0]=t=>e.$vfm.open("reload-config")),class:"border-2 border-red-700 text-red-700 rounded p-1 mr-2"},[Un,Object(a["createElementVNode"])("span",zn,Object(a["toDisplayString"])(e.$t("editor.resetChanges")),1)])),[[m,{delay:"200",placement:"bottom",content:e.$t("editor.resetChanges"),animateFill:!0}]]):Object(a["createCommentVNode"])("",!0),Object(a["createVNode"])(a["Transition"],{name:"fade"},{default:Object(a["withCtx"])(()=>[e.unsavedChanges?(Object(a["openBlock"])(),Object(a["createElementBlock"])("span",Wn,[qn,Object(a["createElementVNode"])("span",Hn,Object(a["toDisplayString"])(e.$t("editor.unsavedChanges")),1)])):Object(a["createCommentVNode"])("",!0)]),_:1}),Object(a["renderSlot"])(e.$slots,"langModal",Object(a["normalizeProps"])(Object(a["guardReactiveProps"])({unsavedChanges:e.unsavedChanges})),void 0,!0),Object(a["createElementVNode"])("button",{onClick:t[1]||(t[1]=(...t)=>e.preview&&e.preview(...t)),class:"bg-white border border-black hover:bg-gray-100"},Object(a["toDisplayString"])(e.$t("editor.preview")),1),Object(a["createElementVNode"])("button",{onClick:t[2]||(t[2]=(...t)=>e.saveChanges&&e.saveChanges(...t)),class:"bg-black text-white hover:bg-gray-900",disabled:e.saving},[Object(a["createElementVNode"])("span",Jn,Object(a["toDisplayString"])(e.saving?e.$t("editor.savingChanges"):e.$t("editor.saveChanges")),1),e.saving?(Object(a["openBlock"])(),Object(a["createElementBlock"])("span",Gn,[Object(a["createVNode"])(s,{size:"16px",color:"#009cd1",class:"ml-1 mb-1"})])):Object(a["createCommentVNode"])("",!0)],8,Xn)]),Object(a["createElementVNode"])("div",Zn,[Object(a["createElementVNode"])("div",Yn,[Object(a["createElementVNode"])("div",Qn,[Object(a["createElementVNode"])("button",{onClick:t[3]||(t[3]=Object(a["withModifiers"])(t=>e.$vfm.open("metadata-edit-modal"),["stop"]))},[Kn,Object(a["createElementVNode"])("span",er,Object(a["toDisplayString"])(e.$t("editor.editMetadata")),1)])]),Object(a["createVNode"])(c,{slides:e.slides,currentSlide:e.currentSlide,slideIndex:e.slideIndex,onSlideChange:e.selectSlide,onSlidesUpdated:e.updateSlides,configFileStructure:e.configFileStructure,lang:e.configLang,sourceCounts:e.sourceCounts},null,8,["slides","currentSlide","slideIndex","onSlideChange","onSlidesUpdated","configFileStructure","lang","sourceCounts"])]),Object(a["createVNode"])(d,{ref:"slide",configFileStructure:e.configFileStructure,currentSlide:e.currentSlide,lang:e.configLang,slideIndex:e.slideIndex,isLast:e.slideIndex===e.slides.length-1,uid:e.uuid,onSlideChange:e.selectSlide,onSlideEdit:e.onSlidesEdited,onCustomSlideUpdated:e.updateCustomSlide,sourceCounts:e.sourceCounts},null,8,["configFileStructure","currentSlide","lang","slideIndex","isLast","uid","onSlideChange","onSlideEdit","onCustomSlideUpdated","sourceCounts"])]),Object(a["renderSlot"])(e.$slots,"metadataModal",{},void 0,!0),Object(a["createVNode"])(u,{name:"reload-config",message:e.$t("editor.refreshChanges.modal"),onOk:t[4]||(t[4]=t=>e.$emit("refresh-config"))},null,8,["message"])])}let ir=class extends r["c"]{constructor(){super(...arguments),this.uuid="",this.logoImage=void 0,this.loadSlides=void 0,this.currentSlide="",this.slideIndex=-1}onSlidesEdited(){this.$emit("save-status",!0)}onMetadataEdited(){this.$emit("save-status",!0)}created(){this.loadSlides=this.slides,this.uuid=this.$route.params.uid,window.addEventListener("beforeunload",this.beforeWindowUnload)}mounted(){const e=new IntersectionObserver(([e])=>e.target.classList.toggle("z-40",e.intersectionRatio<1),{threshold:[1]});e.observe(document.querySelector(".editor-header"))}beforeDestroy(){window.removeEventListener("beforeunload",this.beforeWindowUnload)}selectSlide(e){void 0!==this.$refs.slide&&this.$nextTick(()=>{this.$refs.slide.saveChanges()}),this.currentSlide={title:"",panel:[{type:"loading-page"},{type:"loading-page"}]},setTimeout(()=>{this.currentSlide=-1===e?"":this.loadSlides[e],this.slideIndex=e,this.$refs.slide.panelIndex=0,this.$refs.slide.advancedEditorView=!1,window.scrollTo(0,0)},5)}updateCustomSlide(e,t){this.currentSlide=e,t&&(this.slides[this.slideIndex]=e,this.$emit("save-changes"))}updateSlides(e){this.loadSlides=e,this.slideIndex=this.loadSlides.indexOf(this.currentSlide)}preview(){void 0!==this.$refs.slide&&this.$nextTick(()=>{this.$refs.slide.saveChanges()}),setTimeout(()=>{const e=this.$router.resolve({name:"preview"}),t=window.open(e.href,"_blank");t.props={config:JSON.parse(JSON.stringify(this.configs[this.configLang])),configFileStructure:this.configFileStructure}},5)}saveChanges(){void 0!==this.$refs.slide&&this.$nextTick(()=>{this.$refs.slide.saveChanges(),this.$emit("save-changes")})}beforeWindowUnload(e){this.unsavedChanges&&!window.confirm()&&e.preventDefault()}};Object(n["a"])([Object(r["b"])()],ir.prototype,"configs",void 0),Object(n["a"])([Object(r["b"])()],ir.prototype,"configFileStructure",void 0),Object(n["a"])([Object(r["b"])()],ir.prototype,"sourceCounts",void 0),Object(n["a"])([Object(r["b"])()],ir.prototype,"metadata",void 0),Object(n["a"])([Object(r["b"])()],ir.prototype,"slides",void 0),Object(n["a"])([Object(r["b"])()],ir.prototype,"configLang",void 0),Object(n["a"])([Object(r["b"])()],ir.prototype,"saving",void 0),Object(n["a"])([Object(r["b"])()],ir.prototype,"unsavedChanges",void 0),Object(n["a"])([Object(r["d"])("slides",{deep:!0})],ir.prototype,"onSlidesEdited",null),Object(n["a"])([Object(r["d"])("metadata",{deep:!0})],ir.prototype,"onMetadataEdited",null),ir=Object(n["a"])([Object(r["a"])({components:{"metadata-content":Ln,"confirmation-modal":nt,spinner:A["a"],"slide-editor":io,"slide-toc":Uo}})],ir);var ar=ir;i("6abc");const lr=d()(ar,[["render",tr],["__scopeId","data-v-ec080f10"]]);var or=lr;const nr=i("c4e3"),rr=i("bc3a").default,{v4:sr}=i("e144");let cr=class extends r["c"]{constructor(){super(...arguments),this.configs={en:void 0,fr:void 0},this.configFileStructure=void 0,this.loadExisting=!1,this.reloadExisting=!1,this.loadStatus="waiting",this.loadEditor=!1,this.error=!1,this.warning=!1,this.configLang="en",this.saving=!1,this.unsavedChanges=!1,this.uuid="",this.logoImage=void 0,this.metadata={title:"",introTitle:"",introSubtitle:"",logoPreview:"",logoName:"",logoAltText:"",contextLink:"",contextLabel:"",tocOrientation:"",dateModified:""},this.reqFields={uuid:!0},this.slides=[],this.sourceCounts={}}created(){var e;if(this.loadExisting=this.editExisting,this.uuid=null!==(e=this.$route.params.uid)&&void 0!==e?e:this.loadExisting?void 0:sr(),this.configLang=this.$route.params.configLang?this.$route.params.configLang:"en",this.configs={en:void 0,fr:void 0},this.configFileStructure=void 0,!this.loadExisting){const e=new Date,t=e.getFullYear(),i=(e.getMonth()+1).toString().padStart(2,"0"),a=e.getDate().toString().padStart(2,"0");this.metadata.dateModified=`${t}-${i}-${a}`,this.metadata.tocOrientation="vertical"}if("editor"===this.$route.name){this.loadEditor=!0;const e=this.$route.meta.data;if(e&&e.configs&&e.configFileStructure){var t;this.configs=e.configs,this.configFileStructure=e.configFileStructure,this.metadata=e.metadata,this.slides=e.slides,this.sourceCounts=e.sourceCounts,this.loadExisting=e.existing,this.unsavedChanges=e.unsavedChanges;const a=null===(t=this.configs[this.configLang])||void 0===t||null===(t=t.introSlide.logo)||void 0===t?void 0:t.src,l=`assets/${this.configLang}/${this.metadata.logoName}`;if(a){var i;const e=null===(i=this.configFileStructure)||void 0===i?void 0:i.zip.file(l);e?e.async("blob").then(e=>{this.logoImage=new File([e],this.metadata.logoName),this.metadata.logoPreview=URL.createObjectURL(e),this.loadStatus="loaded"}):(this.metadata.logoName=a,fetch(a).then(e=>{404!==e.status&&e.blob().then(e=>{this.logoImage=new File([e],this.metadata.logoName),this.metadata.logoPreview=a,this.loadStatus="loaded"})}))}else this.loadStatus="loaded";return}}this.$route.params.uid&&this.generateRemoteConfig()}generateNewConfig(){const e=new nr;this.configs[this.configLang]=this.configHelper();const t=this.configs[this.configLang];if(this.metadata.logoName)if(this.metadata.logoName.includes("http"))t.introSlide.logo.src=this.metadata.logoName;else{var i;t.introSlide.logo.src=`${this.uuid}/assets/${this.configLang}/${null===(i=this.logoImage)||void 0===i?void 0:i.name}`}else t.introSlide.logo.src="";t.slides=[];const a="en"===this.configLang?"fr":"en";this.configs[a]=Fo()(t),this.configs[a].lang=a;const l=JSON.stringify(this.configs[a],null,4),o=`${this.uuid}_${this.configLang}.json`,n=JSON.stringify(t,null,4);e.file(o,n),e.file(`${this.uuid}_${a}.json`,l),this.configFileStructureHelper(e,this.logoImage)}configHelper(){return{title:this.metadata.title,lang:this.configLang,introSlide:{logo:{src:""},title:this.metadata.introTitle,subtitle:this.metadata.introSubtitle},slides:[],contextLabel:this.metadata.contextLabel,contextLink:this.metadata.contextLink,tocOrientation:this.metadata.tocOrientation,dateModified:this.metadata.dateModified}}generateRemoteConfig(){this.loadStatus="loading",fetch("http://localhost:6040/retrieve/"+this.uuid).then(e=>{if(404===e.status){var t;z["a"].error(`The requested UUID '${null!==(t=this.uuid)&&void 0!==t?t:""}' does not exist.`),this.error=!0,this.loadStatus="waiting",this.clearConfig()}else{const t=new nr;e.blob().then(e=>{t.loadAsync(e).then(()=>{this.configFileStructureHelper(t)})})}}).catch(()=>{z["a"].error("Failed to load product, no response from server"),this.loadStatus="loaded"})}findSources(e){["en","fr"].forEach(t=>{var i,a;null!==(i=e[t])&&void 0!==i&&null!==(i=i.introSlide.logo)&&void 0!==i&&i.src&&this.incrementSourceCount(e[t].introSlide.logo.src),null===(a=e[t])||void 0===a||a.slides.forEach(e=>{e.panel.forEach(e=>{this.panelSourceHelper(e)})})})}panelSourceHelper(e){switch(e.type){case"dynamic":e.children.forEach(e=>{this.panelSourceHelper(e.panel)});break;case"slideshow":e.items.forEach(e=>{this.panelSourceHelper(e)});break;case"chart":this.incrementSourceCount(e.src);break;case"image":this.incrementSourceCount(e.src);break;case"video":"local"===e.videoType&&this.incrementSourceCount(e.src);break;case"audio":this.incrementSourceCount(e.src);break;case"map":this.incrementSourceCount(e.config);break;case"text":break;default:break}}incrementSourceCount(e){this.sourceCounts[e]?this.sourceCounts[e]+=1:this.sourceCounts[e]=1}configFileStructureHelper(e,t){const i=e.folder("assets"),a=e.folder("charts"),l=e.folder("ramp-config");this.configFileStructure={uuid:this.uuid,zip:e,configs:this.configs,assets:{en:i.folder("en"),fr:i.folder("fr")},charts:{en:a.folder("en"),fr:a.folder("fr")},rampConfig:{en:l.folder("en"),fr:l.folder("fr")}},void 0!==t&&this.configFileStructure.assets[this.configLang].file(null===t||void 0===t?void 0:t.name,t),this.loadConfig()}async loadConfig(e){if(e)this.useConfig(e);else{try{var t,i;const e=null===(t=this.configFileStructure)||void 0===t?void 0:t.zip.file(this.uuid+"_en.json"),a=null===(i=this.configFileStructure)||void 0===i?void 0:i.zip.file(this.uuid+"_fr.json");await(null===e||void 0===e?void 0:e.async("string").then(e=>{this.configs["en"]=JSON.parse(e)})),await(null===a||void 0===a?void 0:a.async("string").then(e=>{this.configs["fr"]=JSON.parse(e)}))}catch{var a;return z["a"].error(`The requested product '${null!==(a=this.uuid)&&void 0!==a?a:""}' is malformed.`),this.loadStatus="waiting",void this.clearConfig()}this.loadExisting?(this.loadStatus="waiting",z["a"].success("Successfully loaded storyline!")):this.loadStatus="loaded",this.configs[this.configLang]&&(this.useConfig(this.configs[this.configLang]),this.findSources(this.configs),this.reloadExisting?(this.loadEditor=!0,this.generateConfig(),this.updateEditorPath()):this.loadExisting||(this.loadEditor=!0,this.updateEditorPath()))}}useConfig(e){var t;this.metadata.title=e.title,this.metadata.introTitle=e.introSlide.title,this.metadata.introSubtitle=e.introSlide.subtitle,this.metadata.contextLink=e.contextLink,this.metadata.contextLabel=e.contextLabel,this.metadata.tocOrientation=e.tocOrientation,this.metadata.dateModified=e.dateModified,this.slides=e.slides;const i=null===(t=e.introSlide.logo)||void 0===t?void 0:t.src;if(i){var a,l;this.metadata.logoAltText=null!==(a=e.introSlide.logo)&&void 0!==a&&a.altText?e.introSlide.logo.altText:"";const t=""+i.substring(i.indexOf("/")+1),o=""+i.split("/")[i.split("/").length-1],n=null===(l=this.configFileStructure)||void 0===l?void 0:l.zip.file(t);n?n.async("blob").then(e=>{this.logoImage=new File([e],o),this.metadata.logoPreview=URL.createObjectURL(e),this.metadata.logoName=o,this.loadStatus="loaded"}):(this.metadata.logoName=i,fetch(i).then(e=>{404!==e.status&&e.blob().then(e=>{this.logoImage=new File([e],o),this.metadata.logoPreview=i,this.loadStatus="loaded"})}))}}generateConfig(){var e,t;this.saving=!0;const i=`${this.uuid}_${this.configLang}.json`,a=JSON.stringify(this.configs[this.configLang],null,4);return null===(e=this.configFileStructure)||void 0===e||e.zip.file(i,a),null===(t=this.configFileStructure)||void 0===t||t.zip.generateAsync({type:"blob"}).then(e=>{const t=new FormData;t.append("data",e,this.uuid+".zip");const i={"Content-Type":"multipart/form-data"};rr.post("http://localhost:6040/upload",t,{headers:i}).then(e=>{e.data.files,e.status,this.unsavedChanges=!1,this.loadExisting=!0,z["a"].success("Successfully saved changes!")}).catch(()=>{z["a"].error("Failed to save changes.")}).finally(()=>{setTimeout(()=>{this.saving=!1},500)})}),this.configFileStructure}updateMetadata(e,t){this.metadata[e]=t,this.unsavedChanges=!0}saveMetadata(e=!1){const t=this.configs[this.configLang];if(void 0!==t){if(t.title=this.metadata.title,t.introSlide.title=this.metadata.introTitle,t.introSlide.subtitle=this.metadata.introSubtitle,t.contextLink=this.metadata.contextLink,t.contextLabel=this.metadata.contextLabel,t.tocOrientation=this.metadata.tocOrientation,t.dateModified=this.metadata.dateModified,void 0===t.introSlide.logo&&(t.introSlide.logo={src:"",altText:""}),t.introSlide.logo.altText=this.metadata.logoAltText,this.metadata.logoName)if(this.metadata.logoName.includes("http"))t.introSlide.logo.src=this.metadata.logoName;else{var i,a,l;t.introSlide.logo.src=`${this.uuid}/assets/${this.configLang}/${null===(i=this.logoImage)||void 0===i?void 0:i.name}`,null===(a=this.configFileStructure)||void 0===a||a.assets[this.configLang].file(null===(l=this.logoImage)||void 0===l?void 0:l.name,this.logoImage)}else t.introSlide.logo.src="";e&&this.generateConfig()}this.$vfm.close("metadata-edit-modal")}clearConfig(){this.metadata={title:"",introTitle:"",introSubtitle:"",contextLink:"",contextLabel:"",dateModified:"",logoPreview:"",logoName:"",logoAltText:"",tocOrientation:""},this.configs={en:void 0,fr:void 0},this.slides=[]}swapLang(){this.configLang="en"===this.configLang?"fr":"en",this.configs[this.configLang]&&(this.loadConfig(this.configs[this.configLang]),this.loadEditor&&(this.$refs.mainEditor.updateSlides(this.slides),this.$nextTick(()=>{this.$refs.mainEditor.selectSlide(-1)})))}checkUuid(){this.loadExisting||fetch("http://localhost:6040/retrieve/"+this.uuid).then(e=>{404!==e.status&&(this.warning=!0)}),this.warning=!1}beforeRouteUpdate(e,t,i){this.uuid=e.params.uid,this.$i18n.locale=e.params.lang,i()}onLogoSourceInput(e){const t=e=>{const t=new Image;return t.src=e,new Promise(e=>{t.onerror=()=>e(!1),t.onload=()=>e(!0)})};this.metadata.logoName=e.target.value,t(this.metadata.logoName).then(e=>{e?(this.metadata.logoPreview=this.metadata.logoName,z["a"].success("Successfully loaded logo image.")):(this.metadata.logoPreview="error",z["a"].error("Failed to load logo image."))})}onFileChange(e){const t=e.target.files[0];this.logoImage=t,this.metadata.logoPreview=URL.createObjectURL(t),this.metadata.logoName=t.name}updateEditorPath(){"editor"!==this.$route.name&&(this.$router.beforeEach(e=>{"editor"===e.name&&(e.meta.data={configLang:this.configLang,configs:this.configs,configFileStructure:this.configFileStructure,sourceCounts:this.sourceCounts,metadata:this.metadata,slides:this.slides,existing:this.editExisting,unsavedChanges:this.unsavedChanges})}),this.$router.push({name:"editor",params:{uid:this.uuid}}))}checkRequiredFields(){return this.reqFields.uuid=!!this.uuid,!Object.values(this.reqFields).some(e=>!e)||(z["a"].error("Please fill out the required fields before proceeding."),!1)}continueToEditor(){var e;this.checkRequiredFields()&&(this.loadExisting?void 0!==this.configs[this.configLang]&&this.uuid===(null===(e=this.configFileStructure)||void 0===e?void 0:e.uuid)?(this.loadEditor=!0,this.saveMetadata(!1),this.updateEditorPath()):z["a"].error("No config exists for storylines product."):this.uuid?this.generateNewConfig():(z["a"].error("Missing required field: UUID"),this.error=!0))}updateSaveStatus(e){this.unsavedChanges=e}refreshConfig(){this.loadExisting?(this.reloadExisting=!0,this.loadExisting=!1,this.generateRemoteConfig()):(this.reloadExisting=!1,this.generateNewConfig())}beforeRouteLeave(e,t,i){const a="editor"===this.$route.name,l="Leave the page? Changes made may not be saved.";this.unsavedChanges&&a&&!window.confirm(l)?i(!1):i()}};Object(n["a"])([Object(r["b"])({default:!0})],cr.prototype,"editExisting",void 0),cr=Object(n["a"])([Object(r["a"])({components:{Editor:or,"confirmation-modal":nt,"metadata-content":Ln,spinner:A["a"],"slide-editor":io,"slide-toc":Uo,"vue-final-modal":U["a"]}})],cr);var dr=cr;i("a95a");const ur=d()(dr,[["render",R]]);var mr=ur;const pr={key:0},hr={class:"block py-20 align-middle text-center h-full",style:{margin:"0 auto"}},br={key:1},gr={key:0,class:"storyramp-app bg-white"},fr={id:"story-header",class:"story-header sticky top-0 flex border-b border-black bg-gray-200 py-2 px-2 justify-between"},vr={class:"w-mobile-full truncate"},Or={class:"font-semibold text-lg m-1"},jr={class:"w-full mx-auto pb-10",id:"story"},Vr={class:"p-8 pt-2 text-right text-sm"},yr=["href"],Sr=Object(a["createElementVNode"])("a",{href:"https://github.com/ramp4-pcar4/storylines-editor",target:"_NEW",class:"font-semibold text-blue-700"},"ramp4-pcar4/storylines-editor",-1),Cr={key:0,class:"storyramp-modified"};function xr(e,t,i,l,o,n){const r=Object(a["resolveComponent"])("spinner"),s=Object(a["resolveComponent"])("storylines-intro"),c=Object(a["resolveComponent"])("storylines-content");return"loading"===e.loadStatus?(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",pr,[Object(a["createElementVNode"])("div",hr,[Object(a["createVNode"])(r,{size:"120px",color:"#009cd1",style:{margin:"0 auto"}})])])):"loaded"===e.loadStatus?(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",br,[void 0!==e.config?(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",gr,[Object(a["createElementVNode"])("header",fr,[Object(a["createElementVNode"])("div",vr,[Object(a["createElementVNode"])("span",Or,Object(a["toDisplayString"])(e.config.title),1)])]),Object(a["createVNode"])(s,{config:e.config.introSlide,configFileStructure:e.configFileStructure},null,8,["config","configFileStructure"]),Object(a["createElementVNode"])("div",jr,[Object(a["createVNode"])(c,{config:e.config,configFileStructure:e.configFileStructure,lang:e.lang,plugin:!0,headerHeight:e.headerHeight,onStep:e.updateActiveIndex},null,8,["config","configFileStructure","lang","headerHeight","onStep"])]),Object(a["createElementVNode"])("footer",Vr,[Object(a["createTextVNode"])(" Context: "),Object(a["createElementVNode"])("a",{class:"text-blue-700 font-semibold",href:e.config.contextLink,target:"_NEW"},Object(a["toDisplayString"])(e.config.contextLabel),9,yr),Object(a["createTextVNode"])(" | "),Sr]),e.config.dateModified?(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",Cr,Object(a["toDisplayString"])(e.$t("story.date"))+" "+Object(a["toDisplayString"])(e.config.dateModified),1)):Object(a["createCommentVNode"])("",!0)])):Object(a["createCommentVNode"])("",!0)])):Object(a["createCommentVNode"])("",!0)}let Er=class extends r["c"]{constructor(){super(...arguments),this.config=void 0,this.configFileStructure=void 0,this.savedProduct=!1,this.loadStatus="loading",this.activeChapterIndex=-1,this.lang="en",this.headerHeight=0,this.uid=""}created(){const e=this.$route.params.uid,t=this.$route.params.lang;e?(this.savedProduct=!0,fetch(`http://localhost:6040/retrieve/${e}/${t}`).then(t=>{404===t.status?console.error(`There does not exist a saved product with UID ${e}.`):t.json().then(e=>{this.config=e,this.loadStatus="loaded",document.title=this.config.title+" - Canada.ca"})})):(this.config=window.props.config,this.configFileStructure=window.props.configFileStructure,this.loadStatus="loaded");const i=document.documentElement;i.setAttribute("lang",this.lang),this.$i18n.locale=this.lang}updateActiveIndex(e){this.activeChapterIndex=e;const t=document.getElementById("story-header");t&&(this.headerHeight=t.clientHeight)}};Er=Object(n["a"])([Object(r["a"])({components:{spinner:A["a"]}})],Er);var wr=Er;i("e1de");const kr=d()(wr,[["render",xr]]);var Nr=kr,Tr=i("6605");const _r=[{path:"/:lang/editor",name:"home",component:y,meta:{title:"editor.window.title"}},{path:"/:lang/editor/:uid",redirect:"/:lang/editor-metadata/:uid"},{path:"/:lang/editor-metadata",name:"metadataExisting",component:mr,props:{editExisting:!0},meta:{title:"editor.window.title"}},{path:"/:lang/editor-metadata",name:"metadataNew",component:mr,props:{editExisting:!1},meta:{title:"editor.window.title"}},{path:"/:lang/editor-metadata/:uid",component:mr,meta:{title:"editor.window.title"}},{path:"/:lang/editor-main/:uid",name:"editor",component:mr,props:!0,meta:{title:"editor.window.title"}},{path:"/:lang/editor-preview",component:Nr,name:"preview",props:!0,meta:{title:"story.window.title"}},{path:"/:lang/editor-preview/:uid",component:Nr,meta:{title:"story.window.title"}}],$r=Object(Tr["a"])({routes:_r,history:Object(Tr["b"])(),scrollBehavior:function(e){if(e.hash)return{selector:decodeURIComponent(e.hash),behavior:"smooth"}}});var Lr=$r,Ir=(i("38c8"),i("13d5"),i("9ca6"));const Mr=i("3d6d"),Br=document.documentElement.getAttribute("lang");function Dr(e){return e.reduce((e,t)=>(e.en[t.key]=t.enValue,e.fr[t.key]=t.frValue,e),{en:{},fr:{}})}const Fr=Object(Ir["a"])({legacy:!1,locale:Br||void 0,fallbackLocale:"en",globalInjection:!0,messages:Dr(Mr)});var Pr=i("ee2d"),Rr=i.n(Pr),Ar=(i("fefe"),i("603a")),Ur=i.n(Ar),zr=(i("fbc4"),i("3b16")),Wr=i.n(zr),qr=i("1487"),Hr=i.n(qr),Xr=(i("40e8"),i("c4e7")),Jr=(i("52df"),i("e748"),i("4452")),Gr=i.n(Jr),Zr=(i("e896"),i("c883")),Yr=i.n(Zr);i("91a9");Rr.a.lang.use("en-US",Wr.a),Rr.a.use(Ur.a,{Hljs:Hr.a});const Qr=Object(U["b"])(),Kr=Object(a["createApp"])(m);Kr.use(Lr).use(Fr).use(Xr["a"],{directive:"tippy",component:"tippy"}).use(Gr.a).use(z["a"]).use(Yr.a).use(Rr.a).use(Qr),Kr.mount("#app")},d618:function(e,t,i){"use strict";i("c3a4")},daa0:function(e,t,i){},dd0c:function(e,t,i){},e1de:function(e,t,i){"use strict";i("518e")},e289:function(e,t,i){},ea6b:function(e){e.exports=JSON.parse('{"comment":"","version":"3.3.2","language":"fr","ui":{"title":"Carte interactive","fullscreen":true,"navBar":{"zoom":"buttons","extra":["fullscreen","geoLocator","home","help"]},"appBar":{"basemap":true},"help":{"folderName":"default"},"sideMenu":{"items":[["fullscreen","export","touch","help","about"]],"logo":false},"legend":{"allowImport":false,"isOpen":{"large":true,"medium":false,"small":false}}},"services":{"proxyUrl":"https://maps.canada.ca/wmsproxy/ws/wmsproxy/executeFromProxy","exportMapUrl":"https://maps-cartes.ec.gc.ca/arcgis/rest/services/Utilities/PrintingTools/GPServer/Export%20Web%20Map%20Task","export":{"title":{"value":""},"map":{},"mapElements":{},"legend":{},"footnote":{"value":""}},"search":{"settings":{"categories":["CITY","HAM","IR","LTM","MUN1","MUN2","PROV","STM","TERR","TOWN","UTM","VILG","UNP"],"sortOrder":["CITY","HAM","IR","LTM","MUN1","MUN2","PROV","STM","TERR","TOWN","UTM","VILG","UNP"],"maxResults":1000,"officialOnly":true},"serviceUrls":{"geoNames":"https://geogratis.gc.ca/services/geoname/fr/geonames.json","geoLocation":"https://geogratis.gc.ca/services/geolocation/fr/locate?q=","geoSuggest":"https://geogratis.gc.ca/services/geolocation/fr/suggest?q=","provinces":"https://geogratis.gc.ca/services/geoname/fr/codes/province.json","types":"https://geogratis.gc.ca/services/geoname/fr/codes/concise.json"}}},"map":{"initialBasemapId":"baseNrCan","components":{"geoSearch":{"enabled":true,"showGraphic":true,"showInfo":true},"mouseInfo":{"enabled":true,"spatialReference":{"wkid":4326}},"northArrow":{"enabled":false},"basemap":{"enabled":true},"overviewMap":{"enabled":true,"layerType":"imagery"},"scaleBar":{"enabled":true}},"extentSets":[{"id":"EXT_NRCAN_Lambert_3978","default":{"xmax":3049492,"xmin":-5281457,"ymax":4482193,"ymin":-983440},"spatialReference":{"wkid":3978}},{"id":"EXT_ESRI_World_AuxMerc_3857","default":{"xmax":-5007771.626060756,"xmin":-16632697.354854,"ymax":10015875.184845109,"ymin":5022907.964742964},"spatialReference":{"wkid":102100,"latestWkid":3857}}],"lodSets":[{"id":"LOD_NRCAN_Lambert_3978","lods":[{"level":0,"resolution":38364.660062653464,"scale":145000000},{"level":1,"resolution":22489.62831258996,"scale":85000000},{"level":2,"resolution":13229.193125052918,"scale":50000000},{"level":3,"resolution":7937.5158750317505,"scale":30000000},{"level":4,"resolution":4630.2175937685215,"scale":17500000},{"level":5,"resolution":2645.8386250105837,"scale":10000000},{"level":6,"resolution":1587.5031750063501,"scale":6000000},{"level":7,"resolution":926.0435187537042,"scale":3500000},{"level":8,"resolution":529.1677250021168,"scale":2000000},{"level":9,"resolution":317.50063500127004,"scale":1200000},{"level":10,"resolution":185.20870375074085,"scale":700000},{"level":11,"resolution":111.12522225044451,"scale":420000},{"level":12,"resolution":66.1459656252646,"scale":250000},{"level":13,"resolution":38.36466006265346,"scale":145000},{"level":14,"resolution":22.48962831258996,"scale":85000},{"level":15,"resolution":13.229193125052918,"scale":50000},{"level":16,"resolution":7.9375158750317505,"scale":30000},{"level":17,"resolution":4.6302175937685215,"scale":17500}]},{"id":"LOD_ESRI_World_AuxMerc_3857","lods":[{"level":0,"resolution":19567.87924099992,"scale":73957190.948944},{"level":1,"resolution":9783.93962049996,"scale":36978595.474472},{"level":2,"resolution":4891.96981024998,"scale":18489297.737236},{"level":3,"resolution":2445.98490512499,"scale":9244648.868618},{"level":4,"resolution":1222.992452562495,"scale":4622324.434309},{"level":5,"resolution":611.4962262813797,"scale":2311162.217155},{"level":6,"resolution":305.74811314055756,"scale":1155581.108577},{"level":7,"resolution":152.87405657041106,"scale":577790.554289},{"level":8,"resolution":76.43702828507324,"scale":288895.277144},{"level":9,"resolution":38.21851414253662,"scale":144447.638572},{"level":10,"resolution":19.10925707126831,"scale":72223.819286},{"level":11,"resolution":9.554628535634155,"scale":36111.909643},{"level":12,"resolution":4.77731426794937,"scale":18055.954822},{"level":13,"resolution":2.388657133974685,"scale":9027.977411},{"level":14,"resolution":1.1943285668550503,"scale":4513.988705},{"level":15,"resolution":0.5971642835598172,"scale":2256.994353},{"level":16,"resolution":0.29858214164761665,"scale":1128.497176},{"level":17,"resolution":0.14929107082380833,"scale":564.248588},{"level":18,"resolution":0.07464553541190416,"scale":282.124294},{"level":19,"resolution":0.03732276770595208,"scale":141.062147},{"level":20,"resolution":0.01866138385297604,"scale":70.5310735}]}],"legend":{"type":"autopopulate"},"layers":[],"tileSchemas":[{"id":"EXT_NRCAN_Lambert_3978#LOD_NRCAN_Lambert_3978","name":"Lambert Maps","extentSetId":"EXT_NRCAN_Lambert_3978","lodSetId":"LOD_NRCAN_Lambert_3978","hasNorthPole":true},{"id":"EXT_ESRI_World_AuxMerc_3857#LOD_ESRI_World_AuxMerc_3857","name":"Web Mercator Maps","extentSetId":"EXT_ESRI_World_AuxMerc_3857","lodSetId":"LOD_ESRI_World_AuxMerc_3857"}],"baseMaps":[{"id":"baseNrCan","name":"Carte de base du Canada – transport (CBCT) avec étiquettes","description":"La carte de base du Canada – transport (CBCT) du Secteur des sciences de la Terre de Ressources naturelles Canada est un service Internet qui s\'adresse principalement aux utilisateurs et développeurs d\'applications cartographiques en ligne.","altText":"La carte de base du Canada – transport (CBCT)","layers":[{"id":"CBCT","layerType":"esriFeature","url":"https://maps-cartes.services.geo.ca/server2_serveur2/rest/services/BaseMaps/CBCT3978/MapServer"}],"tileSchemaId":"EXT_NRCAN_Lambert_3978#LOD_NRCAN_Lambert_3978"},{"id":"baseSimple","name":"Carte de base du Canada - simple","description":"La carte de base du Canada - simple","altText":"La carte de base du Canada - simple","layers":[{"id":"SMR","layerType":"esriFeature","url":"https://maps-cartes.services.geo.ca/server2_serveur2/rest/services/BaseMaps/Simple/MapServer"},{"id":"SMW","layerType":"esriFeature","url":"https://maps-cartes.services.geo.ca/server2_serveur2/rest/services/BaseMaps/CBMT_TXT_3978/MapServer"}],"tileSchemaId":"EXT_NRCAN_Lambert_3978#LOD_NRCAN_Lambert_3978"},{"id":"baseCBME_CBCE_HS_RO_3978","name":"Carte de base du Canada - élevation (CBCE)","description":"La carte de base du Canada - élevation (CBCE) du Secteur des sciences de la Terre de Ressources naturelles Canada est un service Internet qui s\'adresse principalement aux utilisateurs et développeurs d\'applications cartographiques en ligne.","altText":"La carte de base du Canada - élevation (CBCE)","layers":[{"id":"CBME_CBCE_HS_RO_3978","layerType":"esriFeature","url":"https://maps-cartes.services.geo.ca/server2_serveur2/rest/services/BaseMaps/CBME_CBCE_HS_RO_3978/MapServer"}],"tileSchemaId":"EXT_NRCAN_Lambert_3978#LOD_NRCAN_Lambert_3978"},{"id":"baseCBMT_CBCT_GEOM_3978","name":"Carte de base du Canada - transport (CBCT)","description":"La carte de base du Canada - transport (CBCT) du Secteur des sciences de la Terre de Ressources naturelles Canada est un service Internet qui s\'adresse principalement aux utilisateurs et développeurs d\'applications cartographiques en ligne.","altText":"La carte de base du Canada - transport (CBCT)","layers":[{"id":"CBMT_CBCT_GEOM_3978","layerType":"esriFeature","url":"https://maps-cartes.services.geo.ca/server2_serveur2/rest/services/BaseMaps/CBMT_CBCT_GEOM_3978/MapServer"}],"tileSchemaId":"EXT_NRCAN_Lambert_3978#LOD_NRCAN_Lambert_3978"},{"id":"baseEsriWorld","name":"Imagerie mondiale","description":"L\'imagerie mondiale fournit une imagerie satellitaire et aérienne dans de nombreuses régions du monde avec une résolution de 1 mètres et moins et des images satellitaires de résolution inférieure dans le monde entier.","altText":"L\'imagerie mondiale","layers":[{"id":"World_Imagery","layerType":"esriFeature","url":"https://services.arcgisonline.com/arcgis/rest/services/World_Imagery/MapServer"}],"tileSchemaId":"EXT_ESRI_World_AuxMerc_3857#LOD_ESRI_World_AuxMerc_3857"},{"id":"baseEsriPhysical","name":"Monde physique","description":"La carte du monde physique représente l\'aspect physique naturel de la Terre à 1.24 kilomètres par pixel pour le monde et à 500 mètres pour les États-Unis.","altText":"La carte du monde physique","layers":[{"id":"World_Physical_Map","layerType":"esriFeature","url":"https://services.arcgisonline.com/arcgis/rest/services/World_Physical_Map/MapServer"}],"tileSchemaId":"EXT_ESRI_World_AuxMerc_3857#LOD_ESRI_World_AuxMerc_3857"},{"id":"baseEsriRelief","name":"Monde en relief ombragé","description":"La carte du monde en relief ombragé représente l\'élévation de la surface de la terre comme un relief ombragé. Cette carte est utilisée comme couche de fond afin d\'ajouter un relief ombragé à d\'autres cartes SIG, comme la carte ArcGIS Online World Street Map.","altText":"La carte du monde en relief ombragé","layers":[{"id":"World_Shaded_Relief","layerType":"esriFeature","url":"https://services.arcgisonline.com/arcgis/rest/services/World_Shaded_Relief/MapServer"}],"tileSchemaId":"EXT_ESRI_World_AuxMerc_3857#LOD_ESRI_World_AuxMerc_3857"},{"id":"baseEsriStreet","name":"Monde routier","description":"La carte du monde routier présente des données au niveau des autoroutes pour le monde.","altText":"La carte du monde routier","layers":[{"id":"World_Street_Map","layerType":"esriFeature","url":"https://services.arcgisonline.com/arcgis/rest/services/World_Street_Map/MapServer"}],"tileSchemaId":"EXT_ESRI_World_AuxMerc_3857#LOD_ESRI_World_AuxMerc_3857"},{"id":"baseEsriTerrain","name":"Monde terrain","description":"La carte du monde terrain est conçue pour être utilisée comme une carte de base par les professionnels du SIG pour superposer d\'autres couches thématiques comme la démographie ou la couverture terrestre.","altText":"La carte du monde terrain","layers":[{"id":"World_Terrain_Base","layerType":"esriFeature","url":"https://services.arcgisonline.com/arcgis/rest/services/World_Terrain_Base/MapServer"}],"tileSchemaId":"EXT_ESRI_World_AuxMerc_3857#LOD_ESRI_World_AuxMerc_3857"},{"id":"baseEsriTopo","name":"Monde topographique","description":"La carte du monde topographique est conçue pour être utilisé comme une carte de base par les professionnels du SIG et comme une carte de référence par quiconque.","altText":"La carte du monde topographique","layers":[{"id":"World_Topo_Map","layerType":"esriFeature","url":"https://services.arcgisonline.com/arcgis/rest/services/World_Topo_Map/MapServer"}],"tileSchemaId":"EXT_ESRI_World_AuxMerc_3857#LOD_ESRI_World_AuxMerc_3857"}]}}')},ed05:function(e,t,i){},f944:function(e,t,i){}}]); +//# sourceMappingURL=chunk-common.06872484.js.map \ No newline at end of file diff --git a/advanced-config-editor/js/chunk-common.06872484.js.map b/advanced-config-editor/js/chunk-common.06872484.js.map new file mode 100644 index 00000000..ad6170e2 --- /dev/null +++ b/advanced-config-editor/js/chunk-common.06872484.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack:///./src/components/editor/map-editor.vue?c470","webpack:///./src/components/editor/slide-editor.vue?5a39","webpack:///./src/components/editor/text-editor.vue?f424","webpack:///./src/components/editor/helpers/confirmation-modal.vue?d920","webpack:///./src/components/editor/slideshow-editor.vue?dd3a","webpack:///./src/lang/lang.csv","webpack:///./src/components/editor/helpers/video-preview.vue?ba86","webpack:///./src/components/editor/helpers/image-preview.vue?a760","webpack:///./src/components/editor/slide-toc.vue?933a","webpack:///./src/components/editor/editor.vue?c1aa","webpack:///./src/components/editor/image-editor.vue?0f92","webpack:///./src/components/editor/helpers/custom-editor.vue?d1c0","webpack:///./src/components/editor/landing.vue?1abe","webpack:///./src/app.vue?b13b","webpack:///./src/components/editor/video-editor.vue?cad7","webpack:///./src/components/editor/metadata-editor.vue?7595","webpack:///./src/components/editor/helpers/chart-preview.vue?be2e","webpack:///./src/components/editor/chart-editor.vue?01a4","webpack:///./src/components/editor/dynamic-editor.vue?eb9d","webpack:///./src/app.vue?6e82","webpack:///./src/app.vue","webpack:///./src/app.vue?cab0","webpack:///./src/router/componentHooks.ts","webpack:///./src/components/editor/landing.vue?019b","webpack:///./src/components/editor/landing.vue","webpack:///./src/components/editor/landing.vue?d196","webpack:///./src/components/editor/metadata-editor.vue?a279","webpack:///./src/components/editor/slide-editor.vue?d81c","webpack:///./src/definitions.ts","webpack:///./src/components/editor/chart-editor.vue?3b5c","webpack:///./src/components/editor/helpers/chart-preview.vue?3b37","webpack:///./src/components/editor/helpers/chart-preview.vue","webpack:///./src/components/editor/helpers/chart-preview.vue?9be4","webpack:///./src/components/editor/helpers/confirmation-modal.vue?7578","webpack:///./src/components/editor/helpers/confirmation-modal.vue","webpack:///./src/components/editor/helpers/confirmation-modal.vue?7a7e","webpack:///./src/components/editor/chart-editor.vue","webpack:///./src/components/editor/chart-editor.vue?c3f9","webpack:///./src/components/editor/helpers/custom-editor.vue?0aff","webpack:///./src/components/editor/helpers/custom-editor.vue","webpack:///./src/components/editor/helpers/custom-editor.vue?267c","webpack:///./src/components/editor/image-editor.vue?d200","webpack:///./src/components/editor/helpers/image-preview.vue?4408","webpack:///./src/components/editor/helpers/image-preview.vue","webpack:///./src/components/editor/helpers/image-preview.vue?88c4","webpack:///./src/components/editor/image-editor.vue","webpack:///./src/components/editor/image-editor.vue?2e57","webpack:///./src/components/editor/text-editor.vue?ef39","webpack:///./src/components/editor/text-editor.vue","webpack:///./src/components/editor/text-editor.vue?17bf","webpack:///./src/components/editor/map-editor.vue?72ba","webpack:///./src/components/editor/helpers/time-slider-editor.vue?44e1","webpack:///./src/components/editor/helpers/time-slider-editor.vue","webpack:///./src/components/editor/helpers/time-slider-editor.vue?434f","webpack:///./src/components/editor/map-editor.vue","webpack:///./src/components/editor/map-editor.vue?c2ed","webpack:///./src/components/editor/video-editor.vue?de78","webpack:///./src/components/editor/helpers/video-preview.vue?545b","webpack:///./src/components/editor/helpers/video-preview.vue","webpack:///./src/components/editor/helpers/video-preview.vue?f9de","webpack:///./src/components/editor/video-editor.vue","webpack:///./src/components/editor/video-editor.vue?f209","webpack:///./src/components/editor/slideshow-editor.vue?11ac","webpack:///./src/components/editor/slideshow-editor.vue","webpack:///./src/components/editor/slideshow-editor.vue?ba5a","webpack:///./src/components/editor/helpers/loading-page.vue?49c2","webpack:///./src/components/editor/helpers/loading-page.vue","webpack:///./src/components/editor/helpers/loading-page.vue?ec39","webpack:///./src/components/editor/dynamic-editor.vue?2aca","webpack:///./src/components/editor/dynamic-editor.vue","webpack:///./src/components/editor/dynamic-editor.vue?bfae","webpack:///./src/components/editor/slide-editor.vue","webpack:///./src/components/editor/slide-editor.vue?a04f","webpack:///./src/components/editor/slide-toc.vue?f139","webpack:///./src/components/editor/slide-toc.vue","webpack:///./src/components/editor/slide-toc.vue?e6ed","webpack:///./src/components/editor/helpers/metadata-content.vue?4d79","webpack:///./src/components/editor/helpers/metadata-content.vue","webpack:///./src/components/editor/helpers/metadata-content.vue?f1f6","webpack:///./src/components/editor/editor.vue?e4be","webpack:///./src/components/editor/editor.vue","webpack:///./src/components/editor/editor.vue?f9b7","webpack:///./src/components/editor/metadata-editor.vue","webpack:///./src/components/editor/metadata-editor.vue?356d","webpack:///./src/components/editor/preview.vue?f30c","webpack:///./src/components/editor/preview.vue","webpack:///./src/components/editor/preview.vue?ca3e","webpack:///./src/router/index.ts","webpack:///./src/lang/index.ts","webpack:///./src/main.ts","webpack:///./src/components/editor/helpers/time-slider-editor.vue?056d","webpack:///./src/components/editor/preview.vue?d57c"],"names":["res","columns","module","exports","_hoisted_1","id","class","render","_ctx","_cache","$props","$setup","$data","$options","_component_router_view","_resolveComponent","_openBlock","_createElementBlock","_createBlock","key","$route","path","App","Vue","onRouteUpdate","to","_to$params$lang","this","$i18n","locale","params","lang","document","title","$t","meta","__decorate","Watch","immediate","__exports__","registerHooks","_hoisted_2","_hoisted_3","_hoisted_4","_hoisted_5","_component_router_link","_createElementVNode","_createVNode","name","target","default","_withCtx","_toDisplayString","_","LandingV","_hoisted_6","_hoisted_7","_hoisted_8","viewBox","width","height","xmlns","d","_hoisted_9","_hoisted_10","_hoisted_11","_hoisted_12","_hoisted_13","_hoisted_14","_hoisted_15","_hoisted_16","slot","_hoisted_17","_component_spinner","_component_metadata_content","_component_confirmation_modal","_component_vue_final_modal","_component_editor","loadEditor","_createCommentVNode","_Fragment","editExisting","onClick","$event","swapLang","configLang","reqFields","_createTextVNode","_withDirectives","type","onInput","error","uuid","checkUuid","_normalizeClass","_vModelText","warning","args","generateRemoteConfig","loadStatus","size","color","metadata","onMetadataChanged","updateMetadata","onLogoChanged","onFileChange","onLogoSourceChanged","onLogoSourceInput","saveMetadata","$vfm","open","continueToEditor","message","onOk","configs","configFileStructure","sourceCounts","slides","saving","unsavedChanges","onSaveChanges","generateConfig","onSaveStatus","updateSaveStatus","onRefreshConfig","refreshConfig","ref","langModal","slotProps","_withModifiers","metadataModal","modalId","_withScopeId","n","_pushScopeId","_popScopeId","_createStaticVNode","_hoisted_18","_hoisted_20","_hoisted_21","_hoisted_22","_hoisted_23","_hoisted_25","_hoisted_26","_hoisted_27","_hoisted_28","_hoisted_29","_hoisted_30","_hoisted_31","_hoisted_32","_hoisted_33","_hoisted_34","_component_custom_editor","currentSlide","placeholder","selectSlide","slideIndex","disabled","isLast","rightOnly","determineEditorType","panel","panelIndex","onChange","_vModelCheckbox","length","advancedEditorView","saveChanges","newType","value","_renderList","Object","keys","editors","filter","editor","thing","config","onSlideEdit","$emit","onConfigEdited","slideConfig","save","_resolveDynamicComponent","uid","changePanelType","onCancel","cancelTypeChange","toggleRightOnly","PanelType","_component_ChartPreview","_component_draggable","num","chartConfigs","clearEditor","allowMany","modelValue","handle","onUpdate","onChartsEdited","item","element","index","chart","onEdit","editChart","onDelete","_vShow","idx","deleteChart","fill","_component_storylines_chart","_directive_tippy","_resolveDirective","content","placement","hideOnClick","animateFill","loading","chartConfig","chartIdx","onLoaded","loadChart","chartName","ChartPreviewV","constructor","modalEditor","undefined","mounted","chartOptions","_chartOptions$data","highed","ModalEditor","allowDone","features","importer","options","defaultChartOptions","newChart","JSON","parse","newName","text","alert","setTimeout","show","src","oldChart","data","csv","csvData","dataTable","loadCSV","convertSeriesToCSV","setAll","_chartOptions$chart","seriesData","series","_chartOptions$yAxis","yAxis","map","row","y","join","xAxis","_chartOptions$xAxis","_chartOptions$xAxis2","catoData","concat","categories","unshift","Prop","MetadataEditorV","close","Options","components","VueFinalModal","ChartEditorV","edited","ready","createNewChart","toString","charts","Slideshow","items","match","replace","chart_options","subtitle","credits","enabled","assign","thousandsSep","defaultTableData","chartInfo","chartSrc","file","stringify","push","findIndex","chartFile","oldName","remove","splice","forEach","Chart","ChartPreview","ConfirmationModalV","draggable","_component_json_editor","updatedConfig","mode","expandedOnStart","onJsonChange","json","onJsonSave","CustomEditorV","schemaUrl","jsonValidator","require","Validator","validator","storylinesSchema","fetch","then","schema","err","console","checkValidation","validate","valid","errors","Vue3JsonEditor","_component_ImagePreview","imagePreviews","dragging","isDragging","onDragover","onDragleave","onDrop","dropImages","multiple","imagePreviewsLoading","onImagesEdited","imageFile","deleteImage","altText","caption","slideshowCaption","alt","_renderSlot","$slots","ImagePreviewV","ImageEditorV","imagePreviewPromises","images","image","assetSrc","substring","indexOf","filename","assetFile","zip","async","URL","createObjectURL","Promise","all","e","filelist","Array","from","files","uploadSource","assets","imageSrc","dataTransfer","img","fileSource","revokeObjectURL","Image","_this$slideshowCaptio","ImagePreview","_component_v_md_editor","toolbar","TextEditorV","subsuper","menus","action","insert","selected","addLink","icon","style","_hoisted_19","_hoisted_24","_component_time_slider_editor","status","saveScrollguard","scrollguard","saveTimeSlider","usingTimeSlider","newFileName","createNewConfig","openEditor","timeSliderConf","timeSliderError","onTimeSliderChanged","onTimeSliderInput","range","start","attribute","layers","TimeSliderEditorV","MapEditorV","timeSlider","strippedFileName","split","_this$panel$timeSlide","_this$panel$timeSlide2","_this$panel$timeSlide3","_this$panel$timeSlide4","_this$panel$timeSlide5","_this$panel$timeSlide6","window","addEventListener","saveEditor","Date","getFullYear","validateTimeSlider","beforeDestroy","removeEventListener","rampConfig","defaultConfigEn","defaultConfigFr","configFile","iframe","getElementById","contentWindow","configname","stringResponse","checked","localStorage","RAMPconfig","property","layerId","trim","Number","some","val","isInteger","transform","_component_VideoPreview","videoPreview","onVideoEdited","dropVideo","videoType","uploadVideoUrl","videoPreviewLoading","fileType","deleteVideo","allowfullscreen","controls","kind","srclang","label","langs","VideoPreviewV","md","MarkdownIt","html","en","fr","expandTranscript","rawTranscript","transcriptContent","VideoEditorV","videoPreviewPromise","_this$videoPreviewPro","addUploadedFile","fileSrc","findFileType","fileName","lastIndexOf","ext","pop","extractYoutubeId","url","regExp","$refs","videoUrl","isYoutube","toLowerCase","includes","updateCaptions","updateTranscript","videoFileInput","transcript","VideoPreview","editingStatus","editItem","deleteItem","onTypeInput","newSlideType","startingConfig","saveItem","editingIdx","SlideshowEditorV","video","Text","dynamic","Dynamic","titleTag","children","slideshow","Map","Video","newSlideName","find","mapPanel","chartPanel","imagePanel","add","itemConfig","slideEditor","LoadingPageV","spinner","VueSpinnerOval","changePanel","switchSlide","removeSlide","idUsed","_vModelSelect","createNewSlide","editingSlide","DynamicEditorV","DynamicEditorV_1","userCreated","ch","slideshowPanel","videoPanel","newConfig","allCharts","every","allImages","slide","SlideEditorV","onSlideChange","prevType","removeSourceCounts","dynamicPanel","subPanel","typeSelector","deep","addNewSlide","delay","copyAllFromOtherLang","selectedForCopying","copyFromOtherLang","copySlide","moveUp","moveDown","SlideTocV","cloneDeep","deletedIndex","_this$slides$find","p","removeSourceHelper","_hoisted_35","_hoisted_36","_hoisted_37","_hoisted_38","_hoisted_39","_hoisted_40","metadataChanged","introTitle","introSubtitle","logoPreview","logoName","openFileSelector","removeLogo","logoAltText","contextLink","contextLabel","tocOrientation","dateModified","_document$getElementB","click","event","_component_slide_toc","_component_slide_editor","_Transition","_normalizeProps","_guardReactiveProps","preview","onSlidesUpdated","updateSlides","onSlidesEdited","onCustomSlideUpdated","updateCustomSlide","EditorV","logoImage","loadSlides","onMetadataEdited","created","beforeWindowUnload","observer","IntersectionObserver","classList","toggle","intersectionRatio","threshold","observe","querySelector","$nextTick","scrollTo","routeData","$router","resolve","previewTab","href","props","confirm","preventDefault","MetadataContentV","JSZip","axios","v4","uuidv4","loadExisting","reloadExisting","_this$$route$params$u","curDate","year","month","getMonth","padStart","day","getDate","_this$configs$this$co","existing","logo","introSlide","logoSrc","_this$configFileStruc","logoFile","File","blob","generateNewConfig","configZip","configHelper","_this$logoImage","otherLang","formattedOtherLangConfig","formattedConfigFile","configFileStructureHelper","_this$uuid","Message","clearConfig","loadAsync","catch","findSources","_configs$lang","_configs$lang2","incrementSourceCount","panelSourceHelper","uploadLogo","assetsFolder","folder","chartsFolder","rampConfigFolder","loadConfig","useConfig","_this$configFileStruc2","_this$configFileStruc3","enFile","frFile","_this$uuid2","success","updateEditorPath","_config$introSlide$lo","_config$introSlide$lo2","_this$configFileStruc4","_this$configFileStruc5","_this$configFileStruc6","generateAsync","formData","FormData","append","headers","post","finally","publish","_this$logoImage2","_this$configFileStruc7","_this$logoImage3","mainEditor","beforeRouteUpdate","next","isImgUrl","onerror","onload","uploadedFile","beforeEach","checkRequiredFields","values","field","_this$configFileStruc8","payload","beforeRouteLeave","curEditor","confirmationMessage","Editor","_component_storylines_intro","_component_storylines_content","plugin","headerHeight","onStep","updateActiveIndex","StoryPreviewV","savedProduct","activeChapterIndex","documentElement","setAttribute","headerH","clientHeight","routes","component","redirect","router","createRouter","history","createWebHashHistory","scrollBehavior","hash","selector","decodeURIComponent","behavior","rows","getAttribute","fold","reduce","enValue","frValue","i18n","createI18n","legacy","fallbackLocale","globalInjection","messages","VueMarkdownEditor","use","enUS","githubTheme","Hljs","hljs","vfm","createVfm","app","createApp","VueTippy","directive","HighchartsVue","StorylinesViewer","mount"],"mappings":"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","file":"js/chunk-common.06872484.js","sourcesContent":["export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./map-editor.vue?vue&type=style&index=0&id=681c9c6b&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./slide-editor.vue?vue&type=style&index=0&id=4c97a990&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./text-editor.vue?vue&type=style&index=0&id=b0fb221e&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./confirmation-modal.vue?vue&type=style&index=0&id=4ed11748&scoped=true&lang=css\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./slideshow-editor.vue?vue&type=style&index=0&id=5b666f60&lang=scss&scoped=true\"","var res = [{\"key\":\"chapters.title\",\"enValue\":\"Chapters\",\"enValid\":\"1\",\"frValue\":\"Chapitres\",\"frValid\":\"1\"},{\"key\":\"chapters.return\",\"enValue\":\"Return to top\",\"enValid\":\"1\",\"frValue\":\"Retournez en haut\",\"frValid\":\"1\"},{\"key\":\"chapters.menu\",\"enValue\":\"Toggle menu\",\"enValid\":\"1\",\"frValue\":\"Menu à bascule\",\"frValid\":\"1\"},{\"key\":\"scrollguard.desc\",\"enValue\":\"Use ctrl + scroll to zoom the map\",\"enValid\":\"1\",\"frValue\":\"Utilisez les touches Ctrl et + pour faire un zoom de la carte\",\"frValid\":\"1\"},{\"key\":\"story.window.title\",\"enValue\":\"RAMP Storylines\",\"enValid\":\"1\",\"frValue\":\"RAMP Storylines\",\"frValid\":\"0\"},{\"key\":\"story.date\",\"enValue\":\"Date modified:\",\"enValid\":\"1\",\"frValue\":\"Date de modification:\",\"frValid\":\"1\"},{\"key\":\"story.error\",\"enValue\":\"An error occurred while loading this Storylines product. See developer console for more information.\",\"enValid\":\"1\",\"frValue\":\"Une erreur est survenue pendant le chargement ce synopsis produit. Voir la console du promoteur pour obtenir de plus amples renseignements.\",\"frValid\":\"1\"},{\"key\":\"image.fullscreen\",\"enValue\":\"Full Screen\",\"enValid\":\"1\",\"frValue\":\"Plein Écran\",\"frValid\":\"1\"},{\"key\":\"dynamic.back\",\"enValue\":\"Back\",\"enValid\":\"1\",\"frValue\":\"Retour\",\"frValid\":\"0\"},{\"key\":\"dynamic.textSection\",\"enValue\":\"Text Section\",\"enValid\":\"1\",\"frValue\":\"Section de texte\",\"frValid\":\"1\"},{\"key\":\"dynamic.panel.collection\",\"enValue\":\"Panel Collection\",\"enValid\":\"1\",\"frValue\":\"Collection de panneaux\",\"frValid\":\"1\"},{\"key\":\"dynamic.panel.id\",\"enValue\":\"Panel ID\",\"enValid\":\"1\",\"frValue\":\"No d’identification du panneau\",\"frValid\":\"1\"},{\"key\":\"dynamic.panel.type\",\"enValue\":\"Panel Type\",\"enValid\":\"1\",\"frValue\":\"Type de panneaux\",\"frValid\":\"1\"},{\"key\":\"dynamic.panel.actions\",\"enValue\":\"Panel Actions\",\"enValid\":\"1\",\"frValue\":\"Actions du panneau\",\"frValid\":\"1\"},{\"key\":\"dynamic.panel.idTaken\",\"enValue\":\"Panel ID is already\",\"enValid\":\"1\",\"frValue\":\"Le nom du panneau est déjà utilisé\",\"frValid\":\"1\"},{\"key\":\"dynamic.panel.editor\",\"enValue\":\"Panel Editor:\",\"enValid\":\"1\",\"frValue\":\"Éditeur de panneaux:\",\"frValid\":\"1\"},{\"key\":\"timeslider.expand\",\"enValue\":\"Expand\",\"enValid\":\"1\",\"frValue\":\"Développer\",\"frValid\":\"1\"},{\"key\":\"timeslider.minimize\",\"enValue\":\"Minimize\",\"enValid\":\"1\",\"frValue\":\"Réduire\",\"frValid\":\"1\"},{\"key\":\"timeslider.play\",\"enValue\":\"Play\",\"enValid\":\"1\",\"frValue\":\"Lecture\",\"frValid\":\"1\"},{\"key\":\"timeslider.pause\",\"enValue\":\"Pause\",\"enValid\":\"1\",\"frValue\":\"Pause\",\"frValid\":\"1\"},{\"key\":\"fullscreen.activate\",\"enValue\":\"Enter Fullscreen\",\"enValid\":\"1\",\"frValue\":\"Afficher le mode plein écran\",\"frValid\":\"1\"},{\"key\":\"fullscreen.deactivate\",\"enValue\":\"Exit Fullscreen\",\"enValid\":\"1\",\"frValue\":\"Quitter le mode plein écran\",\"frValid\":\"1\"},{\"key\":\"editor.window.title\",\"enValue\":\"RAMP Storylines Editor\",\"enValid\":\"1\",\"frValue\":\"Éditeur de scénarios de la PCAR\",\"frValid\":\"1\"},{\"key\":\"editor.createProduct\",\"enValue\":\"Create New Storylines Product\",\"enValid\":\"1\",\"frValue\":\"Créer un nouveau produit de scénarios\",\"frValid\":\"1\"},{\"key\":\"editor.editProduct\",\"enValue\":\"Edit Existing Storylines Product\",\"enValid\":\"1\",\"frValue\":\"Modifier un produit de scénarios\",\"frValid\":\"1\"},{\"key\":\"editor.editMetadata\",\"enValue\":\"Edit Project Metadata\",\"enValid\":\"1\",\"frValue\":\"Modifier les métadonnées d’un projet\",\"frValid\":\"1\"},{\"key\":\"editor.productDetails\",\"enValue\":\"Storylines product details\",\"enValid\":\"1\",\"frValue\":\"Détails du produit de scénarios\",\"frValid\":\"1\"},{\"key\":\"editor.metadata.instructions\",\"enValue\":\"Fill in metadata details about your new Storylines product. Use the \\\"Preview\\\" button to see what your slides will look like.\",\"enValid\":\"1\",\"frValue\":\"Inscrivez les métadonnées de votre nouveau produit de scénario. Utilisez la fonction « Afficher l’aperçu » pour voir à quoi ressemblent vos diapositives.\",\"frValid\":\"1\"},{\"key\":\"editor.uuid\",\"enValue\":\"UUID\",\"enValid\":\"1\",\"frValue\":\"UUID\",\"frValid\":\"0\"},{\"key\":\"editor.uuid.exists\",\"enValue\":\"UUID already exists. Saving this will overwrite existing product.\",\"enValid\":\"1\",\"frValue\":\"L’IDUU existe déjà. Enregistrer ce produit écrasera le produit existant.\",\"frValid\":\"1\"},{\"key\":\"editor.title\",\"enValue\":\"Title\",\"enValid\":\"1\",\"frValue\":\"Titre\",\"frValid\":\"1\"},{\"key\":\"editor.logo\",\"enValue\":\"Logo\",\"enValid\":\"1\",\"frValue\":\"Logo\",\"frValid\":\"1\"},{\"key\":\"editor.logoPreview\",\"enValue\":\"Logo Preview\",\"enValid\":\"1\",\"frValue\":\"Aperçu du logo\",\"frValid\":\"1\"},{\"key\":\"editor.logoAltText\",\"enValue\":\"Logo Alt Text\",\"enValid\":\"1\",\"frValue\":\"Lien contextuel\",\"frValid\":\"1\"},{\"key\":\"editor.logoAltText.desc\",\"enValue\":\"For accessibility purposes, provide description text for the logo.\",\"enValid\":\"1\",\"frValue\":\"Pour des raisons d'accessibilité, fournissez un texte descriptif pour le logo.\",\"frValid\":\"0\"},{\"key\":\"editor.contextLink\",\"enValue\":\"Context Link\",\"enValid\":\"1\",\"frValue\":\"Lien contextuel\",\"frValid\":\"1\"},{\"key\":\"editor.contextLink.info\",\"enValue\":\"Context link shows up at the bottom of the page to provide additional resources for interested users.\",\"enValid\":\"1\",\"frValue\":\"Le lien contextuel apparaît au bas de la page et fournit des ressources supplémentaires aux utilisateurs intéressés.\",\"frValid\":\"1\"},{\"key\":\"editor.contextLabel\",\"enValue\":\"Context Label\",\"enValid\":\"1\",\"frValue\":\"Étiquette de contexte\",\"frValid\":\"1\"},{\"key\":\"editor.contextLabel.info\",\"enValue\":\"Context label shows up before the context link to explain what the link is for\",\"enValid\":\"1\",\"frValue\":\"L’étiquette de contexte apparaît avant le lien contextuel et explique à quoi sert le lien.\",\"frValid\":\"1\"},{\"key\":\"editor.dateModified\",\"enValue\":\"Date Modified\",\"enValid\":\"1\",\"frValue\":\"Date de modification\",\"frValid\":\"1\"},{\"key\":\"editor.load\",\"enValue\":\"Load\",\"enValid\":\"1\",\"frValue\":\"Charger\",\"frValid\":\"1\"},{\"key\":\"editor.browse\",\"enValue\":\"Browse\",\"enValid\":\"1\",\"frValue\":\"Parcourir\",\"frValid\":\"1\"},{\"key\":\"editor.remove\",\"enValue\":\"Remove\",\"enValid\":\"1\",\"frValue\":\"Supprimer\",\"frValid\":\"1\"},{\"key\":\"editor.back\",\"enValue\":\"Back\",\"enValid\":\"1\",\"frValue\":\"Retour\",\"frValid\":\"1\"},{\"key\":\"editor.next\",\"enValue\":\"Next\",\"enValid\":\"1\",\"frValue\":\"Suivant\",\"frValid\":\"1\"},{\"key\":\"editor.preview\",\"enValue\":\"Preview\",\"enValid\":\"1\",\"frValue\":\"Afficher l’aperçu\",\"frValid\":\"1\"},{\"key\":\"editor.confirm\",\"enValue\":\"Confirm\",\"enValid\":\"1\",\"frValue\":\"Confirmer\",\"frValid\":\"1\"},{\"key\":\"editor.cancel\",\"enValue\":\"Cancel\",\"enValid\":\"1\",\"frValue\":\"Annuler\",\"frValid\":\"1\"},{\"key\":\"editor.unsavedChanges\",\"enValue\":\"Unsaved changes\",\"enValid\":\"1\",\"frValue\":\"Modifications non enregistrées\",\"frValid\":\"1\"},{\"key\":\"editor.saveChanges\",\"enValue\":\"Save Changes\",\"enValid\":\"1\",\"frValue\":\"Enregistrer les modifications\",\"frValid\":\"1\"},{\"key\":\"editor.label.or\",\"enValue\":\"or\",\"enValid\":\"1\",\"frValue\":\"ou\",\"frValid\":\"1\"},{\"key\":\"editor.label.browse\",\"enValue\":\"browse\",\"enValid\":\"1\",\"frValue\":\"parcourir\",\"frValid\":\"1\"},{\"key\":\"editor.label.upload\",\"enValue\":\"to upload\",\"enValid\":\"1\",\"frValue\":\"téléverser\",\"frValid\":\"1\"},{\"key\":\"editor.savingChanges\",\"enValue\":\"Saving...\",\"enValid\":\"1\",\"frValue\":\"Enregistrement...\",\"frValid\":\"1\"},{\"key\":\"editor.resetChanges\",\"enValue\":\"Reset Changes\",\"enValid\":\"1\",\"frValue\":\"Annuler les modifications\",\"frValid\":\"1\"},{\"key\":\"editor.refreshChanges.modal\",\"enValue\":\"Are you sure you want to reload the product? All unsaved changes will be lost.\",\"enValid\":\"1\",\"frValue\":\"Voulez-vous vraiment recharger ce produit? Toute modification non enregistrée sera perdue.\",\"frValid\":\"1\"},{\"key\":\"editor.changeLang.modal\",\"enValue\":\"Are you sure you want to switch languages? Unsaved changes may be lost.\",\"enValid\":\"1\",\"frValue\":\"Voulez-vous vraiment changer de langue? Toute modification non enregistrée sera perdue.\",\"frValid\":\"1\"},{\"key\":\"editor.frenchConfig\",\"enValue\":\"View French Config\",\"enValid\":\"1\",\"frValue\":\"Afficher la configuration en français\",\"frValid\":\"1\"},{\"key\":\"editor.englishConfig\",\"enValue\":\"View English Config\",\"enValid\":\"1\",\"frValue\":\"Afficher la configuration en anglais\",\"frValid\":\"1\"},{\"key\":\"editor.returnToLanding\",\"enValue\":\"Return to Landing\",\"enValid\":\"1\",\"frValue\":\"Retour à la page d’accueil\",\"frValid\":\"1\"},{\"key\":\"editor.customConfig\",\"enValue\":\"Are you sure you want to overwrite slide config and save custom changes?\",\"enValid\":\"1\",\"frValue\":\"Are you sure you want to overwrite slide config and save custom changes?\",\"frValid\":\"0\"},{\"key\":\"editor.image.delete\",\"enValue\":\"Delete Image\",\"enValid\":\"1\",\"frValue\":\"Supprimer l'image\",\"frValid\":\"1\"},{\"key\":\"editor.image.label.drag\",\"enValue\":\"Drag your images here\",\"enValid\":\"1\",\"frValue\":\"Faites glisser vos images ici\",\"frValid\":\"1\"},{\"key\":\"editor.image.label.caption\",\"enValue\":\"Caption\",\"enValid\":\"1\",\"frValue\":\"Légende\",\"frValid\":\"1\"},{\"key\":\"editor.image.reorder\",\"enValue\":\"Click and drag to reorder images\",\"enValid\":\"1\",\"frValue\":\"Cliquez sur les images et faites-les glisser pour changer l’ordre.\",\"frValid\":\"1\"},{\"key\":\"editor.image.altTag\",\"enValue\":\"Alt tag\",\"enValid\":\"1\",\"frValue\":\"Texte de remplacement\",\"frValid\":\"1\"},{\"key\":\"editor.image.slideshowCaption\",\"enValue\":\"Slideshow Caption\",\"enValid\":\"1\",\"frValue\":\"Légende du diaporama\",\"frValid\":\"1\"},{\"key\":\"editor.image.loadingError\",\"enValue\":\"An error occurred when trying to load image\",\"enValid\":\"1\",\"frValue\":\"Une erreur est survenue lors du chargement de l’image.\",\"frValid\":\"1\"},{\"key\":\"editor.video.title\",\"enValue\":\"Video Title\",\"enValid\":\"1\",\"frValue\":\"Titre de la vidéo\",\"frValid\":\"1\"},{\"key\":\"editor.video.label.drag\",\"enValue\":\"Drag your video file here\",\"enValid\":\"1\",\"frValue\":\"Glissez votre fichier vidéo ici\",\"frValid\":\"1\"},{\"key\":\"editor.video.label.captions\",\"enValue\":\"Video Captions\",\"enValid\":\"1\",\"frValue\":\"Sous-titres\",\"frValid\":\"1\"},{\"key\":\"editor.video.label.transcript\",\"enValue\":\"Video Transcript\",\"enValid\":\"1\",\"frValue\":\"Transcription\",\"frValid\":\"1\"},{\"key\":\"editor.video.label.upload\",\"enValue\":\"Upload\",\"enValid\":\"1\",\"frValue\":\"Télécharger\",\"frValid\":\"1\"},{\"key\":\"editor.video.delete\",\"enValue\":\"Delete Video\",\"enValid\":\"1\",\"frValue\":\"Supprimer la vidéo\",\"frValid\":\"1\"},{\"key\":\"editor.video.pasteUrl\",\"enValue\":\"Paste the URL to a video\",\"enValid\":\"1\",\"frValue\":\"Paste the URL to a video\",\"frValid\":\"0\"},{\"key\":\"editor.chart.delete\",\"enValue\":\"Delete Chart\",\"enValid\":\"1\",\"frValue\":\"Supprimer le graphique\",\"frValid\":\"1\"},{\"key\":\"editor.chart.label.name\",\"enValue\":\"Name\",\"enValid\":\"1\",\"frValue\":\"Nom\",\"frValid\":\"1\"},{\"key\":\"editor.chart.label.edit\",\"enValue\":\"Edit\",\"enValid\":\"1\",\"frValue\":\"Éditer\",\"frValid\":\"1\"},{\"key\":\"editor.chart.label.empty\",\"enValue\":\"Empty\",\"enValid\":\"1\",\"frValue\":\"Vide\",\"frValid\":\"1\"},{\"key\":\"editor.chart.label.create\",\"enValue\":\"Add new chart\",\"enValid\":\"1\",\"frValue\":\"Ajouter un nouveau graphique\",\"frValid\":\"1\"},{\"key\":\"editor.chart.label.info\",\"enValue\":\"Interactive chart\",\"enValid\":\"1\",\"frValue\":\"[FR] Interactive chart\",\"frValid\":\"0\"},{\"key\":\"editor.chart.label.nameExists\",\"enValue\":\"There is already an existing chart with the name {name}.\",\"enValid\":\"1\",\"frValue\":\"There is already an existing chart with the name {name}.\",\"frValid\":\"0\"},{\"key\":\"editor.chart.label.info\",\"enValue\":\"Interactive charts ({num})\",\"enValid\":\"1\",\"frValue\":\"Graphiques interactifs ({num})\",\"frValid\":\"1\"},{\"key\":\"editor.chart.delete.confirm\",\"enValue\":\"Are you sure you want to delete the chart {name}?\",\"enValid\":\"1\",\"frValue\":\"Voulez-vous vraiment supprimer le graphique {nom}?\",\"frValid\":\"1\"},{\"key\":\"editor.map.title\",\"enValue\":\"Map title\",\"enValid\":\"1\",\"frValue\":\"Titre de la carte\",\"frValid\":\"1\"},{\"key\":\"editor.map.edit.cancel\",\"enValue\":\"Cancel editing\",\"enValid\":\"1\",\"frValue\":\"Annuler les modifications\",\"frValid\":\"1\"},{\"key\":\"editor.map.edit\",\"enValue\":\"Map editor\",\"enValid\":\"1\",\"frValue\":\"Éditeur de carte\",\"frValid\":\"1\"},{\"key\":\"editor.map.label.name\",\"enValue\":\"Map config name\",\"enValid\":\"1\",\"frValue\":\"Nom de la configuration de la carte\",\"frValid\":\"1\"},{\"key\":\"editor.map.label.create\",\"enValue\":\"Create New Configuration File\",\"enValid\":\"1\",\"frValue\":\"Créer un nouveau fichier de configuration\",\"frValid\":\"1\"},{\"key\":\"editor.map.label.edit\",\"enValue\":\"Edit Map Configuration\",\"enValid\":\"1\",\"frValue\":\"Modifier la configuration de la carte\",\"frValid\":\"1\"},{\"key\":\"editor.map.scrollguard.enable\",\"enValue\":\"Enable scrollguard\",\"enValid\":\"1\",\"frValue\":\"Activer le contrôle du défilement\",\"frValid\":\"1\"},{\"key\":\"editor.map.timeslider.enable\",\"enValue\":\"Enable Time Slider:\",\"enValid\":\"1\",\"frValue\":\"Activer le curseur temporel:\",\"frValid\":\"1\"},{\"key\":\"editor.map.timeslider.edit\",\"enValue\":\"Edit Time Slider Config\",\"enValid\":\"1\",\"frValue\":\"Modifier la configuration du curseur temporel\",\"frValid\":\"1\"},{\"key\":\"editor.map.timeslider.range\",\"enValue\":\"Range:\",\"enValid\":\"1\",\"frValue\":\"Tranche:\",\"frValid\":\"1\"},{\"key\":\"editor.map.timeslider.start\",\"enValue\":\"Start:\",\"enValid\":\"1\",\"frValue\":\"Début:\",\"frValid\":\"1\"},{\"key\":\"editor.map.timeslider.attribute\",\"enValue\":\"Attribute:\",\"enValid\":\"1\",\"frValue\":\"Caractéristique:\",\"frValid\":\"1\"},{\"key\":\"editor.map.timeslider.layers\",\"enValue\":\"(OPTIONAL) Comma separated Layer IDs:\",\"enValid\":\"1\",\"frValue\":\"(OPTIONAL) Comma separated Layer IDs:\",\"frValid\":\"0\"},{\"key\":\"editor.map.timeslider.to\",\"enValue\":\"to\",\"enValid\":\"1\",\"frValue\":\"to\",\"frValid\":\"0\"},{\"key\":\"editor.map.timeslider.warning\",\"enValue\":\"⚠️Warning! Please ensure that:\",\"enValid\":\"1\",\"frValue\":\"⚠️Avertissement! Veuillez vous assurer de ce qui suit:\",\"frValid\":\"1\"},{\"key\":\"editor.map.timeslider.warning.bullet1\",\"enValue\":\"All range and start values are positive integers.\",\"enValid\":\"1\",\"frValue\":\"Toutes les valeurs de la tranche et du début sont des nombres entiers positifs.\",\"frValid\":\"1\"},{\"key\":\"editor.map.timeslider.warning.bullet2\",\"enValue\":\"The \\\"to\\\" value is greater than or equal to the \\\"from\\\" value.\",\"enValid\":\"1\",\"frValue\":\"La valeur « À » est supérieure ou égale à la valeur « De ».\",\"frValid\":\"1\"},{\"key\":\"editor.map.timeslider.warning.end\",\"enValue\":\"Otherwise, your time slider config cannot be saved.\",\"enValid\":\"1\",\"frValue\":\"Autrement\",\"frValid\":\" la configuration du curseur temporel ne pourra pas être enregistrée.\"},{\"key\":\"editor.slideshow.label.info\",\"enValue\":\"Slideshow items ({num})\",\"enValid\":\"1\",\"frValue\":\"[FR] Slideshow items ({num})\",\"frValid\":\"0\"},{\"key\":\"editor.slideshow.label.create\",\"enValue\":\"Add new item\",\"enValid\":\"1\",\"frValue\":\"[FR] Add new item\",\"frValid\":\"0\"},{\"key\":\"editor.slideshow.label.edit\",\"enValue\":\"Edit existing item\",\"enValid\":\"1\",\"frValue\":\"[FR] Edit existing item\",\"frValid\":\"0\"},{\"key\":\"editor.slideshow.label.type\",\"enValue\":\"Type\",\"enValid\":\"1\",\"frValue\":\"[FR] Type\",\"frValid\":\"0\"},{\"key\":\"editor.slideshow.label.add\",\"enValue\":\"Add\",\"enValid\":\"1\",\"frValue\":\"[FR] Add\",\"frValid\":\"0\"},{\"key\":\"editor.slides.title\",\"enValue\":\"SLIDES\",\"enValid\":\"1\",\"frValue\":\"DIAPOSITIVES\",\"frValid\":\"1\"},{\"key\":\"editor.slides.addSlide\",\"enValue\":\"New Slide\",\"enValid\":\"1\",\"frValue\":\"Nouvelle diapositive\",\"frValid\":\"1\"},{\"key\":\"editor.slides.copyFromLang\",\"enValue\":\"Copy slides from the other language\",\"enValid\":\"1\",\"frValue\":\"Copier les diapositives de l’autre langue\",\"frValid\":\"1\"},{\"key\":\"editor.slides.deleteSlide.confirm\",\"enValue\":\"Are you sure you want to delete the slide {title}?\",\"enValid\":\"1\",\"frValue\":\"Voulez-vous vraiment supprimer la diapositive {titre}?\",\"frValid\":\"1\"},{\"key\":\"editor.slides.changeSlide.confirm\",\"enValue\":\"Are you sure you want to change the slide {title}? All unsaved progress will be lost.\",\"enValid\":\"1\",\"frValue\":\"Voulez-vous vraiment modifier la diapositive {titre}? Toute modification non enregistrée sera perdue.\",\"frValid\":\"1\"},{\"key\":\"editor.slides.makeFull\",\"enValue\":\"Make the right panel the full slide\",\"enValid\":\"1\",\"frValue\":\"Mettre la diapositive complète dans le panneau de droite\",\"frValid\":\"1\"},{\"key\":\"editor.slides.copyAll\",\"enValue\":\"Copy all\",\"enValid\":\"1\",\"frValue\":\"Copier tout\",\"frValid\":\"1\"},{\"key\":\"editor.slides.copy\",\"enValue\":\"Copy\",\"enValid\":\"1\",\"frValue\":\"Copier\",\"frValid\":\"1\"},{\"key\":\"editor.slides.slide\",\"enValue\":\"Slide\",\"enValid\":\"1\",\"frValue\":\"Diapositive\",\"frValid\":\"1\"},{\"key\":\"editor.slides.previousSlide\",\"enValue\":\"Previous slide\",\"enValid\":\"1\",\"frValue\":\"Diapositive précédente\",\"frValid\":\"1\"},{\"key\":\"editor.slides.nextSlide\",\"enValue\":\"Next slide\",\"enValid\":\"1\",\"frValue\":\"Diapositive suivante\",\"frValid\":\"1\"},{\"key\":\"editor.slides.leftPanel\",\"enValue\":\"Left panel\",\"enValid\":\"1\",\"frValue\":\"Panneau de gauche\",\"frValid\":\"1\"},{\"key\":\"editor.slides.rightPanel\",\"enValue\":\"Right panel\",\"enValid\":\"1\",\"frValue\":\"Panneau de droite\",\"frValid\":\"1\"},{\"key\":\"editor.slides.fullscreenPanel\",\"enValue\":\"Fullscreen panel\",\"enValid\":\"1\",\"frValue\":\"Panneau plein écran\",\"frValid\":\"1\"},{\"key\":\"editor.slides.advanced\",\"enValue\":\"Advanced\",\"enValid\":\"1\",\"frValue\":\"Avancé\",\"frValid\":\"0\"},{\"key\":\"editor.slides.contentType\",\"enValue\":\"Content type\",\"enValid\":\"1\",\"frValue\":\"Type de contenu\",\"frValid\":\"1\"},{\"key\":\"editor.slides.content\",\"enValue\":\"Content\",\"enValid\":\"1\",\"frValue\":\"Contenu\",\"frValid\":\"1\"},{\"key\":\"editor.slides.select\",\"enValue\":\"Please select a slide to edit\",\"enValid\":\"1\",\"frValue\":\"Veuillez sélectionner une diapositive à modifier\",\"frValid\":\"1\"},{\"key\":\"editor.slides.panel.body\",\"enValue\":\"Panel body\",\"enValid\":\"1\",\"frValue\":\"Corps du panneau\",\"frValid\":\"1\"},{\"key\":\"editor.slides.panel.title\",\"enValue\":\"Panel title\",\"enValid\":\"1\",\"frValue\":\"Titre du panneau\",\"frValid\":\"1\"},{\"key\":\"editor.slides.intro\",\"enValue\":\"Intro subtitle\",\"enValid\":\"1\",\"frValue\":\"Sous-titre de l’introduction\",\"frValid\":\"1\"},{\"key\":\"editor.slides.title\",\"enValue\":\"Intro title\",\"enValid\":\"1\",\"frValue\":\"Titre de l’introduction\",\"frValid\":\"1\"},{\"key\":\"editor.tocOrientation\",\"enValue\":\"Table of Contents Orientation\",\"enValid\":\"1\",\"frValue\":\"Orientation de la table des matières\",\"frValid\":\"0\"},{\"key\":\"editor.tocOrientation.info\",\"enValue\":\"The table of contents orientation will be set to vertical in mobile view.\",\"enValid\":\"1\",\"frValue\":\"L'orientation de la table des matières sera définie sur verticale en vue mobile.\",\"frValid\":\"0\"},{\"key\":\"editor.tocOrientation.vertical\",\"enValue\":\"Vertical\",\"enValid\":\"1\",\"frValue\":\"Vertical\",\"frValid\":\"0\"},{\"key\":\"editor.tocOrientation.horizontal\",\"enValue\":\"Horizontal\",\"enValid\":\"1\",\"frValue\":\"Horizontal\",\"frValid\":\"0\"}];res.columns = [\"key\",\"enValue\",\"enValid\",\"frValue\",\"frValid\"];module.exports = res;","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./video-preview.vue?vue&type=style&index=0&id=2d1c87e5&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./image-preview.vue?vue&type=style&index=0&id=5bdf84fc&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./slide-toc.vue?vue&type=style&index=0&id=33456e0a&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./editor.vue?vue&type=style&index=0&id=ec080f10&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./image-editor.vue?vue&type=style&index=0&id=39ccfdb7&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./custom-editor.vue?vue&type=style&index=0&id=5cc9b9fc&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./landing.vue?vue&type=style&index=0&id=79d08e02&lang=scss\"","export * from \"-!../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../node_modules/vue-loader-v16/dist/stylePostLoader.js!../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../node_modules/cache-loader/dist/cjs.js??ref--1-0!../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./app.vue?vue&type=style&index=0&id=7370f27a&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./video-editor.vue?vue&type=style&index=0&id=996fd9c6&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./metadata-editor.vue?vue&type=style&index=0&id=adaf72ca&lang=scss\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./chart-preview.vue?vue&type=style&index=0&id=1df36a82&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./chart-editor.vue?vue&type=style&index=0&id=0daaeefc&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./dynamic-editor.vue?vue&type=style&index=0&id=93f60e24&lang=scss\"","import { resolveComponent as _resolveComponent, openBlock as _openBlock, createBlock as _createBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = {\n id: \"app\",\n class: \"storyramp-app bg-white\"\n}\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_router_view = _resolveComponent(\"router-view\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_openBlock(), _createBlock(_component_router_view, {\n key: _ctx.$route.path\n }))\n ]))\n}","\nimport { Vue, Watch } from 'vue-property-decorator';\nimport { RouteLocationNormalized } from 'vue-router';\n\nexport default class App extends Vue {\n @Watch('$route', { immediate: true })\n onRouteUpdate(to: RouteLocationNormalized): void {\n this.$i18n.locale = (to.params.lang as string) ?? 'en';\n if (to.params.lang) {\n document.title = this.$t(to.meta.title);\n }\n }\n}\n","import { render } from \"./app.vue?vue&type=template&id=7370f27a&ts=true\"\nimport script from \"./app.vue?vue&type=script&lang=ts\"\nexport * from \"./app.vue?vue&type=script&lang=ts\"\n\nimport \"./app.vue?vue&type=style&index=0&id=7370f27a&lang=scss\"\n\nimport exportComponent from \"/home/runner/work/storylines-editor/storylines-editor/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { Vue } from 'vue-class-component';\n\n// register router hooks\nVue.registerHooks(['beforeRouterEnter', 'beforeRouteLeave', 'beforeRouteUpdate']);\n","import { toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, createVNode as _createVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = { class: \"flex justify-center\" }\nconst _hoisted_2 = { class: \"home-btn-container border-4 border-gray-400 border-solid m-24\" }\nconst _hoisted_3 = { class: \"text-2xl font-bold\" }\nconst _hoisted_4 = { class: \"home-btn-container border-4 border-gray-400 border-solid m-24\" }\nconst _hoisted_5 = { class: \"text-2xl font-bold\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_router_link = _resolveComponent(\"router-link\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createVNode(_component_router_link, {\n to: { name: 'metadataNew' },\n class: \"flex justify-center h-full w-full\",\n target: \"\"\n }, {\n default: _withCtx(() => [\n _createElementVNode(\"button\", _hoisted_3, \"+ \" + _toDisplayString(_ctx.$t('editor.createProduct')), 1)\n ]),\n _: 1\n })\n ]),\n _createElementVNode(\"div\", _hoisted_4, [\n _createVNode(_component_router_link, {\n to: { name: 'metadataExisting' },\n class: \"flex justify-center h-full w-full\",\n target: \"\"\n }, {\n default: _withCtx(() => [\n _createElementVNode(\"button\", _hoisted_5, _toDisplayString(_ctx.$t('editor.editProduct')), 1)\n ]),\n _: 1\n })\n ])\n ]))\n}","\nimport { Vue } from 'vue-property-decorator';\n\nexport default class LandingV extends Vue {}\n","import { render } from \"./landing.vue?vue&type=template&id=79d08e02&ts=true\"\nimport script from \"./landing.vue?vue&type=script&lang=ts\"\nexport * from \"./landing.vue?vue&type=script&lang=ts\"\n\nimport \"./landing.vue?vue&type=style&index=0&id=79d08e02&lang=scss\"\n\nimport exportComponent from \"/home/runner/work/storylines-editor/storylines-editor/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createTextVNode as _createTextVNode, vModelText as _vModelText, normalizeClass as _normalizeClass, withDirectives as _withDirectives, resolveComponent as _resolveComponent, createVNode as _createVNode, withCtx as _withCtx, Fragment as _Fragment, withModifiers as _withModifiers, createBlock as _createBlock } from \"vue\"\n\nconst _hoisted_1 = { class: \"editor-container\" }\nconst _hoisted_2 = { class: \"px-20 py-5\" }\nconst _hoisted_3 = { class: \"flex\" }\nconst _hoisted_4 = { class: \"flex text-2xl font-bold mb-5\" }\nconst _hoisted_5 = { class: \"border py-5 w-5/6\" }\nconst _hoisted_6 = {\n key: 0,\n class: \"text-red-500\"\n}\nconst _hoisted_7 = {\n key: 0,\n class: \"text-yellow-500 rounded p-1 ml-2\"\n}\nconst _hoisted_8 = /*#__PURE__*/_createElementVNode(\"span\", { class: \"align-middle inline-block mr-1 pb-1 fill-current\" }, [\n /*#__PURE__*/_createElementVNode(\"svg\", {\n \"clip-rule\": \"evenodd\",\n \"fill-rule\": \"evenodd\",\n \"stroke-linejoin\": \"round\",\n \"stroke-miterlimit\": \"2\",\n viewBox: \"0 0 24 24\",\n width: \"18\",\n height: \"18\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, [\n /*#__PURE__*/_createElementVNode(\"path\", {\n d: \"m2.095 19.886 9.248-16.5c.133-.237.384-.384.657-.384.272 0 .524.147.656.384l9.248 16.5c.064.115.096.241.096.367 0 .385-.309.749-.752.749h-18.496c-.44 0-.752-.36-.752-.749 0-.126.031-.252.095-.367zm9.907-6.881c-.414 0-.75.336-.75.75v3.5c0 .414.336.75.75.75s.75-.336.75-.75v-3.5c0-.414-.336-.75-.75-.75zm-.002-3c-.552 0-1 .448-1 1s.448 1 1 1 1-.448 1-1-.448-1-1-1z\",\n \"fill-rule\": \"nonzero\"\n })\n ])\n], -1)\nconst _hoisted_9 = { class: \"align-center inline-block select-none\" }\nconst _hoisted_10 = {\n key: 2,\n class: \"inline-flex align-middle mb-1\"\n}\nconst _hoisted_11 = /*#__PURE__*/_createElementVNode(\"br\", null, null, -1)\nconst _hoisted_12 = { class: \"mb-4\" }\nconst _hoisted_13 = { class: \"flex mt-8\" }\nconst _hoisted_14 = { class: \"ml-auto\" }\nconst _hoisted_15 = [\"onClick\"]\nconst _hoisted_16 = {\n slot: \"header\",\n class: \"text-lg font-bold\"\n}\nconst _hoisted_17 = { class: \"w-full flex justify-end\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_spinner = _resolveComponent(\"spinner\")!\n const _component_metadata_content = _resolveComponent(\"metadata-content\")!\n const _component_router_link = _resolveComponent(\"router-link\")!\n const _component_confirmation_modal = _resolveComponent(\"confirmation-modal\")!\n const _component_vue_final_modal = _resolveComponent(\"vue-final-modal\")!\n const _component_editor = _resolveComponent(\"editor\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (!_ctx.loadEditor)\n ? (_openBlock(), _createElementBlock(_Fragment, { key: 0 }, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"div\", _hoisted_3, [\n _createElementVNode(\"div\", _hoisted_4, _toDisplayString(_ctx.editExisting ? _ctx.$t('editor.editProduct') : _ctx.$t('editor.createProduct')), 1),\n _createElementVNode(\"button\", {\n onClick: _cache[0] || (_cache[0] = ($event: any) => (_ctx.swapLang()))\n }, _toDisplayString(_ctx.configLang === 'en' ? _ctx.$t('editor.frenchConfig') : _ctx.$t('editor.englishConfig')), 1)\n ]),\n _createElementVNode(\"div\", _hoisted_5, [\n _createElementVNode(\"label\", null, [\n ('uuid' in _ctx.reqFields)\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_6, \"*\"))\n : _createCommentVNode(\"\", true),\n _createTextVNode(\" \" + _toDisplayString(_ctx.$t('editor.uuid')) + \":\", 1)\n ]),\n _withDirectives(_createElementVNode(\"input\", {\n type: \"text\",\n onInput: _cache[1] || (_cache[1] = ($event: any) => {\n _ctx.error = false;\n _ctx.reqFields.uuid = true;\n _ctx.checkUuid();\n }),\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = ($event: any) => ((_ctx.uuid) = $event)),\n class: _normalizeClass([\"w-1/3\", _ctx.error || !_ctx.reqFields.uuid ? 'input-error' : ''])\n }, null, 34), [\n [_vModelText, _ctx.uuid]\n ]),\n (_ctx.warning)\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_7, [\n _hoisted_8,\n _createElementVNode(\"span\", _hoisted_9, _toDisplayString(_ctx.$t('editor.uuid.exists')), 1)\n ]))\n : _createCommentVNode(\"\", true),\n (_ctx.editExisting)\n ? (_openBlock(), _createElementBlock(\"button\", {\n key: 1,\n onClick: _cache[3] || (_cache[3] = \n//@ts-ignore\n(...args) => (_ctx.generateRemoteConfig && _ctx.generateRemoteConfig(...args))),\n class: _normalizeClass([\"bg-black text-white hover:bg-gray-800\", _ctx.error ? 'input-error' : ''])\n }, _toDisplayString(_ctx.$t('editor.load')), 3))\n : _createCommentVNode(\"\", true),\n (_ctx.loadStatus === 'loading')\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_10, [\n _createVNode(_component_spinner, {\n size: \"24px\",\n color: \"#009cd1\",\n class: \"mx-2 my-auto\"\n })\n ]))\n : _createCommentVNode(\"\", true)\n ]),\n _hoisted_11,\n _createElementVNode(\"div\", _hoisted_12, [\n _createElementVNode(\"h3\", null, _toDisplayString(_ctx.$t('editor.productDetails')), 1),\n _createElementVNode(\"p\", null, _toDisplayString(_ctx.$t('editor.metadata.instructions')), 1)\n ]),\n _createVNode(_component_metadata_content, {\n metadata: _ctx.metadata,\n onMetadataChanged: _ctx.updateMetadata,\n onLogoChanged: _ctx.onFileChange,\n onLogoSourceChanged: _ctx.onLogoSourceInput\n }, null, 8, [\"metadata\", \"onMetadataChanged\", \"onLogoChanged\", \"onLogoSourceChanged\"])\n ]),\n _createElementVNode(\"div\", _hoisted_13, [\n (_ctx.editExisting)\n ? (_openBlock(), _createElementBlock(\"button\", {\n key: 0,\n onClick: _cache[4] || (_cache[4] = ($event: any) => (_ctx.saveMetadata(true))),\n class: \"pl-8\"\n }, _toDisplayString(_ctx.$t('editor.saveChanges')), 1))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"div\", _hoisted_14, [\n _createVNode(_component_router_link, {\n to: { name: 'home' },\n target: \"\"\n }, {\n default: _withCtx(() => [\n _createElementVNode(\"button\", null, _toDisplayString(_ctx.$t('editor.back')), 1)\n ]),\n _: 1\n }),\n _createElementVNode(\"button\", {\n onClick: _cache[5] || (_cache[5] = ($event: any) => (!_ctx.warning ? _ctx.continueToEditor() : _ctx.$vfm.open(`confirm-uuid-overwrite`))),\n class: \"bg-black text-white px-8\"\n }, _toDisplayString(_ctx.$t('editor.next')), 1),\n _createVNode(_component_confirmation_modal, {\n name: `confirm-uuid-overwrite`,\n message: _ctx.$t(`Are you sure you want to overwrite product '${_ctx.uuid}'?`),\n onOk: _cache[6] || (_cache[6] = ($event: any) => (_ctx.continueToEditor()))\n }, null, 8, [\"message\"])\n ])\n ])\n ], 64))\n : _createCommentVNode(\"\", true),\n (_ctx.loadEditor && _ctx.loadStatus === 'loaded')\n ? (_openBlock(), _createBlock(_component_editor, {\n key: 1,\n configs: _ctx.configs,\n configFileStructure: _ctx.configFileStructure,\n sourceCounts: _ctx.sourceCounts,\n metadata: _ctx.metadata,\n slides: _ctx.slides,\n configLang: _ctx.configLang,\n saving: _ctx.saving,\n unsavedChanges: _ctx.unsavedChanges,\n onSaveChanges: _ctx.generateConfig,\n onSaveStatus: _ctx.updateSaveStatus,\n onRefreshConfig: _ctx.refreshConfig,\n ref: \"mainEditor\"\n }, {\n langModal: _withCtx((slotProps) => [\n _createElementVNode(\"button\", {\n onClick: _withModifiers(($event: any) => (slotProps.unsavedChanges ? _ctx.$vfm.open(`change-lang`) : _ctx.swapLang()), [\"stop\"])\n }, _toDisplayString(_ctx.configLang === 'en' ? _ctx.$t('editor.frenchConfig') : _ctx.$t('editor.englishConfig')), 9, _hoisted_15),\n _createVNode(_component_confirmation_modal, {\n name: `change-lang`,\n message: _ctx.$t('editor.changeLang.modal'),\n onOk: _cache[7] || (_cache[7] = ($event: any) => (_ctx.swapLang()))\n }, null, 8, [\"message\"])\n ]),\n metadataModal: _withCtx(() => [\n _createVNode(_component_vue_final_modal, {\n modalId: \"metadata-edit-modal\",\n \"content-class\": \"flex flex-col max-h-full overflow-y-auto max-w-xl mx-4 p-4 bg-white border rounded-lg space-y-2\",\n class: \"flex justify-center items-center\"\n }, {\n default: _withCtx(() => [\n _createElementVNode(\"h2\", _hoisted_16, _toDisplayString(_ctx.$t('editor.editMetadata')), 1),\n _createVNode(_component_metadata_content, {\n metadata: _ctx.metadata,\n onMetadataChanged: _ctx.updateMetadata,\n onLogoChanged: _ctx.onFileChange,\n onLogoSourceChanged: _ctx.onLogoSourceInput\n }, null, 8, [\"metadata\", \"onMetadataChanged\", \"onLogoChanged\", \"onLogoSourceChanged\"]),\n _createElementVNode(\"div\", _hoisted_17, [\n _createElementVNode(\"button\", {\n class: \"bg-black text-white hover:bg-gray-800\",\n onClick: _cache[8] || (_cache[8] = ($event: any) => (_ctx.saveMetadata(false)))\n }, \" Done \")\n ])\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"configs\", \"configFileStructure\", \"sourceCounts\", \"metadata\", \"slides\", \"configLang\", \"saving\", \"unsavedChanges\", \"onSaveChanges\", \"onSaveStatus\", \"onRefreshConfig\"]))\n : _createCommentVNode(\"\", true)\n ]))\n}","import { createElementVNode as _createElementVNode, vModelText as _vModelText, withDirectives as _withDirectives, toDisplayString as _toDisplayString, withModifiers as _withModifiers, vModelCheckbox as _vModelCheckbox, openBlock as _openBlock, createElementBlock as _createElementBlock, normalizeClass as _normalizeClass, createCommentVNode as _createCommentVNode, renderList as _renderList, Fragment as _Fragment, resolveComponent as _resolveComponent, createBlock as _createBlock, resolveDynamicComponent as _resolveDynamicComponent, createVNode as _createVNode, createStaticVNode as _createStaticVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-4c97a990\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"sticky top-20 h-auto self-start flex-grow m-5\" }\nconst _hoisted_2 = { key: 0 }\nconst _hoisted_3 = { class: \"flex\" }\nconst _hoisted_4 = { class: \"flex flex-col\" }\nconst _hoisted_5 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"label\", null, \"Slide title:\", -1))\nconst _hoisted_6 = { class: \"flex\" }\nconst _hoisted_7 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", { class: \"ml-auto\" }, null, -1))\nconst _hoisted_8 = [\"disabled\"]\nconst _hoisted_9 = [\"disabled\"]\nconst _hoisted_10 = { class: \"flex mt-3\" }\nconst _hoisted_11 = { class: \"mx-2 font-bold\" }\nconst _hoisted_12 = [\"disabled\"]\nconst _hoisted_13 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"br\", null, null, -1))\nconst _hoisted_14 = {\n key: 0,\n class: \"flex border-b border-black\"\n}\nconst _hoisted_15 = /*#__PURE__*/_createStaticVNode(\"\", 2)\nconst _hoisted_17 = { class: \"align-middle inline-block pl-1\" }\nconst _hoisted_18 = /*#__PURE__*/_createStaticVNode(\"\", 2)\nconst _hoisted_20 = { class: \"align-middle inline-block pl-1\" }\nconst _hoisted_21 = { class: \"align-middle inline-block pl-1\" }\nconst _hoisted_22 = {\n key: 1,\n class: \"border-b border-black\"\n}\nconst _hoisted_23 = /*#__PURE__*/_createStaticVNode(\"\", 2)\nconst _hoisted_25 = { class: \"align-middle inline-block pl-1\" }\nconst _hoisted_26 = { class: \"align-middle inline-block pl-1\" }\nconst _hoisted_27 = { class: \"flex mt-4\" }\nconst _hoisted_28 = { class: \"font-bold text-xl\" }\nconst _hoisted_29 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", { class: \"ml-auto flex-grow\" }, null, -1))\nconst _hoisted_30 = {\n key: 0,\n class: \"flex flex-col mr-8\"\n}\nconst _hoisted_31 = { class: \"text-left text-lg\" }\nconst _hoisted_32 = [\"value\"]\nconst _hoisted_33 = [\"value\"]\nconst _hoisted_34 = {\n key: 1,\n class: \"flex h-full mt-4 justify-center text-gray-600 text-xl\"\n}\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_custom_editor = _resolveComponent(\"custom-editor\")!\n const _component_confirmation_modal = _resolveComponent(\"confirmation-modal\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (!!_ctx.currentSlide)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_2, [\n _createElementVNode(\"div\", _hoisted_3, [\n _createElementVNode(\"div\", _hoisted_4, [\n _hoisted_5,\n _createElementVNode(\"div\", _hoisted_6, [\n _withDirectives(_createElementVNode(\"input\", {\n type: \"text\",\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((_ctx.currentSlide.title) = $event)),\n placeholder: \"Add a title\",\n class: \"w-2/3\"\n }, null, 512), [\n [_vModelText, _ctx.currentSlide.title]\n ]),\n _hoisted_7,\n _createElementVNode(\"button\", {\n onClick: _cache[1] || (_cache[1] = _withModifiers(($event: any) => (_ctx.selectSlide(_ctx.slideIndex - 1)), [\"stop\"])),\n disabled: _ctx.slideIndex === 0,\n class: \"border border-black\"\n }, _toDisplayString(_ctx.$t('editor.slides.previousSlide')), 9, _hoisted_8),\n _createElementVNode(\"button\", {\n onClick: _cache[2] || (_cache[2] = _withModifiers(($event: any) => (_ctx.selectSlide(_ctx.slideIndex + 1)), [\"stop\"])),\n disabled: _ctx.isLast,\n class: \"border border-black\"\n }, _toDisplayString(_ctx.$t('editor.slides.nextSlide')), 9, _hoisted_9)\n ]),\n _createElementVNode(\"div\", _hoisted_10, [\n _createElementVNode(\"span\", _hoisted_11, _toDisplayString(_ctx.$t('editor.slides.makeFull')), 1),\n _withDirectives(_createElementVNode(\"input\", {\n type: \"checkbox\",\n class: \"rounded-none cursor-pointer w-4 h-4\",\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = ($event: any) => ((_ctx.rightOnly) = $event)),\n disabled: _ctx.rightOnly && _ctx.determineEditorType(_ctx.currentSlide.panel[_ctx.panelIndex]) === 'dynamic',\n onChange: _cache[4] || (_cache[4] = _withModifiers(($event: any) => (_ctx.$vfm.open(`right-only-${_ctx.slideIndex}`)), [\"stop\"]))\n }, null, 40, _hoisted_12), [\n [_vModelCheckbox, _ctx.rightOnly]\n ])\n ])\n ])\n ]),\n _hoisted_13,\n (_ctx.currentSlide.panel.length === 2)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_14, [\n _createElementVNode(\"button\", {\n onClick: _cache[5] || (_cache[5] = \n () => {\n _ctx.panelIndex = 0;\n _ctx.advancedEditorView = false;\n _ctx.saveChanges();\n }\n ),\n class: _normalizeClass([\"border-t border-l border-r\", _ctx.panelIndex == 0 && !_ctx.advancedEditorView ? 'border-black' : 'border-white'])\n }, [\n _hoisted_15,\n _createElementVNode(\"span\", _hoisted_17, _toDisplayString(_ctx.$t('editor.slides.leftPanel')), 1)\n ], 2),\n _createElementVNode(\"button\", {\n onClick: _cache[6] || (_cache[6] = \n () => {\n _ctx.panelIndex = 1;\n _ctx.advancedEditorView = false;\n _ctx.saveChanges();\n }\n ),\n class: _normalizeClass([\"border-t border-l border-r\", _ctx.panelIndex == 1 && !_ctx.advancedEditorView ? 'border-black' : 'border-white'])\n }, [\n _hoisted_18,\n _createElementVNode(\"span\", _hoisted_20, _toDisplayString(_ctx.$t('editor.slides.rightPanel')), 1)\n ], 2),\n _createElementVNode(\"button\", {\n onClick: _cache[7] || (_cache[7] = \n () => {\n _ctx.advancedEditorView = true;\n _ctx.saveChanges();\n }\n ),\n class: _normalizeClass([\"border-t border-l border-r\", _ctx.advancedEditorView ? 'border-black' : 'border-white'])\n }, [\n _createElementVNode(\"span\", _hoisted_21, _toDisplayString(_ctx.$t('editor.slides.advanced')), 1)\n ], 2)\n ]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_22, [\n _createElementVNode(\"button\", {\n onClick: _cache[8] || (_cache[8] = \n () => {\n _ctx.advancedEditorView = false;\n _ctx.saveChanges();\n }\n ),\n class: _normalizeClass([\"border-t border-l border-r\", !_ctx.advancedEditorView ? 'border-black' : 'border-white'])\n }, [\n _hoisted_23,\n _createElementVNode(\"span\", _hoisted_25, _toDisplayString(_ctx.$t('editor.slides.fullscreenPanel')), 1)\n ], 2),\n _createElementVNode(\"button\", {\n onClick: _cache[9] || (_cache[9] = \n () => {\n _ctx.advancedEditorView = true;\n _ctx.saveChanges();\n }\n ),\n class: _normalizeClass([\"border-t border-l border-r\", _ctx.advancedEditorView ? 'border-black' : 'border-white'])\n }, [\n _createElementVNode(\"span\", _hoisted_26, _toDisplayString(_ctx.$t('editor.slides.advanced')), 1)\n ], 2)\n ])),\n _createElementVNode(\"div\", null, [\n _createElementVNode(\"div\", _hoisted_27, [\n _createElementVNode(\"span\", _hoisted_28, _toDisplayString(_ctx.$t('editor.slides.content')) + \":\", 1),\n _hoisted_29,\n ((_ctx.panelIndex === 1 && !_ctx.advancedEditorView) || _ctx.rightOnly)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_30, [\n _createElementVNode(\"label\", _hoisted_31, _toDisplayString(_ctx.$t('editor.slides.contentType')) + \":\", 1),\n _createElementVNode(\"select\", {\n ref: \"typeSelector\",\n onInput: _cache[10] || (_cache[10] = ($event: any) => {\n _ctx.$vfm.open(`change-slide-${_ctx.slideIndex}`);\n _ctx.newType = ($event.target as HTMLInputElement).value;\n }),\n value: _ctx.determineEditorType(_ctx.currentSlide.panel[_ctx.panelIndex])\n }, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(Object.keys(_ctx.editors).filter((editor) => editor !== 'loading'), (thing) => {\n return (_openBlock(), _createElementBlock(\"option\", {\n key: thing,\n value: thing\n }, _toDisplayString(thing), 9, _hoisted_33))\n }), 128))\n ], 40, _hoisted_32)\n ]))\n : _createCommentVNode(\"\", true)\n ]),\n (_ctx.advancedEditorView)\n ? (_openBlock(), _createBlock(_component_custom_editor, {\n key: 0,\n ref: \"editor\",\n config: _ctx.currentSlide,\n lang: _ctx.lang,\n slideIndex: _ctx.slideIndex,\n onSlideEdit: _cache[11] || (_cache[11] = ($event: any) => (_ctx.$emit('slide-edit'))),\n onConfigEdited: _cache[12] || (_cache[12] = (slideConfig, save = false) => _ctx.$emit('custom-slide-updated', slideConfig, save))\n }, null, 8, [\"config\", \"lang\", \"slideIndex\"]))\n : (_openBlock(), _createBlock(_resolveDynamicComponent(_ctx.editors[_ctx.determineEditorType(_ctx.currentSlide.panel[_ctx.panelIndex])]), {\n ref: \"editor\",\n key: _ctx.panelIndex + _ctx.determineEditorType(_ctx.currentSlide.panel[_ctx.panelIndex]),\n panel: _ctx.currentSlide.panel[_ctx.panelIndex],\n configFileStructure: _ctx.configFileStructure,\n lang: _ctx.lang,\n uid: _ctx.uid,\n sourceCounts: _ctx.sourceCounts,\n onSlideEdit: _cache[13] || (_cache[13] = ($event: any) => (_ctx.$emit('slide-edit')))\n }, null, 40, [\"panel\", \"configFileStructure\", \"lang\", \"uid\", \"sourceCounts\"]))\n ])\n ]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_34, [\n _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('editor.slides.select')), 1)\n ])),\n _createVNode(_component_confirmation_modal, {\n name: `change-slide-${_ctx.slideIndex}`,\n message: _ctx.$t('editor.slides.changeSlide.confirm', { title: _ctx.currentSlide.title }),\n onOk: _cache[14] || (_cache[14] = ($event: any) => (_ctx.changePanelType(_ctx.determineEditorType(_ctx.currentSlide.panel[_ctx.panelIndex]), _ctx.newType))),\n onCancel: _ctx.cancelTypeChange\n }, null, 8, [\"name\", \"message\", \"onCancel\"]),\n _createVNode(_component_confirmation_modal, {\n name: `right-only-${_ctx.slideIndex}`,\n message: _ctx.$t('editor.slides.changeSlide.confirm', { title: _ctx.currentSlide.title }),\n onOk: _cache[15] || (_cache[15] = ($event: any) => (_ctx.toggleRightOnly())),\n onCancel: _cache[16] || (_cache[16] = ($event: any) => (_ctx.rightOnly = !_ctx.rightOnly))\n }, null, 8, [\"name\", \"message\"])\n ]))\n}","import JSZip from 'jszip';\n\nexport interface StoryRampConfig {\n title: string;\n lang: string;\n introSlide: Intro;\n slides: Slide[];\n contextLink: string;\n contextLabel: string;\n tocOrientation: string;\n dateModified: string;\n}\n\nexport interface ConfigFileStructure {\n uuid: string;\n zip: JSZip;\n configs: { [key: string]: StoryRampConfig };\n assets: {\n [key: string]: JSZip;\n };\n charts: {\n [key: string]: JSZip;\n };\n rampConfig: {\n [key: string]: JSZip;\n };\n}\n\nexport interface SourceCounts {\n [key: string]: number;\n}\n\nexport interface MetadataContent {\n title: string;\n introTitle: string;\n introSubtitle: string;\n logoPreview: string;\n logoName: string;\n logoAltText: string;\n contextLink: string;\n contextLabel: string;\n tocOrientation: string;\n dateModified: string;\n}\n\n// unofficial interface: add properties as needed (just to make TS warnings disappear)\nexport interface Highchart {\n toString(): string;\n}\n\nexport interface Validator {\n addSchema(): void;\n validate(json: string, schema: string): any;\n}\n\nexport interface DQVOptions {\n title: string;\n subtitle: string;\n xAxisLabel: string;\n yAxisLabel: string;\n width?: number;\n height?: number;\n export: boolean;\n colours?: string[];\n credits: boolean;\n type: string;\n}\n\nexport interface PieSeriesData {\n name: string;\n data: PieDataRow[];\n}\n\nexport interface PieDataRow {\n name: string;\n y?: number;\n}\n\nexport interface LineSeriesData {\n name: string;\n data: number[];\n}\n\nexport interface DQVChartConfig {\n chart: {\n type: string;\n };\n title: {\n text: string;\n };\n credits?: {\n enabled: boolean;\n };\n subtitle?: {\n text: string;\n };\n yAxis?: {\n title: {\n text: string;\n };\n };\n xAxis?: {\n title: {\n text: string;\n };\n categories: [];\n };\n data?: {\n csvURL: string;\n enablePolling: boolean;\n csv?: string;\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n plotOptions?: any;\n exporting?: {\n buttons: {\n contextButton: {\n menuItems: string[];\n };\n };\n enabled: boolean;\n };\n series?: PieSeriesData | LineSeriesData[];\n}\n\nexport interface Intro {\n logo: {\n src: string;\n altText?: string;\n };\n title: string;\n subtitle: string;\n blurb?: string;\n}\n\nexport interface Slide {\n title: string;\n // tuple definition to restrict array size\n // panel: [BasePanel, BasePanel | undefined];\n panel: BasePanel[];\n}\n\nexport enum PanelType {\n Text = 'text',\n Image = 'image',\n Map = 'map',\n Chart = 'chart',\n Video = 'video',\n Audio = 'audio',\n Slideshow = 'slideshow',\n Dynamic = 'dynamic',\n Loading = 'loading'\n}\n\nexport interface BasePanel {\n type: string;\n width?: number;\n}\n\nexport interface TextPanel extends BasePanel {\n type: PanelType.Text;\n title: string;\n titleTag?: string;\n content: string; // in md format\n}\n\nexport interface MapPanel extends BasePanel {\n type: PanelType.Map;\n config: string;\n fullscreen?: boolean;\n timeSlider?: TimeSliderConfig;\n title: string;\n scrollguard: boolean;\n}\nexport interface TimeSliderConfig {\n range: number[];\n start: number[];\n attribute: string;\n layers?: string[];\n}\n\nexport interface DynamicPanel extends BasePanel {\n type: PanelType.Dynamic;\n title: string;\n titleTag?: string;\n content: string;\n children: DynamicChildItem[];\n}\n\nexport interface DynamicChildItem {\n id: string;\n panel: BasePanel;\n}\n\nexport interface ImagePanel extends BasePanel {\n type: PanelType.Image;\n src: string;\n width?: number;\n height?: number;\n fullscreen?: boolean;\n altText?: string;\n caption?: string;\n}\n\nexport interface VideoPanel extends BasePanel {\n type: PanelType.Video;\n title: string;\n width?: number;\n height?: number;\n src: string;\n videoType: string;\n caption?: string;\n transcript?: string;\n}\n\nexport interface AudioPanel extends BasePanel {\n type: PanelType.Audio;\n src: string;\n caption?: string;\n}\n\nexport interface SlideshowPanel extends BasePanel {\n type: PanelType.Slideshow;\n items: Array;\n loop?: boolean;\n caption?: string;\n userCreated?: boolean; // used to determine whether this was automatically converted to slideshow or not\n}\n\nexport interface ChartPanel extends BasePanel {\n type: PanelType.Chart;\n src: string;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n config?: any;\n name?: string;\n options?: DQVOptions;\n}\n\nexport interface ChartConfig {\n src: string;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n config?: any;\n name?: string;\n options?: DQVOptions;\n}\n\nexport interface ImageFile {\n id: string;\n src: string;\n altText: string;\n caption?: string;\n width?: number;\n height?: number;\n}\n\nexport interface VideoFile {\n id: string;\n title: string;\n src: string;\n videoType: 'local' | 'external' | 'YouTube';\n caption?: string;\n transcript?: string;\n width?: number;\n height?: number;\n}\n\nexport interface DefaultConfigs {\n text: TextPanel;\n slideshow: SlideshowPanel;\n chart: ChartPanel;\n dynamic: DynamicPanel;\n map: MapPanel;\n video: VideoPanel;\n image: ImagePanel;\n}\n","import { toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, resolveComponent as _resolveComponent, createBlock as _createBlock, withCtx as _withCtx, createVNode as _createVNode, vShow as _vShow, withDirectives as _withDirectives, renderList as _renderList, Fragment as _Fragment } from \"vue\"\n\nconst _hoisted_1 = { class: \"block\" }\nconst _hoisted_2 = { class: \"flex items-center\" }\nconst _hoisted_3 = { class: \"font-bold px-4\" }\nconst _hoisted_4 = [\"disabled\"]\nconst _hoisted_5 = { class: \"flex items-center\" }\nconst _hoisted_6 = /*#__PURE__*/_createElementVNode(\"svg\", {\n height: \"18px\",\n width: \"18px\",\n viewBox: \"0 0 23 21\",\n xmlns: \"http://www.w3.org/2000/svg\"\n}, [\n /*#__PURE__*/_createElementVNode(\"path\", { d: \"M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z\" })\n], -1)\nconst _hoisted_7 = { class: \"px-2\" }\nconst _hoisted_8 = /*#__PURE__*/_createElementVNode(\"hr\", { class: \"border-solid border-t-2 border-gray-300 my-2\" }, null, -1)\nconst _hoisted_9 = {\n key: 0,\n class: \"m-4\"\n}\nconst _hoisted_10 = { class: \"italic text-gray-400\" }\nconst _hoisted_11 = { class: \"flex flex-wrap list-none\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_ChartPreview = _resolveComponent(\"ChartPreview\")!\n const _component_draggable = _resolveComponent(\"draggable\")!\n const _component_confirmation_modal = _resolveComponent(\"confirmation-modal\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"span\", _hoisted_3, _toDisplayString(_ctx.$t('editor.chart.label.info', {\n num: _ctx.chartConfigs.length\n })), 1),\n _createElementVNode(\"button\", {\n class: \"chart-btn bg-gray-100 cursor-pointer hover:bg-gray-200\",\n id: \"modal-btn\",\n onClick: _cache[0] || (_cache[0] = ($event: any) => (_ctx.clearEditor())),\n disabled: !_ctx.allowMany && _ctx.chartConfigs.length > 0\n }, [\n _createElementVNode(\"div\", _hoisted_5, [\n _hoisted_6,\n _createElementVNode(\"span\", _hoisted_7, _toDisplayString(_ctx.$t('editor.chart.label.create')), 1)\n ])\n ], 8, _hoisted_4)\n ]),\n _hoisted_8,\n (_ctx.chartConfigs.length === 0)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_9, [\n _createElementVNode(\"span\", _hoisted_10, _toDisplayString(_ctx.$t('editor.chart.label.empty')), 1)\n ]))\n : _createCommentVNode(\"\", true),\n _withDirectives(_createElementVNode(\"ul\", _hoisted_11, [\n _createVNode(_component_draggable, {\n modelValue: _ctx.chartConfigs,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = ($event: any) => ((_ctx.chartConfigs) = $event)),\n handle: \".handle\",\n onUpdate: _ctx.onChartsEdited,\n class: \"flex flex-wrap list-none\",\n \"item-key\": \"name\"\n }, {\n item: _withCtx(({ element, index }) => [\n (_openBlock(), _createBlock(_component_ChartPreview, {\n key: `${element.name}-${index}`,\n chart: element,\n configFileStructure: _ctx.configFileStructure,\n sourceCounts: _ctx.sourceCounts,\n lang: _ctx.lang,\n onEdit: _ctx.editChart,\n onDelete: ($event: any) => (_ctx.$vfm.open(`${element.name}-${index}`))\n }, null, 8, [\"chart\", \"configFileStructure\", \"sourceCounts\", \"lang\", \"onEdit\", \"onDelete\"]))\n ]),\n _: 1\n }, 8, [\"modelValue\", \"onUpdate\"])\n ], 512), [\n [_vShow, _ctx.chartConfigs.length]\n ]),\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.chartConfigs, (chart, idx) => {\n return (_openBlock(), _createBlock(_component_confirmation_modal, {\n key: `${chart.name}-${idx}`,\n name: `${chart.name}-${idx}`,\n message: _ctx.$t('editor.chart.delete.confirm', { name: chart.name }),\n onOk: ($event: any) => (_ctx.deleteChart(chart))\n }, null, 8, [\"name\", \"message\", \"onOk\"]))\n }), 128))\n ]))\n}","import { createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, resolveDirective as _resolveDirective, withDirectives as _withDirectives, resolveComponent as _resolveComponent, createBlock as _createBlock, createCommentVNode as _createCommentVNode, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-1df36a82\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"chart-item items-center mt-8 mx-5 overflow-hidden\" }\nconst _hoisted_2 = { class: \"relative border-solid border-2 items-center justify-center text-center w-full\" }\nconst _hoisted_3 = [\"content\"]\nconst _hoisted_4 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"svg\", {\n class: \"absolute transform -translate-x-1/2 -translate-y-1/2\",\n height: \"22px\",\n width: \"22px\",\n viewBox: \"0 0 352 512\",\n xmlns: \"http://www.w3.org/2000/svg\"\n}, [\n /*#__PURE__*/_createElementVNode(\"path\", { d: \"M242.72 256l100.07-100.07c12.28-12.28 12.28-32.19 0-44.48l-22.24-22.24c-12.28-12.28-32.19-12.28-44.48 0L176 189.28 75.93 89.21c-12.28-12.28-32.19-12.28-44.48 0L9.21 111.45c-12.28 12.28-12.28 32.19 0 44.48L109.28 256 9.21 356.07c-12.28 12.28-12.28 32.19 0 44.48l22.24 22.24c12.28 12.28 32.2 12.28 44.48 0L176 322.72l100.07 100.07c12.28 12.28 32.2 12.28 44.48 0l22.24-22.24c12.28-12.28 12.28-32.19 0-44.48L242.72 256z\" })\n], -1))\nconst _hoisted_5 = [\n _hoisted_4\n]\nconst _hoisted_6 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"button\", { class: \"bg-white absolute h-6 w-6 leading-5 rounded-full bottom-2 -right-1 p-0 z-10 handle\" }, [\n /*#__PURE__*/_createElementVNode(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n fill: \"#000000\",\n width: \"22px\",\n height: \"22px\",\n viewBox: \"0 0 24 24\"\n }, [\n /*#__PURE__*/_createElementVNode(\"path\", {\n \"fill-rule\": \"evenodd\",\n d: \"M8,18 C9.1045695,18 10,18.8954305 10,20 C10,21.1045695 9.1045695,22 8,22 C6.8954305,22 6,21.1045695 6,20 C6,18.8954305 6.8954305,18 8,18 Z M16,18 C17.1045695,18 18,18.8954305 18,20 C18,21.1045695 17.1045695,22 16,22 C14.8954305,22 14,21.1045695 14,20 C14,18.8954305 14.8954305,18 16,18 Z M8,10 C9.1045695,10 10,10.8954305 10,12 C10,13.1045695 9.1045695,14 8,14 C6.8954305,14 6,13.1045695 6,12 C6,10.8954305 6.8954305,10 8,10 Z M16,10 C17.1045695,10 18,10.8954305 18,12 C18,13.1045695 17.1045695,14 16,14 C14.8954305,14 14,13.1045695 14,12 C14,10.8954305 14.8954305,10 16,10 Z M8,2 C9.1045695,2 10,2.8954305 10,4 C10,5.1045695 9.1045695,6 8,6 C6.8954305,6 6,5.1045695 6,4 C6,2.8954305 6.8954305,2 8,2 Z M16,2 C17.1045695,2 18,2.8954305 18,4 C18,5.1045695 17.1045695,6 16,6 C14.8954305,6 14,5.1045695 14,4 C14,2.8954305 14.8954305,2 16,2 Z\"\n })\n ])\n], -1))\nconst _hoisted_7 = { class: \"flex mt-4 items-center\" }\nconst _hoisted_8 = { class: \"name-label font-bold flex-2\" }\nconst _hoisted_9 = { class: \"font-normal\" }\nconst _hoisted_10 = [\"id\"]\nconst _hoisted_11 = { class: \"flex items-center\" }\nconst _hoisted_12 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"svg\", {\n height: \"18px\",\n width: \"18px\",\n viewBox: \"0 0 23 21\",\n xmlns: \"http://www.w3.org/2000/svg\"\n}, [\n /*#__PURE__*/_createElementVNode(\"path\", { d: \"M 18 2 L 15.585938 4.4140625 L 19.585938 8.4140625 L 22 6 L 18 2 z M 14.076172 5.9238281 L 3 17 L 3 21 L 7 21 L 18.076172 9.9238281 L 14.076172 5.9238281 z\" })\n], -1))\nconst _hoisted_13 = { class: \"px-2\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_storylines_chart = _resolveComponent(\"storylines-chart\")!\n const _directive_tippy = _resolveDirective(\"tippy\")!\n\n return (_openBlock(), _createElementBlock(\"li\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _withDirectives((_openBlock(), _createElementBlock(\"button\", {\n class: \"bg-white absolute h-6 w-6 leading-5 rounded-full top-2 left-0 p-0 z-10 cursor-pointer\",\n onClick: _cache[0] || (_cache[0] = () => _ctx.$emit('delete', _ctx.chart)),\n content: _ctx.$t('editor.chart.delete')\n }, _hoisted_5, 8, _hoisted_3)), [\n [_directive_tippy, { placement: 'top', hideOnClick: false, animateFill: true }]\n ]),\n _hoisted_6,\n (!_ctx.loading)\n ? (_openBlock(), _createBlock(_component_storylines_chart, {\n class: \"w-full h-full\",\n config: _ctx.chartConfig,\n key: _ctx.chartIdx,\n configFileStructure: _ctx.configFileStructure,\n onLoaded: _ctx.loadChart\n }, null, 8, [\"config\", \"configFileStructure\", \"onLoaded\"]))\n : _createCommentVNode(\"\", true)\n ]),\n _createElementVNode(\"div\", _hoisted_7, [\n _createElementVNode(\"label\", _hoisted_8, [\n _createTextVNode(_toDisplayString(_ctx.$t('editor.chart.label.name')) + \": \", 1),\n _createElementVNode(\"span\", _hoisted_9, _toDisplayString(_ctx.chartName), 1)\n ]),\n _createElementVNode(\"button\", {\n class: \"chart-btn bg-gray-100 cursor-pointer hover:bg-gray-200\",\n id: `edit-${_ctx.chart.name}-btn`\n }, [\n _createElementVNode(\"div\", _hoisted_11, [\n _hoisted_12,\n _createElementVNode(\"span\", _hoisted_13, _toDisplayString(_ctx.$t('editor.chart.label.edit')), 1)\n ])\n ], 8, _hoisted_10)\n ])\n ]))\n}","\nimport { Prop, Vue } from 'vue-property-decorator';\nimport {\n ChartConfig,\n ConfigFileStructure,\n DQVChartConfig,\n LineSeriesData,\n PieDataRow,\n PieSeriesData,\n SourceCounts\n} from '@/definitions';\n\nexport default class ChartPreviewV extends Vue {\n @Prop() chart!: ChartConfig;\n @Prop() configFileStructure!: ConfigFileStructure;\n @Prop() sourceCounts!: SourceCounts;\n @Prop() lang!: string;\n\n loading = true;\n chartIdx = 0;\n chartConfig = {};\n chartName = '';\n modalEditor: typeof highed.ModalEditor = undefined;\n\n mounted(): void {\n this.chartConfig = this.chart;\n this.chartName = this.chart.name || '';\n this.loading = false;\n }\n\n /**\n * Save initial set of chart options used to create chart.\n */\n loadChart(chartOptions: DQVChartConfig): void {\n // initialize higcharts editor and link to edit summoner node\n if (this.modalEditor) {\n return;\n }\n\n this.modalEditor = highed.ModalEditor(\n `edit-${this.chartName}-btn`,\n {\n allowDone: true,\n features: 'import templates customize done',\n importer: {\n options: 'plugins csv json'\n },\n defaultChartOptions: chartOptions\n },\n (newChart: string) => {\n const chart = JSON.parse(newChart);\n const newName = `${this.configFileStructure.uuid}/charts/${this.lang}/${chart.title.text}.json`;\n\n // Check to see if a chart already exists with the provided name. If so, alert the user and re-prompt.\n if (this.sourceCounts[newName] > 0 && chart.title.text != this.chart.name) {\n alert(\n this.$t('editor.chart.label.nameExists', {\n name: chart.title.text\n })\n );\n\n // Re-open the editor the the issue can be fixed.\n setTimeout(() => this.modalEditor.show(), 100);\n } else {\n const chartConfig = {\n name: chart.title.text,\n config: chart,\n src: ''\n };\n\n this.$emit('edit', { oldChart: this.chart, newChart: chartConfig });\n this.chartConfig = chartConfig;\n this.chartName = chartConfig.name;\n this.chartIdx += 1;\n }\n }\n );\n\n // restore CSV data if exists\n if (chartOptions.data?.csv !== undefined) {\n const csvData = chartOptions.data.csv;\n this.modalEditor.editor.dataTable.loadCSV({ csv: csvData });\n } else {\n this.convertSeriesToCSV(chartOptions);\n }\n\n this.modalEditor.editor.chart.options.setAll(chartOptions);\n }\n\n /*\n * Convert series data into formatted csvData string for charts created without using editor\n * so that the datatable when re-opening modal is properly populated.\n */\n convertSeriesToCSV(chartOptions: DQVChartConfig): void {\n if (chartOptions.chart?.type === 'pie') {\n const seriesData = (chartOptions?.series as PieSeriesData).data;\n if (seriesData) {\n // pie charts only have one set of series data with the name;y format\n const csvData = [\n // first row is attempt to extract data labels if exists\n `${(chartOptions?.series as PieSeriesData).name};${chartOptions?.yAxis?.title.text}`,\n ...seriesData.map((row: PieDataRow) => `${row.name};${row.y}`)\n ];\n\n // load formatted CSV string into datatable\n this.modalEditor.editor.dataTable.loadCSV({ csv: csvData.join('\\n') });\n }\n } else {\n if (chartOptions?.series && (chartOptions?.series as LineSeriesData[]).length) {\n // other chart types may have multiple sets of series data along with x-axis categories\n // append series data name to its data set\n let seriesData = (chartOptions?.series as LineSeriesData[]).map((series: LineSeriesData) => [\n series.name,\n ...series.data\n ]);\n if (chartOptions.xAxis !== undefined) {\n // add xAxis categories to series data if it exists\n const catoData = [chartOptions.xAxis?.title?.text].concat(chartOptions.xAxis?.categories);\n seriesData.unshift(catoData);\n }\n\n // join series data together\n let csvData = seriesData[0].map((_, idx) => seriesData.map((data) => data[idx]).join(';'));\n\n // load formatted CSV string into datatable\n this.modalEditor.editor.dataTable.loadCSV({ csv: csvData.join('\\n') });\n }\n }\n }\n}\n","import { render } from \"./chart-preview.vue?vue&type=template&id=1df36a82&scoped=true&ts=true\"\nimport script from \"./chart-preview.vue?vue&type=script&lang=ts\"\nexport * from \"./chart-preview.vue?vue&type=script&lang=ts\"\n\nimport \"./chart-preview.vue?vue&type=style&index=0&id=1df36a82&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/storylines-editor/storylines-editor/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-1df36a82\"]])\n\nexport default __exports__","import { toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, withModifiers as _withModifiers, resolveComponent as _resolveComponent, withCtx as _withCtx, openBlock as _openBlock, createBlock as _createBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-4ed11748\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n slot: \"header\",\n class: \"text-lg font-bold\"\n}\nconst _hoisted_2 = { class: \"w-full flex justify-end\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_vue_final_modal = _resolveComponent(\"vue-final-modal\")!\n\n return (_openBlock(), _createBlock(_component_vue_final_modal, {\n modalId: _ctx.name,\n class: \"flex justify-center items-center\",\n \"content-class\": \"flex flex-col max-w-xl mx-4 p-4 bg-white dark:bg-gray-900 border dark:border-gray-700 rounded-lg space-y-2\"\n }, {\n default: _withCtx(() => [\n _createElementVNode(\"h2\", _hoisted_1, _toDisplayString(_ctx.message), 1),\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"button\", {\n class: \"confirm-button hover:bg-gray-800\",\n onClick: _cache[0] || (_cache[0] = _withModifiers(\n//@ts-ignore\n(...args) => (_ctx.onOk && _ctx.onOk(...args)), [\"stop\"]))\n }, _toDisplayString(_ctx.$t('editor.confirm')), 1),\n _createElementVNode(\"button\", {\n class: \"cancel-button hover:bg-gray-100\",\n onClick: _cache[1] || (_cache[1] = _withModifiers(\n//@ts-ignore\n(...args) => (_ctx.onCancel && _ctx.onCancel(...args)), [\"stop\"]))\n }, _toDisplayString(_ctx.$t('editor.cancel')), 1)\n ])\n ]),\n _: 1\n }, 8, [\"modalId\"]))\n}","\nimport { Options, Prop, Vue } from 'vue-property-decorator';\nimport { VueFinalModal } from 'vue-final-modal';\n\n@Options({\n components: {\n 'vue-final-modal': VueFinalModal\n }\n})\nexport default class MetadataEditorV extends Vue {\n @Prop() message!: string;\n @Prop() name!: string;\n\n onOk(): void {\n this.$emit('ok');\n this.$vfm.close(this.name);\n }\n\n onCancel(): void {\n this.$emit('Cancel');\n this.$vfm.close(this.name);\n }\n}\n","import { render } from \"./confirmation-modal.vue?vue&type=template&id=4ed11748&scoped=true&ts=true\"\nimport script from \"./confirmation-modal.vue?vue&type=script&lang=ts\"\nexport * from \"./confirmation-modal.vue?vue&type=script&lang=ts\"\n\nimport \"./confirmation-modal.vue?vue&type=style&index=0&id=4ed11748&scoped=true&lang=css\"\n\nimport exportComponent from \"/home/runner/work/storylines-editor/storylines-editor/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-4ed11748\"]])\n\nexport default __exports__","\nimport { Options, Prop, Vue } from 'vue-property-decorator';\nimport {\n ChartConfig,\n ChartPanel,\n ConfigFileStructure,\n Highchart,\n PanelType,\n SlideshowPanel,\n SourceCounts\n} from '@/definitions';\nimport ChartPreviewV from '@/components/editor/helpers/chart-preview.vue';\nimport ConfirmationModalV from '@/components/editor/helpers/confirmation-modal.vue';\nimport draggable from 'vuedraggable';\n\n@Options({\n components: {\n ChartPreview: ChartPreviewV,\n 'confirmation-modal': ConfirmationModalV,\n draggable\n }\n})\nexport default class ChartEditorV extends Vue {\n @Prop() panel!: ChartPanel | SlideshowPanel;\n @Prop() configFileStructure!: ConfigFileStructure;\n @Prop() lang!: string;\n @Prop() sourceCounts!: SourceCounts;\n @Prop({ default: true }) allowMany!: boolean;\n\n edited = false;\n\n chartConfigs = [] as Array;\n modalEditor = {} as typeof highed.ModalEditor;\n\n mounted(): void {\n // attach highcharts modal editor to summoner node\n highed.ready(() => {\n this.modalEditor = highed.ModalEditor(\n 'modal-btn',\n {\n allowDone: true,\n features: 'import templates customize done',\n importer: {\n options: 'plugins csv json'\n }\n },\n (chart: Highchart) => {\n this.createNewChart(chart.toString());\n }\n );\n });\n\n // This allows us to access the chart(s) using one consistent variable instead of needing to check panel type.\n const charts =\n this.panel.type === PanelType.Slideshow\n ? (this.panel.items as Array)\n : this.panel.src\n ? [this.panel]\n : [];\n\n // load charts from existing storylines product\n if (charts !== undefined && charts.length) {\n this.chartConfigs = charts.map((chart: ChartPanel) => {\n let chartName = '';\n // extract chart name\n if (chart.options && chart.options.title) {\n chartName = chart.options.title;\n } else {\n const path = chart.src.match(/.*\\/(.*)$/);\n chartName = path ? path[1].replace(/\\.[^/.]+$/, '').replace(/\\./g, ' ') : chart.src;\n }\n return {\n name: chartName,\n ...chart\n };\n });\n }\n }\n\n clearEditor(): void {\n // reset to clear modal editor options\n let chart_options = {\n title: {\n text: `Chart ${this.chartConfigs.length + 1}`\n },\n subtitle: {\n text: ''\n },\n credits: {\n enabled: false\n }\n };\n chart_options =\n this.lang === 'en'\n ? Object.assign({}, chart_options, { lang: { thousandsSep: ',' } })\n : Object.assign({}, chart_options, { lang: { thousandsSep: ' ' } });\n this.modalEditor.editor.chart.options.setAll(chart_options);\n // resets and clears datatable section\n const defaultTableData = `\"Column 1\";\"Column 2\"\\n\" \"\";\" \"`;\n this.modalEditor.editor.dataTable.loadCSV({ csv: defaultTableData });\n }\n\n createNewChart(chartInfo: string): void {\n const chart = JSON.parse(chartInfo);\n const chartSrc = `${this.configFileStructure.uuid}/charts/${this.lang}/${chart.title.text}.json`;\n\n // Check to see if a chart already exists with the provided name. If so, alert the user and re-prompt.\n if (this.sourceCounts[chartSrc] > 0) {\n alert(\n this.$t('editor.chart.label.nameExists', {\n name: chart.title.text\n })\n );\n\n // Re-open the editor the the issue can be fixed.\n setTimeout(() => this.modalEditor.show(), 100);\n } else {\n const chartConfig = {\n name: chart.title.text,\n src: chartSrc\n };\n\n if (this.sourceCounts[chartSrc]) {\n this.sourceCounts[chartSrc] += 1;\n } else {\n this.sourceCounts[chartSrc] = 1;\n }\n\n // Add chart config to ZIP file.\n this.configFileStructure.charts[this.lang].file(`${chart.title.text}.json`, JSON.stringify(chart, null, 4));\n this.chartConfigs.push(chartConfig);\n }\n this.onChartsEdited();\n }\n\n editChart(chartInfo: { oldChart: ChartConfig; newChart: ChartConfig }): void {\n const idx = this.chartConfigs.findIndex((chartFile: ChartConfig) => chartFile.name === chartInfo.oldChart.name);\n if (idx !== -1) {\n // Remove old chart config from ZIP file and add in new one.\n const oldName = `${this.configFileStructure.uuid}/charts/${this.lang}/${chartInfo.oldChart.name}.json`;\n this.sourceCounts[oldName] -= 1;\n if (this.sourceCounts[oldName] === 0) {\n this.configFileStructure.charts[this.lang].remove(`${chartInfo.oldChart.name}.json`);\n }\n\n const newName = `${this.configFileStructure.uuid}/charts/${this.lang}/${chartInfo.newChart.name}.json`;\n if (this.sourceCounts[newName]) {\n this.sourceCounts[newName] += 1;\n } else {\n this.sourceCounts[newName] = 1;\n }\n this.configFileStructure.charts[this.lang].file(\n `${chartInfo.newChart.name}.json`,\n JSON.stringify(chartInfo.newChart.config, null, 4)\n );\n\n chartInfo.newChart.src = `${this.configFileStructure.uuid}/charts/${this.lang}/${chartInfo.newChart.name}.json`;\n this.chartConfigs[idx] = {\n name: chartInfo.newChart.name,\n src: chartInfo.newChart.src\n };\n }\n this.onChartsEdited();\n }\n\n deleteChart(chart: ChartConfig): void {\n const idx = this.chartConfigs.findIndex((chartFile: ChartConfig) => chartFile.name === chart.name);\n if (idx !== -1) {\n // Remove the chart from the config file.\n this.sourceCounts[`${this.configFileStructure.uuid}/charts/${this.lang}/${chart.name}.json`] -= 1;\n if (this.sourceCounts[`${this.configFileStructure.uuid}/charts/${this.lang}/${chart.name}.json`] === 0) {\n this.configFileStructure.charts[this.lang].remove(`${chart.name}.json`);\n }\n this.chartConfigs.splice(idx, 1);\n }\n this.onChartsEdited();\n }\n\n saveChanges(): void {\n if (this.edited) {\n // Delete the existing properties so we can rebuild the object.\n Object.keys(this.panel).forEach((key) => {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n delete this.panel[key];\n });\n\n // Handle case where every image is deleted.\n if (this.chartConfigs.length === 0) {\n this.panel.type = PanelType.Chart;\n (this.panel as ChartPanel).src = '';\n } else if (this.chartConfigs.length === 1) {\n this.panel.type = PanelType.Chart;\n\n // Grab the one chart config from the array.\n const newChart = this.chartConfigs[0];\n\n // Sort of gross, but required to update the panel config as we're not allowed to directly manipulate props.\n Object.keys(newChart).forEach((key) => {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n (this.panel as ChartPanel)[key] = newChart[key];\n });\n } else {\n this.panel.type = PanelType.Slideshow;\n\n // Turn each of the chart configs into a chart panel and add them to the slideshow.\n (this.panel as SlideshowPanel).items = this.chartConfigs.map((chart: ChartConfig) => {\n return {\n ...chart,\n type: PanelType.Chart\n } as ChartPanel;\n });\n }\n }\n\n this.edited = false;\n }\n\n onChartsEdited(): void {\n this.edited = true;\n this.$emit('slide-edit');\n }\n}\n","import { render } from \"./chart-editor.vue?vue&type=template&id=0daaeefc&ts=true\"\nimport script from \"./chart-editor.vue?vue&type=script&lang=ts\"\nexport * from \"./chart-editor.vue?vue&type=script&lang=ts\"\n\nimport \"./chart-editor.vue?vue&type=style&index=0&id=0daaeefc&lang=scss\"\n\nimport exportComponent from \"/home/runner/work/storylines-editor/storylines-editor/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, createVNode as _createVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-5cc9b9fc\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"mt-4\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_json_editor = _resolveComponent(\"json-editor\")!\n const _component_confirmation_modal = _resolveComponent(\"confirmation-modal\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(_component_json_editor, {\n modelValue: _ctx.updatedConfig,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((_ctx.updatedConfig) = $event)),\n lang: _ctx.lang,\n mode: 'text',\n \"show-btns\": true,\n expandedOnStart: true,\n onJsonChange: _cache[1] || (_cache[1] = \n (json) => {\n // library does not 2-way v-model binding so need to set manually\n _ctx.updatedConfig = json;\n _ctx.edited = true;\n _ctx.$emit('slide-edit');\n }\n ),\n onJsonSave: _cache[2] || (_cache[2] = ($event: any) => (_ctx.$vfm.open(`custom-editor-${_ctx.slideIndex}`)))\n }, null, 8, [\"modelValue\", \"lang\"]),\n _createVNode(_component_confirmation_modal, {\n name: `custom-editor-${_ctx.slideIndex}`,\n message: _ctx.$t('editor.customConfig'),\n onOk: _cache[3] || (_cache[3] = ($event: any) => (_ctx.onJsonSave()))\n }, null, 8, [\"name\", \"message\"])\n ]))\n}","\nimport { Options, Prop, Vue } from 'vue-property-decorator';\nimport { Vue3JsonEditor } from 'vue3-json-editor';\nimport { Validator } from '@/definitions';\n\nimport ConfirmationModalV from './confirmation-modal.vue';\n\n@Options({\n components: {\n 'json-editor': Vue3JsonEditor,\n 'confirmation-modal': ConfirmationModalV\n }\n})\nexport default class CustomEditorV extends Vue {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n @Prop() config!: string;\n @Prop() lang!: string;\n @Prop() slideIndex!: number;\n\n schemaUrl = './StorylinesSlideSchema.json';\n updatedConfig = '';\n edited = false;\n\n jsonValidator = require('jsonschema').Validator;\n validator: Validator = new this.jsonValidator();\n storylinesSchema = '';\n\n mounted(): void {\n // add storylines config schema for validation purposes\n fetch(this.schemaUrl).then((schema) => {\n // parse JSON schema\n schema.json().then(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (res: any) => {\n this.storylinesSchema = res;\n },\n (err) => {\n console.error(err);\n }\n );\n });\n this.updatedConfig = this.config;\n }\n\n onJsonSave(): void {\n // TODO: add any missing properties in schema as required (e.g. chart options)\n const checkValidation = this.validator.validate(this.updatedConfig, this.storylinesSchema);\n if (checkValidation.valid) {\n this.$emit('config-edited', this.updatedConfig, true);\n } else {\n // TODO: add FR translation for alert message\n alert('Attempted to save a custom config that violates the Storylines schema.');\n console.error(checkValidation.errors);\n }\n }\n\n saveChanges(): void {\n this.$emit('config-edited', this.updatedConfig);\n this.edited = false;\n }\n}\n","import { render } from \"./custom-editor.vue?vue&type=template&id=5cc9b9fc&scoped=true&ts=true\"\nimport script from \"./custom-editor.vue?vue&type=script&lang=ts\"\nexport * from \"./custom-editor.vue?vue&type=script&lang=ts\"\n\nimport \"./custom-editor.vue?vue&type=style&index=0&id=5cc9b9fc&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/storylines-editor/storylines-editor/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-5cc9b9fc\"]])\n\nexport default __exports__","import { createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, withModifiers as _withModifiers, normalizeClass as _normalizeClass, createCommentVNode as _createCommentVNode, vShow as _vShow, withDirectives as _withDirectives, vModelText as _vModelText, resolveComponent as _resolveComponent, withCtx as _withCtx, createBlock as _createBlock, createVNode as _createVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-39ccfdb7\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"block\" }\nconst _hoisted_2 = { class: \"flex drag-label cursor-pointer\" }\nconst _hoisted_3 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", { class: \"align-middle inline-block pr-4\" }, [\n /*#__PURE__*/_createElementVNode(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"48\",\n height: \"48\",\n viewBox: \"0 0 24 24\"\n }, [\n /*#__PURE__*/_createElementVNode(\"path\", { d: \"M14 9l-2.519 4-2.481-1.96-5 6.96h16l-6-9zm8-5v16h-20v-16h20zm2-2h-24v20h24v-20zm-20 6c0-1.104.896-2 2-2s2 .896 2 2c0 1.105-.896 2-2 2s-2-.895-2-2z\" })\n ])\n], -1))\nconst _hoisted_4 = { class: \"align-middle inline-block\" }\nconst _hoisted_5 = { class: \"text-blue-400 font-bold\" }\nconst _hoisted_6 = [\"multiple\"]\nconst _hoisted_7 = {\n key: 1,\n class: \"flex justify-center\"\n}\nconst _hoisted_8 = { class: \"flex mt-4 items-center w-full text-left\" }\nconst _hoisted_9 = { class: \"text-label\" }\nconst _hoisted_10 = [\"onUpdate:modelValue\"]\nconst _hoisted_11 = { class: \"flex mt-4 items-center w-full text-left\" }\nconst _hoisted_12 = { class: \"text-label\" }\nconst _hoisted_13 = [\"onUpdate:modelValue\"]\nconst _hoisted_14 = { class: \"flex items-center w-full text-left\" }\nconst _hoisted_15 = { class: \"text-label\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_ImagePreview = _resolveComponent(\"ImagePreview\")!\n const _component_draggable = _resolveComponent(\"draggable\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_ctx.allowMany || (!_ctx.allowMany && _ctx.imagePreviews.length === 0))\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n class: _normalizeClass([\"upload-image text-center m-5 p-12 bg-blue-100 border-4 border-dashed border-blue-300\", { dragging: _ctx.isDragging }]),\n onDragover: _cache[1] || (_cache[1] = _withModifiers(() => (_ctx.dragging = true), [\"prevent\"])),\n onDragleave: _cache[2] || (_cache[2] = _withModifiers(() => (_ctx.dragging = false), [\"prevent\"])),\n onDrop: _cache[3] || (_cache[3] = _withModifiers(($event: any) => (_ctx.dropImages($event)), [\"prevent\"]))\n }, [\n _createElementVNode(\"label\", _hoisted_2, [\n _hoisted_3,\n _createElementVNode(\"span\", _hoisted_4, [\n _createElementVNode(\"span\", null, [\n _createElementVNode(\"div\", null, _toDisplayString(_ctx.$t('editor.image.label.drag')), 1),\n _createElementVNode(\"div\", null, [\n _createTextVNode(_toDisplayString(_ctx.$t('editor.label.or')) + \" \", 1),\n _createElementVNode(\"span\", _hoisted_5, _toDisplayString(_ctx.$t('editor.label.browse')), 1),\n _createTextVNode(\" \" + _toDisplayString(_ctx.$t('editor.label.upload')), 1)\n ])\n ]),\n _createElementVNode(\"input\", {\n type: \"file\",\n class: \"cursor-pointer\",\n onChange: _cache[0] || (_cache[0] = \n//@ts-ignore\n(...args) => (_ctx.onFileChange && _ctx.onFileChange(...args))),\n multiple: !!_ctx.allowMany\n }, null, 40, _hoisted_6)\n ])\n ])\n ], 34))\n : _createCommentVNode(\"\", true),\n (_ctx.allowMany || (!_ctx.allowMany && _ctx.imagePreviews.length === 0))\n ? _withDirectives((_openBlock(), _createElementBlock(\"span\", _hoisted_7, [\n _createElementVNode(\"i\", null, _toDisplayString(_ctx.$t('editor.image.reorder')), 1)\n ], 512)), [\n [_vShow, !_ctx.imagePreviewsLoading && _ctx.imagePreviews.length]\n ])\n : _createCommentVNode(\"\", true),\n _withDirectives(_createVNode(_component_draggable, {\n modelValue: _ctx.imagePreviews,\n \"onUpdate:modelValue\": _cache[6] || (_cache[6] = ($event: any) => ((_ctx.imagePreviews) = $event)),\n class: \"flex flex-wrap list-none border my-4\",\n onUpdate: _ctx.onImagesEdited,\n \"item-key\": \"id\"\n }, {\n item: _withCtx(({ element, index }) => [\n (_openBlock(), _createBlock(_component_ImagePreview, {\n key: `${element.id}-${index}`,\n imageFile: element,\n onDelete: _ctx.deleteImage\n }, {\n default: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_8, [\n _createElementVNode(\"label\", _hoisted_9, _toDisplayString(_ctx.$t('editor.image.altTag')) + \":\", 1),\n _withDirectives(_createElementVNode(\"input\", {\n class: \"w-4/5\",\n type: \"text\",\n \"onUpdate:modelValue\": ($event: any) => ((element.altText) = $event),\n onChange: _cache[4] || (_cache[4] = \n//@ts-ignore\n(...args) => (_ctx.onImagesEdited && _ctx.onImagesEdited(...args)))\n }, null, 40, _hoisted_10), [\n [_vModelText, element.altText]\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_11, [\n _createElementVNode(\"label\", _hoisted_12, _toDisplayString(_ctx.$t('editor.image.label.caption')) + \":\", 1),\n _withDirectives(_createElementVNode(\"input\", {\n class: \"w-4/5\",\n type: \"text\",\n \"onUpdate:modelValue\": ($event: any) => ((element.caption) = $event),\n onChange: _cache[5] || (_cache[5] = \n//@ts-ignore\n(...args) => (_ctx.onImagesEdited && _ctx.onImagesEdited(...args)))\n }, null, 40, _hoisted_13), [\n [_vModelText, element.caption]\n ])\n ])\n ]),\n _: 2\n }, 1032, [\"imageFile\", \"onDelete\"]))\n ]),\n _: 1\n }, 8, [\"modelValue\", \"onUpdate\"]), [\n [_vShow, !_ctx.imagePreviewsLoading && _ctx.imagePreviews.length]\n ]),\n _withDirectives(_createElementVNode(\"div\", _hoisted_14, [\n _createElementVNode(\"label\", _hoisted_15, _toDisplayString(_ctx.$t('editor.image.slideshowCaption')) + \":\", 1),\n _withDirectives(_createElementVNode(\"input\", {\n class: \"w-3/5\",\n type: \"text\",\n \"onUpdate:modelValue\": _cache[7] || (_cache[7] = ($event: any) => ((_ctx.slideshowCaption) = $event)),\n onChange: _cache[8] || (_cache[8] = \n//@ts-ignore\n(...args) => (_ctx.onImagesEdited && _ctx.onImagesEdited(...args)))\n }, null, 544), [\n [_vModelText, _ctx.slideshowCaption]\n ])\n ], 512), [\n [_vShow, _ctx.imagePreviews.length > 1]\n ])\n ]))\n}","import { createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, resolveDirective as _resolveDirective, withDirectives as _withDirectives, renderSlot as _renderSlot, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-5bdf84fc\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"image-item items-center my-8 mx-4 overflow-hidden\" }\nconst _hoisted_2 = { class: \"relative items-center justify-center text-center w-full grabbable\" }\nconst _hoisted_3 = [\"content\"]\nconst _hoisted_4 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"svg\", {\n height: \"24px\",\n width: \"24px\",\n viewBox: \"0 0 352 512\",\n xmlns: \"http://www.w3.org/2000/svg\"\n}, [\n /*#__PURE__*/_createElementVNode(\"path\", { d: \"M242.72 256l100.07-100.07c12.28-12.28 12.28-32.19 0-44.48l-22.24-22.24c-12.28-12.28-32.19-12.28-44.48 0L176 189.28 75.93 89.21c-12.28-12.28-32.19-12.28-44.48 0L9.21 111.45c-12.28 12.28-12.28 32.19 0 44.48L109.28 256 9.21 356.07c-12.28 12.28-12.28 32.19 0 44.48l22.24 22.24c12.28 12.28 32.2 12.28 44.48 0L176 322.72l100.07 100.07c12.28 12.28 32.2 12.28 44.48 0l22.24-22.24c12.28-12.28 12.28-32.19 0-44.48L242.72 256z\" })\n], -1))\nconst _hoisted_5 = [\n _hoisted_4\n]\nconst _hoisted_6 = { class: \"flex-grow image-container\" }\nconst _hoisted_7 = [\"title\", \"src\", \"alt\"]\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _directive_tippy = _resolveDirective(\"tippy\")!\n\n return (_openBlock(), _createElementBlock(\"li\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _withDirectives((_openBlock(), _createElementBlock(\"button\", {\n class: \"bg-white absolute h-6 w-6 leading-5 rounded-full top-0 right-0 p-0 cursor-pointer\",\n onClick: _cache[0] || (_cache[0] = () => _ctx.$emit('delete', _ctx.imageFile)),\n content: _ctx.$t('editor.image.delete')\n }, _hoisted_5, 8, _hoisted_3)), [\n [_directive_tippy, { placement: 'top', hideOnClick: false, animateFill: true }]\n ]),\n _createElementVNode(\"div\", _hoisted_6, [\n _createElementVNode(\"img\", {\n class: \"image-file object-cover\",\n title: _ctx.imageFile.id,\n src: _ctx.imageFile.src,\n alt: _ctx.imageFile.altText\n }, null, 8, _hoisted_7)\n ])\n ]),\n _renderSlot(_ctx.$slots, \"default\", {}, undefined, true)\n ]))\n}","\nimport { Prop, Vue } from 'vue-property-decorator';\nimport { ImageFile } from '@/definitions';\n\nexport default class ImagePreviewV extends Vue {\n @Prop() imageFile!: ImageFile;\n}\n","import { render } from \"./image-preview.vue?vue&type=template&id=5bdf84fc&scoped=true&ts=true\"\nimport script from \"./image-preview.vue?vue&type=script&lang=ts\"\nexport * from \"./image-preview.vue?vue&type=script&lang=ts\"\n\nimport \"./image-preview.vue?vue&type=style&index=0&id=5bdf84fc&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/storylines-editor/storylines-editor/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-5bdf84fc\"]])\n\nexport default __exports__","\nimport { Options, Prop, Vue } from 'vue-property-decorator';\nimport { ConfigFileStructure, ImageFile, ImagePanel, PanelType, SlideshowPanel, SourceCounts } from '@/definitions';\nimport draggable from 'vuedraggable';\nimport ImagePreviewV from '@/components/editor/helpers/image-preview.vue';\n\n@Options({\n components: {\n ImagePreview: ImagePreviewV,\n draggable\n }\n})\nexport default class ImageEditorV extends Vue {\n @Prop() panel!: ImagePanel | SlideshowPanel;\n @Prop() configFileStructure!: ConfigFileStructure;\n @Prop() lang!: string;\n @Prop() sourceCounts!: SourceCounts;\n @Prop({ default: true }) allowMany!: boolean;\n\n dragging = false;\n edited = false;\n\n imagePreviewsLoading = false;\n imagePreviewPromises = [] as Array>;\n imagePreviews = [] as Array;\n slideshowCaption = '';\n\n get isDragging(): boolean {\n return this.dragging;\n }\n\n mounted(): void {\n // This basically allows us to access the image(s) using one consistent variable instead of needing to check panel type.\n const images =\n this.panel.type === PanelType.Slideshow\n ? (this.panel.items as Array)\n : this.panel.src\n ? [this.panel]\n : [];\n\n if (images !== undefined && images.length) {\n // Set images as loading until they are all loaded and resolve.\n this.imagePreviewsLoading = true;\n\n // Process each existing image.\n images.map((image: ImagePanel) => {\n // Check if the config file exists in the ZIP folder first.\n const assetSrc = `${image.src.substring(image.src.indexOf('/') + 1)}`;\n const filename = image.src.replace(/^.*[\\\\/]/, '');\n\n const assetFile = this.configFileStructure.zip.file(assetSrc);\n if (assetFile) {\n this.imagePreviewPromises.push(\n assetFile.async('blob').then((res: Blob) => {\n return {\n ...image,\n id: filename ? filename : image.src,\n src: URL.createObjectURL(res)\n } as ImageFile;\n })\n );\n }\n });\n\n // Once all images have been retrieved, display them.\n Promise.all(this.imagePreviewPromises).then((res) => {\n this.imagePreviews = res;\n this.imagePreviewsLoading = false;\n });\n\n this.slideshowCaption = this.panel.caption as string;\n }\n }\n\n onFileChange(e: Event): void {\n // create object URL(s) to display image(s)\n const filelist = Array.from((e.target as HTMLInputElement).files as ArrayLike);\n this.imagePreviews.push(\n ...filelist.map((file: File) => {\n // Add the uploaded images to the product ZIP file.\n const uploadSource = `${this.configFileStructure.uuid}/assets/${this.lang}/${file.name}`;\n this.configFileStructure.assets[this.lang].file(file.name, file);\n\n if (this.sourceCounts[uploadSource]) {\n this.sourceCounts[uploadSource] += 1;\n } else {\n this.sourceCounts[uploadSource] = 1;\n }\n\n let imageSrc = URL.createObjectURL(file);\n return {\n id: file.name,\n altText: '',\n caption: '',\n src: imageSrc\n };\n })\n );\n this.onImagesEdited();\n }\n\n dropImages(e: DragEvent): void {\n if (e.dataTransfer !== null) {\n let files = [...e.dataTransfer.files];\n\n // If allowMany is false, take the first one.\n if (!this.allowMany) {\n files = [files[0]];\n }\n\n this.imagePreviews.push(\n ...files.map((file: File) => {\n // Add the uploaded images to the product ZIP file.\n const uploadSource = `${this.configFileStructure.uuid}/assets/${this.lang}/${file.name}`;\n this.configFileStructure.assets[this.lang].file(file.name, file);\n\n if (this.sourceCounts[uploadSource]) {\n this.sourceCounts[uploadSource] += 1;\n } else {\n this.sourceCounts[uploadSource] = 1;\n }\n\n let imageSrc = URL.createObjectURL(file);\n return {\n id: file.name,\n altText: '',\n caption: '',\n src: imageSrc\n };\n })\n );\n this.dragging = false;\n }\n this.onImagesEdited();\n }\n\n deleteImage(img: ImageFile): void {\n const idx = this.imagePreviews.findIndex((file: ImageFile) => file.id === img.id);\n if (idx !== -1) {\n const fileSource = `${this.configFileStructure.uuid}/assets/${this.lang}/${this.imagePreviews[idx].id}`;\n\n // Remove the image from the product ZIP file.\n this.sourceCounts[fileSource] -= 1;\n if (this.sourceCounts[fileSource] === 0) {\n this.configFileStructure.assets[this.lang].remove(this.imagePreviews[idx].id);\n URL.revokeObjectURL(this.imagePreviews[idx].src);\n }\n this.imagePreviews.splice(idx, 1);\n }\n this.onImagesEdited();\n }\n\n saveChanges(): void {\n if (this.edited) {\n // Delete the existing properties so we can rebuild the object.\n Object.keys(this.panel).forEach((key) => {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n delete this.panel[key];\n });\n\n // Handle case where everything is deleted.\n if (this.imagePreviews.length === 0) {\n this.panel.type = PanelType.Image;\n (this.panel as ImagePanel).src = '';\n } else if (this.imagePreviews.length === 1) {\n // If there's only one image uploaded, convert this to an image panel.\n this.panel.type = PanelType.Image;\n\n // Grab the one image from the array.\n const imageFile = this.imagePreviews[0];\n\n // Sort of gross, but required to update the panel config as we're not allowed to directly manipulate props.\n Object.keys(imageFile).forEach((key) => {\n if (key === 'id') return; // we don't need this one.\n\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n (this.panel as ImagePanel)[key] = imageFile[key];\n });\n\n (this.panel as ImagePanel).src = `${this.configFileStructure.uuid}/assets/${this.lang}/${imageFile.id}`;\n } else {\n // Otherwise, convert this to a slideshow panel.\n this.panel.type = PanelType.Slideshow;\n this.panel.caption = this.slideshowCaption ?? undefined;\n\n // Turn each of the image configs into an image panel and add them to the slidesow.\n (this.panel as SlideshowPanel).items = this.imagePreviews.map((imageFile: ImageFile) => {\n return {\n ...imageFile,\n src: `${this.configFileStructure.uuid}/assets/${this.lang}/${imageFile.id}`,\n type: PanelType.Image\n } as ImagePanel;\n });\n }\n }\n this.edited = false;\n }\n\n onImagesEdited(): void {\n this.edited = true;\n this.$emit('slide-edit');\n }\n}\n","import { render } from \"./image-editor.vue?vue&type=template&id=39ccfdb7&scoped=true&ts=true\"\nimport script from \"./image-editor.vue?vue&type=script&lang=ts\"\nexport * from \"./image-editor.vue?vue&type=script&lang=ts\"\n\nimport \"./image-editor.vue?vue&type=style&index=0&id=39ccfdb7&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/storylines-editor/storylines-editor/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-39ccfdb7\"]])\n\nexport default __exports__","import { toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, vModelText as _vModelText, withDirectives as _withDirectives, resolveComponent as _resolveComponent, createVNode as _createVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-b0fb221e\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"flex flex-col mt-4\" }\nconst _hoisted_2 = { class: \"text-left\" }\nconst _hoisted_3 = { class: \"text-left mt-2\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_v_md_editor = _resolveComponent(\"v-md-editor\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"label\", _hoisted_2, _toDisplayString(_ctx.$t('editor.slides.panel.title')) + \":\", 1),\n _withDirectives(_createElementVNode(\"input\", {\n type: \"text\",\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((_ctx.panel.title) = $event))\n }, null, 512), [\n [_vModelText, _ctx.panel.title]\n ]),\n _createElementVNode(\"label\", _hoisted_3, _toDisplayString(_ctx.$t('editor.slides.panel.body')) + \":\", 1),\n _createVNode(_component_v_md_editor, {\n modelValue: _ctx.panel.content,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = ($event: any) => ((_ctx.panel.content) = $event)),\n height: \"400px\",\n \"left-toolbar\": \"undo redo clear | h bold italic strikethrough quote subsuper | ul ol table hr | addLink image code | save\",\n toolbar: _ctx.toolbar\n }, null, 8, [\"modelValue\", \"toolbar\"])\n ]))\n}","\nimport { Prop, Vue } from 'vue-property-decorator';\nimport { TextPanel } from '@/definitions';\n\ninterface MDEditor {\n insert(callback: (selected: string) => { text: string; selected: string }): void;\n}\n\nexport default class TextEditorV extends Vue {\n @Prop() panel!: TextPanel;\n\n toolbar = {\n subsuper: {\n title: 'Superscript/Subscript',\n text: 'T',\n menus: [\n {\n name: 'Superscript',\n text: 'Superscript',\n action(editor: MDEditor): void {\n editor.insert((selected: string) => {\n const content = selected || ``;\n\n return {\n text: `${content}`,\n selected: selected\n };\n });\n }\n },\n {\n name: 'Subscript',\n text: 'Subscript',\n action(editor: MDEditor): void {\n editor.insert((selected: string) => {\n const content = selected || ``;\n\n return {\n text: `${content}`,\n selected: selected\n };\n });\n }\n }\n ]\n },\n addLink: {\n title: 'Insert Link',\n icon: 'v-md-icon-link',\n menus: [\n {\n name: 'Add External Link (New Tab)',\n text: 'Add External Link (New Tab)',\n action(editor: MDEditor): void {\n editor.insert((selected: string) => {\n const content = selected || ``;\n\n return {\n text: `[${content}](http://)`,\n selected: selected\n };\n });\n }\n },\n {\n name: 'Add External Link (Same Tab)',\n text: 'Add External Link (Same Tab)',\n action(editor: MDEditor): void {\n editor.insert((selected: string) => {\n const content = selected || ``;\n\n return {\n text: `${content}`,\n selected: selected\n };\n });\n }\n },\n {\n name: 'Add Dynamic Link',\n text: 'Add Dynamic Link',\n action(editor: MDEditor): void {\n editor.insert((selected: string) => {\n const content = selected || ``;\n\n return {\n text: `${content}`,\n selected: selected\n };\n });\n }\n }\n ]\n }\n };\n}\n","import { render } from \"./text-editor.vue?vue&type=template&id=b0fb221e&scoped=true&ts=true\"\nimport script from \"./text-editor.vue?vue&type=script&lang=ts\"\nexport * from \"./text-editor.vue?vue&type=script&lang=ts\"\n\nimport \"./text-editor.vue?vue&type=style&index=0&id=b0fb221e&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/storylines-editor/storylines-editor/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-b0fb221e\"]])\n\nexport default __exports__","import { toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, vModelText as _vModelText, withDirectives as _withDirectives, vModelCheckbox as _vModelCheckbox, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createTextVNode as _createTextVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, normalizeClass as _normalizeClass, withCtx as _withCtx, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-681c9c6b\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"flex flex-col\" }\nconst _hoisted_2 = { class: \"text-left\" }\nconst _hoisted_3 = { key: 0 }\nconst _hoisted_4 = { class: \"mt-6\" }\nconst _hoisted_5 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", { class: \"ml-6\" }, null, -1))\nconst _hoisted_6 = { class: \"mt-6\" }\nconst _hoisted_7 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", { class: \"mx-4\" }, null, -1))\nconst _hoisted_8 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"br\", null, null, -1))\nconst _hoisted_9 = {\n key: 1,\n class: \"mb-4\"\n}\nconst _hoisted_10 = { class: \"flex justify-between mb-4\" }\nconst _hoisted_11 = { class: \"mt-2\" }\nconst _hoisted_12 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"iframe\", {\n src: \"scripts/ramp-editor/samples/fgpv-author.html\",\n style: {\"width\":\"70vw\",\"height\":\"100vh\"},\n id: \"RAMPeditorframe\"\n}, null, -1))\nconst _hoisted_13 = { key: 1 }\nconst _hoisted_14 = { class: \"text-left mt-2\" }\nconst _hoisted_15 = { class: \"flex flex-row items-center\" }\nconst _hoisted_16 = {\n key: 0,\n class: \"flex flex-wrap list-none justify-center\"\n}\nconst _hoisted_17 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"add-map\" }, null, -1))\nconst _hoisted_18 = { key: 2 }\nconst _hoisted_19 = { class: \"text-left mt-2\" }\nconst _hoisted_20 = { class: \"flex flex-wrap list-none justify-center\" }\nconst _hoisted_21 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"edit-map\" }, null, -1))\nconst _hoisted_22 = {\n slot: \"header\",\n class: \"text-lg font-bold\"\n}\nconst _hoisted_23 = { class: \"w-full flex justify-end\" }\nconst _hoisted_24 = [\"disabled\"]\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_time_slider_editor = _resolveComponent(\"time-slider-editor\")!\n const _component_vue_final_modal = _resolveComponent(\"vue-final-modal\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"label\", _hoisted_2, _toDisplayString(_ctx.$t('editor.map.title')) + \":\", 1),\n _withDirectives(_createElementVNode(\"input\", {\n type: \"text\",\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((_ctx.panel.title) = $event))\n }, null, 512), [\n [_vModelText, _ctx.panel.title]\n ]),\n (_ctx.status === 'editing')\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_3, [\n _createElementVNode(\"label\", _hoisted_4, _toDisplayString(_ctx.$t('editor.map.scrollguard.enable')) + \":\", 1),\n _withDirectives(_createElementVNode(\"input\", {\n type: \"checkbox\",\n onChange: _cache[1] || (_cache[1] = \n//@ts-ignore\n(...args) => (_ctx.saveScrollguard && _ctx.saveScrollguard(...args))),\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = ($event: any) => ((_ctx.panel.scrollguard) = $event))\n }, null, 544), [\n [_vModelCheckbox, _ctx.panel.scrollguard]\n ]),\n _hoisted_5,\n _createElementVNode(\"label\", _hoisted_6, _toDisplayString(_ctx.$t('editor.map.timeslider.enable')), 1),\n _withDirectives(_createElementVNode(\"input\", {\n type: \"checkbox\",\n onChange: _cache[3] || (_cache[3] = \n//@ts-ignore\n(...args) => (_ctx.saveTimeSlider && _ctx.saveTimeSlider(...args))),\n \"onUpdate:modelValue\": _cache[4] || (_cache[4] = ($event: any) => ((_ctx.usingTimeSlider) = $event))\n }, null, 544), [\n [_vModelCheckbox, _ctx.usingTimeSlider]\n ]),\n _hoisted_7,\n (_ctx.usingTimeSlider)\n ? (_openBlock(), _createElementBlock(\"button\", {\n key: 0,\n onClick: _cache[5] || (_cache[5] = ($event: any) => (_ctx.$vfm.open('time-slider-edit-modal'))),\n class: \"bg-black text-white hover:bg-gray-800 mt-3\"\n }, _toDisplayString(_ctx.$t('editor.map.timeslider.edit')), 1))\n : _createCommentVNode(\"\", true),\n _hoisted_8,\n (_ctx.usingTimeSlider)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_9))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"div\", _hoisted_10, [\n _createElementVNode(\"label\", _hoisted_11, _toDisplayString(_ctx.$t('editor.map.edit')) + \":\", 1),\n _createElementVNode(\"button\", {\n class: \"border border-black hover:bg-gray-100\",\n onClick: _cache[6] || (_cache[6] = \n () => {\n _ctx.status = 'default';\n }\n )\n }, _toDisplayString(_ctx.$t('editor.map.edit.cancel')), 1)\n ]),\n _hoisted_12\n ]))\n : _createCommentVNode(\"\", true),\n (_ctx.status === 'creating')\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_13, [\n _createElementVNode(\"label\", _hoisted_14, _toDisplayString(_ctx.$t('editor.map.label.name')) + \"*:\", 1),\n _createElementVNode(\"div\", _hoisted_15, [\n _withDirectives(_createElementVNode(\"input\", {\n type: \"text\",\n \"onUpdate:modelValue\": _cache[7] || (_cache[7] = ($event: any) => ((_ctx.newFileName) = $event))\n }, null, 512), [\n [_vModelText, _ctx.newFileName]\n ]),\n _createTextVNode(\".json\")\n ]),\n (_ctx.newFileName != '')\n ? (_openBlock(), _createElementBlock(\"ul\", _hoisted_16, [\n _createElementVNode(\"li\", {\n class: \"map-item items-center my-8 mx-5 overflow-hidden\",\n onClick: _cache[8] || (_cache[8] = \n//@ts-ignore\n(...args) => (_ctx.createNewConfig && _ctx.createNewConfig(...args)))\n }, [\n _hoisted_17,\n _createTextVNode(\" \" + _toDisplayString(_ctx.$t('editor.map.label.create')), 1)\n ])\n ]))\n : _createCommentVNode(\"\", true)\n ]))\n : _createCommentVNode(\"\", true),\n (_ctx.status === 'default')\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_18, [\n _createElementVNode(\"label\", _hoisted_19, _toDisplayString(_ctx.$t('editor.map.edit')) + \":\", 1),\n _createElementVNode(\"ul\", _hoisted_20, [\n _createElementVNode(\"li\", {\n class: \"map-item items-center my-8 mx-5 overflow-hidden\",\n onClick: _cache[9] || (_cache[9] = \n//@ts-ignore\n(...args) => (_ctx.openEditor && _ctx.openEditor(...args)))\n }, [\n _hoisted_21,\n _createTextVNode(\" \" + _toDisplayString(_ctx.$t('editor.map.label.edit')), 1)\n ])\n ])\n ]))\n : _createCommentVNode(\"\", true),\n _createVNode(_component_vue_final_modal, {\n modalId: \"time-slider-edit-modal\",\n \"content-class\": \"flex flex-col max-w-xl mx-4 p-4 bg-white border rounded-lg space-y-2\",\n class: \"flex justify-center items-center\"\n }, {\n default: _withCtx(() => [\n _createElementVNode(\"h2\", _hoisted_22, _toDisplayString(_ctx.$t('editor.map.timeslider.edit')), 1),\n _createVNode(_component_time_slider_editor, {\n config: _ctx.timeSliderConf,\n error: _ctx.timeSliderError,\n onTimeSliderChanged: _ctx.onTimeSliderInput\n }, null, 8, [\"config\", \"error\", \"onTimeSliderChanged\"]),\n _createElementVNode(\"div\", _hoisted_23, [\n _createElementVNode(\"button\", {\n class: _normalizeClass(_ctx.timeSliderError ? '' : 'bg-black text-white hover:bg-gray-800'),\n disabled: _ctx.timeSliderError,\n onClick: _cache[10] || (_cache[10] = \n//@ts-ignore\n(...args) => (_ctx.saveTimeSlider && _ctx.saveTimeSlider(...args)))\n }, \" Done \", 10, _hoisted_24)\n ])\n ]),\n _: 1\n })\n ]))\n}","import { toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-6923af36\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"px-5\" }\nconst _hoisted_2 = { class: \"flex items-center\" }\nconst _hoisted_3 = [\"value\"]\nconst _hoisted_4 = { class: \"mx-3\" }\nconst _hoisted_5 = [\"value\"]\nconst _hoisted_6 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"br\", null, null, -1))\nconst _hoisted_7 = { class: \"flex items-center\" }\nconst _hoisted_8 = [\"value\"]\nconst _hoisted_9 = { class: \"mx-3\" }\nconst _hoisted_10 = [\"value\"]\nconst _hoisted_11 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"br\", null, null, -1))\nconst _hoisted_12 = {\n key: 0,\n class: \"border-black border-2 p-3 w-2/3\"\n}\nconst _hoisted_13 = { class: \"w-full\" }\nconst _hoisted_14 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"br\", null, null, -1))\nconst _hoisted_15 = { class: \"list-disc my-2 ml-8\" }\nconst _hoisted_16 = { key: 1 }\nconst _hoisted_17 = [\"value\"]\nconst _hoisted_18 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"br\", null, null, -1))\nconst _hoisted_19 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"br\", null, null, -1))\nconst _hoisted_20 = [\"value\"]\nconst _hoisted_21 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"br\", null, null, -1))\nconst _hoisted_22 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"br\", null, null, -1))\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"label\", null, _toDisplayString(_ctx.$t('editor.map.timeslider.range')), 1),\n _createElementVNode(\"input\", {\n type: \"number\",\n value: _ctx.config.range[0],\n onInput: _cache[0] || (_cache[0] = ($event: any) => (_ctx.$emit('time-slider-changed', 'range', 0, $event.target.value)))\n }, null, 40, _hoisted_3),\n _createElementVNode(\"span\", _hoisted_4, _toDisplayString(_ctx.$t('editor.map.timeslider.to')), 1),\n _createElementVNode(\"input\", {\n type: \"number\",\n value: _ctx.config.range[1],\n onInput: _cache[1] || (_cache[1] = ($event: any) => (_ctx.$emit('time-slider-changed', 'range', 1, $event.target.value)))\n }, null, 40, _hoisted_5)\n ]),\n _hoisted_6,\n _createElementVNode(\"div\", _hoisted_7, [\n _createElementVNode(\"label\", null, _toDisplayString(_ctx.$t('editor.map.timeslider.start')), 1),\n _createElementVNode(\"input\", {\n class: \"ml-3\",\n type: \"number\",\n value: _ctx.config.start[0],\n onInput: _cache[2] || (_cache[2] = ($event: any) => (_ctx.$emit('time-slider-changed', 'start', 0, $event.target.value)))\n }, null, 40, _hoisted_8),\n _createElementVNode(\"span\", _hoisted_9, _toDisplayString(_ctx.$t('editor.map.timeslider.to')), 1),\n _createElementVNode(\"input\", {\n type: \"number\",\n value: _ctx.config.start[1],\n onInput: _cache[3] || (_cache[3] = ($event: any) => (_ctx.$emit('time-slider-changed', 'start', 1, $event.target.value)))\n }, null, 40, _hoisted_10)\n ]),\n _hoisted_11,\n (_ctx.error)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_12, [\n _createElementVNode(\"label\", _hoisted_13, _toDisplayString(_ctx.$t('editor.map.timeslider.warning')), 1),\n _hoisted_14,\n _createElementVNode(\"ul\", _hoisted_15, [\n _createElementVNode(\"li\", null, _toDisplayString(_ctx.$t('editor.map.timeslider.warning.bullet1')), 1),\n _createElementVNode(\"li\", null, _toDisplayString(_ctx.$t('editor.map.timeslider.warning.bullet2')), 1)\n ]),\n _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('editor.map.timeslider.warning.end')), 1)\n ]))\n : _createCommentVNode(\"\", true),\n (_ctx.error)\n ? (_openBlock(), _createElementBlock(\"br\", _hoisted_16))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"div\", null, [\n _createElementVNode(\"label\", null, _toDisplayString(_ctx.$t('editor.map.timeslider.attribute')), 1),\n _createElementVNode(\"input\", {\n value: _ctx.config.attribute,\n onInput: _cache[4] || (_cache[4] = ($event: any) => (_ctx.$emit('time-slider-changed', 'attribute', undefined, $event.target.value)))\n }, null, 40, _hoisted_17)\n ]),\n _hoisted_18,\n _createElementVNode(\"div\", null, [\n _createElementVNode(\"label\", null, _toDisplayString(_ctx.$t('editor.map.timeslider.layers')), 1),\n _hoisted_19,\n _createElementVNode(\"input\", {\n class: \"w-full\",\n value: _ctx.config.layers || '',\n onInput: _cache[5] || (_cache[5] = ($event: any) => (_ctx.$emit('time-slider-changed', 'layers', undefined, $event.target.value)))\n }, null, 40, _hoisted_20)\n ]),\n _hoisted_21,\n _hoisted_22\n ]))\n}","\nimport { TimeSliderConfig } from '@/definitions';\nimport { Prop, Vue } from 'vue-property-decorator';\n\nexport default class TimeSliderEditorV extends Vue {\n @Prop() config!: TimeSliderConfig;\n @Prop() error!: boolean;\n}\n","import { render } from \"./time-slider-editor.vue?vue&type=template&id=6923af36&scoped=true&ts=true\"\nimport script from \"./time-slider-editor.vue?vue&type=script&lang=ts\"\nexport * from \"./time-slider-editor.vue?vue&type=script&lang=ts\"\n\nimport \"./time-slider-editor.vue?vue&type=style&index=0&id=6923af36&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/storylines-editor/storylines-editor/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-6923af36\"]])\n\nexport default __exports__","\nimport { Options, Prop, Vue } from 'vue-property-decorator';\nimport { ConfigFileStructure, MapPanel, SourceCounts, TimeSliderConfig } from '@/definitions';\nimport { VueFinalModal } from 'vue-final-modal';\nimport defaultConfigEn from '../../../public/scripts/ramp-editor/samples/map_en.json';\nimport defaultConfigFr from '../../../public/scripts/ramp-editor/samples/map_fr.json';\nimport TimeSliderEditorV from './helpers/time-slider-editor.vue';\n\n@Options({\n components: {\n 'time-slider-editor': TimeSliderEditorV,\n 'vue-final-modal': VueFinalModal\n }\n})\nexport default class MapEditorV extends Vue {\n @Prop() panel!: MapPanel;\n @Prop() configFileStructure!: ConfigFileStructure;\n @Prop() lang!: string;\n @Prop() sourceCounts!: SourceCounts;\n\n // For creating new files.\n newFileName = '';\n\n // TimeSlider\n usingTimeSlider = !!this.panel.timeSlider;\n timeSliderError = false;\n timeSliderConf: TimeSliderConfig = { range: [], start: [], attribute: '' };\n status = this.panel.config !== '' ? 'default' : 'creating';\n strippedFileName = this.panel.config !== '' ? this.panel.config.split('/')[3].split('.')[0] : '';\n\n mounted(): void {\n // If a message is received, it means the map save button was pressed.\n window.addEventListener('message', this.saveEditor);\n this.timeSliderConf = JSON.parse(\n JSON.stringify({\n range: this.panel.timeSlider?.range ?? [1000, new Date().getFullYear()],\n start: this.panel.timeSlider?.start ?? [1000, new Date().getFullYear()],\n attribute: this.panel.timeSlider?.attribute ?? ''\n })\n );\n this.validateTimeSlider();\n }\n\n beforeDestroy(): void {\n window.removeEventListener('message', this.saveEditor);\n }\n\n createNewConfig(): void {\n // Update the path to the new file.\n // TODO: ensure that this is not a name already in use?\n this.panel.config = `${this.configFileStructure.uuid}/ramp-config/${this.lang}/${this.newFileName}.json`;\n this.strippedFileName = this.panel.config.split('/')[3].split('.')[0];\n\n if (this.sourceCounts[this.panel.config]) {\n this.sourceCounts[this.panel.config] += 1;\n } else {\n this.sourceCounts[this.panel.config] = 1;\n }\n\n // Create the new map configuration file in the ZIP folder. Copies the `config-default.json` file from the `ramp-editor` folder and renames it.\n this.configFileStructure.rampConfig[this.lang].file(\n `${this.strippedFileName}.json`,\n JSON.stringify(this.lang === 'en' ? defaultConfigEn : defaultConfigFr, null, 4)\n );\n\n // Display the normal edit page now.\n this.status = 'default';\n }\n\n openEditor(): void {\n if (this.panel.config === '') {\n return;\n }\n // Fetch the map configuration and load it into the editor.\n this.status = 'editing';\n\n if (this.panel.config) {\n // Check if the config file exists in the ZIP folder first.\n const assetSrc = `${this.panel.config.substring(this.panel.config.indexOf('/') + 1)}`;\n const configFile = this.configFileStructure.zip.file(assetSrc);\n\n if (configFile) {\n configFile.async('string').then((res: string) => {\n window.config = res;\n const iframe = document.getElementById('RAMPeditorframe') as HTMLIFrameElement;\n if (iframe.contentWindow) {\n iframe.contentWindow.config = res;\n iframe.contentWindow.configname = this.strippedFileName;\n }\n });\n } else {\n // If it does not exist in the ZIP folder, try and fetch from server.\n fetch(this.panel.config).then((data) => {\n data.json().then((res) => {\n let stringResponse = JSON.stringify(res);\n\n window.config = stringResponse;\n const iframe = document.getElementById('RAMPeditorframe') as HTMLIFrameElement;\n if (iframe.contentWindow) {\n iframe.contentWindow.config = stringResponse;\n iframe.contentWindow.configname = this.strippedFileName;\n }\n });\n });\n }\n }\n }\n\n saveScrollguard($event: Event): void {\n this.panel.scrollguard = ($event.target as HTMLInputElement).checked;\n }\n\n saveTimeSlider(): void {\n if (!this.timeSliderError || !this.usingTimeSlider) {\n this.panel.timeSlider = this.usingTimeSlider ? this.timeSliderConf : undefined;\n }\n this.$emit('slide-edit');\n this.$vfm.close('time-slider-edit-modal');\n }\n\n saveEditor(e: MessageEvent): void {\n if (e.data === 'mapSaved') {\n this.status = 'default';\n\n // Add chart config to ZIP file.\n this.configFileStructure.rampConfig[this.lang].file(\n `${this.strippedFileName}.json`,\n JSON.stringify(JSON.parse(localStorage.RAMPconfig), null, 4)\n );\n\n this.$emit('slide-edit');\n }\n }\n\n onTimeSliderInput(property: 'range' | 'start' | 'attribute' | 'layers', index: number, value: string): void {\n if (property === 'layers') {\n if (!value || value === '') {\n delete this.timeSliderConf['layers'];\n } else {\n this.timeSliderConf['layers'] = value.split(',').map((layerId) => {\n return layerId.trim();\n });\n }\n } else {\n property === 'attribute'\n ? (this.timeSliderConf[property] = value)\n : (this.timeSliderConf[property][index] = Number(value));\n }\n this.validateTimeSlider();\n }\n\n validateTimeSlider(): void {\n this.timeSliderError =\n this.timeSliderConf.range.some((val) => val < 0 || !Number.isInteger(val)) ||\n this.timeSliderConf.start.some((val) => val < 0 || !Number.isInteger(val)) ||\n this.timeSliderConf.range[1] < this.timeSliderConf.range[0] ||\n this.timeSliderConf.start[1] < this.timeSliderConf.start[0];\n }\n}\n","import { render } from \"./map-editor.vue?vue&type=template&id=681c9c6b&scoped=true&ts=true\"\nimport script from \"./map-editor.vue?vue&type=script&lang=ts\"\nexport * from \"./map-editor.vue?vue&type=script&lang=ts\"\n\nimport \"./map-editor.vue?vue&type=style&index=0&id=681c9c6b&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/storylines-editor/storylines-editor/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-681c9c6b\"]])\n\nexport default __exports__","import { toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, vModelText as _vModelText, withDirectives as _withDirectives, openBlock as _openBlock, createElementBlock as _createElementBlock, createTextVNode as _createTextVNode, withModifiers as _withModifiers, normalizeClass as _normalizeClass, createCommentVNode as _createCommentVNode, resolveComponent as _resolveComponent, createBlock as _createBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-996fd9c6\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"block\" }\nconst _hoisted_2 = { class: \"flex mt-4 items-center w-full text-left\" }\nconst _hoisted_3 = { class: \"text-label\" }\nconst _hoisted_4 = { class: \"flex drag-label cursor-pointer\" }\nconst _hoisted_5 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", { class: \"align-middle inline-block pr-4\" }, [\n /*#__PURE__*/_createElementVNode(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"48\",\n height: \"48\",\n viewBox: \"0 -2 30 30\"\n }, [\n /*#__PURE__*/_createElementVNode(\"path\", {\n d: \"M599,692 C597.896,692 597,692.896 597,694 L597,698 L575,698 L575,694 C575,692.896 574.104,692 573,692 C571.896,692 571,692.896 571,694 L571,701 C571,701.479 571.521,702 572,702 L600,702 C600.604,702 601,701.542 601,701 L601,694 C601,692.896 600.104,692 599,692 L599,692 Z M582,684 L584,684 L584,693 C584,694.104 584.896,695 586,695 C587.104,695 588,694.104 588,693 L588,684 L590,684 C590.704,684 591.326,684.095 591.719,683.7 C592.11,683.307 592.11,682.668 591.719,682.274 L586.776,676.283 C586.566,676.073 586.289,675.983 586.016,675.998 C585.742,675.983 585.465,676.073 585.256,676.283 L580.313,682.274 C579.921,682.668 579.921,683.307 580.313,683.7 C580.705,684.095 581.608,684 582,684 L582,684 Z\",\n transform: \"translate(-571.000000, -676.000000)\"\n })\n ])\n], -1))\nconst _hoisted_6 = { class: \"align-middle inline-block\" }\nconst _hoisted_7 = { class: \"text-blue-400 font-bold\" }\nconst _hoisted_8 = { class: \"flex mt-4 items-center w-full text-left\" }\nconst _hoisted_9 = { class: \"text-label\" }\nconst _hoisted_10 = {\n key: 1,\n ref: \"videoUrl\",\n class: \"w-3/5\",\n type: \"search\"\n}\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_VideoPreview = _resolveComponent(\"VideoPreview\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"label\", _hoisted_3, _toDisplayString(_ctx.$t('editor.video.title')) + \":\", 1),\n _withDirectives(_createElementVNode(\"input\", {\n class: \"w-3/5\",\n type: \"text\",\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((_ctx.videoPreview.title) = $event)),\n onChange: _cache[1] || (_cache[1] = \n//@ts-ignore\n(...args) => (_ctx.onVideoEdited && _ctx.onVideoEdited(...args)))\n }, null, 544), [\n [_vModelText, _ctx.videoPreview.title]\n ])\n ]),\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"upload-video text-center m-5 p-12 bg-gray-100 border-4 border-dashed border-gray-300\", { dragging: _ctx.isDragging }]),\n onDragover: _cache[3] || (_cache[3] = _withModifiers(() => (_ctx.dragging = true), [\"prevent\"])),\n onDragleave: _cache[4] || (_cache[4] = _withModifiers(() => (_ctx.dragging = false), [\"prevent\"])),\n onDrop: _cache[5] || (_cache[5] = _withModifiers(($event: any) => (_ctx.dropVideo($event)), [\"prevent\"]))\n }, [\n _createElementVNode(\"label\", _hoisted_4, [\n _hoisted_5,\n _createElementVNode(\"span\", _hoisted_6, [\n _createElementVNode(\"span\", null, [\n _createElementVNode(\"div\", null, _toDisplayString(_ctx.$t('editor.video.label.drag')), 1),\n _createElementVNode(\"div\", null, [\n _createTextVNode(_toDisplayString(_ctx.$t('editor.label.or')) + \" \", 1),\n _createElementVNode(\"span\", _hoisted_7, _toDisplayString(_ctx.$t('editor.label.browse')), 1),\n _createTextVNode(\" \" + _toDisplayString(_ctx.$t('editor.label.upload')), 1)\n ])\n ]),\n _createElementVNode(\"input\", {\n ref: \"videoFileInput\",\n type: \"file\",\n class: \"cursor-pointer\",\n onChange: _cache[2] || (_cache[2] = \n//@ts-ignore\n(...args) => (_ctx.onFileChange && _ctx.onFileChange(...args)))\n }, null, 544)\n ])\n ])\n ], 34),\n _createElementVNode(\"div\", _hoisted_8, [\n _createElementVNode(\"label\", _hoisted_9, _toDisplayString(_ctx.$t('editor.label.or') + ' ' + _ctx.$t('editor.video.pasteUrl')) + \":\", 1),\n (_ctx.videoPreview.videoType !== 'local')\n ? _withDirectives((_openBlock(), _createElementBlock(\"input\", {\n key: 0,\n ref: \"videoUrl\",\n class: \"w-3/5\",\n type: \"search\",\n \"onUpdate:modelValue\": _cache[6] || (_cache[6] = ($event: any) => ((_ctx.videoPreview.src) = $event))\n }, null, 512)), [\n [_vModelText, _ctx.videoPreview.src]\n ])\n : (_openBlock(), _createElementBlock(\"input\", _hoisted_10, null, 512)),\n _createElementVNode(\"button\", {\n onClick: _cache[7] || (_cache[7] = \n//@ts-ignore\n(...args) => (_ctx.uploadVideoUrl && _ctx.uploadVideoUrl(...args))),\n class: \"bg-white border border-black hover:bg-gray-100\"\n }, _toDisplayString(_ctx.$t('editor.video.label.upload')), 1)\n ]),\n (!_ctx.videoPreviewLoading && Object.keys(_ctx.videoPreview).length !== 0)\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n class: \"flex flex-wrap justify-center list-none border my-4\",\n onUpdate: _cache[8] || (_cache[8] = \n//@ts-ignore\n(...args) => (_ctx.onVideoEdited && _ctx.onVideoEdited(...args))),\n \"item-key\": \"id\"\n }, [\n (_openBlock(), _createBlock(_component_VideoPreview, {\n key: `${_ctx.videoPreview.id}`,\n file: _ctx.videoPreview,\n fileType: _ctx.fileType,\n lang: _ctx.lang,\n onDelete: _ctx.deleteVideo\n }, null, 8, [\"file\", \"fileType\", \"lang\", \"onDelete\"]))\n ], 32))\n : _createCommentVNode(\"\", true)\n ]))\n}","import { createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, resolveDirective as _resolveDirective, withDirectives as _withDirectives, createCommentVNode as _createCommentVNode, renderSlot as _renderSlot, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-2d1c87e5\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"my-8 mx-4 overflow-hidden w-full\" }\nconst _hoisted_2 = { class: \"relative text-center w-full grabbable\" }\nconst _hoisted_3 = [\"content\"]\nconst _hoisted_4 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"svg\", {\n height: \"24px\",\n width: \"24px\",\n viewBox: \"0 0 352 512\",\n xmlns: \"http://www.w3.org/2000/svg\"\n}, [\n /*#__PURE__*/_createElementVNode(\"path\", { d: \"M242.72 256l100.07-100.07c12.28-12.28 12.28-32.19 0-44.48l-22.24-22.24c-12.28-12.28-32.19-12.28-44.48 0L176 189.28 75.93 89.21c-12.28-12.28-32.19-12.28-44.48 0L9.21 111.45c-12.28 12.28-12.28 32.19 0 44.48L109.28 256 9.21 356.07c-12.28 12.28-12.28 32.19 0 44.48l22.24 22.24c12.28 12.28 32.2 12.28 44.48 0L176 322.72l100.07 100.07c12.28 12.28 32.2 12.28 44.48 0l22.24-22.24c12.28-12.28 12.28-32.19 0-44.48L242.72 256z\" })\n], -1))\nconst _hoisted_5 = [\n _hoisted_4\n]\nconst _hoisted_6 = { class: \"video-container\" }\nconst _hoisted_7 = [\"src\", \"height\", \"width\"]\nconst _hoisted_8 = [\"title\", \"height\", \"width\"]\nconst _hoisted_9 = [\"type\", \"src\"]\nconst _hoisted_10 = [\"src\", \"srclang\", \"label\"]\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _directive_tippy = _resolveDirective(\"tippy\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _withDirectives((_openBlock(), _createElementBlock(\"button\", {\n class: \"bg-white absolute h-6 w-6 leading-5 rounded-full top-0 right-0 p-0 cursor-pointer\",\n onClick: _cache[0] || (_cache[0] = () => _ctx.$emit('delete', _ctx.file)),\n content: _ctx.$t('editor.video.delete')\n }, _hoisted_5, 8, _hoisted_3)), [\n [_directive_tippy, { placement: 'top', hideOnClick: false, animateFill: true }]\n ]),\n _createElementVNode(\"div\", _hoisted_6, [\n (_ctx.file.videoType === 'YouTube')\n ? (_openBlock(), _createElementBlock(\"iframe\", {\n key: 0,\n class: \"w-3/5\",\n src: _ctx.file.src,\n height: _ctx.file.height ? _ctx.file.height : 400,\n width: _ctx.file.width,\n allowfullscreen: \"\"\n }, null, 8, _hoisted_7))\n : _createCommentVNode(\"\", true),\n (_ctx.file.videoType === 'local' || _ctx.file.videoType === 'external')\n ? (_openBlock(), _createElementBlock(\"video\", {\n key: 1,\n class: \"w-3/5\",\n title: _ctx.file.title,\n height: _ctx.file.height ? _ctx.file.height : 500,\n width: _ctx.file.width,\n controls: \"\"\n }, [\n _createElementVNode(\"source\", {\n type: _ctx.fileType,\n src: _ctx.file.src\n }, null, 8, _hoisted_9),\n (_ctx.file.caption)\n ? (_openBlock(), _createElementBlock(\"track\", {\n key: 0,\n kind: \"captions\",\n src: _ctx.file.caption,\n srclang: _ctx.lang,\n label: _ctx.langs[_ctx.lang]\n }, null, 8, _hoisted_10))\n : _createCommentVNode(\"\", true)\n ], 8, _hoisted_8))\n : _createCommentVNode(\"\", true)\n ])\n ]),\n _renderSlot(_ctx.$slots, \"default\", {}, undefined, true)\n ]))\n}","\nimport { Prop, Vue } from 'vue-property-decorator';\nimport { VideoFile } from '@/definitions';\nimport MarkdownIt from 'markdown-it';\n\nexport default class VideoPreviewV extends Vue {\n @Prop() file!: VideoFile;\n @Prop() fileType!: string;\n @Prop() lang!: string;\n\n md = new MarkdownIt({ html: true });\n langs = { en: 'English', fr: 'French' } as Record;\n\n expandTranscript = false;\n rawTranscript = '';\n transcriptContent = '';\n}\n","import { render } from \"./video-preview.vue?vue&type=template&id=2d1c87e5&scoped=true&ts=true\"\nimport script from \"./video-preview.vue?vue&type=script&lang=ts\"\nexport * from \"./video-preview.vue?vue&type=script&lang=ts\"\n\nimport \"./video-preview.vue?vue&type=style&index=0&id=2d1c87e5&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/storylines-editor/storylines-editor/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-2d1c87e5\"]])\n\nexport default __exports__","\nimport { Options, Prop, Vue } from 'vue-property-decorator';\nimport { ConfigFileStructure, SourceCounts, VideoFile, VideoPanel } from '@/definitions';\nimport draggable from 'vuedraggable';\nimport VideoPreviewV from '@/components/editor/helpers/video-preview.vue';\n\n@Options({\n components: {\n VideoPreview: VideoPreviewV,\n draggable\n }\n})\nexport default class VideoEditorV extends Vue {\n @Prop() panel!: VideoPanel;\n @Prop() configFileStructure!: ConfigFileStructure;\n @Prop() lang!: string;\n @Prop() sourceCounts!: SourceCounts;\n\n dragging = false;\n edited = false;\n\n fileType = '';\n videoPreviewLoading = false;\n videoPreviewPromise = undefined as Promise | undefined;\n videoPreview = {} as VideoFile | Record;\n slideshowCaption = '';\n\n get isDragging(): boolean {\n return this.dragging;\n }\n\n mounted(): void {\n if (this.panel.src) {\n if (this.panel.videoType === 'local') {\n this.videoPreviewLoading = true;\n\n // retrieve existing video file\n const assetSrc = `${this.panel.src.substring(this.panel.src.indexOf('/') + 1)}`;\n const filename = this.panel.src.replace(/^.*[\\\\/]/, '');\n\n const assetFile = this.configFileStructure.zip.file(assetSrc);\n if (assetFile) {\n this.videoPreviewPromise = assetFile.async('blob').then((res: Blob) => {\n return {\n ...this.panel,\n id: filename ? filename : this.panel.src,\n src: URL.createObjectURL(res)\n } as VideoFile;\n });\n }\n // attempt to load in video to preview in editor\n this.videoPreviewPromise?.then((res) => {\n this.videoPreview = res;\n this.videoPreviewLoading = false;\n });\n\n this.slideshowCaption = this.panel.caption as string;\n } else {\n // existing file is a URL format\n this.videoPreview = {\n id: this.panel.src,\n title: this.panel.title,\n videoType: this.panel.videoType === 'YouTube' ? 'YouTube' : 'external',\n src: this.panel.src\n };\n }\n }\n }\n\n // adds an uploaded file that is either a: video, transcript or captions\n addUploadedFile(file: File, type: string): void {\n const uploadSource = `${this.configFileStructure.uuid}/assets/${this.lang}/${file.name}`;\n this.configFileStructure.assets[this.lang].file(file.name, file);\n if (this.sourceCounts[uploadSource]) {\n this.sourceCounts[uploadSource] += 1;\n } else {\n this.sourceCounts[uploadSource] = 1;\n }\n\n // check if source file is creating a new video or uploading captions/transcript for current video\n const fileSrc = URL.createObjectURL(file);\n if (type === 'src') {\n this.videoPreview = {\n id: file.name,\n title: this.videoPreview.title || file.name,\n videoType: 'local',\n src: fileSrc\n };\n this.findFileType(file.name);\n } else {\n this.videoPreview[type as 'caption' | 'transcript'] = fileSrc;\n }\n this.edited = true;\n this.$emit('slide-edit');\n }\n\n onFileChange(e: Event): void {\n const file = Array.from((e.target as HTMLInputElement).files as ArrayLike)[0];\n this.addUploadedFile(file, 'src');\n this.onVideoEdited();\n }\n\n findFileType(file: string): void {\n if (this.videoPreview.videoType === 'external' || this.videoPreview.videoType === 'local') {\n const fileName = file.substring(file.lastIndexOf('/') + 1);\n const ext = fileName.split('.').pop();\n this.fileType = `video/${ext}`;\n }\n }\n\n // extract the video ID from YouTube link (we need to convert to embed link)\n extractYoutubeId(url: string): string | null {\n const regExp = /^.*(youtu.be\\/|v\\/|u\\/\\w\\/|embed\\/|watch\\?v=|&v=)([^#&?]*).*/;\n const match = url.match(regExp);\n return match && match[2].length === 11 ? match[2] : null;\n }\n\n uploadVideoUrl(): void {\n // TODO: might need to improve upon detecting YT link depending on cases\n let url = (this.$refs.videoUrl as HTMLInputElement).value as string;\n const isYoutube = url.toLowerCase().includes('youtube');\n\n // change YT link to embed format\n if (isYoutube) {\n // extract and restructure YT url to be embeddable\n // const videoId = this.extractYoutubeId(url);\n // // TODO: add error handling for invalid URLs\n // url = 'https://www.youtube.com/embed/' + (videoId as string);\n url = url.replace('/watch?v=', '/embed/');\n }\n this.videoPreview = {\n id: url,\n title: this.videoPreview.title || url,\n videoType: url.includes('youtube') ? 'YouTube' : 'external',\n src: url\n };\n this.edited = true;\n this.$emit('slide-edit');\n }\n\n updateCaptions(e: Event): void {\n const file = Array.from((e.target as HTMLInputElement).files as ArrayLike)[0];\n this.addUploadedFile(file, 'caption');\n }\n\n updateTranscript(e: Event): void {\n const file = Array.from((e.target as HTMLInputElement).files as ArrayLike)[0];\n this.addUploadedFile(file, 'transcript');\n }\n\n dropVideo(e: DragEvent): void {\n if (e.dataTransfer !== null) {\n const file = [...e.dataTransfer.files][0];\n this.addUploadedFile(file, 'src');\n this.dragging = false;\n }\n this.onVideoEdited();\n }\n\n deleteVideo(): void {\n (this.$refs.videoFileInput as HTMLInputElement).value = '';\n this.videoPreview = {};\n this.onVideoEdited();\n }\n\n saveChanges(): void {\n if (this.edited && this.videoPreview) {\n // save all changes to panel config (cannot directly set to avoid prop mutate)\n this.panel.title = this.videoPreview.title;\n this.panel.videoType = this.videoPreview.videoType;\n this.panel.src =\n this.videoPreview.videoType === 'local'\n ? `${this.configFileStructure.uuid}/assets/${this.lang}/${this.videoPreview.id}`\n : this.videoPreview.src;\n this.panel.caption = this.videoPreview.caption ? this.videoPreview.caption : '';\n this.panel.transcript = this.videoPreview.transcript ? this.videoPreview.transcript : '';\n }\n this.edited = false;\n }\n\n onVideoEdited(): void {\n this.edited = true;\n this.$emit('slide-edit');\n }\n}\n","import { render } from \"./video-editor.vue?vue&type=template&id=996fd9c6&scoped=true&ts=true\"\nimport script from \"./video-editor.vue?vue&type=script&lang=ts\"\nexport * from \"./video-editor.vue?vue&type=script&lang=ts\"\n\nimport \"./video-editor.vue?vue&type=style&index=0&id=996fd9c6&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/storylines-editor/storylines-editor/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-996fd9c6\"]])\n\nexport default __exports__","import { toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, vModelText as _vModelText, withDirectives as _withDirectives, renderList as _renderList, Fragment as _Fragment, createTextVNode as _createTextVNode, resolveDynamicComponent as _resolveDynamicComponent, createBlock as _createBlock, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-5b666f60\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"block\" }\nconst _hoisted_2 = { class: \"flex items-center\" }\nconst _hoisted_3 = { class: \"font-bold px-4\" }\nconst _hoisted_4 = { class: \"flex items-center\" }\nconst _hoisted_5 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"svg\", {\n height: \"18px\",\n width: \"18px\",\n viewBox: \"0 0 23 21\",\n xmlns: \"http://www.w3.org/2000/svg\"\n}, [\n /*#__PURE__*/_createElementVNode(\"path\", { d: \"M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z\" })\n], -1))\nconst _hoisted_6 = { class: \"px-2\" }\nconst _hoisted_7 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"hr\", { class: \"border-solid border-t-2 border-gray-300 my-2\" }, null, -1))\nconst _hoisted_8 = { class: \"flex items-center w-full text-left\" }\nconst _hoisted_9 = { class: \"text-label\" }\nconst _hoisted_10 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"br\", null, null, -1))\nconst _hoisted_11 = { class: \"w-2/3 mt-5\" }\nconst _hoisted_12 = { class: \"table-header\" }\nconst _hoisted_13 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"th\", null, null, -1))\nconst _hoisted_14 = [\"onClick\"]\nconst _hoisted_15 = [\"onClick\"]\nconst _hoisted_16 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"br\", null, null, -1))\nconst _hoisted_17 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"br\", null, null, -1))\nconst _hoisted_18 = { key: 0 }\nconst _hoisted_19 = { class: \"text-xl font-bold\" }\nconst _hoisted_20 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"hr\", { class: \"border-solid border-t-2 border-gray-300 my-2\" }, null, -1))\nconst _hoisted_21 = { key: 0 }\nconst _hoisted_22 = { class: \"mb-5 text-left\" }\nconst _hoisted_23 = [\"value\"]\nconst _hoisted_24 = [\"value\"]\nconst _hoisted_25 = { class: \"mt-3 w-full flex justify-end\" }\nconst _hoisted_26 = { key: 1 }\nconst _hoisted_27 = { class: \"mt-3 w-full flex justify-end\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"span\", _hoisted_3, _toDisplayString(_ctx.$t('editor.slideshow.label.info', {\n num: _ctx.panel.items.length\n })), 1),\n _createElementVNode(\"button\", {\n class: \"bg-gray-100 cursor-pointer hover:bg-gray-200\",\n onClick: _cache[0] || (_cache[0] = ($event: any) => (_ctx.editingStatus = 'create'))\n }, [\n _createElementVNode(\"div\", _hoisted_4, [\n _hoisted_5,\n _createElementVNode(\"span\", _hoisted_6, _toDisplayString(_ctx.$t('editor.slideshow.label.create')), 1)\n ])\n ])\n ]),\n _hoisted_7,\n _createElementVNode(\"div\", _hoisted_8, [\n _createElementVNode(\"label\", _hoisted_9, _toDisplayString(_ctx.$t('editor.image.slideshowCaption')) + \":\", 1),\n _withDirectives(_createElementVNode(\"input\", {\n class: \"w-1/3\",\n type: \"text\",\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = ($event: any) => ((_ctx.panel.caption) = $event))\n }, null, 512), [\n [_vModelText, _ctx.panel.caption]\n ]),\n _hoisted_10\n ]),\n _createElementVNode(\"table\", _hoisted_11, [\n _createElementVNode(\"thead\", null, [\n _createElementVNode(\"tr\", _hoisted_12, [\n _hoisted_13,\n _createElementVNode(\"th\", null, _toDisplayString(_ctx.$t('editor.slideshow.label.type')), 1),\n _createElementVNode(\"th\", null, _toDisplayString(_ctx.$t('dynamic.panel.actions')), 1)\n ])\n ]),\n _createElementVNode(\"tbody\", null, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.panel.items, (item, idx) => {\n return (_openBlock(), _createElementBlock(\"tr\", {\n class: \"table-contents\",\n key: idx\n }, [\n _createElementVNode(\"td\", null, _toDisplayString(idx + 1) + \".\", 1),\n _createElementVNode(\"td\", null, _toDisplayString(item.type), 1),\n _createElementVNode(\"td\", null, [\n _createElementVNode(\"span\", {\n onClick: ($event: any) => (_ctx.editItem(idx)),\n class: \"underline\"\n }, \"Edit\", 8, _hoisted_14),\n _createTextVNode(\" | \"),\n _createElementVNode(\"span\", {\n onClick: ($event: any) => (_ctx.deleteItem(idx)),\n class: \"underline\"\n }, \"Remove\", 8, _hoisted_15)\n ])\n ]))\n }), 128))\n ])\n ]),\n _hoisted_16,\n _hoisted_17,\n (_ctx.editingStatus !== 'none')\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_18, [\n _createElementVNode(\"h2\", _hoisted_19, _toDisplayString(_ctx.$t(`editor.slideshow.label.${_ctx.editingStatus}`)), 1),\n _hoisted_20,\n _createElementVNode(\"div\", null, [\n (_ctx.editingStatus === 'create')\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_21, [\n _createElementVNode(\"label\", _hoisted_22, _toDisplayString(_ctx.$t('editor.slideshow.label.type')) + \":\", 1),\n _createElementVNode(\"select\", {\n onInput: _cache[2] || (_cache[2] = \n//@ts-ignore\n(...args) => (_ctx.onTypeInput && _ctx.onTypeInput(...args))),\n value: _ctx.newSlideType\n }, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(Object.keys(_ctx.editors), (thing) => {\n return (_openBlock(), _createElementBlock(\"option\", {\n key: thing,\n value: thing\n }, _toDisplayString(thing), 9, _hoisted_24))\n }), 128))\n ], 40, _hoisted_23),\n (_ctx.editingStatus === 'create')\n ? (_openBlock(), _createBlock(_resolveDynamicComponent(_ctx.editors[_ctx.newSlideType]), {\n key: 0,\n ref: \"slideEditor\",\n panel: JSON.parse(JSON.stringify(_ctx.startingConfig[_ctx.newSlideType])),\n configFileStructure: _ctx.configFileStructure,\n lang: _ctx.lang,\n sourceCounts: _ctx.sourceCounts,\n allowMany: false\n }, null, 8, [\"panel\", \"configFileStructure\", \"lang\", \"sourceCounts\"]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"div\", _hoisted_25, [\n _createElementVNode(\"button\", {\n class: \"bg-black text-white hover:bg-gray-800\",\n onClick: _cache[3] || (_cache[3] = ($event: any) => (_ctx.saveItem(true)))\n }, _toDisplayString(_ctx.$t('editor.slideshow.label.add')), 1)\n ])\n ]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_26, [\n (_openBlock(), _createBlock(_resolveDynamicComponent(_ctx.editors[_ctx.panel.items[_ctx.editingIdx].type]), {\n ref: \"slideEditor\",\n panel: _ctx.panel.items[_ctx.editingIdx],\n configFileStructure: _ctx.configFileStructure,\n lang: _ctx.lang,\n sourceCounts: _ctx.sourceCounts,\n key: _ctx.editingIdx + _ctx.panel.items[_ctx.editingIdx].type,\n allowMany: false\n }, null, 8, [\"panel\", \"configFileStructure\", \"lang\", \"sourceCounts\"])),\n _createElementVNode(\"div\", _hoisted_27, [\n _createElementVNode(\"button\", {\n class: \"bg-black text-white hover:bg-gray-800\",\n onClick: _cache[4] || (_cache[4] = ($event: any) => (_ctx.saveItem()))\n }, _toDisplayString(_ctx.$t('editor.saveChanges')), 1)\n ])\n ]))\n ])\n ]))\n : _createCommentVNode(\"\", true)\n ]))\n}","\nimport { Options, Prop, Vue } from 'vue-property-decorator';\nimport {\n BasePanel,\n ChartPanel,\n ConfigFileStructure,\n DefaultConfigs,\n ImagePanel,\n MapPanel,\n PanelType,\n SlideshowPanel,\n SourceCounts\n} from '@/definitions';\n\nimport ChartEditorV from './chart-editor.vue';\nimport ImageEditorV from './image-editor.vue';\nimport TextEditorV from './text-editor.vue';\nimport MapEditorV from './map-editor.vue';\nimport VideoEditorV from './video-editor.vue';\n\n@Options({\n components: {\n 'chart-editor': ChartEditorV,\n 'image-editor': ImageEditorV,\n 'text-editor': TextEditorV,\n 'map-editor': MapEditorV,\n 'video-editor': VideoEditorV\n }\n})\nexport default class SlideshowEditorV extends Vue {\n @Prop() panel!: SlideshowPanel;\n @Prop() configFileStructure!: ConfigFileStructure;\n @Prop() lang!: string;\n @Prop() sourceCounts!: SourceCounts;\n\n editors: Record = {\n text: 'text-editor',\n image: 'image-editor',\n chart: 'chart-editor',\n map: 'map-editor',\n video: 'video-editor'\n };\n\n // TODO: we use this and a few other functions (updating source counts, etc.) in multiple places. We should probably look in to putting this somewhere else.\n startingConfig: DefaultConfigs = {\n text: {\n type: PanelType.Text,\n title: '',\n content: ''\n },\n dynamic: {\n type: PanelType.Dynamic,\n title: '',\n titleTag: '',\n content: '',\n children: []\n },\n slideshow: {\n type: PanelType.Slideshow,\n items: []\n },\n chart: {\n type: PanelType.Chart,\n src: ''\n },\n image: {\n type: PanelType.Image,\n src: ''\n },\n map: {\n type: PanelType.Map,\n config: '',\n title: '',\n scrollguard: true // default to ON for slideshows. Allows users to use the cursor to switch slides.\n },\n video: {\n type: PanelType.Video,\n title: '',\n videoType: '',\n src: ''\n }\n };\n\n editingIdx = -1;\n newSlideName = '';\n newSlideType: 'text' | 'image' | 'chart' | 'map' = 'text';\n editingStatus: 'none' | 'edit' | 'create' = 'none';\n\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types, @typescript-eslint/no-explicit-any\n onTypeInput(e: any): void {\n this.newSlideType = e.target.value;\n }\n\n editItem(idx: number): void {\n // Save slide changes if neccessary and switch to the newly selected slide.\n this.saveChanges();\n this.editingIdx = idx;\n this.editingStatus = 'edit';\n }\n\n deleteItem(item: number): void {\n const panel = this.panel.items.find((panel: BasePanel, idx: number) => idx === item);\n\n // Update source counts based on which panel is removed.\n switch (panel?.type) {\n case 'map': {\n const mapPanel = panel as MapPanel;\n this.sourceCounts[mapPanel.config] -= 1;\n if (this.sourceCounts[mapPanel.config] === 0) {\n this.configFileStructure.zip.remove(\n `${mapPanel.config.substring(mapPanel.config.indexOf('/') + 1)}`\n );\n }\n break;\n }\n\n case 'chart': {\n const chartPanel = panel as ChartPanel;\n this.sourceCounts[chartPanel.src] -= 1;\n if (this.sourceCounts[chartPanel.src] === 0) {\n this.configFileStructure.zip.remove(`${chartPanel.src.substring(chartPanel.src.indexOf('/') + 1)}`);\n }\n break;\n }\n\n case 'image': {\n const imagePanel = panel as ImagePanel;\n this.sourceCounts[imagePanel.src] -= 1;\n if (this.sourceCounts[imagePanel.src] === 0) {\n this.configFileStructure.zip.remove(`${imagePanel.src.substring(imagePanel.src.indexOf('/') + 1)}`);\n }\n break;\n }\n\n case 'text': {\n break;\n }\n }\n\n // Remove the panel itself.\n this.panel.items = this.panel.items.filter((panel: BasePanel, idx: number) => idx !== item);\n\n // If the slide being removed is the currently selected slide, unselect it.\n if (this.editingIdx === item) {\n this.editingIdx = -1;\n this.editingStatus = 'none';\n }\n }\n\n saveItem(add = false): void {\n let itemConfig;\n\n if (add) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n itemConfig = (this.$refs.slideEditor as any).panel;\n this.panel.items.push(itemConfig);\n } else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n itemConfig = (this.$refs.slideEditor as any).panel;\n }\n\n if (itemConfig.type !== PanelType.Text && itemConfig.type !== PanelType.Map) {\n if (\n this.$refs.slideEditor !== undefined &&\n typeof (this.$refs.slideEditor as ImageEditorV | ChartEditorV).saveChanges === 'function'\n ) {\n (this.$refs.slideEditor as ImageEditorV | ChartEditorV).saveChanges();\n }\n }\n\n this.editingStatus = 'none';\n }\n\n saveChanges(): void {\n return;\n }\n}\n","import { render } from \"./slideshow-editor.vue?vue&type=template&id=5b666f60&scoped=true&ts=true\"\nimport script from \"./slideshow-editor.vue?vue&type=script&lang=ts\"\nexport * from \"./slideshow-editor.vue?vue&type=script&lang=ts\"\n\nimport \"./slideshow-editor.vue?vue&type=style&index=0&id=5b666f60&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/storylines-editor/storylines-editor/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-5b666f60\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, createVNode as _createVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = {\n class: \"block py-20 align-middle text-center h-full\",\n style: {\"margin\":\"0 auto\"}\n}\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_spinner = _resolveComponent(\"spinner\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(_component_spinner, {\n size: \"120px\",\n color: \"#009cd1\",\n style: {\"margin\":\"0 auto\"}\n })\n ]))\n}","\nimport { Options, Vue } from 'vue-property-decorator';\nimport { VueSpinnerOval } from 'vue3-spinners';\n\n@Options({\n components: {\n spinner: VueSpinnerOval\n }\n})\nexport default class LoadingPageV extends Vue {}\n","import { render } from \"./loading-page.vue?vue&type=template&id=f992d808&ts=true\"\nimport script from \"./loading-page.vue?vue&type=script&lang=ts\"\nexport * from \"./loading-page.vue?vue&type=script&lang=ts\"\n\nimport exportComponent from \"/home/runner/work/storylines-editor/storylines-editor/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { toDisplayString as _toDisplayString, normalizeClass as _normalizeClass, createElementVNode as _createElementVNode, resolveDynamicComponent as _resolveDynamicComponent, openBlock as _openBlock, createBlock as _createBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, renderList as _renderList, Fragment as _Fragment, createTextVNode as _createTextVNode, vModelText as _vModelText, withDirectives as _withDirectives, vModelSelect as _vModelSelect } from \"vue\"\n\nconst _hoisted_1 = { class: \"block\" }\nconst _hoisted_2 = { class: \"flex\" }\nconst _hoisted_3 = { key: 0 }\nconst _hoisted_4 = { key: 1 }\nconst _hoisted_5 = { class: \"w-2/3 mt-5\" }\nconst _hoisted_6 = { class: \"table-header\" }\nconst _hoisted_7 = [\"onClick\"]\nconst _hoisted_8 = [\"onClick\"]\nconst _hoisted_9 = { class: \"table-add-row\" }\nconst _hoisted_10 = { class: \"flex flex-col items-center\" }\nconst _hoisted_11 = { key: 0 }\nconst _hoisted_12 = [\"disabled\"]\nconst _hoisted_13 = { key: 0 }\nconst _hoisted_14 = /*#__PURE__*/_createElementVNode(\"br\", null, null, -1)\nconst _hoisted_15 = /*#__PURE__*/_createElementVNode(\"hr\", null, null, -1)\nconst _hoisted_16 = /*#__PURE__*/_createElementVNode(\"br\", null, null, -1)\nconst _hoisted_17 = { class: \"font-bold text-xl\" }\nconst _hoisted_18 = /*#__PURE__*/_createElementVNode(\"br\", null, null, -1)\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"button\", {\n onClick: _cache[0] || (_cache[0] = () => _ctx.changePanel('text')),\n class: _normalizeClass([\"border hover:bg-gray-100\", _ctx.editingStatus === 'text' ? 'border-black' : 'border-gray-300'])\n }, _toDisplayString(_ctx.$t('dynamic.textSection')), 3),\n _createElementVNode(\"button\", {\n onClick: _cache[1] || (_cache[1] = () => _ctx.changePanel('panels')),\n class: _normalizeClass([\"border hover:bg-gray-100\", _ctx.editingStatus !== 'text' ? 'border-black' : 'border-gray-300'])\n }, _toDisplayString(_ctx.$t('dynamic.panel.collection')), 3)\n ]),\n (_ctx.editingStatus === 'text')\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_3, [\n (_openBlock(), _createBlock(_resolveDynamicComponent('text-editor'), {\n key: \"text\",\n panel: _ctx.panel,\n configFileStructure: _ctx.configFileStructure,\n lang: _ctx.lang\n }, null, 8, [\"panel\", \"configFileStructure\", \"lang\"]))\n ]))\n : _createCommentVNode(\"\", true),\n (_ctx.editingStatus === 'panels')\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_4, [\n _createElementVNode(\"table\", _hoisted_5, [\n _createElementVNode(\"tr\", _hoisted_6, [\n _createElementVNode(\"th\", null, _toDisplayString(_ctx.$t('dynamic.panel.id')), 1),\n _createElementVNode(\"th\", null, _toDisplayString(_ctx.$t('dynamic.panel.type')), 1),\n _createElementVNode(\"th\", null, _toDisplayString(_ctx.$t('dynamic.panel.actions')), 1)\n ]),\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.panel.children, (item, idx) => {\n return (_openBlock(), _createElementBlock(\"tr\", {\n class: \"table-contents\",\n key: idx\n }, [\n _createElementVNode(\"td\", null, _toDisplayString(item.id), 1),\n _createElementVNode(\"td\", null, _toDisplayString(_ctx.determineEditorType(item.panel)), 1),\n _createElementVNode(\"td\", null, [\n _createElementVNode(\"span\", {\n onClick: () => _ctx.switchSlide(idx)\n }, _toDisplayString(_ctx.$t('editor.chart.label.edit')), 9, _hoisted_7),\n _createTextVNode(\" | \"),\n _createElementVNode(\"span\", {\n onClick: () => _ctx.removeSlide(item, idx)\n }, _toDisplayString(_ctx.$t('editor.remove')), 9, _hoisted_8)\n ])\n ]))\n }), 128)),\n _createElementVNode(\"tr\", _hoisted_9, [\n _createElementVNode(\"th\", _hoisted_10, [\n _withDirectives(_createElementVNode(\"input\", {\n type: \"text\",\n placeholder: \"Enter Panel ID\",\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = ($event: any) => ((_ctx.newSlideName) = $event))\n }, null, 512), [\n [_vModelText, _ctx.newSlideName]\n ]),\n (_ctx.idUsed)\n ? (_openBlock(), _createElementBlock(\"p\", _hoisted_11, _toDisplayString(_ctx.$t('dynamic.panel.idTaken')), 1))\n : _createCommentVNode(\"\", true)\n ]),\n _createElementVNode(\"th\", null, [\n _withDirectives(_createElementVNode(\"select\", {\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = ($event: any) => ((_ctx.newSlideType) = $event))\n }, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(Object.keys(_ctx.editors), (thing) => {\n return (_openBlock(), _createElementBlock(\"option\", { key: thing }, _toDisplayString(thing), 1))\n }), 128))\n ], 512), [\n [_vModelSelect, _ctx.newSlideType]\n ])\n ]),\n _createElementVNode(\"th\", null, [\n _createElementVNode(\"button\", {\n onClick: _cache[4] || (_cache[4] = \n//@ts-ignore\n(...args) => (_ctx.createNewSlide && _ctx.createNewSlide(...args))),\n disabled: _ctx.idUsed\n }, \"Add New\", 8, _hoisted_12)\n ])\n ])\n ]),\n (_ctx.editingSlide !== -1)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_13, [\n _hoisted_14,\n _hoisted_15,\n _hoisted_16,\n _createElementVNode(\"span\", _hoisted_17, _toDisplayString(_ctx.$t('dynamic.panel.editor')), 1),\n _hoisted_18,\n (_openBlock(), _createBlock(_resolveDynamicComponent(_ctx.editors[_ctx.determineEditorType(_ctx.panel.children[_ctx.editingSlide].panel)]), {\n ref: \"slide\",\n key: _ctx.editingSlide + _ctx.determineEditorType(_ctx.panel.children[_ctx.editingSlide].panel),\n panel: _ctx.panel.children[_ctx.editingSlide].panel,\n configFileStructure: _ctx.configFileStructure,\n lang: _ctx.lang,\n sourceCounts: _ctx.sourceCounts,\n onSlideEdit: _cache[5] || (_cache[5] = ($event: any) => (_ctx.$emit('slide-edit')))\n }, null, 40, [\"panel\", \"configFileStructure\", \"lang\", \"sourceCounts\"]))\n ]))\n : _createCommentVNode(\"\", true)\n ]))\n : _createCommentVNode(\"\", true)\n ]))\n}","\nimport { Options, Prop, Vue } from 'vue-property-decorator';\nimport {\n BasePanel,\n ChartPanel,\n ConfigFileStructure,\n DefaultConfigs,\n DynamicChildItem,\n DynamicPanel,\n ImagePanel,\n MapPanel,\n PanelType,\n SlideshowPanel,\n SourceCounts,\n TextPanel,\n VideoPanel\n} from '@/definitions';\n\nimport ChartEditorV from './chart-editor.vue';\nimport ImageEditorV from './image-editor.vue';\nimport TextEditorV from './text-editor.vue';\nimport MapEditorV from './map-editor.vue';\nimport VideoEditorV from './video-editor.vue';\nimport SlideshowEditorV from './slideshow-editor.vue';\n\n@Options({\n components: {\n 'chart-editor': ChartEditorV,\n 'image-editor': ImageEditorV,\n 'text-editor': TextEditorV,\n 'slideshow-editor': SlideshowEditorV,\n 'dynamic-editor': DynamicEditorV,\n 'map-editor': MapEditorV,\n 'video-editor': VideoEditorV\n }\n})\nexport default class DynamicEditorV extends Vue {\n @Prop() panel!: DynamicPanel;\n @Prop() configFileStructure!: ConfigFileStructure;\n @Prop() lang!: string;\n @Prop() sourceCounts!: SourceCounts;\n\n editors: Record = {\n text: 'text-editor',\n image: 'image-editor',\n slideshow: 'slideshow-editor',\n chart: 'chart-editor',\n map: 'map-editor',\n video: 'video-editor'\n };\n\n startingConfig: DefaultConfigs = {\n text: {\n type: PanelType.Text,\n title: '',\n content: ''\n },\n dynamic: {\n type: PanelType.Dynamic,\n title: '',\n titleTag: '',\n content: '',\n children: []\n },\n slideshow: {\n type: PanelType.Slideshow,\n items: [],\n userCreated: true\n },\n image: {\n type: PanelType.Image,\n src: ''\n },\n chart: {\n type: PanelType.Chart,\n src: ''\n },\n map: {\n type: PanelType.Map,\n config: '',\n title: '',\n scrollguard: false\n },\n video: {\n type: PanelType.Video,\n title: '',\n videoType: '',\n src: ''\n }\n };\n\n editingStatus = 'text';\n editingSlide = -1;\n\n newSlideName = '';\n newSlideType = 'text';\n\n get idUsed(): boolean {\n return this.panel.children.some((ch: DynamicChildItem) => ch.id === this.newSlideName);\n }\n\n changePanel(target: string): void {\n if (this.editingStatus !== 'text') {\n this.saveChanges();\n }\n this.editingStatus = target;\n }\n\n switchSlide(idx: number): void {\n // Save slide changes if neccessary and switch to the newly selected slide.\n this.saveChanges();\n this.editingSlide = idx;\n }\n\n removeSlide(panel: BasePanel, index?: number): void {\n // Update source counts based on which panel is removed.\n switch (panel?.type) {\n case 'map': {\n const mapPanel = panel as MapPanel;\n this.sourceCounts[mapPanel.config] -= 1;\n if (this.sourceCounts[mapPanel.config] === 0) {\n this.configFileStructure.zip.remove(\n `${mapPanel.config.substring(mapPanel.config.indexOf('/') + 1)}`\n );\n }\n break;\n }\n\n case 'chart': {\n const chartPanel = panel as ChartPanel;\n this.sourceCounts[chartPanel.src] -= 1;\n if (this.sourceCounts[chartPanel.src] === 0) {\n this.configFileStructure.zip.remove(`${chartPanel.src.substring(chartPanel.src.indexOf('/') + 1)}`);\n }\n break;\n }\n\n case 'image': {\n const imagePanel = panel as ImagePanel;\n\n this.sourceCounts[imagePanel.src] -= 1;\n if (this.sourceCounts[imagePanel.src] === 0) {\n this.configFileStructure.zip.remove(`${imagePanel.src.substring(imagePanel.src.indexOf('/') + 1)}`);\n }\n break;\n }\n\n case 'slideshow': {\n const slideshowPanel = panel as SlideshowPanel;\n slideshowPanel.items.forEach((item: TextPanel | ImagePanel | MapPanel | ChartPanel) => {\n this.removeSlide(item);\n });\n break;\n }\n\n case 'video': {\n const videoPanel = panel as VideoPanel;\n if (videoPanel.videoType === 'local') {\n this.sourceCounts[videoPanel.src] -= 1;\n if (this.sourceCounts[videoPanel.src] === 0) {\n this.configFileStructure.zip.remove(\n `${videoPanel.src.substring(videoPanel.src.indexOf('/') + 1)}`\n );\n }\n }\n break;\n }\n }\n\n if (index) {\n // Remove the panel itself.\n this.panel.children = this.panel.children.filter((panel: DynamicChildItem, idx: number) => idx !== index);\n\n // If the slide being removed is the currently selected slide, unselect it.\n if (this.editingSlide === index) {\n this.editingSlide = -1;\n }\n }\n }\n\n createNewSlide(): void {\n if (!this.newSlideName) return;\n\n const newConfig = {\n id: this.newSlideName,\n panel: JSON.parse(JSON.stringify(this.startingConfig[this.newSlideType as keyof DefaultConfigs]))\n };\n\n this.newSlideName = '';\n this.panel.children.push(newConfig);\n }\n\n determineEditorType(panel: BasePanel): string {\n if (panel.type !== PanelType.Slideshow) return panel.type;\n if ((panel as SlideshowPanel).items.length === 0 || (panel as SlideshowPanel).userCreated)\n return PanelType.Slideshow;\n\n // Determine whether the slideshow consists of only charts. If so, display the chart editor.\n const allCharts = (panel as SlideshowPanel).items.every((item: BasePanel) => item.type === PanelType.Chart);\n if (allCharts) return PanelType.Chart;\n\n // Determine whether the slideshow consists of only images. If so, display the image editor.\n const allImages = (panel as SlideshowPanel).items.every((item: BasePanel) => item.type === PanelType.Image);\n if (allImages) return PanelType.Image;\n\n // Otherwise display the slideshow editor.\n return PanelType.Slideshow;\n }\n\n saveChanges(): void {\n if (\n this.$refs.slide !== undefined &&\n typeof (this.$refs.slide as ImageEditorV | ChartEditorV).saveChanges === 'function'\n ) {\n (this.$refs.slide as ImageEditorV | ChartEditorV).saveChanges();\n }\n }\n}\n","import { render } from \"./dynamic-editor.vue?vue&type=template&id=93f60e24&ts=true\"\nimport script from \"./dynamic-editor.vue?vue&type=script&lang=ts\"\nexport * from \"./dynamic-editor.vue?vue&type=script&lang=ts\"\n\nimport \"./dynamic-editor.vue?vue&type=style&index=0&id=93f60e24&lang=scss\"\n\nimport exportComponent from \"/home/runner/work/storylines-editor/storylines-editor/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\nimport { Options, Prop, Vue, Watch } from 'vue-property-decorator';\nimport {\n BasePanel,\n ChartPanel,\n ConfigFileStructure,\n DefaultConfigs,\n DynamicChildItem,\n DynamicPanel,\n ImagePanel,\n MapPanel,\n PanelType,\n Slide,\n SlideshowPanel,\n SourceCounts,\n StoryRampConfig,\n TextPanel,\n VideoPanel\n} from '@/definitions';\n\nimport ChartEditorV from './chart-editor.vue';\nimport CustomEditorV from './helpers/custom-editor.vue';\nimport ImageEditorV from './image-editor.vue';\nimport TextEditorV from './text-editor.vue';\nimport MapEditorV from './map-editor.vue';\nimport VideoEditorV from './video-editor.vue';\nimport SlideshowEditorV from './slideshow-editor.vue';\nimport LoadingPageV from './helpers/loading-page.vue';\nimport DynamicEditorV from './dynamic-editor.vue';\nimport ConfirmationModalV from './helpers/confirmation-modal.vue';\n\n@Options({\n components: {\n 'chart-editor': ChartEditorV,\n 'custom-editor': CustomEditorV,\n 'image-editor': ImageEditorV,\n 'text-editor': TextEditorV,\n 'map-editor': MapEditorV,\n 'video-editor': VideoEditorV,\n 'slideshow-editor': SlideshowEditorV,\n 'loading-page': LoadingPageV,\n 'dynamic-editor': DynamicEditorV,\n 'confirmation-modal': ConfirmationModalV\n }\n})\nexport default class SlideEditorV extends Vue {\n config: StoryRampConfig | undefined = undefined;\n @Prop() currentSlide!: Slide;\n @Prop() configFileStructure!: ConfigFileStructure;\n @Prop() lang!: string;\n @Prop() uid!: string;\n @Prop() slideIndex!: number;\n @Prop() isLast!: boolean;\n @Prop() sourceCounts!: SourceCounts;\n\n panelIndex = 0;\n advancedEditorView = false;\n newType = '';\n rightOnly = false;\n\n editors: Record = {\n text: 'text-editor',\n image: 'image-editor',\n slideshow: 'slideshow-editor',\n chart: 'chart-editor',\n map: 'map-editor',\n video: 'video-editor',\n loading: 'loading-page',\n dynamic: 'dynamic-editor'\n };\n\n @Watch('currentSlide', { deep: true })\n onSlideChange(): void {\n this.currentSlide ? (this.rightOnly = this.currentSlide.panel.length === 1) : false;\n }\n\n changePanelType(prevType: string, newType: string): void {\n const startingConfig: DefaultConfigs = {\n text: {\n type: PanelType.Text,\n title: '',\n content: ''\n },\n dynamic: {\n type: PanelType.Dynamic,\n title:\n this.currentSlide.panel[0] && prevType === 'text'\n ? (this.currentSlide.panel[0] as TextPanel).title\n : '',\n titleTag: '',\n content:\n this.currentSlide.panel[0] && prevType === 'text'\n ? (this.currentSlide.panel[0] as TextPanel).content\n : '',\n children: []\n },\n slideshow: {\n type: PanelType.Slideshow,\n items: [],\n userCreated: true\n },\n image: {\n type: PanelType.Image,\n src: ''\n },\n chart: {\n type: PanelType.Chart,\n src: ''\n },\n map: {\n type: PanelType.Map,\n config: '',\n title: '',\n scrollguard: false\n },\n video: {\n type: PanelType.Video,\n title: '',\n videoType: '',\n src: ''\n }\n };\n\n // Before swapping panel type, update sources from the to-be-deleted config.\n this.currentSlide.panel.forEach((panel: BasePanel) => this.removeSourceCounts(panel));\n\n // When switching to a dynamic panel, remove the secondary panel.\n if (newType === 'dynamic') {\n this.panelIndex = 0;\n this.currentSlide['panel'] = [startingConfig[newType as keyof DefaultConfigs]];\n } else {\n // Switching panel type when dynamic panels are not involved.\n this.currentSlide.panel[this.panelIndex] = startingConfig[newType as keyof DefaultConfigs];\n }\n }\n\n removeSourceCounts(panel: BasePanel): void {\n // The provided panel is being removed. Update source counts accordingly.\n switch (panel.type) {\n case 'map': {\n const mapPanel = panel as MapPanel;\n this.sourceCounts[mapPanel.config] -= 1;\n if (this.sourceCounts[mapPanel.config] === 0) {\n this.configFileStructure.zip.remove(\n `${mapPanel.config.substring(mapPanel.config.indexOf('/') + 1)}`\n );\n }\n break;\n }\n\n case 'image': {\n const imagePanel = panel as ImagePanel;\n this.sourceCounts[imagePanel.src] -= 1;\n if (this.sourceCounts[imagePanel.src] === 0) {\n this.configFileStructure.zip.remove(`${imagePanel.src.substring(imagePanel.src.indexOf('/') + 1)}`);\n }\n\n break;\n }\n\n case 'chart': {\n const chartPanel = panel as ChartPanel;\n this.sourceCounts[chartPanel.src] -= 1;\n if (this.sourceCounts[chartPanel.src] === 0) {\n this.configFileStructure.zip.remove(`${chartPanel.src.substring(chartPanel.src.indexOf('/') + 1)}`);\n }\n\n break;\n }\n\n case 'slideshow': {\n const slideshowPanel = panel as SlideshowPanel;\n slideshowPanel.items.forEach((item: TextPanel | ImagePanel | MapPanel | ChartPanel) => {\n this.removeSourceCounts(item);\n });\n break;\n }\n\n case 'video': {\n const videoPanel = panel as VideoPanel;\n if (videoPanel.videoType === 'local') {\n this.sourceCounts[videoPanel.src] -= 1;\n if (this.sourceCounts[videoPanel.src] === 0) {\n this.configFileStructure.zip.remove(\n `${videoPanel.src.substring(videoPanel.src.indexOf('/') + 1)}`\n );\n }\n }\n break;\n }\n\n case 'dynamic': {\n const dynamicPanel = panel as DynamicPanel;\n dynamicPanel.children.forEach((subPanel: DynamicChildItem) => {\n this.removeSourceCounts(subPanel.panel);\n });\n break;\n }\n\n case 'text': {\n break;\n }\n }\n }\n\n saveChanges(): void {\n if (\n this.$refs.editor !== undefined &&\n typeof (this.$refs.editor as ImageEditorV | ChartEditorV | VideoEditorV | CustomEditorV).saveChanges ===\n 'function'\n ) {\n (this.$refs.editor as ImageEditorV | ChartEditorV | VideoEditorV | CustomEditorV).saveChanges();\n }\n }\n\n selectSlide(index: number): void {\n this.$emit('slide-change', index);\n }\n\n cancelTypeChange(): void {\n (this.$refs.typeSelector as HTMLSelectElement).value = this.determineEditorType(\n this.currentSlide.panel[this.panelIndex]\n );\n }\n\n determineEditorType(panel: BasePanel): string {\n if (panel.type !== PanelType.Slideshow) return panel.type;\n if ((panel as SlideshowPanel).items.length === 0 || (panel as SlideshowPanel).userCreated)\n return PanelType.Slideshow;\n\n // Determine whether the slideshow consists of only charts. If so, display the chart editor.\n const allCharts = (panel as SlideshowPanel).items.every((item: BasePanel) => item.type === PanelType.Chart);\n if (allCharts) return PanelType.Chart;\n\n // Determine whether the slideshow consists of only images. If so, display the image editor.\n const allImages = (panel as SlideshowPanel).items.every((item: BasePanel) => item.type === PanelType.Image);\n if (allImages) return PanelType.Image;\n\n // Otherwise display the slideshow editor.\n return PanelType.Slideshow;\n }\n\n toggleRightOnly(): void {\n this.saveChanges();\n if (this.rightOnly) {\n this.panelIndex = 0;\n this.currentSlide['panel'] = [this.currentSlide.panel[1]];\n } else {\n this.currentSlide['panel'] = [\n Object.assign(\n {},\n {\n type: PanelType.Text,\n title: '',\n content: ''\n }\n ),\n Object.assign({}, this.currentSlide.panel[0])\n ];\n }\n }\n}\n","import { render } from \"./slide-editor.vue?vue&type=template&id=4c97a990&scoped=true&ts=true\"\nimport script from \"./slide-editor.vue?vue&type=script&lang=ts\"\nexport * from \"./slide-editor.vue?vue&type=script&lang=ts\"\n\nimport \"./slide-editor.vue?vue&type=style&index=0&id=4c97a990&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/storylines-editor/storylines-editor/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-4c97a990\"]])\n\nexport default __exports__","import { toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, withModifiers as _withModifiers, resolveDirective as _resolveDirective, withDirectives as _withDirectives, renderList as _renderList, Fragment as _Fragment, vModelSelect as _vModelSelect, resolveComponent as _resolveComponent, withCtx as _withCtx, createVNode as _createVNode, createTextVNode as _createTextVNode, normalizeClass as _normalizeClass, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-33456e0a\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"flex toc-header p-2 mt-10\" }\nconst _hoisted_2 = { class: \"flex items-center justify-center font-bold\" }\nconst _hoisted_3 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", { class: \"flex-1\" }, null, -1))\nconst _hoisted_4 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", { class: \"ml-auto\" }, null, -1))\nconst _hoisted_5 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", { class: \"align-middle inline-block px-1\" }, [\n /*#__PURE__*/_createElementVNode(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"10\",\n height: \"10\",\n viewBox: \"0 0 24 24\"\n }, [\n /*#__PURE__*/_createElementVNode(\"path\", { d: \"M24 10h-10v-10h-4v10h-10v4h10v10h4v-10h10z\" })\n ])\n], -1))\nconst _hoisted_6 = { class: \"align-middle inline-block\" }\nconst _hoisted_7 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n height: \"24\",\n width: \"24\"\n}, [\n /*#__PURE__*/_createElementVNode(\"path\", { d: \"M5 22q-.825 0-1.413-.587Q3 20.825 3 20V6h2v14h11v2Zm4-4q-.825 0-1.412-.587Q7 16.825 7 16V4q0-.825.588-1.413Q8.175 2 9 2h9q.825 0 1.413.587Q20 3.175 20 4v12q0 .825-.587 1.413Q18.825 18 18 18Zm0-2h9V4H9v12Zm0 0V4v12Z\" })\n], -1))\nconst _hoisted_8 = [\n _hoisted_7\n]\nconst _hoisted_9 = {\n slot: \"header\",\n class: \"text-xl font-bold\"\n}\nconst _hoisted_10 = { class: \"flex flex-col\" }\nconst _hoisted_11 = { class: \"text-lg font-bold my-6\" }\nconst _hoisted_12 = { class: \"flex\" }\nconst _hoisted_13 = [\"value\"]\nconst _hoisted_14 = [\"onClick\"]\nconst _hoisted_15 = { class: \"self-center overflow-ellipsis whitespace-nowrap overflow-hidden flex-grow ml-2\" }\nconst _hoisted_16 = { class: \"font-bold overflow-hidden\" }\nconst _hoisted_17 = { class: \"flex\" }\nconst _hoisted_18 = { class: \"flex flex-col\" }\nconst _hoisted_19 = [\"onClick\"]\nconst _hoisted_20 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"18\",\n height: \"18\",\n viewBox: \"0 0 24 24\"\n}, [\n /*#__PURE__*/_createElementVNode(\"path\", { d: \"M3 6l3 18h12l3-18h-18zm19-4v2h-20v-2h5.711c.9 0 1.631-1.099 1.631-2h5.316c0 .901.73 2 1.631 2h5.711z\" })\n], -1))\nconst _hoisted_21 = [\n _hoisted_20\n]\nconst _hoisted_22 = [\"onClick\"]\nconst _hoisted_23 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n height: \"24\",\n width: \"24\"\n}, [\n /*#__PURE__*/_createElementVNode(\"path\", { d: \"M5 22q-.825 0-1.413-.587Q3 20.825 3 20V6h2v14h11v2Zm4-4q-.825 0-1.412-.587Q7 16.825 7 16V4q0-.825.588-1.413Q8.175 2 9 2h9q.825 0 1.413.587Q20 3.175 20 4v12q0 .825-.587 1.413Q18.825 18 18 18Zm0-2h9V4H9v12Zm0 0V4v12Z\" })\n], -1))\nconst _hoisted_24 = [\n _hoisted_23\n]\nconst _hoisted_25 = { class: \"flex flex-col mr-2 ml-1 my-1\" }\nconst _hoisted_26 = [\"onClick\", \"disabled\"]\nconst _hoisted_27 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n class: \"fill-current\",\n height: \"20\",\n width: \"20\"\n}, [\n /*#__PURE__*/_createElementVNode(\"path\", { d: \"m2 16 8-12 8 12Z\" })\n], -1))\nconst _hoisted_28 = [\n _hoisted_27\n]\nconst _hoisted_29 = [\"onClick\", \"disabled\"]\nconst _hoisted_30 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n class: \"fill-current\",\n height: \"20\",\n width: \"20\"\n}, [\n /*#__PURE__*/_createElementVNode(\"path\", { d: \"m2 16 8-12 8 12Z\" })\n], -1))\nconst _hoisted_31 = [\n _hoisted_30\n]\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_vue_final_modal = _resolveComponent(\"vue-final-modal\")!\n const _component_confirmation_modal = _resolveComponent(\"confirmation-modal\")!\n const _component_draggable = _resolveComponent(\"draggable\")!\n const _directive_tippy = _resolveDirective(\"tippy\")!\n\n return (_openBlock(), _createElementBlock(\"div\", null, [\n _createElementVNode(\"div\", _hoisted_1, [\n _createElementVNode(\"span\", _hoisted_2, _toDisplayString(_ctx.$t('editor.slides.title')), 1),\n _hoisted_3,\n _hoisted_4,\n _createElementVNode(\"button\", {\n onClick: _cache[0] || (_cache[0] = \n//@ts-ignore\n(...args) => (_ctx.addNewSlide && _ctx.addNewSlide(...args)))\n }, [\n _hoisted_5,\n _createElementVNode(\"span\", _hoisted_6, _toDisplayString(_ctx.$t('editor.slides.addSlide')), 1)\n ]),\n _withDirectives((_openBlock(), _createElementBlock(\"button\", {\n onClick: _cache[1] || (_cache[1] = _withModifiers(($event: any) => (_ctx.$vfm.open(`copy-from-other-lang`)), [\"stop\"]))\n }, _hoisted_8)), [\n [_directive_tippy, {\n delay: '200',\n placement: 'right',\n content: _ctx.$t('editor.slides.copyFromLang'),\n animateFill: true\n }]\n ]),\n _createVNode(_component_vue_final_modal, {\n modalId: \"copy-from-other-lang\",\n \"content-class\": \"flex flex-col max-w-xl mx-4 p-4 bg-white border rounded-lg space-y-2\",\n class: \"flex justify-center items-center\"\n }, {\n default: _withCtx(() => [\n _createElementVNode(\"h2\", _hoisted_9, _toDisplayString(_ctx.$t('editor.slides.copyFromLang')), 1),\n _createElementVNode(\"div\", _hoisted_10, [\n _createElementVNode(\"button\", {\n class: \"w-32 h-12 ml-0\",\n onClick: _cache[2] || (_cache[2] = ($event: any) => (_ctx.copyAllFromOtherLang(_ctx.configFileStructure.configs[_ctx.lang === 'en' ? 'fr' : 'en'].slides)))\n }, _toDisplayString(_ctx.$t('editor.slides.copyAll')), 1),\n _createElementVNode(\"span\", _hoisted_11, _toDisplayString(_ctx.$t('editor.or')), 1),\n _createElementVNode(\"div\", _hoisted_12, [\n _withDirectives(_createElementVNode(\"select\", {\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = ($event: any) => ((_ctx.selectedForCopying) = $event)),\n class: \"overflow-ellipsis copy-select\"\n }, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.configFileStructure.configs[_ctx.lang === 'en' ? 'fr' : 'en']\n .slides, (slide, index) => {\n return (_openBlock(), _createElementBlock(\"option\", {\n value: index,\n key: slide.title + index\n }, _toDisplayString(_ctx.$t('editor.slides.slide')) + \" \" + _toDisplayString(index + ': ' + slide.title), 9, _hoisted_13))\n }), 128))\n ], 512), [\n [_vModelSelect, _ctx.selectedForCopying]\n ]),\n _createElementVNode(\"button\", {\n onClick: _cache[4] || (_cache[4] = ($event: any) => (\n _ctx.copyFromOtherLang(\n _ctx.configFileStructure.configs[_ctx.lang === 'en' ? 'fr' : 'en'].slides[_ctx.selectedForCopying]\n )\n ))\n }, _toDisplayString(_ctx.$t('editor.slides.copy')), 1)\n ])\n ])\n ]),\n _: 1\n })\n ]),\n _createElementVNode(\"ul\", null, [\n _createVNode(_component_draggable, {\n modelValue: _ctx.slides,\n \"onUpdate:modelValue\": _cache[5] || (_cache[5] = ($event: any) => ((_ctx.slides) = $event)),\n onUpdate: _cache[6] || (_cache[6] = ($event: any) => (_ctx.$emit('slides-updated', _ctx.slides))),\n \"item-key\": \"title\"\n }, {\n item: _withCtx(({ element, index }) => [\n _withDirectives((_openBlock(), _createElementBlock(\"li\", {\n class: _normalizeClass([\"toc-slide border-t flex px-2 cursor-pointer hover:bg-gray-100\", _ctx.currentSlide === element ? 'bg-gray-100' : '']),\n onClick: ($event: any) => (_ctx.selectSlide(index)),\n key: element.title + index\n }, [\n _createElementVNode(\"div\", _hoisted_15, [\n _createTextVNode(_toDisplayString(_ctx.$t('editor.slides.slide')) + \" \" + _toDisplayString(index + 1) + \": \", 1),\n _createElementVNode(\"span\", _hoisted_16, _toDisplayString(element.title || 'Add a title'), 1)\n ]),\n _createElementVNode(\"div\", _hoisted_17, [\n _createElementVNode(\"div\", _hoisted_18, [\n _createElementVNode(\"button\", {\n onClick: _withModifiers(($event: any) => (_ctx.$vfm.open(`delete-slide-${index}`)), [\"stop\"])\n }, _hoisted_21, 8, _hoisted_19),\n _createElementVNode(\"button\", {\n onClick: _withModifiers(($event: any) => (_ctx.copySlide(index)), [\"stop\"])\n }, _hoisted_24, 8, _hoisted_22)\n ]),\n _createElementVNode(\"div\", _hoisted_25, [\n _createElementVNode(\"button\", {\n class: _normalizeClass(index == 0 ? 'text-gray-500 cursor-not-allowed' : ''),\n onClick: _withModifiers(($event: any) => (_ctx.moveUp(index)), [\"stop\"]),\n disabled: index == 0\n }, _hoisted_28, 10, _hoisted_26),\n _createElementVNode(\"button\", {\n class: _normalizeClass([\"rotate-180 transform\", index == _ctx.slides.length - 1 ? 'text-gray-500 cursor-not-allowed' : '']),\n onClick: _withModifiers(($event: any) => (_ctx.moveDown(index)), [\"stop\"]),\n disabled: index == _ctx.slides.length - 1\n }, _hoisted_31, 10, _hoisted_29)\n ])\n ]),\n _createVNode(_component_confirmation_modal, {\n name: `delete-slide-${index}`,\n message: _ctx.$t('editor.slides.deleteSlide.confirm', { title: element.title }),\n onOk: ($event: any) => (_ctx.removeSlide(index))\n }, null, 8, [\"name\", \"message\", \"onOk\"])\n ], 10, _hoisted_14)), [\n [_directive_tippy, {\n delay: '200',\n placement: 'right',\n content: element.title,\n animateFill: true\n }]\n ])\n ]),\n _: 1\n }, 8, [\"modelValue\"])\n ])\n ]))\n}","\nimport { Options, Prop, Vue } from 'vue-property-decorator';\nimport {\n BasePanel,\n ChartPanel,\n ConfigFileStructure,\n DynamicChildItem,\n DynamicPanel,\n ImagePanel,\n MapPanel,\n Slide,\n SlideshowPanel,\n SourceCounts,\n TextPanel,\n VideoPanel\n} from '@/definitions';\nimport { VueFinalModal } from 'vue-final-modal';\nimport cloneDeep from 'clone-deep';\nimport draggable from 'vuedraggable';\n\nimport SlideEditorV from './slide-editor.vue';\nimport ConfirmationModalV from './helpers/confirmation-modal.vue';\n\n@Options({\n components: {\n 'slide-editor': SlideEditorV,\n 'confirmation-modal': ConfirmationModalV,\n 'vue-final-modal': VueFinalModal,\n draggable\n }\n})\nexport default class SlideTocV extends Vue {\n @Prop() slides!: Slide[];\n @Prop() currentSlide!: Slide | string;\n @Prop() slideIndex!: number;\n @Prop() configFileStructure!: ConfigFileStructure;\n @Prop() lang!: string;\n @Prop() sourceCounts!: SourceCounts;\n\n selectedForCopying = 0;\n\n selectSlide(index: number): void {\n this.$emit('slide-change', index);\n }\n\n addNewSlide(): void {\n this.slides.push({\n title: '',\n panel: [\n {\n type: 'text',\n title: '',\n content: ''\n } as TextPanel,\n {\n type: 'text',\n title: '',\n content: ''\n } as TextPanel\n ]\n });\n this.selectSlide(this.slides.length - 1);\n this.$emit('slides-updated', this.slides);\n }\n\n copyFromOtherLang(slide: Slide | undefined): void {\n if (slide) {\n this.slides.splice(this.slides.length, 0, cloneDeep(slide));\n this.$emit('slides-updated', this.slides);\n }\n }\n\n copyAllFromOtherLang(slides: Slide[] | undefined): void {\n if (slides) {\n this.slides.splice(this.slides.length, 0, ...slides.map((slide) => cloneDeep(slide)));\n this.$emit('slides-updated', this.slides);\n }\n }\n\n copySlide(index: number): void {\n this.slides.splice(index + 1, 0, cloneDeep(this.slides[index]));\n this.$emit('slides-updated', this.slides);\n }\n\n removeSlide(index: number): void {\n if (index === this.slideIndex) {\n this.$emit('slide-change', -1);\n }\n\n // Before removing the slide, updated the sources for the panels.\n this.removeSourceCounts(index);\n\n this.slides.splice(index, 1);\n this.$emit('slides-updated', this.slides);\n }\n\n removeSourceCounts(deletedIndex: number): void {\n const panel = this.slides.find((slide: Slide, idx: number) => idx === deletedIndex)?.panel;\n panel?.forEach((p: BasePanel) => this.removeSourceHelper(p));\n }\n\n removeSourceHelper(panel: BasePanel): void {\n // The provided panel is being removed. Update source counts accordingly.\n switch (panel.type) {\n case 'map': {\n const mapPanel = panel as MapPanel;\n this.sourceCounts[mapPanel.config] -= 1;\n if (this.sourceCounts[mapPanel.config] === 0) {\n this.configFileStructure.zip.remove(\n `${mapPanel.config.substring(mapPanel.config.indexOf('/') + 1)}`\n );\n }\n break;\n }\n\n case 'image': {\n const imagePanel = panel as ImagePanel;\n this.sourceCounts[imagePanel.src] -= 1;\n if (this.sourceCounts[imagePanel.src] === 0) {\n this.configFileStructure.zip.remove(`${imagePanel.src.substring(imagePanel.src.indexOf('/') + 1)}`);\n }\n\n break;\n }\n\n case 'chart': {\n const chartPanel = panel as ChartPanel;\n this.sourceCounts[chartPanel.src] -= 1;\n if (this.sourceCounts[chartPanel.src] === 0) {\n this.configFileStructure.zip.remove(`${chartPanel.src.substring(chartPanel.src.indexOf('/') + 1)}`);\n }\n\n break;\n }\n\n case 'slideshow': {\n const slideshowPanel = panel as SlideshowPanel;\n slideshowPanel.items.forEach((item: TextPanel | MapPanel | ChartPanel | ImagePanel) => {\n this.removeSourceHelper(item);\n });\n break;\n }\n\n case 'video': {\n const videoPanel = panel as VideoPanel;\n if (videoPanel.videoType === 'local') {\n this.sourceCounts[videoPanel.src] -= 1;\n if (this.sourceCounts[videoPanel.src] === 0) {\n this.configFileStructure.zip.remove(\n `${videoPanel.src.substring(videoPanel.src.indexOf('/') + 1)}`\n );\n }\n }\n break;\n }\n\n case 'dynamic': {\n const dynamicPanel = panel as DynamicPanel;\n dynamicPanel.children.forEach((subPanel: DynamicChildItem) => {\n this.removeSourceHelper(subPanel.panel);\n });\n break;\n }\n\n case 'text': {\n break;\n }\n }\n }\n\n moveUp(index: number): void {\n this.moveDown(index - 1);\n }\n\n moveDown(index: number): void {\n this.slides.splice(index + 1, 0, this.slides.splice(index, 1)[0]);\n this.$emit('slides-updated', this.slides);\n }\n}\n","import { render } from \"./slide-toc.vue?vue&type=template&id=33456e0a&scoped=true&ts=true\"\nimport script from \"./slide-toc.vue?vue&type=script&lang=ts\"\nexport * from \"./slide-toc.vue?vue&type=script&lang=ts\"\n\nimport \"./slide-toc.vue?vue&type=style&index=0&id=33456e0a&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/storylines-editor/storylines-editor/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-33456e0a\"]])\n\nexport default __exports__","import { toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, withModifiers as _withModifiers, vModelSelect as _vModelSelect, withDirectives as _withDirectives } from \"vue\"\n\nconst _hoisted_1 = { class: \"mb-5\" }\nconst _hoisted_2 = [\"value\"]\nconst _hoisted_3 = /*#__PURE__*/_createElementVNode(\"br\", null, null, -1)\nconst _hoisted_4 = { class: \"mb-5\" }\nconst _hoisted_5 = [\"value\"]\nconst _hoisted_6 = { class: \"mb-5\" }\nconst _hoisted_7 = [\"value\"]\nconst _hoisted_8 = /*#__PURE__*/_createElementVNode(\"br\", null, null, -1)\nconst _hoisted_9 = { key: 0 }\nconst _hoisted_10 = [\"src\"]\nconst _hoisted_11 = {\n key: 1,\n class: \"image-preview\"\n}\nconst _hoisted_12 = { class: \"mb-5\" }\nconst _hoisted_13 = [\"value\"]\nconst _hoisted_14 = /*#__PURE__*/_createElementVNode(\"br\", null, null, -1)\nconst _hoisted_15 = [\"value\"]\nconst _hoisted_16 = /*#__PURE__*/_createElementVNode(\"br\", null, null, -1)\nconst _hoisted_17 = /*#__PURE__*/_createElementVNode(\"label\", { class: \"mb-5\" }, null, -1)\nconst _hoisted_18 = { class: \"inline-block\" }\nconst _hoisted_19 = /*#__PURE__*/_createElementVNode(\"br\", null, null, -1)\nconst _hoisted_20 = [\"value\"]\nconst _hoisted_21 = /*#__PURE__*/_createElementVNode(\"br\", null, null, -1)\nconst _hoisted_22 = /*#__PURE__*/_createElementVNode(\"label\", { class: \"mb-5\" }, null, -1)\nconst _hoisted_23 = { class: \"inline-block\" }\nconst _hoisted_24 = /*#__PURE__*/_createElementVNode(\"br\", null, null, -1)\nconst _hoisted_25 = [\"value\"]\nconst _hoisted_26 = /*#__PURE__*/_createElementVNode(\"br\", null, null, -1)\nconst _hoisted_27 = /*#__PURE__*/_createElementVNode(\"label\", { class: \"mb-5\" }, null, -1)\nconst _hoisted_28 = { class: \"inline-block\" }\nconst _hoisted_29 = /*#__PURE__*/_createElementVNode(\"br\", null, null, -1)\nconst _hoisted_30 = { class: \"mr-15\" }\nconst _hoisted_31 = { value: \"vertical\" }\nconst _hoisted_32 = { value: \"horizontal\" }\nconst _hoisted_33 = /*#__PURE__*/_createElementVNode(\"br\", null, null, -1)\nconst _hoisted_34 = /*#__PURE__*/_createElementVNode(\"label\", { class: \"mb-5\" }, null, -1)\nconst _hoisted_35 = { class: \"inline-block\" }\nconst _hoisted_36 = /*#__PURE__*/_createElementVNode(\"br\", null, null, -1)\nconst _hoisted_37 = { class: \"mb-5\" }\nconst _hoisted_38 = [\"value\"]\nconst _hoisted_39 = /*#__PURE__*/_createElementVNode(\"br\", null, null, -1)\nconst _hoisted_40 = /*#__PURE__*/_createElementVNode(\"br\", null, null, -1)\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_openBlock(), _createElementBlock(\"div\", null, [\n _createElementVNode(\"label\", _hoisted_1, _toDisplayString(_ctx.$t('editor.title')) + \":\", 1),\n _createElementVNode(\"input\", {\n type: \"text\",\n name: \"title\",\n value: _ctx.metadata.title,\n onChange: _cache[0] || (_cache[0] = \n//@ts-ignore\n(...args) => (_ctx.metadataChanged && _ctx.metadataChanged(...args))),\n class: \"w-1/3\"\n }, null, 40, _hoisted_2),\n _hoisted_3,\n _createElementVNode(\"label\", _hoisted_4, _toDisplayString(_ctx.$t('editor.slides.title')) + \":\", 1),\n _createElementVNode(\"input\", {\n type: \"text\",\n name: \"introTitle\",\n value: _ctx.metadata.introTitle,\n onChange: _cache[1] || (_cache[1] = \n//@ts-ignore\n(...args) => (_ctx.metadataChanged && _ctx.metadataChanged(...args))),\n class: \"w-1/4\"\n }, null, 40, _hoisted_5),\n _createElementVNode(\"label\", _hoisted_6, _toDisplayString(_ctx.$t('editor.slides.intro')) + \":\", 1),\n _createElementVNode(\"input\", {\n type: \"text\",\n name: \"introSubtitle\",\n value: _ctx.metadata.introSubtitle,\n onChange: _cache[2] || (_cache[2] = \n//@ts-ignore\n(...args) => (_ctx.metadataChanged && _ctx.metadataChanged(...args))),\n class: \"w-1/4\"\n }, null, 40, _hoisted_7),\n _hoisted_8,\n (!!_ctx.metadata.logoPreview)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_9, [\n _createElementVNode(\"label\", null, _toDisplayString(_ctx.$t('editor.logoPreview')) + \":\", 1),\n (!!_ctx.metadata.logoPreview && _ctx.metadata.logoPreview != 'error')\n ? (_openBlock(), _createElementBlock(\"img\", {\n key: 0,\n src: _ctx.metadata.logoPreview,\n class: \"image-preview\"\n }, null, 8, _hoisted_10))\n : _createCommentVNode(\"\", true),\n (_ctx.metadata.logoPreview == 'error')\n ? (_openBlock(), _createElementBlock(\"p\", _hoisted_11, _toDisplayString(_ctx.$t('editor.image.loadingError')), 1))\n : _createCommentVNode(\"\", true)\n ]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"label\", _hoisted_12, _toDisplayString(_ctx.$t('editor.logo')) + \":\", 1),\n _createElementVNode(\"input\", {\n type: \"text\",\n onChange: _cache[3] || (_cache[3] = ($event: any) => (_ctx.$emit('logo-source-changed', $event))),\n value: _ctx.metadata.logoName,\n class: \"w-1/4\"\n }, null, 40, _hoisted_13),\n _createElementVNode(\"button\", {\n onClick: _cache[4] || (_cache[4] = _withModifiers(\n//@ts-ignore\n(...args) => (_ctx.openFileSelector && _ctx.openFileSelector(...args)), [\"stop\"])),\n class: \"bg-black text-white hover:bg-gray-800\"\n }, _toDisplayString(_ctx.$t('editor.browse')), 1),\n (_ctx.metadata.logoName || _ctx.metadata.logoPreview)\n ? (_openBlock(), _createElementBlock(\"button\", {\n key: 1,\n onClick: _cache[5] || (_cache[5] = _withModifiers(\n//@ts-ignore\n(...args) => (_ctx.removeLogo && _ctx.removeLogo(...args)), [\"stop\"])),\n class: \"border border-black\"\n }, _toDisplayString(_ctx.$t('editor.remove')), 1))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"input\", {\n type: \"file\",\n id: \"logoUpload\",\n onChange: _cache[6] || (_cache[6] = ($event: any) => (_ctx.$emit('logo-changed', $event))),\n class: \"w-1/4\",\n style: {\"display\":\"none\"}\n }, null, 32),\n _hoisted_14,\n _createElementVNode(\"label\", null, _toDisplayString(_ctx.$t('editor.logoAltText')) + \":\", 1),\n _createElementVNode(\"input\", {\n type: \"text\",\n name: \"logoAltText\",\n value: _ctx.metadata.logoAltText,\n onChange: _cache[7] || (_cache[7] = \n//@ts-ignore\n(...args) => (_ctx.metadataChanged && _ctx.metadataChanged(...args))),\n class: \"w-2/3\"\n }, null, 40, _hoisted_15),\n _hoisted_16,\n _hoisted_17,\n _createElementVNode(\"p\", _hoisted_18, [\n _createElementVNode(\"i\", null, _toDisplayString(_ctx.$t('editor.logoAltText.desc')), 1)\n ]),\n _hoisted_19,\n _createElementVNode(\"label\", null, _toDisplayString(_ctx.$t('editor.contextLink')) + \":\", 1),\n _createElementVNode(\"input\", {\n type: \"text\",\n name: \"contextLink\",\n value: _ctx.metadata.contextLink,\n onChange: _cache[8] || (_cache[8] = \n//@ts-ignore\n(...args) => (_ctx.metadataChanged && _ctx.metadataChanged(...args))),\n class: \"w-2/3\"\n }, null, 40, _hoisted_20),\n _hoisted_21,\n _hoisted_22,\n _createElementVNode(\"p\", _hoisted_23, [\n _createElementVNode(\"i\", null, _toDisplayString(_ctx.$t('editor.contextLink.info')), 1)\n ]),\n _hoisted_24,\n _createElementVNode(\"label\", null, _toDisplayString(_ctx.$t('editor.contextLabel')) + \":\", 1),\n _createElementVNode(\"input\", {\n type: \"text\",\n name: \"contextLabel\",\n value: _ctx.metadata.contextLabel,\n onChange: _cache[9] || (_cache[9] = \n//@ts-ignore\n(...args) => (_ctx.metadataChanged && _ctx.metadataChanged(...args))),\n class: \"w-2/3\"\n }, null, 40, _hoisted_25),\n _hoisted_26,\n _hoisted_27,\n _createElementVNode(\"p\", _hoisted_28, [\n _createElementVNode(\"i\", null, _toDisplayString(_ctx.$t('editor.contextLabel.info')), 1)\n ]),\n _hoisted_29,\n _createElementVNode(\"label\", _hoisted_30, _toDisplayString(_ctx.$t('editor.tocOrientation')) + \":\", 1),\n _withDirectives(_createElementVNode(\"select\", {\n class: \"border-solid border border-black p-1\",\n name: \"tocOrientation\",\n id: \"toc\",\n onChange: _cache[10] || (_cache[10] = \n//@ts-ignore\n(...args) => (_ctx.metadataChanged && _ctx.metadataChanged(...args))),\n \"onUpdate:modelValue\": _cache[11] || (_cache[11] = ($event: any) => ((_ctx.metadata.tocOrientation) = $event))\n }, [\n _createElementVNode(\"option\", _hoisted_31, _toDisplayString(_ctx.$t('editor.tocOrientation.vertical')), 1),\n _createElementVNode(\"option\", _hoisted_32, _toDisplayString(_ctx.$t('editor.tocOrientation.horizontal')), 1)\n ], 544), [\n [_vModelSelect, _ctx.metadata.tocOrientation]\n ]),\n _hoisted_33,\n _hoisted_34,\n _createElementVNode(\"p\", _hoisted_35, [\n _createElementVNode(\"i\", null, _toDisplayString(_ctx.$t('editor.tocOrientation.info')), 1)\n ]),\n _hoisted_36,\n _createElementVNode(\"label\", _hoisted_37, _toDisplayString(_ctx.$t('editor.dateModified')) + \":\", 1),\n _createElementVNode(\"input\", {\n type: \"date\",\n name: \"dateModified\",\n value: _ctx.metadata.dateModified,\n onChange: _cache[12] || (_cache[12] = \n//@ts-ignore\n(...args) => (_ctx.metadataChanged && _ctx.metadataChanged(...args)))\n }, null, 40, _hoisted_38),\n _hoisted_39,\n _hoisted_40\n ]))\n}","\nimport { Prop, Vue } from 'vue-property-decorator';\n\nexport default class MetadataEditorV extends Vue {\n @Prop() metadata!: {\n title: string;\n introTitle: string;\n introSubtitle: string;\n logoName: string;\n logoPreview: string;\n logoAltText: string;\n contextLink: string;\n contextLabel: string;\n tocOrientation: string;\n dateModified: string;\n };\n\n openFileSelector(): void {\n document.getElementById('logoUpload')?.click();\n }\n\n metadataChanged(event: Event): void {\n this.$emit(\n 'metadata-changed',\n (event.target as HTMLInputElement).name,\n (event.target as HTMLInputElement).value\n );\n }\n\n removeLogo(): void {\n this.metadata.logoName = '';\n this.metadata.logoPreview = '';\n }\n}\n","import { render } from \"./metadata-content.vue?vue&type=template&id=ae35e790&ts=true\"\nimport script from \"./metadata-content.vue?vue&type=script&lang=ts\"\nexport * from \"./metadata-content.vue?vue&type=script&lang=ts\"\n\nimport exportComponent from \"/home/runner/work/storylines-editor/storylines-editor/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, resolveComponent as _resolveComponent, resolveDirective as _resolveDirective, withCtx as _withCtx, createBlock as _createBlock, withDirectives as _withDirectives, toDisplayString as _toDisplayString, normalizeClass as _normalizeClass, createCommentVNode as _createCommentVNode, Transition as _Transition, createVNode as _createVNode, normalizeProps as _normalizeProps, guardReactiveProps as _guardReactiveProps, renderSlot as _renderSlot, withModifiers as _withModifiers, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-ec080f10\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"editor-container\" }\nconst _hoisted_2 = { class: \"editor-header sticky flex items-center border-b border-black bg-gray-200 py-2 px-2 z-10\" }\nconst _hoisted_3 = { class: \"mx-1\" }\nconst _hoisted_4 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"18\",\n height: \"18.001\",\n viewBox: \"0 0 18 18.001\"\n}, [\n /*#__PURE__*/_createElementVNode(\"path\", {\n id: \"logout-Icon-SVG-098767893\",\n d: \"M5.808,13.782v1.406A2.816,2.816,0,0,0,8.621,18h7.067A2.816,2.816,0,0,0,18.5,15.188V2.813A2.816,2.816,0,0,0,15.687,0H8.621A2.816,2.816,0,0,0,5.808,2.813V4.219a.7.7,0,0,0,1.406,0V2.813A1.408,1.408,0,0,1,8.621,1.406h7.067a1.408,1.408,0,0,1,1.406,1.406V15.188a1.408,1.408,0,0,1-1.406,1.406H8.621a1.408,1.408,0,0,1-1.406-1.406V13.782a.7.7,0,0,0-1.406,0ZM1.014,7.793,2.589,6.218a.7.7,0,0,1,.994.994l-1.12,1.12h8.443a.7.7,0,1,1,0,1.406H2.463l1.12,1.12a.7.7,0,1,1-.994.994L1.014,10.279A1.76,1.76,0,0,1,1.014,7.793Zm0,0\",\n transform: \"translate(-0.5)\"\n })\n], -1))\nconst _hoisted_5 = { class: \"ml-3 flex flex-col\" }\nconst _hoisted_6 = { class: \"font-semibold text-lg\" }\nconst _hoisted_7 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", { class: \"ml-auto\" }, null, -1))\nconst _hoisted_8 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"svg\", {\n class: \"inline\",\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n width: \"18px\",\n height: \"18px\"\n}, [\n /*#__PURE__*/_createElementVNode(\"path\", { d: \"M 2 2 L 4.9394531 4.9394531 C 3.1262684 6.7482143 2 9.2427079 2 12 C 2 17.514 6.486 22 12 22 C 17.514 22 22 17.514 22 12 C 22 6.486 17.514 2 12 2 L 12 4 C 16.411 4 20 7.589 20 12 C 20 16.411 16.411 20 12 20 C 7.589 20 4 16.411 4 12 C 4 9.7940092 4.9004767 7.7972757 6.3496094 6.3496094 L 9 9 L 9 2 L 2 2 z\" })\n], -1))\nconst _hoisted_9 = { class: \"font-normal ml-1\" }\nconst _hoisted_10 = {\n key: 0,\n class: \"border-2 border-red-700 text-red-700 rounded p-1 mr-2\"\n}\nconst _hoisted_11 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", { class: \"align-middle inline-block mr-1 pb-1 fill-current\" }, [\n /*#__PURE__*/_createElementVNode(\"svg\", {\n \"clip-rule\": \"evenodd\",\n \"fill-rule\": \"evenodd\",\n class: \"fill-red-600\",\n width: \"18\",\n height: \"18\",\n \"stroke-linejoin\": \"round\",\n \"stroke-miterlimit\": \"2\",\n viewBox: \"0 0 24 24\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, [\n /*#__PURE__*/_createElementVNode(\"path\", {\n d: \"m12.002 21.534c5.518 0 9.998-4.48 9.998-9.998s-4.48-9.997-9.998-9.997c-5.517 0-9.997 4.479-9.997 9.997s4.48 9.998 9.997 9.998zm0-1.5c-4.69 0-8.497-3.808-8.497-8.498s3.807-8.497 8.497-8.497 8.498 3.807 8.498 8.497-3.808 8.498-8.498 8.498zm0-6.5c-.414 0-.75-.336-.75-.75v-5.5c0-.414.336-.75.75-.75s.75.336.75.75v5.5c0 .414-.336.75-.75.75zm-.002 3c.552 0 1-.448 1-1s-.448-1-1-1-1 .448-1 1 .448 1 1 1z\",\n \"fill-rule\": \"nonzero\"\n })\n ])\n], -1))\nconst _hoisted_12 = { class: \"align-center inline-block select-none\" }\nconst _hoisted_13 = [\"disabled\"]\nconst _hoisted_14 = { class: \"inline-block\" }\nconst _hoisted_15 = {\n key: 0,\n class: \"align-middle inline-block px-1\"\n}\nconst _hoisted_16 = { class: \"flex\" }\nconst _hoisted_17 = { class: \"w-80 flex-shrink-0 border-r border-black editor-toc\" }\nconst _hoisted_18 = { class: \"flex items-center justify-center border-b p-2\" }\nconst _hoisted_19 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", { class: \"align-middle inline-block px-1\" }, [\n /*#__PURE__*/_createElementVNode(\"svg\", {\n \"clip-rule\": \"evenodd\",\n \"fill-rule\": \"evenodd\",\n width: \"16\",\n height: \"16\",\n \"stroke-linejoin\": \"round\",\n \"stroke-miterlimit\": \"2\",\n viewBox: \"0 0 24 24\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, [\n /*#__PURE__*/_createElementVNode(\"path\", {\n d: \"m4.481 15.659c-1.334 3.916-1.48 4.232-1.48 4.587 0 .528.46.749.749.749.352 0 .668-.137 4.574-1.492zm1.06-1.061 3.846 3.846 11.321-11.311c.195-.195.293-.45.293-.707 0-.255-.098-.51-.293-.706-.692-.691-1.742-1.74-2.435-2.432-.195-.195-.451-.293-.707-.293-.254 0-.51.098-.706.293z\",\n \"fill-rule\": \"nonzero\"\n })\n ])\n], -1))\nconst _hoisted_20 = { class: \"align-middle inline-block\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_router_link = _resolveComponent(\"router-link\")!\n const _component_spinner = _resolveComponent(\"spinner\")!\n const _component_slide_toc = _resolveComponent(\"slide-toc\")!\n const _component_slide_editor = _resolveComponent(\"slide-editor\")!\n const _component_confirmation_modal = _resolveComponent(\"confirmation-modal\")!\n const _directive_tippy = _resolveDirective(\"tippy\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"span\", _hoisted_3, [\n _withDirectives((_openBlock(), _createBlock(_component_router_link, {\n to: { name: 'home' },\n class: \"mt-1 flex justify-center h-full w-full\",\n target: \"\"\n }, {\n default: _withCtx(() => [\n _hoisted_4\n ]),\n _: 1\n })), [\n [_directive_tippy, {\n delay: '200',\n placement: 'right',\n content: _ctx.$t('editor.returnToLanding'),\n animateFill: true\n }]\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_5, [\n _createElementVNode(\"span\", _hoisted_6, _toDisplayString(_ctx.metadata.title), 1),\n _createElementVNode(\"span\", {\n class: _normalizeClass(_ctx.metadata.title ? 'text-xs' : '')\n }, \"UUID: \" + _toDisplayString(_ctx.uuid), 3)\n ]),\n _hoisted_7,\n (_ctx.unsavedChanges)\n ? _withDirectives((_openBlock(), _createElementBlock(\"button\", {\n key: 0,\n onClick: _cache[0] || (_cache[0] = ($event: any) => (_ctx.$vfm.open(`reload-config`))),\n class: \"border-2 border-red-700 text-red-700 rounded p-1 mr-2\"\n }, [\n _hoisted_8,\n _createElementVNode(\"span\", _hoisted_9, _toDisplayString(_ctx.$t('editor.resetChanges')), 1)\n ])), [\n [_directive_tippy, {\n delay: '200',\n placement: 'bottom',\n content: _ctx.$t('editor.resetChanges'),\n animateFill: true\n }]\n ])\n : _createCommentVNode(\"\", true),\n _createVNode(_Transition, { name: \"fade\" }, {\n default: _withCtx(() => [\n (_ctx.unsavedChanges)\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_10, [\n _hoisted_11,\n _createElementVNode(\"span\", _hoisted_12, _toDisplayString(_ctx.$t('editor.unsavedChanges')), 1)\n ]))\n : _createCommentVNode(\"\", true)\n ]),\n _: 1\n }),\n _renderSlot(_ctx.$slots, \"langModal\", _normalizeProps(_guardReactiveProps({ unsavedChanges: _ctx.unsavedChanges })), undefined, true),\n _createElementVNode(\"button\", {\n onClick: _cache[1] || (_cache[1] = \n//@ts-ignore\n(...args) => (_ctx.preview && _ctx.preview(...args))),\n class: \"bg-white border border-black hover:bg-gray-100\"\n }, _toDisplayString(_ctx.$t('editor.preview')), 1),\n _createElementVNode(\"button\", {\n onClick: _cache[2] || (_cache[2] = \n//@ts-ignore\n(...args) => (_ctx.saveChanges && _ctx.saveChanges(...args))),\n class: \"bg-black text-white hover:bg-gray-900\",\n disabled: _ctx.saving\n }, [\n _createElementVNode(\"span\", _hoisted_14, _toDisplayString(_ctx.saving ? _ctx.$t('editor.savingChanges') : _ctx.$t('editor.saveChanges')), 1),\n (_ctx.saving)\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_15, [\n _createVNode(_component_spinner, {\n size: \"16px\",\n color: \"#009cd1\",\n class: \"ml-1 mb-1\"\n })\n ]))\n : _createCommentVNode(\"\", true)\n ], 8, _hoisted_13)\n ]),\n _createElementVNode(\"div\", _hoisted_16, [\n _createElementVNode(\"div\", _hoisted_17, [\n _createElementVNode(\"div\", _hoisted_18, [\n _createElementVNode(\"button\", {\n onClick: _cache[3] || (_cache[3] = _withModifiers(($event: any) => (_ctx.$vfm.open('metadata-edit-modal')), [\"stop\"]))\n }, [\n _hoisted_19,\n _createElementVNode(\"span\", _hoisted_20, _toDisplayString(_ctx.$t('editor.editMetadata')), 1)\n ])\n ]),\n _createVNode(_component_slide_toc, {\n slides: _ctx.slides,\n currentSlide: _ctx.currentSlide,\n slideIndex: _ctx.slideIndex,\n onSlideChange: _ctx.selectSlide,\n onSlidesUpdated: _ctx.updateSlides,\n configFileStructure: _ctx.configFileStructure,\n lang: _ctx.configLang,\n sourceCounts: _ctx.sourceCounts\n }, null, 8, [\"slides\", \"currentSlide\", \"slideIndex\", \"onSlideChange\", \"onSlidesUpdated\", \"configFileStructure\", \"lang\", \"sourceCounts\"])\n ]),\n _createVNode(_component_slide_editor, {\n ref: \"slide\",\n configFileStructure: _ctx.configFileStructure,\n currentSlide: _ctx.currentSlide,\n lang: _ctx.configLang,\n slideIndex: _ctx.slideIndex,\n isLast: _ctx.slideIndex === _ctx.slides.length - 1,\n uid: _ctx.uuid,\n onSlideChange: _ctx.selectSlide,\n onSlideEdit: _ctx.onSlidesEdited,\n onCustomSlideUpdated: _ctx.updateCustomSlide,\n sourceCounts: _ctx.sourceCounts\n }, null, 8, [\"configFileStructure\", \"currentSlide\", \"lang\", \"slideIndex\", \"isLast\", \"uid\", \"onSlideChange\", \"onSlideEdit\", \"onCustomSlideUpdated\", \"sourceCounts\"])\n ]),\n _renderSlot(_ctx.$slots, \"metadataModal\", {}, undefined, true),\n _createVNode(_component_confirmation_modal, {\n name: `reload-config`,\n message: _ctx.$t('editor.refreshChanges.modal'),\n onOk: _cache[4] || (_cache[4] = ($event: any) => (_ctx.$emit('refresh-config')))\n }, null, 8, [\"message\"])\n ]))\n}","\nimport { Options, Prop, Vue, Watch } from 'vue-property-decorator';\nimport { ConfigFileStructure, MetadataContent, Slide, SourceCounts, StoryRampConfig } from '@/definitions';\n\nimport { VueSpinnerOval } from 'vue3-spinners';\nimport SlideEditorV from './slide-editor.vue';\nimport SlideTocV from './slide-toc.vue';\nimport MetadataContentV from './helpers/metadata-content.vue';\nimport ConfirmationModalV from './helpers/confirmation-modal.vue';\n\n@Options({\n components: {\n 'metadata-content': MetadataContentV,\n 'confirmation-modal': ConfirmationModalV,\n spinner: VueSpinnerOval,\n 'slide-editor': SlideEditorV,\n 'slide-toc': SlideTocV\n }\n})\nexport default class EditorV extends Vue {\n @Prop() configs!: {\n [key: string]: StoryRampConfig | undefined;\n };\n @Prop() configFileStructure!: ConfigFileStructure | undefined;\n @Prop() sourceCounts!: SourceCounts;\n @Prop() metadata!: MetadataContent;\n @Prop() slides!: Slide[];\n @Prop() configLang!: string;\n @Prop() saving!: boolean;\n @Prop() unsavedChanges!: boolean;\n\n // Form properties.\n uuid = '';\n logoImage: undefined | File = undefined;\n loadSlides: undefined | Slide[] = undefined;\n currentSlide: Slide | string = '';\n slideIndex = -1;\n\n @Watch('slides', { deep: true })\n onSlidesEdited(): void {\n this.$emit('save-status', true);\n }\n\n @Watch('metadata', { deep: true })\n onMetadataEdited(): void {\n this.$emit('save-status', true);\n }\n\n created(): void {\n this.loadSlides = this.slides;\n this.uuid = this.$route.params.uid as string;\n\n window.addEventListener('beforeunload', this.beforeWindowUnload);\n }\n\n mounted(): void {\n // from https://css-tricks.com/how-to-detect-when-a-sticky-element-gets-pinned/\n const observer = new IntersectionObserver(([e]) => e.target.classList.toggle('z-40', e.intersectionRatio < 1), {\n threshold: [1]\n });\n\n observer.observe(document.querySelector('.editor-header') as Element);\n }\n\n beforeDestroy(): void {\n window.removeEventListener('beforeunload', this.beforeWindowUnload);\n }\n\n /**\n * Change current slide to selected slide.\n */\n selectSlide(index: number): void {\n // save changes to current slide before changing slides\n if (this.$refs.slide !== undefined) {\n this.$nextTick(() => {\n (this.$refs.slide as SlideEditorV).saveChanges();\n });\n }\n\n // Quickly swap to loading page, and then swap to new slide. Allows Vue to re-draw page correctly.\n this.currentSlide = {\n title: '',\n panel: [{ type: 'loading-page' }, { type: 'loading-page' }]\n };\n\n setTimeout(() => {\n this.currentSlide = index === -1 ? '' : (this.loadSlides as Slide[])[index];\n this.slideIndex = index;\n (this.$refs.slide as SlideEditorV).panelIndex = 0;\n (this.$refs.slide as SlideEditorV).advancedEditorView = false;\n window.scrollTo(0, 0);\n }, 5);\n }\n\n /**\n * Update slide for a custom config made through advanced editor.\n */\n updateCustomSlide(slideConfig: Slide, save?: boolean): void {\n this.currentSlide = slideConfig;\n // save changes emitted from advanced editor\n if (save) {\n this.slides[this.slideIndex] = slideConfig;\n this.$emit('save-changes');\n }\n }\n\n /**\n * Updates slides after adding, removing, or reordering.\n */\n updateSlides(slides: Slide[]): void {\n this.loadSlides = slides;\n this.slideIndex = this.loadSlides.indexOf(this.currentSlide as Slide);\n }\n\n /**\n * Open current editor config as a new Storylines product in new tab.\n */\n preview(): void {\n // save current slide final changes before previewing product\n if (this.$refs.slide !== undefined) {\n this.$nextTick(() => {\n (this.$refs.slide as SlideEditorV).saveChanges();\n });\n }\n\n setTimeout(() => {\n const routeData = this.$router.resolve({ name: 'preview' });\n const previewTab = window.open(routeData.href, '_blank');\n (previewTab as Window).props = {\n config: JSON.parse(JSON.stringify(this.configs[this.configLang])),\n configFileStructure: this.configFileStructure\n };\n }, 5);\n }\n\n saveChanges(): void {\n // save current slide final changes before generating config file\n if (this.$refs.slide !== undefined) {\n this.$nextTick(() => {\n (this.$refs.slide as SlideEditorV).saveChanges();\n // emit save changes event\n this.$emit('save-changes');\n });\n }\n }\n\n beforeWindowUnload(e: BeforeUnloadEvent): void {\n // show popup if when leaving page with unsaved changes\n if (this.unsavedChanges && !window.confirm()) {\n e.preventDefault();\n }\n }\n}\n","import { render } from \"./editor.vue?vue&type=template&id=ec080f10&scoped=true&ts=true\"\nimport script from \"./editor.vue?vue&type=script&lang=ts\"\nexport * from \"./editor.vue?vue&type=script&lang=ts\"\n\nimport \"./editor.vue?vue&type=style&index=0&id=ec080f10&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/storylines-editor/storylines-editor/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-ec080f10\"]])\n\nexport default __exports__","\nimport { Options, Prop, Vue } from 'vue-property-decorator';\nimport { RouteLocationNormalized } from 'vue-router';\nimport { AxiosResponse } from 'axios';\nimport {\n AudioPanel,\n BasePanel,\n ChartPanel,\n ConfigFileStructure,\n DynamicChildItem,\n DynamicPanel,\n ImagePanel,\n MapPanel,\n MetadataContent,\n Slide,\n SlideshowPanel,\n SourceCounts,\n StoryRampConfig,\n TextPanel,\n VideoPanel\n} from '@/definitions';\nimport { VueSpinnerOval } from 'vue3-spinners';\nimport { VueFinalModal } from 'vue-final-modal';\n\nconst JSZip = require('jszip');\nconst axios = require('axios').default;\nconst { v4: uuidv4 } = require('uuid');\n\nimport Message from 'vue-m-message';\nimport SlideEditorV from './slide-editor.vue';\nimport SlideTocV from './slide-toc.vue';\nimport MetadataContentV from './helpers/metadata-content.vue';\nimport ConfirmationModalV from './helpers/confirmation-modal.vue';\nimport EditorV from './editor.vue';\n\nimport cloneDeep from 'clone-deep';\n\ninterface RouteParams {\n uid: string;\n configLang: string;\n configs: {\n [key: string]: StoryRampConfig | undefined;\n };\n configFileStructure: ConfigFileStructure;\n metadata: MetadataContent;\n slides: Slide[];\n sourceCounts: SourceCounts;\n existing: boolean;\n unsavedChanges: boolean;\n}\n\n@Options({\n components: {\n Editor: EditorV,\n 'confirmation-modal': ConfirmationModalV,\n 'metadata-content': MetadataContentV,\n spinner: VueSpinnerOval,\n 'slide-editor': SlideEditorV,\n 'slide-toc': SlideTocV,\n 'vue-final-modal': VueFinalModal\n }\n})\nexport default class MetadataEditorV extends Vue {\n @Prop({ default: true }) editExisting!: boolean; // true if editing existing storylines product, false if new product\n\n configs: {\n [key: string]: StoryRampConfig | undefined;\n } = { en: undefined, fr: undefined };\n configFileStructure: ConfigFileStructure | undefined = undefined;\n loadExisting = false;\n reloadExisting = false;\n loadStatus = 'waiting';\n loadEditor = false;\n error = false; // whether an error has occurred\n warning = false; // used for duplicate uuid warning\n configLang = 'en';\n\n // Saving properties.\n saving = false;\n unsavedChanges = false;\n\n // Form properties.\n uuid = '';\n logoImage: undefined | File = undefined;\n metadata: MetadataContent = {\n title: '',\n introTitle: '',\n introSubtitle: '',\n logoPreview: '',\n logoName: '',\n logoAltText: '',\n contextLink: '',\n contextLabel: '',\n tocOrientation: '',\n dateModified: ''\n };\n // add more required metadata fields to here as needed\n reqFields: { uuid: boolean } = {\n uuid: true\n };\n slides: Slide[] = [];\n sourceCounts: SourceCounts = {};\n\n created(): void {\n this.loadExisting = this.editExisting;\n\n // Generate UUID for new product\n this.uuid = (this.$route.params.uid as string) ?? (this.loadExisting ? undefined : uuidv4());\n this.configLang = this.$route.params.configLang ? (this.$route.params.configLang as string) : 'en';\n\n // Initialize Storylines config and the configuration structure.\n this.configs = { en: undefined, fr: undefined };\n this.configFileStructure = undefined;\n\n // set any metadata default values for creating new product\n if (!this.loadExisting) {\n // set current date as default\n const curDate = new Date();\n const year = curDate.getFullYear();\n const month = (curDate.getMonth() + 1).toString().padStart(2, '0');\n const day = curDate.getDate().toString().padStart(2, '0');\n this.metadata.dateModified = `${year}-${month}-${day}`;\n // set vertical as the default table of contents orientation\n this.metadata.tocOrientation = 'vertical';\n }\n\n // Find which view to render based on route\n if (this.$route.name === 'editor') {\n this.loadEditor = true;\n const props = this.$route.meta.data as RouteParams;\n\n // Properties already passed in props, load editor view (could use a refactor to clean up this workflow process)\n if (props && props.configs && props.configFileStructure) {\n this.configs = props.configs;\n this.configFileStructure = props.configFileStructure;\n this.metadata = props.metadata;\n this.slides = props.slides;\n this.sourceCounts = props.sourceCounts;\n this.loadExisting = props.existing;\n this.unsavedChanges = props.unsavedChanges;\n // Load product logo (if provided).\n const logo = this.configs[this.configLang]?.introSlide.logo?.src;\n const logoSrc = `assets/${this.configLang}/${this.metadata.logoName}`;\n\n if (logo) {\n const logoFile = this.configFileStructure?.zip.file(logoSrc);\n if (logoFile) {\n logoFile.async('blob').then((img: Blob) => {\n this.logoImage = new File([img], this.metadata.logoName);\n this.metadata.logoPreview = URL.createObjectURL(img);\n this.loadStatus = 'loaded';\n });\n } else {\n // Fill in the field with this value whether it exists or not.\n this.metadata.logoName = logo;\n\n // If it doesn't exist, maybe it's a remote file?\n fetch(logo).then((data: Response) => {\n if (data.status !== 404) {\n data.blob().then((blob: Blob) => {\n this.logoImage = new File([blob], this.metadata.logoName);\n this.metadata.logoPreview = logo;\n this.loadStatus = 'loaded';\n });\n }\n });\n }\n } else {\n // No logo to load.\n this.loadStatus = 'loaded';\n }\n\n return;\n }\n }\n\n // If a product UUID is provided, fetch the contents from the server.\n if (this.$route.params.uid) {\n this.generateRemoteConfig();\n }\n }\n\n /**\n * Generates a new product file for brand new products.\n */\n generateNewConfig(): void {\n const configZip = new JSZip();\n\n // Generate a new configuration file and populate required fields.\n this.configs[this.configLang] = this.configHelper();\n const config = this.configs[this.configLang] as StoryRampConfig;\n\n // Set the source of the product logo\n if (!this.metadata.logoName) {\n config.introSlide.logo.src = '';\n } else if (!this.metadata.logoName.includes('http')) {\n config.introSlide.logo.src = `${this.uuid}/assets/${this.configLang}/${this.logoImage?.name}`;\n } else {\n config.introSlide.logo.src = this.metadata.logoName;\n }\n config.slides = [];\n\n const otherLang = this.configLang === 'en' ? 'fr' : 'en';\n this.configs[otherLang] = cloneDeep(config);\n (this.configs[otherLang] as StoryRampConfig).lang = otherLang;\n const formattedOtherLangConfig = JSON.stringify(this.configs[otherLang], null, 4);\n\n // Add the newly generated Storylines configuration file to the ZIP file.\n const fileName = `${this.uuid}_${this.configLang}.json`;\n const formattedConfigFile = JSON.stringify(config, null, 4);\n\n configZip.file(fileName, formattedConfigFile);\n configZip.file(`${this.uuid}_${otherLang}.json`, formattedOtherLangConfig);\n\n // Generate the file structure, defer uploading the image until the structure is created.\n this.configFileStructureHelper(configZip, this.logoImage);\n }\n\n configHelper(): StoryRampConfig {\n return {\n title: this.metadata.title,\n lang: this.configLang,\n introSlide: {\n logo: {\n src: ''\n },\n title: this.metadata.introTitle,\n subtitle: this.metadata.introSubtitle\n },\n slides: [],\n contextLabel: this.metadata.contextLabel,\n contextLink: this.metadata.contextLink,\n tocOrientation: this.metadata.tocOrientation,\n dateModified: this.metadata.dateModified\n };\n }\n\n /**\n * Provided with a UID, retrieve the project contents from the file server.\n */\n generateRemoteConfig(): void {\n this.loadStatus = 'loading';\n // Attempt to fetch the project from the server.\n fetch(`http://localhost:6040/retrieve/${this.uuid}`)\n .then((res: Response) => {\n if (res.status === 404) {\n // Product not found.\n Message.error(`The requested UUID '${this.uuid ?? ''}' does not exist.`);\n this.error = true;\n this.loadStatus = 'waiting';\n this.clearConfig();\n } else {\n const configZip = new JSZip();\n // Files retrieved. Convert them into a JSZip object.\n res.blob().then((file: Blob) => {\n configZip.loadAsync(file).then(() => {\n this.configFileStructureHelper(configZip);\n });\n });\n }\n })\n .catch(() => {\n Message.error(`Failed to load product, no response from server`);\n this.loadStatus = 'loaded';\n });\n }\n\n findSources(configs: { [key: string]: StoryRampConfig | undefined }): void {\n ['en', 'fr'].forEach((lang) => {\n if (configs[lang]?.introSlide.logo?.src) {\n this.incrementSourceCount((configs[lang] as StoryRampConfig).introSlide.logo.src);\n }\n\n configs[lang]?.slides.forEach((slide) => {\n slide.panel.forEach((panel) => {\n this.panelSourceHelper(panel);\n });\n });\n });\n }\n\n panelSourceHelper(panel: BasePanel): void {\n switch (panel.type) {\n case 'dynamic':\n (panel as DynamicPanel).children.forEach((subPanel: DynamicChildItem) => {\n this.panelSourceHelper(subPanel.panel);\n });\n break;\n case 'slideshow':\n (panel as SlideshowPanel).items.forEach((item: ChartPanel | TextPanel | ImagePanel | MapPanel) => {\n this.panelSourceHelper(item);\n });\n break;\n case 'chart':\n this.incrementSourceCount((panel as ChartPanel).src);\n break;\n case 'image':\n this.incrementSourceCount((panel as ImagePanel).src);\n break;\n case 'video':\n if ((panel as VideoPanel).videoType === 'local') {\n this.incrementSourceCount((panel as VideoPanel).src);\n }\n break;\n case 'audio':\n this.incrementSourceCount((panel as AudioPanel).src);\n break;\n case 'map':\n this.incrementSourceCount((panel as MapPanel).config);\n break;\n case 'text':\n break;\n default:\n break;\n }\n }\n\n incrementSourceCount(src: string): void {\n if (this.sourceCounts[src]) {\n this.sourceCounts[src] += 1;\n } else {\n this.sourceCounts[src] = 1;\n }\n }\n\n /**\n * Generates or loads a ZIP file and creates required project folders if needed.\n * Returns an object that makes it easy to access any specific folder.\n */\n configFileStructureHelper(configZip: typeof JSZip, uploadLogo?: File | undefined): void {\n const assetsFolder = configZip.folder('assets');\n const chartsFolder = configZip.folder('charts');\n const rampConfigFolder = configZip.folder('ramp-config');\n\n this.configFileStructure = {\n uuid: this.uuid,\n zip: configZip,\n configs: this.configs as unknown as { [key: string]: StoryRampConfig },\n assets: {\n en: assetsFolder.folder('en'),\n fr: assetsFolder.folder('fr')\n },\n charts: {\n en: chartsFolder.folder('en'),\n fr: chartsFolder.folder('fr')\n },\n rampConfig: {\n en: rampConfigFolder.folder('en'),\n fr: rampConfigFolder.folder('fr')\n }\n };\n\n // If uploadLogo is set, upload the logo to the directory.\n if (uploadLogo !== undefined) {\n this.configFileStructure.assets[this.configLang].file(uploadLogo?.name, uploadLogo);\n }\n\n this.loadConfig();\n }\n\n /**\n * Loads a configuration file from the product folder, and sets application data\n * as needed.\n */\n async loadConfig(config?: StoryRampConfig): Promise {\n if (config) {\n this.useConfig(config);\n return;\n }\n\n try {\n const enFile = this.configFileStructure?.zip.file(`${this.uuid}_en.json`);\n const frFile = this.configFileStructure?.zip.file(`${this.uuid}_fr.json`);\n await enFile?.async('string').then((res: string) => {\n this.configs['en'] = JSON.parse(res);\n });\n await frFile?.async('string').then((res: string) => {\n this.configs['fr'] = JSON.parse(res);\n });\n } catch {\n Message.error(`The requested product '${this.uuid ?? ''}' is malformed.`);\n this.loadStatus = 'waiting';\n this.clearConfig();\n return;\n }\n\n if (this.loadExisting) {\n this.loadStatus = 'waiting';\n Message.success('Successfully loaded storyline!');\n } else {\n this.loadStatus = 'loaded';\n }\n\n // Load in project data.\n if (this.configs[this.configLang]) {\n this.useConfig(this.configs[this.configLang] as StoryRampConfig);\n this.findSources(this.configs);\n // Update router path\n if (this.reloadExisting) {\n this.loadEditor = true;\n this.generateConfig();\n this.updateEditorPath();\n } else if (!this.loadExisting) {\n this.loadEditor = true;\n this.updateEditorPath();\n }\n }\n }\n\n useConfig(config: StoryRampConfig): void {\n this.metadata.title = config.title;\n this.metadata.introTitle = config.introSlide.title;\n this.metadata.introSubtitle = config.introSlide.subtitle;\n this.metadata.contextLink = config.contextLink;\n this.metadata.contextLabel = config.contextLabel;\n this.metadata.tocOrientation = config.tocOrientation;\n this.metadata.dateModified = config.dateModified;\n\n this.slides = config.slides;\n\n const logo = config.introSlide.logo?.src;\n if (logo) {\n // Set the alt text for the logo.\n this.metadata.logoAltText = config.introSlide.logo?.altText ? config.introSlide.logo.altText : '';\n\n // Fetch the logo from the folder (if it exists).\n const logoSrc = `${logo.substring(logo.indexOf('/') + 1)}`;\n const logoName = `${logo.split('/')[logo.split('/').length - 1]}`;\n const logoFile = this.configFileStructure?.zip.file(logoSrc);\n\n if (logoFile) {\n logoFile.async('blob').then((img: Blob) => {\n this.logoImage = new File([img], logoName);\n this.metadata.logoPreview = URL.createObjectURL(img);\n this.metadata.logoName = logoName;\n this.loadStatus = 'loaded';\n });\n } else {\n // Fill in the field with this value whether it exists or not.\n this.metadata.logoName = logo;\n\n // If it doesn't exist, maybe it's a remote file?\n fetch(logo).then((data: Response) => {\n if (data.status !== 404) {\n data.blob().then((blob: Blob) => {\n this.logoImage = new File([blob], logoName);\n this.metadata.logoPreview = logo;\n this.loadStatus = 'loaded';\n });\n }\n });\n }\n }\n }\n\n /**\n * Called when `Save Changes` is pressed. Re-generates the Storylines configuration file\n * with the new changes, then generates and submits the product file to the server.\n */\n generateConfig(): ConfigFileStructure {\n this.saving = true;\n\n // Update the configuration file.\n const fileName = `${this.uuid}_${this.configLang}.json`;\n const formattedConfigFile = JSON.stringify(this.configs[this.configLang], null, 4);\n\n this.configFileStructure?.zip.file(fileName, formattedConfigFile);\n\n // Upload the ZIP file.\n this.configFileStructure?.zip.generateAsync({ type: 'blob' }).then((content: Blob) => {\n const formData = new FormData();\n formData.append('data', content, `${this.uuid}.zip`);\n const headers = { 'Content-Type': 'multipart/form-data' };\n\n axios\n .post('http://localhost:6040/upload', formData, { headers })\n .then((res: AxiosResponse) => {\n res.data.files; // binary representation of the file\n res.status; // HTTP status\n this.unsavedChanges = false;\n this.loadExisting = true; // if editExisting was false, we can now set it to true\n Message.success('Successfully saved changes!');\n })\n .catch(() => {\n Message.error('Failed to save changes.');\n })\n .finally(() => {\n // padding to prevent save button from being clicked rapidly\n setTimeout(() => {\n this.saving = false;\n }, 500);\n });\n });\n\n return this.configFileStructure as ConfigFileStructure;\n }\n\n updateMetadata(\n key:\n | 'title'\n | 'introTitle'\n | 'introSubtitle'\n | 'contextLink'\n | 'contextLabel'\n | 'tocOrientation'\n | 'dateModified',\n value: string\n ): void {\n this.metadata[key] = value;\n this.unsavedChanges = true;\n }\n\n /**\n * Called when `Save Changes` is pressed on metadata page. Save metadata content fields\n * to config file. If `publish` is set to true, publish to server as well.\n */\n saveMetadata(publish = false): void {\n // update metadata content to existing config only if it has been successfully loaded\n const config = this.configs[this.configLang];\n if (config !== undefined) {\n config.title = this.metadata.title;\n config.introSlide.title = this.metadata.introTitle;\n config.introSlide.subtitle = this.metadata.introSubtitle;\n config.contextLink = this.metadata.contextLink;\n config.contextLabel = this.metadata.contextLabel;\n config.tocOrientation = this.metadata.tocOrientation;\n config.dateModified = this.metadata.dateModified;\n\n // If the logo section is missing, create it here before overwriting values.\n if (config.introSlide.logo === undefined) {\n config.introSlide.logo = { src: '', altText: '' };\n }\n\n config.introSlide.logo.altText = this.metadata.logoAltText;\n\n // If the logo doesn't include HTTP, assume it's a local file.\n if (!this.metadata.logoName) {\n config.introSlide.logo.src = '';\n } else if (!this.metadata.logoName.includes('http')) {\n config.introSlide.logo.src = `${this.uuid}/assets/${this.configLang}/${this.logoImage?.name}`;\n this.configFileStructure?.assets[this.configLang].file(\n this.logoImage?.name as string,\n this.logoImage as File\n );\n } else {\n config.introSlide.logo.src = this.metadata.logoName;\n }\n\n if (publish) {\n this.generateConfig();\n }\n }\n this.$vfm.close('metadata-edit-modal');\n }\n\n /**\n * Called when loading a nonexistant or invalid UUID. Clears all previously populated\n * metadata fields, configs, and slide content.\n */\n clearConfig(): void {\n this.metadata = {\n title: '',\n introTitle: '',\n introSubtitle: '',\n contextLink: '',\n contextLabel: '',\n dateModified: '',\n logoPreview: '',\n logoName: '',\n logoAltText: '',\n tocOrientation: ''\n };\n this.configs = { en: undefined, fr: undefined };\n this.slides = [];\n }\n\n /**\n * Language toggle.\n */\n swapLang(): void {\n this.configLang = this.configLang === 'en' ? 'fr' : 'en';\n if (!this.configs[this.configLang]) {\n return;\n }\n this.loadConfig(this.configs[this.configLang]);\n\n if (this.loadEditor) {\n (this.$refs.mainEditor as EditorV).updateSlides(this.slides);\n this.$nextTick(() => {\n (this.$refs.mainEditor as EditorV).selectSlide(-1);\n });\n }\n }\n\n checkUuid(): void {\n if (!this.loadExisting) {\n fetch(`http://localhost:6040/retrieve/${this.uuid}`).then((res: Response) => {\n if (res.status !== 404) {\n this.warning = true;\n }\n });\n }\n this.warning = false;\n }\n\n /**\n * React to param changes in URL.\n */\n beforeRouteUpdate(to: RouteLocationNormalized, from: RouteLocationNormalized, next: () => void): void {\n this.uuid = to.params.uid as string;\n this.$i18n.locale = to.params.lang as string;\n\n next();\n }\n\n onLogoSourceInput(e: InputEvent): void {\n const isImgUrl = (url: string) => {\n const img = new Image();\n img.src = url;\n return new Promise((resolve) => {\n img.onerror = () => resolve(false);\n img.onload = () => resolve(true);\n });\n };\n\n this.metadata.logoName = (e.target as HTMLInputElement).value;\n\n isImgUrl(this.metadata.logoName).then((res) => {\n if (res) {\n this.metadata.logoPreview = this.metadata.logoName;\n Message.success('Successfully loaded logo image.');\n } else {\n this.metadata.logoPreview = 'error';\n Message.error('Failed to load logo image.');\n }\n });\n }\n\n onFileChange(e: Event): void {\n // Retrieve the uploaded file.\n const uploadedFile = ((e.target as HTMLInputElement).files as ArrayLike)[0];\n this.logoImage = uploadedFile;\n\n // Generate an image preview.\n this.metadata.logoPreview = URL.createObjectURL(uploadedFile);\n this.metadata.logoName = uploadedFile.name;\n }\n\n updateEditorPath(): void {\n if (this.$route.name !== 'editor') {\n this.$router.beforeEach((to: RouteLocationNormalized) => {\n if (to.name === 'editor') {\n to.meta.data = {\n configLang: this.configLang,\n configs: this.configs,\n configFileStructure: this.configFileStructure,\n sourceCounts: this.sourceCounts,\n metadata: this.metadata,\n slides: this.slides,\n existing: this.editExisting,\n unsavedChanges: this.unsavedChanges\n };\n }\n });\n\n this.$router.push({ name: 'editor', params: { uid: this.uuid } });\n }\n }\n\n checkRequiredFields(): boolean {\n // check if all required metadata fields are non-empty\n this.reqFields.uuid = !!this.uuid;\n if (Object.values(this.reqFields).some((field: boolean) => !field)) {\n Message.error(`Please fill out the required fields before proceeding.`);\n return false;\n }\n return true;\n }\n\n /**\n * Called when 'next' button is pressed on metadata page to continue to main editor.\n */\n continueToEditor(): void {\n if (!this.checkRequiredFields()) {\n return;\n }\n if (this.loadExisting) {\n if (this.configs[this.configLang] !== undefined && this.uuid === this.configFileStructure?.uuid) {\n this.loadEditor = true;\n this.saveMetadata(false);\n this.updateEditorPath();\n } else {\n Message.error('No config exists for storylines product.');\n }\n } else if (!this.uuid) {\n Message.error('Missing required field: UUID');\n this.error = true;\n } else {\n this.generateNewConfig();\n }\n }\n\n /**\n * Update the unsaved changes value to the payload.\n */\n updateSaveStatus(payload: boolean): void {\n this.unsavedChanges = payload;\n }\n\n refreshConfig(): void {\n // Re-fetch the product from the server.\n if (this.loadExisting) {\n this.reloadExisting = true;\n this.loadExisting = false;\n this.generateRemoteConfig();\n } else {\n this.reloadExisting = false;\n this.generateNewConfig();\n }\n }\n\n beforeRouteLeave(to: RouteLocationNormalized, from: RouteLocationNormalized, next: (cont?: boolean) => void): void {\n const curEditor = this.$route.name === 'editor';\n const confirmationMessage = 'Leave the page? Changes made may not be saved.';\n if (this.unsavedChanges && curEditor && !window.confirm(confirmationMessage)) {\n next(false);\n } else {\n next();\n }\n }\n}\n","import { render } from \"./metadata-editor.vue?vue&type=template&id=adaf72ca&ts=true\"\nimport script from \"./metadata-editor.vue?vue&type=script&lang=ts\"\nexport * from \"./metadata-editor.vue?vue&type=script&lang=ts\"\n\nimport \"./metadata-editor.vue?vue&type=style&index=0&id=adaf72ca&lang=scss\"\n\nimport exportComponent from \"/home/runner/work/storylines-editor/storylines-editor/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, createVNode as _createVNode, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode } from \"vue\"\n\nconst _hoisted_1 = { key: 0 }\nconst _hoisted_2 = {\n class: \"block py-20 align-middle text-center h-full\",\n style: {\"margin\":\"0 auto\"}\n}\nconst _hoisted_3 = { key: 1 }\nconst _hoisted_4 = {\n key: 0,\n class: \"storyramp-app bg-white\"\n}\nconst _hoisted_5 = {\n id: \"story-header\",\n class: \"story-header sticky top-0 flex border-b border-black bg-gray-200 py-2 px-2 justify-between\"\n}\nconst _hoisted_6 = { class: \"w-mobile-full truncate\" }\nconst _hoisted_7 = { class: \"font-semibold text-lg m-1\" }\nconst _hoisted_8 = {\n class: \"w-full mx-auto pb-10\",\n id: \"story\"\n}\nconst _hoisted_9 = { class: \"p-8 pt-2 text-right text-sm\" }\nconst _hoisted_10 = [\"href\"]\nconst _hoisted_11 = /*#__PURE__*/_createElementVNode(\"a\", {\n href: \"https://github.com/ramp4-pcar4/storylines-editor\",\n target: \"_NEW\",\n class: \"font-semibold text-blue-700\"\n}, \"ramp4-pcar4/storylines-editor\", -1)\nconst _hoisted_12 = {\n key: 0,\n class: \"storyramp-modified\"\n}\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_spinner = _resolveComponent(\"spinner\")!\n const _component_storylines_intro = _resolveComponent(\"storylines-intro\")!\n const _component_storylines_content = _resolveComponent(\"storylines-content\")!\n\n return (_ctx.loadStatus === 'loading')\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createVNode(_component_spinner, {\n size: \"120px\",\n color: \"#009cd1\",\n style: {\"margin\":\"0 auto\"}\n })\n ])\n ]))\n : (_ctx.loadStatus === 'loaded')\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_3, [\n (_ctx.config !== undefined)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_4, [\n _createElementVNode(\"header\", _hoisted_5, [\n _createElementVNode(\"div\", _hoisted_6, [\n _createElementVNode(\"span\", _hoisted_7, _toDisplayString(_ctx.config.title), 1)\n ])\n ]),\n _createVNode(_component_storylines_intro, {\n config: _ctx.config.introSlide,\n configFileStructure: _ctx.configFileStructure\n }, null, 8, [\"config\", \"configFileStructure\"]),\n _createElementVNode(\"div\", _hoisted_8, [\n _createVNode(_component_storylines_content, {\n config: _ctx.config,\n configFileStructure: _ctx.configFileStructure,\n lang: _ctx.lang,\n plugin: true,\n headerHeight: _ctx.headerHeight,\n onStep: _ctx.updateActiveIndex\n }, null, 8, [\"config\", \"configFileStructure\", \"lang\", \"headerHeight\", \"onStep\"])\n ]),\n _createElementVNode(\"footer\", _hoisted_9, [\n _createTextVNode(\" Context: \"),\n _createElementVNode(\"a\", {\n class: \"text-blue-700 font-semibold\",\n href: _ctx.config.contextLink,\n target: \"_NEW\"\n }, _toDisplayString(_ctx.config.contextLabel), 9, _hoisted_10),\n _createTextVNode(\" | \"),\n _hoisted_11\n ]),\n (_ctx.config.dateModified)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_12, _toDisplayString(_ctx.$t('story.date')) + \" \" + _toDisplayString(_ctx.config.dateModified), 1))\n : _createCommentVNode(\"\", true)\n ]))\n : _createCommentVNode(\"\", true)\n ]))\n : _createCommentVNode(\"\", true)\n}","\nimport { Options, Vue } from 'vue-property-decorator';\nimport { ConfigFileStructure, StoryRampConfig } from '@/definitions';\nimport { VueSpinnerOval } from 'vue3-spinners';\n\n@Options({\n components: {\n spinner: VueSpinnerOval\n }\n})\nexport default class StoryPreviewV extends Vue {\n config: StoryRampConfig | undefined = undefined;\n configFileStructure: ConfigFileStructure | undefined = undefined;\n savedProduct = false;\n loadStatus = 'loading';\n activeChapterIndex = -1;\n lang = 'en';\n headerHeight = 0;\n uid = '';\n\n created(): void {\n const uid = this.$route.params.uid as string;\n const lang = this.$route.params.lang as string;\n if (uid) {\n this.savedProduct = true;\n // attempt to fetch saved config file from the server (TODO: setup as express route?)\n fetch(`http://localhost:6040/retrieve/${uid}/${lang}`).then((res: Response) => {\n if (res.status === 404) {\n console.error(`There does not exist a saved product with UID ${uid}.`);\n // redirect to canada.ca 404 page on invalid URL params\n // window.location.href = 'https://www.canada.ca/errors/404.html';\n } else {\n res.json().then((config: StoryRampConfig) => {\n this.config = config;\n this.loadStatus = 'loaded';\n document.title = this.config.title + ' - Canada.ca';\n });\n }\n });\n } else {\n this.config = window.props.config;\n this.configFileStructure = window.props.configFileStructure;\n this.loadStatus = 'loaded';\n }\n\n // set page lang\n const html = document.documentElement;\n html.setAttribute('lang', this.lang);\n this.$i18n.locale = this.lang;\n }\n\n updateActiveIndex(idx: number): void {\n this.activeChapterIndex = idx;\n //determine header height\n const headerH = document.getElementById('story-header');\n if (headerH) {\n this.headerHeight = headerH.clientHeight;\n }\n }\n}\n","import { render } from \"./preview.vue?vue&type=template&id=77691cfa&ts=true\"\nimport script from \"./preview.vue?vue&type=script&lang=ts\"\nexport * from \"./preview.vue?vue&type=script&lang=ts\"\n\nimport \"./preview.vue?vue&type=style&index=0&id=77691cfa&lang=scss\"\n\nimport exportComponent from \"/home/runner/work/storylines-editor/storylines-editor/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import LandingV from '@/components/editor/landing.vue';\nimport MetadataEditorV from '@/components/editor/metadata-editor.vue';\nimport StoryPreviewV from '@/components/editor/preview.vue';\nimport { createRouter, createWebHashHistory, RouteLocationNormalized } from 'vue-router';\n\nconst routes = [\n {\n path: '/:lang/editor',\n name: 'home',\n component: LandingV,\n meta: { title: 'editor.window.title' }\n },\n {\n path: '/:lang/editor/:uid',\n redirect: '/:lang/editor-metadata/:uid'\n },\n {\n path: '/:lang/editor-metadata',\n name: 'metadataExisting',\n component: MetadataEditorV,\n props: { editExisting: true },\n meta: { title: 'editor.window.title' }\n },\n {\n path: '/:lang/editor-metadata',\n name: 'metadataNew',\n component: MetadataEditorV,\n props: { editExisting: false },\n meta: { title: 'editor.window.title' }\n },\n {\n path: '/:lang/editor-metadata/:uid',\n component: MetadataEditorV,\n meta: { title: 'editor.window.title' }\n },\n {\n path: '/:lang/editor-main/:uid',\n name: 'editor',\n component: MetadataEditorV,\n props: true,\n meta: { title: 'editor.window.title' }\n },\n {\n path: '/:lang/editor-preview',\n component: StoryPreviewV,\n name: 'preview',\n props: true,\n meta: { title: 'story.window.title' }\n },\n {\n path: '/:lang/editor-preview/:uid',\n component: StoryPreviewV,\n meta: { title: 'story.window.title' }\n }\n];\n\nconst router = createRouter({\n routes: routes,\n // TODO: change to history mode for nicer URLs (eliminating middle hash) see #100\n history: createWebHashHistory(),\n scrollBehavior: function (to: RouteLocationNormalized) {\n if (to.hash) {\n return {\n selector: decodeURIComponent(to.hash),\n behavior: 'smooth'\n };\n }\n }\n});\n\nexport default router;\n","import { createI18n } from 'vue-i18n';\n\ntype csvRows = { key: string; enValue: string; frValue: string }[];\ninterface LocaleMessages {\n [key: string]: { [name: string]: string };\n}\n\nconst rows = require('./lang.csv');\n\nconst lang = document.documentElement.getAttribute('lang');\n\n/**\n * Fold the imported CSV file in the form of `{ key: string, enValue: string, frValue: string }[]` to the form understood by VueI18n: `{ en: { [name: string]: string }, fr: { [name: string]: string } }`.\n *\n * @param {csvRows} rows\n * @returns {LocaleMessages}\n */\nfunction fold(rows: csvRows): LocaleMessages {\n return rows.reduce(\n (map, item) => {\n map.en[item.key] = item.enValue;\n map.fr[item.key] = item.frValue;\n return map;\n },\n { en: {}, fr: {} } as LocaleMessages\n );\n}\n\nconst i18n = createI18n({\n legacy: false,\n locale: lang || undefined,\n fallbackLocale: 'en',\n globalInjection: true,\n messages: fold(rows)\n});\n\nexport { i18n };\n","import { createApp } from 'vue';\nimport App from './app.vue';\n\nimport './router/componentHooks';\nimport router from './router';\nimport './style.css';\nimport { i18n } from './lang';\n\nimport VueMarkdownEditor from '@kangc/v-md-editor';\nimport '@kangc/v-md-editor/lib/style/base-editor.css';\nimport githubTheme from '@kangc/v-md-editor/lib/theme/github.js';\nimport '@kangc/v-md-editor/lib/theme/style/github.css';\nimport enUS from '@kangc/v-md-editor/lib/lang/en-US';\nimport hljs from 'highlight.js';\n\nVueMarkdownEditor.lang.use('en-US', enUS);\nVueMarkdownEditor.use(githubTheme, {\n Hljs: hljs\n});\n\nimport { createVfm } from 'vue-final-modal';\nconst vfm = createVfm();\nimport 'vue-final-modal/dist/style.css';\n\nimport VueTippy from 'vue-tippy';\nimport 'tippy.js/dist/tippy.css';\nimport 'tippy.js/dist/backdrop.css';\n\nimport HighchartsVue from 'highcharts-vue';\nimport Message from 'vue-m-message';\nimport 'vue-m-message/dist/style.css';\n\nimport StorylinesViewer from 'ramp-storylines_demo-scenarios-pcar';\nimport 'ramp-storylines_demo-scenarios-pcar/dist/storylines-viewer.css';\n\nconst app = createApp(App);\n\napp.use(router)\n .use(i18n)\n .use(VueTippy, {\n directive: 'tippy',\n component: 'tippy'\n })\n .use(HighchartsVue)\n .use(Message)\n .use(StorylinesViewer)\n .use(VueMarkdownEditor)\n .use(vfm);\n\napp.mount('#app');\n","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./time-slider-editor.vue?vue&type=style&index=0&id=6923af36&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./preview.vue?vue&type=style&index=0&id=77691cfa&lang=scss\""],"sourceRoot":""} \ No newline at end of file diff --git a/advanced-config-editor/js/chunk-common.73fa598f.js b/advanced-config-editor/js/chunk-common.73fa598f.js deleted file mode 100644 index c174abad..00000000 --- a/advanced-config-editor/js/chunk-common.73fa598f.js +++ /dev/null @@ -1,2 +0,0 @@ -(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-common"],{0:function(e,t){},"012b":function(e,t,i){},"03b2":function(e,t,i){"use strict";i("2c0d")},"0b20":function(e,t,i){"use strict";i("7550")},"0bb1":function(e,t,i){"use strict";i("4f41")},1:function(e,t,i){e.exports=i("cd49")},"124a":function(e,t,i){},"1a83":function(e,t,i){},"1c29":function(e,t,i){"use strict";i("ed05")},"20bf":function(e,t,i){},"2c0d":function(e,t,i){},"303e":function(e,t,i){"use strict";i("124a")},"38c8":function(e,t,i){},"3d6d":function(e,t){var i=[{key:"chapters.title",enValue:"Chapters",enValid:"1",frValue:"Chapitres",frValid:"1"},{key:"chapters.return",enValue:"Return to top",enValid:"1",frValue:"Retournez en haut",frValid:"1"},{key:"chapters.menu",enValue:"Toggle menu",enValid:"1",frValue:"Menu à bascule",frValid:"1"},{key:"scrollguard.desc",enValue:"Use ctrl + scroll to zoom the map",enValid:"1",frValue:"Utilisez les touches Ctrl et + pour faire un zoom de la carte",frValid:"1"},{key:"story.window.title",enValue:"RAMP Storylines",enValid:"1",frValue:"RAMP Storylines",frValid:"0"},{key:"story.date",enValue:"Date modified:",enValid:"1",frValue:"Date de modification:",frValid:"1"},{key:"story.error",enValue:"An error occurred while loading this Storylines product. See developer console for more information.",enValid:"1",frValue:"Une erreur est survenue pendant le chargement ce synopsis produit. Voir la console du promoteur pour obtenir de plus amples renseignements.",frValid:"1"},{key:"image.fullscreen",enValue:"Full Screen",enValid:"1",frValue:"Plein Écran",frValid:"1"},{key:"dynamic.back",enValue:"Back",enValid:"1",frValue:"Retour",frValid:"0"},{key:"dynamic.textSection",enValue:"Text Section",enValid:"1",frValue:"Section de texte",frValid:"1"},{key:"dynamic.panel.collection",enValue:"Panel Collection",enValid:"1",frValue:"Collection de panneaux",frValid:"1"},{key:"dynamic.panel.id",enValue:"Panel ID",enValid:"1",frValue:"No d’identification du panneau",frValid:"1"},{key:"dynamic.panel.type",enValue:"Panel Type",enValid:"1",frValue:"Type de panneaux",frValid:"1"},{key:"dynamic.panel.actions",enValue:"Panel Actions",enValid:"1",frValue:"Actions du panneau",frValid:"1"},{key:"dynamic.panel.idTaken",enValue:"Panel ID is already",enValid:"1",frValue:"Le nom du panneau est déjà utilisé",frValid:"1"},{key:"dynamic.panel.editor",enValue:"Panel Editor:",enValid:"1",frValue:"Éditeur de panneaux:",frValid:"1"},{key:"timeslider.expand",enValue:"Expand",enValid:"1",frValue:"Développer",frValid:"1"},{key:"timeslider.minimize",enValue:"Minimize",enValid:"1",frValue:"Réduire",frValid:"1"},{key:"timeslider.play",enValue:"Play",enValid:"1",frValue:"Lecture",frValid:"1"},{key:"timeslider.pause",enValue:"Pause",enValid:"1",frValue:"Pause",frValid:"1"},{key:"fullscreen.activate",enValue:"Enter Fullscreen",enValid:"1",frValue:"Afficher le mode plein écran",frValid:"1"},{key:"fullscreen.deactivate",enValue:"Exit Fullscreen",enValid:"1",frValue:"Quitter le mode plein écran",frValid:"1"},{key:"editor.window.title",enValue:"RAMP Storylines Editor",enValid:"1",frValue:"Éditeur de scénarios de la PCAR",frValid:"1"},{key:"editor.createProduct",enValue:"Create New Storylines Product",enValid:"1",frValue:"Créer un nouveau produit de scénarios",frValid:"1"},{key:"editor.editProduct",enValue:"Edit Existing Storylines Product",enValid:"1",frValue:"Modifier un produit de scénarios",frValid:"1"},{key:"editor.editMetadata",enValue:"Edit Project Metadata",enValid:"1",frValue:"Modifier les métadonnées d’un projet",frValid:"1"},{key:"editor.productDetails",enValue:"Storylines product details",enValid:"1",frValue:"Détails du produit de scénarios",frValid:"1"},{key:"editor.metadata.instructions",enValue:'Fill in metadata details about your new Storylines product. Use the "Preview" button to see what your slides will look like.',enValid:"1",frValue:"Inscrivez les métadonnées de votre nouveau produit de scénario. Utilisez la fonction « Afficher l’aperçu » pour voir à quoi ressemblent vos diapositives.",frValid:"1"},{key:"editor.uuid",enValue:"UUID",enValid:"1",frValue:"UUID",frValid:"0"},{key:"editor.uuid.exists",enValue:"UUID already exists. Saving this will overwrite existing product.",enValid:"1",frValue:"L’IDUU existe déjà. Enregistrer ce produit écrasera le produit existant.",frValid:"1"},{key:"editor.title",enValue:"Title",enValid:"1",frValue:"Titre",frValid:"1"},{key:"editor.logo",enValue:"Logo",enValid:"1",frValue:"Logo",frValid:"1"},{key:"editor.logoPreview",enValue:"Logo Preview",enValid:"1",frValue:"Aperçu du logo",frValid:"1"},{key:"editor.logoAltText",enValue:"Logo Alt Text",enValid:"1",frValue:"Lien contextuel",frValid:"1"},{key:"editor.logoAltText.desc",enValue:"For accessibility purposes, provide description text for the logo.",enValid:"1",frValue:"Pour des raisons d'accessibilité, fournissez un texte descriptif pour le logo.",frValid:"0"},{key:"editor.contextLink",enValue:"Context Link",enValid:"1",frValue:"Lien contextuel",frValid:"1"},{key:"editor.contextLink.info",enValue:"Context link shows up at the bottom of the page to provide additional resources for interested users.",enValid:"1",frValue:"Le lien contextuel apparaît au bas de la page et fournit des ressources supplémentaires aux utilisateurs intéressés.",frValid:"1"},{key:"editor.contextLabel",enValue:"Context Label",enValid:"1",frValue:"Étiquette de contexte",frValid:"1"},{key:"editor.contextLabel.info",enValue:"Context label shows up before the context link to explain what the link is for",enValid:"1",frValue:"L’étiquette de contexte apparaît avant le lien contextuel et explique à quoi sert le lien.",frValid:"1"},{key:"editor.dateModified",enValue:"Date Modified",enValid:"1",frValue:"Date de modification",frValid:"1"},{key:"editor.load",enValue:"Load",enValid:"1",frValue:"Charger",frValid:"1"},{key:"editor.browse",enValue:"Browse",enValid:"1",frValue:"Parcourir",frValid:"1"},{key:"editor.remove",enValue:"Remove",enValid:"1",frValue:"Supprimer",frValid:"1"},{key:"editor.back",enValue:"Back",enValid:"1",frValue:"Retour",frValid:"1"},{key:"editor.next",enValue:"Next",enValid:"1",frValue:"Suivant",frValid:"1"},{key:"editor.preview",enValue:"Preview",enValid:"1",frValue:"Afficher l’aperçu",frValid:"1"},{key:"editor.confirm",enValue:"Confirm",enValid:"1",frValue:"Confirmer",frValid:"1"},{key:"editor.cancel",enValue:"Cancel",enValid:"1",frValue:"Annuler",frValid:"1"},{key:"editor.unsavedChanges",enValue:"Unsaved changes",enValid:"1",frValue:"Modifications non enregistrées",frValid:"1"},{key:"editor.saveChanges",enValue:"Save Changes",enValid:"1",frValue:"Enregistrer les modifications",frValid:"1"},{key:"editor.label.or",enValue:"or",enValid:"1",frValue:"ou",frValid:"1"},{key:"editor.label.browse",enValue:"browse",enValid:"1",frValue:"parcourir",frValid:"1"},{key:"editor.label.upload",enValue:"to upload",enValid:"1",frValue:"téléverser",frValid:"1"},{key:"editor.savingChanges",enValue:"Saving...",enValid:"1",frValue:"Enregistrement...",frValid:"1"},{key:"editor.resetChanges",enValue:"Reset Changes",enValid:"1",frValue:"Annuler les modifications",frValid:"1"},{key:"editor.refreshChanges.modal",enValue:"Are you sure you want to reload the product? All unsaved changes will be lost.",enValid:"1",frValue:"Voulez-vous vraiment recharger ce produit? Toute modification non enregistrée sera perdue.",frValid:"1"},{key:"editor.changeLang.modal",enValue:"Are you sure you want to switch languages? Unsaved changes may be lost.",enValid:"1",frValue:"Voulez-vous vraiment changer de langue? Toute modification non enregistrée sera perdue.",frValid:"1"},{key:"editor.frenchConfig",enValue:"View French Config",enValid:"1",frValue:"Afficher la configuration en français",frValid:"1"},{key:"editor.englishConfig",enValue:"View English Config",enValid:"1",frValue:"Afficher la configuration en anglais",frValid:"1"},{key:"editor.returnToLanding",enValue:"Return to Landing",enValid:"1",frValue:"Retour à la page d’accueil",frValid:"1"},{key:"editor.customConfig",enValue:"Are you sure you want to overwrite slide config and save custom changes?",enValid:"1",frValue:"Are you sure you want to overwrite slide config and save custom changes?",frValid:"0"},{key:"editor.image.delete",enValue:"Delete Image",enValid:"1",frValue:"Supprimer l'image",frValid:"1"},{key:"editor.image.label.drag",enValue:"Drag your images here",enValid:"1",frValue:"Faites glisser vos images ici",frValid:"1"},{key:"editor.image.label.caption",enValue:"Caption",enValid:"1",frValue:"Légende",frValid:"1"},{key:"editor.image.reorder",enValue:"Click and drag to reorder images",enValid:"1",frValue:"Cliquez sur les images et faites-les glisser pour changer l’ordre.",frValid:"1"},{key:"editor.image.altTag",enValue:"Alt tag",enValid:"1",frValue:"Texte de remplacement",frValid:"1"},{key:"editor.image.slideshowCaption",enValue:"Slideshow Caption",enValid:"1",frValue:"Légende du diaporama",frValid:"1"},{key:"editor.image.loadingError",enValue:"An error occurred when trying to load image",enValid:"1",frValue:"Une erreur est survenue lors du chargement de l’image.",frValid:"1"},{key:"editor.video.title",enValue:"Video Title",enValid:"1",frValue:"Titre de la vidéo",frValid:"1"},{key:"editor.video.label.drag",enValue:"Drag your video file here",enValid:"1",frValue:"Glissez votre fichier vidéo ici",frValid:"1"},{key:"editor.video.label.captions",enValue:"Video Captions",enValid:"1",frValue:"Sous-titres",frValid:"1"},{key:"editor.video.label.transcript",enValue:"Video Transcript",enValid:"1",frValue:"Transcription",frValid:"1"},{key:"editor.video.label.upload",enValue:"Upload",enValid:"1",frValue:"Télécharger",frValid:"1"},{key:"editor.video.delete",enValue:"Delete Video",enValid:"1",frValue:"Supprimer la vidéo",frValid:"1"},{key:"editor.video.pasteUrl",enValue:"Paste the URL to a video",enValid:"1",frValue:"Paste the URL to a video",frValid:"0"},{key:"editor.chart.delete",enValue:"Delete Chart",enValid:"1",frValue:"Supprimer le graphique",frValid:"1"},{key:"editor.chart.label.name",enValue:"Name",enValid:"1",frValue:"Nom",frValid:"1"},{key:"editor.chart.label.edit",enValue:"Edit",enValid:"1",frValue:"Éditer",frValid:"1"},{key:"editor.chart.label.empty",enValue:"Empty",enValid:"1",frValue:"Vide",frValid:"1"},{key:"editor.chart.label.create",enValue:"Add new chart",enValid:"1",frValue:"Ajouter un nouveau graphique",frValid:"1"},{key:"editor.chart.label.info",enValue:"Interactive chart",enValid:"1",frValue:"[FR] Interactive chart",frValid:"0"},{key:"editor.chart.label.nameExists",enValue:"There is already an existing chart with the name {name}.",enValid:"1",frValue:"There is already an existing chart with the name {name}.",frValid:"0"},{key:"editor.chart.label.info",enValue:"Interactive charts ({num})",enValid:"1",frValue:"Graphiques interactifs ({num})",frValid:"1"},{key:"editor.chart.delete.confirm",enValue:"Are you sure you want to delete the chart {name}?",enValid:"1",frValue:"Voulez-vous vraiment supprimer le graphique {nom}?",frValid:"1"},{key:"editor.map.title",enValue:"Map title",enValid:"1",frValue:"Titre de la carte",frValid:"1"},{key:"editor.map.edit.cancel",enValue:"Cancel editing",enValid:"1",frValue:"Annuler les modifications",frValid:"1"},{key:"editor.map.edit",enValue:"Map editor",enValid:"1",frValue:"Éditeur de carte",frValid:"1"},{key:"editor.map.label.name",enValue:"Map config name",enValid:"1",frValue:"Nom de la configuration de la carte",frValid:"1"},{key:"editor.map.label.create",enValue:"Create New Configuration File",enValid:"1",frValue:"Créer un nouveau fichier de configuration",frValid:"1"},{key:"editor.map.label.edit",enValue:"Edit Map Configuration",enValid:"1",frValue:"Modifier la configuration de la carte",frValid:"1"},{key:"editor.map.scrollguard.enable",enValue:"Enable scrollguard",enValid:"1",frValue:"Activer le contrôle du défilement",frValid:"1"},{key:"editor.map.timeslider.enable",enValue:"Enable Time Slider:",enValid:"1",frValue:"Activer le curseur temporel:",frValid:"1"},{key:"editor.map.timeslider.edit",enValue:"Edit Time Slider Config",enValid:"1",frValue:"Modifier la configuration du curseur temporel",frValid:"1"},{key:"editor.map.timeslider.range",enValue:"Range:",enValid:"1",frValue:"Tranche:",frValid:"1"},{key:"editor.map.timeslider.start",enValue:"Start:",enValid:"1",frValue:"Début:",frValid:"1"},{key:"editor.map.timeslider.attribute",enValue:"Attribute:",enValid:"1",frValue:"Caractéristique:",frValid:"1"},{key:"editor.map.timeslider.layers",enValue:"(OPTIONAL) Comma separated Layer IDs:",enValid:"1",frValue:"(OPTIONAL) Comma separated Layer IDs:",frValid:"0"},{key:"editor.map.timeslider.to",enValue:"to",enValid:"1",frValue:"to",frValid:"0"},{key:"editor.map.timeslider.warning",enValue:"⚠️Warning! Please ensure that:",enValid:"1",frValue:"⚠️Avertissement! Veuillez vous assurer de ce qui suit:",frValid:"1"},{key:"editor.map.timeslider.warning.bullet1",enValue:"All range and start values are positive integers.",enValid:"1",frValue:"Toutes les valeurs de la tranche et du début sont des nombres entiers positifs.",frValid:"1"},{key:"editor.map.timeslider.warning.bullet2",enValue:'The "to" value is greater than or equal to the "from" value.',enValid:"1",frValue:"La valeur « À » est supérieure ou égale à la valeur « De ».",frValid:"1"},{key:"editor.map.timeslider.warning.end",enValue:"Otherwise, your time slider config cannot be saved.",enValid:"1",frValue:"Autrement",frValid:" la configuration du curseur temporel ne pourra pas être enregistrée."},{key:"editor.slideshow.label.info",enValue:"Slideshow items ({num})",enValid:"1",frValue:"[FR] Slideshow items ({num})",frValid:"0"},{key:"editor.slideshow.label.create",enValue:"Add new item",enValid:"1",frValue:"[FR] Add new item",frValid:"0"},{key:"editor.slideshow.label.edit",enValue:"Edit existing item",enValid:"1",frValue:"[FR] Edit existing item",frValid:"0"},{key:"editor.slideshow.label.type",enValue:"Type",enValid:"1",frValue:"[FR] Type",frValid:"0"},{key:"editor.slideshow.label.add",enValue:"Add",enValid:"1",frValue:"[FR] Add",frValid:"0"},{key:"editor.slides.title",enValue:"SLIDES",enValid:"1",frValue:"DIAPOSITIVES",frValid:"1"},{key:"editor.slides.addSlide",enValue:"New Slide",enValid:"1",frValue:"Nouvelle diapositive",frValid:"1"},{key:"editor.slides.copyFromLang",enValue:"Copy slides from the other language",enValid:"1",frValue:"Copier les diapositives de l’autre langue",frValid:"1"},{key:"editor.slides.deleteSlide.confirm",enValue:"Are you sure you want to delete the slide {title}?",enValid:"1",frValue:"Voulez-vous vraiment supprimer la diapositive {titre}?",frValid:"1"},{key:"editor.slides.changeSlide.confirm",enValue:"Are you sure you want to change the slide {title}? All unsaved progress will be lost.",enValid:"1",frValue:"Voulez-vous vraiment modifier la diapositive {titre}? Toute modification non enregistrée sera perdue.",frValid:"1"},{key:"editor.slides.makeFull",enValue:"Make the right panel the full slide",enValid:"1",frValue:"Mettre la diapositive complète dans le panneau de droite",frValid:"1"},{key:"editor.slides.copyAll",enValue:"Copy all",enValid:"1",frValue:"Copier tout",frValid:"1"},{key:"editor.slides.copy",enValue:"Copy",enValid:"1",frValue:"Copier",frValid:"1"},{key:"editor.slides.slide",enValue:"Slide",enValid:"1",frValue:"Diapositive",frValid:"1"},{key:"editor.slides.previousSlide",enValue:"Previous slide",enValid:"1",frValue:"Diapositive précédente",frValid:"1"},{key:"editor.slides.nextSlide",enValue:"Next slide",enValid:"1",frValue:"Diapositive suivante",frValid:"1"},{key:"editor.slides.leftPanel",enValue:"Left panel",enValid:"1",frValue:"Panneau de gauche",frValid:"1"},{key:"editor.slides.rightPanel",enValue:"Right panel",enValid:"1",frValue:"Panneau de droite",frValid:"1"},{key:"editor.slides.fullscreenPanel",enValue:"Fullscreen panel",enValid:"1",frValue:"Panneau plein écran",frValid:"1"},{key:"editor.slides.advanced",enValue:"Advanced",enValid:"1",frValue:"Avancé",frValid:"0"},{key:"editor.slides.contentType",enValue:"Content type",enValid:"1",frValue:"Type de contenu",frValid:"1"},{key:"editor.slides.content",enValue:"Content",enValid:"1",frValue:"Contenu",frValid:"1"},{key:"editor.slides.select",enValue:"Please select a slide to edit",enValid:"1",frValue:"Veuillez sélectionner une diapositive à modifier",frValid:"1"},{key:"editor.slides.panel.body",enValue:"Panel body",enValid:"1",frValue:"Corps du panneau",frValid:"1"},{key:"editor.slides.panel.title",enValue:"Panel title",enValid:"1",frValue:"Titre du panneau",frValid:"1"},{key:"editor.slides.intro",enValue:"Intro subtitle",enValid:"1",frValue:"Sous-titre de l’introduction",frValid:"1"},{key:"editor.slides.title",enValue:"Intro title",enValid:"1",frValue:"Titre de l’introduction",frValid:"1"},{key:"editor.tocOrientation",enValue:"Table of Contents Orientation",enValid:"1",frValue:"Orientation de la table des matières",frValid:"0"},{key:"editor.tocOrientation.info",enValue:"The table of contents orientation will be set to vertical in mobile view.",enValid:"1",frValue:"L'orientation de la table des matières sera définie sur verticale en vue mobile.",frValid:"0"},{key:"editor.tocOrientation.vertical",enValue:"Vertical",enValid:"1",frValue:"Vertical",frValid:"0"},{key:"editor.tocOrientation.horizontal",enValue:"Horizontal",enValid:"1",frValue:"Horizontal",frValid:"0"}];i.columns=["key","enValue","enValid","frValue","frValid"],e.exports=i},"480b":function(e,t,i){"use strict";i("012b")},"4f41":function(e,t,i){},"518e":function(e,t,i){},"5cf1":function(e,t,i){},"5cf4":function(e,t,i){"use strict";i("689c")},6381:function(e,t,i){},"689c":function(e,t,i){},"68ee":function(e,t,i){"use strict";i("20bf")},"6abc":function(e,t,i){"use strict";i("daa0")},"6f09":function(e,t,i){"use strict";i("85c0")},7550:function(e,t,i){},7847:function(e){e.exports=JSON.parse('{"comment":"","version":"3.3.2","language":"en","ui":{"title":"Interactive map","fullscreen":true,"navBar":{"zoom":"buttons","extra":["fullscreen","geoLocator","home","help"]},"appBar":{"basemap":true},"help":{"folderName":"default"},"sideMenu":{"items":[["fullscreen","export","touch","help","about"]],"logo":false},"legend":{"allowImport":false,"isOpen":{"large":true,"medium":false,"small":false}}},"services":{"proxyUrl":"https://maps.canada.ca/wmsproxy/ws/wmsproxy/executeFromProxy","exportMapUrl":"https://maps-cartes.ec.gc.ca/arcgis/rest/services/Utilities/PrintingTools/GPServer/Export%20Web%20Map%20Task","export":{"title":{"value":""},"map":{},"mapElements":{},"legend":{},"footnote":{"value":""}},"search":{"settings":{"categories":["CITY","HAM","IR","LTM","MUN1","MUN2","PROV","STM","TERR","TOWN","UTM","VILG","UNP"],"sortOrder":["CITY","HAM","IR","LTM","MUN1","MUN2","PROV","STM","TERR","TOWN","UTM","VILG","UNP"],"maxResults":1000,"officialOnly":true},"serviceUrls":{"geoNames":"https://geogratis.gc.ca/services/geoname/en/geonames.json","geoLocation":"https://geogratis.gc.ca/services/geolocation/en/locate?q=","geoSuggest":"https://geogratis.gc.ca/services/geolocation/en/suggest?q=","provinces":"https://geogratis.gc.ca/services/geoname/en/codes/province.json","types":"https://geogratis.gc.ca/services/geoname/en/codes/concise.json"}}},"map":{"initialBasemapId":"baseNrCan","components":{"geoSearch":{"enabled":true,"showGraphic":true,"showInfo":true},"mouseInfo":{"enabled":true,"spatialReference":{"wkid":4326}},"northArrow":{"enabled":false},"basemap":{"enabled":true},"overviewMap":{"enabled":true,"layerType":"imagery"},"scaleBar":{"enabled":true}},"extentSets":[{"id":"EXT_NRCAN_Lambert_3978","default":{"xmax":3049492,"xmin":-5281457,"ymax":4482193,"ymin":-983440},"spatialReference":{"wkid":3978}},{"id":"EXT_ESRI_World_AuxMerc_3857","default":{"xmax":-5007771.626060756,"xmin":-16632697.354854,"ymax":10015875.184845109,"ymin":5022907.964742964},"spatialReference":{"wkid":102100,"latestWkid":3857}}],"lodSets":[{"id":"LOD_NRCAN_Lambert_3978","lods":[{"level":0,"resolution":38364.660062653464,"scale":145000000},{"level":1,"resolution":22489.62831258996,"scale":85000000},{"level":2,"resolution":13229.193125052918,"scale":50000000},{"level":3,"resolution":7937.5158750317505,"scale":30000000},{"level":4,"resolution":4630.2175937685215,"scale":17500000},{"level":5,"resolution":2645.8386250105837,"scale":10000000},{"level":6,"resolution":1587.5031750063501,"scale":6000000},{"level":7,"resolution":926.0435187537042,"scale":3500000},{"level":8,"resolution":529.1677250021168,"scale":2000000},{"level":9,"resolution":317.50063500127004,"scale":1200000},{"level":10,"resolution":185.20870375074085,"scale":700000},{"level":11,"resolution":111.12522225044451,"scale":420000},{"level":12,"resolution":66.1459656252646,"scale":250000},{"level":13,"resolution":38.36466006265346,"scale":145000},{"level":14,"resolution":22.48962831258996,"scale":85000},{"level":15,"resolution":13.229193125052918,"scale":50000},{"level":16,"resolution":7.9375158750317505,"scale":30000},{"level":17,"resolution":4.6302175937685215,"scale":17500}]},{"id":"LOD_ESRI_World_AuxMerc_3857","lods":[{"level":0,"resolution":19567.87924099992,"scale":73957190.948944},{"level":1,"resolution":9783.93962049996,"scale":36978595.474472},{"level":2,"resolution":4891.96981024998,"scale":18489297.737236},{"level":3,"resolution":2445.98490512499,"scale":9244648.868618},{"level":4,"resolution":1222.992452562495,"scale":4622324.434309},{"level":5,"resolution":611.4962262813797,"scale":2311162.217155},{"level":6,"resolution":305.74811314055756,"scale":1155581.108577},{"level":7,"resolution":152.87405657041106,"scale":577790.554289},{"level":8,"resolution":76.43702828507324,"scale":288895.277144},{"level":9,"resolution":38.21851414253662,"scale":144447.638572},{"level":10,"resolution":19.10925707126831,"scale":72223.819286},{"level":11,"resolution":9.554628535634155,"scale":36111.909643},{"level":12,"resolution":4.77731426794937,"scale":18055.954822},{"level":13,"resolution":2.388657133974685,"scale":9027.977411},{"level":14,"resolution":1.1943285668550503,"scale":4513.988705},{"level":15,"resolution":0.5971642835598172,"scale":2256.994353},{"level":16,"resolution":0.29858214164761665,"scale":1128.497176},{"level":17,"resolution":0.14929107082380833,"scale":564.248588},{"level":18,"resolution":0.07464553541190416,"scale":282.124294},{"level":19,"resolution":0.03732276770595208,"scale":141.062147},{"level":20,"resolution":0.01866138385297604,"scale":70.5310735}]}],"legend":{"type":"autopopulate"},"layers":[],"tileSchemas":[{"id":"EXT_NRCAN_Lambert_3978#LOD_NRCAN_Lambert_3978","name":"Lambert Maps","extentSetId":"EXT_NRCAN_Lambert_3978","lodSetId":"LOD_NRCAN_Lambert_3978","hasNorthPole":true},{"id":"EXT_ESRI_World_AuxMerc_3857#LOD_ESRI_World_AuxMerc_3857","name":"Web Mercator Maps","extentSetId":"EXT_ESRI_World_AuxMerc_3857","lodSetId":"LOD_ESRI_World_AuxMerc_3857"}],"baseMaps":[{"id":"baseNrCan","name":"Canada Base Map - Transportation (CBMT)","description":"The Canada Base Map - Transportation (CBMT) web mapping services of the Earth Sciences Sector at Natural Resources Canada, are intended primarily for online mapping application users and developers.","altText":"The Canada Base Map - Transportation (CBMT)","layers":[{"id":"CBMT","layerType":"esriFeature","url":"https://maps-cartes.services.geo.ca/server2_serveur2/rest/services/BaseMaps/CBMT3978/MapServer"}],"tileSchemaId":"EXT_NRCAN_Lambert_3978#LOD_NRCAN_Lambert_3978"},{"id":"baseSimple","name":"Canada Base Map - Simple","description":"Canada Base Map - Simple","altText":"Canada base map - Simple","layers":[{"id":"SMR","layerType":"esriFeature","url":"https://maps-cartes.services.geo.ca/server2_serveur2/rest/services/BaseMaps/Simple/MapServer"}],"tileSchemaId":"EXT_NRCAN_Lambert_3978#LOD_NRCAN_Lambert_3978"},{"id":"baseCBME_CBCE_HS_RO_3978","name":"Canada Base Map - Elevation (CBME)","description":"The Canada Base Map - Elevation (CBME) web mapping services of the Earth Sciences Sector at Natural Resources Canada, is intended primarily for online mapping application users and developers.","altText":"Canada Base Map - Elevation (CBME)","layers":[{"id":"CBME_CBCE_HS_RO_3978","layerType":"esriFeature","url":"https://maps-cartes.services.geo.ca/server2_serveur2/rest/services/BaseMaps/CBME_CBCE_HS_RO_3978/MapServer"}],"tileSchemaId":"EXT_NRCAN_Lambert_3978#LOD_NRCAN_Lambert_3978"},{"id":"baseCBMT_CBCT_GEOM_3978","name":"Canada Base Map - Transportation (CBMT)","description":" The Canada Base Map - Transportation (CBMT) web mapping services of the Earth Sciences Sector at Natural Resources Canada, are intended primarily for online mapping application users and developers.","altText":"Canada Base Map - Transportation (CBMT)","layers":[{"id":"CBMT_CBCT_GEOM_3978","layerType":"esriFeature","url":"https://maps-cartes.services.geo.ca/server2_serveur2/rest/services/BaseMaps/CBMT_CBCT_GEOM_3978/MapServer"}],"tileSchemaId":"EXT_NRCAN_Lambert_3978#LOD_NRCAN_Lambert_3978"},{"id":"baseEsriWorld","name":"World Imagery","description":"World Imagery provides one meter or better satellite and aerial imagery in many parts of the world and lower resolution satellite imagery worldwide.","altText":"World Imagery","layers":[{"id":"World_Imagery","layerType":"esriFeature","url":"https://services.arcgisonline.com/arcgis/rest/services/World_Imagery/MapServer"}],"tileSchemaId":"EXT_ESRI_World_AuxMerc_3857#LOD_ESRI_World_AuxMerc_3857"},{"id":"baseEsriPhysical","name":"World Physical Map","description":"This map presents the Natural Earth physical map at 1.24km per pixel for the world and 500m for the coterminous United States.","altText":"World Physical Map","layers":[{"id":"World_Physical_Map","layerType":"esriFeature","url":"https://services.arcgisonline.com/arcgis/rest/services/World_Physical_Map/MapServer"}],"tileSchemaId":"EXT_ESRI_World_AuxMerc_3857#LOD_ESRI_World_AuxMerc_3857"},{"id":"baseEsriRelief","name":"World Shaded Relief","description":"This map portrays surface elevation as shaded relief. This map is used as a basemap layer to add shaded relief to other GIS maps, such as the ArcGIS Online World Street Map.","altText":"World Shaded Relief","layers":[{"id":"World_Shaded_Relief","layerType":"esriFeature","url":"https://services.arcgisonline.com/arcgis/rest/services/World_Shaded_Relief/MapServer"}],"tileSchemaId":"EXT_ESRI_World_AuxMerc_3857#LOD_ESRI_World_AuxMerc_3857"},{"id":"baseEsriStreet","name":"World Street Map","description":"This worldwide street map presents highway-level data for the world.","altText":"ESWorld Street Map","layers":[{"id":"World_Street_Map","layerType":"esriFeature","url":"https://services.arcgisonline.com/arcgis/rest/services/World_Street_Map/MapServer"}],"tileSchemaId":"EXT_ESRI_World_AuxMerc_3857#LOD_ESRI_World_AuxMerc_3857"},{"id":"baseEsriTerrain","name":"World Terrain Base","description":"This map is designed to be used as a base map by GIS professionals to overlay other thematic layers such as demographics or land cover.","altText":"World Terrain Base","layers":[{"id":"World_Terrain_Base","layerType":"esriFeature","url":"https://services.arcgisonline.com/arcgis/rest/services/World_Terrain_Base/MapServer"}],"tileSchemaId":"EXT_ESRI_World_AuxMerc_3857#LOD_ESRI_World_AuxMerc_3857"},{"id":"baseEsriTopo","name":"World Topographic Map","description":"This map is designed to be used as a basemap by GIS professionals and as a reference map by anyone.","altText":"World Topographic Map","layers":[{"id":"World_Topo_Map","layerType":"esriFeature","url":"https://services.arcgisonline.com/arcgis/rest/services/World_Topo_Map/MapServer"}],"tileSchemaId":"EXT_ESRI_World_AuxMerc_3857#LOD_ESRI_World_AuxMerc_3857"}]}}')},"85c0":function(e,t,i){},9972:function(e,t,i){"use strict";i("5cf1")},"9a2c":function(e,t,i){"use strict";i("dd0c")},a229:function(e,t,i){"use strict";i("6381")},a95a:function(e,t,i){"use strict";i("1a83")},b357:function(e,t,i){"use strict";i("c962")},c3a4:function(e,t,i){},c42e:function(e,t,i){"use strict";i("f944")},c666:function(e,t,i){"use strict";i("e289")},c962:function(e,t,i){},cd49:function(e,t,i){"use strict";i.r(t);var a=i("7a23");const l={id:"app",class:"storyramp-app bg-white"};function o(e,t,i,o,n,r){const s=Object(a["resolveComponent"])("router-view");return Object(a["openBlock"])(),Object(a["createElementBlock"])("div",l,[(Object(a["openBlock"])(),Object(a["createBlock"])(s,{key:e.$route.path}))])}var n=i("9ab4"),r=i("1b40");class s extends r["c"]{onRouteUpdate(e){var t;this.$i18n.locale=null!==(t=e.params.lang)&&void 0!==t?t:"en",e.params.lang&&(document.title=this.$t(e.meta.title))}}Object(n["a"])([Object(r["d"])("$route",{immediate:!0})],s.prototype,"onRouteUpdate",null);i("9a2c");var c=i("6b0d"),d=i.n(c);const u=d()(s,[["render",o]]);var m=u,p=i("ce1f");p["b"].registerHooks(["beforeRouterEnter","beforeRouteLeave","beforeRouteUpdate"]);const h={class:"flex justify-center"},b={class:"home-btn-container border-4 border-gray-400 border-solid m-24"},g={class:"text-2xl font-bold"},f={class:"home-btn-container border-4 border-gray-400 border-solid m-24"},v={class:"text-2xl font-bold"};function O(e,t,i,l,o,n){const r=Object(a["resolveComponent"])("router-link");return Object(a["openBlock"])(),Object(a["createElementBlock"])("div",h,[Object(a["createElementVNode"])("div",b,[Object(a["createVNode"])(r,{to:{name:"metadataNew"},class:"flex justify-center h-full w-full",target:""},{default:Object(a["withCtx"])(()=>[Object(a["createElementVNode"])("button",g,"+ "+Object(a["toDisplayString"])(e.$t("editor.createProduct")),1)]),_:1})]),Object(a["createElementVNode"])("div",f,[Object(a["createVNode"])(r,{to:{name:"metadataExisting"},class:"flex justify-center h-full w-full",target:""},{default:Object(a["withCtx"])(()=>[Object(a["createElementVNode"])("button",v,Object(a["toDisplayString"])(e.$t("editor.editProduct")),1)]),_:1})])])}class j extends r["c"]{}i("9972");const V=d()(j,[["render",O]]);var y=V;const S={class:"editor-container"},C={class:"px-20 py-5"},x={class:"flex"},E={class:"flex text-2xl font-bold mb-5"},w={class:"border py-5 w-5/6"},k={key:0,class:"text-red-500"},N={key:0,class:"text-yellow-500 rounded p-1 ml-2"},T=Object(a["createElementVNode"])("span",{class:"align-middle inline-block mr-1 pb-1 fill-current"},[Object(a["createElementVNode"])("svg",{"clip-rule":"evenodd","fill-rule":"evenodd","stroke-linejoin":"round","stroke-miterlimit":"2",viewBox:"0 0 24 24",width:"18",height:"18",xmlns:"http://www.w3.org/2000/svg"},[Object(a["createElementVNode"])("path",{d:"m2.095 19.886 9.248-16.5c.133-.237.384-.384.657-.384.272 0 .524.147.656.384l9.248 16.5c.064.115.096.241.096.367 0 .385-.309.749-.752.749h-18.496c-.44 0-.752-.36-.752-.749 0-.126.031-.252.095-.367zm9.907-6.881c-.414 0-.75.336-.75.75v3.5c0 .414.336.75.75.75s.75-.336.75-.75v-3.5c0-.414-.336-.75-.75-.75zm-.002-3c-.552 0-1 .448-1 1s.448 1 1 1 1-.448 1-1-.448-1-1-1z","fill-rule":"nonzero"})])],-1),_={class:"align-center inline-block select-none"},$={key:2,class:"inline-flex align-middle mb-1"},L=Object(a["createElementVNode"])("br",null,null,-1),I={class:"mb-4"},M={class:"flex mt-8"},B={class:"ml-auto"},D=["onClick"],F={slot:"header",class:"text-lg font-bold"},P={class:"w-full flex justify-end"};function R(e,t,i,l,o,n){const r=Object(a["resolveComponent"])("spinner"),s=Object(a["resolveComponent"])("metadata-content"),c=Object(a["resolveComponent"])("router-link"),d=Object(a["resolveComponent"])("confirmation-modal"),u=Object(a["resolveComponent"])("vue-final-modal"),m=Object(a["resolveComponent"])("editor");return Object(a["openBlock"])(),Object(a["createElementBlock"])("div",S,[e.loadEditor?Object(a["createCommentVNode"])("",!0):(Object(a["openBlock"])(),Object(a["createElementBlock"])(a["Fragment"],{key:0},[Object(a["createElementVNode"])("div",C,[Object(a["createElementVNode"])("div",x,[Object(a["createElementVNode"])("div",E,Object(a["toDisplayString"])(e.editExisting?e.$t("editor.editProduct"):e.$t("editor.createProduct")),1),Object(a["createElementVNode"])("button",{onClick:t[0]||(t[0]=t=>e.swapLang())},Object(a["toDisplayString"])("en"===e.configLang?e.$t("editor.frenchConfig"):e.$t("editor.englishConfig")),1)]),Object(a["createElementVNode"])("div",w,[Object(a["createElementVNode"])("label",null,["uuid"in e.reqFields?(Object(a["openBlock"])(),Object(a["createElementBlock"])("span",k,"*")):Object(a["createCommentVNode"])("",!0),Object(a["createTextVNode"])(" "+Object(a["toDisplayString"])(e.$t("editor.uuid"))+":",1)]),Object(a["withDirectives"])(Object(a["createElementVNode"])("input",{type:"text",onInput:t[1]||(t[1]=t=>{e.error=!1,e.reqFields.uuid=!0,e.checkUuid()}),"onUpdate:modelValue":t[2]||(t[2]=t=>e.uuid=t),class:Object(a["normalizeClass"])(["w-1/3",e.error||!e.reqFields.uuid?"input-error":""])},null,34),[[a["vModelText"],e.uuid]]),e.warning?(Object(a["openBlock"])(),Object(a["createElementBlock"])("span",N,[T,Object(a["createElementVNode"])("span",_,Object(a["toDisplayString"])(e.$t("editor.uuid.exists")),1)])):Object(a["createCommentVNode"])("",!0),e.editExisting?(Object(a["openBlock"])(),Object(a["createElementBlock"])("button",{key:1,onClick:t[3]||(t[3]=(...t)=>e.generateRemoteConfig&&e.generateRemoteConfig(...t)),class:Object(a["normalizeClass"])(["bg-black text-white hover:bg-gray-800",e.error?"input-error":""])},Object(a["toDisplayString"])(e.$t("editor.load")),3)):Object(a["createCommentVNode"])("",!0),"loading"===e.loadStatus?(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",$,[Object(a["createVNode"])(r,{size:"24px",color:"#009cd1",class:"mx-2 my-auto"})])):Object(a["createCommentVNode"])("",!0)]),L,Object(a["createElementVNode"])("div",I,[Object(a["createElementVNode"])("h3",null,Object(a["toDisplayString"])(e.$t("editor.productDetails")),1),Object(a["createElementVNode"])("p",null,Object(a["toDisplayString"])(e.$t("editor.metadata.instructions")),1)]),Object(a["createVNode"])(s,{metadata:e.metadata,onMetadataChanged:e.updateMetadata,onLogoChanged:e.onFileChange,onLogoSourceChanged:e.onLogoSourceInput},null,8,["metadata","onMetadataChanged","onLogoChanged","onLogoSourceChanged"])]),Object(a["createElementVNode"])("div",M,[e.editExisting?(Object(a["openBlock"])(),Object(a["createElementBlock"])("button",{key:0,onClick:t[4]||(t[4]=t=>e.saveMetadata(!0)),class:"pl-8"},Object(a["toDisplayString"])(e.$t("editor.saveChanges")),1)):Object(a["createCommentVNode"])("",!0),Object(a["createElementVNode"])("div",B,[Object(a["createVNode"])(c,{to:{name:"home"},target:""},{default:Object(a["withCtx"])(()=>[Object(a["createElementVNode"])("button",null,Object(a["toDisplayString"])(e.$t("editor.back")),1)]),_:1}),Object(a["createElementVNode"])("button",{onClick:t[5]||(t[5]=t=>e.warning?e.$vfm.open("confirm-uuid-overwrite"):e.continueToEditor()),class:"bg-black text-white px-8"},Object(a["toDisplayString"])(e.$t("editor.next")),1),Object(a["createVNode"])(d,{name:"confirm-uuid-overwrite",message:e.$t(`Are you sure you want to overwrite product '${e.uuid}'?`),onOk:t[6]||(t[6]=t=>e.continueToEditor())},null,8,["message"])])])],64)),e.loadEditor&&"loaded"===e.loadStatus?(Object(a["openBlock"])(),Object(a["createBlock"])(m,{key:1,configs:e.configs,configFileStructure:e.configFileStructure,sourceCounts:e.sourceCounts,metadata:e.metadata,slides:e.slides,configLang:e.configLang,saving:e.saving,unsavedChanges:e.unsavedChanges,onSaveChanges:e.generateConfig,onSaveStatus:e.updateSaveStatus,onRefreshConfig:e.refreshConfig,ref:"mainEditor"},{langModal:Object(a["withCtx"])(i=>[Object(a["createElementVNode"])("button",{onClick:Object(a["withModifiers"])(t=>i.unsavedChanges?e.$vfm.open("change-lang"):e.swapLang(),["stop"])},Object(a["toDisplayString"])("en"===e.configLang?e.$t("editor.frenchConfig"):e.$t("editor.englishConfig")),9,D),Object(a["createVNode"])(d,{name:"change-lang",message:e.$t("editor.changeLang.modal"),onOk:t[7]||(t[7]=t=>e.swapLang())},null,8,["message"])]),metadataModal:Object(a["withCtx"])(()=>[Object(a["createVNode"])(u,{modalId:"metadata-edit-modal","content-class":"flex flex-col max-h-full overflow-y-auto max-w-xl mx-4 p-4 bg-white border rounded-lg space-y-2",class:"flex justify-center items-center"},{default:Object(a["withCtx"])(()=>[Object(a["createElementVNode"])("h2",F,Object(a["toDisplayString"])(e.$t("editor.editMetadata")),1),Object(a["createVNode"])(s,{metadata:e.metadata,onMetadataChanged:e.updateMetadata,onLogoChanged:e.onFileChange,onLogoSourceChanged:e.onLogoSourceInput},null,8,["metadata","onMetadataChanged","onLogoChanged","onLogoSourceChanged"]),Object(a["createElementVNode"])("div",P,[Object(a["createElementVNode"])("button",{class:"bg-black text-white hover:bg-gray-800",onClick:t[8]||(t[8]=t=>e.saveMetadata(!1))}," Done ")])]),_:1})]),_:1},8,["configs","configFileStructure","sourceCounts","metadata","slides","configLang","saving","unsavedChanges","onSaveChanges","onSaveStatus","onRefreshConfig"])):Object(a["createCommentVNode"])("",!0)])}i("88a7"),i("271a"),i("5494"),i("14d9");var A=i("0a4f"),U=i("7b97"),z=i("327a");const W=e=>(Object(a["pushScopeId"])("data-v-4c97a990"),e=e(),Object(a["popScopeId"])(),e),q={class:"sticky top-20 h-auto self-start flex-grow m-5"},H={key:0},X={class:"flex"},J={class:"flex flex-col"},G=W(()=>Object(a["createElementVNode"])("label",null,"Slide title:",-1)),Z={class:"flex"},Y=W(()=>Object(a["createElementVNode"])("span",{class:"ml-auto"},null,-1)),Q=["disabled"],K=["disabled"],ee={class:"flex mt-3"},te={class:"mx-2 font-bold"},ie=["disabled"],ae=W(()=>Object(a["createElementVNode"])("br",null,null,-1)),le={key:0,class:"flex border-b border-black"},oe=Object(a["createStaticVNode"])('',2),ne={class:"align-middle inline-block pl-1"},re=Object(a["createStaticVNode"])('',2),se={class:"align-middle inline-block pl-1"},ce={class:"align-middle inline-block pl-1"},de={key:1,class:"border-b border-black"},ue=Object(a["createStaticVNode"])('',2),me={class:"align-middle inline-block pl-1"},pe={class:"align-middle inline-block pl-1"},he={class:"flex mt-4"},be={class:"font-bold text-xl"},ge=W(()=>Object(a["createElementVNode"])("span",{class:"ml-auto flex-grow"},null,-1)),fe={key:0,class:"flex flex-col mr-8"},ve={class:"text-left text-lg"},Oe=["value"],je=["value"],Ve={key:1,class:"flex h-full mt-4 justify-center text-gray-600 text-xl"};function ye(e,t,i,l,o,n){const r=Object(a["resolveComponent"])("custom-editor"),s=Object(a["resolveComponent"])("confirmation-modal");return Object(a["openBlock"])(),Object(a["createElementBlock"])("div",q,[e.currentSlide?(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",H,[Object(a["createElementVNode"])("div",X,[Object(a["createElementVNode"])("div",J,[G,Object(a["createElementVNode"])("div",Z,[Object(a["withDirectives"])(Object(a["createElementVNode"])("input",{type:"text","onUpdate:modelValue":t[0]||(t[0]=t=>e.currentSlide.title=t),placeholder:"Add a title",class:"w-2/3"},null,512),[[a["vModelText"],e.currentSlide.title]]),Y,Object(a["createElementVNode"])("button",{onClick:t[1]||(t[1]=Object(a["withModifiers"])(t=>e.selectSlide(e.slideIndex-1),["stop"])),disabled:0===e.slideIndex,class:"border border-black"},Object(a["toDisplayString"])(e.$t("editor.slides.previousSlide")),9,Q),Object(a["createElementVNode"])("button",{onClick:t[2]||(t[2]=Object(a["withModifiers"])(t=>e.selectSlide(e.slideIndex+1),["stop"])),disabled:e.isLast,class:"border border-black"},Object(a["toDisplayString"])(e.$t("editor.slides.nextSlide")),9,K)]),Object(a["createElementVNode"])("div",ee,[Object(a["createElementVNode"])("span",te,Object(a["toDisplayString"])(e.$t("editor.slides.makeFull")),1),Object(a["withDirectives"])(Object(a["createElementVNode"])("input",{type:"checkbox",class:"rounded-none cursor-pointer w-4 h-4","onUpdate:modelValue":t[3]||(t[3]=t=>e.rightOnly=t),disabled:e.rightOnly&&"dynamic"===e.determineEditorType(e.currentSlide.panel[e.panelIndex]),onChange:t[4]||(t[4]=Object(a["withModifiers"])(t=>e.$vfm.open("right-only-"+e.slideIndex),["stop"]))},null,40,ie),[[a["vModelCheckbox"],e.rightOnly]])])])]),ae,2===e.currentSlide.panel.length?(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",le,[Object(a["createElementVNode"])("button",{onClick:t[5]||(t[5]=()=>{e.panelIndex=0,e.advancedEditorView=!1,e.saveChanges()}),class:Object(a["normalizeClass"])(["border-t border-l border-r",0!=e.panelIndex||e.advancedEditorView?"border-white":"border-black"])},[oe,Object(a["createElementVNode"])("span",ne,Object(a["toDisplayString"])(e.$t("editor.slides.leftPanel")),1)],2),Object(a["createElementVNode"])("button",{onClick:t[6]||(t[6]=()=>{e.panelIndex=1,e.advancedEditorView=!1,e.saveChanges()}),class:Object(a["normalizeClass"])(["border-t border-l border-r",1!=e.panelIndex||e.advancedEditorView?"border-white":"border-black"])},[re,Object(a["createElementVNode"])("span",se,Object(a["toDisplayString"])(e.$t("editor.slides.rightPanel")),1)],2),Object(a["createElementVNode"])("button",{onClick:t[7]||(t[7]=()=>{e.advancedEditorView=!0,e.saveChanges()}),class:Object(a["normalizeClass"])(["border-t border-l border-r",e.advancedEditorView?"border-black":"border-white"])},[Object(a["createElementVNode"])("span",ce,Object(a["toDisplayString"])(e.$t("editor.slides.advanced")),1)],2)])):(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",de,[Object(a["createElementVNode"])("button",{onClick:t[8]||(t[8]=()=>{e.advancedEditorView=!1,e.saveChanges()}),class:Object(a["normalizeClass"])(["border-t border-l border-r",e.advancedEditorView?"border-white":"border-black"])},[ue,Object(a["createElementVNode"])("span",me,Object(a["toDisplayString"])(e.$t("editor.slides.fullscreenPanel")),1)],2),Object(a["createElementVNode"])("button",{onClick:t[9]||(t[9]=()=>{e.advancedEditorView=!0,e.saveChanges()}),class:Object(a["normalizeClass"])(["border-t border-l border-r",e.advancedEditorView?"border-black":"border-white"])},[Object(a["createElementVNode"])("span",pe,Object(a["toDisplayString"])(e.$t("editor.slides.advanced")),1)],2)])),Object(a["createElementVNode"])("div",null,[Object(a["createElementVNode"])("div",he,[Object(a["createElementVNode"])("span",be,Object(a["toDisplayString"])(e.$t("editor.slides.content"))+":",1),ge,1===e.panelIndex&&!e.advancedEditorView||e.rightOnly?(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",fe,[Object(a["createElementVNode"])("label",ve,Object(a["toDisplayString"])(e.$t("editor.slides.contentType"))+":",1),Object(a["createElementVNode"])("select",{ref:"typeSelector",onInput:t[10]||(t[10]=t=>{e.$vfm.open("change-slide-"+e.slideIndex),e.newType=t.target.value}),value:e.determineEditorType(e.currentSlide.panel[e.panelIndex])},[(Object(a["openBlock"])(!0),Object(a["createElementBlock"])(a["Fragment"],null,Object(a["renderList"])(Object.keys(e.editors).filter(e=>"loading"!==e),e=>(Object(a["openBlock"])(),Object(a["createElementBlock"])("option",{key:e,value:e},Object(a["toDisplayString"])(e),9,je))),128))],40,Oe)])):Object(a["createCommentVNode"])("",!0)]),e.advancedEditorView?(Object(a["openBlock"])(),Object(a["createBlock"])(r,{key:0,ref:"editor",config:e.currentSlide,lang:e.lang,slideIndex:e.slideIndex,onSlideEdit:t[11]||(t[11]=t=>e.$emit("slide-edit")),onConfigEdited:t[12]||(t[12]=(t,i=!1)=>e.$emit("custom-slide-updated",t,i))},null,8,["config","lang","slideIndex"])):(Object(a["openBlock"])(),Object(a["createBlock"])(Object(a["resolveDynamicComponent"])(e.editors[e.determineEditorType(e.currentSlide.panel[e.panelIndex])]),{ref:"editor",key:e.panelIndex+e.determineEditorType(e.currentSlide.panel[e.panelIndex]),panel:e.currentSlide.panel[e.panelIndex],configFileStructure:e.configFileStructure,lang:e.lang,uid:e.uid,sourceCounts:e.sourceCounts,onSlideEdit:t[13]||(t[13]=t=>e.$emit("slide-edit"))},null,40,["panel","configFileStructure","lang","uid","sourceCounts"]))])])):(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",Ve,[Object(a["createElementVNode"])("span",null,Object(a["toDisplayString"])(e.$t("editor.slides.select")),1)])),Object(a["createVNode"])(s,{name:"change-slide-"+e.slideIndex,message:e.$t("editor.slides.changeSlide.confirm",{title:e.currentSlide.title}),onOk:t[14]||(t[14]=t=>e.changePanelType(e.determineEditorType(e.currentSlide.panel[e.panelIndex]),e.newType)),onCancel:e.cancelTypeChange},null,8,["name","message","onCancel"]),Object(a["createVNode"])(s,{name:"right-only-"+e.slideIndex,message:e.$t("editor.slides.changeSlide.confirm",{title:e.currentSlide.title}),onOk:t[15]||(t[15]=t=>e.toggleRightOnly()),onCancel:t[16]||(t[16]=t=>e.rightOnly=!e.rightOnly)},null,8,["name","message"])])}var Se;(function(e){e["Text"]="text",e["Image"]="image",e["Map"]="map",e["Chart"]="chart",e["Video"]="video",e["Audio"]="audio",e["Slideshow"]="slideshow",e["Dynamic"]="dynamic",e["Loading"]="loading"})(Se||(Se={}));const Ce={class:"block"},xe={class:"flex items-center"},Ee={class:"font-bold px-4"},we=["disabled"],ke={class:"flex items-center"},Ne=Object(a["createElementVNode"])("svg",{height:"18px",width:"18px",viewBox:"0 0 23 21",xmlns:"http://www.w3.org/2000/svg"},[Object(a["createElementVNode"])("path",{d:"M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z"})],-1),Te={class:"px-2"},_e=Object(a["createElementVNode"])("hr",{class:"border-solid border-t-2 border-gray-300 my-2"},null,-1),$e={key:0,class:"m-4"},Le={class:"italic text-gray-400"},Ie={class:"flex flex-wrap list-none"};function Me(e,t,i,l,o,n){const r=Object(a["resolveComponent"])("ChartPreview"),s=Object(a["resolveComponent"])("draggable"),c=Object(a["resolveComponent"])("confirmation-modal");return Object(a["openBlock"])(),Object(a["createElementBlock"])("div",Ce,[Object(a["createElementVNode"])("div",xe,[Object(a["createElementVNode"])("span",Ee,Object(a["toDisplayString"])(e.$t("editor.chart.label.info",{num:e.chartConfigs.length})),1),Object(a["createElementVNode"])("button",{class:"chart-btn bg-gray-100 cursor-pointer hover:bg-gray-200",id:"modal-btn",onClick:t[0]||(t[0]=t=>e.clearEditor()),disabled:!e.allowMany&&e.chartConfigs.length>0},[Object(a["createElementVNode"])("div",ke,[Ne,Object(a["createElementVNode"])("span",Te,Object(a["toDisplayString"])(e.$t("editor.chart.label.create")),1)])],8,we)]),_e,0===e.chartConfigs.length?(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",$e,[Object(a["createElementVNode"])("span",Le,Object(a["toDisplayString"])(e.$t("editor.chart.label.empty")),1)])):Object(a["createCommentVNode"])("",!0),Object(a["withDirectives"])(Object(a["createElementVNode"])("ul",Ie,[Object(a["createVNode"])(s,{modelValue:e.chartConfigs,"onUpdate:modelValue":t[1]||(t[1]=t=>e.chartConfigs=t),handle:".handle",onUpdate:e.onChartsEdited,class:"flex flex-wrap list-none","item-key":"name"},{item:Object(a["withCtx"])(({element:t,index:i})=>[(Object(a["openBlock"])(),Object(a["createBlock"])(r,{key:`${t.name}-${i}`,chart:t,configFileStructure:e.configFileStructure,sourceCounts:e.sourceCounts,lang:e.lang,onEdit:e.editChart,onDelete:a=>e.$vfm.open(`${t.name}-${i}`)},null,8,["chart","configFileStructure","sourceCounts","lang","onEdit","onDelete"]))]),_:1},8,["modelValue","onUpdate"])],512),[[a["vShow"],e.chartConfigs.length]]),(Object(a["openBlock"])(!0),Object(a["createElementBlock"])(a["Fragment"],null,Object(a["renderList"])(e.chartConfigs,(t,i)=>(Object(a["openBlock"])(),Object(a["createBlock"])(c,{key:`${t.name}-${i}`,name:`${t.name}-${i}`,message:e.$t("editor.chart.delete.confirm",{name:t.name}),onOk:i=>e.deleteChart(t)},null,8,["name","message","onOk"]))),128))])}const Be=e=>(Object(a["pushScopeId"])("data-v-1df36a82"),e=e(),Object(a["popScopeId"])(),e),De={class:"chart-item items-center mt-8 mx-5 overflow-hidden"},Fe={class:"relative border-solid border-2 items-center justify-center text-center w-full"},Pe=["content"],Re=Be(()=>Object(a["createElementVNode"])("svg",{class:"absolute transform -translate-x-1/2 -translate-y-1/2",height:"22px",width:"22px",viewBox:"0 0 352 512",xmlns:"http://www.w3.org/2000/svg"},[Object(a["createElementVNode"])("path",{d:"M242.72 256l100.07-100.07c12.28-12.28 12.28-32.19 0-44.48l-22.24-22.24c-12.28-12.28-32.19-12.28-44.48 0L176 189.28 75.93 89.21c-12.28-12.28-32.19-12.28-44.48 0L9.21 111.45c-12.28 12.28-12.28 32.19 0 44.48L109.28 256 9.21 356.07c-12.28 12.28-12.28 32.19 0 44.48l22.24 22.24c12.28 12.28 32.2 12.28 44.48 0L176 322.72l100.07 100.07c12.28 12.28 32.2 12.28 44.48 0l22.24-22.24c12.28-12.28 12.28-32.19 0-44.48L242.72 256z"})],-1)),Ae=[Re],Ue=Be(()=>Object(a["createElementVNode"])("button",{class:"bg-white absolute h-6 w-6 leading-5 rounded-full bottom-2 -right-1 p-0 z-10 handle"},[Object(a["createElementVNode"])("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"#000000",width:"22px",height:"22px",viewBox:"0 0 24 24"},[Object(a["createElementVNode"])("path",{"fill-rule":"evenodd",d:"M8,18 C9.1045695,18 10,18.8954305 10,20 C10,21.1045695 9.1045695,22 8,22 C6.8954305,22 6,21.1045695 6,20 C6,18.8954305 6.8954305,18 8,18 Z M16,18 C17.1045695,18 18,18.8954305 18,20 C18,21.1045695 17.1045695,22 16,22 C14.8954305,22 14,21.1045695 14,20 C14,18.8954305 14.8954305,18 16,18 Z M8,10 C9.1045695,10 10,10.8954305 10,12 C10,13.1045695 9.1045695,14 8,14 C6.8954305,14 6,13.1045695 6,12 C6,10.8954305 6.8954305,10 8,10 Z M16,10 C17.1045695,10 18,10.8954305 18,12 C18,13.1045695 17.1045695,14 16,14 C14.8954305,14 14,13.1045695 14,12 C14,10.8954305 14.8954305,10 16,10 Z M8,2 C9.1045695,2 10,2.8954305 10,4 C10,5.1045695 9.1045695,6 8,6 C6.8954305,6 6,5.1045695 6,4 C6,2.8954305 6.8954305,2 8,2 Z M16,2 C17.1045695,2 18,2.8954305 18,4 C18,5.1045695 17.1045695,6 16,6 C14.8954305,6 14,5.1045695 14,4 C14,2.8954305 14.8954305,2 16,2 Z"})])],-1)),ze={class:"flex mt-4 items-center"},We={class:"name-label font-bold flex-2"},qe={class:"font-normal"},He=["id"],Xe={class:"flex items-center"},Je=Be(()=>Object(a["createElementVNode"])("svg",{height:"18px",width:"18px",viewBox:"0 0 23 21",xmlns:"http://www.w3.org/2000/svg"},[Object(a["createElementVNode"])("path",{d:"M 18 2 L 15.585938 4.4140625 L 19.585938 8.4140625 L 22 6 L 18 2 z M 14.076172 5.9238281 L 3 17 L 3 21 L 7 21 L 18.076172 9.9238281 L 14.076172 5.9238281 z"})],-1)),Ge={class:"px-2"};function Ze(e,t,i,l,o,n){const r=Object(a["resolveComponent"])("storylines-chart"),s=Object(a["resolveDirective"])("tippy");return Object(a["openBlock"])(),Object(a["createElementBlock"])("li",De,[Object(a["createElementVNode"])("div",Fe,[Object(a["withDirectives"])((Object(a["openBlock"])(),Object(a["createElementBlock"])("button",{class:"bg-white absolute h-6 w-6 leading-5 rounded-full top-2 left-0 p-0 z-10 cursor-pointer",onClick:t[0]||(t[0]=()=>e.$emit("delete",e.chart)),content:e.$t("editor.chart.delete")},Ae,8,Pe)),[[s,{placement:"top",hideOnClick:!1,animateFill:!0}]]),Ue,e.loading?Object(a["createCommentVNode"])("",!0):(Object(a["openBlock"])(),Object(a["createBlock"])(r,{class:"w-full h-full",config:e.chartConfig,key:e.chartIdx,configFileStructure:e.configFileStructure,onLoaded:e.loadChart},null,8,["config","configFileStructure","onLoaded"]))]),Object(a["createElementVNode"])("div",ze,[Object(a["createElementVNode"])("label",We,[Object(a["createTextVNode"])(Object(a["toDisplayString"])(e.$t("editor.chart.label.name"))+": ",1),Object(a["createElementVNode"])("span",qe,Object(a["toDisplayString"])(e.chartName),1)]),Object(a["createElementVNode"])("button",{class:"chart-btn bg-gray-100 cursor-pointer hover:bg-gray-200",id:`edit-${e.chart.name}-btn`},[Object(a["createElementVNode"])("div",Xe,[Je,Object(a["createElementVNode"])("span",Ge,Object(a["toDisplayString"])(e.$t("editor.chart.label.edit")),1)])],8,He)])])}i("3c65");class Ye extends r["c"]{constructor(){super(...arguments),this.loading=!0,this.chartIdx=0,this.chartConfig={},this.chartName="",this.modalEditor=void 0}mounted(){this.chartConfig=this.chart,this.chartName=this.chart.name||"",this.loading=!1}loadChart(e){var t;if(!this.modalEditor){if(this.modalEditor=highed.ModalEditor(`edit-${this.chartName}-btn`,{allowDone:!0,features:"import templates customize done",importer:{options:"plugins csv json"},defaultChartOptions:e},e=>{const t=JSON.parse(e),i=`${this.configFileStructure.uuid}/charts/${this.lang}/${t.title.text}.json`;if(this.sourceCounts[i]>0&&t.title.text!=this.chart.name)alert(this.$t("editor.chart.label.nameExists",{name:t.title.text})),setTimeout(()=>this.modalEditor.show(),100);else{const e={name:t.title.text,config:t,src:""};this.$emit("edit",{oldChart:this.chart,newChart:e}),this.chartConfig=e,this.chartName=e.name,this.chartIdx+=1}}),void 0!==(null===(t=e.data)||void 0===t?void 0:t.csv)){const t=e.data.csv;this.modalEditor.editor.dataTable.loadCSV({csv:t})}else this.convertSeriesToCSV(e);this.modalEditor.editor.chart.options.setAll(e)}}convertSeriesToCSV(e){var t;if("pie"===(null===(t=e.chart)||void 0===t?void 0:t.type)){const t=null===e||void 0===e?void 0:e.series.data;if(t){var i;const a=[`${null===e||void 0===e?void 0:e.series.name};${null===e||void 0===e||null===(i=e.yAxis)||void 0===i?void 0:i.title.text}`,...t.map(e=>`${e.name};${e.y}`)];this.modalEditor.editor.dataTable.loadCSV({csv:a.join("\n")})}}else if(null!==e&&void 0!==e&&e.series&&null!==e&&void 0!==e&&e.series.length){let t=null===e||void 0===e?void 0:e.series.map(e=>[e.name,...e.data]);if(void 0!==e.xAxis){var a,l;const i=[null===(a=e.xAxis)||void 0===a||null===(a=a.title)||void 0===a?void 0:a.text].concat(null===(l=e.xAxis)||void 0===l?void 0:l.categories);t.unshift(i)}let i=t[0].map((e,i)=>t.map(e=>e[i]).join(";"));this.modalEditor.editor.dataTable.loadCSV({csv:i.join("\n")})}}}Object(n["a"])([Object(r["b"])()],Ye.prototype,"chart",void 0),Object(n["a"])([Object(r["b"])()],Ye.prototype,"configFileStructure",void 0),Object(n["a"])([Object(r["b"])()],Ye.prototype,"sourceCounts",void 0),Object(n["a"])([Object(r["b"])()],Ye.prototype,"lang",void 0);i("b357");const Qe=d()(Ye,[["render",Ze],["__scopeId","data-v-1df36a82"]]);var Ke=Qe;const et={slot:"header",class:"text-lg font-bold"},tt={class:"w-full flex justify-end"};function it(e,t,i,l,o,n){const r=Object(a["resolveComponent"])("vue-final-modal");return Object(a["openBlock"])(),Object(a["createBlock"])(r,{modalId:e.name,class:"flex justify-center items-center","content-class":"flex flex-col max-w-xl mx-4 p-4 bg-white dark:bg-gray-900 border dark:border-gray-700 rounded-lg space-y-2"},{default:Object(a["withCtx"])(()=>[Object(a["createElementVNode"])("h2",et,Object(a["toDisplayString"])(e.message),1),Object(a["createElementVNode"])("div",tt,[Object(a["createElementVNode"])("button",{class:"confirm-button hover:bg-gray-800",onClick:t[0]||(t[0]=Object(a["withModifiers"])((...t)=>e.onOk&&e.onOk(...t),["stop"]))},Object(a["toDisplayString"])(e.$t("editor.confirm")),1),Object(a["createElementVNode"])("button",{class:"cancel-button hover:bg-gray-100",onClick:t[1]||(t[1]=Object(a["withModifiers"])((...t)=>e.onCancel&&e.onCancel(...t),["stop"]))},Object(a["toDisplayString"])(e.$t("editor.cancel")),1)])]),_:1},8,["modalId"])}let at=class extends r["c"]{onOk(){this.$emit("ok"),this.$vfm.close(this.name)}onCancel(){this.$emit("Cancel"),this.$vfm.close(this.name)}};Object(n["a"])([Object(r["b"])()],at.prototype,"message",void 0),Object(n["a"])([Object(r["b"])()],at.prototype,"name",void 0),at=Object(n["a"])([Object(r["a"])({components:{"vue-final-modal":U["a"]}})],at);var lt=at;i("1c29");const ot=d()(lt,[["render",it],["__scopeId","data-v-4ed11748"]]);var nt=ot,rt=i("b76a"),st=i.n(rt);let ct=class extends r["c"]{constructor(){super(...arguments),this.edited=!1,this.chartConfigs=[],this.modalEditor={}}mounted(){highed.ready(()=>{this.modalEditor=highed.ModalEditor("modal-btn",{allowDone:!0,features:"import templates customize done",importer:{options:"plugins csv json"}},e=>{this.createNewChart(e.toString())})});const e=this.panel.type===Se.Slideshow?this.panel.items:this.panel.src?[this.panel]:[];void 0!==e&&e.length&&(this.chartConfigs=e.map(e=>{let t="";if(e.options&&e.options.title)t=e.options.title;else{const i=e.src.match(/.*\/(.*)$/);t=i?i[1].replace(/\.[^/.]+$/,"").replace(/\./g," "):e.src}return{name:t,...e}}))}clearEditor(){let e={title:{text:"Chart "+(this.chartConfigs.length+1)},subtitle:{text:""},credits:{enabled:!1}};e="en"===this.lang?Object.assign({},e,{lang:{thousandsSep:","}}):Object.assign({},e,{lang:{thousandsSep:" "}}),this.modalEditor.editor.chart.options.setAll(e);const t='"Column 1";"Column 2"\n" "";" "';this.modalEditor.editor.dataTable.loadCSV({csv:t})}createNewChart(e){const t=JSON.parse(e),i=`${this.configFileStructure.uuid}/charts/${this.lang}/${t.title.text}.json`;if(this.sourceCounts[i]>0)alert(this.$t("editor.chart.label.nameExists",{name:t.title.text})),setTimeout(()=>this.modalEditor.show(),100);else{const e={name:t.title.text,src:i};this.sourceCounts[i]?this.sourceCounts[i]+=1:this.sourceCounts[i]=1,this.configFileStructure.charts[this.lang].file(t.title.text+".json",JSON.stringify(t,null,4)),this.chartConfigs.push(e)}this.onChartsEdited()}editChart(e){const t=this.chartConfigs.findIndex(t=>t.name===e.oldChart.name);if(-1!==t){const i=`${this.configFileStructure.uuid}/charts/${this.lang}/${e.oldChart.name}.json`;this.sourceCounts[i]-=1,0===this.sourceCounts[i]&&this.configFileStructure.charts[this.lang].remove(e.oldChart.name+".json");const a=`${this.configFileStructure.uuid}/charts/${this.lang}/${e.newChart.name}.json`;this.sourceCounts[a]?this.sourceCounts[a]+=1:this.sourceCounts[a]=1,this.configFileStructure.charts[this.lang].file(e.newChart.name+".json",JSON.stringify(e.newChart.config,null,4)),e.newChart.src=`${this.configFileStructure.uuid}/charts/${this.lang}/${e.newChart.name}.json`,this.chartConfigs[t]={name:e.newChart.name,src:e.newChart.src}}this.onChartsEdited()}deleteChart(e){const t=this.chartConfigs.findIndex(t=>t.name===e.name);-1!==t&&(this.sourceCounts[`${this.configFileStructure.uuid}/charts/${this.lang}/${e.name}.json`]-=1,0===this.sourceCounts[`${this.configFileStructure.uuid}/charts/${this.lang}/${e.name}.json`]&&this.configFileStructure.charts[this.lang].remove(e.name+".json"),this.chartConfigs.splice(t,1)),this.onChartsEdited()}saveChanges(){if(this.edited)if(Object.keys(this.panel).forEach(e=>{delete this.panel[e]}),0===this.chartConfigs.length)this.panel.type=Se.Chart,this.panel.src="";else if(1===this.chartConfigs.length){this.panel.type=Se.Chart;const e=this.chartConfigs[0];Object.keys(e).forEach(t=>{this.panel[t]=e[t]})}else this.panel.type=Se.Slideshow,this.panel.items=this.chartConfigs.map(e=>({...e,type:Se.Chart}));this.edited=!1}onChartsEdited(){this.edited=!0,this.$emit("slide-edit")}};Object(n["a"])([Object(r["b"])()],ct.prototype,"panel",void 0),Object(n["a"])([Object(r["b"])()],ct.prototype,"configFileStructure",void 0),Object(n["a"])([Object(r["b"])()],ct.prototype,"lang",void 0),Object(n["a"])([Object(r["b"])()],ct.prototype,"sourceCounts",void 0),Object(n["a"])([Object(r["b"])({default:!0})],ct.prototype,"allowMany",void 0),ct=Object(n["a"])([Object(r["a"])({components:{ChartPreview:Ke,"confirmation-modal":nt,draggable:st.a}})],ct);var dt=ct;i("c42e");const ut=d()(dt,[["render",Me]]);var mt=ut;const pt={class:"mt-4"};function ht(e,t,i,l,o,n){const r=Object(a["resolveComponent"])("json-editor"),s=Object(a["resolveComponent"])("confirmation-modal");return Object(a["openBlock"])(),Object(a["createElementBlock"])("div",pt,[Object(a["createVNode"])(r,{modelValue:e.updatedConfig,"onUpdate:modelValue":t[0]||(t[0]=t=>e.updatedConfig=t),lang:e.lang,mode:"text","show-btns":!0,expandedOnStart:!0,onJsonChange:t[1]||(t[1]=t=>{e.updatedConfig=t,e.edited=!0,e.$emit("slide-edit")}),onJsonSave:t[2]||(t[2]=t=>e.$vfm.open("custom-editor-"+e.slideIndex))},null,8,["modelValue","lang"]),Object(a["createVNode"])(s,{name:"custom-editor-"+e.slideIndex,message:e.$t("editor.customConfig"),onOk:t[3]||(t[3]=t=>e.onJsonSave())},null,8,["name","message"])])}var bt=i("c45b");let gt=class extends r["c"]{constructor(){super(...arguments),this.schemaUrl="./StorylinesSlideSchema.json",this.updatedConfig="",this.edited=!1,this.jsonValidator=i("a41b").Validator,this.validator=new this.jsonValidator,this.storylinesSchema=""}mounted(){fetch(this.schemaUrl).then(e=>{e.json().then(e=>{this.storylinesSchema=e},e=>{console.error(e)})}),this.updatedConfig=this.config}onJsonSave(){const e=this.validator.validate(this.updatedConfig,this.storylinesSchema);e.valid?this.$emit("config-edited",this.updatedConfig,!0):(alert("Attempted to save a custom config that violates the Storylines schema."),console.error(e.errors))}saveChanges(){this.$emit("config-edited",this.updatedConfig),this.edited=!1}};Object(n["a"])([Object(r["b"])()],gt.prototype,"config",void 0),Object(n["a"])([Object(r["b"])()],gt.prototype,"lang",void 0),Object(n["a"])([Object(r["b"])()],gt.prototype,"slideIndex",void 0),gt=Object(n["a"])([Object(r["a"])({components:{"json-editor":bt["a"],"confirmation-modal":nt}})],gt);var ft=gt;const vt=d()(ft,[["render",ht]]);var Ot=vt;const jt=e=>(Object(a["pushScopeId"])("data-v-39ccfdb7"),e=e(),Object(a["popScopeId"])(),e),Vt={class:"block"},yt={class:"flex drag-label cursor-pointer"},St=jt(()=>Object(a["createElementVNode"])("span",{class:"align-middle inline-block pr-4"},[Object(a["createElementVNode"])("svg",{xmlns:"http://www.w3.org/2000/svg",width:"48",height:"48",viewBox:"0 0 24 24"},[Object(a["createElementVNode"])("path",{d:"M14 9l-2.519 4-2.481-1.96-5 6.96h16l-6-9zm8-5v16h-20v-16h20zm2-2h-24v20h24v-20zm-20 6c0-1.104.896-2 2-2s2 .896 2 2c0 1.105-.896 2-2 2s-2-.895-2-2z"})])],-1)),Ct={class:"align-middle inline-block"},xt={class:"text-blue-400 font-bold"},Et=["multiple"],wt={key:1,class:"flex justify-center"},kt={class:"flex mt-4 items-center w-full text-left"},Nt={class:"text-label"},Tt=["onUpdate:modelValue"],_t={class:"flex mt-4 items-center w-full text-left"},$t={class:"text-label"},Lt=["onUpdate:modelValue"],It={class:"flex items-center w-full text-left"},Mt={class:"text-label"};function Bt(e,t,i,l,o,n){const r=Object(a["resolveComponent"])("ImagePreview"),s=Object(a["resolveComponent"])("draggable");return Object(a["openBlock"])(),Object(a["createElementBlock"])("div",Vt,[e.allowMany||!e.allowMany&&0===e.imagePreviews.length?(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",{key:0,class:Object(a["normalizeClass"])(["upload-image text-center m-5 p-12 bg-blue-100 border-4 border-dashed border-blue-300",{dragging:e.isDragging}]),onDragover:t[1]||(t[1]=Object(a["withModifiers"])(()=>e.dragging=!0,["prevent"])),onDragleave:t[2]||(t[2]=Object(a["withModifiers"])(()=>e.dragging=!1,["prevent"])),onDrop:t[3]||(t[3]=Object(a["withModifiers"])(t=>e.dropImages(t),["prevent"]))},[Object(a["createElementVNode"])("label",yt,[St,Object(a["createElementVNode"])("span",Ct,[Object(a["createElementVNode"])("span",null,[Object(a["createElementVNode"])("div",null,Object(a["toDisplayString"])(e.$t("editor.image.label.drag")),1),Object(a["createElementVNode"])("div",null,[Object(a["createTextVNode"])(Object(a["toDisplayString"])(e.$t("editor.label.or"))+" ",1),Object(a["createElementVNode"])("span",xt,Object(a["toDisplayString"])(e.$t("editor.label.browse")),1),Object(a["createTextVNode"])(" "+Object(a["toDisplayString"])(e.$t("editor.label.upload")),1)])]),Object(a["createElementVNode"])("input",{type:"file",class:"cursor-pointer",onChange:t[0]||(t[0]=(...t)=>e.onFileChange&&e.onFileChange(...t)),multiple:!!e.allowMany},null,40,Et)])])],34)):Object(a["createCommentVNode"])("",!0),e.allowMany||!e.allowMany&&0===e.imagePreviews.length?Object(a["withDirectives"])((Object(a["openBlock"])(),Object(a["createElementBlock"])("span",wt,[Object(a["createElementVNode"])("i",null,Object(a["toDisplayString"])(e.$t("editor.image.reorder")),1)],512)),[[a["vShow"],!e.imagePreviewsLoading&&e.imagePreviews.length]]):Object(a["createCommentVNode"])("",!0),Object(a["withDirectives"])(Object(a["createVNode"])(s,{modelValue:e.imagePreviews,"onUpdate:modelValue":t[6]||(t[6]=t=>e.imagePreviews=t),class:"flex flex-wrap list-none border my-4",onUpdate:e.onImagesEdited,"item-key":"id"},{item:Object(a["withCtx"])(({element:i,index:l})=>[(Object(a["openBlock"])(),Object(a["createBlock"])(r,{key:`${i.id}-${l}`,imageFile:i,onDelete:e.deleteImage},{default:Object(a["withCtx"])(()=>[Object(a["createElementVNode"])("div",kt,[Object(a["createElementVNode"])("label",Nt,Object(a["toDisplayString"])(e.$t("editor.image.altTag"))+":",1),Object(a["withDirectives"])(Object(a["createElementVNode"])("input",{class:"w-4/5",type:"text","onUpdate:modelValue":e=>i.altText=e,onChange:t[4]||(t[4]=(...t)=>e.onImagesEdited&&e.onImagesEdited(...t))},null,40,Tt),[[a["vModelText"],i.altText]])]),Object(a["createElementVNode"])("div",_t,[Object(a["createElementVNode"])("label",$t,Object(a["toDisplayString"])(e.$t("editor.image.label.caption"))+":",1),Object(a["withDirectives"])(Object(a["createElementVNode"])("input",{class:"w-4/5",type:"text","onUpdate:modelValue":e=>i.caption=e,onChange:t[5]||(t[5]=(...t)=>e.onImagesEdited&&e.onImagesEdited(...t))},null,40,Lt),[[a["vModelText"],i.caption]])])]),_:2},1032,["imageFile","onDelete"]))]),_:1},8,["modelValue","onUpdate"]),[[a["vShow"],!e.imagePreviewsLoading&&e.imagePreviews.length]]),Object(a["withDirectives"])(Object(a["createElementVNode"])("div",It,[Object(a["createElementVNode"])("label",Mt,Object(a["toDisplayString"])(e.$t("editor.image.slideshowCaption"))+":",1),Object(a["withDirectives"])(Object(a["createElementVNode"])("input",{class:"w-3/5",type:"text","onUpdate:modelValue":t[7]||(t[7]=t=>e.slideshowCaption=t),onChange:t[8]||(t[8]=(...t)=>e.onImagesEdited&&e.onImagesEdited(...t))},null,544),[[a["vModelText"],e.slideshowCaption]])],512),[[a["vShow"],e.imagePreviews.length>1]])])}const Dt=e=>(Object(a["pushScopeId"])("data-v-5bdf84fc"),e=e(),Object(a["popScopeId"])(),e),Ft={class:"image-item items-center my-8 mx-4 overflow-hidden"},Pt={class:"relative items-center justify-center text-center w-full grabbable"},Rt=["content"],At=Dt(()=>Object(a["createElementVNode"])("svg",{height:"24px",width:"24px",viewBox:"0 0 352 512",xmlns:"http://www.w3.org/2000/svg"},[Object(a["createElementVNode"])("path",{d:"M242.72 256l100.07-100.07c12.28-12.28 12.28-32.19 0-44.48l-22.24-22.24c-12.28-12.28-32.19-12.28-44.48 0L176 189.28 75.93 89.21c-12.28-12.28-32.19-12.28-44.48 0L9.21 111.45c-12.28 12.28-12.28 32.19 0 44.48L109.28 256 9.21 356.07c-12.28 12.28-12.28 32.19 0 44.48l22.24 22.24c12.28 12.28 32.2 12.28 44.48 0L176 322.72l100.07 100.07c12.28 12.28 32.2 12.28 44.48 0l22.24-22.24c12.28-12.28 12.28-32.19 0-44.48L242.72 256z"})],-1)),Ut=[At],zt={class:"flex-grow image-container"},Wt=["title","src","alt"];function qt(e,t,i,l,o,n){const r=Object(a["resolveDirective"])("tippy");return Object(a["openBlock"])(),Object(a["createElementBlock"])("li",Ft,[Object(a["createElementVNode"])("div",Pt,[Object(a["withDirectives"])((Object(a["openBlock"])(),Object(a["createElementBlock"])("button",{class:"bg-white absolute h-6 w-6 leading-5 rounded-full top-0 right-0 p-0 cursor-pointer",onClick:t[0]||(t[0]=()=>e.$emit("delete",e.imageFile)),content:e.$t("editor.image.delete")},Ut,8,Rt)),[[r,{placement:"top",hideOnClick:!1,animateFill:!0}]]),Object(a["createElementVNode"])("div",zt,[Object(a["createElementVNode"])("img",{class:"image-file object-cover",title:e.imageFile.id,src:e.imageFile.src,alt:e.imageFile.altText},null,8,Wt)])]),Object(a["renderSlot"])(e.$slots,"default",{},void 0,!0)])}class Ht extends r["c"]{}Object(n["a"])([Object(r["b"])()],Ht.prototype,"imageFile",void 0);i("5cf4");const Xt=d()(Ht,[["render",qt],["__scopeId","data-v-5bdf84fc"]]);var Jt=Xt;let Gt=class extends r["c"]{constructor(){super(...arguments),this.dragging=!1,this.edited=!1,this.imagePreviewsLoading=!1,this.imagePreviewPromises=[],this.imagePreviews=[],this.slideshowCaption=""}get isDragging(){return this.dragging}mounted(){const e=this.panel.type===Se.Slideshow?this.panel.items:this.panel.src?[this.panel]:[];void 0!==e&&e.length&&(this.imagePreviewsLoading=!0,e.map(e=>{const t=""+e.src.substring(e.src.indexOf("/")+1),i=e.src.replace(/^.*[\\/]/,""),a=this.configFileStructure.zip.file(t);a&&this.imagePreviewPromises.push(a.async("blob").then(t=>({...e,id:i||e.src,src:URL.createObjectURL(t)})))}),Promise.all(this.imagePreviewPromises).then(e=>{this.imagePreviews=e,this.imagePreviewsLoading=!1}),this.slideshowCaption=this.panel.caption)}onFileChange(e){const t=Array.from(e.target.files);this.imagePreviews.push(...t.map(e=>{const t=`${this.configFileStructure.uuid}/assets/${this.lang}/${e.name}`;this.configFileStructure.assets[this.lang].file(e.name,e),this.sourceCounts[t]?this.sourceCounts[t]+=1:this.sourceCounts[t]=1;let i=URL.createObjectURL(e);return{id:e.name,altText:"",caption:"",src:i}})),this.onImagesEdited()}dropImages(e){if(null!==e.dataTransfer){let t=[...e.dataTransfer.files];this.allowMany||(t=[t[0]]),this.imagePreviews.push(...t.map(e=>{const t=`${this.configFileStructure.uuid}/assets/${this.lang}/${e.name}`;this.configFileStructure.assets[this.lang].file(e.name,e),this.sourceCounts[t]?this.sourceCounts[t]+=1:this.sourceCounts[t]=1;let i=URL.createObjectURL(e);return{id:e.name,altText:"",caption:"",src:i}})),this.dragging=!1}this.onImagesEdited()}deleteImage(e){const t=this.imagePreviews.findIndex(t=>t.id===e.id);if(-1!==t){const e=`${this.configFileStructure.uuid}/assets/${this.lang}/${this.imagePreviews[t].id}`;this.sourceCounts[e]-=1,0===this.sourceCounts[e]&&(this.configFileStructure.assets[this.lang].remove(this.imagePreviews[t].id),URL.revokeObjectURL(this.imagePreviews[t].src)),this.imagePreviews.splice(t,1)}this.onImagesEdited()}saveChanges(){if(this.edited)if(Object.keys(this.panel).forEach(e=>{delete this.panel[e]}),0===this.imagePreviews.length)this.panel.type=Se.Image,this.panel.src="";else if(1===this.imagePreviews.length){this.panel.type=Se.Image;const e=this.imagePreviews[0];Object.keys(e).forEach(t=>{"id"!==t&&(this.panel[t]=e[t])}),this.panel.src=`${this.configFileStructure.uuid}/assets/${this.lang}/${e.id}`}else{var e;this.panel.type=Se.Slideshow,this.panel.caption=null!==(e=this.slideshowCaption)&&void 0!==e?e:void 0,this.panel.items=this.imagePreviews.map(e=>({...e,src:`${this.configFileStructure.uuid}/assets/${this.lang}/${e.id}`,type:Se.Image}))}this.edited=!1}onImagesEdited(){this.edited=!0,this.$emit("slide-edit")}};Object(n["a"])([Object(r["b"])()],Gt.prototype,"panel",void 0),Object(n["a"])([Object(r["b"])()],Gt.prototype,"configFileStructure",void 0),Object(n["a"])([Object(r["b"])()],Gt.prototype,"lang",void 0),Object(n["a"])([Object(r["b"])()],Gt.prototype,"sourceCounts",void 0),Object(n["a"])([Object(r["b"])({default:!0})],Gt.prototype,"allowMany",void 0),Gt=Object(n["a"])([Object(r["a"])({components:{ImagePreview:Jt,draggable:st.a}})],Gt);var Zt=Gt;i("6f09");const Yt=d()(Zt,[["render",Bt],["__scopeId","data-v-39ccfdb7"]]);var Qt=Yt;const Kt={class:"flex flex-col mt-4"},ei={class:"text-left"},ti={class:"text-left mt-2"};function ii(e,t,i,l,o,n){const r=Object(a["resolveComponent"])("v-md-editor");return Object(a["openBlock"])(),Object(a["createElementBlock"])("div",Kt,[Object(a["createElementVNode"])("label",ei,Object(a["toDisplayString"])(e.$t("editor.slides.panel.title"))+":",1),Object(a["withDirectives"])(Object(a["createElementVNode"])("input",{type:"text","onUpdate:modelValue":t[0]||(t[0]=t=>e.panel.title=t)},null,512),[[a["vModelText"],e.panel.title]]),Object(a["createElementVNode"])("label",ti,Object(a["toDisplayString"])(e.$t("editor.slides.panel.body"))+":",1),Object(a["createVNode"])(r,{modelValue:e.panel.content,"onUpdate:modelValue":t[1]||(t[1]=t=>e.panel.content=t),height:"400px","left-toolbar":"undo redo clear | h bold italic strikethrough quote subsuper | ul ol table hr | addLink image code | save",toolbar:e.toolbar},null,8,["modelValue","toolbar"])])}class ai extends r["c"]{constructor(){super(...arguments),this.toolbar={subsuper:{title:"Superscript/Subscript",text:"T",menus:[{name:"Superscript",text:"Superscript",action(e){e.insert(e=>{const t=e||"";return{text:`${t}`,selected:e}})}},{name:"Subscript",text:"Subscript",action(e){e.insert(e=>{const t=e||"";return{text:`${t}`,selected:e}})}}]},addLink:{title:"Insert Link",icon:"v-md-icon-link",menus:[{name:"Add External Link (New Tab)",text:"Add External Link (New Tab)",action(e){e.insert(e=>{const t=e||"";return{text:`[${t}](http://)`,selected:e}})}},{name:"Add External Link (Same Tab)",text:"Add External Link (Same Tab)",action(e){e.insert(e=>{const t=e||"";return{text:`${t}`,selected:e}})}},{name:"Add Dynamic Link",text:"Add Dynamic Link",action(e){e.insert(e=>{const t=e||"";return{text:`${t}`,selected:e}})}}]}}}}Object(n["a"])([Object(r["b"])()],ai.prototype,"panel",void 0);i("0bb1");const li=d()(ai,[["render",ii],["__scopeId","data-v-b0fb221e"]]);var oi=li;const ni=e=>(Object(a["pushScopeId"])("data-v-681c9c6b"),e=e(),Object(a["popScopeId"])(),e),ri={class:"flex flex-col"},si={class:"text-left"},ci={key:0},di={class:"mt-6"},ui=ni(()=>Object(a["createElementVNode"])("span",{class:"ml-6"},null,-1)),mi={class:"mt-6"},pi=ni(()=>Object(a["createElementVNode"])("span",{class:"mx-4"},null,-1)),hi=ni(()=>Object(a["createElementVNode"])("br",null,null,-1)),bi={key:1,class:"mb-4"},gi={class:"flex justify-between mb-4"},fi={class:"mt-2"},vi=ni(()=>Object(a["createElementVNode"])("iframe",{src:"scripts/ramp-editor/samples/fgpv-author.html",style:{width:"70vw",height:"100vh"},id:"RAMPeditorframe"},null,-1)),Oi={key:1},ji={class:"text-left mt-2"},Vi={class:"flex flex-row items-center"},yi={key:0,class:"flex flex-wrap list-none justify-center"},Si=ni(()=>Object(a["createElementVNode"])("div",{class:"add-map"},null,-1)),Ci={key:2},xi={class:"text-left mt-2"},Ei={class:"flex flex-wrap list-none justify-center"},wi=ni(()=>Object(a["createElementVNode"])("div",{class:"edit-map"},null,-1)),ki={slot:"header",class:"text-lg font-bold"},Ni={class:"w-full flex justify-end"},Ti=["disabled"];function _i(e,t,i,l,o,n){const r=Object(a["resolveComponent"])("time-slider-editor"),s=Object(a["resolveComponent"])("vue-final-modal");return Object(a["openBlock"])(),Object(a["createElementBlock"])("div",ri,[Object(a["createElementVNode"])("label",si,Object(a["toDisplayString"])(e.$t("editor.map.title"))+":",1),Object(a["withDirectives"])(Object(a["createElementVNode"])("input",{type:"text","onUpdate:modelValue":t[0]||(t[0]=t=>e.panel.title=t)},null,512),[[a["vModelText"],e.panel.title]]),"editing"===e.status?(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",ci,[Object(a["createElementVNode"])("label",di,Object(a["toDisplayString"])(e.$t("editor.map.scrollguard.enable"))+":",1),Object(a["withDirectives"])(Object(a["createElementVNode"])("input",{type:"checkbox",onChange:t[1]||(t[1]=(...t)=>e.saveScrollguard&&e.saveScrollguard(...t)),"onUpdate:modelValue":t[2]||(t[2]=t=>e.panel.scrollguard=t)},null,544),[[a["vModelCheckbox"],e.panel.scrollguard]]),ui,Object(a["createElementVNode"])("label",mi,Object(a["toDisplayString"])(e.$t("editor.map.timeslider.enable")),1),Object(a["withDirectives"])(Object(a["createElementVNode"])("input",{type:"checkbox",onChange:t[3]||(t[3]=(...t)=>e.saveTimeSlider&&e.saveTimeSlider(...t)),"onUpdate:modelValue":t[4]||(t[4]=t=>e.usingTimeSlider=t)},null,544),[[a["vModelCheckbox"],e.usingTimeSlider]]),pi,e.usingTimeSlider?(Object(a["openBlock"])(),Object(a["createElementBlock"])("button",{key:0,onClick:t[5]||(t[5]=t=>e.$vfm.open("time-slider-edit-modal")),class:"bg-black text-white hover:bg-gray-800 mt-3"},Object(a["toDisplayString"])(e.$t("editor.map.timeslider.edit")),1)):Object(a["createCommentVNode"])("",!0),hi,e.usingTimeSlider?(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",bi)):Object(a["createCommentVNode"])("",!0),Object(a["createElementVNode"])("div",gi,[Object(a["createElementVNode"])("label",fi,Object(a["toDisplayString"])(e.$t("editor.map.edit"))+":",1),Object(a["createElementVNode"])("button",{class:"border border-black hover:bg-gray-100",onClick:t[6]||(t[6]=()=>{e.status="default"})},Object(a["toDisplayString"])(e.$t("editor.map.edit.cancel")),1)]),vi])):Object(a["createCommentVNode"])("",!0),"creating"===e.status?(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",Oi,[Object(a["createElementVNode"])("label",ji,Object(a["toDisplayString"])(e.$t("editor.map.label.name"))+"*:",1),Object(a["createElementVNode"])("div",Vi,[Object(a["withDirectives"])(Object(a["createElementVNode"])("input",{type:"text","onUpdate:modelValue":t[7]||(t[7]=t=>e.newFileName=t)},null,512),[[a["vModelText"],e.newFileName]]),Object(a["createTextVNode"])(".json")]),""!=e.newFileName?(Object(a["openBlock"])(),Object(a["createElementBlock"])("ul",yi,[Object(a["createElementVNode"])("li",{class:"map-item items-center my-8 mx-5 overflow-hidden",onClick:t[8]||(t[8]=(...t)=>e.createNewConfig&&e.createNewConfig(...t))},[Si,Object(a["createTextVNode"])(" "+Object(a["toDisplayString"])(e.$t("editor.map.label.create")),1)])])):Object(a["createCommentVNode"])("",!0)])):Object(a["createCommentVNode"])("",!0),"default"===e.status?(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",Ci,[Object(a["createElementVNode"])("label",xi,Object(a["toDisplayString"])(e.$t("editor.map.edit"))+":",1),Object(a["createElementVNode"])("ul",Ei,[Object(a["createElementVNode"])("li",{class:"map-item items-center my-8 mx-5 overflow-hidden",onClick:t[9]||(t[9]=(...t)=>e.openEditor&&e.openEditor(...t))},[wi,Object(a["createTextVNode"])(" "+Object(a["toDisplayString"])(e.$t("editor.map.label.edit")),1)])])])):Object(a["createCommentVNode"])("",!0),Object(a["createVNode"])(s,{modalId:"time-slider-edit-modal","content-class":"flex flex-col max-w-xl mx-4 p-4 bg-white border rounded-lg space-y-2",class:"flex justify-center items-center"},{default:Object(a["withCtx"])(()=>[Object(a["createElementVNode"])("h2",ki,Object(a["toDisplayString"])(e.$t("editor.map.timeslider.edit")),1),Object(a["createVNode"])(r,{config:e.timeSliderConf,error:e.timeSliderError,onTimeSliderChanged:e.onTimeSliderInput},null,8,["config","error","onTimeSliderChanged"]),Object(a["createElementVNode"])("div",Ni,[Object(a["createElementVNode"])("button",{class:Object(a["normalizeClass"])(e.timeSliderError?"":"bg-black text-white hover:bg-gray-800"),disabled:e.timeSliderError,onClick:t[10]||(t[10]=(...t)=>e.saveTimeSlider&&e.saveTimeSlider(...t))}," Done ",10,Ti)])]),_:1})])}var $i=i("7847"),Li=i("ea6b");const Ii=e=>(Object(a["pushScopeId"])("data-v-6923af36"),e=e(),Object(a["popScopeId"])(),e),Mi={class:"px-5"},Bi={class:"flex items-center"},Di=["value"],Fi={class:"mx-3"},Pi=["value"],Ri=Ii(()=>Object(a["createElementVNode"])("br",null,null,-1)),Ai={class:"flex items-center"},Ui=["value"],zi={class:"mx-3"},Wi=["value"],qi=Ii(()=>Object(a["createElementVNode"])("br",null,null,-1)),Hi={key:0,class:"border-black border-2 p-3 w-2/3"},Xi={class:"w-full"},Ji=Ii(()=>Object(a["createElementVNode"])("br",null,null,-1)),Gi={class:"list-disc my-2 ml-8"},Zi={key:1},Yi=["value"],Qi=Ii(()=>Object(a["createElementVNode"])("br",null,null,-1)),Ki=Ii(()=>Object(a["createElementVNode"])("br",null,null,-1)),ea=["value"],ta=Ii(()=>Object(a["createElementVNode"])("br",null,null,-1)),ia=Ii(()=>Object(a["createElementVNode"])("br",null,null,-1));function aa(e,t,i,l,o,n){return Object(a["openBlock"])(),Object(a["createElementBlock"])("div",Mi,[Object(a["createElementVNode"])("div",Bi,[Object(a["createElementVNode"])("label",null,Object(a["toDisplayString"])(e.$t("editor.map.timeslider.range")),1),Object(a["createElementVNode"])("input",{type:"number",value:e.config.range[0],onInput:t[0]||(t[0]=t=>e.$emit("time-slider-changed","range",0,t.target.value))},null,40,Di),Object(a["createElementVNode"])("span",Fi,Object(a["toDisplayString"])(e.$t("editor.map.timeslider.to")),1),Object(a["createElementVNode"])("input",{type:"number",value:e.config.range[1],onInput:t[1]||(t[1]=t=>e.$emit("time-slider-changed","range",1,t.target.value))},null,40,Pi)]),Ri,Object(a["createElementVNode"])("div",Ai,[Object(a["createElementVNode"])("label",null,Object(a["toDisplayString"])(e.$t("editor.map.timeslider.start")),1),Object(a["createElementVNode"])("input",{class:"ml-3",type:"number",value:e.config.start[0],onInput:t[2]||(t[2]=t=>e.$emit("time-slider-changed","start",0,t.target.value))},null,40,Ui),Object(a["createElementVNode"])("span",zi,Object(a["toDisplayString"])(e.$t("editor.map.timeslider.to")),1),Object(a["createElementVNode"])("input",{type:"number",value:e.config.start[1],onInput:t[3]||(t[3]=t=>e.$emit("time-slider-changed","start",1,t.target.value))},null,40,Wi)]),qi,e.error?(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",Hi,[Object(a["createElementVNode"])("label",Xi,Object(a["toDisplayString"])(e.$t("editor.map.timeslider.warning")),1),Ji,Object(a["createElementVNode"])("ul",Gi,[Object(a["createElementVNode"])("li",null,Object(a["toDisplayString"])(e.$t("editor.map.timeslider.warning.bullet1")),1),Object(a["createElementVNode"])("li",null,Object(a["toDisplayString"])(e.$t("editor.map.timeslider.warning.bullet2")),1)]),Object(a["createElementVNode"])("span",null,Object(a["toDisplayString"])(e.$t("editor.map.timeslider.warning.end")),1)])):Object(a["createCommentVNode"])("",!0),e.error?(Object(a["openBlock"])(),Object(a["createElementBlock"])("br",Zi)):Object(a["createCommentVNode"])("",!0),Object(a["createElementVNode"])("div",null,[Object(a["createElementVNode"])("label",null,Object(a["toDisplayString"])(e.$t("editor.map.timeslider.attribute")),1),Object(a["createElementVNode"])("input",{value:e.config.attribute,onInput:t[4]||(t[4]=t=>e.$emit("time-slider-changed","attribute",void 0,t.target.value))},null,40,Yi)]),Qi,Object(a["createElementVNode"])("div",null,[Object(a["createElementVNode"])("label",null,Object(a["toDisplayString"])(e.$t("editor.map.timeslider.layers")),1),Ki,Object(a["createElementVNode"])("input",{class:"w-full",value:e.config.layers||"",onInput:t[5]||(t[5]=t=>e.$emit("time-slider-changed","layers",void 0,t.target.value))},null,40,ea)]),ta,ia])}class la extends r["c"]{}Object(n["a"])([Object(r["b"])()],la.prototype,"config",void 0),Object(n["a"])([Object(r["b"])()],la.prototype,"error",void 0);i("d618");const oa=d()(la,[["render",aa],["__scopeId","data-v-6923af36"]]);var na=oa;let ra=class extends r["c"]{constructor(){super(...arguments),this.newFileName="",this.usingTimeSlider=!!this.panel.timeSlider,this.timeSliderError=!1,this.timeSliderConf={range:[],start:[],attribute:""},this.status=""!==this.panel.config?"default":"creating",this.strippedFileName=""!==this.panel.config?this.panel.config.split("/")[3].split(".")[0]:""}mounted(){var e,t,i,a,l,o;window.addEventListener("message",this.saveEditor),this.timeSliderConf=JSON.parse(JSON.stringify({range:null!==(e=null===(t=this.panel.timeSlider)||void 0===t?void 0:t.range)&&void 0!==e?e:[1e3,(new Date).getFullYear()],start:null!==(i=null===(a=this.panel.timeSlider)||void 0===a?void 0:a.start)&&void 0!==i?i:[1e3,(new Date).getFullYear()],attribute:null!==(l=null===(o=this.panel.timeSlider)||void 0===o?void 0:o.attribute)&&void 0!==l?l:""})),this.validateTimeSlider()}beforeDestroy(){window.removeEventListener("message",this.saveEditor)}createNewConfig(){this.panel.config=`${this.configFileStructure.uuid}/ramp-config/${this.lang}/${this.newFileName}.json`,this.strippedFileName=this.panel.config.split("/")[3].split(".")[0],this.sourceCounts[this.panel.config]?this.sourceCounts[this.panel.config]+=1:this.sourceCounts[this.panel.config]=1,this.configFileStructure.rampConfig[this.lang].file(this.strippedFileName+".json",JSON.stringify("en"===this.lang?$i:Li,null,4)),this.status="default"}openEditor(){if(""!==this.panel.config&&(this.status="editing",this.panel.config)){const e=""+this.panel.config.substring(this.panel.config.indexOf("/")+1),t=this.configFileStructure.zip.file(e);t?t.async("string").then(e=>{window.config=e;const t=document.getElementById("RAMPeditorframe");t.contentWindow&&(t.contentWindow.config=e,t.contentWindow.configname=this.strippedFileName)}):fetch(this.panel.config).then(e=>{e.json().then(e=>{let t=JSON.stringify(e);window.config=t;const i=document.getElementById("RAMPeditorframe");i.contentWindow&&(i.contentWindow.config=t,i.contentWindow.configname=this.strippedFileName)})})}}saveScrollguard(e){this.panel.scrollguard=e.target.checked}saveTimeSlider(){this.timeSliderError&&this.usingTimeSlider||(this.panel.timeSlider=this.usingTimeSlider?this.timeSliderConf:void 0),this.$emit("slide-edit"),this.$vfm.close("time-slider-edit-modal")}saveEditor(e){"mapSaved"===e.data&&(this.status="default",this.configFileStructure.rampConfig[this.lang].file(this.strippedFileName+".json",JSON.stringify(JSON.parse(localStorage.RAMPconfig),null,4)),this.$emit("slide-edit"))}onTimeSliderInput(e,t,i){"layers"===e?i&&""!==i?this.timeSliderConf["layers"]=i.split(",").map(e=>e.trim()):delete this.timeSliderConf["layers"]:"attribute"===e?this.timeSliderConf[e]=i:this.timeSliderConf[e][t]=Number(i),this.validateTimeSlider()}validateTimeSlider(){this.timeSliderError=this.timeSliderConf.range.some(e=>e<0||!Number.isInteger(e))||this.timeSliderConf.start.some(e=>e<0||!Number.isInteger(e))||this.timeSliderConf.range[1](Object(a["pushScopeId"])("data-v-996fd9c6"),e=e(),Object(a["popScopeId"])(),e),ma={class:"block"},pa={class:"flex mt-4 items-center w-full text-left"},ha={class:"text-label"},ba={class:"flex drag-label cursor-pointer"},ga=ua(()=>Object(a["createElementVNode"])("span",{class:"align-middle inline-block pr-4"},[Object(a["createElementVNode"])("svg",{xmlns:"http://www.w3.org/2000/svg",width:"48",height:"48",viewBox:"0 -2 30 30"},[Object(a["createElementVNode"])("path",{d:"M599,692 C597.896,692 597,692.896 597,694 L597,698 L575,698 L575,694 C575,692.896 574.104,692 573,692 C571.896,692 571,692.896 571,694 L571,701 C571,701.479 571.521,702 572,702 L600,702 C600.604,702 601,701.542 601,701 L601,694 C601,692.896 600.104,692 599,692 L599,692 Z M582,684 L584,684 L584,693 C584,694.104 584.896,695 586,695 C587.104,695 588,694.104 588,693 L588,684 L590,684 C590.704,684 591.326,684.095 591.719,683.7 C592.11,683.307 592.11,682.668 591.719,682.274 L586.776,676.283 C586.566,676.073 586.289,675.983 586.016,675.998 C585.742,675.983 585.465,676.073 585.256,676.283 L580.313,682.274 C579.921,682.668 579.921,683.307 580.313,683.7 C580.705,684.095 581.608,684 582,684 L582,684 Z",transform:"translate(-571.000000, -676.000000)"})])],-1)),fa={class:"align-middle inline-block"},va={class:"text-blue-400 font-bold"},Oa={class:"flex mt-4 items-center w-full text-left"},ja={class:"text-label"},Va={key:1,ref:"videoUrl",class:"w-3/5",type:"search"};function ya(e,t,i,l,o,n){const r=Object(a["resolveComponent"])("VideoPreview");return Object(a["openBlock"])(),Object(a["createElementBlock"])("div",ma,[Object(a["createElementVNode"])("div",pa,[Object(a["createElementVNode"])("label",ha,Object(a["toDisplayString"])(e.$t("editor.video.title"))+":",1),Object(a["withDirectives"])(Object(a["createElementVNode"])("input",{class:"w-3/5",type:"text","onUpdate:modelValue":t[0]||(t[0]=t=>e.videoPreview.title=t),onChange:t[1]||(t[1]=(...t)=>e.onVideoEdited&&e.onVideoEdited(...t))},null,544),[[a["vModelText"],e.videoPreview.title]])]),Object(a["createElementVNode"])("div",{class:Object(a["normalizeClass"])(["upload-video text-center m-5 p-12 bg-gray-100 border-4 border-dashed border-gray-300",{dragging:e.isDragging}]),onDragover:t[3]||(t[3]=Object(a["withModifiers"])(()=>e.dragging=!0,["prevent"])),onDragleave:t[4]||(t[4]=Object(a["withModifiers"])(()=>e.dragging=!1,["prevent"])),onDrop:t[5]||(t[5]=Object(a["withModifiers"])(t=>e.dropVideo(t),["prevent"]))},[Object(a["createElementVNode"])("label",ba,[ga,Object(a["createElementVNode"])("span",fa,[Object(a["createElementVNode"])("span",null,[Object(a["createElementVNode"])("div",null,Object(a["toDisplayString"])(e.$t("editor.video.label.drag")),1),Object(a["createElementVNode"])("div",null,[Object(a["createTextVNode"])(Object(a["toDisplayString"])(e.$t("editor.label.or"))+" ",1),Object(a["createElementVNode"])("span",va,Object(a["toDisplayString"])(e.$t("editor.label.browse")),1),Object(a["createTextVNode"])(" "+Object(a["toDisplayString"])(e.$t("editor.label.upload")),1)])]),Object(a["createElementVNode"])("input",{ref:"videoFileInput",type:"file",class:"cursor-pointer",onChange:t[2]||(t[2]=(...t)=>e.onFileChange&&e.onFileChange(...t))},null,544)])])],34),Object(a["createElementVNode"])("div",Oa,[Object(a["createElementVNode"])("label",ja,Object(a["toDisplayString"])(e.$t("editor.label.or")+" "+e.$t("editor.video.pasteUrl"))+":",1),"local"!==e.videoPreview.videoType?Object(a["withDirectives"])((Object(a["openBlock"])(),Object(a["createElementBlock"])("input",{key:0,ref:"videoUrl",class:"w-3/5",type:"search","onUpdate:modelValue":t[6]||(t[6]=t=>e.videoPreview.src=t)},null,512)),[[a["vModelText"],e.videoPreview.src]]):(Object(a["openBlock"])(),Object(a["createElementBlock"])("input",Va,null,512)),Object(a["createElementVNode"])("button",{onClick:t[7]||(t[7]=(...t)=>e.uploadVideoUrl&&e.uploadVideoUrl(...t)),class:"bg-white border border-black hover:bg-gray-100"},Object(a["toDisplayString"])(e.$t("editor.video.label.upload")),1)]),e.videoPreviewLoading||0===Object.keys(e.videoPreview).length?Object(a["createCommentVNode"])("",!0):(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",{key:0,class:"flex flex-wrap justify-center list-none border my-4",onUpdate:t[8]||(t[8]=(...t)=>e.onVideoEdited&&e.onVideoEdited(...t)),"item-key":"id"},[(Object(a["openBlock"])(),Object(a["createBlock"])(r,{key:""+e.videoPreview.id,file:e.videoPreview,fileType:e.fileType,lang:e.lang,onDelete:e.deleteVideo},null,8,["file","fileType","lang","onDelete"]))],32))])}const Sa=e=>(Object(a["pushScopeId"])("data-v-2d1c87e5"),e=e(),Object(a["popScopeId"])(),e),Ca={class:"my-8 mx-4 overflow-hidden w-full"},xa={class:"relative text-center w-full grabbable"},Ea=["content"],wa=Sa(()=>Object(a["createElementVNode"])("svg",{height:"24px",width:"24px",viewBox:"0 0 352 512",xmlns:"http://www.w3.org/2000/svg"},[Object(a["createElementVNode"])("path",{d:"M242.72 256l100.07-100.07c12.28-12.28 12.28-32.19 0-44.48l-22.24-22.24c-12.28-12.28-32.19-12.28-44.48 0L176 189.28 75.93 89.21c-12.28-12.28-32.19-12.28-44.48 0L9.21 111.45c-12.28 12.28-12.28 32.19 0 44.48L109.28 256 9.21 356.07c-12.28 12.28-12.28 32.19 0 44.48l22.24 22.24c12.28 12.28 32.2 12.28 44.48 0L176 322.72l100.07 100.07c12.28 12.28 32.2 12.28 44.48 0l22.24-22.24c12.28-12.28 12.28-32.19 0-44.48L242.72 256z"})],-1)),ka=[wa],Na={class:"video-container"},Ta=["src","height","width"],_a=["title","height","width"],$a=["type","src"],La=["src","srclang","label"];function Ia(e,t,i,l,o,n){const r=Object(a["resolveDirective"])("tippy");return Object(a["openBlock"])(),Object(a["createElementBlock"])("div",Ca,[Object(a["createElementVNode"])("div",xa,[Object(a["withDirectives"])((Object(a["openBlock"])(),Object(a["createElementBlock"])("button",{class:"bg-white absolute h-6 w-6 leading-5 rounded-full top-0 right-0 p-0 cursor-pointer",onClick:t[0]||(t[0]=()=>e.$emit("delete",e.file)),content:e.$t("editor.video.delete")},ka,8,Ea)),[[r,{placement:"top",hideOnClick:!1,animateFill:!0}]]),Object(a["createElementVNode"])("div",Na,["YouTube"===e.file.videoType?(Object(a["openBlock"])(),Object(a["createElementBlock"])("iframe",{key:0,class:"w-3/5",src:e.file.src,height:e.file.height?e.file.height:400,width:e.file.width,allowfullscreen:""},null,8,Ta)):Object(a["createCommentVNode"])("",!0),"local"===e.file.videoType||"external"===e.file.videoType?(Object(a["openBlock"])(),Object(a["createElementBlock"])("video",{key:1,class:"w-3/5",title:e.file.title,height:e.file.height?e.file.height:500,width:e.file.width,controls:""},[Object(a["createElementVNode"])("source",{type:e.fileType,src:e.file.src},null,8,$a),e.file.caption?(Object(a["openBlock"])(),Object(a["createElementBlock"])("track",{key:0,kind:"captions",src:e.file.caption,srclang:e.lang,label:e.langs[e.lang]},null,8,La)):Object(a["createCommentVNode"])("",!0)],8,_a)):Object(a["createCommentVNode"])("",!0)])]),Object(a["renderSlot"])(e.$slots,"default",{},void 0,!0)])}var Ma=i("d4cd"),Ba=i.n(Ma);class Da extends r["c"]{constructor(){super(...arguments),this.md=new Ba.a({html:!0}),this.langs={en:"English",fr:"French"},this.expandTranscript=!1,this.rawTranscript="",this.transcriptContent=""}}Object(n["a"])([Object(r["b"])()],Da.prototype,"file",void 0),Object(n["a"])([Object(r["b"])()],Da.prototype,"fileType",void 0),Object(n["a"])([Object(r["b"])()],Da.prototype,"lang",void 0);i("480b");const Fa=d()(Da,[["render",Ia],["__scopeId","data-v-2d1c87e5"]]);var Pa=Fa;let Ra=class extends r["c"]{constructor(){super(...arguments),this.dragging=!1,this.edited=!1,this.fileType="",this.videoPreviewLoading=!1,this.videoPreviewPromise=void 0,this.videoPreview={},this.slideshowCaption=""}get isDragging(){return this.dragging}mounted(){if(this.panel.src)if("local"===this.panel.videoType){var e;this.videoPreviewLoading=!0;const t=""+this.panel.src.substring(this.panel.src.indexOf("/")+1),i=this.panel.src.replace(/^.*[\\/]/,""),a=this.configFileStructure.zip.file(t);a&&(this.videoPreviewPromise=a.async("blob").then(e=>({...this.panel,id:i||this.panel.src,src:URL.createObjectURL(e)}))),null===(e=this.videoPreviewPromise)||void 0===e||e.then(e=>{this.videoPreview=e,this.videoPreviewLoading=!1}),this.slideshowCaption=this.panel.caption}else this.videoPreview={id:this.panel.src,title:this.panel.title,videoType:"YouTube"===this.panel.videoType?"YouTube":"external",src:this.panel.src}}addUploadedFile(e,t){const i=`${this.configFileStructure.uuid}/assets/${this.lang}/${e.name}`;this.configFileStructure.assets[this.lang].file(e.name,e),this.sourceCounts[i]?this.sourceCounts[i]+=1:this.sourceCounts[i]=1;const a=URL.createObjectURL(e);"src"===t?(this.videoPreview={id:e.name,title:this.videoPreview.title||e.name,videoType:"local",src:a},this.findFileType(e.name)):this.videoPreview[t]=a,this.edited=!0,this.$emit("slide-edit")}onFileChange(e){const t=Array.from(e.target.files)[0];this.addUploadedFile(t,"src"),this.onVideoEdited()}findFileType(e){if("external"===this.videoPreview.videoType||"local"===this.videoPreview.videoType){const t=e.substring(e.lastIndexOf("/")+1),i=t.split(".").pop();this.fileType="video/"+i}}extractYoutubeId(e){const t=/^.*(youtu.be\/|v\/|u\/\w\/|embed\/|watch\?v=|&v=)([^#&?]*).*/,i=e.match(t);return i&&11===i[2].length?i[2]:null}uploadVideoUrl(){let e=this.$refs.videoUrl.value;const t=e.toLowerCase().includes("youtube");t&&(e=e.replace("/watch?v=","/embed/")),this.videoPreview={id:e,title:this.videoPreview.title||e,videoType:e.includes("youtube")?"YouTube":"external",src:e},this.edited=!0,this.$emit("slide-edit")}updateCaptions(e){const t=Array.from(e.target.files)[0];this.addUploadedFile(t,"caption")}updateTranscript(e){const t=Array.from(e.target.files)[0];this.addUploadedFile(t,"transcript")}dropVideo(e){if(null!==e.dataTransfer){const t=[...e.dataTransfer.files][0];this.addUploadedFile(t,"src"),this.dragging=!1}this.onVideoEdited()}deleteVideo(){this.$refs.videoFileInput.value="",this.videoPreview={},this.onVideoEdited()}saveChanges(){this.edited&&this.videoPreview&&(this.panel.title=this.videoPreview.title,this.panel.videoType=this.videoPreview.videoType,this.panel.src="local"===this.videoPreview.videoType?`${this.configFileStructure.uuid}/assets/${this.lang}/${this.videoPreview.id}`:this.videoPreview.src,this.panel.caption=this.videoPreview.caption?this.videoPreview.caption:"",this.panel.transcript=this.videoPreview.transcript?this.videoPreview.transcript:""),this.edited=!1}onVideoEdited(){this.edited=!0,this.$emit("slide-edit")}};Object(n["a"])([Object(r["b"])()],Ra.prototype,"panel",void 0),Object(n["a"])([Object(r["b"])()],Ra.prototype,"configFileStructure",void 0),Object(n["a"])([Object(r["b"])()],Ra.prototype,"lang",void 0),Object(n["a"])([Object(r["b"])()],Ra.prototype,"sourceCounts",void 0),Ra=Object(n["a"])([Object(r["a"])({components:{VideoPreview:Pa,draggable:st.a}})],Ra);var Aa=Ra;i("a229");const Ua=d()(Aa,[["render",ya],["__scopeId","data-v-996fd9c6"]]);var za=Ua;const Wa=e=>(Object(a["pushScopeId"])("data-v-5b666f60"),e=e(),Object(a["popScopeId"])(),e),qa={class:"block"},Ha={class:"flex items-center"},Xa={class:"font-bold px-4"},Ja={class:"flex items-center"},Ga=Wa(()=>Object(a["createElementVNode"])("svg",{height:"18px",width:"18px",viewBox:"0 0 23 21",xmlns:"http://www.w3.org/2000/svg"},[Object(a["createElementVNode"])("path",{d:"M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z"})],-1)),Za={class:"px-2"},Ya=Wa(()=>Object(a["createElementVNode"])("hr",{class:"border-solid border-t-2 border-gray-300 my-2"},null,-1)),Qa={class:"flex items-center w-full text-left"},Ka={class:"text-label"},el=Wa(()=>Object(a["createElementVNode"])("br",null,null,-1)),tl={class:"w-2/3 mt-5"},il={class:"table-header"},al=Wa(()=>Object(a["createElementVNode"])("th",null,null,-1)),ll=["onClick"],ol=["onClick"],nl=Wa(()=>Object(a["createElementVNode"])("br",null,null,-1)),rl=Wa(()=>Object(a["createElementVNode"])("br",null,null,-1)),sl={key:0},cl={class:"text-xl font-bold"},dl=Wa(()=>Object(a["createElementVNode"])("hr",{class:"border-solid border-t-2 border-gray-300 my-2"},null,-1)),ul={key:0},ml={class:"mb-5 text-left"},pl=["value"],hl=["value"],bl={class:"mt-3 w-full flex justify-end"},gl={key:1},fl={class:"mt-3 w-full flex justify-end"};function vl(e,t,i,l,o,n){return Object(a["openBlock"])(),Object(a["createElementBlock"])("div",qa,[Object(a["createElementVNode"])("div",Ha,[Object(a["createElementVNode"])("span",Xa,Object(a["toDisplayString"])(e.$t("editor.slideshow.label.info",{num:e.panel.items.length})),1),Object(a["createElementVNode"])("button",{class:"bg-gray-100 cursor-pointer hover:bg-gray-200",onClick:t[0]||(t[0]=t=>e.editingStatus="create")},[Object(a["createElementVNode"])("div",Ja,[Ga,Object(a["createElementVNode"])("span",Za,Object(a["toDisplayString"])(e.$t("editor.slideshow.label.create")),1)])])]),Ya,Object(a["createElementVNode"])("div",Qa,[Object(a["createElementVNode"])("label",Ka,Object(a["toDisplayString"])(e.$t("editor.image.slideshowCaption"))+":",1),Object(a["withDirectives"])(Object(a["createElementVNode"])("input",{class:"w-1/3",type:"text","onUpdate:modelValue":t[1]||(t[1]=t=>e.panel.caption=t)},null,512),[[a["vModelText"],e.panel.caption]]),el]),Object(a["createElementVNode"])("table",tl,[Object(a["createElementVNode"])("thead",null,[Object(a["createElementVNode"])("tr",il,[al,Object(a["createElementVNode"])("th",null,Object(a["toDisplayString"])(e.$t("editor.slideshow.label.type")),1),Object(a["createElementVNode"])("th",null,Object(a["toDisplayString"])(e.$t("dynamic.panel.actions")),1)])]),Object(a["createElementVNode"])("tbody",null,[(Object(a["openBlock"])(!0),Object(a["createElementBlock"])(a["Fragment"],null,Object(a["renderList"])(e.panel.items,(t,i)=>(Object(a["openBlock"])(),Object(a["createElementBlock"])("tr",{class:"table-contents",key:i},[Object(a["createElementVNode"])("td",null,Object(a["toDisplayString"])(i+1)+".",1),Object(a["createElementVNode"])("td",null,Object(a["toDisplayString"])(t.type),1),Object(a["createElementVNode"])("td",null,[Object(a["createElementVNode"])("span",{onClick:t=>e.editItem(i),class:"underline"},"Edit",8,ll),Object(a["createTextVNode"])(" | "),Object(a["createElementVNode"])("span",{onClick:t=>e.deleteItem(i),class:"underline"},"Remove",8,ol)])]))),128))])]),nl,rl,"none"!==e.editingStatus?(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",sl,[Object(a["createElementVNode"])("h2",cl,Object(a["toDisplayString"])(e.$t("editor.slideshow.label."+e.editingStatus)),1),dl,Object(a["createElementVNode"])("div",null,["create"===e.editingStatus?(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",ul,[Object(a["createElementVNode"])("label",ml,Object(a["toDisplayString"])(e.$t("editor.slideshow.label.type"))+":",1),Object(a["createElementVNode"])("select",{onInput:t[2]||(t[2]=(...t)=>e.onTypeInput&&e.onTypeInput(...t)),value:e.newSlideType},[(Object(a["openBlock"])(!0),Object(a["createElementBlock"])(a["Fragment"],null,Object(a["renderList"])(Object.keys(e.editors),e=>(Object(a["openBlock"])(),Object(a["createElementBlock"])("option",{key:e,value:e},Object(a["toDisplayString"])(e),9,hl))),128))],40,pl),"create"===e.editingStatus?(Object(a["openBlock"])(),Object(a["createBlock"])(Object(a["resolveDynamicComponent"])(e.editors[e.newSlideType]),{key:0,ref:"slideEditor",panel:JSON.parse(JSON.stringify(e.startingConfig[e.newSlideType])),configFileStructure:e.configFileStructure,lang:e.lang,sourceCounts:e.sourceCounts,allowMany:!1},null,8,["panel","configFileStructure","lang","sourceCounts"])):Object(a["createCommentVNode"])("",!0),Object(a["createElementVNode"])("div",bl,[Object(a["createElementVNode"])("button",{class:"bg-black text-white hover:bg-gray-800",onClick:t[3]||(t[3]=t=>e.saveItem(!0))},Object(a["toDisplayString"])(e.$t("editor.slideshow.label.add")),1)])])):(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",gl,[(Object(a["openBlock"])(),Object(a["createBlock"])(Object(a["resolveDynamicComponent"])(e.editors[e.panel.items[e.editingIdx].type]),{ref:"slideEditor",panel:e.panel.items[e.editingIdx],configFileStructure:e.configFileStructure,lang:e.lang,sourceCounts:e.sourceCounts,key:e.editingIdx+e.panel.items[e.editingIdx].type,allowMany:!1},null,8,["panel","configFileStructure","lang","sourceCounts"])),Object(a["createElementVNode"])("div",fl,[Object(a["createElementVNode"])("button",{class:"bg-black text-white hover:bg-gray-800",onClick:t[4]||(t[4]=t=>e.saveItem())},Object(a["toDisplayString"])(e.$t("editor.saveChanges")),1)])]))])])):Object(a["createCommentVNode"])("",!0)])}let Ol=class extends r["c"]{constructor(){super(...arguments),this.editors={text:"text-editor",image:"image-editor",chart:"chart-editor",map:"map-editor",video:"video-editor"},this.startingConfig={text:{type:Se.Text,title:"",content:""},dynamic:{type:Se.Dynamic,title:"",titleTag:"",content:"",children:[]},slideshow:{type:Se.Slideshow,items:[]},chart:{type:Se.Chart,src:""},image:{type:Se.Image,src:""},map:{type:Se.Map,config:"",title:"",scrollguard:!0},video:{type:Se.Video,title:"",videoType:"",src:""}},this.editingIdx=-1,this.newSlideName="",this.newSlideType="text",this.editingStatus="none"}onTypeInput(e){this.newSlideType=e.target.value}editItem(e){this.saveChanges(),this.editingIdx=e,this.editingStatus="edit"}deleteItem(e){const t=this.panel.items.find((t,i)=>i===e);switch(null===t||void 0===t?void 0:t.type){case"map":{const e=t;this.sourceCounts[e.config]-=1,0===this.sourceCounts[e.config]&&this.configFileStructure.zip.remove(""+e.config.substring(e.config.indexOf("/")+1));break}case"chart":{const e=t;this.sourceCounts[e.src]-=1,0===this.sourceCounts[e.src]&&this.configFileStructure.zip.remove(""+e.src.substring(e.src.indexOf("/")+1));break}case"image":{const e=t;this.sourceCounts[e.src]-=1,0===this.sourceCounts[e.src]&&this.configFileStructure.zip.remove(""+e.src.substring(e.src.indexOf("/")+1));break}case"text":break}this.panel.items=this.panel.items.filter((t,i)=>i!==e),this.editingIdx===e&&(this.editingIdx=-1,this.editingStatus="none")}saveItem(e=!1){let t;e?(t=this.$refs.slideEditor.panel,this.panel.items.push(t)):t=this.$refs.slideEditor.panel,t.type!==Se.Text&&t.type!==Se.Map&&void 0!==this.$refs.slideEditor&&"function"===typeof this.$refs.slideEditor.saveChanges&&this.$refs.slideEditor.saveChanges(),this.editingStatus="none"}saveChanges(){}};Object(n["a"])([Object(r["b"])()],Ol.prototype,"panel",void 0),Object(n["a"])([Object(r["b"])()],Ol.prototype,"configFileStructure",void 0),Object(n["a"])([Object(r["b"])()],Ol.prototype,"lang",void 0),Object(n["a"])([Object(r["b"])()],Ol.prototype,"sourceCounts",void 0),Ol=Object(n["a"])([Object(r["a"])({components:{"chart-editor":mt,"image-editor":Qt,"text-editor":oi,"map-editor":da,"video-editor":za}})],Ol);var jl=Ol;i("303e");const Vl=d()(jl,[["render",vl],["__scopeId","data-v-5b666f60"]]);var yl=Vl;const Sl={class:"block py-20 align-middle text-center h-full",style:{margin:"0 auto"}};function Cl(e,t,i,l,o,n){const r=Object(a["resolveComponent"])("spinner");return Object(a["openBlock"])(),Object(a["createElementBlock"])("div",Sl,[Object(a["createVNode"])(r,{size:"120px",color:"#009cd1",style:{margin:"0 auto"}})])}let xl=class extends r["c"]{};xl=Object(n["a"])([Object(r["a"])({components:{spinner:A["a"]}})],xl);var El=xl;const wl=d()(El,[["render",Cl]]);var kl=wl;const Nl={class:"block"},Tl={class:"flex"},_l={key:0},$l={key:1},Ll={class:"w-2/3 mt-5"},Il={class:"table-header"},Ml=["onClick"],Bl=["onClick"],Dl={class:"table-add-row"},Fl={class:"flex flex-col items-center"},Pl={key:0},Rl=["disabled"],Al={key:0},Ul=Object(a["createElementVNode"])("br",null,null,-1),zl=Object(a["createElementVNode"])("hr",null,null,-1),Wl=Object(a["createElementVNode"])("br",null,null,-1),ql={class:"font-bold text-xl"},Hl=Object(a["createElementVNode"])("br",null,null,-1);function Xl(e,t,i,l,o,n){return Object(a["openBlock"])(),Object(a["createElementBlock"])("div",Nl,[Object(a["createElementVNode"])("div",Tl,[Object(a["createElementVNode"])("button",{onClick:t[0]||(t[0]=()=>e.changePanel("text")),class:Object(a["normalizeClass"])(["border hover:bg-gray-100","text"===e.editingStatus?"border-black":"border-gray-300"])},Object(a["toDisplayString"])(e.$t("dynamic.textSection")),3),Object(a["createElementVNode"])("button",{onClick:t[1]||(t[1]=()=>e.changePanel("panels")),class:Object(a["normalizeClass"])(["border hover:bg-gray-100","text"!==e.editingStatus?"border-black":"border-gray-300"])},Object(a["toDisplayString"])(e.$t("dynamic.panel.collection")),3)]),"text"===e.editingStatus?(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",_l,[(Object(a["openBlock"])(),Object(a["createBlock"])(Object(a["resolveDynamicComponent"])("text-editor"),{key:"text",panel:e.panel,configFileStructure:e.configFileStructure,lang:e.lang},null,8,["panel","configFileStructure","lang"]))])):Object(a["createCommentVNode"])("",!0),"panels"===e.editingStatus?(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",$l,[Object(a["createElementVNode"])("table",Ll,[Object(a["createElementVNode"])("tr",Il,[Object(a["createElementVNode"])("th",null,Object(a["toDisplayString"])(e.$t("dynamic.panel.id")),1),Object(a["createElementVNode"])("th",null,Object(a["toDisplayString"])(e.$t("dynamic.panel.type")),1),Object(a["createElementVNode"])("th",null,Object(a["toDisplayString"])(e.$t("dynamic.panel.actions")),1)]),(Object(a["openBlock"])(!0),Object(a["createElementBlock"])(a["Fragment"],null,Object(a["renderList"])(e.panel.children,(t,i)=>(Object(a["openBlock"])(),Object(a["createElementBlock"])("tr",{class:"table-contents",key:i},[Object(a["createElementVNode"])("td",null,Object(a["toDisplayString"])(t.id),1),Object(a["createElementVNode"])("td",null,Object(a["toDisplayString"])(e.determineEditorType(t.panel)),1),Object(a["createElementVNode"])("td",null,[Object(a["createElementVNode"])("span",{onClick:()=>e.switchSlide(i)},Object(a["toDisplayString"])(e.$t("editor.chart.label.edit")),9,Ml),Object(a["createTextVNode"])(" | "),Object(a["createElementVNode"])("span",{onClick:()=>e.removeSlide(t,i)},Object(a["toDisplayString"])(e.$t("editor.remove")),9,Bl)])]))),128)),Object(a["createElementVNode"])("tr",Dl,[Object(a["createElementVNode"])("th",Fl,[Object(a["withDirectives"])(Object(a["createElementVNode"])("input",{type:"text",placeholder:"Enter Panel ID","onUpdate:modelValue":t[2]||(t[2]=t=>e.newSlideName=t)},null,512),[[a["vModelText"],e.newSlideName]]),e.idUsed?(Object(a["openBlock"])(),Object(a["createElementBlock"])("p",Pl,Object(a["toDisplayString"])(e.$t("dynamic.panel.idTaken")),1)):Object(a["createCommentVNode"])("",!0)]),Object(a["createElementVNode"])("th",null,[Object(a["withDirectives"])(Object(a["createElementVNode"])("select",{"onUpdate:modelValue":t[3]||(t[3]=t=>e.newSlideType=t)},[(Object(a["openBlock"])(!0),Object(a["createElementBlock"])(a["Fragment"],null,Object(a["renderList"])(Object.keys(e.editors),e=>(Object(a["openBlock"])(),Object(a["createElementBlock"])("option",{key:e},Object(a["toDisplayString"])(e),1))),128))],512),[[a["vModelSelect"],e.newSlideType]])]),Object(a["createElementVNode"])("th",null,[Object(a["createElementVNode"])("button",{onClick:t[4]||(t[4]=(...t)=>e.createNewSlide&&e.createNewSlide(...t)),disabled:e.idUsed},"Add New",8,Rl)])])]),-1!==e.editingSlide?(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",Al,[Ul,zl,Wl,Object(a["createElementVNode"])("span",ql,Object(a["toDisplayString"])(e.$t("dynamic.panel.editor")),1),Hl,(Object(a["openBlock"])(),Object(a["createBlock"])(Object(a["resolveDynamicComponent"])(e.editors[e.determineEditorType(e.panel.children[e.editingSlide].panel)]),{ref:"slide",key:e.editingSlide+e.determineEditorType(e.panel.children[e.editingSlide].panel),panel:e.panel.children[e.editingSlide].panel,configFileStructure:e.configFileStructure,lang:e.lang,sourceCounts:e.sourceCounts,onSlideEdit:t[5]||(t[5]=t=>e.$emit("slide-edit"))},null,40,["panel","configFileStructure","lang","sourceCounts"]))])):Object(a["createCommentVNode"])("",!0)])):Object(a["createCommentVNode"])("",!0)])}var Jl;let Gl=Jl=class extends r["c"]{constructor(){super(...arguments),this.editors={text:"text-editor",image:"image-editor",slideshow:"slideshow-editor",chart:"chart-editor",map:"map-editor",video:"video-editor"},this.startingConfig={text:{type:Se.Text,title:"",content:""},dynamic:{type:Se.Dynamic,title:"",titleTag:"",content:"",children:[]},slideshow:{type:Se.Slideshow,items:[],userCreated:!0},image:{type:Se.Image,src:""},chart:{type:Se.Chart,src:""},map:{type:Se.Map,config:"",title:"",scrollguard:!1},video:{type:Se.Video,title:"",videoType:"",src:""}},this.editingStatus="text",this.editingSlide=-1,this.newSlideName="",this.newSlideType="text"}get idUsed(){return this.panel.children.some(e=>e.id===this.newSlideName)}changePanel(e){"text"!==this.editingStatus&&this.saveChanges(),this.editingStatus=e}switchSlide(e){this.saveChanges(),this.editingSlide=e}removeSlide(e,t){switch(null===e||void 0===e?void 0:e.type){case"map":{const t=e;this.sourceCounts[t.config]-=1,0===this.sourceCounts[t.config]&&this.configFileStructure.zip.remove(""+t.config.substring(t.config.indexOf("/")+1));break}case"chart":{const t=e;this.sourceCounts[t.src]-=1,0===this.sourceCounts[t.src]&&this.configFileStructure.zip.remove(""+t.src.substring(t.src.indexOf("/")+1));break}case"image":{const t=e;this.sourceCounts[t.src]-=1,0===this.sourceCounts[t.src]&&this.configFileStructure.zip.remove(""+t.src.substring(t.src.indexOf("/")+1));break}case"slideshow":{const t=e;t.items.forEach(e=>{this.removeSlide(e)});break}case"video":{const t=e;"local"===t.videoType&&(this.sourceCounts[t.src]-=1,0===this.sourceCounts[t.src]&&this.configFileStructure.zip.remove(""+t.src.substring(t.src.indexOf("/")+1)));break}}t&&(this.panel.children=this.panel.children.filter((e,i)=>i!==t),this.editingSlide===t&&(this.editingSlide=-1))}createNewSlide(){if(!this.newSlideName)return;const e={id:this.newSlideName,panel:JSON.parse(JSON.stringify(this.startingConfig[this.newSlideType]))};this.newSlideName="",this.panel.children.push(e)}determineEditorType(e){if(e.type!==Se.Slideshow)return e.type;if(0===e.items.length||e.userCreated)return Se.Slideshow;const t=e.items.every(e=>e.type===Se.Chart);if(t)return Se.Chart;const i=e.items.every(e=>e.type===Se.Image);return i?Se.Image:Se.Slideshow}saveChanges(){void 0!==this.$refs.slide&&"function"===typeof this.$refs.slide.saveChanges&&this.$refs.slide.saveChanges()}};Object(n["a"])([Object(r["b"])()],Gl.prototype,"panel",void 0),Object(n["a"])([Object(r["b"])()],Gl.prototype,"configFileStructure",void 0),Object(n["a"])([Object(r["b"])()],Gl.prototype,"lang",void 0),Object(n["a"])([Object(r["b"])()],Gl.prototype,"sourceCounts",void 0),Gl=Jl=Object(n["a"])([Object(r["a"])({components:{"chart-editor":mt,"image-editor":Qt,"text-editor":oi,"slideshow-editor":yl,"dynamic-editor":Jl,"map-editor":da,"video-editor":za}})],Gl);var Zl=Gl;i("c666");const Yl=d()(Zl,[["render",Xl]]);var Ql=Yl;let Kl=class extends r["c"]{constructor(){super(...arguments),this.config=void 0,this.panelIndex=0,this.advancedEditorView=!1,this.newType="",this.rightOnly=!1,this.editors={text:"text-editor",image:"image-editor",slideshow:"slideshow-editor",chart:"chart-editor",map:"map-editor",video:"video-editor",loading:"loading-page",dynamic:"dynamic-editor"}}onSlideChange(){this.currentSlide&&(this.rightOnly=1===this.currentSlide.panel.length)}changePanelType(e,t){const i={text:{type:Se.Text,title:"",content:""},dynamic:{type:Se.Dynamic,title:this.currentSlide.panel[0]&&"text"===e?this.currentSlide.panel[0].title:"",titleTag:"",content:this.currentSlide.panel[0]&&"text"===e?this.currentSlide.panel[0].content:"",children:[]},slideshow:{type:Se.Slideshow,items:[],userCreated:!0},image:{type:Se.Image,src:""},chart:{type:Se.Chart,src:""},map:{type:Se.Map,config:"",title:"",scrollguard:!1},video:{type:Se.Video,title:"",videoType:"",src:""}};this.currentSlide.panel.forEach(e=>this.removeSourceCounts(e)),"dynamic"===t?(this.panelIndex=0,this.currentSlide["panel"]=[i[t]]):this.currentSlide.panel[this.panelIndex]=i[t]}removeSourceCounts(e){switch(e.type){case"map":{const t=e;this.sourceCounts[t.config]-=1,0===this.sourceCounts[t.config]&&this.configFileStructure.zip.remove(""+t.config.substring(t.config.indexOf("/")+1));break}case"image":{const t=e;this.sourceCounts[t.src]-=1,0===this.sourceCounts[t.src]&&this.configFileStructure.zip.remove(""+t.src.substring(t.src.indexOf("/")+1));break}case"chart":{const t=e;this.sourceCounts[t.src]-=1,0===this.sourceCounts[t.src]&&this.configFileStructure.zip.remove(""+t.src.substring(t.src.indexOf("/")+1));break}case"slideshow":{const t=e;t.items.forEach(e=>{this.removeSourceCounts(e)});break}case"video":{const t=e;"local"===t.videoType&&(this.sourceCounts[t.src]-=1,0===this.sourceCounts[t.src]&&this.configFileStructure.zip.remove(""+t.src.substring(t.src.indexOf("/")+1)));break}case"dynamic":{const t=e;t.children.forEach(e=>{this.removeSourceCounts(e.panel)});break}case"text":break}}saveChanges(){void 0!==this.$refs.editor&&"function"===typeof this.$refs.editor.saveChanges&&this.$refs.editor.saveChanges()}selectSlide(e){this.$emit("slide-change",e)}cancelTypeChange(){this.$refs.typeSelector.value=this.determineEditorType(this.currentSlide.panel[this.panelIndex])}determineEditorType(e){if(e.type!==Se.Slideshow)return e.type;if(0===e.items.length||e.userCreated)return Se.Slideshow;const t=e.items.every(e=>e.type===Se.Chart);if(t)return Se.Chart;const i=e.items.every(e=>e.type===Se.Image);return i?Se.Image:Se.Slideshow}toggleRightOnly(){this.saveChanges(),this.rightOnly?(this.panelIndex=0,this.currentSlide["panel"]=[this.currentSlide.panel[1]]):this.currentSlide["panel"]=[Object.assign({},{type:Se.Text,title:"",content:""}),Object.assign({},this.currentSlide.panel[0])]}};Object(n["a"])([Object(r["b"])()],Kl.prototype,"currentSlide",void 0),Object(n["a"])([Object(r["b"])()],Kl.prototype,"configFileStructure",void 0),Object(n["a"])([Object(r["b"])()],Kl.prototype,"lang",void 0),Object(n["a"])([Object(r["b"])()],Kl.prototype,"uid",void 0),Object(n["a"])([Object(r["b"])()],Kl.prototype,"slideIndex",void 0),Object(n["a"])([Object(r["b"])()],Kl.prototype,"isLast",void 0),Object(n["a"])([Object(r["b"])()],Kl.prototype,"sourceCounts",void 0),Object(n["a"])([Object(r["d"])("currentSlide",{deep:!0})],Kl.prototype,"onSlideChange",null),Kl=Object(n["a"])([Object(r["a"])({components:{"chart-editor":mt,"custom-editor":Ot,"image-editor":Qt,"text-editor":oi,"map-editor":da,"video-editor":za,"slideshow-editor":yl,"loading-page":kl,"dynamic-editor":Ql,"confirmation-modal":nt}})],Kl);var eo=Kl;i("0b20");const to=d()(eo,[["render",ye],["__scopeId","data-v-4c97a990"]]);var io=to;const ao=e=>(Object(a["pushScopeId"])("data-v-33456e0a"),e=e(),Object(a["popScopeId"])(),e),lo={class:"flex toc-header p-2 mt-10"},oo={class:"flex items-center justify-center font-bold"},no=ao(()=>Object(a["createElementVNode"])("span",{class:"flex-1"},null,-1)),ro=ao(()=>Object(a["createElementVNode"])("span",{class:"ml-auto"},null,-1)),so=ao(()=>Object(a["createElementVNode"])("span",{class:"align-middle inline-block px-1"},[Object(a["createElementVNode"])("svg",{xmlns:"http://www.w3.org/2000/svg",width:"10",height:"10",viewBox:"0 0 24 24"},[Object(a["createElementVNode"])("path",{d:"M24 10h-10v-10h-4v10h-10v4h10v10h4v-10h10z"})])],-1)),co={class:"align-middle inline-block"},uo=ao(()=>Object(a["createElementVNode"])("svg",{xmlns:"http://www.w3.org/2000/svg",height:"24",width:"24"},[Object(a["createElementVNode"])("path",{d:"M5 22q-.825 0-1.413-.587Q3 20.825 3 20V6h2v14h11v2Zm4-4q-.825 0-1.412-.587Q7 16.825 7 16V4q0-.825.588-1.413Q8.175 2 9 2h9q.825 0 1.413.587Q20 3.175 20 4v12q0 .825-.587 1.413Q18.825 18 18 18Zm0-2h9V4H9v12Zm0 0V4v12Z"})],-1)),mo=[uo],po={slot:"header",class:"text-xl font-bold"},ho={class:"flex flex-col"},bo={class:"text-lg font-bold my-6"},go={class:"flex"},fo=["value"],vo=["onClick"],Oo={class:"self-center overflow-ellipsis whitespace-nowrap overflow-hidden flex-grow ml-2"},jo={class:"font-bold overflow-hidden"},Vo={class:"flex"},yo={class:"flex flex-col"},So=["onClick"],Co=ao(()=>Object(a["createElementVNode"])("svg",{xmlns:"http://www.w3.org/2000/svg",width:"18",height:"18",viewBox:"0 0 24 24"},[Object(a["createElementVNode"])("path",{d:"M3 6l3 18h12l3-18h-18zm19-4v2h-20v-2h5.711c.9 0 1.631-1.099 1.631-2h5.316c0 .901.73 2 1.631 2h5.711z"})],-1)),xo=[Co],Eo=["onClick"],wo=ao(()=>Object(a["createElementVNode"])("svg",{xmlns:"http://www.w3.org/2000/svg",height:"24",width:"24"},[Object(a["createElementVNode"])("path",{d:"M5 22q-.825 0-1.413-.587Q3 20.825 3 20V6h2v14h11v2Zm4-4q-.825 0-1.412-.587Q7 16.825 7 16V4q0-.825.588-1.413Q8.175 2 9 2h9q.825 0 1.413.587Q20 3.175 20 4v12q0 .825-.587 1.413Q18.825 18 18 18Zm0-2h9V4H9v12Zm0 0V4v12Z"})],-1)),ko=[wo],No={class:"flex flex-col mr-2 ml-1 my-1"},To=["onClick","disabled"],_o=ao(()=>Object(a["createElementVNode"])("svg",{xmlns:"http://www.w3.org/2000/svg",class:"fill-current",height:"20",width:"20"},[Object(a["createElementVNode"])("path",{d:"m2 16 8-12 8 12Z"})],-1)),$o=[_o],Lo=["onClick","disabled"],Io=ao(()=>Object(a["createElementVNode"])("svg",{xmlns:"http://www.w3.org/2000/svg",class:"fill-current",height:"20",width:"20"},[Object(a["createElementVNode"])("path",{d:"m2 16 8-12 8 12Z"})],-1)),Mo=[Io];function Bo(e,t,i,l,o,n){const r=Object(a["resolveComponent"])("vue-final-modal"),s=Object(a["resolveComponent"])("confirmation-modal"),c=Object(a["resolveComponent"])("draggable"),d=Object(a["resolveDirective"])("tippy");return Object(a["openBlock"])(),Object(a["createElementBlock"])("div",null,[Object(a["createElementVNode"])("div",lo,[Object(a["createElementVNode"])("span",oo,Object(a["toDisplayString"])(e.$t("editor.slides.title")),1),no,ro,Object(a["createElementVNode"])("button",{onClick:t[0]||(t[0]=(...t)=>e.addNewSlide&&e.addNewSlide(...t))},[so,Object(a["createElementVNode"])("span",co,Object(a["toDisplayString"])(e.$t("editor.slides.addSlide")),1)]),Object(a["withDirectives"])((Object(a["openBlock"])(),Object(a["createElementBlock"])("button",{onClick:t[1]||(t[1]=Object(a["withModifiers"])(t=>e.$vfm.open("copy-from-other-lang"),["stop"]))},mo)),[[d,{delay:"200",placement:"right",content:e.$t("editor.slides.copyFromLang"),animateFill:!0}]]),Object(a["createVNode"])(r,{modalId:"copy-from-other-lang","content-class":"flex flex-col max-w-xl mx-4 p-4 bg-white border rounded-lg space-y-2",class:"flex justify-center items-center"},{default:Object(a["withCtx"])(()=>[Object(a["createElementVNode"])("h2",po,Object(a["toDisplayString"])(e.$t("editor.slides.copyFromLang")),1),Object(a["createElementVNode"])("div",ho,[Object(a["createElementVNode"])("button",{class:"w-32 h-12 ml-0",onClick:t[2]||(t[2]=t=>e.copyAllFromOtherLang(e.configFileStructure.configs["en"===e.lang?"fr":"en"].slides))},Object(a["toDisplayString"])(e.$t("editor.slides.copyAll")),1),Object(a["createElementVNode"])("span",bo,Object(a["toDisplayString"])(e.$t("editor.or")),1),Object(a["createElementVNode"])("div",go,[Object(a["withDirectives"])(Object(a["createElementVNode"])("select",{"onUpdate:modelValue":t[3]||(t[3]=t=>e.selectedForCopying=t),class:"overflow-ellipsis copy-select"},[(Object(a["openBlock"])(!0),Object(a["createElementBlock"])(a["Fragment"],null,Object(a["renderList"])(e.configFileStructure.configs["en"===e.lang?"fr":"en"].slides,(t,i)=>(Object(a["openBlock"])(),Object(a["createElementBlock"])("option",{value:i,key:t.title+i},Object(a["toDisplayString"])(e.$t("editor.slides.slide"))+" "+Object(a["toDisplayString"])(i+": "+t.title),9,fo))),128))],512),[[a["vModelSelect"],e.selectedForCopying]]),Object(a["createElementVNode"])("button",{onClick:t[4]||(t[4]=t=>e.copyFromOtherLang(e.configFileStructure.configs["en"===e.lang?"fr":"en"].slides[e.selectedForCopying]))},Object(a["toDisplayString"])(e.$t("editor.slides.copy")),1)])])]),_:1})]),Object(a["createElementVNode"])("ul",null,[Object(a["createVNode"])(c,{modelValue:e.slides,"onUpdate:modelValue":t[5]||(t[5]=t=>e.slides=t),onUpdate:t[6]||(t[6]=t=>e.$emit("slides-updated",e.slides)),"item-key":"title"},{item:Object(a["withCtx"])(({element:t,index:i})=>[Object(a["withDirectives"])((Object(a["openBlock"])(),Object(a["createElementBlock"])("li",{class:Object(a["normalizeClass"])(["toc-slide border-t flex px-2 cursor-pointer hover:bg-gray-100",e.currentSlide===t?"bg-gray-100":""]),onClick:t=>e.selectSlide(i),key:t.title+i},[Object(a["createElementVNode"])("div",Oo,[Object(a["createTextVNode"])(Object(a["toDisplayString"])(e.$t("editor.slides.slide"))+" "+Object(a["toDisplayString"])(i+1)+": ",1),Object(a["createElementVNode"])("span",jo,Object(a["toDisplayString"])(t.title||"Add a title"),1)]),Object(a["createElementVNode"])("div",Vo,[Object(a["createElementVNode"])("div",yo,[Object(a["createElementVNode"])("button",{onClick:Object(a["withModifiers"])(t=>e.$vfm.open("delete-slide-"+i),["stop"])},xo,8,So),Object(a["createElementVNode"])("button",{onClick:Object(a["withModifiers"])(t=>e.copySlide(i),["stop"])},ko,8,Eo)]),Object(a["createElementVNode"])("div",No,[Object(a["createElementVNode"])("button",{class:Object(a["normalizeClass"])(0==i?"text-gray-500 cursor-not-allowed":""),onClick:Object(a["withModifiers"])(t=>e.moveUp(i),["stop"]),disabled:0==i},$o,10,To),Object(a["createElementVNode"])("button",{class:Object(a["normalizeClass"])(["rotate-180 transform",i==e.slides.length-1?"text-gray-500 cursor-not-allowed":""]),onClick:Object(a["withModifiers"])(t=>e.moveDown(i),["stop"]),disabled:i==e.slides.length-1},Mo,10,Lo)])]),Object(a["createVNode"])(s,{name:"delete-slide-"+i,message:e.$t("editor.slides.deleteSlide.confirm",{title:t.title}),onOk:t=>e.removeSlide(i)},null,8,["name","message","onOk"])],10,vo)),[[d,{delay:"200",placement:"right",content:t.title,animateFill:!0}]])]),_:1},8,["modelValue"])])])}var Do=i("9675"),Fo=i.n(Do);let Po=class extends r["c"]{constructor(){super(...arguments),this.selectedForCopying=0}selectSlide(e){this.$emit("slide-change",e)}addNewSlide(){this.slides.push({title:"",panel:[{type:"text",title:"",content:""},{type:"text",title:"",content:""}]}),this.selectSlide(this.slides.length-1),this.$emit("slides-updated",this.slides)}copyFromOtherLang(e){e&&(this.slides.splice(this.slides.length,0,Fo()(e)),this.$emit("slides-updated",this.slides))}copyAllFromOtherLang(e){e&&(this.slides.splice(this.slides.length,0,...e.map(e=>Fo()(e))),this.$emit("slides-updated",this.slides))}copySlide(e){this.slides.splice(e+1,0,Fo()(this.slides[e])),this.$emit("slides-updated",this.slides)}removeSlide(e){e===this.slideIndex&&this.$emit("slide-change",-1),this.removeSourceCounts(e),this.slides.splice(e,1),this.$emit("slides-updated",this.slides)}removeSourceCounts(e){var t;const i=null===(t=this.slides.find((t,i)=>i===e))||void 0===t?void 0:t.panel;null===i||void 0===i||i.forEach(e=>this.removeSourceHelper(e))}removeSourceHelper(e){switch(e.type){case"map":{const t=e;this.sourceCounts[t.config]-=1,0===this.sourceCounts[t.config]&&this.configFileStructure.zip.remove(""+t.config.substring(t.config.indexOf("/")+1));break}case"image":{const t=e;this.sourceCounts[t.src]-=1,0===this.sourceCounts[t.src]&&this.configFileStructure.zip.remove(""+t.src.substring(t.src.indexOf("/")+1));break}case"chart":{const t=e;this.sourceCounts[t.src]-=1,0===this.sourceCounts[t.src]&&this.configFileStructure.zip.remove(""+t.src.substring(t.src.indexOf("/")+1));break}case"slideshow":{const t=e;t.items.forEach(e=>{this.removeSourceHelper(e)});break}case"video":{const t=e;"local"===t.videoType&&(this.sourceCounts[t.src]-=1,0===this.sourceCounts[t.src]&&this.configFileStructure.zip.remove(""+t.src.substring(t.src.indexOf("/")+1)));break}case"dynamic":{const t=e;t.children.forEach(e=>{this.removeSourceHelper(e.panel)});break}case"text":break}}moveUp(e){this.moveDown(e-1)}moveDown(e){this.slides.splice(e+1,0,this.slides.splice(e,1)[0]),this.$emit("slides-updated",this.slides)}};Object(n["a"])([Object(r["b"])()],Po.prototype,"slides",void 0),Object(n["a"])([Object(r["b"])()],Po.prototype,"currentSlide",void 0),Object(n["a"])([Object(r["b"])()],Po.prototype,"slideIndex",void 0),Object(n["a"])([Object(r["b"])()],Po.prototype,"configFileStructure",void 0),Object(n["a"])([Object(r["b"])()],Po.prototype,"lang",void 0),Object(n["a"])([Object(r["b"])()],Po.prototype,"sourceCounts",void 0),Po=Object(n["a"])([Object(r["a"])({components:{"slide-editor":io,"confirmation-modal":nt,"vue-final-modal":U["a"],draggable:st.a}})],Po);var Ro=Po;i("68ee");const Ao=d()(Ro,[["render",Bo],["__scopeId","data-v-33456e0a"]]);var Uo=Ao;const zo={class:"mb-5"},Wo=["value"],qo=Object(a["createElementVNode"])("br",null,null,-1),Ho={class:"mb-5"},Xo=["value"],Jo={class:"mb-5"},Go=["value"],Zo=Object(a["createElementVNode"])("br",null,null,-1),Yo={key:0},Qo=["src"],Ko={key:1,class:"image-preview"},en={class:"mb-5"},tn=["value"],an=Object(a["createElementVNode"])("br",null,null,-1),ln=["value"],on=Object(a["createElementVNode"])("br",null,null,-1),nn=Object(a["createElementVNode"])("label",{class:"mb-5"},null,-1),rn={class:"inline-block"},sn=Object(a["createElementVNode"])("br",null,null,-1),cn=["value"],dn=Object(a["createElementVNode"])("br",null,null,-1),un=Object(a["createElementVNode"])("label",{class:"mb-5"},null,-1),mn={class:"inline-block"},pn=Object(a["createElementVNode"])("br",null,null,-1),hn=["value"],bn=Object(a["createElementVNode"])("br",null,null,-1),gn=Object(a["createElementVNode"])("label",{class:"mb-5"},null,-1),fn={class:"inline-block"},vn=Object(a["createElementVNode"])("br",null,null,-1),On={class:"mr-15"},jn={value:"vertical"},Vn={value:"horizontal"},yn=Object(a["createElementVNode"])("br",null,null,-1),Sn=Object(a["createElementVNode"])("label",{class:"mb-5"},null,-1),Cn={class:"inline-block"},xn=Object(a["createElementVNode"])("br",null,null,-1),En={class:"mb-5"},wn=["value"],kn=Object(a["createElementVNode"])("br",null,null,-1),Nn=Object(a["createElementVNode"])("br",null,null,-1);function Tn(e,t,i,l,o,n){return Object(a["openBlock"])(),Object(a["createElementBlock"])("div",null,[Object(a["createElementVNode"])("label",zo,Object(a["toDisplayString"])(e.$t("editor.title"))+":",1),Object(a["createElementVNode"])("input",{type:"text",name:"title",value:e.metadata.title,onChange:t[0]||(t[0]=(...t)=>e.metadataChanged&&e.metadataChanged(...t)),class:"w-1/3"},null,40,Wo),qo,Object(a["createElementVNode"])("label",Ho,Object(a["toDisplayString"])(e.$t("editor.slides.title"))+":",1),Object(a["createElementVNode"])("input",{type:"text",name:"introTitle",value:e.metadata.introTitle,onChange:t[1]||(t[1]=(...t)=>e.metadataChanged&&e.metadataChanged(...t)),class:"w-1/4"},null,40,Xo),Object(a["createElementVNode"])("label",Jo,Object(a["toDisplayString"])(e.$t("editor.slides.intro"))+":",1),Object(a["createElementVNode"])("input",{type:"text",name:"introSubtitle",value:e.metadata.introSubtitle,onChange:t[2]||(t[2]=(...t)=>e.metadataChanged&&e.metadataChanged(...t)),class:"w-1/4"},null,40,Go),Zo,e.metadata.logoPreview?(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",Yo,[Object(a["createElementVNode"])("label",null,Object(a["toDisplayString"])(e.$t("editor.logoPreview"))+":",1),e.metadata.logoPreview&&"error"!=e.metadata.logoPreview?(Object(a["openBlock"])(),Object(a["createElementBlock"])("img",{key:0,src:e.metadata.logoPreview,class:"image-preview"},null,8,Qo)):Object(a["createCommentVNode"])("",!0),"error"==e.metadata.logoPreview?(Object(a["openBlock"])(),Object(a["createElementBlock"])("p",Ko,Object(a["toDisplayString"])(e.$t("editor.image.loadingError")),1)):Object(a["createCommentVNode"])("",!0)])):Object(a["createCommentVNode"])("",!0),Object(a["createElementVNode"])("label",en,Object(a["toDisplayString"])(e.$t("editor.logo"))+":",1),Object(a["createElementVNode"])("input",{type:"text",onChange:t[3]||(t[3]=t=>e.$emit("logo-source-changed",t)),value:e.metadata.logoName,class:"w-1/4"},null,40,tn),Object(a["createElementVNode"])("button",{onClick:t[4]||(t[4]=Object(a["withModifiers"])((...t)=>e.openFileSelector&&e.openFileSelector(...t),["stop"])),class:"bg-black text-white hover:bg-gray-800"},Object(a["toDisplayString"])(e.$t("editor.browse")),1),e.metadata.logoName||e.metadata.logoPreview?(Object(a["openBlock"])(),Object(a["createElementBlock"])("button",{key:1,onClick:t[5]||(t[5]=Object(a["withModifiers"])((...t)=>e.removeLogo&&e.removeLogo(...t),["stop"])),class:"border border-black"},Object(a["toDisplayString"])(e.$t("editor.remove")),1)):Object(a["createCommentVNode"])("",!0),Object(a["createElementVNode"])("input",{type:"file",id:"logoUpload",onChange:t[6]||(t[6]=t=>e.$emit("logo-changed",t)),class:"w-1/4",style:{display:"none"}},null,32),an,Object(a["createElementVNode"])("label",null,Object(a["toDisplayString"])(e.$t("editor.logoAltText"))+":",1),Object(a["createElementVNode"])("input",{type:"text",name:"logoAltText",value:e.metadata.logoAltText,onChange:t[7]||(t[7]=(...t)=>e.metadataChanged&&e.metadataChanged(...t)),class:"w-2/3"},null,40,ln),on,nn,Object(a["createElementVNode"])("p",rn,[Object(a["createElementVNode"])("i",null,Object(a["toDisplayString"])(e.$t("editor.logoAltText.desc")),1)]),sn,Object(a["createElementVNode"])("label",null,Object(a["toDisplayString"])(e.$t("editor.contextLink"))+":",1),Object(a["createElementVNode"])("input",{type:"text",name:"contextLink",value:e.metadata.contextLink,onChange:t[8]||(t[8]=(...t)=>e.metadataChanged&&e.metadataChanged(...t)),class:"w-2/3"},null,40,cn),dn,un,Object(a["createElementVNode"])("p",mn,[Object(a["createElementVNode"])("i",null,Object(a["toDisplayString"])(e.$t("editor.contextLink.info")),1)]),pn,Object(a["createElementVNode"])("label",null,Object(a["toDisplayString"])(e.$t("editor.contextLabel"))+":",1),Object(a["createElementVNode"])("input",{type:"text",name:"contextLabel",value:e.metadata.contextLabel,onChange:t[9]||(t[9]=(...t)=>e.metadataChanged&&e.metadataChanged(...t)),class:"w-2/3"},null,40,hn),bn,gn,Object(a["createElementVNode"])("p",fn,[Object(a["createElementVNode"])("i",null,Object(a["toDisplayString"])(e.$t("editor.contextLabel.info")),1)]),vn,Object(a["createElementVNode"])("label",On,Object(a["toDisplayString"])(e.$t("editor.tocOrientation"))+":",1),Object(a["withDirectives"])(Object(a["createElementVNode"])("select",{class:"border-solid border border-black p-1",name:"tocOrientation",id:"toc",onChange:t[10]||(t[10]=(...t)=>e.metadataChanged&&e.metadataChanged(...t)),"onUpdate:modelValue":t[11]||(t[11]=t=>e.metadata.tocOrientation=t)},[Object(a["createElementVNode"])("option",jn,Object(a["toDisplayString"])(e.$t("editor.tocOrientation.vertical")),1),Object(a["createElementVNode"])("option",Vn,Object(a["toDisplayString"])(e.$t("editor.tocOrientation.horizontal")),1)],544),[[a["vModelSelect"],e.metadata.tocOrientation]]),yn,Sn,Object(a["createElementVNode"])("p",Cn,[Object(a["createElementVNode"])("i",null,Object(a["toDisplayString"])(e.$t("editor.tocOrientation.info")),1)]),xn,Object(a["createElementVNode"])("label",En,Object(a["toDisplayString"])(e.$t("editor.dateModified"))+":",1),Object(a["createElementVNode"])("input",{type:"date",name:"dateModified",value:e.metadata.dateModified,onChange:t[12]||(t[12]=(...t)=>e.metadataChanged&&e.metadataChanged(...t))},null,40,wn),kn,Nn])}class _n extends r["c"]{openFileSelector(){var e;null===(e=document.getElementById("logoUpload"))||void 0===e||e.click()}metadataChanged(e){this.$emit("metadata-changed",e.target.name,e.target.value)}removeLogo(){this.metadata.logoName="",this.metadata.logoPreview=""}}Object(n["a"])([Object(r["b"])()],_n.prototype,"metadata",void 0);const $n=d()(_n,[["render",Tn]]);var Ln=$n;const In=e=>(Object(a["pushScopeId"])("data-v-ec080f10"),e=e(),Object(a["popScopeId"])(),e),Mn={class:"editor-container"},Bn={class:"editor-header sticky flex items-center border-b border-black bg-gray-200 py-2 px-2 z-10"},Dn={class:"mx-1"},Fn=In(()=>Object(a["createElementVNode"])("svg",{xmlns:"http://www.w3.org/2000/svg",width:"18",height:"18.001",viewBox:"0 0 18 18.001"},[Object(a["createElementVNode"])("path",{id:"logout-Icon-SVG-098767893",d:"M5.808,13.782v1.406A2.816,2.816,0,0,0,8.621,18h7.067A2.816,2.816,0,0,0,18.5,15.188V2.813A2.816,2.816,0,0,0,15.687,0H8.621A2.816,2.816,0,0,0,5.808,2.813V4.219a.7.7,0,0,0,1.406,0V2.813A1.408,1.408,0,0,1,8.621,1.406h7.067a1.408,1.408,0,0,1,1.406,1.406V15.188a1.408,1.408,0,0,1-1.406,1.406H8.621a1.408,1.408,0,0,1-1.406-1.406V13.782a.7.7,0,0,0-1.406,0ZM1.014,7.793,2.589,6.218a.7.7,0,0,1,.994.994l-1.12,1.12h8.443a.7.7,0,1,1,0,1.406H2.463l1.12,1.12a.7.7,0,1,1-.994.994L1.014,10.279A1.76,1.76,0,0,1,1.014,7.793Zm0,0",transform:"translate(-0.5)"})],-1)),Pn={class:"ml-3 flex flex-col"},Rn={class:"font-semibold text-lg"},An=In(()=>Object(a["createElementVNode"])("span",{class:"ml-auto"},null,-1)),Un=In(()=>Object(a["createElementVNode"])("svg",{class:"inline",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",width:"18px",height:"18px"},[Object(a["createElementVNode"])("path",{d:"M 2 2 L 4.9394531 4.9394531 C 3.1262684 6.7482143 2 9.2427079 2 12 C 2 17.514 6.486 22 12 22 C 17.514 22 22 17.514 22 12 C 22 6.486 17.514 2 12 2 L 12 4 C 16.411 4 20 7.589 20 12 C 20 16.411 16.411 20 12 20 C 7.589 20 4 16.411 4 12 C 4 9.7940092 4.9004767 7.7972757 6.3496094 6.3496094 L 9 9 L 9 2 L 2 2 z"})],-1)),zn={class:"font-normal ml-1"},Wn={key:0,class:"border-2 border-red-700 text-red-700 rounded p-1 mr-2"},qn=In(()=>Object(a["createElementVNode"])("span",{class:"align-middle inline-block mr-1 pb-1 fill-current"},[Object(a["createElementVNode"])("svg",{"clip-rule":"evenodd","fill-rule":"evenodd",class:"fill-red-600",width:"18",height:"18","stroke-linejoin":"round","stroke-miterlimit":"2",viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg"},[Object(a["createElementVNode"])("path",{d:"m12.002 21.534c5.518 0 9.998-4.48 9.998-9.998s-4.48-9.997-9.998-9.997c-5.517 0-9.997 4.479-9.997 9.997s4.48 9.998 9.997 9.998zm0-1.5c-4.69 0-8.497-3.808-8.497-8.498s3.807-8.497 8.497-8.497 8.498 3.807 8.498 8.497-3.808 8.498-8.498 8.498zm0-6.5c-.414 0-.75-.336-.75-.75v-5.5c0-.414.336-.75.75-.75s.75.336.75.75v5.5c0 .414-.336.75-.75.75zm-.002 3c.552 0 1-.448 1-1s-.448-1-1-1-1 .448-1 1 .448 1 1 1z","fill-rule":"nonzero"})])],-1)),Hn={class:"align-center inline-block select-none"},Xn=["disabled"],Jn={class:"inline-block"},Gn={key:0,class:"align-middle inline-block px-1"},Zn={class:"flex"},Yn={class:"w-80 flex-shrink-0 border-r border-black editor-toc"},Qn={class:"flex items-center justify-center border-b p-2"},Kn=In(()=>Object(a["createElementVNode"])("span",{class:"align-middle inline-block px-1"},[Object(a["createElementVNode"])("svg",{"clip-rule":"evenodd","fill-rule":"evenodd",width:"16",height:"16","stroke-linejoin":"round","stroke-miterlimit":"2",viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg"},[Object(a["createElementVNode"])("path",{d:"m4.481 15.659c-1.334 3.916-1.48 4.232-1.48 4.587 0 .528.46.749.749.749.352 0 .668-.137 4.574-1.492zm1.06-1.061 3.846 3.846 11.321-11.311c.195-.195.293-.45.293-.707 0-.255-.098-.51-.293-.706-.692-.691-1.742-1.74-2.435-2.432-.195-.195-.451-.293-.707-.293-.254 0-.51.098-.706.293z","fill-rule":"nonzero"})])],-1)),er={class:"align-middle inline-block"};function tr(e,t,i,l,o,n){const r=Object(a["resolveComponent"])("router-link"),s=Object(a["resolveComponent"])("spinner"),c=Object(a["resolveComponent"])("slide-toc"),d=Object(a["resolveComponent"])("slide-editor"),u=Object(a["resolveComponent"])("confirmation-modal"),m=Object(a["resolveDirective"])("tippy");return Object(a["openBlock"])(),Object(a["createElementBlock"])("div",Mn,[Object(a["createElementVNode"])("div",Bn,[Object(a["createElementVNode"])("span",Dn,[Object(a["withDirectives"])((Object(a["openBlock"])(),Object(a["createBlock"])(r,{to:{name:"home"},class:"mt-1 flex justify-center h-full w-full",target:""},{default:Object(a["withCtx"])(()=>[Fn]),_:1})),[[m,{delay:"200",placement:"right",content:e.$t("editor.returnToLanding"),animateFill:!0}]])]),Object(a["createElementVNode"])("div",Pn,[Object(a["createElementVNode"])("span",Rn,Object(a["toDisplayString"])(e.metadata.title),1),Object(a["createElementVNode"])("span",{class:Object(a["normalizeClass"])(e.metadata.title?"text-xs":"")},"UUID: "+Object(a["toDisplayString"])(e.uuid),3)]),An,e.unsavedChanges?Object(a["withDirectives"])((Object(a["openBlock"])(),Object(a["createElementBlock"])("button",{key:0,onClick:t[0]||(t[0]=t=>e.$vfm.open("reload-config")),class:"border-2 border-red-700 text-red-700 rounded p-1 mr-2"},[Un,Object(a["createElementVNode"])("span",zn,Object(a["toDisplayString"])(e.$t("editor.resetChanges")),1)])),[[m,{delay:"200",placement:"bottom",content:e.$t("editor.resetChanges"),animateFill:!0}]]):Object(a["createCommentVNode"])("",!0),Object(a["createVNode"])(a["Transition"],{name:"fade"},{default:Object(a["withCtx"])(()=>[e.unsavedChanges?(Object(a["openBlock"])(),Object(a["createElementBlock"])("span",Wn,[qn,Object(a["createElementVNode"])("span",Hn,Object(a["toDisplayString"])(e.$t("editor.unsavedChanges")),1)])):Object(a["createCommentVNode"])("",!0)]),_:1}),Object(a["renderSlot"])(e.$slots,"langModal",Object(a["normalizeProps"])(Object(a["guardReactiveProps"])({unsavedChanges:e.unsavedChanges})),void 0,!0),Object(a["createElementVNode"])("button",{onClick:t[1]||(t[1]=(...t)=>e.preview&&e.preview(...t)),class:"bg-white border border-black hover:bg-gray-100"},Object(a["toDisplayString"])(e.$t("editor.preview")),1),Object(a["createElementVNode"])("button",{onClick:t[2]||(t[2]=(...t)=>e.saveChanges&&e.saveChanges(...t)),class:"bg-black text-white hover:bg-gray-900",disabled:e.saving},[Object(a["createElementVNode"])("span",Jn,Object(a["toDisplayString"])(e.saving?e.$t("editor.savingChanges"):e.$t("editor.saveChanges")),1),e.saving?(Object(a["openBlock"])(),Object(a["createElementBlock"])("span",Gn,[Object(a["createVNode"])(s,{size:"16px",color:"#009cd1",class:"ml-1 mb-1"})])):Object(a["createCommentVNode"])("",!0)],8,Xn)]),Object(a["createElementVNode"])("div",Zn,[Object(a["createElementVNode"])("div",Yn,[Object(a["createElementVNode"])("div",Qn,[Object(a["createElementVNode"])("button",{onClick:t[3]||(t[3]=Object(a["withModifiers"])(t=>e.$vfm.open("metadata-edit-modal"),["stop"]))},[Kn,Object(a["createElementVNode"])("span",er,Object(a["toDisplayString"])(e.$t("editor.editMetadata")),1)])]),Object(a["createVNode"])(c,{slides:e.slides,currentSlide:e.currentSlide,slideIndex:e.slideIndex,onSlideChange:e.selectSlide,onSlidesUpdated:e.updateSlides,configFileStructure:e.configFileStructure,lang:e.configLang,sourceCounts:e.sourceCounts},null,8,["slides","currentSlide","slideIndex","onSlideChange","onSlidesUpdated","configFileStructure","lang","sourceCounts"])]),Object(a["createVNode"])(d,{ref:"slide",configFileStructure:e.configFileStructure,currentSlide:e.currentSlide,lang:e.configLang,slideIndex:e.slideIndex,isLast:e.slideIndex===e.slides.length-1,uid:e.uuid,onSlideChange:e.selectSlide,onSlideEdit:e.onSlidesEdited,onCustomSlideUpdated:e.updateCustomSlide,sourceCounts:e.sourceCounts},null,8,["configFileStructure","currentSlide","lang","slideIndex","isLast","uid","onSlideChange","onSlideEdit","onCustomSlideUpdated","sourceCounts"])]),Object(a["renderSlot"])(e.$slots,"metadataModal",{},void 0,!0),Object(a["createVNode"])(u,{name:"reload-config",message:e.$t("editor.refreshChanges.modal"),onOk:t[4]||(t[4]=t=>e.$emit("refresh-config"))},null,8,["message"])])}let ir=class extends r["c"]{constructor(){super(...arguments),this.uuid="",this.logoImage=void 0,this.loadSlides=void 0,this.currentSlide="",this.slideIndex=-1}onSlidesEdited(){this.$emit("save-status",!0)}onMetadataEdited(){this.$emit("save-status",!0)}created(){this.loadSlides=this.slides,this.uuid=this.$route.params.uid,window.addEventListener("beforeunload",this.beforeWindowUnload)}mounted(){const e=new IntersectionObserver(([e])=>e.target.classList.toggle("z-40",e.intersectionRatio<1),{threshold:[1]});e.observe(document.querySelector(".editor-header"))}beforeDestroy(){window.removeEventListener("beforeunload",this.beforeWindowUnload)}selectSlide(e){void 0!==this.$refs.slide&&this.$nextTick(()=>{this.$refs.slide.saveChanges()}),this.currentSlide={title:"",panel:[{type:"loading-page"},{type:"loading-page"}]},setTimeout(()=>{this.currentSlide=-1===e?"":this.loadSlides[e],this.slideIndex=e,this.$refs.slide.panelIndex=0,this.$refs.slide.advancedEditorView=!1,window.scrollTo(0,0)},5)}updateCustomSlide(e,t){this.currentSlide=e,t&&(this.slides[this.slideIndex]=e,this.$emit("save-changes"))}updateSlides(e){this.loadSlides=e,this.slideIndex=this.loadSlides.indexOf(this.currentSlide)}preview(){void 0!==this.$refs.slide&&this.$nextTick(()=>{this.$refs.slide.saveChanges()}),setTimeout(()=>{const e=this.$router.resolve({name:"preview"}),t=window.open(e.href,"_blank");t.props={config:JSON.parse(JSON.stringify(this.configs[this.configLang])),configFileStructure:this.configFileStructure}},5)}saveChanges(){void 0!==this.$refs.slide&&this.$nextTick(()=>{this.$refs.slide.saveChanges(),this.$emit("save-changes")})}beforeWindowUnload(e){this.unsavedChanges&&!window.confirm()&&e.preventDefault()}};Object(n["a"])([Object(r["b"])()],ir.prototype,"configs",void 0),Object(n["a"])([Object(r["b"])()],ir.prototype,"configFileStructure",void 0),Object(n["a"])([Object(r["b"])()],ir.prototype,"sourceCounts",void 0),Object(n["a"])([Object(r["b"])()],ir.prototype,"metadata",void 0),Object(n["a"])([Object(r["b"])()],ir.prototype,"slides",void 0),Object(n["a"])([Object(r["b"])()],ir.prototype,"configLang",void 0),Object(n["a"])([Object(r["b"])()],ir.prototype,"saving",void 0),Object(n["a"])([Object(r["b"])()],ir.prototype,"unsavedChanges",void 0),Object(n["a"])([Object(r["d"])("slides",{deep:!0})],ir.prototype,"onSlidesEdited",null),Object(n["a"])([Object(r["d"])("metadata",{deep:!0})],ir.prototype,"onMetadataEdited",null),ir=Object(n["a"])([Object(r["a"])({components:{"metadata-content":Ln,"confirmation-modal":nt,spinner:A["a"],"slide-editor":io,"slide-toc":Uo}})],ir);var ar=ir;i("6abc");const lr=d()(ar,[["render",tr],["__scopeId","data-v-ec080f10"]]);var or=lr;const nr=i("c4e3"),rr=i("bc3a").default,{v4:sr}=i("e144");let cr=class extends r["c"]{constructor(){super(...arguments),this.configs={en:void 0,fr:void 0},this.configFileStructure=void 0,this.loadExisting=!1,this.reloadExisting=!1,this.loadStatus="waiting",this.loadEditor=!1,this.error=!1,this.warning=!1,this.configLang="en",this.saving=!1,this.unsavedChanges=!1,this.uuid="",this.logoImage=void 0,this.metadata={title:"",introTitle:"",introSubtitle:"",logoPreview:"",logoName:"",logoAltText:"",contextLink:"",contextLabel:"",tocOrientation:"",dateModified:""},this.reqFields={uuid:!0},this.slides=[],this.sourceCounts={}}created(){var e;if(this.loadExisting=this.editExisting,this.uuid=null!==(e=this.$route.params.uid)&&void 0!==e?e:this.loadExisting?void 0:sr(),this.configLang=this.$route.params.configLang?this.$route.params.configLang:"en",this.configs={en:void 0,fr:void 0},this.configFileStructure=void 0,!this.loadExisting){const e=new Date,t=e.getFullYear(),i=(e.getMonth()+1).toString().padStart(2,"0"),a=e.getDate().toString().padStart(2,"0");this.metadata.dateModified=`${t}-${i}-${a}`,this.metadata.tocOrientation="vertical"}if("editor"===this.$route.name){this.loadEditor=!0;const e=this.$route.meta.data;if(e&&e.configs&&e.configFileStructure){var t;this.configs=e.configs,this.configFileStructure=e.configFileStructure,this.metadata=e.metadata,this.slides=e.slides,this.sourceCounts=e.sourceCounts,this.loadExisting=e.existing,this.unsavedChanges=e.unsavedChanges;const a=null===(t=this.configs[this.configLang])||void 0===t||null===(t=t.introSlide.logo)||void 0===t?void 0:t.src,l=`assets/${this.configLang}/${this.metadata.logoName}`;if(a){var i;const e=null===(i=this.configFileStructure)||void 0===i?void 0:i.zip.file(l);e?e.async("blob").then(e=>{this.logoImage=new File([e],this.metadata.logoName),this.metadata.logoPreview=URL.createObjectURL(e),this.loadStatus="loaded"}):(this.metadata.logoName=a,fetch(a).then(e=>{404!==e.status&&e.blob().then(e=>{this.logoImage=new File([e],this.metadata.logoName),this.metadata.logoPreview=a,this.loadStatus="loaded"})}))}else this.loadStatus="loaded";return}}this.$route.params.uid&&this.generateRemoteConfig()}generateNewConfig(){const e=new nr;this.configs[this.configLang]=this.configHelper();const t=this.configs[this.configLang];if(this.metadata.logoName)if(this.metadata.logoName.includes("http"))t.introSlide.logo.src=this.metadata.logoName;else{var i;t.introSlide.logo.src=`${this.uuid}/assets/${this.configLang}/${null===(i=this.logoImage)||void 0===i?void 0:i.name}`}else t.introSlide.logo.src="";t.slides=[];const a="en"===this.configLang?"fr":"en";this.configs[a]=Fo()(t),this.configs[a].lang=a;const l=JSON.stringify(this.configs[a],null,4),o=`${this.uuid}_${this.configLang}.json`,n=JSON.stringify(t,null,4);e.file(o,n),e.file(`${this.uuid}_${a}.json`,l),this.configFileStructureHelper(e,this.logoImage)}configHelper(){return{title:this.metadata.title,lang:this.configLang,introSlide:{logo:{src:""},title:this.metadata.introTitle,subtitle:this.metadata.introSubtitle},slides:[],contextLabel:this.metadata.contextLabel,contextLink:this.metadata.contextLink,tocOrientation:this.metadata.tocOrientation,dateModified:this.metadata.dateModified}}generateRemoteConfig(){this.loadStatus="loading",fetch("http://localhost:6040/retrieve/"+this.uuid).then(e=>{if(404===e.status){var t;z["a"].error(`The requested UUID '${null!==(t=this.uuid)&&void 0!==t?t:""}' does not exist.`),this.error=!0,this.loadStatus="waiting",this.clearConfig()}else{const t=new nr;e.blob().then(e=>{t.loadAsync(e).then(()=>{this.configFileStructureHelper(t)})})}}).catch(()=>{z["a"].error("Failed to load product, no response from server"),this.loadStatus="loaded"})}findSources(e){["en","fr"].forEach(t=>{var i,a;null!==(i=e[t])&&void 0!==i&&null!==(i=i.introSlide.logo)&&void 0!==i&&i.src&&this.incrementSourceCount(e[t].introSlide.logo.src),null===(a=e[t])||void 0===a||a.slides.forEach(e=>{e.panel.forEach(e=>{this.panelSourceHelper(e)})})})}panelSourceHelper(e){switch(e.type){case"dynamic":e.children.forEach(e=>{this.panelSourceHelper(e.panel)});break;case"slideshow":e.items.forEach(e=>{this.panelSourceHelper(e)});break;case"chart":this.incrementSourceCount(e.src);break;case"image":this.incrementSourceCount(e.src);break;case"video":"local"===e.videoType&&this.incrementSourceCount(e.src);break;case"audio":this.incrementSourceCount(e.src);break;case"map":this.incrementSourceCount(e.config);break;case"text":break;default:break}}incrementSourceCount(e){this.sourceCounts[e]?this.sourceCounts[e]+=1:this.sourceCounts[e]=1}configFileStructureHelper(e,t){const i=e.folder("assets"),a=e.folder("charts"),l=e.folder("ramp-config");this.configFileStructure={uuid:this.uuid,zip:e,configs:this.configs,assets:{en:i.folder("en"),fr:i.folder("fr")},charts:{en:a.folder("en"),fr:a.folder("fr")},rampConfig:{en:l.folder("en"),fr:l.folder("fr")}},void 0!==t&&this.configFileStructure.assets[this.configLang].file(null===t||void 0===t?void 0:t.name,t),this.loadConfig()}async loadConfig(e){if(e)this.useConfig(e);else{try{var t,i;const e=null===(t=this.configFileStructure)||void 0===t?void 0:t.zip.file(this.uuid+"_en.json"),a=null===(i=this.configFileStructure)||void 0===i?void 0:i.zip.file(this.uuid+"_fr.json");await(null===e||void 0===e?void 0:e.async("string").then(e=>{this.configs["en"]=JSON.parse(e)})),await(null===a||void 0===a?void 0:a.async("string").then(e=>{this.configs["fr"]=JSON.parse(e)}))}catch{var a;return z["a"].error(`The requested product '${null!==(a=this.uuid)&&void 0!==a?a:""}' is malformed.`),this.loadStatus="waiting",void this.clearConfig()}this.loadExisting?(this.loadStatus="waiting",z["a"].success("Successfully loaded storyline!")):this.loadStatus="loaded",this.configs[this.configLang]&&(this.useConfig(this.configs[this.configLang]),this.findSources(this.configs),this.reloadExisting?(this.loadEditor=!0,this.generateConfig(),this.updateEditorPath()):this.loadExisting||(this.loadEditor=!0,this.updateEditorPath()))}}useConfig(e){var t;this.metadata.title=e.title,this.metadata.introTitle=e.introSlide.title,this.metadata.introSubtitle=e.introSlide.subtitle,this.metadata.contextLink=e.contextLink,this.metadata.contextLabel=e.contextLabel,this.metadata.tocOrientation=e.tocOrientation,this.metadata.dateModified=e.dateModified,this.slides=e.slides;const i=null===(t=e.introSlide.logo)||void 0===t?void 0:t.src;if(i){var a,l;this.metadata.logoAltText=null!==(a=e.introSlide.logo)&&void 0!==a&&a.altText?e.introSlide.logo.altText:"";const t=""+i.substring(i.indexOf("/")+1),o=""+i.split("/")[i.split("/").length-1],n=null===(l=this.configFileStructure)||void 0===l?void 0:l.zip.file(t);n?n.async("blob").then(e=>{this.logoImage=new File([e],o),this.metadata.logoPreview=URL.createObjectURL(e),this.metadata.logoName=o,this.loadStatus="loaded"}):(this.metadata.logoName=i,fetch(i).then(e=>{404!==e.status&&e.blob().then(e=>{this.logoImage=new File([e],o),this.metadata.logoPreview=i,this.loadStatus="loaded"})}))}}generateConfig(){var e,t;this.saving=!0;const i=`${this.uuid}_${this.configLang}.json`,a=JSON.stringify(this.configs[this.configLang],null,4);return null===(e=this.configFileStructure)||void 0===e||e.zip.file(i,a),null===(t=this.configFileStructure)||void 0===t||t.zip.generateAsync({type:"blob"}).then(e=>{const t=new FormData;t.append("data",e,this.uuid+".zip");const i={"Content-Type":"multipart/form-data"};rr.post("http://localhost:6040/upload",t,{headers:i}).then(e=>{e.data.files,e.status,this.unsavedChanges=!1,this.loadExisting=!0,z["a"].success("Successfully saved changes!")}).catch(()=>{z["a"].error("Failed to save changes.")}).finally(()=>{setTimeout(()=>{this.saving=!1},500)})}),this.configFileStructure}updateMetadata(e,t){this.metadata[e]=t,this.unsavedChanges=!0}saveMetadata(e=!1){const t=this.configs[this.configLang];if(void 0!==t){if(t.title=this.metadata.title,t.introSlide.title=this.metadata.introTitle,t.introSlide.subtitle=this.metadata.introSubtitle,t.contextLink=this.metadata.contextLink,t.contextLabel=this.metadata.contextLabel,t.tocOrientation=this.metadata.tocOrientation,t.dateModified=this.metadata.dateModified,void 0===t.introSlide.logo&&(t.introSlide.logo={src:"",altText:""}),t.introSlide.logo.altText=this.metadata.logoAltText,this.metadata.logoName)if(this.metadata.logoName.includes("http"))t.introSlide.logo.src=this.metadata.logoName;else{var i,a,l;t.introSlide.logo.src=`${this.uuid}/assets/${this.configLang}/${null===(i=this.logoImage)||void 0===i?void 0:i.name}`,null===(a=this.configFileStructure)||void 0===a||a.assets[this.configLang].file(null===(l=this.logoImage)||void 0===l?void 0:l.name,this.logoImage)}else t.introSlide.logo.src="";e&&this.generateConfig()}this.$vfm.close("metadata-edit-modal")}clearConfig(){this.metadata={title:"",introTitle:"",introSubtitle:"",contextLink:"",contextLabel:"",dateModified:"",logoPreview:"",logoName:"",logoAltText:"",tocOrientation:""},this.configs={en:void 0,fr:void 0},this.slides=[]}swapLang(){this.configLang="en"===this.configLang?"fr":"en",this.configs[this.configLang]&&(this.loadConfig(this.configs[this.configLang]),this.loadEditor&&(this.$refs.mainEditor.updateSlides(this.slides),this.$nextTick(()=>{this.$refs.mainEditor.selectSlide(-1)})))}checkUuid(){this.loadExisting||fetch("http://localhost:6040/retrieve/"+this.uuid).then(e=>{404!==e.status&&(this.warning=!0)}),this.warning=!1}beforeRouteUpdate(e,t,i){this.uuid=e.params.uid,this.$i18n.locale=e.params.lang,i()}onLogoSourceInput(e){const t=e=>{const t=new Image;return t.src=e,new Promise(e=>{t.onerror=()=>e(!1),t.onload=()=>e(!0)})};this.metadata.logoName=e.target.value,t(this.metadata.logoName).then(e=>{e?(this.metadata.logoPreview=this.metadata.logoName,z["a"].success("Successfully loaded logo image.")):(this.metadata.logoPreview="error",z["a"].error("Failed to load logo image."))})}onFileChange(e){const t=e.target.files[0];this.logoImage=t,this.metadata.logoPreview=URL.createObjectURL(t),this.metadata.logoName=t.name}updateEditorPath(){"editor"!==this.$route.name&&(this.$router.beforeEach(e=>{"editor"===e.name&&(e.meta.data={configLang:this.configLang,configs:this.configs,configFileStructure:this.configFileStructure,sourceCounts:this.sourceCounts,metadata:this.metadata,slides:this.slides,existing:this.editExisting,unsavedChanges:this.unsavedChanges})}),this.$router.push({name:"editor",params:{uid:this.uuid}}))}checkRequiredFields(){return this.reqFields.uuid=!!this.uuid,!Object.values(this.reqFields).some(e=>!e)||(z["a"].error("Please fill out the required fields before proceeding."),!1)}continueToEditor(){var e;this.checkRequiredFields()&&(this.loadExisting?void 0!==this.configs[this.configLang]&&this.uuid===(null===(e=this.configFileStructure)||void 0===e?void 0:e.uuid)?(this.loadEditor=!0,this.saveMetadata(!1),this.updateEditorPath()):z["a"].error("No config exists for storylines product."):this.uuid?this.generateNewConfig():(z["a"].error("Missing required field: UUID"),this.error=!0))}updateSaveStatus(e){this.unsavedChanges=e}refreshConfig(){this.loadExisting?(this.reloadExisting=!0,this.loadExisting=!1,this.generateRemoteConfig()):(this.reloadExisting=!1,this.generateNewConfig())}beforeRouteLeave(e,t,i){const a="editor"===this.$route.name,l="Leave the page? Changes made may not be saved.";this.unsavedChanges&&a&&!window.confirm(l)?i(!1):i()}};Object(n["a"])([Object(r["b"])({default:!0})],cr.prototype,"editExisting",void 0),cr=Object(n["a"])([Object(r["a"])({components:{Editor:or,"confirmation-modal":nt,"metadata-content":Ln,spinner:A["a"],"slide-editor":io,"slide-toc":Uo,"vue-final-modal":U["a"]}})],cr);var dr=cr;i("a95a");const ur=d()(dr,[["render",R]]);var mr=ur;const pr={key:0},hr={class:"block py-20 align-middle text-center h-full",style:{margin:"0 auto"}},br={key:1},gr={key:0,class:"storyramp-app bg-white"},fr={id:"story-header",class:"story-header sticky top-0 flex border-b border-black bg-gray-200 py-2 px-2 justify-between"},vr={class:"w-mobile-full truncate"},Or={class:"font-semibold text-lg m-1"},jr={class:"w-full mx-auto pb-10",id:"story"},Vr={class:"p-8 pt-2 text-right text-sm"},yr=["href"],Sr=Object(a["createElementVNode"])("a",{href:"https://github.com/ramp4-pcar4/storylines-editor",target:"_NEW",class:"font-semibold text-blue-700"},"ramp4-pcar4/storylines-editor",-1),Cr={key:0,class:"storyramp-modified"};function xr(e,t,i,l,o,n){const r=Object(a["resolveComponent"])("spinner"),s=Object(a["resolveComponent"])("storylines-intro"),c=Object(a["resolveComponent"])("storylines-content");return"loading"===e.loadStatus?(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",pr,[Object(a["createElementVNode"])("div",hr,[Object(a["createVNode"])(r,{size:"120px",color:"#009cd1",style:{margin:"0 auto"}})])])):"loaded"===e.loadStatus?(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",br,[void 0!==e.config?(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",gr,[Object(a["createElementVNode"])("header",fr,[Object(a["createElementVNode"])("div",vr,[Object(a["createElementVNode"])("span",Or,Object(a["toDisplayString"])(e.config.title),1)])]),Object(a["createVNode"])(s,{config:e.config.introSlide,configFileStructure:e.configFileStructure},null,8,["config","configFileStructure"]),Object(a["createElementVNode"])("div",jr,[Object(a["createVNode"])(c,{config:e.config,configFileStructure:e.configFileStructure,lang:e.lang,plugin:!0,headerHeight:e.headerHeight,onStep:e.updateActiveIndex},null,8,["config","configFileStructure","lang","headerHeight","onStep"])]),Object(a["createElementVNode"])("footer",Vr,[Object(a["createTextVNode"])(" Context: "),Object(a["createElementVNode"])("a",{class:"text-blue-700 font-semibold",href:e.config.contextLink,target:"_NEW"},Object(a["toDisplayString"])(e.config.contextLabel),9,yr),Object(a["createTextVNode"])(" | "),Sr]),e.config.dateModified?(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",Cr,Object(a["toDisplayString"])(e.$t("story.date"))+" "+Object(a["toDisplayString"])(e.config.dateModified),1)):Object(a["createCommentVNode"])("",!0)])):Object(a["createCommentVNode"])("",!0)])):Object(a["createCommentVNode"])("",!0)}let Er=class extends r["c"]{constructor(){super(...arguments),this.config=void 0,this.configFileStructure=void 0,this.savedProduct=!1,this.loadStatus="loading",this.activeChapterIndex=-1,this.lang="en",this.headerHeight=0,this.uid=""}created(){const e=this.$route.params.uid,t=this.$route.params.lang;e?(this.savedProduct=!0,fetch(`http://localhost:6040/retrieve/${e}/${t}`).then(t=>{404===t.status?console.error(`There does not exist a saved product with UID ${e}.`):t.json().then(e=>{this.config=e,this.loadStatus="loaded",document.title=this.config.title+" - Canada.ca"})})):(this.config=window.props.config,this.configFileStructure=window.props.configFileStructure,this.loadStatus="loaded");const i=document.documentElement;i.setAttribute("lang",this.lang),this.$i18n.locale=this.lang}updateActiveIndex(e){this.activeChapterIndex=e;const t=document.getElementById("story-header");t&&(this.headerHeight=t.clientHeight)}};Er=Object(n["a"])([Object(r["a"])({components:{spinner:A["a"]}})],Er);var wr=Er;i("e1de");const kr=d()(wr,[["render",xr]]);var Nr=kr,Tr=i("6605");const _r=[{path:"/:lang/editor",name:"home",component:y,meta:{title:"editor.window.title"}},{path:"/:lang/editor/:uid",redirect:"/:lang/editor-metadata/:uid"},{path:"/:lang/editor-metadata",name:"metadataExisting",component:mr,props:{editExisting:!0},meta:{title:"editor.window.title"}},{path:"/:lang/editor-metadata",name:"metadataNew",component:mr,props:{editExisting:!1},meta:{title:"editor.window.title"}},{path:"/:lang/editor-metadata/:uid",component:mr,meta:{title:"editor.window.title"}},{path:"/:lang/editor-main/:uid",name:"editor",component:mr,props:!0,meta:{title:"editor.window.title"}},{path:"/:lang/editor-preview",component:Nr,name:"preview",props:!0,meta:{title:"story.window.title"}},{path:"/:lang/editor-preview/:uid",component:Nr,meta:{title:"story.window.title"}}],$r=Object(Tr["a"])({routes:_r,history:Object(Tr["b"])(),scrollBehavior:function(e){if(e.hash)return{selector:decodeURIComponent(e.hash),behavior:"smooth"}}});var Lr=$r,Ir=(i("38c8"),i("13d5"),i("9ca6"));const Mr=i("3d6d"),Br=document.documentElement.getAttribute("lang");function Dr(e){return e.reduce((e,t)=>(e.en[t.key]=t.enValue,e.fr[t.key]=t.frValue,e),{en:{},fr:{}})}const Fr=Object(Ir["a"])({legacy:!1,locale:Br||void 0,fallbackLocale:"en",globalInjection:!0,messages:Dr(Mr)});var Pr=i("ee2d"),Rr=i.n(Pr),Ar=(i("fefe"),i("603a")),Ur=i.n(Ar),zr=(i("fbc4"),i("3b16")),Wr=i.n(zr),qr=i("1487"),Hr=i.n(qr),Xr=(i("40e8"),i("c4e7")),Jr=(i("52df"),i("e748"),i("4452")),Gr=i.n(Jr),Zr=(i("e896"),i("c883")),Yr=i.n(Zr);i("91a9");Rr.a.lang.use("en-US",Wr.a),Rr.a.use(Ur.a,{Hljs:Hr.a});const Qr=Object(U["b"])(),Kr=Object(a["createApp"])(m);Kr.use(Lr).use(Fr).use(Xr["a"],{directive:"tippy",component:"tippy"}).use(Gr.a).use(z["a"]).use(Yr.a).use(Rr.a).use(Qr),Kr.mount("#app")},d618:function(e,t,i){"use strict";i("c3a4")},daa0:function(e,t,i){},dd0c:function(e,t,i){},e1de:function(e,t,i){"use strict";i("518e")},e289:function(e,t,i){},ea6b:function(e){e.exports=JSON.parse('{"comment":"","version":"3.3.2","language":"fr","ui":{"title":"Carte interactive","fullscreen":true,"navBar":{"zoom":"buttons","extra":["fullscreen","geoLocator","home","help"]},"appBar":{"basemap":true},"help":{"folderName":"default"},"sideMenu":{"items":[["fullscreen","export","touch","help","about"]],"logo":false},"legend":{"allowImport":false,"isOpen":{"large":true,"medium":false,"small":false}}},"services":{"proxyUrl":"https://maps.canada.ca/wmsproxy/ws/wmsproxy/executeFromProxy","exportMapUrl":"https://maps-cartes.ec.gc.ca/arcgis/rest/services/Utilities/PrintingTools/GPServer/Export%20Web%20Map%20Task","export":{"title":{"value":""},"map":{},"mapElements":{},"legend":{},"footnote":{"value":""}},"search":{"settings":{"categories":["CITY","HAM","IR","LTM","MUN1","MUN2","PROV","STM","TERR","TOWN","UTM","VILG","UNP"],"sortOrder":["CITY","HAM","IR","LTM","MUN1","MUN2","PROV","STM","TERR","TOWN","UTM","VILG","UNP"],"maxResults":1000,"officialOnly":true},"serviceUrls":{"geoNames":"https://geogratis.gc.ca/services/geoname/fr/geonames.json","geoLocation":"https://geogratis.gc.ca/services/geolocation/fr/locate?q=","geoSuggest":"https://geogratis.gc.ca/services/geolocation/fr/suggest?q=","provinces":"https://geogratis.gc.ca/services/geoname/fr/codes/province.json","types":"https://geogratis.gc.ca/services/geoname/fr/codes/concise.json"}}},"map":{"initialBasemapId":"baseNrCan","components":{"geoSearch":{"enabled":true,"showGraphic":true,"showInfo":true},"mouseInfo":{"enabled":true,"spatialReference":{"wkid":4326}},"northArrow":{"enabled":false},"basemap":{"enabled":true},"overviewMap":{"enabled":true,"layerType":"imagery"},"scaleBar":{"enabled":true}},"extentSets":[{"id":"EXT_NRCAN_Lambert_3978","default":{"xmax":3049492,"xmin":-5281457,"ymax":4482193,"ymin":-983440},"spatialReference":{"wkid":3978}},{"id":"EXT_ESRI_World_AuxMerc_3857","default":{"xmax":-5007771.626060756,"xmin":-16632697.354854,"ymax":10015875.184845109,"ymin":5022907.964742964},"spatialReference":{"wkid":102100,"latestWkid":3857}}],"lodSets":[{"id":"LOD_NRCAN_Lambert_3978","lods":[{"level":0,"resolution":38364.660062653464,"scale":145000000},{"level":1,"resolution":22489.62831258996,"scale":85000000},{"level":2,"resolution":13229.193125052918,"scale":50000000},{"level":3,"resolution":7937.5158750317505,"scale":30000000},{"level":4,"resolution":4630.2175937685215,"scale":17500000},{"level":5,"resolution":2645.8386250105837,"scale":10000000},{"level":6,"resolution":1587.5031750063501,"scale":6000000},{"level":7,"resolution":926.0435187537042,"scale":3500000},{"level":8,"resolution":529.1677250021168,"scale":2000000},{"level":9,"resolution":317.50063500127004,"scale":1200000},{"level":10,"resolution":185.20870375074085,"scale":700000},{"level":11,"resolution":111.12522225044451,"scale":420000},{"level":12,"resolution":66.1459656252646,"scale":250000},{"level":13,"resolution":38.36466006265346,"scale":145000},{"level":14,"resolution":22.48962831258996,"scale":85000},{"level":15,"resolution":13.229193125052918,"scale":50000},{"level":16,"resolution":7.9375158750317505,"scale":30000},{"level":17,"resolution":4.6302175937685215,"scale":17500}]},{"id":"LOD_ESRI_World_AuxMerc_3857","lods":[{"level":0,"resolution":19567.87924099992,"scale":73957190.948944},{"level":1,"resolution":9783.93962049996,"scale":36978595.474472},{"level":2,"resolution":4891.96981024998,"scale":18489297.737236},{"level":3,"resolution":2445.98490512499,"scale":9244648.868618},{"level":4,"resolution":1222.992452562495,"scale":4622324.434309},{"level":5,"resolution":611.4962262813797,"scale":2311162.217155},{"level":6,"resolution":305.74811314055756,"scale":1155581.108577},{"level":7,"resolution":152.87405657041106,"scale":577790.554289},{"level":8,"resolution":76.43702828507324,"scale":288895.277144},{"level":9,"resolution":38.21851414253662,"scale":144447.638572},{"level":10,"resolution":19.10925707126831,"scale":72223.819286},{"level":11,"resolution":9.554628535634155,"scale":36111.909643},{"level":12,"resolution":4.77731426794937,"scale":18055.954822},{"level":13,"resolution":2.388657133974685,"scale":9027.977411},{"level":14,"resolution":1.1943285668550503,"scale":4513.988705},{"level":15,"resolution":0.5971642835598172,"scale":2256.994353},{"level":16,"resolution":0.29858214164761665,"scale":1128.497176},{"level":17,"resolution":0.14929107082380833,"scale":564.248588},{"level":18,"resolution":0.07464553541190416,"scale":282.124294},{"level":19,"resolution":0.03732276770595208,"scale":141.062147},{"level":20,"resolution":0.01866138385297604,"scale":70.5310735}]}],"legend":{"type":"autopopulate"},"layers":[],"tileSchemas":[{"id":"EXT_NRCAN_Lambert_3978#LOD_NRCAN_Lambert_3978","name":"Lambert Maps","extentSetId":"EXT_NRCAN_Lambert_3978","lodSetId":"LOD_NRCAN_Lambert_3978","hasNorthPole":true},{"id":"EXT_ESRI_World_AuxMerc_3857#LOD_ESRI_World_AuxMerc_3857","name":"Web Mercator Maps","extentSetId":"EXT_ESRI_World_AuxMerc_3857","lodSetId":"LOD_ESRI_World_AuxMerc_3857"}],"baseMaps":[{"id":"baseNrCan","name":"Carte de base du Canada – transport (CBCT) avec étiquettes","description":"La carte de base du Canada – transport (CBCT) du Secteur des sciences de la Terre de Ressources naturelles Canada est un service Internet qui s\'adresse principalement aux utilisateurs et développeurs d\'applications cartographiques en ligne.","altText":"La carte de base du Canada – transport (CBCT)","layers":[{"id":"CBCT","layerType":"esriFeature","url":"https://maps-cartes.services.geo.ca/server2_serveur2/rest/services/BaseMaps/CBCT3978/MapServer"}],"tileSchemaId":"EXT_NRCAN_Lambert_3978#LOD_NRCAN_Lambert_3978"},{"id":"baseSimple","name":"Carte de base du Canada - simple","description":"La carte de base du Canada - simple","altText":"La carte de base du Canada - simple","layers":[{"id":"SMR","layerType":"esriFeature","url":"https://maps-cartes.services.geo.ca/server2_serveur2/rest/services/BaseMaps/Simple/MapServer"},{"id":"SMW","layerType":"esriFeature","url":"https://maps-cartes.services.geo.ca/server2_serveur2/rest/services/BaseMaps/CBMT_TXT_3978/MapServer"}],"tileSchemaId":"EXT_NRCAN_Lambert_3978#LOD_NRCAN_Lambert_3978"},{"id":"baseCBME_CBCE_HS_RO_3978","name":"Carte de base du Canada - élevation (CBCE)","description":"La carte de base du Canada - élevation (CBCE) du Secteur des sciences de la Terre de Ressources naturelles Canada est un service Internet qui s\'adresse principalement aux utilisateurs et développeurs d\'applications cartographiques en ligne.","altText":"La carte de base du Canada - élevation (CBCE)","layers":[{"id":"CBME_CBCE_HS_RO_3978","layerType":"esriFeature","url":"https://maps-cartes.services.geo.ca/server2_serveur2/rest/services/BaseMaps/CBME_CBCE_HS_RO_3978/MapServer"}],"tileSchemaId":"EXT_NRCAN_Lambert_3978#LOD_NRCAN_Lambert_3978"},{"id":"baseCBMT_CBCT_GEOM_3978","name":"Carte de base du Canada - transport (CBCT)","description":"La carte de base du Canada - transport (CBCT) du Secteur des sciences de la Terre de Ressources naturelles Canada est un service Internet qui s\'adresse principalement aux utilisateurs et développeurs d\'applications cartographiques en ligne.","altText":"La carte de base du Canada - transport (CBCT)","layers":[{"id":"CBMT_CBCT_GEOM_3978","layerType":"esriFeature","url":"https://maps-cartes.services.geo.ca/server2_serveur2/rest/services/BaseMaps/CBMT_CBCT_GEOM_3978/MapServer"}],"tileSchemaId":"EXT_NRCAN_Lambert_3978#LOD_NRCAN_Lambert_3978"},{"id":"baseEsriWorld","name":"Imagerie mondiale","description":"L\'imagerie mondiale fournit une imagerie satellitaire et aérienne dans de nombreuses régions du monde avec une résolution de 1 mètres et moins et des images satellitaires de résolution inférieure dans le monde entier.","altText":"L\'imagerie mondiale","layers":[{"id":"World_Imagery","layerType":"esriFeature","url":"https://services.arcgisonline.com/arcgis/rest/services/World_Imagery/MapServer"}],"tileSchemaId":"EXT_ESRI_World_AuxMerc_3857#LOD_ESRI_World_AuxMerc_3857"},{"id":"baseEsriPhysical","name":"Monde physique","description":"La carte du monde physique représente l\'aspect physique naturel de la Terre à 1.24 kilomètres par pixel pour le monde et à 500 mètres pour les États-Unis.","altText":"La carte du monde physique","layers":[{"id":"World_Physical_Map","layerType":"esriFeature","url":"https://services.arcgisonline.com/arcgis/rest/services/World_Physical_Map/MapServer"}],"tileSchemaId":"EXT_ESRI_World_AuxMerc_3857#LOD_ESRI_World_AuxMerc_3857"},{"id":"baseEsriRelief","name":"Monde en relief ombragé","description":"La carte du monde en relief ombragé représente l\'élévation de la surface de la terre comme un relief ombragé. Cette carte est utilisée comme couche de fond afin d\'ajouter un relief ombragé à d\'autres cartes SIG, comme la carte ArcGIS Online World Street Map.","altText":"La carte du monde en relief ombragé","layers":[{"id":"World_Shaded_Relief","layerType":"esriFeature","url":"https://services.arcgisonline.com/arcgis/rest/services/World_Shaded_Relief/MapServer"}],"tileSchemaId":"EXT_ESRI_World_AuxMerc_3857#LOD_ESRI_World_AuxMerc_3857"},{"id":"baseEsriStreet","name":"Monde routier","description":"La carte du monde routier présente des données au niveau des autoroutes pour le monde.","altText":"La carte du monde routier","layers":[{"id":"World_Street_Map","layerType":"esriFeature","url":"https://services.arcgisonline.com/arcgis/rest/services/World_Street_Map/MapServer"}],"tileSchemaId":"EXT_ESRI_World_AuxMerc_3857#LOD_ESRI_World_AuxMerc_3857"},{"id":"baseEsriTerrain","name":"Monde terrain","description":"La carte du monde terrain est conçue pour être utilisée comme une carte de base par les professionnels du SIG pour superposer d\'autres couches thématiques comme la démographie ou la couverture terrestre.","altText":"La carte du monde terrain","layers":[{"id":"World_Terrain_Base","layerType":"esriFeature","url":"https://services.arcgisonline.com/arcgis/rest/services/World_Terrain_Base/MapServer"}],"tileSchemaId":"EXT_ESRI_World_AuxMerc_3857#LOD_ESRI_World_AuxMerc_3857"},{"id":"baseEsriTopo","name":"Monde topographique","description":"La carte du monde topographique est conçue pour être utilisé comme une carte de base par les professionnels du SIG et comme une carte de référence par quiconque.","altText":"La carte du monde topographique","layers":[{"id":"World_Topo_Map","layerType":"esriFeature","url":"https://services.arcgisonline.com/arcgis/rest/services/World_Topo_Map/MapServer"}],"tileSchemaId":"EXT_ESRI_World_AuxMerc_3857#LOD_ESRI_World_AuxMerc_3857"}]}}')},ed05:function(e,t,i){},f944:function(e,t,i){}}]); -//# sourceMappingURL=chunk-common.73fa598f.js.map \ No newline at end of file diff --git a/advanced-config-editor/js/chunk-common.73fa598f.js.map b/advanced-config-editor/js/chunk-common.73fa598f.js.map deleted file mode 100644 index 4f436e1a..00000000 --- a/advanced-config-editor/js/chunk-common.73fa598f.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["webpack:///./src/components/editor/map-editor.vue?c470","webpack:///./src/components/editor/slide-editor.vue?5a39","webpack:///./src/components/editor/text-editor.vue?f424","webpack:///./src/components/editor/helpers/confirmation-modal.vue?d920","webpack:///./src/components/editor/slideshow-editor.vue?dd3a","webpack:///./src/lang/lang.csv","webpack:///./src/components/editor/helpers/video-preview.vue?ba86","webpack:///./src/components/editor/helpers/image-preview.vue?a760","webpack:///./src/components/editor/slide-toc.vue?933a","webpack:///./src/components/editor/editor.vue?c1aa","webpack:///./src/components/editor/image-editor.vue?0f92","webpack:///./src/components/editor/landing.vue?1abe","webpack:///./src/app.vue?b13b","webpack:///./src/components/editor/video-editor.vue?cad7","webpack:///./src/components/editor/metadata-editor.vue?7595","webpack:///./src/components/editor/helpers/chart-preview.vue?be2e","webpack:///./src/components/editor/chart-editor.vue?01a4","webpack:///./src/components/editor/dynamic-editor.vue?eb9d","webpack:///./src/app.vue?6e82","webpack:///./src/app.vue","webpack:///./src/app.vue?cab0","webpack:///./src/router/componentHooks.ts","webpack:///./src/components/editor/landing.vue?019b","webpack:///./src/components/editor/landing.vue","webpack:///./src/components/editor/landing.vue?d196","webpack:///./src/components/editor/metadata-editor.vue?a279","webpack:///./src/components/editor/slide-editor.vue?d81c","webpack:///./src/definitions.ts","webpack:///./src/components/editor/chart-editor.vue?3b5c","webpack:///./src/components/editor/helpers/chart-preview.vue?3b37","webpack:///./src/components/editor/helpers/chart-preview.vue","webpack:///./src/components/editor/helpers/chart-preview.vue?9be4","webpack:///./src/components/editor/helpers/confirmation-modal.vue?7578","webpack:///./src/components/editor/helpers/confirmation-modal.vue","webpack:///./src/components/editor/helpers/confirmation-modal.vue?7a7e","webpack:///./src/components/editor/chart-editor.vue","webpack:///./src/components/editor/chart-editor.vue?c3f9","webpack:///./src/components/editor/helpers/custom-editor.vue?1a6e","webpack:///./src/components/editor/helpers/custom-editor.vue","webpack:///./src/components/editor/helpers/custom-editor.vue?267c","webpack:///./src/components/editor/image-editor.vue?d200","webpack:///./src/components/editor/helpers/image-preview.vue?4408","webpack:///./src/components/editor/helpers/image-preview.vue","webpack:///./src/components/editor/helpers/image-preview.vue?88c4","webpack:///./src/components/editor/image-editor.vue","webpack:///./src/components/editor/image-editor.vue?2e57","webpack:///./src/components/editor/text-editor.vue?ef39","webpack:///./src/components/editor/text-editor.vue","webpack:///./src/components/editor/text-editor.vue?17bf","webpack:///./src/components/editor/map-editor.vue?72ba","webpack:///./src/components/editor/helpers/time-slider-editor.vue?44e1","webpack:///./src/components/editor/helpers/time-slider-editor.vue","webpack:///./src/components/editor/helpers/time-slider-editor.vue?434f","webpack:///./src/components/editor/map-editor.vue","webpack:///./src/components/editor/map-editor.vue?c2ed","webpack:///./src/components/editor/video-editor.vue?de78","webpack:///./src/components/editor/helpers/video-preview.vue?545b","webpack:///./src/components/editor/helpers/video-preview.vue","webpack:///./src/components/editor/helpers/video-preview.vue?f9de","webpack:///./src/components/editor/video-editor.vue","webpack:///./src/components/editor/video-editor.vue?f209","webpack:///./src/components/editor/slideshow-editor.vue?11ac","webpack:///./src/components/editor/slideshow-editor.vue","webpack:///./src/components/editor/slideshow-editor.vue?ba5a","webpack:///./src/components/editor/helpers/loading-page.vue?49c2","webpack:///./src/components/editor/helpers/loading-page.vue","webpack:///./src/components/editor/helpers/loading-page.vue?ec39","webpack:///./src/components/editor/dynamic-editor.vue?2aca","webpack:///./src/components/editor/dynamic-editor.vue","webpack:///./src/components/editor/dynamic-editor.vue?bfae","webpack:///./src/components/editor/slide-editor.vue","webpack:///./src/components/editor/slide-editor.vue?a04f","webpack:///./src/components/editor/slide-toc.vue?f139","webpack:///./src/components/editor/slide-toc.vue","webpack:///./src/components/editor/slide-toc.vue?e6ed","webpack:///./src/components/editor/helpers/metadata-content.vue?4d79","webpack:///./src/components/editor/helpers/metadata-content.vue","webpack:///./src/components/editor/helpers/metadata-content.vue?f1f6","webpack:///./src/components/editor/editor.vue?e4be","webpack:///./src/components/editor/editor.vue","webpack:///./src/components/editor/editor.vue?f9b7","webpack:///./src/components/editor/metadata-editor.vue","webpack:///./src/components/editor/metadata-editor.vue?356d","webpack:///./src/components/editor/preview.vue?f30c","webpack:///./src/components/editor/preview.vue","webpack:///./src/components/editor/preview.vue?ca3e","webpack:///./src/router/index.ts","webpack:///./src/lang/index.ts","webpack:///./src/main.ts","webpack:///./src/components/editor/helpers/time-slider-editor.vue?056d","webpack:///./src/components/editor/preview.vue?d57c"],"names":["res","columns","module","exports","_hoisted_1","id","class","render","_ctx","_cache","$props","$setup","$data","$options","_component_router_view","_resolveComponent","_openBlock","_createElementBlock","_createBlock","key","$route","path","App","Vue","onRouteUpdate","to","_to$params$lang","this","$i18n","locale","params","lang","document","title","$t","meta","__decorate","Watch","immediate","__exports__","registerHooks","_hoisted_2","_hoisted_3","_hoisted_4","_hoisted_5","_component_router_link","_createElementVNode","_createVNode","name","target","default","_withCtx","_toDisplayString","_","LandingV","_hoisted_6","_hoisted_7","_hoisted_8","viewBox","width","height","xmlns","d","_hoisted_9","_hoisted_10","_hoisted_11","_hoisted_12","_hoisted_13","_hoisted_14","_hoisted_15","_hoisted_16","slot","_hoisted_17","_component_spinner","_component_metadata_content","_component_confirmation_modal","_component_vue_final_modal","_component_editor","loadEditor","_createCommentVNode","_Fragment","editExisting","onClick","$event","swapLang","configLang","reqFields","_createTextVNode","_withDirectives","type","onInput","error","uuid","checkUuid","_normalizeClass","_vModelText","warning","args","generateRemoteConfig","loadStatus","size","color","metadata","onMetadataChanged","updateMetadata","onLogoChanged","onFileChange","onLogoSourceChanged","onLogoSourceInput","saveMetadata","$vfm","open","continueToEditor","message","onOk","configs","configFileStructure","sourceCounts","slides","saving","unsavedChanges","onSaveChanges","generateConfig","onSaveStatus","updateSaveStatus","onRefreshConfig","refreshConfig","ref","langModal","slotProps","_withModifiers","metadataModal","modalId","_withScopeId","n","_pushScopeId","_popScopeId","_createStaticVNode","_hoisted_18","_hoisted_20","_hoisted_21","_hoisted_22","_hoisted_23","_hoisted_25","_hoisted_26","_hoisted_27","_hoisted_28","_hoisted_29","_hoisted_30","_hoisted_31","_hoisted_32","_hoisted_33","_hoisted_34","_component_custom_editor","currentSlide","placeholder","selectSlide","slideIndex","disabled","isLast","rightOnly","determineEditorType","panel","panelIndex","onChange","_vModelCheckbox","length","advancedEditorView","saveChanges","newType","value","_renderList","Object","keys","editors","filter","editor","thing","config","onSlideEdit","$emit","onConfigEdited","slideConfig","save","_resolveDynamicComponent","uid","changePanelType","onCancel","cancelTypeChange","toggleRightOnly","PanelType","_component_ChartPreview","_component_draggable","num","chartConfigs","clearEditor","allowMany","modelValue","handle","onUpdate","onChartsEdited","item","element","index","chart","onEdit","editChart","onDelete","_vShow","idx","deleteChart","fill","_component_storylines_chart","_directive_tippy","_resolveDirective","content","placement","hideOnClick","animateFill","loading","chartConfig","chartIdx","onLoaded","loadChart","chartName","ChartPreviewV","constructor","modalEditor","undefined","mounted","chartOptions","_chartOptions$data","highed","ModalEditor","allowDone","features","importer","options","defaultChartOptions","newChart","JSON","parse","newName","text","alert","setTimeout","show","src","oldChart","data","csv","csvData","dataTable","loadCSV","convertSeriesToCSV","setAll","_chartOptions$chart","seriesData","series","_chartOptions$yAxis","yAxis","map","row","y","join","xAxis","_chartOptions$xAxis","_chartOptions$xAxis2","catoData","concat","categories","unshift","Prop","MetadataEditorV","close","Options","components","VueFinalModal","ChartEditorV","edited","ready","createNewChart","toString","charts","Slideshow","items","match","replace","chart_options","subtitle","credits","enabled","assign","thousandsSep","defaultTableData","chartInfo","chartSrc","file","stringify","push","findIndex","chartFile","oldName","remove","splice","forEach","Chart","ChartPreview","ConfirmationModalV","draggable","_component_json_editor","updatedConfig","mode","expandedOnStart","onJsonChange","json","onJsonSave","CustomEditorV","schemaUrl","jsonValidator","require","Validator","validator","storylinesSchema","fetch","then","schema","err","console","checkValidation","validate","valid","errors","Vue3JsonEditor","_component_ImagePreview","imagePreviews","dragging","isDragging","onDragover","onDragleave","onDrop","dropImages","multiple","imagePreviewsLoading","onImagesEdited","imageFile","deleteImage","altText","caption","slideshowCaption","alt","_renderSlot","$slots","ImagePreviewV","ImageEditorV","imagePreviewPromises","images","image","assetSrc","substring","indexOf","filename","assetFile","zip","async","URL","createObjectURL","Promise","all","e","filelist","Array","from","files","uploadSource","assets","imageSrc","dataTransfer","img","fileSource","revokeObjectURL","Image","_this$slideshowCaptio","ImagePreview","_component_v_md_editor","toolbar","TextEditorV","subsuper","menus","action","insert","selected","addLink","icon","style","_hoisted_19","_hoisted_24","_component_time_slider_editor","status","saveScrollguard","scrollguard","saveTimeSlider","usingTimeSlider","newFileName","createNewConfig","openEditor","timeSliderConf","timeSliderError","onTimeSliderChanged","onTimeSliderInput","range","start","attribute","layers","TimeSliderEditorV","MapEditorV","timeSlider","strippedFileName","split","_this$panel$timeSlide","_this$panel$timeSlide2","_this$panel$timeSlide3","_this$panel$timeSlide4","_this$panel$timeSlide5","_this$panel$timeSlide6","window","addEventListener","saveEditor","Date","getFullYear","validateTimeSlider","beforeDestroy","removeEventListener","rampConfig","defaultConfigEn","defaultConfigFr","configFile","iframe","getElementById","contentWindow","configname","stringResponse","checked","localStorage","RAMPconfig","property","layerId","trim","Number","some","val","isInteger","transform","_component_VideoPreview","videoPreview","onVideoEdited","dropVideo","videoType","uploadVideoUrl","videoPreviewLoading","fileType","deleteVideo","allowfullscreen","controls","kind","srclang","label","langs","VideoPreviewV","md","MarkdownIt","html","en","fr","expandTranscript","rawTranscript","transcriptContent","VideoEditorV","videoPreviewPromise","_this$videoPreviewPro","addUploadedFile","fileSrc","findFileType","fileName","lastIndexOf","ext","pop","extractYoutubeId","url","regExp","$refs","videoUrl","isYoutube","toLowerCase","includes","updateCaptions","updateTranscript","videoFileInput","transcript","VideoPreview","editingStatus","editItem","deleteItem","onTypeInput","newSlideType","startingConfig","saveItem","editingIdx","SlideshowEditorV","video","Text","dynamic","Dynamic","titleTag","children","slideshow","Map","Video","newSlideName","find","mapPanel","chartPanel","imagePanel","add","itemConfig","slideEditor","LoadingPageV","spinner","VueSpinnerOval","changePanel","switchSlide","removeSlide","idUsed","_vModelSelect","createNewSlide","editingSlide","DynamicEditorV","DynamicEditorV_1","userCreated","ch","slideshowPanel","videoPanel","newConfig","allCharts","every","allImages","slide","SlideEditorV","onSlideChange","prevType","removeSourceCounts","dynamicPanel","subPanel","typeSelector","deep","addNewSlide","delay","copyAllFromOtherLang","selectedForCopying","copyFromOtherLang","copySlide","moveUp","moveDown","SlideTocV","cloneDeep","deletedIndex","_this$slides$find","p","removeSourceHelper","_hoisted_35","_hoisted_36","_hoisted_37","_hoisted_38","_hoisted_39","_hoisted_40","metadataChanged","introTitle","introSubtitle","logoPreview","logoName","openFileSelector","removeLogo","logoAltText","contextLink","contextLabel","tocOrientation","dateModified","_document$getElementB","click","event","_component_slide_toc","_component_slide_editor","_Transition","_normalizeProps","_guardReactiveProps","preview","onSlidesUpdated","updateSlides","onSlidesEdited","onCustomSlideUpdated","updateCustomSlide","EditorV","logoImage","loadSlides","onMetadataEdited","created","beforeWindowUnload","observer","IntersectionObserver","classList","toggle","intersectionRatio","threshold","observe","querySelector","$nextTick","scrollTo","routeData","$router","resolve","previewTab","href","props","confirm","preventDefault","MetadataContentV","JSZip","axios","v4","uuidv4","loadExisting","reloadExisting","_this$$route$params$u","curDate","year","month","getMonth","padStart","day","getDate","_this$configs$this$co","existing","logo","introSlide","logoSrc","_this$configFileStruc","logoFile","File","blob","generateNewConfig","configZip","configHelper","_this$logoImage","otherLang","formattedOtherLangConfig","formattedConfigFile","configFileStructureHelper","_this$uuid","Message","clearConfig","loadAsync","catch","findSources","_configs$lang","_configs$lang2","incrementSourceCount","panelSourceHelper","uploadLogo","assetsFolder","folder","chartsFolder","rampConfigFolder","loadConfig","useConfig","_this$configFileStruc2","_this$configFileStruc3","enFile","frFile","_this$uuid2","success","updateEditorPath","_config$introSlide$lo","_config$introSlide$lo2","_this$configFileStruc4","_this$configFileStruc5","_this$configFileStruc6","generateAsync","formData","FormData","append","headers","post","finally","publish","_this$logoImage2","_this$configFileStruc7","_this$logoImage3","mainEditor","beforeRouteUpdate","next","isImgUrl","onerror","onload","uploadedFile","beforeEach","checkRequiredFields","values","field","_this$configFileStruc8","payload","beforeRouteLeave","curEditor","confirmationMessage","Editor","_component_storylines_intro","_component_storylines_content","plugin","headerHeight","onStep","updateActiveIndex","StoryPreviewV","savedProduct","activeChapterIndex","documentElement","setAttribute","headerH","clientHeight","routes","component","redirect","router","createRouter","history","createWebHashHistory","scrollBehavior","hash","selector","decodeURIComponent","behavior","rows","getAttribute","fold","reduce","enValue","frValue","i18n","createI18n","legacy","fallbackLocale","globalInjection","messages","VueMarkdownEditor","use","enUS","githubTheme","Hljs","hljs","vfm","createVfm","app","createApp","VueTippy","directive","HighchartsVue","StorylinesViewer","mount"],"mappings":"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","file":"js/chunk-common.73fa598f.js","sourcesContent":["export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./map-editor.vue?vue&type=style&index=0&id=681c9c6b&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./slide-editor.vue?vue&type=style&index=0&id=4c97a990&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./text-editor.vue?vue&type=style&index=0&id=b0fb221e&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./confirmation-modal.vue?vue&type=style&index=0&id=4ed11748&scoped=true&lang=css\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./slideshow-editor.vue?vue&type=style&index=0&id=5b666f60&lang=scss&scoped=true\"","var res = [{\"key\":\"chapters.title\",\"enValue\":\"Chapters\",\"enValid\":\"1\",\"frValue\":\"Chapitres\",\"frValid\":\"1\"},{\"key\":\"chapters.return\",\"enValue\":\"Return to top\",\"enValid\":\"1\",\"frValue\":\"Retournez en haut\",\"frValid\":\"1\"},{\"key\":\"chapters.menu\",\"enValue\":\"Toggle menu\",\"enValid\":\"1\",\"frValue\":\"Menu à bascule\",\"frValid\":\"1\"},{\"key\":\"scrollguard.desc\",\"enValue\":\"Use ctrl + scroll to zoom the map\",\"enValid\":\"1\",\"frValue\":\"Utilisez les touches Ctrl et + pour faire un zoom de la carte\",\"frValid\":\"1\"},{\"key\":\"story.window.title\",\"enValue\":\"RAMP Storylines\",\"enValid\":\"1\",\"frValue\":\"RAMP Storylines\",\"frValid\":\"0\"},{\"key\":\"story.date\",\"enValue\":\"Date modified:\",\"enValid\":\"1\",\"frValue\":\"Date de modification:\",\"frValid\":\"1\"},{\"key\":\"story.error\",\"enValue\":\"An error occurred while loading this Storylines product. See developer console for more information.\",\"enValid\":\"1\",\"frValue\":\"Une erreur est survenue pendant le chargement ce synopsis produit. Voir la console du promoteur pour obtenir de plus amples renseignements.\",\"frValid\":\"1\"},{\"key\":\"image.fullscreen\",\"enValue\":\"Full Screen\",\"enValid\":\"1\",\"frValue\":\"Plein Écran\",\"frValid\":\"1\"},{\"key\":\"dynamic.back\",\"enValue\":\"Back\",\"enValid\":\"1\",\"frValue\":\"Retour\",\"frValid\":\"0\"},{\"key\":\"dynamic.textSection\",\"enValue\":\"Text Section\",\"enValid\":\"1\",\"frValue\":\"Section de texte\",\"frValid\":\"1\"},{\"key\":\"dynamic.panel.collection\",\"enValue\":\"Panel Collection\",\"enValid\":\"1\",\"frValue\":\"Collection de panneaux\",\"frValid\":\"1\"},{\"key\":\"dynamic.panel.id\",\"enValue\":\"Panel ID\",\"enValid\":\"1\",\"frValue\":\"No d’identification du panneau\",\"frValid\":\"1\"},{\"key\":\"dynamic.panel.type\",\"enValue\":\"Panel Type\",\"enValid\":\"1\",\"frValue\":\"Type de panneaux\",\"frValid\":\"1\"},{\"key\":\"dynamic.panel.actions\",\"enValue\":\"Panel Actions\",\"enValid\":\"1\",\"frValue\":\"Actions du panneau\",\"frValid\":\"1\"},{\"key\":\"dynamic.panel.idTaken\",\"enValue\":\"Panel ID is already\",\"enValid\":\"1\",\"frValue\":\"Le nom du panneau est déjà utilisé\",\"frValid\":\"1\"},{\"key\":\"dynamic.panel.editor\",\"enValue\":\"Panel Editor:\",\"enValid\":\"1\",\"frValue\":\"Éditeur de panneaux:\",\"frValid\":\"1\"},{\"key\":\"timeslider.expand\",\"enValue\":\"Expand\",\"enValid\":\"1\",\"frValue\":\"Développer\",\"frValid\":\"1\"},{\"key\":\"timeslider.minimize\",\"enValue\":\"Minimize\",\"enValid\":\"1\",\"frValue\":\"Réduire\",\"frValid\":\"1\"},{\"key\":\"timeslider.play\",\"enValue\":\"Play\",\"enValid\":\"1\",\"frValue\":\"Lecture\",\"frValid\":\"1\"},{\"key\":\"timeslider.pause\",\"enValue\":\"Pause\",\"enValid\":\"1\",\"frValue\":\"Pause\",\"frValid\":\"1\"},{\"key\":\"fullscreen.activate\",\"enValue\":\"Enter Fullscreen\",\"enValid\":\"1\",\"frValue\":\"Afficher le mode plein écran\",\"frValid\":\"1\"},{\"key\":\"fullscreen.deactivate\",\"enValue\":\"Exit Fullscreen\",\"enValid\":\"1\",\"frValue\":\"Quitter le mode plein écran\",\"frValid\":\"1\"},{\"key\":\"editor.window.title\",\"enValue\":\"RAMP Storylines Editor\",\"enValid\":\"1\",\"frValue\":\"Éditeur de scénarios de la PCAR\",\"frValid\":\"1\"},{\"key\":\"editor.createProduct\",\"enValue\":\"Create New Storylines Product\",\"enValid\":\"1\",\"frValue\":\"Créer un nouveau produit de scénarios\",\"frValid\":\"1\"},{\"key\":\"editor.editProduct\",\"enValue\":\"Edit Existing Storylines Product\",\"enValid\":\"1\",\"frValue\":\"Modifier un produit de scénarios\",\"frValid\":\"1\"},{\"key\":\"editor.editMetadata\",\"enValue\":\"Edit Project Metadata\",\"enValid\":\"1\",\"frValue\":\"Modifier les métadonnées d’un projet\",\"frValid\":\"1\"},{\"key\":\"editor.productDetails\",\"enValue\":\"Storylines product details\",\"enValid\":\"1\",\"frValue\":\"Détails du produit de scénarios\",\"frValid\":\"1\"},{\"key\":\"editor.metadata.instructions\",\"enValue\":\"Fill in metadata details about your new Storylines product. Use the \\\"Preview\\\" button to see what your slides will look like.\",\"enValid\":\"1\",\"frValue\":\"Inscrivez les métadonnées de votre nouveau produit de scénario. Utilisez la fonction « Afficher l’aperçu » pour voir à quoi ressemblent vos diapositives.\",\"frValid\":\"1\"},{\"key\":\"editor.uuid\",\"enValue\":\"UUID\",\"enValid\":\"1\",\"frValue\":\"UUID\",\"frValid\":\"0\"},{\"key\":\"editor.uuid.exists\",\"enValue\":\"UUID already exists. Saving this will overwrite existing product.\",\"enValid\":\"1\",\"frValue\":\"L’IDUU existe déjà. Enregistrer ce produit écrasera le produit existant.\",\"frValid\":\"1\"},{\"key\":\"editor.title\",\"enValue\":\"Title\",\"enValid\":\"1\",\"frValue\":\"Titre\",\"frValid\":\"1\"},{\"key\":\"editor.logo\",\"enValue\":\"Logo\",\"enValid\":\"1\",\"frValue\":\"Logo\",\"frValid\":\"1\"},{\"key\":\"editor.logoPreview\",\"enValue\":\"Logo Preview\",\"enValid\":\"1\",\"frValue\":\"Aperçu du logo\",\"frValid\":\"1\"},{\"key\":\"editor.logoAltText\",\"enValue\":\"Logo Alt Text\",\"enValid\":\"1\",\"frValue\":\"Lien contextuel\",\"frValid\":\"1\"},{\"key\":\"editor.logoAltText.desc\",\"enValue\":\"For accessibility purposes, provide description text for the logo.\",\"enValid\":\"1\",\"frValue\":\"Pour des raisons d'accessibilité, fournissez un texte descriptif pour le logo.\",\"frValid\":\"0\"},{\"key\":\"editor.contextLink\",\"enValue\":\"Context Link\",\"enValid\":\"1\",\"frValue\":\"Lien contextuel\",\"frValid\":\"1\"},{\"key\":\"editor.contextLink.info\",\"enValue\":\"Context link shows up at the bottom of the page to provide additional resources for interested users.\",\"enValid\":\"1\",\"frValue\":\"Le lien contextuel apparaît au bas de la page et fournit des ressources supplémentaires aux utilisateurs intéressés.\",\"frValid\":\"1\"},{\"key\":\"editor.contextLabel\",\"enValue\":\"Context Label\",\"enValid\":\"1\",\"frValue\":\"Étiquette de contexte\",\"frValid\":\"1\"},{\"key\":\"editor.contextLabel.info\",\"enValue\":\"Context label shows up before the context link to explain what the link is for\",\"enValid\":\"1\",\"frValue\":\"L’étiquette de contexte apparaît avant le lien contextuel et explique à quoi sert le lien.\",\"frValid\":\"1\"},{\"key\":\"editor.dateModified\",\"enValue\":\"Date Modified\",\"enValid\":\"1\",\"frValue\":\"Date de modification\",\"frValid\":\"1\"},{\"key\":\"editor.load\",\"enValue\":\"Load\",\"enValid\":\"1\",\"frValue\":\"Charger\",\"frValid\":\"1\"},{\"key\":\"editor.browse\",\"enValue\":\"Browse\",\"enValid\":\"1\",\"frValue\":\"Parcourir\",\"frValid\":\"1\"},{\"key\":\"editor.remove\",\"enValue\":\"Remove\",\"enValid\":\"1\",\"frValue\":\"Supprimer\",\"frValid\":\"1\"},{\"key\":\"editor.back\",\"enValue\":\"Back\",\"enValid\":\"1\",\"frValue\":\"Retour\",\"frValid\":\"1\"},{\"key\":\"editor.next\",\"enValue\":\"Next\",\"enValid\":\"1\",\"frValue\":\"Suivant\",\"frValid\":\"1\"},{\"key\":\"editor.preview\",\"enValue\":\"Preview\",\"enValid\":\"1\",\"frValue\":\"Afficher l’aperçu\",\"frValid\":\"1\"},{\"key\":\"editor.confirm\",\"enValue\":\"Confirm\",\"enValid\":\"1\",\"frValue\":\"Confirmer\",\"frValid\":\"1\"},{\"key\":\"editor.cancel\",\"enValue\":\"Cancel\",\"enValid\":\"1\",\"frValue\":\"Annuler\",\"frValid\":\"1\"},{\"key\":\"editor.unsavedChanges\",\"enValue\":\"Unsaved changes\",\"enValid\":\"1\",\"frValue\":\"Modifications non enregistrées\",\"frValid\":\"1\"},{\"key\":\"editor.saveChanges\",\"enValue\":\"Save Changes\",\"enValid\":\"1\",\"frValue\":\"Enregistrer les modifications\",\"frValid\":\"1\"},{\"key\":\"editor.label.or\",\"enValue\":\"or\",\"enValid\":\"1\",\"frValue\":\"ou\",\"frValid\":\"1\"},{\"key\":\"editor.label.browse\",\"enValue\":\"browse\",\"enValid\":\"1\",\"frValue\":\"parcourir\",\"frValid\":\"1\"},{\"key\":\"editor.label.upload\",\"enValue\":\"to upload\",\"enValid\":\"1\",\"frValue\":\"téléverser\",\"frValid\":\"1\"},{\"key\":\"editor.savingChanges\",\"enValue\":\"Saving...\",\"enValid\":\"1\",\"frValue\":\"Enregistrement...\",\"frValid\":\"1\"},{\"key\":\"editor.resetChanges\",\"enValue\":\"Reset Changes\",\"enValid\":\"1\",\"frValue\":\"Annuler les modifications\",\"frValid\":\"1\"},{\"key\":\"editor.refreshChanges.modal\",\"enValue\":\"Are you sure you want to reload the product? All unsaved changes will be lost.\",\"enValid\":\"1\",\"frValue\":\"Voulez-vous vraiment recharger ce produit? Toute modification non enregistrée sera perdue.\",\"frValid\":\"1\"},{\"key\":\"editor.changeLang.modal\",\"enValue\":\"Are you sure you want to switch languages? Unsaved changes may be lost.\",\"enValid\":\"1\",\"frValue\":\"Voulez-vous vraiment changer de langue? Toute modification non enregistrée sera perdue.\",\"frValid\":\"1\"},{\"key\":\"editor.frenchConfig\",\"enValue\":\"View French Config\",\"enValid\":\"1\",\"frValue\":\"Afficher la configuration en français\",\"frValid\":\"1\"},{\"key\":\"editor.englishConfig\",\"enValue\":\"View English Config\",\"enValid\":\"1\",\"frValue\":\"Afficher la configuration en anglais\",\"frValid\":\"1\"},{\"key\":\"editor.returnToLanding\",\"enValue\":\"Return to Landing\",\"enValid\":\"1\",\"frValue\":\"Retour à la page d’accueil\",\"frValid\":\"1\"},{\"key\":\"editor.customConfig\",\"enValue\":\"Are you sure you want to overwrite slide config and save custom changes?\",\"enValid\":\"1\",\"frValue\":\"Are you sure you want to overwrite slide config and save custom changes?\",\"frValid\":\"0\"},{\"key\":\"editor.image.delete\",\"enValue\":\"Delete Image\",\"enValid\":\"1\",\"frValue\":\"Supprimer l'image\",\"frValid\":\"1\"},{\"key\":\"editor.image.label.drag\",\"enValue\":\"Drag your images here\",\"enValid\":\"1\",\"frValue\":\"Faites glisser vos images ici\",\"frValid\":\"1\"},{\"key\":\"editor.image.label.caption\",\"enValue\":\"Caption\",\"enValid\":\"1\",\"frValue\":\"Légende\",\"frValid\":\"1\"},{\"key\":\"editor.image.reorder\",\"enValue\":\"Click and drag to reorder images\",\"enValid\":\"1\",\"frValue\":\"Cliquez sur les images et faites-les glisser pour changer l’ordre.\",\"frValid\":\"1\"},{\"key\":\"editor.image.altTag\",\"enValue\":\"Alt tag\",\"enValid\":\"1\",\"frValue\":\"Texte de remplacement\",\"frValid\":\"1\"},{\"key\":\"editor.image.slideshowCaption\",\"enValue\":\"Slideshow Caption\",\"enValid\":\"1\",\"frValue\":\"Légende du diaporama\",\"frValid\":\"1\"},{\"key\":\"editor.image.loadingError\",\"enValue\":\"An error occurred when trying to load image\",\"enValid\":\"1\",\"frValue\":\"Une erreur est survenue lors du chargement de l’image.\",\"frValid\":\"1\"},{\"key\":\"editor.video.title\",\"enValue\":\"Video Title\",\"enValid\":\"1\",\"frValue\":\"Titre de la vidéo\",\"frValid\":\"1\"},{\"key\":\"editor.video.label.drag\",\"enValue\":\"Drag your video file here\",\"enValid\":\"1\",\"frValue\":\"Glissez votre fichier vidéo ici\",\"frValid\":\"1\"},{\"key\":\"editor.video.label.captions\",\"enValue\":\"Video Captions\",\"enValid\":\"1\",\"frValue\":\"Sous-titres\",\"frValid\":\"1\"},{\"key\":\"editor.video.label.transcript\",\"enValue\":\"Video Transcript\",\"enValid\":\"1\",\"frValue\":\"Transcription\",\"frValid\":\"1\"},{\"key\":\"editor.video.label.upload\",\"enValue\":\"Upload\",\"enValid\":\"1\",\"frValue\":\"Télécharger\",\"frValid\":\"1\"},{\"key\":\"editor.video.delete\",\"enValue\":\"Delete Video\",\"enValid\":\"1\",\"frValue\":\"Supprimer la vidéo\",\"frValid\":\"1\"},{\"key\":\"editor.video.pasteUrl\",\"enValue\":\"Paste the URL to a video\",\"enValid\":\"1\",\"frValue\":\"Paste the URL to a video\",\"frValid\":\"0\"},{\"key\":\"editor.chart.delete\",\"enValue\":\"Delete Chart\",\"enValid\":\"1\",\"frValue\":\"Supprimer le graphique\",\"frValid\":\"1\"},{\"key\":\"editor.chart.label.name\",\"enValue\":\"Name\",\"enValid\":\"1\",\"frValue\":\"Nom\",\"frValid\":\"1\"},{\"key\":\"editor.chart.label.edit\",\"enValue\":\"Edit\",\"enValid\":\"1\",\"frValue\":\"Éditer\",\"frValid\":\"1\"},{\"key\":\"editor.chart.label.empty\",\"enValue\":\"Empty\",\"enValid\":\"1\",\"frValue\":\"Vide\",\"frValid\":\"1\"},{\"key\":\"editor.chart.label.create\",\"enValue\":\"Add new chart\",\"enValid\":\"1\",\"frValue\":\"Ajouter un nouveau graphique\",\"frValid\":\"1\"},{\"key\":\"editor.chart.label.info\",\"enValue\":\"Interactive chart\",\"enValid\":\"1\",\"frValue\":\"[FR] Interactive chart\",\"frValid\":\"0\"},{\"key\":\"editor.chart.label.nameExists\",\"enValue\":\"There is already an existing chart with the name {name}.\",\"enValid\":\"1\",\"frValue\":\"There is already an existing chart with the name {name}.\",\"frValid\":\"0\"},{\"key\":\"editor.chart.label.info\",\"enValue\":\"Interactive charts ({num})\",\"enValid\":\"1\",\"frValue\":\"Graphiques interactifs ({num})\",\"frValid\":\"1\"},{\"key\":\"editor.chart.delete.confirm\",\"enValue\":\"Are you sure you want to delete the chart {name}?\",\"enValid\":\"1\",\"frValue\":\"Voulez-vous vraiment supprimer le graphique {nom}?\",\"frValid\":\"1\"},{\"key\":\"editor.map.title\",\"enValue\":\"Map title\",\"enValid\":\"1\",\"frValue\":\"Titre de la carte\",\"frValid\":\"1\"},{\"key\":\"editor.map.edit.cancel\",\"enValue\":\"Cancel editing\",\"enValid\":\"1\",\"frValue\":\"Annuler les modifications\",\"frValid\":\"1\"},{\"key\":\"editor.map.edit\",\"enValue\":\"Map editor\",\"enValid\":\"1\",\"frValue\":\"Éditeur de carte\",\"frValid\":\"1\"},{\"key\":\"editor.map.label.name\",\"enValue\":\"Map config name\",\"enValid\":\"1\",\"frValue\":\"Nom de la configuration de la carte\",\"frValid\":\"1\"},{\"key\":\"editor.map.label.create\",\"enValue\":\"Create New Configuration File\",\"enValid\":\"1\",\"frValue\":\"Créer un nouveau fichier de configuration\",\"frValid\":\"1\"},{\"key\":\"editor.map.label.edit\",\"enValue\":\"Edit Map Configuration\",\"enValid\":\"1\",\"frValue\":\"Modifier la configuration de la carte\",\"frValid\":\"1\"},{\"key\":\"editor.map.scrollguard.enable\",\"enValue\":\"Enable scrollguard\",\"enValid\":\"1\",\"frValue\":\"Activer le contrôle du défilement\",\"frValid\":\"1\"},{\"key\":\"editor.map.timeslider.enable\",\"enValue\":\"Enable Time Slider:\",\"enValid\":\"1\",\"frValue\":\"Activer le curseur temporel:\",\"frValid\":\"1\"},{\"key\":\"editor.map.timeslider.edit\",\"enValue\":\"Edit Time Slider Config\",\"enValid\":\"1\",\"frValue\":\"Modifier la configuration du curseur temporel\",\"frValid\":\"1\"},{\"key\":\"editor.map.timeslider.range\",\"enValue\":\"Range:\",\"enValid\":\"1\",\"frValue\":\"Tranche:\",\"frValid\":\"1\"},{\"key\":\"editor.map.timeslider.start\",\"enValue\":\"Start:\",\"enValid\":\"1\",\"frValue\":\"Début:\",\"frValid\":\"1\"},{\"key\":\"editor.map.timeslider.attribute\",\"enValue\":\"Attribute:\",\"enValid\":\"1\",\"frValue\":\"Caractéristique:\",\"frValid\":\"1\"},{\"key\":\"editor.map.timeslider.layers\",\"enValue\":\"(OPTIONAL) Comma separated Layer IDs:\",\"enValid\":\"1\",\"frValue\":\"(OPTIONAL) Comma separated Layer IDs:\",\"frValid\":\"0\"},{\"key\":\"editor.map.timeslider.to\",\"enValue\":\"to\",\"enValid\":\"1\",\"frValue\":\"to\",\"frValid\":\"0\"},{\"key\":\"editor.map.timeslider.warning\",\"enValue\":\"⚠️Warning! Please ensure that:\",\"enValid\":\"1\",\"frValue\":\"⚠️Avertissement! Veuillez vous assurer de ce qui suit:\",\"frValid\":\"1\"},{\"key\":\"editor.map.timeslider.warning.bullet1\",\"enValue\":\"All range and start values are positive integers.\",\"enValid\":\"1\",\"frValue\":\"Toutes les valeurs de la tranche et du début sont des nombres entiers positifs.\",\"frValid\":\"1\"},{\"key\":\"editor.map.timeslider.warning.bullet2\",\"enValue\":\"The \\\"to\\\" value is greater than or equal to the \\\"from\\\" value.\",\"enValid\":\"1\",\"frValue\":\"La valeur « À » est supérieure ou égale à la valeur « De ».\",\"frValid\":\"1\"},{\"key\":\"editor.map.timeslider.warning.end\",\"enValue\":\"Otherwise, your time slider config cannot be saved.\",\"enValid\":\"1\",\"frValue\":\"Autrement\",\"frValid\":\" la configuration du curseur temporel ne pourra pas être enregistrée.\"},{\"key\":\"editor.slideshow.label.info\",\"enValue\":\"Slideshow items ({num})\",\"enValid\":\"1\",\"frValue\":\"[FR] Slideshow items ({num})\",\"frValid\":\"0\"},{\"key\":\"editor.slideshow.label.create\",\"enValue\":\"Add new item\",\"enValid\":\"1\",\"frValue\":\"[FR] Add new item\",\"frValid\":\"0\"},{\"key\":\"editor.slideshow.label.edit\",\"enValue\":\"Edit existing item\",\"enValid\":\"1\",\"frValue\":\"[FR] Edit existing item\",\"frValid\":\"0\"},{\"key\":\"editor.slideshow.label.type\",\"enValue\":\"Type\",\"enValid\":\"1\",\"frValue\":\"[FR] Type\",\"frValid\":\"0\"},{\"key\":\"editor.slideshow.label.add\",\"enValue\":\"Add\",\"enValid\":\"1\",\"frValue\":\"[FR] Add\",\"frValid\":\"0\"},{\"key\":\"editor.slides.title\",\"enValue\":\"SLIDES\",\"enValid\":\"1\",\"frValue\":\"DIAPOSITIVES\",\"frValid\":\"1\"},{\"key\":\"editor.slides.addSlide\",\"enValue\":\"New Slide\",\"enValid\":\"1\",\"frValue\":\"Nouvelle diapositive\",\"frValid\":\"1\"},{\"key\":\"editor.slides.copyFromLang\",\"enValue\":\"Copy slides from the other language\",\"enValid\":\"1\",\"frValue\":\"Copier les diapositives de l’autre langue\",\"frValid\":\"1\"},{\"key\":\"editor.slides.deleteSlide.confirm\",\"enValue\":\"Are you sure you want to delete the slide {title}?\",\"enValid\":\"1\",\"frValue\":\"Voulez-vous vraiment supprimer la diapositive {titre}?\",\"frValid\":\"1\"},{\"key\":\"editor.slides.changeSlide.confirm\",\"enValue\":\"Are you sure you want to change the slide {title}? All unsaved progress will be lost.\",\"enValid\":\"1\",\"frValue\":\"Voulez-vous vraiment modifier la diapositive {titre}? Toute modification non enregistrée sera perdue.\",\"frValid\":\"1\"},{\"key\":\"editor.slides.makeFull\",\"enValue\":\"Make the right panel the full slide\",\"enValid\":\"1\",\"frValue\":\"Mettre la diapositive complète dans le panneau de droite\",\"frValid\":\"1\"},{\"key\":\"editor.slides.copyAll\",\"enValue\":\"Copy all\",\"enValid\":\"1\",\"frValue\":\"Copier tout\",\"frValid\":\"1\"},{\"key\":\"editor.slides.copy\",\"enValue\":\"Copy\",\"enValid\":\"1\",\"frValue\":\"Copier\",\"frValid\":\"1\"},{\"key\":\"editor.slides.slide\",\"enValue\":\"Slide\",\"enValid\":\"1\",\"frValue\":\"Diapositive\",\"frValid\":\"1\"},{\"key\":\"editor.slides.previousSlide\",\"enValue\":\"Previous slide\",\"enValid\":\"1\",\"frValue\":\"Diapositive précédente\",\"frValid\":\"1\"},{\"key\":\"editor.slides.nextSlide\",\"enValue\":\"Next slide\",\"enValid\":\"1\",\"frValue\":\"Diapositive suivante\",\"frValid\":\"1\"},{\"key\":\"editor.slides.leftPanel\",\"enValue\":\"Left panel\",\"enValid\":\"1\",\"frValue\":\"Panneau de gauche\",\"frValid\":\"1\"},{\"key\":\"editor.slides.rightPanel\",\"enValue\":\"Right panel\",\"enValid\":\"1\",\"frValue\":\"Panneau de droite\",\"frValid\":\"1\"},{\"key\":\"editor.slides.fullscreenPanel\",\"enValue\":\"Fullscreen panel\",\"enValid\":\"1\",\"frValue\":\"Panneau plein écran\",\"frValid\":\"1\"},{\"key\":\"editor.slides.advanced\",\"enValue\":\"Advanced\",\"enValid\":\"1\",\"frValue\":\"Avancé\",\"frValid\":\"0\"},{\"key\":\"editor.slides.contentType\",\"enValue\":\"Content type\",\"enValid\":\"1\",\"frValue\":\"Type de contenu\",\"frValid\":\"1\"},{\"key\":\"editor.slides.content\",\"enValue\":\"Content\",\"enValid\":\"1\",\"frValue\":\"Contenu\",\"frValid\":\"1\"},{\"key\":\"editor.slides.select\",\"enValue\":\"Please select a slide to edit\",\"enValid\":\"1\",\"frValue\":\"Veuillez sélectionner une diapositive à modifier\",\"frValid\":\"1\"},{\"key\":\"editor.slides.panel.body\",\"enValue\":\"Panel body\",\"enValid\":\"1\",\"frValue\":\"Corps du panneau\",\"frValid\":\"1\"},{\"key\":\"editor.slides.panel.title\",\"enValue\":\"Panel title\",\"enValid\":\"1\",\"frValue\":\"Titre du panneau\",\"frValid\":\"1\"},{\"key\":\"editor.slides.intro\",\"enValue\":\"Intro subtitle\",\"enValid\":\"1\",\"frValue\":\"Sous-titre de l’introduction\",\"frValid\":\"1\"},{\"key\":\"editor.slides.title\",\"enValue\":\"Intro title\",\"enValid\":\"1\",\"frValue\":\"Titre de l’introduction\",\"frValid\":\"1\"},{\"key\":\"editor.tocOrientation\",\"enValue\":\"Table of Contents Orientation\",\"enValid\":\"1\",\"frValue\":\"Orientation de la table des matières\",\"frValid\":\"0\"},{\"key\":\"editor.tocOrientation.info\",\"enValue\":\"The table of contents orientation will be set to vertical in mobile view.\",\"enValid\":\"1\",\"frValue\":\"L'orientation de la table des matières sera définie sur verticale en vue mobile.\",\"frValid\":\"0\"},{\"key\":\"editor.tocOrientation.vertical\",\"enValue\":\"Vertical\",\"enValid\":\"1\",\"frValue\":\"Vertical\",\"frValid\":\"0\"},{\"key\":\"editor.tocOrientation.horizontal\",\"enValue\":\"Horizontal\",\"enValid\":\"1\",\"frValue\":\"Horizontal\",\"frValid\":\"0\"}];res.columns = [\"key\",\"enValue\",\"enValid\",\"frValue\",\"frValid\"];module.exports = res;","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./video-preview.vue?vue&type=style&index=0&id=2d1c87e5&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./image-preview.vue?vue&type=style&index=0&id=5bdf84fc&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./slide-toc.vue?vue&type=style&index=0&id=33456e0a&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./editor.vue?vue&type=style&index=0&id=ec080f10&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./image-editor.vue?vue&type=style&index=0&id=39ccfdb7&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./landing.vue?vue&type=style&index=0&id=79d08e02&lang=scss\"","export * from \"-!../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../node_modules/vue-loader-v16/dist/stylePostLoader.js!../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../node_modules/cache-loader/dist/cjs.js??ref--1-0!../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./app.vue?vue&type=style&index=0&id=7370f27a&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./video-editor.vue?vue&type=style&index=0&id=996fd9c6&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./metadata-editor.vue?vue&type=style&index=0&id=adaf72ca&lang=scss\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./chart-preview.vue?vue&type=style&index=0&id=1df36a82&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./chart-editor.vue?vue&type=style&index=0&id=0daaeefc&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./dynamic-editor.vue?vue&type=style&index=0&id=93f60e24&lang=scss\"","import { resolveComponent as _resolveComponent, openBlock as _openBlock, createBlock as _createBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = {\n id: \"app\",\n class: \"storyramp-app bg-white\"\n}\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_router_view = _resolveComponent(\"router-view\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_openBlock(), _createBlock(_component_router_view, {\n key: _ctx.$route.path\n }))\n ]))\n}","\nimport { Vue, Watch } from 'vue-property-decorator';\nimport { RouteLocationNormalized } from 'vue-router';\n\nexport default class App extends Vue {\n @Watch('$route', { immediate: true })\n onRouteUpdate(to: RouteLocationNormalized): void {\n this.$i18n.locale = (to.params.lang as string) ?? 'en';\n if (to.params.lang) {\n document.title = this.$t(to.meta.title);\n }\n }\n}\n","import { render } from \"./app.vue?vue&type=template&id=7370f27a&ts=true\"\nimport script from \"./app.vue?vue&type=script&lang=ts\"\nexport * from \"./app.vue?vue&type=script&lang=ts\"\n\nimport \"./app.vue?vue&type=style&index=0&id=7370f27a&lang=scss\"\n\nimport exportComponent from \"/home/runner/work/storylines-editor/storylines-editor/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { Vue } from 'vue-class-component';\n\n// register router hooks\nVue.registerHooks(['beforeRouterEnter', 'beforeRouteLeave', 'beforeRouteUpdate']);\n","import { toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, createVNode as _createVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = { class: \"flex justify-center\" }\nconst _hoisted_2 = { class: \"home-btn-container border-4 border-gray-400 border-solid m-24\" }\nconst _hoisted_3 = { class: \"text-2xl font-bold\" }\nconst _hoisted_4 = { class: \"home-btn-container border-4 border-gray-400 border-solid m-24\" }\nconst _hoisted_5 = { class: \"text-2xl font-bold\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_router_link = _resolveComponent(\"router-link\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createVNode(_component_router_link, {\n to: { name: 'metadataNew' },\n class: \"flex justify-center h-full w-full\",\n target: \"\"\n }, {\n default: _withCtx(() => [\n _createElementVNode(\"button\", _hoisted_3, \"+ \" + _toDisplayString(_ctx.$t('editor.createProduct')), 1)\n ]),\n _: 1\n })\n ]),\n _createElementVNode(\"div\", _hoisted_4, [\n _createVNode(_component_router_link, {\n to: { name: 'metadataExisting' },\n class: \"flex justify-center h-full w-full\",\n target: \"\"\n }, {\n default: _withCtx(() => [\n _createElementVNode(\"button\", _hoisted_5, _toDisplayString(_ctx.$t('editor.editProduct')), 1)\n ]),\n _: 1\n })\n ])\n ]))\n}","\nimport { Vue } from 'vue-property-decorator';\n\nexport default class LandingV extends Vue {}\n","import { render } from \"./landing.vue?vue&type=template&id=79d08e02&ts=true\"\nimport script from \"./landing.vue?vue&type=script&lang=ts\"\nexport * from \"./landing.vue?vue&type=script&lang=ts\"\n\nimport \"./landing.vue?vue&type=style&index=0&id=79d08e02&lang=scss\"\n\nimport exportComponent from \"/home/runner/work/storylines-editor/storylines-editor/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createTextVNode as _createTextVNode, vModelText as _vModelText, normalizeClass as _normalizeClass, withDirectives as _withDirectives, resolveComponent as _resolveComponent, createVNode as _createVNode, withCtx as _withCtx, Fragment as _Fragment, withModifiers as _withModifiers, createBlock as _createBlock } from \"vue\"\n\nconst _hoisted_1 = { class: \"editor-container\" }\nconst _hoisted_2 = { class: \"px-20 py-5\" }\nconst _hoisted_3 = { class: \"flex\" }\nconst _hoisted_4 = { class: \"flex text-2xl font-bold mb-5\" }\nconst _hoisted_5 = { class: \"border py-5 w-5/6\" }\nconst _hoisted_6 = {\n key: 0,\n class: \"text-red-500\"\n}\nconst _hoisted_7 = {\n key: 0,\n class: \"text-yellow-500 rounded p-1 ml-2\"\n}\nconst _hoisted_8 = /*#__PURE__*/_createElementVNode(\"span\", { class: \"align-middle inline-block mr-1 pb-1 fill-current\" }, [\n /*#__PURE__*/_createElementVNode(\"svg\", {\n \"clip-rule\": \"evenodd\",\n \"fill-rule\": \"evenodd\",\n \"stroke-linejoin\": \"round\",\n \"stroke-miterlimit\": \"2\",\n viewBox: \"0 0 24 24\",\n width: \"18\",\n height: \"18\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, [\n /*#__PURE__*/_createElementVNode(\"path\", {\n d: \"m2.095 19.886 9.248-16.5c.133-.237.384-.384.657-.384.272 0 .524.147.656.384l9.248 16.5c.064.115.096.241.096.367 0 .385-.309.749-.752.749h-18.496c-.44 0-.752-.36-.752-.749 0-.126.031-.252.095-.367zm9.907-6.881c-.414 0-.75.336-.75.75v3.5c0 .414.336.75.75.75s.75-.336.75-.75v-3.5c0-.414-.336-.75-.75-.75zm-.002-3c-.552 0-1 .448-1 1s.448 1 1 1 1-.448 1-1-.448-1-1-1z\",\n \"fill-rule\": \"nonzero\"\n })\n ])\n], -1)\nconst _hoisted_9 = { class: \"align-center inline-block select-none\" }\nconst _hoisted_10 = {\n key: 2,\n class: \"inline-flex align-middle mb-1\"\n}\nconst _hoisted_11 = /*#__PURE__*/_createElementVNode(\"br\", null, null, -1)\nconst _hoisted_12 = { class: \"mb-4\" }\nconst _hoisted_13 = { class: \"flex mt-8\" }\nconst _hoisted_14 = { class: \"ml-auto\" }\nconst _hoisted_15 = [\"onClick\"]\nconst _hoisted_16 = {\n slot: \"header\",\n class: \"text-lg font-bold\"\n}\nconst _hoisted_17 = { class: \"w-full flex justify-end\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_spinner = _resolveComponent(\"spinner\")!\n const _component_metadata_content = _resolveComponent(\"metadata-content\")!\n const _component_router_link = _resolveComponent(\"router-link\")!\n const _component_confirmation_modal = _resolveComponent(\"confirmation-modal\")!\n const _component_vue_final_modal = _resolveComponent(\"vue-final-modal\")!\n const _component_editor = _resolveComponent(\"editor\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (!_ctx.loadEditor)\n ? (_openBlock(), _createElementBlock(_Fragment, { key: 0 }, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"div\", _hoisted_3, [\n _createElementVNode(\"div\", _hoisted_4, _toDisplayString(_ctx.editExisting ? _ctx.$t('editor.editProduct') : _ctx.$t('editor.createProduct')), 1),\n _createElementVNode(\"button\", {\n onClick: _cache[0] || (_cache[0] = ($event: any) => (_ctx.swapLang()))\n }, _toDisplayString(_ctx.configLang === 'en' ? _ctx.$t('editor.frenchConfig') : _ctx.$t('editor.englishConfig')), 1)\n ]),\n _createElementVNode(\"div\", _hoisted_5, [\n _createElementVNode(\"label\", null, [\n ('uuid' in _ctx.reqFields)\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_6, \"*\"))\n : _createCommentVNode(\"\", true),\n _createTextVNode(\" \" + _toDisplayString(_ctx.$t('editor.uuid')) + \":\", 1)\n ]),\n _withDirectives(_createElementVNode(\"input\", {\n type: \"text\",\n onInput: _cache[1] || (_cache[1] = ($event: any) => {\n _ctx.error = false;\n _ctx.reqFields.uuid = true;\n _ctx.checkUuid();\n }),\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = ($event: any) => ((_ctx.uuid) = $event)),\n class: _normalizeClass([\"w-1/3\", _ctx.error || !_ctx.reqFields.uuid ? 'input-error' : ''])\n }, null, 34), [\n [_vModelText, _ctx.uuid]\n ]),\n (_ctx.warning)\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_7, [\n _hoisted_8,\n _createElementVNode(\"span\", _hoisted_9, _toDisplayString(_ctx.$t('editor.uuid.exists')), 1)\n ]))\n : _createCommentVNode(\"\", true),\n (_ctx.editExisting)\n ? (_openBlock(), _createElementBlock(\"button\", {\n key: 1,\n onClick: _cache[3] || (_cache[3] = \n//@ts-ignore\n(...args) => (_ctx.generateRemoteConfig && _ctx.generateRemoteConfig(...args))),\n class: _normalizeClass([\"bg-black text-white hover:bg-gray-800\", _ctx.error ? 'input-error' : ''])\n }, _toDisplayString(_ctx.$t('editor.load')), 3))\n : _createCommentVNode(\"\", true),\n (_ctx.loadStatus === 'loading')\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_10, [\n _createVNode(_component_spinner, {\n size: \"24px\",\n color: \"#009cd1\",\n class: \"mx-2 my-auto\"\n })\n ]))\n : _createCommentVNode(\"\", true)\n ]),\n _hoisted_11,\n _createElementVNode(\"div\", _hoisted_12, [\n _createElementVNode(\"h3\", null, _toDisplayString(_ctx.$t('editor.productDetails')), 1),\n _createElementVNode(\"p\", null, _toDisplayString(_ctx.$t('editor.metadata.instructions')), 1)\n ]),\n _createVNode(_component_metadata_content, {\n metadata: _ctx.metadata,\n onMetadataChanged: _ctx.updateMetadata,\n onLogoChanged: _ctx.onFileChange,\n onLogoSourceChanged: _ctx.onLogoSourceInput\n }, null, 8, [\"metadata\", \"onMetadataChanged\", \"onLogoChanged\", \"onLogoSourceChanged\"])\n ]),\n _createElementVNode(\"div\", _hoisted_13, [\n (_ctx.editExisting)\n ? (_openBlock(), _createElementBlock(\"button\", {\n key: 0,\n onClick: _cache[4] || (_cache[4] = ($event: any) => (_ctx.saveMetadata(true))),\n class: \"pl-8\"\n }, _toDisplayString(_ctx.$t('editor.saveChanges')), 1))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"div\", _hoisted_14, [\n _createVNode(_component_router_link, {\n to: { name: 'home' },\n target: \"\"\n }, {\n default: _withCtx(() => [\n _createElementVNode(\"button\", null, _toDisplayString(_ctx.$t('editor.back')), 1)\n ]),\n _: 1\n }),\n _createElementVNode(\"button\", {\n onClick: _cache[5] || (_cache[5] = ($event: any) => (!_ctx.warning ? _ctx.continueToEditor() : _ctx.$vfm.open(`confirm-uuid-overwrite`))),\n class: \"bg-black text-white px-8\"\n }, _toDisplayString(_ctx.$t('editor.next')), 1),\n _createVNode(_component_confirmation_modal, {\n name: `confirm-uuid-overwrite`,\n message: _ctx.$t(`Are you sure you want to overwrite product '${_ctx.uuid}'?`),\n onOk: _cache[6] || (_cache[6] = ($event: any) => (_ctx.continueToEditor()))\n }, null, 8, [\"message\"])\n ])\n ])\n ], 64))\n : _createCommentVNode(\"\", true),\n (_ctx.loadEditor && _ctx.loadStatus === 'loaded')\n ? (_openBlock(), _createBlock(_component_editor, {\n key: 1,\n configs: _ctx.configs,\n configFileStructure: _ctx.configFileStructure,\n sourceCounts: _ctx.sourceCounts,\n metadata: _ctx.metadata,\n slides: _ctx.slides,\n configLang: _ctx.configLang,\n saving: _ctx.saving,\n unsavedChanges: _ctx.unsavedChanges,\n onSaveChanges: _ctx.generateConfig,\n onSaveStatus: _ctx.updateSaveStatus,\n onRefreshConfig: _ctx.refreshConfig,\n ref: \"mainEditor\"\n }, {\n langModal: _withCtx((slotProps) => [\n _createElementVNode(\"button\", {\n onClick: _withModifiers(($event: any) => (slotProps.unsavedChanges ? _ctx.$vfm.open(`change-lang`) : _ctx.swapLang()), [\"stop\"])\n }, _toDisplayString(_ctx.configLang === 'en' ? _ctx.$t('editor.frenchConfig') : _ctx.$t('editor.englishConfig')), 9, _hoisted_15),\n _createVNode(_component_confirmation_modal, {\n name: `change-lang`,\n message: _ctx.$t('editor.changeLang.modal'),\n onOk: _cache[7] || (_cache[7] = ($event: any) => (_ctx.swapLang()))\n }, null, 8, [\"message\"])\n ]),\n metadataModal: _withCtx(() => [\n _createVNode(_component_vue_final_modal, {\n modalId: \"metadata-edit-modal\",\n \"content-class\": \"flex flex-col max-h-full overflow-y-auto max-w-xl mx-4 p-4 bg-white border rounded-lg space-y-2\",\n class: \"flex justify-center items-center\"\n }, {\n default: _withCtx(() => [\n _createElementVNode(\"h2\", _hoisted_16, _toDisplayString(_ctx.$t('editor.editMetadata')), 1),\n _createVNode(_component_metadata_content, {\n metadata: _ctx.metadata,\n onMetadataChanged: _ctx.updateMetadata,\n onLogoChanged: _ctx.onFileChange,\n onLogoSourceChanged: _ctx.onLogoSourceInput\n }, null, 8, [\"metadata\", \"onMetadataChanged\", \"onLogoChanged\", \"onLogoSourceChanged\"]),\n _createElementVNode(\"div\", _hoisted_17, [\n _createElementVNode(\"button\", {\n class: \"bg-black text-white hover:bg-gray-800\",\n onClick: _cache[8] || (_cache[8] = ($event: any) => (_ctx.saveMetadata(false)))\n }, \" Done \")\n ])\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"configs\", \"configFileStructure\", \"sourceCounts\", \"metadata\", \"slides\", \"configLang\", \"saving\", \"unsavedChanges\", \"onSaveChanges\", \"onSaveStatus\", \"onRefreshConfig\"]))\n : _createCommentVNode(\"\", true)\n ]))\n}","import { createElementVNode as _createElementVNode, vModelText as _vModelText, withDirectives as _withDirectives, toDisplayString as _toDisplayString, withModifiers as _withModifiers, vModelCheckbox as _vModelCheckbox, openBlock as _openBlock, createElementBlock as _createElementBlock, normalizeClass as _normalizeClass, createCommentVNode as _createCommentVNode, renderList as _renderList, Fragment as _Fragment, resolveComponent as _resolveComponent, createBlock as _createBlock, resolveDynamicComponent as _resolveDynamicComponent, createVNode as _createVNode, createStaticVNode as _createStaticVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-4c97a990\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"sticky top-20 h-auto self-start flex-grow m-5\" }\nconst _hoisted_2 = { key: 0 }\nconst _hoisted_3 = { class: \"flex\" }\nconst _hoisted_4 = { class: \"flex flex-col\" }\nconst _hoisted_5 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"label\", null, \"Slide title:\", -1))\nconst _hoisted_6 = { class: \"flex\" }\nconst _hoisted_7 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", { class: \"ml-auto\" }, null, -1))\nconst _hoisted_8 = [\"disabled\"]\nconst _hoisted_9 = [\"disabled\"]\nconst _hoisted_10 = { class: \"flex mt-3\" }\nconst _hoisted_11 = { class: \"mx-2 font-bold\" }\nconst _hoisted_12 = [\"disabled\"]\nconst _hoisted_13 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"br\", null, null, -1))\nconst _hoisted_14 = {\n key: 0,\n class: \"flex border-b border-black\"\n}\nconst _hoisted_15 = /*#__PURE__*/_createStaticVNode(\"\", 2)\nconst _hoisted_17 = { class: \"align-middle inline-block pl-1\" }\nconst _hoisted_18 = /*#__PURE__*/_createStaticVNode(\"\", 2)\nconst _hoisted_20 = { class: \"align-middle inline-block pl-1\" }\nconst _hoisted_21 = { class: \"align-middle inline-block pl-1\" }\nconst _hoisted_22 = {\n key: 1,\n class: \"border-b border-black\"\n}\nconst _hoisted_23 = /*#__PURE__*/_createStaticVNode(\"\", 2)\nconst _hoisted_25 = { class: \"align-middle inline-block pl-1\" }\nconst _hoisted_26 = { class: \"align-middle inline-block pl-1\" }\nconst _hoisted_27 = { class: \"flex mt-4\" }\nconst _hoisted_28 = { class: \"font-bold text-xl\" }\nconst _hoisted_29 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", { class: \"ml-auto flex-grow\" }, null, -1))\nconst _hoisted_30 = {\n key: 0,\n class: \"flex flex-col mr-8\"\n}\nconst _hoisted_31 = { class: \"text-left text-lg\" }\nconst _hoisted_32 = [\"value\"]\nconst _hoisted_33 = [\"value\"]\nconst _hoisted_34 = {\n key: 1,\n class: \"flex h-full mt-4 justify-center text-gray-600 text-xl\"\n}\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_custom_editor = _resolveComponent(\"custom-editor\")!\n const _component_confirmation_modal = _resolveComponent(\"confirmation-modal\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (!!_ctx.currentSlide)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_2, [\n _createElementVNode(\"div\", _hoisted_3, [\n _createElementVNode(\"div\", _hoisted_4, [\n _hoisted_5,\n _createElementVNode(\"div\", _hoisted_6, [\n _withDirectives(_createElementVNode(\"input\", {\n type: \"text\",\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((_ctx.currentSlide.title) = $event)),\n placeholder: \"Add a title\",\n class: \"w-2/3\"\n }, null, 512), [\n [_vModelText, _ctx.currentSlide.title]\n ]),\n _hoisted_7,\n _createElementVNode(\"button\", {\n onClick: _cache[1] || (_cache[1] = _withModifiers(($event: any) => (_ctx.selectSlide(_ctx.slideIndex - 1)), [\"stop\"])),\n disabled: _ctx.slideIndex === 0,\n class: \"border border-black\"\n }, _toDisplayString(_ctx.$t('editor.slides.previousSlide')), 9, _hoisted_8),\n _createElementVNode(\"button\", {\n onClick: _cache[2] || (_cache[2] = _withModifiers(($event: any) => (_ctx.selectSlide(_ctx.slideIndex + 1)), [\"stop\"])),\n disabled: _ctx.isLast,\n class: \"border border-black\"\n }, _toDisplayString(_ctx.$t('editor.slides.nextSlide')), 9, _hoisted_9)\n ]),\n _createElementVNode(\"div\", _hoisted_10, [\n _createElementVNode(\"span\", _hoisted_11, _toDisplayString(_ctx.$t('editor.slides.makeFull')), 1),\n _withDirectives(_createElementVNode(\"input\", {\n type: \"checkbox\",\n class: \"rounded-none cursor-pointer w-4 h-4\",\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = ($event: any) => ((_ctx.rightOnly) = $event)),\n disabled: _ctx.rightOnly && _ctx.determineEditorType(_ctx.currentSlide.panel[_ctx.panelIndex]) === 'dynamic',\n onChange: _cache[4] || (_cache[4] = _withModifiers(($event: any) => (_ctx.$vfm.open(`right-only-${_ctx.slideIndex}`)), [\"stop\"]))\n }, null, 40, _hoisted_12), [\n [_vModelCheckbox, _ctx.rightOnly]\n ])\n ])\n ])\n ]),\n _hoisted_13,\n (_ctx.currentSlide.panel.length === 2)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_14, [\n _createElementVNode(\"button\", {\n onClick: _cache[5] || (_cache[5] = \n () => {\n _ctx.panelIndex = 0;\n _ctx.advancedEditorView = false;\n _ctx.saveChanges();\n }\n ),\n class: _normalizeClass([\"border-t border-l border-r\", _ctx.panelIndex == 0 && !_ctx.advancedEditorView ? 'border-black' : 'border-white'])\n }, [\n _hoisted_15,\n _createElementVNode(\"span\", _hoisted_17, _toDisplayString(_ctx.$t('editor.slides.leftPanel')), 1)\n ], 2),\n _createElementVNode(\"button\", {\n onClick: _cache[6] || (_cache[6] = \n () => {\n _ctx.panelIndex = 1;\n _ctx.advancedEditorView = false;\n _ctx.saveChanges();\n }\n ),\n class: _normalizeClass([\"border-t border-l border-r\", _ctx.panelIndex == 1 && !_ctx.advancedEditorView ? 'border-black' : 'border-white'])\n }, [\n _hoisted_18,\n _createElementVNode(\"span\", _hoisted_20, _toDisplayString(_ctx.$t('editor.slides.rightPanel')), 1)\n ], 2),\n _createElementVNode(\"button\", {\n onClick: _cache[7] || (_cache[7] = \n () => {\n _ctx.advancedEditorView = true;\n _ctx.saveChanges();\n }\n ),\n class: _normalizeClass([\"border-t border-l border-r\", _ctx.advancedEditorView ? 'border-black' : 'border-white'])\n }, [\n _createElementVNode(\"span\", _hoisted_21, _toDisplayString(_ctx.$t('editor.slides.advanced')), 1)\n ], 2)\n ]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_22, [\n _createElementVNode(\"button\", {\n onClick: _cache[8] || (_cache[8] = \n () => {\n _ctx.advancedEditorView = false;\n _ctx.saveChanges();\n }\n ),\n class: _normalizeClass([\"border-t border-l border-r\", !_ctx.advancedEditorView ? 'border-black' : 'border-white'])\n }, [\n _hoisted_23,\n _createElementVNode(\"span\", _hoisted_25, _toDisplayString(_ctx.$t('editor.slides.fullscreenPanel')), 1)\n ], 2),\n _createElementVNode(\"button\", {\n onClick: _cache[9] || (_cache[9] = \n () => {\n _ctx.advancedEditorView = true;\n _ctx.saveChanges();\n }\n ),\n class: _normalizeClass([\"border-t border-l border-r\", _ctx.advancedEditorView ? 'border-black' : 'border-white'])\n }, [\n _createElementVNode(\"span\", _hoisted_26, _toDisplayString(_ctx.$t('editor.slides.advanced')), 1)\n ], 2)\n ])),\n _createElementVNode(\"div\", null, [\n _createElementVNode(\"div\", _hoisted_27, [\n _createElementVNode(\"span\", _hoisted_28, _toDisplayString(_ctx.$t('editor.slides.content')) + \":\", 1),\n _hoisted_29,\n ((_ctx.panelIndex === 1 && !_ctx.advancedEditorView) || _ctx.rightOnly)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_30, [\n _createElementVNode(\"label\", _hoisted_31, _toDisplayString(_ctx.$t('editor.slides.contentType')) + \":\", 1),\n _createElementVNode(\"select\", {\n ref: \"typeSelector\",\n onInput: _cache[10] || (_cache[10] = ($event: any) => {\n _ctx.$vfm.open(`change-slide-${_ctx.slideIndex}`);\n _ctx.newType = ($event.target as HTMLInputElement).value;\n }),\n value: _ctx.determineEditorType(_ctx.currentSlide.panel[_ctx.panelIndex])\n }, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(Object.keys(_ctx.editors).filter((editor) => editor !== 'loading'), (thing) => {\n return (_openBlock(), _createElementBlock(\"option\", {\n key: thing,\n value: thing\n }, _toDisplayString(thing), 9, _hoisted_33))\n }), 128))\n ], 40, _hoisted_32)\n ]))\n : _createCommentVNode(\"\", true)\n ]),\n (_ctx.advancedEditorView)\n ? (_openBlock(), _createBlock(_component_custom_editor, {\n key: 0,\n ref: \"editor\",\n config: _ctx.currentSlide,\n lang: _ctx.lang,\n slideIndex: _ctx.slideIndex,\n onSlideEdit: _cache[11] || (_cache[11] = ($event: any) => (_ctx.$emit('slide-edit'))),\n onConfigEdited: _cache[12] || (_cache[12] = (slideConfig, save = false) => _ctx.$emit('custom-slide-updated', slideConfig, save))\n }, null, 8, [\"config\", \"lang\", \"slideIndex\"]))\n : (_openBlock(), _createBlock(_resolveDynamicComponent(_ctx.editors[_ctx.determineEditorType(_ctx.currentSlide.panel[_ctx.panelIndex])]), {\n ref: \"editor\",\n key: _ctx.panelIndex + _ctx.determineEditorType(_ctx.currentSlide.panel[_ctx.panelIndex]),\n panel: _ctx.currentSlide.panel[_ctx.panelIndex],\n configFileStructure: _ctx.configFileStructure,\n lang: _ctx.lang,\n uid: _ctx.uid,\n sourceCounts: _ctx.sourceCounts,\n onSlideEdit: _cache[13] || (_cache[13] = ($event: any) => (_ctx.$emit('slide-edit')))\n }, null, 40, [\"panel\", \"configFileStructure\", \"lang\", \"uid\", \"sourceCounts\"]))\n ])\n ]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_34, [\n _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('editor.slides.select')), 1)\n ])),\n _createVNode(_component_confirmation_modal, {\n name: `change-slide-${_ctx.slideIndex}`,\n message: _ctx.$t('editor.slides.changeSlide.confirm', { title: _ctx.currentSlide.title }),\n onOk: _cache[14] || (_cache[14] = ($event: any) => (_ctx.changePanelType(_ctx.determineEditorType(_ctx.currentSlide.panel[_ctx.panelIndex]), _ctx.newType))),\n onCancel: _ctx.cancelTypeChange\n }, null, 8, [\"name\", \"message\", \"onCancel\"]),\n _createVNode(_component_confirmation_modal, {\n name: `right-only-${_ctx.slideIndex}`,\n message: _ctx.$t('editor.slides.changeSlide.confirm', { title: _ctx.currentSlide.title }),\n onOk: _cache[15] || (_cache[15] = ($event: any) => (_ctx.toggleRightOnly())),\n onCancel: _cache[16] || (_cache[16] = ($event: any) => (_ctx.rightOnly = !_ctx.rightOnly))\n }, null, 8, [\"name\", \"message\"])\n ]))\n}","import JSZip from 'jszip';\n\nexport interface StoryRampConfig {\n title: string;\n lang: string;\n introSlide: Intro;\n slides: Slide[];\n contextLink: string;\n contextLabel: string;\n tocOrientation: string;\n dateModified: string;\n}\n\nexport interface ConfigFileStructure {\n uuid: string;\n zip: JSZip;\n configs: { [key: string]: StoryRampConfig };\n assets: {\n [key: string]: JSZip;\n };\n charts: {\n [key: string]: JSZip;\n };\n rampConfig: {\n [key: string]: JSZip;\n };\n}\n\nexport interface SourceCounts {\n [key: string]: number;\n}\n\nexport interface MetadataContent {\n title: string;\n introTitle: string;\n introSubtitle: string;\n logoPreview: string;\n logoName: string;\n logoAltText: string;\n contextLink: string;\n contextLabel: string;\n tocOrientation: string;\n dateModified: string;\n}\n\n// unofficial interface: add properties as needed (just to make TS warnings disappear)\nexport interface Highchart {\n toString(): string;\n}\n\nexport interface Validator {\n addSchema(): void;\n validate(json: string, schema: string): any;\n}\n\nexport interface DQVOptions {\n title: string;\n subtitle: string;\n xAxisLabel: string;\n yAxisLabel: string;\n width?: number;\n height?: number;\n export: boolean;\n colours?: string[];\n credits: boolean;\n type: string;\n}\n\nexport interface PieSeriesData {\n name: string;\n data: PieDataRow[];\n}\n\nexport interface PieDataRow {\n name: string;\n y?: number;\n}\n\nexport interface LineSeriesData {\n name: string;\n data: number[];\n}\n\nexport interface DQVChartConfig {\n chart: {\n type: string;\n };\n title: {\n text: string;\n };\n credits?: {\n enabled: boolean;\n };\n subtitle?: {\n text: string;\n };\n yAxis?: {\n title: {\n text: string;\n };\n };\n xAxis?: {\n title: {\n text: string;\n };\n categories: [];\n };\n data?: {\n csvURL: string;\n enablePolling: boolean;\n csv?: string;\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n plotOptions?: any;\n exporting?: {\n buttons: {\n contextButton: {\n menuItems: string[];\n };\n };\n enabled: boolean;\n };\n series?: PieSeriesData | LineSeriesData[];\n}\n\nexport interface Intro {\n logo: {\n src: string;\n altText?: string;\n };\n title: string;\n subtitle: string;\n blurb?: string;\n}\n\nexport interface Slide {\n title: string;\n // tuple definition to restrict array size\n // panel: [BasePanel, BasePanel | undefined];\n panel: BasePanel[];\n}\n\nexport enum PanelType {\n Text = 'text',\n Image = 'image',\n Map = 'map',\n Chart = 'chart',\n Video = 'video',\n Audio = 'audio',\n Slideshow = 'slideshow',\n Dynamic = 'dynamic',\n Loading = 'loading'\n}\n\nexport interface BasePanel {\n type: string;\n width?: number;\n}\n\nexport interface TextPanel extends BasePanel {\n type: PanelType.Text;\n title: string;\n titleTag?: string;\n content: string; // in md format\n}\n\nexport interface MapPanel extends BasePanel {\n type: PanelType.Map;\n config: string;\n fullscreen?: boolean;\n timeSlider?: TimeSliderConfig;\n title: string;\n scrollguard: boolean;\n}\nexport interface TimeSliderConfig {\n range: number[];\n start: number[];\n attribute: string;\n layers?: string[];\n}\n\nexport interface DynamicPanel extends BasePanel {\n type: PanelType.Dynamic;\n title: string;\n titleTag?: string;\n content: string;\n children: DynamicChildItem[];\n}\n\nexport interface DynamicChildItem {\n id: string;\n panel: BasePanel;\n}\n\nexport interface ImagePanel extends BasePanel {\n type: PanelType.Image;\n src: string;\n width?: number;\n height?: number;\n fullscreen?: boolean;\n altText?: string;\n caption?: string;\n}\n\nexport interface VideoPanel extends BasePanel {\n type: PanelType.Video;\n title: string;\n width?: number;\n height?: number;\n src: string;\n videoType: string;\n caption?: string;\n transcript?: string;\n}\n\nexport interface AudioPanel extends BasePanel {\n type: PanelType.Audio;\n src: string;\n caption?: string;\n}\n\nexport interface SlideshowPanel extends BasePanel {\n type: PanelType.Slideshow;\n items: Array;\n loop?: boolean;\n caption?: string;\n userCreated?: boolean; // used to determine whether this was automatically converted to slideshow or not\n}\n\nexport interface ChartPanel extends BasePanel {\n type: PanelType.Chart;\n src: string;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n config?: any;\n name?: string;\n options?: DQVOptions;\n}\n\nexport interface ChartConfig {\n src: string;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n config?: any;\n name?: string;\n options?: DQVOptions;\n}\n\nexport interface ImageFile {\n id: string;\n src: string;\n altText: string;\n caption?: string;\n width?: number;\n height?: number;\n}\n\nexport interface VideoFile {\n id: string;\n title: string;\n src: string;\n videoType: 'local' | 'external' | 'YouTube';\n caption?: string;\n transcript?: string;\n width?: number;\n height?: number;\n}\n\nexport interface DefaultConfigs {\n text: TextPanel;\n slideshow: SlideshowPanel;\n chart: ChartPanel;\n dynamic: DynamicPanel;\n map: MapPanel;\n video: VideoPanel;\n image: ImagePanel;\n}\n","import { toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, resolveComponent as _resolveComponent, createBlock as _createBlock, withCtx as _withCtx, createVNode as _createVNode, vShow as _vShow, withDirectives as _withDirectives, renderList as _renderList, Fragment as _Fragment } from \"vue\"\n\nconst _hoisted_1 = { class: \"block\" }\nconst _hoisted_2 = { class: \"flex items-center\" }\nconst _hoisted_3 = { class: \"font-bold px-4\" }\nconst _hoisted_4 = [\"disabled\"]\nconst _hoisted_5 = { class: \"flex items-center\" }\nconst _hoisted_6 = /*#__PURE__*/_createElementVNode(\"svg\", {\n height: \"18px\",\n width: \"18px\",\n viewBox: \"0 0 23 21\",\n xmlns: \"http://www.w3.org/2000/svg\"\n}, [\n /*#__PURE__*/_createElementVNode(\"path\", { d: \"M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z\" })\n], -1)\nconst _hoisted_7 = { class: \"px-2\" }\nconst _hoisted_8 = /*#__PURE__*/_createElementVNode(\"hr\", { class: \"border-solid border-t-2 border-gray-300 my-2\" }, null, -1)\nconst _hoisted_9 = {\n key: 0,\n class: \"m-4\"\n}\nconst _hoisted_10 = { class: \"italic text-gray-400\" }\nconst _hoisted_11 = { class: \"flex flex-wrap list-none\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_ChartPreview = _resolveComponent(\"ChartPreview\")!\n const _component_draggable = _resolveComponent(\"draggable\")!\n const _component_confirmation_modal = _resolveComponent(\"confirmation-modal\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"span\", _hoisted_3, _toDisplayString(_ctx.$t('editor.chart.label.info', {\n num: _ctx.chartConfigs.length\n })), 1),\n _createElementVNode(\"button\", {\n class: \"chart-btn bg-gray-100 cursor-pointer hover:bg-gray-200\",\n id: \"modal-btn\",\n onClick: _cache[0] || (_cache[0] = ($event: any) => (_ctx.clearEditor())),\n disabled: !_ctx.allowMany && _ctx.chartConfigs.length > 0\n }, [\n _createElementVNode(\"div\", _hoisted_5, [\n _hoisted_6,\n _createElementVNode(\"span\", _hoisted_7, _toDisplayString(_ctx.$t('editor.chart.label.create')), 1)\n ])\n ], 8, _hoisted_4)\n ]),\n _hoisted_8,\n (_ctx.chartConfigs.length === 0)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_9, [\n _createElementVNode(\"span\", _hoisted_10, _toDisplayString(_ctx.$t('editor.chart.label.empty')), 1)\n ]))\n : _createCommentVNode(\"\", true),\n _withDirectives(_createElementVNode(\"ul\", _hoisted_11, [\n _createVNode(_component_draggable, {\n modelValue: _ctx.chartConfigs,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = ($event: any) => ((_ctx.chartConfigs) = $event)),\n handle: \".handle\",\n onUpdate: _ctx.onChartsEdited,\n class: \"flex flex-wrap list-none\",\n \"item-key\": \"name\"\n }, {\n item: _withCtx(({ element, index }) => [\n (_openBlock(), _createBlock(_component_ChartPreview, {\n key: `${element.name}-${index}`,\n chart: element,\n configFileStructure: _ctx.configFileStructure,\n sourceCounts: _ctx.sourceCounts,\n lang: _ctx.lang,\n onEdit: _ctx.editChart,\n onDelete: ($event: any) => (_ctx.$vfm.open(`${element.name}-${index}`))\n }, null, 8, [\"chart\", \"configFileStructure\", \"sourceCounts\", \"lang\", \"onEdit\", \"onDelete\"]))\n ]),\n _: 1\n }, 8, [\"modelValue\", \"onUpdate\"])\n ], 512), [\n [_vShow, _ctx.chartConfigs.length]\n ]),\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.chartConfigs, (chart, idx) => {\n return (_openBlock(), _createBlock(_component_confirmation_modal, {\n key: `${chart.name}-${idx}`,\n name: `${chart.name}-${idx}`,\n message: _ctx.$t('editor.chart.delete.confirm', { name: chart.name }),\n onOk: ($event: any) => (_ctx.deleteChart(chart))\n }, null, 8, [\"name\", \"message\", \"onOk\"]))\n }), 128))\n ]))\n}","import { createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, resolveDirective as _resolveDirective, withDirectives as _withDirectives, resolveComponent as _resolveComponent, createBlock as _createBlock, createCommentVNode as _createCommentVNode, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-1df36a82\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"chart-item items-center mt-8 mx-5 overflow-hidden\" }\nconst _hoisted_2 = { class: \"relative border-solid border-2 items-center justify-center text-center w-full\" }\nconst _hoisted_3 = [\"content\"]\nconst _hoisted_4 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"svg\", {\n class: \"absolute transform -translate-x-1/2 -translate-y-1/2\",\n height: \"22px\",\n width: \"22px\",\n viewBox: \"0 0 352 512\",\n xmlns: \"http://www.w3.org/2000/svg\"\n}, [\n /*#__PURE__*/_createElementVNode(\"path\", { d: \"M242.72 256l100.07-100.07c12.28-12.28 12.28-32.19 0-44.48l-22.24-22.24c-12.28-12.28-32.19-12.28-44.48 0L176 189.28 75.93 89.21c-12.28-12.28-32.19-12.28-44.48 0L9.21 111.45c-12.28 12.28-12.28 32.19 0 44.48L109.28 256 9.21 356.07c-12.28 12.28-12.28 32.19 0 44.48l22.24 22.24c12.28 12.28 32.2 12.28 44.48 0L176 322.72l100.07 100.07c12.28 12.28 32.2 12.28 44.48 0l22.24-22.24c12.28-12.28 12.28-32.19 0-44.48L242.72 256z\" })\n], -1))\nconst _hoisted_5 = [\n _hoisted_4\n]\nconst _hoisted_6 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"button\", { class: \"bg-white absolute h-6 w-6 leading-5 rounded-full bottom-2 -right-1 p-0 z-10 handle\" }, [\n /*#__PURE__*/_createElementVNode(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n fill: \"#000000\",\n width: \"22px\",\n height: \"22px\",\n viewBox: \"0 0 24 24\"\n }, [\n /*#__PURE__*/_createElementVNode(\"path\", {\n \"fill-rule\": \"evenodd\",\n d: \"M8,18 C9.1045695,18 10,18.8954305 10,20 C10,21.1045695 9.1045695,22 8,22 C6.8954305,22 6,21.1045695 6,20 C6,18.8954305 6.8954305,18 8,18 Z M16,18 C17.1045695,18 18,18.8954305 18,20 C18,21.1045695 17.1045695,22 16,22 C14.8954305,22 14,21.1045695 14,20 C14,18.8954305 14.8954305,18 16,18 Z M8,10 C9.1045695,10 10,10.8954305 10,12 C10,13.1045695 9.1045695,14 8,14 C6.8954305,14 6,13.1045695 6,12 C6,10.8954305 6.8954305,10 8,10 Z M16,10 C17.1045695,10 18,10.8954305 18,12 C18,13.1045695 17.1045695,14 16,14 C14.8954305,14 14,13.1045695 14,12 C14,10.8954305 14.8954305,10 16,10 Z M8,2 C9.1045695,2 10,2.8954305 10,4 C10,5.1045695 9.1045695,6 8,6 C6.8954305,6 6,5.1045695 6,4 C6,2.8954305 6.8954305,2 8,2 Z M16,2 C17.1045695,2 18,2.8954305 18,4 C18,5.1045695 17.1045695,6 16,6 C14.8954305,6 14,5.1045695 14,4 C14,2.8954305 14.8954305,2 16,2 Z\"\n })\n ])\n], -1))\nconst _hoisted_7 = { class: \"flex mt-4 items-center\" }\nconst _hoisted_8 = { class: \"name-label font-bold flex-2\" }\nconst _hoisted_9 = { class: \"font-normal\" }\nconst _hoisted_10 = [\"id\"]\nconst _hoisted_11 = { class: \"flex items-center\" }\nconst _hoisted_12 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"svg\", {\n height: \"18px\",\n width: \"18px\",\n viewBox: \"0 0 23 21\",\n xmlns: \"http://www.w3.org/2000/svg\"\n}, [\n /*#__PURE__*/_createElementVNode(\"path\", { d: \"M 18 2 L 15.585938 4.4140625 L 19.585938 8.4140625 L 22 6 L 18 2 z M 14.076172 5.9238281 L 3 17 L 3 21 L 7 21 L 18.076172 9.9238281 L 14.076172 5.9238281 z\" })\n], -1))\nconst _hoisted_13 = { class: \"px-2\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_storylines_chart = _resolveComponent(\"storylines-chart\")!\n const _directive_tippy = _resolveDirective(\"tippy\")!\n\n return (_openBlock(), _createElementBlock(\"li\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _withDirectives((_openBlock(), _createElementBlock(\"button\", {\n class: \"bg-white absolute h-6 w-6 leading-5 rounded-full top-2 left-0 p-0 z-10 cursor-pointer\",\n onClick: _cache[0] || (_cache[0] = () => _ctx.$emit('delete', _ctx.chart)),\n content: _ctx.$t('editor.chart.delete')\n }, _hoisted_5, 8, _hoisted_3)), [\n [_directive_tippy, { placement: 'top', hideOnClick: false, animateFill: true }]\n ]),\n _hoisted_6,\n (!_ctx.loading)\n ? (_openBlock(), _createBlock(_component_storylines_chart, {\n class: \"w-full h-full\",\n config: _ctx.chartConfig,\n key: _ctx.chartIdx,\n configFileStructure: _ctx.configFileStructure,\n onLoaded: _ctx.loadChart\n }, null, 8, [\"config\", \"configFileStructure\", \"onLoaded\"]))\n : _createCommentVNode(\"\", true)\n ]),\n _createElementVNode(\"div\", _hoisted_7, [\n _createElementVNode(\"label\", _hoisted_8, [\n _createTextVNode(_toDisplayString(_ctx.$t('editor.chart.label.name')) + \": \", 1),\n _createElementVNode(\"span\", _hoisted_9, _toDisplayString(_ctx.chartName), 1)\n ]),\n _createElementVNode(\"button\", {\n class: \"chart-btn bg-gray-100 cursor-pointer hover:bg-gray-200\",\n id: `edit-${_ctx.chart.name}-btn`\n }, [\n _createElementVNode(\"div\", _hoisted_11, [\n _hoisted_12,\n _createElementVNode(\"span\", _hoisted_13, _toDisplayString(_ctx.$t('editor.chart.label.edit')), 1)\n ])\n ], 8, _hoisted_10)\n ])\n ]))\n}","\nimport { Prop, Vue } from 'vue-property-decorator';\nimport {\n ChartConfig,\n ConfigFileStructure,\n DQVChartConfig,\n LineSeriesData,\n PieDataRow,\n PieSeriesData,\n SourceCounts\n} from '@/definitions';\n\nexport default class ChartPreviewV extends Vue {\n @Prop() chart!: ChartConfig;\n @Prop() configFileStructure!: ConfigFileStructure;\n @Prop() sourceCounts!: SourceCounts;\n @Prop() lang!: string;\n\n loading = true;\n chartIdx = 0;\n chartConfig = {};\n chartName = '';\n modalEditor: typeof highed.ModalEditor = undefined;\n\n mounted(): void {\n this.chartConfig = this.chart;\n this.chartName = this.chart.name || '';\n this.loading = false;\n }\n\n /**\n * Save initial set of chart options used to create chart.\n */\n loadChart(chartOptions: DQVChartConfig): void {\n // initialize higcharts editor and link to edit summoner node\n if (this.modalEditor) {\n return;\n }\n\n this.modalEditor = highed.ModalEditor(\n `edit-${this.chartName}-btn`,\n {\n allowDone: true,\n features: 'import templates customize done',\n importer: {\n options: 'plugins csv json'\n },\n defaultChartOptions: chartOptions\n },\n (newChart: string) => {\n const chart = JSON.parse(newChart);\n const newName = `${this.configFileStructure.uuid}/charts/${this.lang}/${chart.title.text}.json`;\n\n // Check to see if a chart already exists with the provided name. If so, alert the user and re-prompt.\n if (this.sourceCounts[newName] > 0 && chart.title.text != this.chart.name) {\n alert(\n this.$t('editor.chart.label.nameExists', {\n name: chart.title.text\n })\n );\n\n // Re-open the editor the the issue can be fixed.\n setTimeout(() => this.modalEditor.show(), 100);\n } else {\n const chartConfig = {\n name: chart.title.text,\n config: chart,\n src: ''\n };\n\n this.$emit('edit', { oldChart: this.chart, newChart: chartConfig });\n this.chartConfig = chartConfig;\n this.chartName = chartConfig.name;\n this.chartIdx += 1;\n }\n }\n );\n\n // restore CSV data if exists\n if (chartOptions.data?.csv !== undefined) {\n const csvData = chartOptions.data.csv;\n this.modalEditor.editor.dataTable.loadCSV({ csv: csvData });\n } else {\n this.convertSeriesToCSV(chartOptions);\n }\n\n this.modalEditor.editor.chart.options.setAll(chartOptions);\n }\n\n /*\n * Convert series data into formatted csvData string for charts created without using editor\n * so that the datatable when re-opening modal is properly populated.\n */\n convertSeriesToCSV(chartOptions: DQVChartConfig): void {\n if (chartOptions.chart?.type === 'pie') {\n const seriesData = (chartOptions?.series as PieSeriesData).data;\n if (seriesData) {\n // pie charts only have one set of series data with the name;y format\n const csvData = [\n // first row is attempt to extract data labels if exists\n `${(chartOptions?.series as PieSeriesData).name};${chartOptions?.yAxis?.title.text}`,\n ...seriesData.map((row: PieDataRow) => `${row.name};${row.y}`)\n ];\n\n // load formatted CSV string into datatable\n this.modalEditor.editor.dataTable.loadCSV({ csv: csvData.join('\\n') });\n }\n } else {\n if (chartOptions?.series && (chartOptions?.series as LineSeriesData[]).length) {\n // other chart types may have multiple sets of series data along with x-axis categories\n // append series data name to its data set\n let seriesData = (chartOptions?.series as LineSeriesData[]).map((series: LineSeriesData) => [\n series.name,\n ...series.data\n ]);\n if (chartOptions.xAxis !== undefined) {\n // add xAxis categories to series data if it exists\n const catoData = [chartOptions.xAxis?.title?.text].concat(chartOptions.xAxis?.categories);\n seriesData.unshift(catoData);\n }\n\n // join series data together\n let csvData = seriesData[0].map((_, idx) => seriesData.map((data) => data[idx]).join(';'));\n\n // load formatted CSV string into datatable\n this.modalEditor.editor.dataTable.loadCSV({ csv: csvData.join('\\n') });\n }\n }\n }\n}\n","import { render } from \"./chart-preview.vue?vue&type=template&id=1df36a82&scoped=true&ts=true\"\nimport script from \"./chart-preview.vue?vue&type=script&lang=ts\"\nexport * from \"./chart-preview.vue?vue&type=script&lang=ts\"\n\nimport \"./chart-preview.vue?vue&type=style&index=0&id=1df36a82&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/storylines-editor/storylines-editor/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-1df36a82\"]])\n\nexport default __exports__","import { toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, withModifiers as _withModifiers, resolveComponent as _resolveComponent, withCtx as _withCtx, openBlock as _openBlock, createBlock as _createBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-4ed11748\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n slot: \"header\",\n class: \"text-lg font-bold\"\n}\nconst _hoisted_2 = { class: \"w-full flex justify-end\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_vue_final_modal = _resolveComponent(\"vue-final-modal\")!\n\n return (_openBlock(), _createBlock(_component_vue_final_modal, {\n modalId: _ctx.name,\n class: \"flex justify-center items-center\",\n \"content-class\": \"flex flex-col max-w-xl mx-4 p-4 bg-white dark:bg-gray-900 border dark:border-gray-700 rounded-lg space-y-2\"\n }, {\n default: _withCtx(() => [\n _createElementVNode(\"h2\", _hoisted_1, _toDisplayString(_ctx.message), 1),\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"button\", {\n class: \"confirm-button hover:bg-gray-800\",\n onClick: _cache[0] || (_cache[0] = _withModifiers(\n//@ts-ignore\n(...args) => (_ctx.onOk && _ctx.onOk(...args)), [\"stop\"]))\n }, _toDisplayString(_ctx.$t('editor.confirm')), 1),\n _createElementVNode(\"button\", {\n class: \"cancel-button hover:bg-gray-100\",\n onClick: _cache[1] || (_cache[1] = _withModifiers(\n//@ts-ignore\n(...args) => (_ctx.onCancel && _ctx.onCancel(...args)), [\"stop\"]))\n }, _toDisplayString(_ctx.$t('editor.cancel')), 1)\n ])\n ]),\n _: 1\n }, 8, [\"modalId\"]))\n}","\nimport { Options, Prop, Vue } from 'vue-property-decorator';\nimport { VueFinalModal } from 'vue-final-modal';\n\n@Options({\n components: {\n 'vue-final-modal': VueFinalModal\n }\n})\nexport default class MetadataEditorV extends Vue {\n @Prop() message!: string;\n @Prop() name!: string;\n\n onOk(): void {\n this.$emit('ok');\n this.$vfm.close(this.name);\n }\n\n onCancel(): void {\n this.$emit('Cancel');\n this.$vfm.close(this.name);\n }\n}\n","import { render } from \"./confirmation-modal.vue?vue&type=template&id=4ed11748&scoped=true&ts=true\"\nimport script from \"./confirmation-modal.vue?vue&type=script&lang=ts\"\nexport * from \"./confirmation-modal.vue?vue&type=script&lang=ts\"\n\nimport \"./confirmation-modal.vue?vue&type=style&index=0&id=4ed11748&scoped=true&lang=css\"\n\nimport exportComponent from \"/home/runner/work/storylines-editor/storylines-editor/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-4ed11748\"]])\n\nexport default __exports__","\nimport { Options, Prop, Vue } from 'vue-property-decorator';\nimport {\n ChartConfig,\n ChartPanel,\n ConfigFileStructure,\n Highchart,\n PanelType,\n SlideshowPanel,\n SourceCounts\n} from '@/definitions';\nimport ChartPreviewV from '@/components/editor/helpers/chart-preview.vue';\nimport ConfirmationModalV from '@/components/editor/helpers/confirmation-modal.vue';\nimport draggable from 'vuedraggable';\n\n@Options({\n components: {\n ChartPreview: ChartPreviewV,\n 'confirmation-modal': ConfirmationModalV,\n draggable\n }\n})\nexport default class ChartEditorV extends Vue {\n @Prop() panel!: ChartPanel | SlideshowPanel;\n @Prop() configFileStructure!: ConfigFileStructure;\n @Prop() lang!: string;\n @Prop() sourceCounts!: SourceCounts;\n @Prop({ default: true }) allowMany!: boolean;\n\n edited = false;\n\n chartConfigs = [] as Array;\n modalEditor = {} as typeof highed.ModalEditor;\n\n mounted(): void {\n // attach highcharts modal editor to summoner node\n highed.ready(() => {\n this.modalEditor = highed.ModalEditor(\n 'modal-btn',\n {\n allowDone: true,\n features: 'import templates customize done',\n importer: {\n options: 'plugins csv json'\n }\n },\n (chart: Highchart) => {\n this.createNewChart(chart.toString());\n }\n );\n });\n\n // This allows us to access the chart(s) using one consistent variable instead of needing to check panel type.\n const charts =\n this.panel.type === PanelType.Slideshow\n ? (this.panel.items as Array)\n : this.panel.src\n ? [this.panel]\n : [];\n\n // load charts from existing storylines product\n if (charts !== undefined && charts.length) {\n this.chartConfigs = charts.map((chart: ChartPanel) => {\n let chartName = '';\n // extract chart name\n if (chart.options && chart.options.title) {\n chartName = chart.options.title;\n } else {\n const path = chart.src.match(/.*\\/(.*)$/);\n chartName = path ? path[1].replace(/\\.[^/.]+$/, '').replace(/\\./g, ' ') : chart.src;\n }\n return {\n name: chartName,\n ...chart\n };\n });\n }\n }\n\n clearEditor(): void {\n // reset to clear modal editor options\n let chart_options = {\n title: {\n text: `Chart ${this.chartConfigs.length + 1}`\n },\n subtitle: {\n text: ''\n },\n credits: {\n enabled: false\n }\n };\n chart_options =\n this.lang === 'en'\n ? Object.assign({}, chart_options, { lang: { thousandsSep: ',' } })\n : Object.assign({}, chart_options, { lang: { thousandsSep: ' ' } });\n this.modalEditor.editor.chart.options.setAll(chart_options);\n // resets and clears datatable section\n const defaultTableData = `\"Column 1\";\"Column 2\"\\n\" \"\";\" \"`;\n this.modalEditor.editor.dataTable.loadCSV({ csv: defaultTableData });\n }\n\n createNewChart(chartInfo: string): void {\n const chart = JSON.parse(chartInfo);\n const chartSrc = `${this.configFileStructure.uuid}/charts/${this.lang}/${chart.title.text}.json`;\n\n // Check to see if a chart already exists with the provided name. If so, alert the user and re-prompt.\n if (this.sourceCounts[chartSrc] > 0) {\n alert(\n this.$t('editor.chart.label.nameExists', {\n name: chart.title.text\n })\n );\n\n // Re-open the editor the the issue can be fixed.\n setTimeout(() => this.modalEditor.show(), 100);\n } else {\n const chartConfig = {\n name: chart.title.text,\n src: chartSrc\n };\n\n if (this.sourceCounts[chartSrc]) {\n this.sourceCounts[chartSrc] += 1;\n } else {\n this.sourceCounts[chartSrc] = 1;\n }\n\n // Add chart config to ZIP file.\n this.configFileStructure.charts[this.lang].file(`${chart.title.text}.json`, JSON.stringify(chart, null, 4));\n this.chartConfigs.push(chartConfig);\n }\n this.onChartsEdited();\n }\n\n editChart(chartInfo: { oldChart: ChartConfig; newChart: ChartConfig }): void {\n const idx = this.chartConfigs.findIndex((chartFile: ChartConfig) => chartFile.name === chartInfo.oldChart.name);\n if (idx !== -1) {\n // Remove old chart config from ZIP file and add in new one.\n const oldName = `${this.configFileStructure.uuid}/charts/${this.lang}/${chartInfo.oldChart.name}.json`;\n this.sourceCounts[oldName] -= 1;\n if (this.sourceCounts[oldName] === 0) {\n this.configFileStructure.charts[this.lang].remove(`${chartInfo.oldChart.name}.json`);\n }\n\n const newName = `${this.configFileStructure.uuid}/charts/${this.lang}/${chartInfo.newChart.name}.json`;\n if (this.sourceCounts[newName]) {\n this.sourceCounts[newName] += 1;\n } else {\n this.sourceCounts[newName] = 1;\n }\n this.configFileStructure.charts[this.lang].file(\n `${chartInfo.newChart.name}.json`,\n JSON.stringify(chartInfo.newChart.config, null, 4)\n );\n\n chartInfo.newChart.src = `${this.configFileStructure.uuid}/charts/${this.lang}/${chartInfo.newChart.name}.json`;\n this.chartConfigs[idx] = {\n name: chartInfo.newChart.name,\n src: chartInfo.newChart.src\n };\n }\n this.onChartsEdited();\n }\n\n deleteChart(chart: ChartConfig): void {\n const idx = this.chartConfigs.findIndex((chartFile: ChartConfig) => chartFile.name === chart.name);\n if (idx !== -1) {\n // Remove the chart from the config file.\n this.sourceCounts[`${this.configFileStructure.uuid}/charts/${this.lang}/${chart.name}.json`] -= 1;\n if (this.sourceCounts[`${this.configFileStructure.uuid}/charts/${this.lang}/${chart.name}.json`] === 0) {\n this.configFileStructure.charts[this.lang].remove(`${chart.name}.json`);\n }\n this.chartConfigs.splice(idx, 1);\n }\n this.onChartsEdited();\n }\n\n saveChanges(): void {\n if (this.edited) {\n // Delete the existing properties so we can rebuild the object.\n Object.keys(this.panel).forEach((key) => {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n delete this.panel[key];\n });\n\n // Handle case where every image is deleted.\n if (this.chartConfigs.length === 0) {\n this.panel.type = PanelType.Chart;\n (this.panel as ChartPanel).src = '';\n } else if (this.chartConfigs.length === 1) {\n this.panel.type = PanelType.Chart;\n\n // Grab the one chart config from the array.\n const newChart = this.chartConfigs[0];\n\n // Sort of gross, but required to update the panel config as we're not allowed to directly manipulate props.\n Object.keys(newChart).forEach((key) => {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n (this.panel as ChartPanel)[key] = newChart[key];\n });\n } else {\n this.panel.type = PanelType.Slideshow;\n\n // Turn each of the chart configs into a chart panel and add them to the slideshow.\n (this.panel as SlideshowPanel).items = this.chartConfigs.map((chart: ChartConfig) => {\n return {\n ...chart,\n type: PanelType.Chart\n } as ChartPanel;\n });\n }\n }\n\n this.edited = false;\n }\n\n onChartsEdited(): void {\n this.edited = true;\n this.$emit('slide-edit');\n }\n}\n","import { render } from \"./chart-editor.vue?vue&type=template&id=0daaeefc&ts=true\"\nimport script from \"./chart-editor.vue?vue&type=script&lang=ts\"\nexport * from \"./chart-editor.vue?vue&type=script&lang=ts\"\n\nimport \"./chart-editor.vue?vue&type=style&index=0&id=0daaeefc&lang=scss\"\n\nimport exportComponent from \"/home/runner/work/storylines-editor/storylines-editor/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, createVNode as _createVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = { class: \"mt-4\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_json_editor = _resolveComponent(\"json-editor\")!\n const _component_confirmation_modal = _resolveComponent(\"confirmation-modal\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(_component_json_editor, {\n modelValue: _ctx.updatedConfig,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((_ctx.updatedConfig) = $event)),\n lang: _ctx.lang,\n mode: 'text',\n \"show-btns\": true,\n expandedOnStart: true,\n onJsonChange: _cache[1] || (_cache[1] = \n (json) => {\n // library does not 2-way v-model binding so need to set manually\n _ctx.updatedConfig = json;\n _ctx.edited = true;\n _ctx.$emit('slide-edit');\n }\n ),\n onJsonSave: _cache[2] || (_cache[2] = ($event: any) => (_ctx.$vfm.open(`custom-editor-${_ctx.slideIndex}`)))\n }, null, 8, [\"modelValue\", \"lang\"]),\n _createVNode(_component_confirmation_modal, {\n name: `custom-editor-${_ctx.slideIndex}`,\n message: _ctx.$t('editor.customConfig'),\n onOk: _cache[3] || (_cache[3] = ($event: any) => (_ctx.onJsonSave()))\n }, null, 8, [\"name\", \"message\"])\n ]))\n}","\nimport { Options, Prop, Vue } from 'vue-property-decorator';\nimport { Vue3JsonEditor } from 'vue3-json-editor';\nimport { Validator } from '@/definitions';\n\nimport ConfirmationModalV from './confirmation-modal.vue';\n\n@Options({\n components: {\n 'json-editor': Vue3JsonEditor,\n 'confirmation-modal': ConfirmationModalV\n }\n})\nexport default class CustomEditorV extends Vue {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n @Prop() config!: string;\n @Prop() lang!: string;\n @Prop() slideIndex!: number;\n\n schemaUrl = './StorylinesSlideSchema.json';\n updatedConfig = '';\n edited = false;\n\n jsonValidator = require('jsonschema').Validator;\n validator: Validator = new this.jsonValidator();\n storylinesSchema = '';\n\n mounted(): void {\n // add storylines config schema for validation purposes\n fetch(this.schemaUrl).then((schema) => {\n // parse JSON schema\n schema.json().then(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (res: any) => {\n this.storylinesSchema = res;\n },\n (err) => {\n console.error(err);\n }\n );\n });\n this.updatedConfig = this.config;\n }\n\n onJsonSave(): void {\n // TODO: add any missing properties in schema as required (e.g. chart options)\n const checkValidation = this.validator.validate(this.updatedConfig, this.storylinesSchema);\n if (checkValidation.valid) {\n this.$emit('config-edited', this.updatedConfig, true);\n } else {\n // TODO: add FR translation for alert message\n alert('Attempted to save a custom config that violates the Storylines schema.');\n console.error(checkValidation.errors);\n }\n }\n\n saveChanges(): void {\n this.$emit('config-edited', this.updatedConfig);\n this.edited = false;\n }\n}\n","import { render } from \"./custom-editor.vue?vue&type=template&id=6dd7f336&ts=true\"\nimport script from \"./custom-editor.vue?vue&type=script&lang=ts\"\nexport * from \"./custom-editor.vue?vue&type=script&lang=ts\"\n\nimport exportComponent from \"/home/runner/work/storylines-editor/storylines-editor/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, withModifiers as _withModifiers, normalizeClass as _normalizeClass, createCommentVNode as _createCommentVNode, vShow as _vShow, withDirectives as _withDirectives, vModelText as _vModelText, resolveComponent as _resolveComponent, withCtx as _withCtx, createBlock as _createBlock, createVNode as _createVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-39ccfdb7\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"block\" }\nconst _hoisted_2 = { class: \"flex drag-label cursor-pointer\" }\nconst _hoisted_3 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", { class: \"align-middle inline-block pr-4\" }, [\n /*#__PURE__*/_createElementVNode(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"48\",\n height: \"48\",\n viewBox: \"0 0 24 24\"\n }, [\n /*#__PURE__*/_createElementVNode(\"path\", { d: \"M14 9l-2.519 4-2.481-1.96-5 6.96h16l-6-9zm8-5v16h-20v-16h20zm2-2h-24v20h24v-20zm-20 6c0-1.104.896-2 2-2s2 .896 2 2c0 1.105-.896 2-2 2s-2-.895-2-2z\" })\n ])\n], -1))\nconst _hoisted_4 = { class: \"align-middle inline-block\" }\nconst _hoisted_5 = { class: \"text-blue-400 font-bold\" }\nconst _hoisted_6 = [\"multiple\"]\nconst _hoisted_7 = {\n key: 1,\n class: \"flex justify-center\"\n}\nconst _hoisted_8 = { class: \"flex mt-4 items-center w-full text-left\" }\nconst _hoisted_9 = { class: \"text-label\" }\nconst _hoisted_10 = [\"onUpdate:modelValue\"]\nconst _hoisted_11 = { class: \"flex mt-4 items-center w-full text-left\" }\nconst _hoisted_12 = { class: \"text-label\" }\nconst _hoisted_13 = [\"onUpdate:modelValue\"]\nconst _hoisted_14 = { class: \"flex items-center w-full text-left\" }\nconst _hoisted_15 = { class: \"text-label\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_ImagePreview = _resolveComponent(\"ImagePreview\")!\n const _component_draggable = _resolveComponent(\"draggable\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_ctx.allowMany || (!_ctx.allowMany && _ctx.imagePreviews.length === 0))\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n class: _normalizeClass([\"upload-image text-center m-5 p-12 bg-blue-100 border-4 border-dashed border-blue-300\", { dragging: _ctx.isDragging }]),\n onDragover: _cache[1] || (_cache[1] = _withModifiers(() => (_ctx.dragging = true), [\"prevent\"])),\n onDragleave: _cache[2] || (_cache[2] = _withModifiers(() => (_ctx.dragging = false), [\"prevent\"])),\n onDrop: _cache[3] || (_cache[3] = _withModifiers(($event: any) => (_ctx.dropImages($event)), [\"prevent\"]))\n }, [\n _createElementVNode(\"label\", _hoisted_2, [\n _hoisted_3,\n _createElementVNode(\"span\", _hoisted_4, [\n _createElementVNode(\"span\", null, [\n _createElementVNode(\"div\", null, _toDisplayString(_ctx.$t('editor.image.label.drag')), 1),\n _createElementVNode(\"div\", null, [\n _createTextVNode(_toDisplayString(_ctx.$t('editor.label.or')) + \" \", 1),\n _createElementVNode(\"span\", _hoisted_5, _toDisplayString(_ctx.$t('editor.label.browse')), 1),\n _createTextVNode(\" \" + _toDisplayString(_ctx.$t('editor.label.upload')), 1)\n ])\n ]),\n _createElementVNode(\"input\", {\n type: \"file\",\n class: \"cursor-pointer\",\n onChange: _cache[0] || (_cache[0] = \n//@ts-ignore\n(...args) => (_ctx.onFileChange && _ctx.onFileChange(...args))),\n multiple: !!_ctx.allowMany\n }, null, 40, _hoisted_6)\n ])\n ])\n ], 34))\n : _createCommentVNode(\"\", true),\n (_ctx.allowMany || (!_ctx.allowMany && _ctx.imagePreviews.length === 0))\n ? _withDirectives((_openBlock(), _createElementBlock(\"span\", _hoisted_7, [\n _createElementVNode(\"i\", null, _toDisplayString(_ctx.$t('editor.image.reorder')), 1)\n ], 512)), [\n [_vShow, !_ctx.imagePreviewsLoading && _ctx.imagePreviews.length]\n ])\n : _createCommentVNode(\"\", true),\n _withDirectives(_createVNode(_component_draggable, {\n modelValue: _ctx.imagePreviews,\n \"onUpdate:modelValue\": _cache[6] || (_cache[6] = ($event: any) => ((_ctx.imagePreviews) = $event)),\n class: \"flex flex-wrap list-none border my-4\",\n onUpdate: _ctx.onImagesEdited,\n \"item-key\": \"id\"\n }, {\n item: _withCtx(({ element, index }) => [\n (_openBlock(), _createBlock(_component_ImagePreview, {\n key: `${element.id}-${index}`,\n imageFile: element,\n onDelete: _ctx.deleteImage\n }, {\n default: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_8, [\n _createElementVNode(\"label\", _hoisted_9, _toDisplayString(_ctx.$t('editor.image.altTag')) + \":\", 1),\n _withDirectives(_createElementVNode(\"input\", {\n class: \"w-4/5\",\n type: \"text\",\n \"onUpdate:modelValue\": ($event: any) => ((element.altText) = $event),\n onChange: _cache[4] || (_cache[4] = \n//@ts-ignore\n(...args) => (_ctx.onImagesEdited && _ctx.onImagesEdited(...args)))\n }, null, 40, _hoisted_10), [\n [_vModelText, element.altText]\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_11, [\n _createElementVNode(\"label\", _hoisted_12, _toDisplayString(_ctx.$t('editor.image.label.caption')) + \":\", 1),\n _withDirectives(_createElementVNode(\"input\", {\n class: \"w-4/5\",\n type: \"text\",\n \"onUpdate:modelValue\": ($event: any) => ((element.caption) = $event),\n onChange: _cache[5] || (_cache[5] = \n//@ts-ignore\n(...args) => (_ctx.onImagesEdited && _ctx.onImagesEdited(...args)))\n }, null, 40, _hoisted_13), [\n [_vModelText, element.caption]\n ])\n ])\n ]),\n _: 2\n }, 1032, [\"imageFile\", \"onDelete\"]))\n ]),\n _: 1\n }, 8, [\"modelValue\", \"onUpdate\"]), [\n [_vShow, !_ctx.imagePreviewsLoading && _ctx.imagePreviews.length]\n ]),\n _withDirectives(_createElementVNode(\"div\", _hoisted_14, [\n _createElementVNode(\"label\", _hoisted_15, _toDisplayString(_ctx.$t('editor.image.slideshowCaption')) + \":\", 1),\n _withDirectives(_createElementVNode(\"input\", {\n class: \"w-3/5\",\n type: \"text\",\n \"onUpdate:modelValue\": _cache[7] || (_cache[7] = ($event: any) => ((_ctx.slideshowCaption) = $event)),\n onChange: _cache[8] || (_cache[8] = \n//@ts-ignore\n(...args) => (_ctx.onImagesEdited && _ctx.onImagesEdited(...args)))\n }, null, 544), [\n [_vModelText, _ctx.slideshowCaption]\n ])\n ], 512), [\n [_vShow, _ctx.imagePreviews.length > 1]\n ])\n ]))\n}","import { createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, resolveDirective as _resolveDirective, withDirectives as _withDirectives, renderSlot as _renderSlot, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-5bdf84fc\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"image-item items-center my-8 mx-4 overflow-hidden\" }\nconst _hoisted_2 = { class: \"relative items-center justify-center text-center w-full grabbable\" }\nconst _hoisted_3 = [\"content\"]\nconst _hoisted_4 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"svg\", {\n height: \"24px\",\n width: \"24px\",\n viewBox: \"0 0 352 512\",\n xmlns: \"http://www.w3.org/2000/svg\"\n}, [\n /*#__PURE__*/_createElementVNode(\"path\", { d: \"M242.72 256l100.07-100.07c12.28-12.28 12.28-32.19 0-44.48l-22.24-22.24c-12.28-12.28-32.19-12.28-44.48 0L176 189.28 75.93 89.21c-12.28-12.28-32.19-12.28-44.48 0L9.21 111.45c-12.28 12.28-12.28 32.19 0 44.48L109.28 256 9.21 356.07c-12.28 12.28-12.28 32.19 0 44.48l22.24 22.24c12.28 12.28 32.2 12.28 44.48 0L176 322.72l100.07 100.07c12.28 12.28 32.2 12.28 44.48 0l22.24-22.24c12.28-12.28 12.28-32.19 0-44.48L242.72 256z\" })\n], -1))\nconst _hoisted_5 = [\n _hoisted_4\n]\nconst _hoisted_6 = { class: \"flex-grow image-container\" }\nconst _hoisted_7 = [\"title\", \"src\", \"alt\"]\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _directive_tippy = _resolveDirective(\"tippy\")!\n\n return (_openBlock(), _createElementBlock(\"li\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _withDirectives((_openBlock(), _createElementBlock(\"button\", {\n class: \"bg-white absolute h-6 w-6 leading-5 rounded-full top-0 right-0 p-0 cursor-pointer\",\n onClick: _cache[0] || (_cache[0] = () => _ctx.$emit('delete', _ctx.imageFile)),\n content: _ctx.$t('editor.image.delete')\n }, _hoisted_5, 8, _hoisted_3)), [\n [_directive_tippy, { placement: 'top', hideOnClick: false, animateFill: true }]\n ]),\n _createElementVNode(\"div\", _hoisted_6, [\n _createElementVNode(\"img\", {\n class: \"image-file object-cover\",\n title: _ctx.imageFile.id,\n src: _ctx.imageFile.src,\n alt: _ctx.imageFile.altText\n }, null, 8, _hoisted_7)\n ])\n ]),\n _renderSlot(_ctx.$slots, \"default\", {}, undefined, true)\n ]))\n}","\nimport { Prop, Vue } from 'vue-property-decorator';\nimport { ImageFile } from '@/definitions';\n\nexport default class ImagePreviewV extends Vue {\n @Prop() imageFile!: ImageFile;\n}\n","import { render } from \"./image-preview.vue?vue&type=template&id=5bdf84fc&scoped=true&ts=true\"\nimport script from \"./image-preview.vue?vue&type=script&lang=ts\"\nexport * from \"./image-preview.vue?vue&type=script&lang=ts\"\n\nimport \"./image-preview.vue?vue&type=style&index=0&id=5bdf84fc&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/storylines-editor/storylines-editor/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-5bdf84fc\"]])\n\nexport default __exports__","\nimport { Options, Prop, Vue } from 'vue-property-decorator';\nimport { ConfigFileStructure, ImageFile, ImagePanel, PanelType, SlideshowPanel, SourceCounts } from '@/definitions';\nimport draggable from 'vuedraggable';\nimport ImagePreviewV from '@/components/editor/helpers/image-preview.vue';\n\n@Options({\n components: {\n ImagePreview: ImagePreviewV,\n draggable\n }\n})\nexport default class ImageEditorV extends Vue {\n @Prop() panel!: ImagePanel | SlideshowPanel;\n @Prop() configFileStructure!: ConfigFileStructure;\n @Prop() lang!: string;\n @Prop() sourceCounts!: SourceCounts;\n @Prop({ default: true }) allowMany!: boolean;\n\n dragging = false;\n edited = false;\n\n imagePreviewsLoading = false;\n imagePreviewPromises = [] as Array>;\n imagePreviews = [] as Array;\n slideshowCaption = '';\n\n get isDragging(): boolean {\n return this.dragging;\n }\n\n mounted(): void {\n // This basically allows us to access the image(s) using one consistent variable instead of needing to check panel type.\n const images =\n this.panel.type === PanelType.Slideshow\n ? (this.panel.items as Array)\n : this.panel.src\n ? [this.panel]\n : [];\n\n if (images !== undefined && images.length) {\n // Set images as loading until they are all loaded and resolve.\n this.imagePreviewsLoading = true;\n\n // Process each existing image.\n images.map((image: ImagePanel) => {\n // Check if the config file exists in the ZIP folder first.\n const assetSrc = `${image.src.substring(image.src.indexOf('/') + 1)}`;\n const filename = image.src.replace(/^.*[\\\\/]/, '');\n\n const assetFile = this.configFileStructure.zip.file(assetSrc);\n if (assetFile) {\n this.imagePreviewPromises.push(\n assetFile.async('blob').then((res: Blob) => {\n return {\n ...image,\n id: filename ? filename : image.src,\n src: URL.createObjectURL(res)\n } as ImageFile;\n })\n );\n }\n });\n\n // Once all images have been retrieved, display them.\n Promise.all(this.imagePreviewPromises).then((res) => {\n this.imagePreviews = res;\n this.imagePreviewsLoading = false;\n });\n\n this.slideshowCaption = this.panel.caption as string;\n }\n }\n\n onFileChange(e: Event): void {\n // create object URL(s) to display image(s)\n const filelist = Array.from((e.target as HTMLInputElement).files as ArrayLike);\n this.imagePreviews.push(\n ...filelist.map((file: File) => {\n // Add the uploaded images to the product ZIP file.\n const uploadSource = `${this.configFileStructure.uuid}/assets/${this.lang}/${file.name}`;\n this.configFileStructure.assets[this.lang].file(file.name, file);\n\n if (this.sourceCounts[uploadSource]) {\n this.sourceCounts[uploadSource] += 1;\n } else {\n this.sourceCounts[uploadSource] = 1;\n }\n\n let imageSrc = URL.createObjectURL(file);\n return {\n id: file.name,\n altText: '',\n caption: '',\n src: imageSrc\n };\n })\n );\n this.onImagesEdited();\n }\n\n dropImages(e: DragEvent): void {\n if (e.dataTransfer !== null) {\n let files = [...e.dataTransfer.files];\n\n // If allowMany is false, take the first one.\n if (!this.allowMany) {\n files = [files[0]];\n }\n\n this.imagePreviews.push(\n ...files.map((file: File) => {\n // Add the uploaded images to the product ZIP file.\n const uploadSource = `${this.configFileStructure.uuid}/assets/${this.lang}/${file.name}`;\n this.configFileStructure.assets[this.lang].file(file.name, file);\n\n if (this.sourceCounts[uploadSource]) {\n this.sourceCounts[uploadSource] += 1;\n } else {\n this.sourceCounts[uploadSource] = 1;\n }\n\n let imageSrc = URL.createObjectURL(file);\n return {\n id: file.name,\n altText: '',\n caption: '',\n src: imageSrc\n };\n })\n );\n this.dragging = false;\n }\n this.onImagesEdited();\n }\n\n deleteImage(img: ImageFile): void {\n const idx = this.imagePreviews.findIndex((file: ImageFile) => file.id === img.id);\n if (idx !== -1) {\n const fileSource = `${this.configFileStructure.uuid}/assets/${this.lang}/${this.imagePreviews[idx].id}`;\n\n // Remove the image from the product ZIP file.\n this.sourceCounts[fileSource] -= 1;\n if (this.sourceCounts[fileSource] === 0) {\n this.configFileStructure.assets[this.lang].remove(this.imagePreviews[idx].id);\n URL.revokeObjectURL(this.imagePreviews[idx].src);\n }\n this.imagePreviews.splice(idx, 1);\n }\n this.onImagesEdited();\n }\n\n saveChanges(): void {\n if (this.edited) {\n // Delete the existing properties so we can rebuild the object.\n Object.keys(this.panel).forEach((key) => {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n delete this.panel[key];\n });\n\n // Handle case where everything is deleted.\n if (this.imagePreviews.length === 0) {\n this.panel.type = PanelType.Image;\n (this.panel as ImagePanel).src = '';\n } else if (this.imagePreviews.length === 1) {\n // If there's only one image uploaded, convert this to an image panel.\n this.panel.type = PanelType.Image;\n\n // Grab the one image from the array.\n const imageFile = this.imagePreviews[0];\n\n // Sort of gross, but required to update the panel config as we're not allowed to directly manipulate props.\n Object.keys(imageFile).forEach((key) => {\n if (key === 'id') return; // we don't need this one.\n\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n (this.panel as ImagePanel)[key] = imageFile[key];\n });\n\n (this.panel as ImagePanel).src = `${this.configFileStructure.uuid}/assets/${this.lang}/${imageFile.id}`;\n } else {\n // Otherwise, convert this to a slideshow panel.\n this.panel.type = PanelType.Slideshow;\n this.panel.caption = this.slideshowCaption ?? undefined;\n\n // Turn each of the image configs into an image panel and add them to the slidesow.\n (this.panel as SlideshowPanel).items = this.imagePreviews.map((imageFile: ImageFile) => {\n return {\n ...imageFile,\n src: `${this.configFileStructure.uuid}/assets/${this.lang}/${imageFile.id}`,\n type: PanelType.Image\n } as ImagePanel;\n });\n }\n }\n this.edited = false;\n }\n\n onImagesEdited(): void {\n this.edited = true;\n this.$emit('slide-edit');\n }\n}\n","import { render } from \"./image-editor.vue?vue&type=template&id=39ccfdb7&scoped=true&ts=true\"\nimport script from \"./image-editor.vue?vue&type=script&lang=ts\"\nexport * from \"./image-editor.vue?vue&type=script&lang=ts\"\n\nimport \"./image-editor.vue?vue&type=style&index=0&id=39ccfdb7&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/storylines-editor/storylines-editor/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-39ccfdb7\"]])\n\nexport default __exports__","import { toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, vModelText as _vModelText, withDirectives as _withDirectives, resolveComponent as _resolveComponent, createVNode as _createVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-b0fb221e\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"flex flex-col mt-4\" }\nconst _hoisted_2 = { class: \"text-left\" }\nconst _hoisted_3 = { class: \"text-left mt-2\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_v_md_editor = _resolveComponent(\"v-md-editor\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"label\", _hoisted_2, _toDisplayString(_ctx.$t('editor.slides.panel.title')) + \":\", 1),\n _withDirectives(_createElementVNode(\"input\", {\n type: \"text\",\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((_ctx.panel.title) = $event))\n }, null, 512), [\n [_vModelText, _ctx.panel.title]\n ]),\n _createElementVNode(\"label\", _hoisted_3, _toDisplayString(_ctx.$t('editor.slides.panel.body')) + \":\", 1),\n _createVNode(_component_v_md_editor, {\n modelValue: _ctx.panel.content,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = ($event: any) => ((_ctx.panel.content) = $event)),\n height: \"400px\",\n \"left-toolbar\": \"undo redo clear | h bold italic strikethrough quote subsuper | ul ol table hr | addLink image code | save\",\n toolbar: _ctx.toolbar\n }, null, 8, [\"modelValue\", \"toolbar\"])\n ]))\n}","\nimport { Prop, Vue } from 'vue-property-decorator';\nimport { TextPanel } from '@/definitions';\n\ninterface MDEditor {\n insert(callback: (selected: string) => { text: string; selected: string }): void;\n}\n\nexport default class TextEditorV extends Vue {\n @Prop() panel!: TextPanel;\n\n toolbar = {\n subsuper: {\n title: 'Superscript/Subscript',\n text: 'T',\n menus: [\n {\n name: 'Superscript',\n text: 'Superscript',\n action(editor: MDEditor): void {\n editor.insert((selected: string) => {\n const content = selected || ``;\n\n return {\n text: `${content}`,\n selected: selected\n };\n });\n }\n },\n {\n name: 'Subscript',\n text: 'Subscript',\n action(editor: MDEditor): void {\n editor.insert((selected: string) => {\n const content = selected || ``;\n\n return {\n text: `${content}`,\n selected: selected\n };\n });\n }\n }\n ]\n },\n addLink: {\n title: 'Insert Link',\n icon: 'v-md-icon-link',\n menus: [\n {\n name: 'Add External Link (New Tab)',\n text: 'Add External Link (New Tab)',\n action(editor: MDEditor): void {\n editor.insert((selected: string) => {\n const content = selected || ``;\n\n return {\n text: `[${content}](http://)`,\n selected: selected\n };\n });\n }\n },\n {\n name: 'Add External Link (Same Tab)',\n text: 'Add External Link (Same Tab)',\n action(editor: MDEditor): void {\n editor.insert((selected: string) => {\n const content = selected || ``;\n\n return {\n text: `${content}`,\n selected: selected\n };\n });\n }\n },\n {\n name: 'Add Dynamic Link',\n text: 'Add Dynamic Link',\n action(editor: MDEditor): void {\n editor.insert((selected: string) => {\n const content = selected || ``;\n\n return {\n text: `${content}`,\n selected: selected\n };\n });\n }\n }\n ]\n }\n };\n}\n","import { render } from \"./text-editor.vue?vue&type=template&id=b0fb221e&scoped=true&ts=true\"\nimport script from \"./text-editor.vue?vue&type=script&lang=ts\"\nexport * from \"./text-editor.vue?vue&type=script&lang=ts\"\n\nimport \"./text-editor.vue?vue&type=style&index=0&id=b0fb221e&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/storylines-editor/storylines-editor/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-b0fb221e\"]])\n\nexport default __exports__","import { toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, vModelText as _vModelText, withDirectives as _withDirectives, vModelCheckbox as _vModelCheckbox, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createTextVNode as _createTextVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, normalizeClass as _normalizeClass, withCtx as _withCtx, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-681c9c6b\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"flex flex-col\" }\nconst _hoisted_2 = { class: \"text-left\" }\nconst _hoisted_3 = { key: 0 }\nconst _hoisted_4 = { class: \"mt-6\" }\nconst _hoisted_5 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", { class: \"ml-6\" }, null, -1))\nconst _hoisted_6 = { class: \"mt-6\" }\nconst _hoisted_7 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", { class: \"mx-4\" }, null, -1))\nconst _hoisted_8 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"br\", null, null, -1))\nconst _hoisted_9 = {\n key: 1,\n class: \"mb-4\"\n}\nconst _hoisted_10 = { class: \"flex justify-between mb-4\" }\nconst _hoisted_11 = { class: \"mt-2\" }\nconst _hoisted_12 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"iframe\", {\n src: \"scripts/ramp-editor/samples/fgpv-author.html\",\n style: {\"width\":\"70vw\",\"height\":\"100vh\"},\n id: \"RAMPeditorframe\"\n}, null, -1))\nconst _hoisted_13 = { key: 1 }\nconst _hoisted_14 = { class: \"text-left mt-2\" }\nconst _hoisted_15 = { class: \"flex flex-row items-center\" }\nconst _hoisted_16 = {\n key: 0,\n class: \"flex flex-wrap list-none justify-center\"\n}\nconst _hoisted_17 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"add-map\" }, null, -1))\nconst _hoisted_18 = { key: 2 }\nconst _hoisted_19 = { class: \"text-left mt-2\" }\nconst _hoisted_20 = { class: \"flex flex-wrap list-none justify-center\" }\nconst _hoisted_21 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"edit-map\" }, null, -1))\nconst _hoisted_22 = {\n slot: \"header\",\n class: \"text-lg font-bold\"\n}\nconst _hoisted_23 = { class: \"w-full flex justify-end\" }\nconst _hoisted_24 = [\"disabled\"]\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_time_slider_editor = _resolveComponent(\"time-slider-editor\")!\n const _component_vue_final_modal = _resolveComponent(\"vue-final-modal\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"label\", _hoisted_2, _toDisplayString(_ctx.$t('editor.map.title')) + \":\", 1),\n _withDirectives(_createElementVNode(\"input\", {\n type: \"text\",\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((_ctx.panel.title) = $event))\n }, null, 512), [\n [_vModelText, _ctx.panel.title]\n ]),\n (_ctx.status === 'editing')\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_3, [\n _createElementVNode(\"label\", _hoisted_4, _toDisplayString(_ctx.$t('editor.map.scrollguard.enable')) + \":\", 1),\n _withDirectives(_createElementVNode(\"input\", {\n type: \"checkbox\",\n onChange: _cache[1] || (_cache[1] = \n//@ts-ignore\n(...args) => (_ctx.saveScrollguard && _ctx.saveScrollguard(...args))),\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = ($event: any) => ((_ctx.panel.scrollguard) = $event))\n }, null, 544), [\n [_vModelCheckbox, _ctx.panel.scrollguard]\n ]),\n _hoisted_5,\n _createElementVNode(\"label\", _hoisted_6, _toDisplayString(_ctx.$t('editor.map.timeslider.enable')), 1),\n _withDirectives(_createElementVNode(\"input\", {\n type: \"checkbox\",\n onChange: _cache[3] || (_cache[3] = \n//@ts-ignore\n(...args) => (_ctx.saveTimeSlider && _ctx.saveTimeSlider(...args))),\n \"onUpdate:modelValue\": _cache[4] || (_cache[4] = ($event: any) => ((_ctx.usingTimeSlider) = $event))\n }, null, 544), [\n [_vModelCheckbox, _ctx.usingTimeSlider]\n ]),\n _hoisted_7,\n (_ctx.usingTimeSlider)\n ? (_openBlock(), _createElementBlock(\"button\", {\n key: 0,\n onClick: _cache[5] || (_cache[5] = ($event: any) => (_ctx.$vfm.open('time-slider-edit-modal'))),\n class: \"bg-black text-white hover:bg-gray-800 mt-3\"\n }, _toDisplayString(_ctx.$t('editor.map.timeslider.edit')), 1))\n : _createCommentVNode(\"\", true),\n _hoisted_8,\n (_ctx.usingTimeSlider)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_9))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"div\", _hoisted_10, [\n _createElementVNode(\"label\", _hoisted_11, _toDisplayString(_ctx.$t('editor.map.edit')) + \":\", 1),\n _createElementVNode(\"button\", {\n class: \"border border-black hover:bg-gray-100\",\n onClick: _cache[6] || (_cache[6] = \n () => {\n _ctx.status = 'default';\n }\n )\n }, _toDisplayString(_ctx.$t('editor.map.edit.cancel')), 1)\n ]),\n _hoisted_12\n ]))\n : _createCommentVNode(\"\", true),\n (_ctx.status === 'creating')\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_13, [\n _createElementVNode(\"label\", _hoisted_14, _toDisplayString(_ctx.$t('editor.map.label.name')) + \"*:\", 1),\n _createElementVNode(\"div\", _hoisted_15, [\n _withDirectives(_createElementVNode(\"input\", {\n type: \"text\",\n \"onUpdate:modelValue\": _cache[7] || (_cache[7] = ($event: any) => ((_ctx.newFileName) = $event))\n }, null, 512), [\n [_vModelText, _ctx.newFileName]\n ]),\n _createTextVNode(\".json\")\n ]),\n (_ctx.newFileName != '')\n ? (_openBlock(), _createElementBlock(\"ul\", _hoisted_16, [\n _createElementVNode(\"li\", {\n class: \"map-item items-center my-8 mx-5 overflow-hidden\",\n onClick: _cache[8] || (_cache[8] = \n//@ts-ignore\n(...args) => (_ctx.createNewConfig && _ctx.createNewConfig(...args)))\n }, [\n _hoisted_17,\n _createTextVNode(\" \" + _toDisplayString(_ctx.$t('editor.map.label.create')), 1)\n ])\n ]))\n : _createCommentVNode(\"\", true)\n ]))\n : _createCommentVNode(\"\", true),\n (_ctx.status === 'default')\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_18, [\n _createElementVNode(\"label\", _hoisted_19, _toDisplayString(_ctx.$t('editor.map.edit')) + \":\", 1),\n _createElementVNode(\"ul\", _hoisted_20, [\n _createElementVNode(\"li\", {\n class: \"map-item items-center my-8 mx-5 overflow-hidden\",\n onClick: _cache[9] || (_cache[9] = \n//@ts-ignore\n(...args) => (_ctx.openEditor && _ctx.openEditor(...args)))\n }, [\n _hoisted_21,\n _createTextVNode(\" \" + _toDisplayString(_ctx.$t('editor.map.label.edit')), 1)\n ])\n ])\n ]))\n : _createCommentVNode(\"\", true),\n _createVNode(_component_vue_final_modal, {\n modalId: \"time-slider-edit-modal\",\n \"content-class\": \"flex flex-col max-w-xl mx-4 p-4 bg-white border rounded-lg space-y-2\",\n class: \"flex justify-center items-center\"\n }, {\n default: _withCtx(() => [\n _createElementVNode(\"h2\", _hoisted_22, _toDisplayString(_ctx.$t('editor.map.timeslider.edit')), 1),\n _createVNode(_component_time_slider_editor, {\n config: _ctx.timeSliderConf,\n error: _ctx.timeSliderError,\n onTimeSliderChanged: _ctx.onTimeSliderInput\n }, null, 8, [\"config\", \"error\", \"onTimeSliderChanged\"]),\n _createElementVNode(\"div\", _hoisted_23, [\n _createElementVNode(\"button\", {\n class: _normalizeClass(_ctx.timeSliderError ? '' : 'bg-black text-white hover:bg-gray-800'),\n disabled: _ctx.timeSliderError,\n onClick: _cache[10] || (_cache[10] = \n//@ts-ignore\n(...args) => (_ctx.saveTimeSlider && _ctx.saveTimeSlider(...args)))\n }, \" Done \", 10, _hoisted_24)\n ])\n ]),\n _: 1\n })\n ]))\n}","import { toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-6923af36\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"px-5\" }\nconst _hoisted_2 = { class: \"flex items-center\" }\nconst _hoisted_3 = [\"value\"]\nconst _hoisted_4 = { class: \"mx-3\" }\nconst _hoisted_5 = [\"value\"]\nconst _hoisted_6 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"br\", null, null, -1))\nconst _hoisted_7 = { class: \"flex items-center\" }\nconst _hoisted_8 = [\"value\"]\nconst _hoisted_9 = { class: \"mx-3\" }\nconst _hoisted_10 = [\"value\"]\nconst _hoisted_11 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"br\", null, null, -1))\nconst _hoisted_12 = {\n key: 0,\n class: \"border-black border-2 p-3 w-2/3\"\n}\nconst _hoisted_13 = { class: \"w-full\" }\nconst _hoisted_14 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"br\", null, null, -1))\nconst _hoisted_15 = { class: \"list-disc my-2 ml-8\" }\nconst _hoisted_16 = { key: 1 }\nconst _hoisted_17 = [\"value\"]\nconst _hoisted_18 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"br\", null, null, -1))\nconst _hoisted_19 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"br\", null, null, -1))\nconst _hoisted_20 = [\"value\"]\nconst _hoisted_21 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"br\", null, null, -1))\nconst _hoisted_22 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"br\", null, null, -1))\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"label\", null, _toDisplayString(_ctx.$t('editor.map.timeslider.range')), 1),\n _createElementVNode(\"input\", {\n type: \"number\",\n value: _ctx.config.range[0],\n onInput: _cache[0] || (_cache[0] = ($event: any) => (_ctx.$emit('time-slider-changed', 'range', 0, $event.target.value)))\n }, null, 40, _hoisted_3),\n _createElementVNode(\"span\", _hoisted_4, _toDisplayString(_ctx.$t('editor.map.timeslider.to')), 1),\n _createElementVNode(\"input\", {\n type: \"number\",\n value: _ctx.config.range[1],\n onInput: _cache[1] || (_cache[1] = ($event: any) => (_ctx.$emit('time-slider-changed', 'range', 1, $event.target.value)))\n }, null, 40, _hoisted_5)\n ]),\n _hoisted_6,\n _createElementVNode(\"div\", _hoisted_7, [\n _createElementVNode(\"label\", null, _toDisplayString(_ctx.$t('editor.map.timeslider.start')), 1),\n _createElementVNode(\"input\", {\n class: \"ml-3\",\n type: \"number\",\n value: _ctx.config.start[0],\n onInput: _cache[2] || (_cache[2] = ($event: any) => (_ctx.$emit('time-slider-changed', 'start', 0, $event.target.value)))\n }, null, 40, _hoisted_8),\n _createElementVNode(\"span\", _hoisted_9, _toDisplayString(_ctx.$t('editor.map.timeslider.to')), 1),\n _createElementVNode(\"input\", {\n type: \"number\",\n value: _ctx.config.start[1],\n onInput: _cache[3] || (_cache[3] = ($event: any) => (_ctx.$emit('time-slider-changed', 'start', 1, $event.target.value)))\n }, null, 40, _hoisted_10)\n ]),\n _hoisted_11,\n (_ctx.error)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_12, [\n _createElementVNode(\"label\", _hoisted_13, _toDisplayString(_ctx.$t('editor.map.timeslider.warning')), 1),\n _hoisted_14,\n _createElementVNode(\"ul\", _hoisted_15, [\n _createElementVNode(\"li\", null, _toDisplayString(_ctx.$t('editor.map.timeslider.warning.bullet1')), 1),\n _createElementVNode(\"li\", null, _toDisplayString(_ctx.$t('editor.map.timeslider.warning.bullet2')), 1)\n ]),\n _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('editor.map.timeslider.warning.end')), 1)\n ]))\n : _createCommentVNode(\"\", true),\n (_ctx.error)\n ? (_openBlock(), _createElementBlock(\"br\", _hoisted_16))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"div\", null, [\n _createElementVNode(\"label\", null, _toDisplayString(_ctx.$t('editor.map.timeslider.attribute')), 1),\n _createElementVNode(\"input\", {\n value: _ctx.config.attribute,\n onInput: _cache[4] || (_cache[4] = ($event: any) => (_ctx.$emit('time-slider-changed', 'attribute', undefined, $event.target.value)))\n }, null, 40, _hoisted_17)\n ]),\n _hoisted_18,\n _createElementVNode(\"div\", null, [\n _createElementVNode(\"label\", null, _toDisplayString(_ctx.$t('editor.map.timeslider.layers')), 1),\n _hoisted_19,\n _createElementVNode(\"input\", {\n class: \"w-full\",\n value: _ctx.config.layers || '',\n onInput: _cache[5] || (_cache[5] = ($event: any) => (_ctx.$emit('time-slider-changed', 'layers', undefined, $event.target.value)))\n }, null, 40, _hoisted_20)\n ]),\n _hoisted_21,\n _hoisted_22\n ]))\n}","\nimport { TimeSliderConfig } from '@/definitions';\nimport { Prop, Vue } from 'vue-property-decorator';\n\nexport default class TimeSliderEditorV extends Vue {\n @Prop() config!: TimeSliderConfig;\n @Prop() error!: boolean;\n}\n","import { render } from \"./time-slider-editor.vue?vue&type=template&id=6923af36&scoped=true&ts=true\"\nimport script from \"./time-slider-editor.vue?vue&type=script&lang=ts\"\nexport * from \"./time-slider-editor.vue?vue&type=script&lang=ts\"\n\nimport \"./time-slider-editor.vue?vue&type=style&index=0&id=6923af36&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/storylines-editor/storylines-editor/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-6923af36\"]])\n\nexport default __exports__","\nimport { Options, Prop, Vue } from 'vue-property-decorator';\nimport { ConfigFileStructure, MapPanel, SourceCounts, TimeSliderConfig } from '@/definitions';\nimport { VueFinalModal } from 'vue-final-modal';\nimport defaultConfigEn from '../../../public/scripts/ramp-editor/samples/map_en.json';\nimport defaultConfigFr from '../../../public/scripts/ramp-editor/samples/map_fr.json';\nimport TimeSliderEditorV from './helpers/time-slider-editor.vue';\n\n@Options({\n components: {\n 'time-slider-editor': TimeSliderEditorV,\n 'vue-final-modal': VueFinalModal\n }\n})\nexport default class MapEditorV extends Vue {\n @Prop() panel!: MapPanel;\n @Prop() configFileStructure!: ConfigFileStructure;\n @Prop() lang!: string;\n @Prop() sourceCounts!: SourceCounts;\n\n // For creating new files.\n newFileName = '';\n\n // TimeSlider\n usingTimeSlider = !!this.panel.timeSlider;\n timeSliderError = false;\n timeSliderConf: TimeSliderConfig = { range: [], start: [], attribute: '' };\n status = this.panel.config !== '' ? 'default' : 'creating';\n strippedFileName = this.panel.config !== '' ? this.panel.config.split('/')[3].split('.')[0] : '';\n\n mounted(): void {\n // If a message is received, it means the map save button was pressed.\n window.addEventListener('message', this.saveEditor);\n this.timeSliderConf = JSON.parse(\n JSON.stringify({\n range: this.panel.timeSlider?.range ?? [1000, new Date().getFullYear()],\n start: this.panel.timeSlider?.start ?? [1000, new Date().getFullYear()],\n attribute: this.panel.timeSlider?.attribute ?? ''\n })\n );\n this.validateTimeSlider();\n }\n\n beforeDestroy(): void {\n window.removeEventListener('message', this.saveEditor);\n }\n\n createNewConfig(): void {\n // Update the path to the new file.\n // TODO: ensure that this is not a name already in use?\n this.panel.config = `${this.configFileStructure.uuid}/ramp-config/${this.lang}/${this.newFileName}.json`;\n this.strippedFileName = this.panel.config.split('/')[3].split('.')[0];\n\n if (this.sourceCounts[this.panel.config]) {\n this.sourceCounts[this.panel.config] += 1;\n } else {\n this.sourceCounts[this.panel.config] = 1;\n }\n\n // Create the new map configuration file in the ZIP folder. Copies the `config-default.json` file from the `ramp-editor` folder and renames it.\n this.configFileStructure.rampConfig[this.lang].file(\n `${this.strippedFileName}.json`,\n JSON.stringify(this.lang === 'en' ? defaultConfigEn : defaultConfigFr, null, 4)\n );\n\n // Display the normal edit page now.\n this.status = 'default';\n }\n\n openEditor(): void {\n if (this.panel.config === '') {\n return;\n }\n // Fetch the map configuration and load it into the editor.\n this.status = 'editing';\n\n if (this.panel.config) {\n // Check if the config file exists in the ZIP folder first.\n const assetSrc = `${this.panel.config.substring(this.panel.config.indexOf('/') + 1)}`;\n const configFile = this.configFileStructure.zip.file(assetSrc);\n\n if (configFile) {\n configFile.async('string').then((res: string) => {\n window.config = res;\n const iframe = document.getElementById('RAMPeditorframe') as HTMLIFrameElement;\n if (iframe.contentWindow) {\n iframe.contentWindow.config = res;\n iframe.contentWindow.configname = this.strippedFileName;\n }\n });\n } else {\n // If it does not exist in the ZIP folder, try and fetch from server.\n fetch(this.panel.config).then((data) => {\n data.json().then((res) => {\n let stringResponse = JSON.stringify(res);\n\n window.config = stringResponse;\n const iframe = document.getElementById('RAMPeditorframe') as HTMLIFrameElement;\n if (iframe.contentWindow) {\n iframe.contentWindow.config = stringResponse;\n iframe.contentWindow.configname = this.strippedFileName;\n }\n });\n });\n }\n }\n }\n\n saveScrollguard($event: Event): void {\n this.panel.scrollguard = ($event.target as HTMLInputElement).checked;\n }\n\n saveTimeSlider(): void {\n if (!this.timeSliderError || !this.usingTimeSlider) {\n this.panel.timeSlider = this.usingTimeSlider ? this.timeSliderConf : undefined;\n }\n this.$emit('slide-edit');\n this.$vfm.close('time-slider-edit-modal');\n }\n\n saveEditor(e: MessageEvent): void {\n if (e.data === 'mapSaved') {\n this.status = 'default';\n\n // Add chart config to ZIP file.\n this.configFileStructure.rampConfig[this.lang].file(\n `${this.strippedFileName}.json`,\n JSON.stringify(JSON.parse(localStorage.RAMPconfig), null, 4)\n );\n\n this.$emit('slide-edit');\n }\n }\n\n onTimeSliderInput(property: 'range' | 'start' | 'attribute' | 'layers', index: number, value: string): void {\n if (property === 'layers') {\n if (!value || value === '') {\n delete this.timeSliderConf['layers'];\n } else {\n this.timeSliderConf['layers'] = value.split(',').map((layerId) => {\n return layerId.trim();\n });\n }\n } else {\n property === 'attribute'\n ? (this.timeSliderConf[property] = value)\n : (this.timeSliderConf[property][index] = Number(value));\n }\n this.validateTimeSlider();\n }\n\n validateTimeSlider(): void {\n this.timeSliderError =\n this.timeSliderConf.range.some((val) => val < 0 || !Number.isInteger(val)) ||\n this.timeSliderConf.start.some((val) => val < 0 || !Number.isInteger(val)) ||\n this.timeSliderConf.range[1] < this.timeSliderConf.range[0] ||\n this.timeSliderConf.start[1] < this.timeSliderConf.start[0];\n }\n}\n","import { render } from \"./map-editor.vue?vue&type=template&id=681c9c6b&scoped=true&ts=true\"\nimport script from \"./map-editor.vue?vue&type=script&lang=ts\"\nexport * from \"./map-editor.vue?vue&type=script&lang=ts\"\n\nimport \"./map-editor.vue?vue&type=style&index=0&id=681c9c6b&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/storylines-editor/storylines-editor/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-681c9c6b\"]])\n\nexport default __exports__","import { toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, vModelText as _vModelText, withDirectives as _withDirectives, openBlock as _openBlock, createElementBlock as _createElementBlock, createTextVNode as _createTextVNode, withModifiers as _withModifiers, normalizeClass as _normalizeClass, createCommentVNode as _createCommentVNode, resolveComponent as _resolveComponent, createBlock as _createBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-996fd9c6\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"block\" }\nconst _hoisted_2 = { class: \"flex mt-4 items-center w-full text-left\" }\nconst _hoisted_3 = { class: \"text-label\" }\nconst _hoisted_4 = { class: \"flex drag-label cursor-pointer\" }\nconst _hoisted_5 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", { class: \"align-middle inline-block pr-4\" }, [\n /*#__PURE__*/_createElementVNode(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"48\",\n height: \"48\",\n viewBox: \"0 -2 30 30\"\n }, [\n /*#__PURE__*/_createElementVNode(\"path\", {\n d: \"M599,692 C597.896,692 597,692.896 597,694 L597,698 L575,698 L575,694 C575,692.896 574.104,692 573,692 C571.896,692 571,692.896 571,694 L571,701 C571,701.479 571.521,702 572,702 L600,702 C600.604,702 601,701.542 601,701 L601,694 C601,692.896 600.104,692 599,692 L599,692 Z M582,684 L584,684 L584,693 C584,694.104 584.896,695 586,695 C587.104,695 588,694.104 588,693 L588,684 L590,684 C590.704,684 591.326,684.095 591.719,683.7 C592.11,683.307 592.11,682.668 591.719,682.274 L586.776,676.283 C586.566,676.073 586.289,675.983 586.016,675.998 C585.742,675.983 585.465,676.073 585.256,676.283 L580.313,682.274 C579.921,682.668 579.921,683.307 580.313,683.7 C580.705,684.095 581.608,684 582,684 L582,684 Z\",\n transform: \"translate(-571.000000, -676.000000)\"\n })\n ])\n], -1))\nconst _hoisted_6 = { class: \"align-middle inline-block\" }\nconst _hoisted_7 = { class: \"text-blue-400 font-bold\" }\nconst _hoisted_8 = { class: \"flex mt-4 items-center w-full text-left\" }\nconst _hoisted_9 = { class: \"text-label\" }\nconst _hoisted_10 = {\n key: 1,\n ref: \"videoUrl\",\n class: \"w-3/5\",\n type: \"search\"\n}\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_VideoPreview = _resolveComponent(\"VideoPreview\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"label\", _hoisted_3, _toDisplayString(_ctx.$t('editor.video.title')) + \":\", 1),\n _withDirectives(_createElementVNode(\"input\", {\n class: \"w-3/5\",\n type: \"text\",\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((_ctx.videoPreview.title) = $event)),\n onChange: _cache[1] || (_cache[1] = \n//@ts-ignore\n(...args) => (_ctx.onVideoEdited && _ctx.onVideoEdited(...args)))\n }, null, 544), [\n [_vModelText, _ctx.videoPreview.title]\n ])\n ]),\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"upload-video text-center m-5 p-12 bg-gray-100 border-4 border-dashed border-gray-300\", { dragging: _ctx.isDragging }]),\n onDragover: _cache[3] || (_cache[3] = _withModifiers(() => (_ctx.dragging = true), [\"prevent\"])),\n onDragleave: _cache[4] || (_cache[4] = _withModifiers(() => (_ctx.dragging = false), [\"prevent\"])),\n onDrop: _cache[5] || (_cache[5] = _withModifiers(($event: any) => (_ctx.dropVideo($event)), [\"prevent\"]))\n }, [\n _createElementVNode(\"label\", _hoisted_4, [\n _hoisted_5,\n _createElementVNode(\"span\", _hoisted_6, [\n _createElementVNode(\"span\", null, [\n _createElementVNode(\"div\", null, _toDisplayString(_ctx.$t('editor.video.label.drag')), 1),\n _createElementVNode(\"div\", null, [\n _createTextVNode(_toDisplayString(_ctx.$t('editor.label.or')) + \" \", 1),\n _createElementVNode(\"span\", _hoisted_7, _toDisplayString(_ctx.$t('editor.label.browse')), 1),\n _createTextVNode(\" \" + _toDisplayString(_ctx.$t('editor.label.upload')), 1)\n ])\n ]),\n _createElementVNode(\"input\", {\n ref: \"videoFileInput\",\n type: \"file\",\n class: \"cursor-pointer\",\n onChange: _cache[2] || (_cache[2] = \n//@ts-ignore\n(...args) => (_ctx.onFileChange && _ctx.onFileChange(...args)))\n }, null, 544)\n ])\n ])\n ], 34),\n _createElementVNode(\"div\", _hoisted_8, [\n _createElementVNode(\"label\", _hoisted_9, _toDisplayString(_ctx.$t('editor.label.or') + ' ' + _ctx.$t('editor.video.pasteUrl')) + \":\", 1),\n (_ctx.videoPreview.videoType !== 'local')\n ? _withDirectives((_openBlock(), _createElementBlock(\"input\", {\n key: 0,\n ref: \"videoUrl\",\n class: \"w-3/5\",\n type: \"search\",\n \"onUpdate:modelValue\": _cache[6] || (_cache[6] = ($event: any) => ((_ctx.videoPreview.src) = $event))\n }, null, 512)), [\n [_vModelText, _ctx.videoPreview.src]\n ])\n : (_openBlock(), _createElementBlock(\"input\", _hoisted_10, null, 512)),\n _createElementVNode(\"button\", {\n onClick: _cache[7] || (_cache[7] = \n//@ts-ignore\n(...args) => (_ctx.uploadVideoUrl && _ctx.uploadVideoUrl(...args))),\n class: \"bg-white border border-black hover:bg-gray-100\"\n }, _toDisplayString(_ctx.$t('editor.video.label.upload')), 1)\n ]),\n (!_ctx.videoPreviewLoading && Object.keys(_ctx.videoPreview).length !== 0)\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n class: \"flex flex-wrap justify-center list-none border my-4\",\n onUpdate: _cache[8] || (_cache[8] = \n//@ts-ignore\n(...args) => (_ctx.onVideoEdited && _ctx.onVideoEdited(...args))),\n \"item-key\": \"id\"\n }, [\n (_openBlock(), _createBlock(_component_VideoPreview, {\n key: `${_ctx.videoPreview.id}`,\n file: _ctx.videoPreview,\n fileType: _ctx.fileType,\n lang: _ctx.lang,\n onDelete: _ctx.deleteVideo\n }, null, 8, [\"file\", \"fileType\", \"lang\", \"onDelete\"]))\n ], 32))\n : _createCommentVNode(\"\", true)\n ]))\n}","import { createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, resolveDirective as _resolveDirective, withDirectives as _withDirectives, createCommentVNode as _createCommentVNode, renderSlot as _renderSlot, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-2d1c87e5\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"my-8 mx-4 overflow-hidden w-full\" }\nconst _hoisted_2 = { class: \"relative text-center w-full grabbable\" }\nconst _hoisted_3 = [\"content\"]\nconst _hoisted_4 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"svg\", {\n height: \"24px\",\n width: \"24px\",\n viewBox: \"0 0 352 512\",\n xmlns: \"http://www.w3.org/2000/svg\"\n}, [\n /*#__PURE__*/_createElementVNode(\"path\", { d: \"M242.72 256l100.07-100.07c12.28-12.28 12.28-32.19 0-44.48l-22.24-22.24c-12.28-12.28-32.19-12.28-44.48 0L176 189.28 75.93 89.21c-12.28-12.28-32.19-12.28-44.48 0L9.21 111.45c-12.28 12.28-12.28 32.19 0 44.48L109.28 256 9.21 356.07c-12.28 12.28-12.28 32.19 0 44.48l22.24 22.24c12.28 12.28 32.2 12.28 44.48 0L176 322.72l100.07 100.07c12.28 12.28 32.2 12.28 44.48 0l22.24-22.24c12.28-12.28 12.28-32.19 0-44.48L242.72 256z\" })\n], -1))\nconst _hoisted_5 = [\n _hoisted_4\n]\nconst _hoisted_6 = { class: \"video-container\" }\nconst _hoisted_7 = [\"src\", \"height\", \"width\"]\nconst _hoisted_8 = [\"title\", \"height\", \"width\"]\nconst _hoisted_9 = [\"type\", \"src\"]\nconst _hoisted_10 = [\"src\", \"srclang\", \"label\"]\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _directive_tippy = _resolveDirective(\"tippy\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _withDirectives((_openBlock(), _createElementBlock(\"button\", {\n class: \"bg-white absolute h-6 w-6 leading-5 rounded-full top-0 right-0 p-0 cursor-pointer\",\n onClick: _cache[0] || (_cache[0] = () => _ctx.$emit('delete', _ctx.file)),\n content: _ctx.$t('editor.video.delete')\n }, _hoisted_5, 8, _hoisted_3)), [\n [_directive_tippy, { placement: 'top', hideOnClick: false, animateFill: true }]\n ]),\n _createElementVNode(\"div\", _hoisted_6, [\n (_ctx.file.videoType === 'YouTube')\n ? (_openBlock(), _createElementBlock(\"iframe\", {\n key: 0,\n class: \"w-3/5\",\n src: _ctx.file.src,\n height: _ctx.file.height ? _ctx.file.height : 400,\n width: _ctx.file.width,\n allowfullscreen: \"\"\n }, null, 8, _hoisted_7))\n : _createCommentVNode(\"\", true),\n (_ctx.file.videoType === 'local' || _ctx.file.videoType === 'external')\n ? (_openBlock(), _createElementBlock(\"video\", {\n key: 1,\n class: \"w-3/5\",\n title: _ctx.file.title,\n height: _ctx.file.height ? _ctx.file.height : 500,\n width: _ctx.file.width,\n controls: \"\"\n }, [\n _createElementVNode(\"source\", {\n type: _ctx.fileType,\n src: _ctx.file.src\n }, null, 8, _hoisted_9),\n (_ctx.file.caption)\n ? (_openBlock(), _createElementBlock(\"track\", {\n key: 0,\n kind: \"captions\",\n src: _ctx.file.caption,\n srclang: _ctx.lang,\n label: _ctx.langs[_ctx.lang]\n }, null, 8, _hoisted_10))\n : _createCommentVNode(\"\", true)\n ], 8, _hoisted_8))\n : _createCommentVNode(\"\", true)\n ])\n ]),\n _renderSlot(_ctx.$slots, \"default\", {}, undefined, true)\n ]))\n}","\nimport { Prop, Vue } from 'vue-property-decorator';\nimport { VideoFile } from '@/definitions';\nimport MarkdownIt from 'markdown-it';\n\nexport default class VideoPreviewV extends Vue {\n @Prop() file!: VideoFile;\n @Prop() fileType!: string;\n @Prop() lang!: string;\n\n md = new MarkdownIt({ html: true });\n langs = { en: 'English', fr: 'French' } as Record;\n\n expandTranscript = false;\n rawTranscript = '';\n transcriptContent = '';\n}\n","import { render } from \"./video-preview.vue?vue&type=template&id=2d1c87e5&scoped=true&ts=true\"\nimport script from \"./video-preview.vue?vue&type=script&lang=ts\"\nexport * from \"./video-preview.vue?vue&type=script&lang=ts\"\n\nimport \"./video-preview.vue?vue&type=style&index=0&id=2d1c87e5&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/storylines-editor/storylines-editor/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-2d1c87e5\"]])\n\nexport default __exports__","\nimport { Options, Prop, Vue } from 'vue-property-decorator';\nimport { ConfigFileStructure, SourceCounts, VideoFile, VideoPanel } from '@/definitions';\nimport draggable from 'vuedraggable';\nimport VideoPreviewV from '@/components/editor/helpers/video-preview.vue';\n\n@Options({\n components: {\n VideoPreview: VideoPreviewV,\n draggable\n }\n})\nexport default class VideoEditorV extends Vue {\n @Prop() panel!: VideoPanel;\n @Prop() configFileStructure!: ConfigFileStructure;\n @Prop() lang!: string;\n @Prop() sourceCounts!: SourceCounts;\n\n dragging = false;\n edited = false;\n\n fileType = '';\n videoPreviewLoading = false;\n videoPreviewPromise = undefined as Promise | undefined;\n videoPreview = {} as VideoFile | Record;\n slideshowCaption = '';\n\n get isDragging(): boolean {\n return this.dragging;\n }\n\n mounted(): void {\n if (this.panel.src) {\n if (this.panel.videoType === 'local') {\n this.videoPreviewLoading = true;\n\n // retrieve existing video file\n const assetSrc = `${this.panel.src.substring(this.panel.src.indexOf('/') + 1)}`;\n const filename = this.panel.src.replace(/^.*[\\\\/]/, '');\n\n const assetFile = this.configFileStructure.zip.file(assetSrc);\n if (assetFile) {\n this.videoPreviewPromise = assetFile.async('blob').then((res: Blob) => {\n return {\n ...this.panel,\n id: filename ? filename : this.panel.src,\n src: URL.createObjectURL(res)\n } as VideoFile;\n });\n }\n // attempt to load in video to preview in editor\n this.videoPreviewPromise?.then((res) => {\n this.videoPreview = res;\n this.videoPreviewLoading = false;\n });\n\n this.slideshowCaption = this.panel.caption as string;\n } else {\n // existing file is a URL format\n this.videoPreview = {\n id: this.panel.src,\n title: this.panel.title,\n videoType: this.panel.videoType === 'YouTube' ? 'YouTube' : 'external',\n src: this.panel.src\n };\n }\n }\n }\n\n // adds an uploaded file that is either a: video, transcript or captions\n addUploadedFile(file: File, type: string): void {\n const uploadSource = `${this.configFileStructure.uuid}/assets/${this.lang}/${file.name}`;\n this.configFileStructure.assets[this.lang].file(file.name, file);\n if (this.sourceCounts[uploadSource]) {\n this.sourceCounts[uploadSource] += 1;\n } else {\n this.sourceCounts[uploadSource] = 1;\n }\n\n // check if source file is creating a new video or uploading captions/transcript for current video\n const fileSrc = URL.createObjectURL(file);\n if (type === 'src') {\n this.videoPreview = {\n id: file.name,\n title: this.videoPreview.title || file.name,\n videoType: 'local',\n src: fileSrc\n };\n this.findFileType(file.name);\n } else {\n this.videoPreview[type as 'caption' | 'transcript'] = fileSrc;\n }\n this.edited = true;\n this.$emit('slide-edit');\n }\n\n onFileChange(e: Event): void {\n const file = Array.from((e.target as HTMLInputElement).files as ArrayLike)[0];\n this.addUploadedFile(file, 'src');\n this.onVideoEdited();\n }\n\n findFileType(file: string): void {\n if (this.videoPreview.videoType === 'external' || this.videoPreview.videoType === 'local') {\n const fileName = file.substring(file.lastIndexOf('/') + 1);\n const ext = fileName.split('.').pop();\n this.fileType = `video/${ext}`;\n }\n }\n\n // extract the video ID from YouTube link (we need to convert to embed link)\n extractYoutubeId(url: string): string | null {\n const regExp = /^.*(youtu.be\\/|v\\/|u\\/\\w\\/|embed\\/|watch\\?v=|&v=)([^#&?]*).*/;\n const match = url.match(regExp);\n return match && match[2].length === 11 ? match[2] : null;\n }\n\n uploadVideoUrl(): void {\n // TODO: might need to improve upon detecting YT link depending on cases\n let url = (this.$refs.videoUrl as HTMLInputElement).value as string;\n const isYoutube = url.toLowerCase().includes('youtube');\n\n // change YT link to embed format\n if (isYoutube) {\n // extract and restructure YT url to be embeddable\n // const videoId = this.extractYoutubeId(url);\n // // TODO: add error handling for invalid URLs\n // url = 'https://www.youtube.com/embed/' + (videoId as string);\n url = url.replace('/watch?v=', '/embed/');\n }\n this.videoPreview = {\n id: url,\n title: this.videoPreview.title || url,\n videoType: url.includes('youtube') ? 'YouTube' : 'external',\n src: url\n };\n this.edited = true;\n this.$emit('slide-edit');\n }\n\n updateCaptions(e: Event): void {\n const file = Array.from((e.target as HTMLInputElement).files as ArrayLike)[0];\n this.addUploadedFile(file, 'caption');\n }\n\n updateTranscript(e: Event): void {\n const file = Array.from((e.target as HTMLInputElement).files as ArrayLike)[0];\n this.addUploadedFile(file, 'transcript');\n }\n\n dropVideo(e: DragEvent): void {\n if (e.dataTransfer !== null) {\n const file = [...e.dataTransfer.files][0];\n this.addUploadedFile(file, 'src');\n this.dragging = false;\n }\n this.onVideoEdited();\n }\n\n deleteVideo(): void {\n (this.$refs.videoFileInput as HTMLInputElement).value = '';\n this.videoPreview = {};\n this.onVideoEdited();\n }\n\n saveChanges(): void {\n if (this.edited && this.videoPreview) {\n // save all changes to panel config (cannot directly set to avoid prop mutate)\n this.panel.title = this.videoPreview.title;\n this.panel.videoType = this.videoPreview.videoType;\n this.panel.src =\n this.videoPreview.videoType === 'local'\n ? `${this.configFileStructure.uuid}/assets/${this.lang}/${this.videoPreview.id}`\n : this.videoPreview.src;\n this.panel.caption = this.videoPreview.caption ? this.videoPreview.caption : '';\n this.panel.transcript = this.videoPreview.transcript ? this.videoPreview.transcript : '';\n }\n this.edited = false;\n }\n\n onVideoEdited(): void {\n this.edited = true;\n this.$emit('slide-edit');\n }\n}\n","import { render } from \"./video-editor.vue?vue&type=template&id=996fd9c6&scoped=true&ts=true\"\nimport script from \"./video-editor.vue?vue&type=script&lang=ts\"\nexport * from \"./video-editor.vue?vue&type=script&lang=ts\"\n\nimport \"./video-editor.vue?vue&type=style&index=0&id=996fd9c6&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/storylines-editor/storylines-editor/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-996fd9c6\"]])\n\nexport default __exports__","import { toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, vModelText as _vModelText, withDirectives as _withDirectives, renderList as _renderList, Fragment as _Fragment, createTextVNode as _createTextVNode, resolveDynamicComponent as _resolveDynamicComponent, createBlock as _createBlock, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-5b666f60\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"block\" }\nconst _hoisted_2 = { class: \"flex items-center\" }\nconst _hoisted_3 = { class: \"font-bold px-4\" }\nconst _hoisted_4 = { class: \"flex items-center\" }\nconst _hoisted_5 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"svg\", {\n height: \"18px\",\n width: \"18px\",\n viewBox: \"0 0 23 21\",\n xmlns: \"http://www.w3.org/2000/svg\"\n}, [\n /*#__PURE__*/_createElementVNode(\"path\", { d: \"M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z\" })\n], -1))\nconst _hoisted_6 = { class: \"px-2\" }\nconst _hoisted_7 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"hr\", { class: \"border-solid border-t-2 border-gray-300 my-2\" }, null, -1))\nconst _hoisted_8 = { class: \"flex items-center w-full text-left\" }\nconst _hoisted_9 = { class: \"text-label\" }\nconst _hoisted_10 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"br\", null, null, -1))\nconst _hoisted_11 = { class: \"w-2/3 mt-5\" }\nconst _hoisted_12 = { class: \"table-header\" }\nconst _hoisted_13 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"th\", null, null, -1))\nconst _hoisted_14 = [\"onClick\"]\nconst _hoisted_15 = [\"onClick\"]\nconst _hoisted_16 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"br\", null, null, -1))\nconst _hoisted_17 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"br\", null, null, -1))\nconst _hoisted_18 = { key: 0 }\nconst _hoisted_19 = { class: \"text-xl font-bold\" }\nconst _hoisted_20 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"hr\", { class: \"border-solid border-t-2 border-gray-300 my-2\" }, null, -1))\nconst _hoisted_21 = { key: 0 }\nconst _hoisted_22 = { class: \"mb-5 text-left\" }\nconst _hoisted_23 = [\"value\"]\nconst _hoisted_24 = [\"value\"]\nconst _hoisted_25 = { class: \"mt-3 w-full flex justify-end\" }\nconst _hoisted_26 = { key: 1 }\nconst _hoisted_27 = { class: \"mt-3 w-full flex justify-end\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"span\", _hoisted_3, _toDisplayString(_ctx.$t('editor.slideshow.label.info', {\n num: _ctx.panel.items.length\n })), 1),\n _createElementVNode(\"button\", {\n class: \"bg-gray-100 cursor-pointer hover:bg-gray-200\",\n onClick: _cache[0] || (_cache[0] = ($event: any) => (_ctx.editingStatus = 'create'))\n }, [\n _createElementVNode(\"div\", _hoisted_4, [\n _hoisted_5,\n _createElementVNode(\"span\", _hoisted_6, _toDisplayString(_ctx.$t('editor.slideshow.label.create')), 1)\n ])\n ])\n ]),\n _hoisted_7,\n _createElementVNode(\"div\", _hoisted_8, [\n _createElementVNode(\"label\", _hoisted_9, _toDisplayString(_ctx.$t('editor.image.slideshowCaption')) + \":\", 1),\n _withDirectives(_createElementVNode(\"input\", {\n class: \"w-1/3\",\n type: \"text\",\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = ($event: any) => ((_ctx.panel.caption) = $event))\n }, null, 512), [\n [_vModelText, _ctx.panel.caption]\n ]),\n _hoisted_10\n ]),\n _createElementVNode(\"table\", _hoisted_11, [\n _createElementVNode(\"thead\", null, [\n _createElementVNode(\"tr\", _hoisted_12, [\n _hoisted_13,\n _createElementVNode(\"th\", null, _toDisplayString(_ctx.$t('editor.slideshow.label.type')), 1),\n _createElementVNode(\"th\", null, _toDisplayString(_ctx.$t('dynamic.panel.actions')), 1)\n ])\n ]),\n _createElementVNode(\"tbody\", null, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.panel.items, (item, idx) => {\n return (_openBlock(), _createElementBlock(\"tr\", {\n class: \"table-contents\",\n key: idx\n }, [\n _createElementVNode(\"td\", null, _toDisplayString(idx + 1) + \".\", 1),\n _createElementVNode(\"td\", null, _toDisplayString(item.type), 1),\n _createElementVNode(\"td\", null, [\n _createElementVNode(\"span\", {\n onClick: ($event: any) => (_ctx.editItem(idx)),\n class: \"underline\"\n }, \"Edit\", 8, _hoisted_14),\n _createTextVNode(\" | \"),\n _createElementVNode(\"span\", {\n onClick: ($event: any) => (_ctx.deleteItem(idx)),\n class: \"underline\"\n }, \"Remove\", 8, _hoisted_15)\n ])\n ]))\n }), 128))\n ])\n ]),\n _hoisted_16,\n _hoisted_17,\n (_ctx.editingStatus !== 'none')\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_18, [\n _createElementVNode(\"h2\", _hoisted_19, _toDisplayString(_ctx.$t(`editor.slideshow.label.${_ctx.editingStatus}`)), 1),\n _hoisted_20,\n _createElementVNode(\"div\", null, [\n (_ctx.editingStatus === 'create')\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_21, [\n _createElementVNode(\"label\", _hoisted_22, _toDisplayString(_ctx.$t('editor.slideshow.label.type')) + \":\", 1),\n _createElementVNode(\"select\", {\n onInput: _cache[2] || (_cache[2] = \n//@ts-ignore\n(...args) => (_ctx.onTypeInput && _ctx.onTypeInput(...args))),\n value: _ctx.newSlideType\n }, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(Object.keys(_ctx.editors), (thing) => {\n return (_openBlock(), _createElementBlock(\"option\", {\n key: thing,\n value: thing\n }, _toDisplayString(thing), 9, _hoisted_24))\n }), 128))\n ], 40, _hoisted_23),\n (_ctx.editingStatus === 'create')\n ? (_openBlock(), _createBlock(_resolveDynamicComponent(_ctx.editors[_ctx.newSlideType]), {\n key: 0,\n ref: \"slideEditor\",\n panel: JSON.parse(JSON.stringify(_ctx.startingConfig[_ctx.newSlideType])),\n configFileStructure: _ctx.configFileStructure,\n lang: _ctx.lang,\n sourceCounts: _ctx.sourceCounts,\n allowMany: false\n }, null, 8, [\"panel\", \"configFileStructure\", \"lang\", \"sourceCounts\"]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"div\", _hoisted_25, [\n _createElementVNode(\"button\", {\n class: \"bg-black text-white hover:bg-gray-800\",\n onClick: _cache[3] || (_cache[3] = ($event: any) => (_ctx.saveItem(true)))\n }, _toDisplayString(_ctx.$t('editor.slideshow.label.add')), 1)\n ])\n ]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_26, [\n (_openBlock(), _createBlock(_resolveDynamicComponent(_ctx.editors[_ctx.panel.items[_ctx.editingIdx].type]), {\n ref: \"slideEditor\",\n panel: _ctx.panel.items[_ctx.editingIdx],\n configFileStructure: _ctx.configFileStructure,\n lang: _ctx.lang,\n sourceCounts: _ctx.sourceCounts,\n key: _ctx.editingIdx + _ctx.panel.items[_ctx.editingIdx].type,\n allowMany: false\n }, null, 8, [\"panel\", \"configFileStructure\", \"lang\", \"sourceCounts\"])),\n _createElementVNode(\"div\", _hoisted_27, [\n _createElementVNode(\"button\", {\n class: \"bg-black text-white hover:bg-gray-800\",\n onClick: _cache[4] || (_cache[4] = ($event: any) => (_ctx.saveItem()))\n }, _toDisplayString(_ctx.$t('editor.saveChanges')), 1)\n ])\n ]))\n ])\n ]))\n : _createCommentVNode(\"\", true)\n ]))\n}","\nimport { Options, Prop, Vue } from 'vue-property-decorator';\nimport {\n BasePanel,\n ChartPanel,\n ConfigFileStructure,\n DefaultConfigs,\n ImagePanel,\n MapPanel,\n PanelType,\n SlideshowPanel,\n SourceCounts\n} from '@/definitions';\n\nimport ChartEditorV from './chart-editor.vue';\nimport ImageEditorV from './image-editor.vue';\nimport TextEditorV from './text-editor.vue';\nimport MapEditorV from './map-editor.vue';\nimport VideoEditorV from './video-editor.vue';\n\n@Options({\n components: {\n 'chart-editor': ChartEditorV,\n 'image-editor': ImageEditorV,\n 'text-editor': TextEditorV,\n 'map-editor': MapEditorV,\n 'video-editor': VideoEditorV\n }\n})\nexport default class SlideshowEditorV extends Vue {\n @Prop() panel!: SlideshowPanel;\n @Prop() configFileStructure!: ConfigFileStructure;\n @Prop() lang!: string;\n @Prop() sourceCounts!: SourceCounts;\n\n editors: Record = {\n text: 'text-editor',\n image: 'image-editor',\n chart: 'chart-editor',\n map: 'map-editor',\n video: 'video-editor'\n };\n\n // TODO: we use this and a few other functions (updating source counts, etc.) in multiple places. We should probably look in to putting this somewhere else.\n startingConfig: DefaultConfigs = {\n text: {\n type: PanelType.Text,\n title: '',\n content: ''\n },\n dynamic: {\n type: PanelType.Dynamic,\n title: '',\n titleTag: '',\n content: '',\n children: []\n },\n slideshow: {\n type: PanelType.Slideshow,\n items: []\n },\n chart: {\n type: PanelType.Chart,\n src: ''\n },\n image: {\n type: PanelType.Image,\n src: ''\n },\n map: {\n type: PanelType.Map,\n config: '',\n title: '',\n scrollguard: true // default to ON for slideshows. Allows users to use the cursor to switch slides.\n },\n video: {\n type: PanelType.Video,\n title: '',\n videoType: '',\n src: ''\n }\n };\n\n editingIdx = -1;\n newSlideName = '';\n newSlideType: 'text' | 'image' | 'chart' | 'map' = 'text';\n editingStatus: 'none' | 'edit' | 'create' = 'none';\n\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types, @typescript-eslint/no-explicit-any\n onTypeInput(e: any): void {\n this.newSlideType = e.target.value;\n }\n\n editItem(idx: number): void {\n // Save slide changes if neccessary and switch to the newly selected slide.\n this.saveChanges();\n this.editingIdx = idx;\n this.editingStatus = 'edit';\n }\n\n deleteItem(item: number): void {\n const panel = this.panel.items.find((panel: BasePanel, idx: number) => idx === item);\n\n // Update source counts based on which panel is removed.\n switch (panel?.type) {\n case 'map': {\n const mapPanel = panel as MapPanel;\n this.sourceCounts[mapPanel.config] -= 1;\n if (this.sourceCounts[mapPanel.config] === 0) {\n this.configFileStructure.zip.remove(\n `${mapPanel.config.substring(mapPanel.config.indexOf('/') + 1)}`\n );\n }\n break;\n }\n\n case 'chart': {\n const chartPanel = panel as ChartPanel;\n this.sourceCounts[chartPanel.src] -= 1;\n if (this.sourceCounts[chartPanel.src] === 0) {\n this.configFileStructure.zip.remove(`${chartPanel.src.substring(chartPanel.src.indexOf('/') + 1)}`);\n }\n break;\n }\n\n case 'image': {\n const imagePanel = panel as ImagePanel;\n this.sourceCounts[imagePanel.src] -= 1;\n if (this.sourceCounts[imagePanel.src] === 0) {\n this.configFileStructure.zip.remove(`${imagePanel.src.substring(imagePanel.src.indexOf('/') + 1)}`);\n }\n break;\n }\n\n case 'text': {\n break;\n }\n }\n\n // Remove the panel itself.\n this.panel.items = this.panel.items.filter((panel: BasePanel, idx: number) => idx !== item);\n\n // If the slide being removed is the currently selected slide, unselect it.\n if (this.editingIdx === item) {\n this.editingIdx = -1;\n this.editingStatus = 'none';\n }\n }\n\n saveItem(add = false): void {\n let itemConfig;\n\n if (add) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n itemConfig = (this.$refs.slideEditor as any).panel;\n this.panel.items.push(itemConfig);\n } else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n itemConfig = (this.$refs.slideEditor as any).panel;\n }\n\n if (itemConfig.type !== PanelType.Text && itemConfig.type !== PanelType.Map) {\n if (\n this.$refs.slideEditor !== undefined &&\n typeof (this.$refs.slideEditor as ImageEditorV | ChartEditorV).saveChanges === 'function'\n ) {\n (this.$refs.slideEditor as ImageEditorV | ChartEditorV).saveChanges();\n }\n }\n\n this.editingStatus = 'none';\n }\n\n saveChanges(): void {\n return;\n }\n}\n","import { render } from \"./slideshow-editor.vue?vue&type=template&id=5b666f60&scoped=true&ts=true\"\nimport script from \"./slideshow-editor.vue?vue&type=script&lang=ts\"\nexport * from \"./slideshow-editor.vue?vue&type=script&lang=ts\"\n\nimport \"./slideshow-editor.vue?vue&type=style&index=0&id=5b666f60&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/storylines-editor/storylines-editor/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-5b666f60\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, createVNode as _createVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = {\n class: \"block py-20 align-middle text-center h-full\",\n style: {\"margin\":\"0 auto\"}\n}\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_spinner = _resolveComponent(\"spinner\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(_component_spinner, {\n size: \"120px\",\n color: \"#009cd1\",\n style: {\"margin\":\"0 auto\"}\n })\n ]))\n}","\nimport { Options, Vue } from 'vue-property-decorator';\nimport { VueSpinnerOval } from 'vue3-spinners';\n\n@Options({\n components: {\n spinner: VueSpinnerOval\n }\n})\nexport default class LoadingPageV extends Vue {}\n","import { render } from \"./loading-page.vue?vue&type=template&id=f992d808&ts=true\"\nimport script from \"./loading-page.vue?vue&type=script&lang=ts\"\nexport * from \"./loading-page.vue?vue&type=script&lang=ts\"\n\nimport exportComponent from \"/home/runner/work/storylines-editor/storylines-editor/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { toDisplayString as _toDisplayString, normalizeClass as _normalizeClass, createElementVNode as _createElementVNode, resolveDynamicComponent as _resolveDynamicComponent, openBlock as _openBlock, createBlock as _createBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, renderList as _renderList, Fragment as _Fragment, createTextVNode as _createTextVNode, vModelText as _vModelText, withDirectives as _withDirectives, vModelSelect as _vModelSelect } from \"vue\"\n\nconst _hoisted_1 = { class: \"block\" }\nconst _hoisted_2 = { class: \"flex\" }\nconst _hoisted_3 = { key: 0 }\nconst _hoisted_4 = { key: 1 }\nconst _hoisted_5 = { class: \"w-2/3 mt-5\" }\nconst _hoisted_6 = { class: \"table-header\" }\nconst _hoisted_7 = [\"onClick\"]\nconst _hoisted_8 = [\"onClick\"]\nconst _hoisted_9 = { class: \"table-add-row\" }\nconst _hoisted_10 = { class: \"flex flex-col items-center\" }\nconst _hoisted_11 = { key: 0 }\nconst _hoisted_12 = [\"disabled\"]\nconst _hoisted_13 = { key: 0 }\nconst _hoisted_14 = /*#__PURE__*/_createElementVNode(\"br\", null, null, -1)\nconst _hoisted_15 = /*#__PURE__*/_createElementVNode(\"hr\", null, null, -1)\nconst _hoisted_16 = /*#__PURE__*/_createElementVNode(\"br\", null, null, -1)\nconst _hoisted_17 = { class: \"font-bold text-xl\" }\nconst _hoisted_18 = /*#__PURE__*/_createElementVNode(\"br\", null, null, -1)\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"button\", {\n onClick: _cache[0] || (_cache[0] = () => _ctx.changePanel('text')),\n class: _normalizeClass([\"border hover:bg-gray-100\", _ctx.editingStatus === 'text' ? 'border-black' : 'border-gray-300'])\n }, _toDisplayString(_ctx.$t('dynamic.textSection')), 3),\n _createElementVNode(\"button\", {\n onClick: _cache[1] || (_cache[1] = () => _ctx.changePanel('panels')),\n class: _normalizeClass([\"border hover:bg-gray-100\", _ctx.editingStatus !== 'text' ? 'border-black' : 'border-gray-300'])\n }, _toDisplayString(_ctx.$t('dynamic.panel.collection')), 3)\n ]),\n (_ctx.editingStatus === 'text')\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_3, [\n (_openBlock(), _createBlock(_resolveDynamicComponent('text-editor'), {\n key: \"text\",\n panel: _ctx.panel,\n configFileStructure: _ctx.configFileStructure,\n lang: _ctx.lang\n }, null, 8, [\"panel\", \"configFileStructure\", \"lang\"]))\n ]))\n : _createCommentVNode(\"\", true),\n (_ctx.editingStatus === 'panels')\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_4, [\n _createElementVNode(\"table\", _hoisted_5, [\n _createElementVNode(\"tr\", _hoisted_6, [\n _createElementVNode(\"th\", null, _toDisplayString(_ctx.$t('dynamic.panel.id')), 1),\n _createElementVNode(\"th\", null, _toDisplayString(_ctx.$t('dynamic.panel.type')), 1),\n _createElementVNode(\"th\", null, _toDisplayString(_ctx.$t('dynamic.panel.actions')), 1)\n ]),\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.panel.children, (item, idx) => {\n return (_openBlock(), _createElementBlock(\"tr\", {\n class: \"table-contents\",\n key: idx\n }, [\n _createElementVNode(\"td\", null, _toDisplayString(item.id), 1),\n _createElementVNode(\"td\", null, _toDisplayString(_ctx.determineEditorType(item.panel)), 1),\n _createElementVNode(\"td\", null, [\n _createElementVNode(\"span\", {\n onClick: () => _ctx.switchSlide(idx)\n }, _toDisplayString(_ctx.$t('editor.chart.label.edit')), 9, _hoisted_7),\n _createTextVNode(\" | \"),\n _createElementVNode(\"span\", {\n onClick: () => _ctx.removeSlide(item, idx)\n }, _toDisplayString(_ctx.$t('editor.remove')), 9, _hoisted_8)\n ])\n ]))\n }), 128)),\n _createElementVNode(\"tr\", _hoisted_9, [\n _createElementVNode(\"th\", _hoisted_10, [\n _withDirectives(_createElementVNode(\"input\", {\n type: \"text\",\n placeholder: \"Enter Panel ID\",\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = ($event: any) => ((_ctx.newSlideName) = $event))\n }, null, 512), [\n [_vModelText, _ctx.newSlideName]\n ]),\n (_ctx.idUsed)\n ? (_openBlock(), _createElementBlock(\"p\", _hoisted_11, _toDisplayString(_ctx.$t('dynamic.panel.idTaken')), 1))\n : _createCommentVNode(\"\", true)\n ]),\n _createElementVNode(\"th\", null, [\n _withDirectives(_createElementVNode(\"select\", {\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = ($event: any) => ((_ctx.newSlideType) = $event))\n }, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(Object.keys(_ctx.editors), (thing) => {\n return (_openBlock(), _createElementBlock(\"option\", { key: thing }, _toDisplayString(thing), 1))\n }), 128))\n ], 512), [\n [_vModelSelect, _ctx.newSlideType]\n ])\n ]),\n _createElementVNode(\"th\", null, [\n _createElementVNode(\"button\", {\n onClick: _cache[4] || (_cache[4] = \n//@ts-ignore\n(...args) => (_ctx.createNewSlide && _ctx.createNewSlide(...args))),\n disabled: _ctx.idUsed\n }, \"Add New\", 8, _hoisted_12)\n ])\n ])\n ]),\n (_ctx.editingSlide !== -1)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_13, [\n _hoisted_14,\n _hoisted_15,\n _hoisted_16,\n _createElementVNode(\"span\", _hoisted_17, _toDisplayString(_ctx.$t('dynamic.panel.editor')), 1),\n _hoisted_18,\n (_openBlock(), _createBlock(_resolveDynamicComponent(_ctx.editors[_ctx.determineEditorType(_ctx.panel.children[_ctx.editingSlide].panel)]), {\n ref: \"slide\",\n key: _ctx.editingSlide + _ctx.determineEditorType(_ctx.panel.children[_ctx.editingSlide].panel),\n panel: _ctx.panel.children[_ctx.editingSlide].panel,\n configFileStructure: _ctx.configFileStructure,\n lang: _ctx.lang,\n sourceCounts: _ctx.sourceCounts,\n onSlideEdit: _cache[5] || (_cache[5] = ($event: any) => (_ctx.$emit('slide-edit')))\n }, null, 40, [\"panel\", \"configFileStructure\", \"lang\", \"sourceCounts\"]))\n ]))\n : _createCommentVNode(\"\", true)\n ]))\n : _createCommentVNode(\"\", true)\n ]))\n}","\nimport { Options, Prop, Vue } from 'vue-property-decorator';\nimport {\n BasePanel,\n ChartPanel,\n ConfigFileStructure,\n DefaultConfigs,\n DynamicChildItem,\n DynamicPanel,\n ImagePanel,\n MapPanel,\n PanelType,\n SlideshowPanel,\n SourceCounts,\n TextPanel,\n VideoPanel\n} from '@/definitions';\n\nimport ChartEditorV from './chart-editor.vue';\nimport ImageEditorV from './image-editor.vue';\nimport TextEditorV from './text-editor.vue';\nimport MapEditorV from './map-editor.vue';\nimport VideoEditorV from './video-editor.vue';\nimport SlideshowEditorV from './slideshow-editor.vue';\n\n@Options({\n components: {\n 'chart-editor': ChartEditorV,\n 'image-editor': ImageEditorV,\n 'text-editor': TextEditorV,\n 'slideshow-editor': SlideshowEditorV,\n 'dynamic-editor': DynamicEditorV,\n 'map-editor': MapEditorV,\n 'video-editor': VideoEditorV\n }\n})\nexport default class DynamicEditorV extends Vue {\n @Prop() panel!: DynamicPanel;\n @Prop() configFileStructure!: ConfigFileStructure;\n @Prop() lang!: string;\n @Prop() sourceCounts!: SourceCounts;\n\n editors: Record = {\n text: 'text-editor',\n image: 'image-editor',\n slideshow: 'slideshow-editor',\n chart: 'chart-editor',\n map: 'map-editor',\n video: 'video-editor'\n };\n\n startingConfig: DefaultConfigs = {\n text: {\n type: PanelType.Text,\n title: '',\n content: ''\n },\n dynamic: {\n type: PanelType.Dynamic,\n title: '',\n titleTag: '',\n content: '',\n children: []\n },\n slideshow: {\n type: PanelType.Slideshow,\n items: [],\n userCreated: true\n },\n image: {\n type: PanelType.Image,\n src: ''\n },\n chart: {\n type: PanelType.Chart,\n src: ''\n },\n map: {\n type: PanelType.Map,\n config: '',\n title: '',\n scrollguard: false\n },\n video: {\n type: PanelType.Video,\n title: '',\n videoType: '',\n src: ''\n }\n };\n\n editingStatus = 'text';\n editingSlide = -1;\n\n newSlideName = '';\n newSlideType = 'text';\n\n get idUsed(): boolean {\n return this.panel.children.some((ch: DynamicChildItem) => ch.id === this.newSlideName);\n }\n\n changePanel(target: string): void {\n if (this.editingStatus !== 'text') {\n this.saveChanges();\n }\n this.editingStatus = target;\n }\n\n switchSlide(idx: number): void {\n // Save slide changes if neccessary and switch to the newly selected slide.\n this.saveChanges();\n this.editingSlide = idx;\n }\n\n removeSlide(panel: BasePanel, index?: number): void {\n // Update source counts based on which panel is removed.\n switch (panel?.type) {\n case 'map': {\n const mapPanel = panel as MapPanel;\n this.sourceCounts[mapPanel.config] -= 1;\n if (this.sourceCounts[mapPanel.config] === 0) {\n this.configFileStructure.zip.remove(\n `${mapPanel.config.substring(mapPanel.config.indexOf('/') + 1)}`\n );\n }\n break;\n }\n\n case 'chart': {\n const chartPanel = panel as ChartPanel;\n this.sourceCounts[chartPanel.src] -= 1;\n if (this.sourceCounts[chartPanel.src] === 0) {\n this.configFileStructure.zip.remove(`${chartPanel.src.substring(chartPanel.src.indexOf('/') + 1)}`);\n }\n break;\n }\n\n case 'image': {\n const imagePanel = panel as ImagePanel;\n\n this.sourceCounts[imagePanel.src] -= 1;\n if (this.sourceCounts[imagePanel.src] === 0) {\n this.configFileStructure.zip.remove(`${imagePanel.src.substring(imagePanel.src.indexOf('/') + 1)}`);\n }\n break;\n }\n\n case 'slideshow': {\n const slideshowPanel = panel as SlideshowPanel;\n slideshowPanel.items.forEach((item: TextPanel | ImagePanel | MapPanel | ChartPanel) => {\n this.removeSlide(item);\n });\n break;\n }\n\n case 'video': {\n const videoPanel = panel as VideoPanel;\n if (videoPanel.videoType === 'local') {\n this.sourceCounts[videoPanel.src] -= 1;\n if (this.sourceCounts[videoPanel.src] === 0) {\n this.configFileStructure.zip.remove(\n `${videoPanel.src.substring(videoPanel.src.indexOf('/') + 1)}`\n );\n }\n }\n break;\n }\n }\n\n if (index) {\n // Remove the panel itself.\n this.panel.children = this.panel.children.filter((panel: DynamicChildItem, idx: number) => idx !== index);\n\n // If the slide being removed is the currently selected slide, unselect it.\n if (this.editingSlide === index) {\n this.editingSlide = -1;\n }\n }\n }\n\n createNewSlide(): void {\n if (!this.newSlideName) return;\n\n const newConfig = {\n id: this.newSlideName,\n panel: JSON.parse(JSON.stringify(this.startingConfig[this.newSlideType as keyof DefaultConfigs]))\n };\n\n this.newSlideName = '';\n this.panel.children.push(newConfig);\n }\n\n determineEditorType(panel: BasePanel): string {\n if (panel.type !== PanelType.Slideshow) return panel.type;\n if ((panel as SlideshowPanel).items.length === 0 || (panel as SlideshowPanel).userCreated)\n return PanelType.Slideshow;\n\n // Determine whether the slideshow consists of only charts. If so, display the chart editor.\n const allCharts = (panel as SlideshowPanel).items.every((item: BasePanel) => item.type === PanelType.Chart);\n if (allCharts) return PanelType.Chart;\n\n // Determine whether the slideshow consists of only images. If so, display the image editor.\n const allImages = (panel as SlideshowPanel).items.every((item: BasePanel) => item.type === PanelType.Image);\n if (allImages) return PanelType.Image;\n\n // Otherwise display the slideshow editor.\n return PanelType.Slideshow;\n }\n\n saveChanges(): void {\n if (\n this.$refs.slide !== undefined &&\n typeof (this.$refs.slide as ImageEditorV | ChartEditorV).saveChanges === 'function'\n ) {\n (this.$refs.slide as ImageEditorV | ChartEditorV).saveChanges();\n }\n }\n}\n","import { render } from \"./dynamic-editor.vue?vue&type=template&id=93f60e24&ts=true\"\nimport script from \"./dynamic-editor.vue?vue&type=script&lang=ts\"\nexport * from \"./dynamic-editor.vue?vue&type=script&lang=ts\"\n\nimport \"./dynamic-editor.vue?vue&type=style&index=0&id=93f60e24&lang=scss\"\n\nimport exportComponent from \"/home/runner/work/storylines-editor/storylines-editor/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\nimport { Options, Prop, Vue, Watch } from 'vue-property-decorator';\nimport {\n BasePanel,\n ChartPanel,\n ConfigFileStructure,\n DefaultConfigs,\n DynamicChildItem,\n DynamicPanel,\n ImagePanel,\n MapPanel,\n PanelType,\n Slide,\n SlideshowPanel,\n SourceCounts,\n StoryRampConfig,\n TextPanel,\n VideoPanel\n} from '@/definitions';\n\nimport ChartEditorV from './chart-editor.vue';\nimport CustomEditorV from './helpers/custom-editor.vue';\nimport ImageEditorV from './image-editor.vue';\nimport TextEditorV from './text-editor.vue';\nimport MapEditorV from './map-editor.vue';\nimport VideoEditorV from './video-editor.vue';\nimport SlideshowEditorV from './slideshow-editor.vue';\nimport LoadingPageV from './helpers/loading-page.vue';\nimport DynamicEditorV from './dynamic-editor.vue';\nimport ConfirmationModalV from './helpers/confirmation-modal.vue';\n\n@Options({\n components: {\n 'chart-editor': ChartEditorV,\n 'custom-editor': CustomEditorV,\n 'image-editor': ImageEditorV,\n 'text-editor': TextEditorV,\n 'map-editor': MapEditorV,\n 'video-editor': VideoEditorV,\n 'slideshow-editor': SlideshowEditorV,\n 'loading-page': LoadingPageV,\n 'dynamic-editor': DynamicEditorV,\n 'confirmation-modal': ConfirmationModalV\n }\n})\nexport default class SlideEditorV extends Vue {\n config: StoryRampConfig | undefined = undefined;\n @Prop() currentSlide!: Slide;\n @Prop() configFileStructure!: ConfigFileStructure;\n @Prop() lang!: string;\n @Prop() uid!: string;\n @Prop() slideIndex!: number;\n @Prop() isLast!: boolean;\n @Prop() sourceCounts!: SourceCounts;\n\n panelIndex = 0;\n advancedEditorView = false;\n newType = '';\n rightOnly = false;\n\n editors: Record = {\n text: 'text-editor',\n image: 'image-editor',\n slideshow: 'slideshow-editor',\n chart: 'chart-editor',\n map: 'map-editor',\n video: 'video-editor',\n loading: 'loading-page',\n dynamic: 'dynamic-editor'\n };\n\n @Watch('currentSlide', { deep: true })\n onSlideChange(): void {\n this.currentSlide ? (this.rightOnly = this.currentSlide.panel.length === 1) : false;\n }\n\n changePanelType(prevType: string, newType: string): void {\n const startingConfig: DefaultConfigs = {\n text: {\n type: PanelType.Text,\n title: '',\n content: ''\n },\n dynamic: {\n type: PanelType.Dynamic,\n title:\n this.currentSlide.panel[0] && prevType === 'text'\n ? (this.currentSlide.panel[0] as TextPanel).title\n : '',\n titleTag: '',\n content:\n this.currentSlide.panel[0] && prevType === 'text'\n ? (this.currentSlide.panel[0] as TextPanel).content\n : '',\n children: []\n },\n slideshow: {\n type: PanelType.Slideshow,\n items: [],\n userCreated: true\n },\n image: {\n type: PanelType.Image,\n src: ''\n },\n chart: {\n type: PanelType.Chart,\n src: ''\n },\n map: {\n type: PanelType.Map,\n config: '',\n title: '',\n scrollguard: false\n },\n video: {\n type: PanelType.Video,\n title: '',\n videoType: '',\n src: ''\n }\n };\n\n // Before swapping panel type, update sources from the to-be-deleted config.\n this.currentSlide.panel.forEach((panel: BasePanel) => this.removeSourceCounts(panel));\n\n // When switching to a dynamic panel, remove the secondary panel.\n if (newType === 'dynamic') {\n this.panelIndex = 0;\n this.currentSlide['panel'] = [startingConfig[newType as keyof DefaultConfigs]];\n } else {\n // Switching panel type when dynamic panels are not involved.\n this.currentSlide.panel[this.panelIndex] = startingConfig[newType as keyof DefaultConfigs];\n }\n }\n\n removeSourceCounts(panel: BasePanel): void {\n // The provided panel is being removed. Update source counts accordingly.\n switch (panel.type) {\n case 'map': {\n const mapPanel = panel as MapPanel;\n this.sourceCounts[mapPanel.config] -= 1;\n if (this.sourceCounts[mapPanel.config] === 0) {\n this.configFileStructure.zip.remove(\n `${mapPanel.config.substring(mapPanel.config.indexOf('/') + 1)}`\n );\n }\n break;\n }\n\n case 'image': {\n const imagePanel = panel as ImagePanel;\n this.sourceCounts[imagePanel.src] -= 1;\n if (this.sourceCounts[imagePanel.src] === 0) {\n this.configFileStructure.zip.remove(`${imagePanel.src.substring(imagePanel.src.indexOf('/') + 1)}`);\n }\n\n break;\n }\n\n case 'chart': {\n const chartPanel = panel as ChartPanel;\n this.sourceCounts[chartPanel.src] -= 1;\n if (this.sourceCounts[chartPanel.src] === 0) {\n this.configFileStructure.zip.remove(`${chartPanel.src.substring(chartPanel.src.indexOf('/') + 1)}`);\n }\n\n break;\n }\n\n case 'slideshow': {\n const slideshowPanel = panel as SlideshowPanel;\n slideshowPanel.items.forEach((item: TextPanel | ImagePanel | MapPanel | ChartPanel) => {\n this.removeSourceCounts(item);\n });\n break;\n }\n\n case 'video': {\n const videoPanel = panel as VideoPanel;\n if (videoPanel.videoType === 'local') {\n this.sourceCounts[videoPanel.src] -= 1;\n if (this.sourceCounts[videoPanel.src] === 0) {\n this.configFileStructure.zip.remove(\n `${videoPanel.src.substring(videoPanel.src.indexOf('/') + 1)}`\n );\n }\n }\n break;\n }\n\n case 'dynamic': {\n const dynamicPanel = panel as DynamicPanel;\n dynamicPanel.children.forEach((subPanel: DynamicChildItem) => {\n this.removeSourceCounts(subPanel.panel);\n });\n break;\n }\n\n case 'text': {\n break;\n }\n }\n }\n\n saveChanges(): void {\n if (\n this.$refs.editor !== undefined &&\n typeof (this.$refs.editor as ImageEditorV | ChartEditorV | VideoEditorV | CustomEditorV).saveChanges ===\n 'function'\n ) {\n (this.$refs.editor as ImageEditorV | ChartEditorV | VideoEditorV | CustomEditorV).saveChanges();\n }\n }\n\n selectSlide(index: number): void {\n this.$emit('slide-change', index);\n }\n\n cancelTypeChange(): void {\n (this.$refs.typeSelector as HTMLSelectElement).value = this.determineEditorType(\n this.currentSlide.panel[this.panelIndex]\n );\n }\n\n determineEditorType(panel: BasePanel): string {\n if (panel.type !== PanelType.Slideshow) return panel.type;\n if ((panel as SlideshowPanel).items.length === 0 || (panel as SlideshowPanel).userCreated)\n return PanelType.Slideshow;\n\n // Determine whether the slideshow consists of only charts. If so, display the chart editor.\n const allCharts = (panel as SlideshowPanel).items.every((item: BasePanel) => item.type === PanelType.Chart);\n if (allCharts) return PanelType.Chart;\n\n // Determine whether the slideshow consists of only images. If so, display the image editor.\n const allImages = (panel as SlideshowPanel).items.every((item: BasePanel) => item.type === PanelType.Image);\n if (allImages) return PanelType.Image;\n\n // Otherwise display the slideshow editor.\n return PanelType.Slideshow;\n }\n\n toggleRightOnly(): void {\n this.saveChanges();\n if (this.rightOnly) {\n this.panelIndex = 0;\n this.currentSlide['panel'] = [this.currentSlide.panel[1]];\n } else {\n this.currentSlide['panel'] = [\n Object.assign(\n {},\n {\n type: PanelType.Text,\n title: '',\n content: ''\n }\n ),\n Object.assign({}, this.currentSlide.panel[0])\n ];\n }\n }\n}\n","import { render } from \"./slide-editor.vue?vue&type=template&id=4c97a990&scoped=true&ts=true\"\nimport script from \"./slide-editor.vue?vue&type=script&lang=ts\"\nexport * from \"./slide-editor.vue?vue&type=script&lang=ts\"\n\nimport \"./slide-editor.vue?vue&type=style&index=0&id=4c97a990&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/storylines-editor/storylines-editor/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-4c97a990\"]])\n\nexport default __exports__","import { toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, withModifiers as _withModifiers, resolveDirective as _resolveDirective, withDirectives as _withDirectives, renderList as _renderList, Fragment as _Fragment, vModelSelect as _vModelSelect, resolveComponent as _resolveComponent, withCtx as _withCtx, createVNode as _createVNode, createTextVNode as _createTextVNode, normalizeClass as _normalizeClass, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-33456e0a\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"flex toc-header p-2 mt-10\" }\nconst _hoisted_2 = { class: \"flex items-center justify-center font-bold\" }\nconst _hoisted_3 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", { class: \"flex-1\" }, null, -1))\nconst _hoisted_4 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", { class: \"ml-auto\" }, null, -1))\nconst _hoisted_5 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", { class: \"align-middle inline-block px-1\" }, [\n /*#__PURE__*/_createElementVNode(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"10\",\n height: \"10\",\n viewBox: \"0 0 24 24\"\n }, [\n /*#__PURE__*/_createElementVNode(\"path\", { d: \"M24 10h-10v-10h-4v10h-10v4h10v10h4v-10h10z\" })\n ])\n], -1))\nconst _hoisted_6 = { class: \"align-middle inline-block\" }\nconst _hoisted_7 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n height: \"24\",\n width: \"24\"\n}, [\n /*#__PURE__*/_createElementVNode(\"path\", { d: \"M5 22q-.825 0-1.413-.587Q3 20.825 3 20V6h2v14h11v2Zm4-4q-.825 0-1.412-.587Q7 16.825 7 16V4q0-.825.588-1.413Q8.175 2 9 2h9q.825 0 1.413.587Q20 3.175 20 4v12q0 .825-.587 1.413Q18.825 18 18 18Zm0-2h9V4H9v12Zm0 0V4v12Z\" })\n], -1))\nconst _hoisted_8 = [\n _hoisted_7\n]\nconst _hoisted_9 = {\n slot: \"header\",\n class: \"text-xl font-bold\"\n}\nconst _hoisted_10 = { class: \"flex flex-col\" }\nconst _hoisted_11 = { class: \"text-lg font-bold my-6\" }\nconst _hoisted_12 = { class: \"flex\" }\nconst _hoisted_13 = [\"value\"]\nconst _hoisted_14 = [\"onClick\"]\nconst _hoisted_15 = { class: \"self-center overflow-ellipsis whitespace-nowrap overflow-hidden flex-grow ml-2\" }\nconst _hoisted_16 = { class: \"font-bold overflow-hidden\" }\nconst _hoisted_17 = { class: \"flex\" }\nconst _hoisted_18 = { class: \"flex flex-col\" }\nconst _hoisted_19 = [\"onClick\"]\nconst _hoisted_20 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"18\",\n height: \"18\",\n viewBox: \"0 0 24 24\"\n}, [\n /*#__PURE__*/_createElementVNode(\"path\", { d: \"M3 6l3 18h12l3-18h-18zm19-4v2h-20v-2h5.711c.9 0 1.631-1.099 1.631-2h5.316c0 .901.73 2 1.631 2h5.711z\" })\n], -1))\nconst _hoisted_21 = [\n _hoisted_20\n]\nconst _hoisted_22 = [\"onClick\"]\nconst _hoisted_23 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n height: \"24\",\n width: \"24\"\n}, [\n /*#__PURE__*/_createElementVNode(\"path\", { d: \"M5 22q-.825 0-1.413-.587Q3 20.825 3 20V6h2v14h11v2Zm4-4q-.825 0-1.412-.587Q7 16.825 7 16V4q0-.825.588-1.413Q8.175 2 9 2h9q.825 0 1.413.587Q20 3.175 20 4v12q0 .825-.587 1.413Q18.825 18 18 18Zm0-2h9V4H9v12Zm0 0V4v12Z\" })\n], -1))\nconst _hoisted_24 = [\n _hoisted_23\n]\nconst _hoisted_25 = { class: \"flex flex-col mr-2 ml-1 my-1\" }\nconst _hoisted_26 = [\"onClick\", \"disabled\"]\nconst _hoisted_27 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n class: \"fill-current\",\n height: \"20\",\n width: \"20\"\n}, [\n /*#__PURE__*/_createElementVNode(\"path\", { d: \"m2 16 8-12 8 12Z\" })\n], -1))\nconst _hoisted_28 = [\n _hoisted_27\n]\nconst _hoisted_29 = [\"onClick\", \"disabled\"]\nconst _hoisted_30 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n class: \"fill-current\",\n height: \"20\",\n width: \"20\"\n}, [\n /*#__PURE__*/_createElementVNode(\"path\", { d: \"m2 16 8-12 8 12Z\" })\n], -1))\nconst _hoisted_31 = [\n _hoisted_30\n]\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_vue_final_modal = _resolveComponent(\"vue-final-modal\")!\n const _component_confirmation_modal = _resolveComponent(\"confirmation-modal\")!\n const _component_draggable = _resolveComponent(\"draggable\")!\n const _directive_tippy = _resolveDirective(\"tippy\")!\n\n return (_openBlock(), _createElementBlock(\"div\", null, [\n _createElementVNode(\"div\", _hoisted_1, [\n _createElementVNode(\"span\", _hoisted_2, _toDisplayString(_ctx.$t('editor.slides.title')), 1),\n _hoisted_3,\n _hoisted_4,\n _createElementVNode(\"button\", {\n onClick: _cache[0] || (_cache[0] = \n//@ts-ignore\n(...args) => (_ctx.addNewSlide && _ctx.addNewSlide(...args)))\n }, [\n _hoisted_5,\n _createElementVNode(\"span\", _hoisted_6, _toDisplayString(_ctx.$t('editor.slides.addSlide')), 1)\n ]),\n _withDirectives((_openBlock(), _createElementBlock(\"button\", {\n onClick: _cache[1] || (_cache[1] = _withModifiers(($event: any) => (_ctx.$vfm.open(`copy-from-other-lang`)), [\"stop\"]))\n }, _hoisted_8)), [\n [_directive_tippy, {\n delay: '200',\n placement: 'right',\n content: _ctx.$t('editor.slides.copyFromLang'),\n animateFill: true\n }]\n ]),\n _createVNode(_component_vue_final_modal, {\n modalId: \"copy-from-other-lang\",\n \"content-class\": \"flex flex-col max-w-xl mx-4 p-4 bg-white border rounded-lg space-y-2\",\n class: \"flex justify-center items-center\"\n }, {\n default: _withCtx(() => [\n _createElementVNode(\"h2\", _hoisted_9, _toDisplayString(_ctx.$t('editor.slides.copyFromLang')), 1),\n _createElementVNode(\"div\", _hoisted_10, [\n _createElementVNode(\"button\", {\n class: \"w-32 h-12 ml-0\",\n onClick: _cache[2] || (_cache[2] = ($event: any) => (_ctx.copyAllFromOtherLang(_ctx.configFileStructure.configs[_ctx.lang === 'en' ? 'fr' : 'en'].slides)))\n }, _toDisplayString(_ctx.$t('editor.slides.copyAll')), 1),\n _createElementVNode(\"span\", _hoisted_11, _toDisplayString(_ctx.$t('editor.or')), 1),\n _createElementVNode(\"div\", _hoisted_12, [\n _withDirectives(_createElementVNode(\"select\", {\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = ($event: any) => ((_ctx.selectedForCopying) = $event)),\n class: \"overflow-ellipsis copy-select\"\n }, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.configFileStructure.configs[_ctx.lang === 'en' ? 'fr' : 'en']\n .slides, (slide, index) => {\n return (_openBlock(), _createElementBlock(\"option\", {\n value: index,\n key: slide.title + index\n }, _toDisplayString(_ctx.$t('editor.slides.slide')) + \" \" + _toDisplayString(index + ': ' + slide.title), 9, _hoisted_13))\n }), 128))\n ], 512), [\n [_vModelSelect, _ctx.selectedForCopying]\n ]),\n _createElementVNode(\"button\", {\n onClick: _cache[4] || (_cache[4] = ($event: any) => (\n _ctx.copyFromOtherLang(\n _ctx.configFileStructure.configs[_ctx.lang === 'en' ? 'fr' : 'en'].slides[_ctx.selectedForCopying]\n )\n ))\n }, _toDisplayString(_ctx.$t('editor.slides.copy')), 1)\n ])\n ])\n ]),\n _: 1\n })\n ]),\n _createElementVNode(\"ul\", null, [\n _createVNode(_component_draggable, {\n modelValue: _ctx.slides,\n \"onUpdate:modelValue\": _cache[5] || (_cache[5] = ($event: any) => ((_ctx.slides) = $event)),\n onUpdate: _cache[6] || (_cache[6] = ($event: any) => (_ctx.$emit('slides-updated', _ctx.slides))),\n \"item-key\": \"title\"\n }, {\n item: _withCtx(({ element, index }) => [\n _withDirectives((_openBlock(), _createElementBlock(\"li\", {\n class: _normalizeClass([\"toc-slide border-t flex px-2 cursor-pointer hover:bg-gray-100\", _ctx.currentSlide === element ? 'bg-gray-100' : '']),\n onClick: ($event: any) => (_ctx.selectSlide(index)),\n key: element.title + index\n }, [\n _createElementVNode(\"div\", _hoisted_15, [\n _createTextVNode(_toDisplayString(_ctx.$t('editor.slides.slide')) + \" \" + _toDisplayString(index + 1) + \": \", 1),\n _createElementVNode(\"span\", _hoisted_16, _toDisplayString(element.title || 'Add a title'), 1)\n ]),\n _createElementVNode(\"div\", _hoisted_17, [\n _createElementVNode(\"div\", _hoisted_18, [\n _createElementVNode(\"button\", {\n onClick: _withModifiers(($event: any) => (_ctx.$vfm.open(`delete-slide-${index}`)), [\"stop\"])\n }, _hoisted_21, 8, _hoisted_19),\n _createElementVNode(\"button\", {\n onClick: _withModifiers(($event: any) => (_ctx.copySlide(index)), [\"stop\"])\n }, _hoisted_24, 8, _hoisted_22)\n ]),\n _createElementVNode(\"div\", _hoisted_25, [\n _createElementVNode(\"button\", {\n class: _normalizeClass(index == 0 ? 'text-gray-500 cursor-not-allowed' : ''),\n onClick: _withModifiers(($event: any) => (_ctx.moveUp(index)), [\"stop\"]),\n disabled: index == 0\n }, _hoisted_28, 10, _hoisted_26),\n _createElementVNode(\"button\", {\n class: _normalizeClass([\"rotate-180 transform\", index == _ctx.slides.length - 1 ? 'text-gray-500 cursor-not-allowed' : '']),\n onClick: _withModifiers(($event: any) => (_ctx.moveDown(index)), [\"stop\"]),\n disabled: index == _ctx.slides.length - 1\n }, _hoisted_31, 10, _hoisted_29)\n ])\n ]),\n _createVNode(_component_confirmation_modal, {\n name: `delete-slide-${index}`,\n message: _ctx.$t('editor.slides.deleteSlide.confirm', { title: element.title }),\n onOk: ($event: any) => (_ctx.removeSlide(index))\n }, null, 8, [\"name\", \"message\", \"onOk\"])\n ], 10, _hoisted_14)), [\n [_directive_tippy, {\n delay: '200',\n placement: 'right',\n content: element.title,\n animateFill: true\n }]\n ])\n ]),\n _: 1\n }, 8, [\"modelValue\"])\n ])\n ]))\n}","\nimport { Options, Prop, Vue } from 'vue-property-decorator';\nimport {\n BasePanel,\n ChartPanel,\n ConfigFileStructure,\n DynamicChildItem,\n DynamicPanel,\n ImagePanel,\n MapPanel,\n Slide,\n SlideshowPanel,\n SourceCounts,\n TextPanel,\n VideoPanel\n} from '@/definitions';\nimport { VueFinalModal } from 'vue-final-modal';\nimport cloneDeep from 'clone-deep';\nimport draggable from 'vuedraggable';\n\nimport SlideEditorV from './slide-editor.vue';\nimport ConfirmationModalV from './helpers/confirmation-modal.vue';\n\n@Options({\n components: {\n 'slide-editor': SlideEditorV,\n 'confirmation-modal': ConfirmationModalV,\n 'vue-final-modal': VueFinalModal,\n draggable\n }\n})\nexport default class SlideTocV extends Vue {\n @Prop() slides!: Slide[];\n @Prop() currentSlide!: Slide | string;\n @Prop() slideIndex!: number;\n @Prop() configFileStructure!: ConfigFileStructure;\n @Prop() lang!: string;\n @Prop() sourceCounts!: SourceCounts;\n\n selectedForCopying = 0;\n\n selectSlide(index: number): void {\n this.$emit('slide-change', index);\n }\n\n addNewSlide(): void {\n this.slides.push({\n title: '',\n panel: [\n {\n type: 'text',\n title: '',\n content: ''\n } as TextPanel,\n {\n type: 'text',\n title: '',\n content: ''\n } as TextPanel\n ]\n });\n this.selectSlide(this.slides.length - 1);\n this.$emit('slides-updated', this.slides);\n }\n\n copyFromOtherLang(slide: Slide | undefined): void {\n if (slide) {\n this.slides.splice(this.slides.length, 0, cloneDeep(slide));\n this.$emit('slides-updated', this.slides);\n }\n }\n\n copyAllFromOtherLang(slides: Slide[] | undefined): void {\n if (slides) {\n this.slides.splice(this.slides.length, 0, ...slides.map((slide) => cloneDeep(slide)));\n this.$emit('slides-updated', this.slides);\n }\n }\n\n copySlide(index: number): void {\n this.slides.splice(index + 1, 0, cloneDeep(this.slides[index]));\n this.$emit('slides-updated', this.slides);\n }\n\n removeSlide(index: number): void {\n if (index === this.slideIndex) {\n this.$emit('slide-change', -1);\n }\n\n // Before removing the slide, updated the sources for the panels.\n this.removeSourceCounts(index);\n\n this.slides.splice(index, 1);\n this.$emit('slides-updated', this.slides);\n }\n\n removeSourceCounts(deletedIndex: number): void {\n const panel = this.slides.find((slide: Slide, idx: number) => idx === deletedIndex)?.panel;\n panel?.forEach((p: BasePanel) => this.removeSourceHelper(p));\n }\n\n removeSourceHelper(panel: BasePanel): void {\n // The provided panel is being removed. Update source counts accordingly.\n switch (panel.type) {\n case 'map': {\n const mapPanel = panel as MapPanel;\n this.sourceCounts[mapPanel.config] -= 1;\n if (this.sourceCounts[mapPanel.config] === 0) {\n this.configFileStructure.zip.remove(\n `${mapPanel.config.substring(mapPanel.config.indexOf('/') + 1)}`\n );\n }\n break;\n }\n\n case 'image': {\n const imagePanel = panel as ImagePanel;\n this.sourceCounts[imagePanel.src] -= 1;\n if (this.sourceCounts[imagePanel.src] === 0) {\n this.configFileStructure.zip.remove(`${imagePanel.src.substring(imagePanel.src.indexOf('/') + 1)}`);\n }\n\n break;\n }\n\n case 'chart': {\n const chartPanel = panel as ChartPanel;\n this.sourceCounts[chartPanel.src] -= 1;\n if (this.sourceCounts[chartPanel.src] === 0) {\n this.configFileStructure.zip.remove(`${chartPanel.src.substring(chartPanel.src.indexOf('/') + 1)}`);\n }\n\n break;\n }\n\n case 'slideshow': {\n const slideshowPanel = panel as SlideshowPanel;\n slideshowPanel.items.forEach((item: TextPanel | MapPanel | ChartPanel | ImagePanel) => {\n this.removeSourceHelper(item);\n });\n break;\n }\n\n case 'video': {\n const videoPanel = panel as VideoPanel;\n if (videoPanel.videoType === 'local') {\n this.sourceCounts[videoPanel.src] -= 1;\n if (this.sourceCounts[videoPanel.src] === 0) {\n this.configFileStructure.zip.remove(\n `${videoPanel.src.substring(videoPanel.src.indexOf('/') + 1)}`\n );\n }\n }\n break;\n }\n\n case 'dynamic': {\n const dynamicPanel = panel as DynamicPanel;\n dynamicPanel.children.forEach((subPanel: DynamicChildItem) => {\n this.removeSourceHelper(subPanel.panel);\n });\n break;\n }\n\n case 'text': {\n break;\n }\n }\n }\n\n moveUp(index: number): void {\n this.moveDown(index - 1);\n }\n\n moveDown(index: number): void {\n this.slides.splice(index + 1, 0, this.slides.splice(index, 1)[0]);\n this.$emit('slides-updated', this.slides);\n }\n}\n","import { render } from \"./slide-toc.vue?vue&type=template&id=33456e0a&scoped=true&ts=true\"\nimport script from \"./slide-toc.vue?vue&type=script&lang=ts\"\nexport * from \"./slide-toc.vue?vue&type=script&lang=ts\"\n\nimport \"./slide-toc.vue?vue&type=style&index=0&id=33456e0a&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/storylines-editor/storylines-editor/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-33456e0a\"]])\n\nexport default __exports__","import { toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, withModifiers as _withModifiers, vModelSelect as _vModelSelect, withDirectives as _withDirectives } from \"vue\"\n\nconst _hoisted_1 = { class: \"mb-5\" }\nconst _hoisted_2 = [\"value\"]\nconst _hoisted_3 = /*#__PURE__*/_createElementVNode(\"br\", null, null, -1)\nconst _hoisted_4 = { class: \"mb-5\" }\nconst _hoisted_5 = [\"value\"]\nconst _hoisted_6 = { class: \"mb-5\" }\nconst _hoisted_7 = [\"value\"]\nconst _hoisted_8 = /*#__PURE__*/_createElementVNode(\"br\", null, null, -1)\nconst _hoisted_9 = { key: 0 }\nconst _hoisted_10 = [\"src\"]\nconst _hoisted_11 = {\n key: 1,\n class: \"image-preview\"\n}\nconst _hoisted_12 = { class: \"mb-5\" }\nconst _hoisted_13 = [\"value\"]\nconst _hoisted_14 = /*#__PURE__*/_createElementVNode(\"br\", null, null, -1)\nconst _hoisted_15 = [\"value\"]\nconst _hoisted_16 = /*#__PURE__*/_createElementVNode(\"br\", null, null, -1)\nconst _hoisted_17 = /*#__PURE__*/_createElementVNode(\"label\", { class: \"mb-5\" }, null, -1)\nconst _hoisted_18 = { class: \"inline-block\" }\nconst _hoisted_19 = /*#__PURE__*/_createElementVNode(\"br\", null, null, -1)\nconst _hoisted_20 = [\"value\"]\nconst _hoisted_21 = /*#__PURE__*/_createElementVNode(\"br\", null, null, -1)\nconst _hoisted_22 = /*#__PURE__*/_createElementVNode(\"label\", { class: \"mb-5\" }, null, -1)\nconst _hoisted_23 = { class: \"inline-block\" }\nconst _hoisted_24 = /*#__PURE__*/_createElementVNode(\"br\", null, null, -1)\nconst _hoisted_25 = [\"value\"]\nconst _hoisted_26 = /*#__PURE__*/_createElementVNode(\"br\", null, null, -1)\nconst _hoisted_27 = /*#__PURE__*/_createElementVNode(\"label\", { class: \"mb-5\" }, null, -1)\nconst _hoisted_28 = { class: \"inline-block\" }\nconst _hoisted_29 = /*#__PURE__*/_createElementVNode(\"br\", null, null, -1)\nconst _hoisted_30 = { class: \"mr-15\" }\nconst _hoisted_31 = { value: \"vertical\" }\nconst _hoisted_32 = { value: \"horizontal\" }\nconst _hoisted_33 = /*#__PURE__*/_createElementVNode(\"br\", null, null, -1)\nconst _hoisted_34 = /*#__PURE__*/_createElementVNode(\"label\", { class: \"mb-5\" }, null, -1)\nconst _hoisted_35 = { class: \"inline-block\" }\nconst _hoisted_36 = /*#__PURE__*/_createElementVNode(\"br\", null, null, -1)\nconst _hoisted_37 = { class: \"mb-5\" }\nconst _hoisted_38 = [\"value\"]\nconst _hoisted_39 = /*#__PURE__*/_createElementVNode(\"br\", null, null, -1)\nconst _hoisted_40 = /*#__PURE__*/_createElementVNode(\"br\", null, null, -1)\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_openBlock(), _createElementBlock(\"div\", null, [\n _createElementVNode(\"label\", _hoisted_1, _toDisplayString(_ctx.$t('editor.title')) + \":\", 1),\n _createElementVNode(\"input\", {\n type: \"text\",\n name: \"title\",\n value: _ctx.metadata.title,\n onChange: _cache[0] || (_cache[0] = \n//@ts-ignore\n(...args) => (_ctx.metadataChanged && _ctx.metadataChanged(...args))),\n class: \"w-1/3\"\n }, null, 40, _hoisted_2),\n _hoisted_3,\n _createElementVNode(\"label\", _hoisted_4, _toDisplayString(_ctx.$t('editor.slides.title')) + \":\", 1),\n _createElementVNode(\"input\", {\n type: \"text\",\n name: \"introTitle\",\n value: _ctx.metadata.introTitle,\n onChange: _cache[1] || (_cache[1] = \n//@ts-ignore\n(...args) => (_ctx.metadataChanged && _ctx.metadataChanged(...args))),\n class: \"w-1/4\"\n }, null, 40, _hoisted_5),\n _createElementVNode(\"label\", _hoisted_6, _toDisplayString(_ctx.$t('editor.slides.intro')) + \":\", 1),\n _createElementVNode(\"input\", {\n type: \"text\",\n name: \"introSubtitle\",\n value: _ctx.metadata.introSubtitle,\n onChange: _cache[2] || (_cache[2] = \n//@ts-ignore\n(...args) => (_ctx.metadataChanged && _ctx.metadataChanged(...args))),\n class: \"w-1/4\"\n }, null, 40, _hoisted_7),\n _hoisted_8,\n (!!_ctx.metadata.logoPreview)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_9, [\n _createElementVNode(\"label\", null, _toDisplayString(_ctx.$t('editor.logoPreview')) + \":\", 1),\n (!!_ctx.metadata.logoPreview && _ctx.metadata.logoPreview != 'error')\n ? (_openBlock(), _createElementBlock(\"img\", {\n key: 0,\n src: _ctx.metadata.logoPreview,\n class: \"image-preview\"\n }, null, 8, _hoisted_10))\n : _createCommentVNode(\"\", true),\n (_ctx.metadata.logoPreview == 'error')\n ? (_openBlock(), _createElementBlock(\"p\", _hoisted_11, _toDisplayString(_ctx.$t('editor.image.loadingError')), 1))\n : _createCommentVNode(\"\", true)\n ]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"label\", _hoisted_12, _toDisplayString(_ctx.$t('editor.logo')) + \":\", 1),\n _createElementVNode(\"input\", {\n type: \"text\",\n onChange: _cache[3] || (_cache[3] = ($event: any) => (_ctx.$emit('logo-source-changed', $event))),\n value: _ctx.metadata.logoName,\n class: \"w-1/4\"\n }, null, 40, _hoisted_13),\n _createElementVNode(\"button\", {\n onClick: _cache[4] || (_cache[4] = _withModifiers(\n//@ts-ignore\n(...args) => (_ctx.openFileSelector && _ctx.openFileSelector(...args)), [\"stop\"])),\n class: \"bg-black text-white hover:bg-gray-800\"\n }, _toDisplayString(_ctx.$t('editor.browse')), 1),\n (_ctx.metadata.logoName || _ctx.metadata.logoPreview)\n ? (_openBlock(), _createElementBlock(\"button\", {\n key: 1,\n onClick: _cache[5] || (_cache[5] = _withModifiers(\n//@ts-ignore\n(...args) => (_ctx.removeLogo && _ctx.removeLogo(...args)), [\"stop\"])),\n class: \"border border-black\"\n }, _toDisplayString(_ctx.$t('editor.remove')), 1))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"input\", {\n type: \"file\",\n id: \"logoUpload\",\n onChange: _cache[6] || (_cache[6] = ($event: any) => (_ctx.$emit('logo-changed', $event))),\n class: \"w-1/4\",\n style: {\"display\":\"none\"}\n }, null, 32),\n _hoisted_14,\n _createElementVNode(\"label\", null, _toDisplayString(_ctx.$t('editor.logoAltText')) + \":\", 1),\n _createElementVNode(\"input\", {\n type: \"text\",\n name: \"logoAltText\",\n value: _ctx.metadata.logoAltText,\n onChange: _cache[7] || (_cache[7] = \n//@ts-ignore\n(...args) => (_ctx.metadataChanged && _ctx.metadataChanged(...args))),\n class: \"w-2/3\"\n }, null, 40, _hoisted_15),\n _hoisted_16,\n _hoisted_17,\n _createElementVNode(\"p\", _hoisted_18, [\n _createElementVNode(\"i\", null, _toDisplayString(_ctx.$t('editor.logoAltText.desc')), 1)\n ]),\n _hoisted_19,\n _createElementVNode(\"label\", null, _toDisplayString(_ctx.$t('editor.contextLink')) + \":\", 1),\n _createElementVNode(\"input\", {\n type: \"text\",\n name: \"contextLink\",\n value: _ctx.metadata.contextLink,\n onChange: _cache[8] || (_cache[8] = \n//@ts-ignore\n(...args) => (_ctx.metadataChanged && _ctx.metadataChanged(...args))),\n class: \"w-2/3\"\n }, null, 40, _hoisted_20),\n _hoisted_21,\n _hoisted_22,\n _createElementVNode(\"p\", _hoisted_23, [\n _createElementVNode(\"i\", null, _toDisplayString(_ctx.$t('editor.contextLink.info')), 1)\n ]),\n _hoisted_24,\n _createElementVNode(\"label\", null, _toDisplayString(_ctx.$t('editor.contextLabel')) + \":\", 1),\n _createElementVNode(\"input\", {\n type: \"text\",\n name: \"contextLabel\",\n value: _ctx.metadata.contextLabel,\n onChange: _cache[9] || (_cache[9] = \n//@ts-ignore\n(...args) => (_ctx.metadataChanged && _ctx.metadataChanged(...args))),\n class: \"w-2/3\"\n }, null, 40, _hoisted_25),\n _hoisted_26,\n _hoisted_27,\n _createElementVNode(\"p\", _hoisted_28, [\n _createElementVNode(\"i\", null, _toDisplayString(_ctx.$t('editor.contextLabel.info')), 1)\n ]),\n _hoisted_29,\n _createElementVNode(\"label\", _hoisted_30, _toDisplayString(_ctx.$t('editor.tocOrientation')) + \":\", 1),\n _withDirectives(_createElementVNode(\"select\", {\n class: \"border-solid border border-black p-1\",\n name: \"tocOrientation\",\n id: \"toc\",\n onChange: _cache[10] || (_cache[10] = \n//@ts-ignore\n(...args) => (_ctx.metadataChanged && _ctx.metadataChanged(...args))),\n \"onUpdate:modelValue\": _cache[11] || (_cache[11] = ($event: any) => ((_ctx.metadata.tocOrientation) = $event))\n }, [\n _createElementVNode(\"option\", _hoisted_31, _toDisplayString(_ctx.$t('editor.tocOrientation.vertical')), 1),\n _createElementVNode(\"option\", _hoisted_32, _toDisplayString(_ctx.$t('editor.tocOrientation.horizontal')), 1)\n ], 544), [\n [_vModelSelect, _ctx.metadata.tocOrientation]\n ]),\n _hoisted_33,\n _hoisted_34,\n _createElementVNode(\"p\", _hoisted_35, [\n _createElementVNode(\"i\", null, _toDisplayString(_ctx.$t('editor.tocOrientation.info')), 1)\n ]),\n _hoisted_36,\n _createElementVNode(\"label\", _hoisted_37, _toDisplayString(_ctx.$t('editor.dateModified')) + \":\", 1),\n _createElementVNode(\"input\", {\n type: \"date\",\n name: \"dateModified\",\n value: _ctx.metadata.dateModified,\n onChange: _cache[12] || (_cache[12] = \n//@ts-ignore\n(...args) => (_ctx.metadataChanged && _ctx.metadataChanged(...args)))\n }, null, 40, _hoisted_38),\n _hoisted_39,\n _hoisted_40\n ]))\n}","\nimport { Prop, Vue } from 'vue-property-decorator';\n\nexport default class MetadataEditorV extends Vue {\n @Prop() metadata!: {\n title: string;\n introTitle: string;\n introSubtitle: string;\n logoName: string;\n logoPreview: string;\n logoAltText: string;\n contextLink: string;\n contextLabel: string;\n tocOrientation: string;\n dateModified: string;\n };\n\n openFileSelector(): void {\n document.getElementById('logoUpload')?.click();\n }\n\n metadataChanged(event: Event): void {\n this.$emit(\n 'metadata-changed',\n (event.target as HTMLInputElement).name,\n (event.target as HTMLInputElement).value\n );\n }\n\n removeLogo(): void {\n this.metadata.logoName = '';\n this.metadata.logoPreview = '';\n }\n}\n","import { render } from \"./metadata-content.vue?vue&type=template&id=ae35e790&ts=true\"\nimport script from \"./metadata-content.vue?vue&type=script&lang=ts\"\nexport * from \"./metadata-content.vue?vue&type=script&lang=ts\"\n\nimport exportComponent from \"/home/runner/work/storylines-editor/storylines-editor/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, resolveComponent as _resolveComponent, resolveDirective as _resolveDirective, withCtx as _withCtx, createBlock as _createBlock, withDirectives as _withDirectives, toDisplayString as _toDisplayString, normalizeClass as _normalizeClass, createCommentVNode as _createCommentVNode, Transition as _Transition, createVNode as _createVNode, normalizeProps as _normalizeProps, guardReactiveProps as _guardReactiveProps, renderSlot as _renderSlot, withModifiers as _withModifiers, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-ec080f10\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"editor-container\" }\nconst _hoisted_2 = { class: \"editor-header sticky flex items-center border-b border-black bg-gray-200 py-2 px-2 z-10\" }\nconst _hoisted_3 = { class: \"mx-1\" }\nconst _hoisted_4 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"18\",\n height: \"18.001\",\n viewBox: \"0 0 18 18.001\"\n}, [\n /*#__PURE__*/_createElementVNode(\"path\", {\n id: \"logout-Icon-SVG-098767893\",\n d: \"M5.808,13.782v1.406A2.816,2.816,0,0,0,8.621,18h7.067A2.816,2.816,0,0,0,18.5,15.188V2.813A2.816,2.816,0,0,0,15.687,0H8.621A2.816,2.816,0,0,0,5.808,2.813V4.219a.7.7,0,0,0,1.406,0V2.813A1.408,1.408,0,0,1,8.621,1.406h7.067a1.408,1.408,0,0,1,1.406,1.406V15.188a1.408,1.408,0,0,1-1.406,1.406H8.621a1.408,1.408,0,0,1-1.406-1.406V13.782a.7.7,0,0,0-1.406,0ZM1.014,7.793,2.589,6.218a.7.7,0,0,1,.994.994l-1.12,1.12h8.443a.7.7,0,1,1,0,1.406H2.463l1.12,1.12a.7.7,0,1,1-.994.994L1.014,10.279A1.76,1.76,0,0,1,1.014,7.793Zm0,0\",\n transform: \"translate(-0.5)\"\n })\n], -1))\nconst _hoisted_5 = { class: \"ml-3 flex flex-col\" }\nconst _hoisted_6 = { class: \"font-semibold text-lg\" }\nconst _hoisted_7 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", { class: \"ml-auto\" }, null, -1))\nconst _hoisted_8 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"svg\", {\n class: \"inline\",\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n width: \"18px\",\n height: \"18px\"\n}, [\n /*#__PURE__*/_createElementVNode(\"path\", { d: \"M 2 2 L 4.9394531 4.9394531 C 3.1262684 6.7482143 2 9.2427079 2 12 C 2 17.514 6.486 22 12 22 C 17.514 22 22 17.514 22 12 C 22 6.486 17.514 2 12 2 L 12 4 C 16.411 4 20 7.589 20 12 C 20 16.411 16.411 20 12 20 C 7.589 20 4 16.411 4 12 C 4 9.7940092 4.9004767 7.7972757 6.3496094 6.3496094 L 9 9 L 9 2 L 2 2 z\" })\n], -1))\nconst _hoisted_9 = { class: \"font-normal ml-1\" }\nconst _hoisted_10 = {\n key: 0,\n class: \"border-2 border-red-700 text-red-700 rounded p-1 mr-2\"\n}\nconst _hoisted_11 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", { class: \"align-middle inline-block mr-1 pb-1 fill-current\" }, [\n /*#__PURE__*/_createElementVNode(\"svg\", {\n \"clip-rule\": \"evenodd\",\n \"fill-rule\": \"evenodd\",\n class: \"fill-red-600\",\n width: \"18\",\n height: \"18\",\n \"stroke-linejoin\": \"round\",\n \"stroke-miterlimit\": \"2\",\n viewBox: \"0 0 24 24\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, [\n /*#__PURE__*/_createElementVNode(\"path\", {\n d: \"m12.002 21.534c5.518 0 9.998-4.48 9.998-9.998s-4.48-9.997-9.998-9.997c-5.517 0-9.997 4.479-9.997 9.997s4.48 9.998 9.997 9.998zm0-1.5c-4.69 0-8.497-3.808-8.497-8.498s3.807-8.497 8.497-8.497 8.498 3.807 8.498 8.497-3.808 8.498-8.498 8.498zm0-6.5c-.414 0-.75-.336-.75-.75v-5.5c0-.414.336-.75.75-.75s.75.336.75.75v5.5c0 .414-.336.75-.75.75zm-.002 3c.552 0 1-.448 1-1s-.448-1-1-1-1 .448-1 1 .448 1 1 1z\",\n \"fill-rule\": \"nonzero\"\n })\n ])\n], -1))\nconst _hoisted_12 = { class: \"align-center inline-block select-none\" }\nconst _hoisted_13 = [\"disabled\"]\nconst _hoisted_14 = { class: \"inline-block\" }\nconst _hoisted_15 = {\n key: 0,\n class: \"align-middle inline-block px-1\"\n}\nconst _hoisted_16 = { class: \"flex\" }\nconst _hoisted_17 = { class: \"w-80 flex-shrink-0 border-r border-black editor-toc\" }\nconst _hoisted_18 = { class: \"flex items-center justify-center border-b p-2\" }\nconst _hoisted_19 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", { class: \"align-middle inline-block px-1\" }, [\n /*#__PURE__*/_createElementVNode(\"svg\", {\n \"clip-rule\": \"evenodd\",\n \"fill-rule\": \"evenodd\",\n width: \"16\",\n height: \"16\",\n \"stroke-linejoin\": \"round\",\n \"stroke-miterlimit\": \"2\",\n viewBox: \"0 0 24 24\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, [\n /*#__PURE__*/_createElementVNode(\"path\", {\n d: \"m4.481 15.659c-1.334 3.916-1.48 4.232-1.48 4.587 0 .528.46.749.749.749.352 0 .668-.137 4.574-1.492zm1.06-1.061 3.846 3.846 11.321-11.311c.195-.195.293-.45.293-.707 0-.255-.098-.51-.293-.706-.692-.691-1.742-1.74-2.435-2.432-.195-.195-.451-.293-.707-.293-.254 0-.51.098-.706.293z\",\n \"fill-rule\": \"nonzero\"\n })\n ])\n], -1))\nconst _hoisted_20 = { class: \"align-middle inline-block\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_router_link = _resolveComponent(\"router-link\")!\n const _component_spinner = _resolveComponent(\"spinner\")!\n const _component_slide_toc = _resolveComponent(\"slide-toc\")!\n const _component_slide_editor = _resolveComponent(\"slide-editor\")!\n const _component_confirmation_modal = _resolveComponent(\"confirmation-modal\")!\n const _directive_tippy = _resolveDirective(\"tippy\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"span\", _hoisted_3, [\n _withDirectives((_openBlock(), _createBlock(_component_router_link, {\n to: { name: 'home' },\n class: \"mt-1 flex justify-center h-full w-full\",\n target: \"\"\n }, {\n default: _withCtx(() => [\n _hoisted_4\n ]),\n _: 1\n })), [\n [_directive_tippy, {\n delay: '200',\n placement: 'right',\n content: _ctx.$t('editor.returnToLanding'),\n animateFill: true\n }]\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_5, [\n _createElementVNode(\"span\", _hoisted_6, _toDisplayString(_ctx.metadata.title), 1),\n _createElementVNode(\"span\", {\n class: _normalizeClass(_ctx.metadata.title ? 'text-xs' : '')\n }, \"UUID: \" + _toDisplayString(_ctx.uuid), 3)\n ]),\n _hoisted_7,\n (_ctx.unsavedChanges)\n ? _withDirectives((_openBlock(), _createElementBlock(\"button\", {\n key: 0,\n onClick: _cache[0] || (_cache[0] = ($event: any) => (_ctx.$vfm.open(`reload-config`))),\n class: \"border-2 border-red-700 text-red-700 rounded p-1 mr-2\"\n }, [\n _hoisted_8,\n _createElementVNode(\"span\", _hoisted_9, _toDisplayString(_ctx.$t('editor.resetChanges')), 1)\n ])), [\n [_directive_tippy, {\n delay: '200',\n placement: 'bottom',\n content: _ctx.$t('editor.resetChanges'),\n animateFill: true\n }]\n ])\n : _createCommentVNode(\"\", true),\n _createVNode(_Transition, { name: \"fade\" }, {\n default: _withCtx(() => [\n (_ctx.unsavedChanges)\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_10, [\n _hoisted_11,\n _createElementVNode(\"span\", _hoisted_12, _toDisplayString(_ctx.$t('editor.unsavedChanges')), 1)\n ]))\n : _createCommentVNode(\"\", true)\n ]),\n _: 1\n }),\n _renderSlot(_ctx.$slots, \"langModal\", _normalizeProps(_guardReactiveProps({ unsavedChanges: _ctx.unsavedChanges })), undefined, true),\n _createElementVNode(\"button\", {\n onClick: _cache[1] || (_cache[1] = \n//@ts-ignore\n(...args) => (_ctx.preview && _ctx.preview(...args))),\n class: \"bg-white border border-black hover:bg-gray-100\"\n }, _toDisplayString(_ctx.$t('editor.preview')), 1),\n _createElementVNode(\"button\", {\n onClick: _cache[2] || (_cache[2] = \n//@ts-ignore\n(...args) => (_ctx.saveChanges && _ctx.saveChanges(...args))),\n class: \"bg-black text-white hover:bg-gray-900\",\n disabled: _ctx.saving\n }, [\n _createElementVNode(\"span\", _hoisted_14, _toDisplayString(_ctx.saving ? _ctx.$t('editor.savingChanges') : _ctx.$t('editor.saveChanges')), 1),\n (_ctx.saving)\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_15, [\n _createVNode(_component_spinner, {\n size: \"16px\",\n color: \"#009cd1\",\n class: \"ml-1 mb-1\"\n })\n ]))\n : _createCommentVNode(\"\", true)\n ], 8, _hoisted_13)\n ]),\n _createElementVNode(\"div\", _hoisted_16, [\n _createElementVNode(\"div\", _hoisted_17, [\n _createElementVNode(\"div\", _hoisted_18, [\n _createElementVNode(\"button\", {\n onClick: _cache[3] || (_cache[3] = _withModifiers(($event: any) => (_ctx.$vfm.open('metadata-edit-modal')), [\"stop\"]))\n }, [\n _hoisted_19,\n _createElementVNode(\"span\", _hoisted_20, _toDisplayString(_ctx.$t('editor.editMetadata')), 1)\n ])\n ]),\n _createVNode(_component_slide_toc, {\n slides: _ctx.slides,\n currentSlide: _ctx.currentSlide,\n slideIndex: _ctx.slideIndex,\n onSlideChange: _ctx.selectSlide,\n onSlidesUpdated: _ctx.updateSlides,\n configFileStructure: _ctx.configFileStructure,\n lang: _ctx.configLang,\n sourceCounts: _ctx.sourceCounts\n }, null, 8, [\"slides\", \"currentSlide\", \"slideIndex\", \"onSlideChange\", \"onSlidesUpdated\", \"configFileStructure\", \"lang\", \"sourceCounts\"])\n ]),\n _createVNode(_component_slide_editor, {\n ref: \"slide\",\n configFileStructure: _ctx.configFileStructure,\n currentSlide: _ctx.currentSlide,\n lang: _ctx.configLang,\n slideIndex: _ctx.slideIndex,\n isLast: _ctx.slideIndex === _ctx.slides.length - 1,\n uid: _ctx.uuid,\n onSlideChange: _ctx.selectSlide,\n onSlideEdit: _ctx.onSlidesEdited,\n onCustomSlideUpdated: _ctx.updateCustomSlide,\n sourceCounts: _ctx.sourceCounts\n }, null, 8, [\"configFileStructure\", \"currentSlide\", \"lang\", \"slideIndex\", \"isLast\", \"uid\", \"onSlideChange\", \"onSlideEdit\", \"onCustomSlideUpdated\", \"sourceCounts\"])\n ]),\n _renderSlot(_ctx.$slots, \"metadataModal\", {}, undefined, true),\n _createVNode(_component_confirmation_modal, {\n name: `reload-config`,\n message: _ctx.$t('editor.refreshChanges.modal'),\n onOk: _cache[4] || (_cache[4] = ($event: any) => (_ctx.$emit('refresh-config')))\n }, null, 8, [\"message\"])\n ]))\n}","\nimport { Options, Prop, Vue, Watch } from 'vue-property-decorator';\nimport { ConfigFileStructure, MetadataContent, Slide, SourceCounts, StoryRampConfig } from '@/definitions';\n\nimport { VueSpinnerOval } from 'vue3-spinners';\nimport SlideEditorV from './slide-editor.vue';\nimport SlideTocV from './slide-toc.vue';\nimport MetadataContentV from './helpers/metadata-content.vue';\nimport ConfirmationModalV from './helpers/confirmation-modal.vue';\n\n@Options({\n components: {\n 'metadata-content': MetadataContentV,\n 'confirmation-modal': ConfirmationModalV,\n spinner: VueSpinnerOval,\n 'slide-editor': SlideEditorV,\n 'slide-toc': SlideTocV\n }\n})\nexport default class EditorV extends Vue {\n @Prop() configs!: {\n [key: string]: StoryRampConfig | undefined;\n };\n @Prop() configFileStructure!: ConfigFileStructure | undefined;\n @Prop() sourceCounts!: SourceCounts;\n @Prop() metadata!: MetadataContent;\n @Prop() slides!: Slide[];\n @Prop() configLang!: string;\n @Prop() saving!: boolean;\n @Prop() unsavedChanges!: boolean;\n\n // Form properties.\n uuid = '';\n logoImage: undefined | File = undefined;\n loadSlides: undefined | Slide[] = undefined;\n currentSlide: Slide | string = '';\n slideIndex = -1;\n\n @Watch('slides', { deep: true })\n onSlidesEdited(): void {\n this.$emit('save-status', true);\n }\n\n @Watch('metadata', { deep: true })\n onMetadataEdited(): void {\n this.$emit('save-status', true);\n }\n\n created(): void {\n this.loadSlides = this.slides;\n this.uuid = this.$route.params.uid as string;\n\n window.addEventListener('beforeunload', this.beforeWindowUnload);\n }\n\n mounted(): void {\n // from https://css-tricks.com/how-to-detect-when-a-sticky-element-gets-pinned/\n const observer = new IntersectionObserver(([e]) => e.target.classList.toggle('z-40', e.intersectionRatio < 1), {\n threshold: [1]\n });\n\n observer.observe(document.querySelector('.editor-header') as Element);\n }\n\n beforeDestroy(): void {\n window.removeEventListener('beforeunload', this.beforeWindowUnload);\n }\n\n /**\n * Change current slide to selected slide.\n */\n selectSlide(index: number): void {\n // save changes to current slide before changing slides\n if (this.$refs.slide !== undefined) {\n this.$nextTick(() => {\n (this.$refs.slide as SlideEditorV).saveChanges();\n });\n }\n\n // Quickly swap to loading page, and then swap to new slide. Allows Vue to re-draw page correctly.\n this.currentSlide = {\n title: '',\n panel: [{ type: 'loading-page' }, { type: 'loading-page' }]\n };\n\n setTimeout(() => {\n this.currentSlide = index === -1 ? '' : (this.loadSlides as Slide[])[index];\n this.slideIndex = index;\n (this.$refs.slide as SlideEditorV).panelIndex = 0;\n (this.$refs.slide as SlideEditorV).advancedEditorView = false;\n window.scrollTo(0, 0);\n }, 5);\n }\n\n /**\n * Update slide for a custom config made through advanced editor.\n */\n updateCustomSlide(slideConfig: Slide, save?: boolean): void {\n this.currentSlide = slideConfig;\n // save changes emitted from advanced editor\n if (save) {\n this.slides[this.slideIndex] = slideConfig;\n this.$emit('save-changes');\n }\n }\n\n /**\n * Updates slides after adding, removing, or reordering.\n */\n updateSlides(slides: Slide[]): void {\n this.loadSlides = slides;\n this.slideIndex = this.loadSlides.indexOf(this.currentSlide as Slide);\n }\n\n /**\n * Open current editor config as a new Storylines product in new tab.\n */\n preview(): void {\n // save current slide final changes before previewing product\n if (this.$refs.slide !== undefined) {\n this.$nextTick(() => {\n (this.$refs.slide as SlideEditorV).saveChanges();\n });\n }\n\n setTimeout(() => {\n const routeData = this.$router.resolve({ name: 'preview' });\n const previewTab = window.open(routeData.href, '_blank');\n (previewTab as Window).props = {\n config: JSON.parse(JSON.stringify(this.configs[this.configLang])),\n configFileStructure: this.configFileStructure\n };\n }, 5);\n }\n\n saveChanges(): void {\n // save current slide final changes before generating config file\n if (this.$refs.slide !== undefined) {\n this.$nextTick(() => {\n (this.$refs.slide as SlideEditorV).saveChanges();\n // emit save changes event\n this.$emit('save-changes');\n });\n }\n }\n\n beforeWindowUnload(e: BeforeUnloadEvent): void {\n // show popup if when leaving page with unsaved changes\n if (this.unsavedChanges && !window.confirm()) {\n e.preventDefault();\n }\n }\n}\n","import { render } from \"./editor.vue?vue&type=template&id=ec080f10&scoped=true&ts=true\"\nimport script from \"./editor.vue?vue&type=script&lang=ts\"\nexport * from \"./editor.vue?vue&type=script&lang=ts\"\n\nimport \"./editor.vue?vue&type=style&index=0&id=ec080f10&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/storylines-editor/storylines-editor/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-ec080f10\"]])\n\nexport default __exports__","\nimport { Options, Prop, Vue } from 'vue-property-decorator';\nimport { RouteLocationNormalized } from 'vue-router';\nimport { AxiosResponse } from 'axios';\nimport {\n AudioPanel,\n BasePanel,\n ChartPanel,\n ConfigFileStructure,\n DynamicChildItem,\n DynamicPanel,\n ImagePanel,\n MapPanel,\n MetadataContent,\n Slide,\n SlideshowPanel,\n SourceCounts,\n StoryRampConfig,\n TextPanel,\n VideoPanel\n} from '@/definitions';\nimport { VueSpinnerOval } from 'vue3-spinners';\nimport { VueFinalModal } from 'vue-final-modal';\n\nconst JSZip = require('jszip');\nconst axios = require('axios').default;\nconst { v4: uuidv4 } = require('uuid');\n\nimport Message from 'vue-m-message';\nimport SlideEditorV from './slide-editor.vue';\nimport SlideTocV from './slide-toc.vue';\nimport MetadataContentV from './helpers/metadata-content.vue';\nimport ConfirmationModalV from './helpers/confirmation-modal.vue';\nimport EditorV from './editor.vue';\n\nimport cloneDeep from 'clone-deep';\n\ninterface RouteParams {\n uid: string;\n configLang: string;\n configs: {\n [key: string]: StoryRampConfig | undefined;\n };\n configFileStructure: ConfigFileStructure;\n metadata: MetadataContent;\n slides: Slide[];\n sourceCounts: SourceCounts;\n existing: boolean;\n unsavedChanges: boolean;\n}\n\n@Options({\n components: {\n Editor: EditorV,\n 'confirmation-modal': ConfirmationModalV,\n 'metadata-content': MetadataContentV,\n spinner: VueSpinnerOval,\n 'slide-editor': SlideEditorV,\n 'slide-toc': SlideTocV,\n 'vue-final-modal': VueFinalModal\n }\n})\nexport default class MetadataEditorV extends Vue {\n @Prop({ default: true }) editExisting!: boolean; // true if editing existing storylines product, false if new product\n\n configs: {\n [key: string]: StoryRampConfig | undefined;\n } = { en: undefined, fr: undefined };\n configFileStructure: ConfigFileStructure | undefined = undefined;\n loadExisting = false;\n reloadExisting = false;\n loadStatus = 'waiting';\n loadEditor = false;\n error = false; // whether an error has occurred\n warning = false; // used for duplicate uuid warning\n configLang = 'en';\n\n // Saving properties.\n saving = false;\n unsavedChanges = false;\n\n // Form properties.\n uuid = '';\n logoImage: undefined | File = undefined;\n metadata: MetadataContent = {\n title: '',\n introTitle: '',\n introSubtitle: '',\n logoPreview: '',\n logoName: '',\n logoAltText: '',\n contextLink: '',\n contextLabel: '',\n tocOrientation: '',\n dateModified: ''\n };\n // add more required metadata fields to here as needed\n reqFields: { uuid: boolean } = {\n uuid: true\n };\n slides: Slide[] = [];\n sourceCounts: SourceCounts = {};\n\n created(): void {\n this.loadExisting = this.editExisting;\n\n // Generate UUID for new product\n this.uuid = (this.$route.params.uid as string) ?? (this.loadExisting ? undefined : uuidv4());\n this.configLang = this.$route.params.configLang ? (this.$route.params.configLang as string) : 'en';\n\n // Initialize Storylines config and the configuration structure.\n this.configs = { en: undefined, fr: undefined };\n this.configFileStructure = undefined;\n\n // set any metadata default values for creating new product\n if (!this.loadExisting) {\n // set current date as default\n const curDate = new Date();\n const year = curDate.getFullYear();\n const month = (curDate.getMonth() + 1).toString().padStart(2, '0');\n const day = curDate.getDate().toString().padStart(2, '0');\n this.metadata.dateModified = `${year}-${month}-${day}`;\n // set vertical as the default table of contents orientation\n this.metadata.tocOrientation = 'vertical';\n }\n\n // Find which view to render based on route\n if (this.$route.name === 'editor') {\n this.loadEditor = true;\n const props = this.$route.meta.data as RouteParams;\n\n // Properties already passed in props, load editor view (could use a refactor to clean up this workflow process)\n if (props && props.configs && props.configFileStructure) {\n this.configs = props.configs;\n this.configFileStructure = props.configFileStructure;\n this.metadata = props.metadata;\n this.slides = props.slides;\n this.sourceCounts = props.sourceCounts;\n this.loadExisting = props.existing;\n this.unsavedChanges = props.unsavedChanges;\n // Load product logo (if provided).\n const logo = this.configs[this.configLang]?.introSlide.logo?.src;\n const logoSrc = `assets/${this.configLang}/${this.metadata.logoName}`;\n\n if (logo) {\n const logoFile = this.configFileStructure?.zip.file(logoSrc);\n if (logoFile) {\n logoFile.async('blob').then((img: Blob) => {\n this.logoImage = new File([img], this.metadata.logoName);\n this.metadata.logoPreview = URL.createObjectURL(img);\n this.loadStatus = 'loaded';\n });\n } else {\n // Fill in the field with this value whether it exists or not.\n this.metadata.logoName = logo;\n\n // If it doesn't exist, maybe it's a remote file?\n fetch(logo).then((data: Response) => {\n if (data.status !== 404) {\n data.blob().then((blob: Blob) => {\n this.logoImage = new File([blob], this.metadata.logoName);\n this.metadata.logoPreview = logo;\n this.loadStatus = 'loaded';\n });\n }\n });\n }\n } else {\n // No logo to load.\n this.loadStatus = 'loaded';\n }\n\n return;\n }\n }\n\n // If a product UUID is provided, fetch the contents from the server.\n if (this.$route.params.uid) {\n this.generateRemoteConfig();\n }\n }\n\n /**\n * Generates a new product file for brand new products.\n */\n generateNewConfig(): void {\n const configZip = new JSZip();\n\n // Generate a new configuration file and populate required fields.\n this.configs[this.configLang] = this.configHelper();\n const config = this.configs[this.configLang] as StoryRampConfig;\n\n // Set the source of the product logo\n if (!this.metadata.logoName) {\n config.introSlide.logo.src = '';\n } else if (!this.metadata.logoName.includes('http')) {\n config.introSlide.logo.src = `${this.uuid}/assets/${this.configLang}/${this.logoImage?.name}`;\n } else {\n config.introSlide.logo.src = this.metadata.logoName;\n }\n config.slides = [];\n\n const otherLang = this.configLang === 'en' ? 'fr' : 'en';\n this.configs[otherLang] = cloneDeep(config);\n (this.configs[otherLang] as StoryRampConfig).lang = otherLang;\n const formattedOtherLangConfig = JSON.stringify(this.configs[otherLang], null, 4);\n\n // Add the newly generated Storylines configuration file to the ZIP file.\n const fileName = `${this.uuid}_${this.configLang}.json`;\n const formattedConfigFile = JSON.stringify(config, null, 4);\n\n configZip.file(fileName, formattedConfigFile);\n configZip.file(`${this.uuid}_${otherLang}.json`, formattedOtherLangConfig);\n\n // Generate the file structure, defer uploading the image until the structure is created.\n this.configFileStructureHelper(configZip, this.logoImage);\n }\n\n configHelper(): StoryRampConfig {\n return {\n title: this.metadata.title,\n lang: this.configLang,\n introSlide: {\n logo: {\n src: ''\n },\n title: this.metadata.introTitle,\n subtitle: this.metadata.introSubtitle\n },\n slides: [],\n contextLabel: this.metadata.contextLabel,\n contextLink: this.metadata.contextLink,\n tocOrientation: this.metadata.tocOrientation,\n dateModified: this.metadata.dateModified\n };\n }\n\n /**\n * Provided with a UID, retrieve the project contents from the file server.\n */\n generateRemoteConfig(): void {\n this.loadStatus = 'loading';\n // Attempt to fetch the project from the server.\n fetch(`http://localhost:6040/retrieve/${this.uuid}`)\n .then((res: Response) => {\n if (res.status === 404) {\n // Product not found.\n Message.error(`The requested UUID '${this.uuid ?? ''}' does not exist.`);\n this.error = true;\n this.loadStatus = 'waiting';\n this.clearConfig();\n } else {\n const configZip = new JSZip();\n // Files retrieved. Convert them into a JSZip object.\n res.blob().then((file: Blob) => {\n configZip.loadAsync(file).then(() => {\n this.configFileStructureHelper(configZip);\n });\n });\n }\n })\n .catch(() => {\n Message.error(`Failed to load product, no response from server`);\n this.loadStatus = 'loaded';\n });\n }\n\n findSources(configs: { [key: string]: StoryRampConfig | undefined }): void {\n ['en', 'fr'].forEach((lang) => {\n if (configs[lang]?.introSlide.logo?.src) {\n this.incrementSourceCount((configs[lang] as StoryRampConfig).introSlide.logo.src);\n }\n\n configs[lang]?.slides.forEach((slide) => {\n slide.panel.forEach((panel) => {\n this.panelSourceHelper(panel);\n });\n });\n });\n }\n\n panelSourceHelper(panel: BasePanel): void {\n switch (panel.type) {\n case 'dynamic':\n (panel as DynamicPanel).children.forEach((subPanel: DynamicChildItem) => {\n this.panelSourceHelper(subPanel.panel);\n });\n break;\n case 'slideshow':\n (panel as SlideshowPanel).items.forEach((item: ChartPanel | TextPanel | ImagePanel | MapPanel) => {\n this.panelSourceHelper(item);\n });\n break;\n case 'chart':\n this.incrementSourceCount((panel as ChartPanel).src);\n break;\n case 'image':\n this.incrementSourceCount((panel as ImagePanel).src);\n break;\n case 'video':\n if ((panel as VideoPanel).videoType === 'local') {\n this.incrementSourceCount((panel as VideoPanel).src);\n }\n break;\n case 'audio':\n this.incrementSourceCount((panel as AudioPanel).src);\n break;\n case 'map':\n this.incrementSourceCount((panel as MapPanel).config);\n break;\n case 'text':\n break;\n default:\n break;\n }\n }\n\n incrementSourceCount(src: string): void {\n if (this.sourceCounts[src]) {\n this.sourceCounts[src] += 1;\n } else {\n this.sourceCounts[src] = 1;\n }\n }\n\n /**\n * Generates or loads a ZIP file and creates required project folders if needed.\n * Returns an object that makes it easy to access any specific folder.\n */\n configFileStructureHelper(configZip: typeof JSZip, uploadLogo?: File | undefined): void {\n const assetsFolder = configZip.folder('assets');\n const chartsFolder = configZip.folder('charts');\n const rampConfigFolder = configZip.folder('ramp-config');\n\n this.configFileStructure = {\n uuid: this.uuid,\n zip: configZip,\n configs: this.configs as unknown as { [key: string]: StoryRampConfig },\n assets: {\n en: assetsFolder.folder('en'),\n fr: assetsFolder.folder('fr')\n },\n charts: {\n en: chartsFolder.folder('en'),\n fr: chartsFolder.folder('fr')\n },\n rampConfig: {\n en: rampConfigFolder.folder('en'),\n fr: rampConfigFolder.folder('fr')\n }\n };\n\n // If uploadLogo is set, upload the logo to the directory.\n if (uploadLogo !== undefined) {\n this.configFileStructure.assets[this.configLang].file(uploadLogo?.name, uploadLogo);\n }\n\n this.loadConfig();\n }\n\n /**\n * Loads a configuration file from the product folder, and sets application data\n * as needed.\n */\n async loadConfig(config?: StoryRampConfig): Promise {\n if (config) {\n this.useConfig(config);\n return;\n }\n\n try {\n const enFile = this.configFileStructure?.zip.file(`${this.uuid}_en.json`);\n const frFile = this.configFileStructure?.zip.file(`${this.uuid}_fr.json`);\n await enFile?.async('string').then((res: string) => {\n this.configs['en'] = JSON.parse(res);\n });\n await frFile?.async('string').then((res: string) => {\n this.configs['fr'] = JSON.parse(res);\n });\n } catch {\n Message.error(`The requested product '${this.uuid ?? ''}' is malformed.`);\n this.loadStatus = 'waiting';\n this.clearConfig();\n return;\n }\n\n if (this.loadExisting) {\n this.loadStatus = 'waiting';\n Message.success('Successfully loaded storyline!');\n } else {\n this.loadStatus = 'loaded';\n }\n\n // Load in project data.\n if (this.configs[this.configLang]) {\n this.useConfig(this.configs[this.configLang] as StoryRampConfig);\n this.findSources(this.configs);\n // Update router path\n if (this.reloadExisting) {\n this.loadEditor = true;\n this.generateConfig();\n this.updateEditorPath();\n } else if (!this.loadExisting) {\n this.loadEditor = true;\n this.updateEditorPath();\n }\n }\n }\n\n useConfig(config: StoryRampConfig): void {\n this.metadata.title = config.title;\n this.metadata.introTitle = config.introSlide.title;\n this.metadata.introSubtitle = config.introSlide.subtitle;\n this.metadata.contextLink = config.contextLink;\n this.metadata.contextLabel = config.contextLabel;\n this.metadata.tocOrientation = config.tocOrientation;\n this.metadata.dateModified = config.dateModified;\n\n this.slides = config.slides;\n\n const logo = config.introSlide.logo?.src;\n if (logo) {\n // Set the alt text for the logo.\n this.metadata.logoAltText = config.introSlide.logo?.altText ? config.introSlide.logo.altText : '';\n\n // Fetch the logo from the folder (if it exists).\n const logoSrc = `${logo.substring(logo.indexOf('/') + 1)}`;\n const logoName = `${logo.split('/')[logo.split('/').length - 1]}`;\n const logoFile = this.configFileStructure?.zip.file(logoSrc);\n\n if (logoFile) {\n logoFile.async('blob').then((img: Blob) => {\n this.logoImage = new File([img], logoName);\n this.metadata.logoPreview = URL.createObjectURL(img);\n this.metadata.logoName = logoName;\n this.loadStatus = 'loaded';\n });\n } else {\n // Fill in the field with this value whether it exists or not.\n this.metadata.logoName = logo;\n\n // If it doesn't exist, maybe it's a remote file?\n fetch(logo).then((data: Response) => {\n if (data.status !== 404) {\n data.blob().then((blob: Blob) => {\n this.logoImage = new File([blob], logoName);\n this.metadata.logoPreview = logo;\n this.loadStatus = 'loaded';\n });\n }\n });\n }\n }\n }\n\n /**\n * Called when `Save Changes` is pressed. Re-generates the Storylines configuration file\n * with the new changes, then generates and submits the product file to the server.\n */\n generateConfig(): ConfigFileStructure {\n this.saving = true;\n\n // Update the configuration file.\n const fileName = `${this.uuid}_${this.configLang}.json`;\n const formattedConfigFile = JSON.stringify(this.configs[this.configLang], null, 4);\n\n this.configFileStructure?.zip.file(fileName, formattedConfigFile);\n\n // Upload the ZIP file.\n this.configFileStructure?.zip.generateAsync({ type: 'blob' }).then((content: Blob) => {\n const formData = new FormData();\n formData.append('data', content, `${this.uuid}.zip`);\n const headers = { 'Content-Type': 'multipart/form-data' };\n\n axios\n .post('http://localhost:6040/upload', formData, { headers })\n .then((res: AxiosResponse) => {\n res.data.files; // binary representation of the file\n res.status; // HTTP status\n this.unsavedChanges = false;\n this.loadExisting = true; // if editExisting was false, we can now set it to true\n Message.success('Successfully saved changes!');\n })\n .catch(() => {\n Message.error('Failed to save changes.');\n })\n .finally(() => {\n // padding to prevent save button from being clicked rapidly\n setTimeout(() => {\n this.saving = false;\n }, 500);\n });\n });\n\n return this.configFileStructure as ConfigFileStructure;\n }\n\n updateMetadata(\n key:\n | 'title'\n | 'introTitle'\n | 'introSubtitle'\n | 'contextLink'\n | 'contextLabel'\n | 'tocOrientation'\n | 'dateModified',\n value: string\n ): void {\n this.metadata[key] = value;\n this.unsavedChanges = true;\n }\n\n /**\n * Called when `Save Changes` is pressed on metadata page. Save metadata content fields\n * to config file. If `publish` is set to true, publish to server as well.\n */\n saveMetadata(publish = false): void {\n // update metadata content to existing config only if it has been successfully loaded\n const config = this.configs[this.configLang];\n if (config !== undefined) {\n config.title = this.metadata.title;\n config.introSlide.title = this.metadata.introTitle;\n config.introSlide.subtitle = this.metadata.introSubtitle;\n config.contextLink = this.metadata.contextLink;\n config.contextLabel = this.metadata.contextLabel;\n config.tocOrientation = this.metadata.tocOrientation;\n config.dateModified = this.metadata.dateModified;\n\n // If the logo section is missing, create it here before overwriting values.\n if (config.introSlide.logo === undefined) {\n config.introSlide.logo = { src: '', altText: '' };\n }\n\n config.introSlide.logo.altText = this.metadata.logoAltText;\n\n // If the logo doesn't include HTTP, assume it's a local file.\n if (!this.metadata.logoName) {\n config.introSlide.logo.src = '';\n } else if (!this.metadata.logoName.includes('http')) {\n config.introSlide.logo.src = `${this.uuid}/assets/${this.configLang}/${this.logoImage?.name}`;\n this.configFileStructure?.assets[this.configLang].file(\n this.logoImage?.name as string,\n this.logoImage as File\n );\n } else {\n config.introSlide.logo.src = this.metadata.logoName;\n }\n\n if (publish) {\n this.generateConfig();\n }\n }\n this.$vfm.close('metadata-edit-modal');\n }\n\n /**\n * Called when loading a nonexistant or invalid UUID. Clears all previously populated\n * metadata fields, configs, and slide content.\n */\n clearConfig(): void {\n this.metadata = {\n title: '',\n introTitle: '',\n introSubtitle: '',\n contextLink: '',\n contextLabel: '',\n dateModified: '',\n logoPreview: '',\n logoName: '',\n logoAltText: '',\n tocOrientation: ''\n };\n this.configs = { en: undefined, fr: undefined };\n this.slides = [];\n }\n\n /**\n * Language toggle.\n */\n swapLang(): void {\n this.configLang = this.configLang === 'en' ? 'fr' : 'en';\n if (!this.configs[this.configLang]) {\n return;\n }\n this.loadConfig(this.configs[this.configLang]);\n\n if (this.loadEditor) {\n (this.$refs.mainEditor as EditorV).updateSlides(this.slides);\n this.$nextTick(() => {\n (this.$refs.mainEditor as EditorV).selectSlide(-1);\n });\n }\n }\n\n checkUuid(): void {\n if (!this.loadExisting) {\n fetch(`http://localhost:6040/retrieve/${this.uuid}`).then((res: Response) => {\n if (res.status !== 404) {\n this.warning = true;\n }\n });\n }\n this.warning = false;\n }\n\n /**\n * React to param changes in URL.\n */\n beforeRouteUpdate(to: RouteLocationNormalized, from: RouteLocationNormalized, next: () => void): void {\n this.uuid = to.params.uid as string;\n this.$i18n.locale = to.params.lang as string;\n\n next();\n }\n\n onLogoSourceInput(e: InputEvent): void {\n const isImgUrl = (url: string) => {\n const img = new Image();\n img.src = url;\n return new Promise((resolve) => {\n img.onerror = () => resolve(false);\n img.onload = () => resolve(true);\n });\n };\n\n this.metadata.logoName = (e.target as HTMLInputElement).value;\n\n isImgUrl(this.metadata.logoName).then((res) => {\n if (res) {\n this.metadata.logoPreview = this.metadata.logoName;\n Message.success('Successfully loaded logo image.');\n } else {\n this.metadata.logoPreview = 'error';\n Message.error('Failed to load logo image.');\n }\n });\n }\n\n onFileChange(e: Event): void {\n // Retrieve the uploaded file.\n const uploadedFile = ((e.target as HTMLInputElement).files as ArrayLike)[0];\n this.logoImage = uploadedFile;\n\n // Generate an image preview.\n this.metadata.logoPreview = URL.createObjectURL(uploadedFile);\n this.metadata.logoName = uploadedFile.name;\n }\n\n updateEditorPath(): void {\n if (this.$route.name !== 'editor') {\n this.$router.beforeEach((to: RouteLocationNormalized) => {\n if (to.name === 'editor') {\n to.meta.data = {\n configLang: this.configLang,\n configs: this.configs,\n configFileStructure: this.configFileStructure,\n sourceCounts: this.sourceCounts,\n metadata: this.metadata,\n slides: this.slides,\n existing: this.editExisting,\n unsavedChanges: this.unsavedChanges\n };\n }\n });\n\n this.$router.push({ name: 'editor', params: { uid: this.uuid } });\n }\n }\n\n checkRequiredFields(): boolean {\n // check if all required metadata fields are non-empty\n this.reqFields.uuid = !!this.uuid;\n if (Object.values(this.reqFields).some((field: boolean) => !field)) {\n Message.error(`Please fill out the required fields before proceeding.`);\n return false;\n }\n return true;\n }\n\n /**\n * Called when 'next' button is pressed on metadata page to continue to main editor.\n */\n continueToEditor(): void {\n if (!this.checkRequiredFields()) {\n return;\n }\n if (this.loadExisting) {\n if (this.configs[this.configLang] !== undefined && this.uuid === this.configFileStructure?.uuid) {\n this.loadEditor = true;\n this.saveMetadata(false);\n this.updateEditorPath();\n } else {\n Message.error('No config exists for storylines product.');\n }\n } else if (!this.uuid) {\n Message.error('Missing required field: UUID');\n this.error = true;\n } else {\n this.generateNewConfig();\n }\n }\n\n /**\n * Update the unsaved changes value to the payload.\n */\n updateSaveStatus(payload: boolean): void {\n this.unsavedChanges = payload;\n }\n\n refreshConfig(): void {\n // Re-fetch the product from the server.\n if (this.loadExisting) {\n this.reloadExisting = true;\n this.loadExisting = false;\n this.generateRemoteConfig();\n } else {\n this.reloadExisting = false;\n this.generateNewConfig();\n }\n }\n\n beforeRouteLeave(to: RouteLocationNormalized, from: RouteLocationNormalized, next: (cont?: boolean) => void): void {\n const curEditor = this.$route.name === 'editor';\n const confirmationMessage = 'Leave the page? Changes made may not be saved.';\n if (this.unsavedChanges && curEditor && !window.confirm(confirmationMessage)) {\n next(false);\n } else {\n next();\n }\n }\n}\n","import { render } from \"./metadata-editor.vue?vue&type=template&id=adaf72ca&ts=true\"\nimport script from \"./metadata-editor.vue?vue&type=script&lang=ts\"\nexport * from \"./metadata-editor.vue?vue&type=script&lang=ts\"\n\nimport \"./metadata-editor.vue?vue&type=style&index=0&id=adaf72ca&lang=scss\"\n\nimport exportComponent from \"/home/runner/work/storylines-editor/storylines-editor/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, createVNode as _createVNode, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode } from \"vue\"\n\nconst _hoisted_1 = { key: 0 }\nconst _hoisted_2 = {\n class: \"block py-20 align-middle text-center h-full\",\n style: {\"margin\":\"0 auto\"}\n}\nconst _hoisted_3 = { key: 1 }\nconst _hoisted_4 = {\n key: 0,\n class: \"storyramp-app bg-white\"\n}\nconst _hoisted_5 = {\n id: \"story-header\",\n class: \"story-header sticky top-0 flex border-b border-black bg-gray-200 py-2 px-2 justify-between\"\n}\nconst _hoisted_6 = { class: \"w-mobile-full truncate\" }\nconst _hoisted_7 = { class: \"font-semibold text-lg m-1\" }\nconst _hoisted_8 = {\n class: \"w-full mx-auto pb-10\",\n id: \"story\"\n}\nconst _hoisted_9 = { class: \"p-8 pt-2 text-right text-sm\" }\nconst _hoisted_10 = [\"href\"]\nconst _hoisted_11 = /*#__PURE__*/_createElementVNode(\"a\", {\n href: \"https://github.com/ramp4-pcar4/storylines-editor\",\n target: \"_NEW\",\n class: \"font-semibold text-blue-700\"\n}, \"ramp4-pcar4/storylines-editor\", -1)\nconst _hoisted_12 = {\n key: 0,\n class: \"storyramp-modified\"\n}\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_spinner = _resolveComponent(\"spinner\")!\n const _component_storylines_intro = _resolveComponent(\"storylines-intro\")!\n const _component_storylines_content = _resolveComponent(\"storylines-content\")!\n\n return (_ctx.loadStatus === 'loading')\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createVNode(_component_spinner, {\n size: \"120px\",\n color: \"#009cd1\",\n style: {\"margin\":\"0 auto\"}\n })\n ])\n ]))\n : (_ctx.loadStatus === 'loaded')\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_3, [\n (_ctx.config !== undefined)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_4, [\n _createElementVNode(\"header\", _hoisted_5, [\n _createElementVNode(\"div\", _hoisted_6, [\n _createElementVNode(\"span\", _hoisted_7, _toDisplayString(_ctx.config.title), 1)\n ])\n ]),\n _createVNode(_component_storylines_intro, {\n config: _ctx.config.introSlide,\n configFileStructure: _ctx.configFileStructure\n }, null, 8, [\"config\", \"configFileStructure\"]),\n _createElementVNode(\"div\", _hoisted_8, [\n _createVNode(_component_storylines_content, {\n config: _ctx.config,\n configFileStructure: _ctx.configFileStructure,\n lang: _ctx.lang,\n plugin: true,\n headerHeight: _ctx.headerHeight,\n onStep: _ctx.updateActiveIndex\n }, null, 8, [\"config\", \"configFileStructure\", \"lang\", \"headerHeight\", \"onStep\"])\n ]),\n _createElementVNode(\"footer\", _hoisted_9, [\n _createTextVNode(\" Context: \"),\n _createElementVNode(\"a\", {\n class: \"text-blue-700 font-semibold\",\n href: _ctx.config.contextLink,\n target: \"_NEW\"\n }, _toDisplayString(_ctx.config.contextLabel), 9, _hoisted_10),\n _createTextVNode(\" | \"),\n _hoisted_11\n ]),\n (_ctx.config.dateModified)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_12, _toDisplayString(_ctx.$t('story.date')) + \" \" + _toDisplayString(_ctx.config.dateModified), 1))\n : _createCommentVNode(\"\", true)\n ]))\n : _createCommentVNode(\"\", true)\n ]))\n : _createCommentVNode(\"\", true)\n}","\nimport { Options, Vue } from 'vue-property-decorator';\nimport { ConfigFileStructure, StoryRampConfig } from '@/definitions';\nimport { VueSpinnerOval } from 'vue3-spinners';\n\n@Options({\n components: {\n spinner: VueSpinnerOval\n }\n})\nexport default class StoryPreviewV extends Vue {\n config: StoryRampConfig | undefined = undefined;\n configFileStructure: ConfigFileStructure | undefined = undefined;\n savedProduct = false;\n loadStatus = 'loading';\n activeChapterIndex = -1;\n lang = 'en';\n headerHeight = 0;\n uid = '';\n\n created(): void {\n const uid = this.$route.params.uid as string;\n const lang = this.$route.params.lang as string;\n if (uid) {\n this.savedProduct = true;\n // attempt to fetch saved config file from the server (TODO: setup as express route?)\n fetch(`http://localhost:6040/retrieve/${uid}/${lang}`).then((res: Response) => {\n if (res.status === 404) {\n console.error(`There does not exist a saved product with UID ${uid}.`);\n // redirect to canada.ca 404 page on invalid URL params\n // window.location.href = 'https://www.canada.ca/errors/404.html';\n } else {\n res.json().then((config: StoryRampConfig) => {\n this.config = config;\n this.loadStatus = 'loaded';\n document.title = this.config.title + ' - Canada.ca';\n });\n }\n });\n } else {\n this.config = window.props.config;\n this.configFileStructure = window.props.configFileStructure;\n this.loadStatus = 'loaded';\n }\n\n // set page lang\n const html = document.documentElement;\n html.setAttribute('lang', this.lang);\n this.$i18n.locale = this.lang;\n }\n\n updateActiveIndex(idx: number): void {\n this.activeChapterIndex = idx;\n //determine header height\n const headerH = document.getElementById('story-header');\n if (headerH) {\n this.headerHeight = headerH.clientHeight;\n }\n }\n}\n","import { render } from \"./preview.vue?vue&type=template&id=77691cfa&ts=true\"\nimport script from \"./preview.vue?vue&type=script&lang=ts\"\nexport * from \"./preview.vue?vue&type=script&lang=ts\"\n\nimport \"./preview.vue?vue&type=style&index=0&id=77691cfa&lang=scss\"\n\nimport exportComponent from \"/home/runner/work/storylines-editor/storylines-editor/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import LandingV from '@/components/editor/landing.vue';\nimport MetadataEditorV from '@/components/editor/metadata-editor.vue';\nimport StoryPreviewV from '@/components/editor/preview.vue';\nimport { createRouter, createWebHashHistory, RouteLocationNormalized } from 'vue-router';\n\nconst routes = [\n {\n path: '/:lang/editor',\n name: 'home',\n component: LandingV,\n meta: { title: 'editor.window.title' }\n },\n {\n path: '/:lang/editor/:uid',\n redirect: '/:lang/editor-metadata/:uid'\n },\n {\n path: '/:lang/editor-metadata',\n name: 'metadataExisting',\n component: MetadataEditorV,\n props: { editExisting: true },\n meta: { title: 'editor.window.title' }\n },\n {\n path: '/:lang/editor-metadata',\n name: 'metadataNew',\n component: MetadataEditorV,\n props: { editExisting: false },\n meta: { title: 'editor.window.title' }\n },\n {\n path: '/:lang/editor-metadata/:uid',\n component: MetadataEditorV,\n meta: { title: 'editor.window.title' }\n },\n {\n path: '/:lang/editor-main/:uid',\n name: 'editor',\n component: MetadataEditorV,\n props: true,\n meta: { title: 'editor.window.title' }\n },\n {\n path: '/:lang/editor-preview',\n component: StoryPreviewV,\n name: 'preview',\n props: true,\n meta: { title: 'story.window.title' }\n },\n {\n path: '/:lang/editor-preview/:uid',\n component: StoryPreviewV,\n meta: { title: 'story.window.title' }\n }\n];\n\nconst router = createRouter({\n routes: routes,\n // TODO: change to history mode for nicer URLs (eliminating middle hash) see #100\n history: createWebHashHistory(),\n scrollBehavior: function (to: RouteLocationNormalized) {\n if (to.hash) {\n return {\n selector: decodeURIComponent(to.hash),\n behavior: 'smooth'\n };\n }\n }\n});\n\nexport default router;\n","import { createI18n } from 'vue-i18n';\n\ntype csvRows = { key: string; enValue: string; frValue: string }[];\ninterface LocaleMessages {\n [key: string]: { [name: string]: string };\n}\n\nconst rows = require('./lang.csv');\n\nconst lang = document.documentElement.getAttribute('lang');\n\n/**\n * Fold the imported CSV file in the form of `{ key: string, enValue: string, frValue: string }[]` to the form understood by VueI18n: `{ en: { [name: string]: string }, fr: { [name: string]: string } }`.\n *\n * @param {csvRows} rows\n * @returns {LocaleMessages}\n */\nfunction fold(rows: csvRows): LocaleMessages {\n return rows.reduce(\n (map, item) => {\n map.en[item.key] = item.enValue;\n map.fr[item.key] = item.frValue;\n return map;\n },\n { en: {}, fr: {} } as LocaleMessages\n );\n}\n\nconst i18n = createI18n({\n legacy: false,\n locale: lang || undefined,\n fallbackLocale: 'en',\n globalInjection: true,\n messages: fold(rows)\n});\n\nexport { i18n };\n","import { createApp } from 'vue';\nimport App from './app.vue';\n\nimport './router/componentHooks';\nimport router from './router';\nimport './style.css';\nimport { i18n } from './lang';\n\nimport VueMarkdownEditor from '@kangc/v-md-editor';\nimport '@kangc/v-md-editor/lib/style/base-editor.css';\nimport githubTheme from '@kangc/v-md-editor/lib/theme/github.js';\nimport '@kangc/v-md-editor/lib/theme/style/github.css';\nimport enUS from '@kangc/v-md-editor/lib/lang/en-US';\nimport hljs from 'highlight.js';\n\nVueMarkdownEditor.lang.use('en-US', enUS);\nVueMarkdownEditor.use(githubTheme, {\n Hljs: hljs\n});\n\nimport { createVfm } from 'vue-final-modal';\nconst vfm = createVfm();\nimport 'vue-final-modal/dist/style.css';\n\nimport VueTippy from 'vue-tippy';\nimport 'tippy.js/dist/tippy.css';\nimport 'tippy.js/dist/backdrop.css';\n\nimport HighchartsVue from 'highcharts-vue';\nimport Message from 'vue-m-message';\nimport 'vue-m-message/dist/style.css';\n\nimport StorylinesViewer from 'ramp-storylines_demo-scenarios-pcar';\nimport 'ramp-storylines_demo-scenarios-pcar/dist/storylines-viewer.css';\n\nconst app = createApp(App);\n\napp.use(router)\n .use(i18n)\n .use(VueTippy, {\n directive: 'tippy',\n component: 'tippy'\n })\n .use(HighchartsVue)\n .use(Message)\n .use(StorylinesViewer)\n .use(VueMarkdownEditor)\n .use(vfm);\n\napp.mount('#app');\n","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./time-slider-editor.vue?vue&type=style&index=0&id=6923af36&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./preview.vue?vue&type=style&index=0&id=77691cfa&lang=scss\""],"sourceRoot":""} \ No newline at end of file