From 38a7f02d3aaa204481dbc1b10d9f96e9e7a7b2b1 Mon Sep 17 00:00:00 2001 From: RyanCoulsonCA Date: Mon, 13 May 2024 19:42:40 +0000 Subject: [PATCH] =?UTF-8?q?Deploying=20to=20gh-pages=20from=20@=20ramp4-pc?= =?UTF-8?q?ar4/storylines-editor@7d20a42c16fc817084eaf07472a9540bac65928f?= =?UTF-8?q?=20=F0=9F=9A=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- fix-292/css/chunk-common.251950c9.css | 5 ----- fix-292/css/chunk-common.a572346f.css | 5 +++++ fix-292/index-ca-en.html | 4 ++-- fix-292/index-ca-fr.html | 4 ++-- fix-292/index.html | 2 +- fix-292/js/chunk-common.46eaea93.js | 2 ++ fix-292/js/chunk-common.46eaea93.js.map | 1 + fix-292/js/chunk-common.e640abf6.js | 2 -- fix-292/js/chunk-common.e640abf6.js.map | 1 - 9 files changed, 13 insertions(+), 13 deletions(-) delete mode 100644 fix-292/css/chunk-common.251950c9.css create mode 100644 fix-292/css/chunk-common.a572346f.css create mode 100644 fix-292/js/chunk-common.46eaea93.js create mode 100644 fix-292/js/chunk-common.46eaea93.js.map delete mode 100644 fix-292/js/chunk-common.e640abf6.js delete mode 100644 fix-292/js/chunk-common.e640abf6.js.map diff --git a/fix-292/css/chunk-common.251950c9.css b/fix-292/css/chunk-common.251950c9.css deleted file mode 100644 index 53410099..00000000 --- a/fix-292/css/chunk-common.251950c9.css +++ /dev/null @@ -1,5 +0,0 @@ -.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-d8aa8408]{width:46%}.chart-item .handle[data-v-d8aa8408]{cursor:move;cursor:grab;cursor:-webkit-grab}.confirm-button[data-v-468630e0]{background-color:#000!important;color:#fff!important}.cancel-button[data-v-468630e0]{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-44e16318] .jsoneditor-vue{height:100vh}.image-item[data-v-1c58f06c]{width:30%;cursor:move;cursor:grab;cursor:-webkit-grab}.image-item .image-file[data-v-1c58f06c]{aspect-ratio:auto;max-height:300px}.image-item .image-container[data-v-1c58f06c]{display:flex;align-items:center;justify-content:center;height:300px}.image-item button[data-v-1c58f06c]{padding:0!important}.upload-image input[type=file][data-v-4ee6d780]: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-4ee6d780]{width:auto!important}.text-label[data-v-4ee6d780]{width:25%!important;margin-right:.5rem!important;margin-bottom:0!important}.dragging[data-v-4ee6d780]{background-color:#fffaf0;border-color:#fff}label[data-v-37b76b8f]{text-align:left!important}label[data-v-98eacf1c],label[data-v-62693dea]{text-align:left!important;width:-moz-fit-content!important;width:fit-content!important}select[data-v-62693dea]{border:1px solid #000;background:#fff;padding:.25rem .5rem}.map-item[data-v-62693dea]{width:300px;background:#eee;text-align:center;padding:25px;cursor:pointer}.map-item button[data-v-62693dea]{padding:0!important}.edit-map[data-v-62693dea]{content:url(../img/edit-icon.2e67cc99.svg);margin:0 auto;margin-bottom:20px}.add-map[data-v-62693dea]{content:url(../img/add.daae1e59.svg);margin:0 auto;margin-bottom:20px}input[type=number][data-v-62693dea]{width:76px}[data-v-62693dea] rv-basemap-item .rv-basemap-thumb img{max-width:none}[data-v-62693dea] .rv-details-attrib-value a{white-space:unset!important}[data-v-62693dea] .ramp-app{height:100%}[data-v-62693dea] .ramp-app .h1,[data-v-62693dea] .ramp-app .h2,[data-v-62693dea] .ramp-app .h3,[data-v-62693dea] .ramp-app .h4,[data-v-62693dea] .ramp-app .h5,[data-v-62693dea] .ramp-app .h6,[data-v-62693dea] .ramp-app h1,[data-v-62693dea] .ramp-app h2,[data-v-62693dea] .ramp-app h3,[data-v-62693dea] .ramp-app h4,[data-v-62693dea] .ramp-app h5,[data-v-62693dea] .ramp-app h6{font-family:Montserrat,-apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji;line-height:1.5}[data-v-62693dea] .ramp-app input[type=checkbox]{margin-top:unset}.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-33605cfc]: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-33605cfc]{width:auto!important}.text-label[data-v-33605cfc]{width:25%!important;margin-right:.5rem!important;margin-bottom:0!important}.dragging[data-v-33605cfc]{background-color:#fffaf0;border-color:#fff}label[data-v-7cb258ba]{text-align:left!important;width:-moz-fit-content!important;width:fit-content!important}select[data-v-7cb258ba]{border:1px solid #000;background:#fff;padding:.25rem .5rem}.table-header th[data-v-7cb258ba]{text-align:center;background-color:#ddd;padding:5px}.table-contents td[data-v-7cb258ba]{text-align:center;padding:5px}.table-contents[data-v-7cb258ba]:hover{background-color:#eee;cursor:pointer}.table-add-row th[data-v-7cb258ba]{vertical-align:top;text-align:center;border-top:1px solid #ddd;padding:5px}.table-add-row button[data-v-7cb258ba],.table-add-row input[type=text][data-v-7cb258ba],.table-add-row select[data-v-7cb258ba]{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-d63c3352]{text-align:left!important;margin-left:.5rem}input[type=checkbox][data-v-d63c3352]:checked{accent-color:#000;color:#fff}select[data-v-d63c3352]{border:1px solid #000;background:#fff;padding:.25rem .5rem}.table-of-contents-slide button[data-v-d63c3352]{padding:0;border:none}.toc-slide-button[data-v-aef69d80]{border:none!important;background:none!important;padding:0!important;margin:0!important}.toc-slide-button[data-v-aef69d80]:hover{background:none!important}.copy-select[data-v-aef69d80]{width:450px}.editor-container{margin:0 auto}.editor-label{width:10vw;text-align:right;margin-right:15px;display:inline-block}.editor-h3{font-size:larger}.editor-input{padding:5px 10px;margin-top:5px;border:1px solid #000;display:inline}.editor-container .input-error{border:1px solid red}.editor-button{padding:5px 12px;margin:0 10px;font-weight:600;transition-duration:.2s}.editor-button:hover:enabled{background-color:#dbdbdb;color:#000}.editor-button:disabled{border:1px solid grey;color:grey;cursor:not-allowed}.editor-toc-button{background-color:#f3f4f6;color:#000;border:none;transition-duration:.2s;padding:.25 .25em!important}.editor-header{top:-1px;padding-top:9px}.fade-enter-active,.fade-leave-active{transition:opacity .2s}.fade-enter,.fade-leave-to{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 .vfm__content 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 .vfm__content 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 .vfm__content button,.vfm .vfm__content button{padding:5px 12px;margin:0 10px;font-weight:600;transition-duration:.2s}.storyramp-app .vfm__content button:hover:enabled,.vfm .vfm__content button:hover:enabled{background-color:#dbdbdb;color:#000}.storyramp-app .vfm__content 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 */ - -/*! modern-normalize v1.1.0 | MIT License | https://github.com/sindresorhus/modern-normalize */html{-moz-tab-size:4;-o-tab-size:4;tab-size:4;line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0;font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji}hr{height:0;color:inherit}abbr[title]{-webkit-text-decoration:underline dotted;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}::-moz-focus-inner{border-style:none;padding:0}legend{padding:0}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}button{background-color:transparent;background-image:none}fieldset,ol,ul{margin:0;padding:0}ol,ul{list-style:none}html{font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;line-height:1.5}body{font-family:inherit;line-height:inherit}*,:after,:before{box-sizing:border-box;border-width:0;border-style:solid;border-color:currentColor}hr{border-top-width:1px}img{border-style:solid}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}[role=button],button{cursor:pointer}table{border-collapse:collapse}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}button,input,optgroup,select,textarea{padding:0;line-height:inherit;color:inherit}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]{display:none}*,:after,:before{--tw-border-opacity:1;border-color:rgba(229,231,235,var(--tw-border-opacity))}.container{width:100%}@media (min-width:640px){.container{max-width:640px}}@media (min-width:768px){.container{max-width:768px}}@media (min-width:1024px){.container{max-width:1024px}}@media (min-width:1280px){.container{max-width:1280px}}@media (min-width:1536px){.container{max-width:1536px}}.prose{color:#374151;max-width:65ch}.prose [class~=lead]{color:#4b5563;font-size:1.25em;line-height:1.6;margin-top:1.2em;margin-bottom:1.2em}.prose a{color:#111827;text-decoration:underline;font-weight:500}.prose a:link{color:#00f}.prose a:hover,.prose a:visited{color:purple}.prose a:active{color:#00f}.prose strong{color:#111827;font-weight:600}.prose ol[type=A]{--list-counter-style:upper-alpha}.prose ol[type=a]{--list-counter-style:lower-alpha}.prose ol[type=I]{--list-counter-style:upper-roman}.prose ol[type=i]{--list-counter-style:lower-roman}.prose ol[type="1"]{--list-counter-style:decimal}.prose ol>li{position:relative;padding-left:1.75em}.prose ol>li:before{content:counter(list-item,var(--list-counter-style,decimal)) ".";position:absolute;font-weight:400;color:#6b7280;left:0}.prose ul>li{position:relative;padding-left:1.75em}.prose ul>li:before{content:"";position:absolute;background-color:#d1d5db;border-radius:50%;width:.375em;height:.375em;top:.6875em;left:.25em}.prose hr{border-color:#e5e7eb;border-top-width:1px;margin-top:3em;margin-bottom:3em}.prose blockquote{font-weight:500;font-style:italic;color:#111827;border-left-width:.25rem;border-left-color:#e5e7eb;quotes:"\201C""\201D""\2018""\2019";margin-top:1.6em;margin-bottom:1.6em;padding-left:1em}.prose blockquote p:first-of-type:before{content:open-quote}.prose blockquote p:last-of-type:after{content:close-quote}.prose h1{color:#111827;font-weight:800;font-size:2.25em;margin-top:0;margin-bottom:.8888889em;line-height:1.1111111}.prose h2{color:#111827;font-weight:700;font-size:1.5em;margin-top:2em;margin-bottom:1em;line-height:1.3333333}.prose h3{font-size:1.25em;margin-top:1.6em;margin-bottom:.6em;line-height:1.6}.prose h3,.prose h4{color:#111827;font-weight:600}.prose h4{margin-top:1.5em;margin-bottom:.5em;line-height:1.5}.prose figure figcaption{color:#6b7280;font-size:.875em;line-height:1.4285714;margin-top:.8571429em}.prose code{color:#111827;font-weight:600;font-size:.875em}.prose code:after,.prose code:before{content:"`"}.prose a code{color:#111827}.prose pre{color:#e5e7eb;background-color:#1f2937;overflow-x:auto;font-size:.875em;line-height:1.7142857;margin-top:1.7142857em;margin-bottom:1.7142857em;border-radius:.375rem;padding-top:.8571429em;padding-right:1.1428571em;padding-bottom:.8571429em;padding-left:1.1428571em}.prose pre code{background-color:transparent;border-width:0;border-radius:0;padding:0;font-weight:400;color:inherit;font-size:inherit;font-family:inherit;line-height:inherit}.prose pre code:after,.prose pre code:before{content:none}.prose table{width:100%;table-layout:auto;text-align:left;margin-top:2em;margin-bottom:2em;font-size:.875em;line-height:1.7142857}.prose thead{color:#111827;font-weight:600;border-bottom-width:1px;border-bottom-color:#d1d5db}.prose thead th{vertical-align:bottom;padding-right:.5714286em;padding-bottom:.5714286em;padding-left:.5714286em}.prose tbody tr{border-bottom-width:1px;border-bottom-color:#e5e7eb}.prose tbody tr:last-child{border-bottom-width:0}.prose tbody td{vertical-align:top;padding-top:.5714286em;padding-right:.5714286em;padding-bottom:.5714286em;padding-left:.5714286em}.prose{font-size:1rem;line-height:1.75}.prose p{margin-top:1.25em;margin-bottom:1.25em}.prose{img:disabled}.prose figure,.prose video{margin-top:2em;margin-bottom:2em}.prose figure>*{margin-top:0;margin-bottom:0}.prose h2 code{font-size:.875em}.prose h3 code{font-size:.9em}.prose ol,.prose ul{margin-top:1.25em;margin-bottom:1.25em}.prose li{margin-top:.5em;margin-bottom:.5em}.prose>ul>li p{margin-top:.75em;margin-bottom:.75em}.prose>ul>li>:first-child{margin-top:1.25em}.prose>ul>li>:last-child{margin-bottom:1.25em}.prose>ol>li>:first-child{margin-top:1.25em}.prose>ol>li>:last-child{margin-bottom:1.25em}.prose ol ol,.prose ol ul,.prose ul ol,.prose ul ul{margin-top:.75em;margin-bottom:.75em}.prose h2+*,.prose h3+*,.prose h4+*,.prose hr+*{margin-top:0}.prose thead th:first-child{padding-left:0}.prose thead th:last-child{padding-right:0}.prose tbody td:first-child{padding-left:0}.prose tbody td:last-child{padding-right:0}.prose>:first-child{margin-top:0}.prose>:last-child{margin-bottom:0}.prose img:not(.story-graphic){margin-top:2em;margin-bottom:2em}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.pointer-events-none{pointer-events:none}.pointer-events-auto{pointer-events:auto}.visible{visibility:visible}.invisible{visibility:hidden}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.inset-0{top:0;bottom:0}.inset-0,.inset-x-0{right:0;left:0}.inset-x-1\/2{left:50%;right:50%}.top-0{top:0}.top-1{top:.25rem}.top-2{top:.5rem}.top-3{top:.75rem}.top-5{top:1.25rem}.top-8{top:2rem}.top-16{top:4rem}.top-20{top:5rem}.-top-2{top:-.5rem}.top-1\/2{top:50%}.right-0{right:0}.right-2{right:.5rem}.right-3{right:.75rem}.right-4{right:1rem}.right-5{right:1.25rem}.right-10{right:2.5rem}.-right-1{right:-.25rem}.-right-2{right:-.5rem}.bottom-0{bottom:0}.bottom-2{bottom:.5rem}.bottom-6{bottom:1.5rem}.bottom-28{bottom:7rem}.bottom-36{bottom:9rem}.bottom-48{bottom:12rem}.left-0{left:0}.left-2{left:.5rem}.left-3{left:.75rem}.left-4{left:1rem}.left-6{left:1.5rem}.left-8{left:2rem}.left-1\/2{left:50%}.left-full{left:100%}.z-10{z-index:10}.z-20{z-index:20}.z-30{z-index:30}.z-40{z-index:40}.z-50{z-index:50}.order-1{order:1}.order-2{order:2}.float-right{float:right}.m-0{margin:0}.m-1{margin:.25rem}.m-2{margin:.5rem}.m-4{margin:1rem}.m-5{margin:1.25rem}.m-8{margin:2rem}.m-10{margin:2.5rem}.m-24{margin:6rem}.m-auto{margin:auto}.mx-1{margin-left:.25rem;margin-right:.25rem}.mx-2{margin-left:.5rem;margin-right:.5rem}.mx-3{margin-left:.75rem;margin-right:.75rem}.mx-4{margin-left:1rem;margin-right:1rem}.mx-5{margin-left:1.25rem;margin-right:1.25rem}.mx-8{margin-left:2rem;margin-right:2rem}.mx-10{margin-left:2.5rem;margin-right:2.5rem}.mx-auto{margin-left:auto;margin-right:auto}.my-1{margin-top:.25rem;margin-bottom:.25rem}.my-2{margin-top:.5rem;margin-bottom:.5rem}.my-4{margin-top:1rem;margin-bottom:1rem}.my-5{margin-top:1.25rem;margin-bottom:1.25rem}.my-6{margin-top:1.5rem;margin-bottom:1.5rem}.my-8{margin-top:2rem;margin-bottom:2rem}.my-16{margin-top:4rem;margin-bottom:4rem}.my-20{margin-top:5rem;margin-bottom:5rem}.my-auto{margin-top:auto;margin-bottom:auto}.my-2\.5{margin-top:.625rem;margin-bottom:.625rem}.mt-1{margin-top:.25rem}.mt-2{margin-top:.5rem}.mt-3{margin-top:.75rem}.mt-4{margin-top:1rem}.mt-5{margin-top:1.25rem}.mt-6{margin-top:1.5rem}.mt-8{margin-top:2rem}.mt-10{margin-top:2.5rem}.mt-12{margin-top:3rem}.mt-16{margin-top:4rem}.mt-20{margin-top:5rem}.mt-36{margin-top:9rem}.mt-auto{margin-top:auto}.mr-1{margin-right:.25rem}.mr-2{margin-right:.5rem}.mr-4{margin-right:1rem}.mr-6{margin-right:1.5rem}.mr-8{margin-right:2rem}.mr-10{margin-right:2.5rem}.mr-12{margin-right:3rem}.mr-16{margin-right:4rem}.mr-auto{margin-right:auto}.mb-0{margin-bottom:0}.mb-1{margin-bottom:.25rem}.mb-3{margin-bottom:.75rem}.mb-4{margin-bottom:1rem}.mb-5{margin-bottom:1.25rem}.mb-6{margin-bottom:1.5rem}.mb-8{margin-bottom:2rem}.mb-10{margin-bottom:2.5rem}.mb-12{margin-bottom:3rem}.mb-14{margin-bottom:3.5rem}.mb-20{margin-bottom:5rem}.mb-0\.5{margin-bottom:.125rem}.ml-0{margin-left:0}.ml-1{margin-left:.25rem}.ml-2{margin-left:.5rem}.ml-3{margin-left:.75rem}.ml-4{margin-left:1rem}.ml-6{margin-left:1.5rem}.ml-8{margin-left:2rem}.ml-10{margin-left:2.5rem}.ml-20{margin-left:5rem}.ml-32{margin-left:8rem}.ml-48{margin-left:12rem}.ml-auto{margin-left:auto}.box-border{box-sizing:border-box}.box-content{box-sizing:content-box}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.contents{display:contents}.hidden{display:none}.h-1{height:.25rem}.h-3{height:.75rem}.h-4{height:1rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-9{height:2.25rem}.h-10{height:2.5rem}.h-12{height:3rem}.h-16{height:4rem}.h-20{height:5rem}.h-24{height:6rem}.h-28{height:7rem}.h-32{height:8rem}.h-36{height:9rem}.h-40{height:10rem}.h-44{height:11rem}.h-48{height:12rem}.h-56{height:14rem}.h-96{height:24rem}.h-auto{height:auto}.h-full{height:100%}.h-story{height:calc(100vh - 4rem)}.max-h-full{max-height:100%}.w-1{width:.25rem}.w-4{width:1rem}.w-5{width:1.25rem}.w-6{width:1.5rem}.w-8{width:2rem}.w-10{width:2.5rem}.w-12{width:3rem}.w-16{width:4rem}.w-20{width:5rem}.w-24{width:6rem}.w-28{width:7rem}.w-32{width:8rem}.w-40{width:10rem}.w-48{width:12rem}.w-64{width:16rem}.w-72{width:18rem}.w-80{width:20rem}.w-auto{width:auto}.w-1\/2{width:50%}.w-1\/3{width:33.333333%}.w-2\/3{width:66.666667%}.w-1\/4{width:25%}.w-3\/5{width:60%}.w-4\/5{width:80%}.w-5\/6{width:83.333333%}.w-full{width:100%}.min-w-0{min-width:0}.max-w-none{max-width:none}.max-w-xs{max-width:20rem}.max-w-xl{max-width:36rem}.max-w-2xl{max-width:42rem}.max-w-full{max-width:100%}.max-w-9xl{max-width:110rem}.flex-1{flex:1 1 0%}.flex-2{flex:2 2 0%}.flex-auto{flex:1 1 auto}.flex-none{flex:none}.flex-shrink-0{flex-shrink:0}.flex-shrink{flex-shrink:1}.flex-grow{flex-grow:1}.border-collapse{border-collapse:collapse}.transform{--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;transform:translateX(var(--tw-translate-x)) translateY(var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-x-1\/2{--tw-translate-x:-50%}.-translate-x-full{--tw-translate-x:-100%}.-translate-y-1\/2{--tw-translate-y:-50%}.rotate-90{--tw-rotate:90deg}.rotate-180{--tw-rotate:180deg}.-rotate-180{--tw-rotate:-180deg}.hover\:scale-105:hover{--tw-scale-x:1.05;--tw-scale-y:1.05}@keyframes spin{to{transform:rotate(1turn)}}@keyframes ping{75%,to{transform:scale(2);opacity:0}}@keyframes pulse{50%{opacity:.5}}@keyframes bounce{0%,to{transform:translateY(-25%);animation-timing-function:cubic-bezier(.8,0,1,1)}50%{transform:none;animation-timing-function:cubic-bezier(0,0,.2,1)}}.animate-spin{animation:spin 1s linear infinite}.cursor-auto{cursor:auto}.cursor-default{cursor:default}.cursor-pointer{cursor:pointer}.cursor-text{cursor:text}.cursor-move{cursor:move}.cursor-not-allowed{cursor:not-allowed}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.select-text{-webkit-user-select:text;-moz-user-select:text;user-select:text}.resize{resize:both}.list-none{list-style-type:none}.list-disc{list-style-type:disc}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.flex-row{flex-direction:row}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.content-start{align-content:flex-start}.content-end{align-content:flex-end}.items-start{align-items:flex-start}.items-center{align-items:center}.items-stretch{align-items:stretch}.justify-start{justify-content:flex-start}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-4{gap:1rem}.gap-y-8{row-gap:2rem}.space-x-5>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(1.25rem*var(--tw-space-x-reverse));margin-left:calc(1.25rem*(1 - var(--tw-space-x-reverse)))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(0.5rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(0.5rem*var(--tw-space-y-reverse))}.divide-y>:not([hidden])~:not([hidden]){--tw-divide-y-reverse:0;border-top-width:calc(1px*(1 - var(--tw-divide-y-reverse)));border-bottom-width:calc(1px*var(--tw-divide-y-reverse))}.self-start{align-self:flex-start}.self-end{align-self:flex-end}.self-center{align-self:center}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.overflow-y-hidden{overflow-y:hidden}.overflow-y-scroll{overflow-y:scroll}.truncate{overflow:hidden;white-space:nowrap}.overflow-ellipsis,.truncate{text-overflow:ellipsis}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-line{white-space:pre-line}.whitespace-pre-wrap{white-space:pre-wrap}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.rounded-none{border-radius:0}.rounded{border-radius:.25rem}.rounded-md{border-radius:.375rem}.rounded-lg{border-radius:.5rem}.rounded-full{border-radius:9999px}.border-2{border-width:2px}.border-4{border-width:4px}.border{border-width:1px}.border-t-0{border-top-width:0}.border-t-2{border-top-width:2px}.border-t{border-top-width:1px}.border-r{border-right-width:1px}.border-b{border-bottom-width:1px}.border-l-2{border-left-width:2px}.border-l{border-left-width:1px}.border-solid{border-style:solid}.border-dashed{border-style:dashed}.border-none{border-style:none}.border-black{--tw-border-opacity:1;border-color:rgba(0,0,0,var(--tw-border-opacity))}.border-white{--tw-border-opacity:1;border-color:rgba(255,255,255,var(--tw-border-opacity))}.border-gray-200{--tw-border-opacity:1;border-color:rgba(229,231,235,var(--tw-border-opacity))}.border-gray-300{--tw-border-opacity:1;border-color:rgba(209,213,219,var(--tw-border-opacity))}.border-gray-400{--tw-border-opacity:1;border-color:rgba(156,163,175,var(--tw-border-opacity))}.border-gray-500{--tw-border-opacity:1;border-color:rgba(107,114,128,var(--tw-border-opacity))}.border-gray-600{--tw-border-opacity:1;border-color:rgba(75,85,99,var(--tw-border-opacity))}.border-gray-800{--tw-border-opacity:1;border-color:rgba(31,41,55,var(--tw-border-opacity))}.border-red-700{--tw-border-opacity:1;border-color:rgba(185,28,28,var(--tw-border-opacity))}.border-blue-300{--tw-border-opacity:1;border-color:rgba(147,197,253,var(--tw-border-opacity))}.border-blue-500{--tw-border-opacity:1;border-color:rgba(59,130,246,var(--tw-border-opacity))}.hover\:border-black:hover{--tw-border-opacity:1;border-color:rgba(0,0,0,var(--tw-border-opacity))}.focus\:border-green-500:focus{--tw-border-opacity:1;border-color:rgba(16,185,129,var(--tw-border-opacity))}.bg-black{--tw-bg-opacity:1;background-color:rgba(0,0,0,var(--tw-bg-opacity))}.bg-white{--tw-bg-opacity:1;background-color:rgba(255,255,255,var(--tw-bg-opacity))}.bg-gray-100{--tw-bg-opacity:1;background-color:rgba(243,244,246,var(--tw-bg-opacity))}.bg-gray-200{--tw-bg-opacity:1;background-color:rgba(229,231,235,var(--tw-bg-opacity))}.bg-gray-300{--tw-bg-opacity:1;background-color:rgba(209,213,219,var(--tw-bg-opacity))}.bg-gray-400{--tw-bg-opacity:1;background-color:rgba(156,163,175,var(--tw-bg-opacity))}.bg-gray-500{--tw-bg-opacity:1;background-color:rgba(107,114,128,var(--tw-bg-opacity))}.bg-red-100{--tw-bg-opacity:1;background-color:rgba(254,226,226,var(--tw-bg-opacity))}.bg-red-200{--tw-bg-opacity:1;background-color:rgba(254,202,202,var(--tw-bg-opacity))}.bg-green-100{--tw-bg-opacity:1;background-color:rgba(209,250,229,var(--tw-bg-opacity))}.bg-green-500{--tw-bg-opacity:1;background-color:rgba(16,185,129,var(--tw-bg-opacity))}.bg-blue-100{--tw-bg-opacity:1;background-color:rgba(219,234,254,var(--tw-bg-opacity))}.bg-blue-200{--tw-bg-opacity:1;background-color:rgba(191,219,254,var(--tw-bg-opacity))}.bg-blue-500{--tw-bg-opacity:1;background-color:rgba(59,130,246,var(--tw-bg-opacity))}.bg-blue-800{--tw-bg-opacity:1;background-color:rgba(30,64,175,var(--tw-bg-opacity))}.hover\:bg-white:hover{--tw-bg-opacity:1;background-color:rgba(255,255,255,var(--tw-bg-opacity))}.hover\:bg-gray-100:hover{--tw-bg-opacity:1;background-color:rgba(243,244,246,var(--tw-bg-opacity))}.hover\:bg-gray-200:hover{--tw-bg-opacity:1;background-color:rgba(229,231,235,var(--tw-bg-opacity))}.hover\:bg-gray-300:hover{--tw-bg-opacity:1;background-color:rgba(209,213,219,var(--tw-bg-opacity))}.hover\:bg-gray-800:hover{--tw-bg-opacity:1;background-color:rgba(31,41,55,var(--tw-bg-opacity))}.hover\:bg-gray-900:hover{--tw-bg-opacity:1;background-color:rgba(17,24,39,var(--tw-bg-opacity))}.hover\:bg-green-700:hover{--tw-bg-opacity:1;background-color:rgba(4,120,87,var(--tw-bg-opacity))}.hover\:bg-blue-700:hover{--tw-bg-opacity:1;background-color:rgba(29,78,216,var(--tw-bg-opacity))}.focus\:bg-gray-200:focus{--tw-bg-opacity:1;background-color:rgba(229,231,235,var(--tw-bg-opacity))}.bg-opacity-30{--tw-bg-opacity:0.3}.fill-current{fill:currentColor}.stroke-1{stroke-width:1}.object-contain{-o-object-fit:contain;object-fit:contain}.object-cover{-o-object-fit:cover;object-fit:cover}.p-0{padding:0}.p-1{padding:.25rem}.p-2{padding:.5rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-5{padding:1.25rem}.p-6{padding:1.5rem}.p-8{padding:2rem}.p-12{padding:3rem}.p-20{padding:5rem}.px-1{padding-left:.25rem;padding-right:.25rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.px-7{padding-left:1.75rem;padding-right:1.75rem}.px-8{padding-left:2rem;padding-right:2rem}.px-10{padding-left:2.5rem;padding-right:2.5rem}.px-11{padding-left:2.75rem;padding-right:2.75rem}.px-12{padding-left:3rem;padding-right:3rem}.px-14{padding-left:3.5rem;padding-right:3.5rem}.px-16{padding-left:4rem;padding-right:4rem}.px-20{padding-left:5rem;padding-right:5rem}.py-0{padding-top:0;padding-bottom:0}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-5{padding-top:1.25rem;padding-bottom:1.25rem}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}.py-8{padding-top:2rem;padding-bottom:2rem}.py-10{padding-top:2.5rem;padding-bottom:2.5rem}.py-12{padding-top:3rem;padding-bottom:3rem}.py-16{padding-top:4rem;padding-bottom:4rem}.py-20{padding-top:5rem;padding-bottom:5rem}.py-24{padding-top:6rem;padding-bottom:6rem}.pt-2{padding-top:.5rem}.pt-5{padding-top:1.25rem}.pt-10{padding-top:2.5rem}.pt-24{padding-top:6rem}.pr-4{padding-right:1rem}.pr-5{padding-right:1.25rem}.pr-12{padding-right:3rem}.pr-16{padding-right:4rem}.pr-32{padding-right:8rem}.pb-1{padding-bottom:.25rem}.pb-2{padding-bottom:.5rem}.pb-4{padding-bottom:1rem}.pb-5{padding-bottom:1.25rem}.pb-8{padding-bottom:2rem}.pb-10{padding-bottom:2.5rem}.pb-24{padding-bottom:6rem}.pb-36{padding-bottom:9rem}.pl-0{padding-left:0}.pl-1{padding-left:.25rem}.pl-2{padding-left:.5rem}.pl-3{padding-left:.75rem}.pl-4{padding-left:1rem}.pl-5{padding-left:1.25rem}.pl-8{padding-left:2rem}.pl-12{padding-left:3rem}.pl-36{padding-left:9rem}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.text-justify{text-align:justify}.align-middle{vertical-align:middle}.text-xs{font-size:.75rem;line-height:1rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem}.text-lg,.text-xl{line-height:1.75rem}.text-xl{font-size:1.25rem}.text-2xl{font-size:1.5rem;line-height:2rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-5xl{font-size:3rem;line-height:1}.font-normal{font-weight:400}.font-semibold{font-weight:600}.font-bold{font-weight:700}.uppercase{text-transform:uppercase}.lowercase{text-transform:lowercase}.capitalize{text-transform:capitalize}.italic{font-style:italic}.ordinal{--tw-ordinal:var(--tw-empty,/*!*/ /*!*/);--tw-slashed-zero:var(--tw-empty,/*!*/ /*!*/);--tw-numeric-figure:var(--tw-empty,/*!*/ /*!*/);--tw-numeric-spacing:var(--tw-empty,/*!*/ /*!*/);--tw-numeric-fraction:var(--tw-empty,/*!*/ /*!*/);font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction);--tw-ordinal:ordinal}.leading-5{line-height:1.25rem}.leading-none{line-height:1}.leading-snug{line-height:1.375}.leading-normal{line-height:1.5}.text-black{--tw-text-opacity:1;color:rgba(0,0,0,var(--tw-text-opacity))}.text-white{--tw-text-opacity:1;color:rgba(255,255,255,var(--tw-text-opacity))}.text-gray-200{--tw-text-opacity:1;color:rgba(229,231,235,var(--tw-text-opacity))}.text-gray-300{--tw-text-opacity:1;color:rgba(209,213,219,var(--tw-text-opacity))}.text-gray-400{--tw-text-opacity:1;color:rgba(156,163,175,var(--tw-text-opacity))}.text-gray-500{--tw-text-opacity:1;color:rgba(107,114,128,var(--tw-text-opacity))}.text-gray-600{--tw-text-opacity:1;color:rgba(75,85,99,var(--tw-text-opacity))}.text-gray-700{--tw-text-opacity:1;color:rgba(55,65,81,var(--tw-text-opacity))}.text-gray-800{--tw-text-opacity:1;color:rgba(31,41,55,var(--tw-text-opacity))}.text-red-500{--tw-text-opacity:1;color:rgba(239,68,68,var(--tw-text-opacity))}.text-red-700{--tw-text-opacity:1;color:rgba(185,28,28,var(--tw-text-opacity))}.text-red-900{--tw-text-opacity:1;color:rgba(127,29,29,var(--tw-text-opacity))}.text-yellow-500{--tw-text-opacity:1;color:rgba(245,158,11,var(--tw-text-opacity))}.text-blue-400{--tw-text-opacity:1;color:rgba(96,165,250,var(--tw-text-opacity))}.text-blue-600{--tw-text-opacity:1;color:rgba(37,99,235,var(--tw-text-opacity))}.text-blue-700{--tw-text-opacity:1;color:rgba(29,78,216,var(--tw-text-opacity))}.hover\:text-black:hover{--tw-text-opacity:1;color:rgba(0,0,0,var(--tw-text-opacity))}.hover\:text-white:hover{--tw-text-opacity:1;color:rgba(255,255,255,var(--tw-text-opacity))}.focus\:text-black:focus{--tw-text-opacity:1;color:rgba(0,0,0,var(--tw-text-opacity))}.underline{text-decoration:underline}.line-through{text-decoration:line-through}.opacity-0{opacity:0}.opacity-50{opacity:.5}.opacity-60{opacity:.6}.opacity-75{opacity:.75}.hover\:opacity-50:hover{opacity:.5}.hover\:opacity-90:hover{opacity:.9}.focus\:opacity-100:focus{opacity:1}*,:after,:before{--tw-shadow:0 0 transparent}.shadow{--tw-shadow:0 1px 3px 0 rgba(0,0,0,0.1),0 1px 2px 0 rgba(0,0,0,0.06)}.shadow,.shadow-md{box-shadow:var(--tw-ring-offset-shadow,0 0 transparent),var(--tw-ring-shadow,0 0 transparent),var(--tw-shadow)}.shadow-md{--tw-shadow:0 4px 6px -1px rgba(0,0,0,0.1),0 2px 4px -1px rgba(0,0,0,0.06)}.shadow-2xl{--tw-shadow:0 25px 50px -12px rgba(0,0,0,0.25);box-shadow:var(--tw-ring-offset-shadow,0 0 transparent),var(--tw-ring-shadow,0 0 transparent),var(--tw-shadow)}.focus\:outline-none:focus,.outline-none{outline:2px solid transparent;outline-offset:2px}*,:after,:before{--tw-ring-inset:var(--tw-empty,/*!*/ /*!*/);--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,0.5);--tw-ring-offset-shadow:0 0 transparent;--tw-ring-shadow:0 0 transparent}.focus\:ring:focus,.ring{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 transparent)}.focus\:ring-blue-500:focus{--tw-ring-opacity:1;--tw-ring-color:rgba(59,130,246,var(--tw-ring-opacity))}.focus\:ring-opacity-30:focus{--tw-ring-opacity:0.3}.filter{--tw-blur:var(--tw-empty,/*!*/ /*!*/);--tw-brightness:var(--tw-empty,/*!*/ /*!*/);--tw-contrast:var(--tw-empty,/*!*/ /*!*/);--tw-grayscale:var(--tw-empty,/*!*/ /*!*/);--tw-hue-rotate:var(--tw-empty,/*!*/ /*!*/);--tw-invert:var(--tw-empty,/*!*/ /*!*/);--tw-saturate:var(--tw-empty,/*!*/ /*!*/);--tw-sepia:var(--tw-empty,/*!*/ /*!*/);--tw-drop-shadow:var(--tw-empty,/*!*/ /*!*/);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.blur{--tw-blur:blur(8px)}.drop-shadow{--tw-drop-shadow:drop-shadow(0 1px 2px rgba(0,0,0,0.1)) drop-shadow(0 1px 1px rgba(0,0,0,0.06))}.grayscale{--tw-grayscale:grayscale(100%)}.invert{--tw-invert:invert(100%)}.sepia{--tw-sepia:sepia(100%)}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition{transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1)}.duration-150,.transition-opacity{transition-duration:.15s}.duration-300{transition-duration:.3s}.duration-500{transition-duration:.5s}.duration-1000{transition-duration:1s}.ease-in{transition-timing-function:cubic-bezier(.4,0,1,1)}.ease-out{transition-timing-function:cubic-bezier(0,0,.2,1)}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}.tippy-content{text-align:center}.tippy-box[data-animation=chapter-menu][data-placement^=right]>.tippy-backdrop{transform-origin:50% 0!important}@media (min-width:640px){.sm\:top-1{top:.25rem}.sm\:z-20{z-index:20}.sm\:order-1{order:1}.sm\:order-2{order:2}.sm\:mx-10{margin-left:2.5rem;margin-right:2.5rem}.sm\:mx-16{margin-left:4rem;margin-right:4rem}.sm\:mx-20{margin-left:5rem;margin-right:5rem}.sm\:mr-1{margin-right:.25rem}.sm\:mr-3{margin-right:.75rem}.sm\:mr-5{margin-right:1.25rem}.sm\:mr-12{margin-right:3rem}.sm\:mr-16{margin-right:4rem}.sm\:mb-0{margin-bottom:0}.sm\:ml-0{margin-left:0}.sm\:ml-3{margin-left:.75rem}.sm\:ml-5{margin-left:1.25rem}.sm\:ml-20{margin-left:5rem}.sm\:block{display:block}.sm\:flex{display:flex}.sm\:max-h-screen{max-height:100vh}.sm\:w-64{width:16rem}.sm\:w-1\/2{width:50%}.sm\:w-4\/5{width:80%}.sm\:flex-row{flex-direction:row}.sm\:flex-col{flex-direction:column}.sm\:self-start{align-self:flex-start}.sm\:p-3{padding:.75rem}.sm\:p-8{padding:2rem}.sm\:p-12{padding:3rem}.sm\:px-8{padding-left:2rem;padding-right:2rem}.sm\:px-16{padding-left:4rem;padding-right:4rem}.sm\:py-6{padding-top:1.5rem;padding-bottom:1.5rem}.sm\:pr-0{padding-right:0}.sm\:pr-8{padding-right:2rem}.sm\:pr-40{padding-right:10rem}.sm\:pb-48{padding-bottom:12rem}.sm\:pl-2{padding-left:.5rem}.sm\:pl-80{padding-left:20rem}.sm\:text-base{font-size:1rem;line-height:1.5rem}.sm\:text-lg{font-size:1.125rem;line-height:1.75rem}} \ No newline at end of file diff --git a/fix-292/css/chunk-common.a572346f.css b/fix-292/css/chunk-common.a572346f.css new file mode 100644 index 00000000..2dc26784 --- /dev/null +++ b/fix-292/css/chunk-common.a572346f.css @@ -0,0 +1,5 @@ +.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-d8aa8408]{width:46%}.chart-item .handle[data-v-d8aa8408]{cursor:move;cursor:grab;cursor:-webkit-grab}.confirm-button[data-v-468630e0]{background-color:#000!important;color:#fff!important}.cancel-button[data-v-468630e0]{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-44e16318] .jsoneditor-vue{height:100vh}.image-item[data-v-1c58f06c]{width:30%;cursor:move;cursor:grab;cursor:-webkit-grab}.image-item .image-file[data-v-1c58f06c]{aspect-ratio:auto;max-height:300px}.image-item .image-container[data-v-1c58f06c]{display:flex;align-items:center;justify-content:center;height:300px}.image-item button[data-v-1c58f06c]{padding:0!important}.upload-image input[type=file][data-v-4ee6d780]: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-4ee6d780]{width:auto!important}.text-label[data-v-4ee6d780]{width:25%!important;margin-right:.5rem!important;margin-bottom:0!important}.dragging[data-v-4ee6d780]{background-color:#fffaf0;border-color:#fff}label[data-v-37b76b8f]{text-align:left!important}label[data-v-98eacf1c],label[data-v-62693dea]{text-align:left!important;width:-moz-fit-content!important;width:fit-content!important}select[data-v-62693dea]{border:1px solid #000;background:#fff;padding:.25rem .5rem}.map-item[data-v-62693dea]{width:300px;background:#eee;text-align:center;padding:25px;cursor:pointer}.map-item button[data-v-62693dea]{padding:0!important}.edit-map[data-v-62693dea]{content:url(../img/edit-icon.2e67cc99.svg);margin:0 auto;margin-bottom:20px}.add-map[data-v-62693dea]{content:url(../img/add.daae1e59.svg);margin:0 auto;margin-bottom:20px}input[type=number][data-v-62693dea]{width:76px}[data-v-62693dea] rv-basemap-item .rv-basemap-thumb img{max-width:none}[data-v-62693dea] .rv-details-attrib-value a{white-space:unset!important}[data-v-62693dea] .ramp-app{height:100%}[data-v-62693dea] .ramp-app .h1,[data-v-62693dea] .ramp-app .h2,[data-v-62693dea] .ramp-app .h3,[data-v-62693dea] .ramp-app .h4,[data-v-62693dea] .ramp-app .h5,[data-v-62693dea] .ramp-app .h6,[data-v-62693dea] .ramp-app h1,[data-v-62693dea] .ramp-app h2,[data-v-62693dea] .ramp-app h3,[data-v-62693dea] .ramp-app h4,[data-v-62693dea] .ramp-app h5,[data-v-62693dea] .ramp-app h6{font-family:Montserrat,-apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji;line-height:1.5}[data-v-62693dea] .ramp-app input[type=checkbox]{margin-top:unset}.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-33605cfc]: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-33605cfc]{width:auto!important}.text-label[data-v-33605cfc]{width:25%!important;margin-right:.5rem!important;margin-bottom:0!important}.dragging[data-v-33605cfc]{background-color:#fffaf0;border-color:#fff}label[data-v-7cb258ba]{text-align:left!important;width:-moz-fit-content!important;width:fit-content!important}select[data-v-7cb258ba]{border:1px solid #000;background:#fff;padding:.25rem .5rem}.table-header th[data-v-7cb258ba]{text-align:center;background-color:#ddd;padding:5px}.table-contents td[data-v-7cb258ba]{text-align:center;padding:5px}.table-contents[data-v-7cb258ba]:hover{background-color:#eee;cursor:pointer}.table-add-row th[data-v-7cb258ba]{vertical-align:top;text-align:center;border-top:1px solid #ddd;padding:5px}.table-add-row button[data-v-7cb258ba],.table-add-row input[type=text][data-v-7cb258ba],.table-add-row select[data-v-7cb258ba]{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-49b602b6]{text-align:left!important;margin-left:.5rem}input[type=checkbox][data-v-49b602b6]:checked{accent-color:#000;color:#fff}select[data-v-49b602b6]{border:1px solid #000;background:#fff;padding:.25rem .5rem}.table-of-contents-slide button[data-v-49b602b6]{padding:0;border:none}.toc-slide-button[data-v-aef69d80]{border:none!important;background:none!important;padding:0!important;margin:0!important}.toc-slide-button[data-v-aef69d80]:hover{background:none!important}.copy-select[data-v-aef69d80]{width:450px}.editor-container{margin:0 auto}.editor-label{width:10vw;text-align:right;margin-right:15px;display:inline-block}.editor-h3{font-size:larger}.editor-input{padding:5px 10px;margin-top:5px;border:1px solid #000;display:inline}.editor-container .input-error{border:1px solid red}.editor-button{padding:5px 12px;margin:0 10px;font-weight:600;transition-duration:.2s}.editor-button:hover:enabled{background-color:#dbdbdb;color:#000}.editor-button:disabled{border:1px solid grey;color:grey;cursor:not-allowed}.editor-toc-button{background-color:#f3f4f6;color:#000;border:none;transition-duration:.2s;padding:.25 .25em!important}.editor-header{top:-1px;padding-top:9px}.fade-enter-active,.fade-leave-active{transition:opacity .2s}.fade-enter,.fade-leave-to{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 .vfm__content 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 .vfm__content 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 .vfm__content button,.vfm .vfm__content button{padding:5px 12px;margin:0 10px;font-weight:600;transition-duration:.2s}.storyramp-app .vfm__content button:hover:enabled,.vfm .vfm__content button:hover:enabled{background-color:#dbdbdb;color:#000}.storyramp-app .vfm__content 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 */ + +/*! modern-normalize v1.1.0 | MIT License | https://github.com/sindresorhus/modern-normalize */html{-moz-tab-size:4;-o-tab-size:4;tab-size:4;line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0;font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji}hr{height:0;color:inherit}abbr[title]{-webkit-text-decoration:underline dotted;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}::-moz-focus-inner{border-style:none;padding:0}legend{padding:0}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}button{background-color:transparent;background-image:none}fieldset,ol,ul{margin:0;padding:0}ol,ul{list-style:none}html{font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;line-height:1.5}body{font-family:inherit;line-height:inherit}*,:after,:before{box-sizing:border-box;border-width:0;border-style:solid;border-color:currentColor}hr{border-top-width:1px}img{border-style:solid}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}[role=button],button{cursor:pointer}table{border-collapse:collapse}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}button,input,optgroup,select,textarea{padding:0;line-height:inherit;color:inherit}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]{display:none}*,:after,:before{--tw-border-opacity:1;border-color:rgba(229,231,235,var(--tw-border-opacity))}.container{width:100%}@media (min-width:640px){.container{max-width:640px}}@media (min-width:768px){.container{max-width:768px}}@media (min-width:1024px){.container{max-width:1024px}}@media (min-width:1280px){.container{max-width:1280px}}@media (min-width:1536px){.container{max-width:1536px}}.prose{color:#374151;max-width:65ch}.prose [class~=lead]{color:#4b5563;font-size:1.25em;line-height:1.6;margin-top:1.2em;margin-bottom:1.2em}.prose a{color:#111827;text-decoration:underline;font-weight:500}.prose a:link{color:#00f}.prose a:hover,.prose a:visited{color:purple}.prose a:active{color:#00f}.prose strong{color:#111827;font-weight:600}.prose ol[type=A]{--list-counter-style:upper-alpha}.prose ol[type=a]{--list-counter-style:lower-alpha}.prose ol[type=I]{--list-counter-style:upper-roman}.prose ol[type=i]{--list-counter-style:lower-roman}.prose ol[type="1"]{--list-counter-style:decimal}.prose ol>li{position:relative;padding-left:1.75em}.prose ol>li:before{content:counter(list-item,var(--list-counter-style,decimal)) ".";position:absolute;font-weight:400;color:#6b7280;left:0}.prose ul>li{position:relative;padding-left:1.75em}.prose ul>li:before{content:"";position:absolute;background-color:#d1d5db;border-radius:50%;width:.375em;height:.375em;top:.6875em;left:.25em}.prose hr{border-color:#e5e7eb;border-top-width:1px;margin-top:3em;margin-bottom:3em}.prose blockquote{font-weight:500;font-style:italic;color:#111827;border-left-width:.25rem;border-left-color:#e5e7eb;quotes:"\201C""\201D""\2018""\2019";margin-top:1.6em;margin-bottom:1.6em;padding-left:1em}.prose blockquote p:first-of-type:before{content:open-quote}.prose blockquote p:last-of-type:after{content:close-quote}.prose h1{color:#111827;font-weight:800;font-size:2.25em;margin-top:0;margin-bottom:.8888889em;line-height:1.1111111}.prose h2{color:#111827;font-weight:700;font-size:1.5em;margin-top:2em;margin-bottom:1em;line-height:1.3333333}.prose h3{font-size:1.25em;margin-top:1.6em;margin-bottom:.6em;line-height:1.6}.prose h3,.prose h4{color:#111827;font-weight:600}.prose h4{margin-top:1.5em;margin-bottom:.5em;line-height:1.5}.prose figure figcaption{color:#6b7280;font-size:.875em;line-height:1.4285714;margin-top:.8571429em}.prose code{color:#111827;font-weight:600;font-size:.875em}.prose code:after,.prose code:before{content:"`"}.prose a code{color:#111827}.prose pre{color:#e5e7eb;background-color:#1f2937;overflow-x:auto;font-size:.875em;line-height:1.7142857;margin-top:1.7142857em;margin-bottom:1.7142857em;border-radius:.375rem;padding-top:.8571429em;padding-right:1.1428571em;padding-bottom:.8571429em;padding-left:1.1428571em}.prose pre code{background-color:transparent;border-width:0;border-radius:0;padding:0;font-weight:400;color:inherit;font-size:inherit;font-family:inherit;line-height:inherit}.prose pre code:after,.prose pre code:before{content:none}.prose table{width:100%;table-layout:auto;text-align:left;margin-top:2em;margin-bottom:2em;font-size:.875em;line-height:1.7142857}.prose thead{color:#111827;font-weight:600;border-bottom-width:1px;border-bottom-color:#d1d5db}.prose thead th{vertical-align:bottom;padding-right:.5714286em;padding-bottom:.5714286em;padding-left:.5714286em}.prose tbody tr{border-bottom-width:1px;border-bottom-color:#e5e7eb}.prose tbody tr:last-child{border-bottom-width:0}.prose tbody td{vertical-align:top;padding-top:.5714286em;padding-right:.5714286em;padding-bottom:.5714286em;padding-left:.5714286em}.prose{font-size:1rem;line-height:1.75}.prose p{margin-top:1.25em;margin-bottom:1.25em}.prose{img:disabled}.prose figure,.prose video{margin-top:2em;margin-bottom:2em}.prose figure>*{margin-top:0;margin-bottom:0}.prose h2 code{font-size:.875em}.prose h3 code{font-size:.9em}.prose ol,.prose ul{margin-top:1.25em;margin-bottom:1.25em}.prose li{margin-top:.5em;margin-bottom:.5em}.prose>ul>li p{margin-top:.75em;margin-bottom:.75em}.prose>ul>li>:first-child{margin-top:1.25em}.prose>ul>li>:last-child{margin-bottom:1.25em}.prose>ol>li>:first-child{margin-top:1.25em}.prose>ol>li>:last-child{margin-bottom:1.25em}.prose ol ol,.prose ol ul,.prose ul ol,.prose ul ul{margin-top:.75em;margin-bottom:.75em}.prose h2+*,.prose h3+*,.prose h4+*,.prose hr+*{margin-top:0}.prose thead th:first-child{padding-left:0}.prose thead th:last-child{padding-right:0}.prose tbody td:first-child{padding-left:0}.prose tbody td:last-child{padding-right:0}.prose>:first-child{margin-top:0}.prose>:last-child{margin-bottom:0}.prose img:not(.story-graphic){margin-top:2em;margin-bottom:2em}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.pointer-events-none{pointer-events:none}.pointer-events-auto{pointer-events:auto}.visible{visibility:visible}.invisible{visibility:hidden}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.inset-0{top:0;bottom:0}.inset-0,.inset-x-0{right:0;left:0}.inset-x-1\/2{left:50%;right:50%}.top-0{top:0}.top-1{top:.25rem}.top-2{top:.5rem}.top-3{top:.75rem}.top-5{top:1.25rem}.top-8{top:2rem}.top-16{top:4rem}.top-20{top:5rem}.-top-2{top:-.5rem}.top-1\/2{top:50%}.right-0{right:0}.right-2{right:.5rem}.right-3{right:.75rem}.right-4{right:1rem}.right-5{right:1.25rem}.right-10{right:2.5rem}.-right-1{right:-.25rem}.-right-2{right:-.5rem}.bottom-0{bottom:0}.bottom-2{bottom:.5rem}.bottom-6{bottom:1.5rem}.bottom-28{bottom:7rem}.bottom-36{bottom:9rem}.bottom-48{bottom:12rem}.left-0{left:0}.left-2{left:.5rem}.left-3{left:.75rem}.left-4{left:1rem}.left-6{left:1.5rem}.left-8{left:2rem}.left-1\/2{left:50%}.left-full{left:100%}.z-10{z-index:10}.z-20{z-index:20}.z-30{z-index:30}.z-40{z-index:40}.z-50{z-index:50}.order-1{order:1}.order-2{order:2}.float-right{float:right}.m-0{margin:0}.m-1{margin:.25rem}.m-2{margin:.5rem}.m-4{margin:1rem}.m-5{margin:1.25rem}.m-8{margin:2rem}.m-10{margin:2.5rem}.m-24{margin:6rem}.m-auto{margin:auto}.mx-1{margin-left:.25rem;margin-right:.25rem}.mx-2{margin-left:.5rem;margin-right:.5rem}.mx-3{margin-left:.75rem;margin-right:.75rem}.mx-4{margin-left:1rem;margin-right:1rem}.mx-5{margin-left:1.25rem;margin-right:1.25rem}.mx-8{margin-left:2rem;margin-right:2rem}.mx-10{margin-left:2.5rem;margin-right:2.5rem}.mx-auto{margin-left:auto;margin-right:auto}.my-1{margin-top:.25rem;margin-bottom:.25rem}.my-2{margin-top:.5rem;margin-bottom:.5rem}.my-4{margin-top:1rem;margin-bottom:1rem}.my-5{margin-top:1.25rem;margin-bottom:1.25rem}.my-6{margin-top:1.5rem;margin-bottom:1.5rem}.my-8{margin-top:2rem;margin-bottom:2rem}.my-16{margin-top:4rem;margin-bottom:4rem}.my-20{margin-top:5rem;margin-bottom:5rem}.my-auto{margin-top:auto;margin-bottom:auto}.my-2\.5{margin-top:.625rem;margin-bottom:.625rem}.mt-0{margin-top:0}.mt-1{margin-top:.25rem}.mt-2{margin-top:.5rem}.mt-3{margin-top:.75rem}.mt-4{margin-top:1rem}.mt-5{margin-top:1.25rem}.mt-6{margin-top:1.5rem}.mt-8{margin-top:2rem}.mt-10{margin-top:2.5rem}.mt-12{margin-top:3rem}.mt-16{margin-top:4rem}.mt-20{margin-top:5rem}.mt-36{margin-top:9rem}.mt-auto{margin-top:auto}.mr-1{margin-right:.25rem}.mr-2{margin-right:.5rem}.mr-4{margin-right:1rem}.mr-6{margin-right:1.5rem}.mr-8{margin-right:2rem}.mr-10{margin-right:2.5rem}.mr-12{margin-right:3rem}.mr-16{margin-right:4rem}.mr-auto{margin-right:auto}.mb-0{margin-bottom:0}.mb-1{margin-bottom:.25rem}.mb-3{margin-bottom:.75rem}.mb-4{margin-bottom:1rem}.mb-5{margin-bottom:1.25rem}.mb-6{margin-bottom:1.5rem}.mb-8{margin-bottom:2rem}.mb-10{margin-bottom:2.5rem}.mb-12{margin-bottom:3rem}.mb-14{margin-bottom:3.5rem}.mb-20{margin-bottom:5rem}.mb-0\.5{margin-bottom:.125rem}.ml-0{margin-left:0}.ml-1{margin-left:.25rem}.ml-2{margin-left:.5rem}.ml-3{margin-left:.75rem}.ml-4{margin-left:1rem}.ml-6{margin-left:1.5rem}.ml-8{margin-left:2rem}.ml-10{margin-left:2.5rem}.ml-20{margin-left:5rem}.ml-32{margin-left:8rem}.ml-48{margin-left:12rem}.ml-auto{margin-left:auto}.box-border{box-sizing:border-box}.box-content{box-sizing:content-box}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.contents{display:contents}.hidden{display:none}.h-1{height:.25rem}.h-3{height:.75rem}.h-4{height:1rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-9{height:2.25rem}.h-10{height:2.5rem}.h-12{height:3rem}.h-16{height:4rem}.h-20{height:5rem}.h-24{height:6rem}.h-28{height:7rem}.h-32{height:8rem}.h-36{height:9rem}.h-40{height:10rem}.h-44{height:11rem}.h-48{height:12rem}.h-56{height:14rem}.h-96{height:24rem}.h-auto{height:auto}.h-full{height:100%}.h-story{height:calc(100vh - 4rem)}.max-h-full{max-height:100%}.w-1{width:.25rem}.w-4{width:1rem}.w-5{width:1.25rem}.w-6{width:1.5rem}.w-8{width:2rem}.w-10{width:2.5rem}.w-12{width:3rem}.w-16{width:4rem}.w-20{width:5rem}.w-24{width:6rem}.w-28{width:7rem}.w-32{width:8rem}.w-40{width:10rem}.w-48{width:12rem}.w-64{width:16rem}.w-72{width:18rem}.w-80{width:20rem}.w-auto{width:auto}.w-1\/2{width:50%}.w-1\/3{width:33.333333%}.w-2\/3{width:66.666667%}.w-1\/4{width:25%}.w-3\/5{width:60%}.w-4\/5{width:80%}.w-5\/6{width:83.333333%}.w-full{width:100%}.min-w-0{min-width:0}.max-w-none{max-width:none}.max-w-xs{max-width:20rem}.max-w-xl{max-width:36rem}.max-w-2xl{max-width:42rem}.max-w-full{max-width:100%}.max-w-9xl{max-width:110rem}.flex-1{flex:1 1 0%}.flex-2{flex:2 2 0%}.flex-auto{flex:1 1 auto}.flex-none{flex:none}.flex-shrink-0{flex-shrink:0}.flex-shrink{flex-shrink:1}.flex-grow{flex-grow:1}.border-collapse{border-collapse:collapse}.transform{--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;transform:translateX(var(--tw-translate-x)) translateY(var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-x-1\/2{--tw-translate-x:-50%}.-translate-x-full{--tw-translate-x:-100%}.-translate-y-1\/2{--tw-translate-y:-50%}.rotate-90{--tw-rotate:90deg}.rotate-180{--tw-rotate:180deg}.-rotate-180{--tw-rotate:-180deg}.hover\:scale-105:hover{--tw-scale-x:1.05;--tw-scale-y:1.05}@keyframes spin{to{transform:rotate(1turn)}}@keyframes ping{75%,to{transform:scale(2);opacity:0}}@keyframes pulse{50%{opacity:.5}}@keyframes bounce{0%,to{transform:translateY(-25%);animation-timing-function:cubic-bezier(.8,0,1,1)}50%{transform:none;animation-timing-function:cubic-bezier(0,0,.2,1)}}.animate-spin{animation:spin 1s linear infinite}.cursor-auto{cursor:auto}.cursor-default{cursor:default}.cursor-pointer{cursor:pointer}.cursor-text{cursor:text}.cursor-move{cursor:move}.cursor-not-allowed{cursor:not-allowed}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.select-text{-webkit-user-select:text;-moz-user-select:text;user-select:text}.resize{resize:both}.list-none{list-style-type:none}.list-disc{list-style-type:disc}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.flex-row{flex-direction:row}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.content-start{align-content:flex-start}.content-end{align-content:flex-end}.items-start{align-items:flex-start}.items-center{align-items:center}.items-stretch{align-items:stretch}.justify-start{justify-content:flex-start}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-4{gap:1rem}.gap-y-8{row-gap:2rem}.space-x-5>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(1.25rem*var(--tw-space-x-reverse));margin-left:calc(1.25rem*(1 - var(--tw-space-x-reverse)))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(0.5rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(0.5rem*var(--tw-space-y-reverse))}.divide-y>:not([hidden])~:not([hidden]){--tw-divide-y-reverse:0;border-top-width:calc(1px*(1 - var(--tw-divide-y-reverse)));border-bottom-width:calc(1px*var(--tw-divide-y-reverse))}.self-start{align-self:flex-start}.self-end{align-self:flex-end}.self-center{align-self:center}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.overflow-y-hidden{overflow-y:hidden}.overflow-y-scroll{overflow-y:scroll}.truncate{overflow:hidden;white-space:nowrap}.overflow-ellipsis,.truncate{text-overflow:ellipsis}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-line{white-space:pre-line}.whitespace-pre-wrap{white-space:pre-wrap}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.rounded-none{border-radius:0}.rounded{border-radius:.25rem}.rounded-md{border-radius:.375rem}.rounded-lg{border-radius:.5rem}.rounded-full{border-radius:9999px}.border-2{border-width:2px}.border-4{border-width:4px}.border{border-width:1px}.border-t-0{border-top-width:0}.border-t-2{border-top-width:2px}.border-t{border-top-width:1px}.border-r{border-right-width:1px}.border-b{border-bottom-width:1px}.border-l-2{border-left-width:2px}.border-l{border-left-width:1px}.border-solid{border-style:solid}.border-dashed{border-style:dashed}.border-none{border-style:none}.border-black{--tw-border-opacity:1;border-color:rgba(0,0,0,var(--tw-border-opacity))}.border-white{--tw-border-opacity:1;border-color:rgba(255,255,255,var(--tw-border-opacity))}.border-gray-200{--tw-border-opacity:1;border-color:rgba(229,231,235,var(--tw-border-opacity))}.border-gray-300{--tw-border-opacity:1;border-color:rgba(209,213,219,var(--tw-border-opacity))}.border-gray-400{--tw-border-opacity:1;border-color:rgba(156,163,175,var(--tw-border-opacity))}.border-gray-500{--tw-border-opacity:1;border-color:rgba(107,114,128,var(--tw-border-opacity))}.border-gray-600{--tw-border-opacity:1;border-color:rgba(75,85,99,var(--tw-border-opacity))}.border-gray-800{--tw-border-opacity:1;border-color:rgba(31,41,55,var(--tw-border-opacity))}.border-red-700{--tw-border-opacity:1;border-color:rgba(185,28,28,var(--tw-border-opacity))}.border-blue-300{--tw-border-opacity:1;border-color:rgba(147,197,253,var(--tw-border-opacity))}.border-blue-500{--tw-border-opacity:1;border-color:rgba(59,130,246,var(--tw-border-opacity))}.hover\:border-black:hover{--tw-border-opacity:1;border-color:rgba(0,0,0,var(--tw-border-opacity))}.focus\:border-green-500:focus{--tw-border-opacity:1;border-color:rgba(16,185,129,var(--tw-border-opacity))}.bg-black{--tw-bg-opacity:1;background-color:rgba(0,0,0,var(--tw-bg-opacity))}.bg-white{--tw-bg-opacity:1;background-color:rgba(255,255,255,var(--tw-bg-opacity))}.bg-gray-100{--tw-bg-opacity:1;background-color:rgba(243,244,246,var(--tw-bg-opacity))}.bg-gray-200{--tw-bg-opacity:1;background-color:rgba(229,231,235,var(--tw-bg-opacity))}.bg-gray-300{--tw-bg-opacity:1;background-color:rgba(209,213,219,var(--tw-bg-opacity))}.bg-gray-400{--tw-bg-opacity:1;background-color:rgba(156,163,175,var(--tw-bg-opacity))}.bg-gray-500{--tw-bg-opacity:1;background-color:rgba(107,114,128,var(--tw-bg-opacity))}.bg-red-100{--tw-bg-opacity:1;background-color:rgba(254,226,226,var(--tw-bg-opacity))}.bg-red-200{--tw-bg-opacity:1;background-color:rgba(254,202,202,var(--tw-bg-opacity))}.bg-green-100{--tw-bg-opacity:1;background-color:rgba(209,250,229,var(--tw-bg-opacity))}.bg-green-500{--tw-bg-opacity:1;background-color:rgba(16,185,129,var(--tw-bg-opacity))}.bg-blue-100{--tw-bg-opacity:1;background-color:rgba(219,234,254,var(--tw-bg-opacity))}.bg-blue-200{--tw-bg-opacity:1;background-color:rgba(191,219,254,var(--tw-bg-opacity))}.bg-blue-500{--tw-bg-opacity:1;background-color:rgba(59,130,246,var(--tw-bg-opacity))}.bg-blue-800{--tw-bg-opacity:1;background-color:rgba(30,64,175,var(--tw-bg-opacity))}.hover\:bg-white:hover{--tw-bg-opacity:1;background-color:rgba(255,255,255,var(--tw-bg-opacity))}.hover\:bg-gray-100:hover{--tw-bg-opacity:1;background-color:rgba(243,244,246,var(--tw-bg-opacity))}.hover\:bg-gray-200:hover{--tw-bg-opacity:1;background-color:rgba(229,231,235,var(--tw-bg-opacity))}.hover\:bg-gray-300:hover{--tw-bg-opacity:1;background-color:rgba(209,213,219,var(--tw-bg-opacity))}.hover\:bg-gray-800:hover{--tw-bg-opacity:1;background-color:rgba(31,41,55,var(--tw-bg-opacity))}.hover\:bg-gray-900:hover{--tw-bg-opacity:1;background-color:rgba(17,24,39,var(--tw-bg-opacity))}.hover\:bg-green-700:hover{--tw-bg-opacity:1;background-color:rgba(4,120,87,var(--tw-bg-opacity))}.hover\:bg-blue-700:hover{--tw-bg-opacity:1;background-color:rgba(29,78,216,var(--tw-bg-opacity))}.focus\:bg-gray-200:focus{--tw-bg-opacity:1;background-color:rgba(229,231,235,var(--tw-bg-opacity))}.bg-opacity-30{--tw-bg-opacity:0.3}.fill-current{fill:currentColor}.stroke-1{stroke-width:1}.object-contain{-o-object-fit:contain;object-fit:contain}.object-cover{-o-object-fit:cover;object-fit:cover}.p-0{padding:0}.p-1{padding:.25rem}.p-2{padding:.5rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-5{padding:1.25rem}.p-6{padding:1.5rem}.p-8{padding:2rem}.p-12{padding:3rem}.p-20{padding:5rem}.px-1{padding-left:.25rem;padding-right:.25rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.px-7{padding-left:1.75rem;padding-right:1.75rem}.px-8{padding-left:2rem;padding-right:2rem}.px-10{padding-left:2.5rem;padding-right:2.5rem}.px-11{padding-left:2.75rem;padding-right:2.75rem}.px-12{padding-left:3rem;padding-right:3rem}.px-14{padding-left:3.5rem;padding-right:3.5rem}.px-16{padding-left:4rem;padding-right:4rem}.px-20{padding-left:5rem;padding-right:5rem}.py-0{padding-top:0;padding-bottom:0}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-5{padding-top:1.25rem;padding-bottom:1.25rem}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}.py-8{padding-top:2rem;padding-bottom:2rem}.py-10{padding-top:2.5rem;padding-bottom:2.5rem}.py-12{padding-top:3rem;padding-bottom:3rem}.py-16{padding-top:4rem;padding-bottom:4rem}.py-20{padding-top:5rem;padding-bottom:5rem}.py-24{padding-top:6rem;padding-bottom:6rem}.pt-2{padding-top:.5rem}.pt-5{padding-top:1.25rem}.pt-10{padding-top:2.5rem}.pt-24{padding-top:6rem}.pr-4{padding-right:1rem}.pr-5{padding-right:1.25rem}.pr-12{padding-right:3rem}.pr-16{padding-right:4rem}.pr-32{padding-right:8rem}.pb-1{padding-bottom:.25rem}.pb-2{padding-bottom:.5rem}.pb-4{padding-bottom:1rem}.pb-5{padding-bottom:1.25rem}.pb-8{padding-bottom:2rem}.pb-10{padding-bottom:2.5rem}.pb-24{padding-bottom:6rem}.pb-36{padding-bottom:9rem}.pl-0{padding-left:0}.pl-1{padding-left:.25rem}.pl-2{padding-left:.5rem}.pl-3{padding-left:.75rem}.pl-4{padding-left:1rem}.pl-5{padding-left:1.25rem}.pl-8{padding-left:2rem}.pl-12{padding-left:3rem}.pl-36{padding-left:9rem}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.text-justify{text-align:justify}.align-middle{vertical-align:middle}.text-xs{font-size:.75rem;line-height:1rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem}.text-lg,.text-xl{line-height:1.75rem}.text-xl{font-size:1.25rem}.text-2xl{font-size:1.5rem;line-height:2rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-5xl{font-size:3rem;line-height:1}.font-normal{font-weight:400}.font-semibold{font-weight:600}.font-bold{font-weight:700}.uppercase{text-transform:uppercase}.lowercase{text-transform:lowercase}.capitalize{text-transform:capitalize}.italic{font-style:italic}.ordinal{--tw-ordinal:var(--tw-empty,/*!*/ /*!*/);--tw-slashed-zero:var(--tw-empty,/*!*/ /*!*/);--tw-numeric-figure:var(--tw-empty,/*!*/ /*!*/);--tw-numeric-spacing:var(--tw-empty,/*!*/ /*!*/);--tw-numeric-fraction:var(--tw-empty,/*!*/ /*!*/);font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction);--tw-ordinal:ordinal}.leading-5{line-height:1.25rem}.leading-none{line-height:1}.leading-snug{line-height:1.375}.leading-normal{line-height:1.5}.text-black{--tw-text-opacity:1;color:rgba(0,0,0,var(--tw-text-opacity))}.text-white{--tw-text-opacity:1;color:rgba(255,255,255,var(--tw-text-opacity))}.text-gray-200{--tw-text-opacity:1;color:rgba(229,231,235,var(--tw-text-opacity))}.text-gray-300{--tw-text-opacity:1;color:rgba(209,213,219,var(--tw-text-opacity))}.text-gray-400{--tw-text-opacity:1;color:rgba(156,163,175,var(--tw-text-opacity))}.text-gray-500{--tw-text-opacity:1;color:rgba(107,114,128,var(--tw-text-opacity))}.text-gray-600{--tw-text-opacity:1;color:rgba(75,85,99,var(--tw-text-opacity))}.text-gray-700{--tw-text-opacity:1;color:rgba(55,65,81,var(--tw-text-opacity))}.text-gray-800{--tw-text-opacity:1;color:rgba(31,41,55,var(--tw-text-opacity))}.text-red-500{--tw-text-opacity:1;color:rgba(239,68,68,var(--tw-text-opacity))}.text-red-700{--tw-text-opacity:1;color:rgba(185,28,28,var(--tw-text-opacity))}.text-red-900{--tw-text-opacity:1;color:rgba(127,29,29,var(--tw-text-opacity))}.text-yellow-500{--tw-text-opacity:1;color:rgba(245,158,11,var(--tw-text-opacity))}.text-blue-400{--tw-text-opacity:1;color:rgba(96,165,250,var(--tw-text-opacity))}.text-blue-600{--tw-text-opacity:1;color:rgba(37,99,235,var(--tw-text-opacity))}.text-blue-700{--tw-text-opacity:1;color:rgba(29,78,216,var(--tw-text-opacity))}.hover\:text-black:hover{--tw-text-opacity:1;color:rgba(0,0,0,var(--tw-text-opacity))}.hover\:text-white:hover{--tw-text-opacity:1;color:rgba(255,255,255,var(--tw-text-opacity))}.focus\:text-black:focus{--tw-text-opacity:1;color:rgba(0,0,0,var(--tw-text-opacity))}.underline{text-decoration:underline}.line-through{text-decoration:line-through}.opacity-0{opacity:0}.opacity-50{opacity:.5}.opacity-60{opacity:.6}.opacity-75{opacity:.75}.hover\:opacity-50:hover{opacity:.5}.hover\:opacity-90:hover{opacity:.9}.focus\:opacity-100:focus{opacity:1}*,:after,:before{--tw-shadow:0 0 transparent}.shadow{--tw-shadow:0 1px 3px 0 rgba(0,0,0,0.1),0 1px 2px 0 rgba(0,0,0,0.06)}.shadow,.shadow-md{box-shadow:var(--tw-ring-offset-shadow,0 0 transparent),var(--tw-ring-shadow,0 0 transparent),var(--tw-shadow)}.shadow-md{--tw-shadow:0 4px 6px -1px rgba(0,0,0,0.1),0 2px 4px -1px rgba(0,0,0,0.06)}.shadow-2xl{--tw-shadow:0 25px 50px -12px rgba(0,0,0,0.25);box-shadow:var(--tw-ring-offset-shadow,0 0 transparent),var(--tw-ring-shadow,0 0 transparent),var(--tw-shadow)}.focus\:outline-none:focus,.outline-none{outline:2px solid transparent;outline-offset:2px}*,:after,:before{--tw-ring-inset:var(--tw-empty,/*!*/ /*!*/);--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,0.5);--tw-ring-offset-shadow:0 0 transparent;--tw-ring-shadow:0 0 transparent}.focus\:ring:focus,.ring{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 transparent)}.focus\:ring-blue-500:focus{--tw-ring-opacity:1;--tw-ring-color:rgba(59,130,246,var(--tw-ring-opacity))}.focus\:ring-opacity-30:focus{--tw-ring-opacity:0.3}.filter{--tw-blur:var(--tw-empty,/*!*/ /*!*/);--tw-brightness:var(--tw-empty,/*!*/ /*!*/);--tw-contrast:var(--tw-empty,/*!*/ /*!*/);--tw-grayscale:var(--tw-empty,/*!*/ /*!*/);--tw-hue-rotate:var(--tw-empty,/*!*/ /*!*/);--tw-invert:var(--tw-empty,/*!*/ /*!*/);--tw-saturate:var(--tw-empty,/*!*/ /*!*/);--tw-sepia:var(--tw-empty,/*!*/ /*!*/);--tw-drop-shadow:var(--tw-empty,/*!*/ /*!*/);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.blur{--tw-blur:blur(8px)}.drop-shadow{--tw-drop-shadow:drop-shadow(0 1px 2px rgba(0,0,0,0.1)) drop-shadow(0 1px 1px rgba(0,0,0,0.06))}.grayscale{--tw-grayscale:grayscale(100%)}.invert{--tw-invert:invert(100%)}.sepia{--tw-sepia:sepia(100%)}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition{transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1)}.duration-150,.transition-opacity{transition-duration:.15s}.duration-300{transition-duration:.3s}.duration-500{transition-duration:.5s}.duration-1000{transition-duration:1s}.ease-in{transition-timing-function:cubic-bezier(.4,0,1,1)}.ease-out{transition-timing-function:cubic-bezier(0,0,.2,1)}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}.tippy-content{text-align:center}.tippy-box[data-animation=chapter-menu][data-placement^=right]>.tippy-backdrop{transform-origin:50% 0!important}@media (min-width:640px){.sm\:top-1{top:.25rem}.sm\:z-20{z-index:20}.sm\:order-1{order:1}.sm\:order-2{order:2}.sm\:mx-10{margin-left:2.5rem;margin-right:2.5rem}.sm\:mx-16{margin-left:4rem;margin-right:4rem}.sm\:mx-20{margin-left:5rem;margin-right:5rem}.sm\:mr-1{margin-right:.25rem}.sm\:mr-3{margin-right:.75rem}.sm\:mr-5{margin-right:1.25rem}.sm\:mr-12{margin-right:3rem}.sm\:mr-16{margin-right:4rem}.sm\:mb-0{margin-bottom:0}.sm\:ml-0{margin-left:0}.sm\:ml-3{margin-left:.75rem}.sm\:ml-5{margin-left:1.25rem}.sm\:ml-20{margin-left:5rem}.sm\:block{display:block}.sm\:flex{display:flex}.sm\:max-h-screen{max-height:100vh}.sm\:w-64{width:16rem}.sm\:w-1\/2{width:50%}.sm\:w-4\/5{width:80%}.sm\:flex-row{flex-direction:row}.sm\:flex-col{flex-direction:column}.sm\:self-start{align-self:flex-start}.sm\:p-3{padding:.75rem}.sm\:p-8{padding:2rem}.sm\:p-12{padding:3rem}.sm\:px-8{padding-left:2rem;padding-right:2rem}.sm\:px-16{padding-left:4rem;padding-right:4rem}.sm\:py-6{padding-top:1.5rem;padding-bottom:1.5rem}.sm\:pr-0{padding-right:0}.sm\:pr-8{padding-right:2rem}.sm\:pr-40{padding-right:10rem}.sm\:pb-48{padding-bottom:12rem}.sm\:pl-2{padding-left:.5rem}.sm\:pl-80{padding-left:20rem}.sm\:text-base{font-size:1rem;line-height:1.5rem}.sm\:text-lg{font-size:1.125rem;line-height:1.75rem}} \ No newline at end of file diff --git a/fix-292/index-ca-en.html b/fix-292/index-ca-en.html index 1796bf66..3d8f04c1 100644 --- a/fix-292/index-ca-en.html +++ b/fix-292/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/fix-292/index-ca-fr.html b/fix-292/index-ca-fr.html index 7d3e183a..08db5bf4 100644 --- a/fix-292/index-ca-fr.html +++ b/fix-292/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/fix-292/index.html b/fix-292/index.html index 50db7d72..0f4ff91d 100644 --- a/fix-292/index.html +++ b/fix-292/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/fix-292/js/chunk-common.46eaea93.js b/fix-292/js/chunk-common.46eaea93.js new file mode 100644 index 00000000..045397be --- /dev/null +++ b/fix-292/js/chunk-common.46eaea93.js @@ -0,0 +1,2 @@ +(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-common"],{0:function(e,t){},"012b":function(e,t,i){},"034f":function(e,t,i){"use strict";i("abba")},1:function(e,t,i){e.exports=i("cd49")},2208:function(e,t,i){"use strict";i("d932")},"30ce":function(e,t,i){},"38c8":function(e,t,i){},"3b76":function(e,t,i){"use strict";i("b3f9")},"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:"Scénarios de la PCAR",frValid:"1"},{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 scénarios 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.feedback",enValue:"Send Us Feedback",enValid:"1",frValue:"Envoyez-nous vos commentaires",frValid:"0"},{key:"editor.feedback.subject",enValue:"Storylines Editor Feedback",enValid:"1",frValue:"Commentaires de l'éditeur de scénarios",frValid:"0"},{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:"IDUU",frValid:"1"},{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.loadPrevious",enValue:"Load Previous",enValid:"1",frValue:"[FR] Load Previous",frValid:"0"},{key:"editor.viewHistory",enValue:"View Previous",enValid:"1",frValue:"[FR] View Previous",frValid:"0"},{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.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.centerPanel",enValue:"Center panel content",enValid:"1",frValue:"Contenu de la diapositive centrale",frValid:"0"},{key:"editor.slides.centerSlide",enValue:"Center slide content",enValid:"1",frValue:"Contenu du panneau central",frValid:"0"},{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"},{key:"editor.landing.greeting",enValue:"Hello",enValid:"1",frValue:"Bonjour",frValid:"1"}];i.columns=["key","enValue","enValid","frValue","frValid"],e.exports=i},4397:function(e,t,i){"use strict";i("30ce")},"480b":function(e,t,i){"use strict";i("012b")},"569f":function(e,t,i){},"5ada":function(e,t,i){"use strict";i("c62c")},"5d55":function(e,t,i){"use strict";i("8b0c")},"63b8":function(e,t,i){},6511:function(e,t,i){"use strict";i("8273")},7112:function(e,t,i){},"72c3":function(e,t,i){"use strict";i("e593")},8273:function(e,t,i){},8846:function(e,t,i){"use strict";i("63b8")},"8b0c":function(e,t,i){},"8c10":function(e,t,i){},"94db":function(e,t,i){"use strict";i("9bd2")},"9bd2":function(e,t,i){},"9c68":function(e,t,i){"use strict";i("d364")},"9f5c":function(e,t,i){"use strict";i("ef88")},a0ea:function(e){e.exports=JSON.parse('{"startingFixtures":["export","geosearch","overviewmap","basemap","legend","mapnav","help","appbar","help","grid","crosshairs","scrollguard","panguard","wizard","layer-reorder","details"],"configs":{"en":{"version":"4.0","fixtures":{"geosearch":{"serviceUrls":{"geoNames":"https://geogratis.gc.ca/services/geoname/en/geonames.json","geoLocation":"https://geogratis.gc.ca/services/geolocation/en/locate?q=","geoProvince":"https://geogratis.gc.ca/services/geoname/en/codes/province.json","geoTypes":"https://geogratis.gc.ca/services/geoname/en/codes/concise.json"},"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}},"export":{"title":{"selected":true,"selectable":true,"value":""},"map":{"selected":true,"selectable":true},"mapElements":{"selected":true,"selectable":true},"legend":{"selected":true,"selectable":true},"footnote":{"selected":true,"selectable":true,"value":""}},"overviewmap":{"basemaps":{},"startMinimized":true,"expandFactor":1.5},"legend":{"root":{"name":"I\'m root","children":[]},"headerControls":["groupToggle","visibilityToggle"]},"mapnav":{"zoomOption":"buttons","items":["fullscreen","geolocator","home","help"]},"help":{"location":"./help","panelWidth":350},"appbar":{"items":["legend","geosearch","basemap","export","help"]}},"layers":[],"map":{"initialBasemapId":"baseNrCan","caption":{"mapCoords":{"disabled":false,"formatter":"LAT_LONG_DMS"},"scaleBar":{"disabled":false,"imperialScale":false}},"extentSets":[{"id":"EXT_NRCAN_Lambert_3978","default":{"xmin":-5281457,"xmax":3049492,"ymin":-983440,"ymax":4482193,"spatialReference":{"wkid":3978}}},{"id":"EXT_ESRI_World_AuxMerc_3857","default":{"xmin":-16632697.354854,"xmax":-5007771.626060756,"ymin":5022907.964742964,"ymax":10015875.184845109,"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}]}],"tileSchemas":[{"id":"EXT_NRCAN_Lambert_3978#LOD_NRCAN_Lambert_3978","name":"Lambert Maps","extentSetId":"EXT_NRCAN_Lambert_3978","lodSetId":"LOD_NRCAN_Lambert_3978","thumbnailTileUrls":[],"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","thumbnailTileUrls":[],"hasNorthPole":false}],"basemaps":[{"id":"baseNrCan","tileSchemaId":"EXT_NRCAN_Lambert_3978#LOD_NRCAN_Lambert_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":"The Canada Base Map - Transportation (CBMT)","layers":[{"id":"CBMT","layerType":"esri-tile","url":"https://maps-cartes.services.geo.ca/server2_serveur2/rest/services/BaseMaps/CBMT3978/MapServer","opacity":1}]},{"id":"baseSimple","tileSchemaId":"EXT_NRCAN_Lambert_3978#LOD_NRCAN_Lambert_3978","name":"Canada Base Map - Simple","description":"Canada Base Map - Simple","altText":"Canada base map - Simple","layers":[{"id":"SMR","layerType":"esri-tile","url":"https://maps-cartes.services.geo.ca/server2_serveur2/rest/services/BaseMaps/Simple/MapServer","opacity":1}]},{"id":"baseCBME_CBCE_HS_RO_3978","tileSchemaId":"EXT_NRCAN_Lambert_3978#LOD_NRCAN_Lambert_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":"esri-tile","url":"https://maps-cartes.services.geo.ca/server2_serveur2/rest/services/BaseMaps/CBME_CBCE_HS_RO_3978/MapServer","opacity":1}]},{"id":"baseCBMT_CBCT_GEOM_3978","tileSchemaId":"EXT_NRCAN_Lambert_3978#LOD_NRCAN_Lambert_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":"esri-tile","url":"https://maps-cartes.services.geo.ca/server2_serveur2/rest/services/BaseMaps/CBMT_CBCT_GEOM_3978/MapServer","opacity":1}]},{"id":"baseEsriWorld","tileSchemaId":"EXT_ESRI_World_AuxMerc_3857#LOD_ESRI_World_AuxMerc_3857","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":"esri-tile","url":"https://services.arcgisonline.com/arcgis/rest/services/World_Imagery/MapServer","opacity":1}]},{"id":"baseEsriPhysical","tileSchemaId":"EXT_ESRI_World_AuxMerc_3857#LOD_ESRI_World_AuxMerc_3857","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":"esri-tile","url":"https://services.arcgisonline.com/arcgis/rest/services/World_Physical_Map/MapServer","opacity":1}]},{"id":"baseEsriRelief","tileSchemaId":"EXT_ESRI_World_AuxMerc_3857#LOD_ESRI_World_AuxMerc_3857","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":"esri-tile","url":"https://services.arcgisonline.com/arcgis/rest/services/World_Shaded_Relief/MapServer","opacity":1}]},{"id":"baseEsriStreet","tileSchemaId":"EXT_ESRI_World_AuxMerc_3857#LOD_ESRI_World_AuxMerc_3857","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":"esri-tile","url":"https://services.arcgisonline.com/arcgis/rest/services/World_Street_Map/MapServer","opacity":1}]},{"id":"baseEsriTerrain","tileSchemaId":"EXT_ESRI_World_AuxMerc_3857#LOD_ESRI_World_AuxMerc_3857","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":"esri-tile","url":"https://services.arcgisonline.com/arcgis/rest/services/World_Terrain_Base/MapServer","opacity":1}]},{"id":"baseEsriTopo","tileSchemaId":"EXT_ESRI_World_AuxMerc_3857#LOD_ESRI_World_AuxMerc_3857","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":"esri-tile","url":"https://services.arcgisonline.com/arcgis/rest/services/World_Topo_Map/MapServer","opacity":1}]}]},"panels":{"open":[{"id":"legend"}]},"system":{"animate":true,"exposeOid":false,"exposeMeasurements":true,"proxyUrl":"https://maps.canada.ca/wmsproxy/ws/wmsproxy/executeFromProxy"}},"fr":{"version":"4.0","fixtures":{"geosearch":{"serviceUrls":{"geoNames":"https://geogratis.gc.ca/services/geoname/fr/geonames.json","geoLocation":"https://geogratis.gc.ca/services/geolocation/fr/locate?q=","geoProvince":"https://geogratis.gc.ca/services/geoname/fr/codes/province.json","geoTypes":"https://geogratis.gc.ca/services/geoname/fr/codes/concise.json"},"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}},"export":{"title":{"selected":true,"selectable":true,"value":""},"map":{"selected":true,"selectable":true},"mapElements":{"selected":true,"selectable":true},"legend":{"selected":true,"selectable":true},"footnote":{"selected":true,"selectable":true,"value":""}},"overviewmap":{"basemaps":{},"startMinimized":true,"expandFactor":1.5},"legend":{"root":{"name":"I\'m root","children":[]},"headerControls":["groupToggle","visibilityToggle"]},"mapnav":{"zoomOption":"buttons","items":["fullscreen","geolocator","home","help"]},"help":{"location":"./help","panelWidth":350},"appbar":{"items":["legend","geosearch","basemap","export","help"]}},"layers":[],"map":{"initialBasemapId":"baseNrCan","caption":{"mapCoords":{"disabled":false,"formatter":"LAT_LONG_DMS"},"scaleBar":{"disabled":false,"imperialScale":false}},"extentSets":[{"id":"EXT_NRCAN_Lambert_3978","default":{"xmin":-5281457,"xmax":3049492,"ymin":-983440,"ymax":4482193,"spatialReference":{"wkid":3978}}},{"id":"EXT_ESRI_World_AuxMerc_3857","default":{"xmin":-16632697.354854,"xmax":-5007771.626060756,"ymin":5022907.964742964,"ymax":10015875.184845109,"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}]}],"tileSchemas":[{"id":"EXT_NRCAN_Lambert_3978#LOD_NRCAN_Lambert_3978","name":"Lambert Maps","extentSetId":"EXT_NRCAN_Lambert_3978","lodSetId":"LOD_NRCAN_Lambert_3978","thumbnailTileUrls":[],"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","thumbnailTileUrls":[],"hasNorthPole":false}],"basemaps":[{"id":"baseNrCan","tileSchemaId":"EXT_NRCAN_Lambert_3978#LOD_NRCAN_Lambert_3978","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":"esri-tile","url":"https://maps-cartes.services.geo.ca/server2_serveur2/rest/services/BaseMaps/CBCT3978/MapServer","opacity":1}]},{"id":"baseSimple","tileSchemaId":"EXT_NRCAN_Lambert_3978#LOD_NRCAN_Lambert_3978","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":"esri-tile","url":"https://maps-cartes.services.geo.ca/server2_serveur2/rest/services/BaseMaps/Simple/MapServer","opacity":1},{"id":"SMW","layerType":"esri-tile","url":"https://maps-cartes.services.geo.ca/server2_serveur2/rest/services/BaseMaps/CBMT_TXT_3978/MapServer","opacity":1}]},{"id":"baseCBME_CBCE_HS_RO_3978","tileSchemaId":"EXT_NRCAN_Lambert_3978#LOD_NRCAN_Lambert_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":"esri-tile","url":"https://maps-cartes.services.geo.ca/server2_serveur2/rest/services/BaseMaps/CBME_CBCE_HS_RO_3978/MapServer","opacity":1}]},{"id":"baseCBMT_CBCT_GEOM_3978","tileSchemaId":"EXT_NRCAN_Lambert_3978#LOD_NRCAN_Lambert_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":"esri-tile","url":"https://maps-cartes.services.geo.ca/server2_serveur2/rest/services/BaseMaps/CBMT_CBCT_GEOM_3978/MapServer","opacity":1}]},{"id":"baseEsriWorld","tileSchemaId":"EXT_ESRI_World_AuxMerc_3857#LOD_ESRI_World_AuxMerc_3857","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":"esri-tile","url":"https://services.arcgisonline.com/arcgis/rest/services/World_Imagery/MapServer","opacity":1}]},{"id":"baseEsriPhysical","tileSchemaId":"EXT_ESRI_World_AuxMerc_3857#LOD_ESRI_World_AuxMerc_3857","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":"esri-tile","url":"https://services.arcgisonline.com/arcgis/rest/services/World_Physical_Map/MapServer","opacity":1}]},{"id":"baseEsriRelief","tileSchemaId":"EXT_ESRI_World_AuxMerc_3857#LOD_ESRI_World_AuxMerc_3857","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":"esri-tile","url":"https://services.arcgisonline.com/arcgis/rest/services/World_Shaded_Relief/MapServer","opacity":1}]},{"id":"baseEsriStreet","tileSchemaId":"EXT_ESRI_World_AuxMerc_3857#LOD_ESRI_World_AuxMerc_3857","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":"esri-tile","url":"https://services.arcgisonline.com/arcgis/rest/services/World_Street_Map/MapServer","opacity":1}]},{"id":"baseEsriTerrain","tileSchemaId":"EXT_ESRI_World_AuxMerc_3857#LOD_ESRI_World_AuxMerc_3857","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":"esri-tile","url":"https://services.arcgisonline.com/arcgis/rest/services/World_Terrain_Base/MapServer","opacity":1}]},{"id":"baseEsriTopo","tileSchemaId":"EXT_ESRI_World_AuxMerc_3857#LOD_ESRI_World_AuxMerc_3857","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":"esri-tile","url":"https://services.arcgisonline.com/arcgis/rest/services/World_Topo_Map/MapServer","opacity":1}]}]},"panels":{"open":[{"id":"legend"}]},"system":{"animate":true,"exposeOid":false,"exposeMeasurements":true,"proxyUrl":"https://maps.canada.ca/wmsproxy/ws/wmsproxy/executeFromProxy"}}}}')},a828:function(e,t,i){"use strict";i("d1aa")},a928:function(e,t,i){"use strict";i("cdea")},abba:function(e,t,i){},b3f9:function(e,t,i){},b949:function(e,t,i){"use strict";i("e8ca")},bacc:function(e,t,i){},c191:function(e,t,i){"use strict";i("8c10")},c62c:function(e,t,i){},c639:function(e,t,i){"use strict";i("bacc")},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,r,n){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 r=i("9ab4"),n=i("1b40"),s=i("be92");const c=Object(s["b"])("user",{state:()=>({userProfile:{}}),actions:{async fetchUserProfile(){const e="https://localhost:44371";try{const t=await fetch(e+"/api/user/profile",{method:"GET",credentials:"include"});if(t.ok){const e=await t.json();this.userProfile=e}else console.error("Failed to fetch the user profile.")}catch(t){console.error("Error fetching user profile: ",t)}}}});class d extends n["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))}mounted(){c(this.$pinia)}}Object(r["a"])([Object(n["d"])("$route",{immediate:!0})],d.prototype,"onRouteUpdate",null);i("a828");var u=i("6b0d"),b=i.n(u);const p=b()(d,[["render",o]]);var m=p,h=i("ce1f");h["b"].registerHooks(["beforeRouterEnter","beforeRouteLeave","beforeRouteUpdate"]);const g={class:"relative"},f={class:"absolute top-0 right-0 bg-white text-black p-2"},v={class:"flex justify-center"},O={class:"home-btn-container border-4 border-gray-400 border-solid m-24"},j={class:"text-2xl font-bold"},y={class:"home-btn-container border-4 border-gray-400 border-solid m-24"},V={class:"text-2xl font-bold"};function S(e,t,i,l,o,r){const n=Object(a["resolveComponent"])("router-link");return Object(a["openBlock"])(),Object(a["createElementBlock"])("div",g,[Object(a["createElementVNode"])("div",f,Object(a["toDisplayString"])(e.$t("editor.landing.greeting"))+" "+Object(a["toDisplayString"])(e.userName)+"! ",1),Object(a["createElementVNode"])("div",v,[Object(a["createElementVNode"])("div",O,[Object(a["createVNode"])(n,{to:{name:"metadataNew"},class:"flex justify-center h-full w-full",target:""},{default:Object(a["withCtx"])(()=>[Object(a["createElementVNode"])("button",j,"+ "+Object(a["toDisplayString"])(e.$t("editor.createProduct")),1)]),_:1})]),Object(a["createElementVNode"])("div",y,[Object(a["createVNode"])(n,{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 C extends n["c"]{get userName(){const e=c();return e.userProfile.userName||"Guest"}}i("9c68");const x=b()(C,[["render",S]]);var E=x;const w={class:"editor-container"},k={class:"px-20 py-5"},N={class:"flex"},T={class:"flex flex-1 text-2xl font-bold mb-5"},_={class:"flex items-center border py-5 w-5/6"},$={class:"editor-label"},L={key:0,class:"text-red-500"},M={class:"relative w-1/3 inline-block"},I={class:"absolute z-10 w-full bg-white border border-gray-200 mt-1"},B=["onMousedown"],D={key:0,class:"text-yellow-500 rounded p-1 ml-2"},F=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),P={class:"align-center inline-block select-none"},R={key:3,class:"inline-flex align-middle mb-1"},A={key:4,class:"ml-10"},U=["onClick"],z=["disabled"],W=Object(a["createElementVNode"])("br",null,null,-1),H={class:"mb-4"},q={class:"editor-h3"},X={class:"flex mt-8"},J={class:"ml-auto"},G={class:"editor-button"},Z=["onClick"],Y={slot:"header",class:"text-lg font-bold"},Q={class:"w-full flex justify-end"};function K(e,t,i,l,o,r){const n=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"),b=Object(a["resolveComponent"])("editor");return Object(a["openBlock"])(),Object(a["createElementBlock"])("div",w,[e.loadEditor?Object(a["createCommentVNode"])("",!0):(Object(a["openBlock"])(),Object(a["createElementBlock"])(a["Fragment"],{key:0},[Object(a["createElementVNode"])("div",k,[Object(a["createElementVNode"])("div",N,[Object(a["createElementVNode"])("div",T,Object(a["toDisplayString"])(e.editExisting?e.$t("editor.editProduct"):e.$t("editor.createProduct")),1),Object(a["createElementVNode"])("button",{class:"editor-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",_,[Object(a["createElementVNode"])("label",$,["uuid"in e.reqFields?(Object(a["openBlock"])(),Object(a["createElementBlock"])("span",L,"*")):Object(a["createCommentVNode"])("",!0),Object(a["createTextVNode"])(" "+Object(a["toDisplayString"])(e.$t("editor.uuid"))+": ",1)]),Object(a["createElementVNode"])("div",M,[Object(a["withDirectives"])(Object(a["createElementVNode"])("input",{type:"text",onFocus:t[1]||(t[1]=t=>e.showDropdown=!0),onBlur:t[2]||(t[2]=t=>e.showDropdown=!1),onInput:t[3]||(t[3]=t=>{e.error=!1,e.reqFields.uuid=!0,e.checkUuid()}),"onUpdate:modelValue":t[4]||(t[4]=t=>e.uuid=t),class:Object(a["normalizeClass"])(["editor-input w-full mt-0",{"input-error":e.error||!e.reqFields.uuid}])},null,34),[[a["vModelText"],e.uuid]]),Object(a["withDirectives"])(Object(a["createElementVNode"])("div",I,[Object(a["createElementVNode"])("ul",null,[(Object(a["openBlock"])(!0),Object(a["createElementBlock"])(a["Fragment"],null,Object(a["renderList"])(e.getStorylines,t=>(Object(a["openBlock"])(),Object(a["createElementBlock"])("li",{key:t.uuid,onMousedown:Object(a["withModifiers"])(i=>e.selectUuid(t.uuid),["prevent"]),class:Object(a["normalizeClass"])(["p-2 hover:bg-gray-100 cursor-pointer",t.isUserStoryline?"bg-gray-200":""])},Object(a["toDisplayString"])(t.uuid),43,B))),128))])],512),[[a["vShow"],e.showDropdown]])]),e.warning?(Object(a["openBlock"])(),Object(a["createElementBlock"])("span",D,[F,Object(a["createElementVNode"])("span",P,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[5]||(t[5]=(...t)=>e.generateRemoteConfig&&e.generateRemoteConfig(...t)),class:Object(a["normalizeClass"])(["editor-button bg-black text-white hover:bg-gray-800",{"input-error":e.error}])},Object(a["toDisplayString"])(e.$t("editor.load")),3)):Object(a["createCommentVNode"])("",!0),e.editExisting?(Object(a["openBlock"])(),Object(a["createElementBlock"])("button",{key:2,onClick:t[6]||(t[6]=(...t)=>e.fetchHistory&&e.fetchHistory(...t)),class:Object(a["normalizeClass"])(["bg-black editor-button text-white hover:bg-gray-800",{"input-error":e.error}])},Object(a["toDisplayString"])(e.$t("editor.viewHistory")),3)):Object(a["createCommentVNode"])("",!0),"loading"===e.loadStatus?(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",R,[Object(a["createVNode"])(n,{size:"24px",color:"#009CD1",class:"mx-2 my-auto"})])):Object(a["createCommentVNode"])("",!0),e.editExisting?(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",A,[Object(a["createElementVNode"])("ul",null,[(Object(a["openBlock"])(!0),Object(a["createElementBlock"])(a["Fragment"],null,Object(a["renderList"])(e.storylineHistory,t=>(Object(a["openBlock"])(),Object(a["createElementBlock"])("li",{key:t.id,onClick:i=>e.selectHistory(t),class:Object(a["normalizeClass"])(["p-2 cursor-pointer",{"bg-blue-200":e.selectedHistory&&t.id===e.selectedHistory.id}])},Object(a["toDisplayString"])(e.formatDate(t.created)),11,U))),128))]),Object(a["createElementVNode"])("button",{disabled:!e.selectedHistory||e.selectedHistory.storylineUUID!==e.uuid,class:"editor-button bg-black text-white hover:bg-gray-800",onClick:t[7]||(t[7]=t=>e.loadHistory())},Object(a["toDisplayString"])(e.$t("editor.loadPrevious")),9,z)])):Object(a["createCommentVNode"])("",!0)]),W,Object(a["createElementVNode"])("div",H,[Object(a["createElementVNode"])("h3",q,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",X,[e.editExisting?(Object(a["openBlock"])(),Object(a["createElementBlock"])("button",{key:0,onClick:t[8]||(t[8]=t=>e.saveMetadata(!0)),class:"editor-button"},Object(a["toDisplayString"])(e.$t("editor.saveChanges")),1)):Object(a["createCommentVNode"])("",!0),Object(a["createElementVNode"])("div",J,[Object(a["createVNode"])(c,{to:{name:"home"},target:""},{default:Object(a["withCtx"])(()=>[Object(a["createElementVNode"])("button",G,Object(a["toDisplayString"])(e.$t("editor.back")),1)]),_:1}),Object(a["createElementVNode"])("button",{onClick:t[9]||(t[9]=t=>e.warning?e.$vfm.open("confirm-uuid-overwrite"):e.continueToEditor()),class:"editor-button bg-black text-white"},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[10]||(t[10]=t=>e.continueToEditor())},null,8,["message"])])])],64)),e.loadEditor&&"loaded"===e.loadStatus?(Object(a["openBlock"])(),Object(a["createBlock"])(b,{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",{class:"editor-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,Z),Object(a["createVNode"])(d,{name:"change-lang",message:e.$t("editor.changeLang.modal"),onOk:t[11]||(t[11]=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",Y,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",Q,[Object(a["createElementVNode"])("button",{class:"editor-button bg-black text-white hover:bg-gray-800",onClick:t[12]||(t[12]=t=>e.saveMetadata(!1))}," Done ")])]),_:1})]),_:1},8,["configs","configFileStructure","sourceCounts","metadata","slides","configLang","saving","unsavedChanges","onSaveChanges","onSaveStatus","onRefreshConfig"])):Object(a["createCommentVNode"])("",!0)])}var ee=i("ade3"),te=(i("14d9"),i("88a7"),i("271a"),i("5494"),i("0a4f")),ie=i("2926"),ae=i("327a");const le=e=>(Object(a["pushScopeId"])("data-v-49b602b6"),e=e(),Object(a["popScopeId"])(),e),oe={class:"sticky top-20 h-auto self-start flex-grow m-5"},re={key:0},ne={class:"flex"},se={class:"flex flex-col w-full"},ce=le(()=>Object(a["createElementVNode"])("label",{class:"editor-label"},"Slide title:",-1)),de={class:"flex"},ue=le(()=>Object(a["createElementVNode"])("span",{class:"ml-auto"},null,-1)),be=["disabled"],pe=["disabled"],me={class:"flex mt-3"},he={class:"mx-2 font-bold"},ge=["disabled"],fe={class:"mx-2 font-bold"},ve=["disabled"],Oe={class:"mx-2 font-bold"},je=["disabled"],ye=le(()=>Object(a["createElementVNode"])("br",null,null,-1)),Ve={key:0,class:"flex border-b border-black"},Se=Object(a["createStaticVNode"])('',2),Ce={class:"align-middle inline-block pl-1"},xe=Object(a["createStaticVNode"])('',2),Ee={class:"align-middle inline-block pl-1"},we={class:"align-middle inline-block pl-1"},ke={key:1,class:"border-b border-black"},Ne=Object(a["createStaticVNode"])('',2),Te={class:"align-middle inline-block pl-1"},_e={class:"align-middle inline-block pl-1"},$e={class:"flex mt-4"},Le={class:"font-bold text-xl"},Me=le(()=>Object(a["createElementVNode"])("span",{class:"ml-auto flex-grow"},null,-1)),Ie={key:0,class:"flex flex-col mr-8"},Be={class:"editor-label text-left text-lg"},De=["value"],Fe=["value"],Pe={key:1,class:"flex h-full mt-4 justify-center text-gray-600 text-xl"};function Re(e,t,i,l,o,r){const n=Object(a["resolveComponent"])("custom-editor"),s=Object(a["resolveComponent"])("confirmation-modal");return Object(a["openBlock"])(),Object(a["createElementBlock"])("div",oe,[e.currentSlide?(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",re,[Object(a["createElementVNode"])("div",ne,[Object(a["createElementVNode"])("div",se,[ce,Object(a["createElementVNode"])("div",de,[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:"editor-input w-2/3"},null,512),[[a["vModelText"],e.currentSlide.title]]),ue,Object(a["createElementVNode"])("button",{onClick:t[1]||(t[1]=Object(a["withModifiers"])(t=>e.selectSlide(e.slideIndex-1),["stop"])),disabled:0===e.slideIndex,class:"editor-button border border-black"},Object(a["toDisplayString"])(e.$t("editor.slides.previousSlide")),9,be),Object(a["createElementVNode"])("button",{onClick:t[2]||(t[2]=Object(a["withModifiers"])(t=>e.selectSlide(e.slideIndex+1),["stop"])),disabled:e.isLast,class:"editor-button border border-black"},Object(a["toDisplayString"])(e.$t("editor.slides.nextSlide")),9,pe)]),Object(a["createElementVNode"])("div",me,[Object(a["createElementVNode"])("span",he,Object(a["toDisplayString"])(e.$t("editor.slides.makeFull")),1),Object(a["withDirectives"])(Object(a["createElementVNode"])("input",{type:"checkbox",class:"editor-input 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,ge),[[a["vModelCheckbox"],e.rightOnly]]),Object(a["createElementVNode"])("span",fe,Object(a["toDisplayString"])(e.$t("editor.slides.centerSlide")),1),Object(a["withDirectives"])(Object(a["createElementVNode"])("input",{type:"checkbox",class:"editor-input rounded-none cursor-pointer w-4 h-4","onUpdate:modelValue":t[5]||(t[5]=t=>e.centerSlide=t),disabled:e.centerPanel,onChange:t[6]||(t[6]=Object(a["withModifiers"])(t=>e.toggleCenterSlide(),["stop"]))},null,40,ve),[[a["vModelCheckbox"],e.centerSlide]]),Object(a["createElementVNode"])("span",Oe,Object(a["toDisplayString"])(e.$t("editor.slides.centerPanel")),1),Object(a["withDirectives"])(Object(a["createElementVNode"])("input",{type:"checkbox",class:"editor-input rounded-none cursor-pointer w-4 h-4","onUpdate:modelValue":t[7]||(t[7]=t=>e.centerPanel=t),disabled:e.centerSlide,onChange:t[8]||(t[8]=Object(a["withModifiers"])(t=>e.toggleCenterPanel(),["stop"]))},null,40,je),[[a["vModelCheckbox"],e.centerPanel]])])])]),ye,2===e.currentSlide.panel.length?(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",Ve,[Object(a["createElementVNode"])("button",{onClick:t[9]||(t[9]=()=>{e.panelIndex=0,e.advancedEditorView=!1,e.saveChanges()}),class:Object(a["normalizeClass"])(["editor-button border-t border-l border-r",0!=e.panelIndex||e.advancedEditorView?"border-white":"border-black"])},[Se,Object(a["createElementVNode"])("span",Ce,Object(a["toDisplayString"])(e.$t("editor.slides.leftPanel")),1)],2),Object(a["createElementVNode"])("button",{onClick:t[10]||(t[10]=()=>{e.panelIndex=1,e.advancedEditorView=!1,e.saveChanges()}),class:Object(a["normalizeClass"])(["editor-button border-t border-l border-r",1!=e.panelIndex||e.advancedEditorView?"border-white":"border-black"])},[xe,Object(a["createElementVNode"])("span",Ee,Object(a["toDisplayString"])(e.$t("editor.slides.rightPanel")),1)],2),Object(a["createElementVNode"])("button",{onClick:t[11]||(t[11]=()=>{e.advancedEditorView=!0,e.saveChanges()}),class:Object(a["normalizeClass"])(["editor-button border-t border-l border-r",e.advancedEditorView?"border-black":"border-white"])},[Object(a["createElementVNode"])("span",we,Object(a["toDisplayString"])(e.$t("editor.slides.advanced")),1)],2)])):(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",ke,[Object(a["createElementVNode"])("button",{onClick:t[12]||(t[12]=()=>{e.advancedEditorView=!1,e.saveChanges()}),class:Object(a["normalizeClass"])(["editor-button border-t border-l border-r",e.advancedEditorView?"border-white":"border-black"])},[Ne,Object(a["createElementVNode"])("span",Te,Object(a["toDisplayString"])(e.$t("editor.slides.fullscreenPanel")),1)],2),Object(a["createElementVNode"])("button",{onClick:t[13]||(t[13]=()=>{e.advancedEditorView=!0,e.saveChanges()}),class:Object(a["normalizeClass"])(["editor-button border-t border-l border-r",e.advancedEditorView?"border-black":"border-white"])},[Object(a["createElementVNode"])("span",_e,Object(a["toDisplayString"])(e.$t("editor.slides.advanced")),1)],2)])),Object(a["createElementVNode"])("div",null,[Object(a["createElementVNode"])("div",$e,[Object(a["createElementVNode"])("span",Le,Object(a["toDisplayString"])(e.$t("editor.slides.content"))+":",1),Me,!e.advancedEditorView||e.rightOnly?(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",Ie,[Object(a["createElementVNode"])("label",Be,Object(a["toDisplayString"])(e.$t("editor.slides.contentType"))+":",1),Object(a["createElementVNode"])("select",{ref:"typeSelector",onInput:t[14]||(t[14]=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,Fe))),128))],40,De)])):Object(a["createCommentVNode"])("",!0)]),e.advancedEditorView?(Object(a["openBlock"])(),Object(a["createBlock"])(n,{key:0,ref:"editor",config:e.currentSlide,lang:e.lang,slideIndex:e.slideIndex,onSlideEdit:t[15]||(t[15]=t=>e.$emit("slide-edit")),onConfigEdited:t[16]||(t[16]=(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,centerSlide:e.centerSlide,dynamicSelected:e.dynamicSelected,onSlideEdit:t[17]||(t[17]=t=>e.$emit("slide-edit"))},null,40,["panel","configFileStructure","lang","uid","sourceCounts","centerSlide","dynamicSelected"]))])])):(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",Pe,[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[18]||(t[18]=t=>{e.changePanelType(e.determineEditorType(e.currentSlide.panel[e.panelIndex]),e.newType),e.toggleCenterPanel(),e.toggleCenterSlide()}),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[19]||(t[19]=t=>e.toggleRightOnly()),onCancel:t[20]||(t[20]=t=>e.rightOnly=!e.rightOnly)},null,8,["name","message"])])}var Ae;(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"})(Ae||(Ae={}));const Ue={class:"block"},ze={class:"flex items-center"},We={class:"font-bold px-4"},He=["disabled"],qe={class:"flex items-center"},Xe=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),Je={class:"px-2"},Ge=Object(a["createElementVNode"])("hr",{class:"border-solid border-t-2 border-gray-300 my-2"},null,-1),Ze={key:0,class:"m-4"},Ye={class:"italic text-gray-400"},Qe={class:"flex flex-wrap list-none"};function Ke(e,t,i,l,o,r){const n=Object(a["resolveComponent"])("ChartPreview"),s=Object(a["resolveComponent"])("draggable"),c=Object(a["resolveComponent"])("confirmation-modal");return Object(a["openBlock"])(),Object(a["createElementBlock"])("div",Ue,[Object(a["createElementVNode"])("div",ze,[Object(a["createElementVNode"])("span",We,Object(a["toDisplayString"])(e.$t("editor.chart.label.info",{num:e.chartConfigs.length})),1),Object(a["createElementVNode"])("button",{class:"editor-button 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",qe,[Xe,Object(a["createElementVNode"])("span",Je,Object(a["toDisplayString"])(e.$t("editor.chart.label.create")),1)])],8,He)]),Ge,0===e.chartConfigs.length?(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",Ze,[Object(a["createElementVNode"])("span",Ye,Object(a["toDisplayString"])(e.$t("editor.chart.label.empty")),1)])):Object(a["createCommentVNode"])("",!0),Object(a["withDirectives"])(Object(a["createElementVNode"])("ul",Qe,[Object(a["createVNode"])(s,{modelValue:e.chartConfigs,"onUpdate:modelValue":t[1]||(t[1]=t=>e.chartConfigs=t),handle:".handle",onUpdate:e.onChartsEdited,class:"w-full flex flex-wrap list-none","item-key":"name"},{item:Object(a["withCtx"])(({element:t,index:i})=>[(Object(a["openBlock"])(),Object(a["createBlock"])(n,{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 et=e=>(Object(a["pushScopeId"])("data-v-d8aa8408"),e=e(),Object(a["popScopeId"])(),e),tt={class:"chart-item items-center mt-8 mx-5 overflow-hidden"},it={class:"relative border-solid border-2 items-center justify-center text-center w-full"},at=["content"],lt=et(()=>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)),ot=[lt],rt=et(()=>Object(a["createElementVNode"])("button",{class:"editor-button 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)),nt={class:"flex mt-4 items-center"},st={class:"editor-label name-label font-bold flex-2"},ct={class:"font-normal"},dt=["id"],ut={class:"flex items-center"},bt=et(()=>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)),pt={class:"px-2"};function mt(e,t,i,l,o,r){const n=Object(a["resolveComponent"])("storylines-chart"),s=Object(a["resolveDirective"])("tippy");return Object(a["openBlock"])(),Object(a["createElementBlock"])("li",tt,[Object(a["createElementVNode"])("div",it,[Object(a["withDirectives"])((Object(a["openBlock"])(),Object(a["createElementBlock"])("button",{class:"editor-button 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")},ot,8,at)),[[s,{placement:"top",hideOnClick:!1,animateFill:!0}]]),rt,e.loading?Object(a["createCommentVNode"])("",!0):(Object(a["openBlock"])(),Object(a["createBlock"])(n,{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",nt,[Object(a["createElementVNode"])("label",st,[Object(a["createTextVNode"])(Object(a["toDisplayString"])(e.$t("editor.chart.label.name"))+": ",1),Object(a["createElementVNode"])("span",ct,Object(a["toDisplayString"])(e.chartName),1)]),Object(a["createElementVNode"])("button",{class:"editor-button chart-btn bg-gray-100 cursor-pointer hover:bg-gray-200",id:`edit-${e.chart.name}-btn`},[Object(a["createElementVNode"])("div",ut,[bt,Object(a["createElementVNode"])("span",pt,Object(a["toDisplayString"])(e.$t("editor.chart.label.edit")),1)])],8,dt)])])}class ht extends n["c"]{constructor(...e){super(...e),Object(ee["a"])(this,"chart",void 0),Object(ee["a"])(this,"configFileStructure",void 0),Object(ee["a"])(this,"sourceCounts",void 0),Object(ee["a"])(this,"lang",void 0),Object(ee["a"])(this,"loading",!0),Object(ee["a"])(this,"chartIdx",0),Object(ee["a"])(this,"chartConfig",{}),Object(ee["a"])(this,"chartName",""),Object(ee["a"])(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(r["a"])([Object(n["b"])()],ht.prototype,"chart",void 0),Object(r["a"])([Object(n["b"])()],ht.prototype,"configFileStructure",void 0),Object(r["a"])([Object(n["b"])()],ht.prototype,"sourceCounts",void 0),Object(r["a"])([Object(n["b"])()],ht.prototype,"lang",void 0);i("2208");const gt=b()(ht,[["render",mt],["__scopeId","data-v-d8aa8408"]]);var ft=gt;const vt={slot:"header",class:"text-lg font-bold"},Ot={class:"w-full flex justify-end"};function jt(e,t,i,l,o,r){const n=Object(a["resolveComponent"])("vue-final-modal");return Object(a["openBlock"])(),Object(a["createBlock"])(n,{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",vt,Object(a["toDisplayString"])(e.message),1),Object(a["createElementVNode"])("div",Ot,[Object(a["createElementVNode"])("button",{class:"editor-button 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:"editor-button 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 yt=class extends n["c"]{constructor(...e){super(...e),Object(ee["a"])(this,"message",void 0),Object(ee["a"])(this,"name",void 0)}onOk(){this.$emit("ok"),this.$vfm.close(this.name)}onCancel(){this.$emit("Cancel"),this.$vfm.close(this.name)}};Object(r["a"])([Object(n["b"])()],yt.prototype,"message",void 0),Object(r["a"])([Object(n["b"])()],yt.prototype,"name",void 0),yt=Object(r["a"])([Object(n["a"])({components:{"vue-final-modal":ie["a"]}})],yt);var Vt=yt;i("72c3");const St=b()(Vt,[["render",jt],["__scopeId","data-v-468630e0"]]);var Ct=St,xt=i("b76a"),Et=i.n(xt);let wt=class extends n["c"]{constructor(...e){super(...e),Object(ee["a"])(this,"panel",void 0),Object(ee["a"])(this,"configFileStructure",void 0),Object(ee["a"])(this,"lang",void 0),Object(ee["a"])(this,"sourceCounts",void 0),Object(ee["a"])(this,"allowMany",void 0),Object(ee["a"])(this,"centerSlide",void 0),Object(ee["a"])(this,"dynamicSelected",void 0),Object(ee["a"])(this,"edited",!1),Object(ee["a"])(this,"chartConfigs",[]),Object(ee["a"])(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===Ae.Slideshow?this.panel.items:this.panel.src?[this.panel]:[];if(this.centerSlide&&this.dynamicSelected)for(const t in e)e[t].customStyles+="text-align: left;";else if(!this.centerSlide&&this.dynamicSelected)for(const t in e)e[t].customStyles=(e[t].customStyles||"").replace("text-align: left;","");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=Ae.Chart,this.panel.src="";else if(1===this.chartConfigs.length){this.panel.type=Ae.Chart;const e=this.chartConfigs[0];Object.keys(e).forEach(t=>{this.panel[t]=e[t]})}else this.panel.type=Ae.Slideshow,this.panel.items=this.chartConfigs.map(e=>({...e,type:Ae.Chart}));this.edited=!1}onChartsEdited(){this.edited=!0,this.$emit("slide-edit")}};Object(r["a"])([Object(n["b"])()],wt.prototype,"panel",void 0),Object(r["a"])([Object(n["b"])()],wt.prototype,"configFileStructure",void 0),Object(r["a"])([Object(n["b"])()],wt.prototype,"lang",void 0),Object(r["a"])([Object(n["b"])()],wt.prototype,"sourceCounts",void 0),Object(r["a"])([Object(n["b"])({default:!0})],wt.prototype,"allowMany",void 0),Object(r["a"])([Object(n["b"])({default:!1})],wt.prototype,"centerSlide",void 0),Object(r["a"])([Object(n["b"])({default:!1})],wt.prototype,"dynamicSelected",void 0),wt=Object(r["a"])([Object(n["a"])({components:{ChartPreview:ft,"confirmation-modal":Ct,draggable:Et.a}})],wt);var kt=wt;i("8846");const Nt=b()(kt,[["render",Ke]]);var Tt=Nt;const _t={class:"mt-4"};function $t(e,t,i,l,o,r){const n=Object(a["resolveComponent"])("json-editor");return Object(a["openBlock"])(),Object(a["createElementBlock"])("div",_t,[Object(a["createVNode"])(n,{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:e.onJsonSave},null,8,["modelValue","lang","onJsonSave"])])}var Lt=i("c45b");let Mt=class extends n["c"]{constructor(...e){super(...e),Object(ee["a"])(this,"config",void 0),Object(ee["a"])(this,"lang",void 0),Object(ee["a"])(this,"slideIndex",void 0),Object(ee["a"])(this,"schemaUrl","./StorylinesSlideSchema.json"),Object(ee["a"])(this,"updatedConfig",""),Object(ee["a"])(this,"edited",!1),Object(ee["a"])(this,"jsonValidator",i("a41b").Validator),Object(ee["a"])(this,"validator",new this.jsonValidator),Object(ee["a"])(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(r["a"])([Object(n["b"])()],Mt.prototype,"config",void 0),Object(r["a"])([Object(n["b"])()],Mt.prototype,"lang",void 0),Object(r["a"])([Object(n["b"])()],Mt.prototype,"slideIndex",void 0),Mt=Object(r["a"])([Object(n["a"])({components:{"json-editor":Lt["a"]}})],Mt);var It=Mt;i("6511");const Bt=b()(It,[["render",$t],["__scopeId","data-v-44e16318"]]);var Dt=Bt;const Ft=e=>(Object(a["pushScopeId"])("data-v-4ee6d780"),e=e(),Object(a["popScopeId"])(),e),Pt={class:"block"},Rt={class:"editor-label flex drag-label cursor-pointer"},At=Ft(()=>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)),Ut={class:"align-middle inline-block"},zt={class:"text-blue-400 font-bold"},Wt=["multiple"],Ht={key:1,class:"flex justify-center"},qt={class:"flex mt-4 items-center w-full text-left"},Xt={class:"editor-label text-label"},Jt=["onUpdate:modelValue"],Gt={class:"flex mt-4 items-center w-full text-left"},Zt={class:"editor-label text-label"},Yt=["onUpdate:modelValue"],Qt={class:"flex items-center w-full text-left"},Kt={class:"editor-label text-label"};function ei(e,t,i,l,o,r){const n=Object(a["resolveComponent"])("ImagePreview"),s=Object(a["resolveComponent"])("draggable");return Object(a["openBlock"])(),Object(a["createElementBlock"])("div",Pt,[e.allowMany||!e.allowMany&&0===e.imagePreviews.length?(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",{key:0,class:Object(a["normalizeClass"])(["upload-image flex items-center justify-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",Rt,[At,Object(a["createElementVNode"])("span",Ut,[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",zt,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,Wt)])])],34)):Object(a["createCommentVNode"])("",!0),e.allowMany||!e.allowMany&&0===e.imagePreviews.length?Object(a["withDirectives"])((Object(a["openBlock"])(),Object(a["createElementBlock"])("span",Ht,[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"])(n,{key:`${i.id}-${l}`,imageFile:i,onDelete:e.deleteImage},{default:Object(a["withCtx"])(()=>[Object(a["createElementVNode"])("div",qt,[Object(a["createElementVNode"])("label",Xt,Object(a["toDisplayString"])(e.$t("editor.image.altTag"))+":",1),Object(a["withDirectives"])(Object(a["createElementVNode"])("input",{class:"editor-input w-4/5",type:"text","onUpdate:modelValue":e=>i.altText=e,onChange:t[4]||(t[4]=(...t)=>e.onImagesEdited&&e.onImagesEdited(...t))},null,40,Jt),[[a["vModelText"],i.altText]])]),Object(a["createElementVNode"])("div",Gt,[Object(a["createElementVNode"])("label",Zt,Object(a["toDisplayString"])(e.$t("editor.image.label.caption"))+":",1),Object(a["withDirectives"])(Object(a["createElementVNode"])("input",{class:"editor-input w-4/5",type:"text","onUpdate:modelValue":e=>i.caption=e,onChange:t[5]||(t[5]=(...t)=>e.onImagesEdited&&e.onImagesEdited(...t))},null,40,Yt),[[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",Qt,[Object(a["createElementVNode"])("label",Kt,Object(a["toDisplayString"])(e.$t("editor.image.slideshowCaption"))+":",1),Object(a["withDirectives"])(Object(a["createElementVNode"])("input",{class:"editor-input 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 ti=e=>(Object(a["pushScopeId"])("data-v-1c58f06c"),e=e(),Object(a["popScopeId"])(),e),ii={class:"image-item items-center my-8 mx-4 overflow-hidden"},ai={class:"relative items-center justify-center text-center w-full grabbable"},li=["content"],oi=ti(()=>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)),ri=[oi],ni={class:"flex-grow image-container"},si=["title","src","alt"];function ci(e,t,i,l,o,r){const n=Object(a["resolveDirective"])("tippy");return Object(a["openBlock"])(),Object(a["createElementBlock"])("li",ii,[Object(a["createElementVNode"])("div",ai,[Object(a["withDirectives"])((Object(a["openBlock"])(),Object(a["createElementBlock"])("button",{class:"editor-button 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")},ri,8,li)),[[n,{placement:"top",hideOnClick:!1,animateFill:!0}]]),Object(a["createElementVNode"])("div",ni,[Object(a["createElementVNode"])("img",{class:"image-file object-cover",title:e.imageFile.id,src:e.imageFile.src,alt:e.imageFile.altText},null,8,si)])]),Object(a["renderSlot"])(e.$slots,"default",{},void 0,!0)])}class di extends n["c"]{constructor(...e){super(...e),Object(ee["a"])(this,"imageFile",void 0)}}Object(r["a"])([Object(n["b"])()],di.prototype,"imageFile",void 0);i("eae8");const ui=b()(di,[["render",ci],["__scopeId","data-v-1c58f06c"]]);var bi=ui;let pi=class extends n["c"]{constructor(...e){super(...e),Object(ee["a"])(this,"panel",void 0),Object(ee["a"])(this,"configFileStructure",void 0),Object(ee["a"])(this,"lang",void 0),Object(ee["a"])(this,"sourceCounts",void 0),Object(ee["a"])(this,"allowMany",void 0),Object(ee["a"])(this,"centerSlide",void 0),Object(ee["a"])(this,"dynamicSelected",void 0),Object(ee["a"])(this,"dragging",!1),Object(ee["a"])(this,"edited",!1),Object(ee["a"])(this,"imagePreviewsLoading",!1),Object(ee["a"])(this,"imagePreviewPromises",[]),Object(ee["a"])(this,"imagePreviews",[]),Object(ee["a"])(this,"slideshowCaption","")}get isDragging(){return this.dragging}mounted(){const e=this.panel.type===Ae.Slideshow?this.panel.items:this.panel.src?[this.panel]:[];if(this.centerSlide&&this.dynamicSelected)for(const t in e)e[t].customStyles+="text-align: left;";else if(!this.centerSlide&&this.dynamicSelected)for(const t in e)e[t].customStyles=(e[t].customStyles||"").replace("text-align: left;","");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=Ae.Image,this.panel.src="";else if(1===this.imagePreviews.length){this.panel.type=Ae.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=Ae.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:Ae.Image}))}this.edited=!1}onImagesEdited(){this.edited=!0,this.$emit("slide-edit")}};Object(r["a"])([Object(n["b"])()],pi.prototype,"panel",void 0),Object(r["a"])([Object(n["b"])()],pi.prototype,"configFileStructure",void 0),Object(r["a"])([Object(n["b"])()],pi.prototype,"lang",void 0),Object(r["a"])([Object(n["b"])()],pi.prototype,"sourceCounts",void 0),Object(r["a"])([Object(n["b"])({default:!0})],pi.prototype,"allowMany",void 0),Object(r["a"])([Object(n["b"])({default:!1})],pi.prototype,"centerSlide",void 0),Object(r["a"])([Object(n["b"])({default:!1})],pi.prototype,"dynamicSelected",void 0),pi=Object(r["a"])([Object(n["a"])({components:{ImagePreview:bi,draggable:Et.a}})],pi);var mi=pi;i("4397");const hi=b()(mi,[["render",ei],["__scopeId","data-v-4ee6d780"]]);var gi=hi;const fi={class:"flex flex-col mt-4"},vi={class:"editor-label text-left"},Oi={class:"editor-label text-left mt-2"};function ji(e,t,i,l,o,r){const n=Object(a["resolveComponent"])("v-md-editor");return Object(a["openBlock"])(),Object(a["createElementBlock"])("div",fi,[Object(a["createElementVNode"])("label",vi,Object(a["toDisplayString"])(e.$t("editor.slides.panel.title"))+":",1),Object(a["withDirectives"])(Object(a["createElementVNode"])("input",{class:"editor-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",Oi,Object(a["toDisplayString"])(e.$t("editor.slides.panel.body"))+":",1),Object(a["createVNode"])(n,{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 yi extends n["c"]{constructor(...e){super(...e),Object(ee["a"])(this,"panel",void 0),Object(ee["a"])(this,"centerSlide",void 0),Object(ee["a"])(this,"dynamicSelected",void 0),Object(ee["a"])(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}})}}]}})}mounted(){this.centerSlide&&this.dynamicSelected?this.panel.customStyles+="text-align: left !important;":!this.centerSlide&&this.dynamicSelected&&(this.panel.customStyles=(this.panel.customStyles||"").replace("text-align: left !important;",""))}}Object(r["a"])([Object(n["b"])()],yi.prototype,"panel",void 0),Object(r["a"])([Object(n["b"])({default:!1})],yi.prototype,"centerSlide",void 0),Object(r["a"])([Object(n["b"])({default:!1})],yi.prototype,"dynamicSelected",void 0);i("9f5c");const Vi=b()(yi,[["render",ji],["__scopeId","data-v-37b76b8f"]]);var Si=Vi;const Ci=e=>(Object(a["pushScopeId"])("data-v-62693dea"),e=e(),Object(a["popScopeId"])(),e),xi={class:"flex flex-col"},Ei={class:"editor-label text-left"},wi={class:"editor-label mt-6"},ki=Ci(()=>Object(a["createElementVNode"])("span",{class:"mx-4"},null,-1)),Ni=Ci(()=>Object(a["createElementVNode"])("br",null,null,-1)),Ti={key:1,class:"mb-4"},_i={class:"ramp-editor mt-5",ref:"editor",style:{width:"70vw",height:"80vh"}},$i={slot:"header",class:"text-lg font-bold"},Li={class:"w-full flex justify-end"},Mi=["disabled"];function Ii(e,t,i,l,o,r){const n=Object(a["resolveComponent"])("time-slider-editor"),s=Object(a["resolveComponent"])("vue-final-modal");return Object(a["openBlock"])(),Object(a["createElementBlock"])("div",xi,[Object(a["createElementVNode"])("label",Ei,Object(a["toDisplayString"])(e.$t("editor.map.title"))+":",1),Object(a["withDirectives"])(Object(a["createElementVNode"])("input",{class:"editor-input",type:"text","onUpdate:modelValue":t[0]||(t[0]=t=>e.panel.title=t)},null,512),[[a["vModelText"],e.panel.title]]),Object(a["createElementVNode"])("div",null,[Object(a["createElementVNode"])("label",wi,Object(a["toDisplayString"])(e.$t("editor.map.timeslider.enable")),1),Object(a["withDirectives"])(Object(a["createElementVNode"])("input",{class:"editor-input",type:"checkbox",onChange:t[1]||(t[1]=(...t)=>e.saveTimeSlider&&e.saveTimeSlider(...t)),"onUpdate:modelValue":t[2]||(t[2]=t=>e.usingTimeSlider=t)},null,544),[[a["vModelCheckbox"],e.usingTimeSlider]]),ki,e.usingTimeSlider?(Object(a["openBlock"])(),Object(a["createElementBlock"])("button",{key:0,onClick:t[3]||(t[3]=t=>e.$vfm.open("time-slider-edit-modal")),class:"editor-button bg-black text-white hover:bg-gray-800 mt-3"},Object(a["toDisplayString"])(e.$t("editor.map.timeslider.edit")),1)):Object(a["createCommentVNode"])("",!0),Ni,e.usingTimeSlider?(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",Ti)):Object(a["createCommentVNode"])("",!0),Object(a["createElementVNode"])("div",_i,null,512)]),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",$i,Object(a["toDisplayString"])(e.$t("editor.map.timeslider.edit")),1),Object(a["createVNode"])(n,{config:e.timeSliderConf,error:e.timeSliderError,onTimeSliderChanged:e.onTimeSliderInput},null,8,["config","error","onTimeSliderChanged"]),Object(a["createElementVNode"])("div",Li,[Object(a["createElementVNode"])("button",{class:Object(a["normalizeClass"])(["editor-button",e.timeSliderError?"":"bg-black text-white hover:bg-gray-800"]),disabled:e.timeSliderError,onClick:t[4]||(t[4]=(...t)=>e.saveTimeSlider&&e.saveTimeSlider(...t))}," Done ",10,Mi)])]),_:1})])}var Bi=i("a0ea");const Di=e=>(Object(a["pushScopeId"])("data-v-98eacf1c"),e=e(),Object(a["popScopeId"])(),e),Fi={class:"px-5"},Pi={class:"flex items-center"},Ri={class:"editor-label"},Ai=["value"],Ui={class:"mx-3"},zi=["value"],Wi=Di(()=>Object(a["createElementVNode"])("br",null,null,-1)),Hi={class:"flex items-center"},qi={class:"editor-label"},Xi=["value"],Ji={class:"mx-3"},Gi=["value"],Zi=Di(()=>Object(a["createElementVNode"])("br",null,null,-1)),Yi={key:0,class:"border-black border-2 p-3 w-2/3"},Qi={class:"editor-label w-full"},Ki=Di(()=>Object(a["createElementVNode"])("br",null,null,-1)),ea={class:"list-disc my-2 ml-8"},ta={key:1},ia={class:"editor-label"},aa=["value"],la=Di(()=>Object(a["createElementVNode"])("br",null,null,-1)),oa={class:"editor-label"},ra=Di(()=>Object(a["createElementVNode"])("br",null,null,-1)),na=["value"],sa=Di(()=>Object(a["createElementVNode"])("br",null,null,-1)),ca=Di(()=>Object(a["createElementVNode"])("br",null,null,-1));function da(e,t,i,l,o,r){return Object(a["openBlock"])(),Object(a["createElementBlock"])("div",Fi,[Object(a["createElementVNode"])("div",Pi,[Object(a["createElementVNode"])("label",Ri,Object(a["toDisplayString"])(e.$t("editor.map.timeslider.range")),1),Object(a["createElementVNode"])("input",{class:"editor-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,Ai),Object(a["createElementVNode"])("span",Ui,Object(a["toDisplayString"])(e.$t("editor.map.timeslider.to")),1),Object(a["createElementVNode"])("input",{class:"editor-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,zi)]),Wi,Object(a["createElementVNode"])("div",Hi,[Object(a["createElementVNode"])("label",qi,Object(a["toDisplayString"])(e.$t("editor.map.timeslider.start")),1),Object(a["createElementVNode"])("input",{class:"editor-input 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,Xi),Object(a["createElementVNode"])("span",Ji,Object(a["toDisplayString"])(e.$t("editor.map.timeslider.to")),1),Object(a["createElementVNode"])("input",{class:"editor-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,Gi)]),Zi,e.error?(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",Yi,[Object(a["createElementVNode"])("label",Qi,Object(a["toDisplayString"])(e.$t("editor.map.timeslider.warning")),1),Ki,Object(a["createElementVNode"])("ul",ea,[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",ta)):Object(a["createCommentVNode"])("",!0),Object(a["createElementVNode"])("div",null,[Object(a["createElementVNode"])("label",ia,Object(a["toDisplayString"])(e.$t("editor.map.timeslider.attribute")),1),Object(a["createElementVNode"])("input",{class:"editor-input",value:e.config.attribute,onInput:t[4]||(t[4]=t=>e.$emit("time-slider-changed","attribute",void 0,t.target.value))},null,40,aa)]),la,Object(a["createElementVNode"])("div",null,[Object(a["createElementVNode"])("label",oa,Object(a["toDisplayString"])(e.$t("editor.map.timeslider.layers")),1),ra,Object(a["createElementVNode"])("input",{class:"editor-input 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,na)]),sa,ca])}class ua extends n["c"]{constructor(...e){super(...e),Object(ee["a"])(this,"config",void 0),Object(ee["a"])(this,"error",void 0)}}Object(r["a"])([Object(n["b"])()],ua.prototype,"config",void 0),Object(r["a"])([Object(n["b"])()],ua.prototype,"error",void 0);i("b949");const ba=b()(ua,[["render",da],["__scopeId","data-v-98eacf1c"]]);var pa=ba,ma=i("ce19");i("fb28");let ha=class extends n["c"]{constructor(...e){super(...e),Object(ee["a"])(this,"panel",void 0),Object(ee["a"])(this,"configFileStructure",void 0),Object(ee["a"])(this,"lang",void 0),Object(ee["a"])(this,"sourceCounts",void 0),Object(ee["a"])(this,"centerSlide",void 0),Object(ee["a"])(this,"dynamicSelected",void 0),Object(ee["a"])(this,"rampEditorApi",""),Object(ee["a"])(this,"newFileName",""),Object(ee["a"])(this,"usingTimeSlider",!1),Object(ee["a"])(this,"timeSliderError",!1),Object(ee["a"])(this,"timeSliderConf",{range:[],start:[],attribute:""}),Object(ee["a"])(this,"status","default"),Object(ee["a"])(this,"strippedFileName","")}mounted(){var e,t,i,a,l,o;this.usingTimeSlider=!!this.panel.timeSlider,this.status=""!==this.panel.config?"default":"creating",this.strippedFileName=""!==this.panel.config?this.panel.config.split("/")[2].split(".")[0]:"",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:""})),window.addEventListener("ramp4-config-edited",this.onConfigEdit),this.validateTimeSlider(),"creating"===this.status&&this.createNewConfig(),this.centerSlide&&this.dynamicSelected?this.panel.customStyles+="text-align: left !important;":!this.centerSlide&&this.dynamicSelected&&(this.panel.customStyles=(this.panel.customStyles||"").replace("text-align: left !important;","")),this.openEditor()}beforeDestroy(){window.removeEventListener("ramp4-config-edited",this.onConfigEdit)}createNewConfig(){this.panel.config=`${this.configFileStructure.uuid}/ramp-config/${this.configFileStructure.uuid}-map-${this.getNumberOfMaps()+1}.json`,this.strippedFileName=this.panel.config.split("/")[2].split(".")[0],this.sourceCounts[this.panel.config]?this.sourceCounts[this.panel.config]+=1:this.sourceCounts[this.panel.config]=1,this.configFileStructure.rampConfig.file(this.strippedFileName+".json",JSON.stringify(Bi,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=>{const t=JSON.parse(e);this.rampEditorApi=Object(ma["a"])(this.$refs.editor,t)}):fetch(this.panel.config).then(e=>{e.json().then(e=>{let t=JSON.stringify(e);const i=JSON.parse(t);this.rampEditorApi=Object(ma["a"])(this.$refs.editor,i)})})}}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")}saveChanges(){this.configFileStructure.rampConfig.file(this.strippedFileName+".json",JSON.stringify(this.rampEditorApi.getConfig(),null,4))}onConfigEdit(){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]{e+=1}),e}};Object(r["a"])([Object(n["b"])()],ha.prototype,"panel",void 0),Object(r["a"])([Object(n["b"])()],ha.prototype,"configFileStructure",void 0),Object(r["a"])([Object(n["b"])()],ha.prototype,"lang",void 0),Object(r["a"])([Object(n["b"])()],ha.prototype,"sourceCounts",void 0),Object(r["a"])([Object(n["b"])({default:!1})],ha.prototype,"centerSlide",void 0),Object(r["a"])([Object(n["b"])({default:!1})],ha.prototype,"dynamicSelected",void 0),ha=Object(r["a"])([Object(n["a"])({components:{"time-slider-editor":pa,"vue-final-modal":ie["a"]}})],ha);var ga=ha;i("c639");const fa=b()(ga,[["render",Ii],["__scopeId","data-v-62693dea"]]);var va=fa;const Oa=e=>(Object(a["pushScopeId"])("data-v-33605cfc"),e=e(),Object(a["popScopeId"])(),e),ja={class:"block"},ya={class:"flex mt-4 items-center w-full text-left"},Va={class:"editor-label text-label"},Sa={class:"flex editor-label drag-label cursor-pointer"},Ca=Oa(()=>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)),xa={class:"align-middle inline-block"},Ea={class:"text-blue-400 font-bold"},wa={class:"flex mt-4 items-center w-full text-left"},ka={class:"editor-label text-label"},Na={key:1,ref:"videoUrl",class:"editor-input w-3/5",type:"search"};function Ta(e,t,i,l,o,r){const n=Object(a["resolveComponent"])("VideoPreview");return Object(a["openBlock"])(),Object(a["createElementBlock"])("div",ja,[Object(a["createElementVNode"])("div",ya,[Object(a["createElementVNode"])("label",Va,Object(a["toDisplayString"])(e.$t("editor.video.title"))+":",1),Object(a["withDirectives"])(Object(a["createElementVNode"])("input",{class:"editor-input 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 flex justify-center 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",Sa,[Ca,Object(a["createElementVNode"])("span",xa,[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",Ea,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",wa,[Object(a["createElementVNode"])("label",ka,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:"editor-input 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",Na,null,512)),Object(a["createElementVNode"])("button",{onClick:t[7]||(t[7]=(...t)=>e.uploadVideoUrl&&e.uploadVideoUrl(...t)),class:"editor-button 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"])(n,{key:""+e.videoPreview.id,file:e.videoPreview,fileType:e.fileType,lang:e.lang,onDelete:e.deleteVideo},null,8,["file","fileType","lang","onDelete"]))],32))])}const _a=e=>(Object(a["pushScopeId"])("data-v-2d1c87e5"),e=e(),Object(a["popScopeId"])(),e),$a={class:"my-8 mx-4 overflow-hidden w-full"},La={class:"relative text-center w-full grabbable"},Ma=["content"],Ia=_a(()=>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)),Ba=[Ia],Da={class:"video-container"},Fa=["src","height","width"],Pa=["title","height","width"],Ra=["type","src"],Aa=["src","srclang","label"];function Ua(e,t,i,l,o,r){const n=Object(a["resolveDirective"])("tippy");return Object(a["openBlock"])(),Object(a["createElementBlock"])("div",$a,[Object(a["createElementVNode"])("div",La,[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")},Ba,8,Ma)),[[n,{placement:"top",hideOnClick:!1,animateFill:!0}]]),Object(a["createElementVNode"])("div",Da,["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,Fa)):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,Ra),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,Aa)):Object(a["createCommentVNode"])("",!0)],8,Pa)):Object(a["createCommentVNode"])("",!0)])]),Object(a["renderSlot"])(e.$slots,"default",{},void 0,!0)])}var za=i("d4cd"),Wa=i.n(za);class Ha extends n["c"]{constructor(...e){super(...e),Object(ee["a"])(this,"file",void 0),Object(ee["a"])(this,"fileType",void 0),Object(ee["a"])(this,"lang",void 0),Object(ee["a"])(this,"md",new Wa.a({html:!0})),Object(ee["a"])(this,"langs",{en:"English",fr:"French"}),Object(ee["a"])(this,"expandTranscript",!1),Object(ee["a"])(this,"rawTranscript",""),Object(ee["a"])(this,"transcriptContent","")}}Object(r["a"])([Object(n["b"])()],Ha.prototype,"file",void 0),Object(r["a"])([Object(n["b"])()],Ha.prototype,"fileType",void 0),Object(r["a"])([Object(n["b"])()],Ha.prototype,"lang",void 0);i("480b");const qa=b()(Ha,[["render",Ua],["__scopeId","data-v-2d1c87e5"]]);var Xa=qa;let Ja=class extends n["c"]{constructor(...e){super(...e),Object(ee["a"])(this,"panel",void 0),Object(ee["a"])(this,"configFileStructure",void 0),Object(ee["a"])(this,"lang",void 0),Object(ee["a"])(this,"sourceCounts",void 0),Object(ee["a"])(this,"centerSlide",void 0),Object(ee["a"])(this,"dynamicSelected",void 0),Object(ee["a"])(this,"dragging",!1),Object(ee["a"])(this,"edited",!1),Object(ee["a"])(this,"fileType",""),Object(ee["a"])(this,"videoPreviewLoading",!1),Object(ee["a"])(this,"videoPreviewPromise",void 0),Object(ee["a"])(this,"videoPreview",{}),Object(ee["a"])(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};this.centerSlide&&this.dynamicSelected?this.panel.customStyles+="text-align: left !important;":!this.centerSlide&&this.dynamicSelected&&(this.panel.customStyles=(this.panel.customStyles||"").replace("text-align: left !important;",""))}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(r["a"])([Object(n["b"])()],Ja.prototype,"panel",void 0),Object(r["a"])([Object(n["b"])()],Ja.prototype,"configFileStructure",void 0),Object(r["a"])([Object(n["b"])()],Ja.prototype,"lang",void 0),Object(r["a"])([Object(n["b"])()],Ja.prototype,"sourceCounts",void 0),Object(r["a"])([Object(n["b"])({default:!1})],Ja.prototype,"centerSlide",void 0),Object(r["a"])([Object(n["b"])({default:!1})],Ja.prototype,"dynamicSelected",void 0),Ja=Object(r["a"])([Object(n["a"])({components:{VideoPreview:Xa,draggable:Et.a}})],Ja);var Ga=Ja;i("5ada");const Za=b()(Ga,[["render",Ta],["__scopeId","data-v-33605cfc"]]);var Ya=Za;const Qa=e=>(Object(a["pushScopeId"])("data-v-7cb258ba"),e=e(),Object(a["popScopeId"])(),e),Ka={class:"block"},el={class:"flex items-center"},tl={class:"font-bold px-4"},il={class:"flex items-center"},al=Qa(()=>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)),ll={class:"px-2"},ol=Qa(()=>Object(a["createElementVNode"])("hr",{class:"border-solid border-t-2 border-gray-300 my-2"},null,-1)),rl={class:"flex items-center w-full text-left"},nl={class:"editor-label text-label"},sl=Qa(()=>Object(a["createElementVNode"])("br",null,null,-1)),cl={class:"w-2/3 mt-5"},dl={class:"table-header"},ul=Qa(()=>Object(a["createElementVNode"])("th",null,null,-1)),bl=["onClick"],pl=["onClick"],ml=Qa(()=>Object(a["createElementVNode"])("br",null,null,-1)),hl=Qa(()=>Object(a["createElementVNode"])("br",null,null,-1)),gl={key:0},fl={class:"text-xl font-bold"},vl=Qa(()=>Object(a["createElementVNode"])("hr",{class:"border-solid border-t-2 border-gray-300 my-2"},null,-1)),Ol={key:0},jl={class:"mb-5 text-left"},yl=["value"],Vl=["value"],Sl={class:"mt-3 w-full flex justify-end"},Cl={key:1},xl={class:"mt-3 w-full flex justify-end"};function El(e,t,i,l,o,r){return Object(a["openBlock"])(),Object(a["createElementBlock"])("div",Ka,[Object(a["createElementVNode"])("div",el,[Object(a["createElementVNode"])("span",tl,Object(a["toDisplayString"])(e.$t("editor.slideshow.label.info",{num:e.panel.items.length})),1),Object(a["createElementVNode"])("button",{class:"editor-button bg-gray-100 cursor-pointer hover:bg-gray-200",onClick:t[0]||(t[0]=t=>e.editingStatus="create")},[Object(a["createElementVNode"])("div",il,[al,Object(a["createElementVNode"])("span",ll,Object(a["toDisplayString"])(e.$t("editor.slideshow.label.create")),1)])])]),ol,Object(a["createElementVNode"])("div",rl,[Object(a["createElementVNode"])("label",nl,Object(a["toDisplayString"])(e.$t("editor.image.slideshowCaption"))+":",1),Object(a["withDirectives"])(Object(a["createElementVNode"])("input",{class:"editor-input w-1/3",type:"text","onUpdate:modelValue":t[1]||(t[1]=t=>e.panel.caption=t)},null,512),[[a["vModelText"],e.panel.caption]]),sl]),Object(a["createElementVNode"])("table",cl,[Object(a["createElementVNode"])("thead",null,[Object(a["createElementVNode"])("tr",dl,[ul,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,bl),Object(a["createTextVNode"])(" | "),Object(a["createElementVNode"])("span",{onClick:t=>e.deleteItem(i),class:"underline"},"Remove",8,pl)])]))),128))])]),ml,hl,"none"!==e.editingStatus?(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",gl,[Object(a["createElementVNode"])("h2",fl,Object(a["toDisplayString"])(e.$t("editor.slideshow.label."+e.editingStatus)),1),vl,Object(a["createElementVNode"])("div",null,["create"===e.editingStatus?(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",Ol,[Object(a["createElementVNode"])("label",jl,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,Vl))),128))],40,yl),"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",Sl,[Object(a["createElementVNode"])("button",{class:"editor-button 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",Cl,[(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",xl,[Object(a["createElementVNode"])("button",{class:"editor-button 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 wl=class extends n["c"]{constructor(...e){super(...e),Object(ee["a"])(this,"panel",void 0),Object(ee["a"])(this,"configFileStructure",void 0),Object(ee["a"])(this,"lang",void 0),Object(ee["a"])(this,"sourceCounts",void 0),Object(ee["a"])(this,"editors",{text:"text-editor",image:"image-editor",chart:"chart-editor",map:"map-editor",video:"video-editor"}),Object(ee["a"])(this,"startingConfig",{text:{type:Ae.Text,title:"",content:""},dynamic:{type:Ae.Dynamic,title:"",titleTag:"",content:"",children:[]},slideshow:{type:Ae.Slideshow,items:[]},chart:{type:Ae.Chart,src:""},image:{type:Ae.Image,src:""},map:{type:Ae.Map,config:"",title:"",scrollguard:!0},video:{type:Ae.Video,title:"",videoType:"",src:""}}),Object(ee["a"])(this,"editingIdx",-1),Object(ee["a"])(this,"newSlideName",""),Object(ee["a"])(this,"newSlideType","text"),Object(ee["a"])(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!==Ae.Text&&void 0!==this.$refs.slideEditor&&"function"===typeof this.$refs.slideEditor.saveChanges&&(this.$refs.slideEditor.saveChanges(),t.type===Ae.Map&&this.$emit("slide-edit")),this.editingStatus="none"}saveChanges(){}};Object(r["a"])([Object(n["b"])()],wl.prototype,"panel",void 0),Object(r["a"])([Object(n["b"])()],wl.prototype,"configFileStructure",void 0),Object(r["a"])([Object(n["b"])()],wl.prototype,"lang",void 0),Object(r["a"])([Object(n["b"])()],wl.prototype,"sourceCounts",void 0),wl=Object(r["a"])([Object(n["a"])({components:{"chart-editor":Tt,"image-editor":gi,"text-editor":Si,"map-editor":va,"video-editor":Ya}})],wl);var kl=wl;i("034f");const Nl=b()(kl,[["render",El],["__scopeId","data-v-7cb258ba"]]);var Tl=Nl;const _l={class:"block py-20 align-middle text-center h-full",style:{margin:"0 auto"}};function $l(e,t,i,l,o,r){const n=Object(a["resolveComponent"])("spinner");return Object(a["openBlock"])(),Object(a["createElementBlock"])("div",_l,[Object(a["createVNode"])(n,{size:"120px",color:"#009cd1",style:{margin:"0 auto"}})])}let Ll=class extends n["c"]{};Ll=Object(r["a"])([Object(n["a"])({components:{spinner:te["a"]}})],Ll);var Ml=Ll;const Il=b()(Ml,[["render",$l]]);var Bl=Il;const Dl={class:"block"},Fl={class:"flex"},Pl={key:0},Rl={key:1},Al={class:"w-2/3 mt-5"},Ul={class:"table-header"},zl=["onClick"],Wl=["onClick"],Hl={class:"table-add-row"},ql={class:"flex flex-col items-center"},Xl={key:0},Jl=["disabled"],Gl={key:0},Zl=Object(a["createElementVNode"])("br",null,null,-1),Yl=Object(a["createElementVNode"])("hr",null,null,-1),Ql=Object(a["createElementVNode"])("br",null,null,-1),Kl={class:"font-bold text-xl"},eo=Object(a["createElementVNode"])("br",null,null,-1);function to(e,t,i,l,o,r){return Object(a["openBlock"])(),Object(a["createElementBlock"])("div",Dl,[Object(a["createElementVNode"])("div",Fl,[Object(a["createElementVNode"])("button",{onClick:t[0]||(t[0]=()=>e.changePanel("text")),class:Object(a["normalizeClass"])(["editor-button 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"])(["editor-button 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",Pl,[(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",Rl,[Object(a["createElementVNode"])("table",Al,[Object(a["createElementVNode"])("tr",Ul,[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,zl),Object(a["createTextVNode"])(" | "),Object(a["createElementVNode"])("span",{onClick:()=>e.removeSlide(t,i)},Object(a["toDisplayString"])(e.$t("editor.remove")),9,Wl)])]))),128)),Object(a["createElementVNode"])("tr",Hl,[Object(a["createElementVNode"])("th",ql,[Object(a["withDirectives"])(Object(a["createElementVNode"])("input",{class:"editor-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",Xl,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",{class:"editor-button",onClick:t[4]||(t[4]=(...t)=>e.createNewSlide&&e.createNewSlide(...t)),disabled:e.idUsed},"Add New",8,Jl)])])]),-1!==e.editingSlide?(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",Gl,[Zl,Yl,Ql,Object(a["createElementVNode"])("span",Kl,Object(a["toDisplayString"])(e.$t("dynamic.panel.editor")),1),eo,(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,centerSlide:e.centerSlide,dynamicSelected:e.dynamicSelected,onSlideEdit:t[5]||(t[5]=t=>e.$emit("slide-edit"))},null,40,["panel","configFileStructure","lang","sourceCounts","centerSlide","dynamicSelected"]))])):Object(a["createCommentVNode"])("",!0)])):Object(a["createCommentVNode"])("",!0)])}var io;let ao=io=class extends n["c"]{constructor(...e){super(...e),Object(ee["a"])(this,"panel",void 0),Object(ee["a"])(this,"configFileStructure",void 0),Object(ee["a"])(this,"lang",void 0),Object(ee["a"])(this,"sourceCounts",void 0),Object(ee["a"])(this,"centerSlide",void 0),Object(ee["a"])(this,"dynamicSelected",void 0),Object(ee["a"])(this,"editors",{text:"text-editor",image:"image-editor",slideshow:"slideshow-editor",chart:"chart-editor",map:"map-editor",video:"video-editor"}),Object(ee["a"])(this,"startingConfig",{text:{type:Ae.Text,title:"",content:""},dynamic:{type:Ae.Dynamic,title:"",titleTag:"",content:"",children:[]},slideshow:{type:Ae.Slideshow,items:[],userCreated:!0},image:{type:Ae.Image,src:""},chart:{type:Ae.Chart,src:""},map:{type:Ae.Map,config:"",title:"",scrollguard:!1},video:{type:Ae.Video,title:"",videoType:"",src:""}}),Object(ee["a"])(this,"editingStatus","text"),Object(ee["a"])(this,"editingSlide",-1),Object(ee["a"])(this,"newSlideName",""),Object(ee["a"])(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!==Ae.Slideshow)return e.type;if(0===e.items.length||e.userCreated)return Ae.Slideshow;const t=e.items.every(e=>e.type===Ae.Chart);if(t)return Ae.Chart;const i=e.items.every(e=>e.type===Ae.Image);return i?Ae.Image:Ae.Slideshow}saveChanges(){void 0!==this.$refs.slide&&"function"===typeof this.$refs.slide.saveChanges&&this.$refs.slide.saveChanges()}};Object(r["a"])([Object(n["b"])()],ao.prototype,"panel",void 0),Object(r["a"])([Object(n["b"])()],ao.prototype,"configFileStructure",void 0),Object(r["a"])([Object(n["b"])()],ao.prototype,"lang",void 0),Object(r["a"])([Object(n["b"])()],ao.prototype,"sourceCounts",void 0),Object(r["a"])([Object(n["b"])()],ao.prototype,"centerSlide",void 0),Object(r["a"])([Object(n["b"])()],ao.prototype,"dynamicSelected",void 0),ao=io=Object(r["a"])([Object(n["a"])({components:{"chart-editor":Tt,"image-editor":gi,"text-editor":Si,"slideshow-editor":Tl,"dynamic-editor":io,"map-editor":va,"video-editor":Ya}})],ao);var lo=ao;i("94db");const oo=b()(lo,[["render",to]]);var ro=oo;let no=class extends n["c"]{constructor(...e){super(...e),Object(ee["a"])(this,"config",void 0),Object(ee["a"])(this,"currentSlide",void 0),Object(ee["a"])(this,"configFileStructure",void 0),Object(ee["a"])(this,"lang",void 0),Object(ee["a"])(this,"uid",void 0),Object(ee["a"])(this,"slideIndex",void 0),Object(ee["a"])(this,"isLast",void 0),Object(ee["a"])(this,"sourceCounts",void 0),Object(ee["a"])(this,"panelIndex",0),Object(ee["a"])(this,"advancedEditorView",!1),Object(ee["a"])(this,"newType",""),Object(ee["a"])(this,"rightOnly",!1),Object(ee["a"])(this,"centerSlide",!1),Object(ee["a"])(this,"centerPanel",!1),Object(ee["a"])(this,"dynamicSelected",!1),Object(ee["a"])(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:Ae.Text,title:"",content:""},dynamic:{type:Ae.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:Ae.Slideshow,items:[],userCreated:!0},image:{type:Ae.Image,src:""},chart:{type:Ae.Chart,src:""},map:{type:Ae.Map,config:"",title:"",scrollguard:!1},video:{type:Ae.Video,title:"",videoType:"",src:""}};this.currentSlide.panel.forEach(e=>this.removeSourceCounts(e)),"dynamic"===t?(this.panelIndex=0,this.currentSlide["panel"]=[i[t]],this.dynamicSelected=!0):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!==Ae.Slideshow)return e.type;if(0===e.items.length||e.userCreated)return Ae.Slideshow;const t=e.items.every(e=>e.type===Ae.Chart);if(t)return Ae.Chart;const i=e.items.every(e=>e.type===Ae.Image);return i?Ae.Image:Ae.Slideshow}toggleRightOnly(){this.saveChanges(),this.rightOnly?(this.panelIndex=0,this.currentSlide["panel"]=[this.currentSlide.panel[1]]):this.currentSlide["panel"]=[Object.assign({},{type:Ae.Text,title:"",content:""}),Object.assign({},this.currentSlide.panel[0])]}toggleCenterSlide(){"dynamic"===this.determineEditorType(this.currentSlide.panel[this.panelIndex])?this.centerSlide?this.currentSlide.panel[0].customStyles="text-align: right;":this.currentSlide.panel[0].customStyles=(this.currentSlide.panel[0].customStyles||"").replace("text-align: right;",""):this.rightOnly?this.centerSlide?this.currentSlide.panel[0].customStyles="text-align: center;":(this.currentSlide.panel[0].customStyles=(this.currentSlide.panel[0].customStyles||"").replace("text-align: right;",""),this.currentSlide.panel[0].customStyles=(this.currentSlide.panel[0].customStyles||"").replace("text-align: left;",""),this.currentSlide.panel[0].customStyles=(this.currentSlide.panel[0].customStyles||"").replace("text-align: center;","")):this.centerSlide?(this.currentSlide.panel[0].customStyles="text-align: right;",this.currentSlide.panel[1].customStyles="text-align: left;"):(this.currentSlide.panel[0].customStyles=(this.currentSlide.panel[0].customStyles||"").replace("text-align: right;",""),this.currentSlide.panel[1].customStyles=(this.currentSlide.panel[1].customStyles||"").replace("text-align: left;",""))}toggleCenterPanel(){if(this.centerPanel)for(const e in this.currentSlide.panel)this.currentSlide.panel[e].customStyles="text-align: center;";else for(const e in this.currentSlide.panel)this.currentSlide.panel[e].customStyles=(this.currentSlide.panel[e].customStyles||"").replace("text-align: center;","")}};Object(r["a"])([Object(n["b"])()],no.prototype,"currentSlide",void 0),Object(r["a"])([Object(n["b"])()],no.prototype,"configFileStructure",void 0),Object(r["a"])([Object(n["b"])()],no.prototype,"lang",void 0),Object(r["a"])([Object(n["b"])()],no.prototype,"uid",void 0),Object(r["a"])([Object(n["b"])()],no.prototype,"slideIndex",void 0),Object(r["a"])([Object(n["b"])()],no.prototype,"isLast",void 0),Object(r["a"])([Object(n["b"])()],no.prototype,"sourceCounts",void 0),Object(r["a"])([Object(n["d"])("currentSlide",{deep:!0})],no.prototype,"onSlideChange",null),no=Object(r["a"])([Object(n["a"])({components:{"chart-editor":Tt,"custom-editor":Dt,"image-editor":gi,"text-editor":Si,"map-editor":va,"video-editor":Ya,"slideshow-editor":Tl,"loading-page":Bl,"dynamic-editor":ro,"confirmation-modal":Ct}})],no);var so=no;i("5d55");const co=b()(so,[["render",Re],["__scopeId","data-v-49b602b6"]]);var uo=co;const bo=e=>(Object(a["pushScopeId"])("data-v-aef69d80"),e=e(),Object(a["popScopeId"])(),e),po={class:"flex toc-header p-2 mt-10"},mo={class:"flex items-center justify-center font-bold"},ho=bo(()=>Object(a["createElementVNode"])("span",{class:"flex-1"},null,-1)),go=bo(()=>Object(a["createElementVNode"])("span",{class:"ml-auto"},null,-1)),fo=bo(()=>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)),vo={class:"align-middle inline-block"},Oo=bo(()=>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)),jo=[Oo],yo={slot:"header",class:"text-xl font-bold"},Vo={class:"flex flex-col"},So={class:"text-lg font-bold my-6"},Co={class:"flex"},xo=["value"],Eo=["onClick"],wo={class:"self-center overflow-ellipsis whitespace-nowrap overflow-hidden flex-grow ml-2"},ko={class:"font-bold overflow-hidden"},No={class:"flex"},To={class:"flex flex-col"},_o=["onClick"],$o=bo(()=>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)),Lo=[$o],Mo=["onClick"],Io=bo(()=>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)),Bo=[Io],Do={class:"flex flex-col mr-2 ml-1 my-1"},Fo=["onClick","disabled"],Po=bo(()=>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)),Ro=[Po],Ao=["onClick","disabled"],Uo=bo(()=>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)),zo=[Uo];function Wo(e,t,i,l,o,r){const n=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",po,[Object(a["createElementVNode"])("span",mo,Object(a["toDisplayString"])(e.$t("editor.slides.title")),1),ho,go,Object(a["createElementVNode"])("button",{class:"editor-button",onClick:t[0]||(t[0]=(...t)=>e.addNewSlide&&e.addNewSlide(...t))},[fo,Object(a["createElementVNode"])("span",vo,Object(a["toDisplayString"])(e.$t("editor.slides.addSlide")),1)]),Object(a["withDirectives"])((Object(a["openBlock"])(),Object(a["createElementBlock"])("button",{class:"editor-button",onClick:t[1]||(t[1]=Object(a["withModifiers"])(t=>e.$vfm.open("copy-from-other-lang"),["stop"]))},jo)),[[d,{delay:"200",placement:"right",content:e.$t("editor.slides.copyFromLang"),animateFill:!0}]]),Object(a["createVNode"])(n,{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",yo,Object(a["toDisplayString"])(e.$t("editor.slides.copyFromLang")),1),Object(a["createElementVNode"])("div",Vo,[Object(a["createElementVNode"])("button",{class:"editor-toc-button editor-button 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",So,Object(a["toDisplayString"])(e.$t("editor.or")),1),Object(a["createElementVNode"])("div",Co,[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,xo))),128))],512),[[a["vModelSelect"],e.selectedForCopying]]),Object(a["createElementVNode"])("button",{class:"editor-toc-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",wo,[Object(a["createTextVNode"])(Object(a["toDisplayString"])(e.$t("editor.slides.slide"))+" "+Object(a["toDisplayString"])(i+1)+": ",1),Object(a["createElementVNode"])("span",ko,Object(a["toDisplayString"])(t.title||"Add a title"),1)]),Object(a["createElementVNode"])("div",No,[Object(a["createElementVNode"])("div",To,[Object(a["createElementVNode"])("button",{class:"slide-toc-button",onClick:Object(a["withModifiers"])(t=>e.$vfm.open("delete-slide-"+i),["stop"])},Lo,8,_o),Object(a["createElementVNode"])("button",{class:"slide-toc-button",onClick:Object(a["withModifiers"])(t=>e.copySlide(i),["stop"])},Bo,8,Mo)]),Object(a["createElementVNode"])("div",Do,[Object(a["createElementVNode"])("button",{class:Object(a["normalizeClass"])(["slide-toc-button",0==i?"text-gray-500 cursor-not-allowed":""]),onClick:Object(a["withModifiers"])(t=>e.moveUp(i),["stop"]),disabled:0==i},Ro,10,Fo),Object(a["createElementVNode"])("button",{class:Object(a["normalizeClass"])(["slide-toc-button 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},zo,10,Ao)])]),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,Eo)),[[d,{delay:"200",placement:"right",content:t.title,animateFill:!0}]])]),_:1},8,["modelValue"])])])}var Ho=i("9675"),qo=i.n(Ho);let Xo=class extends n["c"]{constructor(...e){super(...e),Object(ee["a"])(this,"slides",void 0),Object(ee["a"])(this,"currentSlide",void 0),Object(ee["a"])(this,"slideIndex",void 0),Object(ee["a"])(this,"configFileStructure",void 0),Object(ee["a"])(this,"lang",void 0),Object(ee["a"])(this,"sourceCounts",void 0),Object(ee["a"])(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,qo()(e)),this.$emit("slides-updated",this.slides))}copyAllFromOtherLang(e){e&&(this.slides.splice(this.slides.length,0,...e.map(e=>qo()(e))),this.$emit("slides-updated",this.slides))}copySlide(e){this.slides.splice(e+1,0,qo()(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(r["a"])([Object(n["b"])()],Xo.prototype,"slides",void 0),Object(r["a"])([Object(n["b"])()],Xo.prototype,"currentSlide",void 0),Object(r["a"])([Object(n["b"])()],Xo.prototype,"slideIndex",void 0),Object(r["a"])([Object(n["b"])()],Xo.prototype,"configFileStructure",void 0),Object(r["a"])([Object(n["b"])()],Xo.prototype,"lang",void 0),Object(r["a"])([Object(n["b"])()],Xo.prototype,"sourceCounts",void 0),Xo=Object(r["a"])([Object(n["a"])({components:{"slide-editor":uo,"confirmation-modal":Ct,"vue-final-modal":ie["a"],draggable:Et.a}})],Xo);var Jo=Xo;i("c191");const Go=b()(Jo,[["render",Wo],["__scopeId","data-v-aef69d80"]]);var Zo=Go;const Yo={class:"editor-label mb-5"},Qo=["value"],Ko=Object(a["createElementVNode"])("br",null,null,-1),er={class:"editor-label mb-5"},tr=["value"],ir={class:"editor-label mb-5"},ar=["value"],lr=Object(a["createElementVNode"])("br",null,null,-1),or={key:0},rr={class:"editor-label"},nr=["src"],sr={key:1,class:"image-preview"},cr={class:"editor-label mb-5"},dr=["value"],ur=Object(a["createElementVNode"])("br",null,null,-1),br={class:"editor-label"},pr=["value"],mr=Object(a["createElementVNode"])("br",null,null,-1),hr=Object(a["createElementVNode"])("label",{class:"editor-label mb-5"},null,-1),gr={class:"inline-block"},fr=Object(a["createElementVNode"])("br",null,null,-1),vr={class:"editor-label"},Or=["value"],jr=Object(a["createElementVNode"])("br",null,null,-1),yr=Object(a["createElementVNode"])("label",{class:"editor-label mb-5"},null,-1),Vr={class:"inline-block"},Sr=Object(a["createElementVNode"])("br",null,null,-1),Cr={class:"editor-label"},xr=["value"],Er=Object(a["createElementVNode"])("br",null,null,-1),wr=Object(a["createElementVNode"])("label",{class:"editor-label mb-5"},null,-1),kr={class:"inline-block"},Nr=Object(a["createElementVNode"])("br",null,null,-1),Tr={class:"editor-label mr-15"},_r={value:"vertical"},$r={value:"horizontal"},Lr=Object(a["createElementVNode"])("br",null,null,-1),Mr=Object(a["createElementVNode"])("label",{class:"editor-label mb-5"},null,-1),Ir={class:"inline-block"},Br=Object(a["createElementVNode"])("br",null,null,-1),Dr={class:"editor-label mb-5"},Fr=["value"],Pr=Object(a["createElementVNode"])("br",null,null,-1),Rr=Object(a["createElementVNode"])("br",null,null,-1);function Ar(e,t,i,l,o,r){return Object(a["openBlock"])(),Object(a["createElementBlock"])("div",null,[Object(a["createElementVNode"])("label",Yo,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:"editor-input w-1/3"},null,40,Qo),Ko,Object(a["createElementVNode"])("label",er,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:"editor-input w-1/4"},null,40,tr),Object(a["createElementVNode"])("label",ir,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:"editor-input w-1/4"},null,40,ar),lr,e.metadata.logoPreview?(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",or,[Object(a["createElementVNode"])("label",rr,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,nr)):Object(a["createCommentVNode"])("",!0),"error"==e.metadata.logoPreview?(Object(a["openBlock"])(),Object(a["createElementBlock"])("p",sr,Object(a["toDisplayString"])(e.$t("editor.image.loadingError")),1)):Object(a["createCommentVNode"])("",!0)])):Object(a["createCommentVNode"])("",!0),Object(a["createElementVNode"])("label",cr,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:"editor-input w-1/4"},null,40,dr),Object(a["createElementVNode"])("button",{onClick:t[4]||(t[4]=Object(a["withModifiers"])((...t)=>e.openFileSelector&&e.openFileSelector(...t),["stop"])),class:"editor-button 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:"editor-button 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:"editor-input w-1/4",style:{display:"none"}},null,32),ur,Object(a["createElementVNode"])("label",br,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:"editor-input w-2/3"},null,40,pr),mr,hr,Object(a["createElementVNode"])("p",gr,[Object(a["createElementVNode"])("i",null,Object(a["toDisplayString"])(e.$t("editor.logoAltText.desc")),1)]),fr,Object(a["createElementVNode"])("label",vr,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:"editor-input w-2/3"},null,40,Or),jr,yr,Object(a["createElementVNode"])("p",Vr,[Object(a["createElementVNode"])("i",null,Object(a["toDisplayString"])(e.$t("editor.contextLink.info")),1)]),Sr,Object(a["createElementVNode"])("label",Cr,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:"editor-input w-2/3"},null,40,xr),Er,wr,Object(a["createElementVNode"])("p",kr,[Object(a["createElementVNode"])("i",null,Object(a["toDisplayString"])(e.$t("editor.contextLabel.info")),1)]),Nr,Object(a["createElementVNode"])("label",Tr,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",_r,Object(a["toDisplayString"])(e.$t("editor.tocOrientation.vertical")),1),Object(a["createElementVNode"])("option",$r,Object(a["toDisplayString"])(e.$t("editor.tocOrientation.horizontal")),1)],544),[[a["vModelSelect"],e.metadata.tocOrientation]]),Lr,Mr,Object(a["createElementVNode"])("p",Ir,[Object(a["createElementVNode"])("i",null,Object(a["toDisplayString"])(e.$t("editor.tocOrientation.info")),1)]),Br,Object(a["createElementVNode"])("label",Dr,Object(a["toDisplayString"])(e.$t("editor.dateModified"))+":",1),Object(a["createElementVNode"])("input",{class:"editor-input",type:"date",name:"dateModified",value:e.metadata.dateModified,onChange:t[12]||(t[12]=(...t)=>e.metadataChanged&&e.metadataChanged(...t))},null,40,Fr),Pr,Rr])}class Ur extends n["c"]{constructor(...e){super(...e),Object(ee["a"])(this,"metadata",void 0)}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(r["a"])([Object(n["b"])()],Ur.prototype,"metadata",void 0);const zr=b()(Ur,[["render",Ar]]);var Wr=zr;const Hr={class:"editor-container"},qr={class:"editor-header sticky flex items-center border-b border-black bg-gray-200 py-2 px-2 z-10"},Xr={class:"mx-1"},Jr=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),Gr={class:"ml-3 flex flex-col"},Zr={class:"font-semibold text-lg"},Yr=Object(a["createElementVNode"])("span",{class:"ml-auto"},null,-1),Qr=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),Kr={class:"font-normal ml-1"},en={key:0,class:"border-2 border-red-700 text-red-700 rounded p-1 mr-2"},tn=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),an={class:"align-center inline-block select-none"},ln=["disabled"],on={class:"inline-block"},rn={key:0,class:"align-middle inline-block px-1"},nn={class:"flex"},sn={class:"w-80 flex-shrink-0 border-r border-black editor-toc"},cn={class:"flex items-center justify-center border-b p-2"},dn=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),un={class:"align-middle inline-block"},bn={class:"footer text-right pr-5 editor-button"},pn=["href"];function mn(e,t,i,l,o,r){const n=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"),b=Object(a["resolveDirective"])("tippy");return Object(a["openBlock"])(),Object(a["createElementBlock"])("div",Hr,[Object(a["createElementVNode"])("div",qr,[Object(a["createElementVNode"])("span",Xr,[Object(a["withDirectives"])((Object(a["openBlock"])(),Object(a["createBlock"])(n,{to:{name:"home"},class:"mt-1 flex justify-center h-full w-full",target:""},{default:Object(a["withCtx"])(()=>[Jr]),_:1})),[[b,{delay:"200",placement:"right",content:e.$t("editor.returnToLanding"),animateFill:!0}]])]),Object(a["createElementVNode"])("div",Gr,[Object(a["createElementVNode"])("span",Zr,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)]),Yr,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:"editor-button border-2 border-red-700 text-red-700 rounded p-1 mr-2"},[Qr,Object(a["createElementVNode"])("span",Kr,Object(a["toDisplayString"])(e.$t("editor.resetChanges")),1)])),[[b,{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",en,[tn,Object(a["createElementVNode"])("span",an,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}))),Object(a["createElementVNode"])("button",{onClick:t[1]||(t[1]=(...t)=>e.preview&&e.preview(...t)),class:"editor-button 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:"editor-button bg-black text-white hover:bg-gray-900",disabled:e.saving},[Object(a["createElementVNode"])("span",on,Object(a["toDisplayString"])(e.saving?e.$t("editor.savingChanges"):e.$t("editor.saveChanges")),1),e.saving?(Object(a["openBlock"])(),Object(a["createElementBlock"])("span",rn,[Object(a["createVNode"])(s,{size:"16px",color:"#009cd1",class:"ml-1 mb-1"})])):Object(a["createCommentVNode"])("",!0)],8,ln)]),Object(a["createElementVNode"])("div",nn,[Object(a["createElementVNode"])("div",sn,[Object(a["createElementVNode"])("div",cn,[Object(a["createElementVNode"])("button",{class:"editor-toc-button editor-button",onClick:t[3]||(t[3]=Object(a["withModifiers"])(t=>e.$vfm.open("metadata-edit-modal"),["stop"]))},[dn,Object(a["createElementVNode"])("span",un,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["createElementVNode"])("div",bn,[Object(a["createElementVNode"])("a",{href:"mailto:applicationsdecartographieweb-webmappingapplications@ec.gc.ca?subject="+e.$t("editor.feedback.subject")},Object(a["toDisplayString"])(e.$t("editor.feedback")),9,pn)]),Object(a["renderSlot"])(e.$slots,"metadataModal"),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 hn=class extends n["c"]{constructor(...e){super(...e),Object(ee["a"])(this,"configs",void 0),Object(ee["a"])(this,"configFileStructure",void 0),Object(ee["a"])(this,"sourceCounts",void 0),Object(ee["a"])(this,"metadata",void 0),Object(ee["a"])(this,"slides",void 0),Object(ee["a"])(this,"configLang",void 0),Object(ee["a"])(this,"saving",void 0),Object(ee["a"])(this,"unsavedChanges",void 0),Object(ee["a"])(this,"uuid",""),Object(ee["a"])(this,"logoImage",void 0),Object(ee["a"])(this,"loadSlides",void 0),Object(ee["a"])(this,"currentSlide",""),Object(ee["a"])(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.$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.$refs.slide.saveChanges(),this.$emit("save-changes")}beforeWindowUnload(e){this.unsavedChanges&&!window.confirm()&&e.preventDefault()}};Object(r["a"])([Object(n["b"])()],hn.prototype,"configs",void 0),Object(r["a"])([Object(n["b"])()],hn.prototype,"configFileStructure",void 0),Object(r["a"])([Object(n["b"])()],hn.prototype,"sourceCounts",void 0),Object(r["a"])([Object(n["b"])()],hn.prototype,"metadata",void 0),Object(r["a"])([Object(n["b"])()],hn.prototype,"slides",void 0),Object(r["a"])([Object(n["b"])()],hn.prototype,"configLang",void 0),Object(r["a"])([Object(n["b"])()],hn.prototype,"saving",void 0),Object(r["a"])([Object(n["b"])()],hn.prototype,"unsavedChanges",void 0),Object(r["a"])([Object(n["d"])("slides",{deep:!0})],hn.prototype,"onSlidesEdited",null),Object(r["a"])([Object(n["d"])("metadata",{deep:!0})],hn.prototype,"onMetadataEdited",null),hn=Object(r["a"])([Object(n["a"])({components:{"metadata-content":Wr,"confirmation-modal":Ct,spinner:te["a"],"slide-editor":uo,"slide-toc":Zo}})],hn);var gn=hn;i("3b76");const fn=b()(gn,[["render",mn]]);var vn=fn;const On=i("c4e3"),jn=i("bc3a").default,{v4:yn}=i("e144");let Vn=class extends n["c"]{constructor(...e){super(...e),Object(ee["a"])(this,"editExisting",void 0),Object(ee["a"])(this,"configs",{en:void 0,fr:void 0}),Object(ee["a"])(this,"configFileStructure",void 0),Object(ee["a"])(this,"loadExisting",!1),Object(ee["a"])(this,"reloadExisting",!1),Object(ee["a"])(this,"loadStatus","waiting"),Object(ee["a"])(this,"loadEditor",!1),Object(ee["a"])(this,"error",!1),Object(ee["a"])(this,"warning",!1),Object(ee["a"])(this,"configLang","en"),Object(ee["a"])(this,"showDropdown",!1),Object(ee["a"])(this,"storylineHistory",[]),Object(ee["a"])(this,"selectedHistory",null),Object(ee["a"])(this,"saving",!1),Object(ee["a"])(this,"unsavedChanges",!1),Object(ee["a"])(this,"apiUrl","http://localhost:6040"),Object(ee["a"])(this,"uuid",""),Object(ee["a"])(this,"logoImage",void 0),Object(ee["a"])(this,"metadata",{title:"",introTitle:"",introSubtitle:"",logoPreview:"",logoName:"",logoAltText:"",contextLink:"",contextLabel:"",tocOrientation:"",dateModified:""}),Object(ee["a"])(this,"reqFields",{uuid:!0}),Object(ee["a"])(this,"slides",[]),Object(ee["a"])(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:yn(),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 On;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]=qo()(t),this.configs[a].lang=a;const l=JSON.stringify(this.configs[a],null,4),o=`${this.uuid}_${this.configLang}.json`,r=JSON.stringify(t,null,4);e.file(o,r),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(this.apiUrl+"/retrieve/"+this.uuid).then(e=>{if(404===e.status){var t;ae["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 On;e.blob().then(e=>{t.loadAsync(e).then(()=>{this.configFileStructureHelper(t)})})}fetch(this.apiUrl+"/retrieveMessages").then(e=>{if(e.ok)return e.json()}).then(e=>{jn.post("#{NET_API_URL}#/api/log/create",{messages:e.messages}).catch(e=>console.log(e.response||e))}).catch(e=>console.log(e.response||e))}).catch(()=>{ae["a"].error("Failed to load product, no response from server"),this.loadStatus="loaded"})}fetchHistory(){void 0===this.uuid&&ae["a"].error("You must first enter a UUID")}selectHistory(e){this.selectedHistory=e}formatDate(e){const t=new Date(e),i=new Date(t.toLocaleString("en-US",{timeZone:"America/Toronto"})),a={year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",hour12:!0,timeZone:"America/Toronto"};return new Intl.DateTimeFormat("en-US",a).format(i)}loadHistory(){this.selectedHistory,0}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:l},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 ae["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",ae["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],r=null===(l=this.configFileStructure)||void 0===l?void 0:l.zip.file(t);r?r.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"};jn.post(this.apiUrl+"/upload",t,{headers:i}).then(e=>{const t=e.data;t.files,t.status,this.unsavedChanges=!1,this.loadExisting=!0,ae["a"].success("Successfully saved changes!")}).catch(()=>{ae["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();const o=c();o.fetchUserProfile()}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(this.apiUrl+"/retrieve/"+this.uuid).then(e=>{404!==e.status&&(this.warning=!0),fetch(this.apiUrl+"/retrieveMessages").then(e=>{if(e.ok)return e.json()}).then(e=>{jn.post("#{NET_API_URL}#/api/log/create",{messages:e.messages}).catch(e=>console.log(e.response||e))}).catch(e=>console.log(e.response||e))}),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,ae["a"].success("Successfully loaded logo image.")):(this.metadata.logoPreview="error",ae["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)||(ae["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()):ae["a"].error("No config exists for storylines product."):this.uuid?this.generateNewConfig():(ae["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()}get getStorylines(){var e,t;const i=c(),a=(null===(e=i.userProfile.storylines)||void 0===e?void 0:e.map(e=>({...e,isUserStoryline:!0})))||[],l=(null===(t=i.userProfile.allStorylines)||void 0===t?void 0:t.filter(e=>!a.some(t=>t.uuid===e.uuid)))||[];let o=[...a,...l];return this.uuid&&(o=o.filter(e=>e.uuid.toLowerCase().includes(this.uuid.toLowerCase()))),o}selectUuid(e){this.uuid=e,this.showDropdown=!1}};Object(r["a"])([Object(n["b"])({default:!0})],Vn.prototype,"editExisting",void 0),Vn=Object(r["a"])([Object(n["a"])({components:{Editor:vn,"confirmation-modal":Ct,"metadata-content":Wr,spinner:te["a"],"slide-editor":uo,"slide-toc":Zo,"vue-final-modal":ie["a"]}})],Vn);var Sn=Vn;i("d96f");const Cn=b()(Sn,[["render",K]]);var xn=Cn;const En={key:0},wn={class:"block py-20 align-middle text-center h-full",style:{margin:"0 auto"}},kn={key:1},Nn={key:0,class:"storyramp-app bg-white"},Tn={id:"story-header",class:"story-header sticky top-0 flex border-b border-black bg-gray-200 py-2 px-2 justify-between"},_n={class:"w-mobile-full truncate"},$n={class:"font-semibold text-lg m-1"},Ln={class:"w-full mx-auto pb-10",id:"story"},Mn={class:"p-8 pt-2 text-right text-sm"},In=["href"],Bn=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),Dn={key:0,class:"storyramp-modified"};function Fn(e,t,i,l,o,r){const n=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",En,[Object(a["createElementVNode"])("div",wn,[Object(a["createVNode"])(n,{size:"120px",color:"#009cd1",style:{margin:"0 auto"}})])])):"loaded"===e.loadStatus?(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",kn,[void 0!==e.config?(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",Nn,[Object(a["createElementVNode"])("header",Tn,[Object(a["createElementVNode"])("div",_n,[Object(a["createElementVNode"])("span",$n,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",Ln,[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",Mn,[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,In),Object(a["createTextVNode"])(" | "),Bn]),e.config.dateModified?(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",Dn,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 Pn=class extends n["c"]{constructor(...e){super(...e),Object(ee["a"])(this,"config",void 0),Object(ee["a"])(this,"configFileStructure",void 0),Object(ee["a"])(this,"savedProduct",!1),Object(ee["a"])(this,"loadStatus","loading"),Object(ee["a"])(this,"activeChapterIndex",-1),Object(ee["a"])(this,"lang","en"),Object(ee["a"])(this,"headerHeight",0),Object(ee["a"])(this,"uid",""),Object(ee["a"])(this,"apiUrl","http://localhost:6040"),Object(ee["a"])(this,"configs",{en:void 0,fr:void 0})}created(){const e=this.$route.params.uid,t=this.$route.params.lang,a=i("c4e3"),l=i("bc3a").default;e?(this.savedProduct=!0,fetch(this.apiUrl+"/retrieve/"+e).then(i=>{if(404===i.status)console.error(`There does not exist a saved product with UID ${e}.`);else{const l=new a;i.blob().then(i=>{l.loadAsync(i).then(()=>{const i=l.folder("assets"),a=l.folder("charts"),o=l.folder("ramp-config");this.configFileStructure={uuid:e,zip:l,configs:this.configs,assets:{en:i.folder("en"),fr:i.folder("fr")},charts:{en:a.folder("en"),fr:a.folder("fr")},rampConfig:o};const r=`${e}_${t}.json`;l.file(r).async("string").then(e=>{const t=JSON.parse(e);this.config=t,this.loadStatus="loaded",document.title=this.config.title+" - Canada.ca"})})})}fetch(this.apiUrl+"/retrieveMessages").then(e=>{l.post("#{NET_API_URL}#/api/log/create",{messages:e.data.messages}).catch(e=>console.log(e.response||e))})})):(this.config=window.props.config,this.configFileStructure=window.props.configFileStructure,this.loadStatus="loaded");const o=document.documentElement;o.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)}};Pn=Object(r["a"])([Object(n["a"])({components:{spinner:te["a"]}})],Pn);var Rn=Pn;i("a928");const An=b()(Rn,[["render",Fn]]);var Un=An,zn=i("6605");const Wn=[{path:"/:lang/editor",name:"home",component:E,meta:{title:"editor.window.title"}},{path:"/:lang/editor/:uid",redirect:e=>"/"+e.params.lang+"/editor-metadata/"+e.params.uid},{path:"/:lang/editor-metadata",name:"metadataExisting",component:xn,props:{editExisting:!0},meta:{title:"editor.window.title"}},{path:"/:lang/editor-metadata",name:"metadataNew",component:xn,props:{editExisting:!1},meta:{title:"editor.window.title"}},{path:"/:lang/editor-metadata/:uid",component:xn,meta:{title:"editor.window.title"}},{path:"/:lang/editor-main/:uid",name:"editor",component:xn,props:!0,meta:{title:"editor.window.title"}},{path:"/:lang/editor-preview",component:Un,name:"preview",props:!0,meta:{title:"story.window.title"}},{path:"/:lang/editor-preview/:uid",component:Un,meta:{title:"story.window.title"}}],Hn=Object(zn["a"])({routes:Wn,history:Object(zn["b"])(),scrollBehavior:function(e){if(e.hash)return{selector:decodeURIComponent(e.hash),behavior:"smooth"}}});var qn=Hn,Xn=(i("38c8"),i("13d5"),i("9ca6"));const Jn=i("3d6d"),Gn=document.documentElement.getAttribute("lang");function Zn(e){return e.reduce((e,t)=>(e.en[t.key]=t.enValue,e.fr[t.key]=t.frValue,e),{en:{},fr:{}})}const Yn=Object(Xn["a"])({legacy:!1,locale:Gn||void 0,fallbackLocale:"en",globalInjection:!0,messages:Zn(Jn)});var Qn=i("ee2d"),Kn=i.n(Qn),es=(i("fefe"),i("603a")),ts=i.n(es),is=(i("fbc4"),i("3b16")),as=i.n(is),ls=i("1487"),os=i.n(ls),rs=(i("40e8"),i("c4e7")),ns=(i("52df"),i("e748"),i("4452")),ss=i.n(ns),cs=(i("e896"),i("c883")),ds=i.n(cs);i("91a9");Kn.a.lang.use("en-US",as.a),Kn.a.use(ts.a,{Hljs:os.a});const us=Object(ie["b"])(),bs=Object(a["createApp"])(m),ps=Object(s["a"])();bs.use(ps).use(qn).use(Yn).use(rs["a"],{directive:"tippy",component:"tippy"}).use(ss.a).use(ae["a"]).use(ds.a).use(Kn.a).use(us),bs.mount("#app")},cdea:function(e,t,i){},d1aa:function(e,t,i){},d364:function(e,t,i){},d932:function(e,t,i){},d96f:function(e,t,i){"use strict";i("7112")},e593:function(e,t,i){},e8ca:function(e,t,i){},eae8:function(e,t,i){"use strict";i("569f")},ef88:function(e,t,i){}}]); +//# sourceMappingURL=chunk-common.46eaea93.js.map \ No newline at end of file diff --git a/fix-292/js/chunk-common.46eaea93.js.map b/fix-292/js/chunk-common.46eaea93.js.map new file mode 100644 index 00000000..89b739d6 --- /dev/null +++ b/fix-292/js/chunk-common.46eaea93.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack:///./src/components/editor/slideshow-editor.vue?ee10","webpack:///./src/components/editor/helpers/chart-preview.vue?5653","webpack:///./src/components/editor/editor.vue?c656","webpack:///./src/lang/lang.csv","webpack:///./src/components/editor/image-editor.vue?3c8b","webpack:///./src/components/editor/helpers/video-preview.vue?ba86","webpack:///./src/components/editor/video-editor.vue?bf97","webpack:///./src/components/editor/slide-editor.vue?623a","webpack:///./src/components/editor/helpers/custom-editor.vue?ffb8","webpack:///./src/components/editor/helpers/confirmation-modal.vue?3407","webpack:///./src/components/editor/chart-editor.vue?0650","webpack:///./src/components/editor/dynamic-editor.vue?0a76","webpack:///./src/components/editor/landing.vue?0d63","webpack:///./src/components/editor/text-editor.vue?8ab1","webpack:///./src/app.vue?2a26","webpack:///./src/components/editor/preview.vue?57df","webpack:///./src/components/editor/helpers/time-slider-editor.vue?3363","webpack:///./src/components/editor/slide-toc.vue?3892","webpack:///./src/components/editor/map-editor.vue?277a","webpack:///./src/app.vue?9616","webpack:///./src/stores/userStore.ts","webpack:///./src/app.vue","webpack:///./src/app.vue?cab0","webpack:///./src/router/componentHooks.ts","webpack:///./src/components/editor/landing.vue?e40a","webpack:///./src/components/editor/landing.vue","webpack:///./src/components/editor/landing.vue?d196","webpack:///./src/components/editor/metadata-editor.vue?525f","webpack:///./src/components/editor/slide-editor.vue?2ad7","webpack:///./src/definitions.ts","webpack:///./src/components/editor/chart-editor.vue?5cd4","webpack:///./src/components/editor/helpers/chart-preview.vue?e021","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?7ec4","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?35f0","webpack:///./src/components/editor/helpers/custom-editor.vue","webpack:///./src/components/editor/helpers/custom-editor.vue?267c","webpack:///./src/components/editor/image-editor.vue?d17a","webpack:///./src/components/editor/helpers/image-preview.vue?22cf","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?c70e","webpack:///./src/components/editor/text-editor.vue","webpack:///./src/components/editor/text-editor.vue?17bf","webpack:///./src/components/editor/map-editor.vue?a40d","webpack:///./src/components/editor/helpers/time-slider-editor.vue?4932","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?c0f9","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?cfa0","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?9047","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?d976","webpack:///./src/components/editor/slide-toc.vue","webpack:///./src/components/editor/slide-toc.vue?e6ed","webpack:///./src/components/editor/helpers/metadata-content.vue?2abf","webpack:///./src/components/editor/helpers/metadata-content.vue","webpack:///./src/components/editor/helpers/metadata-content.vue?f1f6","webpack:///./src/components/editor/editor.vue?5cda","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?661b","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/metadata-editor.vue?6765","webpack:///./src/components/editor/helpers/image-preview.vue?356b"],"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","useUserStore","defineStore","state","userProfile","actions","apiUrl","response","fetch","method","credentials","ok","data","json","this","console","error","App","Vue","onRouteUpdate","to","_to$params$lang","$i18n","locale","params","lang","document","title","$t","meta","mounted","$pinia","__decorate","Watch","immediate","__exports__","registerHooks","_hoisted_2","_hoisted_3","_hoisted_4","_hoisted_5","_hoisted_6","_hoisted_7","_component_router_link","_createElementVNode","_toDisplayString","userName","_createVNode","name","target","default","_withCtx","_","LandingV","userStore","_hoisted_8","_hoisted_9","_hoisted_10","_hoisted_11","_hoisted_12","viewBox","width","height","xmlns","d","_hoisted_13","_hoisted_14","_hoisted_15","_hoisted_16","_hoisted_17","_hoisted_18","_hoisted_19","_hoisted_20","_hoisted_21","_hoisted_22","_hoisted_23","_hoisted_24","_hoisted_25","slot","_hoisted_26","_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","onFocus","showDropdown","onBlur","onInput","uuid","checkUuid","_normalizeClass","_vModelText","_renderList","getStorylines","storyline","onMousedown","_withModifiers","selectUuid","isUserStoryline","_vShow","warning","args","generateRemoteConfig","fetchHistory","loadStatus","size","color","storylineHistory","history","selectHistory","selectedHistory","formatDate","created","disabled","storylineUUID","loadHistory","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","metadataModal","modalId","_withScopeId","n","_pushScopeId","_popScopeId","_createStaticVNode","_hoisted_27","_hoisted_29","_hoisted_30","_hoisted_31","_hoisted_32","_hoisted_33","_hoisted_34","_hoisted_35","_hoisted_36","_hoisted_37","_hoisted_38","_component_custom_editor","currentSlide","placeholder","selectSlide","slideIndex","isLast","rightOnly","determineEditorType","panel","panelIndex","onChange","_vModelCheckbox","centerSlide","centerPanel","toggleCenterSlide","toggleCenterPanel","length","advancedEditorView","saveChanges","newType","value","Object","keys","editors","filter","editor","thing","config","onSlideEdit","$emit","onConfigEdited","slideConfig","save","_resolveDynamicComponent","uid","dynamicSelected","changePanelType","onCancel","cancelTypeChange","toggleRightOnly","PanelType","_component_ChartPreview","_component_draggable","num","chartConfigs","clearEditor","allowMany","modelValue","handle","onUpdate","onChartsEdited","item","element","index","chart","onEdit","editChart","onDelete","idx","deleteChart","fill","_component_storylines_chart","_directive_tippy","_resolveDirective","content","placement","hideOnClick","animateFill","loading","chartConfig","chartIdx","onLoaded","loadChart","chartName","ChartPreviewV","constructor","_defineProperty","undefined","chartOptions","_chartOptions$data","modalEditor","highed","ModalEditor","allowDone","features","importer","options","defaultChartOptions","newChart","JSON","parse","newName","text","alert","setTimeout","show","src","oldChart","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","ready","createNewChart","toString","charts","Slideshow","items","c","customStyles","replace","match","chart_options","subtitle","credits","enabled","assign","thousandsSep","defaultTableData","chartInfo","chartSrc","file","stringify","push","findIndex","chartFile","oldName","remove","splice","edited","forEach","Chart","ChartPreview","ConfirmationModalV","draggable","_component_json_editor","updatedConfig","mode","expandedOnStart","onJsonChange","onJsonSave","CustomEditorV","require","Validator","jsonValidator","schemaUrl","then","schema","storylinesSchema","err","checkValidation","validator","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","images","i","image","assetSrc","substring","indexOf","filename","assetFile","zip","imagePreviewPromises","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","_component_time_slider_editor","saveTimeSlider","usingTimeSlider","timeSliderConf","timeSliderError","onTimeSliderChanged","onTimeSliderInput","range","start","attribute","layers","TimeSliderEditorV","MapEditorV","_this$panel$timeSlide","_this$panel$timeSlide2","_this$panel$timeSlide3","_this$panel$timeSlide4","_this$panel$timeSlide5","_this$panel$timeSlide6","timeSlider","status","strippedFileName","split","Date","getFullYear","window","addEventListener","onConfigEdit","validateTimeSlider","createNewConfig","openEditor","beforeDestroy","removeEventListener","getNumberOfMaps","rampConfig","defaultConfig","configFile","conf","rampEditorApi","createInstance","$refs","stringResponse","getConfig","property","layerId","trim","Number","some","val","isInteger","f","transform","_component_VideoPreview","videoPreview","onVideoEdited","dropVideo","videoType","uploadVideoUrl","videoPreviewLoading","fileType","deleteVideo","allowfullscreen","controls","kind","srclang","label","langs","VideoPreviewV","MarkdownIt","html","en","fr","VideoEditorV","_this$videoPreviewPro","videoPreviewPromise","addUploadedFile","fileSrc","findFileType","fileName","lastIndexOf","ext","pop","extractYoutubeId","url","regExp","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","scrollguard","Video","find","mapPanel","chartPanel","imagePanel","add","itemConfig","slideEditor","LoadingPageV","spinner","VueSpinnerOval","changePanel","switchSlide","removeSlide","newSlideName","idUsed","_vModelSelect","createNewSlide","editingSlide","DynamicEditorV","DynamicEditorV_1","userCreated","ch","slideshowPanel","videoPanel","newConfig","allCharts","every","allImages","slide","SlideEditorV","onSlideChange","prevType","removeSourceCounts","dynamicPanel","subPanel","typeSelector","p","deep","_hoisted_28","addNewSlide","delay","copyAllFromOtherLang","selectedForCopying","copyFromOtherLang","copySlide","moveUp","moveDown","SlideTocV","cloneDeep","deletedIndex","_this$slides$find","removeSourceHelper","_hoisted_39","_hoisted_40","_hoisted_41","_hoisted_42","_hoisted_43","_hoisted_44","metadataChanged","introTitle","introSubtitle","logoPreview","logoName","openFileSelector","removeLogo","logoAltText","contextLink","contextLabel","tocOrientation","dateModified","_document$getElementB","getElementById","click","event","_component_slide_toc","_component_slide_editor","_Transition","_normalizeProps","_guardReactiveProps","preview","onSlidesUpdated","updateSlides","onSlidesEdited","onCustomSlideUpdated","updateCustomSlide","href","EditorV","onMetadataEdited","loadSlides","beforeWindowUnload","observer","IntersectionObserver","classList","toggle","intersectionRatio","threshold","observe","querySelector","$nextTick","scrollTo","routeData","$router","resolve","previewTab","props","confirm","preventDefault","MetadataContentV","JSZip","axios","v4","uuidv4","_this$$route$params$u","loadExisting","curDate","year","month","getMonth","padStart","day","getDate","_this$configs$this$co","existing","logo","introSlide","logoSrc","_this$configFileStruc","logoFile","logoImage","File","blob","generateNewConfig","configZip","configHelper","_this$logoImage","otherLang","formattedOtherLangConfig","formattedConfigFile","configFileStructureHelper","_this$uuid","Message","clearConfig","loadAsync","post","process","messages","catch","log","date","estDate","toLocaleString","timeZone","hour","minute","hour12","Intl","DateTimeFormat","format","findSources","_configs$lang","_configs$lang2","incrementSourceCount","panelSourceHelper","uploadLogo","assetsFolder","folder","chartsFolder","rampConfigFolder","loadConfig","useConfig","_this$configFileStruc2","_this$configFileStruc3","enFile","frFile","_this$uuid2","success","reloadExisting","updateEditorPath","_config$introSlide$lo","_config$introSlide$lo2","_this$configFileStruc4","_this$configFileStruc5","_this$configFileStruc6","generateAsync","formData","FormData","append","headers","responseData","finally","publish","_this$logoImage2","_this$configFileStruc7","_this$logoImage3","fetchUserProfile","mainEditor","beforeRouteUpdate","next","isImgUrl","onerror","onload","uploadedFile","beforeEach","checkRequiredFields","values","field","_this$configFileStruc8","payload","beforeRouteLeave","curEditor","confirmationMessage","_userStore$userProfil","_userStore$userProfil2","userStorylines","storylines","s","allStorylines","u","combined","Editor","_component_storylines_intro","_component_storylines_content","plugin","headerHeight","onStep","updateActiveIndex","StoryPreviewV","savedProduct","filePath","configContent","documentElement","setAttribute","activeChapterIndex","headerH","clientHeight","routes","component","redirect","router","createRouter","createWebHashHistory","scrollBehavior","hash","selector","decodeURIComponent","behavior","rows","getAttribute","fold","reduce","enValue","frValue","i18n","createI18n","legacy","fallbackLocale","globalInjection","VueMarkdownEditor","use","enUS","githubTheme","Hljs","hljs","vfm","createVfm","app","createApp","pinia","createPinia","VueTippy","directive","HighchartsVue","StorylinesViewer","mount"],"mappings":"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","file":"js/chunk-common.46eaea93.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!./slideshow-editor.vue?vue&type=style&index=0&id=7cb258ba&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-preview.vue?vue&type=style&index=0&id=d8aa8408&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=2b99fd5c&lang=scss\"","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\":\"Scénarios de la PCAR\",\"frValid\":\"1\"},{\"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 scénarios 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.feedback\",\"enValue\":\"Send Us Feedback\",\"enValid\":\"1\",\"frValue\":\"Envoyez-nous vos commentaires\",\"frValid\":\"0\"},{\"key\":\"editor.feedback.subject\",\"enValue\":\"Storylines Editor Feedback\",\"enValid\":\"1\",\"frValue\":\"Commentaires de l'éditeur de scénarios\",\"frValid\":\"0\"},{\"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\":\"IDUU\",\"frValid\":\"1\"},{\"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.loadPrevious\",\"enValue\":\"Load Previous\",\"enValid\":\"1\",\"frValue\":\"[FR] Load Previous\",\"frValid\":\"0\"},{\"key\":\"editor.viewHistory\",\"enValue\":\"View Previous\",\"enValid\":\"1\",\"frValue\":\"[FR] View Previous\",\"frValid\":\"0\"},{\"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.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.centerPanel\",\"enValue\":\"Center panel content\",\"enValid\":\"1\",\"frValue\":\"Contenu de la diapositive centrale\",\"frValid\":\"0\"},{\"key\":\"editor.slides.centerSlide\",\"enValue\":\"Center slide content\",\"enValid\":\"1\",\"frValue\":\"Contenu du panneau central\",\"frValid\":\"0\"},{\"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\"},{\"key\":\"editor.landing.greeting\",\"enValue\":\"Hello\",\"enValid\":\"1\",\"frValue\":\"Bonjour\",\"frValid\":\"1\"}];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!./image-editor.vue?vue&type=style&index=0&id=4ee6d780&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!./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!./video-editor.vue?vue&type=style&index=0&id=33605cfc&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=49b602b6&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=44e16318&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=468630e0&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!./chart-editor.vue?vue&type=style&index=0&id=64375a02&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=3fca5ac8&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!./landing.vue?vue&type=style&index=0&id=47613d15&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!./text-editor.vue?vue&type=style&index=0&id=37b76b8f&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!./app.vue?vue&type=style&index=0&id=e7a04b6a&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!./preview.vue?vue&type=style&index=0&id=44145672&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!./time-slider-editor.vue?vue&type=style&index=0&id=98eacf1c&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=aef69d80&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!./map-editor.vue?vue&type=style&index=0&id=62693dea&lang=scss&scoped=true\"","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}","import { defineStore } from 'pinia';\n\ninterface Storyline {\n uuid: string;\n isUserStoryline?: boolean;\n}\n\ninterface UserProfile {\n userName?: string;\n role?: string;\n storylines?: Array;\n allStorylines?: Array;\n}\n\nexport const useUserStore = defineStore('user', {\n state: () => ({\n userProfile: {} as UserProfile\n }),\n actions: {\n async fetchUserProfile() {\n const apiUrl =\n process.env.VUE_APP_CURR_ENV !== '#{CURR_ENV}#'\n ? process.env.VUE_APP_NET_API_URL\n : 'https://localhost:44371';\n try {\n const response = await fetch(apiUrl + '/api/user/profile', {\n method: 'GET',\n credentials: 'include'\n });\n\n if (response.ok) {\n const data = await response.json();\n this.userProfile = data;\n } else {\n console.error('Failed to fetch the user profile.');\n }\n } catch (error) {\n console.error('Error fetching user profile: ', error);\n }\n }\n }\n});\n","\nimport { Vue, Watch } from 'vue-property-decorator';\nimport { RouteLocationNormalized } from 'vue-router';\nimport { useUserStore } from './stores/userStore';\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 mounted() {\n const userStore = useUserStore(this.$pinia);\n // We can mock the user's profile for local development here if needed.\n if (process.env.VUE_APP_CURR_ENV !== '#{CURR_ENV}#') {\n userStore.fetchUserProfile();\n }\n }\n}\n","import { render } from \"./app.vue?vue&type=template&id=e7a04b6a&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=e7a04b6a&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: \"relative\" }\nconst _hoisted_2 = { class: \"absolute top-0 right-0 bg-white text-black p-2\" }\nconst _hoisted_3 = { class: \"flex justify-center\" }\nconst _hoisted_4 = { class: \"home-btn-container border-4 border-gray-400 border-solid m-24\" }\nconst _hoisted_5 = { class: \"text-2xl font-bold\" }\nconst _hoisted_6 = { class: \"home-btn-container border-4 border-gray-400 border-solid m-24\" }\nconst _hoisted_7 = { 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, _toDisplayString(_ctx.$t('editor.landing.greeting')) + \" \" + _toDisplayString(_ctx.userName) + \"! \", 1),\n _createElementVNode(\"div\", _hoisted_3, [\n _createElementVNode(\"div\", _hoisted_4, [\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_5, \"+ \" + _toDisplayString(_ctx.$t('editor.createProduct')), 1)\n ]),\n _: 1\n })\n ]),\n _createElementVNode(\"div\", _hoisted_6, [\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_7, _toDisplayString(_ctx.$t('editor.editProduct')), 1)\n ]),\n _: 1\n })\n ])\n ])\n ]))\n}","\nimport { Vue } from 'vue-property-decorator';\nimport { useUserStore } from '../../stores/userStore';\n\nexport default class LandingV extends Vue {\n get userName() {\n const userStore = useUserStore();\n return userStore.userProfile.userName || 'Guest';\n }\n}\n","import { render } from \"./landing.vue?vue&type=template&id=47613d15&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=47613d15&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, renderList as _renderList, Fragment as _Fragment, withModifiers as _withModifiers, vShow as _vShow, resolveComponent as _resolveComponent, createVNode as _createVNode, withCtx as _withCtx, 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 flex-1 text-2xl font-bold mb-5\" }\nconst _hoisted_5 = { class: \"flex items-center border py-5 w-5/6\" }\nconst _hoisted_6 = { class: \"editor-label\" }\nconst _hoisted_7 = {\n key: 0,\n class: \"text-red-500\"\n}\nconst _hoisted_8 = { class: \"relative w-1/3 inline-block\" }\nconst _hoisted_9 = { class: \"absolute z-10 w-full bg-white border border-gray-200 mt-1\" }\nconst _hoisted_10 = [\"onMousedown\"]\nconst _hoisted_11 = {\n key: 0,\n class: \"text-yellow-500 rounded p-1 ml-2\"\n}\nconst _hoisted_12 = /*#__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_13 = { class: \"align-center inline-block select-none\" }\nconst _hoisted_14 = {\n key: 3,\n class: \"inline-flex align-middle mb-1\"\n}\nconst _hoisted_15 = {\n key: 4,\n class: \"ml-10\"\n}\nconst _hoisted_16 = [\"onClick\"]\nconst _hoisted_17 = [\"disabled\"]\nconst _hoisted_18 = /*#__PURE__*/_createElementVNode(\"br\", null, null, -1)\nconst _hoisted_19 = { class: \"mb-4\" }\nconst _hoisted_20 = { class: \"editor-h3\" }\nconst _hoisted_21 = { class: \"flex mt-8\" }\nconst _hoisted_22 = { class: \"ml-auto\" }\nconst _hoisted_23 = { class: \"editor-button\" }\nconst _hoisted_24 = [\"onClick\"]\nconst _hoisted_25 = {\n slot: \"header\",\n class: \"text-lg font-bold\"\n}\nconst _hoisted_26 = { 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 class: \"editor-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\", _hoisted_6, [\n ('uuid' in _ctx.reqFields)\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_7, \"*\"))\n : _createCommentVNode(\"\", true),\n _createTextVNode(\" \" + _toDisplayString(_ctx.$t('editor.uuid')) + \": \", 1)\n ]),\n _createElementVNode(\"div\", _hoisted_8, [\n _withDirectives(_createElementVNode(\"input\", {\n type: \"text\",\n onFocus: _cache[1] || (_cache[1] = ($event: any) => (_ctx.showDropdown = true)),\n onBlur: _cache[2] || (_cache[2] = ($event: any) => (_ctx.showDropdown = false)),\n onInput: _cache[3] || (_cache[3] = ($event: any) => {\n _ctx.error = false;\n _ctx.reqFields.uuid = true;\n _ctx.checkUuid();\n }),\n \"onUpdate:modelValue\": _cache[4] || (_cache[4] = ($event: any) => ((_ctx.uuid) = $event)),\n class: _normalizeClass([\"editor-input w-full mt-0\", { 'input-error': _ctx.error || !_ctx.reqFields.uuid }])\n }, null, 34), [\n [_vModelText, _ctx.uuid]\n ]),\n _withDirectives(_createElementVNode(\"div\", _hoisted_9, [\n _createElementVNode(\"ul\", null, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.getStorylines, (storyline) => {\n return (_openBlock(), _createElementBlock(\"li\", {\n key: storyline.uuid,\n onMousedown: _withModifiers(($event: any) => (_ctx.selectUuid(storyline.uuid)), [\"prevent\"]),\n class: _normalizeClass([\n 'p-2 hover:bg-gray-100 cursor-pointer',\n storyline.isUserStoryline ? 'bg-gray-200' : ''\n ])\n }, _toDisplayString(storyline.uuid), 43, _hoisted_10))\n }), 128))\n ])\n ], 512), [\n [_vShow, _ctx.showDropdown]\n ])\n ]),\n (_ctx.warning)\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_11, [\n _hoisted_12,\n _createElementVNode(\"span\", _hoisted_13, _toDisplayString(_ctx.$t('editor.uuid.exists')), 1)\n ]))\n : _createCommentVNode(\"\", true),\n (_ctx.editExisting)\n ? (_openBlock(), _createElementBlock(\"button\", {\n key: 1,\n onClick: _cache[5] || (_cache[5] = \n//@ts-ignore\n(...args) => (_ctx.generateRemoteConfig && _ctx.generateRemoteConfig(...args))),\n class: _normalizeClass([\"editor-button bg-black text-white hover:bg-gray-800\", { 'input-error': _ctx.error }])\n }, _toDisplayString(_ctx.$t('editor.load')), 3))\n : _createCommentVNode(\"\", true),\n (_ctx.editExisting)\n ? (_openBlock(), _createElementBlock(\"button\", {\n key: 2,\n onClick: _cache[6] || (_cache[6] = \n//@ts-ignore\n(...args) => (_ctx.fetchHistory && _ctx.fetchHistory(...args))),\n class: _normalizeClass([\"bg-black editor-button text-white hover:bg-gray-800\", { 'input-error': _ctx.error }])\n }, _toDisplayString(_ctx.$t('editor.viewHistory')), 3))\n : _createCommentVNode(\"\", true),\n (_ctx.loadStatus === 'loading')\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_14, [\n _createVNode(_component_spinner, {\n size: \"24px\",\n color: \"#009CD1\",\n class: \"mx-2 my-auto\"\n })\n ]))\n : _createCommentVNode(\"\", true),\n (_ctx.editExisting)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_15, [\n _createElementVNode(\"ul\", null, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.storylineHistory, (history) => {\n return (_openBlock(), _createElementBlock(\"li\", {\n key: history.id,\n onClick: ($event: any) => (_ctx.selectHistory(history)),\n class: _normalizeClass([\"p-2 cursor-pointer\", { 'bg-blue-200': _ctx.selectedHistory && history.id === _ctx.selectedHistory.id }])\n }, _toDisplayString(_ctx.formatDate(history.created)), 11, _hoisted_16))\n }), 128))\n ]),\n _createElementVNode(\"button\", {\n disabled: !_ctx.selectedHistory || _ctx.selectedHistory.storylineUUID !== _ctx.uuid,\n class: \"editor-button bg-black text-white hover:bg-gray-800\",\n onClick: _cache[7] || (_cache[7] = ($event: any) => (_ctx.loadHistory()))\n }, _toDisplayString(_ctx.$t('editor.loadPrevious')), 9, _hoisted_17)\n ]))\n : _createCommentVNode(\"\", true)\n ]),\n _hoisted_18,\n _createElementVNode(\"div\", _hoisted_19, [\n _createElementVNode(\"h3\", _hoisted_20, _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_21, [\n (_ctx.editExisting)\n ? (_openBlock(), _createElementBlock(\"button\", {\n key: 0,\n onClick: _cache[8] || (_cache[8] = ($event: any) => (_ctx.saveMetadata(true))),\n class: \"editor-button\"\n }, _toDisplayString(_ctx.$t('editor.saveChanges')), 1))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"div\", _hoisted_22, [\n _createVNode(_component_router_link, {\n to: { name: 'home' },\n target: \"\"\n }, {\n default: _withCtx(() => [\n _createElementVNode(\"button\", _hoisted_23, _toDisplayString(_ctx.$t('editor.back')), 1)\n ]),\n _: 1\n }),\n _createElementVNode(\"button\", {\n onClick: _cache[9] || (_cache[9] = ($event: any) => (!_ctx.warning ? _ctx.continueToEditor() : _ctx.$vfm.open(`confirm-uuid-overwrite`))),\n class: \"editor-button bg-black text-white\"\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[10] || (_cache[10] = ($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 class: \"editor-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_24),\n _createVNode(_component_confirmation_modal, {\n name: `change-lang`,\n message: _ctx.$t('editor.changeLang.modal'),\n onOk: _cache[11] || (_cache[11] = ($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_25, _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_26, [\n _createElementVNode(\"button\", {\n class: \"editor-button bg-black text-white hover:bg-gray-800\",\n onClick: _cache[12] || (_cache[12] = ($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-49b602b6\"),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 w-full\" }\nconst _hoisted_5 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"label\", { class: \"editor-label\" }, \"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 = { class: \"mx-2 font-bold\" }\nconst _hoisted_14 = [\"disabled\"]\nconst _hoisted_15 = { class: \"mx-2 font-bold\" }\nconst _hoisted_16 = [\"disabled\"]\nconst _hoisted_17 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"br\", null, null, -1))\nconst _hoisted_18 = {\n key: 0,\n class: \"flex border-b border-black\"\n}\nconst _hoisted_19 = /*#__PURE__*/_createStaticVNode(\"\", 2)\nconst _hoisted_21 = { class: \"align-middle inline-block pl-1\" }\nconst _hoisted_22 = /*#__PURE__*/_createStaticVNode(\"\", 2)\nconst _hoisted_24 = { class: \"align-middle inline-block pl-1\" }\nconst _hoisted_25 = { class: \"align-middle inline-block pl-1\" }\nconst _hoisted_26 = {\n key: 1,\n class: \"border-b border-black\"\n}\nconst _hoisted_27 = /*#__PURE__*/_createStaticVNode(\"\", 2)\nconst _hoisted_29 = { class: \"align-middle inline-block pl-1\" }\nconst _hoisted_30 = { class: \"align-middle inline-block pl-1\" }\nconst _hoisted_31 = { class: \"flex mt-4\" }\nconst _hoisted_32 = { class: \"font-bold text-xl\" }\nconst _hoisted_33 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", { class: \"ml-auto flex-grow\" }, null, -1))\nconst _hoisted_34 = {\n key: 0,\n class: \"flex flex-col mr-8\"\n}\nconst _hoisted_35 = { class: \"editor-label text-left text-lg\" }\nconst _hoisted_36 = [\"value\"]\nconst _hoisted_37 = [\"value\"]\nconst _hoisted_38 = {\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: \"editor-input 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: \"editor-button 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: \"editor-button 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: \"editor-input 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 _createElementVNode(\"span\", _hoisted_13, _toDisplayString(_ctx.$t('editor.slides.centerSlide')), 1),\n _withDirectives(_createElementVNode(\"input\", {\n type: \"checkbox\",\n class: \"editor-input rounded-none cursor-pointer w-4 h-4\",\n \"onUpdate:modelValue\": _cache[5] || (_cache[5] = ($event: any) => ((_ctx.centerSlide) = $event)),\n disabled: _ctx.centerPanel,\n onChange: _cache[6] || (_cache[6] = _withModifiers(($event: any) => (_ctx.toggleCenterSlide()), [\"stop\"]))\n }, null, 40, _hoisted_14), [\n [_vModelCheckbox, _ctx.centerSlide]\n ]),\n _createElementVNode(\"span\", _hoisted_15, _toDisplayString(_ctx.$t('editor.slides.centerPanel')), 1),\n _withDirectives(_createElementVNode(\"input\", {\n type: \"checkbox\",\n class: \"editor-input rounded-none cursor-pointer w-4 h-4\",\n \"onUpdate:modelValue\": _cache[7] || (_cache[7] = ($event: any) => ((_ctx.centerPanel) = $event)),\n disabled: _ctx.centerSlide,\n onChange: _cache[8] || (_cache[8] = _withModifiers(($event: any) => (_ctx.toggleCenterPanel()), [\"stop\"]))\n }, null, 40, _hoisted_16), [\n [_vModelCheckbox, _ctx.centerPanel]\n ])\n ])\n ])\n ]),\n _hoisted_17,\n (_ctx.currentSlide.panel.length === 2)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_18, [\n _createElementVNode(\"button\", {\n onClick: _cache[9] || (_cache[9] = \n () => {\n _ctx.panelIndex = 0;\n _ctx.advancedEditorView = false;\n _ctx.saveChanges();\n }\n ),\n class: _normalizeClass([\"editor-button border-t border-l border-r\", _ctx.panelIndex == 0 && !_ctx.advancedEditorView ? 'border-black' : 'border-white'])\n }, [\n _hoisted_19,\n _createElementVNode(\"span\", _hoisted_21, _toDisplayString(_ctx.$t('editor.slides.leftPanel')), 1)\n ], 2),\n _createElementVNode(\"button\", {\n onClick: _cache[10] || (_cache[10] = \n () => {\n _ctx.panelIndex = 1;\n _ctx.advancedEditorView = false;\n _ctx.saveChanges();\n }\n ),\n class: _normalizeClass([\"editor-button border-t border-l border-r\", _ctx.panelIndex == 1 && !_ctx.advancedEditorView ? 'border-black' : 'border-white'])\n }, [\n _hoisted_22,\n _createElementVNode(\"span\", _hoisted_24, _toDisplayString(_ctx.$t('editor.slides.rightPanel')), 1)\n ], 2),\n _createElementVNode(\"button\", {\n onClick: _cache[11] || (_cache[11] = \n () => {\n _ctx.advancedEditorView = true;\n _ctx.saveChanges();\n }\n ),\n class: _normalizeClass([\"editor-button border-t border-l border-r\", _ctx.advancedEditorView ? 'border-black' : 'border-white'])\n }, [\n _createElementVNode(\"span\", _hoisted_25, _toDisplayString(_ctx.$t('editor.slides.advanced')), 1)\n ], 2)\n ]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_26, [\n _createElementVNode(\"button\", {\n onClick: _cache[12] || (_cache[12] = \n () => {\n _ctx.advancedEditorView = false;\n _ctx.saveChanges();\n }\n ),\n class: _normalizeClass([\"editor-button border-t border-l border-r\", !_ctx.advancedEditorView ? 'border-black' : 'border-white'])\n }, [\n _hoisted_27,\n _createElementVNode(\"span\", _hoisted_29, _toDisplayString(_ctx.$t('editor.slides.fullscreenPanel')), 1)\n ], 2),\n _createElementVNode(\"button\", {\n onClick: _cache[13] || (_cache[13] = \n () => {\n _ctx.advancedEditorView = true;\n _ctx.saveChanges();\n }\n ),\n class: _normalizeClass([\"editor-button border-t border-l border-r\", _ctx.advancedEditorView ? 'border-black' : 'border-white'])\n }, [\n _createElementVNode(\"span\", _hoisted_30, _toDisplayString(_ctx.$t('editor.slides.advanced')), 1)\n ], 2)\n ])),\n _createElementVNode(\"div\", null, [\n _createElementVNode(\"div\", _hoisted_31, [\n _createElementVNode(\"span\", _hoisted_32, _toDisplayString(_ctx.$t('editor.slides.content')) + \":\", 1),\n _hoisted_33,\n (!_ctx.advancedEditorView || _ctx.rightOnly)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_34, [\n _createElementVNode(\"label\", _hoisted_35, _toDisplayString(_ctx.$t('editor.slides.contentType')) + \":\", 1),\n _createElementVNode(\"select\", {\n ref: \"typeSelector\",\n onInput: _cache[14] || (_cache[14] = ($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_37))\n }), 128))\n ], 40, _hoisted_36)\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[15] || (_cache[15] = ($event: any) => (_ctx.$emit('slide-edit'))),\n onConfigEdited: _cache[16] || (_cache[16] = (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 centerSlide: _ctx.centerSlide,\n dynamicSelected: _ctx.dynamicSelected,\n onSlideEdit: _cache[17] || (_cache[17] = ($event: any) => (_ctx.$emit('slide-edit')))\n }, null, 40, [\"panel\", \"configFileStructure\", \"lang\", \"uid\", \"sourceCounts\", \"centerSlide\", \"dynamicSelected\"]))\n ])\n ]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_38, [\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: \n _ctx.$t('editor.slides.changeSlide.confirm', {\n title: _ctx.currentSlide.title\n })\n ,\n onOk: _cache[18] || (_cache[18] = ($event: any) => {\n _ctx.changePanelType(_ctx.determineEditorType(_ctx.currentSlide.panel[_ctx.panelIndex]), _ctx.newType);\n _ctx.toggleCenterPanel();\n _ctx.toggleCenterSlide();\n }),\n onCancel: _ctx.cancelTypeChange\n }, null, 8, [\"name\", \"message\", \"onCancel\"]),\n _createVNode(_component_confirmation_modal, {\n name: `right-only-${_ctx.slideIndex}`,\n message: \n _ctx.$t('editor.slides.changeSlide.confirm', {\n title: _ctx.currentSlide.title\n })\n ,\n onOk: _cache[19] || (_cache[19] = ($event: any) => (_ctx.toggleRightOnly())),\n onCancel: _cache[20] || (_cache[20] = ($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: JSZip;\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 customStyles?: string;\n}\n\nexport interface TextPanel extends BasePanel {\n type: PanelType.Text;\n title: string;\n titleTag?: string;\n content: string; // in md format\n customStyles?: string;\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 customStyles?: string;\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 customStyles?: string;\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 customStyles?: 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 customStyles?: string;\n}\n\nexport interface AudioPanel extends BasePanel {\n type: PanelType.Audio;\n src: string;\n caption?: string;\n customStyles?: 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 customStyles?: string;\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 customStyles?: string;\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: \"editor-button 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: \"w-full 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-d8aa8408\"),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: \"editor-button 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: \"editor-label 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: \"editor-button 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: \"editor-button 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=d8aa8408&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=d8aa8408&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-d8aa8408\"]])\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-468630e0\"),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: \"editor-button 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: \"editor-button 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=468630e0&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=468630e0&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-468630e0\"]])\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 @Prop({ default: false }) centerSlide!: boolean;\n @Prop({ default: false }) dynamicSelected!: 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 if (this.centerSlide && this.dynamicSelected) {\n for (const c in charts) {\n charts[c].customStyles += 'text-align: left;';\n }\n } else if (!this.centerSlide && this.dynamicSelected) {\n for (const c in charts) {\n charts[c].customStyles = (charts[c].customStyles || '').replace('text-align: left;', '');\n }\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=64375a02&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=64375a02&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-44e16318\"),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\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: _ctx.onJsonSave\n }, null, 8, [\"modelValue\", \"lang\", \"onJsonSave\"])\n ]))\n}","\nimport { Options, Prop, Vue } from 'vue-property-decorator';\nimport { Vue3JsonEditor } from 'vue3-json-editor';\nimport { Validator } from '@/definitions';\n\n@Options({\n components: {\n 'json-editor': Vue3JsonEditor\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=44e16318&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=44e16318&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-44e16318\"]])\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-4ee6d780\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"block\" }\nconst _hoisted_2 = { class: \"editor-label 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: \"editor-label text-label\" }\nconst _hoisted_10 = [\"onUpdate:modelValue\"]\nconst _hoisted_11 = { class: \"flex mt-4 items-center w-full text-left\" }\nconst _hoisted_12 = { class: \"editor-label text-label\" }\nconst _hoisted_13 = [\"onUpdate:modelValue\"]\nconst _hoisted_14 = { class: \"flex items-center w-full text-left\" }\nconst _hoisted_15 = { class: \"editor-label 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 flex items-center justify-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: \"editor-input 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: \"editor-input 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: \"editor-input 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-1c58f06c\"),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: \"editor-button 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=1c58f06c&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=1c58f06c&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-1c58f06c\"]])\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 @Prop({ default: false }) centerSlide!: boolean;\n @Prop({ default: false }) dynamicSelected!: 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 (this.centerSlide && this.dynamicSelected) {\n for (const i in images) {\n images[i].customStyles += 'text-align: left;';\n }\n } else if (!this.centerSlide && this.dynamicSelected) {\n for (const i in images) {\n images[i].customStyles = (images[i].customStyles || '').replace('text-align: left;', '');\n }\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=4ee6d780&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=4ee6d780&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-4ee6d780\"]])\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-37b76b8f\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"flex flex-col mt-4\" }\nconst _hoisted_2 = { class: \"editor-label text-left\" }\nconst _hoisted_3 = { class: \"editor-label 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 class: \"editor-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 @Prop({ default: false }) centerSlide!: boolean;\n @Prop({ default: false }) dynamicSelected!: boolean;\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 mounted(): void {\n if (this.centerSlide && this.dynamicSelected) {\n this.panel.customStyles += 'text-align: left !important;';\n } else if (!this.centerSlide && this.dynamicSelected) {\n this.panel.customStyles = (this.panel.customStyles || '').replace('text-align: left !important;', '');\n }\n }\n}\n","import { render } from \"./text-editor.vue?vue&type=template&id=37b76b8f&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=37b76b8f&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-37b76b8f\"]])\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, 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-62693dea\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"flex flex-col\" }\nconst _hoisted_2 = { class: \"editor-label text-left\" }\nconst _hoisted_3 = { class: \"editor-label mt-6\" }\nconst _hoisted_4 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", { class: \"mx-4\" }, null, -1))\nconst _hoisted_5 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"br\", null, null, -1))\nconst _hoisted_6 = {\n key: 1,\n class: \"mb-4\"\n}\nconst _hoisted_7 = {\n class: \"ramp-editor mt-5\",\n ref: \"editor\",\n style: {\"width\":\"70vw\",\"height\":\"80vh\"}\n}\nconst _hoisted_8 = {\n slot: \"header\",\n class: \"text-lg font-bold\"\n}\nconst _hoisted_9 = { class: \"w-full flex justify-end\" }\nconst _hoisted_10 = [\"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 class: \"editor-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(\"div\", null, [\n _createElementVNode(\"label\", _hoisted_3, _toDisplayString(_ctx.$t('editor.map.timeslider.enable')), 1),\n _withDirectives(_createElementVNode(\"input\", {\n class: \"editor-input\",\n type: \"checkbox\",\n onChange: _cache[1] || (_cache[1] = \n//@ts-ignore\n(...args) => (_ctx.saveTimeSlider && _ctx.saveTimeSlider(...args))),\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = ($event: any) => ((_ctx.usingTimeSlider) = $event))\n }, null, 544), [\n [_vModelCheckbox, _ctx.usingTimeSlider]\n ]),\n _hoisted_4,\n (_ctx.usingTimeSlider)\n ? (_openBlock(), _createElementBlock(\"button\", {\n key: 0,\n onClick: _cache[3] || (_cache[3] = ($event: any) => (_ctx.$vfm.open('time-slider-edit-modal'))),\n class: \"editor-button bg-black text-white hover:bg-gray-800 mt-3\"\n }, _toDisplayString(_ctx.$t('editor.map.timeslider.edit')), 1))\n : _createCommentVNode(\"\", true),\n _hoisted_5,\n (_ctx.usingTimeSlider)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_6))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"div\", _hoisted_7, null, 512)\n ]),\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_8, _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_9, [\n _createElementVNode(\"button\", {\n class: _normalizeClass([\"editor-button\", _ctx.timeSliderError ? '' : 'bg-black text-white hover:bg-gray-800']),\n disabled: _ctx.timeSliderError,\n onClick: _cache[4] || (_cache[4] = \n//@ts-ignore\n(...args) => (_ctx.saveTimeSlider && _ctx.saveTimeSlider(...args)))\n }, \" Done \", 10, _hoisted_10)\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-98eacf1c\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"px-5\" }\nconst _hoisted_2 = { class: \"flex items-center\" }\nconst _hoisted_3 = { class: \"editor-label\" }\nconst _hoisted_4 = [\"value\"]\nconst _hoisted_5 = { class: \"mx-3\" }\nconst _hoisted_6 = [\"value\"]\nconst _hoisted_7 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"br\", null, null, -1))\nconst _hoisted_8 = { class: \"flex items-center\" }\nconst _hoisted_9 = { class: \"editor-label\" }\nconst _hoisted_10 = [\"value\"]\nconst _hoisted_11 = { class: \"mx-3\" }\nconst _hoisted_12 = [\"value\"]\nconst _hoisted_13 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"br\", null, null, -1))\nconst _hoisted_14 = {\n key: 0,\n class: \"border-black border-2 p-3 w-2/3\"\n}\nconst _hoisted_15 = { class: \"editor-label w-full\" }\nconst _hoisted_16 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"br\", null, null, -1))\nconst _hoisted_17 = { class: \"list-disc my-2 ml-8\" }\nconst _hoisted_18 = { key: 1 }\nconst _hoisted_19 = { class: \"editor-label\" }\nconst _hoisted_20 = [\"value\"]\nconst _hoisted_21 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"br\", null, null, -1))\nconst _hoisted_22 = { class: \"editor-label\" }\nconst _hoisted_23 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"br\", null, null, -1))\nconst _hoisted_24 = [\"value\"]\nconst _hoisted_25 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"br\", null, null, -1))\nconst _hoisted_26 = /*#__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\", _hoisted_3, _toDisplayString(_ctx.$t('editor.map.timeslider.range')), 1),\n _createElementVNode(\"input\", {\n class: \"editor-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_4),\n _createElementVNode(\"span\", _hoisted_5, _toDisplayString(_ctx.$t('editor.map.timeslider.to')), 1),\n _createElementVNode(\"input\", {\n class: \"editor-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_6)\n ]),\n _hoisted_7,\n _createElementVNode(\"div\", _hoisted_8, [\n _createElementVNode(\"label\", _hoisted_9, _toDisplayString(_ctx.$t('editor.map.timeslider.start')), 1),\n _createElementVNode(\"input\", {\n class: \"editor-input 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_10),\n _createElementVNode(\"span\", _hoisted_11, _toDisplayString(_ctx.$t('editor.map.timeslider.to')), 1),\n _createElementVNode(\"input\", {\n class: \"editor-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_12)\n ]),\n _hoisted_13,\n (_ctx.error)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_14, [\n _createElementVNode(\"label\", _hoisted_15, _toDisplayString(_ctx.$t('editor.map.timeslider.warning')), 1),\n _hoisted_16,\n _createElementVNode(\"ul\", _hoisted_17, [\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_18))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"div\", null, [\n _createElementVNode(\"label\", _hoisted_19, _toDisplayString(_ctx.$t('editor.map.timeslider.attribute')), 1),\n _createElementVNode(\"input\", {\n class: \"editor-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_20)\n ]),\n _hoisted_21,\n _createElementVNode(\"div\", null, [\n _createElementVNode(\"label\", _hoisted_22, _toDisplayString(_ctx.$t('editor.map.timeslider.layers')), 1),\n _hoisted_23,\n _createElementVNode(\"input\", {\n class: \"editor-input 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_24)\n ]),\n _hoisted_25,\n _hoisted_26\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=98eacf1c&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=98eacf1c&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-98eacf1c\"]])\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 defaultConfig from '../../../public/ramp-default.json';\nimport TimeSliderEditorV from './helpers/time-slider-editor.vue';\nimport { createInstance } from 'ramp-config-editor_editeur-config-pcar';\nimport 'ramp-config-editor_editeur-config-pcar/dist/style.css';\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 @Prop({ default: false }) centerSlide!: boolean;\n @Prop({ default: false }) dynamicSelected!: boolean;\n\n // config editor\n rampEditorApi: any = '';\n\n // For creating new files.\n newFileName = '';\n\n // TimeSlider\n usingTimeSlider = false;\n timeSliderError = false;\n timeSliderConf: TimeSliderConfig = { range: [], start: [], attribute: '' };\n status = 'default';\n strippedFileName = '';\n\n mounted(): void {\n this.usingTimeSlider = !!this.panel.timeSlider;\n this.status = this.panel.config !== '' ? 'default' : 'creating';\n this.strippedFileName = this.panel.config !== '' ? this.panel.config.split('/')[2].split('.')[0] : '';\n\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 window.addEventListener('ramp4-config-edited', this.onConfigEdit);\n this.validateTimeSlider();\n\n if (this.status === 'creating') {\n this.createNewConfig();\n }\n\n if (this.centerSlide && this.dynamicSelected) {\n this.panel.customStyles += 'text-align: left !important;';\n } else if (!this.centerSlide && this.dynamicSelected) {\n this.panel.customStyles = (this.panel.customStyles || '').replace('text-align: left !important;', '');\n }\n\n this.openEditor();\n }\n\n beforeDestroy(): void {\n window.removeEventListener('ramp4-config-edited', this.onConfigEdit);\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.configFileStructure.uuid}-map-${\n this.getNumberOfMaps() + 1\n }.json`;\n this.strippedFileName = this.panel.config.split('/')[2].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.file(\n `${this.strippedFileName}.json`,\n JSON.stringify(defaultConfig, 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 const conf = JSON.parse(res);\n this.rampEditorApi = createInstance(this.$refs.editor, conf);\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 const conf = JSON.parse(stringResponse);\n this.rampEditorApi = createInstance(this.$refs.editor, conf);\n });\n });\n }\n }\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 saveChanges(): void {\n // Add map config to ZIP file.\n this.configFileStructure.rampConfig.file(\n `${this.strippedFileName}.json`,\n JSON.stringify(this.rampEditorApi.getConfig(), null, 4)\n );\n }\n\n onConfigEdit(): void {\n this.$emit('slide-edit');\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 getNumberOfMaps(): number {\n let n = 0;\n this.configFileStructure.rampConfig.forEach((f) => {\n n += 1;\n });\n return n;\n }\n}\n","import { render } from \"./map-editor.vue?vue&type=template&id=62693dea&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=62693dea&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-62693dea\"]])\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-33605cfc\"),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: \"editor-label text-label\" }\nconst _hoisted_4 = { class: \"flex editor-label 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: \"editor-label text-label\" }\nconst _hoisted_10 = {\n key: 1,\n ref: \"videoUrl\",\n class: \"editor-input 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: \"editor-input 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 flex justify-center 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: \"editor-input 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: \"editor-button 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 @Prop({ default: false }) centerSlide!: boolean;\n @Prop({ default: false }) dynamicSelected!: boolean;\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 if (this.centerSlide && this.dynamicSelected) {\n this.panel.customStyles += 'text-align: left !important;';\n } else if (!this.centerSlide && this.dynamicSelected) {\n this.panel.customStyles = (this.panel.customStyles || '').replace('text-align: left !important;', '');\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=33605cfc&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=33605cfc&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-33605cfc\"]])\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-7cb258ba\"),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: \"editor-label 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: \"editor-button 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: \"editor-input 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: \"editor-button 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: \"editor-button 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) {\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 if (itemConfig.type === PanelType.Map) {\n this.$emit('slide-edit');\n }\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=7cb258ba&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=7cb258ba&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-7cb258ba\"]])\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([\"editor-button 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([\"editor-button 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 class: \"editor-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 class: \"editor-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 centerSlide: _ctx.centerSlide,\n dynamicSelected: _ctx.dynamicSelected,\n onSlideEdit: _cache[5] || (_cache[5] = ($event: any) => (_ctx.$emit('slide-edit')))\n }, null, 40, [\"panel\", \"configFileStructure\", \"lang\", \"sourceCounts\", \"centerSlide\", \"dynamicSelected\"]))\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 @Prop() centerSlide!: boolean;\n @Prop() dynamicSelected!: boolean;\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=3fca5ac8&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=3fca5ac8&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 centerSlide = false;\n centerPanel = false;\n dynamicSelected = 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 this.dynamicSelected = true;\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 toggleCenterSlide(): void {\n if (this.determineEditorType(this.currentSlide.panel[this.panelIndex]) === 'dynamic') {\n if (this.centerSlide) {\n this.currentSlide.panel[0].customStyles = 'text-align: right;';\n } else {\n this.currentSlide.panel[0].customStyles = (this.currentSlide.panel[0].customStyles || '').replace(\n 'text-align: right;',\n ''\n );\n }\n } else if (this.rightOnly) {\n if (this.centerSlide) {\n this.currentSlide.panel[0].customStyles = 'text-align: center;';\n } else {\n this.currentSlide.panel[0].customStyles = (this.currentSlide.panel[0].customStyles || '').replace(\n 'text-align: right;',\n ''\n );\n this.currentSlide.panel[0].customStyles = (this.currentSlide.panel[0].customStyles || '').replace(\n 'text-align: left;',\n ''\n );\n this.currentSlide.panel[0].customStyles = (this.currentSlide.panel[0].customStyles || '').replace(\n 'text-align: center;',\n ''\n );\n }\n } else {\n if (this.centerSlide) {\n this.currentSlide.panel[0].customStyles = 'text-align: right;';\n this.currentSlide.panel[1].customStyles = 'text-align: left;';\n } else {\n this.currentSlide.panel[0].customStyles = (this.currentSlide.panel[0].customStyles || '').replace(\n 'text-align: right;',\n ''\n );\n this.currentSlide.panel[1].customStyles = (this.currentSlide.panel[1].customStyles || '').replace(\n 'text-align: left;',\n ''\n );\n }\n }\n }\n\n toggleCenterPanel(): void {\n if (this.centerPanel) {\n for (const p in this.currentSlide.panel) {\n this.currentSlide.panel[p].customStyles = 'text-align: center;';\n }\n } else {\n for (const p in this.currentSlide.panel) {\n this.currentSlide.panel[p].customStyles = (this.currentSlide.panel[p].customStyles || '').replace(\n 'text-align: center;',\n ''\n );\n }\n }\n }\n}\n","import { render } from \"./slide-editor.vue?vue&type=template&id=49b602b6&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=49b602b6&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-49b602b6\"]])\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-aef69d80\"),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 class: \"editor-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 class: \"editor-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: \"editor-toc-button editor-button 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 class: \"editor-toc-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 class: \"slide-toc-button\",\n onClick: _withModifiers(($event: any) => (_ctx.$vfm.open(`delete-slide-${index}`)), [\"stop\"])\n }, _hoisted_21, 8, _hoisted_19),\n _createElementVNode(\"button\", {\n class: \"slide-toc-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([\"slide-toc-button\", 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([\"slide-toc-button 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=aef69d80&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=aef69d80&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-aef69d80\"]])\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: \"editor-label mb-5\" }\nconst _hoisted_2 = [\"value\"]\nconst _hoisted_3 = /*#__PURE__*/_createElementVNode(\"br\", null, null, -1)\nconst _hoisted_4 = { class: \"editor-label mb-5\" }\nconst _hoisted_5 = [\"value\"]\nconst _hoisted_6 = { class: \"editor-label mb-5\" }\nconst _hoisted_7 = [\"value\"]\nconst _hoisted_8 = /*#__PURE__*/_createElementVNode(\"br\", null, null, -1)\nconst _hoisted_9 = { key: 0 }\nconst _hoisted_10 = { class: \"editor-label\" }\nconst _hoisted_11 = [\"src\"]\nconst _hoisted_12 = {\n key: 1,\n class: \"image-preview\"\n}\nconst _hoisted_13 = { class: \"editor-label mb-5\" }\nconst _hoisted_14 = [\"value\"]\nconst _hoisted_15 = /*#__PURE__*/_createElementVNode(\"br\", null, null, -1)\nconst _hoisted_16 = { class: \"editor-label\" }\nconst _hoisted_17 = [\"value\"]\nconst _hoisted_18 = /*#__PURE__*/_createElementVNode(\"br\", null, null, -1)\nconst _hoisted_19 = /*#__PURE__*/_createElementVNode(\"label\", { class: \"editor-label mb-5\" }, null, -1)\nconst _hoisted_20 = { class: \"inline-block\" }\nconst _hoisted_21 = /*#__PURE__*/_createElementVNode(\"br\", null, null, -1)\nconst _hoisted_22 = { class: \"editor-label\" }\nconst _hoisted_23 = [\"value\"]\nconst _hoisted_24 = /*#__PURE__*/_createElementVNode(\"br\", null, null, -1)\nconst _hoisted_25 = /*#__PURE__*/_createElementVNode(\"label\", { class: \"editor-label mb-5\" }, null, -1)\nconst _hoisted_26 = { class: \"inline-block\" }\nconst _hoisted_27 = /*#__PURE__*/_createElementVNode(\"br\", null, null, -1)\nconst _hoisted_28 = { class: \"editor-label\" }\nconst _hoisted_29 = [\"value\"]\nconst _hoisted_30 = /*#__PURE__*/_createElementVNode(\"br\", null, null, -1)\nconst _hoisted_31 = /*#__PURE__*/_createElementVNode(\"label\", { class: \"editor-label mb-5\" }, null, -1)\nconst _hoisted_32 = { class: \"inline-block\" }\nconst _hoisted_33 = /*#__PURE__*/_createElementVNode(\"br\", null, null, -1)\nconst _hoisted_34 = { class: \"editor-label mr-15\" }\nconst _hoisted_35 = { value: \"vertical\" }\nconst _hoisted_36 = { value: \"horizontal\" }\nconst _hoisted_37 = /*#__PURE__*/_createElementVNode(\"br\", null, null, -1)\nconst _hoisted_38 = /*#__PURE__*/_createElementVNode(\"label\", { class: \"editor-label mb-5\" }, null, -1)\nconst _hoisted_39 = { class: \"inline-block\" }\nconst _hoisted_40 = /*#__PURE__*/_createElementVNode(\"br\", null, null, -1)\nconst _hoisted_41 = { class: \"editor-label mb-5\" }\nconst _hoisted_42 = [\"value\"]\nconst _hoisted_43 = /*#__PURE__*/_createElementVNode(\"br\", null, null, -1)\nconst _hoisted_44 = /*#__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: \"editor-input 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: \"editor-input 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: \"editor-input w-1/4\"\n }, null, 40, _hoisted_7),\n _hoisted_8,\n (!!_ctx.metadata.logoPreview)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_9, [\n _createElementVNode(\"label\", _hoisted_10, _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_11))\n : _createCommentVNode(\"\", true),\n (_ctx.metadata.logoPreview == 'error')\n ? (_openBlock(), _createElementBlock(\"p\", _hoisted_12, _toDisplayString(_ctx.$t('editor.image.loadingError')), 1))\n : _createCommentVNode(\"\", true)\n ]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"label\", _hoisted_13, _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: \"editor-input w-1/4\"\n }, null, 40, _hoisted_14),\n _createElementVNode(\"button\", {\n onClick: _cache[4] || (_cache[4] = _withModifiers(\n//@ts-ignore\n(...args) => (_ctx.openFileSelector && _ctx.openFileSelector(...args)), [\"stop\"])),\n class: \"editor-button 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: \"editor-button 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: \"editor-input w-1/4\",\n style: {\"display\":\"none\"}\n }, null, 32),\n _hoisted_15,\n _createElementVNode(\"label\", _hoisted_16, _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: \"editor-input w-2/3\"\n }, null, 40, _hoisted_17),\n _hoisted_18,\n _hoisted_19,\n _createElementVNode(\"p\", _hoisted_20, [\n _createElementVNode(\"i\", null, _toDisplayString(_ctx.$t('editor.logoAltText.desc')), 1)\n ]),\n _hoisted_21,\n _createElementVNode(\"label\", _hoisted_22, _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: \"editor-input w-2/3\"\n }, null, 40, _hoisted_23),\n _hoisted_24,\n _hoisted_25,\n _createElementVNode(\"p\", _hoisted_26, [\n _createElementVNode(\"i\", null, _toDisplayString(_ctx.$t('editor.contextLink.info')), 1)\n ]),\n _hoisted_27,\n _createElementVNode(\"label\", _hoisted_28, _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: \"editor-input w-2/3\"\n }, null, 40, _hoisted_29),\n _hoisted_30,\n _hoisted_31,\n _createElementVNode(\"p\", _hoisted_32, [\n _createElementVNode(\"i\", null, _toDisplayString(_ctx.$t('editor.contextLabel.info')), 1)\n ]),\n _hoisted_33,\n _createElementVNode(\"label\", _hoisted_34, _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_35, _toDisplayString(_ctx.$t('editor.tocOrientation.vertical')), 1),\n _createElementVNode(\"option\", _hoisted_36, _toDisplayString(_ctx.$t('editor.tocOrientation.horizontal')), 1)\n ], 544), [\n [_vModelSelect, _ctx.metadata.tocOrientation]\n ]),\n _hoisted_37,\n _hoisted_38,\n _createElementVNode(\"p\", _hoisted_39, [\n _createElementVNode(\"i\", null, _toDisplayString(_ctx.$t('editor.tocOrientation.info')), 1)\n ]),\n _hoisted_40,\n _createElementVNode(\"label\", _hoisted_41, _toDisplayString(_ctx.$t('editor.dateModified')) + \":\", 1),\n _createElementVNode(\"input\", {\n class: \"editor-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_42),\n _hoisted_43,\n _hoisted_44\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=f45bef82&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 } from \"vue\"\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__*/_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__*/_createElementVNode(\"span\", { class: \"ml-auto\" }, null, -1)\nconst _hoisted_8 = /*#__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__*/_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__*/_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\" }\nconst _hoisted_21 = { class: \"footer text-right pr-5 editor-button\" }\nconst _hoisted_22 = [\"href\"]\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: \"editor-button 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 }))),\n _createElementVNode(\"button\", {\n onClick: _cache[1] || (_cache[1] = \n//@ts-ignore\n(...args) => (_ctx.preview && _ctx.preview(...args))),\n class: \"editor-button 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: \"editor-button 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 class: \"editor-toc-button editor-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 _createElementVNode(\"div\", _hoisted_21, [\n _createElementVNode(\"a\", {\n href: `mailto:applicationsdecartographieweb-webmappingapplications@ec.gc.ca?subject=${_ctx.$t(\n 'editor.feedback.subject'\n )}`\n }, _toDisplayString(_ctx.$t('editor.feedback')), 9, _hoisted_22)\n ]),\n _renderSlot(_ctx.$slots, \"metadataModal\"),\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.$refs.slide as SlideEditorV).saveChanges();\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.$refs.slide as SlideEditorV).saveChanges();\n }\n\n // emit save changes event\n this.$emit('save-changes');\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=2b99fd5c&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=2b99fd5c&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 } 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';\nimport { useUserStore } from '../../stores/userStore';\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\ninterface History {\n id: number;\n storylineUUID: string;\n created: string;\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 showDropdown = false;\n\n storylineHistory: History[] = [];\n selectedHistory: History | null = null;\n\n // Saving properties.\n saving = false;\n unsavedChanges = false;\n\n apiUrl = process.env.VUE_APP_CURR_ENV !== '#{CURR_ENV}#' ? process.env.VUE_APP_API_URL : 'http://localhost:6040';\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(this.apiUrl + `/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 fetch(this.apiUrl + `/retrieveMessages`)\n .then((res: any) => {\n if (res.ok) return res.json();\n })\n .then((data) => {\n axios\n .post(process.env.VUE_APP_NET_API_URL + '/api/log/create', {\n messages: data.messages\n })\n .catch((error: any) => console.log(error.response || error));\n })\n .catch((error: any) => console.log(error.response || error));\n })\n .catch(() => {\n Message.error(`Failed to load product, no response from server`);\n this.loadStatus = 'loaded';\n });\n }\n\n fetchHistory(): void {\n if (this.uuid === undefined) Message.error(`You must first enter a UUID`);\n\n if (process.env.VUE_APP_CURR_ENV !== '#{CURR_ENV}#') {\n axios\n .get(process.env.VUE_APP_NET_API_URL + `/api/version/fetch/${this.uuid}`)\n .then((response: any) => {\n this.storylineHistory = response.data;\n })\n .catch((error: any) => console.log(error.response || error));\n }\n }\n\n selectHistory(selected: any): void {\n this.selectedHistory = selected;\n }\n\n formatDate(created: string): string {\n const date = new Date(created);\n const estDate = new Date(date.toLocaleString('en-US', { timeZone: 'America/Toronto' }));\n const options: Intl.DateTimeFormatOptions = {\n year: 'numeric',\n month: '2-digit',\n day: '2-digit',\n hour: '2-digit',\n minute: '2-digit',\n hour12: true,\n timeZone: 'America/Toronto'\n };\n\n return new Intl.DateTimeFormat('en-US', options).format(estDate);\n }\n\n loadHistory(): void {\n if (this.selectedHistory && process.env.VUE_APP_CURR_ENV !== '#{CURR_ENV}#') {\n this.loadStatus = 'loading';\n\n axios\n .get(process.env.VUE_APP_NET_API_URL + `/api/version/load/${this.selectedHistory.id}`, {\n responseType: 'blob'\n })\n .then((response: any) => {\n const blob = response.data;\n\n JSZip.loadAsync(blob)\n .then((zip: any) => {\n this.configFileStructureHelper(zip);\n })\n .catch((jsZipError: any) => {\n console.error('Error processing ZIP file:', jsZipError);\n Message.error('Failed to process ZIP file');\n });\n })\n .catch((error: any) => {\n if (error.response && error.response.status === 404) {\n Message.error(`The requested version does not exist.`);\n this.error = true;\n this.loadStatus = 'waiting';\n this.clearConfig();\n } else {\n console.error('Failed to load version:', error);\n Message.error('Failed to load product, no response from server');\n }\n this.loadStatus = 'loaded';\n });\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: rampConfigFolder\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(this.apiUrl + '/upload', formData, { headers })\n .then((res: AxiosResponse) => {\n const responseData = res.data;\n responseData.files; // binary representation of the file\n responseData.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 if (process.env.VUE_APP_CURR_ENV !== '#{CURR_ENV}#') {\n if (responseData.new) {\n axios\n .post(process.env.VUE_APP_NET_API_URL + '/api/user/register', {\n uuid: this.uuid\n })\n .then((response: any) => {\n const userStore = useUserStore();\n userStore.fetchUserProfile();\n console.log(response);\n\n formData.append('uuid', this.uuid);\n axios\n .post(process.env.VUE_APP_NET_API_URL + '/api/version/commit', formData)\n .then((response: any) => {\n console.log('Version saved successfully.');\n })\n .catch((error: any) => console.log(error.response || error));\n })\n .catch((error: any) => console.log(error.response || error));\n } else {\n formData.append('uuid', this.uuid);\n axios\n .post(process.env.VUE_APP_NET_API_URL + '/api/version/commit', formData)\n .then((response: any) => {\n console.log('Version saved successfully.');\n })\n .catch((error: any) => console.log(error.response || error));\n }\n\n fetch(this.apiUrl + `/retrieveMessages`)\n .then((res: any) => {\n if (res.ok) return res.json();\n })\n .then((data) => {\n axios\n .post(process.env.VUE_APP_NET_API_URL + '/api/log/create', {\n messages: data.messages\n })\n .catch((error: any) => console.log(error.response || error));\n })\n .catch((error: any) => console.log(error.response || error));\n }\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 const userStore = useUserStore();\n userStore.fetchUserProfile();\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(this.apiUrl + `/retrieve/${this.uuid}`).then((res: Response) => {\n if (res.status !== 404) {\n this.warning = true;\n }\n\n fetch(this.apiUrl + `/retrieveMessages`)\n .then((res: any) => {\n if (res.ok) return res.json();\n })\n .then((data) => {\n axios\n .post(process.env.VUE_APP_NET_API_URL + '/api/log/create', {\n messages: data.messages\n })\n .catch((error: any) => console.log(error.response || error));\n })\n .catch((error: any) => console.log(error.response || error));\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 get getStorylines() {\n const userStore = useUserStore();\n const userStorylines = userStore.userProfile.storylines?.map((s) => ({ ...s, isUserStoryline: true })) || [];\n const allStorylines =\n userStore.userProfile.allStorylines?.filter((s) => !userStorylines.some((u) => u.uuid === s.uuid)) || [];\n\n let combined = [...userStorylines, ...allStorylines];\n\n if (this.uuid)\n combined = combined.filter((storyline) => storyline.uuid.toLowerCase().includes(this.uuid.toLowerCase()));\n\n return combined;\n }\n\n selectUuid(uuid: string): void {\n this.uuid = uuid;\n this.showDropdown = false;\n }\n}\n","import { render } from \"./metadata-editor.vue?vue&type=template&id=68c1ec8a&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=68c1ec8a&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 apiUrl = process.env.VUE_APP_CURR_ENV !== '#{CURR_ENV}#' ? process.env.VUE_APP_API_URL : 'http://localhost:6040';\n configs: {\n [key: string]: StoryRampConfig | undefined;\n } = { en: undefined, fr: undefined };\n\n created(): void {\n const uid = this.$route.params.uid as string;\n const lang = this.$route.params.lang as string;\n const JSZip = require('jszip');\n const axios = require('axios').default;\n\n if (uid) {\n this.savedProduct = true;\n // attempt to fetch saved config file from the server (TODO: setup as express route?)\n fetch(this.apiUrl + `/retrieve/${uid}`).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 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 const assetsFolder = configZip.folder('assets');\n const chartsFolder = configZip.folder('charts');\n const rampConfigFolder = configZip.folder('ramp-config');\n\n this.configFileStructure = {\n uuid: uid,\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: rampConfigFolder\n };\n\n const filePath = `${uid}_${lang}.json`;\n configZip\n .file(filePath)\n .async('string')\n .then((configContent: string) => {\n const config = JSON.parse(configContent) as StoryRampConfig;\n this.config = config;\n this.loadStatus = 'loaded';\n document.title = this.config.title + ' - Canada.ca';\n });\n });\n });\n }\n\n fetch(this.apiUrl + `/retrieveMessages`).then((res: any) => {\n axios\n .post(process.env.VUE_APP_NET_API_URL + '/api/log/create', {\n messages: res.data.messages\n })\n .catch((error: any) => console.log(error.response || error));\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=44145672&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=44145672&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: (to: RouteLocationNormalized) => {\n return '/' + to.params.lang + '/editor-metadata/' + to.params.uid;\n }\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';\nimport { createPinia } from 'pinia';\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);\nconst pinia = createPinia();\n\napp.use(pinia)\n .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);\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!./metadata-editor.vue?vue&type=style&index=0&id=68c1ec8a&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!./image-preview.vue?vue&type=style&index=0&id=1c58f06c&lang=scss&scoped=true\""],"sourceRoot":""} \ No newline at end of file diff --git a/fix-292/js/chunk-common.e640abf6.js b/fix-292/js/chunk-common.e640abf6.js deleted file mode 100644 index 2c4a7f34..00000000 --- a/fix-292/js/chunk-common.e640abf6.js +++ /dev/null @@ -1,2 +0,0 @@ -(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-common"],{0:function(e,t){},"012b":function(e,t,i){},"034f":function(e,t,i){"use strict";i("abba")},1:function(e,t,i){e.exports=i("cd49")},2208:function(e,t,i){"use strict";i("d932")},"30ce":function(e,t,i){},"38c8":function(e,t,i){},"3b76":function(e,t,i){"use strict";i("b3f9")},"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:"Scénarios de la PCAR",frValid:"1"},{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 scénarios 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.feedback",enValue:"Send Us Feedback",enValid:"1",frValue:"Envoyez-nous vos commentaires",frValid:"0"},{key:"editor.feedback.subject",enValue:"Storylines Editor Feedback",enValid:"1",frValue:"Commentaires de l'éditeur de scénarios",frValid:"0"},{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:"IDUU",frValid:"1"},{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.loadPrevious",enValue:"Load Previous",enValid:"1",frValue:"[FR] Load Previous",frValid:"0"},{key:"editor.viewHistory",enValue:"View Previous",enValid:"1",frValue:"[FR] View Previous",frValid:"0"},{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.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.centerPanel",enValue:"Center panel content",enValid:"1",frValue:"Contenu de la diapositive centrale",frValid:"0"},{key:"editor.slides.centerSlide",enValue:"Center slide content",enValid:"1",frValue:"Contenu du panneau central",frValid:"0"},{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"},{key:"editor.landing.greeting",enValue:"Hello",enValid:"1",frValue:"Bonjour",frValid:"1"}];i.columns=["key","enValue","enValid","frValue","frValid"],e.exports=i},4397:function(e,t,i){"use strict";i("30ce")},"480b":function(e,t,i){"use strict";i("012b")},"569f":function(e,t,i){},"5ada":function(e,t,i){"use strict";i("c62c")},"63b8":function(e,t,i){},6511:function(e,t,i){"use strict";i("8273")},"6cbe":function(e,t,i){},"72c3":function(e,t,i){"use strict";i("e593")},"7b58":function(e,t,i){"use strict";i("6cbe")},8273:function(e,t,i){},8846:function(e,t,i){"use strict";i("63b8")},"8c10":function(e,t,i){},"8f2c":function(e,t,i){},"94db":function(e,t,i){"use strict";i("9bd2")},"9bd2":function(e,t,i){},"9c68":function(e,t,i){"use strict";i("d364")},"9f5c":function(e,t,i){"use strict";i("ef88")},a0ea:function(e){e.exports=JSON.parse('{"startingFixtures":["export","geosearch","overviewmap","basemap","legend","mapnav","help","appbar","help","grid","crosshairs","scrollguard","panguard","wizard","layer-reorder","details"],"configs":{"en":{"version":"4.0","fixtures":{"geosearch":{"serviceUrls":{"geoNames":"https://geogratis.gc.ca/services/geoname/en/geonames.json","geoLocation":"https://geogratis.gc.ca/services/geolocation/en/locate?q=","geoProvince":"https://geogratis.gc.ca/services/geoname/en/codes/province.json","geoTypes":"https://geogratis.gc.ca/services/geoname/en/codes/concise.json"},"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}},"export":{"title":{"selected":true,"selectable":true,"value":""},"map":{"selected":true,"selectable":true},"mapElements":{"selected":true,"selectable":true},"legend":{"selected":true,"selectable":true},"footnote":{"selected":true,"selectable":true,"value":""}},"overviewmap":{"basemaps":{},"startMinimized":true,"expandFactor":1.5},"legend":{"root":{"name":"I\'m root","children":[]},"headerControls":["groupToggle","visibilityToggle"]},"mapnav":{"zoomOption":"buttons","items":["fullscreen","geolocator","home","help"]},"help":{"location":"./help","panelWidth":350},"appbar":{"items":["legend","geosearch","basemap","export","help"]}},"layers":[],"map":{"initialBasemapId":"baseNrCan","caption":{"mapCoords":{"disabled":false,"formatter":"LAT_LONG_DMS"},"scaleBar":{"disabled":false,"imperialScale":false}},"extentSets":[{"id":"EXT_NRCAN_Lambert_3978","default":{"xmin":-5281457,"xmax":3049492,"ymin":-983440,"ymax":4482193,"spatialReference":{"wkid":3978}}},{"id":"EXT_ESRI_World_AuxMerc_3857","default":{"xmin":-16632697.354854,"xmax":-5007771.626060756,"ymin":5022907.964742964,"ymax":10015875.184845109,"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}]}],"tileSchemas":[{"id":"EXT_NRCAN_Lambert_3978#LOD_NRCAN_Lambert_3978","name":"Lambert Maps","extentSetId":"EXT_NRCAN_Lambert_3978","lodSetId":"LOD_NRCAN_Lambert_3978","thumbnailTileUrls":[],"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","thumbnailTileUrls":[],"hasNorthPole":false}],"basemaps":[{"id":"baseNrCan","tileSchemaId":"EXT_NRCAN_Lambert_3978#LOD_NRCAN_Lambert_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":"The Canada Base Map - Transportation (CBMT)","layers":[{"id":"CBMT","layerType":"esri-tile","url":"https://maps-cartes.services.geo.ca/server2_serveur2/rest/services/BaseMaps/CBMT3978/MapServer","opacity":1}]},{"id":"baseSimple","tileSchemaId":"EXT_NRCAN_Lambert_3978#LOD_NRCAN_Lambert_3978","name":"Canada Base Map - Simple","description":"Canada Base Map - Simple","altText":"Canada base map - Simple","layers":[{"id":"SMR","layerType":"esri-tile","url":"https://maps-cartes.services.geo.ca/server2_serveur2/rest/services/BaseMaps/Simple/MapServer","opacity":1}]},{"id":"baseCBME_CBCE_HS_RO_3978","tileSchemaId":"EXT_NRCAN_Lambert_3978#LOD_NRCAN_Lambert_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":"esri-tile","url":"https://maps-cartes.services.geo.ca/server2_serveur2/rest/services/BaseMaps/CBME_CBCE_HS_RO_3978/MapServer","opacity":1}]},{"id":"baseCBMT_CBCT_GEOM_3978","tileSchemaId":"EXT_NRCAN_Lambert_3978#LOD_NRCAN_Lambert_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":"esri-tile","url":"https://maps-cartes.services.geo.ca/server2_serveur2/rest/services/BaseMaps/CBMT_CBCT_GEOM_3978/MapServer","opacity":1}]},{"id":"baseEsriWorld","tileSchemaId":"EXT_ESRI_World_AuxMerc_3857#LOD_ESRI_World_AuxMerc_3857","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":"esri-tile","url":"https://services.arcgisonline.com/arcgis/rest/services/World_Imagery/MapServer","opacity":1}]},{"id":"baseEsriPhysical","tileSchemaId":"EXT_ESRI_World_AuxMerc_3857#LOD_ESRI_World_AuxMerc_3857","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":"esri-tile","url":"https://services.arcgisonline.com/arcgis/rest/services/World_Physical_Map/MapServer","opacity":1}]},{"id":"baseEsriRelief","tileSchemaId":"EXT_ESRI_World_AuxMerc_3857#LOD_ESRI_World_AuxMerc_3857","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":"esri-tile","url":"https://services.arcgisonline.com/arcgis/rest/services/World_Shaded_Relief/MapServer","opacity":1}]},{"id":"baseEsriStreet","tileSchemaId":"EXT_ESRI_World_AuxMerc_3857#LOD_ESRI_World_AuxMerc_3857","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":"esri-tile","url":"https://services.arcgisonline.com/arcgis/rest/services/World_Street_Map/MapServer","opacity":1}]},{"id":"baseEsriTerrain","tileSchemaId":"EXT_ESRI_World_AuxMerc_3857#LOD_ESRI_World_AuxMerc_3857","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":"esri-tile","url":"https://services.arcgisonline.com/arcgis/rest/services/World_Terrain_Base/MapServer","opacity":1}]},{"id":"baseEsriTopo","tileSchemaId":"EXT_ESRI_World_AuxMerc_3857#LOD_ESRI_World_AuxMerc_3857","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":"esri-tile","url":"https://services.arcgisonline.com/arcgis/rest/services/World_Topo_Map/MapServer","opacity":1}]}]},"panels":{"open":[{"id":"legend"}]},"system":{"animate":true,"exposeOid":false,"exposeMeasurements":true,"proxyUrl":"https://maps.canada.ca/wmsproxy/ws/wmsproxy/executeFromProxy"}},"fr":{"version":"4.0","fixtures":{"geosearch":{"serviceUrls":{"geoNames":"https://geogratis.gc.ca/services/geoname/fr/geonames.json","geoLocation":"https://geogratis.gc.ca/services/geolocation/fr/locate?q=","geoProvince":"https://geogratis.gc.ca/services/geoname/fr/codes/province.json","geoTypes":"https://geogratis.gc.ca/services/geoname/fr/codes/concise.json"},"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}},"export":{"title":{"selected":true,"selectable":true,"value":""},"map":{"selected":true,"selectable":true},"mapElements":{"selected":true,"selectable":true},"legend":{"selected":true,"selectable":true},"footnote":{"selected":true,"selectable":true,"value":""}},"overviewmap":{"basemaps":{},"startMinimized":true,"expandFactor":1.5},"legend":{"root":{"name":"I\'m root","children":[]},"headerControls":["groupToggle","visibilityToggle"]},"mapnav":{"zoomOption":"buttons","items":["fullscreen","geolocator","home","help"]},"help":{"location":"./help","panelWidth":350},"appbar":{"items":["legend","geosearch","basemap","export","help"]}},"layers":[],"map":{"initialBasemapId":"baseNrCan","caption":{"mapCoords":{"disabled":false,"formatter":"LAT_LONG_DMS"},"scaleBar":{"disabled":false,"imperialScale":false}},"extentSets":[{"id":"EXT_NRCAN_Lambert_3978","default":{"xmin":-5281457,"xmax":3049492,"ymin":-983440,"ymax":4482193,"spatialReference":{"wkid":3978}}},{"id":"EXT_ESRI_World_AuxMerc_3857","default":{"xmin":-16632697.354854,"xmax":-5007771.626060756,"ymin":5022907.964742964,"ymax":10015875.184845109,"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}]}],"tileSchemas":[{"id":"EXT_NRCAN_Lambert_3978#LOD_NRCAN_Lambert_3978","name":"Lambert Maps","extentSetId":"EXT_NRCAN_Lambert_3978","lodSetId":"LOD_NRCAN_Lambert_3978","thumbnailTileUrls":[],"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","thumbnailTileUrls":[],"hasNorthPole":false}],"basemaps":[{"id":"baseNrCan","tileSchemaId":"EXT_NRCAN_Lambert_3978#LOD_NRCAN_Lambert_3978","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":"esri-tile","url":"https://maps-cartes.services.geo.ca/server2_serveur2/rest/services/BaseMaps/CBCT3978/MapServer","opacity":1}]},{"id":"baseSimple","tileSchemaId":"EXT_NRCAN_Lambert_3978#LOD_NRCAN_Lambert_3978","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":"esri-tile","url":"https://maps-cartes.services.geo.ca/server2_serveur2/rest/services/BaseMaps/Simple/MapServer","opacity":1},{"id":"SMW","layerType":"esri-tile","url":"https://maps-cartes.services.geo.ca/server2_serveur2/rest/services/BaseMaps/CBMT_TXT_3978/MapServer","opacity":1}]},{"id":"baseCBME_CBCE_HS_RO_3978","tileSchemaId":"EXT_NRCAN_Lambert_3978#LOD_NRCAN_Lambert_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":"esri-tile","url":"https://maps-cartes.services.geo.ca/server2_serveur2/rest/services/BaseMaps/CBME_CBCE_HS_RO_3978/MapServer","opacity":1}]},{"id":"baseCBMT_CBCT_GEOM_3978","tileSchemaId":"EXT_NRCAN_Lambert_3978#LOD_NRCAN_Lambert_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":"esri-tile","url":"https://maps-cartes.services.geo.ca/server2_serveur2/rest/services/BaseMaps/CBMT_CBCT_GEOM_3978/MapServer","opacity":1}]},{"id":"baseEsriWorld","tileSchemaId":"EXT_ESRI_World_AuxMerc_3857#LOD_ESRI_World_AuxMerc_3857","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":"esri-tile","url":"https://services.arcgisonline.com/arcgis/rest/services/World_Imagery/MapServer","opacity":1}]},{"id":"baseEsriPhysical","tileSchemaId":"EXT_ESRI_World_AuxMerc_3857#LOD_ESRI_World_AuxMerc_3857","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":"esri-tile","url":"https://services.arcgisonline.com/arcgis/rest/services/World_Physical_Map/MapServer","opacity":1}]},{"id":"baseEsriRelief","tileSchemaId":"EXT_ESRI_World_AuxMerc_3857#LOD_ESRI_World_AuxMerc_3857","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":"esri-tile","url":"https://services.arcgisonline.com/arcgis/rest/services/World_Shaded_Relief/MapServer","opacity":1}]},{"id":"baseEsriStreet","tileSchemaId":"EXT_ESRI_World_AuxMerc_3857#LOD_ESRI_World_AuxMerc_3857","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":"esri-tile","url":"https://services.arcgisonline.com/arcgis/rest/services/World_Street_Map/MapServer","opacity":1}]},{"id":"baseEsriTerrain","tileSchemaId":"EXT_ESRI_World_AuxMerc_3857#LOD_ESRI_World_AuxMerc_3857","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":"esri-tile","url":"https://services.arcgisonline.com/arcgis/rest/services/World_Terrain_Base/MapServer","opacity":1}]},{"id":"baseEsriTopo","tileSchemaId":"EXT_ESRI_World_AuxMerc_3857#LOD_ESRI_World_AuxMerc_3857","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":"esri-tile","url":"https://services.arcgisonline.com/arcgis/rest/services/World_Topo_Map/MapServer","opacity":1}]}]},"panels":{"open":[{"id":"legend"}]},"system":{"animate":true,"exposeOid":false,"exposeMeasurements":true,"proxyUrl":"https://maps.canada.ca/wmsproxy/ws/wmsproxy/executeFromProxy"}}}}')},a828:function(e,t,i){"use strict";i("d1aa")},a928:function(e,t,i){"use strict";i("cdea")},abba:function(e,t,i){},b3f9:function(e,t,i){},b949:function(e,t,i){"use strict";i("e8ca")},bacc:function(e,t,i){},c191:function(e,t,i){"use strict";i("8c10")},c62c:function(e,t,i){},c639:function(e,t,i){"use strict";i("bacc")},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,r,n){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 r=i("9ab4"),n=i("1b40"),s=i("be92");const c=Object(s["b"])("user",{state:()=>({userProfile:{}}),actions:{async fetchUserProfile(){const e="https://localhost:44371";try{const t=await fetch(e+"/api/user/profile",{method:"GET",credentials:"include"});if(t.ok){const e=await t.json();this.userProfile=e}else console.error("Failed to fetch the user profile.")}catch(t){console.error("Error fetching user profile: ",t)}}}});class d extends n["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))}mounted(){c(this.$pinia)}}Object(r["a"])([Object(n["d"])("$route",{immediate:!0})],d.prototype,"onRouteUpdate",null);i("a828");var u=i("6b0d"),b=i.n(u);const p=b()(d,[["render",o]]);var m=p,h=i("ce1f");h["b"].registerHooks(["beforeRouterEnter","beforeRouteLeave","beforeRouteUpdate"]);const g={class:"relative"},f={class:"absolute top-0 right-0 bg-white text-black p-2"},v={class:"flex justify-center"},O={class:"home-btn-container border-4 border-gray-400 border-solid m-24"},j={class:"text-2xl font-bold"},y={class:"home-btn-container border-4 border-gray-400 border-solid m-24"},V={class:"text-2xl font-bold"};function S(e,t,i,l,o,r){const n=Object(a["resolveComponent"])("router-link");return Object(a["openBlock"])(),Object(a["createElementBlock"])("div",g,[Object(a["createElementVNode"])("div",f,Object(a["toDisplayString"])(e.$t("editor.landing.greeting"))+" "+Object(a["toDisplayString"])(e.userName)+"! ",1),Object(a["createElementVNode"])("div",v,[Object(a["createElementVNode"])("div",O,[Object(a["createVNode"])(n,{to:{name:"metadataNew"},class:"flex justify-center h-full w-full",target:""},{default:Object(a["withCtx"])(()=>[Object(a["createElementVNode"])("button",j,"+ "+Object(a["toDisplayString"])(e.$t("editor.createProduct")),1)]),_:1})]),Object(a["createElementVNode"])("div",y,[Object(a["createVNode"])(n,{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 C extends n["c"]{get userName(){const e=c();return e.userProfile.userName||"Guest"}}i("9c68");const x=b()(C,[["render",S]]);var E=x;const w={class:"editor-container"},k={class:"px-20 py-5"},N={class:"flex"},T={class:"flex flex-1 text-2xl font-bold mb-5"},_={class:"border py-5 w-5/6"},$={class:"editor-label"},L={key:0,class:"text-red-500"},M={class:"relative w-1/3 inline-block"},I={class:"absolute z-10 w-full bg-white border border-gray-200 mt-1"},B=["onMousedown"],D={key:0,class:"text-yellow-500 rounded p-1 ml-2"},F=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),P={class:"align-center inline-block select-none"},R={key:3,class:"inline-flex align-middle mb-1"},A={key:4,class:"inline-flex border py-5 ml-10"},U=["onClick"],z=["disabled"],W=Object(a["createElementVNode"])("br",null,null,-1),H={class:"mb-4"},q={class:"editor-h3"},X={class:"flex mt-8"},J={class:"ml-auto"},G={class:"editor-button"},Z=["onClick"],Y={slot:"header",class:"text-lg font-bold"},Q={class:"w-full flex justify-end"};function K(e,t,i,l,o,r){const n=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"),b=Object(a["resolveComponent"])("editor");return Object(a["openBlock"])(),Object(a["createElementBlock"])("div",w,[e.loadEditor?Object(a["createCommentVNode"])("",!0):(Object(a["openBlock"])(),Object(a["createElementBlock"])(a["Fragment"],{key:0},[Object(a["createElementVNode"])("div",k,[Object(a["createElementVNode"])("div",N,[Object(a["createElementVNode"])("div",T,Object(a["toDisplayString"])(e.editExisting?e.$t("editor.editProduct"):e.$t("editor.createProduct")),1),Object(a["createElementVNode"])("button",{class:"editor-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",_,[Object(a["createElementVNode"])("label",$,["uuid"in e.reqFields?(Object(a["openBlock"])(),Object(a["createElementBlock"])("span",L,"*")):Object(a["createCommentVNode"])("",!0),Object(a["createTextVNode"])(" "+Object(a["toDisplayString"])(e.$t("editor.uuid"))+": ",1)]),Object(a["createElementVNode"])("div",M,[Object(a["withDirectives"])(Object(a["createElementVNode"])("input",{type:"text",onFocus:t[1]||(t[1]=t=>e.showDropdown=!0),onBlur:t[2]||(t[2]=t=>e.showDropdown=!1),onInput:t[3]||(t[3]=t=>{e.error=!1,e.reqFields.uuid=!0,e.checkUuid()}),"onUpdate:modelValue":t[4]||(t[4]=t=>e.uuid=t),class:Object(a["normalizeClass"])(["editor-input w-full",{"input-error":e.error||!e.reqFields.uuid}])},null,34),[[a["vModelText"],e.uuid]]),Object(a["withDirectives"])(Object(a["createElementVNode"])("div",I,[Object(a["createElementVNode"])("ul",null,[(Object(a["openBlock"])(!0),Object(a["createElementBlock"])(a["Fragment"],null,Object(a["renderList"])(e.getStorylines,t=>(Object(a["openBlock"])(),Object(a["createElementBlock"])("li",{key:t.uuid,onMousedown:Object(a["withModifiers"])(i=>e.selectUuid(t.uuid),["prevent"]),class:Object(a["normalizeClass"])(["p-2 hover:bg-gray-100 cursor-pointer",t.isUserStoryline?"bg-gray-200":""])},Object(a["toDisplayString"])(t.uuid),43,B))),128))])],512),[[a["vShow"],e.showDropdown]])]),e.warning?(Object(a["openBlock"])(),Object(a["createElementBlock"])("span",D,[F,Object(a["createElementVNode"])("span",P,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[5]||(t[5]=(...t)=>e.generateRemoteConfig&&e.generateRemoteConfig(...t)),class:Object(a["normalizeClass"])(["editor-button bg-black text-white hover:bg-gray-800",{"input-error":e.error}])},Object(a["toDisplayString"])(e.$t("editor.load")),3)):Object(a["createCommentVNode"])("",!0),e.editExisting?(Object(a["openBlock"])(),Object(a["createElementBlock"])("button",{key:2,onClick:t[6]||(t[6]=(...t)=>e.fetchHistory&&e.fetchHistory(...t)),class:Object(a["normalizeClass"])(["bg-black editor-button text-white hover:bg-gray-800",{"input-error":e.error}])},Object(a["toDisplayString"])(e.$t("editor.viewHistory")),3)):Object(a["createCommentVNode"])("",!0),"loading"===e.loadStatus?(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",R,[Object(a["createVNode"])(n,{size:"24px",color:"#009CD1",class:"mx-2 my-auto"})])):Object(a["createCommentVNode"])("",!0),e.editExisting?(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",A,[Object(a["createElementVNode"])("ul",null,[(Object(a["openBlock"])(!0),Object(a["createElementBlock"])(a["Fragment"],null,Object(a["renderList"])(e.storylineHistory,t=>(Object(a["openBlock"])(),Object(a["createElementBlock"])("li",{key:t.id,onClick:i=>e.selectHistory(t),class:Object(a["normalizeClass"])(["p-2 cursor-pointer",{"bg-blue-200":e.selectedHistory&&t.id===e.selectedHistory.id}])},Object(a["toDisplayString"])(e.formatDate(t.created)),11,U))),128))]),Object(a["createElementVNode"])("button",{disabled:!e.selectedHistory||e.selectedHistory.storylineUUID!==e.uuid,class:"editor-button bg-black text-white hover:bg-gray-800",onClick:t[7]||(t[7]=t=>e.loadHistory())},Object(a["toDisplayString"])(e.$t("editor.loadPrevious")),9,z)])):Object(a["createCommentVNode"])("",!0)]),W,Object(a["createElementVNode"])("div",H,[Object(a["createElementVNode"])("h3",q,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",X,[e.editExisting?(Object(a["openBlock"])(),Object(a["createElementBlock"])("button",{key:0,onClick:t[8]||(t[8]=t=>e.saveMetadata(!0)),class:"editor-button"},Object(a["toDisplayString"])(e.$t("editor.saveChanges")),1)):Object(a["createCommentVNode"])("",!0),Object(a["createElementVNode"])("div",J,[Object(a["createVNode"])(c,{to:{name:"home"},target:""},{default:Object(a["withCtx"])(()=>[Object(a["createElementVNode"])("button",G,Object(a["toDisplayString"])(e.$t("editor.back")),1)]),_:1}),Object(a["createElementVNode"])("button",{onClick:t[9]||(t[9]=t=>e.warning?e.$vfm.open("confirm-uuid-overwrite"):e.continueToEditor()),class:"editor-button bg-black text-white"},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[10]||(t[10]=t=>e.continueToEditor())},null,8,["message"])])])],64)),e.loadEditor&&"loaded"===e.loadStatus?(Object(a["openBlock"])(),Object(a["createBlock"])(b,{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",{class:"editor-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,Z),Object(a["createVNode"])(d,{name:"change-lang",message:e.$t("editor.changeLang.modal"),onOk:t[11]||(t[11]=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",Y,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",Q,[Object(a["createElementVNode"])("button",{class:"editor-button bg-black text-white hover:bg-gray-800",onClick:t[12]||(t[12]=t=>e.saveMetadata(!1))}," Done ")])]),_:1})]),_:1},8,["configs","configFileStructure","sourceCounts","metadata","slides","configLang","saving","unsavedChanges","onSaveChanges","onSaveStatus","onRefreshConfig"])):Object(a["createCommentVNode"])("",!0)])}var ee=i("ade3"),te=(i("14d9"),i("88a7"),i("271a"),i("5494"),i("0a4f")),ie=i("2926"),ae=i("327a");const le=e=>(Object(a["pushScopeId"])("data-v-d63c3352"),e=e(),Object(a["popScopeId"])(),e),oe={class:"sticky top-20 h-auto self-start flex-grow m-5"},re={key:0},ne={class:"flex"},se={class:"flex flex-col w-full"},ce=le(()=>Object(a["createElementVNode"])("label",{class:"editor-label"},"Slide title:",-1)),de={class:"flex"},ue=le(()=>Object(a["createElementVNode"])("span",{class:"ml-auto"},null,-1)),be=["disabled"],pe=["disabled"],me={class:"flex mt-3"},he={class:"mx-2 font-bold"},ge=["disabled"],fe={class:"mx-2 font-bold"},ve=["disabled"],Oe={class:"mx-2 font-bold"},je=["disabled"],ye=le(()=>Object(a["createElementVNode"])("br",null,null,-1)),Ve={key:0,class:"flex border-b border-black"},Se=Object(a["createStaticVNode"])('',2),Ce={class:"align-middle inline-block pl-1"},xe=Object(a["createStaticVNode"])('',2),Ee={class:"align-middle inline-block pl-1"},we={class:"align-middle inline-block pl-1"},ke={key:1,class:"border-b border-black"},Ne=Object(a["createStaticVNode"])('',2),Te={class:"align-middle inline-block pl-1"},_e={class:"align-middle inline-block pl-1"},$e={class:"flex mt-4"},Le={class:"font-bold text-xl"},Me=le(()=>Object(a["createElementVNode"])("span",{class:"ml-auto flex-grow"},null,-1)),Ie={key:0,class:"flex flex-col mr-8"},Be={class:"editor-label text-left text-lg"},De=["value"],Fe=["value"],Pe={key:1,class:"flex h-full mt-4 justify-center text-gray-600 text-xl"};function Re(e,t,i,l,o,r){const n=Object(a["resolveComponent"])("custom-editor"),s=Object(a["resolveComponent"])("confirmation-modal");return Object(a["openBlock"])(),Object(a["createElementBlock"])("div",oe,[e.currentSlide?(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",re,[Object(a["createElementVNode"])("div",ne,[Object(a["createElementVNode"])("div",se,[ce,Object(a["createElementVNode"])("div",de,[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:"editor-input w-2/3"},null,512),[[a["vModelText"],e.currentSlide.title]]),ue,Object(a["createElementVNode"])("button",{onClick:t[1]||(t[1]=Object(a["withModifiers"])(t=>e.selectSlide(e.slideIndex-1),["stop"])),disabled:0===e.slideIndex,class:"editor-button border border-black"},Object(a["toDisplayString"])(e.$t("editor.slides.previousSlide")),9,be),Object(a["createElementVNode"])("button",{onClick:t[2]||(t[2]=Object(a["withModifiers"])(t=>e.selectSlide(e.slideIndex+1),["stop"])),disabled:e.isLast,class:"editor-button border border-black"},Object(a["toDisplayString"])(e.$t("editor.slides.nextSlide")),9,pe)]),Object(a["createElementVNode"])("div",me,[Object(a["createElementVNode"])("span",he,Object(a["toDisplayString"])(e.$t("editor.slides.makeFull")),1),Object(a["withDirectives"])(Object(a["createElementVNode"])("input",{type:"checkbox",class:"editor-input 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,ge),[[a["vModelCheckbox"],e.rightOnly]]),Object(a["createElementVNode"])("span",fe,Object(a["toDisplayString"])(e.$t("editor.slides.centerSlide")),1),Object(a["withDirectives"])(Object(a["createElementVNode"])("input",{type:"checkbox",class:"editor-input rounded-none cursor-pointer w-4 h-4","onUpdate:modelValue":t[5]||(t[5]=t=>e.centerSlide=t),disabled:e.centerPanel,onChange:t[6]||(t[6]=Object(a["withModifiers"])(t=>e.toggleCenterSlide(),["stop"]))},null,40,ve),[[a["vModelCheckbox"],e.centerSlide]]),Object(a["createElementVNode"])("span",Oe,Object(a["toDisplayString"])(e.$t("editor.slides.centerPanel")),1),Object(a["withDirectives"])(Object(a["createElementVNode"])("input",{type:"checkbox",class:"editor-input rounded-none cursor-pointer w-4 h-4","onUpdate:modelValue":t[7]||(t[7]=t=>e.centerPanel=t),disabled:e.centerSlide,onChange:t[8]||(t[8]=Object(a["withModifiers"])(t=>e.toggleCenterPanel(),["stop"]))},null,40,je),[[a["vModelCheckbox"],e.centerPanel]])])])]),ye,2===e.currentSlide.panel.length?(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",Ve,[Object(a["createElementVNode"])("button",{onClick:t[9]||(t[9]=()=>{e.panelIndex=0,e.advancedEditorView=!1,e.saveChanges()}),class:Object(a["normalizeClass"])(["editor-button border-t border-l border-r",0!=e.panelIndex||e.advancedEditorView?"border-white":"border-black"])},[Se,Object(a["createElementVNode"])("span",Ce,Object(a["toDisplayString"])(e.$t("editor.slides.leftPanel")),1)],2),Object(a["createElementVNode"])("button",{onClick:t[10]||(t[10]=()=>{e.panelIndex=1,e.advancedEditorView=!1,e.saveChanges()}),class:Object(a["normalizeClass"])(["editor-button border-t border-l border-r",1!=e.panelIndex||e.advancedEditorView?"border-white":"border-black"])},[xe,Object(a["createElementVNode"])("span",Ee,Object(a["toDisplayString"])(e.$t("editor.slides.rightPanel")),1)],2),Object(a["createElementVNode"])("button",{onClick:t[11]||(t[11]=()=>{e.advancedEditorView=!0,e.saveChanges()}),class:Object(a["normalizeClass"])(["editor-button border-t border-l border-r",e.advancedEditorView?"border-black":"border-white"])},[Object(a["createElementVNode"])("span",we,Object(a["toDisplayString"])(e.$t("editor.slides.advanced")),1)],2)])):(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",ke,[Object(a["createElementVNode"])("button",{onClick:t[12]||(t[12]=()=>{e.advancedEditorView=!1,e.saveChanges()}),class:Object(a["normalizeClass"])(["editor-button border-t border-l border-r",e.advancedEditorView?"border-white":"border-black"])},[Ne,Object(a["createElementVNode"])("span",Te,Object(a["toDisplayString"])(e.$t("editor.slides.fullscreenPanel")),1)],2),Object(a["createElementVNode"])("button",{onClick:t[13]||(t[13]=()=>{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",_e,Object(a["toDisplayString"])(e.$t("editor.slides.advanced")),1)],2)])),Object(a["createElementVNode"])("div",null,[Object(a["createElementVNode"])("div",$e,[Object(a["createElementVNode"])("span",Le,Object(a["toDisplayString"])(e.$t("editor.slides.content"))+":",1),Me,!e.advancedEditorView||e.rightOnly?(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",Ie,[Object(a["createElementVNode"])("label",Be,Object(a["toDisplayString"])(e.$t("editor.slides.contentType"))+":",1),Object(a["createElementVNode"])("select",{ref:"typeSelector",onInput:t[14]||(t[14]=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,Fe))),128))],40,De)])):Object(a["createCommentVNode"])("",!0)]),e.advancedEditorView?(Object(a["openBlock"])(),Object(a["createBlock"])(n,{key:0,ref:"editor",config:e.currentSlide,lang:e.lang,slideIndex:e.slideIndex,onSlideEdit:t[15]||(t[15]=t=>e.$emit("slide-edit")),onConfigEdited:t[16]||(t[16]=(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,centerSlide:e.centerSlide,dynamicSelected:e.dynamicSelected,onSlideEdit:t[17]||(t[17]=t=>e.$emit("slide-edit"))},null,40,["panel","configFileStructure","lang","uid","sourceCounts","centerSlide","dynamicSelected"]))])])):(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",Pe,[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[18]||(t[18]=t=>{e.changePanelType(e.determineEditorType(e.currentSlide.panel[e.panelIndex]),e.newType),e.toggleCenterPanel(),e.toggleCenterSlide()}),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[19]||(t[19]=t=>e.toggleRightOnly()),onCancel:t[20]||(t[20]=t=>e.rightOnly=!e.rightOnly)},null,8,["name","message"])])}var Ae;(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"})(Ae||(Ae={}));const Ue={class:"block"},ze={class:"flex items-center"},We={class:"font-bold px-4"},He=["disabled"],qe={class:"flex items-center"},Xe=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),Je={class:"px-2"},Ge=Object(a["createElementVNode"])("hr",{class:"border-solid border-t-2 border-gray-300 my-2"},null,-1),Ze={key:0,class:"m-4"},Ye={class:"italic text-gray-400"},Qe={class:"flex flex-wrap list-none"};function Ke(e,t,i,l,o,r){const n=Object(a["resolveComponent"])("ChartPreview"),s=Object(a["resolveComponent"])("draggable"),c=Object(a["resolveComponent"])("confirmation-modal");return Object(a["openBlock"])(),Object(a["createElementBlock"])("div",Ue,[Object(a["createElementVNode"])("div",ze,[Object(a["createElementVNode"])("span",We,Object(a["toDisplayString"])(e.$t("editor.chart.label.info",{num:e.chartConfigs.length})),1),Object(a["createElementVNode"])("button",{class:"editor-button 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",qe,[Xe,Object(a["createElementVNode"])("span",Je,Object(a["toDisplayString"])(e.$t("editor.chart.label.create")),1)])],8,He)]),Ge,0===e.chartConfigs.length?(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",Ze,[Object(a["createElementVNode"])("span",Ye,Object(a["toDisplayString"])(e.$t("editor.chart.label.empty")),1)])):Object(a["createCommentVNode"])("",!0),Object(a["withDirectives"])(Object(a["createElementVNode"])("ul",Qe,[Object(a["createVNode"])(s,{modelValue:e.chartConfigs,"onUpdate:modelValue":t[1]||(t[1]=t=>e.chartConfigs=t),handle:".handle",onUpdate:e.onChartsEdited,class:"w-full flex flex-wrap list-none","item-key":"name"},{item:Object(a["withCtx"])(({element:t,index:i})=>[(Object(a["openBlock"])(),Object(a["createBlock"])(n,{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 et=e=>(Object(a["pushScopeId"])("data-v-d8aa8408"),e=e(),Object(a["popScopeId"])(),e),tt={class:"chart-item items-center mt-8 mx-5 overflow-hidden"},it={class:"relative border-solid border-2 items-center justify-center text-center w-full"},at=["content"],lt=et(()=>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)),ot=[lt],rt=et(()=>Object(a["createElementVNode"])("button",{class:"editor-button 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)),nt={class:"flex mt-4 items-center"},st={class:"editor-label name-label font-bold flex-2"},ct={class:"font-normal"},dt=["id"],ut={class:"flex items-center"},bt=et(()=>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)),pt={class:"px-2"};function mt(e,t,i,l,o,r){const n=Object(a["resolveComponent"])("storylines-chart"),s=Object(a["resolveDirective"])("tippy");return Object(a["openBlock"])(),Object(a["createElementBlock"])("li",tt,[Object(a["createElementVNode"])("div",it,[Object(a["withDirectives"])((Object(a["openBlock"])(),Object(a["createElementBlock"])("button",{class:"editor-button 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")},ot,8,at)),[[s,{placement:"top",hideOnClick:!1,animateFill:!0}]]),rt,e.loading?Object(a["createCommentVNode"])("",!0):(Object(a["openBlock"])(),Object(a["createBlock"])(n,{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",nt,[Object(a["createElementVNode"])("label",st,[Object(a["createTextVNode"])(Object(a["toDisplayString"])(e.$t("editor.chart.label.name"))+": ",1),Object(a["createElementVNode"])("span",ct,Object(a["toDisplayString"])(e.chartName),1)]),Object(a["createElementVNode"])("button",{class:"editor-button chart-btn bg-gray-100 cursor-pointer hover:bg-gray-200",id:`edit-${e.chart.name}-btn`},[Object(a["createElementVNode"])("div",ut,[bt,Object(a["createElementVNode"])("span",pt,Object(a["toDisplayString"])(e.$t("editor.chart.label.edit")),1)])],8,dt)])])}class ht extends n["c"]{constructor(...e){super(...e),Object(ee["a"])(this,"chart",void 0),Object(ee["a"])(this,"configFileStructure",void 0),Object(ee["a"])(this,"sourceCounts",void 0),Object(ee["a"])(this,"lang",void 0),Object(ee["a"])(this,"loading",!0),Object(ee["a"])(this,"chartIdx",0),Object(ee["a"])(this,"chartConfig",{}),Object(ee["a"])(this,"chartName",""),Object(ee["a"])(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(r["a"])([Object(n["b"])()],ht.prototype,"chart",void 0),Object(r["a"])([Object(n["b"])()],ht.prototype,"configFileStructure",void 0),Object(r["a"])([Object(n["b"])()],ht.prototype,"sourceCounts",void 0),Object(r["a"])([Object(n["b"])()],ht.prototype,"lang",void 0);i("2208");const gt=b()(ht,[["render",mt],["__scopeId","data-v-d8aa8408"]]);var ft=gt;const vt={slot:"header",class:"text-lg font-bold"},Ot={class:"w-full flex justify-end"};function jt(e,t,i,l,o,r){const n=Object(a["resolveComponent"])("vue-final-modal");return Object(a["openBlock"])(),Object(a["createBlock"])(n,{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",vt,Object(a["toDisplayString"])(e.message),1),Object(a["createElementVNode"])("div",Ot,[Object(a["createElementVNode"])("button",{class:"editor-button 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:"editor-button 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 yt=class extends n["c"]{constructor(...e){super(...e),Object(ee["a"])(this,"message",void 0),Object(ee["a"])(this,"name",void 0)}onOk(){this.$emit("ok"),this.$vfm.close(this.name)}onCancel(){this.$emit("Cancel"),this.$vfm.close(this.name)}};Object(r["a"])([Object(n["b"])()],yt.prototype,"message",void 0),Object(r["a"])([Object(n["b"])()],yt.prototype,"name",void 0),yt=Object(r["a"])([Object(n["a"])({components:{"vue-final-modal":ie["a"]}})],yt);var Vt=yt;i("72c3");const St=b()(Vt,[["render",jt],["__scopeId","data-v-468630e0"]]);var Ct=St,xt=i("b76a"),Et=i.n(xt);let wt=class extends n["c"]{constructor(...e){super(...e),Object(ee["a"])(this,"panel",void 0),Object(ee["a"])(this,"configFileStructure",void 0),Object(ee["a"])(this,"lang",void 0),Object(ee["a"])(this,"sourceCounts",void 0),Object(ee["a"])(this,"allowMany",void 0),Object(ee["a"])(this,"centerSlide",void 0),Object(ee["a"])(this,"dynamicSelected",void 0),Object(ee["a"])(this,"edited",!1),Object(ee["a"])(this,"chartConfigs",[]),Object(ee["a"])(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===Ae.Slideshow?this.panel.items:this.panel.src?[this.panel]:[];if(this.centerSlide&&this.dynamicSelected)for(const t in e)e[t].customStyles+="text-align: left;";else if(!this.centerSlide&&this.dynamicSelected)for(const t in e)e[t].customStyles=(e[t].customStyles||"").replace("text-align: left;","");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=Ae.Chart,this.panel.src="";else if(1===this.chartConfigs.length){this.panel.type=Ae.Chart;const e=this.chartConfigs[0];Object.keys(e).forEach(t=>{this.panel[t]=e[t]})}else this.panel.type=Ae.Slideshow,this.panel.items=this.chartConfigs.map(e=>({...e,type:Ae.Chart}));this.edited=!1}onChartsEdited(){this.edited=!0,this.$emit("slide-edit")}};Object(r["a"])([Object(n["b"])()],wt.prototype,"panel",void 0),Object(r["a"])([Object(n["b"])()],wt.prototype,"configFileStructure",void 0),Object(r["a"])([Object(n["b"])()],wt.prototype,"lang",void 0),Object(r["a"])([Object(n["b"])()],wt.prototype,"sourceCounts",void 0),Object(r["a"])([Object(n["b"])({default:!0})],wt.prototype,"allowMany",void 0),Object(r["a"])([Object(n["b"])({default:!1})],wt.prototype,"centerSlide",void 0),Object(r["a"])([Object(n["b"])({default:!1})],wt.prototype,"dynamicSelected",void 0),wt=Object(r["a"])([Object(n["a"])({components:{ChartPreview:ft,"confirmation-modal":Ct,draggable:Et.a}})],wt);var kt=wt;i("8846");const Nt=b()(kt,[["render",Ke]]);var Tt=Nt;const _t={class:"mt-4"};function $t(e,t,i,l,o,r){const n=Object(a["resolveComponent"])("json-editor");return Object(a["openBlock"])(),Object(a["createElementBlock"])("div",_t,[Object(a["createVNode"])(n,{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:e.onJsonSave},null,8,["modelValue","lang","onJsonSave"])])}var Lt=i("c45b");let Mt=class extends n["c"]{constructor(...e){super(...e),Object(ee["a"])(this,"config",void 0),Object(ee["a"])(this,"lang",void 0),Object(ee["a"])(this,"slideIndex",void 0),Object(ee["a"])(this,"schemaUrl","./StorylinesSlideSchema.json"),Object(ee["a"])(this,"updatedConfig",""),Object(ee["a"])(this,"edited",!1),Object(ee["a"])(this,"jsonValidator",i("a41b").Validator),Object(ee["a"])(this,"validator",new this.jsonValidator),Object(ee["a"])(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(r["a"])([Object(n["b"])()],Mt.prototype,"config",void 0),Object(r["a"])([Object(n["b"])()],Mt.prototype,"lang",void 0),Object(r["a"])([Object(n["b"])()],Mt.prototype,"slideIndex",void 0),Mt=Object(r["a"])([Object(n["a"])({components:{"json-editor":Lt["a"]}})],Mt);var It=Mt;i("6511");const Bt=b()(It,[["render",$t],["__scopeId","data-v-44e16318"]]);var Dt=Bt;const Ft=e=>(Object(a["pushScopeId"])("data-v-4ee6d780"),e=e(),Object(a["popScopeId"])(),e),Pt={class:"block"},Rt={class:"editor-label flex drag-label cursor-pointer"},At=Ft(()=>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)),Ut={class:"align-middle inline-block"},zt={class:"text-blue-400 font-bold"},Wt=["multiple"],Ht={key:1,class:"flex justify-center"},qt={class:"flex mt-4 items-center w-full text-left"},Xt={class:"editor-label text-label"},Jt=["onUpdate:modelValue"],Gt={class:"flex mt-4 items-center w-full text-left"},Zt={class:"editor-label text-label"},Yt=["onUpdate:modelValue"],Qt={class:"flex items-center w-full text-left"},Kt={class:"editor-label text-label"};function ei(e,t,i,l,o,r){const n=Object(a["resolveComponent"])("ImagePreview"),s=Object(a["resolveComponent"])("draggable");return Object(a["openBlock"])(),Object(a["createElementBlock"])("div",Pt,[e.allowMany||!e.allowMany&&0===e.imagePreviews.length?(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",{key:0,class:Object(a["normalizeClass"])(["upload-image flex items-center justify-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",Rt,[At,Object(a["createElementVNode"])("span",Ut,[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",zt,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,Wt)])])],34)):Object(a["createCommentVNode"])("",!0),e.allowMany||!e.allowMany&&0===e.imagePreviews.length?Object(a["withDirectives"])((Object(a["openBlock"])(),Object(a["createElementBlock"])("span",Ht,[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"])(n,{key:`${i.id}-${l}`,imageFile:i,onDelete:e.deleteImage},{default:Object(a["withCtx"])(()=>[Object(a["createElementVNode"])("div",qt,[Object(a["createElementVNode"])("label",Xt,Object(a["toDisplayString"])(e.$t("editor.image.altTag"))+":",1),Object(a["withDirectives"])(Object(a["createElementVNode"])("input",{class:"editor-input w-4/5",type:"text","onUpdate:modelValue":e=>i.altText=e,onChange:t[4]||(t[4]=(...t)=>e.onImagesEdited&&e.onImagesEdited(...t))},null,40,Jt),[[a["vModelText"],i.altText]])]),Object(a["createElementVNode"])("div",Gt,[Object(a["createElementVNode"])("label",Zt,Object(a["toDisplayString"])(e.$t("editor.image.label.caption"))+":",1),Object(a["withDirectives"])(Object(a["createElementVNode"])("input",{class:"editor-input w-4/5",type:"text","onUpdate:modelValue":e=>i.caption=e,onChange:t[5]||(t[5]=(...t)=>e.onImagesEdited&&e.onImagesEdited(...t))},null,40,Yt),[[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",Qt,[Object(a["createElementVNode"])("label",Kt,Object(a["toDisplayString"])(e.$t("editor.image.slideshowCaption"))+":",1),Object(a["withDirectives"])(Object(a["createElementVNode"])("input",{class:"editor-input 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 ti=e=>(Object(a["pushScopeId"])("data-v-1c58f06c"),e=e(),Object(a["popScopeId"])(),e),ii={class:"image-item items-center my-8 mx-4 overflow-hidden"},ai={class:"relative items-center justify-center text-center w-full grabbable"},li=["content"],oi=ti(()=>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)),ri=[oi],ni={class:"flex-grow image-container"},si=["title","src","alt"];function ci(e,t,i,l,o,r){const n=Object(a["resolveDirective"])("tippy");return Object(a["openBlock"])(),Object(a["createElementBlock"])("li",ii,[Object(a["createElementVNode"])("div",ai,[Object(a["withDirectives"])((Object(a["openBlock"])(),Object(a["createElementBlock"])("button",{class:"editor-button 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")},ri,8,li)),[[n,{placement:"top",hideOnClick:!1,animateFill:!0}]]),Object(a["createElementVNode"])("div",ni,[Object(a["createElementVNode"])("img",{class:"image-file object-cover",title:e.imageFile.id,src:e.imageFile.src,alt:e.imageFile.altText},null,8,si)])]),Object(a["renderSlot"])(e.$slots,"default",{},void 0,!0)])}class di extends n["c"]{constructor(...e){super(...e),Object(ee["a"])(this,"imageFile",void 0)}}Object(r["a"])([Object(n["b"])()],di.prototype,"imageFile",void 0);i("eae8");const ui=b()(di,[["render",ci],["__scopeId","data-v-1c58f06c"]]);var bi=ui;let pi=class extends n["c"]{constructor(...e){super(...e),Object(ee["a"])(this,"panel",void 0),Object(ee["a"])(this,"configFileStructure",void 0),Object(ee["a"])(this,"lang",void 0),Object(ee["a"])(this,"sourceCounts",void 0),Object(ee["a"])(this,"allowMany",void 0),Object(ee["a"])(this,"centerSlide",void 0),Object(ee["a"])(this,"dynamicSelected",void 0),Object(ee["a"])(this,"dragging",!1),Object(ee["a"])(this,"edited",!1),Object(ee["a"])(this,"imagePreviewsLoading",!1),Object(ee["a"])(this,"imagePreviewPromises",[]),Object(ee["a"])(this,"imagePreviews",[]),Object(ee["a"])(this,"slideshowCaption","")}get isDragging(){return this.dragging}mounted(){const e=this.panel.type===Ae.Slideshow?this.panel.items:this.panel.src?[this.panel]:[];if(this.centerSlide&&this.dynamicSelected)for(const t in e)e[t].customStyles+="text-align: left;";else if(!this.centerSlide&&this.dynamicSelected)for(const t in e)e[t].customStyles=(e[t].customStyles||"").replace("text-align: left;","");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=Ae.Image,this.panel.src="";else if(1===this.imagePreviews.length){this.panel.type=Ae.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=Ae.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:Ae.Image}))}this.edited=!1}onImagesEdited(){this.edited=!0,this.$emit("slide-edit")}};Object(r["a"])([Object(n["b"])()],pi.prototype,"panel",void 0),Object(r["a"])([Object(n["b"])()],pi.prototype,"configFileStructure",void 0),Object(r["a"])([Object(n["b"])()],pi.prototype,"lang",void 0),Object(r["a"])([Object(n["b"])()],pi.prototype,"sourceCounts",void 0),Object(r["a"])([Object(n["b"])({default:!0})],pi.prototype,"allowMany",void 0),Object(r["a"])([Object(n["b"])({default:!1})],pi.prototype,"centerSlide",void 0),Object(r["a"])([Object(n["b"])({default:!1})],pi.prototype,"dynamicSelected",void 0),pi=Object(r["a"])([Object(n["a"])({components:{ImagePreview:bi,draggable:Et.a}})],pi);var mi=pi;i("4397");const hi=b()(mi,[["render",ei],["__scopeId","data-v-4ee6d780"]]);var gi=hi;const fi={class:"flex flex-col mt-4"},vi={class:"editor-label text-left"},Oi={class:"editor-label text-left mt-2"};function ji(e,t,i,l,o,r){const n=Object(a["resolveComponent"])("v-md-editor");return Object(a["openBlock"])(),Object(a["createElementBlock"])("div",fi,[Object(a["createElementVNode"])("label",vi,Object(a["toDisplayString"])(e.$t("editor.slides.panel.title"))+":",1),Object(a["withDirectives"])(Object(a["createElementVNode"])("input",{class:"editor-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",Oi,Object(a["toDisplayString"])(e.$t("editor.slides.panel.body"))+":",1),Object(a["createVNode"])(n,{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 yi extends n["c"]{constructor(...e){super(...e),Object(ee["a"])(this,"panel",void 0),Object(ee["a"])(this,"centerSlide",void 0),Object(ee["a"])(this,"dynamicSelected",void 0),Object(ee["a"])(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}})}}]}})}mounted(){this.centerSlide&&this.dynamicSelected?this.panel.customStyles+="text-align: left !important;":!this.centerSlide&&this.dynamicSelected&&(this.panel.customStyles=(this.panel.customStyles||"").replace("text-align: left !important;",""))}}Object(r["a"])([Object(n["b"])()],yi.prototype,"panel",void 0),Object(r["a"])([Object(n["b"])({default:!1})],yi.prototype,"centerSlide",void 0),Object(r["a"])([Object(n["b"])({default:!1})],yi.prototype,"dynamicSelected",void 0);i("9f5c");const Vi=b()(yi,[["render",ji],["__scopeId","data-v-37b76b8f"]]);var Si=Vi;const Ci=e=>(Object(a["pushScopeId"])("data-v-62693dea"),e=e(),Object(a["popScopeId"])(),e),xi={class:"flex flex-col"},Ei={class:"editor-label text-left"},wi={class:"editor-label mt-6"},ki=Ci(()=>Object(a["createElementVNode"])("span",{class:"mx-4"},null,-1)),Ni=Ci(()=>Object(a["createElementVNode"])("br",null,null,-1)),Ti={key:1,class:"mb-4"},_i={class:"ramp-editor mt-5",ref:"editor",style:{width:"70vw",height:"80vh"}},$i={slot:"header",class:"text-lg font-bold"},Li={class:"w-full flex justify-end"},Mi=["disabled"];function Ii(e,t,i,l,o,r){const n=Object(a["resolveComponent"])("time-slider-editor"),s=Object(a["resolveComponent"])("vue-final-modal");return Object(a["openBlock"])(),Object(a["createElementBlock"])("div",xi,[Object(a["createElementVNode"])("label",Ei,Object(a["toDisplayString"])(e.$t("editor.map.title"))+":",1),Object(a["withDirectives"])(Object(a["createElementVNode"])("input",{class:"editor-input",type:"text","onUpdate:modelValue":t[0]||(t[0]=t=>e.panel.title=t)},null,512),[[a["vModelText"],e.panel.title]]),Object(a["createElementVNode"])("div",null,[Object(a["createElementVNode"])("label",wi,Object(a["toDisplayString"])(e.$t("editor.map.timeslider.enable")),1),Object(a["withDirectives"])(Object(a["createElementVNode"])("input",{class:"editor-input",type:"checkbox",onChange:t[1]||(t[1]=(...t)=>e.saveTimeSlider&&e.saveTimeSlider(...t)),"onUpdate:modelValue":t[2]||(t[2]=t=>e.usingTimeSlider=t)},null,544),[[a["vModelCheckbox"],e.usingTimeSlider]]),ki,e.usingTimeSlider?(Object(a["openBlock"])(),Object(a["createElementBlock"])("button",{key:0,onClick:t[3]||(t[3]=t=>e.$vfm.open("time-slider-edit-modal")),class:"editor-button bg-black text-white hover:bg-gray-800 mt-3"},Object(a["toDisplayString"])(e.$t("editor.map.timeslider.edit")),1)):Object(a["createCommentVNode"])("",!0),Ni,e.usingTimeSlider?(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",Ti)):Object(a["createCommentVNode"])("",!0),Object(a["createElementVNode"])("div",_i,null,512)]),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",$i,Object(a["toDisplayString"])(e.$t("editor.map.timeslider.edit")),1),Object(a["createVNode"])(n,{config:e.timeSliderConf,error:e.timeSliderError,onTimeSliderChanged:e.onTimeSliderInput},null,8,["config","error","onTimeSliderChanged"]),Object(a["createElementVNode"])("div",Li,[Object(a["createElementVNode"])("button",{class:Object(a["normalizeClass"])(["editor-button",e.timeSliderError?"":"bg-black text-white hover:bg-gray-800"]),disabled:e.timeSliderError,onClick:t[4]||(t[4]=(...t)=>e.saveTimeSlider&&e.saveTimeSlider(...t))}," Done ",10,Mi)])]),_:1})])}var Bi=i("a0ea");const Di=e=>(Object(a["pushScopeId"])("data-v-98eacf1c"),e=e(),Object(a["popScopeId"])(),e),Fi={class:"px-5"},Pi={class:"flex items-center"},Ri={class:"editor-label"},Ai=["value"],Ui={class:"mx-3"},zi=["value"],Wi=Di(()=>Object(a["createElementVNode"])("br",null,null,-1)),Hi={class:"flex items-center"},qi={class:"editor-label"},Xi=["value"],Ji={class:"mx-3"},Gi=["value"],Zi=Di(()=>Object(a["createElementVNode"])("br",null,null,-1)),Yi={key:0,class:"border-black border-2 p-3 w-2/3"},Qi={class:"editor-label w-full"},Ki=Di(()=>Object(a["createElementVNode"])("br",null,null,-1)),ea={class:"list-disc my-2 ml-8"},ta={key:1},ia={class:"editor-label"},aa=["value"],la=Di(()=>Object(a["createElementVNode"])("br",null,null,-1)),oa={class:"editor-label"},ra=Di(()=>Object(a["createElementVNode"])("br",null,null,-1)),na=["value"],sa=Di(()=>Object(a["createElementVNode"])("br",null,null,-1)),ca=Di(()=>Object(a["createElementVNode"])("br",null,null,-1));function da(e,t,i,l,o,r){return Object(a["openBlock"])(),Object(a["createElementBlock"])("div",Fi,[Object(a["createElementVNode"])("div",Pi,[Object(a["createElementVNode"])("label",Ri,Object(a["toDisplayString"])(e.$t("editor.map.timeslider.range")),1),Object(a["createElementVNode"])("input",{class:"editor-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,Ai),Object(a["createElementVNode"])("span",Ui,Object(a["toDisplayString"])(e.$t("editor.map.timeslider.to")),1),Object(a["createElementVNode"])("input",{class:"editor-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,zi)]),Wi,Object(a["createElementVNode"])("div",Hi,[Object(a["createElementVNode"])("label",qi,Object(a["toDisplayString"])(e.$t("editor.map.timeslider.start")),1),Object(a["createElementVNode"])("input",{class:"editor-input 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,Xi),Object(a["createElementVNode"])("span",Ji,Object(a["toDisplayString"])(e.$t("editor.map.timeslider.to")),1),Object(a["createElementVNode"])("input",{class:"editor-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,Gi)]),Zi,e.error?(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",Yi,[Object(a["createElementVNode"])("label",Qi,Object(a["toDisplayString"])(e.$t("editor.map.timeslider.warning")),1),Ki,Object(a["createElementVNode"])("ul",ea,[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",ta)):Object(a["createCommentVNode"])("",!0),Object(a["createElementVNode"])("div",null,[Object(a["createElementVNode"])("label",ia,Object(a["toDisplayString"])(e.$t("editor.map.timeslider.attribute")),1),Object(a["createElementVNode"])("input",{class:"editor-input",value:e.config.attribute,onInput:t[4]||(t[4]=t=>e.$emit("time-slider-changed","attribute",void 0,t.target.value))},null,40,aa)]),la,Object(a["createElementVNode"])("div",null,[Object(a["createElementVNode"])("label",oa,Object(a["toDisplayString"])(e.$t("editor.map.timeslider.layers")),1),ra,Object(a["createElementVNode"])("input",{class:"editor-input 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,na)]),sa,ca])}class ua extends n["c"]{constructor(...e){super(...e),Object(ee["a"])(this,"config",void 0),Object(ee["a"])(this,"error",void 0)}}Object(r["a"])([Object(n["b"])()],ua.prototype,"config",void 0),Object(r["a"])([Object(n["b"])()],ua.prototype,"error",void 0);i("b949");const ba=b()(ua,[["render",da],["__scopeId","data-v-98eacf1c"]]);var pa=ba,ma=i("ce19");i("fb28");let ha=class extends n["c"]{constructor(...e){super(...e),Object(ee["a"])(this,"panel",void 0),Object(ee["a"])(this,"configFileStructure",void 0),Object(ee["a"])(this,"lang",void 0),Object(ee["a"])(this,"sourceCounts",void 0),Object(ee["a"])(this,"centerSlide",void 0),Object(ee["a"])(this,"dynamicSelected",void 0),Object(ee["a"])(this,"rampEditorApi",""),Object(ee["a"])(this,"newFileName",""),Object(ee["a"])(this,"usingTimeSlider",!1),Object(ee["a"])(this,"timeSliderError",!1),Object(ee["a"])(this,"timeSliderConf",{range:[],start:[],attribute:""}),Object(ee["a"])(this,"status","default"),Object(ee["a"])(this,"strippedFileName","")}mounted(){var e,t,i,a,l,o;this.usingTimeSlider=!!this.panel.timeSlider,this.status=""!==this.panel.config?"default":"creating",this.strippedFileName=""!==this.panel.config?this.panel.config.split("/")[2].split(".")[0]:"",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:""})),window.addEventListener("ramp4-config-edited",this.onConfigEdit),this.validateTimeSlider(),"creating"===this.status&&this.createNewConfig(),this.centerSlide&&this.dynamicSelected?this.panel.customStyles+="text-align: left !important;":!this.centerSlide&&this.dynamicSelected&&(this.panel.customStyles=(this.panel.customStyles||"").replace("text-align: left !important;","")),this.openEditor()}beforeDestroy(){window.removeEventListener("ramp4-config-edited",this.onConfigEdit)}createNewConfig(){this.panel.config=`${this.configFileStructure.uuid}/ramp-config/${this.configFileStructure.uuid}-map-${this.getNumberOfMaps()+1}.json`,this.strippedFileName=this.panel.config.split("/")[2].split(".")[0],this.sourceCounts[this.panel.config]?this.sourceCounts[this.panel.config]+=1:this.sourceCounts[this.panel.config]=1,this.configFileStructure.rampConfig.file(this.strippedFileName+".json",JSON.stringify(Bi,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=>{const t=JSON.parse(e);this.rampEditorApi=Object(ma["a"])(this.$refs.editor,t)}):fetch(this.panel.config).then(e=>{e.json().then(e=>{let t=JSON.stringify(e);const i=JSON.parse(t);this.rampEditorApi=Object(ma["a"])(this.$refs.editor,i)})})}}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")}saveChanges(){this.configFileStructure.rampConfig.file(this.strippedFileName+".json",JSON.stringify(this.rampEditorApi.getConfig(),null,4))}onConfigEdit(){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]{e+=1}),e}};Object(r["a"])([Object(n["b"])()],ha.prototype,"panel",void 0),Object(r["a"])([Object(n["b"])()],ha.prototype,"configFileStructure",void 0),Object(r["a"])([Object(n["b"])()],ha.prototype,"lang",void 0),Object(r["a"])([Object(n["b"])()],ha.prototype,"sourceCounts",void 0),Object(r["a"])([Object(n["b"])({default:!1})],ha.prototype,"centerSlide",void 0),Object(r["a"])([Object(n["b"])({default:!1})],ha.prototype,"dynamicSelected",void 0),ha=Object(r["a"])([Object(n["a"])({components:{"time-slider-editor":pa,"vue-final-modal":ie["a"]}})],ha);var ga=ha;i("c639");const fa=b()(ga,[["render",Ii],["__scopeId","data-v-62693dea"]]);var va=fa;const Oa=e=>(Object(a["pushScopeId"])("data-v-33605cfc"),e=e(),Object(a["popScopeId"])(),e),ja={class:"block"},ya={class:"flex mt-4 items-center w-full text-left"},Va={class:"editor-label text-label"},Sa={class:"flex editor-label drag-label cursor-pointer"},Ca=Oa(()=>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)),xa={class:"align-middle inline-block"},Ea={class:"text-blue-400 font-bold"},wa={class:"flex mt-4 items-center w-full text-left"},ka={class:"editor-label text-label"},Na={key:1,ref:"videoUrl",class:"editor-input w-3/5",type:"search"};function Ta(e,t,i,l,o,r){const n=Object(a["resolveComponent"])("VideoPreview");return Object(a["openBlock"])(),Object(a["createElementBlock"])("div",ja,[Object(a["createElementVNode"])("div",ya,[Object(a["createElementVNode"])("label",Va,Object(a["toDisplayString"])(e.$t("editor.video.title"))+":",1),Object(a["withDirectives"])(Object(a["createElementVNode"])("input",{class:"editor-input 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 flex justify-center 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",Sa,[Ca,Object(a["createElementVNode"])("span",xa,[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",Ea,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",wa,[Object(a["createElementVNode"])("label",ka,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:"editor-input 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",Na,null,512)),Object(a["createElementVNode"])("button",{onClick:t[7]||(t[7]=(...t)=>e.uploadVideoUrl&&e.uploadVideoUrl(...t)),class:"editor-button 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"])(n,{key:""+e.videoPreview.id,file:e.videoPreview,fileType:e.fileType,lang:e.lang,onDelete:e.deleteVideo},null,8,["file","fileType","lang","onDelete"]))],32))])}const _a=e=>(Object(a["pushScopeId"])("data-v-2d1c87e5"),e=e(),Object(a["popScopeId"])(),e),$a={class:"my-8 mx-4 overflow-hidden w-full"},La={class:"relative text-center w-full grabbable"},Ma=["content"],Ia=_a(()=>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)),Ba=[Ia],Da={class:"video-container"},Fa=["src","height","width"],Pa=["title","height","width"],Ra=["type","src"],Aa=["src","srclang","label"];function Ua(e,t,i,l,o,r){const n=Object(a["resolveDirective"])("tippy");return Object(a["openBlock"])(),Object(a["createElementBlock"])("div",$a,[Object(a["createElementVNode"])("div",La,[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")},Ba,8,Ma)),[[n,{placement:"top",hideOnClick:!1,animateFill:!0}]]),Object(a["createElementVNode"])("div",Da,["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,Fa)):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,Ra),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,Aa)):Object(a["createCommentVNode"])("",!0)],8,Pa)):Object(a["createCommentVNode"])("",!0)])]),Object(a["renderSlot"])(e.$slots,"default",{},void 0,!0)])}var za=i("d4cd"),Wa=i.n(za);class Ha extends n["c"]{constructor(...e){super(...e),Object(ee["a"])(this,"file",void 0),Object(ee["a"])(this,"fileType",void 0),Object(ee["a"])(this,"lang",void 0),Object(ee["a"])(this,"md",new Wa.a({html:!0})),Object(ee["a"])(this,"langs",{en:"English",fr:"French"}),Object(ee["a"])(this,"expandTranscript",!1),Object(ee["a"])(this,"rawTranscript",""),Object(ee["a"])(this,"transcriptContent","")}}Object(r["a"])([Object(n["b"])()],Ha.prototype,"file",void 0),Object(r["a"])([Object(n["b"])()],Ha.prototype,"fileType",void 0),Object(r["a"])([Object(n["b"])()],Ha.prototype,"lang",void 0);i("480b");const qa=b()(Ha,[["render",Ua],["__scopeId","data-v-2d1c87e5"]]);var Xa=qa;let Ja=class extends n["c"]{constructor(...e){super(...e),Object(ee["a"])(this,"panel",void 0),Object(ee["a"])(this,"configFileStructure",void 0),Object(ee["a"])(this,"lang",void 0),Object(ee["a"])(this,"sourceCounts",void 0),Object(ee["a"])(this,"centerSlide",void 0),Object(ee["a"])(this,"dynamicSelected",void 0),Object(ee["a"])(this,"dragging",!1),Object(ee["a"])(this,"edited",!1),Object(ee["a"])(this,"fileType",""),Object(ee["a"])(this,"videoPreviewLoading",!1),Object(ee["a"])(this,"videoPreviewPromise",void 0),Object(ee["a"])(this,"videoPreview",{}),Object(ee["a"])(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};this.centerSlide&&this.dynamicSelected?this.panel.customStyles+="text-align: left !important;":!this.centerSlide&&this.dynamicSelected&&(this.panel.customStyles=(this.panel.customStyles||"").replace("text-align: left !important;",""))}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(r["a"])([Object(n["b"])()],Ja.prototype,"panel",void 0),Object(r["a"])([Object(n["b"])()],Ja.prototype,"configFileStructure",void 0),Object(r["a"])([Object(n["b"])()],Ja.prototype,"lang",void 0),Object(r["a"])([Object(n["b"])()],Ja.prototype,"sourceCounts",void 0),Object(r["a"])([Object(n["b"])({default:!1})],Ja.prototype,"centerSlide",void 0),Object(r["a"])([Object(n["b"])({default:!1})],Ja.prototype,"dynamicSelected",void 0),Ja=Object(r["a"])([Object(n["a"])({components:{VideoPreview:Xa,draggable:Et.a}})],Ja);var Ga=Ja;i("5ada");const Za=b()(Ga,[["render",Ta],["__scopeId","data-v-33605cfc"]]);var Ya=Za;const Qa=e=>(Object(a["pushScopeId"])("data-v-7cb258ba"),e=e(),Object(a["popScopeId"])(),e),Ka={class:"block"},el={class:"flex items-center"},tl={class:"font-bold px-4"},il={class:"flex items-center"},al=Qa(()=>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)),ll={class:"px-2"},ol=Qa(()=>Object(a["createElementVNode"])("hr",{class:"border-solid border-t-2 border-gray-300 my-2"},null,-1)),rl={class:"flex items-center w-full text-left"},nl={class:"editor-label text-label"},sl=Qa(()=>Object(a["createElementVNode"])("br",null,null,-1)),cl={class:"w-2/3 mt-5"},dl={class:"table-header"},ul=Qa(()=>Object(a["createElementVNode"])("th",null,null,-1)),bl=["onClick"],pl=["onClick"],ml=Qa(()=>Object(a["createElementVNode"])("br",null,null,-1)),hl=Qa(()=>Object(a["createElementVNode"])("br",null,null,-1)),gl={key:0},fl={class:"text-xl font-bold"},vl=Qa(()=>Object(a["createElementVNode"])("hr",{class:"border-solid border-t-2 border-gray-300 my-2"},null,-1)),Ol={key:0},jl={class:"mb-5 text-left"},yl=["value"],Vl=["value"],Sl={class:"mt-3 w-full flex justify-end"},Cl={key:1},xl={class:"mt-3 w-full flex justify-end"};function El(e,t,i,l,o,r){return Object(a["openBlock"])(),Object(a["createElementBlock"])("div",Ka,[Object(a["createElementVNode"])("div",el,[Object(a["createElementVNode"])("span",tl,Object(a["toDisplayString"])(e.$t("editor.slideshow.label.info",{num:e.panel.items.length})),1),Object(a["createElementVNode"])("button",{class:"editor-button bg-gray-100 cursor-pointer hover:bg-gray-200",onClick:t[0]||(t[0]=t=>e.editingStatus="create")},[Object(a["createElementVNode"])("div",il,[al,Object(a["createElementVNode"])("span",ll,Object(a["toDisplayString"])(e.$t("editor.slideshow.label.create")),1)])])]),ol,Object(a["createElementVNode"])("div",rl,[Object(a["createElementVNode"])("label",nl,Object(a["toDisplayString"])(e.$t("editor.image.slideshowCaption"))+":",1),Object(a["withDirectives"])(Object(a["createElementVNode"])("input",{class:"editor-input w-1/3",type:"text","onUpdate:modelValue":t[1]||(t[1]=t=>e.panel.caption=t)},null,512),[[a["vModelText"],e.panel.caption]]),sl]),Object(a["createElementVNode"])("table",cl,[Object(a["createElementVNode"])("thead",null,[Object(a["createElementVNode"])("tr",dl,[ul,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,bl),Object(a["createTextVNode"])(" | "),Object(a["createElementVNode"])("span",{onClick:t=>e.deleteItem(i),class:"underline"},"Remove",8,pl)])]))),128))])]),ml,hl,"none"!==e.editingStatus?(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",gl,[Object(a["createElementVNode"])("h2",fl,Object(a["toDisplayString"])(e.$t("editor.slideshow.label."+e.editingStatus)),1),vl,Object(a["createElementVNode"])("div",null,["create"===e.editingStatus?(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",Ol,[Object(a["createElementVNode"])("label",jl,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,Vl))),128))],40,yl),"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",Sl,[Object(a["createElementVNode"])("button",{class:"editor-button 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",Cl,[(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",xl,[Object(a["createElementVNode"])("button",{class:"editor-button 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 wl=class extends n["c"]{constructor(...e){super(...e),Object(ee["a"])(this,"panel",void 0),Object(ee["a"])(this,"configFileStructure",void 0),Object(ee["a"])(this,"lang",void 0),Object(ee["a"])(this,"sourceCounts",void 0),Object(ee["a"])(this,"editors",{text:"text-editor",image:"image-editor",chart:"chart-editor",map:"map-editor",video:"video-editor"}),Object(ee["a"])(this,"startingConfig",{text:{type:Ae.Text,title:"",content:""},dynamic:{type:Ae.Dynamic,title:"",titleTag:"",content:"",children:[]},slideshow:{type:Ae.Slideshow,items:[]},chart:{type:Ae.Chart,src:""},image:{type:Ae.Image,src:""},map:{type:Ae.Map,config:"",title:"",scrollguard:!0},video:{type:Ae.Video,title:"",videoType:"",src:""}}),Object(ee["a"])(this,"editingIdx",-1),Object(ee["a"])(this,"newSlideName",""),Object(ee["a"])(this,"newSlideType","text"),Object(ee["a"])(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!==Ae.Text&&void 0!==this.$refs.slideEditor&&"function"===typeof this.$refs.slideEditor.saveChanges&&(this.$refs.slideEditor.saveChanges(),t.type===Ae.Map&&this.$emit("slide-edit")),this.editingStatus="none"}saveChanges(){}};Object(r["a"])([Object(n["b"])()],wl.prototype,"panel",void 0),Object(r["a"])([Object(n["b"])()],wl.prototype,"configFileStructure",void 0),Object(r["a"])([Object(n["b"])()],wl.prototype,"lang",void 0),Object(r["a"])([Object(n["b"])()],wl.prototype,"sourceCounts",void 0),wl=Object(r["a"])([Object(n["a"])({components:{"chart-editor":Tt,"image-editor":gi,"text-editor":Si,"map-editor":va,"video-editor":Ya}})],wl);var kl=wl;i("034f");const Nl=b()(kl,[["render",El],["__scopeId","data-v-7cb258ba"]]);var Tl=Nl;const _l={class:"block py-20 align-middle text-center h-full",style:{margin:"0 auto"}};function $l(e,t,i,l,o,r){const n=Object(a["resolveComponent"])("spinner");return Object(a["openBlock"])(),Object(a["createElementBlock"])("div",_l,[Object(a["createVNode"])(n,{size:"120px",color:"#009cd1",style:{margin:"0 auto"}})])}let Ll=class extends n["c"]{};Ll=Object(r["a"])([Object(n["a"])({components:{spinner:te["a"]}})],Ll);var Ml=Ll;const Il=b()(Ml,[["render",$l]]);var Bl=Il;const Dl={class:"block"},Fl={class:"flex"},Pl={key:0},Rl={key:1},Al={class:"w-2/3 mt-5"},Ul={class:"table-header"},zl=["onClick"],Wl=["onClick"],Hl={class:"table-add-row"},ql={class:"flex flex-col items-center"},Xl={key:0},Jl=["disabled"],Gl={key:0},Zl=Object(a["createElementVNode"])("br",null,null,-1),Yl=Object(a["createElementVNode"])("hr",null,null,-1),Ql=Object(a["createElementVNode"])("br",null,null,-1),Kl={class:"font-bold text-xl"},eo=Object(a["createElementVNode"])("br",null,null,-1);function to(e,t,i,l,o,r){return Object(a["openBlock"])(),Object(a["createElementBlock"])("div",Dl,[Object(a["createElementVNode"])("div",Fl,[Object(a["createElementVNode"])("button",{onClick:t[0]||(t[0]=()=>e.changePanel("text")),class:Object(a["normalizeClass"])(["editor-button 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"])(["editor-button 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",Pl,[(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",Rl,[Object(a["createElementVNode"])("table",Al,[Object(a["createElementVNode"])("tr",Ul,[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,zl),Object(a["createTextVNode"])(" | "),Object(a["createElementVNode"])("span",{onClick:()=>e.removeSlide(t,i)},Object(a["toDisplayString"])(e.$t("editor.remove")),9,Wl)])]))),128)),Object(a["createElementVNode"])("tr",Hl,[Object(a["createElementVNode"])("th",ql,[Object(a["withDirectives"])(Object(a["createElementVNode"])("input",{class:"editor-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",Xl,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",{class:"editor-button",onClick:t[4]||(t[4]=(...t)=>e.createNewSlide&&e.createNewSlide(...t)),disabled:e.idUsed},"Add New",8,Jl)])])]),-1!==e.editingSlide?(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",Gl,[Zl,Yl,Ql,Object(a["createElementVNode"])("span",Kl,Object(a["toDisplayString"])(e.$t("dynamic.panel.editor")),1),eo,(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,centerSlide:e.centerSlide,dynamicSelected:e.dynamicSelected,onSlideEdit:t[5]||(t[5]=t=>e.$emit("slide-edit"))},null,40,["panel","configFileStructure","lang","sourceCounts","centerSlide","dynamicSelected"]))])):Object(a["createCommentVNode"])("",!0)])):Object(a["createCommentVNode"])("",!0)])}var io;let ao=io=class extends n["c"]{constructor(...e){super(...e),Object(ee["a"])(this,"panel",void 0),Object(ee["a"])(this,"configFileStructure",void 0),Object(ee["a"])(this,"lang",void 0),Object(ee["a"])(this,"sourceCounts",void 0),Object(ee["a"])(this,"centerSlide",void 0),Object(ee["a"])(this,"dynamicSelected",void 0),Object(ee["a"])(this,"editors",{text:"text-editor",image:"image-editor",slideshow:"slideshow-editor",chart:"chart-editor",map:"map-editor",video:"video-editor"}),Object(ee["a"])(this,"startingConfig",{text:{type:Ae.Text,title:"",content:""},dynamic:{type:Ae.Dynamic,title:"",titleTag:"",content:"",children:[]},slideshow:{type:Ae.Slideshow,items:[],userCreated:!0},image:{type:Ae.Image,src:""},chart:{type:Ae.Chart,src:""},map:{type:Ae.Map,config:"",title:"",scrollguard:!1},video:{type:Ae.Video,title:"",videoType:"",src:""}}),Object(ee["a"])(this,"editingStatus","text"),Object(ee["a"])(this,"editingSlide",-1),Object(ee["a"])(this,"newSlideName",""),Object(ee["a"])(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!==Ae.Slideshow)return e.type;if(0===e.items.length||e.userCreated)return Ae.Slideshow;const t=e.items.every(e=>e.type===Ae.Chart);if(t)return Ae.Chart;const i=e.items.every(e=>e.type===Ae.Image);return i?Ae.Image:Ae.Slideshow}saveChanges(){void 0!==this.$refs.slide&&"function"===typeof this.$refs.slide.saveChanges&&this.$refs.slide.saveChanges()}};Object(r["a"])([Object(n["b"])()],ao.prototype,"panel",void 0),Object(r["a"])([Object(n["b"])()],ao.prototype,"configFileStructure",void 0),Object(r["a"])([Object(n["b"])()],ao.prototype,"lang",void 0),Object(r["a"])([Object(n["b"])()],ao.prototype,"sourceCounts",void 0),Object(r["a"])([Object(n["b"])()],ao.prototype,"centerSlide",void 0),Object(r["a"])([Object(n["b"])()],ao.prototype,"dynamicSelected",void 0),ao=io=Object(r["a"])([Object(n["a"])({components:{"chart-editor":Tt,"image-editor":gi,"text-editor":Si,"slideshow-editor":Tl,"dynamic-editor":io,"map-editor":va,"video-editor":Ya}})],ao);var lo=ao;i("94db");const oo=b()(lo,[["render",to]]);var ro=oo;let no=class extends n["c"]{constructor(...e){super(...e),Object(ee["a"])(this,"config",void 0),Object(ee["a"])(this,"currentSlide",void 0),Object(ee["a"])(this,"configFileStructure",void 0),Object(ee["a"])(this,"lang",void 0),Object(ee["a"])(this,"uid",void 0),Object(ee["a"])(this,"slideIndex",void 0),Object(ee["a"])(this,"isLast",void 0),Object(ee["a"])(this,"sourceCounts",void 0),Object(ee["a"])(this,"panelIndex",0),Object(ee["a"])(this,"advancedEditorView",!1),Object(ee["a"])(this,"newType",""),Object(ee["a"])(this,"rightOnly",!1),Object(ee["a"])(this,"centerSlide",!1),Object(ee["a"])(this,"centerPanel",!1),Object(ee["a"])(this,"dynamicSelected",!1),Object(ee["a"])(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:Ae.Text,title:"",content:""},dynamic:{type:Ae.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:Ae.Slideshow,items:[],userCreated:!0},image:{type:Ae.Image,src:""},chart:{type:Ae.Chart,src:""},map:{type:Ae.Map,config:"",title:"",scrollguard:!1},video:{type:Ae.Video,title:"",videoType:"",src:""}};this.currentSlide.panel.forEach(e=>this.removeSourceCounts(e)),"dynamic"===t?(this.panelIndex=0,this.currentSlide["panel"]=[i[t]],this.dynamicSelected=!0):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!==Ae.Slideshow)return e.type;if(0===e.items.length||e.userCreated)return Ae.Slideshow;const t=e.items.every(e=>e.type===Ae.Chart);if(t)return Ae.Chart;const i=e.items.every(e=>e.type===Ae.Image);return i?Ae.Image:Ae.Slideshow}toggleRightOnly(){this.saveChanges(),this.rightOnly?(this.panelIndex=0,this.currentSlide["panel"]=[this.currentSlide.panel[1]]):this.currentSlide["panel"]=[Object.assign({},{type:Ae.Text,title:"",content:""}),Object.assign({},this.currentSlide.panel[0])]}toggleCenterSlide(){"dynamic"===this.determineEditorType(this.currentSlide.panel[this.panelIndex])?this.centerSlide?this.currentSlide.panel[0].customStyles="text-align: right;":this.currentSlide.panel[0].customStyles=(this.currentSlide.panel[0].customStyles||"").replace("text-align: right;",""):this.rightOnly?this.centerSlide?this.currentSlide.panel[0].customStyles="text-align: center;":(this.currentSlide.panel[0].customStyles=(this.currentSlide.panel[0].customStyles||"").replace("text-align: right;",""),this.currentSlide.panel[0].customStyles=(this.currentSlide.panel[0].customStyles||"").replace("text-align: left;",""),this.currentSlide.panel[0].customStyles=(this.currentSlide.panel[0].customStyles||"").replace("text-align: center;","")):this.centerSlide?(this.currentSlide.panel[0].customStyles="text-align: right;",this.currentSlide.panel[1].customStyles="text-align: left;"):(this.currentSlide.panel[0].customStyles=(this.currentSlide.panel[0].customStyles||"").replace("text-align: right;",""),this.currentSlide.panel[1].customStyles=(this.currentSlide.panel[1].customStyles||"").replace("text-align: left;",""))}toggleCenterPanel(){if(this.centerPanel)for(const e in this.currentSlide.panel)this.currentSlide.panel[e].customStyles="text-align: center;";else for(const e in this.currentSlide.panel)this.currentSlide.panel[e].customStyles=(this.currentSlide.panel[e].customStyles||"").replace("text-align: center;","")}};Object(r["a"])([Object(n["b"])()],no.prototype,"currentSlide",void 0),Object(r["a"])([Object(n["b"])()],no.prototype,"configFileStructure",void 0),Object(r["a"])([Object(n["b"])()],no.prototype,"lang",void 0),Object(r["a"])([Object(n["b"])()],no.prototype,"uid",void 0),Object(r["a"])([Object(n["b"])()],no.prototype,"slideIndex",void 0),Object(r["a"])([Object(n["b"])()],no.prototype,"isLast",void 0),Object(r["a"])([Object(n["b"])()],no.prototype,"sourceCounts",void 0),Object(r["a"])([Object(n["d"])("currentSlide",{deep:!0})],no.prototype,"onSlideChange",null),no=Object(r["a"])([Object(n["a"])({components:{"chart-editor":Tt,"custom-editor":Dt,"image-editor":gi,"text-editor":Si,"map-editor":va,"video-editor":Ya,"slideshow-editor":Tl,"loading-page":Bl,"dynamic-editor":ro,"confirmation-modal":Ct}})],no);var so=no;i("7b58");const co=b()(so,[["render",Re],["__scopeId","data-v-d63c3352"]]);var uo=co;const bo=e=>(Object(a["pushScopeId"])("data-v-aef69d80"),e=e(),Object(a["popScopeId"])(),e),po={class:"flex toc-header p-2 mt-10"},mo={class:"flex items-center justify-center font-bold"},ho=bo(()=>Object(a["createElementVNode"])("span",{class:"flex-1"},null,-1)),go=bo(()=>Object(a["createElementVNode"])("span",{class:"ml-auto"},null,-1)),fo=bo(()=>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)),vo={class:"align-middle inline-block"},Oo=bo(()=>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)),jo=[Oo],yo={slot:"header",class:"text-xl font-bold"},Vo={class:"flex flex-col"},So={class:"text-lg font-bold my-6"},Co={class:"flex"},xo=["value"],Eo=["onClick"],wo={class:"self-center overflow-ellipsis whitespace-nowrap overflow-hidden flex-grow ml-2"},ko={class:"font-bold overflow-hidden"},No={class:"flex"},To={class:"flex flex-col"},_o=["onClick"],$o=bo(()=>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)),Lo=[$o],Mo=["onClick"],Io=bo(()=>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)),Bo=[Io],Do={class:"flex flex-col mr-2 ml-1 my-1"},Fo=["onClick","disabled"],Po=bo(()=>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)),Ro=[Po],Ao=["onClick","disabled"],Uo=bo(()=>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)),zo=[Uo];function Wo(e,t,i,l,o,r){const n=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",po,[Object(a["createElementVNode"])("span",mo,Object(a["toDisplayString"])(e.$t("editor.slides.title")),1),ho,go,Object(a["createElementVNode"])("button",{class:"editor-button",onClick:t[0]||(t[0]=(...t)=>e.addNewSlide&&e.addNewSlide(...t))},[fo,Object(a["createElementVNode"])("span",vo,Object(a["toDisplayString"])(e.$t("editor.slides.addSlide")),1)]),Object(a["withDirectives"])((Object(a["openBlock"])(),Object(a["createElementBlock"])("button",{class:"editor-button",onClick:t[1]||(t[1]=Object(a["withModifiers"])(t=>e.$vfm.open("copy-from-other-lang"),["stop"]))},jo)),[[d,{delay:"200",placement:"right",content:e.$t("editor.slides.copyFromLang"),animateFill:!0}]]),Object(a["createVNode"])(n,{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",yo,Object(a["toDisplayString"])(e.$t("editor.slides.copyFromLang")),1),Object(a["createElementVNode"])("div",Vo,[Object(a["createElementVNode"])("button",{class:"editor-toc-button editor-button 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",So,Object(a["toDisplayString"])(e.$t("editor.or")),1),Object(a["createElementVNode"])("div",Co,[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,xo))),128))],512),[[a["vModelSelect"],e.selectedForCopying]]),Object(a["createElementVNode"])("button",{class:"editor-toc-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",wo,[Object(a["createTextVNode"])(Object(a["toDisplayString"])(e.$t("editor.slides.slide"))+" "+Object(a["toDisplayString"])(i+1)+": ",1),Object(a["createElementVNode"])("span",ko,Object(a["toDisplayString"])(t.title||"Add a title"),1)]),Object(a["createElementVNode"])("div",No,[Object(a["createElementVNode"])("div",To,[Object(a["createElementVNode"])("button",{class:"slide-toc-button",onClick:Object(a["withModifiers"])(t=>e.$vfm.open("delete-slide-"+i),["stop"])},Lo,8,_o),Object(a["createElementVNode"])("button",{class:"slide-toc-button",onClick:Object(a["withModifiers"])(t=>e.copySlide(i),["stop"])},Bo,8,Mo)]),Object(a["createElementVNode"])("div",Do,[Object(a["createElementVNode"])("button",{class:Object(a["normalizeClass"])(["slide-toc-button",0==i?"text-gray-500 cursor-not-allowed":""]),onClick:Object(a["withModifiers"])(t=>e.moveUp(i),["stop"]),disabled:0==i},Ro,10,Fo),Object(a["createElementVNode"])("button",{class:Object(a["normalizeClass"])(["slide-toc-button 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},zo,10,Ao)])]),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,Eo)),[[d,{delay:"200",placement:"right",content:t.title,animateFill:!0}]])]),_:1},8,["modelValue"])])])}var Ho=i("9675"),qo=i.n(Ho);let Xo=class extends n["c"]{constructor(...e){super(...e),Object(ee["a"])(this,"slides",void 0),Object(ee["a"])(this,"currentSlide",void 0),Object(ee["a"])(this,"slideIndex",void 0),Object(ee["a"])(this,"configFileStructure",void 0),Object(ee["a"])(this,"lang",void 0),Object(ee["a"])(this,"sourceCounts",void 0),Object(ee["a"])(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,qo()(e)),this.$emit("slides-updated",this.slides))}copyAllFromOtherLang(e){e&&(this.slides.splice(this.slides.length,0,...e.map(e=>qo()(e))),this.$emit("slides-updated",this.slides))}copySlide(e){this.slides.splice(e+1,0,qo()(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(r["a"])([Object(n["b"])()],Xo.prototype,"slides",void 0),Object(r["a"])([Object(n["b"])()],Xo.prototype,"currentSlide",void 0),Object(r["a"])([Object(n["b"])()],Xo.prototype,"slideIndex",void 0),Object(r["a"])([Object(n["b"])()],Xo.prototype,"configFileStructure",void 0),Object(r["a"])([Object(n["b"])()],Xo.prototype,"lang",void 0),Object(r["a"])([Object(n["b"])()],Xo.prototype,"sourceCounts",void 0),Xo=Object(r["a"])([Object(n["a"])({components:{"slide-editor":uo,"confirmation-modal":Ct,"vue-final-modal":ie["a"],draggable:Et.a}})],Xo);var Jo=Xo;i("c191");const Go=b()(Jo,[["render",Wo],["__scopeId","data-v-aef69d80"]]);var Zo=Go;const Yo={class:"editor-label mb-5"},Qo=["value"],Ko=Object(a["createElementVNode"])("br",null,null,-1),er={class:"editor-label mb-5"},tr=["value"],ir={class:"editor-label mb-5"},ar=["value"],lr=Object(a["createElementVNode"])("br",null,null,-1),or={key:0},rr={class:"editor-label"},nr=["src"],sr={key:1,class:"image-preview"},cr={class:"editor-label mb-5"},dr=["value"],ur=Object(a["createElementVNode"])("br",null,null,-1),br={class:"editor-label"},pr=["value"],mr=Object(a["createElementVNode"])("br",null,null,-1),hr=Object(a["createElementVNode"])("label",{class:"editor-label mb-5"},null,-1),gr={class:"inline-block"},fr=Object(a["createElementVNode"])("br",null,null,-1),vr={class:"editor-label"},Or=["value"],jr=Object(a["createElementVNode"])("br",null,null,-1),yr=Object(a["createElementVNode"])("label",{class:"editor-label mb-5"},null,-1),Vr={class:"inline-block"},Sr=Object(a["createElementVNode"])("br",null,null,-1),Cr={class:"editor-label"},xr=["value"],Er=Object(a["createElementVNode"])("br",null,null,-1),wr=Object(a["createElementVNode"])("label",{class:"editor-label mb-5"},null,-1),kr={class:"inline-block"},Nr=Object(a["createElementVNode"])("br",null,null,-1),Tr={class:"editor-label mr-15"},_r={value:"vertical"},$r={value:"horizontal"},Lr=Object(a["createElementVNode"])("br",null,null,-1),Mr=Object(a["createElementVNode"])("label",{class:"editor-label mb-5"},null,-1),Ir={class:"inline-block"},Br=Object(a["createElementVNode"])("br",null,null,-1),Dr={class:"editor-label mb-5"},Fr=["value"],Pr=Object(a["createElementVNode"])("br",null,null,-1),Rr=Object(a["createElementVNode"])("br",null,null,-1);function Ar(e,t,i,l,o,r){return Object(a["openBlock"])(),Object(a["createElementBlock"])("div",null,[Object(a["createElementVNode"])("label",Yo,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:"editor-input w-1/3"},null,40,Qo),Ko,Object(a["createElementVNode"])("label",er,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:"editor-input w-1/4"},null,40,tr),Object(a["createElementVNode"])("label",ir,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:"editor-input w-1/4"},null,40,ar),lr,e.metadata.logoPreview?(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",or,[Object(a["createElementVNode"])("label",rr,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,nr)):Object(a["createCommentVNode"])("",!0),"error"==e.metadata.logoPreview?(Object(a["openBlock"])(),Object(a["createElementBlock"])("p",sr,Object(a["toDisplayString"])(e.$t("editor.image.loadingError")),1)):Object(a["createCommentVNode"])("",!0)])):Object(a["createCommentVNode"])("",!0),Object(a["createElementVNode"])("label",cr,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:"editor-input w-1/4"},null,40,dr),Object(a["createElementVNode"])("button",{onClick:t[4]||(t[4]=Object(a["withModifiers"])((...t)=>e.openFileSelector&&e.openFileSelector(...t),["stop"])),class:"editor-button 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:"editor-button 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:"editor-input w-1/4",style:{display:"none"}},null,32),ur,Object(a["createElementVNode"])("label",br,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:"editor-input w-2/3"},null,40,pr),mr,hr,Object(a["createElementVNode"])("p",gr,[Object(a["createElementVNode"])("i",null,Object(a["toDisplayString"])(e.$t("editor.logoAltText.desc")),1)]),fr,Object(a["createElementVNode"])("label",vr,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:"editor-input w-2/3"},null,40,Or),jr,yr,Object(a["createElementVNode"])("p",Vr,[Object(a["createElementVNode"])("i",null,Object(a["toDisplayString"])(e.$t("editor.contextLink.info")),1)]),Sr,Object(a["createElementVNode"])("label",Cr,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:"editor-input w-2/3"},null,40,xr),Er,wr,Object(a["createElementVNode"])("p",kr,[Object(a["createElementVNode"])("i",null,Object(a["toDisplayString"])(e.$t("editor.contextLabel.info")),1)]),Nr,Object(a["createElementVNode"])("label",Tr,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",_r,Object(a["toDisplayString"])(e.$t("editor.tocOrientation.vertical")),1),Object(a["createElementVNode"])("option",$r,Object(a["toDisplayString"])(e.$t("editor.tocOrientation.horizontal")),1)],544),[[a["vModelSelect"],e.metadata.tocOrientation]]),Lr,Mr,Object(a["createElementVNode"])("p",Ir,[Object(a["createElementVNode"])("i",null,Object(a["toDisplayString"])(e.$t("editor.tocOrientation.info")),1)]),Br,Object(a["createElementVNode"])("label",Dr,Object(a["toDisplayString"])(e.$t("editor.dateModified"))+":",1),Object(a["createElementVNode"])("input",{class:"editor-input",type:"date",name:"dateModified",value:e.metadata.dateModified,onChange:t[12]||(t[12]=(...t)=>e.metadataChanged&&e.metadataChanged(...t))},null,40,Fr),Pr,Rr])}class Ur extends n["c"]{constructor(...e){super(...e),Object(ee["a"])(this,"metadata",void 0)}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(r["a"])([Object(n["b"])()],Ur.prototype,"metadata",void 0);const zr=b()(Ur,[["render",Ar]]);var Wr=zr;const Hr={class:"editor-container"},qr={class:"editor-header sticky flex items-center border-b border-black bg-gray-200 py-2 px-2 z-10"},Xr={class:"mx-1"},Jr=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),Gr={class:"ml-3 flex flex-col"},Zr={class:"font-semibold text-lg"},Yr=Object(a["createElementVNode"])("span",{class:"ml-auto"},null,-1),Qr=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),Kr={class:"font-normal ml-1"},en={key:0,class:"border-2 border-red-700 text-red-700 rounded p-1 mr-2"},tn=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),an={class:"align-center inline-block select-none"},ln=["disabled"],on={class:"inline-block"},rn={key:0,class:"align-middle inline-block px-1"},nn={class:"flex"},sn={class:"w-80 flex-shrink-0 border-r border-black editor-toc"},cn={class:"flex items-center justify-center border-b p-2"},dn=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),un={class:"align-middle inline-block"},bn={class:"footer text-right pr-5 editor-button"},pn=["href"];function mn(e,t,i,l,o,r){const n=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"),b=Object(a["resolveDirective"])("tippy");return Object(a["openBlock"])(),Object(a["createElementBlock"])("div",Hr,[Object(a["createElementVNode"])("div",qr,[Object(a["createElementVNode"])("span",Xr,[Object(a["withDirectives"])((Object(a["openBlock"])(),Object(a["createBlock"])(n,{to:{name:"home"},class:"mt-1 flex justify-center h-full w-full",target:""},{default:Object(a["withCtx"])(()=>[Jr]),_:1})),[[b,{delay:"200",placement:"right",content:e.$t("editor.returnToLanding"),animateFill:!0}]])]),Object(a["createElementVNode"])("div",Gr,[Object(a["createElementVNode"])("span",Zr,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)]),Yr,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:"editor-button border-2 border-red-700 text-red-700 rounded p-1 mr-2"},[Qr,Object(a["createElementVNode"])("span",Kr,Object(a["toDisplayString"])(e.$t("editor.resetChanges")),1)])),[[b,{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",en,[tn,Object(a["createElementVNode"])("span",an,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}))),Object(a["createElementVNode"])("button",{onClick:t[1]||(t[1]=(...t)=>e.preview&&e.preview(...t)),class:"editor-button 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:"editor-button bg-black text-white hover:bg-gray-900",disabled:e.saving},[Object(a["createElementVNode"])("span",on,Object(a["toDisplayString"])(e.saving?e.$t("editor.savingChanges"):e.$t("editor.saveChanges")),1),e.saving?(Object(a["openBlock"])(),Object(a["createElementBlock"])("span",rn,[Object(a["createVNode"])(s,{size:"16px",color:"#009cd1",class:"ml-1 mb-1"})])):Object(a["createCommentVNode"])("",!0)],8,ln)]),Object(a["createElementVNode"])("div",nn,[Object(a["createElementVNode"])("div",sn,[Object(a["createElementVNode"])("div",cn,[Object(a["createElementVNode"])("button",{class:"editor-toc-button editor-button",onClick:t[3]||(t[3]=Object(a["withModifiers"])(t=>e.$vfm.open("metadata-edit-modal"),["stop"]))},[dn,Object(a["createElementVNode"])("span",un,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["createElementVNode"])("div",bn,[Object(a["createElementVNode"])("a",{href:"mailto:applicationsdecartographieweb-webmappingapplications@ec.gc.ca?subject="+e.$t("editor.feedback.subject")},Object(a["toDisplayString"])(e.$t("editor.feedback")),9,pn)]),Object(a["renderSlot"])(e.$slots,"metadataModal"),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 hn=class extends n["c"]{constructor(...e){super(...e),Object(ee["a"])(this,"configs",void 0),Object(ee["a"])(this,"configFileStructure",void 0),Object(ee["a"])(this,"sourceCounts",void 0),Object(ee["a"])(this,"metadata",void 0),Object(ee["a"])(this,"slides",void 0),Object(ee["a"])(this,"configLang",void 0),Object(ee["a"])(this,"saving",void 0),Object(ee["a"])(this,"unsavedChanges",void 0),Object(ee["a"])(this,"uuid",""),Object(ee["a"])(this,"logoImage",void 0),Object(ee["a"])(this,"loadSlides",void 0),Object(ee["a"])(this,"currentSlide",""),Object(ee["a"])(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.$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.$refs.slide.saveChanges(),this.$emit("save-changes")}beforeWindowUnload(e){this.unsavedChanges&&!window.confirm()&&e.preventDefault()}};Object(r["a"])([Object(n["b"])()],hn.prototype,"configs",void 0),Object(r["a"])([Object(n["b"])()],hn.prototype,"configFileStructure",void 0),Object(r["a"])([Object(n["b"])()],hn.prototype,"sourceCounts",void 0),Object(r["a"])([Object(n["b"])()],hn.prototype,"metadata",void 0),Object(r["a"])([Object(n["b"])()],hn.prototype,"slides",void 0),Object(r["a"])([Object(n["b"])()],hn.prototype,"configLang",void 0),Object(r["a"])([Object(n["b"])()],hn.prototype,"saving",void 0),Object(r["a"])([Object(n["b"])()],hn.prototype,"unsavedChanges",void 0),Object(r["a"])([Object(n["d"])("slides",{deep:!0})],hn.prototype,"onSlidesEdited",null),Object(r["a"])([Object(n["d"])("metadata",{deep:!0})],hn.prototype,"onMetadataEdited",null),hn=Object(r["a"])([Object(n["a"])({components:{"metadata-content":Wr,"confirmation-modal":Ct,spinner:te["a"],"slide-editor":uo,"slide-toc":Zo}})],hn);var gn=hn;i("3b76");const fn=b()(gn,[["render",mn]]);var vn=fn;const On=i("c4e3"),jn=i("bc3a").default,{v4:yn}=i("e144");let Vn=class extends n["c"]{constructor(...e){super(...e),Object(ee["a"])(this,"editExisting",void 0),Object(ee["a"])(this,"configs",{en:void 0,fr:void 0}),Object(ee["a"])(this,"configFileStructure",void 0),Object(ee["a"])(this,"loadExisting",!1),Object(ee["a"])(this,"reloadExisting",!1),Object(ee["a"])(this,"loadStatus","waiting"),Object(ee["a"])(this,"loadEditor",!1),Object(ee["a"])(this,"error",!1),Object(ee["a"])(this,"warning",!1),Object(ee["a"])(this,"configLang","en"),Object(ee["a"])(this,"showDropdown",!1),Object(ee["a"])(this,"storylineHistory",[]),Object(ee["a"])(this,"selectedHistory",null),Object(ee["a"])(this,"saving",!1),Object(ee["a"])(this,"unsavedChanges",!1),Object(ee["a"])(this,"apiUrl","http://localhost:6040"),Object(ee["a"])(this,"uuid",""),Object(ee["a"])(this,"logoImage",void 0),Object(ee["a"])(this,"metadata",{title:"",introTitle:"",introSubtitle:"",logoPreview:"",logoName:"",logoAltText:"",contextLink:"",contextLabel:"",tocOrientation:"",dateModified:""}),Object(ee["a"])(this,"reqFields",{uuid:!0}),Object(ee["a"])(this,"slides",[]),Object(ee["a"])(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:yn(),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 On;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]=qo()(t),this.configs[a].lang=a;const l=JSON.stringify(this.configs[a],null,4),o=`${this.uuid}_${this.configLang}.json`,r=JSON.stringify(t,null,4);e.file(o,r),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(this.apiUrl+"/retrieve/"+this.uuid).then(e=>{if(404===e.status){var t;ae["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 On;e.blob().then(e=>{t.loadAsync(e).then(()=>{this.configFileStructureHelper(t)})})}fetch(this.apiUrl+"/retrieveMessages").then(e=>{if(e.ok)return e.json()}).then(e=>{jn.post("#{NET_API_URL}#/api/log/create",{messages:e.messages}).catch(e=>console.log(e.response||e))}).catch(e=>console.log(e.response||e))}).catch(()=>{ae["a"].error("Failed to load product, no response from server"),this.loadStatus="loaded"})}fetchHistory(){void 0===this.uuid&&ae["a"].error("You must first enter a UUID")}selectHistory(e){this.selectedHistory=e}formatDate(e){const t=new Date(e),i=new Date(t.toLocaleString("en-US",{timeZone:"America/Toronto"})),a={year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",hour12:!0,timeZone:"America/Toronto"};return new Intl.DateTimeFormat("en-US",a).format(i)}loadHistory(){this.selectedHistory,0}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:l},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 ae["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",ae["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],r=null===(l=this.configFileStructure)||void 0===l?void 0:l.zip.file(t);r?r.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"};jn.post(this.apiUrl+"/upload",t,{headers:i}).then(e=>{const t=e.data;t.files,t.status,this.unsavedChanges=!1,this.loadExisting=!0,ae["a"].success("Successfully saved changes!")}).catch(()=>{ae["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();const o=c();o.fetchUserProfile()}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(this.apiUrl+"/retrieve/"+this.uuid).then(e=>{404!==e.status&&(this.warning=!0),fetch(this.apiUrl+"/retrieveMessages").then(e=>{if(e.ok)return e.json()}).then(e=>{jn.post("#{NET_API_URL}#/api/log/create",{messages:e.messages}).catch(e=>console.log(e.response||e))}).catch(e=>console.log(e.response||e))}),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,ae["a"].success("Successfully loaded logo image.")):(this.metadata.logoPreview="error",ae["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)||(ae["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()):ae["a"].error("No config exists for storylines product."):this.uuid?this.generateNewConfig():(ae["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()}get getStorylines(){var e,t;const i=c(),a=(null===(e=i.userProfile.storylines)||void 0===e?void 0:e.map(e=>({...e,isUserStoryline:!0})))||[],l=(null===(t=i.userProfile.allStorylines)||void 0===t?void 0:t.filter(e=>!a.some(t=>t.uuid===e.uuid)))||[];let o=[...a,...l];return this.uuid&&(o=o.filter(e=>e.uuid.toLowerCase().includes(this.uuid.toLowerCase()))),o}selectUuid(e){this.uuid=e,this.showDropdown=!1}};Object(r["a"])([Object(n["b"])({default:!0})],Vn.prototype,"editExisting",void 0),Vn=Object(r["a"])([Object(n["a"])({components:{Editor:vn,"confirmation-modal":Ct,"metadata-content":Wr,spinner:te["a"],"slide-editor":uo,"slide-toc":Zo,"vue-final-modal":ie["a"]}})],Vn);var Sn=Vn;i("d568");const Cn=b()(Sn,[["render",K]]);var xn=Cn;const En={key:0},wn={class:"block py-20 align-middle text-center h-full",style:{margin:"0 auto"}},kn={key:1},Nn={key:0,class:"storyramp-app bg-white"},Tn={id:"story-header",class:"story-header sticky top-0 flex border-b border-black bg-gray-200 py-2 px-2 justify-between"},_n={class:"w-mobile-full truncate"},$n={class:"font-semibold text-lg m-1"},Ln={class:"w-full mx-auto pb-10",id:"story"},Mn={class:"p-8 pt-2 text-right text-sm"},In=["href"],Bn=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),Dn={key:0,class:"storyramp-modified"};function Fn(e,t,i,l,o,r){const n=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",En,[Object(a["createElementVNode"])("div",wn,[Object(a["createVNode"])(n,{size:"120px",color:"#009cd1",style:{margin:"0 auto"}})])])):"loaded"===e.loadStatus?(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",kn,[void 0!==e.config?(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",Nn,[Object(a["createElementVNode"])("header",Tn,[Object(a["createElementVNode"])("div",_n,[Object(a["createElementVNode"])("span",$n,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",Ln,[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",Mn,[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,In),Object(a["createTextVNode"])(" | "),Bn]),e.config.dateModified?(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",Dn,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 Pn=class extends n["c"]{constructor(...e){super(...e),Object(ee["a"])(this,"config",void 0),Object(ee["a"])(this,"configFileStructure",void 0),Object(ee["a"])(this,"savedProduct",!1),Object(ee["a"])(this,"loadStatus","loading"),Object(ee["a"])(this,"activeChapterIndex",-1),Object(ee["a"])(this,"lang","en"),Object(ee["a"])(this,"headerHeight",0),Object(ee["a"])(this,"uid",""),Object(ee["a"])(this,"apiUrl","http://localhost:6040"),Object(ee["a"])(this,"configs",{en:void 0,fr:void 0})}created(){const e=this.$route.params.uid,t=this.$route.params.lang,a=i("c4e3"),l=i("bc3a").default;e?(this.savedProduct=!0,fetch(this.apiUrl+"/retrieve/"+e).then(i=>{if(404===i.status)console.error(`There does not exist a saved product with UID ${e}.`);else{const l=new a;i.blob().then(i=>{l.loadAsync(i).then(()=>{const i=l.folder("assets"),a=l.folder("charts"),o=l.folder("ramp-config");this.configFileStructure={uuid:e,zip:l,configs:this.configs,assets:{en:i.folder("en"),fr:i.folder("fr")},charts:{en:a.folder("en"),fr:a.folder("fr")},rampConfig:o};const r=`${e}_${t}.json`;l.file(r).async("string").then(e=>{const t=JSON.parse(e);this.config=t,this.loadStatus="loaded",document.title=this.config.title+" - Canada.ca"})})})}fetch(this.apiUrl+"/retrieveMessages").then(e=>{l.post("#{NET_API_URL}#/api/log/create",{messages:e.data.messages}).catch(e=>console.log(e.response||e))})})):(this.config=window.props.config,this.configFileStructure=window.props.configFileStructure,this.loadStatus="loaded");const o=document.documentElement;o.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)}};Pn=Object(r["a"])([Object(n["a"])({components:{spinner:te["a"]}})],Pn);var Rn=Pn;i("a928");const An=b()(Rn,[["render",Fn]]);var Un=An,zn=i("6605");const Wn=[{path:"/:lang/editor",name:"home",component:E,meta:{title:"editor.window.title"}},{path:"/:lang/editor/:uid",redirect:e=>"/"+e.params.lang+"/editor-metadata/"+e.params.uid},{path:"/:lang/editor-metadata",name:"metadataExisting",component:xn,props:{editExisting:!0},meta:{title:"editor.window.title"}},{path:"/:lang/editor-metadata",name:"metadataNew",component:xn,props:{editExisting:!1},meta:{title:"editor.window.title"}},{path:"/:lang/editor-metadata/:uid",component:xn,meta:{title:"editor.window.title"}},{path:"/:lang/editor-main/:uid",name:"editor",component:xn,props:!0,meta:{title:"editor.window.title"}},{path:"/:lang/editor-preview",component:Un,name:"preview",props:!0,meta:{title:"story.window.title"}},{path:"/:lang/editor-preview/:uid",component:Un,meta:{title:"story.window.title"}}],Hn=Object(zn["a"])({routes:Wn,history:Object(zn["b"])(),scrollBehavior:function(e){if(e.hash)return{selector:decodeURIComponent(e.hash),behavior:"smooth"}}});var qn=Hn,Xn=(i("38c8"),i("13d5"),i("9ca6"));const Jn=i("3d6d"),Gn=document.documentElement.getAttribute("lang");function Zn(e){return e.reduce((e,t)=>(e.en[t.key]=t.enValue,e.fr[t.key]=t.frValue,e),{en:{},fr:{}})}const Yn=Object(Xn["a"])({legacy:!1,locale:Gn||void 0,fallbackLocale:"en",globalInjection:!0,messages:Zn(Jn)});var Qn=i("ee2d"),Kn=i.n(Qn),es=(i("fefe"),i("603a")),ts=i.n(es),is=(i("fbc4"),i("3b16")),as=i.n(is),ls=i("1487"),os=i.n(ls),rs=(i("40e8"),i("c4e7")),ns=(i("52df"),i("e748"),i("4452")),ss=i.n(ns),cs=(i("e896"),i("c883")),ds=i.n(cs);i("91a9");Kn.a.lang.use("en-US",as.a),Kn.a.use(ts.a,{Hljs:os.a});const us=Object(ie["b"])(),bs=Object(a["createApp"])(m),ps=Object(s["a"])();bs.use(ps).use(qn).use(Yn).use(rs["a"],{directive:"tippy",component:"tippy"}).use(ss.a).use(ae["a"]).use(ds.a).use(Kn.a).use(us),bs.mount("#app")},cdea:function(e,t,i){},d1aa:function(e,t,i){},d364:function(e,t,i){},d568:function(e,t,i){"use strict";i("8f2c")},d932:function(e,t,i){},e593:function(e,t,i){},e8ca:function(e,t,i){},eae8:function(e,t,i){"use strict";i("569f")},ef88:function(e,t,i){}}]); -//# sourceMappingURL=chunk-common.e640abf6.js.map \ No newline at end of file diff --git a/fix-292/js/chunk-common.e640abf6.js.map b/fix-292/js/chunk-common.e640abf6.js.map deleted file mode 100644 index 1bf175eb..00000000 --- a/fix-292/js/chunk-common.e640abf6.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["webpack:///./src/components/editor/slideshow-editor.vue?ee10","webpack:///./src/components/editor/helpers/chart-preview.vue?5653","webpack:///./src/components/editor/editor.vue?c656","webpack:///./src/lang/lang.csv","webpack:///./src/components/editor/image-editor.vue?3c8b","webpack:///./src/components/editor/helpers/video-preview.vue?ba86","webpack:///./src/components/editor/video-editor.vue?bf97","webpack:///./src/components/editor/helpers/custom-editor.vue?ffb8","webpack:///./src/components/editor/helpers/confirmation-modal.vue?3407","webpack:///./src/components/editor/slide-editor.vue?8326","webpack:///./src/components/editor/chart-editor.vue?0650","webpack:///./src/components/editor/dynamic-editor.vue?0a76","webpack:///./src/components/editor/landing.vue?0d63","webpack:///./src/components/editor/text-editor.vue?8ab1","webpack:///./src/app.vue?2a26","webpack:///./src/components/editor/preview.vue?57df","webpack:///./src/components/editor/helpers/time-slider-editor.vue?3363","webpack:///./src/components/editor/slide-toc.vue?3892","webpack:///./src/components/editor/map-editor.vue?277a","webpack:///./src/app.vue?9616","webpack:///./src/stores/userStore.ts","webpack:///./src/app.vue","webpack:///./src/app.vue?cab0","webpack:///./src/router/componentHooks.ts","webpack:///./src/components/editor/landing.vue?e40a","webpack:///./src/components/editor/landing.vue","webpack:///./src/components/editor/landing.vue?d196","webpack:///./src/components/editor/metadata-editor.vue?c74d","webpack:///./src/components/editor/slide-editor.vue?7602","webpack:///./src/definitions.ts","webpack:///./src/components/editor/chart-editor.vue?5cd4","webpack:///./src/components/editor/helpers/chart-preview.vue?e021","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?7ec4","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?35f0","webpack:///./src/components/editor/helpers/custom-editor.vue","webpack:///./src/components/editor/helpers/custom-editor.vue?267c","webpack:///./src/components/editor/image-editor.vue?d17a","webpack:///./src/components/editor/helpers/image-preview.vue?22cf","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?c70e","webpack:///./src/components/editor/text-editor.vue","webpack:///./src/components/editor/text-editor.vue?17bf","webpack:///./src/components/editor/map-editor.vue?a40d","webpack:///./src/components/editor/helpers/time-slider-editor.vue?4932","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?c0f9","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?cfa0","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?9047","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?d976","webpack:///./src/components/editor/slide-toc.vue","webpack:///./src/components/editor/slide-toc.vue?e6ed","webpack:///./src/components/editor/helpers/metadata-content.vue?2abf","webpack:///./src/components/editor/helpers/metadata-content.vue","webpack:///./src/components/editor/helpers/metadata-content.vue?f1f6","webpack:///./src/components/editor/editor.vue?5cda","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?661b","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/metadata-editor.vue?f50a","webpack:///./src/components/editor/helpers/image-preview.vue?356b"],"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","useUserStore","defineStore","state","userProfile","actions","apiUrl","response","fetch","method","credentials","ok","data","json","this","console","error","App","Vue","onRouteUpdate","to","_to$params$lang","$i18n","locale","params","lang","document","title","$t","meta","mounted","$pinia","__decorate","Watch","immediate","__exports__","registerHooks","_hoisted_2","_hoisted_3","_hoisted_4","_hoisted_5","_hoisted_6","_hoisted_7","_component_router_link","_createElementVNode","_toDisplayString","userName","_createVNode","name","target","default","_withCtx","_","LandingV","userStore","_hoisted_8","_hoisted_9","_hoisted_10","_hoisted_11","_hoisted_12","viewBox","width","height","xmlns","d","_hoisted_13","_hoisted_14","_hoisted_15","_hoisted_16","_hoisted_17","_hoisted_18","_hoisted_19","_hoisted_20","_hoisted_21","_hoisted_22","_hoisted_23","_hoisted_24","_hoisted_25","slot","_hoisted_26","_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","onFocus","showDropdown","onBlur","onInput","uuid","checkUuid","_normalizeClass","_vModelText","_renderList","getStorylines","storyline","onMousedown","_withModifiers","selectUuid","isUserStoryline","_vShow","warning","args","generateRemoteConfig","fetchHistory","loadStatus","size","color","storylineHistory","history","selectHistory","selectedHistory","formatDate","created","disabled","storylineUUID","loadHistory","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","metadataModal","modalId","_withScopeId","n","_pushScopeId","_popScopeId","_createStaticVNode","_hoisted_27","_hoisted_29","_hoisted_30","_hoisted_31","_hoisted_32","_hoisted_33","_hoisted_34","_hoisted_35","_hoisted_36","_hoisted_37","_hoisted_38","_component_custom_editor","currentSlide","placeholder","selectSlide","slideIndex","isLast","rightOnly","determineEditorType","panel","panelIndex","onChange","_vModelCheckbox","centerSlide","centerPanel","toggleCenterSlide","toggleCenterPanel","length","advancedEditorView","saveChanges","newType","value","Object","keys","editors","filter","editor","thing","config","onSlideEdit","$emit","onConfigEdited","slideConfig","save","_resolveDynamicComponent","uid","dynamicSelected","changePanelType","onCancel","cancelTypeChange","toggleRightOnly","PanelType","_component_ChartPreview","_component_draggable","num","chartConfigs","clearEditor","allowMany","modelValue","handle","onUpdate","onChartsEdited","item","element","index","chart","onEdit","editChart","onDelete","idx","deleteChart","fill","_component_storylines_chart","_directive_tippy","_resolveDirective","content","placement","hideOnClick","animateFill","loading","chartConfig","chartIdx","onLoaded","loadChart","chartName","ChartPreviewV","constructor","_defineProperty","undefined","chartOptions","_chartOptions$data","modalEditor","highed","ModalEditor","allowDone","features","importer","options","defaultChartOptions","newChart","JSON","parse","newName","text","alert","setTimeout","show","src","oldChart","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","ready","createNewChart","toString","charts","Slideshow","items","c","customStyles","replace","match","chart_options","subtitle","credits","enabled","assign","thousandsSep","defaultTableData","chartInfo","chartSrc","file","stringify","push","findIndex","chartFile","oldName","remove","splice","edited","forEach","Chart","ChartPreview","ConfirmationModalV","draggable","_component_json_editor","updatedConfig","mode","expandedOnStart","onJsonChange","onJsonSave","CustomEditorV","require","Validator","jsonValidator","schemaUrl","then","schema","storylinesSchema","err","checkValidation","validator","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","images","i","image","assetSrc","substring","indexOf","filename","assetFile","zip","imagePreviewPromises","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","_component_time_slider_editor","saveTimeSlider","usingTimeSlider","timeSliderConf","timeSliderError","onTimeSliderChanged","onTimeSliderInput","range","start","attribute","layers","TimeSliderEditorV","MapEditorV","_this$panel$timeSlide","_this$panel$timeSlide2","_this$panel$timeSlide3","_this$panel$timeSlide4","_this$panel$timeSlide5","_this$panel$timeSlide6","timeSlider","status","strippedFileName","split","Date","getFullYear","window","addEventListener","onConfigEdit","validateTimeSlider","createNewConfig","openEditor","beforeDestroy","removeEventListener","getNumberOfMaps","rampConfig","defaultConfig","configFile","conf","rampEditorApi","createInstance","$refs","stringResponse","getConfig","property","layerId","trim","Number","some","val","isInteger","f","transform","_component_VideoPreview","videoPreview","onVideoEdited","dropVideo","videoType","uploadVideoUrl","videoPreviewLoading","fileType","deleteVideo","allowfullscreen","controls","kind","srclang","label","langs","VideoPreviewV","MarkdownIt","html","en","fr","VideoEditorV","_this$videoPreviewPro","videoPreviewPromise","addUploadedFile","fileSrc","findFileType","fileName","lastIndexOf","ext","pop","extractYoutubeId","url","regExp","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","scrollguard","Video","find","mapPanel","chartPanel","imagePanel","add","itemConfig","slideEditor","LoadingPageV","spinner","VueSpinnerOval","changePanel","switchSlide","removeSlide","newSlideName","idUsed","_vModelSelect","createNewSlide","editingSlide","DynamicEditorV","DynamicEditorV_1","userCreated","ch","slideshowPanel","videoPanel","newConfig","allCharts","every","allImages","slide","SlideEditorV","onSlideChange","prevType","removeSourceCounts","dynamicPanel","subPanel","typeSelector","p","deep","_hoisted_28","addNewSlide","delay","copyAllFromOtherLang","selectedForCopying","copyFromOtherLang","copySlide","moveUp","moveDown","SlideTocV","cloneDeep","deletedIndex","_this$slides$find","removeSourceHelper","_hoisted_39","_hoisted_40","_hoisted_41","_hoisted_42","_hoisted_43","_hoisted_44","metadataChanged","introTitle","introSubtitle","logoPreview","logoName","openFileSelector","removeLogo","logoAltText","contextLink","contextLabel","tocOrientation","dateModified","_document$getElementB","getElementById","click","event","_component_slide_toc","_component_slide_editor","_Transition","_normalizeProps","_guardReactiveProps","preview","onSlidesUpdated","updateSlides","onSlidesEdited","onCustomSlideUpdated","updateCustomSlide","href","EditorV","onMetadataEdited","loadSlides","beforeWindowUnload","observer","IntersectionObserver","classList","toggle","intersectionRatio","threshold","observe","querySelector","$nextTick","scrollTo","routeData","$router","resolve","previewTab","props","confirm","preventDefault","MetadataContentV","JSZip","axios","v4","uuidv4","_this$$route$params$u","loadExisting","curDate","year","month","getMonth","padStart","day","getDate","_this$configs$this$co","existing","logo","introSlide","logoSrc","_this$configFileStruc","logoFile","logoImage","File","blob","generateNewConfig","configZip","configHelper","_this$logoImage","otherLang","formattedOtherLangConfig","formattedConfigFile","configFileStructureHelper","_this$uuid","Message","clearConfig","loadAsync","post","process","messages","catch","log","date","estDate","toLocaleString","timeZone","hour","minute","hour12","Intl","DateTimeFormat","format","findSources","_configs$lang","_configs$lang2","incrementSourceCount","panelSourceHelper","uploadLogo","assetsFolder","folder","chartsFolder","rampConfigFolder","loadConfig","useConfig","_this$configFileStruc2","_this$configFileStruc3","enFile","frFile","_this$uuid2","success","reloadExisting","updateEditorPath","_config$introSlide$lo","_config$introSlide$lo2","_this$configFileStruc4","_this$configFileStruc5","_this$configFileStruc6","generateAsync","formData","FormData","append","headers","responseData","finally","publish","_this$logoImage2","_this$configFileStruc7","_this$logoImage3","fetchUserProfile","mainEditor","beforeRouteUpdate","next","isImgUrl","onerror","onload","uploadedFile","beforeEach","checkRequiredFields","values","field","_this$configFileStruc8","payload","beforeRouteLeave","curEditor","confirmationMessage","_userStore$userProfil","_userStore$userProfil2","userStorylines","storylines","s","allStorylines","u","combined","Editor","_component_storylines_intro","_component_storylines_content","plugin","headerHeight","onStep","updateActiveIndex","StoryPreviewV","savedProduct","filePath","configContent","documentElement","setAttribute","activeChapterIndex","headerH","clientHeight","routes","component","redirect","router","createRouter","createWebHashHistory","scrollBehavior","hash","selector","decodeURIComponent","behavior","rows","getAttribute","fold","reduce","enValue","frValue","i18n","createI18n","legacy","fallbackLocale","globalInjection","VueMarkdownEditor","use","enUS","githubTheme","Hljs","hljs","vfm","createVfm","app","createApp","pinia","createPinia","VueTippy","directive","HighchartsVue","StorylinesViewer","mount"],"mappings":"2JAAA,W,yECAA,W,sFCAA,W,qBCAA,IAAIA,EAAM,CAAC,CAAC,IAAM,iBAAiB,QAAU,WAAW,QAAU,IAAI,QAAU,YAAY,QAAU,KAAK,CAAC,IAAM,kBAAkB,QAAU,gBAAgB,QAAU,IAAI,QAAU,oBAAoB,QAAU,KAAK,CAAC,IAAM,gBAAgB,QAAU,cAAc,QAAU,IAAI,QAAU,iBAAiB,QAAU,KAAK,CAAC,IAAM,mBAAmB,QAAU,oCAAoC,QAAU,IAAI,QAAU,gEAAgE,QAAU,KAAK,CAAC,IAAM,qBAAqB,QAAU,kBAAkB,QAAU,IAAI,QAAU,uBAAuB,QAAU,KAAK,CAAC,IAAM,aAAa,QAAU,iBAAiB,QAAU,IAAI,QAAU,wBAAwB,QAAU,KAAK,CAAC,IAAM,cAAc,QAAU,uGAAuG,QAAU,IAAI,QAAU,+IAA+I,QAAU,KAAK,CAAC,IAAM,mBAAmB,QAAU,cAAc,QAAU,IAAI,QAAU,cAAc,QAAU,KAAK,CAAC,IAAM,eAAe,QAAU,OAAO,QAAU,IAAI,QAAU,SAAS,QAAU,KAAK,CAAC,IAAM,sBAAsB,QAAU,eAAe,QAAU,IAAI,QAAU,mBAAmB,QAAU,KAAK,CAAC,IAAM,2BAA2B,QAAU,mBAAmB,QAAU,IAAI,QAAU,yBAAyB,QAAU,KAAK,CAAC,IAAM,mBAAmB,QAAU,WAAW,QAAU,IAAI,QAAU,iCAAiC,QAAU,KAAK,CAAC,IAAM,qBAAqB,QAAU,aAAa,QAAU,IAAI,QAAU,mBAAmB,QAAU,KAAK,CAAC,IAAM,wBAAwB,QAAU,gBAAgB,QAAU,IAAI,QAAU,qBAAqB,QAAU,KAAK,CAAC,IAAM,wBAAwB,QAAU,sBAAsB,QAAU,IAAI,QAAU,qCAAqC,QAAU,KAAK,CAAC,IAAM,uBAAuB,QAAU,gBAAgB,QAAU,IAAI,QAAU,uBAAuB,QAAU,KAAK,CAAC,IAAM,oBAAoB,QAAU,SAAS,QAAU,IAAI,QAAU,aAAa,QAAU,KAAK,CAAC,IAAM,sBAAsB,QAAU,WAAW,QAAU,IAAI,QAAU,UAAU,QAAU,KAAK,CAAC,IAAM,kBAAkB,QAAU,OAAO,QAAU,IAAI,QAAU,UAAU,QAAU,KAAK,CAAC,IAAM,mBAAmB,QAAU,QAAQ,QAAU,IAAI,QAAU,QAAQ,QAAU,KAAK,CAAC,IAAM,sBAAsB,QAAU,mBAAmB,QAAU,IAAI,QAAU,+BAA+B,QAAU,KAAK,CAAC,IAAM,wBAAwB,QAAU,kBAAkB,QAAU,IAAI,QAAU,8BAA8B,QAAU,KAAK,CAAC,IAAM,kBAAkB,QAAU,mBAAmB,QAAU,IAAI,QAAU,gCAAgC,QAAU,KAAK,CAAC,IAAM,0BAA0B,QAAU,6BAA6B,QAAU,IAAI,QAAU,yCAAyC,QAAU,KAAK,CAAC,IAAM,sBAAsB,QAAU,yBAAyB,QAAU,IAAI,QAAU,kCAAkC,QAAU,KAAK,CAAC,IAAM,uBAAuB,QAAU,gCAAgC,QAAU,IAAI,QAAU,wCAAwC,QAAU,KAAK,CAAC,IAAM,qBAAqB,QAAU,mCAAmC,QAAU,IAAI,QAAU,mCAAmC,QAAU,KAAK,CAAC,IAAM,sBAAsB,QAAU,wBAAwB,QAAU,IAAI,QAAU,uCAAuC,QAAU,KAAK,CAAC,IAAM,wBAAwB,QAAU,6BAA6B,QAAU,IAAI,QAAU,kCAAkC,QAAU,KAAK,CAAC,IAAM,+BAA+B,QAAU,+HAAiI,QAAU,IAAI,QAAU,4JAA4J,QAAU,KAAK,CAAC,IAAM,cAAc,QAAU,OAAO,QAAU,IAAI,QAAU,OAAO,QAAU,KAAK,CAAC,IAAM,qBAAqB,QAAU,oEAAoE,QAAU,IAAI,QAAU,2EAA2E,QAAU,KAAK,CAAC,IAAM,eAAe,QAAU,QAAQ,QAAU,IAAI,QAAU,QAAQ,QAAU,KAAK,CAAC,IAAM,cAAc,QAAU,OAAO,QAAU,IAAI,QAAU,OAAO,QAAU,KAAK,CAAC,IAAM,qBAAqB,QAAU,eAAe,QAAU,IAAI,QAAU,iBAAiB,QAAU,KAAK,CAAC,IAAM,qBAAqB,QAAU,gBAAgB,QAAU,IAAI,QAAU,kBAAkB,QAAU,KAAK,CAAC,IAAM,0BAA0B,QAAU,qEAAqE,QAAU,IAAI,QAAU,iFAAiF,QAAU,KAAK,CAAC,IAAM,qBAAqB,QAAU,eAAe,QAAU,IAAI,QAAU,kBAAkB,QAAU,KAAK,CAAC,IAAM,0BAA0B,QAAU,wGAAwG,QAAU,IAAI,QAAU,uHAAuH,QAAU,KAAK,CAAC,IAAM,sBAAsB,QAAU,gBAAgB,QAAU,IAAI,QAAU,wBAAwB,QAAU,KAAK,CAAC,IAAM,2BAA2B,QAAU,iFAAiF,QAAU,IAAI,QAAU,6FAA6F,QAAU,KAAK,CAAC,IAAM,sBAAsB,QAAU,gBAAgB,QAAU,IAAI,QAAU,uBAAuB,QAAU,KAAK,CAAC,IAAM,cAAc,QAAU,OAAO,QAAU,IAAI,QAAU,UAAU,QAAU,KAAK,CAAC,IAAM,sBAAsB,QAAU,gBAAgB,QAAU,IAAI,QAAU,qBAAqB,QAAU,KAAK,CAAC,IAAM,qBAAqB,QAAU,gBAAgB,QAAU,IAAI,QAAU,qBAAqB,QAAU,KAAK,CAAC,IAAM,gBAAgB,QAAU,SAAS,QAAU,IAAI,QAAU,YAAY,QAAU,KAAK,CAAC,IAAM,gBAAgB,QAAU,SAAS,QAAU,IAAI,QAAU,YAAY,QAAU,KAAK,CAAC,IAAM,cAAc,QAAU,OAAO,QAAU,IAAI,QAAU,SAAS,QAAU,KAAK,CAAC,IAAM,cAAc,QAAU,OAAO,QAAU,IAAI,QAAU,UAAU,QAAU,KAAK,CAAC,IAAM,iBAAiB,QAAU,UAAU,QAAU,IAAI,QAAU,oBAAoB,QAAU,KAAK,CAAC,IAAM,iBAAiB,QAAU,UAAU,QAAU,IAAI,QAAU,YAAY,QAAU,KAAK,CAAC,IAAM,gBAAgB,QAAU,SAAS,QAAU,IAAI,QAAU,UAAU,QAAU,KAAK,CAAC,IAAM,wBAAwB,QAAU,kBAAkB,QAAU,IAAI,QAAU,iCAAiC,QAAU,KAAK,CAAC,IAAM,qBAAqB,QAAU,eAAe,QAAU,IAAI,QAAU,gCAAgC,QAAU,KAAK,CAAC,IAAM,kBAAkB,QAAU,KAAK,QAAU,IAAI,QAAU,KAAK,QAAU,KAAK,CAAC,IAAM,sBAAsB,QAAU,SAAS,QAAU,IAAI,QAAU,YAAY,QAAU,KAAK,CAAC,IAAM,sBAAsB,QAAU,YAAY,QAAU,IAAI,QAAU,aAAa,QAAU,KAAK,CAAC,IAAM,uBAAuB,QAAU,YAAY,QAAU,IAAI,QAAU,oBAAoB,QAAU,KAAK,CAAC,IAAM,sBAAsB,QAAU,gBAAgB,QAAU,IAAI,QAAU,4BAA4B,QAAU,KAAK,CAAC,IAAM,8BAA8B,QAAU,iFAAiF,QAAU,IAAI,QAAU,6FAA6F,QAAU,KAAK,CAAC,IAAM,0BAA0B,QAAU,0EAA0E,QAAU,IAAI,QAAU,0FAA0F,QAAU,KAAK,CAAC,IAAM,sBAAsB,QAAU,qBAAqB,QAAU,IAAI,QAAU,wCAAwC,QAAU,KAAK,CAAC,IAAM,uBAAuB,QAAU,sBAAsB,QAAU,IAAI,QAAU,uCAAuC,QAAU,KAAK,CAAC,IAAM,yBAAyB,QAAU,oBAAoB,QAAU,IAAI,QAAU,6BAA6B,QAAU,KAAK,CAAC,IAAM,sBAAsB,QAAU,eAAe,QAAU,IAAI,QAAU,oBAAoB,QAAU,KAAK,CAAC,IAAM,0BAA0B,QAAU,wBAAwB,QAAU,IAAI,QAAU,gCAAgC,QAAU,KAAK,CAAC,IAAM,6BAA6B,QAAU,UAAU,QAAU,IAAI,QAAU,UAAU,QAAU,KAAK,CAAC,IAAM,uBAAuB,QAAU,mCAAmC,QAAU,IAAI,QAAU,qEAAqE,QAAU,KAAK,CAAC,IAAM,sBAAsB,QAAU,UAAU,QAAU,IAAI,QAAU,wBAAwB,QAAU,KAAK,CAAC,IAAM,gCAAgC,QAAU,oBAAoB,QAAU,IAAI,QAAU,uBAAuB,QAAU,KAAK,CAAC,IAAM,4BAA4B,QAAU,8CAA8C,QAAU,IAAI,QAAU,yDAAyD,QAAU,KAAK,CAAC,IAAM,qBAAqB,QAAU,cAAc,QAAU,IAAI,QAAU,oBAAoB,QAAU,KAAK,CAAC,IAAM,0BAA0B,QAAU,4BAA4B,QAAU,IAAI,QAAU,kCAAkC,QAAU,KAAK,CAAC,IAAM,8BAA8B,QAAU,iBAAiB,QAAU,IAAI,QAAU,cAAc,QAAU,KAAK,CAAC,IAAM,gCAAgC,QAAU,mBAAmB,QAAU,IAAI,QAAU,gBAAgB,QAAU,KAAK,CAAC,IAAM,4BAA4B,QAAU,SAAS,QAAU,IAAI,QAAU,cAAc,QAAU,KAAK,CAAC,IAAM,sBAAsB,QAAU,eAAe,QAAU,IAAI,QAAU,qBAAqB,QAAU,KAAK,CAAC,IAAM,wBAAwB,QAAU,2BAA2B,QAAU,IAAI,QAAU,2BAA2B,QAAU,KAAK,CAAC,IAAM,sBAAsB,QAAU,eAAe,QAAU,IAAI,QAAU,yBAAyB,QAAU,KAAK,CAAC,IAAM,0BAA0B,QAAU,OAAO,QAAU,IAAI,QAAU,MAAM,QAAU,KAAK,CAAC,IAAM,0BAA0B,QAAU,OAAO,QAAU,IAAI,QAAU,SAAS,QAAU,KAAK,CAAC,IAAM,2BAA2B,QAAU,QAAQ,QAAU,IAAI,QAAU,OAAO,QAAU,KAAK,CAAC,IAAM,4BAA4B,QAAU,gBAAgB,QAAU,IAAI,QAAU,+BAA+B,QAAU,KAAK,CAAC,IAAM,0BAA0B,QAAU,oBAAoB,QAAU,IAAI,QAAU,yBAAyB,QAAU,KAAK,CAAC,IAAM,gCAAgC,QAAU,2DAA2D,QAAU,IAAI,QAAU,2DAA2D,QAAU,KAAK,CAAC,IAAM,0BAA0B,QAAU,6BAA6B,QAAU,IAAI,QAAU,iCAAiC,QAAU,KAAK,CAAC,IAAM,8BAA8B,QAAU,oDAAoD,QAAU,IAAI,QAAU,qDAAqD,QAAU,KAAK,CAAC,IAAM,mBAAmB,QAAU,YAAY,QAAU,IAAI,QAAU,oBAAoB,QAAU,KAAK,CAAC,IAAM,yBAAyB,QAAU,iBAAiB,QAAU,IAAI,QAAU,4BAA4B,QAAU,KAAK,CAAC,IAAM,kBAAkB,QAAU,aAAa,QAAU,IAAI,QAAU,mBAAmB,QAAU,KAAK,CAAC,IAAM,wBAAwB,QAAU,kBAAkB,QAAU,IAAI,QAAU,sCAAsC,QAAU,KAAK,CAAC,IAAM,0BAA0B,QAAU,gCAAgC,QAAU,IAAI,QAAU,4CAA4C,QAAU,KAAK,CAAC,IAAM,wBAAwB,QAAU,yBAAyB,QAAU,IAAI,QAAU,wCAAwC,QAAU,KAAK,CAAC,IAAM,gCAAgC,QAAU,qBAAqB,QAAU,IAAI,QAAU,oCAAoC,QAAU,KAAK,CAAC,IAAM,+BAA+B,QAAU,sBAAsB,QAAU,IAAI,QAAU,+BAA+B,QAAU,KAAK,CAAC,IAAM,6BAA6B,QAAU,0BAA0B,QAAU,IAAI,QAAU,gDAAgD,QAAU,KAAK,CAAC,IAAM,8BAA8B,QAAU,SAAS,QAAU,IAAI,QAAU,WAAW,QAAU,KAAK,CAAC,IAAM,8BAA8B,QAAU,SAAS,QAAU,IAAI,QAAU,SAAS,QAAU,KAAK,CAAC,IAAM,kCAAkC,QAAU,aAAa,QAAU,IAAI,QAAU,mBAAmB,QAAU,KAAK,CAAC,IAAM,+BAA+B,QAAU,wCAAwC,QAAU,IAAI,QAAU,wCAAwC,QAAU,KAAK,CAAC,IAAM,2BAA2B,QAAU,KAAK,QAAU,IAAI,QAAU,KAAK,QAAU,KAAK,CAAC,IAAM,gCAAgC,QAAU,iCAAiC,QAAU,IAAI,QAAU,yDAAyD,QAAU,KAAK,CAAC,IAAM,wCAAwC,QAAU,oDAAoD,QAAU,IAAI,QAAU,kFAAkF,QAAU,KAAK,CAAC,IAAM,wCAAwC,QAAU,+DAAmE,QAAU,IAAI,QAAU,8DAA8D,QAAU,KAAK,CAAC,IAAM,oCAAoC,QAAU,sDAAsD,QAAU,IAAI,QAAU,YAAY,QAAU,yEAAyE,CAAC,IAAM,8BAA8B,QAAU,0BAA0B,QAAU,IAAI,QAAU,+BAA+B,QAAU,KAAK,CAAC,IAAM,gCAAgC,QAAU,eAAe,QAAU,IAAI,QAAU,oBAAoB,QAAU,KAAK,CAAC,IAAM,8BAA8B,QAAU,qBAAqB,QAAU,IAAI,QAAU,0BAA0B,QAAU,KAAK,CAAC,IAAM,8BAA8B,QAAU,OAAO,QAAU,IAAI,QAAU,YAAY,QAAU,KAAK,CAAC,IAAM,6BAA6B,QAAU,MAAM,QAAU,IAAI,QAAU,WAAW,QAAU,KAAK,CAAC,IAAM,sBAAsB,QAAU,SAAS,QAAU,IAAI,QAAU,eAAe,QAAU,KAAK,CAAC,IAAM,yBAAyB,QAAU,YAAY,QAAU,IAAI,QAAU,uBAAuB,QAAU,KAAK,CAAC,IAAM,6BAA6B,QAAU,sCAAsC,QAAU,IAAI,QAAU,4CAA4C,QAAU,KAAK,CAAC,IAAM,oCAAoC,QAAU,qDAAqD,QAAU,IAAI,QAAU,yDAAyD,QAAU,KAAK,CAAC,IAAM,oCAAoC,QAAU,wFAAwF,QAAU,IAAI,QAAU,wGAAwG,QAAU,KAAK,CAAC,IAAM,yBAAyB,QAAU,sCAAsC,QAAU,IAAI,QAAU,2DAA2D,QAAU,KAAK,CAAC,IAAM,4BAA4B,QAAU,uBAAuB,QAAU,IAAI,QAAU,qCAAqC,QAAU,KAAK,CAAC,IAAM,4BAA4B,QAAU,uBAAuB,QAAU,IAAI,QAAU,6BAA6B,QAAU,KAAK,CAAC,IAAM,wBAAwB,QAAU,WAAW,QAAU,IAAI,QAAU,cAAc,QAAU,KAAK,CAAC,IAAM,qBAAqB,QAAU,OAAO,QAAU,IAAI,QAAU,SAAS,QAAU,KAAK,CAAC,IAAM,sBAAsB,QAAU,QAAQ,QAAU,IAAI,QAAU,cAAc,QAAU,KAAK,CAAC,IAAM,8BAA8B,QAAU,iBAAiB,QAAU,IAAI,QAAU,yBAAyB,QAAU,KAAK,CAAC,IAAM,0BAA0B,QAAU,aAAa,QAAU,IAAI,QAAU,uBAAuB,QAAU,KAAK,CAAC,IAAM,0BAA0B,QAAU,aAAa,QAAU,IAAI,QAAU,oBAAoB,QAAU,KAAK,CAAC,IAAM,2BAA2B,QAAU,cAAc,QAAU,IAAI,QAAU,oBAAoB,QAAU,KAAK,CAAC,IAAM,gCAAgC,QAAU,mBAAmB,QAAU,IAAI,QAAU,sBAAsB,QAAU,KAAK,CAAC,IAAM,yBAAyB,QAAU,WAAW,QAAU,IAAI,QAAU,SAAS,QAAU,KAAK,CAAC,IAAM,4BAA4B,QAAU,eAAe,QAAU,IAAI,QAAU,kBAAkB,QAAU,KAAK,CAAC,IAAM,wBAAwB,QAAU,UAAU,QAAU,IAAI,QAAU,UAAU,QAAU,KAAK,CAAC,IAAM,uBAAuB,QAAU,gCAAgC,QAAU,IAAI,QAAU,mDAAmD,QAAU,KAAK,CAAC,IAAM,2BAA2B,QAAU,aAAa,QAAU,IAAI,QAAU,mBAAmB,QAAU,KAAK,CAAC,IAAM,4BAA4B,QAAU,cAAc,QAAU,IAAI,QAAU,mBAAmB,QAAU,KAAK,CAAC,IAAM,sBAAsB,QAAU,iBAAiB,QAAU,IAAI,QAAU,+BAA+B,QAAU,KAAK,CAAC,IAAM,sBAAsB,QAAU,cAAc,QAAU,IAAI,QAAU,0BAA0B,QAAU,KAAK,CAAC,IAAM,wBAAwB,QAAU,gCAAgC,QAAU,IAAI,QAAU,uCAAuC,QAAU,KAAK,CAAC,IAAM,6BAA6B,QAAU,4EAA4E,QAAU,IAAI,QAAU,mFAAmF,QAAU,KAAK,CAAC,IAAM,iCAAiC,QAAU,WAAW,QAAU,IAAI,QAAU,WAAW,QAAU,KAAK,CAAC,IAAM,mCAAmC,QAAU,aAAa,QAAU,IAAI,QAAU,aAAa,QAAU,KAAK,CAAC,IAAM,0BAA0B,QAAU,QAAQ,QAAU,IAAI,QAAU,UAAU,QAAU,MAAMA,EAAIC,QAAU,CAAC,MAAM,UAAU,UAAU,UAAU,WAAWC,EAAOC,QAAUH,G,kCCA36kB,W,oCCAA,W,6DCAA,W,2DCAA,W,6DCAA,W,oCCAA,W,yDCAA,W,sFCAA,W,6DCAA,W,oCCAA,W,ytoBCAA,W,kCCAA,W,gFCAA,W,yDCAA,W,yDCAA,W,yDCEA,MAAMI,EAAa,CACjBC,GAAI,MACJC,MAAO,0BAGH,SAAUC,EAAOC,EAAUC,EAAYC,EAAYC,EAAYC,EAAWC,GAC9E,MAAMC,EAAyBC,8BAAkB,eAEjD,OAAQC,yBAAcC,gCAAoB,MAAOb,EAAY,EAC1DY,yBAAcE,yBAAaJ,EAAwB,CAClDK,IAAKX,EAAKY,OAAOC,U,wCCEhB,MAAMC,EAAeC,eAAY,OAAQ,CAC5CC,MAAOA,KAAA,CACHC,YAAa,KAEjBC,QAAS,CACL,yBACI,MAAMC,EAGI,0BACV,IACI,MAAMC,QAAiBC,MAAMF,EAAS,oBAAqB,CACvDG,OAAQ,MACRC,YAAa,YAGjB,GAAIH,EAASI,GAAI,CACb,MAAMC,QAAaL,EAASM,OAC5BC,KAAKV,YAAcQ,OAEnBG,QAAQC,MAAM,qCAEpB,MAAOA,GACLD,QAAQC,MAAM,gCAAiCA,QChCjD,MAAOC,UAAYC,OAE7BC,cAAcC,GAA2B,IAAAC,EACrCP,KAAKQ,MAAMC,OAAmC,QAA7BF,EAAID,EAAGI,OAAOC,YAAe,IAAAJ,IAAI,KAC9CD,EAAGI,OAAOC,OACVC,SAASC,MAAQb,KAAKc,GAAGR,EAAGS,KAAKF,QAIzCG,UACsB7B,EAAaa,KAAKiB,SARxCC,eAAA,CADCC,eAAM,SAAU,CAAEC,WAAW,K,qECClC,MAAMC,EAA2B,IAAgB,EAAQ,CAAC,CAAC,SAASjD,KAErD,Q,YCNfgC,OAAIkB,cAAc,CAAC,oBAAqB,mBAAoB,sBCD5D,MAAMrD,EAAa,CAAEE,MAAO,YACtBoD,EAAa,CAAEpD,MAAO,kDACtBqD,EAAa,CAAErD,MAAO,uBACtBsD,EAAa,CAAEtD,MAAO,iEACtBuD,EAAa,CAAEvD,MAAO,sBACtBwD,EAAa,CAAExD,MAAO,iEACtByD,EAAa,CAAEzD,MAAO,sBAEtB,SAAUC,EAAOC,EAAUC,EAAYC,EAAYC,EAAYC,EAAWC,GAC9E,MAAMmD,EAAyBjD,8BAAkB,eAEjD,OAAQC,yBAAcC,gCAAoB,MAAOb,EAAY,CAC3D6D,gCAAoB,MAAOP,EAAYQ,6BAAiB1D,EAAKyC,GAAG,4BAA8B,IAAMiB,6BAAiB1D,EAAK2D,UAAY,KAAM,GAC5IF,gCAAoB,MAAON,EAAY,CACrCM,gCAAoB,MAAOL,EAAY,CACrCQ,yBAAaJ,EAAwB,CACnCvB,GAAI,CAAE4B,KAAM,eACZ/D,MAAO,oCACPgE,OAAQ,IACP,CACDC,QAASC,qBAAS,IAAM,CACtBP,gCAAoB,SAAUJ,EAAY,KAAOK,6BAAiB1D,EAAKyC,GAAG,yBAA0B,KAEtGwB,EAAG,MAGPR,gCAAoB,MAAOH,EAAY,CACrCM,yBAAaJ,EAAwB,CACnCvB,GAAI,CAAE4B,KAAM,oBACZ/D,MAAO,oCACPgE,OAAQ,IACP,CACDC,QAASC,qBAAS,IAAM,CACtBP,gCAAoB,SAAUF,EAAYG,6BAAiB1D,EAAKyC,GAAG,uBAAwB,KAE7FwB,EAAG,UCjCC,MAAOC,UAAiBnC,OAClC,eACI,MAAMoC,EAAYrD,IAClB,OAAOqD,EAAUlD,YAAY0C,UAAY,S,UCAjD,MAAM,EAA2B,IAAgB,EAAQ,CAAC,CAAC,SAAS,KAErD,QCPf,MAAM/D,EAAa,CAAEE,MAAO,oBACtBoD,EAAa,CAAEpD,MAAO,cACtBqD,EAAa,CAAErD,MAAO,QACtBsD,EAAa,CAAEtD,MAAO,uCACtBuD,EAAa,CAAEvD,MAAO,qBACtBwD,EAAa,CAAExD,MAAO,gBACtByD,EAAa,CACjB5C,IAAK,EACLb,MAAO,gBAEHsE,EAAa,CAAEtE,MAAO,+BACtBuE,EAAa,CAAEvE,MAAO,6DACtBwE,EAAc,CAAC,eACfC,EAAc,CAClB5D,IAAK,EACLb,MAAO,oCAEH0E,EAA2Bf,gCAAoB,OAAQ,CAAE3D,MAAO,oDAAsD,CAC7G2D,gCAAoB,MAAO,CACtC,YAAa,UACb,YAAa,UACb,kBAAmB,QACnB,oBAAqB,IACrBgB,QAAS,YACTC,MAAO,KACPC,OAAQ,KACRC,MAAO,8BACN,CACYnB,gCAAoB,OAAQ,CACvCoB,EAAG,6WACH,YAAa,gBAGf,GACEC,EAAc,CAAEhF,MAAO,yCACvBiF,EAAc,CAClBpE,IAAK,EACLb,MAAO,iCAEHkF,EAAc,CAClBrE,IAAK,EACLb,MAAO,iCAEHmF,EAAc,CAAC,WACfC,EAAc,CAAC,YACfC,EAA2B1B,gCAAoB,KAAM,KAAM,MAAO,GAClE2B,EAAc,CAAEtF,MAAO,QACvBuF,EAAc,CAAEvF,MAAO,aACvBwF,EAAc,CAAExF,MAAO,aACvByF,EAAc,CAAEzF,MAAO,WACvB0F,EAAc,CAAE1F,MAAO,iBACvB2F,EAAc,CAAC,WACfC,EAAc,CAClBC,KAAM,SACN7F,MAAO,qBAEH8F,EAAc,CAAE9F,MAAO,2BAEvB,SAAUC,EAAOC,EAAUC,EAAYC,EAAYC,EAAYC,EAAWC,GAC9E,MAAMwF,EAAqBtF,8BAAkB,WACvCuF,EAA8BvF,8BAAkB,oBAChDiD,EAAyBjD,8BAAkB,eAC3CwF,EAAgCxF,8BAAkB,sBAClDyF,EAA6BzF,8BAAkB,mBAC/C0F,EAAoB1F,8BAAkB,UAE5C,OAAQC,yBAAcC,gCAAoB,MAAOb,EAAY,CACzDI,EAAKkG,WA+IHC,gCAAoB,IAAI,IA9IvB3F,yBAAcC,gCAAoB2F,cAAW,CAAEzF,IAAK,GAAK,CACxD8C,gCAAoB,MAAOP,EAAY,CACrCO,gCAAoB,MAAON,EAAY,CACrCM,gCAAoB,MAAOL,EAAYM,6BAAiB1D,EAAKqG,aAAerG,EAAKyC,GAAG,sBAAwBzC,EAAKyC,GAAG,yBAA0B,GAC9IgB,gCAAoB,SAAU,CAC5B3D,MAAO,gBACPwG,QAASrG,EAAO,KAAOA,EAAO,GAAMsG,GAAiBvG,EAAKwG,aACzD9C,6BAAqC,OAApB1D,EAAKyG,WAAsBzG,EAAKyC,GAAG,uBAAyBzC,EAAKyC,GAAG,yBAA0B,KAEpHgB,gCAAoB,MAAOJ,EAAY,CACrCI,gCAAoB,QAASH,EAAY,CACtC,SAAUtD,EAAK0G,WACXlG,yBAAcC,gCAAoB,OAAQ8C,EAAY,MACvD4C,gCAAoB,IAAI,GAC5BQ,6BAAiB,IAAMjD,6BAAiB1D,EAAKyC,GAAG,gBAAkB,KAAM,KAE1EgB,gCAAoB,MAAOW,EAAY,CACrCwC,4BAAgBnD,gCAAoB,QAAS,CAC3CoD,KAAM,OACNC,QAAS7G,EAAO,KAAOA,EAAO,GAAMsG,GAAiBvG,EAAK+G,cAAe,GACzEC,OAAQ/G,EAAO,KAAOA,EAAO,GAAMsG,GAAiBvG,EAAK+G,cAAe,GACxEE,QAAShH,EAAO,KAAOA,EAAO,GAAMsG,IACtBvG,EAAK6B,OAAQ,EACb7B,EAAK0G,UAAUQ,MAAO,EACtBlH,EAAKmH,cAEnB,sBAAuBlH,EAAO,KAAOA,EAAO,GAAMsG,GAAkBvG,EAAKkH,KAAQX,GACjFzG,MAAOsH,4BAAgB,CAAC,sBAAuB,CAAE,cAAepH,EAAK6B,QAAU7B,EAAK0G,UAAUQ,SAC7F,KAAM,IAAK,CACZ,CAACG,gBAAarH,EAAKkH,QAErBN,4BAAgBnD,gCAAoB,MAAOY,EAAY,CACrDZ,gCAAoB,KAAM,KAAM,EAC7BjD,wBAAW,GAAOC,gCAAoB2F,cAAW,KAAMkB,wBAAYtH,EAAKuH,cAAgBC,IAC/EhH,yBAAcC,gCAAoB,KAAM,CAC9CE,IAAK6G,EAAUN,KACfO,YAAaC,2BAAgBnB,GAAiBvG,EAAK2H,WAAWH,EAAUN,MAAQ,CAAC,YACjFpH,MAAOsH,4BAAgB,CACP,uCACAI,EAAUI,gBAAkB,cAAgB,MAE3DlE,6BAAiB8D,EAAUN,MAAO,GAAI5C,KACvC,SAEL,KAAM,CACP,CAACuD,WAAQ7H,EAAK+G,kBAGjB/G,EAAK8H,SACDtH,yBAAcC,gCAAoB,OAAQ8D,EAAa,CACtDC,EACAf,gCAAoB,OAAQqB,EAAapB,6BAAiB1D,EAAKyC,GAAG,uBAAwB,MAE5F0D,gCAAoB,IAAI,GAC3BnG,EAAKqG,cACD7F,yBAAcC,gCAAoB,SAAU,CAC3CE,IAAK,EACL2F,QAASrG,EAAO,KAAOA,EAAO,GAElD,IAAI8H,IAAU/H,EAAKgI,sBAAwBhI,EAAKgI,wBAAwBD,IACpDjI,MAAOsH,4BAAgB,CAAC,sDAAuD,CAAE,cAAepH,EAAK6B,UACpG6B,6BAAiB1D,EAAKyC,GAAG,gBAAiB,IAC7C0D,gCAAoB,IAAI,GAC3BnG,EAAKqG,cACD7F,yBAAcC,gCAAoB,SAAU,CAC3CE,IAAK,EACL2F,QAASrG,EAAO,KAAOA,EAAO,GAElD,IAAI8H,IAAU/H,EAAKiI,cAAgBjI,EAAKiI,gBAAgBF,IACpCjI,MAAOsH,4BAAgB,CAAC,sDAAuD,CAAE,cAAepH,EAAK6B,UACpG6B,6BAAiB1D,EAAKyC,GAAG,uBAAwB,IACpD0D,gCAAoB,IAAI,GACP,YAApBnG,EAAKkI,YACD1H,yBAAcC,gCAAoB,MAAOsE,EAAa,CACrDnB,yBAAaiC,EAAoB,CAC/BsC,KAAM,OACNC,MAAO,UACPtI,MAAO,oBAGXqG,gCAAoB,IAAI,GAC3BnG,EAAKqG,cACD7F,yBAAcC,gCAAoB,MAAOuE,EAAa,CACrDvB,gCAAoB,KAAM,KAAM,EAC7BjD,wBAAW,GAAOC,gCAAoB2F,cAAW,KAAMkB,wBAAYtH,EAAKqI,iBAAmBC,IAClF9H,yBAAcC,gCAAoB,KAAM,CAC9CE,IAAK2H,EAAQzI,GACbyG,QAAUC,GAAiBvG,EAAKuI,cAAcD,GAC9CxI,MAAOsH,4BAAgB,CAAC,qBAAsB,CAAE,cAAepH,EAAKwI,iBAAmBF,EAAQzI,KAAOG,EAAKwI,gBAAgB3I,OAC1H6D,6BAAiB1D,EAAKyI,WAAWH,EAAQI,UAAW,GAAIzD,KACzD,QAENxB,gCAAoB,SAAU,CAC5BkF,UAAW3I,EAAKwI,iBAAmBxI,EAAKwI,gBAAgBI,gBAAkB5I,EAAKkH,KAC/EpH,MAAO,sDACPwG,QAASrG,EAAO,KAAOA,EAAO,GAAMsG,GAAiBvG,EAAK6I,gBACzDnF,6BAAiB1D,EAAKyC,GAAG,wBAAyB,EAAGyC,MAE1DiB,gCAAoB,IAAI,KAE9BhB,EACA1B,gCAAoB,MAAO2B,EAAa,CACtC3B,gCAAoB,KAAM4B,EAAa3B,6BAAiB1D,EAAKyC,GAAG,0BAA2B,GAC3FgB,gCAAoB,IAAK,KAAMC,6BAAiB1D,EAAKyC,GAAG,iCAAkC,KAE5FmB,yBAAakC,EAA6B,CACxCgD,SAAU9I,EAAK8I,SACfC,kBAAmB/I,EAAKgJ,eACxBC,cAAejJ,EAAKkJ,aACpBC,oBAAqBnJ,EAAKoJ,mBACzB,KAAM,EAAG,CAAC,WAAY,oBAAqB,gBAAiB,0BAEjE3F,gCAAoB,MAAO6B,EAAa,CACrCtF,EAAKqG,cACD7F,yBAAcC,gCAAoB,SAAU,CAC3CE,IAAK,EACL2F,QAASrG,EAAO,KAAOA,EAAO,GAAMsG,GAAiBvG,EAAKqJ,cAAa,IACvEvJ,MAAO,iBACN4D,6BAAiB1D,EAAKyC,GAAG,uBAAwB,IACpD0D,gCAAoB,IAAI,GAC5B1C,gCAAoB,MAAO8B,EAAa,CACtC3B,yBAAaJ,EAAwB,CACnCvB,GAAI,CAAE4B,KAAM,QACZC,OAAQ,IACP,CACDC,QAASC,qBAAS,IAAM,CACtBP,gCAAoB,SAAU+B,EAAa9B,6BAAiB1D,EAAKyC,GAAG,gBAAiB,KAEvFwB,EAAG,IAELR,gCAAoB,SAAU,CAC5B6C,QAASrG,EAAO,KAAOA,EAAO,GAAMsG,GAAkBvG,EAAK8H,QAAoC9H,EAAKsJ,KAAKC,KAAK,0BAAzCvJ,EAAKwJ,oBAC1E1J,MAAO,qCACN4D,6BAAiB1D,EAAKyC,GAAG,gBAAiB,GAC7CmB,yBAAamC,EAA+B,CAC1ClC,KAAM,yBACN4F,QAASzJ,EAAKyC,GAAG,+CAA+CzC,EAAKkH,UACrEwC,KAAMzJ,EAAO,MAAQA,EAAO,IAAOsG,GAAiBvG,EAAKwJ,qBACxD,KAAM,EAAG,CAAC,iBAGhB,KAENxJ,EAAKkG,YAAkC,WAApBlG,EAAKkI,YACpB1H,yBAAcE,yBAAauF,EAAmB,CAC7CtF,IAAK,EACLgJ,QAAS3J,EAAK2J,QACdC,oBAAqB5J,EAAK4J,oBAC1BC,aAAc7J,EAAK6J,aACnBf,SAAU9I,EAAK8I,SACfgB,OAAQ9J,EAAK8J,OACbrD,WAAYzG,EAAKyG,WACjBsD,OAAQ/J,EAAK+J,OACbC,eAAgBhK,EAAKgK,eACrBC,cAAejK,EAAKkK,eACpBC,aAAcnK,EAAKoK,iBACnBC,gBAAiBrK,EAAKsK,cACtBC,IAAK,cACJ,CACDC,UAAWxG,qBAAUyG,GAAc,CACjChH,gCAAoB,SAAU,CAC5B3D,MAAO,gBACPwG,QAASoB,2BAAgBnB,GAAiBkE,EAAUT,eAAiBhK,EAAKsJ,KAAKC,KAAK,eAAiBvJ,EAAKwG,WAAa,CAAC,UACvH9C,6BAAqC,OAApB1D,EAAKyG,WAAsBzG,EAAKyC,GAAG,uBAAyBzC,EAAKyC,GAAG,yBAA0B,EAAGgD,GACrH7B,yBAAamC,EAA+B,CAC1ClC,KAAM,cACN4F,QAASzJ,EAAKyC,GAAG,2BACjBiH,KAAMzJ,EAAO,MAAQA,EAAO,IAAOsG,GAAiBvG,EAAKwG,aACxD,KAAM,EAAG,CAAC,cAEfkE,cAAe1G,qBAAS,IAAM,CAC5BJ,yBAAaoC,EAA4B,CACvC2E,QAAS,sBACT,gBAAiB,kGACjB7K,MAAO,oCACN,CACDiE,QAASC,qBAAS,IAAM,CACtBP,gCAAoB,KAAMiC,EAAahC,6BAAiB1D,EAAKyC,GAAG,wBAAyB,GACzFmB,yBAAakC,EAA6B,CACxCgD,SAAU9I,EAAK8I,SACfC,kBAAmB/I,EAAKgJ,eACxBC,cAAejJ,EAAKkJ,aACpBC,oBAAqBnJ,EAAKoJ,mBACzB,KAAM,EAAG,CAAC,WAAY,oBAAqB,gBAAiB,wBAC/D3F,gCAAoB,MAAOmC,EAAa,CACtCnC,gCAAoB,SAAU,CAC5B3D,MAAO,sDACPwG,QAASrG,EAAO,MAAQA,EAAO,IAAOsG,GAAiBvG,EAAKqJ,cAAa,KACxE,cAGPpF,EAAG,MAGPA,EAAG,GACF,EAAG,CAAC,UAAW,sBAAuB,eAAgB,WAAY,SAAU,aAAc,SAAU,iBAAkB,gBAAiB,eAAgB,qBAC1JkC,gCAAoB,IAAI,K,kGCxQhC,MAAMyE,GAAeC,IAAMC,yBAAa,mBAAmBD,EAAEA,IAAIE,0BAAcF,GACzEjL,GAAa,CAAEE,MAAO,iDACtBoD,GAAa,CAAEvC,IAAK,GACpBwC,GAAa,CAAErD,MAAO,QACtBsD,GAAa,CAAEtD,MAAO,wBACtBuD,GAA2BuH,GAAa,IAAmBnH,gCAAoB,QAAS,CAAE3D,MAAO,gBAAkB,gBAAiB,IACpIwD,GAAa,CAAExD,MAAO,QACtByD,GAA2BqH,GAAa,IAAmBnH,gCAAoB,OAAQ,CAAE3D,MAAO,WAAa,MAAO,IACpHsE,GAAa,CAAC,YACdC,GAAa,CAAC,YACdC,GAAc,CAAExE,MAAO,aACvByE,GAAc,CAAEzE,MAAO,kBACvB0E,GAAc,CAAC,YACfM,GAAc,CAAEhF,MAAO,kBACvBiF,GAAc,CAAC,YACfC,GAAc,CAAElF,MAAO,kBACvBmF,GAAc,CAAC,YACfC,GAA4B0F,GAAa,IAAmBnH,gCAAoB,KAAM,KAAM,MAAO,IACnG0B,GAAc,CAClBxE,IAAK,EACLb,MAAO,8BAEHsF,GAA2B4F,+BAAmB,0yBAAu1B,GACr4B1F,GAAc,CAAExF,MAAO,kCACvByF,GAA2ByF,+BAAmB,0yBAAu1B,GACr4BvF,GAAc,CAAE3F,MAAO,kCACvB4F,GAAc,CAAE5F,MAAO,kCACvB8F,GAAc,CAClBjF,IAAK,EACLb,MAAO,yBAEHmL,GAA2BD,+BAAmB,uxBAAo0B,GACl3BE,GAAc,CAAEpL,MAAO,kCACvBqL,GAAc,CAAErL,MAAO,kCACvBsL,GAAc,CAAEtL,MAAO,aACvBuL,GAAc,CAAEvL,MAAO,qBACvBwL,GAA4BV,GAAa,IAAmBnH,gCAAoB,OAAQ,CAAE3D,MAAO,qBAAuB,MAAO,IAC/HyL,GAAc,CAClB5K,IAAK,EACLb,MAAO,sBAEH0L,GAAc,CAAE1L,MAAO,kCACvB2L,GAAc,CAAC,SACfC,GAAc,CAAC,SACfC,GAAc,CAClBhL,IAAK,EACLb,MAAO,yDAGH,SAAUC,GAAOC,EAAUC,EAAYC,EAAYC,EAAYC,EAAWC,GAC9E,MAAMuL,EAA2BrL,8BAAkB,iBAC7CwF,EAAgCxF,8BAAkB,sBAExD,OAAQC,yBAAcC,gCAAoB,MAAOb,GAAY,CACxDI,EAAK6L,cACHrL,yBAAcC,gCAAoB,MAAOyC,GAAY,CACpDO,gCAAoB,MAAON,GAAY,CACrCM,gCAAoB,MAAOL,GAAY,CACrCC,GACAI,gCAAoB,MAAOH,GAAY,CACrCsD,4BAAgBnD,gCAAoB,QAAS,CAC3CoD,KAAM,OACN,sBAAuB5G,EAAO,KAAOA,EAAO,GAAMsG,GAAkBvG,EAAK6L,aAAarJ,MAAS+D,GAC/FuF,YAAa,cACbhM,MAAO,sBACN,KAAM,KAAM,CACb,CAACuH,gBAAarH,EAAK6L,aAAarJ,SAElCe,GACAE,gCAAoB,SAAU,CAC5B6C,QAASrG,EAAO,KAAOA,EAAO,GAAKyH,2BAAgBnB,GAAiBvG,EAAK+L,YAAY/L,EAAKgM,WAAa,GAAK,CAAC,UAC7GrD,SAA8B,IAApB3I,EAAKgM,WACflM,MAAO,qCACN4D,6BAAiB1D,EAAKyC,GAAG,gCAAiC,EAAG2B,IAChEX,gCAAoB,SAAU,CAC5B6C,QAASrG,EAAO,KAAOA,EAAO,GAAKyH,2BAAgBnB,GAAiBvG,EAAK+L,YAAY/L,EAAKgM,WAAa,GAAK,CAAC,UAC7GrD,SAAU3I,EAAKiM,OACfnM,MAAO,qCACN4D,6BAAiB1D,EAAKyC,GAAG,4BAA6B,EAAG4B,MAE9DZ,gCAAoB,MAAOa,GAAa,CACtCb,gCAAoB,OAAQc,GAAab,6BAAiB1D,EAAKyC,GAAG,2BAA4B,GAC9FmE,4BAAgBnD,gCAAoB,QAAS,CAC3CoD,KAAM,WACN/G,MAAO,mDACP,sBAAuBG,EAAO,KAAOA,EAAO,GAAMsG,GAAkBvG,EAAKkM,UAAa3F,GACtFoC,SAAU3I,EAAKkM,WAAoF,YAAvElM,EAAKmM,oBAAoBnM,EAAK6L,aAAaO,MAAMpM,EAAKqM,aAClFC,SAAUrM,EAAO,KAAOA,EAAO,GAAKyH,2BAAgBnB,GAAiBvG,EAAKsJ,KAAKC,KAAK,cAAcvJ,EAAKgM,YAAgB,CAAC,WACvH,KAAM,GAAIxH,IAAc,CACzB,CAAC+H,oBAAiBvM,EAAKkM,aAEzBzI,gCAAoB,OAAQqB,GAAapB,6BAAiB1D,EAAKyC,GAAG,8BAA+B,GACjGmE,4BAAgBnD,gCAAoB,QAAS,CAC3CoD,KAAM,WACN/G,MAAO,mDACP,sBAAuBG,EAAO,KAAOA,EAAO,GAAMsG,GAAkBvG,EAAKwM,YAAejG,GACxFoC,SAAU3I,EAAKyM,YACfH,SAAUrM,EAAO,KAAOA,EAAO,GAAKyH,2BAAgBnB,GAAiBvG,EAAK0M,oBAAsB,CAAC,WAChG,KAAM,GAAI3H,IAAc,CACzB,CAACwH,oBAAiBvM,EAAKwM,eAEzB/I,gCAAoB,OAAQuB,GAAatB,6BAAiB1D,EAAKyC,GAAG,8BAA+B,GACjGmE,4BAAgBnD,gCAAoB,QAAS,CAC3CoD,KAAM,WACN/G,MAAO,mDACP,sBAAuBG,EAAO,KAAOA,EAAO,GAAMsG,GAAkBvG,EAAKyM,YAAelG,GACxFoC,SAAU3I,EAAKwM,YACfF,SAAUrM,EAAO,KAAOA,EAAO,GAAKyH,2BAAgBnB,GAAiBvG,EAAK2M,oBAAsB,CAAC,WAChG,KAAM,GAAI1H,IAAc,CACzB,CAACsH,oBAAiBvM,EAAKyM,qBAK/BvH,GACoC,IAAnClF,EAAK6L,aAAaO,MAAMQ,QACpBpM,yBAAcC,gCAAoB,MAAO0E,GAAa,CACrD1B,gCAAoB,SAAU,CAC5B6C,QAASrG,EAAO,KAAOA,EAAO,GACxB,KACID,EAAKqM,WAAa,EAClBrM,EAAK6M,oBAAqB,EAC1B7M,EAAK8M,gBAGfhN,MAAOsH,4BAAgB,CAAC,2CAA+D,GAAnBpH,EAAKqM,YAAoBrM,EAAK6M,mBAAsC,eAAjB,kBACtH,CACDzH,GACA3B,gCAAoB,OAAQ6B,GAAa5B,6BAAiB1D,EAAKyC,GAAG,4BAA6B,IAC9F,GACHgB,gCAAoB,SAAU,CAC5B6C,QAASrG,EAAO,MAAQA,EAAO,IACzB,KACID,EAAKqM,WAAa,EAClBrM,EAAK6M,oBAAqB,EAC1B7M,EAAK8M,gBAGfhN,MAAOsH,4BAAgB,CAAC,2CAA+D,GAAnBpH,EAAKqM,YAAoBrM,EAAK6M,mBAAsC,eAAjB,kBACtH,CACDtH,GACA9B,gCAAoB,OAAQgC,GAAa/B,6BAAiB1D,EAAKyC,GAAG,6BAA8B,IAC/F,GACHgB,gCAAoB,SAAU,CAC5B6C,QAASrG,EAAO,MAAQA,EAAO,IACzB,KACID,EAAK6M,oBAAqB,EAC1B7M,EAAK8M,gBAGfhN,MAAOsH,4BAAgB,CAAC,2CAA4CpH,EAAK6M,mBAAqB,eAAiB,kBAC9G,CACDpJ,gCAAoB,OAAQiC,GAAahC,6BAAiB1D,EAAKyC,GAAG,2BAA4B,IAC7F,OAEJjC,yBAAcC,gCAAoB,MAAOmF,GAAa,CACrDnC,gCAAoB,SAAU,CAC5B6C,QAASrG,EAAO,MAAQA,EAAO,IACzB,KACID,EAAK6M,oBAAqB,EAC1B7M,EAAK8M,gBAGfhN,MAAOsH,4BAAgB,CAAC,2CAA6CpH,EAAK6M,mBAAsC,eAAjB,kBAC9F,CACD5B,GACAxH,gCAAoB,OAAQyH,GAAaxH,6BAAiB1D,EAAKyC,GAAG,kCAAmC,IACpG,GACHgB,gCAAoB,SAAU,CAC5B6C,QAASrG,EAAO,MAAQA,EAAO,IACzB,KACID,EAAK6M,oBAAqB,EAC1B7M,EAAK8M,gBAGfhN,MAAOsH,4BAAgB,CAAC,6BAA8BpH,EAAK6M,mBAAqB,eAAiB,kBAChG,CACDpJ,gCAAoB,OAAQ0H,GAAazH,6BAAiB1D,EAAKyC,GAAG,2BAA4B,IAC7F,MAETgB,gCAAoB,MAAO,KAAM,CAC/BA,gCAAoB,MAAO2H,GAAa,CACtC3H,gCAAoB,OAAQ4H,GAAa3H,6BAAiB1D,EAAKyC,GAAG,0BAA4B,IAAK,GACnG6I,IACEtL,EAAK6M,oBAAsB7M,EAAKkM,WAC7B1L,yBAAcC,gCAAoB,MAAO8K,GAAa,CACrD9H,gCAAoB,QAAS+H,GAAa9H,6BAAiB1D,EAAKyC,GAAG,8BAAgC,IAAK,GACxGgB,gCAAoB,SAAU,CAC5B8G,IAAK,eACLtD,QAAShH,EAAO,MAAQA,EAAO,IAAOsG,IAC5BvG,EAAKsJ,KAAKC,KAAK,gBAAgBvJ,EAAKgM,YACpChM,EAAK+M,QAAWxG,EAAOzC,OAA4BkJ,QAE7DA,MAAOhN,EAAKmM,oBAAoBnM,EAAK6L,aAAaO,MAAMpM,EAAKqM,cAC5D,EACA7L,wBAAW,GAAOC,gCAAoB2F,cAAW,KAAMkB,wBAAY2F,OAAOC,KAAKlN,EAAKmN,SAASC,OAAQC,GAAsB,YAAXA,GAAwBC,IAC/H9M,yBAAcC,gCAAoB,SAAU,CAClDE,IAAK2M,EACLN,MAAOM,GACN5J,6BAAiB4J,GAAQ,EAAG5B,MAC7B,OACH,GAAID,OAETtF,gCAAoB,IAAI,KAE7BnG,EAAK6M,oBACDrM,yBAAcE,yBAAakL,EAA0B,CACpDjL,IAAK,EACL4J,IAAK,SACLgD,OAAQvN,EAAK6L,aACbvJ,KAAMtC,EAAKsC,KACX0J,WAAYhM,EAAKgM,WACjBwB,YAAavN,EAAO,MAAQA,EAAO,IAAOsG,GAAiBvG,EAAKyN,MAAM,eACtEC,eAAgBzN,EAAO,MAAQA,EAAO,IAAM,CAAC0N,EAAaC,GAAO,IAAU5N,EAAKyN,MAAM,uBAAwBE,EAAaC,KAC1H,KAAM,EAAG,CAAC,SAAU,OAAQ,iBAC9BpN,yBAAcE,yBAAamN,qCAAyB7N,EAAKmN,QAAQnN,EAAKmM,oBAAoBnM,EAAK6L,aAAaO,MAAMpM,EAAKqM,eAAgB,CACtI9B,IAAK,SACL5J,IAAKX,EAAKqM,WAAarM,EAAKmM,oBAAoBnM,EAAK6L,aAAaO,MAAMpM,EAAKqM,aAC7ED,MAAOpM,EAAK6L,aAAaO,MAAMpM,EAAKqM,YACpCzC,oBAAqB5J,EAAK4J,oBAC1BtH,KAAMtC,EAAKsC,KACXwL,IAAK9N,EAAK8N,IACVjE,aAAc7J,EAAK6J,aACnB2C,YAAaxM,EAAKwM,YAClBuB,gBAAiB/N,EAAK+N,gBACtBP,YAAavN,EAAO,MAAQA,EAAO,IAAOsG,GAAiBvG,EAAKyN,MAAM,gBACrE,KAAM,GAAI,CAAC,QAAS,sBAAuB,OAAQ,MAAO,eAAgB,cAAe,2BAGnGjN,yBAAcC,gCAAoB,MAAOkL,GAAa,CACrDlI,gCAAoB,OAAQ,KAAMC,6BAAiB1D,EAAKyC,GAAG,yBAA0B,MAE3FmB,yBAAamC,EAA+B,CAC1ClC,KAAM,gBAAgB7D,EAAKgM,WAC3BvC,QACUzJ,EAAKyC,GAAG,oCAAqC,CACzCD,MAAOxC,EAAK6L,aAAarJ,QAGvCkH,KAAMzJ,EAAO,MAAQA,EAAO,IAAOsG,IACzBvG,EAAKgO,gBAAgBhO,EAAKmM,oBAAoBnM,EAAK6L,aAAaO,MAAMpM,EAAKqM,aAAcrM,EAAK+M,SAC9F/M,EAAK2M,oBACL3M,EAAK0M,sBAEfuB,SAAUjO,EAAKkO,kBACd,KAAM,EAAG,CAAC,OAAQ,UAAW,aAChCtK,yBAAamC,EAA+B,CAC1ClC,KAAM,cAAc7D,EAAKgM,WACzBvC,QACUzJ,EAAKyC,GAAG,oCAAqC,CACzCD,MAAOxC,EAAK6L,aAAarJ,QAGvCkH,KAAMzJ,EAAO,MAAQA,EAAO,IAAOsG,GAAiBvG,EAAKmO,mBACzDF,SAAUhO,EAAO,MAAQA,EAAO,IAAOsG,GAAiBvG,EAAKkM,WAAalM,EAAKkM,YAC9E,KAAM,EAAG,CAAC,OAAQ,cCrHlB,IAAKkC,IAAZ,SAAYA,GACRA,EAAA,eACAA,EAAA,iBACAA,EAAA,aACAA,EAAA,iBACAA,EAAA,iBACAA,EAAA,iBACAA,EAAA,yBACAA,EAAA,qBACAA,EAAA,sBATJ,CAAYA,QAAS,KC1IrB,MAAMxO,GAAa,CAAEE,MAAO,SACtBoD,GAAa,CAAEpD,MAAO,qBACtBqD,GAAa,CAAErD,MAAO,kBACtBsD,GAAa,CAAC,YACdC,GAAa,CAAEvD,MAAO,qBACtBwD,GAA0BG,gCAAoB,MAAO,CACzDkB,OAAQ,OACRD,MAAO,OACPD,QAAS,YACTG,MAAO,8BACN,CACYnB,gCAAoB,OAAQ,CAAEoB,EAAG,0CAC5C,GACEtB,GAAa,CAAEzD,MAAO,QACtBsE,GAA0BX,gCAAoB,KAAM,CAAE3D,MAAO,gDAAkD,MAAO,GACtHuE,GAAa,CACjB1D,IAAK,EACLb,MAAO,OAEHwE,GAAc,CAAExE,MAAO,wBACvByE,GAAc,CAAEzE,MAAO,4BAEvB,SAAUC,GAAOC,EAAUC,EAAYC,EAAYC,EAAYC,EAAWC,GAC9E,MAAMgO,EAA0B9N,8BAAkB,gBAC5C+N,EAAuB/N,8BAAkB,aACzCwF,EAAgCxF,8BAAkB,sBAExD,OAAQC,yBAAcC,gCAAoB,MAAOb,GAAY,CAC3D6D,gCAAoB,MAAOP,GAAY,CACrCO,gCAAoB,OAAQN,GAAYO,6BAAiB1D,EAAKyC,GAAG,0BAA2B,CAC9E8L,IAAKvO,EAAKwO,aAAa5B,UACtB,GACfnJ,gCAAoB,SAAU,CAC5B3D,MAAO,uEACPD,GAAI,YACJyG,QAASrG,EAAO,KAAOA,EAAO,GAAMsG,GAAiBvG,EAAKyO,eAC1D9F,UAAW3I,EAAK0O,WAAa1O,EAAKwO,aAAa5B,OAAS,GACvD,CACDnJ,gCAAoB,MAAOJ,GAAY,CACrCC,GACAG,gCAAoB,OAAQF,GAAYG,6BAAiB1D,EAAKyC,GAAG,8BAA+B,MAEjG,EAAGW,MAERgB,GAC8B,IAA7BpE,EAAKwO,aAAa5B,QACdpM,yBAAcC,gCAAoB,MAAO4D,GAAY,CACpDZ,gCAAoB,OAAQa,GAAaZ,6BAAiB1D,EAAKyC,GAAG,6BAA8B,MAElG0D,gCAAoB,IAAI,GAC5BS,4BAAgBnD,gCAAoB,KAAMc,GAAa,CACrDX,yBAAa0K,EAAsB,CACjCK,WAAY3O,EAAKwO,aACjB,sBAAuBvO,EAAO,KAAOA,EAAO,GAAMsG,GAAkBvG,EAAKwO,aAAgBjI,GACzFqI,OAAQ,UACRC,SAAU7O,EAAK8O,eACfhP,MAAO,kCACP,WAAY,QACX,CACDiP,KAAM/K,qBAAS,EAAGgL,UAASC,WAAY,EACpCzO,yBAAcE,yBAAa2N,EAAyB,CACnD1N,IAAK,GAAGqO,EAAQnL,QAAQoL,IACxBC,MAAOF,EACPpF,oBAAqB5J,EAAK4J,oBAC1BC,aAAc7J,EAAK6J,aACnBvH,KAAMtC,EAAKsC,KACX6M,OAAQnP,EAAKoP,UACbC,SAAW9I,GAAiBvG,EAAKsJ,KAAKC,KAAK,GAAGyF,EAAQnL,QAAQoL,MAC7D,KAAM,EAAG,CAAC,QAAS,sBAAuB,eAAgB,OAAQ,SAAU,gBAEjFhL,EAAG,GACF,EAAG,CAAC,aAAc,cACpB,KAAM,CACP,CAAC4D,WAAQ7H,EAAKwO,aAAa5B,WAE5BpM,wBAAW,GAAOC,gCAAoB2F,cAAW,KAAMkB,wBAAYtH,EAAKwO,aAAc,CAACU,EAAOI,KACrF9O,yBAAcE,yBAAaqF,EAA+B,CAChEpF,IAAK,GAAGuO,EAAMrL,QAAQyL,IACtBzL,KAAM,GAAGqL,EAAMrL,QAAQyL,IACvB7F,QAASzJ,EAAKyC,GAAG,8BAA+B,CAAEoB,KAAMqL,EAAMrL,OAC9D6F,KAAOnD,GAAiBvG,EAAKuP,YAAYL,IACxC,KAAM,EAAG,CAAC,OAAQ,UAAW,WAC9B,QClFR,MAAMtE,GAAeC,IAAMC,yBAAa,mBAAmBD,EAAEA,IAAIE,0BAAcF,GACzEjL,GAAa,CAAEE,MAAO,qDACtBoD,GAAa,CAAEpD,MAAO,iFACtBqD,GAAa,CAAC,WACdC,GAA2BwH,GAAa,IAAmBnH,gCAAoB,MAAO,CAC1F3D,MAAO,uDACP6E,OAAQ,OACRD,MAAO,OACPD,QAAS,cACTG,MAAO,8BACN,CACYnB,gCAAoB,OAAQ,CAAEoB,EAAG,saAC5C,IACExB,GAAa,CACjBD,IAEIE,GAA2BsH,GAAa,IAAmBnH,gCAAoB,SAAU,CAAE3D,MAAO,oGAAsG,CAC/L2D,gCAAoB,MAAO,CACtCmB,MAAO,6BACP4K,KAAM,UACN9K,MAAO,OACPC,OAAQ,OACRF,QAAS,aACR,CACYhB,gCAAoB,OAAQ,CACvC,YAAa,UACboB,EAAG,80BAGL,IACEtB,GAAa,CAAEzD,MAAO,0BACtBsE,GAAa,CAAEtE,MAAO,4CACtBuE,GAAa,CAAEvE,MAAO,eACtBwE,GAAc,CAAC,MACfC,GAAc,CAAEzE,MAAO,qBACvB0E,GAA4BoG,GAAa,IAAmBnH,gCAAoB,MAAO,CAC3FkB,OAAQ,OACRD,MAAO,OACPD,QAAS,YACTG,MAAO,8BACN,CACYnB,gCAAoB,OAAQ,CAAEoB,EAAG,kKAC5C,IACEC,GAAc,CAAEhF,MAAO,QAEvB,SAAUC,GAAOC,EAAUC,EAAYC,EAAYC,EAAYC,EAAWC,GAC9E,MAAMoP,EAA8BlP,8BAAkB,oBAChDmP,EAAmBC,8BAAkB,SAE3C,OAAQnP,yBAAcC,gCAAoB,KAAMb,GAAY,CAC1D6D,gCAAoB,MAAOP,GAAY,CACrC0D,6BAAiBpG,yBAAcC,gCAAoB,SAAU,CAC3DX,MAAO,sGACPwG,QAASrG,EAAO,KAAOA,EAAO,GAAK,IAAMD,EAAKyN,MAAM,SAAUzN,EAAKkP,QACnEU,QAAS5P,EAAKyC,GAAG,wBAChBY,GAAY,EAAGF,KAAc,CAC9B,CAACuM,EAAkB,CAAEG,UAAW,MAAOC,aAAa,EAAOC,aAAa,MAE1EzM,GACEtD,EAAKgQ,QAQH7J,gCAAoB,IAAI,IAPvB3F,yBAAcE,yBAAa+O,EAA6B,CACvD3P,MAAO,gBACPyN,OAAQvN,EAAKiQ,YACbtP,IAAKX,EAAKkQ,SACVtG,oBAAqB5J,EAAK4J,oBAC1BuG,SAAUnQ,EAAKoQ,WACd,KAAM,EAAG,CAAC,SAAU,sBAAuB,gBAGpD3M,gCAAoB,MAAOF,GAAY,CACrCE,gCAAoB,QAASW,GAAY,CACvCuC,6BAAiBjD,6BAAiB1D,EAAKyC,GAAG,4BAA8B,KAAM,GAC9EgB,gCAAoB,OAAQY,GAAYX,6BAAiB1D,EAAKqQ,WAAY,KAE5E5M,gCAAoB,SAAU,CAC5B3D,MAAO,uEACPD,GAAI,QAAQG,EAAKkP,MAAMrL,YACtB,CACDJ,gCAAoB,MAAOc,GAAa,CACtCC,GACAf,gCAAoB,OAAQqB,GAAapB,6BAAiB1D,EAAKyC,GAAG,4BAA6B,MAEhG,EAAG6B,QCxEE,MAAOgM,WAAsBvO,OAAGwO,eAAAxI,GAAA,SAAAA,GAAAyI,gBAAA,qBAAAA,gBAAA,mCAAAA,gBAAA,4BAAAA,gBAAA,oBAAAA,gBAAA,gBAMhC,GAAIA,gBAAA,gBACH,GAACA,gBAAA,mBACE,IAAEA,gBAAA,iBACJ,IAAEA,gBAAA,wBAC2BC,GAEzC9N,UACIhB,KAAKsO,YAActO,KAAKuN,MACxBvN,KAAK0O,UAAY1O,KAAKuN,MAAMrL,MAAQ,GACpClC,KAAKqO,SAAU,EAMnBI,UAAUM,GAA4B,IAAAC,EAElC,IAAIhP,KAAKiP,YAAT,CA4CA,GAxCAjP,KAAKiP,YAAcC,OAAOC,YACtB,QAAQnP,KAAK0O,gBACb,CACIU,WAAW,EACXC,SAAU,kCACVC,SAAU,CACNC,QAAS,oBAEbC,oBAAqBT,GAExBU,IACG,MAAMlC,EAAQmC,KAAKC,MAAMF,GACnBG,EAAU,GAAG5P,KAAKiI,oBAAoB1C,eAAevF,KAAKW,QAAQ4M,EAAM1M,MAAMgP,YAGpF,GAAI7P,KAAKkI,aAAa0H,GAAW,GAAKrC,EAAM1M,MAAMgP,MAAQ7P,KAAKuN,MAAMrL,KACjE4N,MACI9P,KAAKc,GAAG,gCAAiC,CACrCoB,KAAMqL,EAAM1M,MAAMgP,QAK1BE,WAAW,IAAM/P,KAAKiP,YAAYe,OAAQ,SACvC,CACH,MAAM1B,EAAc,CAChBpM,KAAMqL,EAAM1M,MAAMgP,KAClBjE,OAAQ2B,EACR0C,IAAK,IAGTjQ,KAAK8L,MAAM,OAAQ,CAAEoE,SAAUlQ,KAAKuN,MAAOkC,SAAUnB,IACrDtO,KAAKsO,YAAcA,EACnBtO,KAAK0O,UAAYJ,EAAYpM,KAC7BlC,KAAKuO,UAAY,UAMEO,KAAV,QAAjBE,EAAAD,EAAajP,YAAI,IAAAkP,OAAA,EAAjBA,EAAmBmB,KAAmB,CACtC,MAAMC,EAAUrB,EAAajP,KAAKqQ,IAClCnQ,KAAKiP,YAAYvD,OAAO2E,UAAUC,QAAQ,CAAEH,IAAKC,SAEjDpQ,KAAKuQ,mBAAmBxB,GAG5B/O,KAAKiP,YAAYvD,OAAO6B,MAAMgC,QAAQiB,OAAOzB,IAOjDwB,mBAAmBxB,GAA4B,IAAA0B,EAC3C,GAAiC,SAAX,QAAlBA,EAAA1B,EAAaxB,aAAK,IAAAkD,OAAA,EAAlBA,EAAoBvL,MAAgB,CACpC,MAAMwL,EAA0B,OAAZ3B,QAAY,IAAZA,OAAY,EAAZA,EAAc4B,OAAyB7Q,KAC3D,GAAI4Q,EAAY,KAAAE,EAEZ,MAAMR,EAAU,CAEZ,GAAgB,OAAZrB,QAAY,IAAZA,OAAY,EAAZA,EAAc4B,OAAyBzO,QAAoB,OAAZ6M,QAAY,IAAZA,GAAmB,QAAP6B,EAAZ7B,EAAc8B,aAAK,IAAAD,OAAA,EAAnBA,EAAqB/P,MAAMgP,UAC3Ea,EAAWI,IAAKC,GAAoB,GAAGA,EAAI7O,QAAQ6O,EAAIC,MAI9DhR,KAAKiP,YAAYvD,OAAO2E,UAAUC,QAAQ,CAAEH,IAAKC,EAAQa,KAAK,cAGlE,GAAgB,OAAZlC,QAAY,IAAZA,KAAc4B,QAAuB,OAAZ5B,QAAY,IAAZA,KAAc4B,OAA4B1F,OAAQ,CAG3E,IAAIyF,EAA0B,OAAZ3B,QAAY,IAAZA,OAAY,EAAZA,EAAc4B,OAA4BG,IAAKH,GAA2B,CACxFA,EAAOzO,QACJyO,EAAO7Q,OAEd,QAA2BgP,IAAvBC,EAAamC,MAAqB,KAAAC,EAAAC,EAElC,MAAMC,EAAW,CAAmB,QAAnBF,EAACpC,EAAamC,aAAK,IAAAC,GAAO,QAAPA,EAAlBA,EAAoBtQ,aAAK,IAAAsQ,OAAA,EAAzBA,EAA2BtB,MAAMyB,OAAyB,QAAnBF,EAACrC,EAAamC,aAAK,IAAAE,OAAA,EAAlBA,EAAoBG,YAC9Eb,EAAWc,QAAQH,GAIvB,IAAIjB,EAAUM,EAAW,GAAGI,IAAI,CAACxO,EAAGqL,IAAQ+C,EAAWI,IAAKhR,GAASA,EAAK6N,IAAMsD,KAAK,MAGrFjR,KAAKiP,YAAYvD,OAAO2E,UAAUC,QAAQ,CAAEH,IAAKC,EAAQa,KAAK,UAhHlE/P,eAAA,CAAPuQ,kB,6BACOvQ,eAAA,CAAPuQ,kB,2CACOvQ,eAAA,CAAPuQ,kB,oCACOvQ,eAAA,CAAPuQ,kB,sCCTL,MAAM,GAA2B,IAAgB,GAAQ,CAAC,CAAC,SAAS,IAAQ,CAAC,YAAY,qBAE1E,UCPf,MACMxT,GAAa,CACjB+F,KAAM,SACN7F,MAAO,qBAEHoD,GAAa,CAAEpD,MAAO,2BAEtB,SAAUC,GAAOC,EAAUC,EAAYC,EAAYC,EAAYC,EAAWC,GAC9E,MAAM2F,EAA6BzF,8BAAkB,mBAErD,OAAQC,yBAAcE,yBAAasF,EAA4B,CAC7D2E,QAAS3K,EAAK6D,KACd/D,MAAO,mCACP,gBAAiB,8GAChB,CACDiE,QAASC,qBAAS,IAAM,CACtBP,gCAAoB,KAAM7D,GAAY8D,6BAAiB1D,EAAKyJ,SAAU,GACtEhG,gCAAoB,MAAOP,GAAY,CACrCO,gCAAoB,SAAU,CAC5B3D,MAAO,iDACPwG,QAASrG,EAAO,KAAOA,EAAO,GAAKyH,2BAE7C,IAAIK,IAAU/H,EAAK0J,MAAQ1J,EAAK0J,QAAQ3B,GAAQ,CAAC,WACtCrE,6BAAiB1D,EAAKyC,GAAG,mBAAoB,GAChDgB,gCAAoB,SAAU,CAC5B3D,MAAO,gDACPwG,QAASrG,EAAO,KAAOA,EAAO,GAAKyH,2BAE7C,IAAIK,IAAU/H,EAAKiO,UAAYjO,EAAKiO,YAAYlG,GAAQ,CAAC,WAC9CrE,6BAAiB1D,EAAKyC,GAAG,kBAAmB,OAGnDwB,EAAG,GACF,EAAG,CAAC,YC1BT,IAAqBoP,GAArB,cAA6CtR,OAAGwO,eAAAxI,GAAA,SAAAA,GAAAyI,gBAAA,uBAAAA,gBAAA,oBAI5C9G,OACI/H,KAAK8L,MAAM,MACX9L,KAAK2H,KAAKgK,MAAM3R,KAAKkC,MAGzBoK,WACItM,KAAK8L,MAAM,UACX9L,KAAK2H,KAAKgK,MAAM3R,KAAKkC,QAVjBhB,eAAA,CAAPuQ,kB,+BACOvQ,eAAA,CAAPuQ,kB,4BAFgBC,GAAexQ,eAAA,CALnC0Q,eAAQ,CACLC,WAAY,CACR,kBAAmBC,YAGNJ,c,UCFrB,MAAM,GAA2B,IAAgB,GAAQ,CAAC,CAAC,SAAS,IAAQ,CAAC,YAAY,qBAE1E,U,wBCaf,IAAqBK,GAArB,cAA0C3R,OAAGwO,eAAAxI,GAAA,SAAAA,GAAAyI,gBAAA,qBAAAA,gBAAA,mCAAAA,gBAAA,oBAAAA,gBAAA,4BAAAA,gBAAA,yBAAAA,gBAAA,2BAAAA,gBAAA,+BAAAA,gBAAA,eAShC,GAAKA,gBAAA,oBAEC,IAAwBA,gBAAA,mBACzB,IAEd7N,UAEIkO,OAAO8C,MAAM,KACThS,KAAKiP,YAAcC,OAAOC,YACtB,YACA,CACIC,WAAW,EACXC,SAAU,kCACVC,SAAU,CACNC,QAAS,qBAGhBhC,IACGvN,KAAKiS,eAAe1E,EAAM2E,gBAMtC,MAAMC,EACFnS,KAAKyK,MAAMvF,OAASuH,GAAU2F,UACvBpS,KAAKyK,MAAM4H,MACZrS,KAAKyK,MAAMwF,IACX,CAACjQ,KAAKyK,OACN,GAEV,GAAIzK,KAAK6K,aAAe7K,KAAKoM,gBACzB,IAAK,MAAMkG,KAAKH,EACZA,EAAOG,GAAGC,cAAgB,yBAE3B,IAAKvS,KAAK6K,aAAe7K,KAAKoM,gBACjC,IAAK,MAAMkG,KAAKH,EACZA,EAAOG,GAAGC,cAAgBJ,EAAOG,GAAGC,cAAgB,IAAIC,QAAQ,oBAAqB,SAK9E1D,IAAXqD,GAAwBA,EAAOlH,SAC/BjL,KAAK6M,aAAesF,EAAOrB,IAAKvD,IAC5B,IAAImB,EAAY,GAEhB,GAAInB,EAAMgC,SAAWhC,EAAMgC,QAAQ1O,MAC/B6N,EAAYnB,EAAMgC,QAAQ1O,UACvB,CACH,MAAM3B,EAAOqO,EAAM0C,IAAIwC,MAAM,aAC7B/D,EAAYxP,EAAOA,EAAK,GAAGsT,QAAQ,YAAa,IAAIA,QAAQ,MAAO,KAAOjF,EAAM0C,IAEpF,MAAO,CACH/N,KAAMwM,KACHnB,MAMnBT,cAEI,IAAI4F,EAAgB,CAChB7R,MAAO,CACHgP,KAAM,UAAS7P,KAAK6M,aAAa5B,OAAS,IAE9C0H,SAAU,CACN9C,KAAM,IAEV+C,QAAS,CACLC,SAAS,IAGjBH,EACkB,OAAd1S,KAAKW,KACC2K,OAAOwH,OAAO,GAAIJ,EAAe,CAAE/R,KAAM,CAAEoS,aAAc,OACzDzH,OAAOwH,OAAO,GAAIJ,EAAe,CAAE/R,KAAM,CAAEoS,aAAc,OACnE/S,KAAKiP,YAAYvD,OAAO6B,MAAMgC,QAAQiB,OAAOkC,GAE7C,MAAMM,EAAmB,kCACzBhT,KAAKiP,YAAYvD,OAAO2E,UAAUC,QAAQ,CAAEH,IAAK6C,IAGrDf,eAAegB,GACX,MAAM1F,EAAQmC,KAAKC,MAAMsD,GACnBC,EAAW,GAAGlT,KAAKiI,oBAAoB1C,eAAevF,KAAKW,QAAQ4M,EAAM1M,MAAMgP,YAGrF,GAAI7P,KAAKkI,aAAagL,GAAY,EAC9BpD,MACI9P,KAAKc,GAAG,gCAAiC,CACrCoB,KAAMqL,EAAM1M,MAAMgP,QAK1BE,WAAW,IAAM/P,KAAKiP,YAAYe,OAAQ,SACvC,CACH,MAAM1B,EAAc,CAChBpM,KAAMqL,EAAM1M,MAAMgP,KAClBI,IAAKiD,GAGLlT,KAAKkI,aAAagL,GAClBlT,KAAKkI,aAAagL,IAAa,EAE/BlT,KAAKkI,aAAagL,GAAY,EAIlClT,KAAKiI,oBAAoBkK,OAAOnS,KAAKW,MAAMwS,KAAQ5F,EAAM1M,MAAMgP,KAAf,QAA4BH,KAAK0D,UAAU7F,EAAO,KAAM,IACxGvN,KAAK6M,aAAawG,KAAK/E,GAE3BtO,KAAKmN,iBAGTM,UAAUwF,GACN,MAAMtF,EAAM3N,KAAK6M,aAAayG,UAAWC,GAA2BA,EAAUrR,OAAS+Q,EAAU/C,SAAShO,MAC1G,IAAa,IAATyL,EAAY,CAEZ,MAAM6F,EAAU,GAAGxT,KAAKiI,oBAAoB1C,eAAevF,KAAKW,QAAQsS,EAAU/C,SAAShO,YAC3FlC,KAAKkI,aAAasL,IAAY,EACK,IAA/BxT,KAAKkI,aAAasL,IAClBxT,KAAKiI,oBAAoBkK,OAAOnS,KAAKW,MAAM8S,OAAUR,EAAU/C,SAAShO,KAAtB,SAGtD,MAAM0N,EAAU,GAAG5P,KAAKiI,oBAAoB1C,eAAevF,KAAKW,QAAQsS,EAAUxD,SAASvN,YACvFlC,KAAKkI,aAAa0H,GAClB5P,KAAKkI,aAAa0H,IAAY,EAE9B5P,KAAKkI,aAAa0H,GAAW,EAEjC5P,KAAKiI,oBAAoBkK,OAAOnS,KAAKW,MAAMwS,KACpCF,EAAUxD,SAASvN,KAAtB,QACAwN,KAAK0D,UAAUH,EAAUxD,SAAS7D,OAAQ,KAAM,IAGpDqH,EAAUxD,SAASQ,IAAM,GAAGjQ,KAAKiI,oBAAoB1C,eAAevF,KAAKW,QAAQsS,EAAUxD,SAASvN,YACpGlC,KAAK6M,aAAac,GAAO,CACrBzL,KAAM+Q,EAAUxD,SAASvN,KACzB+N,IAAKgD,EAAUxD,SAASQ,KAGhCjQ,KAAKmN,iBAGTS,YAAYL,GACR,MAAMI,EAAM3N,KAAK6M,aAAayG,UAAWC,GAA2BA,EAAUrR,OAASqL,EAAMrL,OAChF,IAATyL,IAEA3N,KAAKkI,aAAa,GAAGlI,KAAKiI,oBAAoB1C,eAAevF,KAAKW,QAAQ4M,EAAMrL,cAAgB,EACK,IAAjGlC,KAAKkI,aAAa,GAAGlI,KAAKiI,oBAAoB1C,eAAevF,KAAKW,QAAQ4M,EAAMrL,cAChFlC,KAAKiI,oBAAoBkK,OAAOnS,KAAKW,MAAM8S,OAAUlG,EAAMrL,KAAT,SAEtDlC,KAAK6M,aAAa6G,OAAO/F,EAAK,IAElC3N,KAAKmN,iBAGThC,cACI,GAAInL,KAAK2T,OASL,GAPArI,OAAOC,KAAKvL,KAAKyK,OAAOmJ,QAAS5U,WAGtBgB,KAAKyK,MAAMzL,KAIW,IAA7BgB,KAAK6M,aAAa5B,OAClBjL,KAAKyK,MAAMvF,KAAOuH,GAAUoH,MAC3B7T,KAAKyK,MAAqBwF,IAAM,QAC9B,GAAiC,IAA7BjQ,KAAK6M,aAAa5B,OAAc,CACvCjL,KAAKyK,MAAMvF,KAAOuH,GAAUoH,MAG5B,MAAMpE,EAAWzP,KAAK6M,aAAa,GAGnCvB,OAAOC,KAAKkE,GAAUmE,QAAS5U,IAG1BgB,KAAKyK,MAAqBzL,GAAOyQ,EAASzQ,UAG/CgB,KAAKyK,MAAMvF,KAAOuH,GAAU2F,UAG3BpS,KAAKyK,MAAyB4H,MAAQrS,KAAK6M,aAAaiE,IAAKvD,IACnD,IACAA,EACHrI,KAAMuH,GAAUoH,SAMhC7T,KAAK2T,QAAS,EAGlBxG,iBACInN,KAAK2T,QAAS,EACd3T,KAAK8L,MAAM,gBAlNP5K,eAAA,CAAPuQ,kB,6BACOvQ,eAAA,CAAPuQ,kB,2CACOvQ,eAAA,CAAPuQ,kB,4BACOvQ,eAAA,CAAPuQ,kB,oCACwBvQ,eAAA,CAAxBuQ,eAAK,CAAErP,SAAS,K,iCACSlB,eAAA,CAAzBuQ,eAAK,CAAErP,SAAS,K,mCACSlB,eAAA,CAAzBuQ,eAAK,CAAErP,SAAS,K,uCAPA2P,GAAY7Q,eAAA,CAPhC0Q,eAAQ,CACLC,WAAY,CACRiC,aAAcnF,GACd,qBAAsBoF,GACtBC,mBAGajC,c,UCfrB,MAAM,GAA2B,IAAgB,GAAQ,CAAC,CAAC,SAAS,MAErD,UCPf,MACM9T,GAAa,CAAEE,MAAO,QAEtB,SAAUC,GAAOC,EAAUC,EAAYC,EAAYC,EAAYC,EAAWC,GAC9E,MAAMuV,EAAyBrV,8BAAkB,eAEjD,OAAQC,yBAAcC,gCAAoB,MAAOb,GAAY,CAC3DgE,yBAAagS,EAAwB,CACnCjH,WAAY3O,EAAK6V,cACjB,sBAAuB5V,EAAO,KAAOA,EAAO,GAAMsG,GAAkBvG,EAAK6V,cAAiBtP,GAC1FjE,KAAMtC,EAAKsC,KACXwT,KAAM,OACN,aAAa,EACbC,iBAAiB,EACjBC,aAAc/V,EAAO,KAAOA,EAAO,GACxByB,IAEG1B,EAAK6V,cAAgBnU,EACrB1B,EAAKsV,QAAS,EACdtV,EAAKyN,MAAM,gBAGzBwI,WAAYjW,EAAKiW,YAChB,KAAM,EAAG,CAAC,aAAc,OAAQ,iB,iBCfvC,IAAqBC,GAArB,cAA2CnU,OAAGwO,eAAAxI,GAAA,SAAAA,GAC1CyI,gBAAA,sBAAAA,gBAAA,oBAAAA,gBAAA,0BAAAA,gBAAA,iBAKY,gCAA8BA,gBAAA,qBAC1B,IAAEA,gBAAA,eACT,GAAKA,gBAAA,qBAEE2F,EAAQ,QAAcC,WAAS5F,gBAAA,iBACxB,IAAI7O,KAAK0U,eAAe7F,gBAAA,wBAC5B,IAEnB7N,UAEItB,MAAMM,KAAK2U,WAAWC,KAAMC,IAExBA,EAAO9U,OAAO6U,KAET/W,IACGmC,KAAK8U,iBAAmBjX,GAE3BkX,IACG9U,QAAQC,MAAM6U,OAI1B/U,KAAKkU,cAAgBlU,KAAK4L,OAG9B0I,aAEI,MAAMU,EAAkBhV,KAAKiV,UAAUC,SAASlV,KAAKkU,cAAelU,KAAK8U,kBACrEE,EAAgBG,MAChBnV,KAAK8L,MAAM,gBAAiB9L,KAAKkU,eAAe,IAGhDpE,MAAM,0EACN7P,QAAQC,MAAM8U,EAAgBI,SAItCjK,cACInL,KAAK8L,MAAM,gBAAiB9L,KAAKkU,eACjClU,KAAK2T,QAAS,IA3CVzS,eAAA,CAAPuQ,kB,8BACOvQ,eAAA,CAAPuQ,kB,4BACOvQ,eAAA,CAAPuQ,kB,kCAJgB8C,GAAarT,eAAA,CALjC0Q,eAAQ,CACLC,WAAY,CACR,cAAewD,YAGFd,c,UCHrB,MAAM,GAA2B,IAAgB,GAAQ,CAAC,CAAC,SAAS,IAAQ,CAAC,YAAY,qBAE1E,UCPf,MAAMtL,GAAeC,IAAMC,yBAAa,mBAAmBD,EAAEA,IAAIE,0BAAcF,GACzEjL,GAAa,CAAEE,MAAO,SACtBoD,GAAa,CAAEpD,MAAO,+CACtBqD,GAA2ByH,GAAa,IAAmBnH,gCAAoB,OAAQ,CAAE3D,MAAO,kCAAoC,CAC3H2D,gCAAoB,MAAO,CACtCmB,MAAO,6BACPF,MAAO,KACPC,OAAQ,KACRF,QAAS,aACR,CACYhB,gCAAoB,OAAQ,CAAEoB,EAAG,2JAE9C,IACEzB,GAAa,CAAEtD,MAAO,6BACtBuD,GAAa,CAAEvD,MAAO,2BACtBwD,GAAa,CAAC,YACdC,GAAa,CACjB5C,IAAK,EACLb,MAAO,uBAEHsE,GAAa,CAAEtE,MAAO,2CACtBuE,GAAa,CAAEvE,MAAO,2BACtBwE,GAAc,CAAC,uBACfC,GAAc,CAAEzE,MAAO,2CACvB0E,GAAc,CAAE1E,MAAO,2BACvBgF,GAAc,CAAC,uBACfC,GAAc,CAAEjF,MAAO,sCACvBkF,GAAc,CAAElF,MAAO,2BAEvB,SAAUC,GAAOC,EAAUC,EAAYC,EAAYC,EAAYC,EAAWC,GAC9E,MAAM4W,EAA0B1W,8BAAkB,gBAC5C+N,EAAuB/N,8BAAkB,aAE/C,OAAQC,yBAAcC,gCAAoB,MAAOb,GAAY,CAC1DI,EAAK0O,YAAe1O,EAAK0O,WAA2C,IAA9B1O,EAAKkX,cAActK,QACrDpM,yBAAcC,gCAAoB,MAAO,CACxCE,IAAK,EACLb,MAAOsH,4BAAgB,CAAC,4GAA6G,CAAE+P,SAAUnX,EAAKoX,cACtJC,WAAYpX,EAAO,KAAOA,EAAO,GAAKyH,2BAAe,IAAO1H,EAAKmX,UAAW,EAAO,CAAC,aACpFG,YAAarX,EAAO,KAAOA,EAAO,GAAKyH,2BAAe,IAAO1H,EAAKmX,UAAW,EAAQ,CAAC,aACtFI,OAAQtX,EAAO,KAAOA,EAAO,GAAKyH,2BAAgBnB,GAAiBvG,EAAKwX,WAAWjR,GAAU,CAAC,cAC7F,CACD9C,gCAAoB,QAASP,GAAY,CACvCC,GACAM,gCAAoB,OAAQL,GAAY,CACtCK,gCAAoB,OAAQ,KAAM,CAChCA,gCAAoB,MAAO,KAAMC,6BAAiB1D,EAAKyC,GAAG,4BAA6B,GACvFgB,gCAAoB,MAAO,KAAM,CAC/BkD,6BAAiBjD,6BAAiB1D,EAAKyC,GAAG,oBAAsB,IAAK,GACrEgB,gCAAoB,OAAQJ,GAAYK,6BAAiB1D,EAAKyC,GAAG,wBAAyB,GAC1FkE,6BAAiB,IAAMjD,6BAAiB1D,EAAKyC,GAAG,wBAAyB,OAG7EgB,gCAAoB,QAAS,CAC3BoD,KAAM,OACN/G,MAAO,iBACPwM,SAAUrM,EAAO,KAAOA,EAAO,GAE/C,IAAI8H,IAAU/H,EAAKkJ,cAAgBlJ,EAAKkJ,gBAAgBnB,IACxC0P,WAAYzX,EAAK0O,WAChB,KAAM,GAAIpL,SAGhB,KACH6C,gCAAoB,IAAI,GAC3BnG,EAAK0O,YAAe1O,EAAK0O,WAA2C,IAA9B1O,EAAKkX,cAActK,OACtDhG,6BAAiBpG,yBAAcC,gCAAoB,OAAQ8C,GAAY,CACrEE,gCAAoB,IAAK,KAAMC,6BAAiB1D,EAAKyC,GAAG,yBAA0B,IACjF,MAAO,CACR,CAACoF,YAAS7H,EAAK0X,sBAAwB1X,EAAKkX,cAActK,UAE5DzG,gCAAoB,IAAI,GAC5BS,4BAAgBhD,yBAAa0K,EAAsB,CACjDK,WAAY3O,EAAKkX,cACjB,sBAAuBjX,EAAO,KAAOA,EAAO,GAAMsG,GAAkBvG,EAAKkX,cAAiB3Q,GAC1FzG,MAAO,uCACP+O,SAAU7O,EAAK2X,eACf,WAAY,MACX,CACD5I,KAAM/K,qBAAS,EAAGgL,UAASC,WAAY,EACpCzO,yBAAcE,yBAAauW,EAAyB,CACnDtW,IAAK,GAAGqO,EAAQnP,MAAMoP,IACtB2I,UAAW5I,EACXK,SAAUrP,EAAK6X,aACd,CACD9T,QAASC,qBAAS,IAAM,CACtBP,gCAAoB,MAAOW,GAAY,CACrCX,gCAAoB,QAASY,GAAYX,6BAAiB1D,EAAKyC,GAAG,wBAA0B,IAAK,GACjGmE,4BAAgBnD,gCAAoB,QAAS,CAC3C3D,MAAO,qBACP+G,KAAM,OACN,sBAAwBN,GAAkByI,EAAQ8I,QAAWvR,EAC7D+F,SAAUrM,EAAO,KAAOA,EAAO,GAE/C,IAAI8H,IAAU/H,EAAK2X,gBAAkB3X,EAAK2X,kBAAkB5P,KAC3C,KAAM,GAAIzD,IAAc,CACzB,CAAC+C,gBAAa2H,EAAQ8I,aAG1BrU,gCAAoB,MAAOc,GAAa,CACtCd,gCAAoB,QAASe,GAAad,6BAAiB1D,EAAKyC,GAAG,+BAAiC,IAAK,GACzGmE,4BAAgBnD,gCAAoB,QAAS,CAC3C3D,MAAO,qBACP+G,KAAM,OACN,sBAAwBN,GAAkByI,EAAQ+I,QAAWxR,EAC7D+F,SAAUrM,EAAO,KAAOA,EAAO,GAE/C,IAAI8H,IAAU/H,EAAK2X,gBAAkB3X,EAAK2X,kBAAkB5P,KAC3C,KAAM,GAAIjD,IAAc,CACzB,CAACuC,gBAAa2H,EAAQ+I,eAI5B9T,EAAG,GACF,KAAM,CAAC,YAAa,gBAEzBA,EAAG,GACF,EAAG,CAAC,aAAc,aAAc,CACjC,CAAC4D,YAAS7H,EAAK0X,sBAAwB1X,EAAKkX,cAActK,UAE5DhG,4BAAgBnD,gCAAoB,MAAOsB,GAAa,CACtDtB,gCAAoB,QAASuB,GAAatB,6BAAiB1D,EAAKyC,GAAG,kCAAoC,IAAK,GAC5GmE,4BAAgBnD,gCAAoB,QAAS,CAC3C3D,MAAO,qBACP+G,KAAM,OACN,sBAAuB5G,EAAO,KAAOA,EAAO,GAAMsG,GAAkBvG,EAAKgY,iBAAoBzR,GAC7F+F,SAAUrM,EAAO,KAAOA,EAAO,GAEvC,IAAI8H,IAAU/H,EAAK2X,gBAAkB3X,EAAK2X,kBAAkB5P,KACnD,KAAM,KAAM,CACb,CAACV,gBAAarH,EAAKgY,qBAEpB,KAAM,CACP,CAACnQ,WAAQ7H,EAAKkX,cAActK,OAAS,OCrI3C,MAAMhC,GAAeC,IAAMC,yBAAa,mBAAmBD,EAAEA,IAAIE,0BAAcF,GACzEjL,GAAa,CAAEE,MAAO,qDACtBoD,GAAa,CAAEpD,MAAO,qEACtBqD,GAAa,CAAC,WACdC,GAA2BwH,GAAa,IAAmBnH,gCAAoB,MAAO,CAC1FkB,OAAQ,OACRD,MAAO,OACPD,QAAS,cACTG,MAAO,8BACN,CACYnB,gCAAoB,OAAQ,CAAEoB,EAAG,saAC5C,IACExB,GAAa,CACjBD,IAEIE,GAAa,CAAExD,MAAO,6BACtByD,GAAa,CAAC,QAAS,MAAO,OAE9B,SAAUxD,GAAOC,EAAUC,EAAYC,EAAYC,EAAYC,EAAWC,GAC9E,MAAMqP,EAAmBC,8BAAkB,SAE3C,OAAQnP,yBAAcC,gCAAoB,KAAMb,GAAY,CAC1D6D,gCAAoB,MAAOP,GAAY,CACrC0D,6BAAiBpG,yBAAcC,gCAAoB,SAAU,CAC3DX,MAAO,kGACPwG,QAASrG,EAAO,KAAOA,EAAO,GAAK,IAAMD,EAAKyN,MAAM,SAAUzN,EAAK4X,YACnEhI,QAAS5P,EAAKyC,GAAG,wBAChBY,GAAY,EAAGF,KAAc,CAC9B,CAACuM,EAAkB,CAAEG,UAAW,MAAOC,aAAa,EAAOC,aAAa,MAE1EtM,gCAAoB,MAAOH,GAAY,CACrCG,gCAAoB,MAAO,CACzB3D,MAAO,0BACP0C,MAAOxC,EAAK4X,UAAU/X,GACtB+R,IAAK5R,EAAK4X,UAAUhG,IACpBqG,IAAKjY,EAAK4X,UAAUE,SACnB,KAAM,EAAGvU,QAGhB2U,wBAAYlY,EAAKmY,OAAQ,UAAW,QAAI1H,GAAW,KCrCzC,MAAO2H,WAAsBrW,OAAGwO,eAAAxI,GAAA,SAAAA,GAAAyI,gBAAA,0BAClC3N,eAAA,CAAPuQ,kB,2CCEL,MAAM,GAA2B,IAAgB,GAAQ,CAAC,CAAC,SAAS,IAAQ,CAAC,YAAY,qBAE1E,UCGf,IAAqBiF,GAArB,cAA0CtW,OAAGwO,eAAAxI,GAAA,SAAAA,GAAAyI,gBAAA,qBAAAA,gBAAA,mCAAAA,gBAAA,oBAAAA,gBAAA,4BAAAA,gBAAA,yBAAAA,gBAAA,2BAAAA,gBAAA,+BAAAA,gBAAA,iBAS9B,GAAKA,gBAAA,eACP,GAAKA,gBAAA,6BAES,GAAKA,gBAAA,4BACL,IAA+BA,gBAAA,qBACtC,IAAsBA,gBAAA,wBACnB,IAEnB,iBACI,OAAO7O,KAAKwV,SAGhBxU,UAEI,MAAM2V,EACF3W,KAAKyK,MAAMvF,OAASuH,GAAU2F,UACvBpS,KAAKyK,MAAM4H,MACZrS,KAAKyK,MAAMwF,IACX,CAACjQ,KAAKyK,OACN,GAEV,GAAIzK,KAAK6K,aAAe7K,KAAKoM,gBACzB,IAAK,MAAMwK,KAAKD,EACZA,EAAOC,GAAGrE,cAAgB,yBAE3B,IAAKvS,KAAK6K,aAAe7K,KAAKoM,gBACjC,IAAK,MAAMwK,KAAKD,EACZA,EAAOC,GAAGrE,cAAgBoE,EAAOC,GAAGrE,cAAgB,IAAIC,QAAQ,oBAAqB,SAI9E1D,IAAX6H,GAAwBA,EAAO1L,SAE/BjL,KAAK+V,sBAAuB,EAG5BY,EAAO7F,IAAK+F,IAER,MAAMC,EAAW,GAAGD,EAAM5G,IAAI8G,UAAUF,EAAM5G,IAAI+G,QAAQ,KAAO,GAC3DC,EAAWJ,EAAM5G,IAAIuC,QAAQ,WAAY,IAEzC0E,EAAYlX,KAAKiI,oBAAoBkP,IAAIhE,KAAK2D,GAChDI,GACAlX,KAAKoX,qBAAqB/D,KACtB6D,EAAUG,MAAM,QAAQzC,KAAM/W,IACnB,IACAgZ,EACH3Y,GAAI+Y,GAAsBJ,EAAM5G,IAChCA,IAAKqH,IAAIC,gBAAgB1Z,SAQ7C2Z,QAAQC,IAAIzX,KAAKoX,sBAAsBxC,KAAM/W,IACzCmC,KAAKuV,cAAgB1X,EACrBmC,KAAK+V,sBAAuB,IAGhC/V,KAAKqW,iBAAmBrW,KAAKyK,MAAM2L,SAI3C7O,aAAamQ,GAET,MAAMC,EAAWC,MAAMC,KAAMH,EAAEvV,OAA4B2V,OAC3D9X,KAAKuV,cAAclC,QACZsE,EAAS7G,IAAKqC,IAEb,MAAM4E,EAAe,GAAG/X,KAAKiI,oBAAoB1C,eAAevF,KAAKW,QAAQwS,EAAKjR,OAClFlC,KAAKiI,oBAAoB+P,OAAOhY,KAAKW,MAAMwS,KAAKA,EAAKjR,KAAMiR,GAEvDnT,KAAKkI,aAAa6P,GAClB/X,KAAKkI,aAAa6P,IAAiB,EAEnC/X,KAAKkI,aAAa6P,GAAgB,EAGtC,IAAIE,EAAWX,IAAIC,gBAAgBpE,GACnC,MAAO,CACHjV,GAAIiV,EAAKjR,KACTiU,QAAS,GACTC,QAAS,GACTnG,IAAKgI,MAIjBjY,KAAKgW,iBAGTH,WAAW6B,GACP,GAAuB,OAAnBA,EAAEQ,aAAuB,CACzB,IAAIJ,EAAQ,IAAIJ,EAAEQ,aAAaJ,OAG1B9X,KAAK+M,YACN+K,EAAQ,CAACA,EAAM,KAGnB9X,KAAKuV,cAAclC,QACZyE,EAAMhH,IAAKqC,IAEV,MAAM4E,EAAe,GAAG/X,KAAKiI,oBAAoB1C,eAAevF,KAAKW,QAAQwS,EAAKjR,OAClFlC,KAAKiI,oBAAoB+P,OAAOhY,KAAKW,MAAMwS,KAAKA,EAAKjR,KAAMiR,GAEvDnT,KAAKkI,aAAa6P,GAClB/X,KAAKkI,aAAa6P,IAAiB,EAEnC/X,KAAKkI,aAAa6P,GAAgB,EAGtC,IAAIE,EAAWX,IAAIC,gBAAgBpE,GACnC,MAAO,CACHjV,GAAIiV,EAAKjR,KACTiU,QAAS,GACTC,QAAS,GACTnG,IAAKgI,MAIjBjY,KAAKwV,UAAW,EAEpBxV,KAAKgW,iBAGTE,YAAYiC,GACR,MAAMxK,EAAM3N,KAAKuV,cAAcjC,UAAWH,GAAoBA,EAAKjV,KAAOia,EAAIja,IAC9E,IAAa,IAATyP,EAAY,CACZ,MAAMyK,EAAa,GAAGpY,KAAKiI,oBAAoB1C,eAAevF,KAAKW,QAAQX,KAAKuV,cAAc5H,GAAKzP,KAGnG8B,KAAKkI,aAAakQ,IAAe,EACK,IAAlCpY,KAAKkI,aAAakQ,KAClBpY,KAAKiI,oBAAoB+P,OAAOhY,KAAKW,MAAM8S,OAAOzT,KAAKuV,cAAc5H,GAAKzP,IAC1EoZ,IAAIe,gBAAgBrY,KAAKuV,cAAc5H,GAAKsC,MAEhDjQ,KAAKuV,cAAc7B,OAAO/F,EAAK,GAEnC3N,KAAKgW,iBAGT7K,cACI,GAAInL,KAAK2T,OASL,GAPArI,OAAOC,KAAKvL,KAAKyK,OAAOmJ,QAAS5U,WAGtBgB,KAAKyK,MAAMzL,KAIY,IAA9BgB,KAAKuV,cAActK,OACnBjL,KAAKyK,MAAMvF,KAAOuH,GAAU6L,MAC3BtY,KAAKyK,MAAqBwF,IAAM,QAC9B,GAAkC,IAA9BjQ,KAAKuV,cAActK,OAAc,CAExCjL,KAAKyK,MAAMvF,KAAOuH,GAAU6L,MAG5B,MAAMrC,EAAYjW,KAAKuV,cAAc,GAGrCjK,OAAOC,KAAK0K,GAAWrC,QAAS5U,IAChB,OAARA,IAIHgB,KAAKyK,MAAqBzL,GAAOiX,EAAUjX,MAG/CgB,KAAKyK,MAAqBwF,IAAM,GAAGjQ,KAAKiI,oBAAoB1C,eAAevF,KAAKW,QAAQsV,EAAU/X,SAChG,KAAAqa,EAEHvY,KAAKyK,MAAMvF,KAAOuH,GAAU2F,UAC5BpS,KAAKyK,MAAM2L,QAA+B,QAAxBmC,EAAGvY,KAAKqW,wBAAgB,IAAAkC,SAAIzJ,EAG7C9O,KAAKyK,MAAyB4H,MAAQrS,KAAKuV,cAAczE,IAAKmF,IACpD,IACAA,EACHhG,IAAK,GAAGjQ,KAAKiI,oBAAoB1C,eAAevF,KAAKW,QAAQsV,EAAU/X,KACvEgH,KAAMuH,GAAU6L,SAKhCtY,KAAK2T,QAAS,EAGlBqC,iBACIhW,KAAK2T,QAAS,EACd3T,KAAK8L,MAAM,gBAzMP5K,eAAA,CAAPuQ,kB,6BACOvQ,eAAA,CAAPuQ,kB,2CACOvQ,eAAA,CAAPuQ,kB,4BACOvQ,eAAA,CAAPuQ,kB,oCACwBvQ,eAAA,CAAxBuQ,eAAK,CAAErP,SAAS,K,iCACSlB,eAAA,CAAzBuQ,eAAK,CAAErP,SAAS,K,mCACSlB,eAAA,CAAzBuQ,eAAK,CAAErP,SAAS,K,uCAPAsU,GAAYxV,eAAA,CANhC0Q,eAAQ,CACLC,WAAY,CACR2G,aAAc/B,GACdzC,mBAGa0C,c,UCLrB,MAAM,GAA2B,IAAgB,GAAQ,CAAC,CAAC,SAAS,IAAQ,CAAC,YAAY,qBAE1E,UCPf,MACMzY,GAAa,CAAEE,MAAO,sBACtBoD,GAAa,CAAEpD,MAAO,0BACtBqD,GAAa,CAAErD,MAAO,+BAEtB,SAAUC,GAAOC,EAAUC,EAAYC,EAAYC,EAAYC,EAAWC,GAC9E,MAAM+Z,EAAyB7Z,8BAAkB,eAEjD,OAAQC,yBAAcC,gCAAoB,MAAOb,GAAY,CAC3D6D,gCAAoB,QAASP,GAAYQ,6BAAiB1D,EAAKyC,GAAG,8BAAgC,IAAK,GACvGmE,4BAAgBnD,gCAAoB,QAAS,CAC3C3D,MAAO,eACP+G,KAAM,OACN,sBAAuB5G,EAAO,KAAOA,EAAO,GAAMsG,GAAkBvG,EAAKoM,MAAM5J,MAAS+D,IACvF,KAAM,KAAM,CACb,CAACc,gBAAarH,EAAKoM,MAAM5J,SAE3BiB,gCAAoB,QAASN,GAAYO,6BAAiB1D,EAAKyC,GAAG,6BAA+B,IAAK,GACtGmB,yBAAawW,EAAwB,CACnCzL,WAAY3O,EAAKoM,MAAMwD,QACvB,sBAAuB3P,EAAO,KAAOA,EAAO,GAAMsG,GAAkBvG,EAAKoM,MAAMwD,QAAWrJ,GAC1F5B,OAAQ,QACR,eAAgB,4GAChB0V,QAASra,EAAKqa,SACb,KAAM,EAAG,CAAC,aAAc,cClBjB,MAAOC,WAAoBvY,OAAGwO,eAAAxI,GAAA,SAAAA,GAAAyI,gBAAA,qBAAAA,gBAAA,2BAAAA,gBAAA,+BAAAA,gBAAA,eAK9B,CACN+J,SAAU,CACN/X,MAAO,wBACPgP,KAAM,IACNgJ,MAAO,CACH,CACI3W,KAAM,cACN2N,KAAM,cACNiJ,OAAOpN,GACHA,EAAOqN,OAAQC,IACX,MAAM/K,EAAU+K,GAAY,GAE5B,MAAO,CACHnJ,KAAM,QAAQ5B,UACd+K,SAAUA,OAK1B,CACI9W,KAAM,YACN2N,KAAM,YACNiJ,OAAOpN,GACHA,EAAOqN,OAAQC,IACX,MAAM/K,EAAU+K,GAAY,GAE5B,MAAO,CACHnJ,KAAM,QAAQ5B,UACd+K,SAAUA,SAOlCC,QAAS,CACLpY,MAAO,cACPqY,KAAM,iBACNL,MAAO,CACH,CACI3W,KAAM,8BACN2N,KAAM,8BACNiJ,OAAOpN,GACHA,EAAOqN,OAAQC,IACX,MAAM/K,EAAU+K,GAAY,GAE5B,MAAO,CACHnJ,KAAM,IAAI5B,cACV+K,SAAUA,OAK1B,CACI9W,KAAM,+BACN2N,KAAM,+BACNiJ,OAAOpN,GACHA,EAAOqN,OAAQC,IACX,MAAM/K,EAAU+K,GAAY,GAE5B,MAAO,CACHnJ,KAAM,oCAAoC5B,QAC1C+K,SAAUA,OAK1B,CACI9W,KAAM,mBACN2N,KAAM,mBACNiJ,OAAOpN,GACHA,EAAOqN,OAAQC,IACX,MAAM/K,EAAU+K,GAAY,GAE5B,MAAO,CACHnJ,KAAM,4BAA4B5B,QAClC+K,SAAUA,WAStChY,UACQhB,KAAK6K,aAAe7K,KAAKoM,gBACzBpM,KAAKyK,MAAM8H,cAAgB,gCACnBvS,KAAK6K,aAAe7K,KAAKoM,kBACjCpM,KAAKyK,MAAM8H,cAAgBvS,KAAKyK,MAAM8H,cAAgB,IAAIC,QAAQ,+BAAgC,MA7FlGtR,eAAA,CAAPuQ,kB,6BACyBvQ,eAAA,CAAzBuQ,eAAK,CAAErP,SAAS,K,mCACSlB,eAAA,CAAzBuQ,eAAK,CAAErP,SAAS,K,iDCJrB,MAAM,GAA2B,IAAgB,GAAQ,CAAC,CAAC,SAAS,IAAQ,CAAC,YAAY,qBAE1E,UCPf,MAAM6G,GAAeC,IAAMC,yBAAa,mBAAmBD,EAAEA,IAAIE,0BAAcF,GACzEjL,GAAa,CAAEE,MAAO,iBACtBoD,GAAa,CAAEpD,MAAO,0BACtBqD,GAAa,CAAErD,MAAO,qBACtBsD,GAA2BwH,GAAa,IAAmBnH,gCAAoB,OAAQ,CAAE3D,MAAO,QAAU,MAAO,IACjHuD,GAA2BuH,GAAa,IAAmBnH,gCAAoB,KAAM,KAAM,MAAO,IAClGH,GAAa,CACjB3C,IAAK,EACLb,MAAO,QAEHyD,GAAa,CACjBzD,MAAO,mBACPyK,IAAK,SACLuQ,MAAO,CAAC,MAAQ,OAAO,OAAS,SAE5B1W,GAAa,CACjBuB,KAAM,SACN7F,MAAO,qBAEHuE,GAAa,CAAEvE,MAAO,2BACtBwE,GAAc,CAAC,YAEf,SAAUvE,GAAOC,EAAUC,EAAYC,EAAYC,EAAYC,EAAWC,GAC9E,MAAM0a,EAAgCxa,8BAAkB,sBAClDyF,EAA6BzF,8BAAkB,mBAErD,OAAQC,yBAAcC,gCAAoB,MAAOb,GAAY,CAC3D6D,gCAAoB,QAASP,GAAYQ,6BAAiB1D,EAAKyC,GAAG,qBAAuB,IAAK,GAC9FmE,4BAAgBnD,gCAAoB,QAAS,CAC3C3D,MAAO,eACP+G,KAAM,OACN,sBAAuB5G,EAAO,KAAOA,EAAO,GAAMsG,GAAkBvG,EAAKoM,MAAM5J,MAAS+D,IACvF,KAAM,KAAM,CACb,CAACc,gBAAarH,EAAKoM,MAAM5J,SAE3BiB,gCAAoB,MAAO,KAAM,CAC/BA,gCAAoB,QAASN,GAAYO,6BAAiB1D,EAAKyC,GAAG,iCAAkC,GACpGmE,4BAAgBnD,gCAAoB,QAAS,CAC3C3D,MAAO,eACP+G,KAAM,WACNyF,SAAUrM,EAAO,KAAOA,EAAO,GAEvC,IAAI8H,IAAU/H,EAAKgb,gBAAkBhb,EAAKgb,kBAAkBjT,IACpD,sBAAuB9H,EAAO,KAAOA,EAAO,GAAMsG,GAAkBvG,EAAKib,gBAAmB1U,IAC3F,KAAM,KAAM,CACb,CAACgG,oBAAiBvM,EAAKib,mBAEzB7X,GACCpD,EAAKib,iBACDza,yBAAcC,gCAAoB,SAAU,CAC3CE,IAAK,EACL2F,QAASrG,EAAO,KAAOA,EAAO,GAAMsG,GAAiBvG,EAAKsJ,KAAKC,KAAK,2BACpEzJ,MAAO,4DACN4D,6BAAiB1D,EAAKyC,GAAG,+BAAgC,IAC5D0D,gCAAoB,IAAI,GAC5B9C,GACCrD,EAAKib,iBACDza,yBAAcC,gCAAoB,MAAO6C,KAC1C6C,gCAAoB,IAAI,GAC5B1C,gCAAoB,MAAOF,GAAY,KAAM,OAE/CK,yBAAaoC,EAA4B,CACvC2E,QAAS,yBACT,gBAAiB,uEACjB7K,MAAO,oCACN,CACDiE,QAASC,qBAAS,IAAM,CACtBP,gCAAoB,KAAMW,GAAYV,6BAAiB1D,EAAKyC,GAAG,+BAAgC,GAC/FmB,yBAAamX,EAA+B,CAC1CxN,OAAQvN,EAAKkb,eACbrZ,MAAO7B,EAAKmb,gBACZC,oBAAqBpb,EAAKqb,mBACzB,KAAM,EAAG,CAAC,SAAU,QAAS,wBAChC5X,gCAAoB,MAAOY,GAAY,CACrCZ,gCAAoB,SAAU,CAC5B3D,MAAOsH,4BAAgB,CAAC,gBAAiBpH,EAAKmb,gBAAkB,GAAK,0CACrExS,SAAU3I,EAAKmb,gBACf7U,QAASrG,EAAO,KAAOA,EAAO,GAE1C,IAAI8H,IAAU/H,EAAKgb,gBAAkBhb,EAAKgb,kBAAkBjT,KAC/C,SAAU,GAAIzD,QAGrBL,EAAG,M,iBCnFT,MAAM2G,GAAeC,IAAMC,yBAAa,mBAAmBD,EAAEA,IAAIE,0BAAcF,GACzEjL,GAAa,CAAEE,MAAO,QACtBoD,GAAa,CAAEpD,MAAO,qBACtBqD,GAAa,CAAErD,MAAO,gBACtBsD,GAAa,CAAC,SACdC,GAAa,CAAEvD,MAAO,QACtBwD,GAAa,CAAC,SACdC,GAA2BqH,GAAa,IAAmBnH,gCAAoB,KAAM,KAAM,MAAO,IAClGW,GAAa,CAAEtE,MAAO,qBACtBuE,GAAa,CAAEvE,MAAO,gBACtBwE,GAAc,CAAC,SACfC,GAAc,CAAEzE,MAAO,QACvB0E,GAAc,CAAC,SACfM,GAA4B8F,GAAa,IAAmBnH,gCAAoB,KAAM,KAAM,MAAO,IACnGsB,GAAc,CAClBpE,IAAK,EACLb,MAAO,mCAEHkF,GAAc,CAAElF,MAAO,uBACvBmF,GAA4B2F,GAAa,IAAmBnH,gCAAoB,KAAM,KAAM,MAAO,IACnGyB,GAAc,CAAEpF,MAAO,uBACvBqF,GAAc,CAAExE,IAAK,GACrByE,GAAc,CAAEtF,MAAO,gBACvBuF,GAAc,CAAC,SACfC,GAA4BsF,GAAa,IAAmBnH,gCAAoB,KAAM,KAAM,MAAO,IACnG8B,GAAc,CAAEzF,MAAO,gBACvB0F,GAA4BoF,GAAa,IAAmBnH,gCAAoB,KAAM,KAAM,MAAO,IACnGgC,GAAc,CAAC,SACfC,GAA4BkF,GAAa,IAAmBnH,gCAAoB,KAAM,KAAM,MAAO,IACnGmC,GAA4BgF,GAAa,IAAmBnH,gCAAoB,KAAM,KAAM,MAAO,IAEnG,SAAU1D,GAAOC,EAAUC,EAAYC,EAAYC,EAAYC,EAAWC,GAC9E,OAAQG,yBAAcC,gCAAoB,MAAOb,GAAY,CAC3D6D,gCAAoB,MAAOP,GAAY,CACrCO,gCAAoB,QAASN,GAAYO,6BAAiB1D,EAAKyC,GAAG,gCAAiC,GACnGgB,gCAAoB,QAAS,CAC3B3D,MAAO,eACP+G,KAAM,SACNmG,MAAOhN,EAAKuN,OAAO+N,MAAM,GACzBrU,QAAShH,EAAO,KAAOA,EAAO,GAAMsG,GAAiBvG,EAAKyN,MAAM,sBAAuB,QAAS,EAAGlH,EAAOzC,OAAOkJ,SAChH,KAAM,GAAI5J,IACbK,gCAAoB,OAAQJ,GAAYK,6BAAiB1D,EAAKyC,GAAG,6BAA8B,GAC/FgB,gCAAoB,QAAS,CAC3B3D,MAAO,eACP+G,KAAM,SACNmG,MAAOhN,EAAKuN,OAAO+N,MAAM,GACzBrU,QAAShH,EAAO,KAAOA,EAAO,GAAMsG,GAAiBvG,EAAKyN,MAAM,sBAAuB,QAAS,EAAGlH,EAAOzC,OAAOkJ,SAChH,KAAM,GAAI1J,MAEfC,GACAE,gCAAoB,MAAOW,GAAY,CACrCX,gCAAoB,QAASY,GAAYX,6BAAiB1D,EAAKyC,GAAG,gCAAiC,GACnGgB,gCAAoB,QAAS,CAC3B3D,MAAO,oBACP+G,KAAM,SACNmG,MAAOhN,EAAKuN,OAAOgO,MAAM,GACzBtU,QAAShH,EAAO,KAAOA,EAAO,GAAMsG,GAAiBvG,EAAKyN,MAAM,sBAAuB,QAAS,EAAGlH,EAAOzC,OAAOkJ,SAChH,KAAM,GAAI1I,IACbb,gCAAoB,OAAQc,GAAab,6BAAiB1D,EAAKyC,GAAG,6BAA8B,GAChGgB,gCAAoB,QAAS,CAC3B3D,MAAO,eACP+G,KAAM,SACNmG,MAAOhN,EAAKuN,OAAOgO,MAAM,GACzBtU,QAAShH,EAAO,KAAOA,EAAO,GAAMsG,GAAiBvG,EAAKyN,MAAM,sBAAuB,QAAS,EAAGlH,EAAOzC,OAAOkJ,SAChH,KAAM,GAAIxI,MAEfM,GACC9E,EAAK6B,OACDrB,yBAAcC,gCAAoB,MAAOsE,GAAa,CACrDtB,gCAAoB,QAASuB,GAAatB,6BAAiB1D,EAAKyC,GAAG,kCAAmC,GACtGwC,GACAxB,gCAAoB,KAAMyB,GAAa,CACrCzB,gCAAoB,KAAM,KAAMC,6BAAiB1D,EAAKyC,GAAG,0CAA2C,GACpGgB,gCAAoB,KAAM,KAAMC,6BAAiB1D,EAAKyC,GAAG,0CAA2C,KAEtGgB,gCAAoB,OAAQ,KAAMC,6BAAiB1D,EAAKyC,GAAG,sCAAuC,MAEpG0D,gCAAoB,IAAI,GAC3BnG,EAAK6B,OACDrB,yBAAcC,gCAAoB,KAAM0E,KACzCgB,gCAAoB,IAAI,GAC5B1C,gCAAoB,MAAO,KAAM,CAC/BA,gCAAoB,QAAS2B,GAAa1B,6BAAiB1D,EAAKyC,GAAG,oCAAqC,GACxGgB,gCAAoB,QAAS,CAC3B3D,MAAO,eACPkN,MAAOhN,EAAKuN,OAAOiO,UACnBvU,QAAShH,EAAO,KAAOA,EAAO,GAAMsG,GAAiBvG,EAAKyN,MAAM,sBAAuB,iBAAagD,EAAWlK,EAAOzC,OAAOkJ,SAC5H,KAAM,GAAI3H,MAEfC,GACA7B,gCAAoB,MAAO,KAAM,CAC/BA,gCAAoB,QAAS8B,GAAa7B,6BAAiB1D,EAAKyC,GAAG,iCAAkC,GACrG+C,GACA/B,gCAAoB,QAAS,CAC3B3D,MAAO,sBACPkN,MAAOhN,EAAKuN,OAAOkO,QAAU,GAC7BxU,QAAShH,EAAO,KAAOA,EAAO,GAAMsG,GAAiBvG,EAAKyN,MAAM,sBAAuB,cAAUgD,EAAWlK,EAAOzC,OAAOkJ,SACzH,KAAM,GAAIvH,MAEfC,GACAE,KClGU,MAAO8V,WAA0B3Z,OAAGwO,eAAAxI,GAAA,SAAAA,GAAAyI,gBAAA,sBAAAA,gBAAA,sBACtC3N,eAAA,CAAPuQ,kB,8BACOvQ,eAAA,CAAPuQ,kB,uCCCL,MAAM,GAA2B,IAAgB,GAAQ,CAAC,CAAC,SAAS,IAAQ,CAAC,YAAY,qBAE1E,U,uBCMf,IAAqBuI,GAArB,cAAwC5Z,OAAGwO,eAAAxI,GAAA,SAAAA,GAAAyI,gBAAA,qBAAAA,gBAAA,mCAAAA,gBAAA,oBAAAA,gBAAA,4BAAAA,gBAAA,2BAAAA,gBAAA,+BAQvCA,gBAAA,qBACqB,IAErBA,gBAAA,mBACc,IAEdA,gBAAA,wBACkB,GAAKA,gBAAA,wBACL,GAAKA,gBAAA,sBACY,CAAE8K,MAAO,GAAIC,MAAO,GAAIC,UAAW,KAAIhL,gBAAA,cACjE,WAASA,gBAAA,wBACC,IAEnB7N,UAAO,IAAAiZ,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EACHta,KAAKsZ,kBAAoBtZ,KAAKyK,MAAM8P,WACpCva,KAAKwa,OAA+B,KAAtBxa,KAAKyK,MAAMmB,OAAgB,UAAY,WACrD5L,KAAKya,iBAAyC,KAAtBza,KAAKyK,MAAMmB,OAAgB5L,KAAKyK,MAAMmB,OAAO8O,MAAM,KAAK,GAAGA,MAAM,KAAK,GAAK,GAEnG1a,KAAKuZ,eAAiB7J,KAAKC,MACvBD,KAAK0D,UAAU,CACXuG,MAAmC,QAA9BM,EAAuB,QAAvBC,EAAEla,KAAKyK,MAAM8P,kBAAU,IAAAL,OAAA,EAArBA,EAAuBP,aAAK,IAAAM,IAAI,CAAC,KAAM,IAAIU,MAAOC,eACzDhB,MAAmC,QAA9BO,EAAuB,QAAvBC,EAAEpa,KAAKyK,MAAM8P,kBAAU,IAAAH,OAAA,EAArBA,EAAuBR,aAAK,IAAAO,IAAI,CAAC,KAAM,IAAIQ,MAAOC,eACzDf,UAA2C,QAAlCQ,EAAuB,QAAvBC,EAAEta,KAAKyK,MAAM8P,kBAAU,IAAAD,OAAA,EAArBA,EAAuBT,iBAAS,IAAAQ,IAAI,MAGvDQ,OAAOC,iBAAiB,sBAAuB9a,KAAK+a,cACpD/a,KAAKgb,qBAEe,aAAhBhb,KAAKwa,QACLxa,KAAKib,kBAGLjb,KAAK6K,aAAe7K,KAAKoM,gBACzBpM,KAAKyK,MAAM8H,cAAgB,gCACnBvS,KAAK6K,aAAe7K,KAAKoM,kBACjCpM,KAAKyK,MAAM8H,cAAgBvS,KAAKyK,MAAM8H,cAAgB,IAAIC,QAAQ,+BAAgC,KAGtGxS,KAAKkb,aAGTC,gBACIN,OAAOO,oBAAoB,sBAAuBpb,KAAK+a,cAG3DE,kBAGIjb,KAAKyK,MAAMmB,OAAS,GAAG5L,KAAKiI,oBAAoB1C,oBAAoBvF,KAAKiI,oBAAoB1C,YACzFvF,KAAKqb,kBAAoB,SAE7Brb,KAAKya,iBAAmBza,KAAKyK,MAAMmB,OAAO8O,MAAM,KAAK,GAAGA,MAAM,KAAK,GAE/D1a,KAAKkI,aAAalI,KAAKyK,MAAMmB,QAC7B5L,KAAKkI,aAAalI,KAAKyK,MAAMmB,SAAW,EAExC5L,KAAKkI,aAAalI,KAAKyK,MAAMmB,QAAU,EAI3C5L,KAAKiI,oBAAoBqT,WAAWnI,KAC7BnT,KAAKya,iBAAR,QACA/K,KAAK0D,UAAUmI,GAAe,KAAM,IAIxCvb,KAAKwa,OAAS,UAGlBU,aACI,GAA0B,KAAtBlb,KAAKyK,MAAMmB,SAIf5L,KAAKwa,OAAS,UAEVxa,KAAKyK,MAAMmB,QAAQ,CAEnB,MAAMkL,EAAW,GAAG9W,KAAKyK,MAAMmB,OAAOmL,UAAU/W,KAAKyK,MAAMmB,OAAOoL,QAAQ,KAAO,GAC3EwE,EAAaxb,KAAKiI,oBAAoBkP,IAAIhE,KAAK2D,GAEjD0E,EACAA,EAAWnE,MAAM,UAAUzC,KAAM/W,IAC7B,MAAM4d,EAAO/L,KAAKC,MAAM9R,GACxBmC,KAAK0b,cAAgBC,gBAAe3b,KAAK4b,MAAMlQ,OAAQ+P,KAI3D/b,MAAMM,KAAKyK,MAAMmB,QAAQgJ,KAAM9U,IAC3BA,EAAKC,OAAO6U,KAAM/W,IACd,IAAIge,EAAiBnM,KAAK0D,UAAUvV,GACpC,MAAM4d,EAAO/L,KAAKC,MAAMkM,GACxB7b,KAAK0b,cAAgBC,gBAAe3b,KAAK4b,MAAMlQ,OAAQ+P,QAO3EpC,iBACSrZ,KAAKwZ,iBAAoBxZ,KAAKsZ,kBAC/BtZ,KAAKyK,MAAM8P,WAAava,KAAKsZ,gBAAkBtZ,KAAKuZ,oBAAiBzK,GAEzE9O,KAAK8L,MAAM,cACX9L,KAAK2H,KAAKgK,MAAM,0BAGpBxG,cAEInL,KAAKiI,oBAAoBqT,WAAWnI,KAC7BnT,KAAKya,iBAAR,QACA/K,KAAK0D,UAAUpT,KAAK0b,cAAcI,YAAa,KAAM,IAI7Df,eACI/a,KAAK8L,MAAM,cAGf4N,kBAAkBqC,EAAsDzO,EAAejC,GAClE,WAAb0Q,EACK1Q,GAAmB,KAAVA,EAGVrL,KAAKuZ,eAAe,UAAYlO,EAAMqP,MAAM,KAAK5J,IAAKkL,GAC3CA,EAAQC,eAHZjc,KAAKuZ,eAAe,UAOlB,cAAbwC,EACO/b,KAAKuZ,eAAewC,GAAY1Q,EAChCrL,KAAKuZ,eAAewC,GAAUzO,GAAS4O,OAAO7Q,GAEzDrL,KAAKgb,qBAGTA,qBACIhb,KAAKwZ,gBACDxZ,KAAKuZ,eAAeI,MAAMwC,KAAMC,GAAQA,EAAM,IAAMF,OAAOG,UAAUD,KACrEpc,KAAKuZ,eAAeK,MAAMuC,KAAMC,GAAQA,EAAM,IAAMF,OAAOG,UAAUD,KACrEpc,KAAKuZ,eAAeI,MAAM,GAAK3Z,KAAKuZ,eAAeI,MAAM,IACzD3Z,KAAKuZ,eAAeK,MAAM,GAAK5Z,KAAKuZ,eAAeK,MAAM,GAGjEyB,kBACI,IAAInS,EAAI,EAIR,OAHAlJ,KAAKiI,oBAAoBqT,WAAW1H,QAAS0I,IACzCpT,GAAK,IAEFA,IA5JHhI,eAAA,CAAPuQ,kB,6BACOvQ,eAAA,CAAPuQ,kB,2CACOvQ,eAAA,CAAPuQ,kB,4BACOvQ,eAAA,CAAPuQ,kB,oCACyBvQ,eAAA,CAAzBuQ,eAAK,CAAErP,SAAS,K,mCACSlB,eAAA,CAAzBuQ,eAAK,CAAErP,SAAS,K,uCANA4X,GAAU9Y,eAAA,CAN9B0Q,eAAQ,CACLC,WAAY,CACR,qBAAsBkI,GACtB,kBAAmBjI,YAGNkI,c,UCRrB,MAAM,GAA2B,IAAgB,GAAQ,CAAC,CAAC,SAAS,IAAQ,CAAC,YAAY,qBAE1E,UCPf,MAAM/Q,GAAeC,IAAMC,yBAAa,mBAAmBD,EAAEA,IAAIE,0BAAcF,GACzEjL,GAAa,CAAEE,MAAO,SACtBoD,GAAa,CAAEpD,MAAO,2CACtBqD,GAAa,CAAErD,MAAO,2BACtBsD,GAAa,CAAEtD,MAAO,+CACtBuD,GAA2BuH,GAAa,IAAmBnH,gCAAoB,OAAQ,CAAE3D,MAAO,kCAAoC,CAC3H2D,gCAAoB,MAAO,CACtCmB,MAAO,6BACPF,MAAO,KACPC,OAAQ,KACRF,QAAS,cACR,CACYhB,gCAAoB,OAAQ,CACvCoB,EAAG,8rBACHqZ,UAAW,4CAGb,IACE5a,GAAa,CAAExD,MAAO,6BACtByD,GAAa,CAAEzD,MAAO,2BACtBsE,GAAa,CAAEtE,MAAO,2CACtBuE,GAAa,CAAEvE,MAAO,2BACtBwE,GAAc,CAClB3D,IAAK,EACL4J,IAAK,WACLzK,MAAO,qBACP+G,KAAM,UAGF,SAAU9G,GAAOC,EAAUC,EAAYC,EAAYC,EAAYC,EAAWC,GAC9E,MAAM8d,EAA0B5d,8BAAkB,gBAElD,OAAQC,yBAAcC,gCAAoB,MAAOb,GAAY,CAC3D6D,gCAAoB,MAAOP,GAAY,CACrCO,gCAAoB,QAASN,GAAYO,6BAAiB1D,EAAKyC,GAAG,uBAAyB,IAAK,GAChGmE,4BAAgBnD,gCAAoB,QAAS,CAC3C3D,MAAO,qBACP+G,KAAM,OACN,sBAAuB5G,EAAO,KAAOA,EAAO,GAAMsG,GAAkBvG,EAAKoe,aAAa5b,MAAS+D,GAC/F+F,SAAUrM,EAAO,KAAOA,EAAO,GAEvC,IAAI8H,IAAU/H,EAAKqe,eAAiBre,EAAKqe,iBAAiBtW,KACjD,KAAM,KAAM,CACb,CAACV,gBAAarH,EAAKoe,aAAa5b,WAGpCiB,gCAAoB,MAAO,CACzB3D,MAAOsH,4BAAgB,CAAC,2GAA4G,CAAE+P,SAAUnX,EAAKoX,cACrJC,WAAYpX,EAAO,KAAOA,EAAO,GAAKyH,2BAAe,IAAO1H,EAAKmX,UAAW,EAAO,CAAC,aACpFG,YAAarX,EAAO,KAAOA,EAAO,GAAKyH,2BAAe,IAAO1H,EAAKmX,UAAW,EAAQ,CAAC,aACtFI,OAAQtX,EAAO,KAAOA,EAAO,GAAKyH,2BAAgBnB,GAAiBvG,EAAKse,UAAU/X,GAAU,CAAC,cAC5F,CACD9C,gCAAoB,QAASL,GAAY,CACvCC,GACAI,gCAAoB,OAAQH,GAAY,CACtCG,gCAAoB,OAAQ,KAAM,CAChCA,gCAAoB,MAAO,KAAMC,6BAAiB1D,EAAKyC,GAAG,4BAA6B,GACvFgB,gCAAoB,MAAO,KAAM,CAC/BkD,6BAAiBjD,6BAAiB1D,EAAKyC,GAAG,oBAAsB,IAAK,GACrEgB,gCAAoB,OAAQF,GAAYG,6BAAiB1D,EAAKyC,GAAG,wBAAyB,GAC1FkE,6BAAiB,IAAMjD,6BAAiB1D,EAAKyC,GAAG,wBAAyB,OAG7EgB,gCAAoB,QAAS,CAC3B8G,IAAK,iBACL1D,KAAM,OACN/G,MAAO,iBACPwM,SAAUrM,EAAO,KAAOA,EAAO,GAE3C,IAAI8H,IAAU/H,EAAKkJ,cAAgBlJ,EAAKkJ,gBAAgBnB,KAC3C,KAAM,UAGZ,IACHtE,gCAAoB,MAAOW,GAAY,CACrCX,gCAAoB,QAASY,GAAYX,6BAAiB1D,EAAKyC,GAAG,mBAAqB,IAAMzC,EAAKyC,GAAG,0BAA4B,IAAK,GACrG,UAAhCzC,EAAKoe,aAAaG,UACf3X,6BAAiBpG,yBAAcC,gCAAoB,QAAS,CAC1DE,IAAK,EACL4J,IAAK,WACLzK,MAAO,qBACP+G,KAAM,SACN,sBAAuB5G,EAAO,KAAOA,EAAO,GAAMsG,GAAkBvG,EAAKoe,aAAaxM,IAAOrL,IAC5F,KAAM,MAAO,CACd,CAACc,gBAAarH,EAAKoe,aAAaxM,QAEjCpR,yBAAcC,gCAAoB,QAAS6D,GAAa,KAAM,MACnEb,gCAAoB,SAAU,CAC5B6C,QAASrG,EAAO,KAAOA,EAAO,GAEtC,IAAI8H,IAAU/H,EAAKwe,gBAAkBxe,EAAKwe,kBAAkBzW,IACpDjI,MAAO,gEACN4D,6BAAiB1D,EAAKyC,GAAG,8BAA+B,KAE3DzC,EAAKye,qBAAiE,IAA1CxR,OAAOC,KAAKlN,EAAKoe,cAAcxR,OAiBzDzG,gCAAoB,IAAI,IAhBvB3F,yBAAcC,gCAAoB,MAAO,CACxCE,IAAK,EACLb,MAAO,sDACP+O,SAAU5O,EAAO,KAAOA,EAAO,GAEzC,IAAI8H,IAAU/H,EAAKqe,eAAiBre,EAAKqe,iBAAiBtW,IAChD,WAAY,MACX,EACAvH,yBAAcE,yBAAayd,EAAyB,CACnDxd,IAAK,GAAGX,EAAKoe,aAAave,GAC1BiV,KAAM9U,EAAKoe,aACXM,SAAU1e,EAAK0e,SACfpc,KAAMtC,EAAKsC,KACX+M,SAAUrP,EAAK2e,aACd,KAAM,EAAG,CAAC,OAAQ,WAAY,OAAQ,eACxC,OC9GX,MAAM/T,GAAeC,IAAMC,yBAAa,mBAAmBD,EAAEA,IAAIE,0BAAcF,GACzEjL,GAAa,CAAEE,MAAO,oCACtBoD,GAAa,CAAEpD,MAAO,yCACtBqD,GAAa,CAAC,WACdC,GAA2BwH,GAAa,IAAmBnH,gCAAoB,MAAO,CAC1FkB,OAAQ,OACRD,MAAO,OACPD,QAAS,cACTG,MAAO,8BACN,CACYnB,gCAAoB,OAAQ,CAAEoB,EAAG,saAC5C,IACExB,GAAa,CACjBD,IAEIE,GAAa,CAAExD,MAAO,mBACtByD,GAAa,CAAC,MAAO,SAAU,SAC/Ba,GAAa,CAAC,QAAS,SAAU,SACjCC,GAAa,CAAC,OAAQ,OACtBC,GAAc,CAAC,MAAO,UAAW,SAEjC,SAAUvE,GAAOC,EAAUC,EAAYC,EAAYC,EAAYC,EAAWC,GAC9E,MAAMqP,EAAmBC,8BAAkB,SAE3C,OAAQnP,yBAAcC,gCAAoB,MAAOb,GAAY,CAC3D6D,gCAAoB,MAAOP,GAAY,CACrC0D,6BAAiBpG,yBAAcC,gCAAoB,SAAU,CAC3DX,MAAO,oFACPwG,QAASrG,EAAO,KAAOA,EAAO,GAAK,IAAMD,EAAKyN,MAAM,SAAUzN,EAAK8U,OACnElF,QAAS5P,EAAKyC,GAAG,wBAChBY,GAAY,EAAGF,KAAc,CAC9B,CAACuM,EAAkB,CAAEG,UAAW,MAAOC,aAAa,EAAOC,aAAa,MAE1EtM,gCAAoB,MAAOH,GAAY,CACZ,YAAxBtD,EAAK8U,KAAKyJ,WACN/d,yBAAcC,gCAAoB,SAAU,CAC3CE,IAAK,EACLb,MAAO,QACP8R,IAAK5R,EAAK8U,KAAKlD,IACfjN,OAAQ3E,EAAK8U,KAAKnQ,OAAS3E,EAAK8U,KAAKnQ,OAAS,IAC9CD,MAAO1E,EAAK8U,KAAKpQ,MACjBka,gBAAiB,IAChB,KAAM,EAAGrb,KACZ4C,gCAAoB,IAAI,GACH,UAAxBnG,EAAK8U,KAAKyJ,WAAiD,aAAxBve,EAAK8U,KAAKyJ,WACzC/d,yBAAcC,gCAAoB,QAAS,CAC1CE,IAAK,EACLb,MAAO,QACP0C,MAAOxC,EAAK8U,KAAKtS,MACjBmC,OAAQ3E,EAAK8U,KAAKnQ,OAAS3E,EAAK8U,KAAKnQ,OAAS,IAC9CD,MAAO1E,EAAK8U,KAAKpQ,MACjBma,SAAU,IACT,CACDpb,gCAAoB,SAAU,CAC5BoD,KAAM7G,EAAK0e,SACX9M,IAAK5R,EAAK8U,KAAKlD,KACd,KAAM,EAAGvN,IACXrE,EAAK8U,KAAKiD,SACNvX,yBAAcC,gCAAoB,QAAS,CAC1CE,IAAK,EACLme,KAAM,WACNlN,IAAK5R,EAAK8U,KAAKiD,QACfgH,QAAS/e,EAAKsC,KACd0c,MAAOhf,EAAKif,MAAMjf,EAAKsC,OACtB,KAAM,EAAGgC,KACZ6B,gCAAoB,IAAI,IAC3B,EAAG/B,KACN+B,gCAAoB,IAAI,OAGhC+R,wBAAYlY,EAAKmY,OAAQ,UAAW,QAAI1H,GAAW,K,4BCnEzC,MAAOyO,WAAsBnd,OAAGwO,eAAAxI,GAAA,SAAAA,GAAAyI,gBAAA,oBAAAA,gBAAA,wBAAAA,gBAAA,oBAAAA,gBAAA,UAKrC,IAAI2O,KAAW,CAAEC,MAAM,KAAO5O,gBAAA,aAC3B,CAAE6O,GAAI,UAAWC,GAAI,WAAoC9O,gBAAA,yBAE9C,GAAKA,gBAAA,qBACR,IAAEA,gBAAA,yBACE,KATZ3N,eAAA,CAAPuQ,kB,4BACOvQ,eAAA,CAAPuQ,kB,gCACOvQ,eAAA,CAAPuQ,kB,sCCDL,MAAM,GAA2B,IAAgB,GAAQ,CAAC,CAAC,SAAS,IAAQ,CAAC,YAAY,qBAE1E,UCGf,IAAqBmM,GAArB,cAA0Cxd,OAAGwO,eAAAxI,GAAA,SAAAA,GAAAyI,gBAAA,qBAAAA,gBAAA,mCAAAA,gBAAA,oBAAAA,gBAAA,4BAAAA,gBAAA,2BAAAA,gBAAA,+BAAAA,gBAAA,iBAQ9B,GAAKA,gBAAA,eACP,GAAKA,gBAAA,gBAEH,IAAEA,gBAAA,4BACS,GAAKA,gBAAA,gCACLC,GAA2CD,gBAAA,oBAClD,IAAuCA,gBAAA,wBACnC,IAEnB,iBACI,OAAO7O,KAAKwV,SAGhBxU,UACI,GAAIhB,KAAKyK,MAAMwF,IACX,GAA6B,UAAzBjQ,KAAKyK,MAAMmS,UAAuB,KAAAiB,EAClC7d,KAAK8c,qBAAsB,EAG3B,MAAMhG,EAAW,GAAG9W,KAAKyK,MAAMwF,IAAI8G,UAAU/W,KAAKyK,MAAMwF,IAAI+G,QAAQ,KAAO,GACrEC,EAAWjX,KAAKyK,MAAMwF,IAAIuC,QAAQ,WAAY,IAE9C0E,EAAYlX,KAAKiI,oBAAoBkP,IAAIhE,KAAK2D,GAChDI,IACAlX,KAAK8d,oBAAsB5G,EAAUG,MAAM,QAAQzC,KAAM/W,IAC9C,IACAmC,KAAKyK,MACRvM,GAAI+Y,GAAsBjX,KAAKyK,MAAMwF,IACrCA,IAAKqH,IAAIC,gBAAgB1Z,OAKb,QAAxBggB,EAAA7d,KAAK8d,2BAAmB,IAAAD,GAAxBA,EAA0BjJ,KAAM/W,IAC5BmC,KAAKyc,aAAe5e,EACpBmC,KAAK8c,qBAAsB,IAG/B9c,KAAKqW,iBAAmBrW,KAAKyK,MAAM2L,aAGnCpW,KAAKyc,aAAe,CAChBve,GAAI8B,KAAKyK,MAAMwF,IACfpP,MAAOb,KAAKyK,MAAM5J,MAClB+b,UAAoC,YAAzB5c,KAAKyK,MAAMmS,UAA0B,UAAY,WAC5D3M,IAAKjQ,KAAKyK,MAAMwF,KAIxBjQ,KAAK6K,aAAe7K,KAAKoM,gBACzBpM,KAAKyK,MAAM8H,cAAgB,gCACnBvS,KAAK6K,aAAe7K,KAAKoM,kBACjCpM,KAAKyK,MAAM8H,cAAgBvS,KAAKyK,MAAM8H,cAAgB,IAAIC,QAAQ,+BAAgC,KAK1GuL,gBAAgB5K,EAAYjO,GACxB,MAAM6S,EAAe,GAAG/X,KAAKiI,oBAAoB1C,eAAevF,KAAKW,QAAQwS,EAAKjR,OAClFlC,KAAKiI,oBAAoB+P,OAAOhY,KAAKW,MAAMwS,KAAKA,EAAKjR,KAAMiR,GACvDnT,KAAKkI,aAAa6P,GAClB/X,KAAKkI,aAAa6P,IAAiB,EAEnC/X,KAAKkI,aAAa6P,GAAgB,EAItC,MAAMiG,EAAU1G,IAAIC,gBAAgBpE,GACvB,QAATjO,GACAlF,KAAKyc,aAAe,CAChBve,GAAIiV,EAAKjR,KACTrB,MAAOb,KAAKyc,aAAa5b,OAASsS,EAAKjR,KACvC0a,UAAW,QACX3M,IAAK+N,GAEThe,KAAKie,aAAa9K,EAAKjR,OAEvBlC,KAAKyc,aAAavX,GAAoC8Y,EAE1Dhe,KAAK2T,QAAS,EACd3T,KAAK8L,MAAM,cAGfvE,aAAamQ,GACT,MAAMvE,EAAOyE,MAAMC,KAAMH,EAAEvV,OAA4B2V,OAA0B,GACjF9X,KAAK+d,gBAAgB5K,EAAM,OAC3BnT,KAAK0c,gBAGTuB,aAAa9K,GACT,GAAoC,aAAhCnT,KAAKyc,aAAaG,WAA4D,UAAhC5c,KAAKyc,aAAaG,UAAuB,CACvF,MAAMsB,EAAW/K,EAAK4D,UAAU5D,EAAKgL,YAAY,KAAO,GAClDC,EAAMF,EAASxD,MAAM,KAAK2D,MAChCre,KAAK+c,SAAW,SAASqB,GAKjCE,iBAAiBC,GACb,MAAMC,EAAS,+DACT/L,EAAQ8L,EAAI9L,MAAM+L,GACxB,OAAO/L,GAA6B,KAApBA,EAAM,GAAGxH,OAAgBwH,EAAM,GAAK,KAGxDoK,iBAEI,IAAI0B,EAAOve,KAAK4b,MAAM6C,SAA8BpT,MACpD,MAAMqT,EAAYH,EAAII,cAAcC,SAAS,WAGzCF,IAKAH,EAAMA,EAAI/L,QAAQ,YAAa,YAEnCxS,KAAKyc,aAAe,CAChBve,GAAIqgB,EACJ1d,MAAOb,KAAKyc,aAAa5b,OAAS0d,EAClC3B,UAAW2B,EAAIK,SAAS,WAAa,UAAY,WACjD3O,IAAKsO,GAETve,KAAK2T,QAAS,EACd3T,KAAK8L,MAAM,cAGf+S,eAAenH,GACX,MAAMvE,EAAOyE,MAAMC,KAAMH,EAAEvV,OAA4B2V,OAA0B,GACjF9X,KAAK+d,gBAAgB5K,EAAM,WAG/B2L,iBAAiBpH,GACb,MAAMvE,EAAOyE,MAAMC,KAAMH,EAAEvV,OAA4B2V,OAA0B,GACjF9X,KAAK+d,gBAAgB5K,EAAM,cAG/BwJ,UAAUjF,GACN,GAAuB,OAAnBA,EAAEQ,aAAuB,CACzB,MAAM/E,EAAO,IAAIuE,EAAEQ,aAAaJ,OAAO,GACvC9X,KAAK+d,gBAAgB5K,EAAM,OAC3BnT,KAAKwV,UAAW,EAEpBxV,KAAK0c,gBAGTM,cACKhd,KAAK4b,MAAMmD,eAAoC1T,MAAQ,GACxDrL,KAAKyc,aAAe,GACpBzc,KAAK0c,gBAGTvR,cACQnL,KAAK2T,QAAU3T,KAAKyc,eAEpBzc,KAAKyK,MAAM5J,MAAQb,KAAKyc,aAAa5b,MACrCb,KAAKyK,MAAMmS,UAAY5c,KAAKyc,aAAaG,UACzC5c,KAAKyK,MAAMwF,IACyB,UAAhCjQ,KAAKyc,aAAaG,UACZ,GAAG5c,KAAKiI,oBAAoB1C,eAAevF,KAAKW,QAAQX,KAAKyc,aAAave,KAC1E8B,KAAKyc,aAAaxM,IAC5BjQ,KAAKyK,MAAM2L,QAAUpW,KAAKyc,aAAarG,QAAUpW,KAAKyc,aAAarG,QAAU,GAC7EpW,KAAKyK,MAAMuU,WAAahf,KAAKyc,aAAauC,WAAahf,KAAKyc,aAAauC,WAAa,IAE1Fhf,KAAK2T,QAAS,EAGlB+I,gBACI1c,KAAK2T,QAAS,EACd3T,KAAK8L,MAAM,gBAhLP5K,eAAA,CAAPuQ,kB,6BACOvQ,eAAA,CAAPuQ,kB,2CACOvQ,eAAA,CAAPuQ,kB,4BACOvQ,eAAA,CAAPuQ,kB,oCACyBvQ,eAAA,CAAzBuQ,eAAK,CAAErP,SAAS,K,mCACSlB,eAAA,CAAzBuQ,eAAK,CAAErP,SAAS,K,uCANAwb,GAAY1c,eAAA,CANhC0Q,eAAQ,CACLC,WAAY,CACRoN,aAAc1B,GACdvJ,mBAGa4J,c,UCLrB,MAAM,GAA2B,IAAgB,GAAQ,CAAC,CAAC,SAAS,IAAQ,CAAC,YAAY,qBAE1E,UCPf,MAAM3U,GAAeC,IAAMC,yBAAa,mBAAmBD,EAAEA,IAAIE,0BAAcF,GACzEjL,GAAa,CAAEE,MAAO,SACtBoD,GAAa,CAAEpD,MAAO,qBACtBqD,GAAa,CAAErD,MAAO,kBACtBsD,GAAa,CAAEtD,MAAO,qBACtBuD,GAA2BuH,GAAa,IAAmBnH,gCAAoB,MAAO,CAC1FkB,OAAQ,OACRD,MAAO,OACPD,QAAS,YACTG,MAAO,8BACN,CACYnB,gCAAoB,OAAQ,CAAEoB,EAAG,0CAC5C,IACEvB,GAAa,CAAExD,MAAO,QACtByD,GAA2BqH,GAAa,IAAmBnH,gCAAoB,KAAM,CAAE3D,MAAO,gDAAkD,MAAO,IACvJsE,GAAa,CAAEtE,MAAO,sCACtBuE,GAAa,CAAEvE,MAAO,2BACtBwE,GAA4BsG,GAAa,IAAmBnH,gCAAoB,KAAM,KAAM,MAAO,IACnGc,GAAc,CAAEzE,MAAO,cACvB0E,GAAc,CAAE1E,MAAO,gBACvBgF,GAA4B8F,GAAa,IAAmBnH,gCAAoB,KAAM,KAAM,MAAO,IACnGsB,GAAc,CAAC,WACfC,GAAc,CAAC,WACfC,GAA4B2F,GAAa,IAAmBnH,gCAAoB,KAAM,KAAM,MAAO,IACnGyB,GAA4B0F,GAAa,IAAmBnH,gCAAoB,KAAM,KAAM,MAAO,IACnG0B,GAAc,CAAExE,IAAK,GACrByE,GAAc,CAAEtF,MAAO,qBACvBuF,GAA4BuF,GAAa,IAAmBnH,gCAAoB,KAAM,CAAE3D,MAAO,gDAAkD,MAAO,IACxJwF,GAAc,CAAE3E,IAAK,GACrB4E,GAAc,CAAEzF,MAAO,kBACvB0F,GAAc,CAAC,SACfC,GAAc,CAAC,SACfC,GAAc,CAAE5F,MAAO,gCACvB8F,GAAc,CAAEjF,IAAK,GACrBsK,GAAc,CAAEnL,MAAO,gCAEvB,SAAUC,GAAOC,EAAUC,EAAYC,EAAYC,EAAYC,EAAWC,GAC9E,OAAQG,yBAAcC,gCAAoB,MAAOb,GAAY,CAC3D6D,gCAAoB,MAAOP,GAAY,CACrCO,gCAAoB,OAAQN,GAAYO,6BAAiB1D,EAAKyC,GAAG,8BAA+B,CAClF8L,IAAKvO,EAAKoM,MAAM4H,MAAMpH,UACrB,GACfnJ,gCAAoB,SAAU,CAC5B3D,MAAO,6DACPwG,QAASrG,EAAO,KAAOA,EAAO,GAAMsG,GAAiBvG,EAAK6gB,cAAgB,WACzE,CACDpd,gCAAoB,MAAOL,GAAY,CACrCC,GACAI,gCAAoB,OAAQH,GAAYI,6BAAiB1D,EAAKyC,GAAG,kCAAmC,SAI1Gc,GACAE,gCAAoB,MAAOW,GAAY,CACrCX,gCAAoB,QAASY,GAAYX,6BAAiB1D,EAAKyC,GAAG,kCAAoC,IAAK,GAC3GmE,4BAAgBnD,gCAAoB,QAAS,CAC3C3D,MAAO,qBACP+G,KAAM,OACN,sBAAuB5G,EAAO,KAAOA,EAAO,GAAMsG,GAAkBvG,EAAKoM,MAAM2L,QAAWxR,IACzF,KAAM,KAAM,CACb,CAACc,gBAAarH,EAAKoM,MAAM2L,WAE3BzT,KAEFb,gCAAoB,QAASc,GAAa,CACxCd,gCAAoB,QAAS,KAAM,CACjCA,gCAAoB,KAAMe,GAAa,CACrCM,GACArB,gCAAoB,KAAM,KAAMC,6BAAiB1D,EAAKyC,GAAG,gCAAiC,GAC1FgB,gCAAoB,KAAM,KAAMC,6BAAiB1D,EAAKyC,GAAG,0BAA2B,OAGxFgB,gCAAoB,QAAS,KAAM,EAChCjD,wBAAW,GAAOC,gCAAoB2F,cAAW,KAAMkB,wBAAYtH,EAAKoM,MAAM4H,MAAO,CAACjF,EAAMO,KACnF9O,yBAAcC,gCAAoB,KAAM,CAC9CX,MAAO,iBACPa,IAAK2O,GACJ,CACD7L,gCAAoB,KAAM,KAAMC,6BAAiB4L,EAAM,GAAK,IAAK,GACjE7L,gCAAoB,KAAM,KAAMC,6BAAiBqL,EAAKlI,MAAO,GAC7DpD,gCAAoB,KAAM,KAAM,CAC9BA,gCAAoB,OAAQ,CAC1B6C,QAAUC,GAAiBvG,EAAK8gB,SAASxR,GACzCxP,MAAO,aACN,OAAQ,EAAGiF,IACd4B,6BAAiB,OACjBlD,gCAAoB,OAAQ,CAC1B6C,QAAUC,GAAiBvG,EAAK+gB,WAAWzR,GAC3CxP,MAAO,aACN,SAAU,EAAGkF,UAGlB,UAGRC,GACAC,GACwB,SAAvBlF,EAAK6gB,eACDrgB,yBAAcC,gCAAoB,MAAO0E,GAAa,CACrD1B,gCAAoB,KAAM2B,GAAa1B,6BAAiB1D,EAAKyC,GAAG,0BAA0BzC,EAAK6gB,gBAAmB,GAClHxb,GACA5B,gCAAoB,MAAO,KAAM,CACP,WAAvBzD,EAAK6gB,eACDrgB,yBAAcC,gCAAoB,MAAO6E,GAAa,CACrD7B,gCAAoB,QAAS8B,GAAa7B,6BAAiB1D,EAAKyC,GAAG,gCAAkC,IAAK,GAC1GgB,gCAAoB,SAAU,CAC5BwD,QAAShH,EAAO,KAAOA,EAAO,GAElD,IAAI8H,IAAU/H,EAAKghB,aAAehhB,EAAKghB,eAAejZ,IAClCiF,MAAOhN,EAAKihB,cACX,EACAzgB,wBAAW,GAAOC,gCAAoB2F,cAAW,KAAMkB,wBAAY2F,OAAOC,KAAKlN,EAAKmN,SAAWG,IACtF9M,yBAAcC,gCAAoB,SAAU,CAClDE,IAAK2M,EACLN,MAAOM,GACN5J,6BAAiB4J,GAAQ,EAAG7H,MAC7B,OACH,GAAID,IACiB,WAAvBxF,EAAK6gB,eACDrgB,yBAAcE,yBAAamN,qCAAyB7N,EAAKmN,QAAQnN,EAAKihB,eAAgB,CACrFtgB,IAAK,EACL4J,IAAK,cACL6B,MAAOiF,KAAKC,MAAMD,KAAK0D,UAAU/U,EAAKkhB,eAAelhB,EAAKihB,gBAC1DrX,oBAAqB5J,EAAK4J,oBAC1BtH,KAAMtC,EAAKsC,KACXuH,aAAc7J,EAAK6J,aACnB6E,WAAW,GACV,KAAM,EAAG,CAAC,QAAS,sBAAuB,OAAQ,kBACrDvI,gCAAoB,IAAI,GAC5B1C,gCAAoB,MAAOiC,GAAa,CACtCjC,gCAAoB,SAAU,CAC5B3D,MAAO,sDACPwG,QAASrG,EAAO,KAAOA,EAAO,GAAMsG,GAAiBvG,EAAKmhB,UAAS,KAClEzd,6BAAiB1D,EAAKyC,GAAG,+BAAgC,SAG/DjC,yBAAcC,gCAAoB,MAAOmF,GAAa,EACpDpF,yBAAcE,yBAAamN,qCAAyB7N,EAAKmN,QAAQnN,EAAKoM,MAAM4H,MAAMhU,EAAKohB,YAAYva,OAAQ,CAC1G0D,IAAK,cACL6B,MAAOpM,EAAKoM,MAAM4H,MAAMhU,EAAKohB,YAC7BxX,oBAAqB5J,EAAK4J,oBAC1BtH,KAAMtC,EAAKsC,KACXuH,aAAc7J,EAAK6J,aACnBlJ,IAAKX,EAAKohB,WAAaphB,EAAKoM,MAAM4H,MAAMhU,EAAKohB,YAAYva,KACzD6H,WAAW,GACV,KAAM,EAAG,CAAC,QAAS,sBAAuB,OAAQ,kBACrDjL,gCAAoB,MAAOwH,GAAa,CACtCxH,gCAAoB,SAAU,CAC5B3D,MAAO,sDACPwG,QAASrG,EAAO,KAAOA,EAAO,GAAMsG,GAAiBvG,EAAKmhB,aACzDzd,6BAAiB1D,EAAKyC,GAAG,uBAAwB,aAKhE0D,gCAAoB,IAAI,KChIhC,IAAqBkb,GAArB,cAA8Ctf,OAAGwO,eAAAxI,GAAA,SAAAA,GAAAyI,gBAAA,qBAAAA,gBAAA,mCAAAA,gBAAA,oBAAAA,gBAAA,4BAAAA,gBAAA,eAMX,CAC9BgB,KAAM,cACNgH,MAAO,eACPtJ,MAAO,eACPuD,IAAK,aACL6O,MAAO,iBAGX9Q,gBAAA,sBACiC,CAC7BgB,KAAM,CACF3K,KAAMuH,GAAUmT,KAChB/e,MAAO,GACPoN,QAAS,IAEb4R,QAAS,CACL3a,KAAMuH,GAAUqT,QAChBjf,MAAO,GACPkf,SAAU,GACV9R,QAAS,GACT+R,SAAU,IAEdC,UAAW,CACP/a,KAAMuH,GAAU2F,UAChBC,MAAO,IAEX9E,MAAO,CACHrI,KAAMuH,GAAUoH,MAChB5D,IAAK,IAET4G,MAAO,CACH3R,KAAMuH,GAAU6L,MAChBrI,IAAK,IAETa,IAAK,CACD5L,KAAMuH,GAAUyT,IAChBtU,OAAQ,GACR/K,MAAO,GACPsf,aAAa,GAEjBR,MAAO,CACHza,KAAMuH,GAAU2T,MAChBvf,MAAO,GACP+b,UAAW,GACX3M,IAAK,MAEZpB,gBAAA,mBAEa,GAACA,gBAAA,oBACA,IAAEA,gBAAA,oBACkC,QAAMA,gBAAA,qBACb,QAG5CwQ,YAAY3H,GACR1X,KAAKsf,aAAe5H,EAAEvV,OAAOkJ,MAGjC8T,SAASxR,GAEL3N,KAAKmL,cACLnL,KAAKyf,WAAa9R,EAClB3N,KAAKkf,cAAgB,OAGzBE,WAAWhS,GACP,MAAM3C,EAAQzK,KAAKyK,MAAM4H,MAAMgO,KAAK,CAAC5V,EAAkBkD,IAAgBA,IAAQP,GAG/E,OAAa,OAAL3C,QAAK,IAALA,OAAK,EAALA,EAAOvF,MACX,IAAK,MAAO,CACR,MAAMob,EAAW7V,EACjBzK,KAAKkI,aAAaoY,EAAS1U,SAAW,EACK,IAAvC5L,KAAKkI,aAAaoY,EAAS1U,SAC3B5L,KAAKiI,oBAAoBkP,IAAI1D,OACzB,GAAG6M,EAAS1U,OAAOmL,UAAUuJ,EAAS1U,OAAOoL,QAAQ,KAAO,IAGpE,MAGJ,IAAK,QAAS,CACV,MAAMuJ,EAAa9V,EACnBzK,KAAKkI,aAAaqY,EAAWtQ,MAAQ,EACK,IAAtCjQ,KAAKkI,aAAaqY,EAAWtQ,MAC7BjQ,KAAKiI,oBAAoBkP,IAAI1D,OAAO,GAAG8M,EAAWtQ,IAAI8G,UAAUwJ,EAAWtQ,IAAI+G,QAAQ,KAAO,IAElG,MAGJ,IAAK,QAAS,CACV,MAAMwJ,EAAa/V,EACnBzK,KAAKkI,aAAasY,EAAWvQ,MAAQ,EACK,IAAtCjQ,KAAKkI,aAAasY,EAAWvQ,MAC7BjQ,KAAKiI,oBAAoBkP,IAAI1D,OAAO,GAAG+M,EAAWvQ,IAAI8G,UAAUyJ,EAAWvQ,IAAI+G,QAAQ,KAAO,IAElG,MAGJ,IAAK,OACD,MAKRhX,KAAKyK,MAAM4H,MAAQrS,KAAKyK,MAAM4H,MAAM5G,OAAO,CAAChB,EAAkBkD,IAAgBA,IAAQP,GAGlFpN,KAAKyf,aAAerS,IACpBpN,KAAKyf,YAAc,EACnBzf,KAAKkf,cAAgB,QAI7BM,SAASiB,GAAM,GACX,IAAIC,EAEAD,GAEAC,EAAc1gB,KAAK4b,MAAM+E,YAAoBlW,MAC7CzK,KAAKyK,MAAM4H,MAAMgB,KAAKqN,IAGtBA,EAAc1gB,KAAK4b,MAAM+E,YAAoBlW,MAG7CiW,EAAWxb,OAASuH,GAAUmT,WAEC9Q,IAA3B9O,KAAK4b,MAAM+E,aACoE,oBAAvE3gB,KAAK4b,MAAM+E,YAA4CxV,cAE9DnL,KAAK4b,MAAM+E,YAA4CxV,cAEpDuV,EAAWxb,OAASuH,GAAUyT,KAC9BlgB,KAAK8L,MAAM,eAKvB9L,KAAKkf,cAAgB,OAGzB/T,iBAnJQjK,eAAA,CAAPuQ,kB,6BACOvQ,eAAA,CAAPuQ,kB,2CACOvQ,eAAA,CAAPuQ,kB,4BACOvQ,eAAA,CAAPuQ,kB,oCAJgBiO,GAAgBxe,eAAA,CATpC0Q,eAAQ,CACLC,WAAY,CACR,eAAgBE,GAChB,eAAgB2E,GAChB,cAAeiC,GACf,aAAcqB,GACd,eAAgB4D,OAGH8B,c,UCtBrB,MAAM,GAA2B,IAAgB,GAAQ,CAAC,CAAC,SAAS,IAAQ,CAAC,YAAY,qBAE1E,UCPf,MAAMzhB,GAAa,CACjBE,MAAO,8CACPgb,MAAO,CAAC,OAAS,WAGb,SAAU/a,GAAOC,EAAUC,EAAYC,EAAYC,EAAYC,EAAWC,GAC9E,MAAMwF,EAAqBtF,8BAAkB,WAE7C,OAAQC,yBAAcC,gCAAoB,MAAOb,GAAY,CAC3DgE,yBAAaiC,EAAoB,CAC/BsC,KAAM,QACNC,MAAO,UACP0S,MAAO,CAAC,OAAS,cCLvB,IAAqByH,GAArB,cAA0CxgB,SAArBwgB,GAAY1f,eAAA,CALhC0Q,eAAQ,CACLC,WAAY,CACRgP,QAASC,YAGIF,cCJrB,MAAM,GAA2B,IAAgB,GAAQ,CAAC,CAAC,SAAS,MAErD,UCLf,MAAM3iB,GAAa,CAAEE,MAAO,SACtBoD,GAAa,CAAEpD,MAAO,QACtBqD,GAAa,CAAExC,IAAK,GACpByC,GAAa,CAAEzC,IAAK,GACpB0C,GAAa,CAAEvD,MAAO,cACtBwD,GAAa,CAAExD,MAAO,gBACtByD,GAAa,CAAC,WACda,GAAa,CAAC,WACdC,GAAa,CAAEvE,MAAO,iBACtBwE,GAAc,CAAExE,MAAO,8BACvByE,GAAc,CAAE5D,IAAK,GACrB6D,GAAc,CAAC,YACfM,GAAc,CAAEnE,IAAK,GACrBoE,GAA2BtB,gCAAoB,KAAM,KAAM,MAAO,GAClEuB,GAA2BvB,gCAAoB,KAAM,KAAM,MAAO,GAClEwB,GAA2BxB,gCAAoB,KAAM,KAAM,MAAO,GAClEyB,GAAc,CAAEpF,MAAO,qBACvBqF,GAA2B1B,gCAAoB,KAAM,KAAM,MAAO,GAElE,SAAU1D,GAAOC,EAAUC,EAAYC,EAAYC,EAAYC,EAAWC,GAC9E,OAAQG,yBAAcC,gCAAoB,MAAOb,GAAY,CAC3D6D,gCAAoB,MAAOP,GAAY,CACrCO,gCAAoB,SAAU,CAC5B6C,QAASrG,EAAO,KAAOA,EAAO,GAAK,IAAMD,EAAK0iB,YAAY,SAC1D5iB,MAAOsH,4BAAgB,CAAC,yCAAiE,SAAvBpH,EAAK6gB,cAA2B,eAAiB,qBAClHnd,6BAAiB1D,EAAKyC,GAAG,wBAAyB,GACrDgB,gCAAoB,SAAU,CAC5B6C,QAASrG,EAAO,KAAOA,EAAO,GAAK,IAAMD,EAAK0iB,YAAY,WAC1D5iB,MAAOsH,4BAAgB,CAAC,yCAAiE,SAAvBpH,EAAK6gB,cAA2B,eAAiB,qBAClHnd,6BAAiB1D,EAAKyC,GAAG,6BAA8B,KAEpC,SAAvBzC,EAAK6gB,eACDrgB,yBAAcC,gCAAoB,MAAO0C,GAAY,EACnD3C,yBAAcE,yBAAamN,qCAAyB,eAAgB,CACnElN,IAAK,OACLyL,MAAOpM,EAAKoM,MACZxC,oBAAqB5J,EAAK4J,oBAC1BtH,KAAMtC,EAAKsC,MACV,KAAM,EAAG,CAAC,QAAS,sBAAuB,aAE/C6D,gCAAoB,IAAI,GACJ,WAAvBnG,EAAK6gB,eACDrgB,yBAAcC,gCAAoB,MAAO2C,GAAY,CACpDK,gCAAoB,QAASJ,GAAY,CACvCI,gCAAoB,KAAMH,GAAY,CACpCG,gCAAoB,KAAM,KAAMC,6BAAiB1D,EAAKyC,GAAG,qBAAsB,GAC/EgB,gCAAoB,KAAM,KAAMC,6BAAiB1D,EAAKyC,GAAG,uBAAwB,GACjFgB,gCAAoB,KAAM,KAAMC,6BAAiB1D,EAAKyC,GAAG,0BAA2B,MAErFjC,wBAAW,GAAOC,gCAAoB2F,cAAW,KAAMkB,wBAAYtH,EAAKoM,MAAMuV,SAAU,CAAC5S,EAAMO,KACtF9O,yBAAcC,gCAAoB,KAAM,CAC9CX,MAAO,iBACPa,IAAK2O,GACJ,CACD7L,gCAAoB,KAAM,KAAMC,6BAAiBqL,EAAKlP,IAAK,GAC3D4D,gCAAoB,KAAM,KAAMC,6BAAiB1D,EAAKmM,oBAAoB4C,EAAK3C,QAAS,GACxF3I,gCAAoB,KAAM,KAAM,CAC9BA,gCAAoB,OAAQ,CAC1B6C,QAASA,IAAMtG,EAAK2iB,YAAYrT,IAC/B5L,6BAAiB1D,EAAKyC,GAAG,4BAA6B,EAAGc,IAC5DoD,6BAAiB,OACjBlD,gCAAoB,OAAQ,CAC1B6C,QAASA,IAAMtG,EAAK4iB,YAAY7T,EAAMO,IACrC5L,6BAAiB1D,EAAKyC,GAAG,kBAAmB,EAAG2B,UAGpD,MACJX,gCAAoB,KAAMY,GAAY,CACpCZ,gCAAoB,KAAMa,GAAa,CACrCsC,4BAAgBnD,gCAAoB,QAAS,CAC3C3D,MAAO,eACP+G,KAAM,OACNiF,YAAa,iBACb,sBAAuB7L,EAAO,KAAOA,EAAO,GAAMsG,GAAkBvG,EAAK6iB,aAAgBtc,IACxF,KAAM,KAAM,CACb,CAACc,gBAAarH,EAAK6iB,gBAEpB7iB,EAAK8iB,QACDtiB,yBAAcC,gCAAoB,IAAK8D,GAAab,6BAAiB1D,EAAKyC,GAAG,0BAA2B,IACzG0D,gCAAoB,IAAI,KAE9B1C,gCAAoB,KAAM,KAAM,CAC9BmD,4BAAgBnD,gCAAoB,SAAU,CAC5C,sBAAuBxD,EAAO,KAAOA,EAAO,GAAMsG,GAAkBvG,EAAKihB,aAAgB1a,IACxF,EACA/F,wBAAW,GAAOC,gCAAoB2F,cAAW,KAAMkB,wBAAY2F,OAAOC,KAAKlN,EAAKmN,SAAWG,IACtF9M,yBAAcC,gCAAoB,SAAU,CAAEE,IAAK2M,GAAS5J,6BAAiB4J,GAAQ,KAC3F,OACH,KAAM,CACP,CAACyV,kBAAe/iB,EAAKihB,kBAGzBxd,gCAAoB,KAAM,KAAM,CAC9BA,gCAAoB,SAAU,CAC5B3D,MAAO,gBACPwG,QAASrG,EAAO,KAAOA,EAAO,GAEhD,IAAI8H,IAAU/H,EAAKgjB,gBAAkBhjB,EAAKgjB,kBAAkBjb,IAC1CY,SAAU3I,EAAK8iB,QACd,UAAW,EAAGte,WAIC,IAAvBxE,EAAKijB,cACDziB,yBAAcC,gCAAoB,MAAOqE,GAAa,CACrDC,GACAC,GACAC,GACAxB,gCAAoB,OAAQyB,GAAaxB,6BAAiB1D,EAAKyC,GAAG,yBAA0B,GAC5F0C,IACC3E,yBAAcE,yBAAamN,qCAAyB7N,EAAKmN,QAAQnN,EAAKmM,oBAAoBnM,EAAKoM,MAAMuV,SAAS3hB,EAAKijB,cAAc7W,SAAU,CAC1I7B,IAAK,QACL5J,IAAKX,EAAKijB,aAAejjB,EAAKmM,oBAAoBnM,EAAKoM,MAAMuV,SAAS3hB,EAAKijB,cAAc7W,OACzFA,MAAOpM,EAAKoM,MAAMuV,SAAS3hB,EAAKijB,cAAc7W,MAC9CxC,oBAAqB5J,EAAK4J,oBAC1BtH,KAAMtC,EAAKsC,KACXuH,aAAc7J,EAAK6J,aACnB2C,YAAaxM,EAAKwM,YAClBuB,gBAAiB/N,EAAK+N,gBACtBP,YAAavN,EAAO,KAAOA,EAAO,GAAMsG,GAAiBvG,EAAKyN,MAAM,gBACnE,KAAM,GAAI,CAAC,QAAS,sBAAuB,OAAQ,eAAgB,cAAe,wBAEvFtH,gCAAoB,IAAI,MAE9BA,gCAAoB,IAAI,K,OC1FhC,IAAqB+c,GAAcC,GAAnC,cAA4CphB,OAAGwO,eAAAxI,GAAA,SAAAA,GAAAyI,gBAAA,qBAAAA,gBAAA,mCAAAA,gBAAA,oBAAAA,gBAAA,4BAAAA,gBAAA,2BAAAA,gBAAA,+BAAAA,gBAAA,eAQT,CAC9BgB,KAAM,cACNgH,MAAO,eACPoJ,UAAW,mBACX1S,MAAO,eACPuD,IAAK,aACL6O,MAAO,iBACV9Q,gBAAA,sBAEgC,CAC7BgB,KAAM,CACF3K,KAAMuH,GAAUmT,KAChB/e,MAAO,GACPoN,QAAS,IAEb4R,QAAS,CACL3a,KAAMuH,GAAUqT,QAChBjf,MAAO,GACPkf,SAAU,GACV9R,QAAS,GACT+R,SAAU,IAEdC,UAAW,CACP/a,KAAMuH,GAAU2F,UAChBC,MAAO,GACPoP,aAAa,GAEjB5K,MAAO,CACH3R,KAAMuH,GAAU6L,MAChBrI,IAAK,IAET1C,MAAO,CACHrI,KAAMuH,GAAUoH,MAChB5D,IAAK,IAETa,IAAK,CACD5L,KAAMuH,GAAUyT,IAChBtU,OAAQ,GACR/K,MAAO,GACPsf,aAAa,GAEjBR,MAAO,CACHza,KAAMuH,GAAU2T,MAChBvf,MAAO,GACP+b,UAAW,GACX3M,IAAK,MAEZpB,gBAAA,qBAEe,QAAMA,gBAAA,qBACN,GAACA,gBAAA,oBAEF,IAAEA,gBAAA,oBACF,QAEf,aACI,OAAO7O,KAAKyK,MAAMuV,SAAS7D,KAAMuF,GAAyBA,EAAGxjB,KAAO8B,KAAKkhB,cAG7EH,YAAY5e,GACmB,SAAvBnC,KAAKkf,eACLlf,KAAKmL,cAETnL,KAAKkf,cAAgB/c,EAGzB6e,YAAYrT,GAER3N,KAAKmL,cACLnL,KAAKshB,aAAe3T,EAGxBsT,YAAYxW,EAAkB6C,GAE1B,OAAa,OAAL7C,QAAK,IAALA,OAAK,EAALA,EAAOvF,MACX,IAAK,MAAO,CACR,MAAMob,EAAW7V,EACjBzK,KAAKkI,aAAaoY,EAAS1U,SAAW,EACK,IAAvC5L,KAAKkI,aAAaoY,EAAS1U,SAC3B5L,KAAKiI,oBAAoBkP,IAAI1D,OACzB,GAAG6M,EAAS1U,OAAOmL,UAAUuJ,EAAS1U,OAAOoL,QAAQ,KAAO,IAGpE,MAGJ,IAAK,QAAS,CACV,MAAMuJ,EAAa9V,EACnBzK,KAAKkI,aAAaqY,EAAWtQ,MAAQ,EACK,IAAtCjQ,KAAKkI,aAAaqY,EAAWtQ,MAC7BjQ,KAAKiI,oBAAoBkP,IAAI1D,OAAO,GAAG8M,EAAWtQ,IAAI8G,UAAUwJ,EAAWtQ,IAAI+G,QAAQ,KAAO,IAElG,MAGJ,IAAK,QAAS,CACV,MAAMwJ,EAAa/V,EAEnBzK,KAAKkI,aAAasY,EAAWvQ,MAAQ,EACK,IAAtCjQ,KAAKkI,aAAasY,EAAWvQ,MAC7BjQ,KAAKiI,oBAAoBkP,IAAI1D,OAAO,GAAG+M,EAAWvQ,IAAI8G,UAAUyJ,EAAWvQ,IAAI+G,QAAQ,KAAO,IAElG,MAGJ,IAAK,YAAa,CACd,MAAM2K,EAAiBlX,EACvBkX,EAAetP,MAAMuB,QAASxG,IAC1BpN,KAAKihB,YAAY7T,KAErB,MAGJ,IAAK,QAAS,CACV,MAAMwU,EAAanX,EACU,UAAzBmX,EAAWhF,YACX5c,KAAKkI,aAAa0Z,EAAW3R,MAAQ,EACK,IAAtCjQ,KAAKkI,aAAa0Z,EAAW3R,MAC7BjQ,KAAKiI,oBAAoBkP,IAAI1D,OACzB,GAAGmO,EAAW3R,IAAI8G,UAAU6K,EAAW3R,IAAI+G,QAAQ,KAAO,KAItE,OAIJ1J,IAEAtN,KAAKyK,MAAMuV,SAAWhgB,KAAKyK,MAAMuV,SAASvU,OAAO,CAAChB,EAAyBkD,IAAgBA,IAAQL,GAG/FtN,KAAKshB,eAAiBhU,IACtBtN,KAAKshB,cAAgB,IAKjCD,iBACI,IAAKrhB,KAAKkhB,aAAc,OAExB,MAAMW,EAAY,CACd3jB,GAAI8B,KAAKkhB,aACTzW,MAAOiF,KAAKC,MAAMD,KAAK0D,UAAUpT,KAAKuf,eAAevf,KAAKsf,iBAG9Dtf,KAAKkhB,aAAe,GACpBlhB,KAAKyK,MAAMuV,SAAS3M,KAAKwO,GAG7BrX,oBAAoBC,GAChB,GAAIA,EAAMvF,OAASuH,GAAU2F,UAAW,OAAO3H,EAAMvF,KACrD,GAA+C,IAA1CuF,EAAyB4H,MAAMpH,QAAiBR,EAAyBgX,YAC1E,OAAOhV,GAAU2F,UAGrB,MAAM0P,EAAarX,EAAyB4H,MAAM0P,MAAO3U,GAAoBA,EAAKlI,OAASuH,GAAUoH,OACrG,GAAIiO,EAAW,OAAOrV,GAAUoH,MAGhC,MAAMmO,EAAavX,EAAyB4H,MAAM0P,MAAO3U,GAAoBA,EAAKlI,OAASuH,GAAU6L,OACrG,OAAI0J,EAAkBvV,GAAU6L,MAGzB7L,GAAU2F,UAGrBjH,mBAE6B2D,IAArB9O,KAAK4b,MAAMqG,OAC8D,oBAAjEjiB,KAAK4b,MAAMqG,MAAsC9W,aAExDnL,KAAK4b,MAAMqG,MAAsC9W,gBAnLlDjK,eAAA,CAAPuQ,kB,6BACOvQ,eAAA,CAAPuQ,kB,2CACOvQ,eAAA,CAAPuQ,kB,4BACOvQ,eAAA,CAAPuQ,kB,oCACOvQ,eAAA,CAAPuQ,kB,mCACOvQ,eAAA,CAAPuQ,kB,uCANgB8P,GAAcC,GAAAtgB,eAAA,CAXlC0Q,eAAQ,CACLC,WAAY,CACR,eAAgBE,GAChB,eAAgB2E,GAChB,cAAeiC,GACf,mBAAoB+G,GACpB,iBAAkB8B,GAClB,aAAcxH,GACd,eAAgB4D,OAGH2D,c,UC7BrB,MAAM,GAA2B,IAAgB,GAAQ,CAAC,CAAC,SAAS,MAErD,UCoCf,IAAqBW,GAArB,cAA0C9hB,OAAGwO,eAAAxI,GAAA,SAAAA,GAAAyI,gBAAA,mBACHC,GAASD,gBAAA,4BAAAA,gBAAA,mCAAAA,gBAAA,oBAAAA,gBAAA,mBAAAA,gBAAA,0BAAAA,gBAAA,sBAAAA,gBAAA,4BAAAA,gBAAA,kBASlC,GAACA,gBAAA,2BACO,GAAKA,gBAAA,eAChB,IAAEA,gBAAA,kBACA,GAAKA,gBAAA,oBACH,GAAKA,gBAAA,oBACL,GAAKA,gBAAA,wBACD,GAAKA,gBAAA,eAEW,CAC9BgB,KAAM,cACNgH,MAAO,eACPoJ,UAAW,mBACX1S,MAAO,eACPuD,IAAK,aACL6O,MAAO,eACPtR,QAAS,eACTwR,QAAS,mBAIbsC,gBACIniB,KAAKkK,eAAgBlK,KAAKuK,UAA+C,IAAnCvK,KAAKkK,aAAaO,MAAMQ,QAGlEoB,gBAAgB+V,EAAkBhX,GAC9B,MAAMmU,EAAiC,CACnC1P,KAAM,CACF3K,KAAMuH,GAAUmT,KAChB/e,MAAO,GACPoN,QAAS,IAEb4R,QAAS,CACL3a,KAAMuH,GAAUqT,QAChBjf,MACIb,KAAKkK,aAAaO,MAAM,IAAmB,SAAb2X,EACvBpiB,KAAKkK,aAAaO,MAAM,GAAiB5J,MAC1C,GACVkf,SAAU,GACV9R,QACIjO,KAAKkK,aAAaO,MAAM,IAAmB,SAAb2X,EACvBpiB,KAAKkK,aAAaO,MAAM,GAAiBwD,QAC1C,GACV+R,SAAU,IAEdC,UAAW,CACP/a,KAAMuH,GAAU2F,UAChBC,MAAO,GACPoP,aAAa,GAEjB5K,MAAO,CACH3R,KAAMuH,GAAU6L,MAChBrI,IAAK,IAET1C,MAAO,CACHrI,KAAMuH,GAAUoH,MAChB5D,IAAK,IAETa,IAAK,CACD5L,KAAMuH,GAAUyT,IAChBtU,OAAQ,GACR/K,MAAO,GACPsf,aAAa,GAEjBR,MAAO,CACHza,KAAMuH,GAAU2T,MAChBvf,MAAO,GACP+b,UAAW,GACX3M,IAAK,KAKbjQ,KAAKkK,aAAaO,MAAMmJ,QAASnJ,GAAqBzK,KAAKqiB,mBAAmB5X,IAG9D,YAAZW,GACApL,KAAK0K,WAAa,EAClB1K,KAAKkK,aAAa,SAAW,CAACqV,EAAenU,IAC7CpL,KAAKoM,iBAAkB,GAGvBpM,KAAKkK,aAAaO,MAAMzK,KAAK0K,YAAc6U,EAAenU,GAIlEiX,mBAAmB5X,GAEf,OAAQA,EAAMvF,MACV,IAAK,MAAO,CACR,MAAMob,EAAW7V,EACjBzK,KAAKkI,aAAaoY,EAAS1U,SAAW,EACK,IAAvC5L,KAAKkI,aAAaoY,EAAS1U,SAC3B5L,KAAKiI,oBAAoBkP,IAAI1D,OACzB,GAAG6M,EAAS1U,OAAOmL,UAAUuJ,EAAS1U,OAAOoL,QAAQ,KAAO,IAGpE,MAGJ,IAAK,QAAS,CACV,MAAMwJ,EAAa/V,EACnBzK,KAAKkI,aAAasY,EAAWvQ,MAAQ,EACK,IAAtCjQ,KAAKkI,aAAasY,EAAWvQ,MAC7BjQ,KAAKiI,oBAAoBkP,IAAI1D,OAAO,GAAG+M,EAAWvQ,IAAI8G,UAAUyJ,EAAWvQ,IAAI+G,QAAQ,KAAO,IAGlG,MAGJ,IAAK,QAAS,CACV,MAAMuJ,EAAa9V,EACnBzK,KAAKkI,aAAaqY,EAAWtQ,MAAQ,EACK,IAAtCjQ,KAAKkI,aAAaqY,EAAWtQ,MAC7BjQ,KAAKiI,oBAAoBkP,IAAI1D,OAAO,GAAG8M,EAAWtQ,IAAI8G,UAAUwJ,EAAWtQ,IAAI+G,QAAQ,KAAO,IAGlG,MAGJ,IAAK,YAAa,CACd,MAAM2K,EAAiBlX,EACvBkX,EAAetP,MAAMuB,QAASxG,IAC1BpN,KAAKqiB,mBAAmBjV,KAE5B,MAGJ,IAAK,QAAS,CACV,MAAMwU,EAAanX,EACU,UAAzBmX,EAAWhF,YACX5c,KAAKkI,aAAa0Z,EAAW3R,MAAQ,EACK,IAAtCjQ,KAAKkI,aAAa0Z,EAAW3R,MAC7BjQ,KAAKiI,oBAAoBkP,IAAI1D,OACzB,GAAGmO,EAAW3R,IAAI8G,UAAU6K,EAAW3R,IAAI+G,QAAQ,KAAO,KAItE,MAGJ,IAAK,UAAW,CACZ,MAAMsL,EAAe7X,EACrB6X,EAAatC,SAASpM,QAAS2O,IAC3BviB,KAAKqiB,mBAAmBE,EAAS9X,SAErC,MAGJ,IAAK,OACD,OAKZU,mBAE8B2D,IAAtB9O,KAAK4b,MAAMlQ,QAEP,oBADI1L,KAAK4b,MAAMlQ,OAAsEP,aAGxFnL,KAAK4b,MAAMlQ,OAAsEP,cAI1Ff,YAAYkD,GACRtN,KAAK8L,MAAM,eAAgBwB,GAG/Bf,mBACKvM,KAAK4b,MAAM4G,aAAmCnX,MAAQrL,KAAKwK,oBACxDxK,KAAKkK,aAAaO,MAAMzK,KAAK0K,aAIrCF,oBAAoBC,GAChB,GAAIA,EAAMvF,OAASuH,GAAU2F,UAAW,OAAO3H,EAAMvF,KACrD,GAA+C,IAA1CuF,EAAyB4H,MAAMpH,QAAiBR,EAAyBgX,YAC1E,OAAOhV,GAAU2F,UAGrB,MAAM0P,EAAarX,EAAyB4H,MAAM0P,MAAO3U,GAAoBA,EAAKlI,OAASuH,GAAUoH,OACrG,GAAIiO,EAAW,OAAOrV,GAAUoH,MAGhC,MAAMmO,EAAavX,EAAyB4H,MAAM0P,MAAO3U,GAAoBA,EAAKlI,OAASuH,GAAU6L,OACrG,OAAI0J,EAAkBvV,GAAU6L,MAGzB7L,GAAU2F,UAGrB5F,kBACIxM,KAAKmL,cACDnL,KAAKuK,WACLvK,KAAK0K,WAAa,EAClB1K,KAAKkK,aAAa,SAAW,CAAClK,KAAKkK,aAAaO,MAAM,KAEtDzK,KAAKkK,aAAa,SAAW,CACzBoB,OAAOwH,OACH,GACA,CACI5N,KAAMuH,GAAUmT,KAChB/e,MAAO,GACPoN,QAAS,KAGjB3C,OAAOwH,OAAO,GAAI9S,KAAKkK,aAAaO,MAAM,KAKtDM,oBAC+E,YAAvE/K,KAAKwK,oBAAoBxK,KAAKkK,aAAaO,MAAMzK,KAAK0K,aAClD1K,KAAK6K,YACL7K,KAAKkK,aAAaO,MAAM,GAAG8H,aAAe,qBAE1CvS,KAAKkK,aAAaO,MAAM,GAAG8H,cAAgBvS,KAAKkK,aAAaO,MAAM,GAAG8H,cAAgB,IAAIC,QACtF,qBACA,IAGDxS,KAAKuK,UACRvK,KAAK6K,YACL7K,KAAKkK,aAAaO,MAAM,GAAG8H,aAAe,uBAE1CvS,KAAKkK,aAAaO,MAAM,GAAG8H,cAAgBvS,KAAKkK,aAAaO,MAAM,GAAG8H,cAAgB,IAAIC,QACtF,qBACA,IAEJxS,KAAKkK,aAAaO,MAAM,GAAG8H,cAAgBvS,KAAKkK,aAAaO,MAAM,GAAG8H,cAAgB,IAAIC,QACtF,oBACA,IAEJxS,KAAKkK,aAAaO,MAAM,GAAG8H,cAAgBvS,KAAKkK,aAAaO,MAAM,GAAG8H,cAAgB,IAAIC,QACtF,sBACA,KAIJxS,KAAK6K,aACL7K,KAAKkK,aAAaO,MAAM,GAAG8H,aAAe,qBAC1CvS,KAAKkK,aAAaO,MAAM,GAAG8H,aAAe,sBAE1CvS,KAAKkK,aAAaO,MAAM,GAAG8H,cAAgBvS,KAAKkK,aAAaO,MAAM,GAAG8H,cAAgB,IAAIC,QACtF,qBACA,IAEJxS,KAAKkK,aAAaO,MAAM,GAAG8H,cAAgBvS,KAAKkK,aAAaO,MAAM,GAAG8H,cAAgB,IAAIC,QACtF,oBACA,KAMhBxH,oBACI,GAAIhL,KAAK8K,YACL,IAAK,MAAM2X,KAAKziB,KAAKkK,aAAaO,MAC9BzK,KAAKkK,aAAaO,MAAMgY,GAAGlQ,aAAe,2BAG9C,IAAK,MAAMkQ,KAAKziB,KAAKkK,aAAaO,MAC9BzK,KAAKkK,aAAaO,MAAMgY,GAAGlQ,cAAgBvS,KAAKkK,aAAaO,MAAMgY,GAAGlQ,cAAgB,IAAIC,QACtF,sBACA,MAhRRtR,eAAA,CAAPuQ,kB,oCACOvQ,eAAA,CAAPuQ,kB,2CACOvQ,eAAA,CAAPuQ,kB,4BACOvQ,eAAA,CAAPuQ,kB,2BACOvQ,eAAA,CAAPuQ,kB,kCACOvQ,eAAA,CAAPuQ,kB,8BACOvQ,eAAA,CAAPuQ,kB,oCAsBDvQ,eAAA,CADCC,eAAM,eAAgB,CAAEuhB,MAAM,K,mCA7BdR,GAAYhhB,eAAA,CAdhC0Q,eAAQ,CACLC,WAAY,CACR,eAAgBE,GAChB,gBAAiBwC,GACjB,eAAgBmC,GAChB,cAAeiC,GACf,aAAcqB,GACd,eAAgB4D,GAChB,mBAAoB8B,GACpB,eAAgBkB,GAChB,iBAAkBW,GAClB,qBAAsBxN,OAGTmO,c,UCtCrB,MAAM,GAA2B,IAAgB,GAAQ,CAAC,CAAC,SAAS,IAAQ,CAAC,YAAY,qBAE1E,UCPf,MAAMjZ,GAAeC,IAAMC,yBAAa,mBAAmBD,EAAEA,IAAIE,0BAAcF,GACzEjL,GAAa,CAAEE,MAAO,6BACtBoD,GAAa,CAAEpD,MAAO,8CACtBqD,GAA2ByH,GAAa,IAAmBnH,gCAAoB,OAAQ,CAAE3D,MAAO,UAAY,MAAO,IACnHsD,GAA2BwH,GAAa,IAAmBnH,gCAAoB,OAAQ,CAAE3D,MAAO,WAAa,MAAO,IACpHuD,GAA2BuH,GAAa,IAAmBnH,gCAAoB,OAAQ,CAAE3D,MAAO,kCAAoC,CAC3H2D,gCAAoB,MAAO,CACtCmB,MAAO,6BACPF,MAAO,KACPC,OAAQ,KACRF,QAAS,aACR,CACYhB,gCAAoB,OAAQ,CAAEoB,EAAG,mDAE9C,IACEvB,GAAa,CAAExD,MAAO,6BACtByD,GAA2BqH,GAAa,IAAmBnH,gCAAoB,MAAO,CAC1FmB,MAAO,6BACPD,OAAQ,KACRD,MAAO,MACN,CACYjB,gCAAoB,OAAQ,CAAEoB,EAAG,6NAC5C,IACET,GAAa,CACjBb,IAEIc,GAAa,CACjBsB,KAAM,SACN7F,MAAO,qBAEHwE,GAAc,CAAExE,MAAO,iBACvByE,GAAc,CAAEzE,MAAO,0BACvB0E,GAAc,CAAE1E,MAAO,QACvBgF,GAAc,CAAC,SACfC,GAAc,CAAC,WACfC,GAAc,CAAElF,MAAO,kFACvBmF,GAAc,CAAEnF,MAAO,6BACvBoF,GAAc,CAAEpF,MAAO,QACvBqF,GAAc,CAAErF,MAAO,iBACvBsF,GAAc,CAAC,WACfC,GAA4BuF,GAAa,IAAmBnH,gCAAoB,MAAO,CAC3FmB,MAAO,6BACPF,MAAO,KACPC,OAAQ,KACRF,QAAS,aACR,CACYhB,gCAAoB,OAAQ,CAAEoB,EAAG,2GAC5C,IACES,GAAc,CAClBD,IAEIE,GAAc,CAAC,WACfC,GAA4BoF,GAAa,IAAmBnH,gCAAoB,MAAO,CAC3FmB,MAAO,6BACPD,OAAQ,KACRD,MAAO,MACN,CACYjB,gCAAoB,OAAQ,CAAEoB,EAAG,6NAC5C,IACEY,GAAc,CAClBD,IAEIE,GAAc,CAAE5F,MAAO,gCACvB8F,GAAc,CAAC,UAAW,YAC1BqF,GAA4BL,GAAa,IAAmBnH,gCAAoB,MAAO,CAC3FmB,MAAO,6BACP9E,MAAO,eACP6E,OAAQ,KACRD,MAAO,MACN,CACYjB,gCAAoB,OAAQ,CAAEoB,EAAG,uBAC5C,IACEyf,GAAc,CAClBrZ,IAEIC,GAAc,CAAC,UAAW,YAC1BC,GAA4BP,GAAa,IAAmBnH,gCAAoB,MAAO,CAC3FmB,MAAO,6BACP9E,MAAO,eACP6E,OAAQ,KACRD,MAAO,MACN,CACYjB,gCAAoB,OAAQ,CAAEoB,EAAG,uBAC5C,IACEuG,GAAc,CAClBD,IAGI,SAAUpL,GAAOC,EAAUC,EAAYC,EAAYC,EAAYC,EAAWC,GAC9E,MAAM2F,EAA6BzF,8BAAkB,mBAC/CwF,EAAgCxF,8BAAkB,sBAClD+N,EAAuB/N,8BAAkB,aACzCmP,EAAmBC,8BAAkB,SAE3C,OAAQnP,yBAAcC,gCAAoB,MAAO,KAAM,CACrDgD,gCAAoB,MAAO7D,GAAY,CACrC6D,gCAAoB,OAAQP,GAAYQ,6BAAiB1D,EAAKyC,GAAG,wBAAyB,GAC1FU,GACAC,GACAK,gCAAoB,SAAU,CAC5B3D,MAAO,gBACPwG,QAASrG,EAAO,KAAOA,EAAO,GAEtC,IAAI8H,IAAU/H,EAAKukB,aAAevkB,EAAKukB,eAAexc,KAC7C,CACD1E,GACAI,gCAAoB,OAAQH,GAAYI,6BAAiB1D,EAAKyC,GAAG,2BAA4B,KAE/FmE,6BAAiBpG,yBAAcC,gCAAoB,SAAU,CAC3DX,MAAO,gBACPwG,QAASrG,EAAO,KAAOA,EAAO,GAAKyH,2BAAgBnB,GAAiBvG,EAAKsJ,KAAKC,KAAK,wBAA0B,CAAC,WAC7GnF,KAAc,CACf,CAACsL,EAAkB,CACP8U,MAAO,MACP3U,UAAW,QACXD,QAAS5P,EAAKyC,GAAG,8BACjBsN,aAAa,MAG3BnM,yBAAaoC,EAA4B,CACvC2E,QAAS,uBACT,gBAAiB,uEACjB7K,MAAO,oCACN,CACDiE,QAASC,qBAAS,IAAM,CACtBP,gCAAoB,KAAMY,GAAYX,6BAAiB1D,EAAKyC,GAAG,+BAAgC,GAC/FgB,gCAAoB,MAAOa,GAAa,CACtCb,gCAAoB,SAAU,CAC5B3D,MAAO,iDACPwG,QAASrG,EAAO,KAAOA,EAAO,GAAMsG,GAAiBvG,EAAKykB,qBAAqBzkB,EAAK4J,oBAAoBD,QAAsB,OAAd3J,EAAKsC,KAAgB,KAAO,MAAMwH,UACjJpG,6BAAiB1D,EAAKyC,GAAG,0BAA2B,GACvDgB,gCAAoB,OAAQc,GAAab,6BAAiB1D,EAAKyC,GAAG,cAAe,GACjFgB,gCAAoB,MAAOe,GAAa,CACtCoC,4BAAgBnD,gCAAoB,SAAU,CAC5C,sBAAuBxD,EAAO,KAAOA,EAAO,GAAMsG,GAAkBvG,EAAK0kB,mBAAsBne,GAC/FzG,MAAO,iCACN,EACAU,wBAAW,GAAOC,gCAAoB2F,cAAW,KAAMkB,wBAAYtH,EAAK4J,oBAAoBD,QAAsB,OAAd3J,EAAKsC,KAAgB,KAAO,MAC5GwH,OAAQ,CAAC8Z,EAAO3U,KAC3BzO,yBAAcC,gCAAoB,SAAU,CAClDuM,MAAOiC,EACPtO,IAAKijB,EAAMphB,MAAQyM,GAClBvL,6BAAiB1D,EAAKyC,GAAG,wBAA0B,IAAMiB,6BAAiBuL,EAAQ,KAAO2U,EAAMphB,OAAQ,EAAGsC,MAC3G,OACH,KAAM,CACP,CAACie,kBAAe/iB,EAAK0kB,sBAEvBjhB,gCAAoB,SAAU,CAC5B3D,MAAO,oBACPwG,QAASrG,EAAO,KAAOA,EAAO,GAAMsG,GACpBvG,EAAK2kB,kBACD3kB,EAAK4J,oBAAoBD,QAAsB,OAAd3J,EAAKsC,KAAgB,KAAO,MAAMwH,OAAO9J,EAAK0kB,uBAGlGhhB,6BAAiB1D,EAAKyC,GAAG,uBAAwB,SAI1DwB,EAAG,MAGPR,gCAAoB,KAAM,KAAM,CAC9BG,yBAAa0K,EAAsB,CACjCK,WAAY3O,EAAK8J,OACjB,sBAAuB7J,EAAO,KAAOA,EAAO,GAAMsG,GAAkBvG,EAAK8J,OAAUvD,GACnFsI,SAAU5O,EAAO,KAAOA,EAAO,GAAMsG,GAAiBvG,EAAKyN,MAAM,iBAAkBzN,EAAK8J,SACxF,WAAY,SACX,CACDiF,KAAM/K,qBAAS,EAAGgL,UAASC,WAAY,CACrCrI,6BAAiBpG,yBAAcC,gCAAoB,KAAM,CACvDX,MAAOsH,4BAAgB,CAAC,gEAAiEpH,EAAK6L,eAAiBmD,EAAU,cAAgB,KACzI1I,QAAUC,GAAiBvG,EAAK+L,YAAYkD,GAC5CtO,IAAKqO,EAAQxM,MAAQyM,GACpB,CACDxL,gCAAoB,MAAOuB,GAAa,CACtC2B,6BAAiBjD,6BAAiB1D,EAAKyC,GAAG,wBAA0B,IAAMiB,6BAAiBuL,EAAQ,GAAK,KAAM,GAC9GxL,gCAAoB,OAAQwB,GAAavB,6BAAiBsL,EAAQxM,OAAS,eAAgB,KAE7FiB,gCAAoB,MAAOyB,GAAa,CACtCzB,gCAAoB,MAAO0B,GAAa,CACtC1B,gCAAoB,SAAU,CAC5B3D,MAAO,mBACPwG,QAASoB,2BAAgBnB,GAAiBvG,EAAKsJ,KAAKC,KAAK,gBAAgB0F,GAAW,CAAC,UACpF3J,GAAa,EAAGF,IACnB3B,gCAAoB,SAAU,CAC5B3D,MAAO,mBACPwG,QAASoB,2BAAgBnB,GAAiBvG,EAAK4kB,UAAU3V,GAAS,CAAC,UAClExJ,GAAa,EAAGF,MAErB9B,gCAAoB,MAAOiC,GAAa,CACtCjC,gCAAoB,SAAU,CAC5B3D,MAAOsH,4BAAgB,CAAC,mBAA6B,GAAT6H,EAAa,mCAAqC,KAC9F3I,QAASoB,2BAAgBnB,GAAiBvG,EAAK6kB,OAAO5V,GAAS,CAAC,SAChEtG,SAAmB,GAATsG,GACTqV,GAAa,GAAI1e,IACpBnC,gCAAoB,SAAU,CAC5B3D,MAAOsH,4BAAgB,CAAC,wCAAyC6H,GAASjP,EAAK8J,OAAO8C,OAAS,EAAI,mCAAqC,KACxItG,QAASoB,2BAAgBnB,GAAiBvG,EAAK8kB,SAAS7V,GAAS,CAAC,SAClEtG,SAAUsG,GAASjP,EAAK8J,OAAO8C,OAAS,GACvCxB,GAAa,GAAIF,QAGxBtH,yBAAamC,EAA+B,CAC1ClC,KAAM,gBAAgBoL,EACtBxF,QAASzJ,EAAKyC,GAAG,oCAAqC,CAAED,MAAOwM,EAAQxM,QACvEkH,KAAOnD,GAAiBvG,EAAK4iB,YAAY3T,IACxC,KAAM,EAAG,CAAC,OAAQ,UAAW,UAC/B,GAAIlK,KAAe,CACpB,CAAC2K,EAAkB,CACH8U,MAAO,MACP3U,UAAW,QACXD,QAASZ,EAAQxM,MACjBuN,aAAa,QAIjC9L,EAAG,GACF,EAAG,CAAC,mB,4BC5Lb,IAAqB8gB,GAArB,cAAuChjB,OAAGwO,eAAAxI,GAAA,SAAAA,GAAAyI,gBAAA,sBAAAA,gBAAA,4BAAAA,gBAAA,0BAAAA,gBAAA,mCAAAA,gBAAA,oBAAAA,gBAAA,4BAAAA,gBAAA,0BAQjB,GAErBzE,YAAYkD,GACRtN,KAAK8L,MAAM,eAAgBwB,GAG/BsV,cACI5iB,KAAKmI,OAAOkL,KAAK,CACbxS,MAAO,GACP4J,MAAO,CACH,CACIvF,KAAM,OACNrE,MAAO,GACPoN,QAAS,IAEb,CACI/I,KAAM,OACNrE,MAAO,GACPoN,QAAS,OAIrBjO,KAAKoK,YAAYpK,KAAKmI,OAAO8C,OAAS,GACtCjL,KAAK8L,MAAM,iBAAkB9L,KAAKmI,QAGtC6a,kBAAkBf,GACVA,IACAjiB,KAAKmI,OAAOuL,OAAO1T,KAAKmI,OAAO8C,OAAQ,EAAGoY,KAAUpB,IACpDjiB,KAAK8L,MAAM,iBAAkB9L,KAAKmI,SAI1C2a,qBAAqB3a,GACbA,IACAnI,KAAKmI,OAAOuL,OAAO1T,KAAKmI,OAAO8C,OAAQ,KAAM9C,EAAO2I,IAAKmR,GAAUoB,KAAUpB,KAC7EjiB,KAAK8L,MAAM,iBAAkB9L,KAAKmI,SAI1C8a,UAAU3V,GACNtN,KAAKmI,OAAOuL,OAAOpG,EAAQ,EAAG,EAAG+V,KAAUrjB,KAAKmI,OAAOmF,KACvDtN,KAAK8L,MAAM,iBAAkB9L,KAAKmI,QAGtC8Y,YAAY3T,GACJA,IAAUtN,KAAKqK,YACfrK,KAAK8L,MAAM,gBAAiB,GAIhC9L,KAAKqiB,mBAAmB/U,GAExBtN,KAAKmI,OAAOuL,OAAOpG,EAAO,GAC1BtN,KAAK8L,MAAM,iBAAkB9L,KAAKmI,QAGtCka,mBAAmBiB,GAAoB,IAAAC,EACnC,MAAM9Y,EAA6E,QAAxE8Y,EAAGvjB,KAAKmI,OAAOkY,KAAK,CAAC4B,EAActU,IAAgBA,IAAQ2V,UAAa,IAAAC,OAAA,EAArEA,EAAuE9Y,MAChF,OAALA,QAAK,IAALA,KAAOmJ,QAAS6O,GAAiBziB,KAAKwjB,mBAAmBf,IAG7De,mBAAmB/Y,GAEf,OAAQA,EAAMvF,MACV,IAAK,MAAO,CACR,MAAMob,EAAW7V,EACjBzK,KAAKkI,aAAaoY,EAAS1U,SAAW,EACK,IAAvC5L,KAAKkI,aAAaoY,EAAS1U,SAC3B5L,KAAKiI,oBAAoBkP,IAAI1D,OACzB,GAAG6M,EAAS1U,OAAOmL,UAAUuJ,EAAS1U,OAAOoL,QAAQ,KAAO,IAGpE,MAGJ,IAAK,QAAS,CACV,MAAMwJ,EAAa/V,EACnBzK,KAAKkI,aAAasY,EAAWvQ,MAAQ,EACK,IAAtCjQ,KAAKkI,aAAasY,EAAWvQ,MAC7BjQ,KAAKiI,oBAAoBkP,IAAI1D,OAAO,GAAG+M,EAAWvQ,IAAI8G,UAAUyJ,EAAWvQ,IAAI+G,QAAQ,KAAO,IAGlG,MAGJ,IAAK,QAAS,CACV,MAAMuJ,EAAa9V,EACnBzK,KAAKkI,aAAaqY,EAAWtQ,MAAQ,EACK,IAAtCjQ,KAAKkI,aAAaqY,EAAWtQ,MAC7BjQ,KAAKiI,oBAAoBkP,IAAI1D,OAAO,GAAG8M,EAAWtQ,IAAI8G,UAAUwJ,EAAWtQ,IAAI+G,QAAQ,KAAO,IAGlG,MAGJ,IAAK,YAAa,CACd,MAAM2K,EAAiBlX,EACvBkX,EAAetP,MAAMuB,QAASxG,IAC1BpN,KAAKwjB,mBAAmBpW,KAE5B,MAGJ,IAAK,QAAS,CACV,MAAMwU,EAAanX,EACU,UAAzBmX,EAAWhF,YACX5c,KAAKkI,aAAa0Z,EAAW3R,MAAQ,EACK,IAAtCjQ,KAAKkI,aAAa0Z,EAAW3R,MAC7BjQ,KAAKiI,oBAAoBkP,IAAI1D,OACzB,GAAGmO,EAAW3R,IAAI8G,UAAU6K,EAAW3R,IAAI+G,QAAQ,KAAO,KAItE,MAGJ,IAAK,UAAW,CACZ,MAAMsL,EAAe7X,EACrB6X,EAAatC,SAASpM,QAAS2O,IAC3BviB,KAAKwjB,mBAAmBjB,EAAS9X,SAErC,MAGJ,IAAK,OACD,OAKZyY,OAAO5V,GACHtN,KAAKmjB,SAAS7V,EAAQ,GAG1B6V,SAAS7V,GACLtN,KAAKmI,OAAOuL,OAAOpG,EAAQ,EAAG,EAAGtN,KAAKmI,OAAOuL,OAAOpG,EAAO,GAAG,IAC9DtN,KAAK8L,MAAM,iBAAkB9L,KAAKmI,UAhJ9BjH,eAAA,CAAPuQ,kB,8BACOvQ,eAAA,CAAPuQ,kB,oCACOvQ,eAAA,CAAPuQ,kB,kCACOvQ,eAAA,CAAPuQ,kB,2CACOvQ,eAAA,CAAPuQ,kB,4BACOvQ,eAAA,CAAPuQ,kB,oCANgB2R,GAASliB,eAAA,CAR7B0Q,eAAQ,CACLC,WAAY,CACR,eAAgBqQ,GAChB,qBAAsBnO,GACtB,kBAAmBjC,QACnBkC,mBAGaoP,c,UCxBrB,MAAM,GAA2B,IAAgB,GAAQ,CAAC,CAAC,SAAS,IAAQ,CAAC,YAAY,qBAE1E,UCPf,MAAMnlB,GAAa,CAAEE,MAAO,qBACtBoD,GAAa,CAAC,SACdC,GAA0BM,gCAAoB,KAAM,KAAM,MAAO,GACjEL,GAAa,CAAEtD,MAAO,qBACtBuD,GAAa,CAAC,SACdC,GAAa,CAAExD,MAAO,qBACtByD,GAAa,CAAC,SACda,GAA0BX,gCAAoB,KAAM,KAAM,MAAO,GACjEY,GAAa,CAAE1D,IAAK,GACpB2D,GAAc,CAAExE,MAAO,gBACvByE,GAAc,CAAC,OACfC,GAAc,CAClB7D,IAAK,EACLb,MAAO,iBAEHgF,GAAc,CAAEhF,MAAO,qBACvBiF,GAAc,CAAC,SACfC,GAA2BvB,gCAAoB,KAAM,KAAM,MAAO,GAClEwB,GAAc,CAAEnF,MAAO,gBACvBoF,GAAc,CAAC,SACfC,GAA2B1B,gCAAoB,KAAM,KAAM,MAAO,GAClE2B,GAA2B3B,gCAAoB,QAAS,CAAE3D,MAAO,qBAAuB,MAAO,GAC/FuF,GAAc,CAAEvF,MAAO,gBACvBwF,GAA2B7B,gCAAoB,KAAM,KAAM,MAAO,GAClE8B,GAAc,CAAEzF,MAAO,gBACvB0F,GAAc,CAAC,SACfC,GAA2BhC,gCAAoB,KAAM,KAAM,MAAO,GAClEiC,GAA2BjC,gCAAoB,QAAS,CAAE3D,MAAO,qBAAuB,MAAO,GAC/F8F,GAAc,CAAE9F,MAAO,gBACvBmL,GAA2BxH,gCAAoB,KAAM,KAAM,MAAO,GAClE6gB,GAAc,CAAExkB,MAAO,gBACvBoL,GAAc,CAAC,SACfC,GAA2B1H,gCAAoB,KAAM,KAAM,MAAO,GAClE2H,GAA2B3H,gCAAoB,QAAS,CAAE3D,MAAO,qBAAuB,MAAO,GAC/FuL,GAAc,CAAEvL,MAAO,gBACvBwL,GAA2B7H,gCAAoB,KAAM,KAAM,MAAO,GAClE8H,GAAc,CAAEzL,MAAO,sBACvB0L,GAAc,CAAEwB,MAAO,YACvBvB,GAAc,CAAEuB,MAAO,cACvBtB,GAA2BjI,gCAAoB,KAAM,KAAM,MAAO,GAClEkI,GAA2BlI,gCAAoB,QAAS,CAAE3D,MAAO,qBAAuB,MAAO,GAC/FslB,GAAc,CAAEtlB,MAAO,gBACvBulB,GAA2B5hB,gCAAoB,KAAM,KAAM,MAAO,GAClE6hB,GAAc,CAAExlB,MAAO,qBACvBylB,GAAc,CAAC,SACfC,GAA2B/hB,gCAAoB,KAAM,KAAM,MAAO,GAClEgiB,GAA2BhiB,gCAAoB,KAAM,KAAM,MAAO,GAElE,SAAU1D,GAAOC,EAAUC,EAAYC,EAAYC,EAAYC,EAAWC,GAC9E,OAAQG,yBAAcC,gCAAoB,MAAO,KAAM,CACrDgD,gCAAoB,QAAS7D,GAAY8D,6BAAiB1D,EAAKyC,GAAG,iBAAmB,IAAK,GAC1FgB,gCAAoB,QAAS,CAC3BoD,KAAM,OACNhD,KAAM,QACNmJ,MAAOhN,EAAK8I,SAAStG,MACrB8J,SAAUrM,EAAO,KAAOA,EAAO,GAErC,IAAI8H,IAAU/H,EAAK0lB,iBAAmB1lB,EAAK0lB,mBAAmB3d,IACxDjI,MAAO,sBACN,KAAM,GAAIoD,IACbC,GACAM,gCAAoB,QAASL,GAAYM,6BAAiB1D,EAAKyC,GAAG,wBAA0B,IAAK,GACjGgB,gCAAoB,QAAS,CAC3BoD,KAAM,OACNhD,KAAM,aACNmJ,MAAOhN,EAAK8I,SAAS6c,WACrBrZ,SAAUrM,EAAO,KAAOA,EAAO,GAErC,IAAI8H,IAAU/H,EAAK0lB,iBAAmB1lB,EAAK0lB,mBAAmB3d,IACxDjI,MAAO,sBACN,KAAM,GAAIuD,IACbI,gCAAoB,QAASH,GAAYI,6BAAiB1D,EAAKyC,GAAG,wBAA0B,IAAK,GACjGgB,gCAAoB,QAAS,CAC3BoD,KAAM,OACNhD,KAAM,gBACNmJ,MAAOhN,EAAK8I,SAAS8c,cACrBtZ,SAAUrM,EAAO,KAAOA,EAAO,GAErC,IAAI8H,IAAU/H,EAAK0lB,iBAAmB1lB,EAAK0lB,mBAAmB3d,IACxDjI,MAAO,sBACN,KAAM,GAAIyD,IACba,GACGpE,EAAK8I,SAAS+c,aACZrlB,yBAAcC,gCAAoB,MAAO4D,GAAY,CACpDZ,gCAAoB,QAASa,GAAaZ,6BAAiB1D,EAAKyC,GAAG,uBAAyB,IAAK,GAC9FzC,EAAK8I,SAAS+c,aAA4C,SAA7B7lB,EAAK8I,SAAS+c,aACzCrlB,yBAAcC,gCAAoB,MAAO,CACxCE,IAAK,EACLiR,IAAK5R,EAAK8I,SAAS+c,YACnB/lB,MAAO,iBACN,KAAM,EAAGyE,KACZ4B,gCAAoB,IAAI,GACE,SAA7BnG,EAAK8I,SAAS+c,aACVrlB,yBAAcC,gCAAoB,IAAK+D,GAAad,6BAAiB1D,EAAKyC,GAAG,8BAA+B,IAC7G0D,gCAAoB,IAAI,MAE9BA,gCAAoB,IAAI,GAC5B1C,gCAAoB,QAASqB,GAAapB,6BAAiB1D,EAAKyC,GAAG,gBAAkB,IAAK,GAC1FgB,gCAAoB,QAAS,CAC3BoD,KAAM,OACNyF,SAAUrM,EAAO,KAAOA,EAAO,GAAMsG,GAAiBvG,EAAKyN,MAAM,sBAAuBlH,IACxFyG,MAAOhN,EAAK8I,SAASgd,SACrBhmB,MAAO,sBACN,KAAM,GAAIiF,IACbtB,gCAAoB,SAAU,CAC5B6C,QAASrG,EAAO,KAAOA,EAAO,GAAKyH,2BAEzC,IAAIK,IAAU/H,EAAK+lB,kBAAoB/lB,EAAK+lB,oBAAoBhe,GAAQ,CAAC,UACnEjI,MAAO,uDACN4D,6BAAiB1D,EAAKyC,GAAG,kBAAmB,GAC9CzC,EAAK8I,SAASgd,UAAY9lB,EAAK8I,SAAS+c,aACpCrlB,yBAAcC,gCAAoB,SAAU,CAC3CE,IAAK,EACL2F,QAASrG,EAAO,KAAOA,EAAO,GAAKyH,2BAE7C,IAAIK,IAAU/H,EAAKgmB,YAAchmB,EAAKgmB,cAAcje,GAAQ,CAAC,UACnDjI,MAAO,qCACN4D,6BAAiB1D,EAAKyC,GAAG,kBAAmB,IAC/C0D,gCAAoB,IAAI,GAC5B1C,gCAAoB,QAAS,CAC3BoD,KAAM,OACNhH,GAAI,aACJyM,SAAUrM,EAAO,KAAOA,EAAO,GAAMsG,GAAiBvG,EAAKyN,MAAM,eAAgBlH,IACjFzG,MAAO,qBACPgb,MAAO,CAAC,QAAU,SACjB,KAAM,IACT9V,GACAvB,gCAAoB,QAASwB,GAAavB,6BAAiB1D,EAAKyC,GAAG,uBAAyB,IAAK,GACjGgB,gCAAoB,QAAS,CAC3BoD,KAAM,OACNhD,KAAM,cACNmJ,MAAOhN,EAAK8I,SAASmd,YACrB3Z,SAAUrM,EAAO,KAAOA,EAAO,GAErC,IAAI8H,IAAU/H,EAAK0lB,iBAAmB1lB,EAAK0lB,mBAAmB3d,IACxDjI,MAAO,sBACN,KAAM,GAAIoF,IACbC,GACAC,GACA3B,gCAAoB,IAAK4B,GAAa,CACpC5B,gCAAoB,IAAK,KAAMC,6BAAiB1D,EAAKyC,GAAG,4BAA6B,KAEvF6C,GACA7B,gCAAoB,QAAS8B,GAAa7B,6BAAiB1D,EAAKyC,GAAG,uBAAyB,IAAK,GACjGgB,gCAAoB,QAAS,CAC3BoD,KAAM,OACNhD,KAAM,cACNmJ,MAAOhN,EAAK8I,SAASod,YACrB5Z,SAAUrM,EAAO,KAAOA,EAAO,GAErC,IAAI8H,IAAU/H,EAAK0lB,iBAAmB1lB,EAAK0lB,mBAAmB3d,IACxDjI,MAAO,sBACN,KAAM,GAAI0F,IACbC,GACAC,GACAjC,gCAAoB,IAAKmC,GAAa,CACpCnC,gCAAoB,IAAK,KAAMC,6BAAiB1D,EAAKyC,GAAG,4BAA6B,KAEvFwI,GACAxH,gCAAoB,QAAS6gB,GAAa5gB,6BAAiB1D,EAAKyC,GAAG,wBAA0B,IAAK,GAClGgB,gCAAoB,QAAS,CAC3BoD,KAAM,OACNhD,KAAM,eACNmJ,MAAOhN,EAAK8I,SAASqd,aACrB7Z,SAAUrM,EAAO,KAAOA,EAAO,GAErC,IAAI8H,IAAU/H,EAAK0lB,iBAAmB1lB,EAAK0lB,mBAAmB3d,IACxDjI,MAAO,sBACN,KAAM,GAAIoL,IACbC,GACAC,GACA3H,gCAAoB,IAAK4H,GAAa,CACpC5H,gCAAoB,IAAK,KAAMC,6BAAiB1D,EAAKyC,GAAG,6BAA8B,KAExF6I,GACA7H,gCAAoB,QAAS8H,GAAa7H,6BAAiB1D,EAAKyC,GAAG,0BAA4B,IAAK,GACpGmE,4BAAgBnD,gCAAoB,SAAU,CAC5C3D,MAAO,uCACP+D,KAAM,iBACNhE,GAAI,MACJyM,SAAUrM,EAAO,MAAQA,EAAO,IAEtC,IAAI8H,IAAU/H,EAAK0lB,iBAAmB1lB,EAAK0lB,mBAAmB3d,IACxD,sBAAuB9H,EAAO,MAAQA,EAAO,IAAOsG,GAAkBvG,EAAK8I,SAASsd,eAAkB7f,IACrG,CACD9C,gCAAoB,SAAU+H,GAAa9H,6BAAiB1D,EAAKyC,GAAG,mCAAoC,GACxGgB,gCAAoB,SAAUgI,GAAa/H,6BAAiB1D,EAAKyC,GAAG,qCAAsC,IACzG,KAAM,CACP,CAACsgB,kBAAe/iB,EAAK8I,SAASsd,kBAEhC1a,GACAC,GACAlI,gCAAoB,IAAK2hB,GAAa,CACpC3hB,gCAAoB,IAAK,KAAMC,6BAAiB1D,EAAKyC,GAAG,+BAAgC,KAE1F4iB,GACA5hB,gCAAoB,QAAS6hB,GAAa5hB,6BAAiB1D,EAAKyC,GAAG,wBAA0B,IAAK,GAClGgB,gCAAoB,QAAS,CAC3B3D,MAAO,eACP+G,KAAM,OACNhD,KAAM,eACNmJ,MAAOhN,EAAK8I,SAASud,aACrB/Z,SAAUrM,EAAO,MAAQA,EAAO,IAEtC,IAAI8H,IAAU/H,EAAK0lB,iBAAmB1lB,EAAK0lB,mBAAmB3d,KACvD,KAAM,GAAIwd,IACbC,GACAC,KC9MU,MAAOpS,WAAwBtR,OAAGwO,eAAAxI,GAAA,SAAAA,GAAAyI,gBAAA,wBAc5CuV,mBAAgB,IAAAO,EACyB,QAArCA,EAAA/jB,SAASgkB,eAAe,qBAAa,IAAAD,GAArCA,EAAuCE,QAG3Cd,gBAAgBe,GACZ9kB,KAAK8L,MACD,mBACCgZ,EAAM3iB,OAA4BD,KAClC4iB,EAAM3iB,OAA4BkJ,OAI3CgZ,aACIrkB,KAAKmH,SAASgd,SAAW,GACzBnkB,KAAKmH,SAAS+c,YAAc,IA3BxBhjB,eAAA,CAAPuQ,kB,gCCCL,MAAM,GAA2B,IAAgB,GAAQ,CAAC,CAAC,SAAS,MAErD,UCLf,MAAMxT,GAAa,CAAEE,MAAO,oBACtBoD,GAAa,CAAEpD,MAAO,2FACtBqD,GAAa,CAAErD,MAAO,QACtBsD,GAA0BK,gCAAoB,MAAO,CACzDmB,MAAO,6BACPF,MAAO,KACPC,OAAQ,SACRF,QAAS,iBACR,CACYhB,gCAAoB,OAAQ,CACvC5D,GAAI,4BACJgF,EAAG,igBACHqZ,UAAW,sBAEX,GACE7a,GAAa,CAAEvD,MAAO,sBACtBwD,GAAa,CAAExD,MAAO,yBACtByD,GAA0BE,gCAAoB,OAAQ,CAAE3D,MAAO,WAAa,MAAO,GACnFsE,GAA0BX,gCAAoB,MAAO,CACzD3D,MAAO,SACP8E,MAAO,6BACPH,QAAS,YACTC,MAAO,OACPC,OAAQ,QACP,CACYlB,gCAAoB,OAAQ,CAAEoB,EAAG,wTAC5C,GACER,GAAa,CAAEvE,MAAO,oBACtBwE,GAAc,CAClB3D,IAAK,EACLb,MAAO,yDAEHyE,GAA2Bd,gCAAoB,OAAQ,CAAE3D,MAAO,oDAAsD,CAC7G2D,gCAAoB,MAAO,CACtC,YAAa,UACb,YAAa,UACb3D,MAAO,eACP4E,MAAO,KACPC,OAAQ,KACR,kBAAmB,QACnB,oBAAqB,IACrBF,QAAS,YACTG,MAAO,8BACN,CACYnB,gCAAoB,OAAQ,CACvCoB,EAAG,gZACH,YAAa,gBAGf,GACEL,GAAc,CAAE1E,MAAO,yCACvBgF,GAAc,CAAC,YACfC,GAAc,CAAEjF,MAAO,gBACvBkF,GAAc,CAClBrE,IAAK,EACLb,MAAO,kCAEHmF,GAAc,CAAEnF,MAAO,QACvBoF,GAAc,CAAEpF,MAAO,uDACvBqF,GAAc,CAAErF,MAAO,iDACvBsF,GAA2B3B,gCAAoB,OAAQ,CAAE3D,MAAO,kCAAoC,CAC3F2D,gCAAoB,MAAO,CACtC,YAAa,UACb,YAAa,UACbiB,MAAO,KACPC,OAAQ,KACR,kBAAmB,QACnB,oBAAqB,IACrBF,QAAS,YACTG,MAAO,8BACN,CACYnB,gCAAoB,OAAQ,CACvCoB,EAAG,wRACH,YAAa,gBAGf,GACEQ,GAAc,CAAEvF,MAAO,6BACvBwF,GAAc,CAAExF,MAAO,wCACvByF,GAAc,CAAC,QAEf,SAAUxF,GAAOC,EAAUC,EAAYC,EAAYC,EAAYC,EAAWC,GAC9E,MAAMmD,EAAyBjD,8BAAkB,eAC3CsF,EAAqBtF,8BAAkB,WACvCmmB,EAAuBnmB,8BAAkB,aACzComB,EAA0BpmB,8BAAkB,gBAC5CwF,EAAgCxF,8BAAkB,sBAClDmP,EAAmBC,8BAAkB,SAE3C,OAAQnP,yBAAcC,gCAAoB,MAAOb,GAAY,CAC3D6D,gCAAoB,MAAOP,GAAY,CACrCO,gCAAoB,OAAQN,GAAY,CACtCyD,6BAAiBpG,yBAAcE,yBAAa8C,EAAwB,CAClEvB,GAAI,CAAE4B,KAAM,QACZ/D,MAAO,yCACPgE,OAAQ,IACP,CACDC,QAASC,qBAAS,IAAM,CACtBZ,KAEFa,EAAG,KACA,CACH,CAACyL,EAAkB,CACL8U,MAAO,MACP3U,UAAW,QACXD,QAAS5P,EAAKyC,GAAG,0BACjBsN,aAAa,QAI/BtM,gCAAoB,MAAOJ,GAAY,CACrCI,gCAAoB,OAAQH,GAAYI,6BAAiB1D,EAAK8I,SAAStG,OAAQ,GAC/EiB,gCAAoB,OAAQ,CAC1B3D,MAAOsH,4BAAgBpH,EAAK8I,SAAStG,MAAQ,UAAY,KACxD,SAAWkB,6BAAiB1D,EAAKkH,MAAO,KAE7C3D,GACCvD,EAAKgK,eACFpD,6BAAiBpG,yBAAcC,gCAAoB,SAAU,CAC3DE,IAAK,EACL2F,QAASrG,EAAO,KAAOA,EAAO,GAAMsG,GAAiBvG,EAAKsJ,KAAKC,KAAK,kBACpEzJ,MAAO,uEACN,CACDsE,GACAX,gCAAoB,OAAQY,GAAYX,6BAAiB1D,EAAKyC,GAAG,wBAAyB,MACvF,CACH,CAACiN,EAAkB,CACX8U,MAAO,MACP3U,UAAW,SACXD,QAAS5P,EAAKyC,GAAG,uBACjBsN,aAAa,MAGvB5J,gCAAoB,IAAI,GAC5BvC,yBAAagjB,gBAAa,CAAE/iB,KAAM,QAAU,CAC1CE,QAASC,qBAAS,IAAM,CACrBhE,EAAKgK,gBACDxJ,yBAAcC,gCAAoB,OAAQ6D,GAAa,CACtDC,GACAd,gCAAoB,OAAQe,GAAad,6BAAiB1D,EAAKyC,GAAG,0BAA2B,MAE/F0D,gCAAoB,IAAI,KAE9BlC,EAAG,IAELiU,wBAAYlY,EAAKmY,OAAQ,YAAa0O,4BAAgBC,gCAAoB,CAAE9c,eAAgBhK,EAAKgK,mBACjGvG,gCAAoB,SAAU,CAC5B6C,QAASrG,EAAO,KAAOA,EAAO,GAEtC,IAAI8H,IAAU/H,EAAK+mB,SAAW/mB,EAAK+mB,WAAWhf,IACtCjI,MAAO,gEACN4D,6BAAiB1D,EAAKyC,GAAG,mBAAoB,GAChDgB,gCAAoB,SAAU,CAC5B6C,QAASrG,EAAO,KAAOA,EAAO,GAEtC,IAAI8H,IAAU/H,EAAK8M,aAAe9M,EAAK8M,eAAe/E,IAC9CjI,MAAO,sDACP6I,SAAU3I,EAAK+J,QACd,CACDtG,gCAAoB,OAAQsB,GAAarB,6BAAiB1D,EAAK+J,OAAS/J,EAAKyC,GAAG,wBAA0BzC,EAAKyC,GAAG,uBAAwB,GACzIzC,EAAK+J,QACDvJ,yBAAcC,gCAAoB,OAAQuE,GAAa,CACtDpB,yBAAaiC,EAAoB,CAC/BsC,KAAM,OACNC,MAAO,UACPtI,MAAO,iBAGXqG,gCAAoB,IAAI,IAC3B,EAAGrB,MAERrB,gCAAoB,MAAOwB,GAAa,CACtCxB,gCAAoB,MAAOyB,GAAa,CACtCzB,gCAAoB,MAAO0B,GAAa,CACtC1B,gCAAoB,SAAU,CAC5B3D,MAAO,kCACPwG,QAASrG,EAAO,KAAOA,EAAO,GAAKyH,2BAAgBnB,GAAiBvG,EAAKsJ,KAAKC,KAAK,uBAAyB,CAAC,WAC5G,CACDnE,GACA3B,gCAAoB,OAAQ4B,GAAa3B,6BAAiB1D,EAAKyC,GAAG,wBAAyB,OAG/FmB,yBAAa8iB,EAAsB,CACjC5c,OAAQ9J,EAAK8J,OACb+B,aAAc7L,EAAK6L,aACnBG,WAAYhM,EAAKgM,WACjB8X,cAAe9jB,EAAK+L,YACpBib,gBAAiBhnB,EAAKinB,aACtBrd,oBAAqB5J,EAAK4J,oBAC1BtH,KAAMtC,EAAKyG,WACXoD,aAAc7J,EAAK6J,cAClB,KAAM,EAAG,CAAC,SAAU,eAAgB,aAAc,gBAAiB,kBAAmB,sBAAuB,OAAQ,mBAE1HjG,yBAAa+iB,EAAyB,CACpCpc,IAAK,QACLX,oBAAqB5J,EAAK4J,oBAC1BiC,aAAc7L,EAAK6L,aACnBvJ,KAAMtC,EAAKyG,WACXuF,WAAYhM,EAAKgM,WACjBC,OAAQjM,EAAKgM,aAAehM,EAAK8J,OAAO8C,OAAS,EACjDkB,IAAK9N,EAAKkH,KACV4c,cAAe9jB,EAAK+L,YACpByB,YAAaxN,EAAKknB,eAClBC,qBAAsBnnB,EAAKonB,kBAC3Bvd,aAAc7J,EAAK6J,cAClB,KAAM,EAAG,CAAC,sBAAuB,eAAgB,OAAQ,aAAc,SAAU,MAAO,gBAAiB,cAAe,uBAAwB,mBAErJpG,gCAAoB,MAAO6B,GAAa,CACtC7B,gCAAoB,IAAK,CACvB4jB,KAAM,gFAAgFrnB,EAAKyC,GAC/E,4BAEXiB,6BAAiB1D,EAAKyC,GAAG,oBAAqB,EAAG8C,MAEtD2S,wBAAYlY,EAAKmY,OAAQ,iBACzBvU,yBAAamC,EAA+B,CAC1ClC,KAAM,gBACN4F,QAASzJ,EAAKyC,GAAG,+BACjBiH,KAAMzJ,EAAO,KAAOA,EAAO,GAAMsG,GAAiBvG,EAAKyN,MAAM,oBAC5D,KAAM,EAAG,CAAC,cC1MjB,IAAqB6Z,GAArB,cAAqCvlB,OAAGwO,eAAAxI,GAAA,SAAAA,GAAAyI,gBAAA,uBAAAA,gBAAA,mCAAAA,gBAAA,4BAAAA,gBAAA,wBAAAA,gBAAA,sBAAAA,gBAAA,0BAAAA,gBAAA,sBAAAA,gBAAA,8BAYpCA,gBAAA,YACO,IAAEA,gBAAA,sBACqBC,GAASD,gBAAA,uBACLC,GAASD,gBAAA,oBACZ,IAAEA,gBAAA,mBACnB,GAGd0W,iBACIvlB,KAAK8L,MAAM,eAAe,GAI9B8Z,mBACI5lB,KAAK8L,MAAM,eAAe,GAG9B/E,UACI/G,KAAK6lB,WAAa7lB,KAAKmI,OACvBnI,KAAKuF,KAAOvF,KAAKf,OAAOyB,OAAOyL,IAE/B0O,OAAOC,iBAAiB,eAAgB9a,KAAK8lB,oBAGjD9kB,UAEI,MAAM+kB,EAAW,IAAIC,qBAAqB,EAAEtO,KAAOA,EAAEvV,OAAO8jB,UAAUC,OAAO,OAAQxO,EAAEyO,kBAAoB,GAAI,CAC3GC,UAAW,CAAC,KAGhBL,EAASM,QAAQzlB,SAAS0lB,cAAc,mBAG5CnL,gBACIN,OAAOO,oBAAoB,eAAgBpb,KAAK8lB,oBAMpD1b,YAAYkD,QAEiBwB,IAArB9O,KAAK4b,MAAMqG,OACXjiB,KAAKumB,UAAU,KACVvmB,KAAK4b,MAAMqG,MAAuB9W,gBAK3CnL,KAAKkK,aAAe,CAChBrJ,MAAO,GACP4J,MAAO,CAAC,CAAEvF,KAAM,gBAAkB,CAAEA,KAAM,kBAG9C6K,WAAW,KACP/P,KAAKkK,cAA0B,IAAXoD,EAAe,GAAMtN,KAAK6lB,WAAuBvY,GACrEtN,KAAKqK,WAAaiD,EACjBtN,KAAK4b,MAAMqG,MAAuBvX,WAAa,EAC/C1K,KAAK4b,MAAMqG,MAAuB/W,oBAAqB,EACxD2P,OAAO2L,SAAS,EAAG,IACpB,GAMPf,kBAAkBzZ,EAAoBC,GAClCjM,KAAKkK,aAAe8B,EAEhBC,IACAjM,KAAKmI,OAAOnI,KAAKqK,YAAc2B,EAC/BhM,KAAK8L,MAAM,iBAOnBwZ,aAAand,GACTnI,KAAK6lB,WAAa1d,EAClBnI,KAAKqK,WAAarK,KAAK6lB,WAAW7O,QAAQhX,KAAKkK,cAMnDkb,eAE6BtW,IAArB9O,KAAK4b,MAAMqG,OACVjiB,KAAK4b,MAAMqG,MAAuB9W,cAGvC4E,WAAW,KACP,MAAM0W,EAAYzmB,KAAK0mB,QAAQC,QAAQ,CAAEzkB,KAAM,YACzC0kB,EAAa/L,OAAOjT,KAAK6e,EAAUf,KAAM,UAC9CkB,EAAsBC,MAAQ,CAC3Bjb,OAAQ8D,KAAKC,MAAMD,KAAK0D,UAAUpT,KAAKgI,QAAQhI,KAAK8E,cACpDmD,oBAAqBjI,KAAKiI,sBAE/B,GAGPkD,mBAE6B2D,IAArB9O,KAAK4b,MAAMqG,OACVjiB,KAAK4b,MAAMqG,MAAuB9W,cAIvCnL,KAAK8L,MAAM,gBAGfga,mBAAmBpO,GAEX1X,KAAKqI,iBAAmBwS,OAAOiM,WAC/BpP,EAAEqP,mBA9HF7lB,eAAA,CAAPuQ,kB,+BAGOvQ,eAAA,CAAPuQ,kB,2CACOvQ,eAAA,CAAPuQ,kB,oCACOvQ,eAAA,CAAPuQ,kB,gCACOvQ,eAAA,CAAPuQ,kB,8BACOvQ,eAAA,CAAPuQ,kB,kCACOvQ,eAAA,CAAPuQ,kB,8BACOvQ,eAAA,CAAPuQ,kB,sCAUDvQ,eAAA,CADCC,eAAM,SAAU,CAAEuhB,MAAM,K,oCAMzBxhB,eAAA,CADCC,eAAM,WAAY,CAAEuhB,MAAM,K,sCAxBViD,GAAOzkB,eAAA,CAT3B0Q,eAAQ,CACLC,WAAY,CACR,mBAAoBmV,GACpB,qBAAsBjT,GACtB8M,QAASC,QACT,eAAgBoB,GAChB,YAAakB,OAGAuC,c,UCZrB,MAAM,GAA2B,IAAgB,GAAQ,CAAC,CAAC,SAAS,MAErD,UCgBf,MAAMsB,GAAQzS,EAAQ,QAChB0S,GAAQ1S,EAAQ,QAASpS,SACvB+kB,GAAIC,IAAW5S,EAAQ,QA0C/B,IAAqB9C,GAArB,cAA6CtR,OAAGwO,eAAAxI,GAAA,SAAAA,GAAAyI,gBAAA,4BACKA,gBAAA,eAI7C,CAAE6O,QAAI5O,EAAW6O,QAAI7O,IAAWD,gBAAA,gCACmBC,GAASD,gBAAA,qBACjD,GAAKA,gBAAA,uBACH,GAAKA,gBAAA,kBACT,WAASA,gBAAA,mBACT,GAAKA,gBAAA,cACV,GAAOA,gBAAA,gBACL,GAAOA,gBAAA,kBACJ,MAAIA,gBAAA,qBACF,GAAKA,gBAAA,wBAEU,IAAEA,gBAAA,uBACE,MAElCA,gBAAA,eACS,GAAKA,gBAAA,uBACG,GAAKA,gBAAA,cAEmE,yBAEzFA,gBAAA,YACO,IAAEA,gBAAA,sBACqBC,GAASD,gBAAA,gBACX,CACxBhO,MAAO,GACPmjB,WAAY,GACZC,cAAe,GACfC,YAAa,GACbC,SAAU,GACVG,YAAa,GACbC,YAAa,GACbC,aAAc,GACdC,eAAgB,GAChBC,aAAc,KAElB7V,gBAAA,iBAC+B,CAC3BtJ,MAAM,IACTsJ,gBAAA,cACiB,IAAEA,gBAAA,oBACS,IAE7B9H,UAAO,IAAAsgB,EAYH,GAXArnB,KAAKsnB,aAAetnB,KAAK0E,aAGzB1E,KAAKuF,KAAyC,QAArC8hB,EAAIrnB,KAAKf,OAAOyB,OAAOyL,WAAc,IAAAkb,IAAKrnB,KAAKsnB,kBAAexY,EAAYsY,KACnFpnB,KAAK8E,WAAa9E,KAAKf,OAAOyB,OAAOoE,WAAc9E,KAAKf,OAAOyB,OAAOoE,WAAwB,KAG9F9E,KAAKgI,QAAU,CAAE0V,QAAI5O,EAAW6O,QAAI7O,GACpC9O,KAAKiI,yBAAsB6G,GAGtB9O,KAAKsnB,aAAc,CAEpB,MAAMC,EAAU,IAAI5M,KACd6M,EAAOD,EAAQ3M,cACf6M,GAASF,EAAQG,WAAa,GAAGxV,WAAWyV,SAAS,EAAG,KACxDC,EAAML,EAAQM,UAAU3V,WAAWyV,SAAS,EAAG,KACrD3nB,KAAKmH,SAASud,aAAe,GAAG8C,KAAQC,KAASG,IAEjD5nB,KAAKmH,SAASsd,eAAiB,WAInC,GAAyB,WAArBzkB,KAAKf,OAAOiD,KAAmB,CAC/BlC,KAAKuE,YAAa,EAClB,MAAMsiB,EAAQ7mB,KAAKf,OAAO8B,KAAKjB,KAG/B,GAAI+mB,GAASA,EAAM7e,SAAW6e,EAAM5e,oBAAqB,KAAA6f,EACrD9nB,KAAKgI,QAAU6e,EAAM7e,QACrBhI,KAAKiI,oBAAsB4e,EAAM5e,oBACjCjI,KAAKmH,SAAW0f,EAAM1f,SACtBnH,KAAKmI,OAAS0e,EAAM1e,OACpBnI,KAAKkI,aAAe2e,EAAM3e,aAC1BlI,KAAKsnB,aAAeT,EAAMkB,SAC1B/nB,KAAKqI,eAAiBwe,EAAMxe,eAE5B,MAAM2f,EAAoC,QAAhCF,EAAG9nB,KAAKgI,QAAQhI,KAAK8E,mBAAW,IAAAgjB,GAAiB,QAAjBA,EAA7BA,EAA+BG,WAAWD,YAAI,IAAAF,OAAA,EAA9CA,EAAgD7X,IACvDiY,EAAU,UAAUloB,KAAK8E,cAAc9E,KAAKmH,SAASgd,WAE3D,GAAI6D,EAAM,KAAAG,EACN,MAAMC,EAAmC,QAA3BD,EAAGnoB,KAAKiI,2BAAmB,IAAAkgB,OAAA,EAAxBA,EAA0BhR,IAAIhE,KAAK+U,GAChDE,EACAA,EAAS/Q,MAAM,QAAQzC,KAAMuD,IACzBnY,KAAKqoB,UAAY,IAAIC,KAAK,CAACnQ,GAAMnY,KAAKmH,SAASgd,UAC/CnkB,KAAKmH,SAAS+c,YAAc5M,IAAIC,gBAAgBY,GAChDnY,KAAKuG,WAAa,YAItBvG,KAAKmH,SAASgd,SAAW6D,EAGzBtoB,MAAMsoB,GAAMpT,KAAM9U,IACM,MAAhBA,EAAK0a,QACL1a,EAAKyoB,OAAO3T,KAAM2T,IACdvoB,KAAKqoB,UAAY,IAAIC,KAAK,CAACC,GAAOvoB,KAAKmH,SAASgd,UAChDnkB,KAAKmH,SAAS+c,YAAc8D,EAC5BhoB,KAAKuG,WAAa,mBAOlCvG,KAAKuG,WAAa,SAGtB,QAKJvG,KAAKf,OAAOyB,OAAOyL,KACnBnM,KAAKqG,uBAObmiB,oBACI,MAAMC,EAAY,IAAIxB,GAGtBjnB,KAAKgI,QAAQhI,KAAK8E,YAAc9E,KAAK0oB,eACrC,MAAM9c,EAAS5L,KAAKgI,QAAQhI,KAAK8E,YAGjC,GAAK9E,KAAKmH,SAASgd,SAEZ,GAAKnkB,KAAKmH,SAASgd,SAASvF,SAAS,QAGxChT,EAAOqc,WAAWD,KAAK/X,IAAMjQ,KAAKmH,SAASgd,aAHM,KAAAwE,EACjD/c,EAAOqc,WAAWD,KAAK/X,IAAM,GAAGjQ,KAAKuF,eAAevF,KAAK8E,cAA4B,QAAlB6jB,EAAI3oB,KAAKqoB,iBAAS,IAAAM,OAAA,EAAdA,EAAgBzmB,YAFvF0J,EAAOqc,WAAWD,KAAK/X,IAAM,GAMjCrE,EAAOzD,OAAS,GAEhB,MAAMygB,EAAgC,OAApB5oB,KAAK8E,WAAsB,KAAO,KACpD9E,KAAKgI,QAAQ4gB,GAAavF,KAAUzX,GACnC5L,KAAKgI,QAAQ4gB,GAA+BjoB,KAAOioB,EACpD,MAAMC,EAA2BnZ,KAAK0D,UAAUpT,KAAKgI,QAAQ4gB,GAAY,KAAM,GAGzE1K,EAAW,GAAGle,KAAKuF,QAAQvF,KAAK8E,kBAChCgkB,EAAsBpZ,KAAK0D,UAAUxH,EAAQ,KAAM,GAEzD6c,EAAUtV,KAAK+K,EAAU4K,GACzBL,EAAUtV,KAAK,GAAGnT,KAAKuF,QAAQqjB,SAAkBC,GAGjD7oB,KAAK+oB,0BAA0BN,EAAWzoB,KAAKqoB,WAGnDK,eACI,MAAO,CACH7nB,MAAOb,KAAKmH,SAAStG,MACrBF,KAAMX,KAAK8E,WACXmjB,WAAY,CACRD,KAAM,CACF/X,IAAK,IAETpP,MAAOb,KAAKmH,SAAS6c,WACrBrR,SAAU3S,KAAKmH,SAAS8c,eAE5B9b,OAAQ,GACRqc,aAAcxkB,KAAKmH,SAASqd,aAC5BD,YAAavkB,KAAKmH,SAASod,YAC3BE,eAAgBzkB,KAAKmH,SAASsd,eAC9BC,aAAc1kB,KAAKmH,SAASud,cAOpCre,uBACIrG,KAAKuG,WAAa,UAElB7G,MAAMM,KAAKR,OAAS,aAAaQ,KAAKuF,MACjCqP,KAAM/W,IACH,GAAmB,MAAfA,EAAI2c,OAAgB,KAAAwO,EAEpBC,QAAQ/oB,MAAM,uBAAgC,QAAhC8oB,EAAuBhpB,KAAKuF,YAAI,IAAAyjB,IAAI,uBAClDhpB,KAAKE,OAAQ,EACbF,KAAKuG,WAAa,UAClBvG,KAAKkpB,kBACF,CACH,MAAMT,EAAY,IAAIxB,GAEtBppB,EAAI0qB,OAAO3T,KAAMzB,IACbsV,EAAUU,UAAUhW,GAAMyB,KAAK,KAC3B5U,KAAK+oB,0BAA0BN,OAK3C/oB,MAAMM,KAAKR,OAAS,qBACfoV,KAAM/W,IACH,GAAIA,EAAIgC,GAAI,OAAOhC,EAAIkC,SAE1B6U,KAAM9U,IACHonB,GACKkC,KAAKC,iCAAqD,CACvDC,SAAUxpB,EAAKwpB,WAElBC,MAAOrpB,GAAeD,QAAQupB,IAAItpB,EAAMT,UAAYS,MAE5DqpB,MAAOrpB,GAAeD,QAAQupB,IAAItpB,EAAMT,UAAYS,MAE5DqpB,MAAM,KACHN,QAAQ/oB,MAAM,mDACdF,KAAKuG,WAAa,WAI9BD,oBACsBwI,IAAd9O,KAAKuF,MAAoB0jB,QAAQ/oB,MAAM,+BAY/C0G,cAAcoS,GACVhZ,KAAK6G,gBAAkBmS,EAG3BlS,WAAWC,GACP,MAAM0iB,EAAO,IAAI9O,KAAK5T,GAChB2iB,EAAU,IAAI/O,KAAK8O,EAAKE,eAAe,QAAS,CAAEC,SAAU,qBAC5Dra,EAAsC,CACxCiY,KAAM,UACNC,MAAO,UACPG,IAAK,UACLiC,KAAM,UACNC,OAAQ,UACRC,QAAQ,EACRH,SAAU,mBAGd,OAAO,IAAII,KAAKC,eAAe,QAAS1a,GAAS2a,OAAOR,GAG5DxiB,cACQlH,KAAK6G,gBAAL7G,EAkCRmqB,YAAYniB,GACR,CAAC,KAAM,MAAM4L,QAASjT,IAAQ,IAAAypB,EAAAC,EACT,QAAjBD,EAAIpiB,EAAQrH,UAAK,IAAAypB,GAAiB,QAAjBA,EAAbA,EAAenC,WAAWD,YAAI,IAAAoC,GAA9BA,EAAgCna,KAChCjQ,KAAKsqB,qBAAsBtiB,EAAQrH,GAA0BsnB,WAAWD,KAAK/X,KAGpE,QAAboa,EAAAriB,EAAQrH,UAAK,IAAA0pB,GAAbA,EAAeliB,OAAOyL,QAASqO,IAC3BA,EAAMxX,MAAMmJ,QAASnJ,IACjBzK,KAAKuqB,kBAAkB9f,SAMvC8f,kBAAkB9f,GACd,OAAQA,EAAMvF,MACV,IAAK,UACAuF,EAAuBuV,SAASpM,QAAS2O,IACtCviB,KAAKuqB,kBAAkBhI,EAAS9X,SAEpC,MACJ,IAAK,YACAA,EAAyB4H,MAAMuB,QAASxG,IACrCpN,KAAKuqB,kBAAkBnd,KAE3B,MACJ,IAAK,QACDpN,KAAKsqB,qBAAsB7f,EAAqBwF,KAChD,MACJ,IAAK,QACDjQ,KAAKsqB,qBAAsB7f,EAAqBwF,KAChD,MACJ,IAAK,QACuC,UAAnCxF,EAAqBmS,WACtB5c,KAAKsqB,qBAAsB7f,EAAqBwF,KAEpD,MACJ,IAAK,QACDjQ,KAAKsqB,qBAAsB7f,EAAqBwF,KAChD,MACJ,IAAK,MACDjQ,KAAKsqB,qBAAsB7f,EAAmBmB,QAC9C,MACJ,IAAK,OACD,MACJ,QACI,OAIZ0e,qBAAqBra,GACbjQ,KAAKkI,aAAa+H,GAClBjQ,KAAKkI,aAAa+H,IAAQ,EAE1BjQ,KAAKkI,aAAa+H,GAAO,EAQjC8Y,0BAA0BN,EAAyB+B,GAC/C,MAAMC,EAAehC,EAAUiC,OAAO,UAChCC,EAAelC,EAAUiC,OAAO,UAChCE,EAAmBnC,EAAUiC,OAAO,eAE1C1qB,KAAKiI,oBAAsB,CACvB1C,KAAMvF,KAAKuF,KACX4R,IAAKsR,EACLzgB,QAAShI,KAAKgI,QACdgQ,OAAQ,CACJ0F,GAAI+M,EAAaC,OAAO,MACxB/M,GAAI8M,EAAaC,OAAO,OAE5BvY,OAAQ,CACJuL,GAAIiN,EAAaD,OAAO,MACxB/M,GAAIgN,EAAaD,OAAO,OAE5BpP,WAAYsP,QAIG9b,IAAf0b,GACAxqB,KAAKiI,oBAAoB+P,OAAOhY,KAAK8E,YAAYqO,KAAe,OAAVqX,QAAU,IAAVA,OAAU,EAAVA,EAAYtoB,KAAMsoB,GAG5ExqB,KAAK6qB,aAOT,iBAAiBjf,GACb,GAAIA,EACA5L,KAAK8qB,UAAUlf,OADnB,CAKA,IAAI,IAAAmf,EAAAC,EACA,MAAMC,EAAiC,QAA3BF,EAAG/qB,KAAKiI,2BAAmB,IAAA8iB,OAAA,EAAxBA,EAA0B5T,IAAIhE,KAAQnT,KAAKuF,KAAR,YAC5C2lB,EAAiC,QAA3BF,EAAGhrB,KAAKiI,2BAAmB,IAAA+iB,OAAA,EAAxBA,EAA0B7T,IAAIhE,KAAQnT,KAAKuF,KAAR,kBACtC,OAAN0lB,QAAM,IAANA,OAAM,EAANA,EAAQ5T,MAAM,UAAUzC,KAAM/W,IAChCmC,KAAKgI,QAAQ,MAAQ0H,KAAKC,MAAM9R,YAExB,OAANqtB,QAAM,IAANA,OAAM,EAANA,EAAQ7T,MAAM,UAAUzC,KAAM/W,IAChCmC,KAAKgI,QAAQ,MAAQ0H,KAAKC,MAAM9R,MAEtC,MAAM,IAAAstB,EAIJ,OAHAlC,QAAQ/oB,MAAM,0BAAmC,QAAnCirB,EAA0BnrB,KAAKuF,YAAI,IAAA4lB,IAAI,qBACrDnrB,KAAKuG,WAAa,eAClBvG,KAAKkpB,cAILlpB,KAAKsnB,cACLtnB,KAAKuG,WAAa,UAClB0iB,QAAQmC,QAAQ,mCAEhBprB,KAAKuG,WAAa,SAIlBvG,KAAKgI,QAAQhI,KAAK8E,cAClB9E,KAAK8qB,UAAU9qB,KAAKgI,QAAQhI,KAAK8E,aACjC9E,KAAKmqB,YAAYnqB,KAAKgI,SAElBhI,KAAKqrB,gBACLrrB,KAAKuE,YAAa,EAClBvE,KAAKuI,iBACLvI,KAAKsrB,oBACGtrB,KAAKsnB,eACbtnB,KAAKuE,YAAa,EAClBvE,KAAKsrB,sBAKjBR,UAAUlf,GAAuB,IAAA2f,EAC7BvrB,KAAKmH,SAAStG,MAAQ+K,EAAO/K,MAC7Bb,KAAKmH,SAAS6c,WAAapY,EAAOqc,WAAWpnB,MAC7Cb,KAAKmH,SAAS8c,cAAgBrY,EAAOqc,WAAWtV,SAChD3S,KAAKmH,SAASod,YAAc3Y,EAAO2Y,YACnCvkB,KAAKmH,SAASqd,aAAe5Y,EAAO4Y,aACpCxkB,KAAKmH,SAASsd,eAAiB7Y,EAAO6Y,eACtCzkB,KAAKmH,SAASud,aAAe9Y,EAAO8Y,aAEpC1kB,KAAKmI,OAASyD,EAAOzD,OAErB,MAAM6f,EAA6B,QAAzBuD,EAAG3f,EAAOqc,WAAWD,YAAI,IAAAuD,OAAA,EAAtBA,EAAwBtb,IACrC,GAAI+X,EAAM,KAAAwD,EAAAC,EAENzrB,KAAKmH,SAASmd,YAAoC,QAAtBkH,EAAA5f,EAAOqc,WAAWD,YAAI,IAAAwD,GAAtBA,EAAwBrV,QAAUvK,EAAOqc,WAAWD,KAAK7R,QAAU,GAG/F,MAAM+R,EAAU,GAAGF,EAAKjR,UAAUiR,EAAKhR,QAAQ,KAAO,GAChDmN,EAAW,GAAG6D,EAAKtN,MAAM,KAAKsN,EAAKtN,MAAM,KAAKzP,OAAS,GACvDmd,EAAmC,QAA3BqD,EAAGzrB,KAAKiI,2BAAmB,IAAAwjB,OAAA,EAAxBA,EAA0BtU,IAAIhE,KAAK+U,GAEhDE,EACAA,EAAS/Q,MAAM,QAAQzC,KAAMuD,IACzBnY,KAAKqoB,UAAY,IAAIC,KAAK,CAACnQ,GAAMgM,GACjCnkB,KAAKmH,SAAS+c,YAAc5M,IAAIC,gBAAgBY,GAChDnY,KAAKmH,SAASgd,SAAWA,EACzBnkB,KAAKuG,WAAa,YAItBvG,KAAKmH,SAASgd,SAAW6D,EAGzBtoB,MAAMsoB,GAAMpT,KAAM9U,IACM,MAAhBA,EAAK0a,QACL1a,EAAKyoB,OAAO3T,KAAM2T,IACdvoB,KAAKqoB,UAAY,IAAIC,KAAK,CAACC,GAAOpE,GAClCnkB,KAAKmH,SAAS+c,YAAc8D,EAC5BhoB,KAAKuG,WAAa,eAY1CgC,iBAAc,IAAAmjB,EAAAC,EACV3rB,KAAKoI,QAAS,EAGd,MAAM8V,EAAW,GAAGle,KAAKuF,QAAQvF,KAAK8E,kBAChCgkB,EAAsBpZ,KAAK0D,UAAUpT,KAAKgI,QAAQhI,KAAK8E,YAAa,KAAM,GA2EhF,OAzEwB,QAAxB4mB,EAAA1rB,KAAKiI,2BAAmB,IAAAyjB,GAAxBA,EAA0BvU,IAAIhE,KAAK+K,EAAU4K,GAGrB,QAAxB6C,EAAA3rB,KAAKiI,2BAAmB,IAAA0jB,GAAxBA,EAA0BxU,IAAIyU,cAAc,CAAE1mB,KAAM,SAAU0P,KAAM3G,IAChE,MAAM4d,EAAW,IAAIC,SACrBD,EAASE,OAAO,OAAQ9d,EAAYjO,KAAKuF,KAAR,QACjC,MAAMymB,EAAU,CAAE,eAAgB,uBAElC9E,GACKkC,KAAKppB,KAAKR,OAAS,UAAWqsB,EAAU,CAAEG,YAC1CpX,KAAM/W,IACH,MAAMouB,EAAepuB,EAAIiC,KACzBmsB,EAAanU,MACbmU,EAAazR,OACbxa,KAAKqI,gBAAiB,EACtBrI,KAAKsnB,cAAe,EACpB2B,QAAQmC,QAAQ,iCA8CnB7B,MAAM,KACHN,QAAQ/oB,MAAM,6BAEjBgsB,QAAQ,KAELnc,WAAW,KACP/P,KAAKoI,QAAS,GACf,SAIRpI,KAAKiI,oBAGhBZ,eACIrI,EAQAqM,GAEArL,KAAKmH,SAASnI,GAAOqM,EACrBrL,KAAKqI,gBAAiB,EAO1BX,aAAaykB,GAAU,GAEnB,MAAMvgB,EAAS5L,KAAKgI,QAAQhI,KAAK8E,YACjC,QAAegK,IAAXlD,EAAsB,CAiBtB,GAhBAA,EAAO/K,MAAQb,KAAKmH,SAAStG,MAC7B+K,EAAOqc,WAAWpnB,MAAQb,KAAKmH,SAAS6c,WACxCpY,EAAOqc,WAAWtV,SAAW3S,KAAKmH,SAAS8c,cAC3CrY,EAAO2Y,YAAcvkB,KAAKmH,SAASod,YACnC3Y,EAAO4Y,aAAexkB,KAAKmH,SAASqd,aACpC5Y,EAAO6Y,eAAiBzkB,KAAKmH,SAASsd,eACtC7Y,EAAO8Y,aAAe1kB,KAAKmH,SAASud,kBAGL5V,IAA3BlD,EAAOqc,WAAWD,OAClBpc,EAAOqc,WAAWD,KAAO,CAAE/X,IAAK,GAAIkG,QAAS,KAGjDvK,EAAOqc,WAAWD,KAAK7R,QAAUnW,KAAKmH,SAASmd,YAG1CtkB,KAAKmH,SAASgd,SAEZ,GAAKnkB,KAAKmH,SAASgd,SAASvF,SAAS,QAOxChT,EAAOqc,WAAWD,KAAK/X,IAAMjQ,KAAKmH,SAASgd,aAPM,KAAAiI,EAAAC,EAAAC,EACjD1gB,EAAOqc,WAAWD,KAAK/X,IAAM,GAAGjQ,KAAKuF,eAAevF,KAAK8E,cAA4B,QAAlBsnB,EAAIpsB,KAAKqoB,iBAAS,IAAA+D,OAAA,EAAdA,EAAgBlqB,OAC/D,QAAxBmqB,EAAArsB,KAAKiI,2BAAmB,IAAAokB,GAAxBA,EAA0BrU,OAAOhY,KAAK8E,YAAYqO,KAChC,QADoCmZ,EAClDtsB,KAAKqoB,iBAAS,IAAAiE,OAAA,EAAdA,EAAgBpqB,KAChBlC,KAAKqoB,gBALTzc,EAAOqc,WAAWD,KAAK/X,IAAM,GAW7Bkc,GACAnsB,KAAKuI,iBAGT,MAAM/F,EAAYrD,IAClBqD,EAAU+pB,mBAEdvsB,KAAK2H,KAAKgK,MAAM,uBAOpBuX,cACIlpB,KAAKmH,SAAW,CACZtG,MAAO,GACPmjB,WAAY,GACZC,cAAe,GACfM,YAAa,GACbC,aAAc,GACdE,aAAc,GACdR,YAAa,GACbC,SAAU,GACVG,YAAa,GACbG,eAAgB,IAEpBzkB,KAAKgI,QAAU,CAAE0V,QAAI5O,EAAW6O,QAAI7O,GACpC9O,KAAKmI,OAAS,GAMlBtD,WACI7E,KAAK8E,WAAiC,OAApB9E,KAAK8E,WAAsB,KAAO,KAC/C9E,KAAKgI,QAAQhI,KAAK8E,cAGvB9E,KAAK6qB,WAAW7qB,KAAKgI,QAAQhI,KAAK8E,aAE9B9E,KAAKuE,aACJvE,KAAK4b,MAAM4Q,WAAuBlH,aAAatlB,KAAKmI,QACrDnI,KAAKumB,UAAU,KACVvmB,KAAK4b,MAAM4Q,WAAuBpiB,aAAa,OAK5D5E,YACSxF,KAAKsnB,cACN5nB,MAAMM,KAAKR,OAAS,aAAaQ,KAAKuF,MAAQqP,KAAM/W,IAC7B,MAAfA,EAAI2c,SACJxa,KAAKmG,SAAU,GAGnBzG,MAAMM,KAAKR,OAAS,qBACfoV,KAAM/W,IACH,GAAIA,EAAIgC,GAAI,OAAOhC,EAAIkC,SAE1B6U,KAAM9U,IACHonB,GACKkC,KAAKC,iCAAqD,CACvDC,SAAUxpB,EAAKwpB,WAElBC,MAAOrpB,GAAeD,QAAQupB,IAAItpB,EAAMT,UAAYS,MAE5DqpB,MAAOrpB,GAAeD,QAAQupB,IAAItpB,EAAMT,UAAYS,MAGjEF,KAAKmG,SAAU,EAMnBsmB,kBAAkBnsB,EAA6BuX,EAA+B6U,GAC1E1sB,KAAKuF,KAAOjF,EAAGI,OAAOyL,IACtBnM,KAAKQ,MAAMC,OAASH,EAAGI,OAAOC,KAE9B+rB,IAGJjlB,kBAAkBiQ,GACd,MAAMiV,EAAYpO,IACd,MAAMpG,EAAM,IAAIG,MAEhB,OADAH,EAAIlI,IAAMsO,EACH,IAAI/G,QAASmP,IAChBxO,EAAIyU,QAAU,IAAMjG,GAAQ,GAC5BxO,EAAI0U,OAAS,IAAMlG,GAAQ,MAInC3mB,KAAKmH,SAASgd,SAAYzM,EAAEvV,OAA4BkJ,MAExDshB,EAAS3sB,KAAKmH,SAASgd,UAAUvP,KAAM/W,IAC/BA,GACAmC,KAAKmH,SAAS+c,YAAclkB,KAAKmH,SAASgd,SAC1C8E,QAAQmC,QAAQ,qCAEhBprB,KAAKmH,SAAS+c,YAAc,QAC5B+E,QAAQ/oB,MAAM,iCAK1BqH,aAAamQ,GAET,MAAMoV,EAAiBpV,EAAEvV,OAA4B2V,MAA0B,GAC/E9X,KAAKqoB,UAAYyE,EAGjB9sB,KAAKmH,SAAS+c,YAAc5M,IAAIC,gBAAgBuV,GAChD9sB,KAAKmH,SAASgd,SAAW2I,EAAa5qB,KAG1CopB,mBAC6B,WAArBtrB,KAAKf,OAAOiD,OACZlC,KAAK0mB,QAAQqG,WAAYzsB,IACL,WAAZA,EAAG4B,OACH5B,EAAGS,KAAKjB,KAAO,CACXgF,WAAY9E,KAAK8E,WACjBkD,QAAShI,KAAKgI,QACdC,oBAAqBjI,KAAKiI,oBAC1BC,aAAclI,KAAKkI,aACnBf,SAAUnH,KAAKmH,SACfgB,OAAQnI,KAAKmI,OACb4f,SAAU/nB,KAAK0E,aACf2D,eAAgBrI,KAAKqI,mBAKjCrI,KAAK0mB,QAAQrT,KAAK,CAAEnR,KAAM,SAAUxB,OAAQ,CAAEyL,IAAKnM,KAAKuF,SAIhEynB,sBAGI,OADAhtB,KAAK+E,UAAUQ,OAASvF,KAAKuF,MACzB+F,OAAO2hB,OAAOjtB,KAAK+E,WAAWoX,KAAM+Q,IAAoBA,KACxDjE,QAAQ/oB,MAAM,2DACP,GAQf2H,mBAI2B,IAAAslB,EAHlBntB,KAAKgtB,wBAGNhtB,KAAKsnB,kBACiCxY,IAAlC9O,KAAKgI,QAAQhI,KAAK8E,aAA6B9E,KAAKuF,QAAiC,QAA7B4nB,EAAKntB,KAAKiI,2BAAmB,IAAAklB,OAAA,EAAxBA,EAA0B5nB,OACvFvF,KAAKuE,YAAa,EAClBvE,KAAK0H,cAAa,GAClB1H,KAAKsrB,oBAELrC,QAAQ/oB,MAAM,4CAEVF,KAAKuF,KAIbvF,KAAKwoB,qBAHLS,QAAQ/oB,MAAM,gCACdF,KAAKE,OAAQ,IASrBuI,iBAAiB2kB,GACbptB,KAAKqI,eAAiB+kB,EAG1BzkB,gBAEQ3I,KAAKsnB,cACLtnB,KAAKqrB,gBAAiB,EACtBrrB,KAAKsnB,cAAe,EACpBtnB,KAAKqG,yBAELrG,KAAKqrB,gBAAiB,EACtBrrB,KAAKwoB,qBAIb6E,iBAAiB/sB,EAA6BuX,EAA+B6U,GACzE,MAAMY,EAAiC,WAArBttB,KAAKf,OAAOiD,KACxBqrB,EAAsB,iDACxBvtB,KAAKqI,gBAAkBilB,IAAczS,OAAOiM,QAAQyG,GACpDb,GAAK,GAELA,IAIR,oBAAiB,IAAAc,EAAAC,EACb,MAAMjrB,EAAYrD,IACZuuB,GAAiD,QAAhCF,EAAAhrB,EAAUlD,YAAYquB,kBAAU,IAAAH,OAAA,EAAhCA,EAAkC1c,IAAK8c,IAAC,IAAWA,EAAG3nB,iBAAiB,OAAY,GACpG4nB,GACiC,QAAnCJ,EAAAjrB,EAAUlD,YAAYuuB,qBAAa,IAAAJ,OAAA,EAAnCA,EAAqChiB,OAAQmiB,IAAOF,EAAevR,KAAM2R,GAAMA,EAAEvoB,OAASqoB,EAAEroB,SAAU,GAE1G,IAAIwoB,EAAW,IAAIL,KAAmBG,GAKtC,OAHI7tB,KAAKuF,OACLwoB,EAAWA,EAAStiB,OAAQ5F,GAAcA,EAAUN,KAAKoZ,cAAcC,SAAS5e,KAAKuF,KAAKoZ,iBAEvFoP,EAGX/nB,WAAWT,GACPvF,KAAKuF,KAAOA,EACZvF,KAAKoF,cAAe,IA7zBClE,eAAA,CAAxBuQ,eAAK,CAAErP,SAAS,K,oCADAsP,GAAexQ,eAAA,CAXnC0Q,eAAQ,CACLC,WAAY,CACRmc,OAAQrI,GACR,qBAAsB5R,GACtB,mBAAoBiT,GACpBnG,QAASC,QACT,eAAgBoB,GAChB,YAAakB,GACb,kBAAmBtR,YAGNJ,c,UC9DrB,MAAM,GAA2B,IAAgB,GAAQ,CAAC,CAAC,SAAS,KAErD,UCPf,MAAMzT,GAAa,CAAEe,IAAK,GACpBuC,GAAa,CACjBpD,MAAO,8CACPgb,MAAO,CAAC,OAAS,WAEb3X,GAAa,CAAExC,IAAK,GACpByC,GAAa,CACjBzC,IAAK,EACLb,MAAO,0BAEHuD,GAAa,CACjBxD,GAAI,eACJC,MAAO,8FAEHwD,GAAa,CAAExD,MAAO,0BACtByD,GAAa,CAAEzD,MAAO,6BACtBsE,GAAa,CACjBtE,MAAO,uBACPD,GAAI,SAEAwE,GAAa,CAAEvE,MAAO,+BACtBwE,GAAc,CAAC,QACfC,GAA2Bd,gCAAoB,IAAK,CACxD4jB,KAAM,mDACNvjB,OAAQ,OACRhE,MAAO,+BACN,iCAAkC,GAC/B0E,GAAc,CAClB7D,IAAK,EACLb,MAAO,sBAGH,SAAUC,GAAOC,EAAUC,EAAYC,EAAYC,EAAYC,EAAWC,GAC9E,MAAMwF,EAAqBtF,8BAAkB,WACvCqvB,EAA8BrvB,8BAAkB,oBAChDsvB,EAAgCtvB,8BAAkB,sBAExD,MAA4B,YAApBP,EAAKkI,YACR1H,yBAAcC,gCAAoB,MAAOb,GAAY,CACpD6D,gCAAoB,MAAOP,GAAY,CACrCU,yBAAaiC,EAAoB,CAC/BsC,KAAM,QACNC,MAAO,UACP0S,MAAO,CAAC,OAAS,iBAIF,WAApB9a,EAAKkI,YACH1H,yBAAcC,gCAAoB,MAAO0C,GAAY,MACnCsN,IAAhBzQ,EAAKuN,QACD/M,yBAAcC,gCAAoB,MAAO2C,GAAY,CACpDK,gCAAoB,SAAUJ,GAAY,CACxCI,gCAAoB,MAAOH,GAAY,CACrCG,gCAAoB,OAAQF,GAAYG,6BAAiB1D,EAAKuN,OAAO/K,OAAQ,OAGjFoB,yBAAagsB,EAA6B,CACxCriB,OAAQvN,EAAKuN,OAAOqc,WACpBhgB,oBAAqB5J,EAAK4J,qBACzB,KAAM,EAAG,CAAC,SAAU,wBACvBnG,gCAAoB,MAAOW,GAAY,CACrCR,yBAAaisB,EAA+B,CAC1CtiB,OAAQvN,EAAKuN,OACb3D,oBAAqB5J,EAAK4J,oBAC1BtH,KAAMtC,EAAKsC,KACXwtB,QAAQ,EACRC,aAAc/vB,EAAK+vB,aACnBC,OAAQhwB,EAAKiwB,mBACZ,KAAM,EAAG,CAAC,SAAU,sBAAuB,OAAQ,eAAgB,aAExExsB,gCAAoB,SAAUY,GAAY,CACxCsC,6BAAiB,cACjBlD,gCAAoB,IAAK,CACvB3D,MAAO,8BACPunB,KAAMrnB,EAAKuN,OAAO2Y,YAClBpiB,OAAQ,QACPJ,6BAAiB1D,EAAKuN,OAAO4Y,cAAe,EAAG7hB,IAClDqC,6BAAiB,OACjBpC,KAEDvE,EAAKuN,OAAO8Y,cACR7lB,yBAAcC,gCAAoB,MAAO+D,GAAad,6BAAiB1D,EAAKyC,GAAG,eAAiB,IAAMiB,6BAAiB1D,EAAKuN,OAAO8Y,cAAe,IACnJlgB,gCAAoB,IAAI,MAE9BA,gCAAoB,IAAI,MAE9BA,gCAAoB,IAAI,GC9EhC,IAAqB+pB,GAArB,cAA2CnuB,OAAGwO,eAAAxI,GAAA,SAAAA,GAAAyI,gBAAA,mBACJC,GAASD,gBAAA,gCACQC,GAASD,gBAAA,qBACjD,GAAKA,gBAAA,kBACP,WAASA,gBAAA,2BACA,GAACA,gBAAA,YAChB,MAAIA,gBAAA,oBACI,GAACA,gBAAA,WACV,IAAEA,gBAAA,cACiF,yBAAuBA,gBAAA,eAG5G,CAAE6O,QAAI5O,EAAW6O,QAAI7O,IAEzB/H,UACI,MAAMoF,EAAMnM,KAAKf,OAAOyB,OAAOyL,IACzBxL,EAAOX,KAAKf,OAAOyB,OAAOC,KAC1BsmB,EAAQzS,EAAQ,QAChB0S,EAAQ1S,EAAQ,QAASpS,QAE3B+J,GACAnM,KAAKwuB,cAAe,EAEpB9uB,MAAMM,KAAKR,OAAS,aAAa2M,GAAOyI,KAAM/W,IAC1C,GAAmB,MAAfA,EAAI2c,OACJva,QAAQC,MAAM,iDAAiDiM,UAG5D,CACH,MAAMsc,EAAY,IAAIxB,EAEtBppB,EAAI0qB,OAAO3T,KAAMzB,IACbsV,EAAUU,UAAUhW,GAAMyB,KAAK,KAC3B,MAAM6V,EAAehC,EAAUiC,OAAO,UAChCC,EAAelC,EAAUiC,OAAO,UAChCE,EAAmBnC,EAAUiC,OAAO,eAE1C1qB,KAAKiI,oBAAsB,CACvB1C,KAAM4G,EACNgL,IAAKsR,EACLzgB,QAAShI,KAAKgI,QACdgQ,OAAQ,CACJ0F,GAAI+M,EAAaC,OAAO,MACxB/M,GAAI8M,EAAaC,OAAO,OAE5BvY,OAAQ,CACJuL,GAAIiN,EAAaD,OAAO,MACxB/M,GAAIgN,EAAaD,OAAO,OAE5BpP,WAAYsP,GAGhB,MAAM6D,EAAW,GAAGtiB,KAAOxL,SAC3B8nB,EACKtV,KAAKsb,GACLpX,MAAM,UACNzC,KAAM8Z,IACH,MAAM9iB,EAAS8D,KAAKC,MAAM+e,GAC1B1uB,KAAK4L,OAASA,EACd5L,KAAKuG,WAAa,SAClB3F,SAASC,MAAQb,KAAK4L,OAAO/K,MAAQ,qBAMzDnB,MAAMM,KAAKR,OAAS,qBAAqBoV,KAAM/W,IAC3CqpB,EACKkC,KAAKC,iCAAqD,CACvDC,SAAUzrB,EAAIiC,KAAKwpB,WAEtBC,MAAOrpB,GAAeD,QAAQupB,IAAItpB,EAAMT,UAAYS,UAIjEF,KAAK4L,OAASiP,OAAOgM,MAAMjb,OAC3B5L,KAAKiI,oBAAsB4S,OAAOgM,MAAM5e,oBACxCjI,KAAKuG,WAAa,UAItB,MAAMkX,EAAO7c,SAAS+tB,gBACtBlR,EAAKmR,aAAa,OAAQ5uB,KAAKW,MAC/BX,KAAKQ,MAAMC,OAAST,KAAKW,KAG7B2tB,kBAAkB3gB,GACd3N,KAAK6uB,mBAAqBlhB,EAE1B,MAAMmhB,EAAUluB,SAASgkB,eAAe,gBACpCkK,IACA9uB,KAAKouB,aAAeU,EAAQC,gBA3FnBR,GAAartB,eAAA,CALjC0Q,eAAQ,CACLC,WAAY,CACRgP,QAASC,YAGIyN,c,UCHrB,MAAM,GAA2B,IAAgB,GAAQ,CAAC,CAAC,SAAS,MAErD,U,aCJf,MAAMS,GAAS,CACX,CACI9vB,KAAM,gBACNgD,KAAM,OACN+sB,UAAW1sB,EACXxB,KAAM,CAAEF,MAAO,wBAEnB,CACI3B,KAAM,qBACNgwB,SAAW5uB,GACA,IAAMA,EAAGI,OAAOC,KAAO,oBAAsBL,EAAGI,OAAOyL,KAGtE,CACIjN,KAAM,yBACNgD,KAAM,mBACN+sB,UAAWvd,GACXmV,MAAO,CAAEniB,cAAc,GACvB3D,KAAM,CAAEF,MAAO,wBAEnB,CACI3B,KAAM,yBACNgD,KAAM,cACN+sB,UAAWvd,GACXmV,MAAO,CAAEniB,cAAc,GACvB3D,KAAM,CAAEF,MAAO,wBAEnB,CACI3B,KAAM,8BACN+vB,UAAWvd,GACX3Q,KAAM,CAAEF,MAAO,wBAEnB,CACI3B,KAAM,0BACNgD,KAAM,SACN+sB,UAAWvd,GACXmV,OAAO,EACP9lB,KAAM,CAAEF,MAAO,wBAEnB,CACI3B,KAAM,wBACN+vB,UAAWV,GACXrsB,KAAM,UACN2kB,OAAO,EACP9lB,KAAM,CAAEF,MAAO,uBAEnB,CACI3B,KAAM,6BACN+vB,UAAWV,GACXxtB,KAAM,CAAEF,MAAO,wBAIjBsuB,GAASC,gBAAa,CACxBJ,OAAQA,GAERroB,QAAS0oB,kBACTC,eAAgB,SAAUhvB,GACtB,GAAIA,EAAGivB,KACH,MAAO,CACHC,SAAUC,mBAAmBnvB,EAAGivB,MAChCG,SAAU,aAMXP,U,mCCjEf,MAAMQ,GAAOnb,EAAQ,QAEf7T,GAAOC,SAAS+tB,gBAAgBiB,aAAa,QAQnD,SAASC,GAAKF,GACV,OAAOA,EAAKG,OACR,CAAChf,EAAK1D,KACF0D,EAAI4M,GAAGtQ,EAAKpO,KAAOoO,EAAK2iB,QACxBjf,EAAI6M,GAAGvQ,EAAKpO,KAAOoO,EAAK4iB,QACjBlf,GAEX,CAAE4M,GAAI,GAAIC,GAAI,KAItB,MAAMsS,GAAOC,gBAAW,CACpBC,QAAQ,EACR1vB,OAAQE,SAAQmO,EAChBshB,eAAgB,KAChBC,iBAAiB,EACjB/G,SAAUuG,GAAKF,M,iPCjBnBW,KAAkB3vB,KAAK4vB,IAAI,QAASC,MACpCF,KAAkBC,IAAIE,KAAa,CAC/BC,KAAMC,OAIV,MAAMC,GAAMC,kBAcNC,GAAMC,uBAAU5wB,GAChB6wB,GAAQC,iBAEdH,GAAIP,IAAIS,IACHT,IAAIpB,IACJoB,IAAIN,IACJM,IAAIW,QAAU,CACXC,UAAW,QACXlC,UAAW,UAEdsB,IAAIa,MACJb,IAAItH,SACJsH,IAAIc,MACJd,IAAID,MACJC,IAAIK,IACTE,GAAIQ,MAAM,S,uGCnDV,W,uGCAA,W","file":"js/chunk-common.e640abf6.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!./slideshow-editor.vue?vue&type=style&index=0&id=7cb258ba&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-preview.vue?vue&type=style&index=0&id=d8aa8408&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=2b99fd5c&lang=scss\"","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\":\"Scénarios de la PCAR\",\"frValid\":\"1\"},{\"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 scénarios 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.feedback\",\"enValue\":\"Send Us Feedback\",\"enValid\":\"1\",\"frValue\":\"Envoyez-nous vos commentaires\",\"frValid\":\"0\"},{\"key\":\"editor.feedback.subject\",\"enValue\":\"Storylines Editor Feedback\",\"enValid\":\"1\",\"frValue\":\"Commentaires de l'éditeur de scénarios\",\"frValid\":\"0\"},{\"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\":\"IDUU\",\"frValid\":\"1\"},{\"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.loadPrevious\",\"enValue\":\"Load Previous\",\"enValid\":\"1\",\"frValue\":\"[FR] Load Previous\",\"frValid\":\"0\"},{\"key\":\"editor.viewHistory\",\"enValue\":\"View Previous\",\"enValid\":\"1\",\"frValue\":\"[FR] View Previous\",\"frValid\":\"0\"},{\"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.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.centerPanel\",\"enValue\":\"Center panel content\",\"enValid\":\"1\",\"frValue\":\"Contenu de la diapositive centrale\",\"frValid\":\"0\"},{\"key\":\"editor.slides.centerSlide\",\"enValue\":\"Center slide content\",\"enValid\":\"1\",\"frValue\":\"Contenu du panneau central\",\"frValid\":\"0\"},{\"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\"},{\"key\":\"editor.landing.greeting\",\"enValue\":\"Hello\",\"enValid\":\"1\",\"frValue\":\"Bonjour\",\"frValid\":\"1\"}];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!./image-editor.vue?vue&type=style&index=0&id=4ee6d780&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!./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!./video-editor.vue?vue&type=style&index=0&id=33605cfc&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=44e16318&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=468630e0&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!./slide-editor.vue?vue&type=style&index=0&id=d63c3352&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=64375a02&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=3fca5ac8&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!./landing.vue?vue&type=style&index=0&id=47613d15&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!./text-editor.vue?vue&type=style&index=0&id=37b76b8f&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!./app.vue?vue&type=style&index=0&id=e7a04b6a&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!./preview.vue?vue&type=style&index=0&id=44145672&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!./time-slider-editor.vue?vue&type=style&index=0&id=98eacf1c&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=aef69d80&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!./map-editor.vue?vue&type=style&index=0&id=62693dea&lang=scss&scoped=true\"","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}","import { defineStore } from 'pinia';\n\ninterface Storyline {\n uuid: string;\n isUserStoryline?: boolean;\n}\n\ninterface UserProfile {\n userName?: string;\n role?: string;\n storylines?: Array;\n allStorylines?: Array;\n}\n\nexport const useUserStore = defineStore('user', {\n state: () => ({\n userProfile: {} as UserProfile\n }),\n actions: {\n async fetchUserProfile() {\n const apiUrl =\n process.env.VUE_APP_CURR_ENV !== '#{CURR_ENV}#'\n ? process.env.VUE_APP_NET_API_URL\n : 'https://localhost:44371';\n try {\n const response = await fetch(apiUrl + '/api/user/profile', {\n method: 'GET',\n credentials: 'include'\n });\n\n if (response.ok) {\n const data = await response.json();\n this.userProfile = data;\n } else {\n console.error('Failed to fetch the user profile.');\n }\n } catch (error) {\n console.error('Error fetching user profile: ', error);\n }\n }\n }\n});\n","\nimport { Vue, Watch } from 'vue-property-decorator';\nimport { RouteLocationNormalized } from 'vue-router';\nimport { useUserStore } from './stores/userStore';\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 mounted() {\n const userStore = useUserStore(this.$pinia);\n // We can mock the user's profile for local development here if needed.\n if (process.env.VUE_APP_CURR_ENV !== '#{CURR_ENV}#') {\n userStore.fetchUserProfile();\n }\n }\n}\n","import { render } from \"./app.vue?vue&type=template&id=e7a04b6a&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=e7a04b6a&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: \"relative\" }\nconst _hoisted_2 = { class: \"absolute top-0 right-0 bg-white text-black p-2\" }\nconst _hoisted_3 = { class: \"flex justify-center\" }\nconst _hoisted_4 = { class: \"home-btn-container border-4 border-gray-400 border-solid m-24\" }\nconst _hoisted_5 = { class: \"text-2xl font-bold\" }\nconst _hoisted_6 = { class: \"home-btn-container border-4 border-gray-400 border-solid m-24\" }\nconst _hoisted_7 = { 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, _toDisplayString(_ctx.$t('editor.landing.greeting')) + \" \" + _toDisplayString(_ctx.userName) + \"! \", 1),\n _createElementVNode(\"div\", _hoisted_3, [\n _createElementVNode(\"div\", _hoisted_4, [\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_5, \"+ \" + _toDisplayString(_ctx.$t('editor.createProduct')), 1)\n ]),\n _: 1\n })\n ]),\n _createElementVNode(\"div\", _hoisted_6, [\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_7, _toDisplayString(_ctx.$t('editor.editProduct')), 1)\n ]),\n _: 1\n })\n ])\n ])\n ]))\n}","\nimport { Vue } from 'vue-property-decorator';\nimport { useUserStore } from '../../stores/userStore';\n\nexport default class LandingV extends Vue {\n get userName() {\n const userStore = useUserStore();\n return userStore.userProfile.userName || 'Guest';\n }\n}\n","import { render } from \"./landing.vue?vue&type=template&id=47613d15&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=47613d15&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, renderList as _renderList, Fragment as _Fragment, withModifiers as _withModifiers, vShow as _vShow, resolveComponent as _resolveComponent, createVNode as _createVNode, withCtx as _withCtx, 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 flex-1 text-2xl font-bold mb-5\" }\nconst _hoisted_5 = { class: \"border py-5 w-5/6\" }\nconst _hoisted_6 = { class: \"editor-label\" }\nconst _hoisted_7 = {\n key: 0,\n class: \"text-red-500\"\n}\nconst _hoisted_8 = { class: \"relative w-1/3 inline-block\" }\nconst _hoisted_9 = { class: \"absolute z-10 w-full bg-white border border-gray-200 mt-1\" }\nconst _hoisted_10 = [\"onMousedown\"]\nconst _hoisted_11 = {\n key: 0,\n class: \"text-yellow-500 rounded p-1 ml-2\"\n}\nconst _hoisted_12 = /*#__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_13 = { class: \"align-center inline-block select-none\" }\nconst _hoisted_14 = {\n key: 3,\n class: \"inline-flex align-middle mb-1\"\n}\nconst _hoisted_15 = {\n key: 4,\n class: \"inline-flex border py-5 ml-10\"\n}\nconst _hoisted_16 = [\"onClick\"]\nconst _hoisted_17 = [\"disabled\"]\nconst _hoisted_18 = /*#__PURE__*/_createElementVNode(\"br\", null, null, -1)\nconst _hoisted_19 = { class: \"mb-4\" }\nconst _hoisted_20 = { class: \"editor-h3\" }\nconst _hoisted_21 = { class: \"flex mt-8\" }\nconst _hoisted_22 = { class: \"ml-auto\" }\nconst _hoisted_23 = { class: \"editor-button\" }\nconst _hoisted_24 = [\"onClick\"]\nconst _hoisted_25 = {\n slot: \"header\",\n class: \"text-lg font-bold\"\n}\nconst _hoisted_26 = { 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 class: \"editor-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\", _hoisted_6, [\n ('uuid' in _ctx.reqFields)\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_7, \"*\"))\n : _createCommentVNode(\"\", true),\n _createTextVNode(\" \" + _toDisplayString(_ctx.$t('editor.uuid')) + \": \", 1)\n ]),\n _createElementVNode(\"div\", _hoisted_8, [\n _withDirectives(_createElementVNode(\"input\", {\n type: \"text\",\n onFocus: _cache[1] || (_cache[1] = ($event: any) => (_ctx.showDropdown = true)),\n onBlur: _cache[2] || (_cache[2] = ($event: any) => (_ctx.showDropdown = false)),\n onInput: _cache[3] || (_cache[3] = ($event: any) => {\n _ctx.error = false;\n _ctx.reqFields.uuid = true;\n _ctx.checkUuid();\n }),\n \"onUpdate:modelValue\": _cache[4] || (_cache[4] = ($event: any) => ((_ctx.uuid) = $event)),\n class: _normalizeClass([\"editor-input w-full\", { 'input-error': _ctx.error || !_ctx.reqFields.uuid }])\n }, null, 34), [\n [_vModelText, _ctx.uuid]\n ]),\n _withDirectives(_createElementVNode(\"div\", _hoisted_9, [\n _createElementVNode(\"ul\", null, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.getStorylines, (storyline) => {\n return (_openBlock(), _createElementBlock(\"li\", {\n key: storyline.uuid,\n onMousedown: _withModifiers(($event: any) => (_ctx.selectUuid(storyline.uuid)), [\"prevent\"]),\n class: _normalizeClass([\n 'p-2 hover:bg-gray-100 cursor-pointer',\n storyline.isUserStoryline ? 'bg-gray-200' : ''\n ])\n }, _toDisplayString(storyline.uuid), 43, _hoisted_10))\n }), 128))\n ])\n ], 512), [\n [_vShow, _ctx.showDropdown]\n ])\n ]),\n (_ctx.warning)\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_11, [\n _hoisted_12,\n _createElementVNode(\"span\", _hoisted_13, _toDisplayString(_ctx.$t('editor.uuid.exists')), 1)\n ]))\n : _createCommentVNode(\"\", true),\n (_ctx.editExisting)\n ? (_openBlock(), _createElementBlock(\"button\", {\n key: 1,\n onClick: _cache[5] || (_cache[5] = \n//@ts-ignore\n(...args) => (_ctx.generateRemoteConfig && _ctx.generateRemoteConfig(...args))),\n class: _normalizeClass([\"editor-button bg-black text-white hover:bg-gray-800\", { 'input-error': _ctx.error }])\n }, _toDisplayString(_ctx.$t('editor.load')), 3))\n : _createCommentVNode(\"\", true),\n (_ctx.editExisting)\n ? (_openBlock(), _createElementBlock(\"button\", {\n key: 2,\n onClick: _cache[6] || (_cache[6] = \n//@ts-ignore\n(...args) => (_ctx.fetchHistory && _ctx.fetchHistory(...args))),\n class: _normalizeClass([\"bg-black editor-button text-white hover:bg-gray-800\", { 'input-error': _ctx.error }])\n }, _toDisplayString(_ctx.$t('editor.viewHistory')), 3))\n : _createCommentVNode(\"\", true),\n (_ctx.loadStatus === 'loading')\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_14, [\n _createVNode(_component_spinner, {\n size: \"24px\",\n color: \"#009CD1\",\n class: \"mx-2 my-auto\"\n })\n ]))\n : _createCommentVNode(\"\", true),\n (_ctx.editExisting)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_15, [\n _createElementVNode(\"ul\", null, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.storylineHistory, (history) => {\n return (_openBlock(), _createElementBlock(\"li\", {\n key: history.id,\n onClick: ($event: any) => (_ctx.selectHistory(history)),\n class: _normalizeClass([\"p-2 cursor-pointer\", { 'bg-blue-200': _ctx.selectedHistory && history.id === _ctx.selectedHistory.id }])\n }, _toDisplayString(_ctx.formatDate(history.created)), 11, _hoisted_16))\n }), 128))\n ]),\n _createElementVNode(\"button\", {\n disabled: !_ctx.selectedHistory || _ctx.selectedHistory.storylineUUID !== _ctx.uuid,\n class: \"editor-button bg-black text-white hover:bg-gray-800\",\n onClick: _cache[7] || (_cache[7] = ($event: any) => (_ctx.loadHistory()))\n }, _toDisplayString(_ctx.$t('editor.loadPrevious')), 9, _hoisted_17)\n ]))\n : _createCommentVNode(\"\", true)\n ]),\n _hoisted_18,\n _createElementVNode(\"div\", _hoisted_19, [\n _createElementVNode(\"h3\", _hoisted_20, _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_21, [\n (_ctx.editExisting)\n ? (_openBlock(), _createElementBlock(\"button\", {\n key: 0,\n onClick: _cache[8] || (_cache[8] = ($event: any) => (_ctx.saveMetadata(true))),\n class: \"editor-button\"\n }, _toDisplayString(_ctx.$t('editor.saveChanges')), 1))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"div\", _hoisted_22, [\n _createVNode(_component_router_link, {\n to: { name: 'home' },\n target: \"\"\n }, {\n default: _withCtx(() => [\n _createElementVNode(\"button\", _hoisted_23, _toDisplayString(_ctx.$t('editor.back')), 1)\n ]),\n _: 1\n }),\n _createElementVNode(\"button\", {\n onClick: _cache[9] || (_cache[9] = ($event: any) => (!_ctx.warning ? _ctx.continueToEditor() : _ctx.$vfm.open(`confirm-uuid-overwrite`))),\n class: \"editor-button bg-black text-white\"\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[10] || (_cache[10] = ($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 class: \"editor-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_24),\n _createVNode(_component_confirmation_modal, {\n name: `change-lang`,\n message: _ctx.$t('editor.changeLang.modal'),\n onOk: _cache[11] || (_cache[11] = ($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_25, _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_26, [\n _createElementVNode(\"button\", {\n class: \"editor-button bg-black text-white hover:bg-gray-800\",\n onClick: _cache[12] || (_cache[12] = ($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-d63c3352\"),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 w-full\" }\nconst _hoisted_5 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"label\", { class: \"editor-label\" }, \"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 = { class: \"mx-2 font-bold\" }\nconst _hoisted_14 = [\"disabled\"]\nconst _hoisted_15 = { class: \"mx-2 font-bold\" }\nconst _hoisted_16 = [\"disabled\"]\nconst _hoisted_17 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"br\", null, null, -1))\nconst _hoisted_18 = {\n key: 0,\n class: \"flex border-b border-black\"\n}\nconst _hoisted_19 = /*#__PURE__*/_createStaticVNode(\"\", 2)\nconst _hoisted_21 = { class: \"align-middle inline-block pl-1\" }\nconst _hoisted_22 = /*#__PURE__*/_createStaticVNode(\"\", 2)\nconst _hoisted_24 = { class: \"align-middle inline-block pl-1\" }\nconst _hoisted_25 = { class: \"align-middle inline-block pl-1\" }\nconst _hoisted_26 = {\n key: 1,\n class: \"border-b border-black\"\n}\nconst _hoisted_27 = /*#__PURE__*/_createStaticVNode(\"\", 2)\nconst _hoisted_29 = { class: \"align-middle inline-block pl-1\" }\nconst _hoisted_30 = { class: \"align-middle inline-block pl-1\" }\nconst _hoisted_31 = { class: \"flex mt-4\" }\nconst _hoisted_32 = { class: \"font-bold text-xl\" }\nconst _hoisted_33 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", { class: \"ml-auto flex-grow\" }, null, -1))\nconst _hoisted_34 = {\n key: 0,\n class: \"flex flex-col mr-8\"\n}\nconst _hoisted_35 = { class: \"editor-label text-left text-lg\" }\nconst _hoisted_36 = [\"value\"]\nconst _hoisted_37 = [\"value\"]\nconst _hoisted_38 = {\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: \"editor-input 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: \"editor-button 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: \"editor-button 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: \"editor-input 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 _createElementVNode(\"span\", _hoisted_13, _toDisplayString(_ctx.$t('editor.slides.centerSlide')), 1),\n _withDirectives(_createElementVNode(\"input\", {\n type: \"checkbox\",\n class: \"editor-input rounded-none cursor-pointer w-4 h-4\",\n \"onUpdate:modelValue\": _cache[5] || (_cache[5] = ($event: any) => ((_ctx.centerSlide) = $event)),\n disabled: _ctx.centerPanel,\n onChange: _cache[6] || (_cache[6] = _withModifiers(($event: any) => (_ctx.toggleCenterSlide()), [\"stop\"]))\n }, null, 40, _hoisted_14), [\n [_vModelCheckbox, _ctx.centerSlide]\n ]),\n _createElementVNode(\"span\", _hoisted_15, _toDisplayString(_ctx.$t('editor.slides.centerPanel')), 1),\n _withDirectives(_createElementVNode(\"input\", {\n type: \"checkbox\",\n class: \"editor-input rounded-none cursor-pointer w-4 h-4\",\n \"onUpdate:modelValue\": _cache[7] || (_cache[7] = ($event: any) => ((_ctx.centerPanel) = $event)),\n disabled: _ctx.centerSlide,\n onChange: _cache[8] || (_cache[8] = _withModifiers(($event: any) => (_ctx.toggleCenterPanel()), [\"stop\"]))\n }, null, 40, _hoisted_16), [\n [_vModelCheckbox, _ctx.centerPanel]\n ])\n ])\n ])\n ]),\n _hoisted_17,\n (_ctx.currentSlide.panel.length === 2)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_18, [\n _createElementVNode(\"button\", {\n onClick: _cache[9] || (_cache[9] = \n () => {\n _ctx.panelIndex = 0;\n _ctx.advancedEditorView = false;\n _ctx.saveChanges();\n }\n ),\n class: _normalizeClass([\"editor-button border-t border-l border-r\", _ctx.panelIndex == 0 && !_ctx.advancedEditorView ? 'border-black' : 'border-white'])\n }, [\n _hoisted_19,\n _createElementVNode(\"span\", _hoisted_21, _toDisplayString(_ctx.$t('editor.slides.leftPanel')), 1)\n ], 2),\n _createElementVNode(\"button\", {\n onClick: _cache[10] || (_cache[10] = \n () => {\n _ctx.panelIndex = 1;\n _ctx.advancedEditorView = false;\n _ctx.saveChanges();\n }\n ),\n class: _normalizeClass([\"editor-button border-t border-l border-r\", _ctx.panelIndex == 1 && !_ctx.advancedEditorView ? 'border-black' : 'border-white'])\n }, [\n _hoisted_22,\n _createElementVNode(\"span\", _hoisted_24, _toDisplayString(_ctx.$t('editor.slides.rightPanel')), 1)\n ], 2),\n _createElementVNode(\"button\", {\n onClick: _cache[11] || (_cache[11] = \n () => {\n _ctx.advancedEditorView = true;\n _ctx.saveChanges();\n }\n ),\n class: _normalizeClass([\"editor-button border-t border-l border-r\", _ctx.advancedEditorView ? 'border-black' : 'border-white'])\n }, [\n _createElementVNode(\"span\", _hoisted_25, _toDisplayString(_ctx.$t('editor.slides.advanced')), 1)\n ], 2)\n ]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_26, [\n _createElementVNode(\"button\", {\n onClick: _cache[12] || (_cache[12] = \n () => {\n _ctx.advancedEditorView = false;\n _ctx.saveChanges();\n }\n ),\n class: _normalizeClass([\"editor-button border-t border-l border-r\", !_ctx.advancedEditorView ? 'border-black' : 'border-white'])\n }, [\n _hoisted_27,\n _createElementVNode(\"span\", _hoisted_29, _toDisplayString(_ctx.$t('editor.slides.fullscreenPanel')), 1)\n ], 2),\n _createElementVNode(\"button\", {\n onClick: _cache[13] || (_cache[13] = \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_30, _toDisplayString(_ctx.$t('editor.slides.advanced')), 1)\n ], 2)\n ])),\n _createElementVNode(\"div\", null, [\n _createElementVNode(\"div\", _hoisted_31, [\n _createElementVNode(\"span\", _hoisted_32, _toDisplayString(_ctx.$t('editor.slides.content')) + \":\", 1),\n _hoisted_33,\n (!_ctx.advancedEditorView || _ctx.rightOnly)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_34, [\n _createElementVNode(\"label\", _hoisted_35, _toDisplayString(_ctx.$t('editor.slides.contentType')) + \":\", 1),\n _createElementVNode(\"select\", {\n ref: \"typeSelector\",\n onInput: _cache[14] || (_cache[14] = ($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_37))\n }), 128))\n ], 40, _hoisted_36)\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[15] || (_cache[15] = ($event: any) => (_ctx.$emit('slide-edit'))),\n onConfigEdited: _cache[16] || (_cache[16] = (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 centerSlide: _ctx.centerSlide,\n dynamicSelected: _ctx.dynamicSelected,\n onSlideEdit: _cache[17] || (_cache[17] = ($event: any) => (_ctx.$emit('slide-edit')))\n }, null, 40, [\"panel\", \"configFileStructure\", \"lang\", \"uid\", \"sourceCounts\", \"centerSlide\", \"dynamicSelected\"]))\n ])\n ]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_38, [\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: \n _ctx.$t('editor.slides.changeSlide.confirm', {\n title: _ctx.currentSlide.title\n })\n ,\n onOk: _cache[18] || (_cache[18] = ($event: any) => {\n _ctx.changePanelType(_ctx.determineEditorType(_ctx.currentSlide.panel[_ctx.panelIndex]), _ctx.newType);\n _ctx.toggleCenterPanel();\n _ctx.toggleCenterSlide();\n }),\n onCancel: _ctx.cancelTypeChange\n }, null, 8, [\"name\", \"message\", \"onCancel\"]),\n _createVNode(_component_confirmation_modal, {\n name: `right-only-${_ctx.slideIndex}`,\n message: \n _ctx.$t('editor.slides.changeSlide.confirm', {\n title: _ctx.currentSlide.title\n })\n ,\n onOk: _cache[19] || (_cache[19] = ($event: any) => (_ctx.toggleRightOnly())),\n onCancel: _cache[20] || (_cache[20] = ($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: JSZip;\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 customStyles?: string;\n}\n\nexport interface TextPanel extends BasePanel {\n type: PanelType.Text;\n title: string;\n titleTag?: string;\n content: string; // in md format\n customStyles?: string;\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 customStyles?: string;\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 customStyles?: string;\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 customStyles?: 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 customStyles?: string;\n}\n\nexport interface AudioPanel extends BasePanel {\n type: PanelType.Audio;\n src: string;\n caption?: string;\n customStyles?: 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 customStyles?: string;\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 customStyles?: string;\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: \"editor-button 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: \"w-full 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-d8aa8408\"),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: \"editor-button 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: \"editor-label 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: \"editor-button 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: \"editor-button 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=d8aa8408&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=d8aa8408&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-d8aa8408\"]])\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-468630e0\"),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: \"editor-button 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: \"editor-button 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=468630e0&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=468630e0&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-468630e0\"]])\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 @Prop({ default: false }) centerSlide!: boolean;\n @Prop({ default: false }) dynamicSelected!: 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 if (this.centerSlide && this.dynamicSelected) {\n for (const c in charts) {\n charts[c].customStyles += 'text-align: left;';\n }\n } else if (!this.centerSlide && this.dynamicSelected) {\n for (const c in charts) {\n charts[c].customStyles = (charts[c].customStyles || '').replace('text-align: left;', '');\n }\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=64375a02&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=64375a02&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-44e16318\"),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\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: _ctx.onJsonSave\n }, null, 8, [\"modelValue\", \"lang\", \"onJsonSave\"])\n ]))\n}","\nimport { Options, Prop, Vue } from 'vue-property-decorator';\nimport { Vue3JsonEditor } from 'vue3-json-editor';\nimport { Validator } from '@/definitions';\n\n@Options({\n components: {\n 'json-editor': Vue3JsonEditor\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=44e16318&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=44e16318&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-44e16318\"]])\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-4ee6d780\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"block\" }\nconst _hoisted_2 = { class: \"editor-label 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: \"editor-label text-label\" }\nconst _hoisted_10 = [\"onUpdate:modelValue\"]\nconst _hoisted_11 = { class: \"flex mt-4 items-center w-full text-left\" }\nconst _hoisted_12 = { class: \"editor-label text-label\" }\nconst _hoisted_13 = [\"onUpdate:modelValue\"]\nconst _hoisted_14 = { class: \"flex items-center w-full text-left\" }\nconst _hoisted_15 = { class: \"editor-label 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 flex items-center justify-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: \"editor-input 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: \"editor-input 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: \"editor-input 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-1c58f06c\"),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: \"editor-button 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=1c58f06c&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=1c58f06c&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-1c58f06c\"]])\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 @Prop({ default: false }) centerSlide!: boolean;\n @Prop({ default: false }) dynamicSelected!: 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 (this.centerSlide && this.dynamicSelected) {\n for (const i in images) {\n images[i].customStyles += 'text-align: left;';\n }\n } else if (!this.centerSlide && this.dynamicSelected) {\n for (const i in images) {\n images[i].customStyles = (images[i].customStyles || '').replace('text-align: left;', '');\n }\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=4ee6d780&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=4ee6d780&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-4ee6d780\"]])\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-37b76b8f\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"flex flex-col mt-4\" }\nconst _hoisted_2 = { class: \"editor-label text-left\" }\nconst _hoisted_3 = { class: \"editor-label 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 class: \"editor-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 @Prop({ default: false }) centerSlide!: boolean;\n @Prop({ default: false }) dynamicSelected!: boolean;\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 mounted(): void {\n if (this.centerSlide && this.dynamicSelected) {\n this.panel.customStyles += 'text-align: left !important;';\n } else if (!this.centerSlide && this.dynamicSelected) {\n this.panel.customStyles = (this.panel.customStyles || '').replace('text-align: left !important;', '');\n }\n }\n}\n","import { render } from \"./text-editor.vue?vue&type=template&id=37b76b8f&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=37b76b8f&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-37b76b8f\"]])\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, 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-62693dea\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"flex flex-col\" }\nconst _hoisted_2 = { class: \"editor-label text-left\" }\nconst _hoisted_3 = { class: \"editor-label mt-6\" }\nconst _hoisted_4 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", { class: \"mx-4\" }, null, -1))\nconst _hoisted_5 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"br\", null, null, -1))\nconst _hoisted_6 = {\n key: 1,\n class: \"mb-4\"\n}\nconst _hoisted_7 = {\n class: \"ramp-editor mt-5\",\n ref: \"editor\",\n style: {\"width\":\"70vw\",\"height\":\"80vh\"}\n}\nconst _hoisted_8 = {\n slot: \"header\",\n class: \"text-lg font-bold\"\n}\nconst _hoisted_9 = { class: \"w-full flex justify-end\" }\nconst _hoisted_10 = [\"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 class: \"editor-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(\"div\", null, [\n _createElementVNode(\"label\", _hoisted_3, _toDisplayString(_ctx.$t('editor.map.timeslider.enable')), 1),\n _withDirectives(_createElementVNode(\"input\", {\n class: \"editor-input\",\n type: \"checkbox\",\n onChange: _cache[1] || (_cache[1] = \n//@ts-ignore\n(...args) => (_ctx.saveTimeSlider && _ctx.saveTimeSlider(...args))),\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = ($event: any) => ((_ctx.usingTimeSlider) = $event))\n }, null, 544), [\n [_vModelCheckbox, _ctx.usingTimeSlider]\n ]),\n _hoisted_4,\n (_ctx.usingTimeSlider)\n ? (_openBlock(), _createElementBlock(\"button\", {\n key: 0,\n onClick: _cache[3] || (_cache[3] = ($event: any) => (_ctx.$vfm.open('time-slider-edit-modal'))),\n class: \"editor-button bg-black text-white hover:bg-gray-800 mt-3\"\n }, _toDisplayString(_ctx.$t('editor.map.timeslider.edit')), 1))\n : _createCommentVNode(\"\", true),\n _hoisted_5,\n (_ctx.usingTimeSlider)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_6))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"div\", _hoisted_7, null, 512)\n ]),\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_8, _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_9, [\n _createElementVNode(\"button\", {\n class: _normalizeClass([\"editor-button\", _ctx.timeSliderError ? '' : 'bg-black text-white hover:bg-gray-800']),\n disabled: _ctx.timeSliderError,\n onClick: _cache[4] || (_cache[4] = \n//@ts-ignore\n(...args) => (_ctx.saveTimeSlider && _ctx.saveTimeSlider(...args)))\n }, \" Done \", 10, _hoisted_10)\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-98eacf1c\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"px-5\" }\nconst _hoisted_2 = { class: \"flex items-center\" }\nconst _hoisted_3 = { class: \"editor-label\" }\nconst _hoisted_4 = [\"value\"]\nconst _hoisted_5 = { class: \"mx-3\" }\nconst _hoisted_6 = [\"value\"]\nconst _hoisted_7 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"br\", null, null, -1))\nconst _hoisted_8 = { class: \"flex items-center\" }\nconst _hoisted_9 = { class: \"editor-label\" }\nconst _hoisted_10 = [\"value\"]\nconst _hoisted_11 = { class: \"mx-3\" }\nconst _hoisted_12 = [\"value\"]\nconst _hoisted_13 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"br\", null, null, -1))\nconst _hoisted_14 = {\n key: 0,\n class: \"border-black border-2 p-3 w-2/3\"\n}\nconst _hoisted_15 = { class: \"editor-label w-full\" }\nconst _hoisted_16 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"br\", null, null, -1))\nconst _hoisted_17 = { class: \"list-disc my-2 ml-8\" }\nconst _hoisted_18 = { key: 1 }\nconst _hoisted_19 = { class: \"editor-label\" }\nconst _hoisted_20 = [\"value\"]\nconst _hoisted_21 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"br\", null, null, -1))\nconst _hoisted_22 = { class: \"editor-label\" }\nconst _hoisted_23 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"br\", null, null, -1))\nconst _hoisted_24 = [\"value\"]\nconst _hoisted_25 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"br\", null, null, -1))\nconst _hoisted_26 = /*#__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\", _hoisted_3, _toDisplayString(_ctx.$t('editor.map.timeslider.range')), 1),\n _createElementVNode(\"input\", {\n class: \"editor-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_4),\n _createElementVNode(\"span\", _hoisted_5, _toDisplayString(_ctx.$t('editor.map.timeslider.to')), 1),\n _createElementVNode(\"input\", {\n class: \"editor-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_6)\n ]),\n _hoisted_7,\n _createElementVNode(\"div\", _hoisted_8, [\n _createElementVNode(\"label\", _hoisted_9, _toDisplayString(_ctx.$t('editor.map.timeslider.start')), 1),\n _createElementVNode(\"input\", {\n class: \"editor-input 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_10),\n _createElementVNode(\"span\", _hoisted_11, _toDisplayString(_ctx.$t('editor.map.timeslider.to')), 1),\n _createElementVNode(\"input\", {\n class: \"editor-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_12)\n ]),\n _hoisted_13,\n (_ctx.error)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_14, [\n _createElementVNode(\"label\", _hoisted_15, _toDisplayString(_ctx.$t('editor.map.timeslider.warning')), 1),\n _hoisted_16,\n _createElementVNode(\"ul\", _hoisted_17, [\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_18))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"div\", null, [\n _createElementVNode(\"label\", _hoisted_19, _toDisplayString(_ctx.$t('editor.map.timeslider.attribute')), 1),\n _createElementVNode(\"input\", {\n class: \"editor-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_20)\n ]),\n _hoisted_21,\n _createElementVNode(\"div\", null, [\n _createElementVNode(\"label\", _hoisted_22, _toDisplayString(_ctx.$t('editor.map.timeslider.layers')), 1),\n _hoisted_23,\n _createElementVNode(\"input\", {\n class: \"editor-input 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_24)\n ]),\n _hoisted_25,\n _hoisted_26\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=98eacf1c&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=98eacf1c&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-98eacf1c\"]])\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 defaultConfig from '../../../public/ramp-default.json';\nimport TimeSliderEditorV from './helpers/time-slider-editor.vue';\nimport { createInstance } from 'ramp-config-editor_editeur-config-pcar';\nimport 'ramp-config-editor_editeur-config-pcar/dist/style.css';\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 @Prop({ default: false }) centerSlide!: boolean;\n @Prop({ default: false }) dynamicSelected!: boolean;\n\n // config editor\n rampEditorApi: any = '';\n\n // For creating new files.\n newFileName = '';\n\n // TimeSlider\n usingTimeSlider = false;\n timeSliderError = false;\n timeSliderConf: TimeSliderConfig = { range: [], start: [], attribute: '' };\n status = 'default';\n strippedFileName = '';\n\n mounted(): void {\n this.usingTimeSlider = !!this.panel.timeSlider;\n this.status = this.panel.config !== '' ? 'default' : 'creating';\n this.strippedFileName = this.panel.config !== '' ? this.panel.config.split('/')[2].split('.')[0] : '';\n\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 window.addEventListener('ramp4-config-edited', this.onConfigEdit);\n this.validateTimeSlider();\n\n if (this.status === 'creating') {\n this.createNewConfig();\n }\n\n if (this.centerSlide && this.dynamicSelected) {\n this.panel.customStyles += 'text-align: left !important;';\n } else if (!this.centerSlide && this.dynamicSelected) {\n this.panel.customStyles = (this.panel.customStyles || '').replace('text-align: left !important;', '');\n }\n\n this.openEditor();\n }\n\n beforeDestroy(): void {\n window.removeEventListener('ramp4-config-edited', this.onConfigEdit);\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.configFileStructure.uuid}-map-${\n this.getNumberOfMaps() + 1\n }.json`;\n this.strippedFileName = this.panel.config.split('/')[2].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.file(\n `${this.strippedFileName}.json`,\n JSON.stringify(defaultConfig, 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 const conf = JSON.parse(res);\n this.rampEditorApi = createInstance(this.$refs.editor, conf);\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 const conf = JSON.parse(stringResponse);\n this.rampEditorApi = createInstance(this.$refs.editor, conf);\n });\n });\n }\n }\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 saveChanges(): void {\n // Add map config to ZIP file.\n this.configFileStructure.rampConfig.file(\n `${this.strippedFileName}.json`,\n JSON.stringify(this.rampEditorApi.getConfig(), null, 4)\n );\n }\n\n onConfigEdit(): void {\n this.$emit('slide-edit');\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 getNumberOfMaps(): number {\n let n = 0;\n this.configFileStructure.rampConfig.forEach((f) => {\n n += 1;\n });\n return n;\n }\n}\n","import { render } from \"./map-editor.vue?vue&type=template&id=62693dea&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=62693dea&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-62693dea\"]])\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-33605cfc\"),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: \"editor-label text-label\" }\nconst _hoisted_4 = { class: \"flex editor-label 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: \"editor-label text-label\" }\nconst _hoisted_10 = {\n key: 1,\n ref: \"videoUrl\",\n class: \"editor-input 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: \"editor-input 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 flex justify-center 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: \"editor-input 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: \"editor-button 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 @Prop({ default: false }) centerSlide!: boolean;\n @Prop({ default: false }) dynamicSelected!: boolean;\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 if (this.centerSlide && this.dynamicSelected) {\n this.panel.customStyles += 'text-align: left !important;';\n } else if (!this.centerSlide && this.dynamicSelected) {\n this.panel.customStyles = (this.panel.customStyles || '').replace('text-align: left !important;', '');\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=33605cfc&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=33605cfc&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-33605cfc\"]])\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-7cb258ba\"),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: \"editor-label 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: \"editor-button 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: \"editor-input 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: \"editor-button 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: \"editor-button 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) {\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 if (itemConfig.type === PanelType.Map) {\n this.$emit('slide-edit');\n }\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=7cb258ba&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=7cb258ba&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-7cb258ba\"]])\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([\"editor-button 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([\"editor-button 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 class: \"editor-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 class: \"editor-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 centerSlide: _ctx.centerSlide,\n dynamicSelected: _ctx.dynamicSelected,\n onSlideEdit: _cache[5] || (_cache[5] = ($event: any) => (_ctx.$emit('slide-edit')))\n }, null, 40, [\"panel\", \"configFileStructure\", \"lang\", \"sourceCounts\", \"centerSlide\", \"dynamicSelected\"]))\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 @Prop() centerSlide!: boolean;\n @Prop() dynamicSelected!: boolean;\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=3fca5ac8&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=3fca5ac8&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 centerSlide = false;\n centerPanel = false;\n dynamicSelected = 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 this.dynamicSelected = true;\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 toggleCenterSlide(): void {\n if (this.determineEditorType(this.currentSlide.panel[this.panelIndex]) === 'dynamic') {\n if (this.centerSlide) {\n this.currentSlide.panel[0].customStyles = 'text-align: right;';\n } else {\n this.currentSlide.panel[0].customStyles = (this.currentSlide.panel[0].customStyles || '').replace(\n 'text-align: right;',\n ''\n );\n }\n } else if (this.rightOnly) {\n if (this.centerSlide) {\n this.currentSlide.panel[0].customStyles = 'text-align: center;';\n } else {\n this.currentSlide.panel[0].customStyles = (this.currentSlide.panel[0].customStyles || '').replace(\n 'text-align: right;',\n ''\n );\n this.currentSlide.panel[0].customStyles = (this.currentSlide.panel[0].customStyles || '').replace(\n 'text-align: left;',\n ''\n );\n this.currentSlide.panel[0].customStyles = (this.currentSlide.panel[0].customStyles || '').replace(\n 'text-align: center;',\n ''\n );\n }\n } else {\n if (this.centerSlide) {\n this.currentSlide.panel[0].customStyles = 'text-align: right;';\n this.currentSlide.panel[1].customStyles = 'text-align: left;';\n } else {\n this.currentSlide.panel[0].customStyles = (this.currentSlide.panel[0].customStyles || '').replace(\n 'text-align: right;',\n ''\n );\n this.currentSlide.panel[1].customStyles = (this.currentSlide.panel[1].customStyles || '').replace(\n 'text-align: left;',\n ''\n );\n }\n }\n }\n\n toggleCenterPanel(): void {\n if (this.centerPanel) {\n for (const p in this.currentSlide.panel) {\n this.currentSlide.panel[p].customStyles = 'text-align: center;';\n }\n } else {\n for (const p in this.currentSlide.panel) {\n this.currentSlide.panel[p].customStyles = (this.currentSlide.panel[p].customStyles || '').replace(\n 'text-align: center;',\n ''\n );\n }\n }\n }\n}\n","import { render } from \"./slide-editor.vue?vue&type=template&id=d63c3352&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=d63c3352&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-d63c3352\"]])\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-aef69d80\"),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 class: \"editor-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 class: \"editor-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: \"editor-toc-button editor-button 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 class: \"editor-toc-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 class: \"slide-toc-button\",\n onClick: _withModifiers(($event: any) => (_ctx.$vfm.open(`delete-slide-${index}`)), [\"stop\"])\n }, _hoisted_21, 8, _hoisted_19),\n _createElementVNode(\"button\", {\n class: \"slide-toc-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([\"slide-toc-button\", 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([\"slide-toc-button 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=aef69d80&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=aef69d80&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-aef69d80\"]])\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: \"editor-label mb-5\" }\nconst _hoisted_2 = [\"value\"]\nconst _hoisted_3 = /*#__PURE__*/_createElementVNode(\"br\", null, null, -1)\nconst _hoisted_4 = { class: \"editor-label mb-5\" }\nconst _hoisted_5 = [\"value\"]\nconst _hoisted_6 = { class: \"editor-label mb-5\" }\nconst _hoisted_7 = [\"value\"]\nconst _hoisted_8 = /*#__PURE__*/_createElementVNode(\"br\", null, null, -1)\nconst _hoisted_9 = { key: 0 }\nconst _hoisted_10 = { class: \"editor-label\" }\nconst _hoisted_11 = [\"src\"]\nconst _hoisted_12 = {\n key: 1,\n class: \"image-preview\"\n}\nconst _hoisted_13 = { class: \"editor-label mb-5\" }\nconst _hoisted_14 = [\"value\"]\nconst _hoisted_15 = /*#__PURE__*/_createElementVNode(\"br\", null, null, -1)\nconst _hoisted_16 = { class: \"editor-label\" }\nconst _hoisted_17 = [\"value\"]\nconst _hoisted_18 = /*#__PURE__*/_createElementVNode(\"br\", null, null, -1)\nconst _hoisted_19 = /*#__PURE__*/_createElementVNode(\"label\", { class: \"editor-label mb-5\" }, null, -1)\nconst _hoisted_20 = { class: \"inline-block\" }\nconst _hoisted_21 = /*#__PURE__*/_createElementVNode(\"br\", null, null, -1)\nconst _hoisted_22 = { class: \"editor-label\" }\nconst _hoisted_23 = [\"value\"]\nconst _hoisted_24 = /*#__PURE__*/_createElementVNode(\"br\", null, null, -1)\nconst _hoisted_25 = /*#__PURE__*/_createElementVNode(\"label\", { class: \"editor-label mb-5\" }, null, -1)\nconst _hoisted_26 = { class: \"inline-block\" }\nconst _hoisted_27 = /*#__PURE__*/_createElementVNode(\"br\", null, null, -1)\nconst _hoisted_28 = { class: \"editor-label\" }\nconst _hoisted_29 = [\"value\"]\nconst _hoisted_30 = /*#__PURE__*/_createElementVNode(\"br\", null, null, -1)\nconst _hoisted_31 = /*#__PURE__*/_createElementVNode(\"label\", { class: \"editor-label mb-5\" }, null, -1)\nconst _hoisted_32 = { class: \"inline-block\" }\nconst _hoisted_33 = /*#__PURE__*/_createElementVNode(\"br\", null, null, -1)\nconst _hoisted_34 = { class: \"editor-label mr-15\" }\nconst _hoisted_35 = { value: \"vertical\" }\nconst _hoisted_36 = { value: \"horizontal\" }\nconst _hoisted_37 = /*#__PURE__*/_createElementVNode(\"br\", null, null, -1)\nconst _hoisted_38 = /*#__PURE__*/_createElementVNode(\"label\", { class: \"editor-label mb-5\" }, null, -1)\nconst _hoisted_39 = { class: \"inline-block\" }\nconst _hoisted_40 = /*#__PURE__*/_createElementVNode(\"br\", null, null, -1)\nconst _hoisted_41 = { class: \"editor-label mb-5\" }\nconst _hoisted_42 = [\"value\"]\nconst _hoisted_43 = /*#__PURE__*/_createElementVNode(\"br\", null, null, -1)\nconst _hoisted_44 = /*#__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: \"editor-input 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: \"editor-input 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: \"editor-input w-1/4\"\n }, null, 40, _hoisted_7),\n _hoisted_8,\n (!!_ctx.metadata.logoPreview)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_9, [\n _createElementVNode(\"label\", _hoisted_10, _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_11))\n : _createCommentVNode(\"\", true),\n (_ctx.metadata.logoPreview == 'error')\n ? (_openBlock(), _createElementBlock(\"p\", _hoisted_12, _toDisplayString(_ctx.$t('editor.image.loadingError')), 1))\n : _createCommentVNode(\"\", true)\n ]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"label\", _hoisted_13, _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: \"editor-input w-1/4\"\n }, null, 40, _hoisted_14),\n _createElementVNode(\"button\", {\n onClick: _cache[4] || (_cache[4] = _withModifiers(\n//@ts-ignore\n(...args) => (_ctx.openFileSelector && _ctx.openFileSelector(...args)), [\"stop\"])),\n class: \"editor-button 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: \"editor-button 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: \"editor-input w-1/4\",\n style: {\"display\":\"none\"}\n }, null, 32),\n _hoisted_15,\n _createElementVNode(\"label\", _hoisted_16, _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: \"editor-input w-2/3\"\n }, null, 40, _hoisted_17),\n _hoisted_18,\n _hoisted_19,\n _createElementVNode(\"p\", _hoisted_20, [\n _createElementVNode(\"i\", null, _toDisplayString(_ctx.$t('editor.logoAltText.desc')), 1)\n ]),\n _hoisted_21,\n _createElementVNode(\"label\", _hoisted_22, _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: \"editor-input w-2/3\"\n }, null, 40, _hoisted_23),\n _hoisted_24,\n _hoisted_25,\n _createElementVNode(\"p\", _hoisted_26, [\n _createElementVNode(\"i\", null, _toDisplayString(_ctx.$t('editor.contextLink.info')), 1)\n ]),\n _hoisted_27,\n _createElementVNode(\"label\", _hoisted_28, _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: \"editor-input w-2/3\"\n }, null, 40, _hoisted_29),\n _hoisted_30,\n _hoisted_31,\n _createElementVNode(\"p\", _hoisted_32, [\n _createElementVNode(\"i\", null, _toDisplayString(_ctx.$t('editor.contextLabel.info')), 1)\n ]),\n _hoisted_33,\n _createElementVNode(\"label\", _hoisted_34, _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_35, _toDisplayString(_ctx.$t('editor.tocOrientation.vertical')), 1),\n _createElementVNode(\"option\", _hoisted_36, _toDisplayString(_ctx.$t('editor.tocOrientation.horizontal')), 1)\n ], 544), [\n [_vModelSelect, _ctx.metadata.tocOrientation]\n ]),\n _hoisted_37,\n _hoisted_38,\n _createElementVNode(\"p\", _hoisted_39, [\n _createElementVNode(\"i\", null, _toDisplayString(_ctx.$t('editor.tocOrientation.info')), 1)\n ]),\n _hoisted_40,\n _createElementVNode(\"label\", _hoisted_41, _toDisplayString(_ctx.$t('editor.dateModified')) + \":\", 1),\n _createElementVNode(\"input\", {\n class: \"editor-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_42),\n _hoisted_43,\n _hoisted_44\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=f45bef82&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 } from \"vue\"\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__*/_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__*/_createElementVNode(\"span\", { class: \"ml-auto\" }, null, -1)\nconst _hoisted_8 = /*#__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__*/_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__*/_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\" }\nconst _hoisted_21 = { class: \"footer text-right pr-5 editor-button\" }\nconst _hoisted_22 = [\"href\"]\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: \"editor-button 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 }))),\n _createElementVNode(\"button\", {\n onClick: _cache[1] || (_cache[1] = \n//@ts-ignore\n(...args) => (_ctx.preview && _ctx.preview(...args))),\n class: \"editor-button 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: \"editor-button 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 class: \"editor-toc-button editor-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 _createElementVNode(\"div\", _hoisted_21, [\n _createElementVNode(\"a\", {\n href: `mailto:applicationsdecartographieweb-webmappingapplications@ec.gc.ca?subject=${_ctx.$t(\n 'editor.feedback.subject'\n )}`\n }, _toDisplayString(_ctx.$t('editor.feedback')), 9, _hoisted_22)\n ]),\n _renderSlot(_ctx.$slots, \"metadataModal\"),\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.$refs.slide as SlideEditorV).saveChanges();\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.$refs.slide as SlideEditorV).saveChanges();\n }\n\n // emit save changes event\n this.$emit('save-changes');\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=2b99fd5c&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=2b99fd5c&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 } 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';\nimport { useUserStore } from '../../stores/userStore';\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\ninterface History {\n id: number;\n storylineUUID: string;\n created: string;\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 showDropdown = false;\n\n storylineHistory: History[] = [];\n selectedHistory: History | null = null;\n\n // Saving properties.\n saving = false;\n unsavedChanges = false;\n\n apiUrl = process.env.VUE_APP_CURR_ENV !== '#{CURR_ENV}#' ? process.env.VUE_APP_API_URL : 'http://localhost:6040';\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(this.apiUrl + `/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 fetch(this.apiUrl + `/retrieveMessages`)\n .then((res: any) => {\n if (res.ok) return res.json();\n })\n .then((data) => {\n axios\n .post(process.env.VUE_APP_NET_API_URL + '/api/log/create', {\n messages: data.messages\n })\n .catch((error: any) => console.log(error.response || error));\n })\n .catch((error: any) => console.log(error.response || error));\n })\n .catch(() => {\n Message.error(`Failed to load product, no response from server`);\n this.loadStatus = 'loaded';\n });\n }\n\n fetchHistory(): void {\n if (this.uuid === undefined) Message.error(`You must first enter a UUID`);\n\n if (process.env.VUE_APP_CURR_ENV !== '#{CURR_ENV}#') {\n axios\n .get(process.env.VUE_APP_NET_API_URL + `/api/version/fetch/${this.uuid}`)\n .then((response: any) => {\n this.storylineHistory = response.data;\n })\n .catch((error: any) => console.log(error.response || error));\n }\n }\n\n selectHistory(selected: any): void {\n this.selectedHistory = selected;\n }\n\n formatDate(created: string): string {\n const date = new Date(created);\n const estDate = new Date(date.toLocaleString('en-US', { timeZone: 'America/Toronto' }));\n const options: Intl.DateTimeFormatOptions = {\n year: 'numeric',\n month: '2-digit',\n day: '2-digit',\n hour: '2-digit',\n minute: '2-digit',\n hour12: true,\n timeZone: 'America/Toronto'\n };\n\n return new Intl.DateTimeFormat('en-US', options).format(estDate);\n }\n\n loadHistory(): void {\n if (this.selectedHistory && process.env.VUE_APP_CURR_ENV !== '#{CURR_ENV}#') {\n this.loadStatus = 'loading';\n\n axios\n .get(process.env.VUE_APP_NET_API_URL + `/api/version/load/${this.selectedHistory.id}`, {\n responseType: 'blob'\n })\n .then((response: any) => {\n const blob = response.data;\n\n JSZip.loadAsync(blob)\n .then((zip: any) => {\n this.configFileStructureHelper(zip);\n })\n .catch((jsZipError: any) => {\n console.error('Error processing ZIP file:', jsZipError);\n Message.error('Failed to process ZIP file');\n });\n })\n .catch((error: any) => {\n if (error.response && error.response.status === 404) {\n Message.error(`The requested version does not exist.`);\n this.error = true;\n this.loadStatus = 'waiting';\n this.clearConfig();\n } else {\n console.error('Failed to load version:', error);\n Message.error('Failed to load product, no response from server');\n }\n this.loadStatus = 'loaded';\n });\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: rampConfigFolder\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(this.apiUrl + '/upload', formData, { headers })\n .then((res: AxiosResponse) => {\n const responseData = res.data;\n responseData.files; // binary representation of the file\n responseData.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 if (process.env.VUE_APP_CURR_ENV !== '#{CURR_ENV}#') {\n if (responseData.new) {\n axios\n .post(process.env.VUE_APP_NET_API_URL + '/api/user/register', {\n uuid: this.uuid\n })\n .then((response: any) => {\n const userStore = useUserStore();\n userStore.fetchUserProfile();\n console.log(response);\n\n formData.append('uuid', this.uuid);\n axios\n .post(process.env.VUE_APP_NET_API_URL + '/api/version/commit', formData)\n .then((response: any) => {\n console.log('Version saved successfully.');\n })\n .catch((error: any) => console.log(error.response || error));\n })\n .catch((error: any) => console.log(error.response || error));\n } else {\n formData.append('uuid', this.uuid);\n axios\n .post(process.env.VUE_APP_NET_API_URL + '/api/version/commit', formData)\n .then((response: any) => {\n console.log('Version saved successfully.');\n })\n .catch((error: any) => console.log(error.response || error));\n }\n\n fetch(this.apiUrl + `/retrieveMessages`)\n .then((res: any) => {\n if (res.ok) return res.json();\n })\n .then((data) => {\n axios\n .post(process.env.VUE_APP_NET_API_URL + '/api/log/create', {\n messages: data.messages\n })\n .catch((error: any) => console.log(error.response || error));\n })\n .catch((error: any) => console.log(error.response || error));\n }\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 const userStore = useUserStore();\n userStore.fetchUserProfile();\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(this.apiUrl + `/retrieve/${this.uuid}`).then((res: Response) => {\n if (res.status !== 404) {\n this.warning = true;\n }\n\n fetch(this.apiUrl + `/retrieveMessages`)\n .then((res: any) => {\n if (res.ok) return res.json();\n })\n .then((data) => {\n axios\n .post(process.env.VUE_APP_NET_API_URL + '/api/log/create', {\n messages: data.messages\n })\n .catch((error: any) => console.log(error.response || error));\n })\n .catch((error: any) => console.log(error.response || error));\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 get getStorylines() {\n const userStore = useUserStore();\n const userStorylines = userStore.userProfile.storylines?.map((s) => ({ ...s, isUserStoryline: true })) || [];\n const allStorylines =\n userStore.userProfile.allStorylines?.filter((s) => !userStorylines.some((u) => u.uuid === s.uuid)) || [];\n\n let combined = [...userStorylines, ...allStorylines];\n\n if (this.uuid)\n combined = combined.filter((storyline) => storyline.uuid.toLowerCase().includes(this.uuid.toLowerCase()));\n\n return combined;\n }\n\n selectUuid(uuid: string): void {\n this.uuid = uuid;\n this.showDropdown = false;\n }\n}\n","import { render } from \"./metadata-editor.vue?vue&type=template&id=7a24c796&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=7a24c796&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 apiUrl = process.env.VUE_APP_CURR_ENV !== '#{CURR_ENV}#' ? process.env.VUE_APP_API_URL : 'http://localhost:6040';\n configs: {\n [key: string]: StoryRampConfig | undefined;\n } = { en: undefined, fr: undefined };\n\n created(): void {\n const uid = this.$route.params.uid as string;\n const lang = this.$route.params.lang as string;\n const JSZip = require('jszip');\n const axios = require('axios').default;\n\n if (uid) {\n this.savedProduct = true;\n // attempt to fetch saved config file from the server (TODO: setup as express route?)\n fetch(this.apiUrl + `/retrieve/${uid}`).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 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 const assetsFolder = configZip.folder('assets');\n const chartsFolder = configZip.folder('charts');\n const rampConfigFolder = configZip.folder('ramp-config');\n\n this.configFileStructure = {\n uuid: uid,\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: rampConfigFolder\n };\n\n const filePath = `${uid}_${lang}.json`;\n configZip\n .file(filePath)\n .async('string')\n .then((configContent: string) => {\n const config = JSON.parse(configContent) as StoryRampConfig;\n this.config = config;\n this.loadStatus = 'loaded';\n document.title = this.config.title + ' - Canada.ca';\n });\n });\n });\n }\n\n fetch(this.apiUrl + `/retrieveMessages`).then((res: any) => {\n axios\n .post(process.env.VUE_APP_NET_API_URL + '/api/log/create', {\n messages: res.data.messages\n })\n .catch((error: any) => console.log(error.response || error));\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=44145672&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=44145672&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: (to: RouteLocationNormalized) => {\n return '/' + to.params.lang + '/editor-metadata/' + to.params.uid;\n }\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';\nimport { createPinia } from 'pinia';\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);\nconst pinia = createPinia();\n\napp.use(pinia)\n .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);\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!./metadata-editor.vue?vue&type=style&index=0&id=7a24c796&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!./image-preview.vue?vue&type=style&index=0&id=1c58f06c&lang=scss&scoped=true\""],"sourceRoot":""} \ No newline at end of file