@vue-skuilder/common-ui 0.2.13 → 0.2.14

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,4 +1,4 @@
1
- (function(e,t){typeof exports==`object`&&typeof module<`u`?t(exports,require(`vue`),require(`moment`),require(`@vue-skuilder/common`),require(`@vue-skuilder/db`),require(`pinia`),require(`vue-router`),require(`@vojtechlanka/vue-tags-input`)):typeof define==`function`&&define.amd?define([`exports`,`vue`,`moment`,`@vue-skuilder/common`,`@vue-skuilder/db`,`pinia`,`vue-router`,`@vojtechlanka/vue-tags-input`],t):(e=typeof globalThis<`u`?globalThis:e||self,t(e.VueSkuilderCommonUI={},e.Vue,e.moment,e.VueSkuilderCommon,e.VueSkuilderDb,e.Pinia,e.VueRouter,e.VueTagsInput))})(this,function(e,t,n,r,i,a,o,s){var c=document.createElement(`style`);c.textContent=`.tooltip[data-v-ca46239a]{color:#fff;background-color:#000c;border-radius:3px;padding:5px;font-size:12px}.sk-mousetrap-tooltip-wrapper[data-v-5d6fb09c]{display:inline-block;position:relative}.sk-mousetrap-tooltip[data-v-5d6fb09c]{color:#fff;white-space:nowrap;pointer-events:none;z-index:9999;background-color:#000c;border-radius:4px;padding:2px 6px;font-size:12px;position:absolute}.sk-mt-tooltip-top[data-v-5d6fb09c]{margin-bottom:5px;bottom:100%;left:50%;transform:translate(-50%)}.sk-mt-tooltip-bottom[data-v-5d6fb09c]{margin-top:5px;top:100%;left:50%;transform:translate(-50%)}.sk-mt-tooltip-left[data-v-5d6fb09c]{margin-right:5px;top:50%;right:100%;transform:translateY(-50%)}.sk-mt-tooltip-right[data-v-5d6fb09c]{margin-left:5px;top:50%;left:100%;transform:translateY(-50%)}.sk-mousetrap-highlight-glow[data-v-5d6fb09c]{transition:box-shadow .25s;box-shadow:0 0 8px 2px #1976d299}.sk-mousetrap-highlight-scale[data-v-5d6fb09c]{transition:transform .25s;transform:scale(1.03)}.sk-mousetrap-highlight-border[data-v-5d6fb09c]{outline-offset:2px;border-radius:4px;outline:2px solid #1976d2cc;transition:outline .25s,outline-offset .25s}.fade-enter-active[data-v-5d6fb09c],.fade-leave-active[data-v-5d6fb09c]{transition:opacity .25s}.fade-enter-from[data-v-5d6fb09c],.fade-leave-to[data-v-5d6fb09c]{opacity:0}.pageSelect[data-v-a75fea7e]{max-width:60px}.selected-card[data-v-285e13bd]{background-color:#e0f2f7;border-left:4px solid #2196f3}.cursor-pointer[data-v-285e13bd]{cursor:pointer}.error-message[data-v-a4bdfdfb]{color:#f44336;background-color:#ffebee;border-radius:4px;margin:8px 0;padding:16px}.negative-interval[data-v-a4bdfdfb]{color:#f44336;background-color:#ffebee;border-radius:3px;padding:2px 4px;font-weight:700}.invalid-timestamp[data-v-a4bdfdfb]{color:#f44336;font-weight:700}.card-history-viewer[data-v-a4bdfdfb]{margin:16px 0}.timer-container[data-v-5960940a]{cursor:pointer;display:inline-flex}.cardView[data-v-2d892b82]{border-radius:8px;padding:15px}.session-debug[data-v-641ac170]{max-height:400px;font-family:Courier New,monospace;font-size:.75rem;overflow-y:auto}.debug-section[data-v-641ac170]{background-color:#ffffff0d;border-radius:4px;min-height:120px;padding:8px}.debug-header[data-v-641ac170]{border-bottom:1px solid #ffffff1a;align-items:center;margin-bottom:4px;padding-bottom:4px;display:flex}.debug-stats[data-v-641ac170]{gap:8px;margin-bottom:8px;display:flex}.debug-items[data-v-641ac170]{margin-top:4px;padding-left:8px}.debug-item[data-v-641ac170]{border-left:2px solid #fff3;margin-bottom:2px;padding:2px 0 2px 6px}.footer-controls[data-v-0279250f]{background-color:var(--v-background);z-index:100;position:fixed;bottom:0}.footer-right[data-v-0279250f]{background-color:var(--v-background);z-index:100;position:fixed;bottom:0;right:0}.correct[data-v-0279250f]{animation:1.25s ease-out varFade-0279250f}.incorrect[data-v-0279250f]{animation:1.25s ease-out purpleFade-0279250f}a[data-v-0279250f]{text-decoration:underline}.StudySession[data-v-0279250f]{flex-direction:column;flex:1;min-height:0;display:flex}.card-transition-container[data-v-0279250f]{flex-direction:column;flex:1;justify-content:center;min-height:0;display:flex;position:relative;overflow:hidden}@keyframes varFade-0279250f{0%{box-shadow:rgba(var(--r), var(--g), 0, .25) 0px 7px 8px -4px, rgba(var(--r), var(--g), 0, .25) 0px 12px 17px 2px, rgba(var(--r), var(--g), 0, .25) 0px 5px 22px 4px}to{box-shadow:0 0 #00960000}}@keyframes greenFade-0279250f{0%{box-shadow:0 7px 8px -4px #00960040,0 12px 17px 2px #00960040,0 5px 22px 4px #00960040}to{box-shadow:0 0 #00960000}}@keyframes purpleFade-0279250f{0%{box-shadow:0 7px 8px -4px #73004b40,0 12px 17px 2px #73004b40,0 5px 22px 4px #73004b40}to{box-shadow:0 0 #73004b00}}.component-fade-enter-active,.component-fade-leave-active{transition:opacity .2s}.component-fade-enter-from,.component-fade-leave-to{opacity:0}.card-slide-leave-active{will-change:transform, opacity;pointer-events:none;height:-moz-fit-content;height:fit-content;margin:auto;animation:.4s cubic-bezier(.4,0,.7,.2) both cardBackOutLeft;top:0;bottom:0;left:0;right:0;position:absolute!important}.card-slide-leave-active *{transition:none!important;animation-play-state:paused!important}.card-slide-enter-active{will-change:transform, opacity;animation:.25s ease-out .1s both cardSlideInRight}@keyframes cardBackOutLeft{0%{opacity:1;transform:translate(0)scale(1)}40%{opacity:.8;transform:translate(0)scale(.88)}to{opacity:0;transform:translate(-100%)scale(.88)}}@keyframes cardSlideInRight{0%{opacity:0;transform:translate(60%)}to{opacity:1;transform:translate(0)}}.card-scale-leave-active{transition:transform .15s ease-in,opacity .15s ease-in}.card-scale-enter-active{transition:transform .2s cubic-bezier(.34,1.4,.64,1),opacity .15s ease-out}.card-scale-leave-to{opacity:0;transform:scale(.92)}.card-scale-enter-from{opacity:0;transform:scale(1.03)}pre code.hljs{padding:1em;display:block;overflow-x:auto}code.hljs{padding:3px 5px}.hljs{color:#24292e;background:#fff}.hljs-doctag,.hljs-keyword,.hljs-meta .hljs-keyword,.hljs-template-tag,.hljs-template-variable,.hljs-type,.hljs-variable.language_{color:#d73a49}.hljs-title,.hljs-title.class_,.hljs-title.class_.inherited__,.hljs-title.function_{color:#6f42c1}.hljs-attr,.hljs-attribute,.hljs-literal,.hljs-meta,.hljs-number,.hljs-operator,.hljs-variable,.hljs-selector-attr,.hljs-selector-class,.hljs-selector-id{color:#005cc5}.hljs-regexp,.hljs-string,.hljs-meta .hljs-string{color:#032f62}.hljs-built_in,.hljs-symbol{color:#e36209}.hljs-comment,.hljs-code,.hljs-formula{color:#6a737d}.hljs-name,.hljs-quote,.hljs-selector-tag,.hljs-selector-pseudo{color:#22863a}.hljs-subst{color:#24292e}.hljs-section{color:#005cc5;font-weight:700}.hljs-bullet{color:#735c0f}.hljs-emphasis{color:#24292e;font-style:italic}.hljs-strong{color:#24292e;font-weight:700}.hljs-addition{color:#22863a;background-color:#f0fff4}.hljs-deletion{color:#b31d28;background-color:#ffeef0}.code-block-wrapper{background-color:#f6f8fa;border-radius:4px;margin:1rem 0;position:relative;overflow:auto}.language-indicator{color:#666;z-index:1;text-transform:lowercase;background-color:#ffffffb3;border-radius:4px;padding:2px 8px;font-family:monospace;font-size:.75rem;position:absolute;top:8px;right:10px}.user-input-container[data-v-aa14961f]{vertical-align:baseline;min-width:6em;display:inline-block}.user-input-string[data-v-aa14961f]{color:currentColor;font-family:inherit;font-size:inherit;line-height:inherit;text-align:center;background:0 0;border:none;border-bottom:1px solid;outline:none;width:100%;margin:0;padding:0;display:inline-block}.user-input-string[data-v-aa14961f]:focus{border-bottom:2px solid}#input[data-v-486ac035]{text-align:center;min-width:4em;display:inline-block}.underline[data-v-486ac035]{text-decoration:underline;-webkit-text-decoration-style:solid 14px;text-decoration-style:solid 14px}blockquote[data-v-de3eebd6]{border-left:3px solid teal;padding-left:8px}.codespan[data-v-de3eebd6]{margin-left:1px;margin-right:1px;padding-left:3px;padding-right:3px}p[data-v-de3eebd6]{margin-top:15px;margin-bottom:15px}.playing[data-v-e1a0f62c]{z-index:1;animation:.85s ease-in-out infinite alternate pulse-e1a0f62c}@keyframes pulse-e1a0f62c{0%{transform:scale(1)}to{transform:scale(1.15)}}.choice[data-v-96de7172]{text-align:center;border-radius:4px;min-width:75px;margin:10px;padding:5px 15px;transition:all .2s ease-in-out;display:inline-block}.selected[data-v-96de7172]{z-index:1;transform:translateY(-10px)scale(1.15)}.not-selected[data-v-96de7172]{z-index:0}.userInput[data-v-a56dcd1c]{text-align:center;border:none;border-bottom:1px #000}.cardView[data-v-93f758b5]{border-radius:8px;padding:15px}.component-fade-enter-active[data-v-93f758b5],.component-fade-leave-active[data-v-93f758b5]{transition:opacity .3s}.component-fade-enter[data-v-93f758b5],.component-fade-leave-to[data-v-93f758b5]{opacity:0}.component-fade-enter-active[data-v-9a38a213],.component-fade-leave-active[data-v-9a38a213]{transition:opacity .5s}.component-fade-enter[data-v-9a38a213],.component-fade-leave-to[data-v-9a38a213]{opacity:0}.login[data-v-563b0048]{max-width:650px}.component-fade-enter-active[data-v-5a55bdf0],.component-fade-leave-active[data-v-5a55bdf0]{transition:opacity .5s}.component-fade-enter[data-v-5a55bdf0],.component-fade-leave-to[data-v-5a55bdf0]{opacity:0}.vue-tags-input[data-v-f7373dc0]{max-width:100%}.autocomplete-item[data-v-f7373dc0]{align-items:center;padding:5px;display:flex}.autocomplete-item.is-active[data-v-f7373dc0]{background-color:#e8e8e8}.autocomplete-item.is-active>.tag-name[data-v-f7373dc0]{color:#fff;background-color:#5c6bc0}.tag-name[data-v-f7373dc0]{color:#333;background-color:#e0e0e0;border-radius:3px;margin-right:5px;padding:2px 6px;font-weight:700}.tag-snippet[data-v-f7373dc0]{color:#666;font-size:.9em}.autocomplete-item.is-active .tag-snippet[data-v-f7373dc0]{color:#333}.component-fade-enter-active[data-v-5ecc9d21],.component-fade-leave-active[data-v-5ecc9d21]{transition:opacity .5s}.component-fade-enter[data-v-5ecc9d21],.component-fade-leave-to[data-v-5ecc9d21]{opacity:0}.component-scale-enter-active[data-v-5ecc9d21],.component-scale-leave-active[data-v-5ecc9d21]{max-height:auto;transform-origin:top;transition:transform .3s,max-height .3s;transform:scale(1)}.component-scale-enter[data-v-5ecc9d21],.component-fade-leave-to[data-v-5ecc9d21]{max-height:0;overflow:hidden;transform:scaleY(0)}.component-fade-enter-active[data-v-38e9efe1],.component-fade-leave-active[data-v-38e9efe1]{transition:opacity .5s}.component-fade-enter[data-v-38e9efe1],.component-fade-leave-to[data-v-38e9efe1]{opacity:0}.component-scale-enter-active[data-v-38e9efe1],.component-scale-leave-active[data-v-38e9efe1]{max-height:auto;transform-origin:top;transition:transform .3s,max-height .3s;transform:scale(1)}.component-scale-enter[data-v-38e9efe1],.component-fade-leave-to[data-v-38e9efe1]{max-height:0;overflow:hidden;transform:scaleY(0)}.course-tag-filter-widget[data-v-e1ba963b]{width:100%}.filter-summary[data-v-e1ba963b]{color:rgba(var(--v-theme-on-surface), .7)}
1
+ (function(e,t){typeof exports==`object`&&typeof module<`u`?t(exports,require(`vue`),require(`moment`),require(`@vue-skuilder/common`),require(`@vue-skuilder/db`),require(`pinia`),require(`vue-router`),require(`@vojtechlanka/vue-tags-input`)):typeof define==`function`&&define.amd?define([`exports`,`vue`,`moment`,`@vue-skuilder/common`,`@vue-skuilder/db`,`pinia`,`vue-router`,`@vojtechlanka/vue-tags-input`],t):(e=typeof globalThis<`u`?globalThis:e||self,t(e.VueSkuilderCommonUI={},e.Vue,e.moment,e.VueSkuilderCommon,e.VueSkuilderDb,e.Pinia,e.VueRouter,e.VueTagsInput))})(this,function(e,t,n,r,i,a,o,s){var c=document.createElement(`style`);c.textContent=`.tooltip[data-v-ca46239a]{color:#fff;background-color:#000c;border-radius:3px;padding:5px;font-size:12px}.sk-mousetrap-tooltip-wrapper[data-v-5d6fb09c]{display:inline-block;position:relative}.sk-mousetrap-tooltip[data-v-5d6fb09c]{color:#fff;white-space:nowrap;pointer-events:none;z-index:9999;background-color:#000c;border-radius:4px;padding:2px 6px;font-size:12px;position:absolute}.sk-mt-tooltip-top[data-v-5d6fb09c]{margin-bottom:5px;bottom:100%;left:50%;transform:translate(-50%)}.sk-mt-tooltip-bottom[data-v-5d6fb09c]{margin-top:5px;top:100%;left:50%;transform:translate(-50%)}.sk-mt-tooltip-left[data-v-5d6fb09c]{margin-right:5px;top:50%;right:100%;transform:translateY(-50%)}.sk-mt-tooltip-right[data-v-5d6fb09c]{margin-left:5px;top:50%;left:100%;transform:translateY(-50%)}.sk-mousetrap-highlight-glow[data-v-5d6fb09c]{transition:box-shadow .25s;box-shadow:0 0 8px 2px #1976d299}.sk-mousetrap-highlight-scale[data-v-5d6fb09c]{transition:transform .25s;transform:scale(1.03)}.sk-mousetrap-highlight-border[data-v-5d6fb09c]{outline-offset:2px;border-radius:4px;outline:2px solid #1976d2cc;transition:outline .25s,outline-offset .25s}.fade-enter-active[data-v-5d6fb09c],.fade-leave-active[data-v-5d6fb09c]{transition:opacity .25s}.fade-enter-from[data-v-5d6fb09c],.fade-leave-to[data-v-5d6fb09c]{opacity:0}.pageSelect[data-v-a75fea7e]{max-width:60px}.selected-card[data-v-285e13bd]{background-color:#e0f2f7;border-left:4px solid #2196f3}.cursor-pointer[data-v-285e13bd]{cursor:pointer}.error-message[data-v-a4bdfdfb]{color:#f44336;background-color:#ffebee;border-radius:4px;margin:8px 0;padding:16px}.negative-interval[data-v-a4bdfdfb]{color:#f44336;background-color:#ffebee;border-radius:3px;padding:2px 4px;font-weight:700}.invalid-timestamp[data-v-a4bdfdfb]{color:#f44336;font-weight:700}.card-history-viewer[data-v-a4bdfdfb]{margin:16px 0}.timer-container[data-v-5960940a]{cursor:pointer;display:inline-flex}.cardView[data-v-2d892b82]{border-radius:8px;padding:15px}.session-debug[data-v-641ac170]{max-height:400px;font-family:Courier New,monospace;font-size:.75rem;overflow-y:auto}.debug-section[data-v-641ac170]{background-color:#ffffff0d;border-radius:4px;min-height:120px;padding:8px}.debug-header[data-v-641ac170]{border-bottom:1px solid #ffffff1a;align-items:center;margin-bottom:4px;padding-bottom:4px;display:flex}.debug-stats[data-v-641ac170]{gap:8px;margin-bottom:8px;display:flex}.debug-items[data-v-641ac170]{margin-top:4px;padding-left:8px}.debug-item[data-v-641ac170]{border-left:2px solid #fff3;margin-bottom:2px;padding:2px 0 2px 6px}.footer-controls[data-v-1f4b2d6a]{background-color:var(--v-background);z-index:100;position:fixed;bottom:0}.footer-right[data-v-1f4b2d6a]{background-color:var(--v-background);z-index:100;position:fixed;bottom:0;right:0}.correct[data-v-1f4b2d6a]{animation:1.25s ease-out varFade-1f4b2d6a}.incorrect[data-v-1f4b2d6a]{animation:1.25s ease-out purpleFade-1f4b2d6a}a[data-v-1f4b2d6a]{text-decoration:underline}.StudySession[data-v-1f4b2d6a],.session-finished-area[data-v-1f4b2d6a]{flex-direction:column;flex:1;min-height:0;display:flex}.card-transition-container[data-v-1f4b2d6a]{flex-direction:column;flex:1;justify-content:center;min-height:0;display:flex;position:relative;overflow:hidden}@keyframes varFade-1f4b2d6a{0%{box-shadow:rgba(var(--r), var(--g), 0, .25) 0px 7px 8px -4px, rgba(var(--r), var(--g), 0, .25) 0px 12px 17px 2px, rgba(var(--r), var(--g), 0, .25) 0px 5px 22px 4px}to{box-shadow:0 0 #00960000}}@keyframes greenFade-1f4b2d6a{0%{box-shadow:0 7px 8px -4px #00960040,0 12px 17px 2px #00960040,0 5px 22px 4px #00960040}to{box-shadow:0 0 #00960000}}@keyframes purpleFade-1f4b2d6a{0%{box-shadow:0 7px 8px -4px #73004b40,0 12px 17px 2px #73004b40,0 5px 22px 4px #73004b40}to{box-shadow:0 0 #73004b00}}.component-fade-enter-active,.component-fade-leave-active{transition:opacity .2s}.component-fade-enter-from,.component-fade-leave-to{opacity:0}.card-slide-leave-active{will-change:transform, opacity;pointer-events:none;height:-moz-fit-content;height:fit-content;margin:auto;animation:.4s cubic-bezier(.4,0,.7,.2) both cardBackOutLeft;top:0;bottom:0;left:0;right:0;position:absolute!important}.card-slide-leave-active *{transition:none!important;animation-play-state:paused!important}.card-slide-enter-active{will-change:transform, opacity;animation:.25s ease-out .1s both cardSlideInRight}@keyframes cardBackOutLeft{0%{opacity:1;transform:translate(0)scale(1)}40%{opacity:.8;transform:translate(0)scale(.88)}to{opacity:0;transform:translate(-100%)scale(.88)}}@keyframes cardSlideInRight{0%{opacity:0;transform:translate(60%)}to{opacity:1;transform:translate(0)}}.card-scale-leave-active{transition:transform .15s ease-in,opacity .15s ease-in}.card-scale-enter-active{transition:transform .2s cubic-bezier(.34,1.4,.64,1),opacity .15s ease-out}.card-scale-leave-to{opacity:0;transform:scale(.92)}.card-scale-enter-from{opacity:0;transform:scale(1.03)}pre code.hljs{padding:1em;display:block;overflow-x:auto}code.hljs{padding:3px 5px}.hljs{color:#24292e;background:#fff}.hljs-doctag,.hljs-keyword,.hljs-meta .hljs-keyword,.hljs-template-tag,.hljs-template-variable,.hljs-type,.hljs-variable.language_{color:#d73a49}.hljs-title,.hljs-title.class_,.hljs-title.class_.inherited__,.hljs-title.function_{color:#6f42c1}.hljs-attr,.hljs-attribute,.hljs-literal,.hljs-meta,.hljs-number,.hljs-operator,.hljs-variable,.hljs-selector-attr,.hljs-selector-class,.hljs-selector-id{color:#005cc5}.hljs-regexp,.hljs-string,.hljs-meta .hljs-string{color:#032f62}.hljs-built_in,.hljs-symbol{color:#e36209}.hljs-comment,.hljs-code,.hljs-formula{color:#6a737d}.hljs-name,.hljs-quote,.hljs-selector-tag,.hljs-selector-pseudo{color:#22863a}.hljs-subst{color:#24292e}.hljs-section{color:#005cc5;font-weight:700}.hljs-bullet{color:#735c0f}.hljs-emphasis{color:#24292e;font-style:italic}.hljs-strong{color:#24292e;font-weight:700}.hljs-addition{color:#22863a;background-color:#f0fff4}.hljs-deletion{color:#b31d28;background-color:#ffeef0}.code-block-wrapper{background-color:#f6f8fa;border-radius:4px;margin:1rem 0;position:relative;overflow:auto}.language-indicator{color:#666;z-index:1;text-transform:lowercase;background-color:#ffffffb3;border-radius:4px;padding:2px 8px;font-family:monospace;font-size:.75rem;position:absolute;top:8px;right:10px}.user-input-container[data-v-aa14961f]{vertical-align:baseline;min-width:6em;display:inline-block}.user-input-string[data-v-aa14961f]{color:currentColor;font-family:inherit;font-size:inherit;line-height:inherit;text-align:center;background:0 0;border:none;border-bottom:1px solid;outline:none;width:100%;margin:0;padding:0;display:inline-block}.user-input-string[data-v-aa14961f]:focus{border-bottom:2px solid}#input[data-v-486ac035]{text-align:center;min-width:4em;display:inline-block}.underline[data-v-486ac035]{text-decoration:underline;-webkit-text-decoration-style:solid 14px;text-decoration-style:solid 14px}blockquote[data-v-de3eebd6]{border-left:3px solid teal;padding-left:8px}.codespan[data-v-de3eebd6]{margin-left:1px;margin-right:1px;padding-left:3px;padding-right:3px}p[data-v-de3eebd6]{margin-top:15px;margin-bottom:15px}.playing[data-v-e1a0f62c]{z-index:1;animation:.85s ease-in-out infinite alternate pulse-e1a0f62c}@keyframes pulse-e1a0f62c{0%{transform:scale(1)}to{transform:scale(1.15)}}.choice[data-v-96de7172]{text-align:center;border-radius:4px;min-width:75px;margin:10px;padding:5px 15px;transition:all .2s ease-in-out;display:inline-block}.selected[data-v-96de7172]{z-index:1;transform:translateY(-10px)scale(1.15)}.not-selected[data-v-96de7172]{z-index:0}.userInput[data-v-a56dcd1c]{text-align:center;border:none;border-bottom:1px #000}.cardView[data-v-93f758b5]{border-radius:8px;padding:15px}.component-fade-enter-active[data-v-93f758b5],.component-fade-leave-active[data-v-93f758b5]{transition:opacity .3s}.component-fade-enter[data-v-93f758b5],.component-fade-leave-to[data-v-93f758b5]{opacity:0}.component-fade-enter-active[data-v-9a38a213],.component-fade-leave-active[data-v-9a38a213]{transition:opacity .5s}.component-fade-enter[data-v-9a38a213],.component-fade-leave-to[data-v-9a38a213]{opacity:0}.login[data-v-563b0048]{max-width:650px}.component-fade-enter-active[data-v-5a55bdf0],.component-fade-leave-active[data-v-5a55bdf0]{transition:opacity .5s}.component-fade-enter[data-v-5a55bdf0],.component-fade-leave-to[data-v-5a55bdf0]{opacity:0}.vue-tags-input[data-v-f7373dc0]{max-width:100%}.autocomplete-item[data-v-f7373dc0]{align-items:center;padding:5px;display:flex}.autocomplete-item.is-active[data-v-f7373dc0]{background-color:#e8e8e8}.autocomplete-item.is-active>.tag-name[data-v-f7373dc0]{color:#fff;background-color:#5c6bc0}.tag-name[data-v-f7373dc0]{color:#333;background-color:#e0e0e0;border-radius:3px;margin-right:5px;padding:2px 6px;font-weight:700}.tag-snippet[data-v-f7373dc0]{color:#666;font-size:.9em}.autocomplete-item.is-active .tag-snippet[data-v-f7373dc0]{color:#333}.component-fade-enter-active[data-v-5ecc9d21],.component-fade-leave-active[data-v-5ecc9d21]{transition:opacity .5s}.component-fade-enter[data-v-5ecc9d21],.component-fade-leave-to[data-v-5ecc9d21]{opacity:0}.component-scale-enter-active[data-v-5ecc9d21],.component-scale-leave-active[data-v-5ecc9d21]{max-height:auto;transform-origin:top;transition:transform .3s,max-height .3s;transform:scale(1)}.component-scale-enter[data-v-5ecc9d21],.component-fade-leave-to[data-v-5ecc9d21]{max-height:0;overflow:hidden;transform:scaleY(0)}.component-fade-enter-active[data-v-38e9efe1],.component-fade-leave-active[data-v-38e9efe1]{transition:opacity .5s}.component-fade-enter[data-v-38e9efe1],.component-fade-leave-to[data-v-38e9efe1]{opacity:0}.component-scale-enter-active[data-v-38e9efe1],.component-scale-leave-active[data-v-38e9efe1]{max-height:auto;transform-origin:top;transition:transform .3s,max-height .3s;transform:scale(1)}.component-scale-enter[data-v-38e9efe1],.component-fade-leave-to[data-v-38e9efe1]{max-height:0;overflow:hidden;transform:scaleY(0)}.course-tag-filter-widget[data-v-e1ba963b]{width:100%}.filter-summary[data-v-e1ba963b]{color:rgba(var(--v-theme-on-surface), .7)}
2
2
  /*$vite$:1*/`,document.head.appendChild(c),Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var l=Object.create,u=Object.defineProperty,__name=(e,t)=>u(e,`name`,{value:t,configurable:!0}),d=Object.getOwnPropertyDescriptor,f=Object.getOwnPropertyNames,p=Object.getPrototypeOf,m=Object.prototype.hasOwnProperty,__esmMin=(e,t)=>()=>(e&&(t=e(e=0)),t),__commonJSMin=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),__exportAll=(e,t)=>{let n={};for(var r in e)u(n,r,{get:e[r],enumerable:!0});return t||u(n,Symbol.toStringTag,{value:`Module`}),n},__copyProps=(e,t,n,r)=>{if(t&&typeof t==`object`||typeof t==`function`)for(var i=f(t),a=0,o=i.length,s;a<o;a++)s=i[a],!m.call(e,s)&&s!==n&&u(e,s,{get:(e=>t[e]).bind(null,s),enumerable:!(r=d(t,s))||r.enumerable});return e},__toESM=(e,t,n)=>(n=e==null?{}:l(p(e)),__copyProps(t||!e||!e.__esModule?u(n,`default`,{value:e,enumerable:!0}):n,e));n=__toESM(n);var h=(0,t.defineComponent)({name:`HeatMap`,props:{activityRecords:{type:Array,default:()=>[]},activityRecordsGetter:{type:Function,default:null},inactiveColor:{type:Object,default:()=>({h:0,s:0,l:.9})},activeColor:{type:Object,default:()=>({h:155,s:1,l:.5})},cellSize:{type:Number,default:12},cellMargin:{type:Number,default:3},enableSeasonalColors:{type:Boolean,default:!0}},data(){return{isLoading:!1,localActivityRecords:[],heatmapData:{},weeks:[],tooltipData:null,tooltipStyle:{},maxInRange:0}},computed:{width(){return 53*(this.cellSize+this.cellMargin)},height(){return 7*(this.cellSize+this.cellMargin)},effectiveActivityRecords(){let e=Array.isArray(this.localActivityRecords)&&this.localActivityRecords.length>0,t=e?this.localActivityRecords:this.activityRecords||[];return console.log(`Using effectiveActivityRecords, count:`,t.length,`source:`,e?`local`:`prop`),t}},watch:{activityRecords:{handler(){this.processRecords(),this.createWeeksData()},immediate:!0}},async created(){if(this.activityRecordsGetter)try{this.isLoading=!0,console.log(`Fetching activity records using getter...`);let e=await this.activityRecordsGetter();Array.isArray(e)?(this.localActivityRecords=e.filter(e=>{if(!e||!e.timeStamp)return!1;try{let t=(0,n.default)(e.timeStamp);return t.isValid()&&t.year()>2e3&&t.year()<2100}catch{return!1}}),console.log(`Received ${e.length} records, ${this.localActivityRecords.length} valid after filtering`),this.processRecords(),this.createWeeksData()):(console.error(`Activity records getter did not return an array:`,e),this.localActivityRecords=[])}catch(e){console.error(`Error fetching activity records:`,e),this.localActivityRecords=[]}finally{this.isLoading=!1}else console.log(`No activityRecordsGetter provided, using direct activityRecords prop`)},methods:{toDateString(e){let t=(0,n.default)(e);return n.default.months()[t.month()]+` `+t.date()},processRecords(){let e=this.effectiveActivityRecords||[];console.log(`Processing ${e.length} records`);let t={};if(e.length===0){console.log(`No records to process`),this.heatmapData=t;return}let r=new Set,i={},a=0,o=0;for(let s=0;s<e.length;s++){let c=e[s];if(!c||typeof c!=`object`||!c.timeStamp){o++;continue}try{let e;if(typeof c.timeStamp==`string`)e=(0,n.default)(c.timeStamp).format(`YYYY-MM-DD`);else if(typeof c.timeStamp==`number`)e=(0,n.default)(new Date(c.timeStamp)).format(`YYYY-MM-DD`);else if(typeof c.timeStamp==`object`)e=typeof c.timeStamp.format==`function`?c.timeStamp.format(`YYYY-MM-DD`):c.timeStamp instanceof Date?(0,n.default)(c.timeStamp).format(`YYYY-MM-DD`):(0,n.default)(String(c.timeStamp)).format(`YYYY-MM-DD`);else{o++;continue}if((0,n.default)(e,`YYYY-MM-DD`,!0).isValid()){t[e]=(t[e]||0)+1,r.add(e);let n=e.substring(0,7);i[n]=(i[n]||0)+1,a++}else o++}catch{o++}}console.log(`Processed ${a} valid dates, ${o} invalid dates`),console.log(`Found ${r.size} unique dates`),console.log(`Date distribution by month:`,i),this.heatmapData=t},createWeeksData(){this.weeks=[],this.maxInRange=0;let e=(0,n.default)(),t=e.clone().subtract(52,`weeks`),r=t.clone().startOf(`week`);console.log(`Creating weeks data from`,t.format(`YYYY-MM-DD`),`to`,e.format(`YYYY-MM-DD`)),Object.keys(this.heatmapData).length===0&&console.log(`No heatmap data available to display`);let i=Object.keys(this.heatmapData).slice(0,5);for(console.log(`Sample dates in heatmap data:`,i);r.isSameOrBefore(e);){let e=[];for(let t=0;t<7;t++){let t=r.format(`YYYY-MM-DD`),n={date:t,count:this.heatmapData[t]||0};e.push(n),n.count>this.maxInRange&&(this.maxInRange=n.count),r.add(1,`day`)}this.weeks.push(e)}console.log(`Weeks data created, maxInRange:`,this.maxInRange);let a=0,o=0;Object.values(this.heatmapData).forEach(e=>{a++,o+=e}),console.log(`Activity summary: ${o} activities across ${a} days`)},getColor(e){if(this.maxInRange===0)return this.hslToString(this.inactiveColor);let t=e===0?0:Math.min(2*e/this.maxInRange,1),r=this.activeColor;if(this.enableSeasonalColors){let e=(0,n.default)();e.month()===11&&e.date()>=5?r=Math.random()>.5?{h:350,s:.8,l:.5}:{h:135,s:.8,l:.4}:e.month()===9&&e.date()>=25&&(r=Math.random()>.5?{h:0,s:0,l:0}:Math.random()>.5?{h:30,s:1,l:.5}:{h:270,s:1,l:.5})}let i=r.h,a=this.interpolate(this.inactiveColor.s,r.s,t),o=this.interpolate(this.inactiveColor.l,r.l,t);return this.hslToString({h:i,s:a,l:o})},interpolate(e,t,n){return e+(t-e)*n},hslToString(e){return`hsl(${e.h}, ${e.s*100}%, ${e.l*100}%)`},showTooltip(e,t){this.tooltipData=e,this.tooltipStyle={position:`absolute`,left:`${t.pageX+10}px`,top:`${t.pageY+10}px`}},hideTooltip(){this.tooltipData=null}}}),g,_=__esmMin((()=>{g=__name((e,t)=>{let n=e.__vccOpts||e;for(let[e,r]of t)n[e]=r;return n},`default`)}));_();var v=[`width`,`height`],y=[`transform`],b=[`y`,`width`,`height`,`fill`,`onMouseover`];function _sfc_render$29(e,n,r,i,a,o){return(0,t.openBlock)(),(0,t.createElementBlock)(`div`,null,[((0,t.openBlock)(),(0,t.createElementBlock)(`svg`,{width:e.width,height:e.height},[((0,t.openBlock)(!0),(0,t.createElementBlock)(t.Fragment,null,(0,t.renderList)(e.weeks,(r,i)=>((0,t.openBlock)(),(0,t.createElementBlock)(`g`,{key:i,transform:`translate(${i*(e.cellSize+e.cellMargin)}, 0)`},[((0,t.openBlock)(!0),(0,t.createElementBlock)(t.Fragment,null,(0,t.renderList)(r,(r,i)=>((0,t.openBlock)(),(0,t.createElementBlock)(`rect`,{key:r.date,x:0,y:i*(e.cellSize+e.cellMargin),width:e.cellSize,height:e.cellSize,fill:e.getColor(r.count),onMouseover:t=>e.showTooltip(r,t),onMouseout:n[0]||(n[0]=(...t)=>e.hideTooltip&&e.hideTooltip(...t))},null,40,b))),128))],8,y))),128))],8,v)),e.tooltipData?((0,t.openBlock)(),(0,t.createElementBlock)(`div`,{key:0,class:`tooltip`,style:(0,t.normalizeStyle)(e.tooltipStyle)},(0,t.toDisplayString)(e.tooltipData.count)+` review`+(0,t.toDisplayString)(e.tooltipData.count===1?``:`s`)+` on `+(0,t.toDisplayString)(e.toDateString(e.tooltipData.date)),5)):(0,t.createCommentVNode)(``,!0)])}__name(_sfc_render$29,`_sfc_render`);var x=g(h,[[`render`,_sfc_render$29],[`__scopeId`,`data-v-ca46239a`]]),S=__commonJSMin(((e,t)=>{(function(e,n,r){if(!e)return;for(var i={8:`backspace`,9:`tab`,13:`enter`,16:`shift`,17:`ctrl`,18:`alt`,20:`capslock`,27:`esc`,32:`space`,33:`pageup`,34:`pagedown`,35:`end`,36:`home`,37:`left`,38:`up`,39:`right`,40:`down`,45:`ins`,46:`del`,91:`meta`,93:`meta`,224:`meta`},a={106:`*`,107:`+`,109:`-`,110:`.`,111:`/`,186:`;`,187:`=`,188:`,`,189:`-`,190:`.`,191:`/`,192:"`",219:`[`,220:`\\`,221:`]`,222:`'`},o={"~":"`","!":`1`,"@":`2`,"#":`3`,$:`4`,"%":`5`,"^":`6`,"&":`7`,"*":`8`,"(":`9`,")":`0`,_:`-`,"+":`=`,":":`;`,'"':`'`,"<":`,`,">":`.`,"?":`/`,"|":`\\`},s={option:`alt`,command:`meta`,return:`enter`,escape:`esc`,plus:`+`,mod:/Mac|iPod|iPhone|iPad/.test(navigator.platform)?`meta`:`ctrl`},c,l=1;l<20;++l)i[111+l]=`f`+l;for(l=0;l<=9;++l)i[l+96]=l.toString();function _addEvent(e,t,n){if(e.addEventListener){e.addEventListener(t,n,!1);return}e.attachEvent(`on`+t,n)}function _characterFromEvent(e){if(e.type==`keypress`){var t=String.fromCharCode(e.which);return e.shiftKey||(t=t.toLowerCase()),t}return i[e.which]?i[e.which]:a[e.which]?a[e.which]:String.fromCharCode(e.which).toLowerCase()}function _modifiersMatch(e,t){return e.sort().join(`,`)===t.sort().join(`,`)}function _eventModifiers(e){var t=[];return e.shiftKey&&t.push(`shift`),e.altKey&&t.push(`alt`),e.ctrlKey&&t.push(`ctrl`),e.metaKey&&t.push(`meta`),t}function _preventDefault(e){if(e.preventDefault){e.preventDefault();return}e.returnValue=!1}function _stopPropagation(e){if(e.stopPropagation){e.stopPropagation();return}e.cancelBubble=!0}function _isModifier(e){return e==`shift`||e==`ctrl`||e==`alt`||e==`meta`}function _getReverseMap(){if(!c)for(var e in c={},i)e>95&&e<112||i.hasOwnProperty(e)&&(c[i[e]]=e);return c}function _pickBestAction(e,t,n){return n||(n=_getReverseMap()[e]?`keydown`:`keypress`),n==`keypress`&&t.length&&(n=`keydown`),n}function _keysFromString(e){return e===`+`?[`+`]:(e=e.replace(/\+{2}/g,`+plus`),e.split(`+`))}function _getKeyInfo(e,t){var n,r,i,a=[];for(n=_keysFromString(e),i=0;i<n.length;++i)r=n[i],s[r]&&(r=s[r]),t&&t!=`keypress`&&o[r]&&(r=o[r],a.push(`shift`)),_isModifier(r)&&a.push(r);return t=_pickBestAction(r,a,t),{key:r,modifiers:a,action:t}}function _belongsTo(e,t){return e===null||e===n?!1:e===t?!0:_belongsTo(e.parentNode,t)}function Mousetrap(e){var t=this;if(e=e||n,!(t instanceof Mousetrap))return new Mousetrap(e);t.target=e,t._callbacks={},t._directMap={};var r={},i,a=!1,o=!1,s=!1;function _resetSequences(e){e=e||{};var t=!1,n;for(n in r){if(e[n]){t=!0;continue}r[n]=0}t||(s=!1)}function _getMatches(e,n,i,a,o,s){var c,l,u=[],d=i.type;if(!t._callbacks[e])return[];for(d==`keyup`&&_isModifier(e)&&(n=[e]),c=0;c<t._callbacks[e].length;++c)if(l=t._callbacks[e][c],!(!a&&l.seq&&r[l.seq]!=l.level)&&d==l.action&&(d==`keypress`&&!i.metaKey&&!i.ctrlKey||_modifiersMatch(n,l.modifiers))){var f=!a&&l.combo==o,p=a&&l.seq==a&&l.level==s;(f||p)&&t._callbacks[e].splice(c,1),u.push(l)}return u}function _fireCallback(e,n,r,i){t.stopCallback(n,n.target||n.srcElement,r,i)||e(n,r)===!1&&(_preventDefault(n),_stopPropagation(n))}t._handleKey=function(e,t,n){var r=_getMatches(e,t,n),i,a={},c=0,l=!1;for(i=0;i<r.length;++i)r[i].seq&&(c=Math.max(c,r[i].level));for(i=0;i<r.length;++i){if(r[i].seq){if(r[i].level!=c)continue;l=!0,a[r[i].seq]=1,_fireCallback(r[i].callback,n,r[i].combo,r[i].seq);continue}l||_fireCallback(r[i].callback,n,r[i].combo)}var u=n.type==`keypress`&&o;n.type==s&&!_isModifier(e)&&!u&&_resetSequences(a),o=l&&n.type==`keydown`};function _handleKeyEvent(e){typeof e.which!=`number`&&(e.which=e.keyCode);var n=_characterFromEvent(e);if(n){if(e.type==`keyup`&&a===n){a=!1;return}t.handleKey(n,_eventModifiers(e),e)}}function _resetSequenceTimer(){clearTimeout(i),i=setTimeout(_resetSequences,1e3)}function _bindSequence(e,t,n,i){r[e]=0;function _increaseSequence(t){return function(){s=t,++r[e],_resetSequenceTimer()}}function _callbackAndReset(t){_fireCallback(n,t,e),i!==`keyup`&&(a=_characterFromEvent(t)),setTimeout(_resetSequences,10)}for(var o=0;o<t.length;++o){var c=o+1===t.length?_callbackAndReset:_increaseSequence(i||_getKeyInfo(t[o+1]).action);_bindSingle(t[o],c,i,e,o)}}function _bindSingle(e,n,r,i,a){t._directMap[e+`:`+r]=n,e=e.replace(/\s+/g,` `);var o=e.split(` `),s;if(o.length>1){_bindSequence(e,o,n,r);return}s=_getKeyInfo(e,r),t._callbacks[s.key]=t._callbacks[s.key]||[],_getMatches(s.key,s.modifiers,{type:s.action},i,e,a),t._callbacks[s.key][i?`unshift`:`push`]({callback:n,modifiers:s.modifiers,action:s.action,seq:i,level:a,combo:e})}t._bindMultiple=function(e,t,n){for(var r=0;r<e.length;++r)_bindSingle(e[r],t,n)},_addEvent(e,`keypress`,_handleKeyEvent),_addEvent(e,`keydown`,_handleKeyEvent),_addEvent(e,`keyup`,_handleKeyEvent)}Mousetrap.prototype.bind=function(e,t,n){var r=this;return e=e instanceof Array?e:[e],r._bindMultiple.call(r,e,t,n),r},Mousetrap.prototype.unbind=function(e,t){var n=this;return n.bind.call(n,e,function(){},t)},Mousetrap.prototype.trigger=function(e,t){var n=this;return n._directMap[e+`:`+t]&&n._directMap[e+`:`+t]({},e),n},Mousetrap.prototype.reset=function(){var e=this;return e._callbacks={},e._directMap={},e},Mousetrap.prototype.stopCallback=function(e,t){var n=this;if((` `+t.className+` `).indexOf(` mousetrap `)>-1||_belongsTo(t,n.target))return!1;if(`composedPath`in e&&typeof e.composedPath==`function`){var r=e.composedPath()[0];r!==e.target&&(t=r)}return t.tagName==`INPUT`||t.tagName==`SELECT`||t.tagName==`TEXTAREA`||t.isContentEditable},Mousetrap.prototype.handleKey=function(){var e=this;return e._handleKey.apply(e,arguments)},Mousetrap.addKeycodes=function(e){for(var t in e)e.hasOwnProperty(t)&&(i[t]=e[t]);c=null},Mousetrap.init=function(){var e=Mousetrap(n);for(var t in e)t.charAt(0)!==`_`&&(Mousetrap[t]=function(t){return function(){return e[t].apply(e,arguments)}}(t))},Mousetrap.init(),e.Mousetrap=Mousetrap,t!==void 0&&t.exports&&(t.exports=Mousetrap),typeof define==`function`&&define.amd&&define(function(){return Mousetrap})})(typeof window<`u`?window:null,typeof window<`u`?document:null)}));function _typeof(e){"@babel/helpers - typeof";return _typeof=typeof Symbol==`function`&&typeof Symbol.iterator==`symbol`?function(e){return typeof e}:function(e){return e&&typeof Symbol==`function`&&e.constructor===Symbol&&e!==Symbol.prototype?`symbol`:typeof e},_typeof(e)}var C=__esmMin((()=>{}));function toPrimitive(e,t){if(_typeof(e)!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(_typeof(r)!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}var w=__esmMin((()=>{C()}));function toPropertyKey(e){var t=toPrimitive(e,`string`);return _typeof(t)==`symbol`?t:t+``}var T=__esmMin((()=>{C(),w()}));function _defineProperty(e,t,n){return(t=toPropertyKey(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var E=__esmMin((()=>{T()}));function inputElementIsFocused(){let e=document.activeElement;return e instanceof HTMLInputElement&&(e.type===`checkbox`||e.type===`radio`)?!1:e instanceof HTMLElement&&(e.tagName===`INPUT`||e.tagName===`TEXTAREA`||e.tagName===`SELECT`||e.isContentEditable)}var D,O,k=__esmMin((()=>{D=__toESM(S()),E(),O=class SkldrMouseTrap{constructor(){_defineProperty(this,`mouseTrap`,void 0),_defineProperty(this,`hotkeys`,void 0),this.mouseTrap=new D.default,this.mouseTrap.stopCallback=()=>!1,this.hotkeys=[]}static get commands(){return SkldrMouseTrap.instance().hotkeys.map(e=>({command:e.command,hotkey:e.hotkey}))}static addBinding(e){let t=Array.isArray(e)?e:[e],n=SkldrMouseTrap.instance();n.hotkeys=[...n.hotkeys,...t],t.forEach(e=>{n.mouseTrap.bind(e.hotkey,(t,n)=>{if(inputElementIsFocused()){console.log(`Ignoring hotkey ${e.hotkey} while input element is focused`);return}e.callback(t,n)})})}static removeBinding(e){let t=SkldrMouseTrap.instance(),n=[...t.hotkeys];Array.isArray(e)&&!e.every(e=>typeof e==`string`||typeof e==`number`)?e.forEach(e=>{t.hotkeys=t.hotkeys.filter(t=>JSON.stringify(t.hotkey)!==JSON.stringify(e)),t.mouseTrap.unbind(e)}):(t.hotkeys=n.filter(t=>JSON.stringify(t.hotkey)!==JSON.stringify(e)),t.mouseTrap.unbind(e))}static reset(){console.warn(`SkldrMouseTrap.reset() may affect hotkeys registered by other components. Consider using removeBinding() with specific hotkeys for better component isolation.`),SkldrMouseTrap.instance().mouseTrap.reset(),SkldrMouseTrap.instance().hotkeys=[]}static instance(){return SkldrMouseTrap._instance||(SkldrMouseTrap._instance=new SkldrMouseTrap),SkldrMouseTrap._instance}},_defineProperty(O,`_instance`,void 0)}));k();var A=(0,t.defineComponent)({name:`SkMouseTrap`,props:{refreshInterval:{type:Number,default:500}},data(){return{commands:[],display:!1,intervalId:null}},created(){this.intervalId=window.setInterval(this.refreshState,this.refreshInterval)},beforeUnmount(){this.intervalId!==null&&clearInterval(this.intervalId)},methods:{refreshState(){this.commands=O.commands,this.display=this.commands.length>0}}});_();var ee={class:`text-caption ml-2`};function _sfc_render$28(e,n,r,i,a,o){let s=(0,t.resolveComponent)(`v-icon`),c=(0,t.resolveComponent)(`v-btn`),l=(0,t.resolveComponent)(`v-toolbar-title`),u=(0,t.resolveComponent)(`v-toolbar`),d=(0,t.resolveComponent)(`v-spacer`),f=(0,t.resolveComponent)(`v-list-item`),p=(0,t.resolveComponent)(`v-list`),m=(0,t.resolveComponent)(`v-card`),h=(0,t.resolveComponent)(`v-dialog`);return e.display?((0,t.openBlock)(),(0,t.createBlock)(h,{key:0,"max-width":`500px`,transition:`dialog-transition`},{activator:(0,t.withCtx)(({props:e})=>[(0,t.createVNode)(c,(0,t.mergeProps)({icon:``,color:`primary`},e),{default:(0,t.withCtx)(()=>[(0,t.createVNode)(s,null,{default:(0,t.withCtx)(()=>n[0]||(n[0]=[(0,t.createTextVNode)(`mdi-keyboard`)])),_:1})]),_:2},1040)]),default:(0,t.withCtx)(()=>[(0,t.createVNode)(m,null,{default:(0,t.withCtx)(()=>[(0,t.createVNode)(u,{color:`secondary`,dark:``,dense:``},{default:(0,t.withCtx)(()=>[(0,t.createVNode)(l,{class:`text-subtitle-1`},{default:(0,t.withCtx)(()=>n[1]||(n[1]=[(0,t.createTextVNode)(`Shortcut keys:`)])),_:1})]),_:1}),(0,t.createVNode)(p,{dense:``},{default:(0,t.withCtx)(()=>[((0,t.openBlock)(!0),(0,t.createElementBlock)(t.Fragment,null,(0,t.renderList)(e.commands,e=>((0,t.openBlock)(),(0,t.createBlock)(f,{key:Array.isArray(e.hotkey)?e.hotkey.join(`,`):e.hotkey,class:`py-1`},{default:(0,t.withCtx)(()=>[(0,t.createVNode)(c,{variant:`outlined`,color:`primary`,class:`text-white`,size:`small`},{default:(0,t.withCtx)(()=>[(0,t.createTextVNode)((0,t.toDisplayString)(Array.isArray(e.hotkey)?e.hotkey[0]:e.hotkey),1)]),_:2},1024),(0,t.createVNode)(d),(0,t.createElementVNode)(`span`,ee,(0,t.toDisplayString)(e.command),1)]),_:2},1024))),128))]),_:1})]),_:1})]),_:1})):(0,t.createCommentVNode)(``,!0)}__name(_sfc_render$28,`_sfc_render`);var j=g(A,[[`render`,_sfc_render$28]]);k();var te=(0,t.defineComponent)({name:`SkMouseTrapToolTip`,props:{hotkey:{type:[String,Array],required:!0},command:{type:String,required:!0},disabled:{type:Boolean,default:!1},position:{type:String,default:`top`},showTooltip:{type:Boolean,default:!0},highlightEffect:{type:String,default:`glow`}},emits:[`hotkey-triggered`],setup(e,{emit:n}){let r=(0,t.ref)(null),i=(0,t.ref)(!1);(0,t.ref)(`hotkey-${Math.random().toString(36).substring(2,15)}`);let a=(0,t.computed)(()=>{let t=Array.isArray(e.hotkey)?e.hotkey[0]:e.hotkey;return t.includes(` `)?t.toLowerCase().split(` `).map(e=>e.charAt(0)+e.slice(1)).join(`, `):t.toLowerCase().split(`+`).map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(` + `)});(0,t.watch)(()=>i.value,t=>{if(!r.value||e.disabled)return;let n=r.value.querySelector(`button, a, input[type="button"], [role="button"]`);n&&(n.style.transition=`all 250ms ease`,t&&e.highlightEffect!==`none`?n.style.filter=`brightness(1.1)`:n.style.filter=``)});let handleKeyDown=e=>{e.key===`Control`&&(i.value=!0)},handleKeyUp=e=>{e.key===`Control`&&(i.value=!1)},handleHotkeyPress=()=>{if(e.disabled||!r.value)return;let t=r.value.querySelector(`button, a, input[type="button"], [role="button"]`);if(t||(t=r.value.querySelector(`v-list-item, .v-list-item, router-link, .router-link, a, [to]`)),!t&&(r.value.hasAttribute(`to`)||r.value.tagName===`A`||r.value.classList.contains(`v-list-item`))&&(t=r.value),!t){let e=r.value.closest(`v-list-item, .v-list-item, a, [to]`);e&&(t=e)}if(t)if(t.hasAttribute(`to`)){let r=t.getAttribute(`to`);if(r&&window.location.pathname!==r){let e=window.$nuxt?.$router||window.$router;e&&typeof e.push==`function`?e.push(r):window.location.pathname=r}n(`hotkey-triggered`,e.hotkey)}else t.click(),n(`hotkey-triggered`,e.hotkey);else console.log(`No clickable element found for hotkey`,e.hotkey),n(`hotkey-triggered`,e.hotkey)},registerHotkey=()=>{e.disabled||O.addBinding({hotkey:e.hotkey,command:e.command,callback:handleHotkeyPress})},unregisterHotkey=()=>{e.disabled||O.removeBinding(e.hotkey)};return(0,t.watch)(()=>e.disabled,e=>{e?unregisterHotkey():registerHotkey()}),(0,t.onMounted)(()=>{document.addEventListener(`keydown`,handleKeyDown),document.addEventListener(`keyup`,handleKeyUp),registerHotkey()}),(0,t.onBeforeUnmount)(()=>{document.removeEventListener(`keydown`,handleKeyDown),document.removeEventListener(`keyup`,handleKeyUp),unregisterHotkey()}),{wrapperElement:r,isControlKeyPressed:i,formattedHotkey:a}}});_();function _sfc_render$27(e,n,r,i,a,o){return(0,t.openBlock)(),(0,t.createElementBlock)(`div`,{class:(0,t.normalizeClass)([`sk-mousetrap-tooltip-wrapper`,[e.isControlKeyPressed&&!e.disabled&&e.highlightEffect!==`none`?`sk-mousetrap-highlight-${e.highlightEffect}`:``]]),ref:`wrapperElement`},[(0,t.renderSlot)(e.$slots,`default`,{},void 0,!0),(0,t.createVNode)(t.Transition,{name:`fade`},{default:(0,t.withCtx)(()=>[e.showTooltip&&e.isControlKeyPressed&&!e.disabled?((0,t.openBlock)(),(0,t.createElementBlock)(`div`,{key:0,class:(0,t.normalizeClass)([`sk-mousetrap-tooltip`,{"sk-mt-tooltip-top":e.position===`top`,"sk-mt-tooltip-bottom":e.position===`bottom`,"sk-mt-tooltip-left":e.position===`left`,"sk-mt-tooltip-right":e.position===`right`}])},(0,t.toDisplayString)(e.formattedHotkey),3)):(0,t.createCommentVNode)(``,!0)]),_:1})],2)}__name(_sfc_render$27,`_sfc_render`);var ne=g(te,[[`render`,_sfc_render$27],[`__scopeId`,`data-v-5d6fb09c`]]),{setInstance:re,getInstance:M,alertUser:N}=(()=>{let e=null;return{setInstance(t){e=t},getInstance(){return e},alertUser(t){let n=e;if(n){n.addSnack(t);return}console.error(`SnackbarService not found`)}}})(),ie=(0,t.defineComponent)({name:`SnackbarService`,data(){return{snacks:[],show:[]}},mounted(){re(this)},methods:{addSnack(e){this.snacks.push(e),this.show.push(!0)},close(){this.show.pop(),this.show.push(!1)},getColor(e){if(e.status===r.Status.ok)return`success`;if(e.status===r.Status.error)return`error`;if(e.status===r.Status.warning)return`yellow`}}});_();var ae={class:`d-flex align-center justify-space-between w-100`};function _sfc_render$26(e,n,r,i,a,o){let s=(0,t.resolveComponent)(`v-icon`),c=(0,t.resolveComponent)(`v-btn`),l=(0,t.resolveComponent)(`v-snackbar`);return(0,t.openBlock)(),(0,t.createElementBlock)(`div`,null,[((0,t.openBlock)(!0),(0,t.createElementBlock)(t.Fragment,null,(0,t.renderList)(e.snacks,r=>((0,t.openBlock)(),(0,t.createBlock)(l,{key:e.snacks.indexOf(r),modelValue:e.show[e.snacks.indexOf(r)],"onUpdate:modelValue":t=>e.show[e.snacks.indexOf(r)]=t,timeout:r.timeout,location:`bottom right`,color:e.getColor(r)},{default:(0,t.withCtx)(()=>[(0,t.createElementVNode)(`div`,ae,[(0,t.createElementVNode)(`span`,null,(0,t.toDisplayString)(r.text),1),(0,t.createVNode)(c,{icon:``,variant:`text`,onClick:n[0]||(n[0]=t=>e.close())},{default:(0,t.withCtx)(()=>[(0,t.createVNode)(s,null,{default:(0,t.withCtx)(()=>n[1]||(n[1]=[(0,t.createTextVNode)(`mdi-close`)])),_:1})]),_:1})])]),_:2},1032,[`modelValue`,`onUpdate:modelValue`,`timeout`,`color`]))),128))])}__name(_sfc_render$26,`_sfc_render`);var oe=g(ie,[[`render`,_sfc_render$26]]),se=(0,t.defineComponent)({name:`PaginatingToolbar`,props:{pages:{type:Array,required:!0},page:{type:Number,required:!0},title:{type:String,required:!1,default:``},subtitle:{type:String,required:!1,default:``}},emits:[`first`,`prev`,`next`,`last`,`set-page`]});_();var ce={key:0,class:`ms-2 text-subtitle-2`,"data-cy":`paginating-toolbar-subtitle`};function _sfc_render$25(e,n,r,i,a,o){let s=(0,t.resolveComponent)(`v-toolbar-title`),c=(0,t.resolveComponent)(`v-spacer`),l=(0,t.resolveComponent)(`v-icon`),u=(0,t.resolveComponent)(`v-btn`),d=(0,t.resolveComponent)(`v-select`),f=(0,t.resolveComponent)(`v-toolbar`);return(0,t.openBlock)(),(0,t.createBlock)(f,{density:`compact`},{default:(0,t.withCtx)(()=>[(0,t.createVNode)(s,null,{default:(0,t.withCtx)(()=>[(0,t.createElementVNode)(`span`,null,(0,t.toDisplayString)(e.title),1),e.subtitle?((0,t.openBlock)(),(0,t.createElementBlock)(`span`,ce,(0,t.toDisplayString)(e.subtitle),1)):(0,t.createCommentVNode)(``,!0)]),_:1}),(0,t.createVNode)(c),(0,t.createVNode)(u,{variant:`text`,icon:``,color:`secondary`,disabled:e.page==1,onClick:n[0]||(n[0]=t=>e.$emit(`first`))},{default:(0,t.withCtx)(()=>[(0,t.createVNode)(l,null,{default:(0,t.withCtx)(()=>n[5]||(n[5]=[(0,t.createTextVNode)(`mdi-page-first`)])),_:1})]),_:1},8,[`disabled`]),(0,t.createVNode)(u,{variant:`text`,icon:``,color:`secondary`,disabled:e.page==1,onClick:n[1]||(n[1]=t=>e.$emit(`prev`))},{default:(0,t.withCtx)(()=>[(0,t.createVNode)(l,null,{default:(0,t.withCtx)(()=>n[6]||(n[6]=[(0,t.createTextVNode)(`mdi-chevron-left`)])),_:1})]),_:1},8,[`disabled`]),(0,t.createVNode)(d,{"model-value":e.page,items:e.pages,class:`pageSelect`,density:`compact`,"hide-details":``,"return-object":!1,variant:`outlined`,"onUpdate:modelValue":n[2]||(n[2]=t=>e.$emit(`set-page`,t))},{selection:(0,t.withCtx)(({item:e})=>[(0,t.createTextVNode)((0,t.toDisplayString)(e.value),1)]),_:1},8,[`model-value`,`items`]),(0,t.createVNode)(u,{variant:`text`,icon:``,color:`secondary`,disabled:e.page==e.pages.length,onClick:n[3]||(n[3]=t=>e.$emit(`next`))},{default:(0,t.withCtx)(()=>[(0,t.createVNode)(l,null,{default:(0,t.withCtx)(()=>n[7]||(n[7]=[(0,t.createTextVNode)(`mdi-chevron-right`)])),_:1})]),_:1},8,[`disabled`]),(0,t.createVNode)(u,{variant:`text`,icon:``,color:`secondary`,disabled:e.page==e.pages.length,onClick:n[4]||(n[4]=t=>e.$emit(`last`))},{default:(0,t.withCtx)(()=>[(0,t.createVNode)(l,null,{default:(0,t.withCtx)(()=>n[8]||(n[8]=[(0,t.createTextVNode)(`mdi-page-last`)])),_:1})]),_:1},8,[`disabled`])]),_:1})}__name(_sfc_render$25,`_sfc_render`);var le=g(se,[[`render`,_sfc_render$25],[`__scopeId`,`data-v-a75fea7e`]]),ue=(0,t.defineComponent)({name:`CardSearch`,emits:{search:e=>typeof e==`string`},data(){return{query:``}},methods:{search(){this.$emit(`search`,this.query)}}});_();var de={class:`card-search`};function _sfc_render$24(e,n,r,i,a,o){let s=(0,t.resolveComponent)(`v-text-field`);return(0,t.openBlock)(),(0,t.createElementBlock)(`div`,de,[(0,t.createVNode)(s,{modelValue:e.query,"onUpdate:modelValue":n[0]||(n[0]=t=>e.query=t),label:`Search for cards...`,"append-icon":`mdi-magnify`,"onClick:append":e.search,onKeydown:(0,t.withKeys)(e.search,[`enter`])},null,8,[`modelValue`,`onClick:append`,`onKeydown`])])}__name(_sfc_render$24,`_sfc_render`);var fe=g(ue,[[`render`,_sfc_render$24]]),pe=(0,t.defineComponent)({name:`CardSearchResults`,emits:{"card-selected":e=>typeof e.cardId==`string`&&typeof e.courseId==`string`},props:{query:{type:String,required:!0},dataLayer:{type:Object,required:!0},courseFilter:{type:String,default:null}},data(){return{cards:[],loading:!1,error:null,selectedCardId:null}},watch:{query:{immediate:!0,handler(e){e&&this.fetchResults(e)}}},methods:{async fetchResults(e){this.loading=!0,this.error=null;try{let t=[];if(this.courseFilter)t=[this.courseFilter],console.log(`Filtering search to course: ${this.courseFilter}`);else{let{CourseLookup:e}=await import(`@vue-skuilder/db`);t=(await e.allCourseWare()).map(e=>e._id).filter(Boolean),console.log(`Searching across all ${t.length} courses`)}let n=[];for(let r of t){let t=await this.dataLayer.getCourseDB(r).searchCards(e);for(let e of t)n.push({...e,courseId:r})}this.cards=n,console.log(`Search completed: found ${n.length} cards across ${t.length} courses`)}catch(e){this.error=`Error fetching search results.`,console.error(`Search error:`,e)}finally{this.loading=!1}},selectCard(e){this.selectedCardId=e._id,this.$emit(`card-selected`,{cardId:e._id,courseId:e.courseId})}}});_();var me={class:`card-search-results`},he={key:0},ge={key:1},_e={key:2};function _sfc_render$23(e,n,r,i,a,o){let s=(0,t.resolveComponent)(`v-list-item-title`),c=(0,t.resolveComponent)(`v-list-item-subtitle`),l=(0,t.resolveComponent)(`v-list-item`),u=(0,t.resolveComponent)(`v-list`);return(0,t.openBlock)(),(0,t.createElementBlock)(`div`,me,[e.loading?((0,t.openBlock)(),(0,t.createElementBlock)(`div`,he,`Loading...`)):e.error?((0,t.openBlock)(),(0,t.createElementBlock)(`div`,ge,(0,t.toDisplayString)(e.error),1)):((0,t.openBlock)(),(0,t.createElementBlock)(`div`,_e,[(0,t.createVNode)(u,null,{default:(0,t.withCtx)(()=>[((0,t.openBlock)(!0),(0,t.createElementBlock)(t.Fragment,null,(0,t.renderList)(e.cards,n=>((0,t.openBlock)(),(0,t.createBlock)(l,{key:n._id,onClick:t=>e.selectCard(n),class:(0,t.normalizeClass)([{"selected-card":n._id===e.selectedCardId},`cursor-pointer`])},{default:(0,t.withCtx)(()=>[(0,t.createVNode)(s,null,{default:(0,t.withCtx)(()=>[(0,t.createTextVNode)((0,t.toDisplayString)(n._id),1)]),_:2},1024),(0,t.createVNode)(c,null,{default:(0,t.withCtx)(()=>[(0,t.createTextVNode)(`Course: `+(0,t.toDisplayString)(n.courseId),1)]),_:2},1024)]),_:2},1032,[`onClick`,`class`]))),128))]),_:1})]))])}__name(_sfc_render$23,`_sfc_render`);var ve=g(pe,[[`render`,_sfc_render$23],[`__scopeId`,`data-v-285e13bd`]]),ye=(0,t.defineComponent)({name:`CardHistoryViewer`,props:{cardId:{type:String,required:!0},courseId:{type:String,required:!0},userId:{type:String,required:!0},userDB:{type:Object,required:!0}},data(){return{history:[],cardHistory:null,bestIntervalHumanized:``,loading:!1,error:null,headers:[{title:`Timestamp`,key:`formattedTimeStamp`},{title:`Interval`,key:`userFriendlyInterval`},{title:`Time Spent (s)`,key:`timeSpentSeconds`},{title:`Correct?`,key:`isCorrect`},{title:`Performance`,key:`performance`},{title:`Prior Attempts`,key:`priorAttemps`},{title:`User Answer`,key:`userAnswer`}]}},watch:{cardId:{immediate:!0,handler(e){e&&this.userDB&&this.fetchHistory()}},userDB:{handler(e){e&&this.cardId&&this.fetchHistory()}}},methods:{async fetchHistory(){this.loading=!0,this.error=null;try{let e=(0,i.getCardHistoryID)(this.courseId,this.cardId),t=await this.userDB.get(e);this.cardHistory=t,this.bestIntervalHumanized=n.default.duration(t.bestInterval,`seconds`).humanize();let r=[...t.records].sort((e,t)=>(0,n.default)(e.timeStamp).valueOf()-(0,n.default)(t.timeStamp).valueOf());this.history=r.map((e,t)=>{let i=(0,n.default)(e.timeStamp),a={...e,formattedTimeStamp:i.format(`YYYY-MM-DD HH:mm:ss`),timeSpentSeconds:Math.round(e.timeSpent/1e3),isCorrect:e.isCorrect,performance:e.performance,priorAttemps:e.priorAttemps,userAnswer:e.userAnswer};if(t>0){let e=(0,n.default)(r[t-1].timeStamp),o=i.diff(e,`seconds`,!0);a.intervalFromPrevious=Math.round(o*100)/100,a.userFriendlyInterval=`${a.intervalFromPrevious} sec (${n.default.duration(o,`seconds`).humanize()})`}return a})}catch(e){this.error=`Error fetching card history.`,console.error(e)}finally{this.loading=!1}}}});_();var be={class:`card-history-viewer`},xe={key:0},Se={key:1},Ce={key:2,class:`error-message`},we={key:3};function _sfc_render$22(e,n,r,i,a,o){let s=(0,t.resolveComponent)(`v-card-title`),c=(0,t.resolveComponent)(`v-list-item-title`),l=(0,t.resolveComponent)(`v-list-item-subtitle`),u=(0,t.resolveComponent)(`v-list-item-content`),d=(0,t.resolveComponent)(`v-list-item`),f=(0,t.resolveComponent)(`v-card`),p=(0,t.resolveComponent)(`v-data-table`);return(0,t.openBlock)(),(0,t.createElementBlock)(`div`,be,[e.userId?((0,t.openBlock)(),(0,t.createElementBlock)(`h3`,xe,`Card History for User: `+(0,t.toDisplayString)(e.userId),1)):(0,t.createCommentVNode)(``,!0),e.loading?((0,t.openBlock)(),(0,t.createElementBlock)(`div`,Se,`Loading...`)):e.error?((0,t.openBlock)(),(0,t.createElementBlock)(`div`,Ce,(0,t.toDisplayString)(e.error),1)):e.cardHistory?((0,t.openBlock)(),(0,t.createElementBlock)(`div`,we,[(0,t.createVNode)(f,{class:`mb-4`},{default:(0,t.withCtx)(()=>[(0,t.createVNode)(s,null,{default:(0,t.withCtx)(()=>n[0]||(n[0]=[(0,t.createTextVNode)(`Summary`)])),_:1}),(0,t.createVNode)(d,null,{default:(0,t.withCtx)(()=>[(0,t.createVNode)(u,null,{default:(0,t.withCtx)(()=>[(0,t.createVNode)(c,null,{default:(0,t.withCtx)(()=>[(0,t.createTextVNode)(`Best Interval: `+(0,t.toDisplayString)(e.cardHistory.bestInterval)+` seconds (`+(0,t.toDisplayString)(e.bestIntervalHumanized)+`)`,1)]),_:1}),(0,t.createVNode)(l,null,{default:(0,t.withCtx)(()=>n[1]||(n[1]=[(0,t.createTextVNode)(`The to-date largest interval between successful card reviews.`)])),_:1})]),_:1})]),_:1}),(0,t.createVNode)(d,null,{default:(0,t.withCtx)(()=>[(0,t.createVNode)(u,null,{default:(0,t.withCtx)(()=>[(0,t.createVNode)(c,null,{default:(0,t.withCtx)(()=>[(0,t.createTextVNode)(`Lapses: `+(0,t.toDisplayString)(e.cardHistory.lapses),1)]),_:1}),(0,t.createVNode)(l,null,{default:(0,t.withCtx)(()=>n[2]||(n[2]=[(0,t.createTextVNode)(`The number of times that a card has been failed in review.`)])),_:1})]),_:1})]),_:1}),(0,t.createVNode)(d,null,{default:(0,t.withCtx)(()=>[(0,t.createVNode)(u,null,{default:(0,t.withCtx)(()=>[(0,t.createVNode)(c,null,{default:(0,t.withCtx)(()=>[(0,t.createTextVNode)(`Streak: `+(0,t.toDisplayString)(e.cardHistory.streak),1)]),_:1}),(0,t.createVNode)(l,null,{default:(0,t.withCtx)(()=>n[3]||(n[3]=[(0,t.createTextVNode)(`The number of consecutive successful impressions on this card.`)])),_:1})]),_:1})]),_:1})]),_:1}),(0,t.createVNode)(p,{headers:e.headers,items:e.history,class:`elevation-1`},null,8,[`headers`,`items`])])):(0,t.createCommentVNode)(``,!0)])}__name(_sfc_render$22,`_sfc_render`);var Te=g(ye,[[`render`,_sfc_render$22],[`__scopeId`,`data-v-a4bdfdfb`]]);function useViewable(e,r,i){let a=(0,t.ref)(n.default.utc()),o=(0,t.ref)([]),s={log:(e,...t)=>console.log(`[${i}]: `,e,...t),error:(e,...t)=>console.error(`[${i}]: `,e,...t),warn:(e,...t)=>console.warn(`[${i}]: `,e,...t)},c=(0,t.computed)(()=>Math.abs(n.default.utc().diff(a.value,`milliseconds`))),getURL=(t,n=0)=>{try{if(e.data[n]?.[t])return URL.createObjectURL(e.data[n][t])}catch(e){s.error(`Error creating URL for item:`,t,e)}return``},emitResponse=e=>{r(`emitResponse`,e)};return{startTime:a,hotKeys:o,timeSpent:c,logger:s,getURL,emitResponse}}function useQuestionView(e){let n=(0,t.ref)(0),r=(0,t.ref)(0),i=(0,t.ref)([]),a=(0,t.ref)(3),o=(0,t.ref)(2),s=(0,t.ref)(),submitAnswer=(t,n,a)=>{if(e.logger.log(`submitAnswer called...`),!s.value)throw Error(`Question not initialized`);i.value.push([t,n??``]);let o=s.value.evaluate(t,e.timeSpent.value);e.logger.log(`evaluation of answer ${t}:`,o);let c={...o,priorAttemps:r.value,courseID:``,cardID:``,timeSpent:e.timeSpent.value,timeStamp:e.startTime.value,userAnswer:t};return a?.deferAdvance!==void 0&&(c.deferAdvance=a.deferAdvance),o.isCorrect||r.value++,e.emitResponse(c),c};return{priorSessionViews:n,priorAttempts:r,priorAnswers:i,maxAttemptsPerView:a,maxSessionViews:o,question:s,submitAnswer}}function isQuestionView(e){return typeof e==`object`&&!!e&&`submitAnswer`in e&&`priorAttempts`in e}var Ee=__esmMin((()=>{}));Ee(),E();function isDefineComponent(e){return e.__isFragment!==void 0}var Displayable=class{constructor(e){if(e.length===0)throw Error(`
3
3
  Displayable Constructor was called with no view Data.
4
4
  `);validateData(this.dataShapes(),e)}};_defineProperty(Displayable,`dataShapes`,void 0),_defineProperty(Displayable,`views`,void 0),_defineProperty(Displayable,`seedData`,void 0),_defineProperty(Displayable,`acceptsUserData`,!0);function validateData(e,t){for(let n=0;n<e.length;n++)e[n].fields.forEach((e,i)=>{console.log(`[Displayable] shape[${n}].field[${i}]:\n ${JSON.stringify(e)}`),t[n][e.name]===void 0&&e.type!==r.FieldType.MEDIA_UPLOADS&&console.warn(`[Displayable] missing data`)})}var Question=class extends Displayable{displayedSkill(e,t){console.warn(`Question is running the reference implementation of displayedSkill.
@@ -10,7 +10,7 @@ Displayable Constructor was called with no view Data.
10
10
  ${this.sessionController?.toString()||`Session controller not initialized`}
11
11
  User courses: ${this.contentSources.filter(e=>e.type===`course`).map(e=>e.id).toString()}
12
12
  User classrooms: ${e.map(e=>e._id).toString()||`No classrooms`}
13
- `)}catch(e){console.error(`[StudySession] Error during final session setup:`,e)}if(this.sessionController)try{this.$emit(`session-started`),this.loadCard(await this.sessionController.nextCard())}catch(e){console.error(`[StudySession] Error loading next card:`,e),this.$emit(`session-error`,{message:`Failed to load study card`,error:e})}else console.error(`[StudySession] Cannot load card: session controller not initialized`),this.$emit(`session-error`,{message:`Study session initialization failed`})},countCardViews(e,t){return this.sessionRecord.filter(n=>n.card.course_id===e&&n.card.card_id===t).length},async processResponse(e){this.$emit(`card-response`,e),this.timerIsActive=!0,e.cardID=this.cardID,e.courseID=this.courseID,this.currentCard.records.push(e),console.log(`[StudySession] StudySession.processResponse is running...`);let t=this.logCardRecord(e).catch(e=>{throw console.error(`[StudySession] putCardRecord failed:`,e),e}),n=1,r=1;if(isQuestionView(this.$refs.cardViewer?.$refs.activeView)){let e=this.$refs.cardViewer.$refs.activeView;n=e.maxAttemptsPerView,r=e.maxSessionViews}let i=this.countCardViews(this.courseID,this.cardID),a=await this.sessionController.submitResponse(e,t,this.userCourseRegDoc,this.currentCard,this.courseID,this.cardID,n,r,i);try{this.handleUIFeedback(a)}catch(e){console.error(`[StudySession] Error handling UI feedback: ${e}.\n\nResult: ${JSON.stringify(a)}`)}if(this.replanPending){let e=this.replanOptions,t=e?.label,n=t?` [${t}]`:``;console.log(`[StudySession] Firing deferred replan (post-submitResponse)${n}`),this.replanPending=!1,this.replanOptions=null,this.sessionController.requestReplan(e??void 0),this.$emit(`replan-requested`)}a.deferred?(console.log(`[StudySession] Deferred advance — stashing action: ${a.nextCardAction}`),this.deferredNextCardAction=a.nextCardAction):a.shouldLoadNextCard&&this.loadCard(await this.sessionController.nextCard(a.nextCardAction)),a.shouldClearFeedbackShadow&&this.clearFeedbackShadow()},handleUIFeedback(e){if(e.isCorrect){if(!this.frameless)try{this.$refs.shadowWrapper&&e.performanceScore!==void 0&&(this.$refs.shadowWrapper.setAttribute(`style`,`--r: ${255*(1-e.performanceScore)}; --g:255`),this.$refs.shadowWrapper.classList.add(`correct`))}catch(e){console.warn(`[StudySession] Error setting shadowWrapper style: ${e}`)}this.sessionConfig.likesConfetti&&ut({origin:{y:1,x:.25+.5*Math.random()},disableForReducedMotion:!0,angle:60+60*Math.random()})}else if(!this.frameless)try{this.$refs.shadowWrapper&&this.$refs.shadowWrapper.classList.add(`incorrect`)}catch(e){console.warn(`[StudySession] Error setting shadowWrapper style: ${e}`)}},clearFeedbackShadow(){this.frameless||setTimeout(()=>{try{this.$refs.shadowWrapper&&this.$refs.shadowWrapper.classList.remove(`correct`,`incorrect`)}catch(e){console.warn(`[StudySession] Error clearing shadowWrapper style: ${e}`)}},1250)},async logCardRecord(e){console.log(`[StudySession] About to call user.putCardRecord...`);let t=await this.user.putCardRecord(e);return console.log(`[StudySession] user.putCardRecord completed`),t},async loadCard(e){if(this.loading){console.warn(`Attempted to load card while loading another...`);return}if(console.log(`[StudySession] loading: ${JSON.stringify(e)}`),e===null){this.sessionFinished=!0,this.$emit(`session-finished`,this.sessionRecord);return}this.cardType=e.item.status,this.loading=!0,this.cardCount++,this.data=e.data,this.view=(0,t.markRaw)(e.view),this.cardID=e.item.cardID,this.courseID=e.item.courseID,this.card_elo=e.item.elo||1e3,this.sessionRecord.push({card:{course_id:e.item.courseID,card_id:e.item.cardID,card_elo:this.card_elo,tags:e.tags??[]},item:e.item,records:[]}),this.$emit(`card-loaded`,{courseID:e.item.courseID,cardID:e.item.cardID,cardCount:this.cardCount}),this.loading=!1}}});_();var ft={key:0,class:`StudySession`},pt={key:2},mt={key:3},ht={class:`text-h4`},gt={key:0},_t={key:4,ref:`shadowWrapper`,class:`card-transition-container`},vt={key:0};function _sfc_render$18(e,n,r,i,a,o){let s=(0,t.resolveComponent)(`v-spacer`),c=(0,t.resolveComponent)(`v-progress-circular`),l=(0,t.resolveComponent)(`v-row`),u=(0,t.resolveComponent)(`session-controller-debug`),d=(0,t.resolveComponent)(`heat-map`),f=(0,t.resolveComponent)(`card-viewer`),p=(0,t.resolveComponent)(`StudySessionTimer`),m=(0,t.resolveComponent)(`v-col`),h=(0,t.resolveComponent)(`SkMouseTrap`);return e.sessionPrepared?((0,t.openBlock)(),(0,t.createElementBlock)(`div`,ft,[e.frameless?(0,t.createCommentVNode)(``,!0):((0,t.openBlock)(),(0,t.createBlock)(l,{key:0,align:`center`},{default:(0,t.withCtx)(()=>[(0,t.createVNode)(s),e.loading?((0,t.openBlock)(),(0,t.createBlock)(c,{key:0,color:`primary`,indeterminate:``,size:`32`,width:`4`})):(0,t.createCommentVNode)(``,!0)]),_:1})),e.debugMode?((0,t.openBlock)(),(0,t.createBlock)(u,{key:1,"session-controller":e.sessionController},null,8,[`session-controller`])):(0,t.createCommentVNode)(``,!0),e.frameless?(0,t.createCommentVNode)(``,!0):((0,t.openBlock)(),(0,t.createElementBlock)(`br`,pt)),e.sessionFinished?((0,t.openBlock)(),(0,t.createElementBlock)(`div`,mt,[(0,t.renderSlot)(e.$slots,`session-finished`,{sessionRecord:e.sessionRecord,report:e.sessionController?.report},()=>[(0,t.createElementVNode)(`div`,ht,[n[1]||(n[1]=(0,t.createElementVNode)(`p`,null,`Study session finished! Great job!`,-1)),e.sessionController?((0,t.openBlock)(),(0,t.createElementBlock)(`p`,gt,(0,t.toDisplayString)(e.sessionController.report),1)):(0,t.createCommentVNode)(``,!0),(0,t.createVNode)(d,{"activity-records-getter":()=>e.user.getActivityRecords()},null,8,[`activity-records-getter`])])],!0)])):((0,t.openBlock)(),(0,t.createElementBlock)(`div`,_t,[(0,t.createVNode)(t.Transition,{name:e.transitionName},{default:(0,t.withCtx)(()=>[e.view?((0,t.openBlock)(),(0,t.createBlock)(f,{ref:`cardViewer`,key:e.cardID,class:(0,t.normalizeClass)(e.loading?`muted`:``),view:e.view,data:e.data,card_id:e.cardID,course_id:e.courseID,"session-order":e.cardCount,user_elo:e.user_elo(e.courseID),card_elo:e.card_elo,frameless:e.frameless,onEmitResponse:n[0]||(n[0]=t=>e.processResponse(t)),onRequestReplan:e.handleReplanRequest,onReadyToAdvance:e.handleReadyToAdvance},null,8,[`class`,`view`,`data`,`card_id`,`course_id`,`session-order`,`user_elo`,`card_elo`,`frameless`,`onRequestReplan`,`onReadyToAdvance`])):(0,t.createCommentVNode)(``,!0)]),_:1},8,[`name`])],512)),e.frameless?(0,t.createCommentVNode)(``,!0):((0,t.openBlock)(),(0,t.createElementBlock)(t.Fragment,{key:5},[n[2]||(n[2]=(0,t.createElementVNode)(`br`,null,null,-1)),e.sessionController?((0,t.openBlock)(),(0,t.createElementBlock)(`div`,vt,[((0,t.openBlock)(!0),(0,t.createElementBlock)(t.Fragment,null,(0,t.renderList)(e.sessionController.failedCount,e=>((0,t.openBlock)(),(0,t.createElementBlock)(`span`,{key:e,class:`text-h5`},`•`))),128))])):(0,t.createCommentVNode)(``,!0)],64)),e.hideFooter?(0,t.createCommentVNode)(``,!0):((0,t.openBlock)(),(0,t.createBlock)(l,{key:6,align:`center`,class:`footer-controls pa-5`},{default:(0,t.withCtx)(()=>[(0,t.createVNode)(m,{cols:`auto`,class:`d-flex flex-grow-0 mr-auto`},{default:(0,t.withCtx)(()=>[(0,t.createVNode)(p,{"time-remaining":e.timeRemaining,"session-time-limit":e.sessionTimeLimit,onAddTime:e.incrementSessionClock},null,8,[`time-remaining`,`session-time-limit`,`onAddTime`])]),_:1}),(0,t.createVNode)(s),(0,t.createVNode)(m,{cols:`auto`,class:`footer-right`},{default:(0,t.withCtx)(()=>[(0,t.createVNode)(h)]),_:1})]),_:1}))])):(0,t.createCommentVNode)(``,!0)}__name(_sfc_render$18,`_sfc_render`);var yt=g(dt,[[`render`,_sfc_render$18],[`__scopeId`,`data-v-0279250f`]]),bt,setPinia,getPinia,xt,P=__esmMin((()=>{bt=null,setPinia=e=>{bt=e},getPinia=()=>bt,xt={install(e,t){let n=t?.pinia;n&&setPinia(n)}}})),useCardPreviewModeStore,St=__esmMin((()=>{P(),useCardPreviewModeStore=()=>{let e=getPinia();return e&&(0,a.setActivePinia)(e),(0,a.defineStore)(`previewMode`,{state:()=>({previewMode:!1}),actions:{setPreviewMode(e){this.previewMode=e}},getters:{isPreviewMode(){return this.previewMode}}})()}})),Ct,wt=__esmMin((()=>{St(),Ee(),Ct=(0,t.defineComponent)({name:`UserInput`,data(){return{answer:``,previewModeStore:null}},mounted(){this.previewModeStore=useCardPreviewModeStore()},computed:{autofocus(){return!this.previewModeStore?.previewMode},autoFocus(){return this.autofocus}},methods:{submitAnswer(e){return this.submit(e)},submit(e){return this.getQuestionViewAncestor().submitAnswer(e,this.$options.name??`UserInput`)},getQuestionViewAncestor(){let e=this.$parent,t=0;for(;e&&!isQuestionView(e);){let n=e.$parent;if(!n){let e=`
13
+ `)}catch(e){console.error(`[StudySession] Error during final session setup:`,e)}if(this.sessionController)try{this.$emit(`session-started`),this.loadCard(await this.sessionController.nextCard())}catch(e){console.error(`[StudySession] Error loading next card:`,e),this.$emit(`session-error`,{message:`Failed to load study card`,error:e})}else console.error(`[StudySession] Cannot load card: session controller not initialized`),this.$emit(`session-error`,{message:`Study session initialization failed`})},countCardViews(e,t){return this.sessionRecord.filter(n=>n.card.course_id===e&&n.card.card_id===t).length},async processResponse(e){this.$emit(`card-response`,e),this.timerIsActive=!0,e.cardID=this.cardID,e.courseID=this.courseID,this.currentCard.records.push(e),console.log(`[StudySession] StudySession.processResponse is running...`);let t=this.logCardRecord(e).catch(e=>{throw console.error(`[StudySession] putCardRecord failed:`,e),e}),n=1,r=1;if(isQuestionView(this.$refs.cardViewer?.$refs.activeView)){let e=this.$refs.cardViewer.$refs.activeView;n=e.maxAttemptsPerView,r=e.maxSessionViews}let i=this.countCardViews(this.courseID,this.cardID),a=await this.sessionController.submitResponse(e,t,this.userCourseRegDoc,this.currentCard,this.courseID,this.cardID,n,r,i);try{this.handleUIFeedback(a)}catch(e){console.error(`[StudySession] Error handling UI feedback: ${e}.\n\nResult: ${JSON.stringify(a)}`)}if(this.replanPending){let e=this.replanOptions,t=e?.label,n=t?` [${t}]`:``;console.log(`[StudySession] Firing deferred replan (post-submitResponse)${n}`),this.replanPending=!1,this.replanOptions=null,this.sessionController.requestReplan(e??void 0),this.$emit(`replan-requested`)}a.deferred?(console.log(`[StudySession] Deferred advance — stashing action: ${a.nextCardAction}`),this.deferredNextCardAction=a.nextCardAction):a.shouldLoadNextCard&&this.loadCard(await this.sessionController.nextCard(a.nextCardAction)),a.shouldClearFeedbackShadow&&this.clearFeedbackShadow()},handleUIFeedback(e){if(e.isCorrect){if(!this.frameless)try{this.$refs.shadowWrapper&&e.performanceScore!==void 0&&(this.$refs.shadowWrapper.setAttribute(`style`,`--r: ${255*(1-e.performanceScore)}; --g:255`),this.$refs.shadowWrapper.classList.add(`correct`))}catch(e){console.warn(`[StudySession] Error setting shadowWrapper style: ${e}`)}this.sessionConfig.likesConfetti&&ut({origin:{y:1,x:.25+.5*Math.random()},disableForReducedMotion:!0,angle:60+60*Math.random()})}else if(!this.frameless)try{this.$refs.shadowWrapper&&this.$refs.shadowWrapper.classList.add(`incorrect`)}catch(e){console.warn(`[StudySession] Error setting shadowWrapper style: ${e}`)}},clearFeedbackShadow(){this.frameless||setTimeout(()=>{try{this.$refs.shadowWrapper&&this.$refs.shadowWrapper.classList.remove(`correct`,`incorrect`)}catch(e){console.warn(`[StudySession] Error clearing shadowWrapper style: ${e}`)}},1250)},async logCardRecord(e){console.log(`[StudySession] About to call user.putCardRecord...`);let t=await this.user.putCardRecord(e);return console.log(`[StudySession] user.putCardRecord completed`),t},async loadCard(e){if(this.loading){console.warn(`Attempted to load card while loading another...`);return}if(console.log(`[StudySession] loading: ${JSON.stringify(e)}`),e===null){this.sessionFinished=!0,this.$emit(`session-finished`,this.sessionRecord);return}this.cardType=e.item.status,this.loading=!0,this.cardCount++,this.data=e.data,this.view=(0,t.markRaw)(e.view),this.cardID=e.item.cardID,this.courseID=e.item.courseID,this.card_elo=e.item.elo||1e3,this.sessionRecord.push({card:{course_id:e.item.courseID,card_id:e.item.cardID,card_elo:this.card_elo,tags:e.tags??[]},item:e.item,records:[]}),this.$emit(`card-loaded`,{courseID:e.item.courseID,cardID:e.item.cardID,cardCount:this.cardCount}),this.loading=!1}}});_();var ft={key:0,class:`StudySession`},pt={key:2},mt={key:3,class:`session-finished-area`},ht={class:`text-h4`},gt={key:0},_t={key:4,ref:`shadowWrapper`,class:`card-transition-container`},vt={key:0};function _sfc_render$18(e,n,r,i,a,o){let s=(0,t.resolveComponent)(`v-spacer`),c=(0,t.resolveComponent)(`v-progress-circular`),l=(0,t.resolveComponent)(`v-row`),u=(0,t.resolveComponent)(`session-controller-debug`),d=(0,t.resolveComponent)(`heat-map`),f=(0,t.resolveComponent)(`card-viewer`),p=(0,t.resolveComponent)(`StudySessionTimer`),m=(0,t.resolveComponent)(`v-col`),h=(0,t.resolveComponent)(`SkMouseTrap`);return e.sessionPrepared?((0,t.openBlock)(),(0,t.createElementBlock)(`div`,ft,[e.frameless?(0,t.createCommentVNode)(``,!0):((0,t.openBlock)(),(0,t.createBlock)(l,{key:0,align:`center`},{default:(0,t.withCtx)(()=>[(0,t.createVNode)(s),e.loading?((0,t.openBlock)(),(0,t.createBlock)(c,{key:0,color:`primary`,indeterminate:``,size:`32`,width:`4`})):(0,t.createCommentVNode)(``,!0)]),_:1})),e.debugMode?((0,t.openBlock)(),(0,t.createBlock)(u,{key:1,"session-controller":e.sessionController},null,8,[`session-controller`])):(0,t.createCommentVNode)(``,!0),e.frameless?(0,t.createCommentVNode)(``,!0):((0,t.openBlock)(),(0,t.createElementBlock)(`br`,pt)),e.sessionFinished?((0,t.openBlock)(),(0,t.createElementBlock)(`div`,mt,[(0,t.renderSlot)(e.$slots,`session-finished`,{sessionRecord:e.sessionRecord,report:e.sessionController?.report},()=>[(0,t.createElementVNode)(`div`,ht,[n[1]||(n[1]=(0,t.createElementVNode)(`p`,null,`Study session finished! Great job!`,-1)),e.sessionController?((0,t.openBlock)(),(0,t.createElementBlock)(`p`,gt,(0,t.toDisplayString)(e.sessionController.report),1)):(0,t.createCommentVNode)(``,!0),(0,t.createVNode)(d,{"activity-records-getter":()=>e.user.getActivityRecords()},null,8,[`activity-records-getter`])])],!0)])):((0,t.openBlock)(),(0,t.createElementBlock)(`div`,_t,[(0,t.createVNode)(t.Transition,{name:e.transitionName},{default:(0,t.withCtx)(()=>[e.view?((0,t.openBlock)(),(0,t.createBlock)(f,{ref:`cardViewer`,key:e.cardID,class:(0,t.normalizeClass)(e.loading?`muted`:``),view:e.view,data:e.data,card_id:e.cardID,course_id:e.courseID,"session-order":e.cardCount,user_elo:e.user_elo(e.courseID),card_elo:e.card_elo,frameless:e.frameless,onEmitResponse:n[0]||(n[0]=t=>e.processResponse(t)),onRequestReplan:e.handleReplanRequest,onReadyToAdvance:e.handleReadyToAdvance},null,8,[`class`,`view`,`data`,`card_id`,`course_id`,`session-order`,`user_elo`,`card_elo`,`frameless`,`onRequestReplan`,`onReadyToAdvance`])):(0,t.createCommentVNode)(``,!0)]),_:1},8,[`name`])],512)),e.frameless?(0,t.createCommentVNode)(``,!0):((0,t.openBlock)(),(0,t.createElementBlock)(t.Fragment,{key:5},[n[2]||(n[2]=(0,t.createElementVNode)(`br`,null,null,-1)),e.sessionController?((0,t.openBlock)(),(0,t.createElementBlock)(`div`,vt,[((0,t.openBlock)(!0),(0,t.createElementBlock)(t.Fragment,null,(0,t.renderList)(e.sessionController.failedCount,e=>((0,t.openBlock)(),(0,t.createElementBlock)(`span`,{key:e,class:`text-h5`},`•`))),128))])):(0,t.createCommentVNode)(``,!0)],64)),e.hideFooter?(0,t.createCommentVNode)(``,!0):((0,t.openBlock)(),(0,t.createBlock)(l,{key:6,align:`center`,class:`footer-controls pa-5`},{default:(0,t.withCtx)(()=>[(0,t.createVNode)(m,{cols:`auto`,class:`d-flex flex-grow-0 mr-auto`},{default:(0,t.withCtx)(()=>[(0,t.createVNode)(p,{"time-remaining":e.timeRemaining,"session-time-limit":e.sessionTimeLimit,onAddTime:e.incrementSessionClock},null,8,[`time-remaining`,`session-time-limit`,`onAddTime`])]),_:1}),(0,t.createVNode)(s),(0,t.createVNode)(m,{cols:`auto`,class:`footer-right`},{default:(0,t.withCtx)(()=>[(0,t.createVNode)(h)]),_:1})]),_:1}))])):(0,t.createCommentVNode)(``,!0)}__name(_sfc_render$18,`_sfc_render`);var yt=g(dt,[[`render`,_sfc_render$18],[`__scopeId`,`data-v-1f4b2d6a`]]),bt,setPinia,getPinia,xt,P=__esmMin((()=>{bt=null,setPinia=e=>{bt=e},getPinia=()=>bt,xt={install(e,t){let n=t?.pinia;n&&setPinia(n)}}})),useCardPreviewModeStore,St=__esmMin((()=>{P(),useCardPreviewModeStore=()=>{let e=getPinia();return e&&(0,a.setActivePinia)(e),(0,a.defineStore)(`previewMode`,{state:()=>({previewMode:!1}),actions:{setPreviewMode(e){this.previewMode=e}},getters:{isPreviewMode(){return this.previewMode}}})()}})),Ct,wt=__esmMin((()=>{St(),Ee(),Ct=(0,t.defineComponent)({name:`UserInput`,data(){return{answer:``,previewModeStore:null}},mounted(){this.previewModeStore=useCardPreviewModeStore()},computed:{autofocus(){return!this.previewModeStore?.previewMode},autoFocus(){return this.autofocus}},methods:{submitAnswer(e){return this.submit(e)},submit(e){return this.getQuestionViewAncestor().submitAnswer(e,this.$options.name??`UserInput`)},getQuestionViewAncestor(){let e=this.$parent,t=0;for(;e&&!isQuestionView(e);){let n=e.$parent;if(!n){let e=`
14
14
  UserInput.submit() has failed.
15
15
  The input element has no QuestionView ancestor element.`;throw(0,r.log)(e),Error(e)}if(e=n,t++,t>100){let e=`
16
16
  UserInput.submit() has failed.