// ==UserScript== // @name 米库的神奇魔法棒 // @name:en-US Miku's Magic Wand // @name:ja ミクの魔法の杖 // @namespace https://blog.adproqwq.top // @version 2.13.3 // @author Adpro // @description 世界第一公主殿下赠予的魔法棒,给网页审查工具施加神奇魔法! // @description:en-US A magic wand gifted by Her Royal Highness, the First Princess of the World, to cast a magical spell on the GKD Inspect! // @description:ja 世界で一番おひめさまがGKDインスペクトに魔法の呪文をかけるために贈った魔法の杖! // @license MIT // @icon data:image/png;base64,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 // @homepage https://github.com/adproqwq/MikuMagicWand // @supportURL https://github.com/adproqwq/MikuMagicWand/issues // @match https://i.gkd.li/* // @exclude https://i.gkd.li/ // @exclude https://i.gkd.li/device/ // @require https://registry.npmmirror.com/vue/3.5.13/files/dist/vue.global.prod.js // @grant none // ==/UserScript== (r=>{if(typeof GM_addStyle=="function"){GM_addStyle(r);return}const o=document.createElement("style");o.textContent=r,document.head.append(o)})(' @font-face{font-family:Material Icons;font-style:normal;font-display:swap;font-weight:400;src:url(data:font/woff2;base64,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) format("woff2"),url(data:font/woff;base64,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) format("woff")}:root{--mdui-breakpoint-xs:0px;--mdui-breakpoint-sm:600px;--mdui-breakpoint-md:840px;--mdui-breakpoint-lg:1080px;--mdui-breakpoint-xl:1440px;--mdui-breakpoint-xxl:1920px}:root{--mdui-color-primary-light:103,80,164;--mdui-color-primary-container-light:234,221,255;--mdui-color-on-primary-light:255,255,255;--mdui-color-on-primary-container-light:33,0,94;--mdui-color-inverse-primary-light:208,188,255;--mdui-color-secondary-light:98,91,113;--mdui-color-secondary-container-light:232,222,248;--mdui-color-on-secondary-light:255,255,255;--mdui-color-on-secondary-container-light:30,25,43;--mdui-color-tertiary-light:125,82,96;--mdui-color-tertiary-container-light:255,216,228;--mdui-color-on-tertiary-light:255,255,255;--mdui-color-on-tertiary-container-light:55,11,30;--mdui-color-surface-light:254,247,255;--mdui-color-surface-dim-light:222,216,225;--mdui-color-surface-bright-light:254,247,255;--mdui-color-surface-container-lowest-light:255,255,255;--mdui-color-surface-container-low-light:247,242,250;--mdui-color-surface-container-light:243,237,247;--mdui-color-surface-container-high-light:236,230,240;--mdui-color-surface-container-highest-light:230,224,233;--mdui-color-surface-variant-light:231,224,236;--mdui-color-on-surface-light:28,27,31;--mdui-color-on-surface-variant-light:73,69,78;--mdui-color-inverse-surface-light:49,48,51;--mdui-color-inverse-on-surface-light:244,239,244;--mdui-color-background-light:254,247,255;--mdui-color-on-background-light:28,27,31;--mdui-color-error-light:179,38,30;--mdui-color-error-container-light:249,222,220;--mdui-color-on-error-light:255,255,255;--mdui-color-on-error-container-light:65,14,11;--mdui-color-outline-light:121,116,126;--mdui-color-outline-variant-light:196,199,197;--mdui-color-shadow-light:0,0,0;--mdui-color-surface-tint-color-light:103,80,164;--mdui-color-scrim-light:0,0,0;--mdui-color-primary-dark:208,188,255;--mdui-color-primary-container-dark:79,55,139;--mdui-color-on-primary-dark:55,30,115;--mdui-color-on-primary-container-dark:234,221,255;--mdui-color-inverse-primary-dark:103,80,164;--mdui-color-secondary-dark:204,194,220;--mdui-color-secondary-container-dark:74,68,88;--mdui-color-on-secondary-dark:51,45,65;--mdui-color-on-secondary-container-dark:232,222,248;--mdui-color-tertiary-dark:239,184,200;--mdui-color-tertiary-container-dark:99,59,72;--mdui-color-on-tertiary-dark:73,37,50;--mdui-color-on-tertiary-container-dark:255,216,228;--mdui-color-surface-dark:20,18,24;--mdui-color-surface-dim-dark:20,18,24;--mdui-color-surface-bright-dark:59,56,62;--mdui-color-surface-container-lowest-dark:15,13,19;--mdui-color-surface-container-low-dark:29,27,32;--mdui-color-surface-container-dark:33,31,38;--mdui-color-surface-container-high-dark:43,41,48;--mdui-color-surface-container-highest-dark:54,52,59;--mdui-color-surface-variant-dark:73,69,79;--mdui-color-on-surface-dark:230,225,229;--mdui-color-on-surface-variant-dark:202,196,208;--mdui-color-inverse-surface-dark:230,225,229;--mdui-color-inverse-on-surface-dark:49,48,51;--mdui-color-background-dark:20,18,24;--mdui-color-on-background-dark:230,225,229;--mdui-color-error-dark:242,184,181;--mdui-color-error-container-dark:140,29,24;--mdui-color-on-error-dark:96,20,16;--mdui-color-on-error-container-dark:249,222,220;--mdui-color-outline-dark:147,143,153;--mdui-color-outline-variant-dark:68,71,70;--mdui-color-shadow-dark:0,0,0;--mdui-color-surface-tint-color-dark:208,188,255;--mdui-color-scrim-dark:0,0,0;font-size:16px}.mdui-theme-light,:root{color-scheme:light;--mdui-color-primary:var(--mdui-color-primary-light);--mdui-color-primary-container:var(--mdui-color-primary-container-light);--mdui-color-on-primary:var(--mdui-color-on-primary-light);--mdui-color-on-primary-container:var(--mdui-color-on-primary-container-light);--mdui-color-inverse-primary:var(--mdui-color-inverse-primary-light);--mdui-color-secondary:var(--mdui-color-secondary-light);--mdui-color-secondary-container:var(--mdui-color-secondary-container-light);--mdui-color-on-secondary:var(--mdui-color-on-secondary-light);--mdui-color-on-secondary-container:var(--mdui-color-on-secondary-container-light);--mdui-color-tertiary:var(--mdui-color-tertiary-light);--mdui-color-tertiary-container:var(--mdui-color-tertiary-container-light);--mdui-color-on-tertiary:var(--mdui-color-on-tertiary-light);--mdui-color-on-tertiary-container:var(--mdui-color-on-tertiary-container-light);--mdui-color-surface:var(--mdui-color-surface-light);--mdui-color-surface-dim:var(--mdui-color-surface-dim-light);--mdui-color-surface-bright:var(--mdui-color-surface-bright-light);--mdui-color-surface-container-lowest:var(--mdui-color-surface-container-lowest-light);--mdui-color-surface-container-low:var(--mdui-color-surface-container-low-light);--mdui-color-surface-container:var(--mdui-color-surface-container-light);--mdui-color-surface-container-high:var(--mdui-color-surface-container-high-light);--mdui-color-surface-container-highest:var(--mdui-color-surface-container-highest-light);--mdui-color-surface-variant:var(--mdui-color-surface-variant-light);--mdui-color-on-surface:var(--mdui-color-on-surface-light);--mdui-color-on-surface-variant:var(--mdui-color-on-surface-variant-light);--mdui-color-inverse-surface:var(--mdui-color-inverse-surface-light);--mdui-color-inverse-on-surface:var(--mdui-color-inverse-on-surface-light);--mdui-color-background:var(--mdui-color-background-light);--mdui-color-on-background:var(--mdui-color-on-background-light);--mdui-color-error:var(--mdui-color-error-light);--mdui-color-error-container:var(--mdui-color-error-container-light);--mdui-color-on-error:var(--mdui-color-on-error-light);--mdui-color-on-error-container:var(--mdui-color-on-error-container-light);--mdui-color-outline:var(--mdui-color-outline-light);--mdui-color-outline-variant:var(--mdui-color-outline-variant-light);--mdui-color-shadow:var(--mdui-color-shadow-light);--mdui-color-surface-tint-color:var(--mdui-color-surface-tint-color-light);--mdui-color-scrim:var(--mdui-color-scrim-light);color:rgb(var(--mdui-color-on-background));background-color:rgb(var(--mdui-color-background))}.mdui-theme-dark{color-scheme:dark;--mdui-color-primary:var(--mdui-color-primary-dark);--mdui-color-primary-container:var(--mdui-color-primary-container-dark);--mdui-color-on-primary:var(--mdui-color-on-primary-dark);--mdui-color-on-primary-container:var(--mdui-color-on-primary-container-dark);--mdui-color-inverse-primary:var(--mdui-color-inverse-primary-dark);--mdui-color-secondary:var(--mdui-color-secondary-dark);--mdui-color-secondary-container:var(--mdui-color-secondary-container-dark);--mdui-color-on-secondary:var(--mdui-color-on-secondary-dark);--mdui-color-on-secondary-container:var(--mdui-color-on-secondary-container-dark);--mdui-color-tertiary:var(--mdui-color-tertiary-dark);--mdui-color-tertiary-container:var(--mdui-color-tertiary-container-dark);--mdui-color-on-tertiary:var(--mdui-color-on-tertiary-dark);--mdui-color-on-tertiary-container:var(--mdui-color-on-tertiary-container-dark);--mdui-color-surface:var(--mdui-color-surface-dark);--mdui-color-surface-dim:var(--mdui-color-surface-dim-dark);--mdui-color-surface-bright:var(--mdui-color-surface-bright-dark);--mdui-color-surface-container-lowest:var(--mdui-color-surface-container-lowest-dark);--mdui-color-surface-container-low:var(--mdui-color-surface-container-low-dark);--mdui-color-surface-container:var(--mdui-color-surface-container-dark);--mdui-color-surface-container-high:var(--mdui-color-surface-container-high-dark);--mdui-color-surface-container-highest:var(--mdui-color-surface-container-highest-dark);--mdui-color-surface-variant:var(--mdui-color-surface-variant-dark);--mdui-color-on-surface:var(--mdui-color-on-surface-dark);--mdui-color-on-surface-variant:var(--mdui-color-on-surface-variant-dark);--mdui-color-inverse-surface:var(--mdui-color-inverse-surface-dark);--mdui-color-inverse-on-surface:var(--mdui-color-inverse-on-surface-dark);--mdui-color-background:var(--mdui-color-background-dark);--mdui-color-on-background:var(--mdui-color-on-background-dark);--mdui-color-error:var(--mdui-color-error-dark);--mdui-color-error-container:var(--mdui-color-error-container-dark);--mdui-color-on-error:var(--mdui-color-on-error-dark);--mdui-color-on-error-container:var(--mdui-color-on-error-container-dark);--mdui-color-outline:var(--mdui-color-outline-dark);--mdui-color-outline-variant:var(--mdui-color-outline-variant-dark);--mdui-color-shadow:var(--mdui-color-shadow-dark);--mdui-color-surface-tint-color:var(--mdui-color-surface-tint-color-dark);--mdui-color-scrim:var(--mdui-color-scrim-dark);color:rgb(var(--mdui-color-on-background));background-color:rgb(var(--mdui-color-background))}@media (prefers-color-scheme:dark){.mdui-theme-auto{color-scheme:dark;--mdui-color-primary:var(--mdui-color-primary-dark);--mdui-color-primary-container:var(--mdui-color-primary-container-dark);--mdui-color-on-primary:var(--mdui-color-on-primary-dark);--mdui-color-on-primary-container:var(--mdui-color-on-primary-container-dark);--mdui-color-inverse-primary:var(--mdui-color-inverse-primary-dark);--mdui-color-secondary:var(--mdui-color-secondary-dark);--mdui-color-secondary-container:var(--mdui-color-secondary-container-dark);--mdui-color-on-secondary:var(--mdui-color-on-secondary-dark);--mdui-color-on-secondary-container:var(--mdui-color-on-secondary-container-dark);--mdui-color-tertiary:var(--mdui-color-tertiary-dark);--mdui-color-tertiary-container:var(--mdui-color-tertiary-container-dark);--mdui-color-on-tertiary:var(--mdui-color-on-tertiary-dark);--mdui-color-on-tertiary-container:var(--mdui-color-on-tertiary-container-dark);--mdui-color-surface:var(--mdui-color-surface-dark);--mdui-color-surface-dim:var(--mdui-color-surface-dim-dark);--mdui-color-surface-bright:var(--mdui-color-surface-bright-dark);--mdui-color-surface-container-lowest:var(--mdui-color-surface-container-lowest-dark);--mdui-color-surface-container-low:var(--mdui-color-surface-container-low-dark);--mdui-color-surface-container:var(--mdui-color-surface-container-dark);--mdui-color-surface-container-high:var(--mdui-color-surface-container-high-dark);--mdui-color-surface-container-highest:var(--mdui-color-surface-container-highest-dark);--mdui-color-surface-variant:var(--mdui-color-surface-variant-dark);--mdui-color-on-surface:var(--mdui-color-on-surface-dark);--mdui-color-on-surface-variant:var(--mdui-color-on-surface-variant-dark);--mdui-color-inverse-surface:var(--mdui-color-inverse-surface-dark);--mdui-color-inverse-on-surface:var(--mdui-color-inverse-on-surface-dark);--mdui-color-background:var(--mdui-color-background-dark);--mdui-color-on-background:var(--mdui-color-on-background-dark);--mdui-color-error:var(--mdui-color-error-dark);--mdui-color-error-container:var(--mdui-color-error-container-dark);--mdui-color-on-error:var(--mdui-color-on-error-dark);--mdui-color-on-error-container:var(--mdui-color-on-error-container-dark);--mdui-color-outline:var(--mdui-color-outline-dark);--mdui-color-outline-variant:var(--mdui-color-outline-variant-dark);--mdui-color-shadow:var(--mdui-color-shadow-dark);--mdui-color-surface-tint-color:var(--mdui-color-surface-tint-color-dark);--mdui-color-scrim:var(--mdui-color-scrim-dark);color:rgb(var(--mdui-color-on-background));background-color:rgb(var(--mdui-color-background))}}:root{--mdui-elevation-level0:none;--mdui-elevation-level1:0 .5px 1.5px 0 rgba(var(--mdui-color-shadow), 19%),0 0 1px 0 rgba(var(--mdui-color-shadow), 3.9%);--mdui-elevation-level2:0 .85px 3px 0 rgba(var(--mdui-color-shadow), 19%),0 .25px 1px 0 rgba(var(--mdui-color-shadow), 3.9%);--mdui-elevation-level3:0 1.25px 5px 0 rgba(var(--mdui-color-shadow), 19%),0 .3333px 1.5px 0 rgba(var(--mdui-color-shadow), 3.9%);--mdui-elevation-level4:0 1.85px 6.25px 0 rgba(var(--mdui-color-shadow), 19%),0 .5px 1.75px 0 rgba(var(--mdui-color-shadow), 3.9%);--mdui-elevation-level5:0 2.75px 9px 0 rgba(var(--mdui-color-shadow), 19%),0 .25px 3px 0 rgba(var(--mdui-color-shadow), 3.9%)}:root{--mdui-motion-easing-linear:cubic-bezier(0, 0, 1, 1);--mdui-motion-easing-standard:cubic-bezier(.2, 0, 0, 1);--mdui-motion-easing-standard-accelerate:cubic-bezier(.3, 0, 1, 1);--mdui-motion-easing-standard-decelerate:cubic-bezier(0, 0, 0, 1);--mdui-motion-easing-emphasized:var(--mdui-motion-easing-standard);--mdui-motion-easing-emphasized-accelerate:cubic-bezier(.3, 0, .8, .15);--mdui-motion-easing-emphasized-decelerate:cubic-bezier(.05, .7, .1, 1);--mdui-motion-duration-short1:50ms;--mdui-motion-duration-short2:.1s;--mdui-motion-duration-short3:.15s;--mdui-motion-duration-short4:.2s;--mdui-motion-duration-medium1:.25s;--mdui-motion-duration-medium2:.3s;--mdui-motion-duration-medium3:.35s;--mdui-motion-duration-medium4:.4s;--mdui-motion-duration-long1:.45s;--mdui-motion-duration-long2:.5s;--mdui-motion-duration-long3:.55s;--mdui-motion-duration-long4:.6s;--mdui-motion-duration-extra-long1:.7s;--mdui-motion-duration-extra-long2:.8s;--mdui-motion-duration-extra-long3:.9s;--mdui-motion-duration-extra-long4:1s}.mdui-prose{line-height:1.75;word-wrap:break-word}.mdui-prose :first-child{margin-top:0}.mdui-prose :last-child{margin-bottom:0}.mdui-prose code,.mdui-prose kbd,.mdui-prose pre,.mdui-prose pre tt,.mdui-prose samp{font-family:Consolas,Courier,Courier New,monospace}.mdui-prose caption{text-align:left}.mdui-prose [draggable=true],.mdui-prose [draggable]{cursor:move}.mdui-prose [draggable=false]{cursor:inherit}.mdui-prose dl,.mdui-prose form,.mdui-prose ol,.mdui-prose p,.mdui-prose ul{margin-top:1.25em;margin-bottom:1.25em}.mdui-prose a{text-decoration:none;outline:0;color:rgb(var(--mdui-color-primary))}.mdui-prose a:focus,.mdui-prose a:hover{border-bottom:.0625rem solid rgb(var(--mdui-color-primary))}.mdui-prose small{font-size:.875em}.mdui-prose strong{font-weight:600}.mdui-prose blockquote{margin:1.6em 2em;padding-left:1em;border-left:.25rem solid rgb(var(--mdui-color-surface-variant))}@media only screen and (max-width:599.98px){.mdui-prose blockquote{margin:1.6em 0}}.mdui-prose blockquote footer{font-size:86%;color:rgb(var(--mdui-color-on-surface-variant))}.mdui-prose mark{color:inherit;background-color:rgb(var(--mdui-color-secondary-container));border-bottom:.0625rem solid rgb(var(--mdui-color-secondary));margin:0 .375rem;padding:.125rem}.mdui-prose h1,.mdui-prose h2,.mdui-prose h3,.mdui-prose h4,.mdui-prose h5,.mdui-prose h6{font-weight:400}.mdui-prose h1 small,.mdui-prose h2 small,.mdui-prose h3 small,.mdui-prose h4 small,.mdui-prose h5 small,.mdui-prose h6 small{font-weight:inherit;font-size:65%;color:rgb(var(--mdui-color-on-surface-variant))}.mdui-prose h1 strong,.mdui-prose h2 strong,.mdui-prose h3 strong,.mdui-prose h4 strong,.mdui-prose h5 strong,.mdui-prose h6 strong{font-weight:600}.mdui-prose h1{font-size:2.5em;margin-top:0;margin-bottom:1.25em;line-height:1.1111}.mdui-prose h2{font-size:1.875em;margin-top:2.25em;margin-bottom:1.125em;line-height:1.3333}.mdui-prose h3{font-size:1.5em;margin-top:2em;margin-bottom:1em;line-height:1.6}.mdui-prose h4{font-size:1.25em;margin-top:1.875em;margin-bottom:.875em;line-height:1.5}.mdui-prose h2+*,.mdui-prose h3+*,.mdui-prose h4+*,.mdui-prose hr+*{margin-top:0}.mdui-prose code,.mdui-prose kbd{font-size:.875em;color:rgb(var(--mdui-color-on-surface-container));background-color:rgba(var(--mdui-color-surface-variant),.28);padding:.125rem .375rem;border-radius:var(--mdui-shape-corner-extra-small)}.mdui-prose kbd{font-size:.9em}.mdui-prose abbr[title]{text-decoration:none;cursor:help;border-bottom:.0625rem dotted rgb(var(--mdui-color-on-surface-variant))}.mdui-prose ins,.mdui-prose u{text-decoration:none;border-bottom:.0625rem solid rgb(var(--mdui-color-on-surface-variant))}.mdui-prose del{text-decoration:line-through}.mdui-prose hr{margin-top:3em;margin-bottom:3em;border:none;border-bottom:.0625rem solid rgb(var(--mdui-color-surface-variant))}.mdui-prose pre{margin-top:1.7143em;margin-bottom:1.7143em}.mdui-prose pre code{padding:.8571em 1.1429em;overflow-x:auto;-webkit-overflow-scrolling:touch;background-color:rgb(var(--mdui-color-surface-container));color:rgb(var(--mdui-color-on-surface-container));border-radius:var(--mdui-shape-corner-extra-small)}.mdui-prose ol,.mdui-prose ul{padding-left:1.625em}.mdui-prose ul{list-style-type:disc}.mdui-prose ol{list-style-type:decimal}.mdui-prose ol[type=A]{list-style-type:upper-alpha}.mdui-prose ol[type=a]{list-style-type:lower-alpha}.mdui-prose ol[type=I]{list-style-type:upper-roman}.mdui-prose ol[type=i]{list-style-type:lower-roman}.mdui-prose ol[type="1"]{list-style-type:decimal}.mdui-prose li{margin-top:.5em;margin-bottom:.5em}.mdui-prose ol>li,.mdui-prose ul>li{padding-left:.375em}.mdui-prose ol>li>p,.mdui-prose ul>li>p{margin-top:.75em;margin-bottom:.75em}.mdui-prose ol>li>:first-child,.mdui-prose ul>li>:first-child{margin-top:1.25em}.mdui-prose ol>li>:last-child,.mdui-prose ul>li>:last-child{margin-bottom:1.25em}.mdui-prose ol>li::marker{font-weight:400;color:rgb(var(--mdui-color-on-surface-variant))}.mdui-prose ul>li::marker{color:rgb(var(--mdui-color-on-surface-variant))}.mdui-prose ol ol,.mdui-prose ol ul,.mdui-prose ul ol,.mdui-prose ul ul{margin-top:.75em;margin-bottom:.75em}.mdui-prose fieldset,.mdui-prose img{border:none}.mdui-prose figure,.mdui-prose img,.mdui-prose video{margin-top:2em;margin-bottom:2em;max-width:100%}.mdui-prose figure>*{margin-top:0;margin-bottom:0}.mdui-prose figcaption{font-size:.875em;line-height:1.4286;margin-top:.8571em;color:rgb(var(--mdui-color-on-surface-variant))}.mdui-prose figcaption:empty:before{z-index:-1;cursor:text;content:attr(placeholder);color:rgb(var(--mdui-color-on-surface-variant))}.mdui-prose table{margin-top:2em;margin-bottom:2em;border:.0625rem solid rgb(var(--mdui-color-surface-variant));border-radius:var(--mdui-shape-corner-large)}.mdui-table{width:100%;overflow-x:auto;margin-top:2em;margin-bottom:2em;border:.0625rem solid rgb(var(--mdui-color-surface-variant));border-radius:var(--mdui-shape-corner-large)}.mdui-table table{margin-top:0;margin-bottom:0;border:none;border-radius:0}.mdui-prose table,.mdui-table table{width:100%;text-align:left;border-collapse:collapse;border-spacing:0}.mdui-prose td,.mdui-prose th,.mdui-table td,.mdui-table th{border-top:.0625rem solid rgb(var(--mdui-color-surface-variant))}.mdui-prose td:not(:first-child),.mdui-prose th:not(:first-child),.mdui-table td:not(:first-child),.mdui-table th:not(:first-child){border-left:.0625rem solid rgb(var(--mdui-color-surface-variant))}.mdui-prose td:not(:last-child),.mdui-prose th:not(:last-child),.mdui-table td:not(:last-child),.mdui-table th:not(:last-child){border-right:.0625rem solid rgb(var(--mdui-color-surface-variant))}.mdui-prose tbody:first-child tr:first-child td,.mdui-prose thead:first-child tr:first-child th,.mdui-table tbody:first-child tr:first-child td,.mdui-table thead:first-child tr:first-child th{border-top:0}.mdui-prose tfoot td,.mdui-prose tfoot th,.mdui-prose thead td,.mdui-prose thead th,.mdui-table tfoot td,.mdui-table tfoot th,.mdui-table thead td,.mdui-table thead th{position:relative;vertical-align:middle;padding:1.125rem 1rem;font-weight:var(--mdui-typescale-title-medium-weight);letter-spacing:var(--mdui-typescale-title-medium-tracking);line-height:var(--mdui-typescale-title-medium-line-height);color:rgb(var(--mdui-color-on-surface-variant));box-shadow:var(--mdui-elevation-level1)}.mdui-prose tbody td,.mdui-prose tbody th,.mdui-table tbody td,.mdui-table tbody th{padding:.875rem 1rem}.mdui-prose tbody th,.mdui-table tbody th{vertical-align:middle;font-weight:inherit}.mdui-prose tbody td,.mdui-table tbody td{vertical-align:baseline}:root{--mdui-shape-corner-none:0;--mdui-shape-corner-extra-small:.25rem;--mdui-shape-corner-small:.5rem;--mdui-shape-corner-medium:.75rem;--mdui-shape-corner-large:1rem;--mdui-shape-corner-extra-large:1.75rem;--mdui-shape-corner-full:1000rem}:root{--mdui-state-layer-hover:.08;--mdui-state-layer-focus:.12;--mdui-state-layer-pressed:.12;--mdui-state-layer-dragged:.16}:root{--mdui-typescale-display-large-weight:400;--mdui-typescale-display-medium-weight:400;--mdui-typescale-display-small-weight:400;--mdui-typescale-display-large-line-height:4rem;--mdui-typescale-display-medium-line-height:3.25rem;--mdui-typescale-display-small-line-height:2.75rem;--mdui-typescale-display-large-size:3.5625rem;--mdui-typescale-display-medium-size:2.8125rem;--mdui-typescale-display-small-size:2.25rem;--mdui-typescale-display-large-tracking:0rem;--mdui-typescale-display-medium-tracking:0rem;--mdui-typescale-display-small-tracking:0rem;--mdui-typescale-headline-large-weight:400;--mdui-typescale-headline-medium-weight:400;--mdui-typescale-headline-small-weight:400;--mdui-typescale-headline-large-line-height:2.5rem;--mdui-typescale-headline-medium-line-height:2.25rem;--mdui-typescale-headline-small-line-height:2rem;--mdui-typescale-headline-large-size:2rem;--mdui-typescale-headline-medium-size:1.75rem;--mdui-typescale-headline-small-size:1.5rem;--mdui-typescale-headline-large-tracking:0rem;--mdui-typescale-headline-medium-tracking:0rem;--mdui-typescale-headline-small-tracking:0rem;--mdui-typescale-title-large-weight:400;--mdui-typescale-title-medium-weight:500;--mdui-typescale-title-small-weight:500;--mdui-typescale-title-large-line-height:1.75rem;--mdui-typescale-title-medium-line-height:1.5rem;--mdui-typescale-title-small-line-height:1.25rem;--mdui-typescale-title-large-size:1.375rem;--mdui-typescale-title-medium-size:1rem;--mdui-typescale-title-small-size:.875rem;--mdui-typescale-title-large-tracking:0rem;--mdui-typescale-title-medium-tracking:.009375rem;--mdui-typescale-title-small-tracking:.00625rem;--mdui-typescale-label-large-weight:500;--mdui-typescale-label-medium-weight:500;--mdui-typescale-label-small-weight:500;--mdui-typescale-label-large-line-height:1.25rem;--mdui-typescale-label-medium-line-height:1rem;--mdui-typescale-label-small-line-height:.375rem;--mdui-typescale-label-large-size:.875rem;--mdui-typescale-label-medium-size:.75rem;--mdui-typescale-label-small-size:.6875rem;--mdui-typescale-label-large-tracking:.00625rem;--mdui-typescale-label-medium-tracking:.03125rem;--mdui-typescale-label-small-tracking:.03125rem;--mdui-typescale-body-large-weight:400;--mdui-typescale-body-medium-weight:400;--mdui-typescale-body-small-weight:400;--mdui-typescale-body-large-line-height:1.5rem;--mdui-typescale-body-medium-line-height:1.25rem;--mdui-typescale-body-small-line-height:1rem;--mdui-typescale-body-large-size:1rem;--mdui-typescale-body-medium-size:.875rem;--mdui-typescale-body-small-size:.75rem;--mdui-typescale-body-large-tracking:.009375rem;--mdui-typescale-body-medium-tracking:.015625rem;--mdui-typescale-body-small-tracking:.025rem}.mdui-lock-screen{overflow:hidden!important}#categories{width:500px}input#localImport{display:none}input#localImport,input#img{display:none}mdui-dialog>*>span{display:flex;font-size:var(--mdui-typescale-body-large-size)}.position{width:15%;height:var(--mdui-typescale-title-large-line-height)}.introduction{color:rgb(var(--mdui-color-on-surface-variant));display:block;opacity:1;word-break:normal;white-space:pre-warp;word-wrap:break-word;transition:opacity var(--mdui-motion-duration-short4) var(--mdui-motion-easing-linear);font-size:var(--mdui-typescale-body-small-size);font-weight:var(--mdui-typescale-body-small-weight);letter-spacing:var(--mdui-typescale-body-small-tracking);line-height:var(--mdui-typescale-body-small-line-height)} '); (async function (vue) { 'use strict'; var _a; function isObject(obj) { return obj !== null && typeof obj === "object" && "constructor" in obj && obj.constructor === Object; } function extend$1(target = {}, src = {}) { Object.keys(src).forEach((key2) => { if (typeof target[key2] === "undefined") target[key2] = src[key2]; else if (isObject(src[key2]) && isObject(target[key2]) && Object.keys(src[key2]).length > 0) { extend$1(target[key2], src[key2]); } }); } const ssrDocument = { body: {}, addEventListener() { }, removeEventListener() { }, activeElement: { blur() { }, nodeName: "" }, querySelector() { return null; }, querySelectorAll() { return []; }, getElementById() { return null; }, createEvent() { return { initEvent() { } }; }, createElement() { return { children: [], childNodes: [], style: {}, setAttribute() { }, getElementsByTagName() { return []; } }; }, createElementNS() { return {}; }, importNode() { return null; }, location: { hash: "", host: "", hostname: "", href: "", origin: "", pathname: "", protocol: "", search: "" } }; function getDocument() { const doc = typeof document !== "undefined" ? document : {}; extend$1(doc, ssrDocument); return doc; } const ssrWindow = { document: ssrDocument, navigator: { userAgent: "" }, location: { hash: "", host: "", hostname: "", href: "", origin: "", pathname: "", protocol: "", search: "" }, history: { replaceState() { }, pushState() { }, go() { }, back() { } }, CustomEvent: function CustomEvent2() { return this; }, addEventListener() { }, removeEventListener() { }, getComputedStyle() { return { getPropertyValue() { return ""; } }; }, Image() { }, Date() { }, screen: {}, setTimeout() { }, clearTimeout() { }, matchMedia() { return {}; }, requestAnimationFrame(callback) { if (typeof setTimeout === "undefined") { callback(); return null; } return setTimeout(callback, 0); }, cancelAnimationFrame(id2) { if (typeof setTimeout === "undefined") { return; } clearTimeout(id2); } }; function getWindow$1() { const win = typeof window !== "undefined" ? window : {}; extend$1(win, ssrWindow); return win; } const getNodeName$1 = (element) => { return (element == null ? undefined : element.nodeName.toLowerCase()) ?? ""; }; const isNodeName = (element, name) => { return (element == null ? undefined : element.nodeName.toLowerCase()) === name.toLowerCase(); }; const isFunction = (target) => { return typeof target === "function"; }; const isString = (target) => { return typeof target === "string"; }; const isNumber = (target) => { return typeof target === "number"; }; const isBoolean = (target) => { return typeof target === "boolean"; }; const isUndefined = (target) => { return typeof target === "undefined"; }; const isNull = (target) => { return target === null; }; const isWindow = (target) => { return typeof Window !== "undefined" && target instanceof Window; }; const isDocument = (target) => { return typeof Document !== "undefined" && target instanceof Document; }; const isElement = (target) => { return typeof Element !== "undefined" && target instanceof Element; }; const isNode$1 = (target) => { return typeof Node !== "undefined" && target instanceof Node; }; const isArrayLike = (target) => { return !isFunction(target) && !isWindow(target) && isNumber(target.length); }; const isObjectLike = (target) => { return typeof target === "object" && target !== null; }; const toElement = (target) => { return isDocument(target) ? target.documentElement : target; }; const toCamelCase = (string) => { return string.replace(/-([a-z])/g, (_2, letter) => { return letter.toUpperCase(); }); }; const toKebabCase = (string) => { if (!string) { return string; } return string.replace(/^./, string[0].toLowerCase()).replace(/[A-Z]/g, (replacer) => { return "-" + replacer.toLowerCase(); }); }; const returnFalse = () => { return false; }; const returnTrue = () => { return true; }; const eachArray = (target, callback) => { for (let i3 = 0; i3 < target.length; i3 += 1) { if (callback.call(target[i3], target[i3], i3) === false) { return target; } } return target; }; const eachObject = (target, callback) => { const keys = Object.keys(target); for (let i3 = 0; i3 < keys.length; i3 += 1) { const key2 = keys[i3]; if (callback.call(target[key2], key2, target[key2]) === false) { return target; } } return target; }; class JQ { constructor(arr) { this.length = 0; if (!arr) { return this; } eachArray(arr, (item, i3) => { this[i3] = item; }); this.length = arr.length; return this; } } const isDomReady = (document2 = getDocument()) => { return /complete|interactive/.test(document2.readyState); }; const createElement = (tagName) => { const document2 = getDocument(); return document2.createElement(tagName); }; const appendChild = (element, child) => { return element.appendChild(child); }; const removeChild = (element) => { return element.parentNode ? element.parentNode.removeChild(element) : element; }; const getChildNodesArray = (target, parent) => { const tempParent = createElement(parent); tempParent.innerHTML = target; return [].slice.call(tempParent.childNodes); }; const get$ = () => { const $2 = function(selector) { if (!selector) { return new JQ(); } if (selector instanceof JQ) { return selector; } if (isFunction(selector)) { const document2 = getDocument(); if (isDomReady(document2)) { selector.call(document2, $2); } else { document2.addEventListener("DOMContentLoaded", () => selector.call(document2, $2), { once: true }); } return new JQ([document2]); } if (isString(selector)) { const html = selector.trim(); if (html.startsWith("<") && html.endsWith(">")) { let toCreate = "div"; const tags = { li: "ul", tr: "tbody", td: "tr", th: "tr", tbody: "table", option: "select" }; eachObject(tags, (childTag, parentTag) => { if (html.startsWith(`<${childTag}`)) { toCreate = parentTag; return false; } return; }); return new JQ(getChildNodesArray(html, toCreate)); } const document2 = getDocument(); return new JQ(document2.querySelectorAll(selector)); } if (isArrayLike(selector) && !isNode$1(selector)) { return new JQ(selector); } return new JQ([selector]); }; $2.fn = JQ.prototype; return $2; }; const $$1 = get$(); const merge = (first, second) => { eachArray(second, (value) => { first.push(value); }); return first; }; const unique = (arr) => { return [...new Set(arr)]; }; $$1.fn.get = function(index) { return index === undefined ? [].slice.call(this) : this[index >= 0 ? index : index + this.length]; }; $$1.fn.add = function(selector) { return new JQ(unique(merge(this.get(), $$1(selector).get()))); }; const getAttribute = (element, key2, defaultValue2) => { const value = element.getAttribute(key2); return isNull(value) ? defaultValue2 : value; }; const removeAttribute = (element, key2) => { element.removeAttribute(key2); }; const setAttribute = (element, key2, value) => { isNull(value) ? removeAttribute(element, key2) : element.setAttribute(key2, value); }; $$1.fn.each = function(callback) { return eachArray(this, (value, index) => { return callback.call(value, index, value); }); }; eachArray(["add", "remove", "toggle"], (name) => { $$1.fn[`${name}Class`] = function(className2) { if (name === "remove" && !arguments.length) { return this.each((_2, element) => { setAttribute(element, "class", ""); }); } return this.each((i3, element) => { if (!isElement(element)) { return; } const classes = (isFunction(className2) ? className2.call(element, i3, getAttribute(element, "class", "")) : className2).split(" ").filter((name2) => name2); eachArray(classes, (cls) => { element.classList[name](cls); }); }); }; }); eachArray(["insertBefore", "insertAfter"], (name, nameIndex) => { $$1.fn[name] = function(target) { const $element = nameIndex ? $$1(this.get().reverse()) : this; const $target = $$1(target); const result = []; $target.each((index, target2) => { if (!target2.parentNode) { return; } $element.each((_2, element) => { const newItem = index ? element.cloneNode(true) : element; const existingItem = nameIndex ? target2.nextSibling : target2; result.push(newItem); target2.parentNode.insertBefore(newItem, existingItem); }); }); return $$1(nameIndex ? result.reverse() : result); }; }); const isPlainText = (target) => { return isString(target) && !(target.startsWith("<") && target.endsWith(">")); }; eachArray(["before", "after"], (name, nameIndex) => { $$1.fn[name] = function(...args) { if (nameIndex === 1) { args = args.reverse(); } return this.each((index, element) => { const targets = isFunction(args[0]) ? [args[0].call(element, index, element.innerHTML)] : args; eachArray(targets, (target) => { let $target; if (isPlainText(target)) { $target = $$1(getChildNodesArray(target, "div")); } else if (index && isElement(target)) { $target = $$1(target.cloneNode(true)); } else { $target = $$1(target); } $target[nameIndex ? "insertAfter" : "insertBefore"](element); }); }); }; }); function each(target, callback) { return isArrayLike(target) ? eachArray(target, (value, index) => { return callback.call(value, index, value); }) : eachObject(target, callback); } function map(elements, callback) { const window2 = getWindow$1(); let value; const ret = []; each(elements, (i3, element) => { value = callback.call(window2, element, i3); if (value != null) { ret.push(value); } }); return [].concat(...ret); } $$1.fn.map = function(callback) { return new JQ(map(this, (element, i3) => { return callback.call(element, i3, element); })); }; $$1.fn.clone = function() { return this.map(function() { return this.cloneNode(true); }); }; $$1.fn.is = function(selector) { let isMatched = false; if (isFunction(selector)) { this.each((index, element) => { if (selector.call(element, index, element)) { isMatched = true; } }); return isMatched; } if (isString(selector)) { this.each((_2, element) => { if (isDocument(element) || isWindow(element)) { return; } if (element.matches.call(element, selector)) { isMatched = true; } }); return isMatched; } const $compareWith = $$1(selector); this.each((_2, element) => { $compareWith.each((_3, compare) => { if (element === compare) { isMatched = true; } }); }); return isMatched; }; $$1.fn.remove = function(selector) { return this.each((_2, element) => { if (!selector || $$1(element).is(selector)) { removeChild(element); } }); }; eachArray(["prepend", "append"], (name, nameIndex) => { $$1.fn[name] = function(...args) { return this.each((index, element) => { const childNodes = element.childNodes; const childLength = childNodes.length; const child = childLength ? childNodes[nameIndex ? childLength - 1 : 0] : createElement("div"); if (!childLength) { appendChild(element, child); } let contents = isFunction(args[0]) ? [args[0].call(element, index, element.innerHTML)] : args; if (index) { contents = contents.map((content) => { return isString(content) ? content : $$1(content).clone(); }); } $$1(child)[nameIndex ? "after" : "before"](...contents); if (!childLength) { removeChild(child); } }); }; }); eachArray(["appendTo", "prependTo"], (name, nameIndex) => { $$1.fn[name] = function(target) { const extraChilds = []; const $target = $$1(target).map((_2, element) => { const childNodes = element.childNodes; const childLength = childNodes.length; if (childLength) { return childNodes[nameIndex ? 0 : childLength - 1]; } const child = createElement("div"); appendChild(element, child); extraChilds.push(child); return child; }); const $result = this[nameIndex ? "insertBefore" : "insertAfter"]($target); $$1(extraChilds).remove(); return $result; }; }); const getComputedStyleValue = (element, name) => { const window2 = getWindow$1(); return window2.getComputedStyle(element).getPropertyValue(toKebabCase(name)); }; const isBorderBox = (element) => { return getComputedStyleValue(element, "box-sizing") === "border-box"; }; const getExtraWidth = (element, direction, extra) => { const position = direction === "width" ? ["Left", "Right"] : ["Top", "Bottom"]; return [0, 1].reduce((prev, _2, index) => { let prop = extra + position[index]; if (extra === "border") { prop += "Width"; } return prev + parseFloat(getComputedStyleValue(element, prop) || "0"); }, 0); }; const getStyle = (element, name) => { if (name === "width" || name === "height") { const valueNumber = element.getBoundingClientRect()[name]; if (isBorderBox(element)) { return `${valueNumber}px`; } return `${valueNumber - getExtraWidth(element, name, "border") - getExtraWidth(element, name, "padding")}px`; } return getComputedStyleValue(element, name); }; const cssNumber = [ "animation-iteration-count", "column-count", "fill-opacity", "flex-grow", "flex-shrink", "font-weight", "grid-area", "grid-column", "grid-column-end", "grid-column-start", "grid-row", "grid-row-end", "grid-row-start", "line-height", "opacity", "order", "orphans", "widows", "z-index", "zoom" ]; eachArray(["attr", "prop", "css"], (name, nameIndex) => { const set2 = (element, key2, value) => { if (isUndefined(value)) { return; } if (nameIndex === 0) { return setAttribute(element, key2, value); } if (nameIndex === 1) { element[key2] = value; return; } key2 = toKebabCase(key2); const getSuffix = () => key2.startsWith("--") || cssNumber.includes(key2) ? "" : "px"; element.style.setProperty(key2, isNumber(value) ? `${value}${getSuffix()}` : value); }; const get2 = (element, key2) => { if (nameIndex === 0) { return getAttribute(element, key2); } if (nameIndex === 1) { return element[key2]; } return getStyle(element, key2); }; $$1.fn[name] = function(key2, value) { if (isObjectLike(key2)) { eachObject(key2, (k2, v2) => { this[name](k2, v2); }); return this; } if (arguments.length === 1) { const element = this[0]; return isElement(element) ? get2(element, key2) : undefined; } return this.each((i3, element) => { set2(element, key2, isFunction(value) ? value.call(element, i3, get2(element, key2)) : value); }); }; }); $$1.fn.children = function(selector) { const children = []; this.each((_2, element) => { eachArray(element.childNodes, (childNode) => { if (!isElement(childNode)) { return; } if (!selector || $$1(childNode).is(selector)) { children.push(childNode); } }); }); return new JQ(unique(children)); }; $$1.fn.slice = function(...args) { return new JQ([].slice.apply(this, args)); }; $$1.fn.eq = function(index) { const ret = index === -1 ? this.slice(index) : this.slice(index, +index + 1); return new JQ(ret); }; const dir = ($elements, nameIndex, node, selector, filter) => { const ret = []; let target; $elements.each((_2, element) => { target = element[node]; while (target && isElement(target)) { if (nameIndex === 2) { if (selector && $$1(target).is(selector)) { break; } if (!filter || $$1(target).is(filter)) { ret.push(target); } } else if (nameIndex === 0) { if (!selector || $$1(target).is(selector)) { ret.push(target); } break; } else { if (!selector || $$1(target).is(selector)) { ret.push(target); } } target = target[node]; } }); return new JQ(unique(ret)); }; eachArray(["", "s", "sUntil"], (name, nameIndex) => { $$1.fn[`parent${name}`] = function(selector, filter) { const $nodes = !nameIndex ? this : $$1(this.get().reverse()); return dir($nodes, nameIndex, "parentNode", selector, filter); }; }); $$1.fn.closest = function(selector) { if (this.is(selector)) { return this; } const matched = []; this.parents().each((_2, element) => { if ($$1(element).is(selector)) { matched.push(element); return false; } }); return new JQ(matched); }; const weakMap$2 = /* @__PURE__ */ new WeakMap(); const getAll = (element) => { return weakMap$2.get(element) ?? {}; }; const get$2 = (element, keyOriginal) => { const data2 = getAll(element); const key2 = toCamelCase(keyOriginal); return key2 in data2 ? data2[key2] : undefined; }; const setAll = (element, object) => { const data2 = getAll(element); eachObject(object, (keyOriginal, value) => { data2[toCamelCase(keyOriginal)] = value; }); weakMap$2.set(element, data2); }; const set$2 = (element, keyOriginal, value) => { setAll(element, { [keyOriginal]: value }); }; const removeAll = (element) => { weakMap$2.delete(element); }; const removeMultiple = (element, keysOriginal) => { const data2 = getAll(element); eachArray(keysOriginal, (keyOriginal) => { const key2 = toCamelCase(keyOriginal); delete data2[key2]; }); weakMap$2.set(element, data2); }; const rbrace = /^(?:{[\w\W]*\}|\[[\w\W]*\])$/; const stringTransform = (value) => { if (value === "true") { return true; } if (value === "false") { return false; } if (value === "null") { return null; } if (value === +value + "") { return +value; } if (rbrace.test(value)) { return JSON.parse(value); } return value; }; const dataAttr = (element, key2, value) => { if (isUndefined(value) && element.nodeType === 1) { value = element.dataset[key2]; if (isString(value)) { try { value = stringTransform(value); } catch (e3) { } } } return value; }; $$1.fn.data = function(key2, value) { if (isUndefined(key2)) { if (!this.length) { return undefined; } const element = this[0]; const resultData = getAll(element); if (element.nodeType !== 1) { return resultData; } eachObject(element.dataset, (key3) => { resultData[key3] = dataAttr(element, key3, resultData[key3]); }); return resultData; } if (isObjectLike(key2)) { return this.each(function() { setAll(this, key2); }); } if (arguments.length === 2 && isUndefined(value)) { return this; } if (!isUndefined(value)) { return this.each(function() { set$2(this, key2, value); }); } if (!this.length) { return undefined; } return dataAttr(this[0], toCamelCase(key2), get$2(this[0], key2)); }; $$1.fn.empty = function() { return this.each((_2, element) => { element.innerHTML = ""; }); }; $$1.fn.extend = function(obj) { eachObject(obj, (prop, value) => { $$1.fn[prop] = value; }); return this; }; $$1.fn.filter = function(selector) { if (isFunction(selector)) { return this.map((index, element) => { return selector.call(element, index, element) ? element : undefined; }); } if (isString(selector)) { return this.map((_2, element) => { return $$1(element).is(selector) ? element : undefined; }); } const $selector = $$1(selector); return this.map((_2, element) => { return $selector.get().includes(element) ? element : undefined; }); }; $$1.fn.find = function(selector) { const foundElements = []; this.each((_2, element) => { merge(foundElements, $$1(element.querySelectorAll(selector)).get()); }); return new JQ(foundElements); }; $$1.fn.first = function() { return this.eq(0); }; const contains = (container2, contains2) => { return container2 !== contains2 && toElement(container2).contains(contains2); }; $$1.fn.has = function(selector) { const $targets = isString(selector) ? this.find(selector) : $$1(selector); const { length } = $targets; return this.map(function() { for (let i3 = 0; i3 < length; i3 += 1) { if (contains(this, $targets[i3])) { return this; } } return; }); }; $$1.fn.hasClass = function(className2) { return this[0].classList.contains(className2); }; const handleExtraWidth = (element, name, value, funcIndex, includeMargin, multiply) => { const getExtraWidthValue = (extra) => { return getExtraWidth(element, name.toLowerCase(), extra) * multiply; }; if (funcIndex === 2 && includeMargin) { value += getExtraWidthValue("margin"); } if (isBorderBox(element)) { if (funcIndex === 0) { value -= getExtraWidthValue("border"); } if (funcIndex === 1) { value -= getExtraWidthValue("border"); value -= getExtraWidthValue("padding"); } } else { if (funcIndex === 0) { value += getExtraWidthValue("padding"); } if (funcIndex === 2) { value += getExtraWidthValue("border"); value += getExtraWidthValue("padding"); } } return value; }; const get$1 = (element, name, funcIndex, includeMargin) => { const document2 = getDocument(); const clientProp = `client${name}`; const scrollProp = `scroll${name}`; const offsetProp = `offset${name}`; const innerProp = `inner${name}`; if (isWindow(element)) { return funcIndex === 2 ? element[innerProp] : toElement(document2)[clientProp]; } if (isDocument(element)) { const doc = toElement(element); return Math.max( // @ts-ignore element.body[scrollProp], doc[scrollProp], // @ts-ignore element.body[offsetProp], doc[offsetProp], doc[clientProp] ); } const value = parseFloat(getComputedStyleValue(element, name.toLowerCase()) || "0"); return handleExtraWidth(element, name, value, funcIndex, includeMargin, 1); }; const set$1 = (element, elementIndex, name, funcIndex, includeMargin, value) => { let computedValue = isFunction(value) ? value.call(element, elementIndex, get$1(element, name, funcIndex, includeMargin)) : value; if (computedValue == null) { return; } const $element = $$1(element); const dimension = name.toLowerCase(); if (isString(computedValue) && ["auto", "inherit", ""].includes(computedValue)) { $element.css(dimension, computedValue); return; } const suffix = computedValue.toString().replace(/\b[0-9.]*/, ""); const numerical = parseFloat(computedValue); computedValue = handleExtraWidth(element, name, numerical, funcIndex, includeMargin, -1) + (suffix || "px"); $element.css(dimension, computedValue); }; eachArray(["Width", "Height"], (name) => { eachArray([`inner${name}`, name.toLowerCase(), `outer${name}`], (funcName, funcIndex) => { $$1.fn[funcName] = function(margin, value) { const isSet = arguments.length && (funcIndex < 2 || !isBoolean(margin)); const includeMargin = margin === true || value === true; if (!isSet) { return this.length ? get$1(this[0], name, funcIndex, includeMargin) : undefined; } return this.each((index, element) => { return set$1(element, index, name, funcIndex, includeMargin, margin); }); }; }); }); $$1.fn.hide = function() { return this.each((_2, element) => { element.style.display = "none"; }); }; eachArray(["val", "html", "text"], (name, nameIndex) => { const props = ["value", "innerHTML", "textContent"]; const propName = props[nameIndex]; const get2 = ($elements) => { if (nameIndex === 2) { return map($elements, (element) => { return toElement(element)[propName]; }).join(""); } if (!$elements.length) { return undefined; } const firstElement = $elements[0]; const $firstElement = $$1(firstElement); if (nameIndex === 0 && $firstElement.is("select[multiple]")) { return map($firstElement.find("option:checked"), (element) => element.value); } return firstElement[propName]; }; const set2 = (element, value) => { if (isUndefined(value)) { if (nameIndex !== 0) { return; } value = ""; } if (nameIndex === 1 && isElement(value)) { value = value.outerHTML; } element[propName] = value; }; $$1.fn[name] = function(value) { if (!arguments.length) { return get2(this); } return this.each((i3, element) => { const $element = $$1(element); const computedValue = isFunction(value) ? value.call(element, i3, get2($element)) : value; if (nameIndex === 0 && Array.isArray(computedValue)) { if ($element.is("select[multiple]")) { map($element.find("option"), (option) => { return option.selected = computedValue.includes(option.value); }); } else { element.checked = computedValue.includes(element.value); } } else { set2(element, computedValue); } }); }; }); $$1.fn.index = function(selector) { if (!arguments.length) { return this.eq(0).parent().children().get().indexOf(this[0]); } if (isString(selector)) { return $$1(selector).get().indexOf(this[0]); } return this.get().indexOf($$1(selector)[0]); }; $$1.fn.last = function() { return this.eq(-1); }; eachArray(["", "All", "Until"], (name, nameIndex) => { $$1.fn[`next${name}`] = function(selector, filter) { return dir(this, nameIndex, "nextElementSibling", selector, filter); }; }); $$1.fn.not = function(selector) { const $excludes = this.filter(selector); return this.map((_2, element) => { return $excludes.index(element) > -1 ? undefined : element; }); }; const CustomEvent$1 = getWindow$1().CustomEvent; class MduiCustomEvent extends CustomEvent$1 { constructor(type, options) { super(type, options); this.data = options.data; this.namespace = options.namespace; } } const elementIdMap = /* @__PURE__ */ new WeakMap(); let elementId = 1; const getElementId = (element) => { if (!elementIdMap.has(element)) { elementIdMap.set(element, ++elementId); } return elementIdMap.get(element); }; const handlersMap = /* @__PURE__ */ new Map(); const getHandlers = (element) => { const id2 = getElementId(element); return handlersMap.get(id2) || handlersMap.set(id2, []).get(id2); }; const parse$1 = (type) => { const parts = type.split("."); return { type: parts[0], namespace: parts.slice(1).sort().join(" ") }; }; const matcherFor = (namespace) => { return new RegExp("(?:^| )" + namespace.replace(" ", " .* ?") + "(?: |$)"); }; const getMatchedHandlers = (element, type, func, selector) => { const event = parse$1(type); return getHandlers(element).filter((handler) => { return handler && (!event.type || handler.type === event.type) && (!event.namespace || matcherFor(event.namespace).test(handler.namespace)) && (!func || getElementId(handler.func) === getElementId(func)) && (!selector || handler.selector === selector); }); }; const add = (element, types, func, data2, selector) => { let useCapture = false; if (isObjectLike(data2) && data2.useCapture) { useCapture = true; } types.split(" ").forEach((type) => { if (!type) { return; } const event = parse$1(type); const callFn = (e3, elem) => { const result = func.apply( elem, // @ts-ignore e3.detail === null ? [e3] : [e3].concat(e3.detail) ); if (result === false) { e3.preventDefault(); e3.stopPropagation(); } }; const proxyFn = (e3) => { if (e3.namespace && !matcherFor(e3.namespace).test(event.namespace)) { return; } e3.data = data2; if (selector) { $$1(element).find(selector).get().reverse().forEach((elem) => { if (elem === e3.target || contains(elem, e3.target)) { callFn(e3, elem); } }); } else { callFn(e3, element); } }; const handler = { type: event.type, namespace: event.namespace, func, selector, id: getHandlers(element).length, proxy: proxyFn }; getHandlers(element).push(handler); element.addEventListener(handler.type, proxyFn, useCapture); }); }; const remove$1 = (element, types, func, selector) => { const handlersInElement = getHandlers(element); const removeEvent = (handler) => { delete handlersInElement[handler.id]; element.removeEventListener(handler.type, handler.proxy, false); }; if (!types) { handlersInElement.forEach((handler) => { removeEvent(handler); }); } else { types.split(" ").forEach((type) => { if (type) { getMatchedHandlers(element, type, func, selector).forEach((handler) => { removeEvent(handler); }); } }); } }; $$1.fn.off = function(types, selector, callback) { if (isObjectLike(types)) { eachObject(types, (type, fn) => { this.off(type, selector, fn); }); return this; } if (selector === false || isFunction(selector)) { callback = selector; selector = undefined; } if (callback === false) { callback = returnFalse; } return this.each(function() { remove$1(this, types, callback, selector); }); }; function extend(target, ...objectN) { eachArray(objectN, (object) => { eachObject(object, (prop, value) => { if (!isUndefined(value)) { target[prop] = value; } }); }); return target; } $$1.fn.offsetParent = function() { const document2 = getDocument(); return this.map(function() { let offsetParent = this.offsetParent; while (offsetParent && $$1(offsetParent).css("position") === "static") { offsetParent = offsetParent.offsetParent; } return offsetParent || document2.documentElement; }); }; const floatStyle = ($element, name) => { return parseFloat($element.css(name)); }; $$1.fn.position = function() { if (!this.length) { return undefined; } const $element = this.eq(0); let currentOffset; let parentOffset = { left: 0, top: 0 }; if ($element.css("position") === "fixed") { currentOffset = $element[0].getBoundingClientRect(); } else { currentOffset = $element.offset(); const $offsetParent = $element.offsetParent(); parentOffset = $offsetParent.offset(); parentOffset.top += floatStyle($offsetParent, "border-top-width"); parentOffset.left += floatStyle($offsetParent, "border-left-width"); } return { top: currentOffset.top - parentOffset.top - floatStyle($element, "margin-top"), left: currentOffset.left - parentOffset.left - floatStyle($element, "margin-left") }; }; const get = (element) => { if (!element.getClientRects().length) { return { top: 0, left: 0 }; } const { top, left } = element.getBoundingClientRect(); const { pageYOffset, pageXOffset } = element.ownerDocument.defaultView; return { top: top + pageYOffset, left: left + pageXOffset }; }; const set = (element, value, index) => { const $element = $$1(element); const position = $element.css("position"); if (position === "static") { $element.css("position", "relative"); } const currentOffset = get(element); const currentTopString = $element.css("top"); const currentLeftString = $element.css("left"); let currentTop; let currentLeft; const calculatePosition = (position === "absolute" || position === "fixed") && (currentTopString + currentLeftString).includes("auto"); if (calculatePosition) { const currentPosition = $element.position(); currentTop = currentPosition.top; currentLeft = currentPosition.left; } else { currentTop = parseFloat(currentTopString); currentLeft = parseFloat(currentLeftString); } const computedValue = isFunction(value) ? value.call(element, index, extend({}, currentOffset)) : value; $element.css({ top: computedValue.top != null ? computedValue.top - currentOffset.top + currentTop : undefined, left: computedValue.left != null ? computedValue.left - currentOffset.left + currentLeft : undefined }); }; $$1.fn.offset = function(value) { if (!arguments.length) { if (!this.length) { return undefined; } return get(this[0]); } return this.each(function(index) { set(this, value, index); }); }; $$1.fn.on = function(types, selector, data2, callback, one) { if (isObjectLike(types)) { if (!isString(selector)) { data2 = data2 || selector; selector = undefined; } eachObject(types, (type, fn) => { this.on(type, selector, data2, fn, one); }); return this; } if (data2 == null && callback == null) { callback = selector; data2 = selector = undefined; } else if (callback == null) { if (isString(selector)) { callback = data2; data2 = undefined; } else { callback = data2; data2 = selector; selector = undefined; } } if (callback === false) { callback = returnFalse; } else if (!callback) { return this; } if (one) { const _this = this; const origCallback = callback; callback = function(event, ...dataN) { _this.off(event.type, selector, callback); return origCallback.call(this, event, ...dataN); }; } return this.each(function() { add(this, types, callback, data2, selector); }); }; $$1.fn.one = function(types, selector, data2, callback) { return this.on(types, selector, data2, callback, true); }; eachArray(["", "All", "Until"], (name, nameIndex) => { $$1.fn[`prev${name}`] = function(selector, filter) { const $nodes = !nameIndex ? this : $$1(this.get().reverse()); return dir($nodes, nameIndex, "previousElementSibling", selector, filter); }; }); $$1.fn.removeAttr = function(attributeName) { const names = attributeName.split(" ").filter((name) => name); return this.each(function() { eachArray(names, (name) => { removeAttribute(this, name); }); }); }; const removeData = (element, name) => { if (isUndefined(name)) { return removeAll(element); } const keys = isString(name) ? name.split(" ").filter((nameItem) => nameItem) : name; removeMultiple(element, keys); }; $$1.fn.removeData = function(name) { return this.each((_2, element) => { removeData(element, name); }); }; $$1.fn.removeProp = function(name) { return this.each((_2, element) => { try { delete element[name]; } catch (e3) { } }); }; $$1.fn.replaceWith = function(newContent) { this.each((index, element) => { let content = newContent; if (isFunction(content)) { content = content.call(element, index, element.innerHTML); } else if (index && !isString(content)) { content = $$1(content).clone(); } $$1(element).before(content); }); return this.remove(); }; $$1.fn.replaceAll = function(target) { return $$1(target).map((index, element) => { $$1(element).replaceWith(index ? this.clone() : this); return this.get(); }); }; const param = (obj) => { if (!isObjectLike(obj) && !Array.isArray(obj)) { return ""; } const args = []; const destructure = (key2, value) => { let keyTmp; if (isObjectLike(value)) { eachObject(value, (i3, v2) => { keyTmp = Array.isArray(value) && !isObjectLike(v2) ? "" : i3; destructure(`${key2}[${keyTmp}]`, v2); }); } else { keyTmp = value == null || value === "" ? "=" : `=${encodeURIComponent(value)}`; args.push(encodeURIComponent(key2) + keyTmp); } }; if (Array.isArray(obj)) { eachArray(obj, ({ name, value }) => { return destructure(name, value); }); } else { eachObject(obj, destructure); } return args.join("&"); }; const formCollections = /* @__PURE__ */ new WeakMap(); const getFormControls = (form) => { const nativeFormControls = [...form.elements]; const formControls = formCollections.get(form) || []; const comparePosition = (a2, b2) => { const position = a2.compareDocumentPosition(b2); return position & Node.DOCUMENT_POSITION_FOLLOWING ? -1 : 1; }; return [...nativeFormControls, ...formControls].sort(comparePosition); }; const getFormControlsValue = ($elements) => { const result = []; $elements.each((_2, element) => { const elements = element instanceof HTMLFormElement ? getFormControls(element) : [element]; $$1(elements).each((_3, element2) => { const $element = $$1(element2); const type = element2.type; const nodeName = element2.nodeName.toLowerCase(); if (nodeName !== "fieldset" && element2.name && !element2.disabled && [ "input", "select", "textarea", "keygen", "mdui-checkbox", "mdui-radio-group", "mdui-switch", "mdui-text-field", "mdui-select", "mdui-slider", "mdui-range-slider", "mdui-segmented-button-group" ].includes(nodeName) && !["submit", "button", "image", "reset", "file"].includes(type) && (!["radio", "checkbox"].includes(type) || element2.checked) && (!["mdui-checkbox", "mdui-switch"].includes(nodeName) || element2.checked)) { result.push({ name: element2.name, value: $element.val() }); } }); }); return result; }; $$1.fn.serializeArray = function() { return getFormControlsValue(this).map((element) => { if (!Array.isArray(element.value)) { return element; } return element.value.map((value) => ({ name: element.name, value })); }).flat(); }; $$1.fn.serialize = function() { return param(this.serializeArray()); }; $$1.fn.serializeObject = function() { const result = {}; getFormControlsValue(this).forEach((element) => { const { name, value } = element; if (!result.hasOwnProperty(name)) { result[name] = value; } else { const originalValue = result[name]; if (!Array.isArray(originalValue)) { result[name] = [originalValue]; } if (Array.isArray(value)) { result[name].push(...value); } else { result[name].push(value); } } }); return result; }; const elementDisplay = {}; const defaultDisplay = (nodeName) => { const document2 = getDocument(); let element; let display; if (!elementDisplay[nodeName]) { element = createElement(nodeName); appendChild(document2.body, element); display = getStyle(element, "display"); removeChild(element); if (display === "none") { display = "block"; } elementDisplay[nodeName] = display; } return elementDisplay[nodeName]; }; $$1.fn.show = function() { return this.each((_2, element) => { if (element.style.display === "none") { element.style.display = ""; } if (getStyle(element, "display") === "none") { element.style.display = defaultDisplay(element.nodeName); } }); }; $$1.fn.siblings = function(selector) { return this.prevAll(selector).add(this.nextAll(selector)); }; $$1.fn.toggle = function() { return this.each((_2, element) => { getStyle(element, "display") === "none" ? $$1(element).show() : $$1(element).hide(); }); }; $$1.fn.trigger = function(name, detail = null, options) { const { type, namespace } = parse$1(name); const event = new MduiCustomEvent(type, { detail, data: null, namespace, bubbles: true, cancelable: false, composed: true, ...options }); return this.each((_2, element) => { element.dispatchEvent(event); }); }; const ajaxStart = "ajaxStart"; const ajaxSuccess = "ajaxSuccess"; const ajaxError = "ajaxError"; const ajaxComplete = "ajaxComplete"; const globalOptions = {}; const isQueryStringData = (method) => { return ["GET", "HEAD"].includes(method); }; const appendQuery = (url, query) => { return `${url}&${query}`.replace(/[&?]{1,2}/, "?"); }; const isCrossDomain = (url) => { const window2 = getWindow$1(); return /^([\w-]+:)?\/\/([^/]+)/.test(url) && RegExp.$2 !== window2.location.host; }; const isHttpStatusSuccess = (status) => { return status >= 200 && status < 300 || [0, 304].includes(status); }; const mergeOptions = (options) => { const defaults = { url: "", method: "GET", data: "", processData: true, async: true, cache: true, username: "", password: "", headers: {}, xhrFields: {}, statusCode: {}, dataType: "", contentType: "application/x-www-form-urlencoded", timeout: 0, global: true }; eachObject(globalOptions, (key2, value) => { const callbacks = [ "beforeSend", "success", "error", "complete", "statusCode" ]; if (!callbacks.includes(key2) && !isUndefined(value)) { defaults[key2] = value; } }); return extend({}, defaults, options); }; const ajax = (options) => { const document2 = getDocument(); const window2 = getWindow$1(); let isCanceled = false; const eventParams = {}; const successEventParams = {}; const mergedOptions = mergeOptions(options); const method = mergedOptions.method.toUpperCase(); let { data: data2, url } = mergedOptions; url = url || window2.location.toString(); const { processData, async, cache, username, password, headers, xhrFields, statusCode, dataType, contentType, timeout, global: global2 } = mergedOptions; const isMethodQueryString = isQueryStringData(method); if (data2 && (isMethodQueryString || processData) && !isString(data2) && !(data2 instanceof ArrayBuffer) && !(data2 instanceof Blob) && !(data2 instanceof Document) && !(data2 instanceof FormData)) { data2 = param(data2); } if (data2 && isMethodQueryString) { url = appendQuery(url, data2); data2 = null; } const trigger = (event, callback, ...args) => { if (global2) { $$1(document2).trigger(event, callback === "success" ? successEventParams : eventParams); } let resultGlobal; let resultCustom; if (callback in globalOptions) { resultGlobal = globalOptions[callback](...args); } if (mergedOptions[callback]) { resultCustom = mergedOptions[callback](...args); } if (callback === "beforeSend" && [resultGlobal, resultCustom].includes(false)) { isCanceled = true; } }; const XHR = () => { let textStatus; return new Promise((resolve, reject) => { const doReject = (reason) => { return reject(new Error(reason)); }; if (isMethodQueryString && !cache) { url = appendQuery(url, `_=${Date.now()}`); } const xhr = new XMLHttpRequest(); xhr.open(method, url, async, username, password); if (contentType || data2 && !isMethodQueryString && contentType !== false) { xhr.setRequestHeader("Content-Type", contentType); } if (dataType === "json") { xhr.setRequestHeader("Accept", "application/json, text/javascript"); } eachObject(headers, (key2, value) => { if (!isUndefined(value)) { xhr.setRequestHeader(key2, value + ""); } }); if (!isCrossDomain(url)) { xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest"); } eachObject(xhrFields, (key2, value) => { xhr[key2] = value; }); eventParams.xhr = successEventParams.xhr = xhr; eventParams.options = successEventParams.options = mergedOptions; let xhrTimeout; xhr.onload = () => { if (xhrTimeout) { clearTimeout(xhrTimeout); } const isSuccess = isHttpStatusSuccess(xhr.status); let responseData = undefined; if (isSuccess) { textStatus = xhr.status === 204 || method === "HEAD" ? "nocontent" : xhr.status === 304 ? "notmodified" : "success"; if (dataType === "json" || !dataType && (xhr.getResponseHeader("content-type") || "").includes("json")) { try { responseData = method === "HEAD" ? void 0 : JSON.parse(xhr.responseText); successEventParams.response = responseData; } catch (err) { textStatus = "parsererror"; trigger(ajaxError, "error", xhr, textStatus); doReject(textStatus); } if (textStatus !== "parsererror") { trigger(ajaxSuccess, "success", responseData, textStatus, xhr); resolve(responseData); } } else { responseData = method === "HEAD" ? undefined : xhr.responseType === "text" || xhr.responseType === "" ? xhr.responseText : xhr.response; successEventParams.response = responseData; trigger(ajaxSuccess, "success", responseData, textStatus, xhr); resolve(responseData); } } else { textStatus = "error"; trigger(ajaxError, "error", xhr, textStatus); doReject(textStatus); } eachArray([globalOptions.statusCode ?? {}, statusCode], (func) => { if (func[xhr.status]) { if (isSuccess) { func[xhr.status](responseData, textStatus, xhr); } else { func[xhr.status](xhr, textStatus); } } }); trigger(ajaxComplete, "complete", xhr, textStatus); }; xhr.onerror = () => { if (xhrTimeout) { clearTimeout(xhrTimeout); } trigger(ajaxError, "error", xhr, xhr.statusText); trigger(ajaxComplete, "complete", xhr, "error"); doReject(xhr.statusText); }; xhr.onabort = () => { let statusText = "abort"; if (xhrTimeout) { statusText = "timeout"; clearTimeout(xhrTimeout); } trigger(ajaxError, "error", xhr, statusText); trigger(ajaxComplete, "complete", xhr, statusText); doReject(statusText); }; trigger(ajaxStart, "beforeSend", xhr, mergedOptions); if (isCanceled) { return doReject("cancel"); } if (timeout > 0) { xhrTimeout = window2.setTimeout(() => xhr.abort(), timeout); } xhr.send(data2); }); }; return XHR(); }; $$1.ajax = ajax; const ajaxSetup = (options) => { return extend(globalOptions, options); }; $$1.ajaxSetup = ajaxSetup; $$1.contains = contains; function data(element, key2, value) { if (isObjectLike(key2)) { setAll(element, key2); return key2; } if (!isUndefined(value)) { set$2(element, key2, value); return value; } if (isUndefined(key2)) { return getAll(element); } return get$2(element, key2); } $$1.data = data; $$1.each = each; $$1.extend = function(target, ...objectN) { if (!objectN.length) { eachObject(target, (prop, value) => { this[prop] = value; }); return this; } return extend(target, ...objectN); }; $$1.map = map; $$1.merge = merge; $$1.param = param; $$1.removeData = removeData; $$1.unique = unique; function __decorate(decorators, target, key2, desc) { var c3 = arguments.length, r3 = c3 < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key2) : desc, d2; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r3 = Reflect.decorate(decorators, target, key2, desc); else for (var i3 = decorators.length - 1; i3 >= 0; i3--) if (d2 = decorators[i3]) r3 = (c3 < 3 ? d2(r3) : c3 > 3 ? d2(target, key2, r3) : d2(target, key2)) || r3; return c3 > 3 && r3 && Object.defineProperty(target, key2, r3), r3; } typeof SuppressedError === "function" ? SuppressedError : function(error, suppressed, message) { var e3 = new Error(message); return e3.name = "SuppressedError", e3.error = error, e3.suppressed = suppressed, e3; }; /** * @license * Copyright 2019 Google LLC * SPDX-License-Identifier: BSD-3-Clause */ const t$4 = globalThis, e$7 = t$4.ShadowRoot && (undefined === t$4.ShadyCSS || t$4.ShadyCSS.nativeShadow) && "adoptedStyleSheets" in Document.prototype && "replace" in CSSStyleSheet.prototype, s$3 = Symbol(), o$a = /* @__PURE__ */ new WeakMap(); let n$8 = class n { constructor(t2, e3, o2) { if (this._$cssResult$ = true, o2 !== s$3) throw Error("CSSResult is not constructable. Use `unsafeCSS` or `css` instead."); this.cssText = t2, this.t = e3; } get styleSheet() { let t2 = this.o; const s2 = this.t; if (e$7 && undefined === t2) { const e3 = undefined !== s2 && 1 === s2.length; e3 && (t2 = o$a.get(s2)), undefined === t2 && ((this.o = t2 = new CSSStyleSheet()).replaceSync(this.cssText), e3 && o$a.set(s2, t2)); } return t2; } toString() { return this.cssText; } }; const r$6 = (t2) => new n$8("string" == typeof t2 ? t2 : t2 + "", undefined, s$3), i$7 = (t2, ...e3) => { const o2 = 1 === t2.length ? t2[0] : e3.reduce((e4, s2, o3) => e4 + ((t3) => { if (true === t3._$cssResult$) return t3.cssText; if ("number" == typeof t3) return t3; throw Error("Value passed to 'css' function must be a 'css' function result: " + t3 + ". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security."); })(s2) + t2[o3 + 1], t2[0]); return new n$8(o2, t2, s$3); }, S$1 = (s2, o2) => { if (e$7) s2.adoptedStyleSheets = o2.map((t2) => t2 instanceof CSSStyleSheet ? t2 : t2.styleSheet); else for (const e3 of o2) { const o3 = document.createElement("style"), n3 = t$4.litNonce; undefined !== n3 && o3.setAttribute("nonce", n3), o3.textContent = e3.cssText, s2.appendChild(o3); } }, c$5 = e$7 ? (t2) => t2 : (t2) => t2 instanceof CSSStyleSheet ? ((t3) => { let e3 = ""; for (const s2 of t3.cssRules) e3 += s2.cssText; return r$6(e3); })(t2) : t2; /** * @license * Copyright 2017 Google LLC * SPDX-License-Identifier: BSD-3-Clause */ const { is: i$6, defineProperty: e$6, getOwnPropertyDescriptor: r$5, getOwnPropertyNames: h$4, getOwnPropertySymbols: o$9, getPrototypeOf: n$7 } = Object, a$1 = globalThis, c$4 = a$1.trustedTypes, l$2 = c$4 ? c$4.emptyScript : "", p$1 = a$1.reactiveElementPolyfillSupport, d$1 = (t2, s2) => t2, u$2 = { toAttribute(t2, s2) { switch (s2) { case Boolean: t2 = t2 ? l$2 : null; break; case Object: case Array: t2 = null == t2 ? t2 : JSON.stringify(t2); } return t2; }, fromAttribute(t2, s2) { let i3 = t2; switch (s2) { case Boolean: i3 = null !== t2; break; case Number: i3 = null === t2 ? null : Number(t2); break; case Object: case Array: try { i3 = JSON.parse(t2); } catch (t3) { i3 = null; } } return i3; } }, f$3 = (t2, s2) => !i$6(t2, s2), y$1 = { attribute: true, type: String, converter: u$2, reflect: false, hasChanged: f$3 }; Symbol.metadata ?? (Symbol.metadata = Symbol("metadata")), a$1.litPropertyMetadata ?? (a$1.litPropertyMetadata = /* @__PURE__ */ new WeakMap()); class b extends HTMLElement { static addInitializer(t2) { this._$Ei(), (this.l ?? (this.l = [])).push(t2); } static get observedAttributes() { return this.finalize(), this._$Eh && [...this._$Eh.keys()]; } static createProperty(t2, s2 = y$1) { if (s2.state && (s2.attribute = false), this._$Ei(), this.elementProperties.set(t2, s2), !s2.noAccessor) { const i3 = Symbol(), r3 = this.getPropertyDescriptor(t2, i3, s2); undefined !== r3 && e$6(this.prototype, t2, r3); } } static getPropertyDescriptor(t2, s2, i3) { const { get: e3, set: h2 } = r$5(this.prototype, t2) ?? { get() { return this[s2]; }, set(t3) { this[s2] = t3; } }; return { get() { return e3 == null ? undefined : e3.call(this); }, set(s3) { const r3 = e3 == null ? undefined : e3.call(this); h2.call(this, s3), this.requestUpdate(t2, r3, i3); }, configurable: true, enumerable: true }; } static getPropertyOptions(t2) { return this.elementProperties.get(t2) ?? y$1; } static _$Ei() { if (this.hasOwnProperty(d$1("elementProperties"))) return; const t2 = n$7(this); t2.finalize(), undefined !== t2.l && (this.l = [...t2.l]), this.elementProperties = new Map(t2.elementProperties); } static finalize() { if (this.hasOwnProperty(d$1("finalized"))) return; if (this.finalized = true, this._$Ei(), this.hasOwnProperty(d$1("properties"))) { const t3 = this.properties, s2 = [...h$4(t3), ...o$9(t3)]; for (const i3 of s2) this.createProperty(i3, t3[i3]); } const t2 = this[Symbol.metadata]; if (null !== t2) { const s2 = litPropertyMetadata.get(t2); if (undefined !== s2) for (const [t3, i3] of s2) this.elementProperties.set(t3, i3); } this._$Eh = /* @__PURE__ */ new Map(); for (const [t3, s2] of this.elementProperties) { const i3 = this._$Eu(t3, s2); undefined !== i3 && this._$Eh.set(i3, t3); } this.elementStyles = this.finalizeStyles(this.styles); } static finalizeStyles(s2) { const i3 = []; if (Array.isArray(s2)) { const e3 = new Set(s2.flat(1 / 0).reverse()); for (const s3 of e3) i3.unshift(c$5(s3)); } else undefined !== s2 && i3.push(c$5(s2)); return i3; } static _$Eu(t2, s2) { const i3 = s2.attribute; return false === i3 ? undefined : "string" == typeof i3 ? i3 : "string" == typeof t2 ? t2.toLowerCase() : undefined; } constructor() { super(), this._$Ep = undefined, this.isUpdatePending = false, this.hasUpdated = false, this._$Em = null, this._$Ev(); } _$Ev() { var _a2; this._$ES = new Promise((t2) => this.enableUpdating = t2), this._$AL = /* @__PURE__ */ new Map(), this._$E_(), this.requestUpdate(), (_a2 = this.constructor.l) == null ? undefined : _a2.forEach((t2) => t2(this)); } addController(t2) { var _a2; (this._$EO ?? (this._$EO = /* @__PURE__ */ new Set())).add(t2), undefined !== this.renderRoot && this.isConnected && ((_a2 = t2.hostConnected) == null ? undefined : _a2.call(t2)); } removeController(t2) { var _a2; (_a2 = this._$EO) == null ? undefined : _a2.delete(t2); } _$E_() { const t2 = /* @__PURE__ */ new Map(), s2 = this.constructor.elementProperties; for (const i3 of s2.keys()) this.hasOwnProperty(i3) && (t2.set(i3, this[i3]), delete this[i3]); t2.size > 0 && (this._$Ep = t2); } createRenderRoot() { const t2 = this.shadowRoot ?? this.attachShadow(this.constructor.shadowRootOptions); return S$1(t2, this.constructor.elementStyles), t2; } connectedCallback() { var _a2; this.renderRoot ?? (this.renderRoot = this.createRenderRoot()), this.enableUpdating(true), (_a2 = this._$EO) == null ? undefined : _a2.forEach((t2) => { var _a3; return (_a3 = t2.hostConnected) == null ? undefined : _a3.call(t2); }); } enableUpdating(t2) { } disconnectedCallback() { var _a2; (_a2 = this._$EO) == null ? undefined : _a2.forEach((t2) => { var _a3; return (_a3 = t2.hostDisconnected) == null ? undefined : _a3.call(t2); }); } attributeChangedCallback(t2, s2, i3) { this._$AK(t2, i3); } _$EC(t2, s2) { var _a2; const i3 = this.constructor.elementProperties.get(t2), e3 = this.constructor._$Eu(t2, i3); if (undefined !== e3 && true === i3.reflect) { const r3 = (undefined !== ((_a2 = i3.converter) == null ? undefined : _a2.toAttribute) ? i3.converter : u$2).toAttribute(s2, i3.type); this._$Em = t2, null == r3 ? this.removeAttribute(e3) : this.setAttribute(e3, r3), this._$Em = null; } } _$AK(t2, s2) { var _a2; const i3 = this.constructor, e3 = i3._$Eh.get(t2); if (undefined !== e3 && this._$Em !== e3) { const t3 = i3.getPropertyOptions(e3), r3 = "function" == typeof t3.converter ? { fromAttribute: t3.converter } : undefined !== ((_a2 = t3.converter) == null ? undefined : _a2.fromAttribute) ? t3.converter : u$2; this._$Em = e3, this[e3] = r3.fromAttribute(s2, t3.type), this._$Em = null; } } requestUpdate(t2, s2, i3) { if (undefined !== t2) { if (i3 ?? (i3 = this.constructor.getPropertyOptions(t2)), !(i3.hasChanged ?? f$3)(this[t2], s2)) return; this.P(t2, s2, i3); } false === this.isUpdatePending && (this._$ES = this._$ET()); } P(t2, s2, i3) { this._$AL.has(t2) || this._$AL.set(t2, s2), true === i3.reflect && this._$Em !== t2 && (this._$Ej ?? (this._$Ej = /* @__PURE__ */ new Set())).add(t2); } async _$ET() { this.isUpdatePending = true; try { await this._$ES; } catch (t3) { Promise.reject(t3); } const t2 = this.scheduleUpdate(); return null != t2 && await t2, !this.isUpdatePending; } scheduleUpdate() { return this.performUpdate(); } performUpdate() { var _a2; if (!this.isUpdatePending) return; if (!this.hasUpdated) { if (this.renderRoot ?? (this.renderRoot = this.createRenderRoot()), this._$Ep) { for (const [t4, s3] of this._$Ep) this[t4] = s3; this._$Ep = undefined; } const t3 = this.constructor.elementProperties; if (t3.size > 0) for (const [s3, i3] of t3) true !== i3.wrapped || this._$AL.has(s3) || undefined === this[s3] || this.P(s3, this[s3], i3); } let t2 = false; const s2 = this._$AL; try { t2 = this.shouldUpdate(s2), t2 ? (this.willUpdate(s2), (_a2 = this._$EO) == null ? void 0 : _a2.forEach((t3) => { var _a3; return (_a3 = t3.hostUpdate) == null ? void 0 : _a3.call(t3); }), this.update(s2)) : this._$EU(); } catch (s3) { throw t2 = false, this._$EU(), s3; } t2 && this._$AE(s2); } willUpdate(t2) { } _$AE(t2) { var _a2; (_a2 = this._$EO) == null ? undefined : _a2.forEach((t3) => { var _a3; return (_a3 = t3.hostUpdated) == null ? undefined : _a3.call(t3); }), this.hasUpdated || (this.hasUpdated = true, this.firstUpdated(t2)), this.updated(t2); } _$EU() { this._$AL = /* @__PURE__ */ new Map(), this.isUpdatePending = false; } get updateComplete() { return this.getUpdateComplete(); } getUpdateComplete() { return this._$ES; } shouldUpdate(t2) { return true; } update(t2) { this._$Ej && (this._$Ej = this._$Ej.forEach((t3) => this._$EC(t3, this[t3]))), this._$EU(); } updated(t2) { } firstUpdated(t2) { } } b.elementStyles = [], b.shadowRootOptions = { mode: "open" }, b[d$1("elementProperties")] = /* @__PURE__ */ new Map(), b[d$1("finalized")] = /* @__PURE__ */ new Map(), p$1 == null ? undefined : p$1({ ReactiveElement: b }), (a$1.reactiveElementVersions ?? (a$1.reactiveElementVersions = [])).push("2.0.4"); /** * @license * Copyright 2017 Google LLC * SPDX-License-Identifier: BSD-3-Clause */ const t$3 = globalThis, i$5 = t$3.trustedTypes, s$2 = i$5 ? i$5.createPolicy("lit-html", { createHTML: (t2) => t2 }) : undefined, e$5 = "$lit$", h$3 = `lit$${Math.random().toFixed(9).slice(2)}$`, o$8 = "?" + h$3, n$6 = `<${o$8}>`, r$4 = document, l$1 = () => r$4.createComment(""), c$3 = (t2) => null === t2 || "object" != typeof t2 && "function" != typeof t2, a = Array.isArray, u$1 = (t2) => a(t2) || "function" == typeof (t2 == null ? undefined : t2[Symbol.iterator]), d = "[ \n\f\r]", f$2 = /<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g, v = /-->/g, _ = />/g, m$2 = RegExp(`>|${d}(?:([^\\s"'>=/]+)(${d}*=${d}*(?:[^ \f\r"'\`<>=]|("|')|))|$)`, "g"), p = /'/g, g = /"/g, $ = /^(?:script|style|textarea|title)$/i, y = (t2) => (i3, ...s2) => ({ _$litType$: t2, strings: i3, values: s2 }), x = y(1), T = Symbol.for("lit-noChange"), E = Symbol.for("lit-nothing"), A = /* @__PURE__ */ new WeakMap(), C = r$4.createTreeWalker(r$4, 129); function P(t2, i3) { if (!a(t2) || !t2.hasOwnProperty("raw")) throw Error("invalid template strings array"); return undefined !== s$2 ? s$2.createHTML(i3) : i3; } const V = (t2, i3) => { const s2 = t2.length - 1, o2 = []; let r3, l2 = 2 === i3 ? "" : 3 === i3 ? "" : "", c3 = f$2; for (let i4 = 0; i4 < s2; i4++) { const s3 = t2[i4]; let a2, u2, d2 = -1, y2 = 0; for (; y2 < s3.length && (c3.lastIndex = y2, u2 = c3.exec(s3), null !== u2); ) y2 = c3.lastIndex, c3 === f$2 ? "!--" === u2[1] ? c3 = v : undefined !== u2[1] ? c3 = _ : undefined !== u2[2] ? ($.test(u2[2]) && (r3 = RegExp("" === u2[0] ? (c3 = r3 ?? f$2, d2 = -1) : undefined === u2[1] ? d2 = -2 : (d2 = c3.lastIndex - u2[2].length, a2 = u2[1], c3 = undefined === u2[3] ? m$2 : '"' === u2[3] ? g : p) : c3 === g || c3 === p ? c3 = m$2 : c3 === v || c3 === _ ? c3 = f$2 : (c3 = m$2, r3 = undefined); const x2 = c3 === m$2 && t2[i4 + 1].startsWith("/>") ? " " : ""; l2 += c3 === f$2 ? s3 + n$6 : d2 >= 0 ? (o2.push(a2), s3.slice(0, d2) + e$5 + s3.slice(d2) + h$3 + x2) : s3 + h$3 + (-2 === d2 ? i4 : x2); } return [P(t2, l2 + (t2[s2] || "") + (2 === i3 ? "" : 3 === i3 ? "" : "")), o2]; }; class N { constructor({ strings: t2, _$litType$: s2 }, n3) { let r3; this.parts = []; let c3 = 0, a2 = 0; const u2 = t2.length - 1, d2 = this.parts, [f2, v2] = V(t2, s2); if (this.el = N.createElement(f2, n3), C.currentNode = this.el.content, 2 === s2 || 3 === s2) { const t3 = this.el.content.firstChild; t3.replaceWith(...t3.childNodes); } for (; null !== (r3 = C.nextNode()) && d2.length < u2; ) { if (1 === r3.nodeType) { if (r3.hasAttributes()) for (const t3 of r3.getAttributeNames()) if (t3.endsWith(e$5)) { const i3 = v2[a2++], s3 = r3.getAttribute(t3).split(h$3), e3 = /([.?@])?(.*)/.exec(i3); d2.push({ type: 1, index: c3, name: e3[2], strings: s3, ctor: "." === e3[1] ? H : "?" === e3[1] ? I : "@" === e3[1] ? L : k }), r3.removeAttribute(t3); } else t3.startsWith(h$3) && (d2.push({ type: 6, index: c3 }), r3.removeAttribute(t3)); if ($.test(r3.tagName)) { const t3 = r3.textContent.split(h$3), s3 = t3.length - 1; if (s3 > 0) { r3.textContent = i$5 ? i$5.emptyScript : ""; for (let i3 = 0; i3 < s3; i3++) r3.append(t3[i3], l$1()), C.nextNode(), d2.push({ type: 2, index: ++c3 }); r3.append(t3[s3], l$1()); } } } else if (8 === r3.nodeType) if (r3.data === o$8) d2.push({ type: 2, index: c3 }); else { let t3 = -1; for (; -1 !== (t3 = r3.data.indexOf(h$3, t3 + 1)); ) d2.push({ type: 7, index: c3 }), t3 += h$3.length - 1; } c3++; } } static createElement(t2, i3) { const s2 = r$4.createElement("template"); return s2.innerHTML = t2, s2; } } function S(t2, i3, s2 = t2, e3) { var _a2, _b; if (i3 === T) return i3; let h2 = undefined !== e3 ? (_a2 = s2._$Co) == null ? undefined : _a2[e3] : s2._$Cl; const o2 = c$3(i3) ? undefined : i3._$litDirective$; return (h2 == null ? undefined : h2.constructor) !== o2 && ((_b = h2 == null ? undefined : h2._$AO) == null ? undefined : _b.call(h2, false), undefined === o2 ? h2 = undefined : (h2 = new o2(t2), h2._$AT(t2, s2, e3)), undefined !== e3 ? (s2._$Co ?? (s2._$Co = []))[e3] = h2 : s2._$Cl = h2), undefined !== h2 && (i3 = S(t2, h2._$AS(t2, i3.values), h2, e3)), i3; } class M { constructor(t2, i3) { this._$AV = [], this._$AN = undefined, this._$AD = t2, this._$AM = i3; } get parentNode() { return this._$AM.parentNode; } get _$AU() { return this._$AM._$AU; } u(t2) { const { el: { content: i3 }, parts: s2 } = this._$AD, e3 = ((t2 == null ? undefined : t2.creationScope) ?? r$4).importNode(i3, true); C.currentNode = e3; let h2 = C.nextNode(), o2 = 0, n3 = 0, l2 = s2[0]; for (; undefined !== l2; ) { if (o2 === l2.index) { let i4; 2 === l2.type ? i4 = new R(h2, h2.nextSibling, this, t2) : 1 === l2.type ? i4 = new l2.ctor(h2, l2.name, l2.strings, this, t2) : 6 === l2.type && (i4 = new z(h2, this, t2)), this._$AV.push(i4), l2 = s2[++n3]; } o2 !== (l2 == null ? undefined : l2.index) && (h2 = C.nextNode(), o2++); } return C.currentNode = r$4, e3; } p(t2) { let i3 = 0; for (const s2 of this._$AV) undefined !== s2 && (undefined !== s2.strings ? (s2._$AI(t2, s2, i3), i3 += s2.strings.length - 2) : s2._$AI(t2[i3])), i3++; } } class R { get _$AU() { var _a2; return ((_a2 = this._$AM) == null ? undefined : _a2._$AU) ?? this._$Cv; } constructor(t2, i3, s2, e3) { this.type = 2, this._$AH = E, this._$AN = undefined, this._$AA = t2, this._$AB = i3, this._$AM = s2, this.options = e3, this._$Cv = (e3 == null ? undefined : e3.isConnected) ?? true; } get parentNode() { let t2 = this._$AA.parentNode; const i3 = this._$AM; return undefined !== i3 && 11 === (t2 == null ? undefined : t2.nodeType) && (t2 = i3.parentNode), t2; } get startNode() { return this._$AA; } get endNode() { return this._$AB; } _$AI(t2, i3 = this) { t2 = S(this, t2, i3), c$3(t2) ? t2 === E || null == t2 || "" === t2 ? (this._$AH !== E && this._$AR(), this._$AH = E) : t2 !== this._$AH && t2 !== T && this._(t2) : undefined !== t2._$litType$ ? this.$(t2) : undefined !== t2.nodeType ? this.T(t2) : u$1(t2) ? this.k(t2) : this._(t2); } O(t2) { return this._$AA.parentNode.insertBefore(t2, this._$AB); } T(t2) { this._$AH !== t2 && (this._$AR(), this._$AH = this.O(t2)); } _(t2) { this._$AH !== E && c$3(this._$AH) ? this._$AA.nextSibling.data = t2 : this.T(r$4.createTextNode(t2)), this._$AH = t2; } $(t2) { var _a2; const { values: i3, _$litType$: s2 } = t2, e3 = "number" == typeof s2 ? this._$AC(t2) : (undefined === s2.el && (s2.el = N.createElement(P(s2.h, s2.h[0]), this.options)), s2); if (((_a2 = this._$AH) == null ? undefined : _a2._$AD) === e3) this._$AH.p(i3); else { const t3 = new M(e3, this), s3 = t3.u(this.options); t3.p(i3), this.T(s3), this._$AH = t3; } } _$AC(t2) { let i3 = A.get(t2.strings); return undefined === i3 && A.set(t2.strings, i3 = new N(t2)), i3; } k(t2) { a(this._$AH) || (this._$AH = [], this._$AR()); const i3 = this._$AH; let s2, e3 = 0; for (const h2 of t2) e3 === i3.length ? i3.push(s2 = new R(this.O(l$1()), this.O(l$1()), this, this.options)) : s2 = i3[e3], s2._$AI(h2), e3++; e3 < i3.length && (this._$AR(s2 && s2._$AB.nextSibling, e3), i3.length = e3); } _$AR(t2 = this._$AA.nextSibling, i3) { var _a2; for ((_a2 = this._$AP) == null ? undefined : _a2.call(this, false, true, i3); t2 && t2 !== this._$AB; ) { const i4 = t2.nextSibling; t2.remove(), t2 = i4; } } setConnected(t2) { var _a2; undefined === this._$AM && (this._$Cv = t2, (_a2 = this._$AP) == null ? undefined : _a2.call(this, t2)); } } class k { get tagName() { return this.element.tagName; } get _$AU() { return this._$AM._$AU; } constructor(t2, i3, s2, e3, h2) { this.type = 1, this._$AH = E, this._$AN = undefined, this.element = t2, this.name = i3, this._$AM = e3, this.options = h2, s2.length > 2 || "" !== s2[0] || "" !== s2[1] ? (this._$AH = Array(s2.length - 1).fill(new String()), this.strings = s2) : this._$AH = E; } _$AI(t2, i3 = this, s2, e3) { const h2 = this.strings; let o2 = false; if (undefined === h2) t2 = S(this, t2, i3, 0), o2 = !c$3(t2) || t2 !== this._$AH && t2 !== T, o2 && (this._$AH = t2); else { const e4 = t2; let n3, r3; for (t2 = h2[0], n3 = 0; n3 < h2.length - 1; n3++) r3 = S(this, e4[s2 + n3], i3, n3), r3 === T && (r3 = this._$AH[n3]), o2 || (o2 = !c$3(r3) || r3 !== this._$AH[n3]), r3 === E ? t2 = E : t2 !== E && (t2 += (r3 ?? "") + h2[n3 + 1]), this._$AH[n3] = r3; } o2 && !e3 && this.j(t2); } j(t2) { t2 === E ? this.element.removeAttribute(this.name) : this.element.setAttribute(this.name, t2 ?? ""); } } class H extends k { constructor() { super(...arguments), this.type = 3; } j(t2) { this.element[this.name] = t2 === E ? undefined : t2; } } class I extends k { constructor() { super(...arguments), this.type = 4; } j(t2) { this.element.toggleAttribute(this.name, !!t2 && t2 !== E); } } class L extends k { constructor(t2, i3, s2, e3, h2) { super(t2, i3, s2, e3, h2), this.type = 5; } _$AI(t2, i3 = this) { if ((t2 = S(this, t2, i3, 0) ?? E) === T) return; const s2 = this._$AH, e3 = t2 === E && s2 !== E || t2.capture !== s2.capture || t2.once !== s2.once || t2.passive !== s2.passive, h2 = t2 !== E && (s2 === E || e3); e3 && this.element.removeEventListener(this.name, this, s2), h2 && this.element.addEventListener(this.name, this, t2), this._$AH = t2; } handleEvent(t2) { var _a2; "function" == typeof this._$AH ? this._$AH.call(((_a2 = this.options) == null ? undefined : _a2.host) ?? this.element, t2) : this._$AH.handleEvent(t2); } } class z { constructor(t2, i3, s2) { this.element = t2, this.type = 6, this._$AN = undefined, this._$AM = i3, this.options = s2; } get _$AU() { return this._$AM._$AU; } _$AI(t2) { S(this, t2); } } const j = t$3.litHtmlPolyfillSupport; j == null ? undefined : j(N, R), (t$3.litHtmlVersions ?? (t$3.litHtmlVersions = [])).push("3.2.1"); const B = (t2, i3, s2) => { const e3 = (s2 == null ? undefined : s2.renderBefore) ?? i3; let h2 = e3._$litPart$; if (undefined === h2) { const t3 = (s2 == null ? undefined : s2.renderBefore) ?? null; e3._$litPart$ = h2 = new R(i3.insertBefore(l$1(), t3), t3, undefined, s2 ?? {}); } return h2._$AI(t2), h2; }; /** * @license * Copyright 2017 Google LLC * SPDX-License-Identifier: BSD-3-Clause */ let r$3 = class r extends b { constructor() { super(...arguments), this.renderOptions = { host: this }, this._$Do = undefined; } createRenderRoot() { var _a2; const t2 = super.createRenderRoot(); return (_a2 = this.renderOptions).renderBefore ?? (_a2.renderBefore = t2.firstChild), t2; } update(t2) { const s2 = this.render(); this.hasUpdated || (this.renderOptions.isConnected = this.isConnected), super.update(t2), this._$Do = B(s2, this.renderRoot, this.renderOptions); } connectedCallback() { var _a2; super.connectedCallback(), (_a2 = this._$Do) == null ? undefined : _a2.setConnected(true); } disconnectedCallback() { var _a2; super.disconnectedCallback(), (_a2 = this._$Do) == null ? undefined : _a2.setConnected(false); } render() { return T; } }; r$3._$litElement$ = true, r$3["finalized"] = true, (_a = globalThis.litElementHydrateSupport) == null ? undefined : _a.call(globalThis, { LitElement: r$3 }); const i$4 = globalThis.litElementPolyfillSupport; i$4 == null ? undefined : i$4({ LitElement: r$3 }); (globalThis.litElementVersions ?? (globalThis.litElementVersions = [])).push("4.1.1"); /** * @license * Copyright 2017 Google LLC * SPDX-License-Identifier: BSD-3-Clause */ const t$2 = (t2) => (e3, o2) => { undefined !== o2 ? o2.addInitializer(() => { customElements.define(t2, e3); }) : customElements.define(t2, e3); }; /** * @license * Copyright 2017 Google LLC * SPDX-License-Identifier: BSD-3-Clause */ const o$7 = { attribute: true, type: String, converter: u$2, reflect: false, hasChanged: f$3 }, r$2 = (t2 = o$7, e3, r3) => { const { kind: n3, metadata: i3 } = r3; let s2 = globalThis.litPropertyMetadata.get(i3); if (undefined === s2 && globalThis.litPropertyMetadata.set(i3, s2 = /* @__PURE__ */ new Map()), s2.set(r3.name, t2), "accessor" === n3) { const { name: o2 } = r3; return { set(r4) { const n4 = e3.get.call(this); e3.set.call(this, r4), this.requestUpdate(o2, n4, t2); }, init(e4) { return undefined !== e4 && this.P(o2, undefined, t2), e4; } }; } if ("setter" === n3) { const { name: o2 } = r3; return function(r4) { const n4 = this[o2]; e3.call(this, r4), this.requestUpdate(o2, n4, t2); }; } throw Error("Unsupported decorator location: " + n3); }; function n$5(t2) { return (e3, o2) => "object" == typeof o2 ? r$2(t2, e3, o2) : ((t3, e4, o3) => { const r3 = e4.hasOwnProperty(o3); return e4.constructor.createProperty(o3, r3 ? { ...t3, wrapped: true } : t3), r3 ? Object.getOwnPropertyDescriptor(e4, o3) : undefined; })(t2, e3, o2); } /** * @license * Copyright 2017 Google LLC * SPDX-License-Identifier: BSD-3-Clause */ function r$1(r3) { return n$5({ ...r3, state: true, attribute: false }); } /** * @license * Copyright 2017 Google LLC * SPDX-License-Identifier: BSD-3-Clause */ const e$4 = (e3, t2, c3) => (c3.configurable = true, c3.enumerable = true, Reflect.decorate && "object" != typeof t2 && Object.defineProperty(e3, t2, c3), c3); /** * @license * Copyright 2021 Google LLC * SPDX-License-Identifier: BSD-3-Clause */ function o$6(o2) { return (e3, n3) => { const { slot: r3, selector: s2 } = o2 ?? {}, c3 = "slot" + (r3 ? `[name=${r3}]` : ":not([name])"); return e$4(e3, n3, { get() { var _a2; const t2 = (_a2 = this.renderRoot) == null ? undefined : _a2.querySelector(c3), e4 = (t2 == null ? undefined : t2.assignedElements(o2)) ?? []; return undefined === s2 ? e4 : e4.filter((t3) => t3.matches(s2)); } }); }; } /** * @license * Copyright 2018 Google LLC * SPDX-License-Identifier: BSD-3-Clause */ const o$5 = (o2) => o2 ?? E; /** * @license * Copyright 2017 Google LLC * SPDX-License-Identifier: BSD-3-Clause */ const t$1 = { ATTRIBUTE: 1, CHILD: 2, PROPERTY: 3, BOOLEAN_ATTRIBUTE: 4 }, e$3 = (t2) => (...e3) => ({ _$litDirective$: t2, values: e3 }); let i$3 = class i { constructor(t2) { } get _$AU() { return this._$AM._$AU; } _$AT(t2, e3, i3) { this._$Ct = t2, this._$AM = e3, this._$Ci = i3; } _$AS(t2, e3) { return this.update(t2, e3); } update(t2, e3) { return this.render(...e3); } }; /** * @license * Copyright 2018 Google LLC * SPDX-License-Identifier: BSD-3-Clause */ const n$4 = "important", i$2 = " !" + n$4, o$4 = e$3(class extends i$3 { constructor(t2) { var _a2; if (super(t2), t2.type !== t$1.ATTRIBUTE || "style" !== t2.name || ((_a2 = t2.strings) == null ? undefined : _a2.length) > 2) throw Error("The `styleMap` directive must be used in the `style` attribute and must be the only part in the attribute."); } render(t2) { return Object.keys(t2).reduce((e3, r3) => { const s2 = t2[r3]; return null == s2 ? e3 : e3 + `${r3 = r3.includes("-") ? r3 : r3.replace(/(?:^(webkit|moz|ms|o)|)(?=[A-Z])/g, "-$&").toLowerCase()}:${s2};`; }, ""); } update(e3, [r3]) { const { style: s2 } = e3.element; if (undefined === this.ft) return this.ft = new Set(Object.keys(r3)), this.render(r3); for (const t2 of this.ft) null == r3[t2] && (this.ft.delete(t2), t2.includes("-") ? s2.removeProperty(t2) : s2[t2] = null); for (const t2 in r3) { const e4 = r3[t2]; if (null != e4) { this.ft.add(t2); const r4 = "string" == typeof e4 && e4.endsWith(i$2); t2.includes("-") || r4 ? s2.setProperty(t2, r4 ? e4.slice(0, -11) : e4, r4 ? n$4 : "") : s2[t2] = e4; } } return T; } }); class MduiElement extends r$3 { /** * 触发自定义事件。若返回 false,表示事件被取消 * @param type * @param options 通常只用到 cancelable 和 detail;bubbles、composed 统一不用 */ emit(type, options) { const event = new CustomEvent(type, Object.assign({ bubbles: true, cancelable: false, composed: true, detail: {} }, options)); return this.dispatchEvent(event); } } class HasSlotController { constructor(host, ...slotNames) { this.slotNames = []; (this.host = host).addController(this); this.slotNames = slotNames; this.onSlotChange = this.onSlotChange.bind(this); } hostConnected() { this.host.shadowRoot.addEventListener("slotchange", this.onSlotChange); if (!isDomReady()) { $$1(() => { this.host.requestUpdate(); }); } } hostDisconnected() { this.host.shadowRoot.removeEventListener("slotchange", this.onSlotChange); } test(slotName) { return slotName === "[default]" ? this.hasDefaultSlot() : this.hasNamedSlot(slotName); } hasDefaultSlot() { return [...this.host.childNodes].some((node) => { if (node.nodeType === node.TEXT_NODE && node.textContent.trim() !== "") { return true; } if (node.nodeType === node.ELEMENT_NODE) { const el = node; if (!el.hasAttribute("slot")) { return true; } } return false; }); } hasNamedSlot(name) { return this.host.querySelector(`:scope > [slot="${name}"]`) !== null; } onSlotChange(event) { const slot = event.target; if (this.slotNames.includes("[default]") && !slot.name || slot.name && this.slotNames.includes(slot.name)) { this.host.requestUpdate(); } } } const nothingTemplate = x`${E}`; const componentStyle = i$7`:host{box-sizing:border-box}:host *,:host ::after,:host ::before{box-sizing:inherit}:host :focus,:host :focus-visible,:host(:focus),:host(:focus-visible){outline:0}[hidden]{display:none!important}`; /** * @license * Copyright 2017 Google LLC * SPDX-License-Identifier: BSD-3-Clause */ let e$2 = class e extends i$3 { constructor(i3) { if (super(i3), this.it = E, i3.type !== t$1.CHILD) throw Error(this.constructor.directiveName + "() can only be used in child bindings"); } render(r3) { if (r3 === E || null == r3) return this._t = undefined, this.it = r3; if (r3 === T) return r3; if ("string" != typeof r3) throw Error(this.constructor.directiveName + "() called with a non-string value"); if (r3 === this.it) return this._t; this.it = r3; const s2 = [r3]; return s2.raw = s2, this._t = { _$litType$: this.constructor.resultType, strings: s2, values: [] }; } }; e$2.directiveName = "unsafeHTML", e$2.resultType = 1; /** * @license * Copyright 2017 Google LLC * SPDX-License-Identifier: BSD-3-Clause */ class t extends e$2 { } t.directiveName = "unsafeSVG", t.resultType = 2; const o$3 = e$3(t); /** * @license * Copyright 2020 Google LLC * SPDX-License-Identifier: BSD-3-Clause */ const i$1 = (o2) => null === o2 || "object" != typeof o2 && "function" != typeof o2, f$1 = (o2) => undefined === o2.strings, u = {}, m$1 = (o2, t2 = u) => o2._$AH = t2; /** * @license * Copyright 2017 Google LLC * SPDX-License-Identifier: BSD-3-Clause */ const s$1 = (i3, t2) => { var _a2; const e3 = i3._$AN; if (undefined === e3) return false; for (const i4 of e3) (_a2 = i4._$AO) == null ? undefined : _a2.call(i4, t2, false), s$1(i4, t2); return true; }, o$2 = (i3) => { let t2, e3; do { if (undefined === (t2 = i3._$AM)) break; e3 = t2._$AN, e3.delete(i3), i3 = t2; } while (0 === (e3 == null ? undefined : e3.size)); }, r2 = (i3) => { for (let t2; t2 = i3._$AM; i3 = t2) { let e3 = t2._$AN; if (undefined === e3) t2._$AN = e3 = /* @__PURE__ */ new Set(); else if (e3.has(i3)) break; e3.add(i3), c$2(t2); } }; function h$2(i3) { undefined !== this._$AN ? (o$2(this), this._$AM = i3, r2(this)) : this._$AM = i3; } function n$3(i3, t2 = false, e3 = 0) { const r3 = this._$AH, h2 = this._$AN; if (undefined !== h2 && 0 !== h2.size) if (t2) if (Array.isArray(r3)) for (let i4 = e3; i4 < r3.length; i4++) s$1(r3[i4], false), o$2(r3[i4]); else null != r3 && (s$1(r3, false), o$2(r3)); else s$1(this, i3); } const c$2 = (i3) => { i3.type == t$1.CHILD && (i3._$AP ?? (i3._$AP = n$3), i3._$AQ ?? (i3._$AQ = h$2)); }; class f extends i$3 { constructor() { super(...arguments), this._$AN = undefined; } _$AT(i3, t2, e3) { super._$AT(i3, t2, e3), r2(this), this.isConnected = i3._$AU; } _$AO(i3, t2 = true) { var _a2, _b; i3 !== this.isConnected && (this.isConnected = i3, i3 ? (_a2 = this.reconnected) == null ? undefined : _a2.call(this) : (_b = this.disconnected) == null ? undefined : _b.call(this)), t2 && (s$1(this, i3), o$2(this)); } setValue(t2) { if (f$1(this._$Ct)) this._$Ct._$AI(t2, this); else { const i3 = [...this._$Ct._$AH]; i3[this._$Ci] = t2, this._$Ct._$AI(i3, this, 0); } } disconnected() { } reconnected() { } } /** * @license * Copyright 2021 Google LLC * SPDX-License-Identifier: BSD-3-Clause */ class s { constructor(t2) { this.Y = t2; } disconnect() { this.Y = undefined; } reconnect(t2) { this.Y = t2; } deref() { return this.Y; } } class i2 { constructor() { this.Z = undefined, this.q = undefined; } get() { return this.Z; } pause() { this.Z ?? (this.Z = new Promise((t2) => this.q = t2)); } resume() { var _a2; (_a2 = this.q) == null ? undefined : _a2.call(this), this.Z = this.q = undefined; } } /** * @license * Copyright 2017 Google LLC * SPDX-License-Identifier: BSD-3-Clause */ const n$2 = (t2) => !i$1(t2) && "function" == typeof t2.then, h$1 = 1073741823; let c$1 = class c extends f { constructor() { super(...arguments), this._$Cwt = h$1, this._$Cbt = [], this._$CK = new s(this), this._$CX = new i2(); } render(...s2) { return s2.find((t2) => !n$2(t2)) ?? T; } update(s2, i3) { const e3 = this._$Cbt; let r3 = e3.length; this._$Cbt = i3; const o2 = this._$CK, c3 = this._$CX; this.isConnected || this.disconnected(); for (let t2 = 0; t2 < i3.length && !(t2 > this._$Cwt); t2++) { const s3 = i3[t2]; if (!n$2(s3)) return this._$Cwt = t2, s3; t2 < r3 && s3 === e3[t2] || (this._$Cwt = h$1, r3 = 0, Promise.resolve(s3).then(async (t3) => { for (; c3.get(); ) await c3.get(); const i4 = o2.deref(); if (undefined !== i4) { const e4 = i4._$Cbt.indexOf(s3); e4 > -1 && e4 < i4._$Cwt && (i4._$Cwt = e4, i4.setValue(t3)); } })); } return T; } disconnected() { this._$CK.disconnect(), this._$CX.pause(); } reconnected() { this._$CK.reconnect(this), this._$CX.resume(); } }; const m = e$3(c$1); const style$n = i$7`:host{display:inline-block;width:1em;height:1em;font-weight:400;font-family:'Material Icons';font-display:block;font-style:normal;line-height:1;direction:ltr;letter-spacing:normal;white-space:nowrap;text-transform:none;word-wrap:normal;-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;-moz-osx-font-smoothing:grayscale;font-size:1.5rem}::slotted(svg),svg{width:100%;height:100%;fill:currentcolor}`; let Icon = class Icon2 extends MduiElement { constructor() { super(...arguments); this.hasSlotController = new HasSlotController(this, "[default]"); } render() { const renderDefault = () => { if (this.name) { const [name, variant] = this.name.split("--"); const familyMap = /* @__PURE__ */ new Map([ ["outlined", "Material Icons Outlined"], ["filled", "Material Icons"], ["rounded", "Material Icons Round"], ["sharp", "Material Icons Sharp"], ["two-tone", "Material Icons Two Tone"] ]); return x`${name}`; } if (this.src) { return x`${m(ajax({ url: this.src }).then(o$3))}`; } return x``; }; return this.hasSlotController.test("[default]") ? x`` : renderDefault(); } }; Icon.styles = [componentStyle, style$n]; __decorate([ n$5({ reflect: true }) ], Icon.prototype, "name", undefined); __decorate([ n$5({ reflect: true }) ], Icon.prototype, "src", undefined); Icon = __decorate([ t$2("mdui-icon") ], Icon); const style$m = i$7`:host{--shape-corner:var(--mdui-shape-corner-full);position:relative;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;overflow:hidden;white-space:nowrap;vertical-align:middle;border-radius:var(--shape-corner);-webkit-user-select:none;user-select:none;width:2.5rem;height:2.5rem;background-color:rgb(var(--mdui-color-primary-container));color:rgb(var(--mdui-color-on-primary-container));font-size:var(--mdui-typescale-title-medium-size);font-weight:var(--mdui-typescale-title-medium-weight);letter-spacing:var(--mdui-typescale-title-medium-tracking);line-height:var(--mdui-typescale-title-medium-line-height)}img{width:100%;height:100%}::slotted(mdui-icon),mdui-icon{font-size:1.5em}`; let Avatar = class Avatar2 extends MduiElement { constructor() { super(...arguments); this.hasSlotController = new HasSlotController(this, "[default]"); } render() { return this.hasSlotController.test("[default]") ? x`` : this.src ? x`${o$5(this.label)}` : this.icon ? x`` : nothingTemplate; } }; Avatar.styles = [componentStyle, style$m]; __decorate([ n$5({ reflect: true }) ], Avatar.prototype, "src", undefined); __decorate([ n$5({ reflect: true }) ], Avatar.prototype, "fit", undefined); __decorate([ n$5({ reflect: true }) ], Avatar.prototype, "icon", undefined); __decorate([ n$5({ reflect: true }) ], Avatar.prototype, "label", undefined); Avatar = __decorate([ t$2("mdui-avatar") ], Avatar); const style$l = i$7`:host{--shape-corner:var(--mdui-shape-corner-full);display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;border-radius:var(--shape-corner);padding-left:.25rem;padding-right:.25rem;color:rgb(var(--mdui-color-on-error));background-color:rgb(var(--mdui-color-error));height:1rem;min-width:1rem;font-size:var(--mdui-typescale-label-small-size);font-weight:var(--mdui-typescale-label-small-weight);letter-spacing:var(--mdui-typescale-label-small-tracking);line-height:var(--mdui-typescale-label-small-line-height)}:host([variant=small]){min-width:0;padding:0;width:.375rem;height:.375rem}`; let Badge = class Badge2 extends MduiElement { constructor() { super(...arguments); this.variant = "large"; } render() { if (this.variant === "small") { return nothingTemplate; } return x``; } }; Badge.styles = [componentStyle, style$l]; __decorate([ n$5({ reflect: true }) ], Badge.prototype, "variant", undefined); Badge = __decorate([ t$2("mdui-badge") ], Badge); const booleanConverter = (value) => { return value !== null && value.toLowerCase() !== "false"; }; class DefinedController { constructor(host, options) { this.defined = false; (this.host = host).addController(this); this.relatedElements = options.relatedElements; this.needDomReady = options.needDomReady || !!options.relatedElements; this.onSlotChange = this.onSlotChange.bind(this); } hostConnected() { this.host.shadowRoot.addEventListener("slotchange", this.onSlotChange); } hostDisconnected() { this.host.shadowRoot.removeEventListener("slotchange", this.onSlotChange); } /** * 判断组件是否定义完成 */ isDefined() { if (this.defined) { return true; } this.defined = (!this.needDomReady || isDomReady()) && !this.getUndefinedLocalNames().length; return this.defined; } /** * 在组件定义完成后,promise 被 resolve */ async whenDefined() { if (this.defined) { return Promise.resolve(); } const document2 = getDocument(); if (this.needDomReady && !isDomReady(document2)) { await new Promise((resolve) => { document2.addEventListener("DOMContentLoaded", () => resolve(), { once: true }); }); } const undefinedLocalNames = this.getUndefinedLocalNames(); if (undefinedLocalNames.length) { const promises = []; undefinedLocalNames.forEach((localName) => { promises.push(customElements.whenDefined(localName)); }); await Promise.all(promises); } this.defined = true; return; } /** * slot 中的未完成定义的相关 Web components 组件的 CSS 选择器 */ getScopeLocalNameSelector() { const localNames = this.relatedElements; if (!localNames) { return null; } if (Array.isArray(localNames)) { return localNames.map((localName) => `${localName}:not(:defined)`).join(","); } return Object.keys(localNames).filter((localName) => !localNames[localName]).map((localName) => `${localName}:not(:defined)`).join(","); } /** * 整个页面中的未完成定义的相关 Web components 组件的 CSS 选择器 */ getGlobalLocalNameSelector() { const localNames = this.relatedElements; if (!localNames || Array.isArray(localNames)) { return null; } return Object.keys(localNames).filter((localName) => localNames[localName]).map((localName) => `${localName}:not(:defined)`).join(","); } /** * 获取未完成定义的相关 Web components 组件名 */ getUndefinedLocalNames() { const scopeSelector = this.getScopeLocalNameSelector(); const globalSelector = this.getGlobalLocalNameSelector(); const undefinedScopeElements = scopeSelector ? [...this.host.querySelectorAll(scopeSelector)] : []; const undefinedGlobalElements = globalSelector ? [...getDocument().querySelectorAll(globalSelector)] : []; const localNames = [ ...undefinedScopeElements, ...undefinedGlobalElements ].map((element) => element.localName); return unique(localNames); } /** * slot 变更时,若 slot 中包含未完成定义的相关 Web components 组件,则组件未定义完成 */ onSlotChange() { const selector = this.getScopeLocalNameSelector(); if (selector) { const undefinedElements = this.host.querySelectorAll(selector); if (undefinedElements.length) { this.defined = false; } } } } function watch(propName, waitUntilFirstUpdate = false) { return (proto, functionName) => { const { update } = proto; if (propName in proto) { proto.update = function(changedProperties) { if (changedProperties.has(propName)) { const oldValue = changedProperties.get(propName); const newValue = this[propName]; if (oldValue !== newValue) { if (!waitUntilFirstUpdate || this.hasUpdated) { this[functionName](oldValue, newValue); } } } update.call(this, changedProperties); }; } }; } const weakMap$1 = /* @__PURE__ */ new WeakMap(); const ScrollBehaviorMixin = (superclass) => { class ScrollBehaviorMixinClass extends superclass { // eslint-disable-next-line @typescript-eslint/no-explicit-any constructor(...args) { super(...args); this.scrollBehaviorDefinedController = new DefinedController(this, { needDomReady: true }); this.lastScrollTopThreshold = 0; this.lastScrollTopNoThreshold = 0; this.isParentLayout = false; this.onListeningScroll = this.onListeningScroll.bind(this); } /** * 滚动时,如果需要给 container 添加 padding,添加在顶部还是底部 */ get scrollPaddingPosition() { throw new Error("Must implement scrollPaddingPosition getter"); } async onScrollTargetChange(oldValue, newValue) { const hasUpdated = this.hasUpdated; await this.scrollBehaviorDefinedController.whenDefined(); if (hasUpdated) { this.setContainerPadding("remove", oldValue); this.setContainerPadding("add", newValue); } if (!this.scrollBehavior) { return; } const oldListening = this.getListening(oldValue); if (oldListening) { oldListening.removeEventListener("scroll", this.onListeningScroll); } const newListening = this.getListening(newValue); if (newListening) { this.updateScrollTop(newListening); newListening.addEventListener("scroll", this.onListeningScroll); } } async onScrollBehaviorChange() { await this.scrollBehaviorDefinedController.whenDefined(); const listening = this.getListening(this.scrollTarget); if (!listening) { return; } if (this.scrollBehavior) { this.updateScrollTop(listening); listening.addEventListener("scroll", this.onListeningScroll); } else { listening.removeEventListener("scroll", this.onListeningScroll); } } connectedCallback() { super.connectedCallback(); this.scrollBehaviorDefinedController.whenDefined().then(() => { this.isParentLayout = isNodeName(this.parentElement, "mdui-layout"); this.setContainerPadding("add", this.scrollTarget); }); } disconnectedCallback() { super.disconnectedCallback(); this.scrollBehaviorDefinedController.whenDefined().then(() => { this.setContainerPadding("remove", this.scrollTarget); }); } /** * scrollBehavior 包含多个滚动行为,用空格分割 * 用该方法判断指定滚动行为是否在 scrollBehavior 中 * @param behavior 为数组时,只要其中一个行为在 scrollBehavior 中,即返回 `true` */ hasScrollBehavior(behavior) { var _a2; const behaviors = ((_a2 = this.scrollBehavior) == null ? undefined : _a2.split(" ")) ?? []; if (Array.isArray(behavior)) { return !!behaviors.filter((v2) => behavior.includes(v2)).length; } else { return behaviors.includes(behavior); } } /** * 执行滚动事件,在滚动距离超过 scrollThreshold 时才会执行 * Note: 父类可以按需实现该方法 * @param isScrollingUp 是否向上滚动 * @param scrollTop 距离 scrollTarget 顶部的距离 */ // eslint-disable-next-line @typescript-eslint/no-unused-vars runScrollThreshold(isScrollingUp, scrollTop) { return; } /** * 执行滚动事件,会无视 scrollThreshold,始终会执行 * @param isScrollingUp 是否向上滚动 * @param scrollTop 距离 scrollTarget 顶部的距离 */ // eslint-disable-next-line @typescript-eslint/no-unused-vars runScrollNoThreshold(isScrollingUp, scrollTop) { return; } /** * 更新滚动容器的 padding,避免内容被 navigation-bar 覆盖 * @param action 新增、更新、移除 padding * @param scrollTarget 在该元素上添加、更新或移除 padding */ setContainerPadding(action, scrollTarget) { const container2 = this.getContainer(scrollTarget); if (!container2 || this.isParentLayout) { return; } const position = this.scrollPaddingPosition; const propName = position === "top" ? "paddingTop" : "paddingBottom"; if (action === "add" || action === "update") { const propValue = ["fixed", "absolute"].includes($$1(this).css("position")) ? this.offsetHeight : null; $$1(container2).css({ [propName]: propValue }); if (action === "add" && propValue !== null) { const options = weakMap$1.get(container2) ?? { top: [], bottom: [] }; options[position].push(this); weakMap$1.set(container2, options); } } if (action === "remove") { const options = weakMap$1.get(container2); if (!options) { return; } const index = options[position].indexOf(this); if (index > -1) { options[position].splice(index, 1); weakMap$1.set(container2, options); } if (!options[position].length) { $$1(container2).css({ [propName]: null }); } } } onListeningScroll() { const listening = this.getListening(this.scrollTarget); window.requestAnimationFrame(() => this.onScroll(listening)); } /** * 滚动事件,这里过滤掉不符合条件的滚动 */ onScroll(listening) { const scrollTop = listening.scrollY ?? listening.scrollTop; if (this.lastScrollTopNoThreshold !== scrollTop) { this.runScrollNoThreshold(scrollTop < this.lastScrollTopNoThreshold, scrollTop); this.lastScrollTopNoThreshold = scrollTop; } if (Math.abs(scrollTop - this.lastScrollTopThreshold) > (this.scrollThreshold || 0)) { this.runScrollThreshold(scrollTop < this.lastScrollTopThreshold, scrollTop); this.lastScrollTopThreshold = scrollTop; } } /** * 重新更新 lastScrollTopThreshold、lastScrollTopNoThreshold 的值 * 用于在 scrollTarget、scrollBehavior 变更时,重新设置 lastScrollTopThreshold、lastScrollTopNoThreshold 的初始值 */ updateScrollTop(listening) { this.lastScrollTopThreshold = this.lastScrollTopNoThreshold = listening.scrollY ?? listening.scrollTop; } /** * 获取组件需要监听哪个元素的滚动状态 */ getListening(target) { return target ? $$1(target)[0] : window; } /** * 获取组件在哪个容器内滚动 */ getContainer(target) { return target ? $$1(target)[0] : document.body; } } __decorate([ n$5({ attribute: "scroll-target" }) ], ScrollBehaviorMixinClass.prototype, "scrollTarget", undefined); __decorate([ n$5({ reflect: true, attribute: "scroll-behavior" }) ], ScrollBehaviorMixinClass.prototype, "scrollBehavior", undefined); __decorate([ n$5({ type: Number, reflect: true, attribute: "scroll-threshold" }) ], ScrollBehaviorMixinClass.prototype, "scrollThreshold", undefined); __decorate([ watch("scrollTarget") ], ScrollBehaviorMixinClass.prototype, "onScrollTargetChange", null); __decorate([ watch("scrollBehavior") ], ScrollBehaviorMixinClass.prototype, "onScrollBehaviorChange", null); return ScrollBehaviorMixinClass; }; let id = 0; const uniqueId = () => { return ++id; }; let weakMap; let observer; const observeResize = (target, callback) => { const $target = $$1(target); const key2 = uniqueId(); const result = { unobserve: () => { $target.each((_2, target2) => { const options = weakMap.get(target2); const index = options.coArr.findIndex((co) => co.key === key2); if (index !== -1) { options.coArr.splice(index, 1); } if (!options.coArr.length) { observer.unobserve(target2); weakMap.delete(target2); } else { weakMap.set(target2, options); } }); } }; if (!weakMap) { weakMap = /* @__PURE__ */ new WeakMap(); observer = new ResizeObserver((entries) => { entries.forEach((entry) => { const target2 = entry.target; const options = weakMap.get(target2); options.entry = entry; options.coArr.forEach((co) => { co.callback.call(result, entry, result); }); }); }); } $target.each((_2, target2) => { const options = weakMap.get(target2) ?? { coArr: [] }; if (options.coArr.length && options.entry) { callback.call(result, options.entry, result); } options.coArr.push({ callback, key: key2 }); weakMap.set(target2, options); observer.observe(target2); }); return result; }; class LayoutManager { constructor() { this.states = []; } /** * 注册 `` */ registerMain(element) { this.$main = $$1(element); } /** * 取消注册 `` */ unregisterMain() { this.$main = undefined; } /** * 注册新的 `` */ registerItem(element) { const state = { element }; this.states.push(state); state.observeResize = observeResize(state.element, () => { this.updateLayout(state.element, { width: this.isNoWidth(state) ? 0 : undefined }); }); this.items = undefined; this.resort(); this.updateLayout(); } /** * 取消注册 `` */ unregisterItem(element) { var _a2; const index = this.states.findIndex((item2) => item2.element === element); if (index < 0) { return; } const item = this.states[index]; (_a2 = item.observeResize) == null ? undefined : _a2.unobserve(); this.items = undefined; this.states.splice(index, 1); if (this.states[index]) { this.updateLayout(this.states[index].element); } } /** * 获取所有 `` 元素(按在 DOM 中的顺序) */ getItems() { if (!this.items) { const items = this.states.map((state) => state.element); this.items = items.sort((a2, b2) => { const position = a2.compareDocumentPosition(b2); if (position & Node.DOCUMENT_POSITION_FOLLOWING) { return -1; } else if (position & Node.DOCUMENT_POSITION_PRECEDING) { return 1; } else { return 0; } }); } return this.items; } /** * 获取 `` 元素 */ getMain() { return this.$main ? this.$main[0] : undefined; } /** * 获取 `` 及 `` 元素 */ getItemsAndMain() { return [...this.getItems(), this.getMain()].filter((i3) => i3); } /** * 更新 `order` 值,更新完后重新计算布局 */ updateOrder() { this.resort(); this.updateLayout(); } /** * 重新计算布局 * @param element 从哪一个元素开始更新;若未传入参数,则将更新所有元素 * @param size 此次更新中,元素的宽高(仅在此次更新中使用)。若不传则自动计算 */ updateLayout(element, size) { const state = element ? { element, width: size == null ? undefined : size.width, height: size == null ? undefined : size.height } : undefined; const index = state ? this.states.findIndex((v2) => v2.element === state.element) : 0; if (index < 0) { return; } Object.assign(this.states[index], state); this.states.forEach((currState, currIndex) => { if (currIndex < index) { return; } const placement = currState.element.layoutPlacement; const prevState = currIndex > 0 ? this.states[currIndex - 1] : undefined; const top = (prevState == null ? undefined : prevState.top) ?? 0; const right = (prevState == null ? undefined : prevState.right) ?? 0; const bottom = (prevState == null ? undefined : prevState.bottom) ?? 0; const left = (prevState == null ? undefined : prevState.left) ?? 0; Object.assign(currState, { top, right, bottom, left }); switch (placement) { case "top": case "bottom": currState[placement] += currState.height ?? currState.element.offsetHeight; break; case "right": case "left": currState[placement] += (this.isNoWidth(currState) ? 0 : currState.width) ?? currState.element.offsetWidth; break; } currState.height = currState.width = undefined; $$1(currState.element).css({ position: "absolute", top: placement === "bottom" ? null : top, right: placement === "left" ? null : right, bottom: placement === "top" ? null : bottom, left: placement === "right" ? null : left }); }); const lastState = this.states[this.states.length - 1]; if (this.$main) { this.$main.css({ paddingTop: lastState.top, paddingRight: lastState.right, paddingBottom: lastState.bottom, paddingLeft: lastState.left }); } } /** * 按 order 排序,order 相同时,按在 DOM 中的顺序排序 */ resort() { const items = this.getItems(); this.states.sort((a2, b2) => { const aOrder = a2.element.order ?? 0; const bOrder = b2.element.order ?? 0; if (aOrder > bOrder) { return 1; } if (aOrder < bOrder) { return -1; } if (items.indexOf(a2.element) > items.indexOf(b2.element)) { return 1; } if (items.indexOf(a2.element) < items.indexOf(b2.element)) { return -1; } return 0; }); } /** * 组件宽度是否为 0 * mdui-navigation-drawer 较为特殊,在为模态化时,占据的宽度为 0 */ isNoWidth(state) { return isNodeName(state.element, "mdui-navigation-drawer") && // @ts-ignore state.element.isModal; } } const layoutManagerMap = /* @__PURE__ */ new WeakMap(); const getLayout = (element) => { if (!layoutManagerMap.has(element)) { layoutManagerMap.set(element, new LayoutManager()); } return layoutManagerMap.get(element); }; class LayoutItemBase extends MduiElement { constructor() { super(...arguments); this.isParentLayout = false; } /** * 当前布局组件所处的位置,父类必须实现该 getter */ get layoutPlacement() { throw new Error("Must implement placement getter!"); } // order 变更时,需要重新调整布局 onOrderChange() { var _a2; (_a2 = this.layoutManager) == null ? undefined : _a2.updateOrder(); } connectedCallback() { super.connectedCallback(); const parentElement = this.parentElement; this.isParentLayout = isNodeName(parentElement, "mdui-layout"); if (this.isParentLayout) { this.layoutManager = getLayout(parentElement); this.layoutManager.registerItem(this); } } disconnectedCallback() { super.disconnectedCallback(); if (this.layoutManager) { this.layoutManager.unregisterItem(this); } } } __decorate([ n$5({ type: Number, reflect: true }) ], LayoutItemBase.prototype, "order", undefined); __decorate([ watch("order", true) ], LayoutItemBase.prototype, "onOrderChange", null); const style$k = i$7`:host{--shape-corner:var(--mdui-shape-corner-none);--z-index:2000;position:fixed;right:0;bottom:0;left:0;display:flex;flex:0 0 auto;align-items:center;justify-content:flex-start;border-radius:var(--shape-corner) var(--shape-corner) 0 0;z-index:var(--z-index);transition:bottom var(--mdui-motion-duration-long2) var(--mdui-motion-easing-emphasized);padding:0 1rem;height:5rem;background-color:rgb(var(--mdui-color-surface-container));box-shadow:var(--mdui-elevation-level2)}:host([scroll-target]:not([scroll-target=''])){position:absolute}:host([hide]:not([hide=false i])){transition-duration:var(--mdui-motion-duration-short4);bottom:-5.625rem}::slotted(:not(:first-child)){margin-left:.5rem}::slotted(mdui-fab){box-shadow:var(--mdui-elevation-level0)}:host([fab-detach]:not([fab-detach=false i])) ::slotted(mdui-fab){position:absolute;transition:bottom var(--mdui-motion-duration-long2) var(--mdui-motion-easing-standard);right:1rem;bottom:.75rem}:host([fab-detach][hide][scroll-behavior~=hide]:not([hide=false i],[fab-detach=false i])) ::slotted(mdui-fab){transition-duration:var(--mdui-motion-duration-short4);bottom:1rem;box-shadow:var(--mdui-elevation-level2)}:host([fab-detach][hide][scroll-behavior~=hide][scroll-target]:not([fab-detach=false i],[hide=false i],[scroll-target=''])) ::slotted(mdui-fab){bottom:6.625rem}:host([hide]:not([hide=false i])) ::slotted(:not(mdui-fab)),:host([hide]:not([hide=false i],[fab-detach])) ::slotted(mdui-fab),:host([hide][fab-detach=false i]:not([hide=false i])) ::slotted(mdui-fab){transform:translateY(8.75rem);transition:transform var(--mdui-motion-duration-0) var(--mdui-motion-easing-emphasized-accelerate) var(--mdui-motion-duration-short4)}::slotted(:first-child){transition:transform var(--mdui-motion-duration-short3) var(--mdui-motion-easing-emphasized-decelerate) var(--mdui-motion-duration-short1)}::slotted(:nth-child(2)){transition:transform var(--mdui-motion-duration-short3) var(--mdui-motion-easing-emphasized-decelerate) var(--mdui-motion-duration-short3)}::slotted(:nth-child(3)){transition:transform var(--mdui-motion-duration-short3) var(--mdui-motion-easing-emphasized-decelerate) var(--mdui-motion-duration-short4)}::slotted(:nth-child(4)){transition:transform var(--mdui-motion-duration-short3) var(--mdui-motion-easing-emphasized-decelerate) var(--mdui-motion-duration-medium1)}::slotted(:nth-child(5)){transition:transform var(--mdui-motion-duration-short3) var(--mdui-motion-easing-emphasized-decelerate) var(--mdui-motion-duration-medium2)}::slotted(:nth-child(6)){transition:transform var(--mdui-motion-duration-short3) var(--mdui-motion-easing-emphasized-decelerate) var(--mdui-motion-duration-medium3)}`; let BottomAppBar = class BottomAppBar2 extends ScrollBehaviorMixin(LayoutItemBase) { constructor() { super(...arguments); this.hide = false; this.fabDetach = false; } get scrollPaddingPosition() { return "bottom"; } get layoutPlacement() { return "bottom"; } firstUpdated(_changedProperties) { super.firstUpdated(_changedProperties); this.addEventListener("transitionend", (event) => { if (event.target === this) { this.emit(this.hide ? "hidden" : "shown"); } }); } render() { return x``; } /** * 滚动行为 * 当前仅支持 hide 这一个行为,所以不做行为类型判断 */ runScrollThreshold(isScrollingUp) { if (!isScrollingUp && !this.hide) { const eventProceeded = this.emit("hide", { cancelable: true }); if (eventProceeded) { this.hide = true; } } if (isScrollingUp && this.hide) { const eventProceeded = this.emit("show", { cancelable: true }); if (eventProceeded) { this.hide = false; } } } }; BottomAppBar.styles = [componentStyle, style$k]; __decorate([ n$5({ type: Boolean, reflect: true, converter: booleanConverter }) ], BottomAppBar.prototype, "hide", undefined); __decorate([ n$5({ type: Boolean, reflect: true, converter: booleanConverter, attribute: "fab-detach" }) ], BottomAppBar.prototype, "fabDetach", undefined); __decorate([ n$5({ reflect: true, attribute: "scroll-behavior" }) ], BottomAppBar.prototype, "scrollBehavior", undefined); BottomAppBar = __decorate([ t$2("mdui-bottom-app-bar") ], BottomAppBar); /** * @license * Copyright 2020 Google LLC * SPDX-License-Identifier: BSD-3-Clause */ const e$1 = () => new h(); class h { } const o$1 = /* @__PURE__ */ new WeakMap(), n$1 = e$3(class extends f { render(i3) { return E; } update(i3, [s2]) { var _a2; const e3 = s2 !== this.Y; return e3 && undefined !== this.Y && this.rt(undefined), (e3 || this.lt !== this.ct) && (this.Y = s2, this.ht = (_a2 = i3.options) == null ? undefined : _a2.host, this.rt(this.ct = i3.element)), E; } rt(t2) { if (this.isConnected || (t2 = undefined), "function" == typeof this.Y) { const i3 = this.ht ?? globalThis; let s2 = o$1.get(i3); undefined === s2 && (s2 = /* @__PURE__ */ new WeakMap(), o$1.set(i3, s2)), undefined !== s2.get(this.Y) && this.Y.call(this.ht, undefined), s2.set(this.Y, t2), undefined !== t2 && this.Y.call(this.ht, t2); } else this.Y.value = t2; } get lt() { var _a2, _b; return "function" == typeof this.Y ? (_a2 = o$1.get(this.ht ?? globalThis)) == null ? undefined : _a2.get(this.Y) : (_b = this.Y) == null ? undefined : _b.value; } disconnected() { this.lt === this.ct && this.rt(undefined); } reconnected() { this.rt(this.ct); } }); function cc(names) { if (typeof names === "string" || typeof names === "number") return "" + names; let out = ""; if (Array.isArray(names)) { for (let i3 = 0, tmp; i3 < names.length; i3++) { if ((tmp = cc(names[i3])) !== "") { out += (out && " ") + tmp; } } } else { for (let k2 in names) { if (names[k2]) out += (out && " ") + k2; } } return out; } const reportValidityOverloads = /* @__PURE__ */ new WeakMap(); const formResets = /* @__PURE__ */ new WeakMap(); class FormController { constructor(host, options) { (this.host = host).addController(this); this.definedController = new DefinedController(host, { needDomReady: true }); this.options = { form: (control) => { const formId = $$1(control).attr("form"); if (formId) { const root2 = control.getRootNode(); return root2.getElementById(formId); } return control.closest("form"); }, name: (control) => control.name, value: (control) => control.value, defaultValue: (control) => control.defaultValue, setValue: (control, value) => control.value = value, disabled: (control) => control.disabled, reportValidity: (control) => isFunction(control.reportValidity) ? control.reportValidity() : true, ...options }; this.onFormData = this.onFormData.bind(this); this.onFormSubmit = this.onFormSubmit.bind(this); this.onFormReset = this.onFormReset.bind(this); this.reportFormValidity = this.reportFormValidity.bind(this); } hostConnected() { this.definedController.whenDefined().then(() => { this.form = this.options.form(this.host); if (this.form) { this.attachForm(this.form); } }); } hostDisconnected() { this.detachForm(); } hostUpdated() { this.definedController.whenDefined().then(() => { const form = this.options.form(this.host); if (!form) { this.detachForm(); } if (form && this.form !== form) { this.detachForm(); this.attachForm(form); } }); } /** * 获取当前表单控件关联的 `
` 元素 */ getForm() { return this.form ?? null; } /** * 重置整个表单,所有表单控件恢复成默认值 */ reset(invoker) { this.doAction("reset", invoker); } /** * 提交整个表单 */ submit(invoker) { this.doAction("submit", invoker); } attachForm(form) { if (!form) { this.form = undefined; return; } this.form = form; if (formCollections.has(this.form)) { formCollections.get(this.form).add(this.host); } else { formCollections.set(this.form, /* @__PURE__ */ new Set([this.host])); } this.form.addEventListener("formdata", this.onFormData); this.form.addEventListener("submit", this.onFormSubmit); this.form.addEventListener("reset", this.onFormReset); if (!reportValidityOverloads.has(this.form)) { reportValidityOverloads.set(this.form, this.form.reportValidity); this.form.reportValidity = () => this.reportFormValidity(); } } detachForm() { if (this.form) { formCollections.get(this.form).delete(this.host); this.form.removeEventListener("formdata", this.onFormData); this.form.removeEventListener("submit", this.onFormSubmit); this.form.removeEventListener("reset", this.onFormReset); if (reportValidityOverloads.has(this.form) && !formCollections.get(this.form).size) { this.form.reportValidity = reportValidityOverloads.get(this.form); reportValidityOverloads.delete(this.form); } } } doAction(type, invoker) { if (!this.form) { return; } const $button = $$1(``; } isButton() { return !this.href; } } ButtonBase.styles = [ componentStyle, buttonBaseStyle ]; __decorate([ n$5({ type: Boolean, reflect: true, converter: booleanConverter }) ], ButtonBase.prototype, "disabled", undefined); __decorate([ n$5({ type: Boolean, reflect: true, converter: booleanConverter }) ], ButtonBase.prototype, "loading", undefined); __decorate([ n$5({ reflect: true }) ], ButtonBase.prototype, "name", undefined); __decorate([ n$5({ reflect: true }) ], ButtonBase.prototype, "value", undefined); __decorate([ n$5({ reflect: true }) ], ButtonBase.prototype, "type", undefined); __decorate([ n$5({ reflect: true }) ], ButtonBase.prototype, "form", undefined); __decorate([ n$5({ reflect: true, attribute: "formaction" }) ], ButtonBase.prototype, "formAction", undefined); __decorate([ n$5({ reflect: true, attribute: "formenctype" }) ], ButtonBase.prototype, "formEnctype", undefined); __decorate([ n$5({ reflect: true, attribute: "formmethod" }) ], ButtonBase.prototype, "formMethod", undefined); __decorate([ n$5({ type: Boolean, reflect: true, converter: booleanConverter, attribute: "formnovalidate" }) ], ButtonBase.prototype, "formNoValidate", undefined); __decorate([ n$5({ reflect: true, attribute: "formtarget" }) ], ButtonBase.prototype, "formTarget", undefined); const style$h = i$7`:host{--shape-corner:var(--mdui-shape-corner-full);position:relative;display:inline-block;flex-shrink:0;overflow:hidden;text-align:center;border-radius:var(--shape-corner);cursor:pointer;-webkit-tap-highlight-color:transparent;transition:box-shadow var(--mdui-motion-duration-short4) var(--mdui-motion-easing-linear);min-width:3rem;height:2.5rem;color:rgb(var(--mdui-color-primary));font-size:var(--mdui-typescale-label-large-size);font-weight:var(--mdui-typescale-label-large-weight);letter-spacing:var(--mdui-typescale-label-large-tracking);line-height:var(--mdui-typescale-label-large-line-height)}.button{width:100%;padding:0 1rem}:host([full-width]:not([full-width=false i])){display:block}:host([variant=elevated]){box-shadow:var(--mdui-elevation-level1);background-color:rgb(var(--mdui-color-surface-container-low));--mdui-comp-ripple-state-layer-color:var(--mdui-color-primary)}:host([variant=filled]){color:rgb(var(--mdui-color-on-primary));background-color:rgb(var(--mdui-color-primary));--mdui-comp-ripple-state-layer-color:var(--mdui-color-on-primary)}:host([variant=tonal]){color:rgb(var(--mdui-color-on-secondary-container));background-color:rgb(var(--mdui-color-secondary-container));--mdui-comp-ripple-state-layer-color:var( --mdui-color-on-secondary-container )}:host([variant=outlined]){border:.0625rem solid rgb(var(--mdui-color-outline));--mdui-comp-ripple-state-layer-color:var(--mdui-color-primary)}:host([variant=text]){--mdui-comp-ripple-state-layer-color:var(--mdui-color-primary)}:host([variant=outlined][focus-visible]){border-color:rgb(var(--mdui-color-primary))}:host([variant=elevated][hover]){box-shadow:var(--mdui-elevation-level2)}:host([variant=filled][hover]),:host([variant=tonal][hover]){box-shadow:var(--mdui-elevation-level1)}:host([disabled]:not([disabled=false i])),:host([loading]:not([loading=false i])){cursor:default;pointer-events:none}:host([disabled]:not([disabled=false i])){color:rgba(var(--mdui-color-on-surface),38%);box-shadow:var(--mdui-elevation-level0)}:host([variant=elevated][disabled]:not([disabled=false i])),:host([variant=filled][disabled]:not([disabled=false i])),:host([variant=tonal][disabled]:not([disabled=false i])){background-color:rgba(var(--mdui-color-on-surface),12%)}:host([variant=outlined][disabled]:not([disabled=false i])){border-color:rgba(var(--mdui-color-on-surface),12%)}.label{display:inline-flex;padding-right:.5rem;padding-left:.5rem}.end-icon,.icon{display:inline-flex;font-size:1.28571429em}.end-icon mdui-icon,.icon mdui-icon,::slotted([slot=end-icon]),::slotted([slot=icon]){font-size:inherit}mdui-circular-progress{display:inline-flex;width:1.125rem;height:1.125rem}:host([variant=filled]) mdui-circular-progress{stroke:rgb(var(--mdui-color-on-primary))}:host([variant=tonal]) mdui-circular-progress{stroke:rgb(var(--mdui-color-on-secondary-container))}:host([disabled]:not([disabled=false i])) mdui-circular-progress{stroke:rgba(var(--mdui-color-on-surface),38%)}`; let Button = class Button2 extends ButtonBase { constructor() { super(...arguments); this.variant = "filled"; this.fullWidth = false; this.rippleRef = e$1(); } get rippleElement() { return this.rippleRef.value; } render() { return x`${this.isButton() ? this.renderButton({ className: "button", part: "button", content: this.renderInner() }) : this.disabled || this.loading ? x`${this.renderInner()}` : this.renderAnchor({ className: "button", part: "button", content: this.renderInner() })}`; } renderIcon() { if (this.loading) { return this.renderLoading(); } return x`${this.icon ? x`` : nothingTemplate}`; } renderLabel() { return x``; } renderEndIcon() { return x`${this.endIcon ? x`` : nothingTemplate}`; } renderInner() { return [this.renderIcon(), this.renderLabel(), this.renderEndIcon()]; } }; Button.styles = [ButtonBase.styles, style$h]; __decorate([ n$5({ reflect: true }) ], Button.prototype, "variant", undefined); __decorate([ n$5({ type: Boolean, reflect: true, converter: booleanConverter, attribute: "full-width" }) ], Button.prototype, "fullWidth", undefined); __decorate([ n$5({ reflect: true }) ], Button.prototype, "icon", undefined); __decorate([ n$5({ reflect: true, attribute: "end-icon" }) ], Button.prototype, "endIcon", undefined); Button = __decorate([ t$2("mdui-button") ], Button); const style$g = i$7`:host{--shape-corner:var(--mdui-shape-corner-full);position:relative;display:inline-block;flex-shrink:0;overflow:hidden;text-align:center;border-radius:var(--shape-corner);cursor:pointer;-webkit-tap-highlight-color:transparent;font-size:1.5rem;width:2.5rem;height:2.5rem}:host([variant=standard]){color:rgb(var(--mdui-color-on-surface-variant));--mdui-comp-ripple-state-layer-color:var(--mdui-color-on-surface-variant)}:host([variant=filled]){color:rgb(var(--mdui-color-primary));background-color:rgb(var(--mdui-color-surface-container-highest));--mdui-comp-ripple-state-layer-color:var(--mdui-color-primary)}:host([variant=tonal]){color:rgb(var(--mdui-color-on-surface-variant));background-color:rgb(var(--mdui-color-surface-container-highest));--mdui-comp-ripple-state-layer-color:var(--mdui-color-on-surface-variant)}:host([variant=outlined]){border:.0625rem solid rgb(var(--mdui-color-outline));color:rgb(var(--mdui-color-on-surface-variant));--mdui-comp-ripple-state-layer-color:var(--mdui-color-on-surface-variant)}:host([variant=outlined][pressed]){color:rgb(var(--mdui-color-on-surface));--mdui-comp-ripple-state-layer-color:var(--mdui-color-on-surface)}:host([variant=standard][selected]:not([selected=false i])){color:rgb(var(--mdui-color-primary));--mdui-comp-ripple-state-layer-color:var(--mdui-color-primary)}:host([variant=filled]:not([selectable])),:host([variant=filled][selectable=false i]),:host([variant=filled][selected]:not([selected=false i])){color:rgb(var(--mdui-color-on-primary));background-color:rgb(var(--mdui-color-primary));--mdui-comp-ripple-state-layer-color:var(--mdui-color-on-primary)}:host([variant=tonal]:not([selectable])),:host([variant=tonal][selectable=false i]),:host([variant=tonal][selected]:not([selected=false i])){color:rgb(var(--mdui-color-on-secondary-container));background-color:rgb(var(--mdui-color-secondary-container));--mdui-comp-ripple-state-layer-color:var( --mdui-color-on-secondary-container )}:host([variant=outlined][selected]:not([selected=false i])){border:none;color:rgb(var(--mdui-color-inverse-on-surface));background-color:rgb(var(--mdui-color-inverse-surface));--mdui-comp-ripple-state-layer-color:var(--mdui-color-inverse-on-surface)}:host([variant=filled][disabled]:not([disabled=false i])),:host([variant=outlined][disabled]:not([disabled=false i])),:host([variant=tonal][disabled]:not([disabled=false i])){background-color:rgba(var(--mdui-color-on-surface),.12);border-color:rgba(var(--mdui-color-on-surface),.12)}:host([disabled]:not([disabled=false i])),:host([loading]:not([loading=false i])){cursor:default;pointer-events:none}:host([disabled]:not([disabled=false i])){color:rgba(var(--mdui-color-on-surface),.38)!important}:host([loading]:not([loading=false i])) .button,:host([loading]:not([loading=false i])) mdui-ripple{opacity:0}.button{float:left;width:100%}.icon,.selected-icon mdui-icon,::slotted(*){font-size:inherit}mdui-circular-progress{display:flex;position:absolute;top:calc(50% - 1.5rem / 2);left:calc(50% - 1.5rem / 2);width:1.5rem;height:1.5rem}:host([variant=filled]:not([disabled])) mdui-circular-progress,:host([variant=filled][disabled=false i]) mdui-circular-progress{stroke:rgb(var(--mdui-color-on-primary))}:host([disabled]:not([disabled=false i])) mdui-circular-progress{stroke:rgba(var(--mdui-color-on-surface),38%)}`; let ButtonIcon = class ButtonIcon2 extends ButtonBase { constructor() { super(...arguments); this.variant = "standard"; this.selectable = false; this.selected = false; this.rippleRef = e$1(); this.hasSlotController = new HasSlotController(this, "[default]", "selected-icon"); } get rippleElement() { return this.rippleRef.value; } onSelectedChange() { this.emit("change"); } firstUpdated(changedProperties) { super.firstUpdated(changedProperties); this.addEventListener("click", () => { if (!this.selectable || this.disabled) { return; } this.selected = !this.selected; }); } render() { return x`${this.isButton() ? this.renderButton({ className: "button", part: "button", content: this.renderIcon() }) : this.disabled || this.loading ? x`${this.renderIcon()}` : this.renderAnchor({ className: "button", part: "button", content: this.renderIcon() })} ${this.renderLoading()}`; } renderIcon() { const icon = () => this.hasSlotController.test("[default]") ? x`` : this.icon ? x`` : nothingTemplate; const selectedIcon = () => this.hasSlotController.test("selected-icon") || this.selectedIcon ? x`` : icon(); return this.selected ? selectedIcon() : icon(); } }; ButtonIcon.styles = [ButtonBase.styles, style$g]; __decorate([ n$5({ reflect: true }) ], ButtonIcon.prototype, "variant", undefined); __decorate([ n$5({ reflect: true }) ], ButtonIcon.prototype, "icon", undefined); __decorate([ n$5({ reflect: true, attribute: "selected-icon" }) ], ButtonIcon.prototype, "selectedIcon", undefined); __decorate([ n$5({ type: Boolean, reflect: true, converter: booleanConverter }) ], ButtonIcon.prototype, "selectable", undefined); __decorate([ n$5({ type: Boolean, reflect: true, converter: booleanConverter }) ], ButtonIcon.prototype, "selected", undefined); __decorate([ watch("selected", true) ], ButtonIcon.prototype, "onSelectedChange", null); ButtonIcon = __decorate([ t$2("mdui-button-icon") ], ButtonIcon); const style$f = i$7`:host{--shape-corner:var(--mdui-shape-corner-medium);position:relative;display:inline-block;overflow:hidden;border-radius:var(--shape-corner);-webkit-tap-highlight-color:transparent;transition:box-shadow var(--mdui-motion-duration-short4) var(--mdui-motion-easing-linear);--mdui-comp-ripple-state-layer-color:var(--mdui-color-on-surface)}:host([clickable]:not([clickable=false i])){cursor:pointer}:host([variant=elevated]){background-color:rgb(var(--mdui-color-surface-container-low));box-shadow:var(--mdui-elevation-level1)}:host([variant=filled]){background-color:rgb(var(--mdui-color-surface-container-highest))}:host([variant=outlined]){background-color:rgb(var(--mdui-color-surface));border:.0625rem solid rgb(var(--mdui-color-outline))}:host([variant=elevated][hover]){box-shadow:var(--mdui-elevation-level2)}:host([variant=filled][hover]),:host([variant=outlined][hover]){box-shadow:var(--mdui-elevation-level1)}:host([variant=elevated][dragged]),:host([variant=filled][dragged]),:host([variant=outlined][dragged]){box-shadow:var(--mdui-elevation-level3)}:host([disabled]:not([disabled=false i])){opacity:.38;cursor:default;-webkit-user-select:none;user-select:none}:host([variant=elevated][disabled]:not([disabled=false i])){background-color:rgb(var(--mdui-color-surface-variant));box-shadow:var(--mdui-elevation-level0)}:host([variant=filled][disabled]:not([disabled=false i])){background-color:rgb(var(--mdui-color-surface));box-shadow:var(--mdui-elevation-level1)}:host([variant=outlined][disabled]:not([disabled=false i])){box-shadow:var(--mdui-elevation-level0);border-color:rgba(var(--mdui-color-outline),.32)}.link{position:relative;display:inline-block;width:100%;height:100%;color:inherit;font-size:inherit;letter-spacing:inherit;text-decoration:none;touch-action:manipulation;-webkit-user-drag:none}`; let Card = class Card2 extends AnchorMixin(RippleMixin(FocusableMixin(MduiElement))) { constructor() { super(...arguments); this.variant = "elevated"; this.clickable = false; this.disabled = false; this.rippleRef = e$1(); } get rippleElement() { return this.rippleRef.value; } get rippleDisabled() { return this.disabled || !this.href && !this.clickable; } get focusElement() { return this.href && !this.disabled ? this.renderRoot.querySelector("._a") : this; } get focusDisabled() { return this.rippleDisabled; } render() { return x`${this.href && !this.disabled ? this.renderAnchor({ className: "link", content: x`` }) : x``}`; } }; Card.styles = [componentStyle, style$f]; __decorate([ n$5({ reflect: true }) ], Card.prototype, "variant", undefined); __decorate([ n$5({ type: Boolean, reflect: true, converter: booleanConverter }) ], Card.prototype, "clickable", undefined); __decorate([ n$5({ type: Boolean, reflect: true, converter: booleanConverter }) ], Card.prototype, "disabled", undefined); Card = __decorate([ t$2("mdui-card") ], Card); /** * @license * Copyright 2020 Google LLC * SPDX-License-Identifier: BSD-3-Clause */ const l = e$3(class extends i$3 { constructor(r3) { if (super(r3), r3.type !== t$1.PROPERTY && r3.type !== t$1.ATTRIBUTE && r3.type !== t$1.BOOLEAN_ATTRIBUTE) throw Error("The `live` directive is not allowed on child or event bindings"); if (!f$1(r3)) throw Error("`live` bindings can only contain a single expression"); } render(r3) { return r3; } update(i3, [t2]) { if (t2 === T || t2 === E) return t2; const o2 = i3.element, l2 = i3.name; if (i3.type === t$1.PROPERTY) { if (t2 === o2[l2]) return T; } else if (i3.type === t$1.BOOLEAN_ATTRIBUTE) { if (!!t2 === o2.hasAttribute(l2)) return T; } else if (i3.type === t$1.ATTRIBUTE && o2.getAttribute(l2) === t2 + "") return T; return m$1(i3), t2; } }); function defaultValue(propertyName = "value") { return (proto, key2) => { const constructor = proto.constructor; const attributeChangedCallback = constructor.prototype.attributeChangedCallback; constructor.prototype.attributeChangedCallback = function(name, old, value) { const options = constructor.getPropertyOptions(propertyName); const attributeName = isString(options.attribute) ? options.attribute : propertyName; if (name === attributeName) { const converter = options.converter || u$2; const fromAttribute = isFunction(converter) ? converter : (converter == null ? undefined : converter.fromAttribute) ?? u$2.fromAttribute; const newValue = fromAttribute(value, options.type); if (this[propertyName] !== newValue) { this[key2] = newValue; } } attributeChangedCallback.call(this, name, old, value); }; }; } const style$e = i$7`:host{display:inline-block;width:1em;height:1em;line-height:1;font-size:1.5rem}`; const svgTag = (svgPaths) => x`${o$3(svgPaths)}`; let IconCheckBoxOutlineBlank = class IconCheckBoxOutlineBlank2 extends r$3 { render() { return svgTag(''); } }; IconCheckBoxOutlineBlank.styles = style$e; IconCheckBoxOutlineBlank = __decorate([ t$2("mdui-icon-check-box-outline-blank") ], IconCheckBoxOutlineBlank); let IconCheckBox = class IconCheckBox2 extends r$3 { render() { return svgTag(''); } }; IconCheckBox.styles = style$e; IconCheckBox = __decorate([ t$2("mdui-icon-check-box") ], IconCheckBox); let IconIndeterminateCheckBox = class IconIndeterminateCheckBox2 extends r$3 { render() { return svgTag(''); } }; IconIndeterminateCheckBox.styles = style$e; IconIndeterminateCheckBox = __decorate([ t$2("mdui-icon-indeterminate-check-box") ], IconIndeterminateCheckBox); const style$d = i$7`:host{position:relative;display:inline-flex;cursor:pointer;-webkit-tap-highlight-color:transparent;border-radius:.125rem;font-size:var(--mdui-typescale-label-large-size);font-weight:var(--mdui-typescale-label-large-weight);letter-spacing:var(--mdui-typescale-label-large-tracking);line-height:var(--mdui-typescale-label-large-line-height)}label{display:inline-flex;align-items:center;width:100%;cursor:inherit;-webkit-user-select:none;user-select:none;touch-action:manipulation;zoom:1;-webkit-user-drag:none}input{position:absolute;padding:0;opacity:0;pointer-events:none;width:1.125rem;height:1.125rem;margin:0 0 0 .6875rem}.icon{display:flex;position:absolute;opacity:1;transform:scale(1);color:rgb(var(--mdui-color-on-surface));font-size:1.5rem;transition:color var(--mdui-motion-duration-short4) var(--mdui-motion-easing-standard)}.checked-icon,.indeterminate-icon{opacity:0;transform:scale(.5);transition-property:color,opacity,transform;transition-duration:var(--mdui-motion-duration-short4);transition-timing-function:var(--mdui-motion-easing-standard)}.icon .i,::slotted([slot=checked-icon]),::slotted([slot=indeterminate-icon]),::slotted([slot=unchecked-icon]){color:inherit;font-size:inherit}i{position:relative;display:flex;align-items:center;justify-content:center;flex-shrink:0;overflow:hidden;border-radius:50%;width:2.5rem;height:2.5rem;--mdui-comp-ripple-state-layer-color:var(--mdui-color-on-surface)}.label{display:flex;width:100%;padding-top:.625rem;padding-bottom:.625rem;color:rgb(var(--mdui-color-on-surface));transition:color var(--mdui-motion-duration-short4) var(--mdui-motion-easing-standard)}:host([checked]:not([checked=false i])) i{--mdui-comp-ripple-state-layer-color:var(--mdui-color-primary)}:host([checked]:not([checked=false i])) .icon{color:rgb(var(--mdui-color-primary))}:host([checked]:not([checked=false i])) .indeterminate-icon{opacity:0;transform:scale(.5)}:host([checked]:not([checked=false i])) .checked-icon{opacity:1;transform:scale(1)}:host([indeterminate]:not([indeterminate=false i])) i{--mdui-comp-ripple-state-layer-color:var(--mdui-color-primary)}:host([indeterminate]:not([indeterminate=false i])) .icon{color:rgb(var(--mdui-color-primary))}:host([indeterminate]:not([indeterminate=false i])) .checked-icon{opacity:0;transform:scale(.5)}:host([indeterminate]:not([indeterminate=false i])) .indeterminate-icon{opacity:1;transform:scale(1)}.invalid i{--mdui-comp-ripple-state-layer-color:var(--mdui-color-error)}.invalid .icon{color:rgb(var(--mdui-color-error))}.invalid .label{color:rgb(var(--mdui-color-error))}:host([disabled]:not([disabled=false i])){cursor:default;pointer-events:none}:host([disabled]:not([disabled=false i])) .icon{color:rgba(var(--mdui-color-on-surface),38%)}:host([disabled]:not([disabled=false i])) .label{color:rgba(var(--mdui-color-on-surface),38%)}:host([disabled][checked]:not([disabled=false i],[checked=false i])) .unchecked-icon,:host([disabled][indeterminate]:not([disabled=false i],[indeterminate=false i])) .unchecked-icon{opacity:0}`; let Checkbox = class Checkbox2 extends RippleMixin(FocusableMixin(MduiElement)) { constructor() { super(...arguments); this.disabled = false; this.checked = false; this.defaultChecked = false; this.indeterminate = false; this.required = false; this.name = ""; this.value = "on"; this.invalid = false; this.inputRef = e$1(); this.rippleRef = e$1(); this.formController = new FormController(this, { value: (control) => control.checked ? control.value : undefined, defaultValue: (control) => control.defaultChecked, setValue: (control, checked) => control.checked = checked }); } /** * 表单验证状态对象,具体参见 [`ValidityState`](https://developer.mozilla.org/zh-CN/docs/Web/API/ValidityState) */ get validity() { return this.inputRef.value.validity; } /** * 如果表单验证未通过,此属性将包含提示信息。如果验证通过,此属性将为空字符串 */ get validationMessage() { return this.inputRef.value.validationMessage; } get rippleElement() { return this.rippleRef.value; } get rippleDisabled() { return this.disabled; } get focusElement() { return this.inputRef.value; } get focusDisabled() { return this.disabled; } async onDisabledChange() { await this.updateComplete; this.invalid = !this.inputRef.value.checkValidity(); } async onCheckedChange() { var _a2; await this.updateComplete; const form = this.formController.getForm(); if (form && ((_a2 = formResets.get(form)) == null ? undefined : _a2.has(this))) { this.invalid = false; formResets.get(form).delete(this); } else { this.invalid = !this.inputRef.value.checkValidity(); } } /** * 检查表单字段是否通过验证。如果未通过,返回 `false` 并触发 `invalid` 事件;如果通过,返回 `true` */ checkValidity() { const valid = this.inputRef.value.checkValidity(); if (!valid) { this.emit("invalid", { bubbles: false, cancelable: true, composed: false }); } return valid; } /** * 检查表单字段是否通过验证。如果未通过,返回 `false` 并触发 `invalid` 事件;如果通过,返回 `true`。 * * 如果验证未通过,还会在组件上显示验证失败的提示。 */ reportValidity() { this.invalid = !this.inputRef.value.reportValidity(); if (this.invalid) { const eventProceeded = this.emit("invalid", { bubbles: false, cancelable: true, composed: false }); if (!eventProceeded) { this.blur(); this.focus(); } } return !this.invalid; } /** * 设置自定义的错误提示文本。只要这个文本不为空,就表示字段未通过验证 * * @param message 自定义的错误提示文本 */ setCustomValidity(message) { this.inputRef.value.setCustomValidity(message); this.invalid = !this.inputRef.value.checkValidity(); } render() { return x``; } /** * input[type="checkbox"] 的 change 事件无法冒泡越过 shadow dom */ onChange() { this.checked = this.inputRef.value.checked; this.indeterminate = false; this.emit("change"); } }; Checkbox.styles = [componentStyle, style$d]; __decorate([ n$5({ type: Boolean, reflect: true, converter: booleanConverter }) ], Checkbox.prototype, "disabled", undefined); __decorate([ n$5({ type: Boolean, reflect: true, converter: booleanConverter }) ], Checkbox.prototype, "checked", undefined); __decorate([ defaultValue("checked") ], Checkbox.prototype, "defaultChecked", undefined); __decorate([ n$5({ type: Boolean, reflect: true, converter: booleanConverter }) ], Checkbox.prototype, "indeterminate", undefined); __decorate([ n$5({ type: Boolean, reflect: true, converter: booleanConverter }) ], Checkbox.prototype, "required", undefined); __decorate([ n$5({ reflect: true }) ], Checkbox.prototype, "form", undefined); __decorate([ n$5({ reflect: true }) ], Checkbox.prototype, "name", undefined); __decorate([ n$5({ reflect: true }) ], Checkbox.prototype, "value", undefined); __decorate([ n$5({ reflect: true, attribute: "unchecked-icon" }) ], Checkbox.prototype, "uncheckedIcon", undefined); __decorate([ n$5({ reflect: true, attribute: "checked-icon" }) ], Checkbox.prototype, "checkedIcon", undefined); __decorate([ n$5({ reflect: true, attribute: "indeterminate-icon" }) ], Checkbox.prototype, "indeterminateIcon", undefined); __decorate([ r$1() ], Checkbox.prototype, "invalid", undefined); __decorate([ watch("disabled", true), watch("indeterminate", true), watch("required", true) ], Checkbox.prototype, "onDisabledChange", null); __decorate([ watch("checked", true) ], Checkbox.prototype, "onCheckedChange", null); Checkbox = __decorate([ t$2("mdui-checkbox") ], Checkbox); let IconCheck = class IconCheck2 extends r$3 { render() { return svgTag(''); } }; IconCheck.styles = style$e; IconCheck = __decorate([ t$2("mdui-icon-check") ], IconCheck); let IconClear = class IconClear2 extends r$3 { render() { return svgTag(''); } }; IconClear.styles = style$e; IconClear = __decorate([ t$2("mdui-icon-clear") ], IconClear); const style$c = i$7`:host{--shape-corner:var(--mdui-shape-corner-small);position:relative;display:inline-block;flex-shrink:0;overflow:hidden;border-radius:var(--shape-corner);cursor:pointer;-webkit-tap-highlight-color:transparent;transition:box-shadow var(--mdui-motion-duration-short4) var(--mdui-motion-easing-linear);height:2rem;background-color:rgb(var(--mdui-color-surface));border:.0625rem solid rgb(var(--mdui-color-outline));color:rgb(var(--mdui-color-on-surface-variant));font-size:var(--mdui-typescale-label-large-size);font-weight:var(--mdui-typescale-label-large-weight);letter-spacing:var(--mdui-typescale-label-large-tracking);line-height:var(--mdui-typescale-label-large-line-height);--mdui-comp-ripple-state-layer-color:var(--mdui-color-on-surface-variant)}.button{padding-right:.4375rem;padding-left:.4375rem}:host([variant=input]) .button{padding-right:.1875rem;padding-left:.1875rem}:host([selected]:not([selected=false i])) .button{padding-right:.5rem;padding-left:.5rem}:host([selected][variant=input]:not([selected=false i])) .button{padding-right:.25rem;padding-left:.25rem}:host([elevated]:not([elevated=false i])) .button{padding-right:.5rem;padding-left:.5rem}:host([variant=assist]){color:rgb(var(--mdui-color-on-surface));--mdui-comp-ripple-state-layer-color:var(--mdui-color-on-surface)}:host([elevated]:not([elevated=false i])){border-width:0;background-color:rgb(var(--mdui-color-surface-container-low));box-shadow:var(--mdui-elevation-level1)}:host([selected]:not([selected=false i])){color:rgb(var(--mdui-color-on-secondary-container));background-color:rgb(var(--mdui-color-secondary-container));border-width:0;--mdui-comp-ripple-state-layer-color:var( --mdui-color-on-secondary-container )}:host([disabled]:not([disabled=false i])),:host([loading]:not([loading=false i])){cursor:default;pointer-events:none}:host([disabled]:not([disabled=false i])){border-color:rgba(var(--mdui-color-on-surface),12%);color:rgba(var(--mdui-color-on-surface),38%);box-shadow:var(--mdui-elevation-level0)}:host([disabled][elevated]:not([disabled=false i],[elevated=false i])),:host([disabled][selected]:not([disabled=false i],[selected=false i])){background-color:rgba(var(--mdui-color-on-surface),12%)}:host([selected][hover]:not([selected=false i])){box-shadow:var(--mdui-elevation-level1)}:host([elevated][hover]:not([elevated=false i])){color:rgb(var(--mdui-color-on-secondary-container));box-shadow:var(--mdui-elevation-level2)}:host([variant=filter][hover]),:host([variant=input][hover]),:host([variant=suggestion][hover]){color:rgb(var(--mdui-color-on-surface-variant))}:host([variant=filter][focus-visible]),:host([variant=input][focus-visible]),:host([variant=suggestion][focus-visible]){border-color:rgb(var(--mdui-color-on-surface-variant))}:host([dragged]),:host([dragged][hover]){box-shadow:var(--mdui-elevation-level4)}.button{overflow:visible}.label{display:inline-flex;padding-right:.5rem;padding-left:.5rem}.end-icon,.icon,.selected-icon{display:inline-flex;font-size:1.28571429em;color:rgb(var(--mdui-color-on-surface-variant))}:host([variant=assist]) .end-icon,:host([variant=assist]) .icon,:host([variant=assist]) .selected-icon{color:rgb(var(--mdui-color-primary))}:host([selected]:not([selected=false i])) .end-icon,:host([selected]:not([selected=false i])) .icon,:host([selected]:not([selected=false i])) .selected-icon{color:rgb(var(--mdui-color-on-secondary-container))}:host([disabled]:not([disabled=false i])) .end-icon,:host([disabled]:not([disabled=false i])) .icon,:host([disabled]:not([disabled=false i])) .selected-icon{opacity:.38;color:rgb(var(--mdui-color-on-surface))}.end-icon .i,.icon .i,.selected-icon .i,::slotted([slot=end-icon]),::slotted([slot=icon]),::slotted([slot=selected-icon]){font-size:inherit}:host([variant=input]) .has-icon .icon,:host([variant=input]) .has-icon .selected-icon,:host([variant=input]) .has-icon mdui-circular-progress{margin-left:.25rem}:host([variant=input]) .has-end-icon .end-icon{margin-right:.25rem}mdui-circular-progress{display:inline-flex;width:1.125rem;height:1.125rem}:host([disabled]:not([disabled=false i])) mdui-circular-progress{stroke:rgba(var(--mdui-color-on-surface),38%)}::slotted(mdui-avatar[slot=end-icon]),::slotted(mdui-avatar[slot=icon]),::slotted(mdui-avatar[slot=selected-icon]){width:1.5rem;height:1.5rem}:host([disabled]:not([disabled=false i])) ::slotted(mdui-avatar[slot=end-icon]),:host([disabled]:not([disabled=false i])) ::slotted(mdui-avatar[slot=icon]),:host([disabled]:not([disabled=false i])) ::slotted(mdui-avatar[slot=selected-icon]){opacity:.38}::slotted(mdui-avatar[slot=icon]),::slotted(mdui-avatar[slot=selected-icon]){margin-left:-.25rem;margin-right:-.125rem}::slotted(mdui-avatar[slot=end-icon]){margin-right:-.25rem;margin-left:-.125rem}.delete-icon{display:inline-flex;font-size:1.28571429em;transition:background-color var(--mdui-motion-duration-short4) var(--mdui-motion-easing-linear);border-radius:var(--mdui-shape-corner-full);margin-right:-.25rem;margin-left:-.25rem;padding:.25rem;color:rgb(var(--mdui-color-on-surface-variant))}.delete-icon:hover{background-color:rgba(var(--mdui-color-on-surface-variant),12%)}.has-end-icon .delete-icon{margin-left:.25rem}:host([variant=assiat]) .delete-icon{color:rgb(var(--mdui-color-primary))}:host([variant=input]) .delete-icon{margin-right:.0625rem}:host([disabled]:not([disabled=false i])) .delete-icon{color:rgba(var(--mdui-color-on-surface),38%)}.delete-icon .i,::slotted([slot=delete-icon]){font-size:inherit}::slotted(mdui-avatar[slot=delete-icon]){width:1.125rem;height:1.125rem}`; let Chip = class Chip2 extends ButtonBase { constructor() { super(); this.variant = "assist"; this.elevated = false; this.selectable = false; this.selected = false; this.deletable = false; this.rippleRef = e$1(); this.hasSlotController = new HasSlotController(this, "icon", "selected-icon", "end-icon"); this.onClick = this.onClick.bind(this); this.onKeyDown = this.onKeyDown.bind(this); } get rippleElement() { return this.rippleRef.value; } onSelectedChange() { this.emit("change"); } firstUpdated(changedProperties) { super.firstUpdated(changedProperties); this.addEventListener("click", this.onClick); this.addEventListener("keydown", this.onKeyDown); } render() { const hasIcon = this.icon || this.hasSlotController.test("icon"); const hasEndIcon = this.endIcon || this.hasSlotController.test("end-icon"); const hasSelectedIcon = this.selectedIcon || ["assist", "filter"].includes(this.variant) || hasIcon || this.hasSlotController.test("selected-icon"); const className2 = cc({ button: true, "has-icon": this.loading || !this.selected && hasIcon || this.selected && hasSelectedIcon, "has-end-icon": hasEndIcon }); return x`${this.isButton() ? this.renderButton({ className: className2, part: "button", content: this.renderInner() }) : this.disabled || this.loading ? x`${this.renderInner()}` : this.renderAnchor({ className: className2, part: "button", content: this.renderInner() })}`; } onClick() { if (this.disabled || this.loading) { return; } if (this.selectable) { this.selected = !this.selected; } } onKeyDown(event) { if (this.disabled || this.loading) { return; } if (this.selectable && event.key === " ") { event.preventDefault(); this.selected = !this.selected; } if (this.deletable && ["Delete", "Backspace"].includes(event.key)) { this.emit("delete"); } } /** * 点击删除按钮 */ onDelete(event) { event.stopPropagation(); this.emit("delete"); } renderIcon() { if (this.loading) { return this.renderLoading(); } const icon = () => { return this.icon ? x`` : nothingTemplate; }; const selectedIcon = () => { if (this.selectedIcon) { return x``; } if (this.variant === "assist" || this.variant === "filter") { return x``; } return icon(); }; return !this.selected ? x`${icon()}` : x`${selectedIcon()}`; } renderLabel() { return x``; } renderEndIcon() { return x`${this.endIcon ? x`` : nothingTemplate}`; } renderDeleteIcon() { if (!this.deletable) { return nothingTemplate; } return x`${this.deleteIcon ? x`` : x``}`; } renderInner() { return [ this.renderIcon(), this.renderLabel(), this.renderEndIcon(), this.renderDeleteIcon() ]; } }; Chip.styles = [ButtonBase.styles, style$c]; __decorate([ n$5({ reflect: true }) ], Chip.prototype, "variant", undefined); __decorate([ n$5({ type: Boolean, reflect: true, converter: booleanConverter }) ], Chip.prototype, "elevated", undefined); __decorate([ n$5({ type: Boolean, reflect: true, converter: booleanConverter }) ], Chip.prototype, "selectable", undefined); __decorate([ n$5({ type: Boolean, reflect: true, converter: booleanConverter }) ], Chip.prototype, "selected", undefined); __decorate([ n$5({ type: Boolean, reflect: true, converter: booleanConverter }) ], Chip.prototype, "deletable", undefined); __decorate([ n$5({ reflect: true }) ], Chip.prototype, "icon", undefined); __decorate([ n$5({ reflect: true, attribute: "selected-icon" }) ], Chip.prototype, "selectedIcon", undefined); __decorate([ n$5({ reflect: true, attribute: "end-icon" }) ], Chip.prototype, "endIcon", undefined); __decorate([ n$5({ reflect: true, attribute: "delete-icon" }) ], Chip.prototype, "deleteIcon", undefined); __decorate([ watch("selected", true) ], Chip.prototype, "onSelectedChange", null); Chip = __decorate([ t$2("mdui-chip") ], Chip); const arraysEqualIgnoreOrder = (a2, b2) => { if (a2.length !== b2.length) { return false; } const sortedA = [...a2].sort(); const sortedB = [...b2].sort(); return sortedA.every((value, index) => value === sortedB[index]); }; const collapseStyle = i$7`:host{display:block}`; let Collapse = class Collapse2 extends MduiElement { constructor() { super(...arguments); this.accordion = false; this.disabled = false; this.activeKeys = []; this.isInitial = true; this.definedController = new DefinedController(this, { relatedElements: ["mdui-collapse-item"] }); } async onActiveKeysChange() { var _a2; await this.definedController.whenDefined(); const value = this.accordion ? (_a2 = this.items.find((item) => this.activeKeys.includes(item.key))) == null ? undefined : _a2.value : this.items.filter((item) => this.activeKeys.includes(item.key)).map((item) => item.value); this.setValue(value); if (!this.isInitial) { this.emit("change"); } } async onValueChange() { this.isInitial = !this.hasUpdated; await this.definedController.whenDefined(); if (this.accordion) { const value = this.value; if (!value) { this.setActiveKeys([]); } else { const item = this.items.find((item2) => item2.value === value); this.setActiveKeys(item ? [item.key] : []); } } else { const value = this.value; if (!value.length) { this.setActiveKeys([]); } else { const activeKeys = this.items.filter((item) => value.includes(item.value)).map((item) => item.key); this.setActiveKeys(activeKeys); } } this.updateItems(); } render() { return x``; } setActiveKeys(activeKeys) { if (!arraysEqualIgnoreOrder(this.activeKeys, activeKeys)) { this.activeKeys = activeKeys; } } setValue(value) { if (this.accordion || isUndefined(this.value) || isUndefined(value)) { this.value = value; } else if (!arraysEqualIgnoreOrder(this.value, value)) { this.value = value; } } onClick(event) { if (this.disabled) { return; } if (event.button) { return; } const target = event.target; const item = target.closest("mdui-collapse-item"); if (!item || item.disabled) { return; } const path = event.composedPath(); if (item.trigger && !path.find((element) => isElement(element) && $$1(element).is(item.trigger))) { return; } if (!path.find((element) => isElement(element) && element.part.contains("header"))) { return; } if (this.accordion) { if (this.activeKeys.includes(item.key)) { this.setActiveKeys([]); } else { this.setActiveKeys([item.key]); } } else { const activeKeys = [...this.activeKeys]; if (activeKeys.includes(item.key)) { activeKeys.splice(activeKeys.indexOf(item.key), 1); } else { activeKeys.push(item.key); } this.setActiveKeys(activeKeys); } this.isInitial = false; this.updateItems(); } async onSlotChange() { await this.definedController.whenDefined(); this.updateItems(); } // 更新 的状态 updateItems() { this.items.forEach((item) => { item.active = this.activeKeys.includes(item.key); item.isInitial = this.isInitial; }); } }; Collapse.styles = [ componentStyle, collapseStyle ]; __decorate([ n$5({ type: Boolean, reflect: true, converter: booleanConverter }) ], Collapse.prototype, "accordion", undefined); __decorate([ n$5() ], Collapse.prototype, "value", undefined); __decorate([ n$5({ type: Boolean, reflect: true, converter: booleanConverter }) ], Collapse.prototype, "disabled", undefined); __decorate([ r$1() ], Collapse.prototype, "activeKeys", undefined); __decorate([ o$6({ selector: "mdui-collapse-item", flatten: true }) ], Collapse.prototype, "items", undefined); __decorate([ watch("activeKeys", true) ], Collapse.prototype, "onActiveKeysChange", null); __decorate([ watch("value") ], Collapse.prototype, "onValueChange", null); Collapse = __decorate([ t$2("mdui-collapse") ], Collapse); const collapseItemStyle = i$7`:host{display:flex;flex-direction:column}.header{display:block}.body{display:block;overflow:hidden;transition:height var(--mdui-motion-duration-short4) var(--mdui-motion-easing-emphasized)}.body.opened{overflow:visible}.body.active{transition-duration:var(--mdui-motion-duration-medium4)}`; let CollapseItem = class CollapseItem2 extends MduiElement { constructor() { super(...arguments); this.disabled = false; this.active = false; this.state = "closed"; this.isInitial = true; this.key = uniqueId(); this.bodyRef = e$1(); } onActiveChange() { if (this.isInitial) { this.state = this.active ? "opened" : "closed"; if (this.hasUpdated) { this.updateBodyHeight(); } } else { this.state = this.active ? "open" : "close"; this.emit(this.state); this.updateBodyHeight(); } } firstUpdated(changedProperties) { super.firstUpdated(changedProperties); this.updateBodyHeight(); } render() { return x`${this.header}`; } onTransitionEnd(event) { if (event.target === this.bodyRef.value) { this.state = this.active ? "opened" : "closed"; this.emit(this.state); this.updateBodyHeight(); } } updateBodyHeight() { const scrollHeight = this.bodyRef.value.scrollHeight; if (this.state === "close") { $$1(this.bodyRef.value).height(scrollHeight); this.bodyRef.value.clientLeft; } $$1(this.bodyRef.value).height(this.state === "opened" ? "auto" : this.state === "open" ? scrollHeight : 0); } }; CollapseItem.styles = [ componentStyle, collapseItemStyle ]; __decorate([ n$5({ reflect: true }) ], CollapseItem.prototype, "value", undefined); __decorate([ n$5({ reflect: true }) ], CollapseItem.prototype, "header", undefined); __decorate([ n$5({ type: Boolean, reflect: true, converter: booleanConverter }) ], CollapseItem.prototype, "disabled", undefined); __decorate([ n$5() ], CollapseItem.prototype, "trigger", undefined); __decorate([ r$1() ], CollapseItem.prototype, "active", undefined); __decorate([ r$1() ], CollapseItem.prototype, "state", undefined); __decorate([ watch("active") ], CollapseItem.prototype, "onActiveChange", null); CollapseItem = __decorate([ t$2("mdui-collapse-item") ], CollapseItem); /** * @license * Copyright 2021 Google LLC * SPDX-License-Identifier: BSD-3-Clause */ function n2(n3, r3, t2) { return n3 ? r3(n3) : t2 == null ? undefined : t2(n3); } function animateTo(el, keyframes, options) { if (!el) { return Promise.resolve(); } return new Promise((resolve) => { if (options.duration === Infinity) { throw new Error("Promise-based animations must be finite."); } if (isNumber(options.duration) && isNaN(options.duration)) { options.duration = 0; } if (options.easing === "") { options.easing = "linear"; } const animation = el.animate(keyframes, options); animation.addEventListener("cancel", resolve, { once: true }); animation.addEventListener("finish", resolve, { once: true }); }); } function stopAnimations(el) { if (!el) { return Promise.resolve(); } return Promise.all(el.getAnimations().map((animation) => { return new Promise((resolve) => { const handleAnimationEvent = requestAnimationFrame(resolve); animation.addEventListener("cancel", () => handleAnimationEvent, { once: true }); animation.addEventListener("finish", () => handleAnimationEvent, { once: true }); animation.cancel(); }); })); } function isTabbable(el) { const window2 = getWindow$1(); const localName = el.localName; if (el.getAttribute("tabindex") === "-1") { return false; } if (el.hasAttribute("disabled")) { return false; } if (el.hasAttribute("aria-disabled") && el.getAttribute("aria-disabled") !== "false") { return false; } if (localName === "input" && el.getAttribute("type") === "radio" && !el.hasAttribute("checked")) { return false; } if (el.offsetParent === null) { return false; } if (window2.getComputedStyle(el).visibility === "hidden") { return false; } if ((localName === "audio" || localName === "video") && el.hasAttribute("controls")) { return true; } if (el.hasAttribute("tabindex")) { return true; } if (el.hasAttribute("contenteditable") && el.getAttribute("contenteditable") !== "false") { return true; } return [ "button", "input", "select", "textarea", "a", "audio", "video", "summary" ].includes(localName); } function getTabbableBoundary(root2) { const allElements = []; function walk(el) { if (el instanceof HTMLElement) { allElements.push(el); if (el.shadowRoot !== null && el.shadowRoot.mode === "open") { walk(el.shadowRoot); } } const children = el.children; [...children].forEach((e3) => walk(e3)); } walk(root2); const start = allElements.find((el) => isTabbable(el)) ?? null; const end = allElements.reverse().find((el) => isTabbable(el)) ?? null; return { start, end }; } let activeModals = []; class Modal { constructor(element) { this.tabDirection = "forward"; this.element = element; this.handleFocusIn = this.handleFocusIn.bind(this); this.handleKeyDown = this.handleKeyDown.bind(this); this.handleKeyUp = this.handleKeyUp.bind(this); } activate() { activeModals.push(this.element); document.addEventListener("focusin", this.handleFocusIn); document.addEventListener("keydown", this.handleKeyDown); document.addEventListener("keyup", this.handleKeyUp); } deactivate() { activeModals = activeModals.filter((modal) => modal !== this.element); document.removeEventListener("focusin", this.handleFocusIn); document.removeEventListener("keydown", this.handleKeyDown); document.removeEventListener("keyup", this.handleKeyUp); } isActive() { return activeModals[activeModals.length - 1] === this.element; } checkFocus() { if (this.isActive()) { if (!this.element.matches(":focus-within")) { const { start, end } = getTabbableBoundary(this.element); const target = this.tabDirection === "forward" ? start : end; if (typeof (target == null ? undefined : target.focus) === "function") { target.focus({ preventScroll: true }); } } } } handleFocusIn() { this.checkFocus(); } handleKeyDown(event) { if (event.key === "Tab" && event.shiftKey) { this.tabDirection = "backward"; } requestAnimationFrame(() => this.checkFocus()); } handleKeyUp() { this.tabDirection = "forward"; } } const getEasing = (element, name) => { const cssVariableName = `--mdui-motion-easing-${name}`; return $$1(element).css(cssVariableName).trim(); }; const getDuration = (element, name) => { const cssVariableName = `--mdui-motion-duration-${name}`; const cssValue = $$1(element).css(cssVariableName).trim().toLowerCase(); if (cssValue.endsWith("ms")) { return parseFloat(cssValue); } else { return parseFloat(cssValue) * 1e3; } }; let scrollBarSizeCached; const getScrollBarSize = (fresh) => { if (isUndefined(document)) { return 0; } if (scrollBarSizeCached === undefined) { const $inner = $$1("
").css({ width: "100%", height: "200px" }); const $outer = $$1("
").css({ position: "absolute", top: "0", left: "0", pointerEvents: "none", visibility: "hidden", width: "200px", height: "150px", overflow: "hidden" }).append($inner).appendTo(document.body); const widthContained = $inner[0].offsetWidth; $outer.css("overflow", "scroll"); let widthScroll = $inner[0].offsetWidth; if (widthContained === widthScroll) { widthScroll = $outer[0].clientWidth; } $outer.remove(); scrollBarSizeCached = widthContained - widthScroll; } return scrollBarSizeCached; }; const hasScrollbar = (target) => { return target.scrollHeight > target.clientHeight; }; const lockMap = /* @__PURE__ */ new WeakMap(); const className = "mdui-lock-screen"; const lockScreen = (source2, target) => { const document2 = getDocument(); target ?? (target = document2.documentElement); if (!lockMap.has(target)) { lockMap.set(target, /* @__PURE__ */ new Set()); } const lock = lockMap.get(target); lock.add(source2); const $target = $$1(target); if (hasScrollbar(target)) { $target.css("width", `calc(100% - ${getScrollBarSize()}px)`); } $target.addClass(className); }; const unlockScreen = (source2, target) => { const document2 = getDocument(); target ?? (target = document2.documentElement); const lock = lockMap.get(target); if (!lock) { return; } lock.delete(source2); if (lock.size === 0) { lockMap.delete(target); $$1(target).removeClass(className).width(""); } }; /** * @license * Copyright 2021 Google LLC * SPDX-License-Identifier: BSD-3-Clause */ const LOCALE_STATUS_EVENT = "lit-localize-status"; /** * @license * Copyright 2021 Google LLC * SPDX-License-Identifier: BSD-3-Clause */ const isStrTagged = (val) => typeof val !== "string" && "strTag" in val; const joinStringsAndValues = (strings, values, valueOrder) => { let concat = strings[0]; for (let i3 = 1; i3 < strings.length; i3++) { concat += values[i3 - 1]; concat += strings[i3]; } return concat; }; /** * @license * Copyright 2021 Google LLC * SPDX-License-Identifier: BSD-3-Clause */ const defaultMsg = (template) => isStrTagged(template) ? joinStringsAndValues(template.strings, template.values) : template; let msg = defaultMsg; /** * @license * Copyright 2020 Google LLC * SPDX-License-Identifier: BSD-3-Clause */ class Deferred { constructor() { this.settled = false; this.promise = new Promise((resolve, reject) => { this._resolve = resolve; this._reject = reject; }); } resolve(value) { this.settled = true; this._resolve(value); } reject(error) { this.settled = true; this._reject(error); } } /** * @license * Copyright 2014 Travis Webb * SPDX-License-Identifier: MIT */ for (let i3 = 0; i3 < 256; i3++) { (i3 >> 4 & 15).toString(16) + (i3 & 15).toString(16); } /** * @license * Copyright 2021 Google LLC * SPDX-License-Identifier: BSD-3-Clause */ let loading = new Deferred(); loading.resolve(); let listeningLitLocalizeStatus = false; const localeReadyCallbacksMap = /* @__PURE__ */ new Map(); const onLocaleReady = (target, callback) => { if (!listeningLitLocalizeStatus) { listeningLitLocalizeStatus = true; const window2 = getWindow$1(); window2.addEventListener(LOCALE_STATUS_EVENT, (event) => { if (event.detail.status === "ready") { localeReadyCallbacksMap.forEach((callbacks2) => { callbacks2.forEach((cb) => cb()); }); } }); } const callbacks = localeReadyCallbacksMap.get(target) || []; callbacks.push(callback); localeReadyCallbacksMap.set(target, callbacks); }; const offLocaleReady = (target) => { localeReadyCallbacksMap.delete(target); }; const style$b = i$7`:host{--shape-corner:var(--mdui-shape-corner-extra-large);--z-index:2300;position:fixed;z-index:var(--z-index);display:none;align-items:center;justify-content:center;inset:0;padding:3rem}::slotted(mdui-top-app-bar[slot=header]){position:absolute;border-top-left-radius:var(--mdui-shape-corner-extra-large);border-top-right-radius:var(--mdui-shape-corner-extra-large);background-color:rgb(var(--mdui-color-surface-container-high))}:host([fullscreen]:not([fullscreen=false i])){--shape-corner:var(--mdui-shape-corner-none);padding:0}:host([fullscreen]:not([fullscreen=false i])) ::slotted(mdui-top-app-bar[slot=header]){border-top-left-radius:var(--mdui-shape-corner-none);border-top-right-radius:var(--mdui-shape-corner-none)}.overlay{position:fixed;inset:0;background-color:rgba(var(--mdui-color-scrim),.4)}.panel{--mdui-color-background:var(--mdui-color-surface-container-high);position:relative;display:flex;flex-direction:column;max-height:100%;border-radius:var(--shape-corner);outline:0;transform-origin:top;min-width:17.5rem;max-width:35rem;padding:1.5rem;background-color:rgb(var(--mdui-color-surface-container-high));box-shadow:var(--mdui-elevation-level3)}:host([fullscreen]:not([fullscreen=false i])) .panel{width:100%;max-width:100%;height:100%;max-height:100%;box-shadow:var(--mdui-elevation-level0)}.header{display:flex;flex-direction:column}.has-icon .header{align-items:center}.icon{display:flex;color:rgb(var(--mdui-color-secondary));font-size:1.5rem}.icon mdui-icon,::slotted([slot=icon]){font-size:inherit}.headline{display:flex;color:rgb(var(--mdui-color-on-surface));font-size:var(--mdui-typescale-headline-small-size);font-weight:var(--mdui-typescale-headline-small-weight);letter-spacing:var(--mdui-typescale-headline-small-tracking);line-height:var(--mdui-typescale-headline-small-line-height)}.icon+.headline{padding-top:1rem}.body{overflow:auto}.header+.body{margin-top:1rem}.description{display:flex;color:rgb(var(--mdui-color-on-surface-variant));font-size:var(--mdui-typescale-body-medium-size);font-weight:var(--mdui-typescale-body-medium-weight);letter-spacing:var(--mdui-typescale-body-medium-tracking);line-height:var(--mdui-typescale-body-medium-line-height)}:host([fullscreen]:not([fullscreen=false i])) .description{color:rgb(var(--mdui-color-on-surface))}.has-description.has-default .description{margin-bottom:1rem}.action{display:flex;justify-content:flex-end;padding-top:1.5rem}.action::slotted(:not(:first-child)){margin-left:.5rem}:host([stacked-actions]:not([stacked-actions=false i])) .action{flex-direction:column;align-items:end}:host([stacked-actions]:not([stacked-actions=false i])) .action::slotted(:not(:first-child)){margin-left:0;margin-top:.5rem}`; let Dialog = class Dialog2 extends MduiElement { constructor() { super(...arguments); this.open = false; this.fullscreen = false; this.closeOnEsc = false; this.closeOnOverlayClick = false; this.stackedActions = false; this.overlayRef = e$1(); this.panelRef = e$1(); this.bodyRef = e$1(); this.hasSlotController = new HasSlotController(this, "header", "icon", "headline", "description", "action", "[default]"); this.definedController = new DefinedController(this, { relatedElements: ["mdui-top-app-bar"] }); } async onOpenChange() { const hasUpdated = this.hasUpdated; if (!this.open && !hasUpdated) { return; } await this.definedController.whenDefined(); if (!hasUpdated) { await this.updateComplete; } const children = Array.from(this.panelRef.value.querySelectorAll(".header, .body, .actions")); const easingLinear = getEasing(this, "linear"); const easingEmphasizedDecelerate = getEasing(this, "emphasized-decelerate"); const easingEmphasizedAccelerate = getEasing(this, "emphasized-accelerate"); const stopAnimation = () => Promise.all([ stopAnimations(this.overlayRef.value), stopAnimations(this.panelRef.value), ...children.map((child) => stopAnimations(child)) ]); if (this.open) { if (hasUpdated) { const eventProceeded = this.emit("open", { cancelable: true }); if (!eventProceeded) { return; } } this.style.display = "flex"; const topAppBarElements = this.topAppBarElements ?? []; if (topAppBarElements.length) { const topAppBarElement = topAppBarElements[0]; if (!topAppBarElement.scrollTarget) { topAppBarElement.scrollTarget = this.bodyRef.value; } this.bodyRef.value.style.marginTop = "0"; } this.originalTrigger = document.activeElement; this.modalHelper.activate(); lockScreen(this); await stopAnimation(); requestAnimationFrame(() => { const autoFocusTarget = this.querySelector("[autofocus]"); if (autoFocusTarget) { autoFocusTarget.focus({ preventScroll: true }); } else { this.panelRef.value.focus({ preventScroll: true }); } }); const duration = getDuration(this, "medium4"); await Promise.all([ animateTo(this.overlayRef.value, [{ opacity: 0 }, { opacity: 1, offset: 0.3 }, { opacity: 1 }], { duration: hasUpdated ? duration : 0, easing: easingLinear }), animateTo(this.panelRef.value, [ { transform: "translateY(-1.875rem) scaleY(0)" }, { transform: "translateY(0) scaleY(1)" } ], { duration: hasUpdated ? duration : 0, easing: easingEmphasizedDecelerate }), animateTo(this.panelRef.value, [{ opacity: 0 }, { opacity: 1, offset: 0.1 }, { opacity: 1 }], { duration: hasUpdated ? duration : 0, easing: easingLinear }), ...children.map((child) => animateTo(child, [ { opacity: 0 }, { opacity: 0, offset: 0.2 }, { opacity: 1, offset: 0.8 }, { opacity: 1 } ], { duration: hasUpdated ? duration : 0, easing: easingLinear })) ]); if (hasUpdated) { this.emit("opened"); } } else { const eventProceeded = this.emit("close", { cancelable: true }); if (!eventProceeded) { return; } this.modalHelper.deactivate(); await stopAnimation(); const duration = getDuration(this, "short4"); await Promise.all([ animateTo(this.overlayRef.value, [{ opacity: 1 }, { opacity: 0 }], { duration, easing: easingLinear }), animateTo(this.panelRef.value, [ { transform: "translateY(0) scaleY(1)" }, { transform: "translateY(-1.875rem) scaleY(0.6)" } ], { duration, easing: easingEmphasizedAccelerate }), animateTo(this.panelRef.value, [{ opacity: 1 }, { opacity: 1, offset: 0.75 }, { opacity: 0 }], { duration, easing: easingLinear }), ...children.map((child) => animateTo(child, [{ opacity: 1 }, { opacity: 0, offset: 0.75 }, { opacity: 0 }], { duration, easing: easingLinear })) ]); this.style.display = "none"; unlockScreen(this); const trigger = this.originalTrigger; if (typeof (trigger == null ? undefined : trigger.focus) === "function") { setTimeout(() => trigger.focus()); } this.emit("closed"); } } disconnectedCallback() { super.disconnectedCallback(); unlockScreen(this); offLocaleReady(this); } firstUpdated(_changedProperties) { super.firstUpdated(_changedProperties); this.modalHelper = new Modal(this); this.addEventListener("keydown", (event) => { if (this.open && this.closeOnEsc && event.key === "Escape") { event.stopPropagation(); this.open = false; } }); } render() { const hasActionSlot = this.hasSlotController.test("action"); const hasDefaultSlot = this.hasSlotController.test("[default]"); const hasIcon = !!this.icon || this.hasSlotController.test("icon"); const hasHeadline = !!this.headline || this.hasSlotController.test("headline"); const hasDescription = !!this.description || this.hasSlotController.test("description"); const hasHeader = hasIcon || hasHeadline || this.hasSlotController.test("header"); const hasBody = hasDescription || hasDefaultSlot; return x`
${n2(hasHeader, () => x`${n2(hasIcon, () => this.renderIcon())} ${n2(hasHeadline, () => this.renderHeadline())}`)} ${n2(hasBody, () => x`
${n2(hasDescription, () => this.renderDescription())}
`)} ${n2(hasActionSlot, () => x``)}
`; } onOverlayClick() { this.emit("overlay-click"); if (!this.closeOnOverlayClick) { return; } this.open = false; } renderIcon() { return x`${this.icon ? x`` : nothingTemplate}`; } renderHeadline() { return x`${this.headline}`; } renderDescription() { return x`${this.description}`; } }; Dialog.styles = [componentStyle, style$b]; __decorate([ n$5({ reflect: true }) ], Dialog.prototype, "icon", undefined); __decorate([ n$5({ reflect: true }) ], Dialog.prototype, "headline", undefined); __decorate([ n$5({ reflect: true }) ], Dialog.prototype, "description", undefined); __decorate([ n$5({ type: Boolean, reflect: true, converter: booleanConverter }) ], Dialog.prototype, "open", undefined); __decorate([ n$5({ type: Boolean, reflect: true, converter: booleanConverter }) ], Dialog.prototype, "fullscreen", undefined); __decorate([ n$5({ type: Boolean, reflect: true, converter: booleanConverter, attribute: "close-on-esc" }) ], Dialog.prototype, "closeOnEsc", undefined); __decorate([ n$5({ type: Boolean, reflect: true, converter: booleanConverter, attribute: "close-on-overlay-click" }) ], Dialog.prototype, "closeOnOverlayClick", undefined); __decorate([ n$5({ type: Boolean, reflect: true, converter: booleanConverter, attribute: "stacked-actions" }) ], Dialog.prototype, "stackedActions", undefined); __decorate([ o$6({ slot: "header", selector: "mdui-top-app-bar", flatten: true }) ], Dialog.prototype, "topAppBarElements", undefined); __decorate([ watch("open") ], Dialog.prototype, "onOpenChange", null); Dialog = __decorate([ t$2("mdui-dialog") ], Dialog); const style$a = i$7`:host{display:block;height:.0625rem;background-color:rgb(var(--mdui-color-surface-variant))}:host([inset]:not([inset=false i])){margin-left:1rem}:host([middle]:not([middle=false i])){margin-left:1rem;margin-right:1rem}:host([vertical]:not([vertical=false i])){height:100%;width:.0625rem}`; let Divider = class Divider2 extends MduiElement { constructor() { super(...arguments); this.vertical = false; this.inset = false; this.middle = false; } render() { return x``; } }; Divider.styles = [componentStyle, style$a]; __decorate([ n$5({ type: Boolean, reflect: true, converter: booleanConverter }) ], Divider.prototype, "vertical", undefined); __decorate([ n$5({ type: Boolean, reflect: true, converter: booleanConverter }) ], Divider.prototype, "inset", undefined); __decorate([ n$5({ type: Boolean, reflect: true, converter: booleanConverter }) ], Divider.prototype, "middle", undefined); Divider = __decorate([ t$2("mdui-divider") ], Divider); function hasWindow() { return typeof window !== "undefined"; } function getNodeName(node) { if (isNode(node)) { return (node.nodeName || "").toLowerCase(); } return "#document"; } function getWindow(node) { var _node$ownerDocument; return (node == null || (_node$ownerDocument = node.ownerDocument) == null ? undefined : _node$ownerDocument.defaultView) || window; } function getDocumentElement(node) { var _ref; return (_ref = (isNode(node) ? node.ownerDocument : node.document) || window.document) == null ? undefined : _ref.documentElement; } function isNode(value) { if (!hasWindow()) { return false; } return value instanceof Node || value instanceof getWindow(value).Node; } function isHTMLElement(value) { if (!hasWindow()) { return false; } return value instanceof HTMLElement || value instanceof getWindow(value).HTMLElement; } function isShadowRoot(value) { if (!hasWindow() || typeof ShadowRoot === "undefined") { return false; } return value instanceof ShadowRoot || value instanceof getWindow(value).ShadowRoot; } function isOverflowElement(element) { const { overflow, overflowX, overflowY, display } = getComputedStyle(element); return /auto|scroll|overlay|hidden|clip/.test(overflow + overflowY + overflowX) && !["inline", "contents"].includes(display); } function isLastTraversableNode(node) { return ["html", "body", "#document"].includes(getNodeName(node)); } function getComputedStyle(element) { return getWindow(element).getComputedStyle(element); } function getParentNode(node) { if (getNodeName(node) === "html") { return node; } const result = ( // Step into the shadow DOM of the parent of a slotted node. node.assignedSlot || // DOM Element detected. node.parentNode || // ShadowRoot detected. isShadowRoot(node) && node.host || // Fallback. getDocumentElement(node) ); return isShadowRoot(result) ? result.host : result; } function getNearestOverflowAncestor(node) { const parentNode = getParentNode(node); if (isLastTraversableNode(parentNode)) { return node.ownerDocument ? node.ownerDocument.body : node.body; } if (isHTMLElement(parentNode) && isOverflowElement(parentNode)) { return parentNode; } return getNearestOverflowAncestor(parentNode); } function getOverflowAncestors(node, list, traverseIframes) { var _node$ownerDocument2; if (list === undefined) { list = []; } if (traverseIframes === undefined) { traverseIframes = true; } const scrollableAncestor = getNearestOverflowAncestor(node); const isBody = scrollableAncestor === ((_node$ownerDocument2 = node.ownerDocument) == null ? undefined : _node$ownerDocument2.body); const win = getWindow(scrollableAncestor); if (isBody) { const frameElement = getFrameElement(win); return list.concat(win, win.visualViewport || [], isOverflowElement(scrollableAncestor) ? scrollableAncestor : [], frameElement && traverseIframes ? getOverflowAncestors(frameElement) : []); } return list.concat(scrollableAncestor, getOverflowAncestors(scrollableAncestor, [], traverseIframes)); } function getFrameElement(win) { return win.parent && Object.getPrototypeOf(win.parent) ? win.frameElement : null; } const style$9 = i$7`:host{--z-index:2100;display:contents}.panel{display:block;position:fixed;z-index:var(--z-index)}`; let Dropdown = class Dropdown2 extends MduiElement { constructor() { super(); this.open = false; this.disabled = false; this.trigger = "click"; this.placement = "auto"; this.stayOpenOnClick = false; this.openDelay = 150; this.closeDelay = 150; this.openOnPointer = false; this.panelRef = e$1(); this.definedController = new DefinedController(this, { relatedElements: [""] }); this.onDocumentClick = this.onDocumentClick.bind(this); this.onDocumentKeydown = this.onDocumentKeydown.bind(this); this.onWindowScroll = this.onWindowScroll.bind(this); this.onMouseLeave = this.onMouseLeave.bind(this); this.onFocus = this.onFocus.bind(this); this.onClick = this.onClick.bind(this); this.onContextMenu = this.onContextMenu.bind(this); this.onMouseEnter = this.onMouseEnter.bind(this); this.onPanelClick = this.onPanelClick.bind(this); } get triggerElement() { return this.triggerElements[0]; } // 这些属性变更时,需要更新样式 async onPositionChange() { if (this.open) { await this.definedController.whenDefined(); this.updatePositioner(); } } async onOpenChange() { var _a2, _b; const hasUpdated = this.hasUpdated; if (!this.open && !hasUpdated) { return; } await this.definedController.whenDefined(); if (!hasUpdated) { await this.updateComplete; } const easingLinear = getEasing(this, "linear"); const easingEmphasizedDecelerate = getEasing(this, "emphasized-decelerate"); const easingEmphasizedAccelerate = getEasing(this, "emphasized-accelerate"); if (this.open) { if (hasUpdated) { const eventProceeded = this.emit("open", { cancelable: true }); if (!eventProceeded) { return; } } const focusablePanel = this.panelElements.find((panel) => isFunction(panel.focus)); setTimeout(() => { focusablePanel == null ? undefined : focusablePanel.focus(); }); const duration = getDuration(this, "medium4"); await stopAnimations(this.panelRef.value); this.panelRef.value.hidden = false; this.updatePositioner(); await Promise.all([ animateTo(this.panelRef.value, [ { transform: `${this.getCssScaleName()}(0.45)` }, { transform: `${this.getCssScaleName()}(1)` } ], { duration: hasUpdated ? duration : 0, easing: easingEmphasizedDecelerate }), animateTo(this.panelRef.value, [{ opacity: 0 }, { opacity: 1, offset: 0.125 }, { opacity: 1 }], { duration: hasUpdated ? duration : 0, easing: easingLinear }) ]); if (hasUpdated) { this.emit("opened"); } } else { const eventProceeded = this.emit("close", { cancelable: true }); if (!eventProceeded) { return; } if (!this.hasTrigger("focus") && isFunction((_a2 = this.triggerElement) == null ? undefined : _a2.focus) && (this.contains(document.activeElement) || this.contains(((_b = document.activeElement) == null ? undefined : _b.assignedSlot) ?? null))) { this.triggerElement.focus(); } const duration = getDuration(this, "short4"); await stopAnimations(this.panelRef.value); await Promise.all([ animateTo(this.panelRef.value, [ { transform: `${this.getCssScaleName()}(1)` }, { transform: `${this.getCssScaleName()}(0.45)` } ], { duration, easing: easingEmphasizedAccelerate }), animateTo(this.panelRef.value, [{ opacity: 1 }, { opacity: 1, offset: 0.875 }, { opacity: 0 }], { duration, easing: easingLinear }) ]); if (this.panelRef.value) { this.panelRef.value.hidden = true; } this.emit("closed"); } } connectedCallback() { super.connectedCallback(); this.definedController.whenDefined().then(() => { document.addEventListener("pointerdown", this.onDocumentClick); document.addEventListener("keydown", this.onDocumentKeydown); this.overflowAncestors = getOverflowAncestors(this.triggerElement); this.overflowAncestors.forEach((ancestor) => { ancestor.addEventListener("scroll", this.onWindowScroll); }); this.observeResize = observeResize(this.triggerElement, () => { this.updatePositioner(); }); }); } disconnectedCallback() { var _a2, _b; if (!this.open && this.panelRef.value) { this.panelRef.value.hidden = true; } super.disconnectedCallback(); document.removeEventListener("pointerdown", this.onDocumentClick); document.removeEventListener("keydown", this.onDocumentKeydown); (_a2 = this.overflowAncestors) == null ? undefined : _a2.forEach((ancestor) => { ancestor.removeEventListener("scroll", this.onWindowScroll); }); (_b = this.observeResize) == null ? undefined : _b.unobserve(); } firstUpdated(changedProperties) { super.firstUpdated(changedProperties); this.addEventListener("mouseleave", this.onMouseLeave); this.definedController.whenDefined().then(() => { this.triggerElement.addEventListener("focus", this.onFocus); this.triggerElement.addEventListener("click", this.onClick); this.triggerElement.addEventListener("contextmenu", this.onContextMenu); this.triggerElement.addEventListener("mouseenter", this.onMouseEnter); }); } render() { return x``; } /** * 获取 dropdown 打开、关闭动画的 CSS scaleX 或 scaleY */ getCssScaleName() { return this.animateDirection === "horizontal" ? "scaleX" : "scaleY"; } /** * 在 document 上点击时,根据条件判断是否要关闭 dropdown */ onDocumentClick(e3) { if (this.disabled || !this.open) { return; } const path = e3.composedPath(); if (!path.includes(this)) { this.open = false; } if (this.hasTrigger("contextmenu") && !this.hasTrigger("click") && path.includes(this.triggerElement)) { this.open = false; } } /** * 在 document 上按下按键时,根据条件判断是否要关闭 dropdown */ onDocumentKeydown(event) { var _a2; if (this.disabled || !this.open) { return; } if (event.key === "Escape") { this.open = false; return; } if (event.key === "Tab") { if (!this.hasTrigger("focus") && isFunction((_a2 = this.triggerElement) == null ? undefined : _a2.focus)) { event.preventDefault(); } this.open = false; } } onWindowScroll() { window.requestAnimationFrame(() => this.onPositionChange()); } hasTrigger(trigger) { const triggers = this.trigger.split(" "); return triggers.includes(trigger); } onFocus() { if (this.disabled || this.open || !this.hasTrigger("focus")) { return; } this.open = true; } onClick(e3) { if (this.disabled || e3.button || !this.hasTrigger("click")) { return; } if (this.open && (this.hasTrigger("hover") || this.hasTrigger("focus"))) { return; } this.pointerOffsetX = e3.offsetX; this.pointerOffsetY = e3.offsetY; this.open = !this.open; } onPanelClick(e3) { if (!this.disabled && !this.stayOpenOnClick && $$1(e3.target).is("mdui-menu-item")) { this.open = false; } } onContextMenu(e3) { if (this.disabled || !this.hasTrigger("contextmenu")) { return; } e3.preventDefault(); this.pointerOffsetX = e3.offsetX; this.pointerOffsetY = e3.offsetY; this.open = true; } onMouseEnter() { if (this.disabled || !this.hasTrigger("hover")) { return; } window.clearTimeout(this.closeTimeout); if (this.openDelay) { this.openTimeout = window.setTimeout(() => { this.open = true; }, this.openDelay); } else { this.open = true; } } onMouseLeave() { if (this.disabled || !this.hasTrigger("hover")) { return; } window.clearTimeout(this.openTimeout); this.closeTimeout = window.setTimeout(() => { this.open = false; }, this.closeDelay || 50); } // 更新 panel 的位置 updatePositioner() { const $panel = $$1(this.panelRef.value); const $window = $$1(window); const panelElements = this.panelElements; const panelRect = { width: Math.max(...(panelElements == null ? undefined : panelElements.map((panel) => panel.offsetWidth)) ?? []), height: panelElements == null ? undefined : panelElements.map((panel) => panel.offsetHeight).reduce((total, height) => total + height, 0) }; const triggerClientRect = this.triggerElement.getBoundingClientRect(); const triggerRect = this.openOnPointer ? { top: this.pointerOffsetY + triggerClientRect.top, left: this.pointerOffsetX + triggerClientRect.left, width: 0, height: 0 } : triggerClientRect; const screenMargin = 8; let transformOriginX; let transformOriginY; let top; let left; let placement = this.placement; if (placement === "auto") { const windowWidth = $window.width(); const windowHeight = $window.height(); let position2; let alignment2; if (windowHeight - triggerRect.top - triggerRect.height > panelRect.height + screenMargin) { position2 = "bottom"; } else if (triggerRect.top > panelRect.height + screenMargin) { position2 = "top"; } else if (windowWidth - triggerRect.left - triggerRect.width > panelRect.width + screenMargin) { position2 = "right"; } else if (triggerRect.left > panelRect.width + screenMargin) { position2 = "left"; } else { position2 = "bottom"; } if (["top", "bottom"].includes(position2)) { if (windowWidth - triggerRect.left > panelRect.width + screenMargin) { alignment2 = "start"; } else if (triggerRect.left + triggerRect.width / 2 > panelRect.width / 2 + screenMargin && windowWidth - triggerRect.left - triggerRect.width / 2 > panelRect.width / 2 + screenMargin) { alignment2 = undefined; } else if (triggerRect.left + triggerRect.width > panelRect.width + screenMargin) { alignment2 = "end"; } else { alignment2 = "start"; } } else { if (windowHeight - triggerRect.top > panelRect.height + screenMargin) { alignment2 = "start"; } else if (triggerRect.top + triggerRect.height / 2 > panelRect.height / 2 + screenMargin && windowHeight - triggerRect.top - triggerRect.height / 2 > panelRect.height / 2 + screenMargin) { alignment2 = undefined; } else if (triggerRect.top + triggerRect.height > panelRect.height + screenMargin) { alignment2 = "end"; } else { alignment2 = "start"; } } placement = alignment2 ? [position2, alignment2].join("-") : position2; } const [position, alignment] = placement.split("-"); this.animateDirection = ["top", "bottom"].includes(position) ? "vertical" : "horizontal"; switch (position) { case "top": transformOriginY = "bottom"; top = triggerRect.top - panelRect.height; break; case "bottom": transformOriginY = "top"; top = triggerRect.top + triggerRect.height; break; default: transformOriginY = "center"; switch (alignment) { case "start": top = triggerRect.top; break; case "end": top = triggerRect.top + triggerRect.height - panelRect.height; break; default: top = triggerRect.top + triggerRect.height / 2 - panelRect.height / 2; break; } break; } switch (position) { case "left": transformOriginX = "right"; left = triggerRect.left - panelRect.width; break; case "right": transformOriginX = "left"; left = triggerRect.left + triggerRect.width; break; default: transformOriginX = "center"; switch (alignment) { case "start": left = triggerRect.left; break; case "end": left = triggerRect.left + triggerRect.width - panelRect.width; break; default: left = triggerRect.left + triggerRect.width / 2 - panelRect.width / 2; break; } break; } $panel.css({ top, left, transformOrigin: [transformOriginX, transformOriginY].join(" ") }); } }; Dropdown.styles = [componentStyle, style$9]; __decorate([ n$5({ type: Boolean, reflect: true, converter: booleanConverter }) ], Dropdown.prototype, "open", undefined); __decorate([ n$5({ type: Boolean, reflect: true, converter: booleanConverter }) ], Dropdown.prototype, "disabled", undefined); __decorate([ n$5({ reflect: true }) ], Dropdown.prototype, "trigger", undefined); __decorate([ n$5({ reflect: true }) ], Dropdown.prototype, "placement", undefined); __decorate([ n$5({ type: Boolean, reflect: true, converter: booleanConverter, attribute: "stay-open-on-click" }) ], Dropdown.prototype, "stayOpenOnClick", undefined); __decorate([ n$5({ type: Number, reflect: true, attribute: "open-delay" }) ], Dropdown.prototype, "openDelay", undefined); __decorate([ n$5({ type: Number, reflect: true, attribute: "close-delay" }) ], Dropdown.prototype, "closeDelay", undefined); __decorate([ n$5({ type: Boolean, reflect: true, converter: booleanConverter, attribute: "open-on-pointer" }) ], Dropdown.prototype, "openOnPointer", undefined); __decorate([ o$6({ slot: "trigger", flatten: true }) ], Dropdown.prototype, "triggerElements", undefined); __decorate([ o$6({ flatten: true }) ], Dropdown.prototype, "panelElements", undefined); __decorate([ watch("placement", true), watch("openOnPointer", true) ], Dropdown.prototype, "onPositionChange", null); __decorate([ watch("open") ], Dropdown.prototype, "onOpenChange", null); Dropdown = __decorate([ t$2("mdui-dropdown") ], Dropdown); const delay = (duration = 0) => { return new Promise((resolve) => setTimeout(resolve, duration)); }; const style$8 = i$7`:host{--shape-corner-small:var(--mdui-shape-corner-small);--shape-corner-normal:var(--mdui-shape-corner-large);--shape-corner-large:var(--mdui-shape-corner-extra-large);position:relative;display:inline-block;flex-shrink:0;overflow:hidden;text-align:center;border-radius:var(--shape-corner-normal);cursor:pointer;-webkit-tap-highlight-color:transparent;transition-property:box-shadow;transition-timing-function:var(--mdui-motion-easing-emphasized);transition-duration:var(--mdui-motion-duration-medium4);width:3.5rem;height:3.5rem;box-shadow:var(--mdui-elevation-level3);font-size:var(--mdui-typescale-label-large-size);font-weight:var(--mdui-typescale-label-large-weight);letter-spacing:var(--mdui-typescale-label-large-tracking);line-height:var(--mdui-typescale-label-large-line-height)}.button{padding:0 1rem}:host([size=small]) .button{padding:0 .5rem}:host([size=large]) .button{padding:0 1.875rem}:host([lowered]){box-shadow:var(--mdui-elevation-level1)}:host([focus-visible]){box-shadow:var(--mdui-elevation-level3)}:host([lowered][focus-visible]){box-shadow:var(--mdui-elevation-level1)}:host([pressed]){box-shadow:var(--mdui-elevation-level3)}:host([lowered][pressed]){box-shadow:var(--mdui-elevation-level1)}:host([hover]){box-shadow:var(--mdui-elevation-level4)}:host([lowered][hover]){box-shadow:var(--mdui-elevation-level2)}:host([variant=primary]){color:rgb(var(--mdui-color-on-primary-container));background-color:rgb(var(--mdui-color-primary-container));--mdui-comp-ripple-state-layer-color:var( --mdui-color-on-primary-container )}:host([variant=surface]){color:rgb(var(--mdui-color-primary));background-color:rgb(var(--mdui-color-surface-container-high));--mdui-comp-ripple-state-layer-color:var(--mdui-color-primary)}:host([variant=surface][lowered]){background-color:rgb(var(--mdui-color-surface-container-low))}:host([variant=secondary]){color:rgb(var(--mdui-color-on-secondary-container));background-color:rgb(var(--mdui-color-secondary-container));--mdui-comp-ripple-state-layer-color:var( --mdui-color-on-secondary-container )}:host([variant=tertiary]){color:rgb(var(--mdui-color-on-tertiary-container));background-color:rgb(var(--mdui-color-tertiary-container));--mdui-comp-ripple-state-layer-color:var( --mdui-color-on-tertiary-container )}:host([size=small]){border-radius:var(--shape-corner-small);width:2.5rem;height:2.5rem}:host([size=large]){border-radius:var(--shape-corner-large);width:6rem;height:6rem}:host([disabled]:not([disabled=false i])),:host([loading]:not([loading=false i])){cursor:default;pointer-events:none}:host([disabled]:not([disabled=false i])){color:rgba(var(--mdui-color-on-surface),38%);background-color:rgba(var(--mdui-color-on-surface),12%);box-shadow:var(--mdui-elevation-level0)}:host([extended]:not([extended=false i])){width:auto}.label{display:inline-flex;transition:opacity var(--mdui-motion-duration-short2) var(--mdui-motion-easing-linear) var(--mdui-motion-duration-short2);padding-left:.25rem;padding-right:.25rem}.has-icon .label{margin-left:.5rem}:host([size=small]) .has-icon .label{margin-left:.25rem}:host([size=large]) .has-icon .label{margin-left:1rem}:host(:not([extended])) .label,:host([extended=false i]) .label{opacity:0;transition-delay:0s;transition-duration:var(--mdui-motion-duration-short1)}:host([size=large]) .label{font-size:1.5em}.icon{display:inline-flex;font-size:1.71428571em}:host([size=large]) .icon{font-size:2.57142857em}.icon mdui-icon,::slotted([slot=icon]){font-size:inherit}mdui-circular-progress{display:inline-flex;width:1.5rem;height:1.5rem}:host([size=large]) mdui-circular-progress{width:2.25rem;height:2.25rem}:host([disabled]:not([disabled=false i])) mdui-circular-progress{stroke:rgba(var(--mdui-color-on-surface),38%)}`; let Fab = class Fab2 extends ButtonBase { constructor() { super(...arguments); this.variant = "primary"; this.size = "normal"; this.extended = false; this.rippleRef = e$1(); this.hasSlotController = new HasSlotController(this, "icon"); this.definedController = new DefinedController(this, { relatedElements: [""] }); } get rippleElement() { return this.rippleRef.value; } /** * extended 变更时,设置动画 */ async onExtendedChange() { const hasUpdated = this.hasUpdated; if (this.extended) { this.style.width = `${this.scrollWidth}px`; } else { this.style.width = ""; } await this.definedController.whenDefined(); await this.updateComplete; if (this.extended && !hasUpdated) { this.style.width = `${this.scrollWidth}px`; } if (!hasUpdated) { await delay(); this.style.transitionProperty = "box-shadow, width, bottom, transform"; } } render() { const className2 = cc({ button: true, "has-icon": this.icon || this.hasSlotController.test("icon") }); return x`${this.isButton() ? this.renderButton({ className: className2, part: "button", content: this.renderInner() }) : this.disabled || this.loading ? x`${this.renderInner()}` : this.renderAnchor({ className: className2, part: "button", content: this.renderInner() })}`; } renderLabel() { return x``; } renderIcon() { if (this.loading) { return this.renderLoading(); } return x`${this.icon ? x`` : nothingTemplate}`; } renderInner() { return [this.renderIcon(), this.renderLabel()]; } }; Fab.styles = [ButtonBase.styles, style$8]; __decorate([ n$5({ reflect: true }) ], Fab.prototype, "variant", undefined); __decorate([ n$5({ reflect: true }) ], Fab.prototype, "size", undefined); __decorate([ n$5({ reflect: true }) ], Fab.prototype, "icon", undefined); __decorate([ n$5({ type: Boolean, reflect: true, converter: booleanConverter }) ], Fab.prototype, "extended", undefined); __decorate([ watch("extended") ], Fab.prototype, "onExtendedChange", null); Fab = __decorate([ t$2("mdui-fab") ], Fab); const layoutStyle = i$7`:host{position:relative;display:flex;flex:1 1 auto;overflow:hidden}:host([full-height]:not([full-height=false i])){height:100%}`; let Layout = class Layout2 extends MduiElement { constructor() { super(...arguments); this.fullHeight = false; } render() { return x``; } }; Layout.styles = [componentStyle, layoutStyle]; __decorate([ n$5({ type: Boolean, reflect: true, converter: booleanConverter, attribute: "full-height" }) ], Layout.prototype, "fullHeight", undefined); Layout = __decorate([ t$2("mdui-layout") ], Layout); const layoutItemStyle = i$7`:host{display:flex;z-index:1}`; let LayoutItem = class LayoutItem2 extends LayoutItemBase { constructor() { super(...arguments); this.placement = "top"; } get layoutPlacement() { return this.placement; } // placement 变更时,需要重新调整布局 onPlacementChange() { var _a2; (_a2 = this.layoutManager) == null ? undefined : _a2.updateLayout(this); } render() { return x``; } }; LayoutItem.styles = [ componentStyle, layoutItemStyle ]; __decorate([ n$5({ reflect: true }) ], LayoutItem.prototype, "placement", undefined); __decorate([ watch("placement", true) ], LayoutItem.prototype, "onPlacementChange", null); LayoutItem = __decorate([ t$2("mdui-layout-item") ], LayoutItem); const layoutMainStyle = i$7`:host{flex:1 0 auto;max-width:100%;overflow:auto}`; let LayoutMain = class LayoutMain2 extends MduiElement { connectedCallback() { super.connectedCallback(); const parentElement = this.parentElement; if (isNodeName(parentElement, "mdui-layout")) { this.layoutManager = getLayout(parentElement); this.layoutManager.registerMain(this); } } disconnectedCallback() { super.disconnectedCallback(); if (this.layoutManager) { this.layoutManager.unregisterMain(); } } render() { return x``; } }; LayoutMain.styles = [ componentStyle, layoutMainStyle ]; LayoutMain = __decorate([ t$2("mdui-layout-main") ], LayoutMain); const style$7 = i$7`:host{--shape-corner:var(--mdui-shape-corner-none);position:relative;display:inline-block;width:100%;overflow:hidden;border-radius:var(--shape-corner);background-color:rgb(var(--mdui-color-surface-container-highest));height:.25rem}.determinate,.indeterminate{background-color:rgb(var(--mdui-color-primary))}.determinate{height:100%;transition:width var(--mdui-motion-duration-long2) var(--mdui-motion-easing-standard)}.indeterminate::before{position:absolute;top:0;bottom:0;left:0;background-color:inherit;animation:mdui-comp-progress-indeterminate 2s var(--mdui-motion-easing-linear) infinite;content:' '}.indeterminate::after{position:absolute;top:0;bottom:0;left:0;background-color:inherit;animation:mdui-comp-progress-indeterminate-short 2s var(--mdui-motion-easing-linear) infinite;content:' '}@keyframes mdui-comp-progress-indeterminate{0%{left:0;width:0}50%{left:30%;width:70%}75%{left:100%;width:0}}@keyframes mdui-comp-progress-indeterminate-short{0%{left:0;width:0}50%{left:0;width:0}75%{left:0;width:25%}100%{left:100%;width:0}}`; let LinearProgress = class LinearProgress2 extends MduiElement { constructor() { super(...arguments); this.max = 1; } render() { const isDeterminate = !isUndefined(this.value); if (isDeterminate) { const value = this.value; return x`
`; } return x`
`; } }; LinearProgress.styles = [componentStyle, style$7]; __decorate([ n$5({ type: Number, reflect: true }) ], LinearProgress.prototype, "max", undefined); __decorate([ n$5({ type: Number }) ], LinearProgress.prototype, "value", undefined); LinearProgress = __decorate([ t$2("mdui-linear-progress") ], LinearProgress); const listItemStyle = i$7`:host{--shape-corner:var(--mdui-shape-corner-none);--shape-corner-rounded:var(--mdui-shape-corner-extra-large);position:relative;display:block;border-radius:var(--shape-corner);--mdui-comp-ripple-state-layer-color:var(--mdui-color-on-surface)}:host([rounded]:not([rounded=false i])),:host([rounded]:not([rounded=false i])) mdui-ripple{border-radius:var(--shape-corner-rounded)}:host([active]:not([active=false i])){background-color:rgb(var(--mdui-color-secondary-container));--mdui-comp-ripple-state-layer-color:var( --mdui-color-on-secondary-container )}:host([disabled]:not([disabled=false i])){pointer-events:none}.container{cursor:pointer;-webkit-user-select:none;user-select:none;text-decoration:none;color:inherit;-webkit-tap-highlight-color:transparent}:host([disabled]:not([disabled=false i])) .container{cursor:default;opacity:.38}:host([nonclickable]:not([href],[nonclickable=false i])) .container{cursor:auto;-webkit-user-select:auto;user-select:auto}.preset{display:flex;align-items:center;padding:.5rem 1.5rem .5rem 1rem;min-height:3.5rem}:host([alignment=start]) .preset{align-items:flex-start}:host([alignment=end]) .preset{align-items:flex-end}.body{display:flex;flex:1 1 100%;flex-direction:column;justify-content:center;min-width:0}.headline{display:block;color:rgb(var(--mdui-color-on-surface));font-size:var(--mdui-typescale-body-large-size);font-weight:var(--mdui-typescale-body-large-weight);letter-spacing:var(--mdui-typescale-body-large-tracking);line-height:var(--mdui-typescale-body-large-line-height)}:host([active]:not([active=false i])) .headline{color:rgb(var(--mdui-color-on-secondary-container))}.description{display:none;color:rgb(var(--mdui-color-on-surface-variant));font-size:var(--mdui-typescale-body-medium-size);font-weight:var(--mdui-typescale-body-medium-weight);letter-spacing:var(--mdui-typescale-body-medium-tracking);line-height:var(--mdui-typescale-body-medium-line-height)}:host([disabled]:not([disabled=false i])) .description,:host([focused]) .description,:host([hover]) .description,:host([pressed]) .description{color:rgb(var(--mdui-color-on-surface))}.has-description .description{display:block}:host([description-line='1']) .description,:host([headline-line='1']) .headline{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}:host([description-line='2']) .description,:host([description-line='3']) .description,:host([headline-line='2']) .headline,:host([headline-line='3']) .headline{display:-webkit-box;overflow:hidden;text-overflow:ellipsis;-webkit-box-orient:vertical}:host([description-line='2']) .description,:host([headline-line='2']) .headline{-webkit-line-clamp:2}:host([description-line='3']) .description,:host([headline-line='3']) .headline{-webkit-line-clamp:3}.end-icon,.icon{display:flex;flex:0 0 auto;font-size:var(--mdui-typescale-label-small-size);font-weight:var(--mdui-typescale-label-small-weight);letter-spacing:var(--mdui-typescale-label-small-tracking);line-height:var(--mdui-typescale-label-small-line-height);color:rgb(var(--mdui-color-on-surface-variant))}:host([disabled]:not([disabled=false i])) .end-icon,:host([disabled]:not([disabled=false i])) .icon,:host([focused]) .end-icon,:host([focused]) .icon,:host([hover]) .end-icon,:host([hover]) .icon,:host([pressed]) .end-icon,:host([pressed]) .icon{color:rgb(var(--mdui-color-on-surface))}:host([active]:not([active=false i])) .end-icon,:host([active]:not([active=false i])) .icon{color:rgb(var(--mdui-color-on-secondary-container))}.end-icon mdui-icon,.icon mdui-icon,.is-end-icon ::slotted([slot=end-icon]),.is-icon ::slotted([slot=icon]){font-size:1.5rem}.has-icon .icon{margin-right:1rem}.has-icon ::slotted(mdui-checkbox[slot=icon]),.has-icon ::slotted(mdui-radio[slot=icon]){margin-left:-.5rem}.has-end-icon .end-icon{margin-left:1rem}.has-end-icon ::slotted(mdui-checkbox[slot=end-icon]),.has-end-icon ::slotted(mdui-radio[slot=end-icon]){margin-right:-.5rem}`; let ListItem = class ListItem2 extends AnchorMixin(RippleMixin(FocusableMixin(MduiElement))) { constructor() { super(...arguments); this.disabled = false; this.active = false; this.nonclickable = false; this.rounded = false; this.alignment = "center"; this.rippleRef = e$1(); this.itemRef = e$1(); this.hasSlotController = new HasSlotController(this, "[default]", "description", "icon", "end-icon", "custom"); } get rippleElement() { return this.rippleRef.value; } get rippleDisabled() { return this.focusDisabled; } get focusElement() { return this.href && !this.disabled ? this.itemRef.value : this; } get focusDisabled() { return this.href ? this.disabled : this.disabled || this.nonclickable; } render() { const preset = !this.hasSlotController.test("custom"); const hasIcon = this.icon || this.hasSlotController.test("icon"); const hasEndIcon = this.endIcon || this.hasSlotController.test("end-icon"); const hasDescription = this.description || this.hasSlotController.test("description"); const className2 = cc({ container: true, preset, "has-icon": hasIcon, "has-end-icon": hasEndIcon, "has-description": hasDescription, // icon slot 中的元素是否为 mdui-icon 或 mdui-icon-* 组件 "is-icon": isNodeName(this.iconElements[0], "mdui-icon"), // end-icon slot 中的元素是否为 mdui-icon 或 mdui-icon-* 组件 "is-end-icon": getNodeName$1(this.endIconElements[0]).startsWith("mdui-icon-") }); return x`${this.href && !this.disabled ? this.renderAnchor({ className: className2, content: this.renderInner(), part: "container", refDirective: n$1(this.itemRef) }) : x`
${this.renderInner()}
`}`; } renderInner() { const hasDefaultSlot = this.hasSlotController.test("[default]"); return x`${this.icon ? x`` : nothingTemplate}
${hasDefaultSlot ? x`` : x`
${this.headline}
`}${this.description}
${this.endIcon ? x`` : nothingTemplate}
`; } }; ListItem.styles = [ componentStyle, listItemStyle ]; __decorate([ n$5({ reflect: true }) ], ListItem.prototype, "headline", undefined); __decorate([ n$5({ type: Number, reflect: true, attribute: "headline-line" }) ], ListItem.prototype, "headlineLine", undefined); __decorate([ n$5({ reflect: true }) ], ListItem.prototype, "description", undefined); __decorate([ n$5({ type: Number, reflect: true, attribute: "description-line" }) ], ListItem.prototype, "descriptionLine", undefined); __decorate([ n$5({ reflect: true }) ], ListItem.prototype, "icon", undefined); __decorate([ n$5({ reflect: true, attribute: "end-icon" }) ], ListItem.prototype, "endIcon", undefined); __decorate([ n$5({ type: Boolean, reflect: true, converter: booleanConverter }) ], ListItem.prototype, "disabled", undefined); __decorate([ n$5({ type: Boolean, reflect: true, converter: booleanConverter }) ], ListItem.prototype, "active", undefined); __decorate([ n$5({ type: Boolean, reflect: true, converter: booleanConverter }) ], ListItem.prototype, "nonclickable", undefined); __decorate([ n$5({ type: Boolean, reflect: true, converter: booleanConverter }) ], ListItem.prototype, "rounded", undefined); __decorate([ n$5({ reflect: true }) ], ListItem.prototype, "alignment", undefined); __decorate([ o$6({ slot: "icon", flatten: true }) ], ListItem.prototype, "iconElements", undefined); __decorate([ o$6({ slot: "end-icon", flatten: true }) ], ListItem.prototype, "endIconElements", undefined); ListItem = __decorate([ t$2("mdui-list-item") ], ListItem); const listSubheaderStyle = i$7`:host{display:block;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;cursor:default;color:rgb(var(--mdui-color-on-surface-variant));font-size:var(--mdui-typescale-label-small-size);font-weight:var(--mdui-typescale-label-small-weight);letter-spacing:var(--mdui-typescale-label-small-tracking);line-height:var(--mdui-typescale-label-small-line-height);padding-left:1rem;padding-right:1.5rem;height:3.5rem;line-height:3.5rem}`; let ListSubheader = class ListSubheader2 extends MduiElement { render() { return x``; } }; ListSubheader.styles = [ componentStyle, listSubheaderStyle ]; ListSubheader = __decorate([ t$2("mdui-list-subheader") ], ListSubheader); const listStyle = i$7`:host{display:block;padding:.5rem 0}::slotted(mdui-divider[middle]){margin-left:1rem;margin-right:1.5rem}`; let List = class List2 extends MduiElement { render() { return x``; } }; List.styles = [componentStyle, listStyle]; List = __decorate([ t$2("mdui-list") ], List); let IconArrowRight = class IconArrowRight2 extends r$3 { render() { return svgTag(''); } }; IconArrowRight.styles = style$e; IconArrowRight = __decorate([ t$2("mdui-icon-arrow-right") ], IconArrowRight); const menuItemStyle = i$7`:host{position:relative;display:block}:host([selected]){background-color:rgba(var(--mdui-color-primary),12%)}:host([disabled]:not([disabled=false i])){pointer-events:none}.container{cursor:pointer;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent}:host([disabled]:not([disabled=false i])) .container{cursor:default;opacity:.38}.preset{display:flex;align-items:center;text-decoration:none;height:3rem;padding:0 .75rem}.preset.dense{height:2rem}.label-container{flex:1 1 100%;min-width:0}.label{display:block;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;color:rgb(var(--mdui-color-on-surface));font-size:var(--mdui-typescale-label-large-size);font-weight:var(--mdui-typescale-label-large-weight);letter-spacing:var(--mdui-typescale-label-large-tracking)}.end-icon,.end-text,.icon,.selected-icon{display:none;flex:0 0 auto;color:rgb(var(--mdui-color-on-surface-variant))}.has-end-icon .end-icon,.has-end-text .end-text,.has-icon .icon,.has-icon .selected-icon{display:flex}.end-icon,.icon,.selected-icon{font-size:1.5rem}.end-icon::slotted(mdui-avatar),.icon::slotted(mdui-avatar),.selected-icon::slotted(mdui-avatar){width:1.5rem;height:1.5rem}.dense .end-icon,.dense .icon,.dense .selected-icon{font-size:1.125rem}.dense .end-icon::slotted(mdui-avatar),.dense .icon::slotted(mdui-avatar),.dense .selected-icon::slotted(mdui-avatar){width:1.125rem;height:1.125rem}.end-icon .i,.icon .i,.selected-icon .i,::slotted([slot=end-icon]),::slotted([slot=icon]),::slotted([slot=selected-icon]){font-size:inherit}.end-text{font-size:var(--mdui-typescale-label-large-size);font-weight:var(--mdui-typescale-label-large-weight);letter-spacing:var(--mdui-typescale-label-large-tracking);line-height:var(--mdui-typescale-label-large-line-height)}.icon,.selected-icon{margin-right:.75rem}.end-icon,.end-text{margin-left:.75rem}.arrow-right{color:rgb(var(--mdui-color-on-surface))}.submenu{--shape-corner:var(--mdui-shape-corner-extra-small);display:block;position:absolute;z-index:1;border-radius:var(--shape-corner);background-color:rgb(var(--mdui-color-surface-container));box-shadow:var(--mdui-elevation-level2);min-width:7rem;max-width:17.5rem;padding-top:.5rem;padding-bottom:.5rem;--mdui-comp-ripple-state-layer-color:var(--mdui-color-on-surface)}.submenu::slotted(mdui-divider){margin-top:.5rem;margin-bottom:.5rem}`; let MenuItem = class MenuItem2 extends AnchorMixin(RippleMixin(FocusableMixin(MduiElement))) { constructor() { super(); this.disabled = false; this.submenuOpen = false; this.selected = false; this.dense = false; this.focusable = false; this.key = uniqueId(); this.rippleRef = e$1(); this.containerRef = e$1(); this.submenuRef = e$1(); this.hasSlotController = new HasSlotController(this, "[default]", "icon", "end-icon", "end-text", "submenu", "custom"); this.definedController = new DefinedController(this, { relatedElements: [""] }); this.onOuterClick = this.onOuterClick.bind(this); this.onFocus = this.onFocus.bind(this); this.onBlur = this.onBlur.bind(this); this.onClick = this.onClick.bind(this); this.onKeydown = this.onKeydown.bind(this); this.onMouseEnter = this.onMouseEnter.bind(this); this.onMouseLeave = this.onMouseLeave.bind(this); } get focusDisabled() { return this.disabled || !this.focusable; } get focusElement() { return this.href && !this.disabled ? this.containerRef.value : this; } get rippleDisabled() { return this.disabled; } get rippleElement() { return this.rippleRef.value; } get hasSubmenu() { return this.hasSlotController.test("submenu"); } async onOpenChange() { const hasUpdated = this.hasUpdated; if (!this.submenuOpen && !hasUpdated) { return; } await this.definedController.whenDefined(); if (!hasUpdated) { await this.updateComplete; } const easingLinear = getEasing(this, "linear"); const easingEmphasizedDecelerate = getEasing(this, "emphasized-decelerate"); const easingEmphasizedAccelerate = getEasing(this, "emphasized-accelerate"); if (this.submenuOpen) { if (hasUpdated) { const eventProceeded = this.emit("submenu-open", { cancelable: true }); if (!eventProceeded) { return; } } const duration = getDuration(this, "medium4"); await stopAnimations(this.submenuRef.value); this.submenuRef.value.hidden = false; this.updateSubmenuPositioner(); await Promise.all([ animateTo(this.submenuRef.value, [{ transform: "scaleY(0.45)" }, { transform: "scaleY(1)" }], { duration: hasUpdated ? duration : 0, easing: easingEmphasizedDecelerate }), animateTo(this.submenuRef.value, [{ opacity: 0 }, { opacity: 1, offset: 0.125 }, { opacity: 1 }], { duration: hasUpdated ? duration : 0, easing: easingLinear }) ]); if (hasUpdated) { this.emit("submenu-opened"); } } else { const eventProceeded = this.emit("submenu-close", { cancelable: true }); if (!eventProceeded) { return; } const duration = getDuration(this, "short4"); await stopAnimations(this.submenuRef.value); await Promise.all([ animateTo(this.submenuRef.value, [{ transform: "scaleY(1)" }, { transform: "scaleY(0.45)" }], { duration, easing: easingEmphasizedAccelerate }), animateTo(this.submenuRef.value, [{ opacity: 1 }, { opacity: 1, offset: 0.875 }, { opacity: 0 }], { duration, easing: easingLinear }) ]); if (this.submenuRef.value) { this.submenuRef.value.hidden = true; } this.emit("submenu-closed"); } } connectedCallback() { super.connectedCallback(); this.definedController.whenDefined().then(() => { document.addEventListener("pointerdown", this.onOuterClick); }); } disconnectedCallback() { super.disconnectedCallback(); document.removeEventListener("pointerdown", this.onOuterClick); } firstUpdated(changedProperties) { super.firstUpdated(changedProperties); this.definedController.whenDefined().then(() => { this.addEventListener("focus", this.onFocus); this.addEventListener("blur", this.onBlur); this.addEventListener("click", this.onClick); this.addEventListener("keydown", this.onKeydown); this.addEventListener("mouseenter", this.onMouseEnter); this.addEventListener("mouseleave", this.onMouseLeave); }); } render() { const hasSubmenu = this.hasSubmenu; const hasCustomSlot = this.hasSlotController.test("custom"); const hasEndIconSlot = this.hasSlotController.test("end-icon"); const useDefaultEndIcon = !this.endIcon && hasSubmenu && !hasEndIconSlot; const hasEndIcon = this.endIcon || hasSubmenu || hasEndIconSlot; const hasIcon = !isUndefined(this.icon) || this.selects === "single" || this.selects === "multiple" || this.hasSlotController.test("icon"); const hasEndText = !!this.endText || this.hasSlotController.test("end-text"); const className2 = cc({ container: true, dense: this.dense, preset: !hasCustomSlot, "has-icon": hasIcon, "has-end-text": hasEndText, "has-end-icon": hasEndIcon }); return x`${this.href && !this.disabled ? this.renderAnchor({ part: "container", className: className2, content: this.renderInner(useDefaultEndIcon, hasIcon), refDirective: n$1(this.containerRef), tabIndex: this.focusable ? 0 : -1 }) : x`
${this.renderInner(useDefaultEndIcon, hasIcon)}
`} ${n2(hasSubmenu, () => x``)}`; } /** * 点击子菜单外面的区域,关闭子菜单 */ onOuterClick(event) { if (!this.disabled && this.submenuOpen && this !== event.target && !$$1.contains(this, event.target)) { this.submenuOpen = false; } } hasTrigger(trigger) { return this.submenuTrigger ? this.submenuTrigger.split(" ").includes(trigger) : false; } onFocus() { if (this.disabled || this.submenuOpen || !this.hasTrigger("focus") || !this.hasSubmenu) { return; } this.submenuOpen = true; } onBlur() { if (this.disabled || !this.submenuOpen || !this.hasTrigger("focus") || !this.hasSubmenu) { return; } this.submenuOpen = false; } onClick(event) { if (this.disabled || event.button) { return; } if (!this.hasTrigger("click") || event.target !== this || !this.hasSubmenu) { return; } if (this.submenuOpen && (this.hasTrigger("hover") || this.hasTrigger("focus"))) { return; } this.submenuOpen = !this.submenuOpen; } onKeydown(event) { if (this.disabled || !this.hasSubmenu) { return; } if (!this.submenuOpen && event.key === "Enter") { event.stopPropagation(); this.submenuOpen = true; } if (this.submenuOpen && event.key === "Escape") { event.stopPropagation(); this.submenuOpen = false; } } onMouseEnter() { if (this.disabled || !this.hasTrigger("hover") || !this.hasSubmenu) { return; } window.clearTimeout(this.submenuCloseTimeout); if (this.submenuOpenDelay) { this.submenuOpenTimeout = window.setTimeout(() => { this.submenuOpen = true; }, this.submenuOpenDelay); } else { this.submenuOpen = true; } } onMouseLeave() { if (this.disabled || !this.hasTrigger("hover") || !this.hasSubmenu) { return; } window.clearTimeout(this.submenuOpenTimeout); this.submenuCloseTimeout = window.setTimeout(() => { this.submenuOpen = false; }, this.submenuCloseDelay || 50); } // 更新子菜单的位置 updateSubmenuPositioner() { const $window = $$1(window); const $submenu = $$1(this.submenuRef.value); const itemRect = this.getBoundingClientRect(); const submenuWidth = $submenu.innerWidth(); const submenuHeight = $submenu.innerHeight(); const screenMargin = 8; let placementX = "bottom"; let placementY = "right"; if ($window.height() - itemRect.top > submenuHeight + screenMargin) { placementX = "bottom"; } else if (itemRect.top + itemRect.height > submenuHeight + screenMargin) { placementX = "top"; } if ($window.width() - itemRect.left - itemRect.width > submenuWidth + screenMargin) { placementY = "right"; } else if (itemRect.left > submenuWidth + screenMargin) { placementY = "left"; } $$1(this.submenuRef.value).css({ top: placementX === "bottom" ? 0 : itemRect.height - submenuHeight, left: placementY === "right" ? itemRect.width : -submenuWidth, transformOrigin: [ placementY === "right" ? 0 : "100%", placementX === "bottom" ? 0 : "100%" ].join(" ") }); } renderInner(useDefaultEndIcon, hasIcon) { return x`${this.selected ? x`${this.selectedIcon ? x`` : x``}` : x`${hasIcon ? x`` : nothingTemplate}`}
${this.endText}${useDefaultEndIcon ? x`` : x`${this.endIcon ? x`` : nothingTemplate}`}
`; } }; MenuItem.styles = [ componentStyle, menuItemStyle ]; __decorate([ n$5({ reflect: true }) ], MenuItem.prototype, "value", undefined); __decorate([ n$5({ type: Boolean, reflect: true, converter: booleanConverter }) ], MenuItem.prototype, "disabled", undefined); __decorate([ n$5({ reflect: true }) ], MenuItem.prototype, "icon", undefined); __decorate([ n$5({ reflect: true, attribute: "end-icon" }) ], MenuItem.prototype, "endIcon", undefined); __decorate([ n$5({ reflect: true, attribute: "end-text" }) ], MenuItem.prototype, "endText", undefined); __decorate([ n$5({ reflect: true, attribute: "selected-icon" }) ], MenuItem.prototype, "selectedIcon", undefined); __decorate([ n$5({ type: Boolean, reflect: true, converter: booleanConverter, attribute: "submenu-open" }) ], MenuItem.prototype, "submenuOpen", undefined); __decorate([ n$5({ type: Boolean, reflect: true, converter: booleanConverter }) ], MenuItem.prototype, "selected", undefined); __decorate([ r$1() ], MenuItem.prototype, "dense", undefined); __decorate([ r$1() ], MenuItem.prototype, "selects", undefined); __decorate([ r$1() ], MenuItem.prototype, "submenuTrigger", undefined); __decorate([ r$1() ], MenuItem.prototype, "submenuOpenDelay", undefined); __decorate([ r$1() ], MenuItem.prototype, "submenuCloseDelay", undefined); __decorate([ r$1() ], MenuItem.prototype, "focusable", undefined); __decorate([ watch("submenuOpen") ], MenuItem.prototype, "onOpenChange", null); MenuItem = __decorate([ t$2("mdui-menu-item") ], MenuItem); const menuStyle = i$7`:host{--shape-corner:var(--mdui-shape-corner-extra-small);position:relative;display:block;border-radius:var(--shape-corner);background-color:rgb(var(--mdui-color-surface-container));box-shadow:var(--mdui-elevation-level2);min-width:7rem;max-width:17.5rem;padding-top:.5rem;padding-bottom:.5rem;--mdui-comp-ripple-state-layer-color:var(--mdui-color-on-surface)}::slotted(mdui-divider){margin-top:.5rem;margin-bottom:.5rem}`; let Menu = class Menu2 extends MduiElement { constructor() { super(...arguments); this.dense = false; this.submenuTrigger = "click hover"; this.submenuOpenDelay = 200; this.submenuCloseDelay = 200; this.selectedKeys = []; this.isInitial = true; this.lastActiveItems = []; this.definedController = new DefinedController(this, { relatedElements: ["mdui-menu-item"] }); } // 菜单项元素(包含子菜单中的菜单项) get items() { return $$1(this.childrenItems).find("mdui-menu-item").add(this.childrenItems).get(); } // 菜单项元素(不包含已禁用的,包含子菜单中的菜单项) get itemsEnabled() { return this.items.filter((item) => !item.disabled); } // 当前菜单是否为单选 get isSingle() { return this.selects === "single"; } // 当前菜单是否为多选 get isMultiple() { return this.selects === "multiple"; } // 当前菜单是否可选择 get isSelectable() { return this.isSingle || this.isMultiple; } // 当前菜单是否为子菜单 get isSubmenu() { return !$$1(this).parent().length; } // 最深层级的子菜单中,最后交互过的 menu-item get lastActiveItem() { const index = this.lastActiveItems.length ? this.lastActiveItems.length - 1 : 0; return this.lastActiveItems[index]; } set lastActiveItem(item) { const index = this.lastActiveItems.length ? this.lastActiveItems.length - 1 : 0; this.lastActiveItems[index] = item; } async onSlotChange() { await this.definedController.whenDefined(); this.items.forEach((item) => { item.dense = this.dense; item.selects = this.selects; item.submenuTrigger = this.submenuTrigger; item.submenuOpenDelay = this.submenuOpenDelay; item.submenuCloseDelay = this.submenuCloseDelay; }); } async onSelectsChange() { if (!this.isSelectable) { this.setSelectedKeys([]); } else if (this.isSingle) { this.setSelectedKeys(this.selectedKeys.slice(0, 1)); } await this.onSelectedKeysChange(); } async onSelectedKeysChange() { await this.definedController.whenDefined(); const values = this.itemsEnabled.filter((item) => this.selectedKeys.includes(item.key)).map((item) => item.value); const value = this.isMultiple ? values : values[0] || undefined; this.setValue(value); if (!this.isInitial) { this.emit("change"); } } async onValueChange() { this.isInitial = !this.hasUpdated; await this.definedController.whenDefined(); if (!this.isSelectable) { this.updateSelected(); return; } const values = (this.isSingle ? [this.value] : ( // 多选时,传入的值可能是字符串(通过 attribute 属性设置);或字符串数组(通过 property 属性设置) isString(this.value) ? [this.value] : this.value )).filter((i3) => i3); if (!values.length) { this.setSelectedKeys([]); } else if (this.isSingle) { const firstItem = this.itemsEnabled.find((item) => item.value === values[0]); this.setSelectedKeys(firstItem ? [firstItem.key] : []); } else if (this.isMultiple) { this.setSelectedKeys(this.itemsEnabled.filter((item) => values.includes(item.value)).map((item) => item.key)); } this.updateSelected(); this.updateFocusable(); } /** * 将焦点设置在当前元素上 */ focus(options) { if (this.lastActiveItem) { this.focusOne(this.lastActiveItem, options); } } /** * 从当前元素中移除焦点 */ blur() { if (this.lastActiveItem) { this.lastActiveItem.blur(); } } firstUpdated(changedProperties) { super.firstUpdated(changedProperties); this.definedController.whenDefined().then(() => { this.updateFocusable(); this.lastActiveItem = this.items.find((item) => item.focusable); }); this.addEventListener("submenu-open", (e3) => { const $parentItem = $$1(e3.target); const submenuItemsEnabled = $parentItem.children("mdui-menu-item:not([disabled])").get(); const submenuLevel = $parentItem.parents("mdui-menu-item").length + 1; if (submenuItemsEnabled.length) { this.lastActiveItems[submenuLevel] = submenuItemsEnabled[0]; this.updateFocusable(); this.focusOne(this.lastActiveItems[submenuLevel]); } }); this.addEventListener("submenu-close", (e3) => { const $parentItem = $$1(e3.target); const submenuLevel = $parentItem.parents("mdui-menu-item").length + 1; if (this.lastActiveItems.length - 1 === submenuLevel) { this.lastActiveItems.pop(); this.updateFocusable(); if (this.lastActiveItems[submenuLevel - 1]) { this.focusOne(this.lastActiveItems[submenuLevel - 1]); } } }); } render() { return x``; } setSelectedKeys(selectedKeys) { if (!arraysEqualIgnoreOrder(this.selectedKeys, selectedKeys)) { this.selectedKeys = selectedKeys; } } setValue(value) { if (this.isSingle || isUndefined(this.value) || isUndefined(value)) { this.value = value; } else if (!arraysEqualIgnoreOrder(this.value, value)) { this.value = value; } } // 获取和指定菜单项同级的所有菜单项 getSiblingsItems(item, onlyEnabled = false) { return $$1(item).parent().children(`mdui-menu-item${onlyEnabled ? ":not([disabled])" : ""}`).get(); } // 更新 menu-item 的可聚焦状态 updateFocusable() { if (this.lastActiveItem) { this.items.forEach((item) => { item.focusable = item.key === this.lastActiveItem.key; }); return; } if (!this.selectedKeys.length) { this.itemsEnabled.forEach((item, index) => { item.focusable = !index; }); return; } if (this.isSingle) { this.items.forEach((item) => { item.focusable = this.selectedKeys.includes(item.key); }); return; } if (this.isMultiple) { const focusableItem = this.items.find((item) => item.focusable); if (!(focusableItem == null ? undefined : focusableItem.key) || !this.selectedKeys.includes(focusableItem.key)) { this.itemsEnabled.filter((item) => this.selectedKeys.includes(item.key)).forEach((item, index) => item.focusable = !index); } } } updateSelected() { this.items.forEach((item) => { item.selected = this.selectedKeys.includes(item.key); }); } // 切换一个菜单项的选中状态 selectOne(item) { if (this.isMultiple) { const selectedKeys = [...this.selectedKeys]; if (selectedKeys.includes(item.key)) { selectedKeys.splice(selectedKeys.indexOf(item.key), 1); } else { selectedKeys.push(item.key); } this.setSelectedKeys(selectedKeys); } if (this.isSingle) { if (this.selectedKeys.includes(item.key)) { this.setSelectedKeys([]); } else { this.setSelectedKeys([item.key]); } } this.isInitial = false; this.updateSelected(); } // 使一个 menu-item 可聚焦 async focusableOne(item) { this.items.forEach((_item) => _item.focusable = _item.key === item.key); await delay(); } // 聚焦一个 menu-item focusOne(item, options) { item.focus(options); } async onClick(event) { if (!this.definedController.isDefined()) { return; } if (this.isSubmenu) { return; } if (event.button) { return; } const target = event.target; const item = target.closest("mdui-menu-item"); if (!item || item.disabled) { return; } this.lastActiveItem = item; if (this.isSelectable && item.value) { this.selectOne(item); } await this.focusableOne(item); this.focusOne(item); } async onKeyDown(event) { if (!this.definedController.isDefined()) { return; } if (this.isSubmenu) { return; } const item = event.target; if (event.key === "Enter") { event.preventDefault(); item.click(); } if (event.key === " ") { event.preventDefault(); if (this.isSelectable && item.value) { this.selectOne(item); await this.focusableOne(item); this.focusOne(item); } } if (["ArrowUp", "ArrowDown", "Home", "End"].includes(event.key)) { const items = this.getSiblingsItems(item, true); const activeItem = items.find((item2) => item2.focusable); let index = activeItem ? items.indexOf(activeItem) : 0; if (items.length > 0) { event.preventDefault(); if (event.key === "ArrowDown") { index++; } else if (event.key === "ArrowUp") { index--; } else if (event.key === "Home") { index = 0; } else if (event.key === "End") { index = items.length - 1; } if (index < 0) { index = items.length - 1; } if (index > items.length - 1) { index = 0; } this.lastActiveItem = items[index]; await this.focusableOne(items[index]); this.focusOne(items[index]); return; } } } }; Menu.styles = [componentStyle, menuStyle]; __decorate([ n$5({ reflect: true }) // eslint-disable-next-line prettier/prettier ], Menu.prototype, "selects", undefined); __decorate([ n$5() ], Menu.prototype, "value", undefined); __decorate([ n$5({ type: Boolean, reflect: true, converter: booleanConverter }) ], Menu.prototype, "dense", undefined); __decorate([ n$5({ reflect: true, attribute: "submenu-trigger" }) ], Menu.prototype, "submenuTrigger", undefined); __decorate([ n$5({ type: Number, reflect: true, attribute: "submenu-open-delay" }) ], Menu.prototype, "submenuOpenDelay", undefined); __decorate([ n$5({ type: Number, reflect: true, attribute: "submenu-close-delay" }) ], Menu.prototype, "submenuCloseDelay", undefined); __decorate([ r$1() ], Menu.prototype, "selectedKeys", undefined); __decorate([ o$6({ flatten: true, selector: "mdui-menu-item" }) ], Menu.prototype, "childrenItems", undefined); __decorate([ watch("dense"), watch("selects"), watch("submenuTrigger"), watch("submenuOpenDelay"), watch("submenuCloseDelay") ], Menu.prototype, "onSlotChange", null); __decorate([ watch("selects", true) ], Menu.prototype, "onSelectsChange", null); __decorate([ watch("selectedKeys", true) ], Menu.prototype, "onSelectedKeysChange", null); __decorate([ watch("value") ], Menu.prototype, "onValueChange", null); Menu = __decorate([ t$2("mdui-menu") ], Menu); const navigationBarItemStyle = i$7`:host{--shape-corner-indicator:var(--mdui-shape-corner-full);position:relative;z-index:0;flex:1;overflow:hidden;min-width:3rem;--mdui-comp-ripple-state-layer-color:var(--mdui-color-on-surface-variant)}.container{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;text-decoration:none;cursor:pointer;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;padding-top:.75rem;padding-bottom:.75rem}.container:not(.initial){transition:padding var(--mdui-motion-duration-short4) var(--mdui-motion-easing-standard)}mdui-ripple{z-index:1;left:50%;transform:translateX(-50%);width:4rem;height:2rem;margin-top:.75rem;border-radius:var(--mdui-shape-corner-full)}mdui-ripple:not(.initial){transition:margin-top var(--mdui-motion-duration-short4) var(--mdui-motion-easing-standard)}.indicator{position:relative;display:flex;align-items:center;justify-content:center;background-color:transparent;border-radius:var(--shape-corner-indicator);height:2rem;width:2rem}:not(.initial) .indicator{transition:background-color var(--mdui-motion-duration-short1) var(--mdui-motion-easing-standard),width var(--mdui-motion-duration-short4) var(--mdui-motion-easing-standard)}::slotted([slot=badge]){position:absolute;transform:translate(50%,-50%)}::slotted([slot=badge][variant=small]){transform:translate(.5625rem,-.5625rem)}.active-icon,.icon{color:rgb(var(--mdui-color-on-surface-variant));font-size:1.5rem}.active-icon mdui-icon,.icon mdui-icon,::slotted([slot=active]),::slotted([slot=icon]){font-size:inherit}.icon{display:flex}.active-icon{display:none}.label{display:flex;align-items:center;height:1rem;color:rgb(var(--mdui-color-on-surface-variant));margin-top:.25rem;margin-bottom:.25rem;font-size:var(--mdui-typescale-label-medium-size);font-weight:var(--mdui-typescale-label-medium-weight);letter-spacing:var(--mdui-typescale-label-medium-tracking);line-height:var(--mdui-typescale-label-medium-line-height)}:not(.initial) .label{transition:opacity var(--mdui-motion-duration-short4) var(--mdui-motion-easing-linear)}:host(:not([active])) mdui-ripple.label-visibility-selected,mdui-ripple.label-visibility-unlabeled{margin-top:1.5rem}.container.label-visibility-unlabeled,:host(:not([active])) .container.label-visibility-selected{padding-top:1.5rem;padding-bottom:0}.container.label-visibility-unlabeled .label,:host(:not([active])) .container.label-visibility-selected .label{opacity:0}:host([active]){--mdui-comp-ripple-state-layer-color:var(--mdui-color-on-surface)}:host([active]) .indicator{width:4rem;background-color:rgb(var(--mdui-color-secondary-container))}:host([active]) .active-icon,:host([active]) .icon{color:rgb(var(--mdui-color-on-secondary-container))}:host([active]) .has-active-icon .active-icon{display:flex}:host([active]) .has-active-icon .icon{display:none}:host([active]) .label{color:rgb(var(--mdui-color-on-surface))}`; let NavigationBarItem = class NavigationBarItem2 extends AnchorMixin(RippleMixin(FocusableMixin(MduiElement))) { constructor() { super(...arguments); this.isInitial = true; this.active = false; this.disabled = false; this.key = uniqueId(); this.rippleRef = e$1(); this.hasSlotController = new HasSlotController(this, "active-icon"); } get rippleElement() { return this.rippleRef.value; } get rippleDisabled() { return this.disabled; } get focusElement() { var _a2; return this.href ? (_a2 = this.renderRoot) == null ? undefined : _a2.querySelector("._a") : this; } get focusDisabled() { return this.disabled; } render() { const labelVisibilityClassName = cc({ "label-visibility-selected": this.labelVisibility === "selected", "label-visibility-labeled": this.labelVisibility === "labeled", "label-visibility-unlabeled": this.labelVisibility === "unlabeled", initial: this.isInitial }); const className2 = cc([ { container: true, "has-active-icon": this.activeIcon || this.hasSlotController.test("active-icon") }, labelVisibilityClassName ]); return x`${this.href ? this.renderAnchor({ part: "container", className: className2, content: this.renderInner() }) : x`
${this.renderInner()}
`}`; } renderInner() { return x`
${this.activeIcon ? x`` : nothingTemplate}${this.icon ? x`` : nothingTemplate}
`; } }; NavigationBarItem.styles = [ componentStyle, navigationBarItemStyle ]; __decorate([ n$5({ reflect: true }) ], NavigationBarItem.prototype, "icon", undefined); __decorate([ n$5({ reflect: true, attribute: "active-icon" }) ], NavigationBarItem.prototype, "activeIcon", undefined); __decorate([ n$5({ reflect: true }) ], NavigationBarItem.prototype, "value", undefined); __decorate([ r$1() ], NavigationBarItem.prototype, "labelVisibility", undefined); __decorate([ r$1() ], NavigationBarItem.prototype, "isInitial", undefined); __decorate([ n$5({ type: Boolean, reflect: true, converter: booleanConverter }) ], NavigationBarItem.prototype, "active", undefined); __decorate([ r$1() ], NavigationBarItem.prototype, "disabled", undefined); NavigationBarItem = __decorate([ t$2("mdui-navigation-bar-item") ], NavigationBarItem); const navigationBarStyle = i$7`:host{--shape-corner:var(--mdui-shape-corner-none);--z-index:2000;position:fixed;right:0;bottom:0;left:0;display:flex;flex:0 0 auto;overflow:hidden;border-radius:var(--shape-corner) var(--shape-corner) 0 0;z-index:var(--z-index);transition-property:transform;transition-duration:var(--mdui-motion-duration-long2);transition-timing-function:var(--mdui-motion-easing-emphasized);height:5rem;background-color:rgb(var(--mdui-color-surface));box-shadow:var(--mdui-elevation-level2)}:host([scroll-target]:not([scroll-target=''])){position:absolute}:host([hide]:not([hide=false i])){transform:translateY(5.625rem);transition-duration:var(--mdui-motion-duration-short4)}`; let NavigationBar = class NavigationBar2 extends ScrollBehaviorMixin(LayoutItemBase) { constructor() { super(...arguments); this.hide = false; this.labelVisibility = "auto"; this.activeKey = 0; this.isInitial = true; this.definedController = new DefinedController(this, { relatedElements: ["mdui-navigation-bar-item"] }); } get scrollPaddingPosition() { return "bottom"; } get layoutPlacement() { return "bottom"; } async onActiveKeyChange() { await this.definedController.whenDefined(); const item = this.items.find((item2) => item2.key === this.activeKey); this.value = item == null ? undefined : item.value; if (!this.isInitial) { this.emit("change"); } } async onValueChange() { this.isInitial = !this.hasUpdated; await this.definedController.whenDefined(); const item = this.items.find((item2) => item2.value === this.value); this.activeKey = (item == null ? undefined : item.key) ?? 0; this.updateItems(); } async onLabelVisibilityChange() { await this.definedController.whenDefined(); this.updateItems(); } firstUpdated(_changedProperties) { super.firstUpdated(_changedProperties); this.addEventListener("transitionend", (event) => { if (event.target === this) { this.emit(this.hide ? "hidden" : "shown"); } }); } render() { return x``; } /** * 滚动行为 * 当前仅支持 hide 这一个行为,所以不做行为类型判断 */ runScrollThreshold(isScrollingUp) { if (!isScrollingUp && !this.hide) { const eventProceeded = this.emit("hide", { cancelable: true }); if (eventProceeded) { this.hide = true; } } if (isScrollingUp && this.hide) { const eventProceeded = this.emit("show", { cancelable: true }); if (eventProceeded) { this.hide = false; } } } onClick(event) { if (event.button) { return; } const target = event.target; const item = target.closest("mdui-navigation-bar-item"); if (!item) { return; } this.activeKey = item.key; this.isInitial = false; this.updateItems(); } // 更新 的状态 updateItems() { const items = this.items; const labelVisibility = this.labelVisibility === "auto" ? items.length <= 3 ? "labeled" : "selected" : this.labelVisibility; items.forEach((item) => { item.active = this.activeKey === item.key; item.labelVisibility = labelVisibility; item.isInitial = this.isInitial; }); } async onSlotChange() { await this.definedController.whenDefined(); this.updateItems(); } }; NavigationBar.styles = [ componentStyle, navigationBarStyle ]; __decorate([ n$5({ type: Boolean, reflect: true, converter: booleanConverter }) ], NavigationBar.prototype, "hide", undefined); __decorate([ n$5({ reflect: true, attribute: "label-visibility" }) ], NavigationBar.prototype, "labelVisibility", undefined); __decorate([ n$5({ reflect: true }) ], NavigationBar.prototype, "value", undefined); __decorate([ n$5({ reflect: true, attribute: "scroll-behavior" }) ], NavigationBar.prototype, "scrollBehavior", undefined); __decorate([ r$1() ], NavigationBar.prototype, "activeKey", undefined); __decorate([ o$6({ selector: "mdui-navigation-bar-item", flatten: true }) ], NavigationBar.prototype, "items", undefined); __decorate([ watch("activeKey", true) ], NavigationBar.prototype, "onActiveKeyChange", null); __decorate([ watch("value") ], NavigationBar.prototype, "onValueChange", null); __decorate([ watch("labelVisibility", true) ], NavigationBar.prototype, "onLabelVisibilityChange", null); NavigationBar = __decorate([ t$2("mdui-navigation-bar") ], NavigationBar); const breakpoint = (width) => { const window2 = getWindow$1(); const document2 = getDocument(); const computedStyle = window2.getComputedStyle(document2.documentElement); const containerWidth = isElement(width) ? $$1(width).innerWidth() : isNumber(width) ? width : $$1(window2).innerWidth(); const getBreakpointValue = (breakpoint2) => { const width2 = computedStyle.getPropertyValue(`--mdui-breakpoint-${breakpoint2}`).toLowerCase(); return parseFloat(width2); }; const getNextBreakpoint = (breakpoint2) => { switch (breakpoint2) { case "xs": return "sm"; case "sm": return "md"; case "md": return "lg"; case "lg": return "xl"; case "xl": return "xxl"; } }; return { /** * 当前宽度是否大于指定断点值 * @param breakpoint */ up(breakpoint2) { return containerWidth >= getBreakpointValue(breakpoint2); }, /** * 当前宽度是否小于指定断点值 * @param breakpoint */ down(breakpoint2) { return containerWidth < getBreakpointValue(breakpoint2); }, /** * 当前宽度是否在指定断点值内 * @param breakpoint */ only(breakpoint2) { if (breakpoint2 === "xxl") { return this.up(breakpoint2); } else { return this.up(breakpoint2) && this.down(getNextBreakpoint(breakpoint2)); } }, /** * 当前宽度是否不在指定断点值内 * @param breakpoint */ not(breakpoint2) { return !this.only(breakpoint2); }, /** * 当前宽度是否在指定断点值之间 * @param startBreakpoint * @param endBreakpoint * @returns */ between(startBreakpoint, endBreakpoint) { return this.up(startBreakpoint) && this.down(endBreakpoint); } }; }; const style$6 = i$7`:host{--shape-corner:var(--mdui-shape-corner-large);--z-index:2200;display:none;position:fixed;top:0;bottom:0;left:0;z-index:1;width:22.5rem}:host([placement=right]){left:initial;right:0}:host([mobile]),:host([modal]:not([modal=false i])){top:0!important;right:0;bottom:0!important;width:initial;z-index:var(--z-index)}:host([placement=right][mobile]),:host([placement=right][modal]:not([modal=false i])){left:0}:host([contained]:not([contained=false i])){position:absolute}.overlay{position:absolute;inset:0;z-index:inherit;background-color:rgba(var(--mdui-color-scrim),.4)}.panel{display:block;position:absolute;top:0;bottom:0;left:0;width:100%;overflow:auto;z-index:inherit;background-color:rgb(var(--mdui-color-surface));box-shadow:var(--mdui-elevation-level0)}:host([mobile]) .panel,:host([modal]:not([modal=false i])) .panel{border-radius:0 var(--shape-corner) var(--shape-corner) 0;max-width:80%;width:22.5rem;background-color:rgb(var(--mdui-color-surface-container-low));box-shadow:var(--mdui-elevation-level1)}:host([placement=right]) .panel{left:initial;right:0}:host([placement=right][mobile]) .panel,:host([placement=right][modal]:not([modal=false i])) .panel{border-radius:var(--shape-corner) 0 0 var(--shape-corner)}`; let NavigationDrawer = class NavigationDrawer2 extends LayoutItemBase { constructor() { super(...arguments); this.open = false; this.modal = false; this.closeOnEsc = false; this.closeOnOverlayClick = false; this.placement = "left"; this.contained = false; this.mobile = false; this.overlayRef = e$1(); this.panelRef = e$1(); this.definedController = new DefinedController(this, { needDomReady: true }); } get layoutPlacement() { return this.placement; } get lockTarget() { return this.contained || this.isParentLayout ? this.parentElement : document.documentElement; } get isModal() { return this.mobile || this.modal; } // contained 变更后,修改监听尺寸变化的元素。为 true 时,监听父元素;为 false 时,监听 body async onContainedChange() { var _a2; await this.definedController.whenDefined(); (_a2 = this.observeResize) == null ? undefined : _a2.unobserve(); this.setObserveResize(); } onPlacementChange() { if (this.isParentLayout) { this.layoutManager.updateLayout(this); } } async onMobileChange() { if (!this.open || this.isParentLayout || this.contained) { return; } await this.definedController.whenDefined(); if (this.isModal) { lockScreen(this, this.lockTarget); await this.getLockTargetAnimate(false, 0); } else { unlockScreen(this, this.lockTarget); await this.getLockTargetAnimate(true, 0); } } async onOpenChange() { let panel = this.panelRef.value; let overlay = this.overlayRef.value; const isRight = this.placement === "right"; const easingLinear = getEasing(this, "linear"); const easingEmphasized = getEasing(this, "emphasized"); const setLayoutTransition = (duration, easing) => { $$1(this.layoutManager.getItemsAndMain()).css("transition", isNull(duration) ? null : `all ${duration}ms ${easing}`); }; const stopOldAnimations = async () => { const elements = []; if (this.isModal) { elements.push(overlay, panel); } else if (!this.isParentLayout) { elements.push(this.lockTarget); } if (this.isParentLayout) { const layoutItems = this.layoutManager.getItemsAndMain(); const layoutIndex = layoutItems.indexOf(this); elements.push(...layoutItems.slice(layoutIndex)); } if (!this.isModal && !elements.includes(this)) { elements.push(this); } await Promise.all(elements.map((element) => stopAnimations(element))); }; if (this.open) { const hasUpdated = this.hasUpdated; if (!hasUpdated) { await this.updateComplete; panel = this.panelRef.value; overlay = this.overlayRef.value; } if (hasUpdated) { const eventProceeded = this.emit("open", { cancelable: true }); if (!eventProceeded) { return; } } await this.definedController.whenDefined(); this.style.display = "block"; this.originalTrigger = document.activeElement; if (this.isModal) { this.modalHelper.activate(); if (!this.contained) { lockScreen(this, this.lockTarget); } } await stopOldAnimations(); requestAnimationFrame(() => { const autoFocusTarget = this.querySelector("[autofocus]"); if (autoFocusTarget) { autoFocusTarget.focus({ preventScroll: true }); } else { panel.focus({ preventScroll: true }); } }); const duration = getDuration(this, "long2"); const animations = []; if (this.isModal) { animations.push(animateTo(overlay, [{ opacity: 0 }, { opacity: 1, offset: 0.3 }, { opacity: 1 }], { duration: hasUpdated ? duration : 0, easing: easingLinear })); } else if (!this.isParentLayout) { animations.push(this.getLockTargetAnimate(true, hasUpdated ? duration : 0)); } if (this.isParentLayout && hasUpdated) { setLayoutTransition(duration, easingEmphasized); this.layoutManager.updateLayout(this); } animations.push(animateTo(this.isModal ? panel : this, [ { transform: `translateX(${isRight ? "" : "-"}100%)` }, { transform: "translateX(0)" } ], { duration: hasUpdated ? duration : 0, easing: easingEmphasized })); await Promise.all(animations); if (!this.open) { return; } if (this.isParentLayout && hasUpdated) { setLayoutTransition(null); } if (hasUpdated) { this.emit("opened"); } } else if (this.hasUpdated) { const eventProceeded = this.emit("close", { cancelable: true }); if (!eventProceeded) { return; } await this.definedController.whenDefined(); if (this.isModal) { this.modalHelper.deactivate(); } await stopOldAnimations(); const duration = getDuration(this, "short4"); const animations = []; if (this.isModal) { animations.push(animateTo(overlay, [{ opacity: 1 }, { opacity: 0 }], { duration, easing: easingLinear })); } else if (!this.isParentLayout) { animations.push(this.getLockTargetAnimate(false, duration)); } if (this.isParentLayout) { setLayoutTransition(duration, easingEmphasized); this.layoutManager.updateLayout(this, { width: 0 }); } animations.push(animateTo(this.isModal ? panel : this, [ { transform: "translateX(0)" }, { transform: `translateX(${isRight ? "" : "-"}100%)` } ], { duration, easing: easingEmphasized })); await Promise.all(animations); if (this.open) { return; } if (this.isParentLayout) { setLayoutTransition(null); } this.style.display = "none"; if (this.isModal && !this.contained) { unlockScreen(this, this.lockTarget); } const trigger = this.originalTrigger; if (isFunction(trigger == null ? undefined : trigger.focus)) { setTimeout(() => trigger.focus()); } this.emit("closed"); } } connectedCallback() { super.connectedCallback(); this.modalHelper = new Modal(this); this.definedController.whenDefined().then(() => { this.setObserveResize(); }); } disconnectedCallback() { var _a2; super.disconnectedCallback(); unlockScreen(this, this.lockTarget); (_a2 = this.observeResize) == null ? undefined : _a2.unobserve(); } firstUpdated(_changedProperties) { super.firstUpdated(_changedProperties); this.addEventListener("keydown", (event) => { if (this.open && this.closeOnEsc && event.key === "Escape" && this.isModal) { event.stopPropagation(); this.open = false; } }); } render() { return x`${n2(this.isModal, () => x`
`)}`; } setObserveResize() { this.observeResize = observeResize(this.contained ? this.parentElement : document.documentElement, () => { const target = this.contained ? this.parentElement : undefined; this.mobile = breakpoint(target).down("md"); if (this.isParentLayout) { this.layoutManager.updateLayout(this, { width: this.isModal ? 0 : undefined }); } }); } onOverlayClick() { this.emit("overlay-click"); if (this.closeOnOverlayClick) { this.open = false; } } getLockTargetAnimate(open2, duration) { const paddingName = this.placement === "right" ? "paddingRight" : "paddingLeft"; const panelWidth = $$1(this.panelRef.value).innerWidth() + "px"; return animateTo(this.lockTarget, [ { [paddingName]: open2 ? 0 : panelWidth }, { [paddingName]: open2 ? panelWidth : 0 } ], { duration, easing: getEasing(this, "emphasized"), fill: "forwards" }); } }; NavigationDrawer.styles = [componentStyle, style$6]; __decorate([ n$5({ type: Boolean, reflect: true, converter: booleanConverter }) ], NavigationDrawer.prototype, "open", undefined); __decorate([ n$5({ type: Boolean, reflect: true, converter: booleanConverter }) ], NavigationDrawer.prototype, "modal", undefined); __decorate([ n$5({ type: Boolean, reflect: true, converter: booleanConverter, attribute: "close-on-esc" }) ], NavigationDrawer.prototype, "closeOnEsc", undefined); __decorate([ n$5({ type: Boolean, reflect: true, converter: booleanConverter, attribute: "close-on-overlay-click" }) ], NavigationDrawer.prototype, "closeOnOverlayClick", undefined); __decorate([ n$5({ reflect: true }) // eslint-disable-next-line prettier/prettier ], NavigationDrawer.prototype, "placement", undefined); __decorate([ n$5({ type: Boolean, reflect: true, converter: booleanConverter }) ], NavigationDrawer.prototype, "contained", undefined); __decorate([ n$5({ type: Boolean, reflect: true, converter: booleanConverter }) ], NavigationDrawer.prototype, "mobile", undefined); __decorate([ watch("contained", true) ], NavigationDrawer.prototype, "onContainedChange", null); __decorate([ watch("placement", true) ], NavigationDrawer.prototype, "onPlacementChange", null); __decorate([ watch("mobile", true), watch("modal", true) ], NavigationDrawer.prototype, "onMobileChange", null); __decorate([ watch("open") ], NavigationDrawer.prototype, "onOpenChange", null); NavigationDrawer = __decorate([ t$2("mdui-navigation-drawer") ], NavigationDrawer); const navigationRailStyle = i$7`:host{--shape-corner:var(--mdui-shape-corner-none);--z-index:2000;position:fixed;top:0;bottom:0;left:0;display:flex;flex-direction:column;align-items:center;border-radius:0 var(--shape-corner) var(--shape-corner) 0;z-index:var(--z-index);width:5rem;background-color:rgb(var(--mdui-color-surface));padding:.375rem .75rem}:host([contained]:not([contained=false i])){position:absolute}:host([divider]:not([divider=false i])){border-right:.0625rem solid rgb(var(--mdui-color-surface-variant));width:5.0625rem}:host([placement=right]){left:initial;right:0;border-radius:var(--shape-corner) 0 0 var(--shape-corner)}:host([placement=right][divider]:not([divider=false i])){border-right:none;border-left:.0625rem solid rgb(var(--mdui-color-surface-variant))}.bottom,.items,.top{display:flex;flex-direction:column;align-items:center;width:100%}.top{margin-bottom:1.75rem}.bottom{margin-top:1.75rem}::slotted([slot=bottom]),::slotted([slot=top]),::slotted(mdui-navigation-rail-item){margin-top:.375rem;margin-bottom:.375rem}:host([alignment=start]) .top-spacer{flex-grow:0}:host([alignment=start]) .bottom-spacer{flex-grow:1}:host([alignment=end]) .top-spacer{flex-grow:1}:host([alignment=end]) .bottom-spacer{flex-grow:0}:host([alignment=center]){justify-content:center}:host([alignment=center]) .bottom,:host([alignment=center]) .top{position:absolute}:host([alignment=center]) .top{top:.375rem}:host([alignment=center]) .bottom{bottom:.375rem}`; let NavigationRail = class NavigationRail2 extends LayoutItemBase { constructor() { super(...arguments); this.placement = "left"; this.alignment = "start"; this.contained = false; this.divider = false; this.activeKey = 0; this.hasSlotController = new HasSlotController(this, "top", "bottom"); this.definedController = new DefinedController(this, { relatedElements: ["mdui-navigation-rail-item"] }); this.isInitial = true; } get layoutPlacement() { return this.placement; } get parentTarget() { return this.contained || this.isParentLayout ? this.parentElement : document.body; } get isRight() { return this.placement === "right"; } get paddingValue() { return ["fixed", "absolute"].includes($$1(this).css("position")) ? this.offsetWidth : undefined; } async onActiveKeyChange() { await this.definedController.whenDefined(); const item = this.items.find((item2) => item2.key === this.activeKey); this.value = item == null ? undefined : item.value; if (!this.isInitial) { this.emit("change"); } } async onValueChange() { this.isInitial = !this.hasUpdated; await this.definedController.whenDefined(); const item = this.items.find((item2) => item2.value === this.value); this.activeKey = (item == null ? undefined : item.key) ?? 0; this.updateItems(); } async onContainedChange() { if (this.isParentLayout) { return; } await this.definedController.whenDefined(); $$1(document.body).css({ paddingLeft: this.contained || this.isRight ? null : this.paddingValue, paddingRight: this.contained || !this.isRight ? null : this.paddingValue }); $$1(this.parentElement).css({ paddingLeft: this.contained && !this.isRight ? this.paddingValue : null, paddingRight: this.contained && this.isRight ? this.paddingValue : null }); } async onPlacementChange() { var _a2; await this.definedController.whenDefined(); (_a2 = this.layoutManager) == null ? undefined : _a2.updateLayout(this); this.items.forEach((item) => { item.placement = this.placement; }); if (!this.isParentLayout) { $$1(this.parentTarget).css({ paddingLeft: this.isRight ? null : this.paddingValue, paddingRight: this.isRight ? this.paddingValue : null }); } } connectedCallback() { super.connectedCallback(); if (!this.isParentLayout) { this.definedController.whenDefined().then(() => { $$1(this.parentTarget).css({ paddingLeft: this.isRight ? null : this.paddingValue, paddingRight: this.isRight ? this.paddingValue : null }); }); } } disconnectedCallback() { super.disconnectedCallback(); if (!this.isParentLayout && this.definedController.isDefined()) { $$1(this.parentTarget).css({ paddingLeft: this.isRight ? undefined : null, paddingRight: this.isRight ? null : undefined }); } } render() { const hasTopSlot = this.hasSlotController.test("top"); const hasBottomSlot = this.hasSlotController.test("bottom"); return x`${n2(hasTopSlot, () => x``)} ${n2(hasBottomSlot, () => x``)}`; } onClick(event) { if (event.button) { return; } const target = event.target; const item = target.closest("mdui-navigation-rail-item"); if (!item) { return; } this.activeKey = item.key; this.isInitial = false; this.updateItems(); } updateItems() { this.items.forEach((item) => { item.active = this.activeKey === item.key; item.placement = this.placement; item.isInitial = this.isInitial; }); } async onSlotChange() { await this.definedController.whenDefined(); this.updateItems(); } }; NavigationRail.styles = [ componentStyle, navigationRailStyle ]; __decorate([ n$5({ reflect: true }) ], NavigationRail.prototype, "value", undefined); __decorate([ n$5({ reflect: true }) // eslint-disable-next-line prettier/prettier ], NavigationRail.prototype, "placement", undefined); __decorate([ n$5({ reflect: true }) ], NavigationRail.prototype, "alignment", undefined); __decorate([ n$5({ type: Boolean, reflect: true, converter: booleanConverter }) ], NavigationRail.prototype, "contained", undefined); __decorate([ n$5({ type: Boolean, reflect: true, converter: booleanConverter }) ], NavigationRail.prototype, "divider", undefined); __decorate([ r$1() ], NavigationRail.prototype, "activeKey", undefined); __decorate([ o$6({ selector: "mdui-navigation-rail-item", flatten: true }) ], NavigationRail.prototype, "items", undefined); __decorate([ watch("activeKey", true) ], NavigationRail.prototype, "onActiveKeyChange", null); __decorate([ watch("value") ], NavigationRail.prototype, "onValueChange", null); __decorate([ watch("contained", true) ], NavigationRail.prototype, "onContainedChange", null); __decorate([ watch("placement", true) ], NavigationRail.prototype, "onPlacementChange", null); NavigationRail = __decorate([ t$2("mdui-navigation-rail") ], NavigationRail); const navigationRailItemStyle = i$7`:host{--shape-corner-indicator:var(--mdui-shape-corner-full);position:relative;z-index:0;width:100%;--mdui-comp-ripple-state-layer-color:var(--mdui-color-on-surface-variant)}.container{display:flex;flex-direction:column;align-items:center;justify-content:center;text-decoration:none;cursor:pointer;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;height:3.5rem}.container:not(.initial){transition:padding var(--mdui-motion-duration-short4) var(--mdui-motion-easing-standard)}mdui-ripple{z-index:1;width:3.5rem;height:2rem;border-radius:var(--mdui-shape-corner-full)}.container:not(.has-label)+mdui-ripple{height:3.5rem}.indicator{position:relative;display:flex;align-items:center;justify-content:center;background-color:transparent;border-radius:var(--shape-corner-indicator);height:2rem;width:2rem}:not(.initial) .indicator{transition:background-color var(--mdui-motion-duration-short1) var(--mdui-motion-easing-standard),width var(--mdui-motion-duration-short4) var(--mdui-motion-easing-standard),height var(--mdui-motion-duration-short4) var(--mdui-motion-easing-standard)}::slotted([slot=badge]){position:absolute;transform:translate(50%,-50%)}.placement-right::slotted([slot=badge]){transform:translate(-50%,-50%)}::slotted([slot=badge][variant=small]){transform:translate(.5625rem,-.5625rem)}.placement-right::slotted([slot=badge][variant=small]){transform:translate(-.5625rem,-.5625rem)}.active-icon,.icon{color:rgb(var(--mdui-color-on-surface-variant));font-size:1.5rem}.active-icon mdui-icon,.icon mdui-icon,::slotted([slot=active-icon]),::slotted([slot=icon]){font-size:inherit}.icon{display:flex}.active-icon{display:none}.label{display:flex;align-items:center;height:1rem;color:rgb(var(--mdui-color-on-surface-variant));margin-top:.25rem;margin-bottom:.25rem;font-size:var(--mdui-typescale-label-medium-size);font-weight:var(--mdui-typescale-label-medium-weight);letter-spacing:var(--mdui-typescale-label-medium-tracking);line-height:var(--mdui-typescale-label-medium-line-height)}:not(.initial) .label{transition:opacity var(--mdui-motion-duration-short4) var(--mdui-motion-easing-linear)}:host([active]){--mdui-comp-ripple-state-layer-color:var(--mdui-color-on-surface)}:host([active]) .indicator{width:3.5rem;background-color:rgb(var(--mdui-color-secondary-container))}:host([active]) :not(.has-label) .indicator{height:3.5rem}:host([active]) .active-icon,:host([active]) .icon{color:rgb(var(--mdui-color-on-secondary-container))}:host([active]) .has-active-icon .active-icon{display:flex}:host([active]) .has-active-icon .icon{display:none}:host([active]) .label{color:rgb(var(--mdui-color-on-surface))}`; let NavigationRailItem = class NavigationRailItem2 extends AnchorMixin(RippleMixin(FocusableMixin(MduiElement))) { constructor() { super(...arguments); this.active = false; this.isInitial = true; this.placement = "left"; this.disabled = false; this.key = uniqueId(); this.rippleRef = e$1(); this.hasSlotController = new HasSlotController(this, "[default]", "active-icon"); } get rippleElement() { return this.rippleRef.value; } get rippleDisabled() { return this.disabled; } get focusElement() { var _a2; return this.href ? (_a2 = this.renderRoot) == null ? undefined : _a2.querySelector("._a") : this; } get focusDisabled() { return this.disabled; } render() { const hasDefaultSlot = this.hasSlotController.test("[default]"); const className2 = cc({ container: true, "has-label": hasDefaultSlot, "has-active-icon": this.activeIcon || this.hasSlotController.test("active-icon"), initial: this.isInitial }); return x`${this.href ? this.renderAnchor({ part: "container", className: className2, content: this.renderInner(hasDefaultSlot) }) : x`
${this.renderInner(hasDefaultSlot)}
`}`; } renderInner(hasDefaultSlot) { return x`
${this.activeIcon ? x`` : nothingTemplate}${this.icon ? x`` : nothingTemplate}
${hasDefaultSlot ? x`` : E}`; } }; NavigationRailItem.styles = [ componentStyle, navigationRailItemStyle ]; __decorate([ n$5({ reflect: true }) ], NavigationRailItem.prototype, "icon", undefined); __decorate([ n$5({ reflect: true, attribute: "active-icon" }) ], NavigationRailItem.prototype, "activeIcon", undefined); __decorate([ n$5({ reflect: true }) ], NavigationRailItem.prototype, "value", undefined); __decorate([ n$5({ type: Boolean, reflect: true, converter: booleanConverter }) ], NavigationRailItem.prototype, "active", undefined); __decorate([ r$1() ], NavigationRailItem.prototype, "isInitial", undefined); __decorate([ r$1() ], NavigationRailItem.prototype, "placement", undefined); __decorate([ r$1() ], NavigationRailItem.prototype, "disabled", undefined); NavigationRailItem = __decorate([ t$2("mdui-navigation-rail-item") ], NavigationRailItem); let IconCircle = class IconCircle2 extends r$3 { render() { return svgTag(''); } }; IconCircle.styles = style$e; IconCircle = __decorate([ t$2("mdui-icon-circle") ], IconCircle); let IconRadioButtonUnchecked = class IconRadioButtonUnchecked2 extends r$3 { render() { return svgTag(''); } }; IconRadioButtonUnchecked.styles = style$e; IconRadioButtonUnchecked = __decorate([ t$2("mdui-icon-radio-button-unchecked") ], IconRadioButtonUnchecked); const radioStyle = i$7`:host{position:relative;display:inline-flex;align-items:center;cursor:pointer;-webkit-tap-highlight-color:transparent;-webkit-user-select:none;user-select:none;touch-action:manipulation;zoom:1;-webkit-user-drag:none;border-radius:.125rem;font-size:var(--mdui-typescale-label-large-size);font-weight:var(--mdui-typescale-label-large-weight);letter-spacing:var(--mdui-typescale-label-large-tracking);line-height:var(--mdui-typescale-label-large-line-height)}.icon{display:flex;position:absolute;font-size:1.5rem}:not(.initial) .icon{transition-duration:var(--mdui-motion-duration-short4);transition-timing-function:var(--mdui-motion-easing-standard)}.unchecked-icon{transition-property:color;color:rgb(var(--mdui-color-on-surface-variant))}:host([focused]) .unchecked-icon,:host([hover]) .unchecked-icon,:host([pressed]) .unchecked-icon{color:rgb(var(--mdui-color-on-surface))}.checked-icon{opacity:0;transform:scale(.2);transition-property:color,opacity,transform;color:rgb(var(--mdui-color-primary))}.icon .i,::slotted([slot=checked-icon]),::slotted([slot=unchecked-icon]){color:inherit;font-size:inherit}i{position:relative;display:flex;align-items:center;justify-content:center;flex-shrink:0;overflow:hidden;border-radius:50%;width:2.5rem;height:2.5rem;--mdui-comp-ripple-state-layer-color:var(--mdui-color-on-surface)}.label{display:flex;width:100%;padding-top:.625rem;padding-bottom:.625rem;color:rgb(var(--mdui-color-on-surface))}.label:not(.initial){transition:color var(--mdui-motion-duration-short4) var(--mdui-motion-easing-standard)}:host([checked]:not([checked=false i])) i{--mdui-comp-ripple-state-layer-color:var(--mdui-color-primary)}:host([checked]:not([checked=false i])) .icon{color:rgb(var(--mdui-color-primary))}:host([checked]:not([checked=false i])) .checked-icon{opacity:1;transform:scale(.5)}i.invalid{--mdui-comp-ripple-state-layer-color:var(--mdui-color-error)}i.invalid .icon{color:rgb(var(--mdui-color-error))}.label.invalid{color:rgb(var(--mdui-color-error))}:host([disabled]:not([disabled=false i])),:host([group-disabled]){cursor:default;pointer-events:none}:host([disabled]:not([disabled=false i])) .icon,:host([group-disabled]) .icon{color:rgba(var(--mdui-color-on-surface),38%)}:host([disabled]:not([disabled=false i])) .label,:host([group-disabled]) .label{color:rgba(var(--mdui-color-on-surface),38%)}`; let Radio = class Radio2 extends RippleMixin(FocusableMixin(MduiElement)) { constructor() { super(...arguments); this.value = ""; this.disabled = false; this.checked = false; this.invalid = false; this.groupDisabled = false; this.focusable = true; this.isInitial = true; this.rippleRef = e$1(); } get rippleElement() { return this.rippleRef.value; } get rippleDisabled() { return this.isDisabled(); } get focusElement() { return this; } get focusDisabled() { return this.isDisabled() || !this.focusable; } onCheckedChange() { this.emit("change"); } firstUpdated(_changedProperties) { super.firstUpdated(_changedProperties); this.addEventListener("click", () => { if (!this.isDisabled()) { this.checked = true; } }); } render() { const className2 = e2({ invalid: this.invalid, initial: this.isInitial }); return x`${this.uncheckedIcon ? x`` : x``}${this.checkedIcon ? x`` : x``}`; } isDisabled() { return this.disabled || this.groupDisabled; } }; Radio.styles = [componentStyle, radioStyle]; __decorate([ n$5({ reflect: true }) ], Radio.prototype, "value", undefined); __decorate([ n$5({ type: Boolean, reflect: true, converter: booleanConverter }) ], Radio.prototype, "disabled", undefined); __decorate([ n$5({ type: Boolean, reflect: true, converter: booleanConverter }) ], Radio.prototype, "checked", undefined); __decorate([ n$5({ reflect: true, attribute: "unchecked-icon" }) ], Radio.prototype, "uncheckedIcon", undefined); __decorate([ n$5({ reflect: true, attribute: "checked-icon" }) ], Radio.prototype, "checkedIcon", undefined); __decorate([ r$1() ], Radio.prototype, "invalid", undefined); __decorate([ n$5({ type: Boolean, reflect: true, converter: booleanConverter, attribute: "group-disabled" }) ], Radio.prototype, "groupDisabled", undefined); __decorate([ r$1() ], Radio.prototype, "focusable", undefined); __decorate([ r$1() ], Radio.prototype, "isInitial", undefined); __decorate([ watch("checked", true) ], Radio.prototype, "onCheckedChange", null); Radio = __decorate([ t$2("mdui-radio") ], Radio); const radioGroupStyle = i$7`:host{display:inline-block}fieldset{border:none;padding:0;margin:0;min-width:0}input{position:absolute;padding:0;opacity:0;pointer-events:none;width:1.25rem;height:1.25rem;margin:0 0 0 .625rem}`; let RadioGroup = class RadioGroup2 extends MduiElement { constructor() { super(...arguments); this.disabled = false; this.name = ""; this.value = ""; this.defaultValue = ""; this.required = false; this.invalid = false; this.isInitial = true; this.inputRef = e$1(); this.formController = new FormController(this); this.definedController = new DefinedController(this, { relatedElements: ["mdui-radio"] }); } /** * 表单验证状态对象,具体参见 [`ValidityState`](https://developer.mozilla.org/zh-CN/docs/Web/API/ValidityState) */ get validity() { return this.inputRef.value.validity; } /** * 如果表单验证未通过,此属性将包含提示信息。如果验证通过,此属性将为空字符串 */ get validationMessage() { return this.inputRef.value.validationMessage; } // 为了使 可以不是该组件的直接子元素,这里不用 @queryAssignedElements() get items() { return $$1(this).find("mdui-radio").get(); } get itemsEnabled() { return $$1(this).find("mdui-radio:not([disabled])").get(); } async onValueChange() { var _a2; this.isInitial = false; await this.definedController.whenDefined(); this.emit("input"); this.emit("change"); this.updateItems(); this.updateRadioFocusable(); await this.updateComplete; const form = this.formController.getForm(); if (form && ((_a2 = formResets.get(form)) == null ? undefined : _a2.has(this))) { this.invalid = false; formResets.get(form).delete(this); } else { this.invalid = !this.inputRef.value.checkValidity(); } } async onInvalidChange() { await this.definedController.whenDefined(); this.updateItems(); } /** * 检查表单字段是否通过验证。如果未通过,返回 `false` 并触发 `invalid` 事件;如果通过,返回 `true` */ checkValidity() { const valid = this.inputRef.value.checkValidity(); if (!valid) { this.emit("invalid", { bubbles: false, cancelable: true, composed: false }); } return valid; } /** * 检查表单字段是否通过验证。如果未通过,返回 `false` 并触发 `invalid` 事件;如果通过,返回 `true`。 * * 如果验证未通过,还会在组件上显示验证失败的提示。 */ reportValidity() { this.invalid = !this.inputRef.value.reportValidity(); if (this.invalid) { const eventProceeded = this.emit("invalid", { bubbles: false, cancelable: true, composed: false }); if (!eventProceeded) { this.inputRef.value.blur(); this.inputRef.value.focus(); } } return !this.invalid; } /** * 设置自定义的错误提示文本。只要这个文本不为空,就表示字段未通过验证 * * @param message 自定义的错误提示文本 */ setCustomValidity(message) { this.inputRef.value.setCustomValidity(message); this.invalid = !this.inputRef.value.checkValidity(); } render() { return x`
`; } // 更新 mdui-radio 的 checked 后,需要更新可聚焦状态 // 同一个 mdui-radio-group 中的多个 mdui-radio,仅有一个可聚焦 // 若有已选中的,则已选中的可聚焦;若没有已选中的,则第一个可聚焦 updateRadioFocusable() { const items = this.items; const itemChecked = items.find((item) => item.checked); if (itemChecked) { items.forEach((item) => { item.focusable = item === itemChecked; }); } else { this.itemsEnabled.forEach((item, index) => { item.focusable = !index; }); } } async onClick(event) { await this.definedController.whenDefined(); const target = event.target; const item = target.closest("mdui-radio"); if (!item || item.disabled) { return; } this.value = item.value; await this.updateComplete; item.focus(); } /** * 在内部的 `` 上按下按键时,在 `` 之间切换焦点 */ async onKeyDown(event) { if (!["ArrowUp", "ArrowDown", "ArrowLeft", "ArrowRight", " "].includes(event.key)) { return; } event.preventDefault(); await this.definedController.whenDefined(); const items = this.itemsEnabled; const itemChecked = items.find((item) => item.checked) ?? items[0]; const incr = event.key === " " ? 0 : ["ArrowUp", "ArrowLeft"].includes(event.key) ? -1 : 1; let index = items.indexOf(itemChecked) + incr; if (index < 0) { index = items.length - 1; } if (index > items.length - 1) { index = 0; } this.value = items[index].value; await this.updateComplete; items[index].focus(); } async onSlotChange() { await this.definedController.whenDefined(); this.updateItems(); this.updateRadioFocusable(); } /** * slot 中的 mdui-radio 的 checked 变更时触发的事件 */ onCheckedChange(event) { event.stopPropagation(); } // 更新 的状态 updateItems() { this.items.forEach((item) => { item.checked = item.value === this.value; item.invalid = this.invalid; item.groupDisabled = this.disabled; item.isInitial = this.isInitial; }); } }; RadioGroup.styles = [ componentStyle, radioGroupStyle ]; __decorate([ n$5({ type: Boolean, reflect: true, converter: booleanConverter }) ], RadioGroup.prototype, "disabled", undefined); __decorate([ n$5({ reflect: true }) ], RadioGroup.prototype, "form", undefined); __decorate([ n$5({ reflect: true }) ], RadioGroup.prototype, "name", undefined); __decorate([ n$5({ reflect: true }) ], RadioGroup.prototype, "value", undefined); __decorate([ defaultValue() ], RadioGroup.prototype, "defaultValue", undefined); __decorate([ n$5({ type: Boolean, reflect: true, converter: booleanConverter }) ], RadioGroup.prototype, "required", undefined); __decorate([ r$1() ], RadioGroup.prototype, "invalid", undefined); __decorate([ watch("value", true) ], RadioGroup.prototype, "onValueChange", null); __decorate([ watch("invalid", true), watch("disabled") ], RadioGroup.prototype, "onInvalidChange", null); RadioGroup = __decorate([ t$2("mdui-radio-group") ], RadioGroup); /** * @license * Copyright 2021 Google LLC * SPDX-License-Identifier: BSD-3-Clause */ function* o(o2, f2) { if (undefined !== o2) { let i3 = 0; for (const t2 of o2) yield f2(t2, i3++); } } const sliderBaseStyle = i$7`:host{position:relative;display:block;width:100%;-webkit-tap-highlight-color:transparent;height:2.5rem;padding:0 1.25rem}label{position:relative;display:block;width:100%;height:100%}input[type=range]{position:absolute;inset:0;z-index:4;height:100%;cursor:pointer;opacity:0;appearance:none;width:calc(100% + 20rem * 2 / 16);margin:0 -1.25rem;padding:0 .75rem}:host([disabled]:not([disabled=false i])) input[type=range]{cursor:not-allowed}.track-active,.track-inactive{position:absolute;top:50%;height:.25rem;margin-top:-.125rem}.track-inactive{left:-.125rem;right:-.125rem;border-radius:var(--mdui-shape-corner-full);background-color:rgb(var(--mdui-color-surface-container-highest))}.invalid .track-inactive{background-color:rgba(var(--mdui-color-error),.12)}:host([disabled]:not([disabled=false i])) .track-inactive{background-color:rgba(var(--mdui-color-on-surface),.12)}.track-active{background-color:rgb(var(--mdui-color-primary))}.invalid .track-active{background-color:rgb(var(--mdui-color-error))}:host([disabled]:not([disabled=false i])) .track-active{background-color:rgba(var(--mdui-color-on-surface),.38)}.handle{position:absolute;top:50%;transform:translate(-50%);cursor:pointer;z-index:2;width:2.5rem;height:2.5rem;margin-top:-1.25rem;--mdui-comp-ripple-state-layer-color:var(--mdui-color-primary)}.invalid .handle{--mdui-comp-ripple-state-layer-color:var(--mdui-color-error)}.handle .elevation,.handle::before{position:absolute;display:block;content:' ';left:.625rem;top:.625rem;width:1.25rem;height:1.25rem;border-radius:var(--mdui-shape-corner-full)}.handle .elevation{background-color:rgb(var(--mdui-color-primary));box-shadow:var(--mdui-elevation-level1)}.invalid .handle .elevation{background-color:rgb(var(--mdui-color-error))}:host([disabled]:not([disabled=false i])) .handle .elevation{background-color:rgba(var(--mdui-color-on-surface),.38);box-shadow:var(--mdui-elevation-level0)}.handle::before{background-color:rgb(var(--mdui-color-background))}.handle mdui-ripple{border-radius:var(--mdui-shape-corner-full)}.label{position:absolute;left:50%;transform:translateX(-50%) scale(0);transform-origin:center bottom;display:flex;align-items:center;justify-content:center;cursor:default;white-space:nowrap;-webkit-user-select:none;user-select:none;pointer-events:none;transition:transform var(--mdui-motion-duration-short2) var(--mdui-motion-easing-standard);bottom:2.5rem;min-width:1.75rem;height:1.75rem;padding:.375rem .5rem;border-radius:var(--mdui-shape-corner-full);color:rgb(var(--mdui-color-on-primary));font-size:var(--mdui-typescale-label-medium-size);font-weight:var(--mdui-typescale-label-medium-weight);letter-spacing:var(--mdui-typescale-label-medium-tracking);line-height:var(--mdui-typescale-label-medium-line-height);background-color:rgb(var(--mdui-color-primary))}.invalid .label{color:rgb(var(--mdui-color-on-error));background-color:rgb(var(--mdui-color-error))}.label::after{content:' ';position:absolute;z-index:-1;transform:rotate(45deg);width:.875rem;height:.875rem;bottom:-.125rem;background-color:rgb(var(--mdui-color-primary))}.invalid .label::after{background-color:rgb(var(--mdui-color-error))}.label-visible{transform:translateX(-50%) scale(1);transition:transform var(--mdui-motion-duration-short4) var(--mdui-motion-easing-standard)}.tickmark{position:absolute;top:50%;transform:translate(-50%);width:.125rem;height:.125rem;margin-top:-.0625rem;border-radius:var(--mdui-shape-corner-full);background-color:rgba(var(--mdui-color-on-surface-variant),.38)}.invalid .tickmark{background-color:rgba(var(--mdui-color-error),.38)}.tickmark.active{background-color:rgba(var(--mdui-color-on-primary),.38)}.invalid .tickmark.active{background-color:rgba(var(--mdui-color-on-error),.38)}:host([disabled]:not([disabled=false i])) .tickmark{background-color:rgba(var(--mdui-color-on-surface),.38)}`; class SliderBase extends RippleMixin(FocusableMixin(MduiElement)) { constructor() { super(...arguments); this.min = 0; this.max = 100; this.step = 1; this.tickmarks = false; this.nolabel = false; this.disabled = false; this.name = ""; this.invalid = false; this.labelVisible = false; this.inputRef = e$1(); this.trackActiveRef = e$1(); this.labelFormatter = (value) => value.toString(); } /** * 表单验证状态对象,具体参见 [`ValidityState`](https://developer.mozilla.org/zh-CN/docs/Web/API/ValidityState) */ get validity() { return this.inputRef.value.validity; } /** * 如果表单验证未通过,此属性将包含提示信息。如果验证通过,此属性将为空字符串 */ get validationMessage() { return this.inputRef.value.validationMessage; } get rippleDisabled() { return this.disabled; } get focusElement() { return this.inputRef.value; } get focusDisabled() { return this.disabled; } onDisabledChange() { this.invalid = !this.inputRef.value.checkValidity(); } /** * 检查表单字段是否通过验证。如果未通过,返回 `false` 并触发 `invalid` 事件;如果通过,返回 `true` */ checkValidity() { const valid = this.inputRef.value.checkValidity(); if (!valid) { this.emit("invalid", { bubbles: false, cancelable: true, composed: false }); } return valid; } /** * 检查表单字段是否通过验证。如果未通过,返回 `false` 并触发 `invalid` 事件;如果通过,返回 `true`。 * * 如果验证未通过,还会在组件上显示验证失败的提示。 */ reportValidity() { this.invalid = !this.inputRef.value.reportValidity(); if (this.invalid) { const eventProceeded = this.emit("invalid", { bubbles: false, cancelable: true, composed: false }); if (!eventProceeded) { this.blur(); this.focus(); } } return !this.invalid; } /** * 设置自定义的错误提示文本。只要这个文本不为空,就表示字段未通过验证 * * @param message 自定义的错误提示文本 */ setCustomValidity(message) { this.inputRef.value.setCustomValidity(message); this.invalid = !this.inputRef.value.checkValidity(); } /** * value 不在 min、max 或 step 的限制范围内时,修正 value 的值 */ fixValue(value) { const { min, max, step } = this; value = Math.min(Math.max(value, min), max); const steps = Math.round((value - min) / step); let fixedValue = min + steps * step; if (fixedValue > max) { fixedValue -= step; } return fixedValue; } /** * 获取候选值组成的数组 */ getCandidateValues() { return Array.from({ length: this.max - this.min + 1 }, (_2, index) => index + this.min).filter((value) => !((value - this.min) % this.step)); } /** * 渲染浮动标签 */ renderLabel(value) { return n2(!this.nolabel, () => x`
${this.labelFormatter(value)}
`); } onChange() { this.emit("change"); } } SliderBase.styles = [ componentStyle, sliderBaseStyle ]; __decorate([ n$5({ type: Number, reflect: true }) ], SliderBase.prototype, "min", undefined); __decorate([ n$5({ type: Number, reflect: true }) ], SliderBase.prototype, "max", undefined); __decorate([ n$5({ type: Number, reflect: true }) ], SliderBase.prototype, "step", undefined); __decorate([ n$5({ type: Boolean, reflect: true, converter: booleanConverter }) ], SliderBase.prototype, "tickmarks", undefined); __decorate([ n$5({ type: Boolean, reflect: true, converter: booleanConverter }) ], SliderBase.prototype, "nolabel", undefined); __decorate([ n$5({ type: Boolean, reflect: true, converter: booleanConverter }) ], SliderBase.prototype, "disabled", undefined); __decorate([ n$5({ reflect: true }) ], SliderBase.prototype, "form", undefined); __decorate([ n$5({ reflect: true }) ], SliderBase.prototype, "name", undefined); __decorate([ r$1() ], SliderBase.prototype, "invalid", undefined); __decorate([ r$1() ], SliderBase.prototype, "labelVisible", undefined); __decorate([ n$5({ attribute: false }) ], SliderBase.prototype, "labelFormatter", undefined); __decorate([ watch("disabled", true) ], SliderBase.prototype, "onDisabledChange", null); let RangeSlider = class RangeSlider2 extends SliderBase { constructor() { super(...arguments); this.defaultValue = []; this.currentHandle = "start"; this.rippleStartRef = e$1(); this.rippleEndRef = e$1(); this.handleStartRef = e$1(); this.handleEndRef = e$1(); this.formController = new FormController(this); this._value = []; this.getRippleIndex = () => { if (this.hoverHandle) { return this.hoverHandle === "start" ? 0 : 1; } return this.currentHandle === "start" ? 0 : 1; }; } /** * 滑块的值,为数组格式,将于表单数据一起提交。 * * **NOTE**:该属性无法通过 HTML 属性设置初始值,如果要修改该值,只能通过修改 JavaScript 属性值实现。 */ get value() { return this._value; } set value(_value) { const oldValue = [...this._value]; this._value = [this.fixValue(_value[0]), this.fixValue(_value[1])]; this.requestUpdate("value", oldValue); this.updateComplete.then(() => { var _a2; this.updateStyle(); const form = this.formController.getForm(); if (form && ((_a2 = formResets.get(form)) == null ? undefined : _a2.has(this))) { this.invalid = false; formResets.get(form).delete(this); } else { this.invalid = !this.inputRef.value.checkValidity(); } }); } get rippleElement() { return [this.rippleStartRef.value, this.rippleEndRef.value]; } connectedCallback() { super.connectedCallback(); if (!this.value.length) { this.value = [this.min, this.max]; } this.value[0] = this.fixValue(this.value[0]); this.value[1] = this.fixValue(this.value[1]); if (!this.defaultValue.length) { this.defaultValue = [...this.value]; } } firstUpdated(changedProperties) { super.firstUpdated(changedProperties); const getCurrentHandle = (event) => { const $this = $$1(this); const paddingLeft = parseFloat($this.css("padding-left")); const paddingRight = parseFloat($this.css("padding-right")); const percent = (event.offsetX - paddingLeft) / (this.clientWidth - paddingLeft - paddingRight); const pointerValue = (this.max - this.min) * percent + this.min; const middleValue = (this.value[1] - this.value[0]) / 2 + this.value[0]; return pointerValue > middleValue ? "end" : "start"; }; const onTouchStart = () => { if (!this.disabled) { this.labelVisible = true; } }; const onTouchEnd = () => { if (!this.disabled) { this.labelVisible = false; } }; this.addEventListener("touchstart", onTouchStart); this.addEventListener("mousedown", onTouchStart); this.addEventListener("touchend", onTouchEnd); this.addEventListener("mouseup", onTouchEnd); this.addEventListener("pointerdown", (event) => { this.currentHandle = getCurrentHandle(event); }); this.addEventListener("pointermove", (event) => { const currentHandle = getCurrentHandle(event); if (this.hoverHandle !== currentHandle) { this.endHover(event); this.hoverHandle = currentHandle; this.startHover(event); } }); this.updateStyle(); } /** * 用于提供拖拽操作 * 用于提供 html5 自带的表单错误提示 */ render() { return x``; } updateStyle() { const getPercent = (value) => (value - this.min) / (this.max - this.min) * 100; const startPercent = getPercent(this.value[0]); const endPercent = getPercent(this.value[1]); this.trackActiveRef.value.style.width = `${endPercent - startPercent}%`; this.trackActiveRef.value.style.left = `${startPercent}%`; this.handleStartRef.value.style.left = `${startPercent}%`; this.handleEndRef.value.style.left = `${endPercent}%`; } onInput() { const isStart = this.currentHandle === "start"; const value = parseFloat(this.inputRef.value.value); const startValue = this.value[0]; const endValue = this.value[1]; const doInput = () => { this.updateStyle(); }; if (isStart) { if (value <= endValue) { this.value = [value, endValue]; doInput(); } else if (startValue !== endValue) { this.value = [endValue, endValue]; doInput(); } } else { if (value >= startValue) { this.value = [startValue, value]; doInput(); } else if (startValue !== endValue) { this.value = [startValue, startValue]; doInput(); } } } }; RangeSlider.styles = [SliderBase.styles]; __decorate([ defaultValue() ], RangeSlider.prototype, "defaultValue", undefined); __decorate([ r$1() ], RangeSlider.prototype, "currentHandle", undefined); __decorate([ n$5({ type: Array, attribute: false }) ], RangeSlider.prototype, "value", null); RangeSlider = __decorate([ t$2("mdui-range-slider") ], RangeSlider); const segmentedButtonStyle = i$7`:host{position:relative;display:inline-flex;flex-grow:1;flex-shrink:0;float:left;height:100%;overflow:hidden;cursor:pointer;-webkit-tap-highlight-color:transparent;border:.0625rem solid rgb(var(--mdui-color-outline))}.button{width:100%;padding:0 .75rem}:host([invalid]){color:rgb(var(--mdui-color-error));border-color:rgb(var(--mdui-color-error))}:host([invalid]) .button{background-color:rgb(var(--mdui-color-error-container))}:host([selected]){color:rgb(var(--mdui-color-on-secondary-container));background-color:rgb(var(--mdui-color-secondary-container));--mdui-comp-ripple-state-layer-color:var( --mdui-color-on-secondary-container )}:host([disabled]:not([disabled=false i])),:host([group-disabled]){cursor:default;pointer-events:none;color:rgba(var(--mdui-color-on-surface),38%);border-color:rgba(var(--mdui-color-on-surface),12%)}:host([loading]:not([loading=false i])){cursor:default;pointer-events:none}:host(:not(.mdui-segmented-button-first)){margin-left:-.0625rem}:host(.mdui-segmented-button-first){border-radius:var(--shape-corner) 0 0 var(--shape-corner)}:host(.mdui-segmented-button-last){border-radius:0 var(--shape-corner) var(--shape-corner) 0}.end-icon,.icon,.selected-icon{display:inline-flex;font-size:1.28571429em}.end-icon .i,.icon .i,.selected-icon .i,::slotted([slot=end-icon]),::slotted([slot=icon]),::slotted([slot=selected-icon]){font-size:inherit}mdui-circular-progress{width:1.125rem;height:1.125rem}:host([disabled]:not([disabled=false i])) mdui-circular-progress{opacity:.38}.label{display:inline-flex}.has-icon .label{padding-left:.5rem}.has-end-icon .label{padding-right:.5rem}`; let SegmentedButton = class SegmentedButton2 extends ButtonBase { constructor() { super(...arguments); this.selected = false; this.invalid = false; this.groupDisabled = false; this.key = uniqueId(); this.rippleRef = e$1(); this.hasSlotController = new HasSlotController(this, "[default]", "icon", "end-icon"); } get rippleElement() { return this.rippleRef.value; } get rippleDisabled() { return this.isDisabled() || this.loading; } get focusDisabled() { return this.isDisabled() || this.loading; } render() { const className2 = cc({ button: true, "has-icon": this.icon || this.selected || this.loading || this.hasSlotController.test("icon"), "has-end-icon": this.endIcon || this.hasSlotController.test("end-icon") }); return x`${this.isButton() ? this.renderButton({ className: className2, part: "button", content: this.renderInner() }) : this.isDisabled() || this.loading ? x`${this.renderInner()}` : this.renderAnchor({ className: className2, part: "button", content: this.renderInner() })}`; } isDisabled() { return this.disabled || this.groupDisabled; } renderIcon() { if (this.loading) { return this.renderLoading(); } if (this.selected) { return x`${this.selectedIcon ? x`` : x``}`; } return x`${this.icon ? x`` : nothingTemplate}`; } renderLabel() { const hasLabel = this.hasSlotController.test("[default]"); if (!hasLabel) { return nothingTemplate; } return x``; } renderEndIcon() { return x`${this.endIcon ? x`` : nothingTemplate}`; } renderInner() { return [this.renderIcon(), this.renderLabel(), this.renderEndIcon()]; } }; SegmentedButton.styles = [ ButtonBase.styles, segmentedButtonStyle ]; __decorate([ n$5({ reflect: true }) ], SegmentedButton.prototype, "icon", undefined); __decorate([ n$5({ reflect: true, attribute: "end-icon" }) ], SegmentedButton.prototype, "endIcon", undefined); __decorate([ n$5({ reflect: true, attribute: "selected-icon" }) ], SegmentedButton.prototype, "selectedIcon", undefined); __decorate([ n$5({ type: Boolean, reflect: true, converter: booleanConverter }) ], SegmentedButton.prototype, "selected", undefined); __decorate([ n$5({ type: Boolean, reflect: true, converter: booleanConverter }) ], SegmentedButton.prototype, "invalid", undefined); __decorate([ n$5({ type: Boolean, reflect: true, converter: booleanConverter, attribute: "group-disabled" }) ], SegmentedButton.prototype, "groupDisabled", undefined); SegmentedButton = __decorate([ t$2("mdui-segmented-button") ], SegmentedButton); const segmentedButtonGroupStyle = i$7`:host{--shape-corner:var(--mdui-shape-corner-full);position:relative;display:inline-flex;vertical-align:middle;height:2.5rem;font-size:var(--mdui-typescale-label-large-size);font-weight:var(--mdui-typescale-label-large-weight);letter-spacing:var(--mdui-typescale-label-large-tracking);line-height:var(--mdui-typescale-label-large-line-height);color:rgb(var(--mdui-color-on-surface));--mdui-comp-ripple-state-layer-color:var(--mdui-color-on-surface)}:host([full-width]:not([full-width=false i])){display:flex;flex-wrap:nowrap}input,select{position:absolute;width:100%;height:100%;padding:0;opacity:0;pointer-events:none}`; let SegmentedButtonGroup = class SegmentedButtonGroup2 extends MduiElement { constructor() { super(...arguments); this.fullWidth = false; this.disabled = false; this.required = false; this.name = ""; this.value = ""; this.defaultValue = ""; this.selectedKeys = []; this.invalid = false; this.isInitial = true; this.inputRef = e$1(); this.formController = new FormController(this); this.definedController = new DefinedController(this, { relatedElements: ["mdui-segmented-button"] }); } /** * 表单验证状态对象,具体参见 [`ValidityState`](https://developer.mozilla.org/zh-CN/docs/Web/API/ValidityState) */ get validity() { return this.inputRef.value.validity; } /** * 如果表单验证未通过,此属性将包含提示信息。如果验证通过,此属性将为空字符串 */ get validationMessage() { return this.inputRef.value.validationMessage; } // 为了使 可以不是该组件的直接子元素,这里不用 @queryAssignedElements() get items() { return $$1(this).find("mdui-segmented-button").get(); } // 所有的子项元素(不包含已禁用的) get itemsEnabled() { return $$1(this).find("mdui-segmented-button:not([disabled])").get(); } // 是否为单选 get isSingle() { return this.selects === "single"; } // 是否为多选 get isMultiple() { return this.selects === "multiple"; } // 是否可选择 get isSelectable() { return this.isSingle || this.isMultiple; } async onSelectsChange() { if (!this.isSelectable) { this.setSelectedKeys([]); } else if (this.isSingle) { this.setSelectedKeys(this.selectedKeys.slice(0, 1)); } await this.onSelectedKeysChange(); } async onSelectedKeysChange() { await this.definedController.whenDefined(); const values = this.itemsEnabled.filter((item) => this.selectedKeys.includes(item.key)).map((item) => item.value); const value = this.isMultiple ? values : values[0] || ""; this.setValue(value); if (!this.isInitial) { this.emit("change"); } } async onValueChange() { var _a2; this.isInitial = !this.hasUpdated; await this.definedController.whenDefined(); if (!this.isSelectable) { this.updateItems(); return; } const values = (this.isSingle ? [this.value] : ( // 多选时,传入的值可能是字符串(通过 attribute 属性设置);或字符串数组(通过 property 属性设置) isString(this.value) ? [this.value] : this.value )).filter((i3) => i3); if (!values.length) { this.setSelectedKeys([]); } else if (this.isSingle) { const firstItem = this.itemsEnabled.find((item) => item.value === values[0]); this.setSelectedKeys(firstItem ? [firstItem.key] : []); } else if (this.isMultiple) { this.setSelectedKeys(this.itemsEnabled.filter((item) => values.includes(item.value)).map((item) => item.key)); } this.updateItems(); if (!this.isInitial) { const form = this.formController.getForm(); if (form && ((_a2 = formResets.get(form)) == null ? undefined : _a2.has(this))) { this.invalid = false; formResets.get(form).delete(this); } else { this.invalid = !this.inputRef.value.checkValidity(); } } } async onInvalidChange() { await this.definedController.whenDefined(); this.updateItems(); } connectedCallback() { super.connectedCallback(); this.value = this.isMultiple && isString(this.value) ? this.value ? [this.value] : [] : this.value; this.defaultValue = this.selects === "multiple" ? [] : ""; } /** * 检查表单字段是否通过验证。如果未通过,返回 `false` 并触发 `invalid` 事件;如果通过,返回 `true` */ checkValidity() { const valid = this.inputRef.value.checkValidity(); if (!valid) { this.emit("invalid", { bubbles: false, cancelable: true, composed: false }); } return valid; } /** * 检查表单字段是否通过验证。如果未通过,返回 `false` 并触发 `invalid` 事件;如果通过,返回 `true`。 * * 如果验证未通过,还会在组件上显示验证失败的提示。 */ reportValidity() { this.invalid = !this.inputRef.value.reportValidity(); if (this.invalid) { const eventProceeded = this.emit("invalid", { bubbles: false, cancelable: true, composed: false }); if (!eventProceeded) { this.inputRef.value.blur(); this.inputRef.value.focus(); } } return !this.invalid; } /** * 设置自定义的错误提示文本。只要这个文本不为空,就表示字段未通过验证 * * @param message 自定义的错误提示文本 */ setCustomValidity(message) { this.inputRef.value.setCustomValidity(message); this.invalid = !this.inputRef.value.checkValidity(); } render() { return x`${n2(this.isSelectable && this.isSingle, () => x``)}${n2(this.isSelectable && this.isMultiple, () => x``)}`; } // 切换一个元素的选中状态 selectOne(item) { if (this.isMultiple) { const selectedKeys = [...this.selectedKeys]; if (selectedKeys.includes(item.key)) { selectedKeys.splice(selectedKeys.indexOf(item.key), 1); } else { selectedKeys.push(item.key); } this.setSelectedKeys(selectedKeys); } if (this.isSingle) { if (this.selectedKeys.includes(item.key)) { this.setSelectedKeys([]); } else { this.setSelectedKeys([item.key]); } } this.isInitial = false; this.updateItems(); } async onClick(event) { if (event.button) { return; } await this.definedController.whenDefined(); const target = event.target; const item = target.closest("mdui-segmented-button"); if (!item || item.disabled) { return; } if (this.isSelectable && item.value) { this.selectOne(item); } } /** * 在隐藏的 `` 或 `` 或 ``; } renderTextArea(hasInputSlot) { return x``; } /** * @param hasError 是否包含错误提示 * @param hasHelper 是否含 helper 属性或 helper slot */ renderHelper(hasError, hasHelper) { return hasError ? x`
${this.error || this.inputRef.value.validationMessage}
` : hasHelper ? x`${this.helper}` : ( // 右边有 counter,需要占位 x`` ); } renderCounter(hasCounter) { return hasCounter ? x`
${this.value.length}/${this.maxlength}
` : nothingTemplate; } }; TextField.styles = [componentStyle, style$5]; __decorate([ n$5({ reflect: true }) ], TextField.prototype, "variant", undefined); __decorate([ n$5({ reflect: true }) ], TextField.prototype, "type", undefined); __decorate([ n$5({ reflect: true }) ], TextField.prototype, "name", undefined); __decorate([ n$5() ], TextField.prototype, "value", undefined); __decorate([ defaultValue() ], TextField.prototype, "defaultValue", undefined); __decorate([ n$5({ reflect: true }) ], TextField.prototype, "label", undefined); __decorate([ n$5({ reflect: true }) ], TextField.prototype, "placeholder", undefined); __decorate([ n$5({ reflect: true }) ], TextField.prototype, "helper", undefined); __decorate([ n$5({ type: Boolean, reflect: true, converter: booleanConverter, attribute: "helper-on-focus" }) ], TextField.prototype, "helperOnFocus", undefined); __decorate([ n$5({ type: Boolean, reflect: true, converter: booleanConverter }) ], TextField.prototype, "clearable", undefined); __decorate([ n$5({ reflect: true, attribute: "clear-icon" }) ], TextField.prototype, "clearIcon", undefined); __decorate([ n$5({ type: Boolean, reflect: true, converter: booleanConverter, attribute: "end-aligned" }) ], TextField.prototype, "endAligned", undefined); __decorate([ n$5({ reflect: true }) ], TextField.prototype, "prefix", undefined); __decorate([ n$5({ reflect: true }) ], TextField.prototype, "suffix", undefined); __decorate([ n$5({ reflect: true }) ], TextField.prototype, "icon", undefined); __decorate([ n$5({ reflect: true, attribute: "end-icon" }) ], TextField.prototype, "endIcon", undefined); __decorate([ n$5({ reflect: true, attribute: "error-icon" }) ], TextField.prototype, "errorIcon", undefined); __decorate([ n$5({ reflect: true }) ], TextField.prototype, "form", undefined); __decorate([ n$5({ type: Boolean, reflect: true, converter: booleanConverter }) ], TextField.prototype, "readonly", undefined); __decorate([ n$5({ type: Boolean, reflect: true, converter: booleanConverter }) ], TextField.prototype, "disabled", undefined); __decorate([ n$5({ type: Boolean, reflect: true, converter: booleanConverter }) ], TextField.prototype, "required", undefined); __decorate([ n$5({ type: Number, reflect: true }) ], TextField.prototype, "rows", undefined); __decorate([ n$5({ type: Boolean, reflect: true, converter: booleanConverter }) ], TextField.prototype, "autosize", undefined); __decorate([ n$5({ type: Number, reflect: true, attribute: "min-rows" }) ], TextField.prototype, "minRows", undefined); __decorate([ n$5({ type: Number, reflect: true, attribute: "max-rows" }) ], TextField.prototype, "maxRows", undefined); __decorate([ n$5({ type: Number, reflect: true }) ], TextField.prototype, "minlength", undefined); __decorate([ n$5({ type: Number, reflect: true }) ], TextField.prototype, "maxlength", undefined); __decorate([ n$5({ type: Boolean, reflect: true, converter: booleanConverter }) ], TextField.prototype, "counter", undefined); __decorate([ n$5({ type: Number, reflect: true }) ], TextField.prototype, "min", undefined); __decorate([ n$5({ type: Number, reflect: true }) ], TextField.prototype, "max", undefined); __decorate([ n$5({ type: Number, reflect: true }) ], TextField.prototype, "step", undefined); __decorate([ n$5({ reflect: true }) ], TextField.prototype, "pattern", undefined); __decorate([ n$5({ type: Boolean, reflect: true, converter: booleanConverter, attribute: "toggle-password" }) ], TextField.prototype, "togglePassword", undefined); __decorate([ n$5({ reflect: true, attribute: "show-password-icon" }) ], TextField.prototype, "showPasswordIcon", undefined); __decorate([ n$5({ reflect: true, attribute: "hide-password-icon" }) ], TextField.prototype, "hidePasswordIcon", undefined); __decorate([ n$5({ reflect: true }) ], TextField.prototype, "autocapitalize", undefined); __decorate([ n$5({ reflect: true }) ], TextField.prototype, "autocorrect", undefined); __decorate([ n$5({ reflect: true }) ], TextField.prototype, "autocomplete", undefined); __decorate([ n$5({ reflect: true }) ], TextField.prototype, "enterkeyhint", undefined); __decorate([ n$5({ type: Boolean, reflect: true, converter: booleanConverter }) ], TextField.prototype, "spellcheck", undefined); __decorate([ n$5({ reflect: true }) ], TextField.prototype, "inputmode", undefined); __decorate([ r$1() ], TextField.prototype, "invalid", undefined); __decorate([ r$1() ], TextField.prototype, "invalidStyle", undefined); __decorate([ n$5({ type: Boolean, reflect: true, converter: booleanConverter, attribute: "focused-style" }) ], TextField.prototype, "focusedStyle", undefined); __decorate([ r$1() ], TextField.prototype, "isPasswordVisible", undefined); __decorate([ r$1() ], TextField.prototype, "hasValue", undefined); __decorate([ r$1() ], TextField.prototype, "error", undefined); __decorate([ watch("disabled", true) ], TextField.prototype, "onDisabledChange", null); __decorate([ watch("value") ], TextField.prototype, "onValueChange", null); __decorate([ watch("rows", true) ], TextField.prototype, "onRowsChange", null); __decorate([ watch("maxRows") ], TextField.prototype, "onMaxRowsChange", null); __decorate([ watch("minRows") ], TextField.prototype, "onMinRowsChange", null); TextField = __decorate([ t$2("mdui-text-field") ], TextField); const style$4 = i$7`:host{display:inline-block;width:100%}.hidden-input{display:none}.text-field{cursor:pointer}.chips{display:flex;flex-wrap:wrap;margin:-.5rem -.25rem;min-height:2.5rem}:host([variant=filled][label]) .chips{margin:0 -.25rem -1rem -.25rem}.chip{margin:.25rem}mdui-menu{max-width:none}`; let Select = class Select2 extends FocusableMixin(MduiElement) { constructor() { super(...arguments); this.variant = "filled"; this.multiple = false; this.name = ""; this.value = ""; this.defaultValue = ""; this.clearable = false; this.placement = "auto"; this.endAligned = false; this.readonly = false; this.disabled = false; this.required = false; this.invalid = false; this.menuRef = e$1(); this.textFieldRef = e$1(); this.hiddenInputRef = e$1(); this.formController = new FormController(this); this.hasSlotController = new HasSlotController(this, "icon", "end-icon", "error-icon", "prefix", "suffix", "clear-button", "clear-icon", "helper"); this.definedController = new DefinedController(this, { relatedElements: ["mdui-menu-item"] }); } /** * 表单验证状态对象,具体参见 [`ValidityState`](https://developer.mozilla.org/zh-CN/docs/Web/API/ValidityState) */ get validity() { return this.hiddenInputRef.value.validity; } /** * 如果表单验证未通过,此属性将包含提示信息。如果验证通过,此属性将为空字符串 */ get validationMessage() { return this.hiddenInputRef.value.validationMessage; } get focusElement() { return this.textFieldRef.value; } get focusDisabled() { return this.disabled; } connectedCallback() { super.connectedCallback(); this.value = this.multiple && isString(this.value) ? this.value ? [this.value] : [] : this.value; this.defaultValue = this.multiple ? [] : ""; this.definedController.whenDefined().then(() => { this.requestUpdate(); }); this.updateComplete.then(() => { this.observeResize = observeResize(this.textFieldRef.value, () => this.resizeMenu()); }); } disconnectedCallback() { var _a2; super.disconnectedCallback(); (_a2 = this.observeResize) == null ? undefined : _a2.unobserve(); } /** * 检查表单字段是否通过验证。如果未通过,返回 `false` 并触发 `invalid` 事件;如果通过,返回 `true` */ checkValidity() { const valid = this.hiddenInputRef.value.checkValidity(); if (!valid) { this.emit("invalid", { bubbles: false, cancelable: true, composed: false }); } return valid; } /** * 检查表单字段是否通过验证。如果未通过,返回 `false` 并触发 `invalid` 事件;如果通过,返回 `true`。 * * 如果验证未通过,还会在组件上显示验证失败的提示。 */ reportValidity() { this.invalid = !this.hiddenInputRef.value.reportValidity(); if (this.invalid) { this.emit("invalid", { bubbles: false, cancelable: true, composed: false }); this.focus(); } return !this.invalid; } /** * 设置自定义的错误提示文本。只要这个文本不为空,就表示字段未通过验证 * * @param message 自定义的错误提示文本 */ setCustomValidity(message) { this.hiddenInputRef.value.setCustomValidity(message); this.invalid = !this.hiddenInputRef.value.checkValidity(); } render() { var _a2; const hasSelection = this.multiple ? !!this.value.length : !!this.value; return x`${this.multiple ? x`` : x``} `${v2}:text-field__${v2}`).join(",")}" readonly="readonly" .readonlyButClearable="${true}" .variant="${this.variant}" .name="${this.name}" .value="${this.multiple ? this.value.length ? " " : "" : this.getMenuItemLabelByValue(this.value)}" .label="${this.label}" .placeholder="${this.placeholder}" .helper="${this.helper}" .error="${(_a2 = this.hiddenInputRef.value) == null ? undefined : _a2.validationMessage}" .clearable="${this.clearable}" .clearIcon="${this.clearIcon}" .endAligned="${this.endAligned}" .prefix="${this.prefix}" .suffix="${this.suffix}" .icon="${this.icon}" .endIcon="${this.endIcon}" .errorIcon="${this.errorIcon}" .form="${this.form}" .disabled="${this.disabled}" .required="${this.required}" .invalidStyle="${this.invalid}" @clear="${this.onClear}" @change="${(e3) => e3.stopPropagation()}" @keydown="${this.onTextFieldKeyDown}">${o([ "icon", "end-icon", "error-icon", "prefix", "suffix", "clear-button", "clear-icon", "helper" ], (slotName) => this.hasSlotController.test(slotName) ? x`` : E)} ${n2(this.multiple && this.value.length, () => x`
${o(this.value, (valueItem) => x` `${v2}:chip__${v2}`).join(",")}" variant="input" deletable tabindex="-1" @delete="${() => this.onDeleteOneValue(valueItem)}">${this.getMenuItemLabelByValue(valueItem)}`)}
`)}
`; } getMenuItemLabelByValue(valueItem) { var _a2, _b; if (!this.menuItems.length) { return valueItem; } return ((_b = (_a2 = this.menuItems.find((item) => item.value === valueItem)) == null ? undefined : _a2.textContent) == null ? undefined : _b.trim()) || valueItem; } resizeMenu() { this.menuRef.value.style.width = `${this.textFieldRef.value.clientWidth}px`; } async onDropdownOpen() { this.textFieldRef.value.focusedStyle = true; } onDropdownClose() { var _a2; this.textFieldRef.value.focusedStyle = false; if (this.contains(document.activeElement) || this.contains(((_a2 = document.activeElement) == null ? undefined : _a2.assignedSlot) ?? null)) { setTimeout(() => { this.focus(); }); } } async onValueChange(e3) { var _a2; const menu = e3.target; this.value = this.multiple ? menu.value.map((v2) => v2 ?? "") : menu.value ?? ""; await this.updateComplete; const form = this.formController.getForm(); if (form && ((_a2 = formResets.get(form)) == null ? undefined : _a2.has(this))) { this.invalid = false; formResets.get(form).delete(this); } else { this.invalid = !this.hiddenInputRef.value.checkValidity(); } } /** * multiple 为 true 时,点 chip 的删除按钮,删除其中一个值 */ onDeleteOneValue(valueItem) { const value = [...this.value]; if (value.includes(valueItem)) { value.splice(value.indexOf(valueItem), 1); } this.value = value; } onClear() { this.value = this.multiple ? [] : ""; } /** * 焦点在 text-field 上时,按下回车键,打开下拉选项 */ onTextFieldKeyDown(event) { if (event.key === "Enter") { event.preventDefault(); this.textFieldRef.value.click(); } } }; Select.styles = [componentStyle, style$4]; __decorate([ n$5({ reflect: true }) ], Select.prototype, "variant", undefined); __decorate([ n$5({ type: Boolean, reflect: true, converter: booleanConverter }) ], Select.prototype, "multiple", undefined); __decorate([ n$5({ reflect: true }) ], Select.prototype, "name", undefined); __decorate([ n$5() ], Select.prototype, "value", undefined); __decorate([ defaultValue() ], Select.prototype, "defaultValue", undefined); __decorate([ n$5({ reflect: true }) ], Select.prototype, "label", undefined); __decorate([ n$5({ reflect: true }) ], Select.prototype, "placeholder", undefined); __decorate([ n$5({ reflect: true }) ], Select.prototype, "helper", undefined); __decorate([ n$5({ type: Boolean, reflect: true, converter: booleanConverter }) ], Select.prototype, "clearable", undefined); __decorate([ n$5({ reflect: true, attribute: "clear-icon" }) ], Select.prototype, "clearIcon", undefined); __decorate([ n$5({ reflect: true }) ], Select.prototype, "placement", undefined); __decorate([ n$5({ type: Boolean, reflect: true, converter: booleanConverter, attribute: "end-aligned" }) ], Select.prototype, "endAligned", undefined); __decorate([ n$5({ reflect: true }) ], Select.prototype, "prefix", undefined); __decorate([ n$5({ reflect: true }) ], Select.prototype, "suffix", undefined); __decorate([ n$5({ reflect: true }) ], Select.prototype, "icon", undefined); __decorate([ n$5({ reflect: true, attribute: "end-icon" }) ], Select.prototype, "endIcon", undefined); __decorate([ n$5({ reflect: true, attribute: "error-icon" }) ], Select.prototype, "errorIcon", undefined); __decorate([ n$5({ reflect: true }) ], Select.prototype, "form", undefined); __decorate([ n$5({ type: Boolean, reflect: true, converter: booleanConverter }) ], Select.prototype, "readonly", undefined); __decorate([ n$5({ type: Boolean, reflect: true, converter: booleanConverter }) ], Select.prototype, "disabled", undefined); __decorate([ n$5({ type: Boolean, reflect: true, converter: booleanConverter }) ], Select.prototype, "required", undefined); __decorate([ r$1() ], Select.prototype, "invalid", undefined); __decorate([ o$6({ flatten: true, selector: "mdui-menu-item" }) ], Select.prototype, "menuItems", undefined); Select = __decorate([ t$2("mdui-select") ], Select); const style$3 = i$7`.track-active{left:-.125rem;border-radius:var(--mdui-shape-corner-full) 0 0 var(--mdui-shape-corner-full)}`; let Slider = class Slider2 extends SliderBase { constructor() { super(...arguments); this.value = 0; this.defaultValue = 0; this.rippleRef = e$1(); this.handleRef = e$1(); this.formController = new FormController(this); } get rippleElement() { return this.rippleRef.value; } async onValueChange() { var _a2; this.value = this.fixValue(this.value); const form = this.formController.getForm(); if (form && ((_a2 = formResets.get(form)) == null ? undefined : _a2.has(this))) { this.invalid = false; formResets.get(form).delete(this); } else { await this.updateComplete; this.invalid = !this.inputRef.value.checkValidity(); } this.updateStyle(); } connectedCallback() { super.connectedCallback(); this.value = this.fixValue(this.value); } firstUpdated(changedProperties) { super.firstUpdated(changedProperties); const onTouchStart = () => { if (!this.disabled) { this.labelVisible = true; } }; const onTouchEnd = () => { if (!this.disabled) { this.labelVisible = false; } }; this.addEventListener("touchstart", onTouchStart); this.addEventListener("mousedown", onTouchStart); this.addEventListener("touchend", onTouchEnd); this.addEventListener("mouseup", onTouchEnd); this.updateStyle(); } /** * 用于提供拖拽操作 * 用于提供 html5 自带的表单错误提示 */ render() { return x``; } updateStyle() { const percent = (this.value - this.min) / (this.max - this.min) * 100; this.trackActiveRef.value.style.width = `${percent}%`; this.handleRef.value.style.left = `${percent}%`; } onInput() { this.value = parseFloat(this.inputRef.value.value); this.updateStyle(); } }; Slider.styles = [SliderBase.styles, style$3]; __decorate([ n$5({ type: Number }) ], Slider.prototype, "value", undefined); __decorate([ defaultValue() ], Slider.prototype, "defaultValue", undefined); __decorate([ watch("value", true) ], Slider.prototype, "onValueChange", null); Slider = __decorate([ t$2("mdui-slider") ], Slider); const style$2 = i$7`:host{--shape-corner:var(--mdui-shape-corner-extra-small);--z-index:2400;position:fixed;z-index:var(--z-index);display:none;align-items:center;flex-wrap:wrap;border-radius:var(--shape-corner);transform:scaleY(0);transition:transform 0s var(--mdui-motion-easing-linear) var(--mdui-motion-duration-short4);min-width:20rem;max-width:36rem;padding:.25rem 0;box-shadow:var(--mdui-elevation-level3);background-color:rgb(var(--mdui-color-inverse-surface));color:rgb(var(--mdui-color-inverse-on-surface));font-size:var(--mdui-typescale-body-medium-size);font-weight:var(--mdui-typescale-body-medium-weight);letter-spacing:var(--mdui-typescale-body-medium-tracking);line-height:var(--mdui-typescale-body-medium-line-height)}:host([placement^=top]){transform-origin:top}:host([placement^=bottom]){transform-origin:bottom}:host([placement=bottom-start]:not([mobile])),:host([placement=top-start]:not([mobile])){left:1rem}:host([placement=bottom-end]:not([mobile])),:host([placement=top-end]:not([mobile])){right:1rem}:host([placement=bottom]:not([mobile])),:host([placement=top]:not([mobile])){left:50%;transform:scaleY(0) translateX(-50%)}:host([mobile]){min-width:0;left:1rem;right:1rem}:host([open]){transform:scaleY(1);transition:top var(--mdui-motion-duration-short4) var(--mdui-motion-easing-standard),bottom var(--mdui-motion-duration-short4) var(--mdui-motion-easing-standard),transform var(--mdui-motion-duration-medium4) var(--mdui-motion-easing-emphasized-decelerate)}:host([placement=bottom][open]:not([mobile])),:host([placement=top][open]:not([mobile])){transform:scaleY(1) translateX(-50%)}.message{display:block;margin:.625rem 1rem}:host([message-line='1']) .message{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}:host([message-line='2']) .message{display:-webkit-box;overflow:hidden;text-overflow:ellipsis;-webkit-box-orient:vertical;-webkit-line-clamp:2}.action-group{display:flex;align-items:center;margin-left:auto;padding-right:.5rem}.action,.close-button{display:inline-flex;align-items:center;justify-content:center}.action{color:rgb(var(--mdui-color-inverse-primary));font-size:var(--mdui-typescale-label-large-size);font-weight:var(--mdui-typescale-label-large-weight);letter-spacing:var(--mdui-typescale-label-large-tracking)}.action mdui-button,::slotted(mdui-button[slot=action][variant=outlined]),::slotted(mdui-button[slot=action][variant=text]){color:inherit;font-size:inherit;font-weight:inherit;letter-spacing:inherit;--mdui-comp-ripple-state-layer-color:var(--mdui-color-inverse-primary)}.action mdui-button::part(button){padding:0 .5rem}.close-button{margin:0 -.25rem 0 .25rem;font-size:1.5rem;color:rgb(var(--mdui-color-inverse-on-surface))}.close-button mdui-button-icon,::slotted(mdui-button-icon[slot=close-button][variant=outlined]),::slotted(mdui-button-icon[slot=close-button][variant=standard]){font-size:inherit;color:inherit;--mdui-comp-ripple-state-layer-color:var(--mdui-color-inverse-on-surface)}.close-button .i,::slotted([slot=close-icon]){font-size:inherit}`; const stacks = []; let reordering = false; let Snackbar = class Snackbar2 extends MduiElement { constructor() { super(); this.open = false; this.placement = "bottom"; this.actionLoading = false; this.closeable = false; this.autoCloseDelay = 5e3; this.closeOnOutsideClick = false; this.mobile = false; this.onDocumentClick = this.onDocumentClick.bind(this); } async onOpenChange() { const easingLinear = getEasing(this, "linear"); const children = Array.from(this.renderRoot.querySelectorAll(".message, .action-group")); if (this.open) { const hasUpdated = this.hasUpdated; if (!hasUpdated) { await this.updateComplete; } if (hasUpdated) { const eventProceeded = this.emit("open", { cancelable: true }); if (!eventProceeded) { return; } } window.clearTimeout(this.closeTimeout); if (this.autoCloseDelay) { this.closeTimeout = window.setTimeout(() => { this.open = false; }, this.autoCloseDelay); } this.style.display = "flex"; await Promise.all([ stopAnimations(this), ...children.map((child) => stopAnimations(child)) ]); stacks.push({ height: this.clientHeight, snackbar: this }); await this.reorderStack(this); const duration = getDuration(this, "medium4"); await Promise.all([ animateTo(this, [{ opacity: 0 }, { opacity: 1, offset: 0.5 }, { opacity: 1 }], { duration: hasUpdated ? duration : 0, easing: easingLinear, fill: "forwards" }), ...children.map((child) => animateTo(child, [ { opacity: 0 }, { opacity: 0, offset: 0.2 }, { opacity: 1, offset: 0.8 }, { opacity: 1 } ], { duration: hasUpdated ? duration : 0, easing: easingLinear })) ]); if (hasUpdated) { this.emit("opened"); } return; } if (!this.open && this.hasUpdated) { const eventProceeded = this.emit("close", { cancelable: true }); if (!eventProceeded) { return; } window.clearTimeout(this.closeTimeout); await Promise.all([ stopAnimations(this), ...children.map((child) => stopAnimations(child)) ]); const duration = getDuration(this, "short4"); await Promise.all([ animateTo(this, [{ opacity: 1 }, { opacity: 0 }], { duration, easing: easingLinear, fill: "forwards" }), ...children.map((child) => animateTo(child, [{ opacity: 1 }, { opacity: 0, offset: 0.75 }, { opacity: 0 }], { duration, easing: easingLinear })) ]); this.style.display = "none"; this.emit("closed"); const stackIndex = stacks.findIndex((stack2) => stack2.snackbar === this); stacks.splice(stackIndex, 1); if (stacks[stackIndex]) { await this.reorderStack(stacks[stackIndex].snackbar); } return; } } /** * 这两个属性变更时,需要重新排序该组件后面的 snackbar */ async onStackChange() { await this.reorderStack(this); } connectedCallback() { super.connectedCallback(); document.addEventListener("pointerdown", this.onDocumentClick); this.mobile = breakpoint().down("sm"); this.observeResize = observeResize(document.documentElement, async () => { const mobile = breakpoint().down("sm"); if (this.mobile !== mobile) { this.mobile = mobile; if (!reordering) { reordering = true; await this.reorderStack(); reordering = false; } } }); } disconnectedCallback() { var _a2; super.disconnectedCallback(); document.removeEventListener("pointerdown", this.onDocumentClick); window.clearTimeout(this.closeTimeout); if (this.open) { this.open = false; } (_a2 = this.observeResize) == null ? undefined : _a2.unobserve(); } render() { return x`
${this.action ? x`${this.action}` : nothingTemplate}${n2(this.closeable, () => x`${this.closeIcon ? x`` : x``}`)}
`; } /** * 重新排序 snackbar 堆叠 * @param startSnackbar 从哪个 snackbar 开始重新排列,默认从第一个开始 * @private */ async reorderStack(startSnackbar) { const stackIndex = startSnackbar ? stacks.findIndex((stack2) => stack2.snackbar === startSnackbar) : 0; for (let i3 = stackIndex; i3 < stacks.length; i3++) { const stack2 = stacks[i3]; const snackbar2 = stack2.snackbar; if (this.mobile) { ["top", "bottom"].forEach((placement) => { if (snackbar2.placement.startsWith(placement)) { const prevStacks = stacks.filter((stack3, index) => { return index < i3 && stack3.snackbar.placement.startsWith(placement); }); const prevHeight = prevStacks.reduce((prev, current) => prev + current.height, 0); snackbar2.style[placement] = `calc(${prevHeight}px + ${prevStacks.length + 1}rem)`; snackbar2.style[placement === "top" ? "bottom" : "top"] = "auto"; } }); } else { [ "top", "top-start", "top-end", "bottom", "bottom-start", "bottom-end" ].forEach((placement) => { if (snackbar2.placement === placement) { const prevStacks = stacks.filter((stack3, index) => { return index < i3 && stack3.snackbar.placement === placement; }); const prevHeight = prevStacks.reduce((prev, current) => prev + current.height, 0); snackbar2.style[placement.startsWith("top") ? "top" : "bottom"] = `calc(${prevHeight}px + ${prevStacks.length + 1}rem)`; snackbar2.style[placement.startsWith("top") ? "bottom" : "top"] = "auto"; } }); } } } /** * 在 document 上点击时,根据条件判断是否要关闭 snackbar */ onDocumentClick(e3) { if (!this.open || !this.closeOnOutsideClick) { return; } const target = e3.target; if (!this.contains(target) && this !== target) { this.open = false; } } onActionClick(event) { event.stopPropagation(); this.emit("action-click"); } onCloseClick() { this.open = false; } }; Snackbar.styles = [componentStyle, style$2]; __decorate([ n$5({ type: Boolean, reflect: true, converter: booleanConverter }) ], Snackbar.prototype, "open", undefined); __decorate([ n$5({ reflect: true }) ], Snackbar.prototype, "placement", undefined); __decorate([ n$5({ reflect: true, attribute: "action" }) ], Snackbar.prototype, "action", undefined); __decorate([ n$5({ type: Boolean, reflect: true, converter: booleanConverter, attribute: "action-loading" }) ], Snackbar.prototype, "actionLoading", undefined); __decorate([ n$5({ type: Boolean, reflect: true, converter: booleanConverter }) ], Snackbar.prototype, "closeable", undefined); __decorate([ n$5({ reflect: true, attribute: "close-icon" }) ], Snackbar.prototype, "closeIcon", undefined); __decorate([ n$5({ type: Number, reflect: true, attribute: "message-line" }) // eslint-disable-next-line prettier/prettier ], Snackbar.prototype, "messageLine", undefined); __decorate([ n$5({ type: Number, reflect: true, attribute: "auto-close-delay" }) ], Snackbar.prototype, "autoCloseDelay", undefined); __decorate([ n$5({ type: Boolean, reflect: true, attribute: "close-on-outside-click", converter: booleanConverter }) ], Snackbar.prototype, "closeOnOutsideClick", undefined); __decorate([ n$5({ type: Boolean, reflect: true, converter: booleanConverter }) ], Snackbar.prototype, "mobile", undefined); __decorate([ watch("open") ], Snackbar.prototype, "onOpenChange", null); __decorate([ watch("placement", true), watch("messageLine", true) ], Snackbar.prototype, "onStackChange", null); Snackbar = __decorate([ t$2("mdui-snackbar") ], Snackbar); const style$1 = i$7`:host{--shape-corner:var(--mdui-shape-corner-full);--shape-corner-thumb:var(--mdui-shape-corner-full);position:relative;display:inline-block;cursor:pointer;-webkit-tap-highlight-color:transparent;height:2.5rem}:host([disabled]:not([disabled=false i])){cursor:default;pointer-events:none}label{display:inline-flex;align-items:center;width:100%;height:100%;white-space:nowrap;cursor:inherit;-webkit-user-select:none;user-select:none;touch-action:manipulation;zoom:1;-webkit-user-drag:none}.track{position:relative;display:flex;align-items:center;border-radius:var(--shape-corner);transition-property:background-color,border-width;transition-duration:var(--mdui-motion-duration-short4);transition-timing-function:var(--mdui-motion-easing-standard);height:2rem;width:3.25rem;border:.125rem solid rgb(var(--mdui-color-outline));background-color:rgb(var(--mdui-color-surface-container-highest))}:host([checked]:not([checked=false i])) .track{background-color:rgb(var(--mdui-color-primary));border-width:0}.invalid .track{background-color:rgb(var(--mdui-color-error-container));border-color:rgb(var(--mdui-color-error))}:host([disabled]:not([disabled=false i])) .track{background-color:rgba(var(--mdui-color-surface-container-highest),.12);border-color:rgba(var(--mdui-color-on-surface),.12)}:host([disabled][checked]:not([disabled=false i],[checked=false i])) .track{background-color:rgba(var(--mdui-color-on-surface),.12)}input{position:absolute;padding:0;opacity:0;pointer-events:none;width:1.25rem;height:1.25rem;margin:0 0 0 .625rem}mdui-ripple{border-radius:50%;transition-property:left,top;transition-duration:var(--mdui-motion-duration-short4);transition-timing-function:var(--mdui-motion-easing-standard);width:2.5rem;height:2.5rem}.thumb{position:absolute;display:flex;align-items:center;justify-content:center;border-radius:var(--shape-corner-thumb);transition-property:width,height,left,background-color;transition-duration:var(--mdui-motion-duration-short4);transition-timing-function:var(--mdui-motion-easing-standard);height:1rem;width:1rem;left:.375rem;background-color:rgb(var(--mdui-color-outline));--mdui-comp-ripple-state-layer-color:var(--mdui-color-on-surface)}.thumb mdui-ripple{left:-.75rem;top:-.75rem}.has-unchecked-icon .thumb{height:1.5rem;width:1.5rem;left:.125rem}.has-unchecked-icon .thumb mdui-ripple{left:-.5rem;top:-.5rem}:host([focus-visible]) .thumb,:host([hover]) .thumb,:host([pressed]) .thumb{background-color:rgb(var(--mdui-color-on-surface-variant))}:host([checked]:not([checked=false i])) .thumb{height:1.5rem;width:1.5rem;left:1.5rem;background-color:rgb(var(--mdui-color-on-primary));--mdui-comp-ripple-state-layer-color:var(--mdui-color-primary)}:host([checked]:not([checked=false i])) .thumb mdui-ripple{left:-.5rem;top:-.5rem}:host([pressed]) .thumb{height:1.75rem;width:1.75rem;left:0}:host([pressed]) .thumb mdui-ripple{left:-.375rem;top:-.375rem}:host([pressed][checked]:not([checked=false i])) .thumb{left:1.375rem}:host([focus-visible][checked]:not([checked=false i])) .thumb,:host([hover][checked]:not([checked=false i])) .thumb,:host([pressed][checked]:not([checked=false i])) .thumb{background-color:rgb(var(--mdui-color-primary-container))}.invalid .thumb{background-color:rgb(var(--mdui-color-error));--mdui-comp-ripple-state-layer-color:var(--mdui-color-error)}:host([focus-visible]) .invalid .thumb,:host([hover]) .invalid .thumb,:host([pressed]) .invalid .thumb{background-color:rgb(var(--mdui-color-error))}:host([disabled]:not([disabled=false i])) .thumb{background-color:rgba(var(--mdui-color-on-surface),.38)}:host([disabled][checked]:not([disabled=false i],[checked=false i])) .thumb{background-color:rgb(var(--mdui-color-surface))}.checked-icon,.unchecked-icon{display:flex;position:absolute;transition-property:opacity,transform;font-size:1rem}.unchecked-icon{opacity:1;transform:scale(1);transition-delay:var(--mdui-motion-duration-short1);transition-duration:var(--mdui-motion-duration-short3);transition-timing-function:var(--mdui-motion-easing-linear);color:rgb(var(--mdui-color-surface-container-highest))}:host([checked]:not([checked=false i])) .unchecked-icon{opacity:0;transform:scale(.92);transition-delay:0s;transition-duration:var(--mdui-motion-duration-short1)}:host([disabled]:not([disabled=false i])) .unchecked-icon{color:rgba(var(--mdui-color-surface-container-highest),.38)}.checked-icon{opacity:0;transform:scale(.92);transition-delay:0s;transition-duration:var(--mdui-motion-duration-short1);transition-timing-function:var(--mdui-motion-easing-linear);color:rgb(var(--mdui-color-on-primary-container))}:host([checked]:not([checked=false i])) .checked-icon{opacity:1;transform:scale(1);transition-delay:var(--mdui-motion-duration-short1);transition-duration:var(--mdui-motion-duration-short3)}.invalid .checked-icon{color:rgb(var(--mdui-color-error-container))}:host([disabled]:not([disabled=false i])) .checked-icon{color:rgba(var(--mdui-color-on-surface),.38)}.checked-icon .i,.unchecked-icon .i,::slotted([slot=checked-icon]),::slotted([slot=unchecked-icon]){font-size:inherit;color:inherit}`; let Switch = class Switch2 extends RippleMixin(FocusableMixin(MduiElement)) { constructor() { super(...arguments); this.disabled = false; this.checked = false; this.defaultChecked = false; this.required = false; this.name = ""; this.value = "on"; this.invalid = false; this.rippleRef = e$1(); this.inputRef = e$1(); this.formController = new FormController(this, { value: (control) => control.checked ? control.value : undefined, defaultValue: (control) => control.defaultChecked, setValue: (control, checked) => control.checked = checked }); this.hasSlotController = new HasSlotController(this, "unchecked-icon"); } /** * 表单验证状态对象,具体参见 [`ValidityState`](https://developer.mozilla.org/zh-CN/docs/Web/API/ValidityState) */ get validity() { return this.inputRef.value.validity; } /** * 如果表单验证未通过,此属性将包含提示信息。如果验证通过,此属性将为空字符串 */ get validationMessage() { return this.inputRef.value.validationMessage; } get rippleElement() { return this.rippleRef.value; } get rippleDisabled() { return this.disabled; } get focusElement() { return this.inputRef.value; } get focusDisabled() { return this.disabled; } async onDisabledChange() { await this.updateComplete; this.invalid = !this.inputRef.value.checkValidity(); } async onCheckedChange() { var _a2; await this.updateComplete; const form = this.formController.getForm(); if (form && ((_a2 = formResets.get(form)) == null ? undefined : _a2.has(this))) { this.invalid = false; formResets.get(form).delete(this); } else { this.invalid = !this.inputRef.value.checkValidity(); } } /** * 检查表单字段是否通过验证。如果未通过,返回 `false` 并触发 `invalid` 事件;如果通过,返回 `true` */ checkValidity() { const valid = this.inputRef.value.checkValidity(); if (!valid) { this.emit("invalid", { bubbles: false, cancelable: true, composed: false }); } return valid; } /** * 检查表单字段是否通过验证。如果未通过,返回 `false` 并触发 `invalid` 事件;如果通过,返回 `true`。 * * 如果验证未通过,还会在组件上显示验证失败的提示。 */ reportValidity() { this.invalid = !this.inputRef.value.reportValidity(); if (this.invalid) { const eventProceeded = this.emit("invalid", { bubbles: false, cancelable: true, composed: false }); if (!eventProceeded) { this.blur(); this.focus(); } } return !this.invalid; } /** * 设置自定义的错误提示文本。只要这个文本不为空,就表示字段未通过验证 * * @param message 自定义的错误提示文本 */ setCustomValidity(message) { this.inputRef.value.setCustomValidity(message); this.invalid = !this.inputRef.value.checkValidity(); } render() { return x``; } /** * input[type="checkbox"] 的 change 事件无法冒泡越过 shadow dom */ onChange() { this.checked = this.inputRef.value.checked; this.emit("change"); } }; Switch.styles = [componentStyle, style$1]; __decorate([ n$5({ type: Boolean, reflect: true, converter: booleanConverter }) ], Switch.prototype, "disabled", undefined); __decorate([ n$5({ type: Boolean, reflect: true, converter: booleanConverter }) ], Switch.prototype, "checked", undefined); __decorate([ defaultValue("checked") ], Switch.prototype, "defaultChecked", undefined); __decorate([ n$5({ reflect: true, attribute: "unchecked-icon" }) ], Switch.prototype, "uncheckedIcon", undefined); __decorate([ n$5({ reflect: true, attribute: "checked-icon" }) ], Switch.prototype, "checkedIcon", undefined); __decorate([ n$5({ type: Boolean, reflect: true, converter: booleanConverter }) ], Switch.prototype, "required", undefined); __decorate([ n$5({ reflect: true }) ], Switch.prototype, "form", undefined); __decorate([ n$5({ reflect: true }) ], Switch.prototype, "name", undefined); __decorate([ n$5({ reflect: true }) ], Switch.prototype, "value", undefined); __decorate([ r$1() ], Switch.prototype, "invalid", undefined); __decorate([ watch("disabled", true), watch("required", true) ], Switch.prototype, "onDisabledChange", null); __decorate([ watch("checked", true) ], Switch.prototype, "onCheckedChange", null); Switch = __decorate([ t$2("mdui-switch") ], Switch); const tabStyle = i$7`:host{position:relative;--mdui-comp-ripple-state-layer-color:var(--mdui-color-on-surface)}:host([active]){--mdui-comp-ripple-state-layer-color:var(--mdui-color-primary)}.container{display:flex;justify-content:center;align-items:center;cursor:pointer;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;height:100%}.preset{flex-direction:column;min-height:3rem;padding:.625rem 1rem}:host([inline]:not([inline=false i])) .preset{flex-direction:row}.icon-container,.label-container{position:relative;display:flex;align-items:center;justify-content:center}.icon-container ::slotted([slot=badge]){position:absolute;transform:translate(50%,-50%)}.icon-container ::slotted([slot=badge][variant=small]){transform:translate(.5625rem,-.5625rem)}.label-container ::slotted([slot=badge]){position:absolute;left:100%;bottom:100%;transform:translate(-.75rem,.625rem)}.label-container ::slotted([slot=badge][variant=small]){transform:translate(-.375rem,.375rem)}.icon,.label{display:flex;color:rgb(var(--mdui-color-on-surface-variant))}:host([focused]) .icon,:host([focused]) .label,:host([hover]) .icon,:host([hover]) .label,:host([pressed]) .icon,:host([pressed]) .label{color:rgb(var(--mdui-color-on-surface))}:host([active]) .icon,:host([active]) .label{color:rgb(var(--mdui-color-primary))}:host([active]) .variant-secondary .icon,:host([active]) .variant-secondary .label{color:rgb(var(--mdui-color-on-surface))}.icon{font-size:1.5rem}.label{font-size:var(--mdui-typescale-title-small-size);font-weight:var(--mdui-typescale-title-small-weight);letter-spacing:var(--mdui-typescale-title-small-tracking);line-height:var(--mdui-typescale-title-small-line-height)}.icon mdui-icon,::slotted([slot=icon]){font-size:inherit;color:inherit}`; let Tab = class Tab2 extends RippleMixin(FocusableMixin(MduiElement)) { constructor() { super(...arguments); this.inline = false; this.active = false; this.variant = "primary"; this.key = uniqueId(); this.rippleRef = e$1(); this.hasSlotController = new HasSlotController(this, "icon", "custom"); } get rippleElement() { return this.rippleRef.value; } get rippleDisabled() { return false; } get focusElement() { return this; } get focusDisabled() { return false; } render() { const hasIcon = this.icon || this.hasSlotController.test("icon"); const hasCustomSlot = this.hasSlotController.test("custom"); const renderBadge = () => x``; return x`
${n2(hasIcon || this.icon, renderBadge)}${this.icon ? x`` : nothingTemplate}
${n2(!hasIcon, renderBadge)}
`; } }; Tab.styles = [componentStyle, tabStyle]; __decorate([ n$5({ reflect: true }) ], Tab.prototype, "value", undefined); __decorate([ n$5({ reflect: true }) ], Tab.prototype, "icon", undefined); __decorate([ n$5({ type: Boolean, reflect: true, converter: booleanConverter }) ], Tab.prototype, "inline", undefined); __decorate([ n$5({ type: Boolean, reflect: true, converter: booleanConverter }) ], Tab.prototype, "active", undefined); __decorate([ r$1() ], Tab.prototype, "variant", undefined); Tab = __decorate([ t$2("mdui-tab") ], Tab); const tabPanelStyle = i$7`:host{display:block;overflow-y:auto;flex:1 1 auto}:host(:not([active])){display:none}`; let TabPanel = class TabPanel2 extends MduiElement { constructor() { super(...arguments); this.active = false; } render() { return x``; } }; TabPanel.styles = [ componentStyle, tabPanelStyle ]; __decorate([ n$5({ reflect: true }) ], TabPanel.prototype, "value", undefined); __decorate([ n$5({ type: Boolean, reflect: true, converter: booleanConverter }) ], TabPanel.prototype, "active", undefined); TabPanel = __decorate([ t$2("mdui-tab-panel") ], TabPanel); const tabsStyle = i$7`:host{position:relative;display:flex}:host([placement^=top]){flex-direction:column}:host([placement^=bottom]){flex-direction:column-reverse}:host([placement^=left]){flex-direction:row}:host([placement^=right]){flex-direction:row-reverse}.container{position:relative;display:flex;flex:0 0 auto;overflow-x:auto;background-color:rgb(var(--mdui-color-surface))}:host([placement^=bottom]) .container,:host([placement^=top]) .container{flex-direction:row}:host([placement^=left]) .container,:host([placement^=right]) .container{flex-direction:column}:host([placement$='-start']) .container{justify-content:flex-start}:host([placement=bottom]) .container,:host([placement=left]) .container,:host([placement=right]) .container,:host([placement=top]) .container{justify-content:center}:host([placement$='-end']) .container{justify-content:flex-end}.container::after{content:' ';position:absolute;background-color:rgb(var(--mdui-color-surface-variant))}:host([placement^=bottom]) .container::after,:host([placement^=top]) .container::after{left:0;width:100%;height:.0625rem}:host([placement^=top]) .container::after{bottom:0}:host([placement^=bottom]) .container::after{top:0}:host([placement^=left]) .container::after,:host([placement^=right]) .container::after{top:0;height:100%;width:.0625rem}:host([placement^=left]) .container::after{right:0}:host([placement^=right]) .container::after{left:0}.indicator{position:absolute;z-index:1;background-color:rgb(var(--mdui-color-primary))}.container:not(.initial) .indicator{transition-duration:var(--mdui-motion-duration-medium2);transition-timing-function:var(--mdui-motion-easing-standard-decelerate)}:host([placement^=bottom]) .indicator,:host([placement^=top]) .indicator{transition-property:transform,left,width}:host([placement^=left]) .indicator,:host([placement^=right]) .indicator{transition-property:transform,top,height}:host([placement^=top]) .indicator{bottom:0}:host([placement^=bottom]) .indicator{top:0}:host([placement^=left]) .indicator{right:0}:host([placement^=right]) .indicator{left:0}:host([placement^=bottom][variant=primary]) .indicator,:host([placement^=top][variant=primary]) .indicator{height:.1875rem}:host([placement^=bottom][variant=secondary]) .indicator,:host([placement^=top][variant=secondary]) .indicator{height:.125rem}:host([placement^=left][variant=primary]) .indicator,:host([placement^=right][variant=primary]) .indicator{width:.1875rem}:host([placement^=left][variant=secondary]) .indicator,:host([placement^=right][variant=secondary]) .indicator{width:.125rem}:host([placement^=top][variant=primary]) .indicator{border-top-left-radius:.1875rem;border-top-right-radius:.1875rem}:host([placement^=bottom][variant=primary]) .indicator{border-bottom-right-radius:.1875rem;border-bottom-left-radius:.1875rem}:host([placement^=left][variant=primary]) .indicator{border-top-left-radius:.1875rem;border-bottom-left-radius:.1875rem}:host([placement^=right][variant=primary]) .indicator{border-top-right-radius:.1875rem;border-bottom-right-radius:.1875rem}:host([full-width]:not([full-width=false i])) ::slotted(mdui-tab){flex:1}`; let Tabs = class Tabs2 extends MduiElement { constructor() { super(...arguments); this.variant = "primary"; this.placement = "top-start"; this.fullWidth = false; this.activeKey = 0; this.isInitial = true; this.containerRef = e$1(); this.indicatorRef = e$1(); this.definedController = new DefinedController(this, { relatedElements: ["mdui-tab", "mdui-tab-panel"] }); } async onActiveKeyChange() { var _a2; await this.definedController.whenDefined(); this.value = (_a2 = this.tabs.find((tab) => tab.key === this.activeKey)) == null ? undefined : _a2.value; this.updateActive(); if (!this.isInitial) { this.emit("change"); } } async onValueChange() { this.isInitial = !this.hasUpdated; await this.definedController.whenDefined(); const tab = this.tabs.find((tab2) => tab2.value === this.value); this.activeKey = (tab == null ? undefined : tab.key) ?? 0; } async onIndicatorChange() { await this.updateComplete; this.updateIndicator(); } connectedCallback() { super.connectedCallback(); this.updateComplete.then(() => { this.observeResize = observeResize(this.containerRef.value, () => this.updateIndicator()); }); } disconnectedCallback() { var _a2; super.disconnectedCallback(); (_a2 = this.observeResize) == null ? undefined : _a2.unobserve(); } render() { return x`
`; } async onSlotChange() { await this.definedController.whenDefined(); this.updateActive(); } async onClick(event) { if (event.button) { return; } await this.definedController.whenDefined(); const target = event.target; const tab = target.closest("mdui-tab"); if (!tab) { return; } this.activeKey = tab.key; this.isInitial = false; this.updateActive(); } updateActive() { this.activeTab = this.tabs.map((tab) => { tab.active = this.activeKey === tab.key; return tab; }).find((tab) => tab.active); this.panels.forEach((panel) => { var _a2; return panel.active = panel.value === ((_a2 = this.activeTab) == null ? undefined : _a2.value); }); this.updateIndicator(); } updateIndicator() { const activeTab = this.activeTab; const $indicator = $$1(this.indicatorRef.value); const isVertical = this.placement.startsWith("left") || this.placement.startsWith("right"); if (!activeTab) { $indicator.css({ transform: isVertical ? "scaleY(0)" : "scaleX(0)" }); return; } const $activeTab = $$1(activeTab); const offsetTop = activeTab.offsetTop; const offsetLeft = activeTab.offsetLeft; const commonStyle = isVertical ? { transform: "scaleY(1)", width: "", left: "" } : { transform: "scaleX(1)", height: "", top: "" }; let shownStyle = {}; if (this.variant === "primary") { const $customSlots = $activeTab.find(':scope > [slot="custom"]'); const children = $customSlots.length ? $customSlots.get() : $$1(activeTab.renderRoot).find('slot[name="custom"]').children().get(); if (isVertical) { const top = Math.min(...children.map((child) => child.offsetTop)) + offsetTop; const bottom = Math.max(...children.map((child) => child.offsetTop + child.offsetHeight)) + offsetTop; shownStyle = { top, height: bottom - top }; } else { const left = Math.min(...children.map((child) => child.offsetLeft)) + offsetLeft; const right = Math.max(...children.map((child) => child.offsetLeft + child.offsetWidth)) + offsetLeft; shownStyle = { left, width: right - left }; } } if (this.variant === "secondary") { shownStyle = isVertical ? { top: offsetTop, height: activeTab.offsetHeight } : { left: offsetLeft, width: activeTab.offsetWidth }; } $indicator.css({ ...commonStyle, ...shownStyle }); } }; Tabs.styles = [componentStyle, tabsStyle]; __decorate([ n$5({ reflect: true }) ], Tabs.prototype, "variant", undefined); __decorate([ n$5({ reflect: true }) ], Tabs.prototype, "value", undefined); __decorate([ n$5({ reflect: true }) ], Tabs.prototype, "placement", undefined); __decorate([ n$5({ type: Boolean, reflect: true, converter: booleanConverter, attribute: "full-width" }) ], Tabs.prototype, "fullWidth", undefined); __decorate([ r$1() ], Tabs.prototype, "activeKey", undefined); __decorate([ r$1() ], Tabs.prototype, "isInitial", undefined); __decorate([ o$6({ selector: "mdui-tab", flatten: true }) ], Tabs.prototype, "tabs", undefined); __decorate([ o$6({ selector: "mdui-tab-panel", slot: "panel", flatten: true }) ], Tabs.prototype, "panels", undefined); __decorate([ watch("activeKey", true) ], Tabs.prototype, "onActiveKeyChange", null); __decorate([ watch("value") ], Tabs.prototype, "onValueChange", null); __decorate([ watch("variant", true), watch("placement", true), watch("fullWidth", true) ], Tabs.prototype, "onIndicatorChange", null); Tabs = __decorate([ t$2("mdui-tabs") ], Tabs); class HoverController { /** * @param host * @param elementRef 检查鼠标是否放在该元素上 */ constructor(host, elementRef) { this.isHover = false; this.uniqueID = uniqueId(); this.enterEventName = `mouseenter.${this.uniqueID}.hoverController`; this.leaveEventName = `mouseleave.${this.uniqueID}.hoverController`; this.mouseEnterItems = []; this.mouseLeaveItems = []; (this.host = host).addController(this); this.elementRef = elementRef; } hostConnected() { this.host.updateComplete.then(() => { $$1(this.elementRef.value).on(this.enterEventName, () => { this.isHover = true; for (let i3 = this.mouseEnterItems.length - 1; i3 >= 0; i3--) { const item = this.mouseEnterItems[i3]; item.callback(); if (item.one) { this.mouseEnterItems.splice(i3, 1); } } }).on(this.leaveEventName, () => { this.isHover = false; for (let i3 = this.mouseLeaveItems.length - 1; i3 >= 0; i3--) { const item = this.mouseLeaveItems[i3]; item.callback(); if (item.one) { this.mouseLeaveItems.splice(i3, 1); } } }); }); } hostDisconnected() { $$1(this.elementRef.value).off(this.enterEventName).off(this.leaveEventName); } /** * 指定鼠标移入时的回调函数 * @param callback 要执行的回调函数 * @param one 是否仅执行一次 */ onMouseEnter(callback, one = false) { this.mouseEnterItems.push({ callback, one }); } /** * 指定鼠标移出时的回调函数 * @param callback 要执行的回调函数 * @param one 是否仅执行一次 */ onMouseLeave(callback, one = false) { this.mouseLeaveItems.push({ callback, one }); } } const style = i$7`:host{--shape-corner-plain:var(--mdui-shape-corner-extra-small);--shape-corner-rich:var(--mdui-shape-corner-medium);--z-index:2500;display:contents}.popup{position:fixed;display:flex;flex-direction:column;z-index:var(--z-index);border-radius:var(--shape-corner-plain);background-color:rgb(var(--mdui-color-inverse-surface));padding:0 .5rem;min-width:1.75rem;max-width:20rem}:host([variant=rich]) .popup{border-radius:var(--shape-corner-rich);background-color:rgb(var(--mdui-color-surface-container));box-shadow:var(--mdui-elevation-level2);padding:.75rem 1rem .5rem 1rem}.headline{display:flex;color:rgb(var(--mdui-color-on-surface-variant));font-size:var(--mdui-typescale-title-small-size);font-weight:var(--mdui-typescale-title-small-weight);letter-spacing:var(--mdui-typescale-title-small-tracking);line-height:var(--mdui-typescale-title-small-line-height)}.content{display:flex;padding:.25rem 0;color:rgb(var(--mdui-color-inverse-on-surface));font-size:var(--mdui-typescale-body-small-size);font-weight:var(--mdui-typescale-body-small-weight);letter-spacing:var(--mdui-typescale-body-small-tracking);line-height:var(--mdui-typescale-body-small-line-height)}:host([variant=rich]) .content{color:rgb(var(--mdui-color-on-surface-variant));font-size:var(--mdui-typescale-body-medium-size);font-weight:var(--mdui-typescale-body-medium-weight);letter-spacing:var(--mdui-typescale-body-medium-tracking);line-height:var(--mdui-typescale-body-medium-line-height)}.action{display:flex;justify-content:flex-start;padding-top:.5rem}.action ::slotted(:not(:last-child)){margin-right:.5rem}`; let Tooltip = class Tooltip2 extends MduiElement { constructor() { super(); this.variant = "plain"; this.placement = "auto"; this.openDelay = 150; this.closeDelay = 150; this.trigger = "hover focus"; this.disabled = false; this.open = false; this.popupRef = e$1(); this.hasSlotController = new HasSlotController(this, "headline", "action"); this.hoverController = new HoverController(this, this.popupRef); this.definedController = new DefinedController(this, { needDomReady: true }); this.onDocumentClick = this.onDocumentClick.bind(this); this.onWindowScroll = this.onWindowScroll.bind(this); this.onFocus = this.onFocus.bind(this); this.onBlur = this.onBlur.bind(this); this.onClick = this.onClick.bind(this); this.onKeydown = this.onKeydown.bind(this); this.onMouseEnter = this.onMouseEnter.bind(this); this.onMouseLeave = this.onMouseLeave.bind(this); } /** * 获取第一个非 `); $target.addClass(className2); }; const setColorScheme = (hex, options) => { const source2 = argbFromHex(hex); setFromSource(source2); }; const queueName = "mdui.functions.snackbar."; let currentSnackbar = undefined; const snackbar = (options) => { const snackbar2 = new Snackbar(); const $snackbar = $$1(snackbar2); Object.entries(options).forEach(([key2, value]) => { if (key2 === "message") { snackbar2.innerHTML = value; } else if ([ "onClick", "onActionClick", "onOpen", "onOpened", "onClose", "onClosed" ].includes(key2)) { const eventName = toKebabCase(key2.slice(2)); $snackbar.on(eventName, (e3) => { if (e3.target !== snackbar2) { return; } if (key2 === "onActionClick") { const actionClick = (options.onActionClick ?? returnTrue).call(snackbar2, snackbar2); if (isPromise(actionClick)) { snackbar2.actionLoading = true; actionClick.then(() => { snackbar2.open = false; }).finally(() => { snackbar2.actionLoading = false; }); } else if (actionClick !== false) { snackbar2.open = false; } } else { value.call(snackbar2, snackbar2); } }); } else { snackbar2[key2] = value; } }); $snackbar.appendTo("body").on("closed", (e3) => { if (e3.target !== snackbar2) { return; } $snackbar.remove(); if (options.queue) { currentSnackbar = undefined; dequeue(queueName + options.queue); } }); if (!options.queue) { setTimeout(() => { snackbar2.open = true; }); } else if (currentSnackbar) { queue(queueName + options.queue, () => { snackbar2.open = true; currentSnackbar = snackbar2; }); } else { setTimeout(() => { snackbar2.open = true; }); currentSnackbar = snackbar2; } return snackbar2; }; var commonjsGlobal = typeof globalThis !== "undefined" ? globalThis : typeof window !== "undefined" ? window : typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : {}; function getDefaultExportFromCjs(x2) { return x2 && x2.__esModule && Object.prototype.hasOwnProperty.call(x2, "default") ? x2["default"] : x2; } function commonjsRequire(path) { throw new Error('Could not dynamically require "' + path + '". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.'); } var localforage$1 = { exports: {} }; /*! localForage -- Offline Storage, Improved Version 1.10.0 https://localforage.github.io/localForage (c) 2013-2017 Mozilla, Apache License 2.0 */ var hasRequiredLocalforage; function requireLocalforage() { if (hasRequiredLocalforage) return localforage$1.exports; hasRequiredLocalforage = 1; (function(module, exports) { (function(f2) { { module.exports = f2(); } })(function() { return function e3(t2, n3, r3) { function s2(o3, u2) { if (!n3[o3]) { if (!t2[o3]) { var a2 = typeof commonjsRequire == "function" && commonjsRequire; if (!u2 && a2) return a2(o3, true); if (i3) return i3(o3, true); var f2 = new Error("Cannot find module '" + o3 + "'"); throw f2.code = "MODULE_NOT_FOUND", f2; } var l2 = n3[o3] = { exports: {} }; t2[o3][0].call(l2.exports, function(e4) { var n4 = t2[o3][1][e4]; return s2(n4 ? n4 : e4); }, l2, l2.exports, e3, t2, n3, r3); } return n3[o3].exports; } var i3 = typeof commonjsRequire == "function" && commonjsRequire; for (var o2 = 0; o2 < r3.length; o2++) s2(r3[o2]); return s2; }({ 1: [function(_dereq_, module2, exports2) { (function(global2) { var Mutation = global2.MutationObserver || global2.WebKitMutationObserver; var scheduleDrain; { if (Mutation) { var called = 0; var observer2 = new Mutation(nextTick); var element = global2.document.createTextNode(""); observer2.observe(element, { characterData: true }); scheduleDrain = function() { element.data = called = ++called % 2; }; } else if (!global2.setImmediate && typeof global2.MessageChannel !== "undefined") { var channel = new global2.MessageChannel(); channel.port1.onmessage = nextTick; scheduleDrain = function() { channel.port2.postMessage(0); }; } else if ("document" in global2 && "onreadystatechange" in global2.document.createElement("script")) { scheduleDrain = function() { var scriptEl = global2.document.createElement("script"); scriptEl.onreadystatechange = function() { nextTick(); scriptEl.onreadystatechange = null; scriptEl.parentNode.removeChild(scriptEl); scriptEl = null; }; global2.document.documentElement.appendChild(scriptEl); }; } else { scheduleDrain = function() { setTimeout(nextTick, 0); }; } } var draining; var queue2 = []; function nextTick() { draining = true; var i3, oldQueue; var len = queue2.length; while (len) { oldQueue = queue2; queue2 = []; i3 = -1; while (++i3 < len) { oldQueue[i3](); } len = queue2.length; } draining = false; } module2.exports = immediate; function immediate(task) { if (queue2.push(task) === 1 && !draining) { scheduleDrain(); } } }).call(this, typeof commonjsGlobal !== "undefined" ? commonjsGlobal : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}); }, {}], 2: [function(_dereq_, module2, exports2) { var immediate = _dereq_(1); function INTERNAL() { } var handlers = {}; var REJECTED = ["REJECTED"]; var FULFILLED = ["FULFILLED"]; var PENDING = ["PENDING"]; module2.exports = Promise2; function Promise2(resolver) { if (typeof resolver !== "function") { throw new TypeError("resolver must be a function"); } this.state = PENDING; this.queue = []; this.outcome = undefined; if (resolver !== INTERNAL) { safelyResolveThenable(this, resolver); } } Promise2.prototype["catch"] = function(onRejected) { return this.then(null, onRejected); }; Promise2.prototype.then = function(onFulfilled, onRejected) { if (typeof onFulfilled !== "function" && this.state === FULFILLED || typeof onRejected !== "function" && this.state === REJECTED) { return this; } var promise = new this.constructor(INTERNAL); if (this.state !== PENDING) { var resolver = this.state === FULFILLED ? onFulfilled : onRejected; unwrap(promise, resolver, this.outcome); } else { this.queue.push(new QueueItem(promise, onFulfilled, onRejected)); } return promise; }; function QueueItem(promise, onFulfilled, onRejected) { this.promise = promise; if (typeof onFulfilled === "function") { this.onFulfilled = onFulfilled; this.callFulfilled = this.otherCallFulfilled; } if (typeof onRejected === "function") { this.onRejected = onRejected; this.callRejected = this.otherCallRejected; } } QueueItem.prototype.callFulfilled = function(value) { handlers.resolve(this.promise, value); }; QueueItem.prototype.otherCallFulfilled = function(value) { unwrap(this.promise, this.onFulfilled, value); }; QueueItem.prototype.callRejected = function(value) { handlers.reject(this.promise, value); }; QueueItem.prototype.otherCallRejected = function(value) { unwrap(this.promise, this.onRejected, value); }; function unwrap(promise, func, value) { immediate(function() { var returnValue; try { returnValue = func(value); } catch (e3) { return handlers.reject(promise, e3); } if (returnValue === promise) { handlers.reject(promise, new TypeError("Cannot resolve promise with itself")); } else { handlers.resolve(promise, returnValue); } }); } handlers.resolve = function(self2, value) { var result = tryCatch(getThen, value); if (result.status === "error") { return handlers.reject(self2, result.value); } var thenable = result.value; if (thenable) { safelyResolveThenable(self2, thenable); } else { self2.state = FULFILLED; self2.outcome = value; var i3 = -1; var len = self2.queue.length; while (++i3 < len) { self2.queue[i3].callFulfilled(value); } } return self2; }; handlers.reject = function(self2, error) { self2.state = REJECTED; self2.outcome = error; var i3 = -1; var len = self2.queue.length; while (++i3 < len) { self2.queue[i3].callRejected(error); } return self2; }; function getThen(obj) { var then = obj && obj.then; if (obj && (typeof obj === "object" || typeof obj === "function") && typeof then === "function") { return function appyThen() { then.apply(obj, arguments); }; } } function safelyResolveThenable(self2, thenable) { var called = false; function onError(value) { if (called) { return; } called = true; handlers.reject(self2, value); } function onSuccess(value) { if (called) { return; } called = true; handlers.resolve(self2, value); } function tryToUnwrap() { thenable(onSuccess, onError); } var result = tryCatch(tryToUnwrap); if (result.status === "error") { onError(result.value); } } function tryCatch(func, value) { var out = {}; try { out.value = func(value); out.status = "success"; } catch (e3) { out.status = "error"; out.value = e3; } return out; } Promise2.resolve = resolve; function resolve(value) { if (value instanceof this) { return value; } return handlers.resolve(new this(INTERNAL), value); } Promise2.reject = reject; function reject(reason) { var promise = new this(INTERNAL); return handlers.reject(promise, reason); } Promise2.all = all; function all(iterable) { var self2 = this; if (Object.prototype.toString.call(iterable) !== "[object Array]") { return this.reject(new TypeError("must be an array")); } var len = iterable.length; var called = false; if (!len) { return this.resolve([]); } var values = new Array(len); var resolved = 0; var i3 = -1; var promise = new this(INTERNAL); while (++i3 < len) { allResolver(iterable[i3], i3); } return promise; function allResolver(value, i4) { self2.resolve(value).then(resolveFromAll, function(error) { if (!called) { called = true; handlers.reject(promise, error); } }); function resolveFromAll(outValue) { values[i4] = outValue; if (++resolved === len && !called) { called = true; handlers.resolve(promise, values); } } } } Promise2.race = race; function race(iterable) { var self2 = this; if (Object.prototype.toString.call(iterable) !== "[object Array]") { return this.reject(new TypeError("must be an array")); } var len = iterable.length; var called = false; if (!len) { return this.resolve([]); } var i3 = -1; var promise = new this(INTERNAL); while (++i3 < len) { resolver(iterable[i3]); } return promise; function resolver(value) { self2.resolve(value).then(function(response) { if (!called) { called = true; handlers.resolve(promise, response); } }, function(error) { if (!called) { called = true; handlers.reject(promise, error); } }); } } }, { "1": 1 }], 3: [function(_dereq_, module2, exports2) { (function(global2) { if (typeof global2.Promise !== "function") { global2.Promise = _dereq_(2); } }).call(this, typeof commonjsGlobal !== "undefined" ? commonjsGlobal : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}); }, { "2": 2 }], 4: [function(_dereq_, module2, exports2) { var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function(obj) { return typeof obj; } : function(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function getIDB() { try { if (typeof indexedDB !== "undefined") { return indexedDB; } if (typeof webkitIndexedDB !== "undefined") { return webkitIndexedDB; } if (typeof mozIndexedDB !== "undefined") { return mozIndexedDB; } if (typeof OIndexedDB !== "undefined") { return OIndexedDB; } if (typeof msIndexedDB !== "undefined") { return msIndexedDB; } } catch (e3) { return; } } var idb = getIDB(); function isIndexedDBValid() { try { if (!idb || !idb.open) { return false; } var isSafari = typeof openDatabase !== "undefined" && /(Safari|iPhone|iPad|iPod)/.test(navigator.userAgent) && !/Chrome/.test(navigator.userAgent) && !/BlackBerry/.test(navigator.platform); var hasFetch = typeof fetch === "function" && fetch.toString().indexOf("[native code") !== -1; return (!isSafari || hasFetch) && typeof indexedDB !== "undefined" && // some outdated implementations of IDB that appear on Samsung // and HTC Android devices <4.4 are missing IDBKeyRange // See: https://github.com/mozilla/localForage/issues/128 // See: https://github.com/mozilla/localForage/issues/272 typeof IDBKeyRange !== "undefined"; } catch (e3) { return false; } } function createBlob(parts, properties) { parts = parts || []; properties = properties || {}; try { return new Blob(parts, properties); } catch (e3) { if (e3.name !== "TypeError") { throw e3; } var Builder = typeof BlobBuilder !== "undefined" ? BlobBuilder : typeof MSBlobBuilder !== "undefined" ? MSBlobBuilder : typeof MozBlobBuilder !== "undefined" ? MozBlobBuilder : WebKitBlobBuilder; var builder = new Builder(); for (var i3 = 0; i3 < parts.length; i3 += 1) { builder.append(parts[i3]); } return builder.getBlob(properties.type); } } if (typeof Promise === "undefined") { _dereq_(3); } var Promise$1 = Promise; function executeCallback(promise, callback) { if (callback) { promise.then(function(result) { callback(null, result); }, function(error) { callback(error); }); } } function executeTwoCallbacks(promise, callback, errorCallback) { if (typeof callback === "function") { promise.then(callback); } if (typeof errorCallback === "function") { promise["catch"](errorCallback); } } function normalizeKey(key3) { if (typeof key3 !== "string") { console.warn(key3 + " used as a key, but it is not a string."); key3 = String(key3); } return key3; } function getCallback() { if (arguments.length && typeof arguments[arguments.length - 1] === "function") { return arguments[arguments.length - 1]; } } var DETECT_BLOB_SUPPORT_STORE = "local-forage-detect-blob-support"; var supportsBlobs = undefined; var dbContexts = {}; var toString = Object.prototype.toString; var READ_ONLY = "readonly"; var READ_WRITE = "readwrite"; function _binStringToArrayBuffer(bin) { var length2 = bin.length; var buf = new ArrayBuffer(length2); var arr = new Uint8Array(buf); for (var i3 = 0; i3 < length2; i3++) { arr[i3] = bin.charCodeAt(i3); } return buf; } function _checkBlobSupportWithoutCaching(idb2) { return new Promise$1(function(resolve) { var txn = idb2.transaction(DETECT_BLOB_SUPPORT_STORE, READ_WRITE); var blob = createBlob([""]); txn.objectStore(DETECT_BLOB_SUPPORT_STORE).put(blob, "key"); txn.onabort = function(e3) { e3.preventDefault(); e3.stopPropagation(); resolve(false); }; txn.oncomplete = function() { var matchedChrome = navigator.userAgent.match(/Chrome\/(\d+)/); var matchedEdge = navigator.userAgent.match(/Edge\//); resolve(matchedEdge || !matchedChrome || parseInt(matchedChrome[1], 10) >= 43); }; })["catch"](function() { return false; }); } function _checkBlobSupport(idb2) { if (typeof supportsBlobs === "boolean") { return Promise$1.resolve(supportsBlobs); } return _checkBlobSupportWithoutCaching(idb2).then(function(value) { supportsBlobs = value; return supportsBlobs; }); } function _deferReadiness(dbInfo) { var dbContext = dbContexts[dbInfo.name]; var deferredOperation = {}; deferredOperation.promise = new Promise$1(function(resolve, reject) { deferredOperation.resolve = resolve; deferredOperation.reject = reject; }); dbContext.deferredOperations.push(deferredOperation); if (!dbContext.dbReady) { dbContext.dbReady = deferredOperation.promise; } else { dbContext.dbReady = dbContext.dbReady.then(function() { return deferredOperation.promise; }); } } function _advanceReadiness(dbInfo) { var dbContext = dbContexts[dbInfo.name]; var deferredOperation = dbContext.deferredOperations.pop(); if (deferredOperation) { deferredOperation.resolve(); return deferredOperation.promise; } } function _rejectReadiness(dbInfo, err) { var dbContext = dbContexts[dbInfo.name]; var deferredOperation = dbContext.deferredOperations.pop(); if (deferredOperation) { deferredOperation.reject(err); return deferredOperation.promise; } } function _getConnection(dbInfo, upgradeNeeded) { return new Promise$1(function(resolve, reject) { dbContexts[dbInfo.name] = dbContexts[dbInfo.name] || createDbContext(); if (dbInfo.db) { if (upgradeNeeded) { _deferReadiness(dbInfo); dbInfo.db.close(); } else { return resolve(dbInfo.db); } } var dbArgs = [dbInfo.name]; if (upgradeNeeded) { dbArgs.push(dbInfo.version); } var openreq = idb.open.apply(idb, dbArgs); if (upgradeNeeded) { openreq.onupgradeneeded = function(e3) { var db = openreq.result; try { db.createObjectStore(dbInfo.storeName); if (e3.oldVersion <= 1) { db.createObjectStore(DETECT_BLOB_SUPPORT_STORE); } } catch (ex) { if (ex.name === "ConstraintError") { console.warn('The database "' + dbInfo.name + '" has been upgraded from version ' + e3.oldVersion + " to version " + e3.newVersion + ', but the storage "' + dbInfo.storeName + '" already exists.'); } else { throw ex; } } }; } openreq.onerror = function(e3) { e3.preventDefault(); reject(openreq.error); }; openreq.onsuccess = function() { var db = openreq.result; db.onversionchange = function(e3) { e3.target.close(); }; resolve(db); _advanceReadiness(dbInfo); }; }); } function _getOriginalConnection(dbInfo) { return _getConnection(dbInfo, false); } function _getUpgradedConnection(dbInfo) { return _getConnection(dbInfo, true); } function _isUpgradeNeeded(dbInfo, defaultVersion) { if (!dbInfo.db) { return true; } var isNewStore = !dbInfo.db.objectStoreNames.contains(dbInfo.storeName); var isDowngrade = dbInfo.version < dbInfo.db.version; var isUpgrade = dbInfo.version > dbInfo.db.version; if (isDowngrade) { if (dbInfo.version !== defaultVersion) { console.warn('The database "' + dbInfo.name + `" can't be downgraded from version ` + dbInfo.db.version + " to version " + dbInfo.version + "."); } dbInfo.version = dbInfo.db.version; } if (isUpgrade || isNewStore) { if (isNewStore) { var incVersion = dbInfo.db.version + 1; if (incVersion > dbInfo.version) { dbInfo.version = incVersion; } } return true; } return false; } function _encodeBlob(blob) { return new Promise$1(function(resolve, reject) { var reader = new FileReader(); reader.onerror = reject; reader.onloadend = function(e3) { var base64 = btoa(e3.target.result || ""); resolve({ __local_forage_encoded_blob: true, data: base64, type: blob.type }); }; reader.readAsBinaryString(blob); }); } function _decodeBlob(encodedBlob) { var arrayBuff = _binStringToArrayBuffer(atob(encodedBlob.data)); return createBlob([arrayBuff], { type: encodedBlob.type }); } function _isEncodedBlob(value) { return value && value.__local_forage_encoded_blob; } function _fullyReady(callback) { var self2 = this; var promise = self2._initReady().then(function() { var dbContext = dbContexts[self2._dbInfo.name]; if (dbContext && dbContext.dbReady) { return dbContext.dbReady; } }); executeTwoCallbacks(promise, callback, callback); return promise; } function _tryReconnect(dbInfo) { _deferReadiness(dbInfo); var dbContext = dbContexts[dbInfo.name]; var forages = dbContext.forages; for (var i3 = 0; i3 < forages.length; i3++) { var forage = forages[i3]; if (forage._dbInfo.db) { forage._dbInfo.db.close(); forage._dbInfo.db = null; } } dbInfo.db = null; return _getOriginalConnection(dbInfo).then(function(db) { dbInfo.db = db; if (_isUpgradeNeeded(dbInfo)) { return _getUpgradedConnection(dbInfo); } return db; }).then(function(db) { dbInfo.db = dbContext.db = db; for (var i4 = 0; i4 < forages.length; i4++) { forages[i4]._dbInfo.db = db; } })["catch"](function(err) { _rejectReadiness(dbInfo, err); throw err; }); } function createTransaction(dbInfo, mode, callback, retries) { if (retries === undefined) { retries = 1; } try { var tx = dbInfo.db.transaction(dbInfo.storeName, mode); callback(null, tx); } catch (err) { if (retries > 0 && (!dbInfo.db || err.name === "InvalidStateError" || err.name === "NotFoundError")) { return Promise$1.resolve().then(function() { if (!dbInfo.db || err.name === "NotFoundError" && !dbInfo.db.objectStoreNames.contains(dbInfo.storeName) && dbInfo.version <= dbInfo.db.version) { if (dbInfo.db) { dbInfo.version = dbInfo.db.version + 1; } return _getUpgradedConnection(dbInfo); } }).then(function() { return _tryReconnect(dbInfo).then(function() { createTransaction(dbInfo, mode, callback, retries - 1); }); })["catch"](callback); } callback(err); } } function createDbContext() { return { // Running localForages sharing a database. forages: [], // Shared database. db: null, // Database readiness (promise). dbReady: null, // Deferred operations on the database. deferredOperations: [] }; } function _initStorage(options) { var self2 = this; var dbInfo = { db: null }; if (options) { for (var i3 in options) { dbInfo[i3] = options[i3]; } } var dbContext = dbContexts[dbInfo.name]; if (!dbContext) { dbContext = createDbContext(); dbContexts[dbInfo.name] = dbContext; } dbContext.forages.push(self2); if (!self2._initReady) { self2._initReady = self2.ready; self2.ready = _fullyReady; } var initPromises = []; function ignoreErrors() { return Promise$1.resolve(); } for (var j2 = 0; j2 < dbContext.forages.length; j2++) { var forage = dbContext.forages[j2]; if (forage !== self2) { initPromises.push(forage._initReady()["catch"](ignoreErrors)); } } var forages = dbContext.forages.slice(0); return Promise$1.all(initPromises).then(function() { dbInfo.db = dbContext.db; return _getOriginalConnection(dbInfo); }).then(function(db) { dbInfo.db = db; if (_isUpgradeNeeded(dbInfo, self2._defaultConfig.version)) { return _getUpgradedConnection(dbInfo); } return db; }).then(function(db) { dbInfo.db = dbContext.db = db; self2._dbInfo = dbInfo; for (var k2 = 0; k2 < forages.length; k2++) { var forage2 = forages[k2]; if (forage2 !== self2) { forage2._dbInfo.db = dbInfo.db; forage2._dbInfo.version = dbInfo.version; } } }); } function getItem(key3, callback) { var self2 = this; key3 = normalizeKey(key3); var promise = new Promise$1(function(resolve, reject) { self2.ready().then(function() { createTransaction(self2._dbInfo, READ_ONLY, function(err, transaction) { if (err) { return reject(err); } try { var store = transaction.objectStore(self2._dbInfo.storeName); var req = store.get(key3); req.onsuccess = function() { var value = req.result; if (value === void 0) { value = null; } if (_isEncodedBlob(value)) { value = _decodeBlob(value); } resolve(value); }; req.onerror = function() { reject(req.error); }; } catch (e3) { reject(e3); } }); })["catch"](reject); }); executeCallback(promise, callback); return promise; } function iterate(iterator, callback) { var self2 = this; var promise = new Promise$1(function(resolve, reject) { self2.ready().then(function() { createTransaction(self2._dbInfo, READ_ONLY, function(err, transaction) { if (err) { return reject(err); } try { var store = transaction.objectStore(self2._dbInfo.storeName); var req = store.openCursor(); var iterationNumber = 1; req.onsuccess = function() { var cursor = req.result; if (cursor) { var value = cursor.value; if (_isEncodedBlob(value)) { value = _decodeBlob(value); } var result = iterator(value, cursor.key, iterationNumber++); if (result !== void 0) { resolve(result); } else { cursor["continue"](); } } else { resolve(); } }; req.onerror = function() { reject(req.error); }; } catch (e3) { reject(e3); } }); })["catch"](reject); }); executeCallback(promise, callback); return promise; } function setItem(key3, value, callback) { var self2 = this; key3 = normalizeKey(key3); var promise = new Promise$1(function(resolve, reject) { var dbInfo; self2.ready().then(function() { dbInfo = self2._dbInfo; if (toString.call(value) === "[object Blob]") { return _checkBlobSupport(dbInfo.db).then(function(blobSupport) { if (blobSupport) { return value; } return _encodeBlob(value); }); } return value; }).then(function(value2) { createTransaction(self2._dbInfo, READ_WRITE, function(err, transaction) { if (err) { return reject(err); } try { var store = transaction.objectStore(self2._dbInfo.storeName); if (value2 === null) { value2 = void 0; } var req = store.put(value2, key3); transaction.oncomplete = function() { if (value2 === void 0) { value2 = null; } resolve(value2); }; transaction.onabort = transaction.onerror = function() { var err2 = req.error ? req.error : req.transaction.error; reject(err2); }; } catch (e3) { reject(e3); } }); })["catch"](reject); }); executeCallback(promise, callback); return promise; } function removeItem(key3, callback) { var self2 = this; key3 = normalizeKey(key3); var promise = new Promise$1(function(resolve, reject) { self2.ready().then(function() { createTransaction(self2._dbInfo, READ_WRITE, function(err, transaction) { if (err) { return reject(err); } try { var store = transaction.objectStore(self2._dbInfo.storeName); var req = store["delete"](key3); transaction.oncomplete = function() { resolve(); }; transaction.onerror = function() { reject(req.error); }; transaction.onabort = function() { var err2 = req.error ? req.error : req.transaction.error; reject(err2); }; } catch (e3) { reject(e3); } }); })["catch"](reject); }); executeCallback(promise, callback); return promise; } function clear(callback) { var self2 = this; var promise = new Promise$1(function(resolve, reject) { self2.ready().then(function() { createTransaction(self2._dbInfo, READ_WRITE, function(err, transaction) { if (err) { return reject(err); } try { var store = transaction.objectStore(self2._dbInfo.storeName); var req = store.clear(); transaction.oncomplete = function() { resolve(); }; transaction.onabort = transaction.onerror = function() { var err2 = req.error ? req.error : req.transaction.error; reject(err2); }; } catch (e3) { reject(e3); } }); })["catch"](reject); }); executeCallback(promise, callback); return promise; } function length(callback) { var self2 = this; var promise = new Promise$1(function(resolve, reject) { self2.ready().then(function() { createTransaction(self2._dbInfo, READ_ONLY, function(err, transaction) { if (err) { return reject(err); } try { var store = transaction.objectStore(self2._dbInfo.storeName); var req = store.count(); req.onsuccess = function() { resolve(req.result); }; req.onerror = function() { reject(req.error); }; } catch (e3) { reject(e3); } }); })["catch"](reject); }); executeCallback(promise, callback); return promise; } function key2(n3, callback) { var self2 = this; var promise = new Promise$1(function(resolve, reject) { if (n3 < 0) { resolve(null); return; } self2.ready().then(function() { createTransaction(self2._dbInfo, READ_ONLY, function(err, transaction) { if (err) { return reject(err); } try { var store = transaction.objectStore(self2._dbInfo.storeName); var advanced = false; var req = store.openKeyCursor(); req.onsuccess = function() { var cursor = req.result; if (!cursor) { resolve(null); return; } if (n3 === 0) { resolve(cursor.key); } else { if (!advanced) { advanced = true; cursor.advance(n3); } else { resolve(cursor.key); } } }; req.onerror = function() { reject(req.error); }; } catch (e3) { reject(e3); } }); })["catch"](reject); }); executeCallback(promise, callback); return promise; } function keys(callback) { var self2 = this; var promise = new Promise$1(function(resolve, reject) { self2.ready().then(function() { createTransaction(self2._dbInfo, READ_ONLY, function(err, transaction) { if (err) { return reject(err); } try { var store = transaction.objectStore(self2._dbInfo.storeName); var req = store.openKeyCursor(); var keys2 = []; req.onsuccess = function() { var cursor = req.result; if (!cursor) { resolve(keys2); return; } keys2.push(cursor.key); cursor["continue"](); }; req.onerror = function() { reject(req.error); }; } catch (e3) { reject(e3); } }); })["catch"](reject); }); executeCallback(promise, callback); return promise; } function dropInstance(options, callback) { callback = getCallback.apply(this, arguments); var currentConfig = this.config(); options = typeof options !== "function" && options || {}; if (!options.name) { options.name = options.name || currentConfig.name; options.storeName = options.storeName || currentConfig.storeName; } var self2 = this; var promise; if (!options.name) { promise = Promise$1.reject("Invalid arguments"); } else { var isCurrentDb = options.name === currentConfig.name && self2._dbInfo.db; var dbPromise = isCurrentDb ? Promise$1.resolve(self2._dbInfo.db) : _getOriginalConnection(options).then(function(db) { var dbContext = dbContexts[options.name]; var forages = dbContext.forages; dbContext.db = db; for (var i3 = 0; i3 < forages.length; i3++) { forages[i3]._dbInfo.db = db; } return db; }); if (!options.storeName) { promise = dbPromise.then(function(db) { _deferReadiness(options); var dbContext = dbContexts[options.name]; var forages = dbContext.forages; db.close(); for (var i3 = 0; i3 < forages.length; i3++) { var forage = forages[i3]; forage._dbInfo.db = null; } var dropDBPromise = new Promise$1(function(resolve, reject) { var req = idb.deleteDatabase(options.name); req.onerror = function() { var db2 = req.result; if (db2) { db2.close(); } reject(req.error); }; req.onblocked = function() { console.warn('dropInstance blocked for database "' + options.name + '" until all open connections are closed'); }; req.onsuccess = function() { var db2 = req.result; if (db2) { db2.close(); } resolve(db2); }; }); return dropDBPromise.then(function(db2) { dbContext.db = db2; for (var i4 = 0; i4 < forages.length; i4++) { var _forage = forages[i4]; _advanceReadiness(_forage._dbInfo); } })["catch"](function(err) { (_rejectReadiness(options, err) || Promise$1.resolve())["catch"](function() { }); throw err; }); }); } else { promise = dbPromise.then(function(db) { if (!db.objectStoreNames.contains(options.storeName)) { return; } var newVersion = db.version + 1; _deferReadiness(options); var dbContext = dbContexts[options.name]; var forages = dbContext.forages; db.close(); for (var i3 = 0; i3 < forages.length; i3++) { var forage = forages[i3]; forage._dbInfo.db = null; forage._dbInfo.version = newVersion; } var dropObjectPromise = new Promise$1(function(resolve, reject) { var req = idb.open(options.name, newVersion); req.onerror = function(err) { var db2 = req.result; db2.close(); reject(err); }; req.onupgradeneeded = function() { var db2 = req.result; db2.deleteObjectStore(options.storeName); }; req.onsuccess = function() { var db2 = req.result; db2.close(); resolve(db2); }; }); return dropObjectPromise.then(function(db2) { dbContext.db = db2; for (var j2 = 0; j2 < forages.length; j2++) { var _forage2 = forages[j2]; _forage2._dbInfo.db = db2; _advanceReadiness(_forage2._dbInfo); } })["catch"](function(err) { (_rejectReadiness(options, err) || Promise$1.resolve())["catch"](function() { }); throw err; }); }); } } executeCallback(promise, callback); return promise; } var asyncStorage = { _driver: "asyncStorage", _initStorage, _support: isIndexedDBValid(), iterate, getItem, setItem, removeItem, clear, length, key: key2, keys, dropInstance }; function isWebSQLValid() { return typeof openDatabase === "function"; } var BASE_CHARS = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; var BLOB_TYPE_PREFIX = "~~local_forage_type~"; var BLOB_TYPE_PREFIX_REGEX = /^~~local_forage_type~([^~]+)~/; var SERIALIZED_MARKER = "__lfsc__:"; var SERIALIZED_MARKER_LENGTH = SERIALIZED_MARKER.length; var TYPE_ARRAYBUFFER = "arbf"; var TYPE_BLOB = "blob"; var TYPE_INT8ARRAY = "si08"; var TYPE_UINT8ARRAY = "ui08"; var TYPE_UINT8CLAMPEDARRAY = "uic8"; var TYPE_INT16ARRAY = "si16"; var TYPE_INT32ARRAY = "si32"; var TYPE_UINT16ARRAY = "ur16"; var TYPE_UINT32ARRAY = "ui32"; var TYPE_FLOAT32ARRAY = "fl32"; var TYPE_FLOAT64ARRAY = "fl64"; var TYPE_SERIALIZED_MARKER_LENGTH = SERIALIZED_MARKER_LENGTH + TYPE_ARRAYBUFFER.length; var toString$1 = Object.prototype.toString; function stringToBuffer(serializedString) { var bufferLength = serializedString.length * 0.75; var len = serializedString.length; var i3; var p2 = 0; var encoded1, encoded2, encoded3, encoded4; if (serializedString[serializedString.length - 1] === "=") { bufferLength--; if (serializedString[serializedString.length - 2] === "=") { bufferLength--; } } var buffer2 = new ArrayBuffer(bufferLength); var bytes = new Uint8Array(buffer2); for (i3 = 0; i3 < len; i3 += 4) { encoded1 = BASE_CHARS.indexOf(serializedString[i3]); encoded2 = BASE_CHARS.indexOf(serializedString[i3 + 1]); encoded3 = BASE_CHARS.indexOf(serializedString[i3 + 2]); encoded4 = BASE_CHARS.indexOf(serializedString[i3 + 3]); bytes[p2++] = encoded1 << 2 | encoded2 >> 4; bytes[p2++] = (encoded2 & 15) << 4 | encoded3 >> 2; bytes[p2++] = (encoded3 & 3) << 6 | encoded4 & 63; } return buffer2; } function bufferToString(buffer2) { var bytes = new Uint8Array(buffer2); var base64String = ""; var i3; for (i3 = 0; i3 < bytes.length; i3 += 3) { base64String += BASE_CHARS[bytes[i3] >> 2]; base64String += BASE_CHARS[(bytes[i3] & 3) << 4 | bytes[i3 + 1] >> 4]; base64String += BASE_CHARS[(bytes[i3 + 1] & 15) << 2 | bytes[i3 + 2] >> 6]; base64String += BASE_CHARS[bytes[i3 + 2] & 63]; } if (bytes.length % 3 === 2) { base64String = base64String.substring(0, base64String.length - 1) + "="; } else if (bytes.length % 3 === 1) { base64String = base64String.substring(0, base64String.length - 2) + "=="; } return base64String; } function serialize(value, callback) { var valueType = ""; if (value) { valueType = toString$1.call(value); } if (value && (valueType === "[object ArrayBuffer]" || value.buffer && toString$1.call(value.buffer) === "[object ArrayBuffer]")) { var buffer2; var marker = SERIALIZED_MARKER; if (value instanceof ArrayBuffer) { buffer2 = value; marker += TYPE_ARRAYBUFFER; } else { buffer2 = value.buffer; if (valueType === "[object Int8Array]") { marker += TYPE_INT8ARRAY; } else if (valueType === "[object Uint8Array]") { marker += TYPE_UINT8ARRAY; } else if (valueType === "[object Uint8ClampedArray]") { marker += TYPE_UINT8CLAMPEDARRAY; } else if (valueType === "[object Int16Array]") { marker += TYPE_INT16ARRAY; } else if (valueType === "[object Uint16Array]") { marker += TYPE_UINT16ARRAY; } else if (valueType === "[object Int32Array]") { marker += TYPE_INT32ARRAY; } else if (valueType === "[object Uint32Array]") { marker += TYPE_UINT32ARRAY; } else if (valueType === "[object Float32Array]") { marker += TYPE_FLOAT32ARRAY; } else if (valueType === "[object Float64Array]") { marker += TYPE_FLOAT64ARRAY; } else { callback(new Error("Failed to get type for BinaryArray")); } } callback(marker + bufferToString(buffer2)); } else if (valueType === "[object Blob]") { var fileReader = new FileReader(); fileReader.onload = function() { var str = BLOB_TYPE_PREFIX + value.type + "~" + bufferToString(this.result); callback(SERIALIZED_MARKER + TYPE_BLOB + str); }; fileReader.readAsArrayBuffer(value); } else { try { callback(JSON.stringify(value)); } catch (e3) { console.error("Couldn't convert value into a JSON string: ", value); callback(null, e3); } } } function deserialize(value) { if (value.substring(0, SERIALIZED_MARKER_LENGTH) !== SERIALIZED_MARKER) { return JSON.parse(value); } var serializedString = value.substring(TYPE_SERIALIZED_MARKER_LENGTH); var type = value.substring(SERIALIZED_MARKER_LENGTH, TYPE_SERIALIZED_MARKER_LENGTH); var blobType; if (type === TYPE_BLOB && BLOB_TYPE_PREFIX_REGEX.test(serializedString)) { var matcher = serializedString.match(BLOB_TYPE_PREFIX_REGEX); blobType = matcher[1]; serializedString = serializedString.substring(matcher[0].length); } var buffer2 = stringToBuffer(serializedString); switch (type) { case TYPE_ARRAYBUFFER: return buffer2; case TYPE_BLOB: return createBlob([buffer2], { type: blobType }); case TYPE_INT8ARRAY: return new Int8Array(buffer2); case TYPE_UINT8ARRAY: return new Uint8Array(buffer2); case TYPE_UINT8CLAMPEDARRAY: return new Uint8ClampedArray(buffer2); case TYPE_INT16ARRAY: return new Int16Array(buffer2); case TYPE_UINT16ARRAY: return new Uint16Array(buffer2); case TYPE_INT32ARRAY: return new Int32Array(buffer2); case TYPE_UINT32ARRAY: return new Uint32Array(buffer2); case TYPE_FLOAT32ARRAY: return new Float32Array(buffer2); case TYPE_FLOAT64ARRAY: return new Float64Array(buffer2); default: throw new Error("Unkown type: " + type); } } var localforageSerializer = { serialize, deserialize, stringToBuffer, bufferToString }; function createDbTable(t2, dbInfo, callback, errorCallback) { t2.executeSql("CREATE TABLE IF NOT EXISTS " + dbInfo.storeName + " (id INTEGER PRIMARY KEY, key unique, value)", [], callback, errorCallback); } function _initStorage$1(options) { var self2 = this; var dbInfo = { db: null }; if (options) { for (var i3 in options) { dbInfo[i3] = typeof options[i3] !== "string" ? options[i3].toString() : options[i3]; } } var dbInfoPromise = new Promise$1(function(resolve, reject) { try { dbInfo.db = openDatabase(dbInfo.name, String(dbInfo.version), dbInfo.description, dbInfo.size); } catch (e3) { return reject(e3); } dbInfo.db.transaction(function(t2) { createDbTable(t2, dbInfo, function() { self2._dbInfo = dbInfo; resolve(); }, function(t3, error) { reject(error); }); }, reject); }); dbInfo.serializer = localforageSerializer; return dbInfoPromise; } function tryExecuteSql(t2, dbInfo, sqlStatement, args, callback, errorCallback) { t2.executeSql(sqlStatement, args, callback, function(t3, error) { if (error.code === error.SYNTAX_ERR) { t3.executeSql("SELECT name FROM sqlite_master WHERE type='table' AND name = ?", [dbInfo.storeName], function(t4, results) { if (!results.rows.length) { createDbTable(t4, dbInfo, function() { t4.executeSql(sqlStatement, args, callback, errorCallback); }, errorCallback); } else { errorCallback(t4, error); } }, errorCallback); } else { errorCallback(t3, error); } }, errorCallback); } function getItem$1(key3, callback) { var self2 = this; key3 = normalizeKey(key3); var promise = new Promise$1(function(resolve, reject) { self2.ready().then(function() { var dbInfo = self2._dbInfo; dbInfo.db.transaction(function(t2) { tryExecuteSql(t2, dbInfo, "SELECT * FROM " + dbInfo.storeName + " WHERE key = ? LIMIT 1", [key3], function(t3, results) { var result = results.rows.length ? results.rows.item(0).value : null; if (result) { result = dbInfo.serializer.deserialize(result); } resolve(result); }, function(t3, error) { reject(error); }); }); })["catch"](reject); }); executeCallback(promise, callback); return promise; } function iterate$1(iterator, callback) { var self2 = this; var promise = new Promise$1(function(resolve, reject) { self2.ready().then(function() { var dbInfo = self2._dbInfo; dbInfo.db.transaction(function(t2) { tryExecuteSql(t2, dbInfo, "SELECT * FROM " + dbInfo.storeName, [], function(t3, results) { var rows = results.rows; var length2 = rows.length; for (var i3 = 0; i3 < length2; i3++) { var item = rows.item(i3); var result = item.value; if (result) { result = dbInfo.serializer.deserialize(result); } result = iterator(result, item.key, i3 + 1); if (result !== undefined) { resolve(result); return; } } resolve(); }, function(t3, error) { reject(error); }); }); })["catch"](reject); }); executeCallback(promise, callback); return promise; } function _setItem(key3, value, callback, retriesLeft) { var self2 = this; key3 = normalizeKey(key3); var promise = new Promise$1(function(resolve, reject) { self2.ready().then(function() { if (value === undefined) { value = null; } var originalValue = value; var dbInfo = self2._dbInfo; dbInfo.serializer.serialize(value, function(value2, error) { if (error) { reject(error); } else { dbInfo.db.transaction(function(t2) { tryExecuteSql(t2, dbInfo, "INSERT OR REPLACE INTO " + dbInfo.storeName + " (key, value) VALUES (?, ?)", [key3, value2], function() { resolve(originalValue); }, function(t3, error2) { reject(error2); }); }, function(sqlError) { if (sqlError.code === sqlError.QUOTA_ERR) { if (retriesLeft > 0) { resolve(_setItem.apply(self2, [key3, originalValue, callback, retriesLeft - 1])); return; } reject(sqlError); } }); } }); })["catch"](reject); }); executeCallback(promise, callback); return promise; } function setItem$1(key3, value, callback) { return _setItem.apply(this, [key3, value, callback, 1]); } function removeItem$1(key3, callback) { var self2 = this; key3 = normalizeKey(key3); var promise = new Promise$1(function(resolve, reject) { self2.ready().then(function() { var dbInfo = self2._dbInfo; dbInfo.db.transaction(function(t2) { tryExecuteSql(t2, dbInfo, "DELETE FROM " + dbInfo.storeName + " WHERE key = ?", [key3], function() { resolve(); }, function(t3, error) { reject(error); }); }); })["catch"](reject); }); executeCallback(promise, callback); return promise; } function clear$1(callback) { var self2 = this; var promise = new Promise$1(function(resolve, reject) { self2.ready().then(function() { var dbInfo = self2._dbInfo; dbInfo.db.transaction(function(t2) { tryExecuteSql(t2, dbInfo, "DELETE FROM " + dbInfo.storeName, [], function() { resolve(); }, function(t3, error) { reject(error); }); }); })["catch"](reject); }); executeCallback(promise, callback); return promise; } function length$1(callback) { var self2 = this; var promise = new Promise$1(function(resolve, reject) { self2.ready().then(function() { var dbInfo = self2._dbInfo; dbInfo.db.transaction(function(t2) { tryExecuteSql(t2, dbInfo, "SELECT COUNT(key) as c FROM " + dbInfo.storeName, [], function(t3, results) { var result = results.rows.item(0).c; resolve(result); }, function(t3, error) { reject(error); }); }); })["catch"](reject); }); executeCallback(promise, callback); return promise; } function key$12(n3, callback) { var self2 = this; var promise = new Promise$1(function(resolve, reject) { self2.ready().then(function() { var dbInfo = self2._dbInfo; dbInfo.db.transaction(function(t2) { tryExecuteSql(t2, dbInfo, "SELECT key FROM " + dbInfo.storeName + " WHERE id = ? LIMIT 1", [n3 + 1], function(t3, results) { var result = results.rows.length ? results.rows.item(0).key : null; resolve(result); }, function(t3, error) { reject(error); }); }); })["catch"](reject); }); executeCallback(promise, callback); return promise; } function keys$1(callback) { var self2 = this; var promise = new Promise$1(function(resolve, reject) { self2.ready().then(function() { var dbInfo = self2._dbInfo; dbInfo.db.transaction(function(t2) { tryExecuteSql(t2, dbInfo, "SELECT key FROM " + dbInfo.storeName, [], function(t3, results) { var keys2 = []; for (var i3 = 0; i3 < results.rows.length; i3++) { keys2.push(results.rows.item(i3).key); } resolve(keys2); }, function(t3, error) { reject(error); }); }); })["catch"](reject); }); executeCallback(promise, callback); return promise; } function getAllStoreNames(db) { return new Promise$1(function(resolve, reject) { db.transaction(function(t2) { t2.executeSql("SELECT name FROM sqlite_master WHERE type='table' AND name <> '__WebKitDatabaseInfoTable__'", [], function(t3, results) { var storeNames = []; for (var i3 = 0; i3 < results.rows.length; i3++) { storeNames.push(results.rows.item(i3).name); } resolve({ db, storeNames }); }, function(t3, error) { reject(error); }); }, function(sqlError) { reject(sqlError); }); }); } function dropInstance$1(options, callback) { callback = getCallback.apply(this, arguments); var currentConfig = this.config(); options = typeof options !== "function" && options || {}; if (!options.name) { options.name = options.name || currentConfig.name; options.storeName = options.storeName || currentConfig.storeName; } var self2 = this; var promise; if (!options.name) { promise = Promise$1.reject("Invalid arguments"); } else { promise = new Promise$1(function(resolve) { var db; if (options.name === currentConfig.name) { db = self2._dbInfo.db; } else { db = openDatabase(options.name, "", "", 0); } if (!options.storeName) { resolve(getAllStoreNames(db)); } else { resolve({ db, storeNames: [options.storeName] }); } }).then(function(operationInfo) { return new Promise$1(function(resolve, reject) { operationInfo.db.transaction(function(t2) { function dropTable(storeName) { return new Promise$1(function(resolve2, reject2) { t2.executeSql("DROP TABLE IF EXISTS " + storeName, [], function() { resolve2(); }, function(t3, error) { reject2(error); }); }); } var operations = []; for (var i3 = 0, len = operationInfo.storeNames.length; i3 < len; i3++) { operations.push(dropTable(operationInfo.storeNames[i3])); } Promise$1.all(operations).then(function() { resolve(); })["catch"](function(e3) { reject(e3); }); }, function(sqlError) { reject(sqlError); }); }); }); } executeCallback(promise, callback); return promise; } var webSQLStorage = { _driver: "webSQLStorage", _initStorage: _initStorage$1, _support: isWebSQLValid(), iterate: iterate$1, getItem: getItem$1, setItem: setItem$1, removeItem: removeItem$1, clear: clear$1, length: length$1, key: key$12, keys: keys$1, dropInstance: dropInstance$1 }; function isLocalStorageValid() { try { return typeof localStorage !== "undefined" && "setItem" in localStorage && // in IE8 typeof localStorage.setItem === 'object' !!localStorage.setItem; } catch (e3) { return false; } } function _getKeyPrefix(options, defaultConfig) { var keyPrefix = options.name + "/"; if (options.storeName !== defaultConfig.storeName) { keyPrefix += options.storeName + "/"; } return keyPrefix; } function checkIfLocalStorageThrows() { var localStorageTestKey = "_localforage_support_test"; try { localStorage.setItem(localStorageTestKey, true); localStorage.removeItem(localStorageTestKey); return false; } catch (e3) { return true; } } function _isLocalStorageUsable() { return !checkIfLocalStorageThrows() || localStorage.length > 0; } function _initStorage$2(options) { var self2 = this; var dbInfo = {}; if (options) { for (var i3 in options) { dbInfo[i3] = options[i3]; } } dbInfo.keyPrefix = _getKeyPrefix(options, self2._defaultConfig); if (!_isLocalStorageUsable()) { return Promise$1.reject(); } self2._dbInfo = dbInfo; dbInfo.serializer = localforageSerializer; return Promise$1.resolve(); } function clear$2(callback) { var self2 = this; var promise = self2.ready().then(function() { var keyPrefix = self2._dbInfo.keyPrefix; for (var i3 = localStorage.length - 1; i3 >= 0; i3--) { var key3 = localStorage.key(i3); if (key3.indexOf(keyPrefix) === 0) { localStorage.removeItem(key3); } } }); executeCallback(promise, callback); return promise; } function getItem$2(key3, callback) { var self2 = this; key3 = normalizeKey(key3); var promise = self2.ready().then(function() { var dbInfo = self2._dbInfo; var result = localStorage.getItem(dbInfo.keyPrefix + key3); if (result) { result = dbInfo.serializer.deserialize(result); } return result; }); executeCallback(promise, callback); return promise; } function iterate$2(iterator, callback) { var self2 = this; var promise = self2.ready().then(function() { var dbInfo = self2._dbInfo; var keyPrefix = dbInfo.keyPrefix; var keyPrefixLength = keyPrefix.length; var length2 = localStorage.length; var iterationNumber = 1; for (var i3 = 0; i3 < length2; i3++) { var key3 = localStorage.key(i3); if (key3.indexOf(keyPrefix) !== 0) { continue; } var value = localStorage.getItem(key3); if (value) { value = dbInfo.serializer.deserialize(value); } value = iterator(value, key3.substring(keyPrefixLength), iterationNumber++); if (value !== undefined) { return value; } } }); executeCallback(promise, callback); return promise; } function key$2(n3, callback) { var self2 = this; var promise = self2.ready().then(function() { var dbInfo = self2._dbInfo; var result; try { result = localStorage.key(n3); } catch (error) { result = null; } if (result) { result = result.substring(dbInfo.keyPrefix.length); } return result; }); executeCallback(promise, callback); return promise; } function keys$2(callback) { var self2 = this; var promise = self2.ready().then(function() { var dbInfo = self2._dbInfo; var length2 = localStorage.length; var keys2 = []; for (var i3 = 0; i3 < length2; i3++) { var itemKey = localStorage.key(i3); if (itemKey.indexOf(dbInfo.keyPrefix) === 0) { keys2.push(itemKey.substring(dbInfo.keyPrefix.length)); } } return keys2; }); executeCallback(promise, callback); return promise; } function length$2(callback) { var self2 = this; var promise = self2.keys().then(function(keys2) { return keys2.length; }); executeCallback(promise, callback); return promise; } function removeItem$2(key3, callback) { var self2 = this; key3 = normalizeKey(key3); var promise = self2.ready().then(function() { var dbInfo = self2._dbInfo; localStorage.removeItem(dbInfo.keyPrefix + key3); }); executeCallback(promise, callback); return promise; } function setItem$2(key3, value, callback) { var self2 = this; key3 = normalizeKey(key3); var promise = self2.ready().then(function() { if (value === undefined) { value = null; } var originalValue = value; return new Promise$1(function(resolve, reject) { var dbInfo = self2._dbInfo; dbInfo.serializer.serialize(value, function(value2, error) { if (error) { reject(error); } else { try { localStorage.setItem(dbInfo.keyPrefix + key3, value2); resolve(originalValue); } catch (e3) { if (e3.name === "QuotaExceededError" || e3.name === "NS_ERROR_DOM_QUOTA_REACHED") { reject(e3); } reject(e3); } } }); }); }); executeCallback(promise, callback); return promise; } function dropInstance$2(options, callback) { callback = getCallback.apply(this, arguments); options = typeof options !== "function" && options || {}; if (!options.name) { var currentConfig = this.config(); options.name = options.name || currentConfig.name; options.storeName = options.storeName || currentConfig.storeName; } var self2 = this; var promise; if (!options.name) { promise = Promise$1.reject("Invalid arguments"); } else { promise = new Promise$1(function(resolve) { if (!options.storeName) { resolve(options.name + "/"); } else { resolve(_getKeyPrefix(options, self2._defaultConfig)); } }).then(function(keyPrefix) { for (var i3 = localStorage.length - 1; i3 >= 0; i3--) { var key3 = localStorage.key(i3); if (key3.indexOf(keyPrefix) === 0) { localStorage.removeItem(key3); } } }); } executeCallback(promise, callback); return promise; } var localStorageWrapper = { _driver: "localStorageWrapper", _initStorage: _initStorage$2, _support: isLocalStorageValid(), iterate: iterate$2, getItem: getItem$2, setItem: setItem$2, removeItem: removeItem$2, clear: clear$2, length: length$2, key: key$2, keys: keys$2, dropInstance: dropInstance$2 }; var sameValue = function sameValue2(x2, y2) { return x2 === y2 || typeof x2 === "number" && typeof y2 === "number" && isNaN(x2) && isNaN(y2); }; var includes = function includes2(array, searchElement) { var len = array.length; var i3 = 0; while (i3 < len) { if (sameValue(array[i3], searchElement)) { return true; } i3++; } return false; }; var isArray = Array.isArray || function(arg) { return Object.prototype.toString.call(arg) === "[object Array]"; }; var DefinedDrivers = {}; var DriverSupport = {}; var DefaultDrivers = { INDEXEDDB: asyncStorage, WEBSQL: webSQLStorage, LOCALSTORAGE: localStorageWrapper }; var DefaultDriverOrder = [DefaultDrivers.INDEXEDDB._driver, DefaultDrivers.WEBSQL._driver, DefaultDrivers.LOCALSTORAGE._driver]; var OptionalDriverMethods = ["dropInstance"]; var LibraryMethods = ["clear", "getItem", "iterate", "key", "keys", "length", "removeItem", "setItem"].concat(OptionalDriverMethods); var DefaultConfig = { description: "", driver: DefaultDriverOrder.slice(), name: "localforage", // Default DB size is _JUST UNDER_ 5MB, as it's the highest size // we can use without a prompt. size: 4980736, storeName: "keyvaluepairs", version: 1 }; function callWhenReady(localForageInstance, libraryMethod) { localForageInstance[libraryMethod] = function() { var _args = arguments; return localForageInstance.ready().then(function() { return localForageInstance[libraryMethod].apply(localForageInstance, _args); }); }; } function extend2() { for (var i3 = 1; i3 < arguments.length; i3++) { var arg = arguments[i3]; if (arg) { for (var _key in arg) { if (arg.hasOwnProperty(_key)) { if (isArray(arg[_key])) { arguments[0][_key] = arg[_key].slice(); } else { arguments[0][_key] = arg[_key]; } } } } } return arguments[0]; } var LocalForage = function() { function LocalForage2(options) { _classCallCheck(this, LocalForage2); for (var driverTypeKey in DefaultDrivers) { if (DefaultDrivers.hasOwnProperty(driverTypeKey)) { var driver = DefaultDrivers[driverTypeKey]; var driverName = driver._driver; this[driverTypeKey] = driverName; if (!DefinedDrivers[driverName]) { this.defineDriver(driver); } } } this._defaultConfig = extend2({}, DefaultConfig); this._config = extend2({}, this._defaultConfig, options); this._driverSet = null; this._initDriver = null; this._ready = false; this._dbInfo = null; this._wrapLibraryMethodsWithReady(); this.setDriver(this._config.driver)["catch"](function() { }); } LocalForage2.prototype.config = function config(options) { if ((typeof options === "undefined" ? "undefined" : _typeof(options)) === "object") { if (this._ready) { return new Error("Can't call config() after localforage has been used."); } for (var i3 in options) { if (i3 === "storeName") { options[i3] = options[i3].replace(/\W/g, "_"); } if (i3 === "version" && typeof options[i3] !== "number") { return new Error("Database version must be a number."); } this._config[i3] = options[i3]; } if ("driver" in options && options.driver) { return this.setDriver(this._config.driver); } return true; } else if (typeof options === "string") { return this._config[options]; } else { return this._config; } }; LocalForage2.prototype.defineDriver = function defineDriver(driverObject, callback, errorCallback) { var promise = new Promise$1(function(resolve, reject) { try { var driverName = driverObject._driver; var complianceError = new Error("Custom driver not compliant; see https://mozilla.github.io/localForage/#definedriver"); if (!driverObject._driver) { reject(complianceError); return; } var driverMethods = LibraryMethods.concat("_initStorage"); for (var i3 = 0, len = driverMethods.length; i3 < len; i3++) { var driverMethodName = driverMethods[i3]; var isRequired = !includes(OptionalDriverMethods, driverMethodName); if ((isRequired || driverObject[driverMethodName]) && typeof driverObject[driverMethodName] !== "function") { reject(complianceError); return; } } var configureMissingMethods = function configureMissingMethods2() { var methodNotImplementedFactory = function methodNotImplementedFactory2(methodName) { return function() { var error = new Error("Method " + methodName + " is not implemented by the current driver"); var promise2 = Promise$1.reject(error); executeCallback(promise2, arguments[arguments.length - 1]); return promise2; }; }; for (var _i = 0, _len = OptionalDriverMethods.length; _i < _len; _i++) { var optionalDriverMethod = OptionalDriverMethods[_i]; if (!driverObject[optionalDriverMethod]) { driverObject[optionalDriverMethod] = methodNotImplementedFactory(optionalDriverMethod); } } }; configureMissingMethods(); var setDriverSupport = function setDriverSupport2(support) { if (DefinedDrivers[driverName]) { console.info("Redefining LocalForage driver: " + driverName); } DefinedDrivers[driverName] = driverObject; DriverSupport[driverName] = support; resolve(); }; if ("_support" in driverObject) { if (driverObject._support && typeof driverObject._support === "function") { driverObject._support().then(setDriverSupport, reject); } else { setDriverSupport(!!driverObject._support); } } else { setDriverSupport(true); } } catch (e3) { reject(e3); } }); executeTwoCallbacks(promise, callback, errorCallback); return promise; }; LocalForage2.prototype.driver = function driver() { return this._driver || null; }; LocalForage2.prototype.getDriver = function getDriver(driverName, callback, errorCallback) { var getDriverPromise = DefinedDrivers[driverName] ? Promise$1.resolve(DefinedDrivers[driverName]) : Promise$1.reject(new Error("Driver not found.")); executeTwoCallbacks(getDriverPromise, callback, errorCallback); return getDriverPromise; }; LocalForage2.prototype.getSerializer = function getSerializer(callback) { var serializerPromise = Promise$1.resolve(localforageSerializer); executeTwoCallbacks(serializerPromise, callback); return serializerPromise; }; LocalForage2.prototype.ready = function ready(callback) { var self2 = this; var promise = self2._driverSet.then(function() { if (self2._ready === null) { self2._ready = self2._initDriver(); } return self2._ready; }); executeTwoCallbacks(promise, callback, callback); return promise; }; LocalForage2.prototype.setDriver = function setDriver(drivers, callback, errorCallback) { var self2 = this; if (!isArray(drivers)) { drivers = [drivers]; } var supportedDrivers = this._getSupportedDrivers(drivers); function setDriverToConfig() { self2._config.driver = self2.driver(); } function extendSelfWithDriver(driver) { self2._extend(driver); setDriverToConfig(); self2._ready = self2._initStorage(self2._config); return self2._ready; } function initDriver(supportedDrivers2) { return function() { var currentDriverIndex = 0; function driverPromiseLoop() { while (currentDriverIndex < supportedDrivers2.length) { var driverName = supportedDrivers2[currentDriverIndex]; currentDriverIndex++; self2._dbInfo = null; self2._ready = null; return self2.getDriver(driverName).then(extendSelfWithDriver)["catch"](driverPromiseLoop); } setDriverToConfig(); var error = new Error("No available storage method found."); self2._driverSet = Promise$1.reject(error); return self2._driverSet; } return driverPromiseLoop(); }; } var oldDriverSetDone = this._driverSet !== null ? this._driverSet["catch"](function() { return Promise$1.resolve(); }) : Promise$1.resolve(); this._driverSet = oldDriverSetDone.then(function() { var driverName = supportedDrivers[0]; self2._dbInfo = null; self2._ready = null; return self2.getDriver(driverName).then(function(driver) { self2._driver = driver._driver; setDriverToConfig(); self2._wrapLibraryMethodsWithReady(); self2._initDriver = initDriver(supportedDrivers); }); })["catch"](function() { setDriverToConfig(); var error = new Error("No available storage method found."); self2._driverSet = Promise$1.reject(error); return self2._driverSet; }); executeTwoCallbacks(this._driverSet, callback, errorCallback); return this._driverSet; }; LocalForage2.prototype.supports = function supports(driverName) { return !!DriverSupport[driverName]; }; LocalForage2.prototype._extend = function _extend(libraryMethodsAndProperties) { extend2(this, libraryMethodsAndProperties); }; LocalForage2.prototype._getSupportedDrivers = function _getSupportedDrivers(drivers) { var supportedDrivers = []; for (var i3 = 0, len = drivers.length; i3 < len; i3++) { var driverName = drivers[i3]; if (this.supports(driverName)) { supportedDrivers.push(driverName); } } return supportedDrivers; }; LocalForage2.prototype._wrapLibraryMethodsWithReady = function _wrapLibraryMethodsWithReady() { for (var i3 = 0, len = LibraryMethods.length; i3 < len; i3++) { callWhenReady(this, LibraryMethods[i3]); } }; LocalForage2.prototype.createInstance = function createInstance(options) { return new LocalForage2(options); }; return LocalForage2; }(); var localforage_js = new LocalForage(); module2.exports = localforage_js; }, { "3": 3 }] }, {}, [4])(4); }); })(localforage$1); return localforage$1.exports; } var localforageExports = requireLocalforage(); const localforage = /* @__PURE__ */ getDefaultExportFromCjs(localforageExports); var jszip_min = { exports: {} }; /*! JSZip v3.10.1 - A JavaScript class for generating and reading zip files (c) 2009-2016 Stuart Knightley Dual licenced under the MIT license or GPLv3. See https://raw.github.com/Stuk/jszip/main/LICENSE.markdown. JSZip uses the library pako released under the MIT license : https://github.com/nodeca/pako/blob/main/LICENSE */ var hasRequiredJszip_min; function requireJszip_min() { if (hasRequiredJszip_min) return jszip_min.exports; hasRequiredJszip_min = 1; (function(module, exports) { !function(e3) { module.exports = e3(); }(function() { return function s2(a2, o2, h2) { function u2(r3, e4) { if (!o2[r3]) { if (!a2[r3]) { var t2 = "function" == typeof commonjsRequire && commonjsRequire; if (!e4 && t2) return t2(r3, true); if (l2) return l2(r3, true); var n3 = new Error("Cannot find module '" + r3 + "'"); throw n3.code = "MODULE_NOT_FOUND", n3; } var i3 = o2[r3] = { exports: {} }; a2[r3][0].call(i3.exports, function(e5) { var t3 = a2[r3][1][e5]; return u2(t3 || e5); }, i3, i3.exports, s2, a2, o2, h2); } return o2[r3].exports; } for (var l2 = "function" == typeof commonjsRequire && commonjsRequire, e3 = 0; e3 < h2.length; e3++) u2(h2[e3]); return u2; }({ 1: [function(e3, t2, r3) { var d2 = e3("./utils"), c3 = e3("./support"), p2 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="; r3.encode = function(e4) { for (var t3, r4, n3, i3, s2, a2, o2, h2 = [], u2 = 0, l2 = e4.length, f2 = l2, c4 = "string" !== d2.getTypeOf(e4); u2 < e4.length; ) f2 = l2 - u2, n3 = c4 ? (t3 = e4[u2++], r4 = u2 < l2 ? e4[u2++] : 0, u2 < l2 ? e4[u2++] : 0) : (t3 = e4.charCodeAt(u2++), r4 = u2 < l2 ? e4.charCodeAt(u2++) : 0, u2 < l2 ? e4.charCodeAt(u2++) : 0), i3 = t3 >> 2, s2 = (3 & t3) << 4 | r4 >> 4, a2 = 1 < f2 ? (15 & r4) << 2 | n3 >> 6 : 64, o2 = 2 < f2 ? 63 & n3 : 64, h2.push(p2.charAt(i3) + p2.charAt(s2) + p2.charAt(a2) + p2.charAt(o2)); return h2.join(""); }, r3.decode = function(e4) { var t3, r4, n3, i3, s2, a2, o2 = 0, h2 = 0, u2 = "data:"; if (e4.substr(0, u2.length) === u2) throw new Error("Invalid base64 input, it looks like a data url."); var l2, f2 = 3 * (e4 = e4.replace(/[^A-Za-z0-9+/=]/g, "")).length / 4; if (e4.charAt(e4.length - 1) === p2.charAt(64) && f2--, e4.charAt(e4.length - 2) === p2.charAt(64) && f2--, f2 % 1 != 0) throw new Error("Invalid base64 input, bad content length."); for (l2 = c3.uint8array ? new Uint8Array(0 | f2) : new Array(0 | f2); o2 < e4.length; ) t3 = p2.indexOf(e4.charAt(o2++)) << 2 | (i3 = p2.indexOf(e4.charAt(o2++))) >> 4, r4 = (15 & i3) << 4 | (s2 = p2.indexOf(e4.charAt(o2++))) >> 2, n3 = (3 & s2) << 6 | (a2 = p2.indexOf(e4.charAt(o2++))), l2[h2++] = t3, 64 !== s2 && (l2[h2++] = r4), 64 !== a2 && (l2[h2++] = n3); return l2; }; }, { "./support": 30, "./utils": 32 }], 2: [function(e3, t2, r3) { var n3 = e3("./external"), i3 = e3("./stream/DataWorker"), s2 = e3("./stream/Crc32Probe"), a2 = e3("./stream/DataLengthProbe"); function o2(e4, t3, r4, n4, i4) { this.compressedSize = e4, this.uncompressedSize = t3, this.crc32 = r4, this.compression = n4, this.compressedContent = i4; } o2.prototype = { getContentWorker: function() { var e4 = new i3(n3.Promise.resolve(this.compressedContent)).pipe(this.compression.uncompressWorker()).pipe(new a2("data_length")), t3 = this; return e4.on("end", function() { if (this.streamInfo.data_length !== t3.uncompressedSize) throw new Error("Bug : uncompressed data size mismatch"); }), e4; }, getCompressedWorker: function() { return new i3(n3.Promise.resolve(this.compressedContent)).withStreamInfo("compressedSize", this.compressedSize).withStreamInfo("uncompressedSize", this.uncompressedSize).withStreamInfo("crc32", this.crc32).withStreamInfo("compression", this.compression); } }, o2.createWorkerFrom = function(e4, t3, r4) { return e4.pipe(new s2()).pipe(new a2("uncompressedSize")).pipe(t3.compressWorker(r4)).pipe(new a2("compressedSize")).withStreamInfo("compression", t3); }, t2.exports = o2; }, { "./external": 6, "./stream/Crc32Probe": 25, "./stream/DataLengthProbe": 26, "./stream/DataWorker": 27 }], 3: [function(e3, t2, r3) { var n3 = e3("./stream/GenericWorker"); r3.STORE = { magic: "\0\0", compressWorker: function() { return new n3("STORE compression"); }, uncompressWorker: function() { return new n3("STORE decompression"); } }, r3.DEFLATE = e3("./flate"); }, { "./flate": 7, "./stream/GenericWorker": 28 }], 4: [function(e3, t2, r3) { var n3 = e3("./utils"); var o2 = function() { for (var e4, t3 = [], r4 = 0; r4 < 256; r4++) { e4 = r4; for (var n4 = 0; n4 < 8; n4++) e4 = 1 & e4 ? 3988292384 ^ e4 >>> 1 : e4 >>> 1; t3[r4] = e4; } return t3; }(); t2.exports = function(e4, t3) { return undefined !== e4 && e4.length ? "string" !== n3.getTypeOf(e4) ? function(e5, t4, r4, n4) { var i3 = o2, s2 = n4 + r4; e5 ^= -1; for (var a2 = n4; a2 < s2; a2++) e5 = e5 >>> 8 ^ i3[255 & (e5 ^ t4[a2])]; return -1 ^ e5; }(0 | t3, e4, e4.length, 0) : function(e5, t4, r4, n4) { var i3 = o2, s2 = n4 + r4; e5 ^= -1; for (var a2 = n4; a2 < s2; a2++) e5 = e5 >>> 8 ^ i3[255 & (e5 ^ t4.charCodeAt(a2))]; return -1 ^ e5; }(0 | t3, e4, e4.length, 0) : 0; }; }, { "./utils": 32 }], 5: [function(e3, t2, r3) { r3.base64 = false, r3.binary = false, r3.dir = false, r3.createFolders = true, r3.date = null, r3.compression = null, r3.compressionOptions = null, r3.comment = null, r3.unixPermissions = null, r3.dosPermissions = null; }, {}], 6: [function(e3, t2, r3) { var n3 = null; n3 = "undefined" != typeof Promise ? Promise : e3("lie"), t2.exports = { Promise: n3 }; }, { lie: 37 }], 7: [function(e3, t2, r3) { var n3 = "undefined" != typeof Uint8Array && "undefined" != typeof Uint16Array && "undefined" != typeof Uint32Array, i3 = e3("pako"), s2 = e3("./utils"), a2 = e3("./stream/GenericWorker"), o2 = n3 ? "uint8array" : "array"; function h2(e4, t3) { a2.call(this, "FlateWorker/" + e4), this._pako = null, this._pakoAction = e4, this._pakoOptions = t3, this.meta = {}; } r3.magic = "\b\0", s2.inherits(h2, a2), h2.prototype.processChunk = function(e4) { this.meta = e4.meta, null === this._pako && this._createPako(), this._pako.push(s2.transformTo(o2, e4.data), false); }, h2.prototype.flush = function() { a2.prototype.flush.call(this), null === this._pako && this._createPako(), this._pako.push([], true); }, h2.prototype.cleanUp = function() { a2.prototype.cleanUp.call(this), this._pako = null; }, h2.prototype._createPako = function() { this._pako = new i3[this._pakoAction]({ raw: true, level: this._pakoOptions.level || -1 }); var t3 = this; this._pako.onData = function(e4) { t3.push({ data: e4, meta: t3.meta }); }; }, r3.compressWorker = function(e4) { return new h2("Deflate", e4); }, r3.uncompressWorker = function() { return new h2("Inflate", {}); }; }, { "./stream/GenericWorker": 28, "./utils": 32, pako: 38 }], 8: [function(e3, t2, r3) { function A2(e4, t3) { var r4, n4 = ""; for (r4 = 0; r4 < t3; r4++) n4 += String.fromCharCode(255 & e4), e4 >>>= 8; return n4; } function n3(e4, t3, r4, n4, i4, s3) { var a2, o2, h2 = e4.file, u2 = e4.compression, l2 = s3 !== O.utf8encode, f2 = I2.transformTo("string", s3(h2.name)), c3 = I2.transformTo("string", O.utf8encode(h2.name)), d2 = h2.comment, p2 = I2.transformTo("string", s3(d2)), m2 = I2.transformTo("string", O.utf8encode(d2)), _2 = c3.length !== h2.name.length, g2 = m2.length !== d2.length, b2 = "", v2 = "", y2 = "", w = h2.dir, k2 = h2.date, x2 = { crc32: 0, compressedSize: 0, uncompressedSize: 0 }; t3 && !r4 || (x2.crc32 = e4.crc32, x2.compressedSize = e4.compressedSize, x2.uncompressedSize = e4.uncompressedSize); var S2 = 0; t3 && (S2 |= 8), l2 || !_2 && !g2 || (S2 |= 2048); var z2 = 0, C2 = 0; w && (z2 |= 16), "UNIX" === i4 ? (C2 = 798, z2 |= function(e5, t4) { var r5 = e5; return e5 || (r5 = t4 ? 16893 : 33204), (65535 & r5) << 16; }(h2.unixPermissions, w)) : (C2 = 20, z2 |= function(e5) { return 63 & (e5 || 0); }(h2.dosPermissions)), a2 = k2.getUTCHours(), a2 <<= 6, a2 |= k2.getUTCMinutes(), a2 <<= 5, a2 |= k2.getUTCSeconds() / 2, o2 = k2.getUTCFullYear() - 1980, o2 <<= 4, o2 |= k2.getUTCMonth() + 1, o2 <<= 5, o2 |= k2.getUTCDate(), _2 && (v2 = A2(1, 1) + A2(B2(f2), 4) + c3, b2 += "up" + A2(v2.length, 2) + v2), g2 && (y2 = A2(1, 1) + A2(B2(p2), 4) + m2, b2 += "uc" + A2(y2.length, 2) + y2); var E2 = ""; return E2 += "\n\0", E2 += A2(S2, 2), E2 += u2.magic, E2 += A2(a2, 2), E2 += A2(o2, 2), E2 += A2(x2.crc32, 4), E2 += A2(x2.compressedSize, 4), E2 += A2(x2.uncompressedSize, 4), E2 += A2(f2.length, 2), E2 += A2(b2.length, 2), { fileRecord: R2.LOCAL_FILE_HEADER + E2 + f2 + b2, dirRecord: R2.CENTRAL_FILE_HEADER + A2(C2, 2) + E2 + A2(p2.length, 2) + "\0\0\0\0" + A2(z2, 4) + A2(n4, 4) + f2 + b2 + p2 }; } var I2 = e3("../utils"), i3 = e3("../stream/GenericWorker"), O = e3("../utf8"), B2 = e3("../crc32"), R2 = e3("../signature"); function s2(e4, t3, r4, n4) { i3.call(this, "ZipFileWorker"), this.bytesWritten = 0, this.zipComment = t3, this.zipPlatform = r4, this.encodeFileName = n4, this.streamFiles = e4, this.accumulate = false, this.contentBuffer = [], this.dirRecords = [], this.currentSourceOffset = 0, this.entriesCount = 0, this.currentFile = null, this._sources = []; } I2.inherits(s2, i3), s2.prototype.push = function(e4) { var t3 = e4.meta.percent || 0, r4 = this.entriesCount, n4 = this._sources.length; this.accumulate ? this.contentBuffer.push(e4) : (this.bytesWritten += e4.data.length, i3.prototype.push.call(this, { data: e4.data, meta: { currentFile: this.currentFile, percent: r4 ? (t3 + 100 * (r4 - n4 - 1)) / r4 : 100 } })); }, s2.prototype.openedSource = function(e4) { this.currentSourceOffset = this.bytesWritten, this.currentFile = e4.file.name; var t3 = this.streamFiles && !e4.file.dir; if (t3) { var r4 = n3(e4, t3, false, this.currentSourceOffset, this.zipPlatform, this.encodeFileName); this.push({ data: r4.fileRecord, meta: { percent: 0 } }); } else this.accumulate = true; }, s2.prototype.closedSource = function(e4) { this.accumulate = false; var t3 = this.streamFiles && !e4.file.dir, r4 = n3(e4, t3, true, this.currentSourceOffset, this.zipPlatform, this.encodeFileName); if (this.dirRecords.push(r4.dirRecord), t3) this.push({ data: function(e5) { return R2.DATA_DESCRIPTOR + A2(e5.crc32, 4) + A2(e5.compressedSize, 4) + A2(e5.uncompressedSize, 4); }(e4), meta: { percent: 100 } }); else for (this.push({ data: r4.fileRecord, meta: { percent: 0 } }); this.contentBuffer.length; ) this.push(this.contentBuffer.shift()); this.currentFile = null; }, s2.prototype.flush = function() { for (var e4 = this.bytesWritten, t3 = 0; t3 < this.dirRecords.length; t3++) this.push({ data: this.dirRecords[t3], meta: { percent: 100 } }); var r4 = this.bytesWritten - e4, n4 = function(e5, t4, r5, n5, i4) { var s3 = I2.transformTo("string", i4(n5)); return R2.CENTRAL_DIRECTORY_END + "\0\0\0\0" + A2(e5, 2) + A2(e5, 2) + A2(t4, 4) + A2(r5, 4) + A2(s3.length, 2) + s3; }(this.dirRecords.length, r4, e4, this.zipComment, this.encodeFileName); this.push({ data: n4, meta: { percent: 100 } }); }, s2.prototype.prepareNextSource = function() { this.previous = this._sources.shift(), this.openedSource(this.previous.streamInfo), this.isPaused ? this.previous.pause() : this.previous.resume(); }, s2.prototype.registerPrevious = function(e4) { this._sources.push(e4); var t3 = this; return e4.on("data", function(e5) { t3.processChunk(e5); }), e4.on("end", function() { t3.closedSource(t3.previous.streamInfo), t3._sources.length ? t3.prepareNextSource() : t3.end(); }), e4.on("error", function(e5) { t3.error(e5); }), this; }, s2.prototype.resume = function() { return !!i3.prototype.resume.call(this) && (!this.previous && this._sources.length ? (this.prepareNextSource(), true) : this.previous || this._sources.length || this.generatedError ? undefined : (this.end(), true)); }, s2.prototype.error = function(e4) { var t3 = this._sources; if (!i3.prototype.error.call(this, e4)) return false; for (var r4 = 0; r4 < t3.length; r4++) try { t3[r4].error(e4); } catch (e5) { } return true; }, s2.prototype.lock = function() { i3.prototype.lock.call(this); for (var e4 = this._sources, t3 = 0; t3 < e4.length; t3++) e4[t3].lock(); }, t2.exports = s2; }, { "../crc32": 4, "../signature": 23, "../stream/GenericWorker": 28, "../utf8": 31, "../utils": 32 }], 9: [function(e3, t2, r3) { var u2 = e3("../compressions"), n3 = e3("./ZipFileWorker"); r3.generateWorker = function(e4, a2, t3) { var o2 = new n3(a2.streamFiles, t3, a2.platform, a2.encodeFileName), h2 = 0; try { e4.forEach(function(e5, t4) { h2++; var r4 = function(e6, t5) { var r5 = e6 || t5, n5 = u2[r5]; if (!n5) throw new Error(r5 + " is not a valid compression method !"); return n5; }(t4.options.compression, a2.compression), n4 = t4.options.compressionOptions || a2.compressionOptions || {}, i3 = t4.dir, s2 = t4.date; t4._compressWorker(r4, n4).withStreamInfo("file", { name: e5, dir: i3, date: s2, comment: t4.comment || "", unixPermissions: t4.unixPermissions, dosPermissions: t4.dosPermissions }).pipe(o2); }), o2.entriesCount = h2; } catch (e5) { o2.error(e5); } return o2; }; }, { "../compressions": 3, "./ZipFileWorker": 8 }], 10: [function(e3, t2, r3) { function n3() { if (!(this instanceof n3)) return new n3(); if (arguments.length) throw new Error("The constructor with parameters has been removed in JSZip 3.0, please check the upgrade guide."); this.files = /* @__PURE__ */ Object.create(null), this.comment = null, this.root = "", this.clone = function() { var e4 = new n3(); for (var t3 in this) "function" != typeof this[t3] && (e4[t3] = this[t3]); return e4; }; } (n3.prototype = e3("./object")).loadAsync = e3("./load"), n3.support = e3("./support"), n3.defaults = e3("./defaults"), n3.version = "3.10.1", n3.loadAsync = function(e4, t3) { return new n3().loadAsync(e4, t3); }, n3.external = e3("./external"), t2.exports = n3; }, { "./defaults": 5, "./external": 6, "./load": 11, "./object": 15, "./support": 30 }], 11: [function(e3, t2, r3) { var u2 = e3("./utils"), i3 = e3("./external"), n3 = e3("./utf8"), s2 = e3("./zipEntries"), a2 = e3("./stream/Crc32Probe"), l2 = e3("./nodejsUtils"); function f2(n4) { return new i3.Promise(function(e4, t3) { var r4 = n4.decompressed.getContentWorker().pipe(new a2()); r4.on("error", function(e5) { t3(e5); }).on("end", function() { r4.streamInfo.crc32 !== n4.decompressed.crc32 ? t3(new Error("Corrupted zip : CRC32 mismatch")) : e4(); }).resume(); }); } t2.exports = function(e4, o2) { var h2 = this; return o2 = u2.extend(o2 || {}, { base64: false, checkCRC32: false, optimizedBinaryString: false, createFolders: false, decodeFileName: n3.utf8decode }), l2.isNode && l2.isStream(e4) ? i3.Promise.reject(new Error("JSZip can't accept a stream when loading a zip file.")) : u2.prepareContent("the loaded zip file", e4, true, o2.optimizedBinaryString, o2.base64).then(function(e5) { var t3 = new s2(o2); return t3.load(e5), t3; }).then(function(e5) { var t3 = [i3.Promise.resolve(e5)], r4 = e5.files; if (o2.checkCRC32) for (var n4 = 0; n4 < r4.length; n4++) t3.push(f2(r4[n4])); return i3.Promise.all(t3); }).then(function(e5) { for (var t3 = e5.shift(), r4 = t3.files, n4 = 0; n4 < r4.length; n4++) { var i4 = r4[n4], s3 = i4.fileNameStr, a3 = u2.resolve(i4.fileNameStr); h2.file(a3, i4.decompressed, { binary: true, optimizedBinaryString: true, date: i4.date, dir: i4.dir, comment: i4.fileCommentStr.length ? i4.fileCommentStr : null, unixPermissions: i4.unixPermissions, dosPermissions: i4.dosPermissions, createFolders: o2.createFolders }), i4.dir || (h2.file(a3).unsafeOriginalName = s3); } return t3.zipComment.length && (h2.comment = t3.zipComment), h2; }); }; }, { "./external": 6, "./nodejsUtils": 14, "./stream/Crc32Probe": 25, "./utf8": 31, "./utils": 32, "./zipEntries": 33 }], 12: [function(e3, t2, r3) { var n3 = e3("../utils"), i3 = e3("../stream/GenericWorker"); function s2(e4, t3) { i3.call(this, "Nodejs stream input adapter for " + e4), this._upstreamEnded = false, this._bindStream(t3); } n3.inherits(s2, i3), s2.prototype._bindStream = function(e4) { var t3 = this; (this._stream = e4).pause(), e4.on("data", function(e5) { t3.push({ data: e5, meta: { percent: 0 } }); }).on("error", function(e5) { t3.isPaused ? this.generatedError = e5 : t3.error(e5); }).on("end", function() { t3.isPaused ? t3._upstreamEnded = true : t3.end(); }); }, s2.prototype.pause = function() { return !!i3.prototype.pause.call(this) && (this._stream.pause(), true); }, s2.prototype.resume = function() { return !!i3.prototype.resume.call(this) && (this._upstreamEnded ? this.end() : this._stream.resume(), true); }, t2.exports = s2; }, { "../stream/GenericWorker": 28, "../utils": 32 }], 13: [function(e3, t2, r3) { var i3 = e3("readable-stream").Readable; function n3(e4, t3, r4) { i3.call(this, t3), this._helper = e4; var n4 = this; e4.on("data", function(e5, t4) { n4.push(e5) || n4._helper.pause(), r4 && r4(t4); }).on("error", function(e5) { n4.emit("error", e5); }).on("end", function() { n4.push(null); }); } e3("../utils").inherits(n3, i3), n3.prototype._read = function() { this._helper.resume(); }, t2.exports = n3; }, { "../utils": 32, "readable-stream": 16 }], 14: [function(e3, t2, r3) { t2.exports = { isNode: "undefined" != typeof Buffer, newBufferFrom: function(e4, t3) { if (Buffer.from && Buffer.from !== Uint8Array.from) return Buffer.from(e4, t3); if ("number" == typeof e4) throw new Error('The "data" argument must not be a number'); return new Buffer(e4, t3); }, allocBuffer: function(e4) { if (Buffer.alloc) return Buffer.alloc(e4); var t3 = new Buffer(e4); return t3.fill(0), t3; }, isBuffer: function(e4) { return Buffer.isBuffer(e4); }, isStream: function(e4) { return e4 && "function" == typeof e4.on && "function" == typeof e4.pause && "function" == typeof e4.resume; } }; }, {}], 15: [function(e3, t2, r3) { function s2(e4, t3, r4) { var n4, i4 = u2.getTypeOf(t3), s3 = u2.extend(r4 || {}, f2); s3.date = s3.date || /* @__PURE__ */ new Date(), null !== s3.compression && (s3.compression = s3.compression.toUpperCase()), "string" == typeof s3.unixPermissions && (s3.unixPermissions = parseInt(s3.unixPermissions, 8)), s3.unixPermissions && 16384 & s3.unixPermissions && (s3.dir = true), s3.dosPermissions && 16 & s3.dosPermissions && (s3.dir = true), s3.dir && (e4 = g2(e4)), s3.createFolders && (n4 = _2(e4)) && b2.call(this, n4, true); var a3 = "string" === i4 && false === s3.binary && false === s3.base64; r4 && undefined !== r4.binary || (s3.binary = !a3), (t3 instanceof c3 && 0 === t3.uncompressedSize || s3.dir || !t3 || 0 === t3.length) && (s3.base64 = false, s3.binary = true, t3 = "", s3.compression = "STORE", i4 = "string"); var o3 = null; o3 = t3 instanceof c3 || t3 instanceof l2 ? t3 : p2.isNode && p2.isStream(t3) ? new m2(e4, t3) : u2.prepareContent(e4, t3, s3.binary, s3.optimizedBinaryString, s3.base64); var h3 = new d2(e4, o3, s3); this.files[e4] = h3; } var i3 = e3("./utf8"), u2 = e3("./utils"), l2 = e3("./stream/GenericWorker"), a2 = e3("./stream/StreamHelper"), f2 = e3("./defaults"), c3 = e3("./compressedObject"), d2 = e3("./zipObject"), o2 = e3("./generate"), p2 = e3("./nodejsUtils"), m2 = e3("./nodejs/NodejsStreamInputAdapter"), _2 = function(e4) { "/" === e4.slice(-1) && (e4 = e4.substring(0, e4.length - 1)); var t3 = e4.lastIndexOf("/"); return 0 < t3 ? e4.substring(0, t3) : ""; }, g2 = function(e4) { return "/" !== e4.slice(-1) && (e4 += "/"), e4; }, b2 = function(e4, t3) { return t3 = undefined !== t3 ? t3 : f2.createFolders, e4 = g2(e4), this.files[e4] || s2.call(this, e4, null, { dir: true, createFolders: t3 }), this.files[e4]; }; function h2(e4) { return "[object RegExp]" === Object.prototype.toString.call(e4); } var n3 = { load: function() { throw new Error("This method has been removed in JSZip 3.0, please check the upgrade guide."); }, forEach: function(e4) { var t3, r4, n4; for (t3 in this.files) n4 = this.files[t3], (r4 = t3.slice(this.root.length, t3.length)) && t3.slice(0, this.root.length) === this.root && e4(r4, n4); }, filter: function(r4) { var n4 = []; return this.forEach(function(e4, t3) { r4(e4, t3) && n4.push(t3); }), n4; }, file: function(e4, t3, r4) { if (1 !== arguments.length) return e4 = this.root + e4, s2.call(this, e4, t3, r4), this; if (h2(e4)) { var n4 = e4; return this.filter(function(e5, t4) { return !t4.dir && n4.test(e5); }); } var i4 = this.files[this.root + e4]; return i4 && !i4.dir ? i4 : null; }, folder: function(r4) { if (!r4) return this; if (h2(r4)) return this.filter(function(e5, t4) { return t4.dir && r4.test(e5); }); var e4 = this.root + r4, t3 = b2.call(this, e4), n4 = this.clone(); return n4.root = t3.name, n4; }, remove: function(r4) { r4 = this.root + r4; var e4 = this.files[r4]; if (e4 || ("/" !== r4.slice(-1) && (r4 += "/"), e4 = this.files[r4]), e4 && !e4.dir) delete this.files[r4]; else for (var t3 = this.filter(function(e5, t4) { return t4.name.slice(0, r4.length) === r4; }), n4 = 0; n4 < t3.length; n4++) delete this.files[t3[n4].name]; return this; }, generate: function() { throw new Error("This method has been removed in JSZip 3.0, please check the upgrade guide."); }, generateInternalStream: function(e4) { var t3, r4 = {}; try { if ((r4 = u2.extend(e4 || {}, { streamFiles: false, compression: "STORE", compressionOptions: null, type: "", platform: "DOS", comment: null, mimeType: "application/zip", encodeFileName: i3.utf8encode })).type = r4.type.toLowerCase(), r4.compression = r4.compression.toUpperCase(), "binarystring" === r4.type && (r4.type = "string"), !r4.type) throw new Error("No output type specified."); u2.checkSupport(r4.type), "darwin" !== r4.platform && "freebsd" !== r4.platform && "linux" !== r4.platform && "sunos" !== r4.platform || (r4.platform = "UNIX"), "win32" === r4.platform && (r4.platform = "DOS"); var n4 = r4.comment || this.comment || ""; t3 = o2.generateWorker(this, r4, n4); } catch (e5) { (t3 = new l2("error")).error(e5); } return new a2(t3, r4.type || "string", r4.mimeType); }, generateAsync: function(e4, t3) { return this.generateInternalStream(e4).accumulate(t3); }, generateNodeStream: function(e4, t3) { return (e4 = e4 || {}).type || (e4.type = "nodebuffer"), this.generateInternalStream(e4).toNodejsStream(t3); } }; t2.exports = n3; }, { "./compressedObject": 2, "./defaults": 5, "./generate": 9, "./nodejs/NodejsStreamInputAdapter": 12, "./nodejsUtils": 14, "./stream/GenericWorker": 28, "./stream/StreamHelper": 29, "./utf8": 31, "./utils": 32, "./zipObject": 35 }], 16: [function(e3, t2, r3) { t2.exports = e3("stream"); }, { stream: undefined }], 17: [function(e3, t2, r3) { var n3 = e3("./DataReader"); function i3(e4) { n3.call(this, e4); for (var t3 = 0; t3 < this.data.length; t3++) e4[t3] = 255 & e4[t3]; } e3("../utils").inherits(i3, n3), i3.prototype.byteAt = function(e4) { return this.data[this.zero + e4]; }, i3.prototype.lastIndexOfSignature = function(e4) { for (var t3 = e4.charCodeAt(0), r4 = e4.charCodeAt(1), n4 = e4.charCodeAt(2), i4 = e4.charCodeAt(3), s2 = this.length - 4; 0 <= s2; --s2) if (this.data[s2] === t3 && this.data[s2 + 1] === r4 && this.data[s2 + 2] === n4 && this.data[s2 + 3] === i4) return s2 - this.zero; return -1; }, i3.prototype.readAndCheckSignature = function(e4) { var t3 = e4.charCodeAt(0), r4 = e4.charCodeAt(1), n4 = e4.charCodeAt(2), i4 = e4.charCodeAt(3), s2 = this.readData(4); return t3 === s2[0] && r4 === s2[1] && n4 === s2[2] && i4 === s2[3]; }, i3.prototype.readData = function(e4) { if (this.checkOffset(e4), 0 === e4) return []; var t3 = this.data.slice(this.zero + this.index, this.zero + this.index + e4); return this.index += e4, t3; }, t2.exports = i3; }, { "../utils": 32, "./DataReader": 18 }], 18: [function(e3, t2, r3) { var n3 = e3("../utils"); function i3(e4) { this.data = e4, this.length = e4.length, this.index = 0, this.zero = 0; } i3.prototype = { checkOffset: function(e4) { this.checkIndex(this.index + e4); }, checkIndex: function(e4) { if (this.length < this.zero + e4 || e4 < 0) throw new Error("End of data reached (data length = " + this.length + ", asked index = " + e4 + "). Corrupted zip ?"); }, setIndex: function(e4) { this.checkIndex(e4), this.index = e4; }, skip: function(e4) { this.setIndex(this.index + e4); }, byteAt: function() { }, readInt: function(e4) { var t3, r4 = 0; for (this.checkOffset(e4), t3 = this.index + e4 - 1; t3 >= this.index; t3--) r4 = (r4 << 8) + this.byteAt(t3); return this.index += e4, r4; }, readString: function(e4) { return n3.transformTo("string", this.readData(e4)); }, readData: function() { }, lastIndexOfSignature: function() { }, readAndCheckSignature: function() { }, readDate: function() { var e4 = this.readInt(4); return new Date(Date.UTC(1980 + (e4 >> 25 & 127), (e4 >> 21 & 15) - 1, e4 >> 16 & 31, e4 >> 11 & 31, e4 >> 5 & 63, (31 & e4) << 1)); } }, t2.exports = i3; }, { "../utils": 32 }], 19: [function(e3, t2, r3) { var n3 = e3("./Uint8ArrayReader"); function i3(e4) { n3.call(this, e4); } e3("../utils").inherits(i3, n3), i3.prototype.readData = function(e4) { this.checkOffset(e4); var t3 = this.data.slice(this.zero + this.index, this.zero + this.index + e4); return this.index += e4, t3; }, t2.exports = i3; }, { "../utils": 32, "./Uint8ArrayReader": 21 }], 20: [function(e3, t2, r3) { var n3 = e3("./DataReader"); function i3(e4) { n3.call(this, e4); } e3("../utils").inherits(i3, n3), i3.prototype.byteAt = function(e4) { return this.data.charCodeAt(this.zero + e4); }, i3.prototype.lastIndexOfSignature = function(e4) { return this.data.lastIndexOf(e4) - this.zero; }, i3.prototype.readAndCheckSignature = function(e4) { return e4 === this.readData(4); }, i3.prototype.readData = function(e4) { this.checkOffset(e4); var t3 = this.data.slice(this.zero + this.index, this.zero + this.index + e4); return this.index += e4, t3; }, t2.exports = i3; }, { "../utils": 32, "./DataReader": 18 }], 21: [function(e3, t2, r3) { var n3 = e3("./ArrayReader"); function i3(e4) { n3.call(this, e4); } e3("../utils").inherits(i3, n3), i3.prototype.readData = function(e4) { if (this.checkOffset(e4), 0 === e4) return new Uint8Array(0); var t3 = this.data.subarray(this.zero + this.index, this.zero + this.index + e4); return this.index += e4, t3; }, t2.exports = i3; }, { "../utils": 32, "./ArrayReader": 17 }], 22: [function(e3, t2, r3) { var n3 = e3("../utils"), i3 = e3("../support"), s2 = e3("./ArrayReader"), a2 = e3("./StringReader"), o2 = e3("./NodeBufferReader"), h2 = e3("./Uint8ArrayReader"); t2.exports = function(e4) { var t3 = n3.getTypeOf(e4); return n3.checkSupport(t3), "string" !== t3 || i3.uint8array ? "nodebuffer" === t3 ? new o2(e4) : i3.uint8array ? new h2(n3.transformTo("uint8array", e4)) : new s2(n3.transformTo("array", e4)) : new a2(e4); }; }, { "../support": 30, "../utils": 32, "./ArrayReader": 17, "./NodeBufferReader": 19, "./StringReader": 20, "./Uint8ArrayReader": 21 }], 23: [function(e3, t2, r3) { r3.LOCAL_FILE_HEADER = "PK", r3.CENTRAL_FILE_HEADER = "PK", r3.CENTRAL_DIRECTORY_END = "PK", r3.ZIP64_CENTRAL_DIRECTORY_LOCATOR = "PK\x07", r3.ZIP64_CENTRAL_DIRECTORY_END = "PK", r3.DATA_DESCRIPTOR = "PK\x07\b"; }, {}], 24: [function(e3, t2, r3) { var n3 = e3("./GenericWorker"), i3 = e3("../utils"); function s2(e4) { n3.call(this, "ConvertWorker to " + e4), this.destType = e4; } i3.inherits(s2, n3), s2.prototype.processChunk = function(e4) { this.push({ data: i3.transformTo(this.destType, e4.data), meta: e4.meta }); }, t2.exports = s2; }, { "../utils": 32, "./GenericWorker": 28 }], 25: [function(e3, t2, r3) { var n3 = e3("./GenericWorker"), i3 = e3("../crc32"); function s2() { n3.call(this, "Crc32Probe"), this.withStreamInfo("crc32", 0); } e3("../utils").inherits(s2, n3), s2.prototype.processChunk = function(e4) { this.streamInfo.crc32 = i3(e4.data, this.streamInfo.crc32 || 0), this.push(e4); }, t2.exports = s2; }, { "../crc32": 4, "../utils": 32, "./GenericWorker": 28 }], 26: [function(e3, t2, r3) { var n3 = e3("../utils"), i3 = e3("./GenericWorker"); function s2(e4) { i3.call(this, "DataLengthProbe for " + e4), this.propName = e4, this.withStreamInfo(e4, 0); } n3.inherits(s2, i3), s2.prototype.processChunk = function(e4) { if (e4) { var t3 = this.streamInfo[this.propName] || 0; this.streamInfo[this.propName] = t3 + e4.data.length; } i3.prototype.processChunk.call(this, e4); }, t2.exports = s2; }, { "../utils": 32, "./GenericWorker": 28 }], 27: [function(e3, t2, r3) { var n3 = e3("../utils"), i3 = e3("./GenericWorker"); function s2(e4) { i3.call(this, "DataWorker"); var t3 = this; this.dataIsReady = false, this.index = 0, this.max = 0, this.data = null, this.type = "", this._tickScheduled = false, e4.then(function(e5) { t3.dataIsReady = true, t3.data = e5, t3.max = e5 && e5.length || 0, t3.type = n3.getTypeOf(e5), t3.isPaused || t3._tickAndRepeat(); }, function(e5) { t3.error(e5); }); } n3.inherits(s2, i3), s2.prototype.cleanUp = function() { i3.prototype.cleanUp.call(this), this.data = null; }, s2.prototype.resume = function() { return !!i3.prototype.resume.call(this) && (!this._tickScheduled && this.dataIsReady && (this._tickScheduled = true, n3.delay(this._tickAndRepeat, [], this)), true); }, s2.prototype._tickAndRepeat = function() { this._tickScheduled = false, this.isPaused || this.isFinished || (this._tick(), this.isFinished || (n3.delay(this._tickAndRepeat, [], this), this._tickScheduled = true)); }, s2.prototype._tick = function() { if (this.isPaused || this.isFinished) return false; var e4 = null, t3 = Math.min(this.max, this.index + 16384); if (this.index >= this.max) return this.end(); switch (this.type) { case "string": e4 = this.data.substring(this.index, t3); break; case "uint8array": e4 = this.data.subarray(this.index, t3); break; case "array": case "nodebuffer": e4 = this.data.slice(this.index, t3); } return this.index = t3, this.push({ data: e4, meta: { percent: this.max ? this.index / this.max * 100 : 0 } }); }, t2.exports = s2; }, { "../utils": 32, "./GenericWorker": 28 }], 28: [function(e3, t2, r3) { function n3(e4) { this.name = e4 || "default", this.streamInfo = {}, this.generatedError = null, this.extraStreamInfo = {}, this.isPaused = true, this.isFinished = false, this.isLocked = false, this._listeners = { data: [], end: [], error: [] }, this.previous = null; } n3.prototype = { push: function(e4) { this.emit("data", e4); }, end: function() { if (this.isFinished) return false; this.flush(); try { this.emit("end"), this.cleanUp(), this.isFinished = true; } catch (e4) { this.emit("error", e4); } return true; }, error: function(e4) { return !this.isFinished && (this.isPaused ? this.generatedError = e4 : (this.isFinished = true, this.emit("error", e4), this.previous && this.previous.error(e4), this.cleanUp()), true); }, on: function(e4, t3) { return this._listeners[e4].push(t3), this; }, cleanUp: function() { this.streamInfo = this.generatedError = this.extraStreamInfo = null, this._listeners = []; }, emit: function(e4, t3) { if (this._listeners[e4]) for (var r4 = 0; r4 < this._listeners[e4].length; r4++) this._listeners[e4][r4].call(this, t3); }, pipe: function(e4) { return e4.registerPrevious(this); }, registerPrevious: function(e4) { if (this.isLocked) throw new Error("The stream '" + this + "' has already been used."); this.streamInfo = e4.streamInfo, this.mergeStreamInfo(), this.previous = e4; var t3 = this; return e4.on("data", function(e5) { t3.processChunk(e5); }), e4.on("end", function() { t3.end(); }), e4.on("error", function(e5) { t3.error(e5); }), this; }, pause: function() { return !this.isPaused && !this.isFinished && (this.isPaused = true, this.previous && this.previous.pause(), true); }, resume: function() { if (!this.isPaused || this.isFinished) return false; var e4 = this.isPaused = false; return this.generatedError && (this.error(this.generatedError), e4 = true), this.previous && this.previous.resume(), !e4; }, flush: function() { }, processChunk: function(e4) { this.push(e4); }, withStreamInfo: function(e4, t3) { return this.extraStreamInfo[e4] = t3, this.mergeStreamInfo(), this; }, mergeStreamInfo: function() { for (var e4 in this.extraStreamInfo) Object.prototype.hasOwnProperty.call(this.extraStreamInfo, e4) && (this.streamInfo[e4] = this.extraStreamInfo[e4]); }, lock: function() { if (this.isLocked) throw new Error("The stream '" + this + "' has already been used."); this.isLocked = true, this.previous && this.previous.lock(); }, toString: function() { var e4 = "Worker " + this.name; return this.previous ? this.previous + " -> " + e4 : e4; } }, t2.exports = n3; }, {}], 29: [function(e3, t2, r3) { var h2 = e3("../utils"), i3 = e3("./ConvertWorker"), s2 = e3("./GenericWorker"), u2 = e3("../base64"), n3 = e3("../support"), a2 = e3("../external"), o2 = null; if (n3.nodestream) try { o2 = e3("../nodejs/NodejsStreamOutputAdapter"); } catch (e4) { } function l2(e4, o3) { return new a2.Promise(function(t3, r4) { var n4 = [], i4 = e4._internalType, s3 = e4._outputType, a3 = e4._mimeType; e4.on("data", function(e5, t4) { n4.push(e5), o3 && o3(t4); }).on("error", function(e5) { n4 = [], r4(e5); }).on("end", function() { try { var e5 = function(e6, t4, r5) { switch (e6) { case "blob": return h2.newBlob(h2.transformTo("arraybuffer", t4), r5); case "base64": return u2.encode(t4); default: return h2.transformTo(e6, t4); } }(s3, function(e6, t4) { var r5, n5 = 0, i5 = null, s4 = 0; for (r5 = 0; r5 < t4.length; r5++) s4 += t4[r5].length; switch (e6) { case "string": return t4.join(""); case "array": return Array.prototype.concat.apply([], t4); case "uint8array": for (i5 = new Uint8Array(s4), r5 = 0; r5 < t4.length; r5++) i5.set(t4[r5], n5), n5 += t4[r5].length; return i5; case "nodebuffer": return Buffer.concat(t4); default: throw new Error("concat : unsupported type '" + e6 + "'"); } }(i4, n4), a3); t3(e5); } catch (e6) { r4(e6); } n4 = []; }).resume(); }); } function f2(e4, t3, r4) { var n4 = t3; switch (t3) { case "blob": case "arraybuffer": n4 = "uint8array"; break; case "base64": n4 = "string"; } try { this._internalType = n4, this._outputType = t3, this._mimeType = r4, h2.checkSupport(n4), this._worker = e4.pipe(new i3(n4)), e4.lock(); } catch (e5) { this._worker = new s2("error"), this._worker.error(e5); } } f2.prototype = { accumulate: function(e4) { return l2(this, e4); }, on: function(e4, t3) { var r4 = this; return "data" === e4 ? this._worker.on(e4, function(e5) { t3.call(r4, e5.data, e5.meta); }) : this._worker.on(e4, function() { h2.delay(t3, arguments, r4); }), this; }, resume: function() { return h2.delay(this._worker.resume, [], this._worker), this; }, pause: function() { return this._worker.pause(), this; }, toNodejsStream: function(e4) { if (h2.checkSupport("nodestream"), "nodebuffer" !== this._outputType) throw new Error(this._outputType + " is not supported by this method"); return new o2(this, { objectMode: "nodebuffer" !== this._outputType }, e4); } }, t2.exports = f2; }, { "../base64": 1, "../external": 6, "../nodejs/NodejsStreamOutputAdapter": 13, "../support": 30, "../utils": 32, "./ConvertWorker": 24, "./GenericWorker": 28 }], 30: [function(e3, t2, r3) { if (r3.base64 = true, r3.array = true, r3.string = true, r3.arraybuffer = "undefined" != typeof ArrayBuffer && "undefined" != typeof Uint8Array, r3.nodebuffer = "undefined" != typeof Buffer, r3.uint8array = "undefined" != typeof Uint8Array, "undefined" == typeof ArrayBuffer) r3.blob = false; else { var n3 = new ArrayBuffer(0); try { r3.blob = 0 === new Blob([n3], { type: "application/zip" }).size; } catch (e4) { try { var i3 = new (self.BlobBuilder || self.WebKitBlobBuilder || self.MozBlobBuilder || self.MSBlobBuilder)(); i3.append(n3), r3.blob = 0 === i3.getBlob("application/zip").size; } catch (e5) { r3.blob = false; } } } try { r3.nodestream = !!e3("readable-stream").Readable; } catch (e4) { r3.nodestream = false; } }, { "readable-stream": 16 }], 31: [function(e3, t2, s2) { for (var o2 = e3("./utils"), h2 = e3("./support"), r3 = e3("./nodejsUtils"), n3 = e3("./stream/GenericWorker"), u2 = new Array(256), i3 = 0; i3 < 256; i3++) u2[i3] = 252 <= i3 ? 6 : 248 <= i3 ? 5 : 240 <= i3 ? 4 : 224 <= i3 ? 3 : 192 <= i3 ? 2 : 1; u2[254] = u2[254] = 1; function a2() { n3.call(this, "utf-8 decode"), this.leftOver = null; } function l2() { n3.call(this, "utf-8 encode"); } s2.utf8encode = function(e4) { return h2.nodebuffer ? r3.newBufferFrom(e4, "utf-8") : function(e5) { var t3, r4, n4, i4, s3, a3 = e5.length, o3 = 0; for (i4 = 0; i4 < a3; i4++) 55296 == (64512 & (r4 = e5.charCodeAt(i4))) && i4 + 1 < a3 && 56320 == (64512 & (n4 = e5.charCodeAt(i4 + 1))) && (r4 = 65536 + (r4 - 55296 << 10) + (n4 - 56320), i4++), o3 += r4 < 128 ? 1 : r4 < 2048 ? 2 : r4 < 65536 ? 3 : 4; for (t3 = h2.uint8array ? new Uint8Array(o3) : new Array(o3), i4 = s3 = 0; s3 < o3; i4++) 55296 == (64512 & (r4 = e5.charCodeAt(i4))) && i4 + 1 < a3 && 56320 == (64512 & (n4 = e5.charCodeAt(i4 + 1))) && (r4 = 65536 + (r4 - 55296 << 10) + (n4 - 56320), i4++), r4 < 128 ? t3[s3++] = r4 : (r4 < 2048 ? t3[s3++] = 192 | r4 >>> 6 : (r4 < 65536 ? t3[s3++] = 224 | r4 >>> 12 : (t3[s3++] = 240 | r4 >>> 18, t3[s3++] = 128 | r4 >>> 12 & 63), t3[s3++] = 128 | r4 >>> 6 & 63), t3[s3++] = 128 | 63 & r4); return t3; }(e4); }, s2.utf8decode = function(e4) { return h2.nodebuffer ? o2.transformTo("nodebuffer", e4).toString("utf-8") : function(e5) { var t3, r4, n4, i4, s3 = e5.length, a3 = new Array(2 * s3); for (t3 = r4 = 0; t3 < s3; ) if ((n4 = e5[t3++]) < 128) a3[r4++] = n4; else if (4 < (i4 = u2[n4])) a3[r4++] = 65533, t3 += i4 - 1; else { for (n4 &= 2 === i4 ? 31 : 3 === i4 ? 15 : 7; 1 < i4 && t3 < s3; ) n4 = n4 << 6 | 63 & e5[t3++], i4--; 1 < i4 ? a3[r4++] = 65533 : n4 < 65536 ? a3[r4++] = n4 : (n4 -= 65536, a3[r4++] = 55296 | n4 >> 10 & 1023, a3[r4++] = 56320 | 1023 & n4); } return a3.length !== r4 && (a3.subarray ? a3 = a3.subarray(0, r4) : a3.length = r4), o2.applyFromCharCode(a3); }(e4 = o2.transformTo(h2.uint8array ? "uint8array" : "array", e4)); }, o2.inherits(a2, n3), a2.prototype.processChunk = function(e4) { var t3 = o2.transformTo(h2.uint8array ? "uint8array" : "array", e4.data); if (this.leftOver && this.leftOver.length) { if (h2.uint8array) { var r4 = t3; (t3 = new Uint8Array(r4.length + this.leftOver.length)).set(this.leftOver, 0), t3.set(r4, this.leftOver.length); } else t3 = this.leftOver.concat(t3); this.leftOver = null; } var n4 = function(e5, t4) { var r5; for ((t4 = t4 || e5.length) > e5.length && (t4 = e5.length), r5 = t4 - 1; 0 <= r5 && 128 == (192 & e5[r5]); ) r5--; return r5 < 0 ? t4 : 0 === r5 ? t4 : r5 + u2[e5[r5]] > t4 ? r5 : t4; }(t3), i4 = t3; n4 !== t3.length && (h2.uint8array ? (i4 = t3.subarray(0, n4), this.leftOver = t3.subarray(n4, t3.length)) : (i4 = t3.slice(0, n4), this.leftOver = t3.slice(n4, t3.length))), this.push({ data: s2.utf8decode(i4), meta: e4.meta }); }, a2.prototype.flush = function() { this.leftOver && this.leftOver.length && (this.push({ data: s2.utf8decode(this.leftOver), meta: {} }), this.leftOver = null); }, s2.Utf8DecodeWorker = a2, o2.inherits(l2, n3), l2.prototype.processChunk = function(e4) { this.push({ data: s2.utf8encode(e4.data), meta: e4.meta }); }, s2.Utf8EncodeWorker = l2; }, { "./nodejsUtils": 14, "./stream/GenericWorker": 28, "./support": 30, "./utils": 32 }], 32: [function(e3, t2, a2) { var o2 = e3("./support"), h2 = e3("./base64"), r3 = e3("./nodejsUtils"), u2 = e3("./external"); function n3(e4) { return e4; } function l2(e4, t3) { for (var r4 = 0; r4 < e4.length; ++r4) t3[r4] = 255 & e4.charCodeAt(r4); return t3; } e3("setimmediate"), a2.newBlob = function(t3, r4) { a2.checkSupport("blob"); try { return new Blob([t3], { type: r4 }); } catch (e4) { try { var n4 = new (self.BlobBuilder || self.WebKitBlobBuilder || self.MozBlobBuilder || self.MSBlobBuilder)(); return n4.append(t3), n4.getBlob(r4); } catch (e5) { throw new Error("Bug : can't construct the Blob."); } } }; var i3 = { stringifyByChunk: function(e4, t3, r4) { var n4 = [], i4 = 0, s3 = e4.length; if (s3 <= r4) return String.fromCharCode.apply(null, e4); for (; i4 < s3; ) "array" === t3 || "nodebuffer" === t3 ? n4.push(String.fromCharCode.apply(null, e4.slice(i4, Math.min(i4 + r4, s3)))) : n4.push(String.fromCharCode.apply(null, e4.subarray(i4, Math.min(i4 + r4, s3)))), i4 += r4; return n4.join(""); }, stringifyByChar: function(e4) { for (var t3 = "", r4 = 0; r4 < e4.length; r4++) t3 += String.fromCharCode(e4[r4]); return t3; }, applyCanBeUsed: { uint8array: function() { try { return o2.uint8array && 1 === String.fromCharCode.apply(null, new Uint8Array(1)).length; } catch (e4) { return false; } }(), nodebuffer: function() { try { return o2.nodebuffer && 1 === String.fromCharCode.apply(null, r3.allocBuffer(1)).length; } catch (e4) { return false; } }() } }; function s2(e4) { var t3 = 65536, r4 = a2.getTypeOf(e4), n4 = true; if ("uint8array" === r4 ? n4 = i3.applyCanBeUsed.uint8array : "nodebuffer" === r4 && (n4 = i3.applyCanBeUsed.nodebuffer), n4) for (; 1 < t3; ) try { return i3.stringifyByChunk(e4, r4, t3); } catch (e5) { t3 = Math.floor(t3 / 2); } return i3.stringifyByChar(e4); } function f2(e4, t3) { for (var r4 = 0; r4 < e4.length; r4++) t3[r4] = e4[r4]; return t3; } a2.applyFromCharCode = s2; var c3 = {}; c3.string = { string: n3, array: function(e4) { return l2(e4, new Array(e4.length)); }, arraybuffer: function(e4) { return c3.string.uint8array(e4).buffer; }, uint8array: function(e4) { return l2(e4, new Uint8Array(e4.length)); }, nodebuffer: function(e4) { return l2(e4, r3.allocBuffer(e4.length)); } }, c3.array = { string: s2, array: n3, arraybuffer: function(e4) { return new Uint8Array(e4).buffer; }, uint8array: function(e4) { return new Uint8Array(e4); }, nodebuffer: function(e4) { return r3.newBufferFrom(e4); } }, c3.arraybuffer = { string: function(e4) { return s2(new Uint8Array(e4)); }, array: function(e4) { return f2(new Uint8Array(e4), new Array(e4.byteLength)); }, arraybuffer: n3, uint8array: function(e4) { return new Uint8Array(e4); }, nodebuffer: function(e4) { return r3.newBufferFrom(new Uint8Array(e4)); } }, c3.uint8array = { string: s2, array: function(e4) { return f2(e4, new Array(e4.length)); }, arraybuffer: function(e4) { return e4.buffer; }, uint8array: n3, nodebuffer: function(e4) { return r3.newBufferFrom(e4); } }, c3.nodebuffer = { string: s2, array: function(e4) { return f2(e4, new Array(e4.length)); }, arraybuffer: function(e4) { return c3.nodebuffer.uint8array(e4).buffer; }, uint8array: function(e4) { return f2(e4, new Uint8Array(e4.length)); }, nodebuffer: n3 }, a2.transformTo = function(e4, t3) { if (t3 = t3 || "", !e4) return t3; a2.checkSupport(e4); var r4 = a2.getTypeOf(t3); return c3[r4][e4](t3); }, a2.resolve = function(e4) { for (var t3 = e4.split("/"), r4 = [], n4 = 0; n4 < t3.length; n4++) { var i4 = t3[n4]; "." === i4 || "" === i4 && 0 !== n4 && n4 !== t3.length - 1 || (".." === i4 ? r4.pop() : r4.push(i4)); } return r4.join("/"); }, a2.getTypeOf = function(e4) { return "string" == typeof e4 ? "string" : "[object Array]" === Object.prototype.toString.call(e4) ? "array" : o2.nodebuffer && r3.isBuffer(e4) ? "nodebuffer" : o2.uint8array && e4 instanceof Uint8Array ? "uint8array" : o2.arraybuffer && e4 instanceof ArrayBuffer ? "arraybuffer" : undefined; }, a2.checkSupport = function(e4) { if (!o2[e4.toLowerCase()]) throw new Error(e4 + " is not supported by this platform"); }, a2.MAX_VALUE_16BITS = 65535, a2.MAX_VALUE_32BITS = -1, a2.pretty = function(e4) { var t3, r4, n4 = ""; for (r4 = 0; r4 < (e4 || "").length; r4++) n4 += "\\x" + ((t3 = e4.charCodeAt(r4)) < 16 ? "0" : "") + t3.toString(16).toUpperCase(); return n4; }, a2.delay = function(e4, t3, r4) { setImmediate(function() { e4.apply(r4 || null, t3 || []); }); }, a2.inherits = function(e4, t3) { function r4() { } r4.prototype = t3.prototype, e4.prototype = new r4(); }, a2.extend = function() { var e4, t3, r4 = {}; for (e4 = 0; e4 < arguments.length; e4++) for (t3 in arguments[e4]) Object.prototype.hasOwnProperty.call(arguments[e4], t3) && undefined === r4[t3] && (r4[t3] = arguments[e4][t3]); return r4; }, a2.prepareContent = function(r4, e4, n4, i4, s3) { return u2.Promise.resolve(e4).then(function(n5) { return o2.blob && (n5 instanceof Blob || -1 !== ["[object File]", "[object Blob]"].indexOf(Object.prototype.toString.call(n5))) && "undefined" != typeof FileReader ? new u2.Promise(function(t3, r5) { var e5 = new FileReader(); e5.onload = function(e6) { t3(e6.target.result); }, e5.onerror = function(e6) { r5(e6.target.error); }, e5.readAsArrayBuffer(n5); }) : n5; }).then(function(e5) { var t3 = a2.getTypeOf(e5); return t3 ? ("arraybuffer" === t3 ? e5 = a2.transformTo("uint8array", e5) : "string" === t3 && (s3 ? e5 = h2.decode(e5) : n4 && true !== i4 && (e5 = function(e6) { return l2(e6, o2.uint8array ? new Uint8Array(e6.length) : new Array(e6.length)); }(e5))), e5) : u2.Promise.reject(new Error("Can't read the data of '" + r4 + "'. Is it in a supported JavaScript type (String, Blob, ArrayBuffer, etc) ?")); }); }; }, { "./base64": 1, "./external": 6, "./nodejsUtils": 14, "./support": 30, setimmediate: 54 }], 33: [function(e3, t2, r3) { var n3 = e3("./reader/readerFor"), i3 = e3("./utils"), s2 = e3("./signature"), a2 = e3("./zipEntry"), o2 = e3("./support"); function h2(e4) { this.files = [], this.loadOptions = e4; } h2.prototype = { checkSignature: function(e4) { if (!this.reader.readAndCheckSignature(e4)) { this.reader.index -= 4; var t3 = this.reader.readString(4); throw new Error("Corrupted zip or bug: unexpected signature (" + i3.pretty(t3) + ", expected " + i3.pretty(e4) + ")"); } }, isSignature: function(e4, t3) { var r4 = this.reader.index; this.reader.setIndex(e4); var n4 = this.reader.readString(4) === t3; return this.reader.setIndex(r4), n4; }, readBlockEndOfCentral: function() { this.diskNumber = this.reader.readInt(2), this.diskWithCentralDirStart = this.reader.readInt(2), this.centralDirRecordsOnThisDisk = this.reader.readInt(2), this.centralDirRecords = this.reader.readInt(2), this.centralDirSize = this.reader.readInt(4), this.centralDirOffset = this.reader.readInt(4), this.zipCommentLength = this.reader.readInt(2); var e4 = this.reader.readData(this.zipCommentLength), t3 = o2.uint8array ? "uint8array" : "array", r4 = i3.transformTo(t3, e4); this.zipComment = this.loadOptions.decodeFileName(r4); }, readBlockZip64EndOfCentral: function() { this.zip64EndOfCentralSize = this.reader.readInt(8), this.reader.skip(4), this.diskNumber = this.reader.readInt(4), this.diskWithCentralDirStart = this.reader.readInt(4), this.centralDirRecordsOnThisDisk = this.reader.readInt(8), this.centralDirRecords = this.reader.readInt(8), this.centralDirSize = this.reader.readInt(8), this.centralDirOffset = this.reader.readInt(8), this.zip64ExtensibleData = {}; for (var e4, t3, r4, n4 = this.zip64EndOfCentralSize - 44; 0 < n4; ) e4 = this.reader.readInt(2), t3 = this.reader.readInt(4), r4 = this.reader.readData(t3), this.zip64ExtensibleData[e4] = { id: e4, length: t3, value: r4 }; }, readBlockZip64EndOfCentralLocator: function() { if (this.diskWithZip64CentralDirStart = this.reader.readInt(4), this.relativeOffsetEndOfZip64CentralDir = this.reader.readInt(8), this.disksCount = this.reader.readInt(4), 1 < this.disksCount) throw new Error("Multi-volumes zip are not supported"); }, readLocalFiles: function() { var e4, t3; for (e4 = 0; e4 < this.files.length; e4++) t3 = this.files[e4], this.reader.setIndex(t3.localHeaderOffset), this.checkSignature(s2.LOCAL_FILE_HEADER), t3.readLocalPart(this.reader), t3.handleUTF8(), t3.processAttributes(); }, readCentralDir: function() { var e4; for (this.reader.setIndex(this.centralDirOffset); this.reader.readAndCheckSignature(s2.CENTRAL_FILE_HEADER); ) (e4 = new a2({ zip64: this.zip64 }, this.loadOptions)).readCentralPart(this.reader), this.files.push(e4); if (this.centralDirRecords !== this.files.length && 0 !== this.centralDirRecords && 0 === this.files.length) throw new Error("Corrupted zip or bug: expected " + this.centralDirRecords + " records in central dir, got " + this.files.length); }, readEndOfCentral: function() { var e4 = this.reader.lastIndexOfSignature(s2.CENTRAL_DIRECTORY_END); if (e4 < 0) throw !this.isSignature(0, s2.LOCAL_FILE_HEADER) ? new Error("Can't find end of central directory : is this a zip file ? If it is, see https://stuk.github.io/jszip/documentation/howto/read_zip.html") : new Error("Corrupted zip: can't find end of central directory"); this.reader.setIndex(e4); var t3 = e4; if (this.checkSignature(s2.CENTRAL_DIRECTORY_END), this.readBlockEndOfCentral(), this.diskNumber === i3.MAX_VALUE_16BITS || this.diskWithCentralDirStart === i3.MAX_VALUE_16BITS || this.centralDirRecordsOnThisDisk === i3.MAX_VALUE_16BITS || this.centralDirRecords === i3.MAX_VALUE_16BITS || this.centralDirSize === i3.MAX_VALUE_32BITS || this.centralDirOffset === i3.MAX_VALUE_32BITS) { if (this.zip64 = true, (e4 = this.reader.lastIndexOfSignature(s2.ZIP64_CENTRAL_DIRECTORY_LOCATOR)) < 0) throw new Error("Corrupted zip: can't find the ZIP64 end of central directory locator"); if (this.reader.setIndex(e4), this.checkSignature(s2.ZIP64_CENTRAL_DIRECTORY_LOCATOR), this.readBlockZip64EndOfCentralLocator(), !this.isSignature(this.relativeOffsetEndOfZip64CentralDir, s2.ZIP64_CENTRAL_DIRECTORY_END) && (this.relativeOffsetEndOfZip64CentralDir = this.reader.lastIndexOfSignature(s2.ZIP64_CENTRAL_DIRECTORY_END), this.relativeOffsetEndOfZip64CentralDir < 0)) throw new Error("Corrupted zip: can't find the ZIP64 end of central directory"); this.reader.setIndex(this.relativeOffsetEndOfZip64CentralDir), this.checkSignature(s2.ZIP64_CENTRAL_DIRECTORY_END), this.readBlockZip64EndOfCentral(); } var r4 = this.centralDirOffset + this.centralDirSize; this.zip64 && (r4 += 20, r4 += 12 + this.zip64EndOfCentralSize); var n4 = t3 - r4; if (0 < n4) this.isSignature(t3, s2.CENTRAL_FILE_HEADER) || (this.reader.zero = n4); else if (n4 < 0) throw new Error("Corrupted zip: missing " + Math.abs(n4) + " bytes."); }, prepareReader: function(e4) { this.reader = n3(e4); }, load: function(e4) { this.prepareReader(e4), this.readEndOfCentral(), this.readCentralDir(), this.readLocalFiles(); } }, t2.exports = h2; }, { "./reader/readerFor": 22, "./signature": 23, "./support": 30, "./utils": 32, "./zipEntry": 34 }], 34: [function(e3, t2, r3) { var n3 = e3("./reader/readerFor"), s2 = e3("./utils"), i3 = e3("./compressedObject"), a2 = e3("./crc32"), o2 = e3("./utf8"), h2 = e3("./compressions"), u2 = e3("./support"); function l2(e4, t3) { this.options = e4, this.loadOptions = t3; } l2.prototype = { isEncrypted: function() { return 1 == (1 & this.bitFlag); }, useUTF8: function() { return 2048 == (2048 & this.bitFlag); }, readLocalPart: function(e4) { var t3, r4; if (e4.skip(22), this.fileNameLength = e4.readInt(2), r4 = e4.readInt(2), this.fileName = e4.readData(this.fileNameLength), e4.skip(r4), -1 === this.compressedSize || -1 === this.uncompressedSize) throw new Error("Bug or corrupted zip : didn't get enough information from the central directory (compressedSize === -1 || uncompressedSize === -1)"); if (null === (t3 = function(e5) { for (var t4 in h2) if (Object.prototype.hasOwnProperty.call(h2, t4) && h2[t4].magic === e5) return h2[t4]; return null; }(this.compressionMethod))) throw new Error("Corrupted zip : compression " + s2.pretty(this.compressionMethod) + " unknown (inner file : " + s2.transformTo("string", this.fileName) + ")"); this.decompressed = new i3(this.compressedSize, this.uncompressedSize, this.crc32, t3, e4.readData(this.compressedSize)); }, readCentralPart: function(e4) { this.versionMadeBy = e4.readInt(2), e4.skip(2), this.bitFlag = e4.readInt(2), this.compressionMethod = e4.readString(2), this.date = e4.readDate(), this.crc32 = e4.readInt(4), this.compressedSize = e4.readInt(4), this.uncompressedSize = e4.readInt(4); var t3 = e4.readInt(2); if (this.extraFieldsLength = e4.readInt(2), this.fileCommentLength = e4.readInt(2), this.diskNumberStart = e4.readInt(2), this.internalFileAttributes = e4.readInt(2), this.externalFileAttributes = e4.readInt(4), this.localHeaderOffset = e4.readInt(4), this.isEncrypted()) throw new Error("Encrypted zip are not supported"); e4.skip(t3), this.readExtraFields(e4), this.parseZIP64ExtraField(e4), this.fileComment = e4.readData(this.fileCommentLength); }, processAttributes: function() { this.unixPermissions = null, this.dosPermissions = null; var e4 = this.versionMadeBy >> 8; this.dir = !!(16 & this.externalFileAttributes), 0 == e4 && (this.dosPermissions = 63 & this.externalFileAttributes), 3 == e4 && (this.unixPermissions = this.externalFileAttributes >> 16 & 65535), this.dir || "/" !== this.fileNameStr.slice(-1) || (this.dir = true); }, parseZIP64ExtraField: function() { if (this.extraFields[1]) { var e4 = n3(this.extraFields[1].value); this.uncompressedSize === s2.MAX_VALUE_32BITS && (this.uncompressedSize = e4.readInt(8)), this.compressedSize === s2.MAX_VALUE_32BITS && (this.compressedSize = e4.readInt(8)), this.localHeaderOffset === s2.MAX_VALUE_32BITS && (this.localHeaderOffset = e4.readInt(8)), this.diskNumberStart === s2.MAX_VALUE_32BITS && (this.diskNumberStart = e4.readInt(4)); } }, readExtraFields: function(e4) { var t3, r4, n4, i4 = e4.index + this.extraFieldsLength; for (this.extraFields || (this.extraFields = {}); e4.index + 4 < i4; ) t3 = e4.readInt(2), r4 = e4.readInt(2), n4 = e4.readData(r4), this.extraFields[t3] = { id: t3, length: r4, value: n4 }; e4.setIndex(i4); }, handleUTF8: function() { var e4 = u2.uint8array ? "uint8array" : "array"; if (this.useUTF8()) this.fileNameStr = o2.utf8decode(this.fileName), this.fileCommentStr = o2.utf8decode(this.fileComment); else { var t3 = this.findExtraFieldUnicodePath(); if (null !== t3) this.fileNameStr = t3; else { var r4 = s2.transformTo(e4, this.fileName); this.fileNameStr = this.loadOptions.decodeFileName(r4); } var n4 = this.findExtraFieldUnicodeComment(); if (null !== n4) this.fileCommentStr = n4; else { var i4 = s2.transformTo(e4, this.fileComment); this.fileCommentStr = this.loadOptions.decodeFileName(i4); } } }, findExtraFieldUnicodePath: function() { var e4 = this.extraFields[28789]; if (e4) { var t3 = n3(e4.value); return 1 !== t3.readInt(1) ? null : a2(this.fileName) !== t3.readInt(4) ? null : o2.utf8decode(t3.readData(e4.length - 5)); } return null; }, findExtraFieldUnicodeComment: function() { var e4 = this.extraFields[25461]; if (e4) { var t3 = n3(e4.value); return 1 !== t3.readInt(1) ? null : a2(this.fileComment) !== t3.readInt(4) ? null : o2.utf8decode(t3.readData(e4.length - 5)); } return null; } }, t2.exports = l2; }, { "./compressedObject": 2, "./compressions": 3, "./crc32": 4, "./reader/readerFor": 22, "./support": 30, "./utf8": 31, "./utils": 32 }], 35: [function(e3, t2, r3) { function n3(e4, t3, r4) { this.name = e4, this.dir = r4.dir, this.date = r4.date, this.comment = r4.comment, this.unixPermissions = r4.unixPermissions, this.dosPermissions = r4.dosPermissions, this._data = t3, this._dataBinary = r4.binary, this.options = { compression: r4.compression, compressionOptions: r4.compressionOptions }; } var s2 = e3("./stream/StreamHelper"), i3 = e3("./stream/DataWorker"), a2 = e3("./utf8"), o2 = e3("./compressedObject"), h2 = e3("./stream/GenericWorker"); n3.prototype = { internalStream: function(e4) { var t3 = null, r4 = "string"; try { if (!e4) throw new Error("No output type specified."); var n4 = "string" === (r4 = e4.toLowerCase()) || "text" === r4; "binarystring" !== r4 && "text" !== r4 || (r4 = "string"), t3 = this._decompressWorker(); var i4 = !this._dataBinary; i4 && !n4 && (t3 = t3.pipe(new a2.Utf8EncodeWorker())), !i4 && n4 && (t3 = t3.pipe(new a2.Utf8DecodeWorker())); } catch (e5) { (t3 = new h2("error")).error(e5); } return new s2(t3, r4, ""); }, async: function(e4, t3) { return this.internalStream(e4).accumulate(t3); }, nodeStream: function(e4, t3) { return this.internalStream(e4 || "nodebuffer").toNodejsStream(t3); }, _compressWorker: function(e4, t3) { if (this._data instanceof o2 && this._data.compression.magic === e4.magic) return this._data.getCompressedWorker(); var r4 = this._decompressWorker(); return this._dataBinary || (r4 = r4.pipe(new a2.Utf8EncodeWorker())), o2.createWorkerFrom(r4, e4, t3); }, _decompressWorker: function() { return this._data instanceof o2 ? this._data.getContentWorker() : this._data instanceof h2 ? this._data : new i3(this._data); } }; for (var u2 = ["asText", "asBinary", "asNodeBuffer", "asUint8Array", "asArrayBuffer"], l2 = function() { throw new Error("This method has been removed in JSZip 3.0, please check the upgrade guide."); }, f2 = 0; f2 < u2.length; f2++) n3.prototype[u2[f2]] = l2; t2.exports = n3; }, { "./compressedObject": 2, "./stream/DataWorker": 27, "./stream/GenericWorker": 28, "./stream/StreamHelper": 29, "./utf8": 31 }], 36: [function(e3, l2, t2) { (function(t3) { var r3, n3, e4 = t3.MutationObserver || t3.WebKitMutationObserver; if (e4) { var i3 = 0, s2 = new e4(u2), a2 = t3.document.createTextNode(""); s2.observe(a2, { characterData: true }), r3 = function() { a2.data = i3 = ++i3 % 2; }; } else if (t3.setImmediate || undefined === t3.MessageChannel) r3 = "document" in t3 && "onreadystatechange" in t3.document.createElement("script") ? function() { var e5 = t3.document.createElement("script"); e5.onreadystatechange = function() { u2(), e5.onreadystatechange = null, e5.parentNode.removeChild(e5), e5 = null; }, t3.document.documentElement.appendChild(e5); } : function() { setTimeout(u2, 0); }; else { var o2 = new t3.MessageChannel(); o2.port1.onmessage = u2, r3 = function() { o2.port2.postMessage(0); }; } var h2 = []; function u2() { var e5, t4; n3 = true; for (var r4 = h2.length; r4; ) { for (t4 = h2, h2 = [], e5 = -1; ++e5 < r4; ) t4[e5](); r4 = h2.length; } n3 = false; } l2.exports = function(e5) { 1 !== h2.push(e5) || n3 || r3(); }; }).call(this, "undefined" != typeof commonjsGlobal ? commonjsGlobal : "undefined" != typeof self ? self : "undefined" != typeof window ? window : {}); }, {}], 37: [function(e3, t2, r3) { var i3 = e3("immediate"); function u2() { } var l2 = {}, s2 = ["REJECTED"], a2 = ["FULFILLED"], n3 = ["PENDING"]; function o2(e4) { if ("function" != typeof e4) throw new TypeError("resolver must be a function"); this.state = n3, this.queue = [], this.outcome = undefined, e4 !== u2 && d2(this, e4); } function h2(e4, t3, r4) { this.promise = e4, "function" == typeof t3 && (this.onFulfilled = t3, this.callFulfilled = this.otherCallFulfilled), "function" == typeof r4 && (this.onRejected = r4, this.callRejected = this.otherCallRejected); } function f2(t3, r4, n4) { i3(function() { var e4; try { e4 = r4(n4); } catch (e5) { return l2.reject(t3, e5); } e4 === t3 ? l2.reject(t3, new TypeError("Cannot resolve promise with itself")) : l2.resolve(t3, e4); }); } function c3(e4) { var t3 = e4 && e4.then; if (e4 && ("object" == typeof e4 || "function" == typeof e4) && "function" == typeof t3) return function() { t3.apply(e4, arguments); }; } function d2(t3, e4) { var r4 = false; function n4(e5) { r4 || (r4 = true, l2.reject(t3, e5)); } function i4(e5) { r4 || (r4 = true, l2.resolve(t3, e5)); } var s3 = p2(function() { e4(i4, n4); }); "error" === s3.status && n4(s3.value); } function p2(e4, t3) { var r4 = {}; try { r4.value = e4(t3), r4.status = "success"; } catch (e5) { r4.status = "error", r4.value = e5; } return r4; } (t2.exports = o2).prototype.finally = function(t3) { if ("function" != typeof t3) return this; var r4 = this.constructor; return this.then(function(e4) { return r4.resolve(t3()).then(function() { return e4; }); }, function(e4) { return r4.resolve(t3()).then(function() { throw e4; }); }); }, o2.prototype.catch = function(e4) { return this.then(null, e4); }, o2.prototype.then = function(e4, t3) { if ("function" != typeof e4 && this.state === a2 || "function" != typeof t3 && this.state === s2) return this; var r4 = new this.constructor(u2); this.state !== n3 ? f2(r4, this.state === a2 ? e4 : t3, this.outcome) : this.queue.push(new h2(r4, e4, t3)); return r4; }, h2.prototype.callFulfilled = function(e4) { l2.resolve(this.promise, e4); }, h2.prototype.otherCallFulfilled = function(e4) { f2(this.promise, this.onFulfilled, e4); }, h2.prototype.callRejected = function(e4) { l2.reject(this.promise, e4); }, h2.prototype.otherCallRejected = function(e4) { f2(this.promise, this.onRejected, e4); }, l2.resolve = function(e4, t3) { var r4 = p2(c3, t3); if ("error" === r4.status) return l2.reject(e4, r4.value); var n4 = r4.value; if (n4) d2(e4, n4); else { e4.state = a2, e4.outcome = t3; for (var i4 = -1, s3 = e4.queue.length; ++i4 < s3; ) e4.queue[i4].callFulfilled(t3); } return e4; }, l2.reject = function(e4, t3) { e4.state = s2, e4.outcome = t3; for (var r4 = -1, n4 = e4.queue.length; ++r4 < n4; ) e4.queue[r4].callRejected(t3); return e4; }, o2.resolve = function(e4) { if (e4 instanceof this) return e4; return l2.resolve(new this(u2), e4); }, o2.reject = function(e4) { var t3 = new this(u2); return l2.reject(t3, e4); }, o2.all = function(e4) { var r4 = this; if ("[object Array]" !== Object.prototype.toString.call(e4)) return this.reject(new TypeError("must be an array")); var n4 = e4.length, i4 = false; if (!n4) return this.resolve([]); var s3 = new Array(n4), a3 = 0, t3 = -1, o3 = new this(u2); for (; ++t3 < n4; ) h3(e4[t3], t3); return o3; function h3(e5, t4) { r4.resolve(e5).then(function(e6) { s3[t4] = e6, ++a3 !== n4 || i4 || (i4 = true, l2.resolve(o3, s3)); }, function(e6) { i4 || (i4 = true, l2.reject(o3, e6)); }); } }, o2.race = function(e4) { var t3 = this; if ("[object Array]" !== Object.prototype.toString.call(e4)) return this.reject(new TypeError("must be an array")); var r4 = e4.length, n4 = false; if (!r4) return this.resolve([]); var i4 = -1, s3 = new this(u2); for (; ++i4 < r4; ) a3 = e4[i4], t3.resolve(a3).then(function(e5) { n4 || (n4 = true, l2.resolve(s3, e5)); }, function(e5) { n4 || (n4 = true, l2.reject(s3, e5)); }); var a3; return s3; }; }, { immediate: 36 }], 38: [function(e3, t2, r3) { var n3 = {}; (0, e3("./lib/utils/common").assign)(n3, e3("./lib/deflate"), e3("./lib/inflate"), e3("./lib/zlib/constants")), t2.exports = n3; }, { "./lib/deflate": 39, "./lib/inflate": 40, "./lib/utils/common": 41, "./lib/zlib/constants": 44 }], 39: [function(e3, t2, r3) { var a2 = e3("./zlib/deflate"), o2 = e3("./utils/common"), h2 = e3("./utils/strings"), i3 = e3("./zlib/messages"), s2 = e3("./zlib/zstream"), u2 = Object.prototype.toString, l2 = 0, f2 = -1, c3 = 0, d2 = 8; function p2(e4) { if (!(this instanceof p2)) return new p2(e4); this.options = o2.assign({ level: f2, method: d2, chunkSize: 16384, windowBits: 15, memLevel: 8, strategy: c3, to: "" }, e4 || {}); var t3 = this.options; t3.raw && 0 < t3.windowBits ? t3.windowBits = -t3.windowBits : t3.gzip && 0 < t3.windowBits && t3.windowBits < 16 && (t3.windowBits += 16), this.err = 0, this.msg = "", this.ended = false, this.chunks = [], this.strm = new s2(), this.strm.avail_out = 0; var r4 = a2.deflateInit2(this.strm, t3.level, t3.method, t3.windowBits, t3.memLevel, t3.strategy); if (r4 !== l2) throw new Error(i3[r4]); if (t3.header && a2.deflateSetHeader(this.strm, t3.header), t3.dictionary) { var n4; if (n4 = "string" == typeof t3.dictionary ? h2.string2buf(t3.dictionary) : "[object ArrayBuffer]" === u2.call(t3.dictionary) ? new Uint8Array(t3.dictionary) : t3.dictionary, (r4 = a2.deflateSetDictionary(this.strm, n4)) !== l2) throw new Error(i3[r4]); this._dict_set = true; } } function n3(e4, t3) { var r4 = new p2(t3); if (r4.push(e4, true), r4.err) throw r4.msg || i3[r4.err]; return r4.result; } p2.prototype.push = function(e4, t3) { var r4, n4, i4 = this.strm, s3 = this.options.chunkSize; if (this.ended) return false; n4 = t3 === ~~t3 ? t3 : true === t3 ? 4 : 0, "string" == typeof e4 ? i4.input = h2.string2buf(e4) : "[object ArrayBuffer]" === u2.call(e4) ? i4.input = new Uint8Array(e4) : i4.input = e4, i4.next_in = 0, i4.avail_in = i4.input.length; do { if (0 === i4.avail_out && (i4.output = new o2.Buf8(s3), i4.next_out = 0, i4.avail_out = s3), 1 !== (r4 = a2.deflate(i4, n4)) && r4 !== l2) return this.onEnd(r4), !(this.ended = true); 0 !== i4.avail_out && (0 !== i4.avail_in || 4 !== n4 && 2 !== n4) || ("string" === this.options.to ? this.onData(h2.buf2binstring(o2.shrinkBuf(i4.output, i4.next_out))) : this.onData(o2.shrinkBuf(i4.output, i4.next_out))); } while ((0 < i4.avail_in || 0 === i4.avail_out) && 1 !== r4); return 4 === n4 ? (r4 = a2.deflateEnd(this.strm), this.onEnd(r4), this.ended = true, r4 === l2) : 2 !== n4 || (this.onEnd(l2), !(i4.avail_out = 0)); }, p2.prototype.onData = function(e4) { this.chunks.push(e4); }, p2.prototype.onEnd = function(e4) { e4 === l2 && ("string" === this.options.to ? this.result = this.chunks.join("") : this.result = o2.flattenChunks(this.chunks)), this.chunks = [], this.err = e4, this.msg = this.strm.msg; }, r3.Deflate = p2, r3.deflate = n3, r3.deflateRaw = function(e4, t3) { return (t3 = t3 || {}).raw = true, n3(e4, t3); }, r3.gzip = function(e4, t3) { return (t3 = t3 || {}).gzip = true, n3(e4, t3); }; }, { "./utils/common": 41, "./utils/strings": 42, "./zlib/deflate": 46, "./zlib/messages": 51, "./zlib/zstream": 53 }], 40: [function(e3, t2, r3) { var c3 = e3("./zlib/inflate"), d2 = e3("./utils/common"), p2 = e3("./utils/strings"), m2 = e3("./zlib/constants"), n3 = e3("./zlib/messages"), i3 = e3("./zlib/zstream"), s2 = e3("./zlib/gzheader"), _2 = Object.prototype.toString; function a2(e4) { if (!(this instanceof a2)) return new a2(e4); this.options = d2.assign({ chunkSize: 16384, windowBits: 0, to: "" }, e4 || {}); var t3 = this.options; t3.raw && 0 <= t3.windowBits && t3.windowBits < 16 && (t3.windowBits = -t3.windowBits, 0 === t3.windowBits && (t3.windowBits = -15)), !(0 <= t3.windowBits && t3.windowBits < 16) || e4 && e4.windowBits || (t3.windowBits += 32), 15 < t3.windowBits && t3.windowBits < 48 && 0 == (15 & t3.windowBits) && (t3.windowBits |= 15), this.err = 0, this.msg = "", this.ended = false, this.chunks = [], this.strm = new i3(), this.strm.avail_out = 0; var r4 = c3.inflateInit2(this.strm, t3.windowBits); if (r4 !== m2.Z_OK) throw new Error(n3[r4]); this.header = new s2(), c3.inflateGetHeader(this.strm, this.header); } function o2(e4, t3) { var r4 = new a2(t3); if (r4.push(e4, true), r4.err) throw r4.msg || n3[r4.err]; return r4.result; } a2.prototype.push = function(e4, t3) { var r4, n4, i4, s3, a3, o3, h2 = this.strm, u2 = this.options.chunkSize, l2 = this.options.dictionary, f2 = false; if (this.ended) return false; n4 = t3 === ~~t3 ? t3 : true === t3 ? m2.Z_FINISH : m2.Z_NO_FLUSH, "string" == typeof e4 ? h2.input = p2.binstring2buf(e4) : "[object ArrayBuffer]" === _2.call(e4) ? h2.input = new Uint8Array(e4) : h2.input = e4, h2.next_in = 0, h2.avail_in = h2.input.length; do { if (0 === h2.avail_out && (h2.output = new d2.Buf8(u2), h2.next_out = 0, h2.avail_out = u2), (r4 = c3.inflate(h2, m2.Z_NO_FLUSH)) === m2.Z_NEED_DICT && l2 && (o3 = "string" == typeof l2 ? p2.string2buf(l2) : "[object ArrayBuffer]" === _2.call(l2) ? new Uint8Array(l2) : l2, r4 = c3.inflateSetDictionary(this.strm, o3)), r4 === m2.Z_BUF_ERROR && true === f2 && (r4 = m2.Z_OK, f2 = false), r4 !== m2.Z_STREAM_END && r4 !== m2.Z_OK) return this.onEnd(r4), !(this.ended = true); h2.next_out && (0 !== h2.avail_out && r4 !== m2.Z_STREAM_END && (0 !== h2.avail_in || n4 !== m2.Z_FINISH && n4 !== m2.Z_SYNC_FLUSH) || ("string" === this.options.to ? (i4 = p2.utf8border(h2.output, h2.next_out), s3 = h2.next_out - i4, a3 = p2.buf2string(h2.output, i4), h2.next_out = s3, h2.avail_out = u2 - s3, s3 && d2.arraySet(h2.output, h2.output, i4, s3, 0), this.onData(a3)) : this.onData(d2.shrinkBuf(h2.output, h2.next_out)))), 0 === h2.avail_in && 0 === h2.avail_out && (f2 = true); } while ((0 < h2.avail_in || 0 === h2.avail_out) && r4 !== m2.Z_STREAM_END); return r4 === m2.Z_STREAM_END && (n4 = m2.Z_FINISH), n4 === m2.Z_FINISH ? (r4 = c3.inflateEnd(this.strm), this.onEnd(r4), this.ended = true, r4 === m2.Z_OK) : n4 !== m2.Z_SYNC_FLUSH || (this.onEnd(m2.Z_OK), !(h2.avail_out = 0)); }, a2.prototype.onData = function(e4) { this.chunks.push(e4); }, a2.prototype.onEnd = function(e4) { e4 === m2.Z_OK && ("string" === this.options.to ? this.result = this.chunks.join("") : this.result = d2.flattenChunks(this.chunks)), this.chunks = [], this.err = e4, this.msg = this.strm.msg; }, r3.Inflate = a2, r3.inflate = o2, r3.inflateRaw = function(e4, t3) { return (t3 = t3 || {}).raw = true, o2(e4, t3); }, r3.ungzip = o2; }, { "./utils/common": 41, "./utils/strings": 42, "./zlib/constants": 44, "./zlib/gzheader": 47, "./zlib/inflate": 49, "./zlib/messages": 51, "./zlib/zstream": 53 }], 41: [function(e3, t2, r3) { var n3 = "undefined" != typeof Uint8Array && "undefined" != typeof Uint16Array && "undefined" != typeof Int32Array; r3.assign = function(e4) { for (var t3 = Array.prototype.slice.call(arguments, 1); t3.length; ) { var r4 = t3.shift(); if (r4) { if ("object" != typeof r4) throw new TypeError(r4 + "must be non-object"); for (var n4 in r4) r4.hasOwnProperty(n4) && (e4[n4] = r4[n4]); } } return e4; }, r3.shrinkBuf = function(e4, t3) { return e4.length === t3 ? e4 : e4.subarray ? e4.subarray(0, t3) : (e4.length = t3, e4); }; var i3 = { arraySet: function(e4, t3, r4, n4, i4) { if (t3.subarray && e4.subarray) e4.set(t3.subarray(r4, r4 + n4), i4); else for (var s3 = 0; s3 < n4; s3++) e4[i4 + s3] = t3[r4 + s3]; }, flattenChunks: function(e4) { var t3, r4, n4, i4, s3, a2; for (t3 = n4 = 0, r4 = e4.length; t3 < r4; t3++) n4 += e4[t3].length; for (a2 = new Uint8Array(n4), t3 = i4 = 0, r4 = e4.length; t3 < r4; t3++) s3 = e4[t3], a2.set(s3, i4), i4 += s3.length; return a2; } }, s2 = { arraySet: function(e4, t3, r4, n4, i4) { for (var s3 = 0; s3 < n4; s3++) e4[i4 + s3] = t3[r4 + s3]; }, flattenChunks: function(e4) { return [].concat.apply([], e4); } }; r3.setTyped = function(e4) { e4 ? (r3.Buf8 = Uint8Array, r3.Buf16 = Uint16Array, r3.Buf32 = Int32Array, r3.assign(r3, i3)) : (r3.Buf8 = Array, r3.Buf16 = Array, r3.Buf32 = Array, r3.assign(r3, s2)); }, r3.setTyped(n3); }, {}], 42: [function(e3, t2, r3) { var h2 = e3("./common"), i3 = true, s2 = true; try { String.fromCharCode.apply(null, [0]); } catch (e4) { i3 = false; } try { String.fromCharCode.apply(null, new Uint8Array(1)); } catch (e4) { s2 = false; } for (var u2 = new h2.Buf8(256), n3 = 0; n3 < 256; n3++) u2[n3] = 252 <= n3 ? 6 : 248 <= n3 ? 5 : 240 <= n3 ? 4 : 224 <= n3 ? 3 : 192 <= n3 ? 2 : 1; function l2(e4, t3) { if (t3 < 65537 && (e4.subarray && s2 || !e4.subarray && i3)) return String.fromCharCode.apply(null, h2.shrinkBuf(e4, t3)); for (var r4 = "", n4 = 0; n4 < t3; n4++) r4 += String.fromCharCode(e4[n4]); return r4; } u2[254] = u2[254] = 1, r3.string2buf = function(e4) { var t3, r4, n4, i4, s3, a2 = e4.length, o2 = 0; for (i4 = 0; i4 < a2; i4++) 55296 == (64512 & (r4 = e4.charCodeAt(i4))) && i4 + 1 < a2 && 56320 == (64512 & (n4 = e4.charCodeAt(i4 + 1))) && (r4 = 65536 + (r4 - 55296 << 10) + (n4 - 56320), i4++), o2 += r4 < 128 ? 1 : r4 < 2048 ? 2 : r4 < 65536 ? 3 : 4; for (t3 = new h2.Buf8(o2), i4 = s3 = 0; s3 < o2; i4++) 55296 == (64512 & (r4 = e4.charCodeAt(i4))) && i4 + 1 < a2 && 56320 == (64512 & (n4 = e4.charCodeAt(i4 + 1))) && (r4 = 65536 + (r4 - 55296 << 10) + (n4 - 56320), i4++), r4 < 128 ? t3[s3++] = r4 : (r4 < 2048 ? t3[s3++] = 192 | r4 >>> 6 : (r4 < 65536 ? t3[s3++] = 224 | r4 >>> 12 : (t3[s3++] = 240 | r4 >>> 18, t3[s3++] = 128 | r4 >>> 12 & 63), t3[s3++] = 128 | r4 >>> 6 & 63), t3[s3++] = 128 | 63 & r4); return t3; }, r3.buf2binstring = function(e4) { return l2(e4, e4.length); }, r3.binstring2buf = function(e4) { for (var t3 = new h2.Buf8(e4.length), r4 = 0, n4 = t3.length; r4 < n4; r4++) t3[r4] = e4.charCodeAt(r4); return t3; }, r3.buf2string = function(e4, t3) { var r4, n4, i4, s3, a2 = t3 || e4.length, o2 = new Array(2 * a2); for (r4 = n4 = 0; r4 < a2; ) if ((i4 = e4[r4++]) < 128) o2[n4++] = i4; else if (4 < (s3 = u2[i4])) o2[n4++] = 65533, r4 += s3 - 1; else { for (i4 &= 2 === s3 ? 31 : 3 === s3 ? 15 : 7; 1 < s3 && r4 < a2; ) i4 = i4 << 6 | 63 & e4[r4++], s3--; 1 < s3 ? o2[n4++] = 65533 : i4 < 65536 ? o2[n4++] = i4 : (i4 -= 65536, o2[n4++] = 55296 | i4 >> 10 & 1023, o2[n4++] = 56320 | 1023 & i4); } return l2(o2, n4); }, r3.utf8border = function(e4, t3) { var r4; for ((t3 = t3 || e4.length) > e4.length && (t3 = e4.length), r4 = t3 - 1; 0 <= r4 && 128 == (192 & e4[r4]); ) r4--; return r4 < 0 ? t3 : 0 === r4 ? t3 : r4 + u2[e4[r4]] > t3 ? r4 : t3; }; }, { "./common": 41 }], 43: [function(e3, t2, r3) { t2.exports = function(e4, t3, r4, n3) { for (var i3 = 65535 & e4 | 0, s2 = e4 >>> 16 & 65535 | 0, a2 = 0; 0 !== r4; ) { for (r4 -= a2 = 2e3 < r4 ? 2e3 : r4; s2 = s2 + (i3 = i3 + t3[n3++] | 0) | 0, --a2; ) ; i3 %= 65521, s2 %= 65521; } return i3 | s2 << 16 | 0; }; }, {}], 44: [function(e3, t2, r3) { t2.exports = { Z_NO_FLUSH: 0, Z_PARTIAL_FLUSH: 1, Z_SYNC_FLUSH: 2, Z_FULL_FLUSH: 3, Z_FINISH: 4, Z_BLOCK: 5, Z_TREES: 6, Z_OK: 0, Z_STREAM_END: 1, Z_NEED_DICT: 2, Z_ERRNO: -1, Z_STREAM_ERROR: -2, Z_DATA_ERROR: -3, Z_BUF_ERROR: -5, Z_NO_COMPRESSION: 0, Z_BEST_SPEED: 1, Z_BEST_COMPRESSION: 9, Z_DEFAULT_COMPRESSION: -1, Z_FILTERED: 1, Z_HUFFMAN_ONLY: 2, Z_RLE: 3, Z_FIXED: 4, Z_DEFAULT_STRATEGY: 0, Z_BINARY: 0, Z_TEXT: 1, Z_UNKNOWN: 2, Z_DEFLATED: 8 }; }, {}], 45: [function(e3, t2, r3) { var o2 = function() { for (var e4, t3 = [], r4 = 0; r4 < 256; r4++) { e4 = r4; for (var n3 = 0; n3 < 8; n3++) e4 = 1 & e4 ? 3988292384 ^ e4 >>> 1 : e4 >>> 1; t3[r4] = e4; } return t3; }(); t2.exports = function(e4, t3, r4, n3) { var i3 = o2, s2 = n3 + r4; e4 ^= -1; for (var a2 = n3; a2 < s2; a2++) e4 = e4 >>> 8 ^ i3[255 & (e4 ^ t3[a2])]; return -1 ^ e4; }; }, {}], 46: [function(e3, t2, r3) { var h2, c3 = e3("../utils/common"), u2 = e3("./trees"), d2 = e3("./adler32"), p2 = e3("./crc32"), n3 = e3("./messages"), l2 = 0, f2 = 4, m2 = 0, _2 = -2, g2 = -1, b2 = 4, i3 = 2, v2 = 8, y2 = 9, s2 = 286, a2 = 30, o2 = 19, w = 2 * s2 + 1, k2 = 15, x2 = 3, S2 = 258, z2 = S2 + x2 + 1, C2 = 42, E2 = 113, A2 = 1, I2 = 2, O = 3, B2 = 4; function R2(e4, t3) { return e4.msg = n3[t3], t3; } function T2(e4) { return (e4 << 1) - (4 < e4 ? 9 : 0); } function D(e4) { for (var t3 = e4.length; 0 <= --t3; ) e4[t3] = 0; } function F(e4) { var t3 = e4.state, r4 = t3.pending; r4 > e4.avail_out && (r4 = e4.avail_out), 0 !== r4 && (c3.arraySet(e4.output, t3.pending_buf, t3.pending_out, r4, e4.next_out), e4.next_out += r4, t3.pending_out += r4, e4.total_out += r4, e4.avail_out -= r4, t3.pending -= r4, 0 === t3.pending && (t3.pending_out = 0)); } function N2(e4, t3) { u2._tr_flush_block(e4, 0 <= e4.block_start ? e4.block_start : -1, e4.strstart - e4.block_start, t3), e4.block_start = e4.strstart, F(e4.strm); } function U(e4, t3) { e4.pending_buf[e4.pending++] = t3; } function P2(e4, t3) { e4.pending_buf[e4.pending++] = t3 >>> 8 & 255, e4.pending_buf[e4.pending++] = 255 & t3; } function L2(e4, t3) { var r4, n4, i4 = e4.max_chain_length, s3 = e4.strstart, a3 = e4.prev_length, o3 = e4.nice_match, h3 = e4.strstart > e4.w_size - z2 ? e4.strstart - (e4.w_size - z2) : 0, u3 = e4.window, l3 = e4.w_mask, f3 = e4.prev, c4 = e4.strstart + S2, d3 = u3[s3 + a3 - 1], p3 = u3[s3 + a3]; e4.prev_length >= e4.good_match && (i4 >>= 2), o3 > e4.lookahead && (o3 = e4.lookahead); do { if (u3[(r4 = t3) + a3] === p3 && u3[r4 + a3 - 1] === d3 && u3[r4] === u3[s3] && u3[++r4] === u3[s3 + 1]) { s3 += 2, r4++; do { } while (u3[++s3] === u3[++r4] && u3[++s3] === u3[++r4] && u3[++s3] === u3[++r4] && u3[++s3] === u3[++r4] && u3[++s3] === u3[++r4] && u3[++s3] === u3[++r4] && u3[++s3] === u3[++r4] && u3[++s3] === u3[++r4] && s3 < c4); if (n4 = S2 - (c4 - s3), s3 = c4 - S2, a3 < n4) { if (e4.match_start = t3, o3 <= (a3 = n4)) break; d3 = u3[s3 + a3 - 1], p3 = u3[s3 + a3]; } } } while ((t3 = f3[t3 & l3]) > h3 && 0 != --i4); return a3 <= e4.lookahead ? a3 : e4.lookahead; } function j2(e4) { var t3, r4, n4, i4, s3, a3, o3, h3, u3, l3, f3 = e4.w_size; do { if (i4 = e4.window_size - e4.lookahead - e4.strstart, e4.strstart >= f3 + (f3 - z2)) { for (c3.arraySet(e4.window, e4.window, f3, f3, 0), e4.match_start -= f3, e4.strstart -= f3, e4.block_start -= f3, t3 = r4 = e4.hash_size; n4 = e4.head[--t3], e4.head[t3] = f3 <= n4 ? n4 - f3 : 0, --r4; ) ; for (t3 = r4 = f3; n4 = e4.prev[--t3], e4.prev[t3] = f3 <= n4 ? n4 - f3 : 0, --r4; ) ; i4 += f3; } if (0 === e4.strm.avail_in) break; if (a3 = e4.strm, o3 = e4.window, h3 = e4.strstart + e4.lookahead, u3 = i4, l3 = undefined, l3 = a3.avail_in, u3 < l3 && (l3 = u3), r4 = 0 === l3 ? 0 : (a3.avail_in -= l3, c3.arraySet(o3, a3.input, a3.next_in, l3, h3), 1 === a3.state.wrap ? a3.adler = d2(a3.adler, o3, l3, h3) : 2 === a3.state.wrap && (a3.adler = p2(a3.adler, o3, l3, h3)), a3.next_in += l3, a3.total_in += l3, l3), e4.lookahead += r4, e4.lookahead + e4.insert >= x2) for (s3 = e4.strstart - e4.insert, e4.ins_h = e4.window[s3], e4.ins_h = (e4.ins_h << e4.hash_shift ^ e4.window[s3 + 1]) & e4.hash_mask; e4.insert && (e4.ins_h = (e4.ins_h << e4.hash_shift ^ e4.window[s3 + x2 - 1]) & e4.hash_mask, e4.prev[s3 & e4.w_mask] = e4.head[e4.ins_h], e4.head[e4.ins_h] = s3, s3++, e4.insert--, !(e4.lookahead + e4.insert < x2)); ) ; } while (e4.lookahead < z2 && 0 !== e4.strm.avail_in); } function Z(e4, t3) { for (var r4, n4; ; ) { if (e4.lookahead < z2) { if (j2(e4), e4.lookahead < z2 && t3 === l2) return A2; if (0 === e4.lookahead) break; } if (r4 = 0, e4.lookahead >= x2 && (e4.ins_h = (e4.ins_h << e4.hash_shift ^ e4.window[e4.strstart + x2 - 1]) & e4.hash_mask, r4 = e4.prev[e4.strstart & e4.w_mask] = e4.head[e4.ins_h], e4.head[e4.ins_h] = e4.strstart), 0 !== r4 && e4.strstart - r4 <= e4.w_size - z2 && (e4.match_length = L2(e4, r4)), e4.match_length >= x2) if (n4 = u2._tr_tally(e4, e4.strstart - e4.match_start, e4.match_length - x2), e4.lookahead -= e4.match_length, e4.match_length <= e4.max_lazy_match && e4.lookahead >= x2) { for (e4.match_length--; e4.strstart++, e4.ins_h = (e4.ins_h << e4.hash_shift ^ e4.window[e4.strstart + x2 - 1]) & e4.hash_mask, r4 = e4.prev[e4.strstart & e4.w_mask] = e4.head[e4.ins_h], e4.head[e4.ins_h] = e4.strstart, 0 != --e4.match_length; ) ; e4.strstart++; } else e4.strstart += e4.match_length, e4.match_length = 0, e4.ins_h = e4.window[e4.strstart], e4.ins_h = (e4.ins_h << e4.hash_shift ^ e4.window[e4.strstart + 1]) & e4.hash_mask; else n4 = u2._tr_tally(e4, 0, e4.window[e4.strstart]), e4.lookahead--, e4.strstart++; if (n4 && (N2(e4, false), 0 === e4.strm.avail_out)) return A2; } return e4.insert = e4.strstart < x2 - 1 ? e4.strstart : x2 - 1, t3 === f2 ? (N2(e4, true), 0 === e4.strm.avail_out ? O : B2) : e4.last_lit && (N2(e4, false), 0 === e4.strm.avail_out) ? A2 : I2; } function W(e4, t3) { for (var r4, n4, i4; ; ) { if (e4.lookahead < z2) { if (j2(e4), e4.lookahead < z2 && t3 === l2) return A2; if (0 === e4.lookahead) break; } if (r4 = 0, e4.lookahead >= x2 && (e4.ins_h = (e4.ins_h << e4.hash_shift ^ e4.window[e4.strstart + x2 - 1]) & e4.hash_mask, r4 = e4.prev[e4.strstart & e4.w_mask] = e4.head[e4.ins_h], e4.head[e4.ins_h] = e4.strstart), e4.prev_length = e4.match_length, e4.prev_match = e4.match_start, e4.match_length = x2 - 1, 0 !== r4 && e4.prev_length < e4.max_lazy_match && e4.strstart - r4 <= e4.w_size - z2 && (e4.match_length = L2(e4, r4), e4.match_length <= 5 && (1 === e4.strategy || e4.match_length === x2 && 4096 < e4.strstart - e4.match_start) && (e4.match_length = x2 - 1)), e4.prev_length >= x2 && e4.match_length <= e4.prev_length) { for (i4 = e4.strstart + e4.lookahead - x2, n4 = u2._tr_tally(e4, e4.strstart - 1 - e4.prev_match, e4.prev_length - x2), e4.lookahead -= e4.prev_length - 1, e4.prev_length -= 2; ++e4.strstart <= i4 && (e4.ins_h = (e4.ins_h << e4.hash_shift ^ e4.window[e4.strstart + x2 - 1]) & e4.hash_mask, r4 = e4.prev[e4.strstart & e4.w_mask] = e4.head[e4.ins_h], e4.head[e4.ins_h] = e4.strstart), 0 != --e4.prev_length; ) ; if (e4.match_available = 0, e4.match_length = x2 - 1, e4.strstart++, n4 && (N2(e4, false), 0 === e4.strm.avail_out)) return A2; } else if (e4.match_available) { if ((n4 = u2._tr_tally(e4, 0, e4.window[e4.strstart - 1])) && N2(e4, false), e4.strstart++, e4.lookahead--, 0 === e4.strm.avail_out) return A2; } else e4.match_available = 1, e4.strstart++, e4.lookahead--; } return e4.match_available && (n4 = u2._tr_tally(e4, 0, e4.window[e4.strstart - 1]), e4.match_available = 0), e4.insert = e4.strstart < x2 - 1 ? e4.strstart : x2 - 1, t3 === f2 ? (N2(e4, true), 0 === e4.strm.avail_out ? O : B2) : e4.last_lit && (N2(e4, false), 0 === e4.strm.avail_out) ? A2 : I2; } function M2(e4, t3, r4, n4, i4) { this.good_length = e4, this.max_lazy = t3, this.nice_length = r4, this.max_chain = n4, this.func = i4; } function H2() { this.strm = null, this.status = 0, this.pending_buf = null, this.pending_buf_size = 0, this.pending_out = 0, this.pending = 0, this.wrap = 0, this.gzhead = null, this.gzindex = 0, this.method = v2, this.last_flush = -1, this.w_size = 0, this.w_bits = 0, this.w_mask = 0, this.window = null, this.window_size = 0, this.prev = null, this.head = null, this.ins_h = 0, this.hash_size = 0, this.hash_bits = 0, this.hash_mask = 0, this.hash_shift = 0, this.block_start = 0, this.match_length = 0, this.prev_match = 0, this.match_available = 0, this.strstart = 0, this.match_start = 0, this.lookahead = 0, this.prev_length = 0, this.max_chain_length = 0, this.max_lazy_match = 0, this.level = 0, this.strategy = 0, this.good_match = 0, this.nice_match = 0, this.dyn_ltree = new c3.Buf16(2 * w), this.dyn_dtree = new c3.Buf16(2 * (2 * a2 + 1)), this.bl_tree = new c3.Buf16(2 * (2 * o2 + 1)), D(this.dyn_ltree), D(this.dyn_dtree), D(this.bl_tree), this.l_desc = null, this.d_desc = null, this.bl_desc = null, this.bl_count = new c3.Buf16(k2 + 1), this.heap = new c3.Buf16(2 * s2 + 1), D(this.heap), this.heap_len = 0, this.heap_max = 0, this.depth = new c3.Buf16(2 * s2 + 1), D(this.depth), this.l_buf = 0, this.lit_bufsize = 0, this.last_lit = 0, this.d_buf = 0, this.opt_len = 0, this.static_len = 0, this.matches = 0, this.insert = 0, this.bi_buf = 0, this.bi_valid = 0; } function G(e4) { var t3; return e4 && e4.state ? (e4.total_in = e4.total_out = 0, e4.data_type = i3, (t3 = e4.state).pending = 0, t3.pending_out = 0, t3.wrap < 0 && (t3.wrap = -t3.wrap), t3.status = t3.wrap ? C2 : E2, e4.adler = 2 === t3.wrap ? 0 : 1, t3.last_flush = l2, u2._tr_init(t3), m2) : R2(e4, _2); } function K(e4) { var t3 = G(e4); return t3 === m2 && function(e5) { e5.window_size = 2 * e5.w_size, D(e5.head), e5.max_lazy_match = h2[e5.level].max_lazy, e5.good_match = h2[e5.level].good_length, e5.nice_match = h2[e5.level].nice_length, e5.max_chain_length = h2[e5.level].max_chain, e5.strstart = 0, e5.block_start = 0, e5.lookahead = 0, e5.insert = 0, e5.match_length = e5.prev_length = x2 - 1, e5.match_available = 0, e5.ins_h = 0; }(e4.state), t3; } function Y(e4, t3, r4, n4, i4, s3) { if (!e4) return _2; var a3 = 1; if (t3 === g2 && (t3 = 6), n4 < 0 ? (a3 = 0, n4 = -n4) : 15 < n4 && (a3 = 2, n4 -= 16), i4 < 1 || y2 < i4 || r4 !== v2 || n4 < 8 || 15 < n4 || t3 < 0 || 9 < t3 || s3 < 0 || b2 < s3) return R2(e4, _2); 8 === n4 && (n4 = 9); var o3 = new H2(); return (e4.state = o3).strm = e4, o3.wrap = a3, o3.gzhead = null, o3.w_bits = n4, o3.w_size = 1 << o3.w_bits, o3.w_mask = o3.w_size - 1, o3.hash_bits = i4 + 7, o3.hash_size = 1 << o3.hash_bits, o3.hash_mask = o3.hash_size - 1, o3.hash_shift = ~~((o3.hash_bits + x2 - 1) / x2), o3.window = new c3.Buf8(2 * o3.w_size), o3.head = new c3.Buf16(o3.hash_size), o3.prev = new c3.Buf16(o3.w_size), o3.lit_bufsize = 1 << i4 + 6, o3.pending_buf_size = 4 * o3.lit_bufsize, o3.pending_buf = new c3.Buf8(o3.pending_buf_size), o3.d_buf = 1 * o3.lit_bufsize, o3.l_buf = 3 * o3.lit_bufsize, o3.level = t3, o3.strategy = s3, o3.method = r4, K(e4); } h2 = [new M2(0, 0, 0, 0, function(e4, t3) { var r4 = 65535; for (r4 > e4.pending_buf_size - 5 && (r4 = e4.pending_buf_size - 5); ; ) { if (e4.lookahead <= 1) { if (j2(e4), 0 === e4.lookahead && t3 === l2) return A2; if (0 === e4.lookahead) break; } e4.strstart += e4.lookahead, e4.lookahead = 0; var n4 = e4.block_start + r4; if ((0 === e4.strstart || e4.strstart >= n4) && (e4.lookahead = e4.strstart - n4, e4.strstart = n4, N2(e4, false), 0 === e4.strm.avail_out)) return A2; if (e4.strstart - e4.block_start >= e4.w_size - z2 && (N2(e4, false), 0 === e4.strm.avail_out)) return A2; } return e4.insert = 0, t3 === f2 ? (N2(e4, true), 0 === e4.strm.avail_out ? O : B2) : (e4.strstart > e4.block_start && (N2(e4, false), e4.strm.avail_out), A2); }), new M2(4, 4, 8, 4, Z), new M2(4, 5, 16, 8, Z), new M2(4, 6, 32, 32, Z), new M2(4, 4, 16, 16, W), new M2(8, 16, 32, 32, W), new M2(8, 16, 128, 128, W), new M2(8, 32, 128, 256, W), new M2(32, 128, 258, 1024, W), new M2(32, 258, 258, 4096, W)], r3.deflateInit = function(e4, t3) { return Y(e4, t3, v2, 15, 8, 0); }, r3.deflateInit2 = Y, r3.deflateReset = K, r3.deflateResetKeep = G, r3.deflateSetHeader = function(e4, t3) { return e4 && e4.state ? 2 !== e4.state.wrap ? _2 : (e4.state.gzhead = t3, m2) : _2; }, r3.deflate = function(e4, t3) { var r4, n4, i4, s3; if (!e4 || !e4.state || 5 < t3 || t3 < 0) return e4 ? R2(e4, _2) : _2; if (n4 = e4.state, !e4.output || !e4.input && 0 !== e4.avail_in || 666 === n4.status && t3 !== f2) return R2(e4, 0 === e4.avail_out ? -5 : _2); if (n4.strm = e4, r4 = n4.last_flush, n4.last_flush = t3, n4.status === C2) if (2 === n4.wrap) e4.adler = 0, U(n4, 31), U(n4, 139), U(n4, 8), n4.gzhead ? (U(n4, (n4.gzhead.text ? 1 : 0) + (n4.gzhead.hcrc ? 2 : 0) + (n4.gzhead.extra ? 4 : 0) + (n4.gzhead.name ? 8 : 0) + (n4.gzhead.comment ? 16 : 0)), U(n4, 255 & n4.gzhead.time), U(n4, n4.gzhead.time >> 8 & 255), U(n4, n4.gzhead.time >> 16 & 255), U(n4, n4.gzhead.time >> 24 & 255), U(n4, 9 === n4.level ? 2 : 2 <= n4.strategy || n4.level < 2 ? 4 : 0), U(n4, 255 & n4.gzhead.os), n4.gzhead.extra && n4.gzhead.extra.length && (U(n4, 255 & n4.gzhead.extra.length), U(n4, n4.gzhead.extra.length >> 8 & 255)), n4.gzhead.hcrc && (e4.adler = p2(e4.adler, n4.pending_buf, n4.pending, 0)), n4.gzindex = 0, n4.status = 69) : (U(n4, 0), U(n4, 0), U(n4, 0), U(n4, 0), U(n4, 0), U(n4, 9 === n4.level ? 2 : 2 <= n4.strategy || n4.level < 2 ? 4 : 0), U(n4, 3), n4.status = E2); else { var a3 = v2 + (n4.w_bits - 8 << 4) << 8; a3 |= (2 <= n4.strategy || n4.level < 2 ? 0 : n4.level < 6 ? 1 : 6 === n4.level ? 2 : 3) << 6, 0 !== n4.strstart && (a3 |= 32), a3 += 31 - a3 % 31, n4.status = E2, P2(n4, a3), 0 !== n4.strstart && (P2(n4, e4.adler >>> 16), P2(n4, 65535 & e4.adler)), e4.adler = 1; } if (69 === n4.status) if (n4.gzhead.extra) { for (i4 = n4.pending; n4.gzindex < (65535 & n4.gzhead.extra.length) && (n4.pending !== n4.pending_buf_size || (n4.gzhead.hcrc && n4.pending > i4 && (e4.adler = p2(e4.adler, n4.pending_buf, n4.pending - i4, i4)), F(e4), i4 = n4.pending, n4.pending !== n4.pending_buf_size)); ) U(n4, 255 & n4.gzhead.extra[n4.gzindex]), n4.gzindex++; n4.gzhead.hcrc && n4.pending > i4 && (e4.adler = p2(e4.adler, n4.pending_buf, n4.pending - i4, i4)), n4.gzindex === n4.gzhead.extra.length && (n4.gzindex = 0, n4.status = 73); } else n4.status = 73; if (73 === n4.status) if (n4.gzhead.name) { i4 = n4.pending; do { if (n4.pending === n4.pending_buf_size && (n4.gzhead.hcrc && n4.pending > i4 && (e4.adler = p2(e4.adler, n4.pending_buf, n4.pending - i4, i4)), F(e4), i4 = n4.pending, n4.pending === n4.pending_buf_size)) { s3 = 1; break; } s3 = n4.gzindex < n4.gzhead.name.length ? 255 & n4.gzhead.name.charCodeAt(n4.gzindex++) : 0, U(n4, s3); } while (0 !== s3); n4.gzhead.hcrc && n4.pending > i4 && (e4.adler = p2(e4.adler, n4.pending_buf, n4.pending - i4, i4)), 0 === s3 && (n4.gzindex = 0, n4.status = 91); } else n4.status = 91; if (91 === n4.status) if (n4.gzhead.comment) { i4 = n4.pending; do { if (n4.pending === n4.pending_buf_size && (n4.gzhead.hcrc && n4.pending > i4 && (e4.adler = p2(e4.adler, n4.pending_buf, n4.pending - i4, i4)), F(e4), i4 = n4.pending, n4.pending === n4.pending_buf_size)) { s3 = 1; break; } s3 = n4.gzindex < n4.gzhead.comment.length ? 255 & n4.gzhead.comment.charCodeAt(n4.gzindex++) : 0, U(n4, s3); } while (0 !== s3); n4.gzhead.hcrc && n4.pending > i4 && (e4.adler = p2(e4.adler, n4.pending_buf, n4.pending - i4, i4)), 0 === s3 && (n4.status = 103); } else n4.status = 103; if (103 === n4.status && (n4.gzhead.hcrc ? (n4.pending + 2 > n4.pending_buf_size && F(e4), n4.pending + 2 <= n4.pending_buf_size && (U(n4, 255 & e4.adler), U(n4, e4.adler >> 8 & 255), e4.adler = 0, n4.status = E2)) : n4.status = E2), 0 !== n4.pending) { if (F(e4), 0 === e4.avail_out) return n4.last_flush = -1, m2; } else if (0 === e4.avail_in && T2(t3) <= T2(r4) && t3 !== f2) return R2(e4, -5); if (666 === n4.status && 0 !== e4.avail_in) return R2(e4, -5); if (0 !== e4.avail_in || 0 !== n4.lookahead || t3 !== l2 && 666 !== n4.status) { var o3 = 2 === n4.strategy ? function(e5, t4) { for (var r5; ; ) { if (0 === e5.lookahead && (j2(e5), 0 === e5.lookahead)) { if (t4 === l2) return A2; break; } if (e5.match_length = 0, r5 = u2._tr_tally(e5, 0, e5.window[e5.strstart]), e5.lookahead--, e5.strstart++, r5 && (N2(e5, false), 0 === e5.strm.avail_out)) return A2; } return e5.insert = 0, t4 === f2 ? (N2(e5, true), 0 === e5.strm.avail_out ? O : B2) : e5.last_lit && (N2(e5, false), 0 === e5.strm.avail_out) ? A2 : I2; }(n4, t3) : 3 === n4.strategy ? function(e5, t4) { for (var r5, n5, i5, s4, a4 = e5.window; ; ) { if (e5.lookahead <= S2) { if (j2(e5), e5.lookahead <= S2 && t4 === l2) return A2; if (0 === e5.lookahead) break; } if (e5.match_length = 0, e5.lookahead >= x2 && 0 < e5.strstart && (n5 = a4[i5 = e5.strstart - 1]) === a4[++i5] && n5 === a4[++i5] && n5 === a4[++i5]) { s4 = e5.strstart + S2; do { } while (n5 === a4[++i5] && n5 === a4[++i5] && n5 === a4[++i5] && n5 === a4[++i5] && n5 === a4[++i5] && n5 === a4[++i5] && n5 === a4[++i5] && n5 === a4[++i5] && i5 < s4); e5.match_length = S2 - (s4 - i5), e5.match_length > e5.lookahead && (e5.match_length = e5.lookahead); } if (e5.match_length >= x2 ? (r5 = u2._tr_tally(e5, 1, e5.match_length - x2), e5.lookahead -= e5.match_length, e5.strstart += e5.match_length, e5.match_length = 0) : (r5 = u2._tr_tally(e5, 0, e5.window[e5.strstart]), e5.lookahead--, e5.strstart++), r5 && (N2(e5, false), 0 === e5.strm.avail_out)) return A2; } return e5.insert = 0, t4 === f2 ? (N2(e5, true), 0 === e5.strm.avail_out ? O : B2) : e5.last_lit && (N2(e5, false), 0 === e5.strm.avail_out) ? A2 : I2; }(n4, t3) : h2[n4.level].func(n4, t3); if (o3 !== O && o3 !== B2 || (n4.status = 666), o3 === A2 || o3 === O) return 0 === e4.avail_out && (n4.last_flush = -1), m2; if (o3 === I2 && (1 === t3 ? u2._tr_align(n4) : 5 !== t3 && (u2._tr_stored_block(n4, 0, 0, false), 3 === t3 && (D(n4.head), 0 === n4.lookahead && (n4.strstart = 0, n4.block_start = 0, n4.insert = 0))), F(e4), 0 === e4.avail_out)) return n4.last_flush = -1, m2; } return t3 !== f2 ? m2 : n4.wrap <= 0 ? 1 : (2 === n4.wrap ? (U(n4, 255 & e4.adler), U(n4, e4.adler >> 8 & 255), U(n4, e4.adler >> 16 & 255), U(n4, e4.adler >> 24 & 255), U(n4, 255 & e4.total_in), U(n4, e4.total_in >> 8 & 255), U(n4, e4.total_in >> 16 & 255), U(n4, e4.total_in >> 24 & 255)) : (P2(n4, e4.adler >>> 16), P2(n4, 65535 & e4.adler)), F(e4), 0 < n4.wrap && (n4.wrap = -n4.wrap), 0 !== n4.pending ? m2 : 1); }, r3.deflateEnd = function(e4) { var t3; return e4 && e4.state ? (t3 = e4.state.status) !== C2 && 69 !== t3 && 73 !== t3 && 91 !== t3 && 103 !== t3 && t3 !== E2 && 666 !== t3 ? R2(e4, _2) : (e4.state = null, t3 === E2 ? R2(e4, -3) : m2) : _2; }, r3.deflateSetDictionary = function(e4, t3) { var r4, n4, i4, s3, a3, o3, h3, u3, l3 = t3.length; if (!e4 || !e4.state) return _2; if (2 === (s3 = (r4 = e4.state).wrap) || 1 === s3 && r4.status !== C2 || r4.lookahead) return _2; for (1 === s3 && (e4.adler = d2(e4.adler, t3, l3, 0)), r4.wrap = 0, l3 >= r4.w_size && (0 === s3 && (D(r4.head), r4.strstart = 0, r4.block_start = 0, r4.insert = 0), u3 = new c3.Buf8(r4.w_size), c3.arraySet(u3, t3, l3 - r4.w_size, r4.w_size, 0), t3 = u3, l3 = r4.w_size), a3 = e4.avail_in, o3 = e4.next_in, h3 = e4.input, e4.avail_in = l3, e4.next_in = 0, e4.input = t3, j2(r4); r4.lookahead >= x2; ) { for (n4 = r4.strstart, i4 = r4.lookahead - (x2 - 1); r4.ins_h = (r4.ins_h << r4.hash_shift ^ r4.window[n4 + x2 - 1]) & r4.hash_mask, r4.prev[n4 & r4.w_mask] = r4.head[r4.ins_h], r4.head[r4.ins_h] = n4, n4++, --i4; ) ; r4.strstart = n4, r4.lookahead = x2 - 1, j2(r4); } return r4.strstart += r4.lookahead, r4.block_start = r4.strstart, r4.insert = r4.lookahead, r4.lookahead = 0, r4.match_length = r4.prev_length = x2 - 1, r4.match_available = 0, e4.next_in = o3, e4.input = h3, e4.avail_in = a3, r4.wrap = s3, m2; }, r3.deflateInfo = "pako deflate (from Nodeca project)"; }, { "../utils/common": 41, "./adler32": 43, "./crc32": 45, "./messages": 51, "./trees": 52 }], 47: [function(e3, t2, r3) { t2.exports = function() { this.text = 0, this.time = 0, this.xflags = 0, this.os = 0, this.extra = null, this.extra_len = 0, this.name = "", this.comment = "", this.hcrc = 0, this.done = false; }; }, {}], 48: [function(e3, t2, r3) { t2.exports = function(e4, t3) { var r4, n3, i3, s2, a2, o2, h2, u2, l2, f2, c3, d2, p2, m2, _2, g2, b2, v2, y2, w, k2, x2, S2, z2, C2; r4 = e4.state, n3 = e4.next_in, z2 = e4.input, i3 = n3 + (e4.avail_in - 5), s2 = e4.next_out, C2 = e4.output, a2 = s2 - (t3 - e4.avail_out), o2 = s2 + (e4.avail_out - 257), h2 = r4.dmax, u2 = r4.wsize, l2 = r4.whave, f2 = r4.wnext, c3 = r4.window, d2 = r4.hold, p2 = r4.bits, m2 = r4.lencode, _2 = r4.distcode, g2 = (1 << r4.lenbits) - 1, b2 = (1 << r4.distbits) - 1; e: do { p2 < 15 && (d2 += z2[n3++] << p2, p2 += 8, d2 += z2[n3++] << p2, p2 += 8), v2 = m2[d2 & g2]; t: for (; ; ) { if (d2 >>>= y2 = v2 >>> 24, p2 -= y2, 0 === (y2 = v2 >>> 16 & 255)) C2[s2++] = 65535 & v2; else { if (!(16 & y2)) { if (0 == (64 & y2)) { v2 = m2[(65535 & v2) + (d2 & (1 << y2) - 1)]; continue t; } if (32 & y2) { r4.mode = 12; break e; } e4.msg = "invalid literal/length code", r4.mode = 30; break e; } w = 65535 & v2, (y2 &= 15) && (p2 < y2 && (d2 += z2[n3++] << p2, p2 += 8), w += d2 & (1 << y2) - 1, d2 >>>= y2, p2 -= y2), p2 < 15 && (d2 += z2[n3++] << p2, p2 += 8, d2 += z2[n3++] << p2, p2 += 8), v2 = _2[d2 & b2]; r: for (; ; ) { if (d2 >>>= y2 = v2 >>> 24, p2 -= y2, !(16 & (y2 = v2 >>> 16 & 255))) { if (0 == (64 & y2)) { v2 = _2[(65535 & v2) + (d2 & (1 << y2) - 1)]; continue r; } e4.msg = "invalid distance code", r4.mode = 30; break e; } if (k2 = 65535 & v2, p2 < (y2 &= 15) && (d2 += z2[n3++] << p2, (p2 += 8) < y2 && (d2 += z2[n3++] << p2, p2 += 8)), h2 < (k2 += d2 & (1 << y2) - 1)) { e4.msg = "invalid distance too far back", r4.mode = 30; break e; } if (d2 >>>= y2, p2 -= y2, (y2 = s2 - a2) < k2) { if (l2 < (y2 = k2 - y2) && r4.sane) { e4.msg = "invalid distance too far back", r4.mode = 30; break e; } if (S2 = c3, (x2 = 0) === f2) { if (x2 += u2 - y2, y2 < w) { for (w -= y2; C2[s2++] = c3[x2++], --y2; ) ; x2 = s2 - k2, S2 = C2; } } else if (f2 < y2) { if (x2 += u2 + f2 - y2, (y2 -= f2) < w) { for (w -= y2; C2[s2++] = c3[x2++], --y2; ) ; if (x2 = 0, f2 < w) { for (w -= y2 = f2; C2[s2++] = c3[x2++], --y2; ) ; x2 = s2 - k2, S2 = C2; } } } else if (x2 += f2 - y2, y2 < w) { for (w -= y2; C2[s2++] = c3[x2++], --y2; ) ; x2 = s2 - k2, S2 = C2; } for (; 2 < w; ) C2[s2++] = S2[x2++], C2[s2++] = S2[x2++], C2[s2++] = S2[x2++], w -= 3; w && (C2[s2++] = S2[x2++], 1 < w && (C2[s2++] = S2[x2++])); } else { for (x2 = s2 - k2; C2[s2++] = C2[x2++], C2[s2++] = C2[x2++], C2[s2++] = C2[x2++], 2 < (w -= 3); ) ; w && (C2[s2++] = C2[x2++], 1 < w && (C2[s2++] = C2[x2++])); } break; } } break; } } while (n3 < i3 && s2 < o2); n3 -= w = p2 >> 3, d2 &= (1 << (p2 -= w << 3)) - 1, e4.next_in = n3, e4.next_out = s2, e4.avail_in = n3 < i3 ? i3 - n3 + 5 : 5 - (n3 - i3), e4.avail_out = s2 < o2 ? o2 - s2 + 257 : 257 - (s2 - o2), r4.hold = d2, r4.bits = p2; }; }, {}], 49: [function(e3, t2, r3) { var I2 = e3("../utils/common"), O = e3("./adler32"), B2 = e3("./crc32"), R2 = e3("./inffast"), T2 = e3("./inftrees"), D = 1, F = 2, N2 = 0, U = -2, P2 = 1, n3 = 852, i3 = 592; function L2(e4) { return (e4 >>> 24 & 255) + (e4 >>> 8 & 65280) + ((65280 & e4) << 8) + ((255 & e4) << 24); } function s2() { this.mode = 0, this.last = false, this.wrap = 0, this.havedict = false, this.flags = 0, this.dmax = 0, this.check = 0, this.total = 0, this.head = null, this.wbits = 0, this.wsize = 0, this.whave = 0, this.wnext = 0, this.window = null, this.hold = 0, this.bits = 0, this.length = 0, this.offset = 0, this.extra = 0, this.lencode = null, this.distcode = null, this.lenbits = 0, this.distbits = 0, this.ncode = 0, this.nlen = 0, this.ndist = 0, this.have = 0, this.next = null, this.lens = new I2.Buf16(320), this.work = new I2.Buf16(288), this.lendyn = null, this.distdyn = null, this.sane = 0, this.back = 0, this.was = 0; } function a2(e4) { var t3; return e4 && e4.state ? (t3 = e4.state, e4.total_in = e4.total_out = t3.total = 0, e4.msg = "", t3.wrap && (e4.adler = 1 & t3.wrap), t3.mode = P2, t3.last = 0, t3.havedict = 0, t3.dmax = 32768, t3.head = null, t3.hold = 0, t3.bits = 0, t3.lencode = t3.lendyn = new I2.Buf32(n3), t3.distcode = t3.distdyn = new I2.Buf32(i3), t3.sane = 1, t3.back = -1, N2) : U; } function o2(e4) { var t3; return e4 && e4.state ? ((t3 = e4.state).wsize = 0, t3.whave = 0, t3.wnext = 0, a2(e4)) : U; } function h2(e4, t3) { var r4, n4; return e4 && e4.state ? (n4 = e4.state, t3 < 0 ? (r4 = 0, t3 = -t3) : (r4 = 1 + (t3 >> 4), t3 < 48 && (t3 &= 15)), t3 && (t3 < 8 || 15 < t3) ? U : (null !== n4.window && n4.wbits !== t3 && (n4.window = null), n4.wrap = r4, n4.wbits = t3, o2(e4))) : U; } function u2(e4, t3) { var r4, n4; return e4 ? (n4 = new s2(), (e4.state = n4).window = null, (r4 = h2(e4, t3)) !== N2 && (e4.state = null), r4) : U; } var l2, f2, c3 = true; function j2(e4) { if (c3) { var t3; for (l2 = new I2.Buf32(512), f2 = new I2.Buf32(32), t3 = 0; t3 < 144; ) e4.lens[t3++] = 8; for (; t3 < 256; ) e4.lens[t3++] = 9; for (; t3 < 280; ) e4.lens[t3++] = 7; for (; t3 < 288; ) e4.lens[t3++] = 8; for (T2(D, e4.lens, 0, 288, l2, 0, e4.work, { bits: 9 }), t3 = 0; t3 < 32; ) e4.lens[t3++] = 5; T2(F, e4.lens, 0, 32, f2, 0, e4.work, { bits: 5 }), c3 = false; } e4.lencode = l2, e4.lenbits = 9, e4.distcode = f2, e4.distbits = 5; } function Z(e4, t3, r4, n4) { var i4, s3 = e4.state; return null === s3.window && (s3.wsize = 1 << s3.wbits, s3.wnext = 0, s3.whave = 0, s3.window = new I2.Buf8(s3.wsize)), n4 >= s3.wsize ? (I2.arraySet(s3.window, t3, r4 - s3.wsize, s3.wsize, 0), s3.wnext = 0, s3.whave = s3.wsize) : (n4 < (i4 = s3.wsize - s3.wnext) && (i4 = n4), I2.arraySet(s3.window, t3, r4 - n4, i4, s3.wnext), (n4 -= i4) ? (I2.arraySet(s3.window, t3, r4 - n4, n4, 0), s3.wnext = n4, s3.whave = s3.wsize) : (s3.wnext += i4, s3.wnext === s3.wsize && (s3.wnext = 0), s3.whave < s3.wsize && (s3.whave += i4))), 0; } r3.inflateReset = o2, r3.inflateReset2 = h2, r3.inflateResetKeep = a2, r3.inflateInit = function(e4) { return u2(e4, 15); }, r3.inflateInit2 = u2, r3.inflate = function(e4, t3) { var r4, n4, i4, s3, a3, o3, h3, u3, l3, f3, c4, d2, p2, m2, _2, g2, b2, v2, y2, w, k2, x2, S2, z2, C2 = 0, E2 = new I2.Buf8(4), A2 = [16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]; if (!e4 || !e4.state || !e4.output || !e4.input && 0 !== e4.avail_in) return U; 12 === (r4 = e4.state).mode && (r4.mode = 13), a3 = e4.next_out, i4 = e4.output, h3 = e4.avail_out, s3 = e4.next_in, n4 = e4.input, o3 = e4.avail_in, u3 = r4.hold, l3 = r4.bits, f3 = o3, c4 = h3, x2 = N2; e: for (; ; ) switch (r4.mode) { case P2: if (0 === r4.wrap) { r4.mode = 13; break; } for (; l3 < 16; ) { if (0 === o3) break e; o3--, u3 += n4[s3++] << l3, l3 += 8; } if (2 & r4.wrap && 35615 === u3) { E2[r4.check = 0] = 255 & u3, E2[1] = u3 >>> 8 & 255, r4.check = B2(r4.check, E2, 2, 0), l3 = u3 = 0, r4.mode = 2; break; } if (r4.flags = 0, r4.head && (r4.head.done = false), !(1 & r4.wrap) || (((255 & u3) << 8) + (u3 >> 8)) % 31) { e4.msg = "incorrect header check", r4.mode = 30; break; } if (8 != (15 & u3)) { e4.msg = "unknown compression method", r4.mode = 30; break; } if (l3 -= 4, k2 = 8 + (15 & (u3 >>>= 4)), 0 === r4.wbits) r4.wbits = k2; else if (k2 > r4.wbits) { e4.msg = "invalid window size", r4.mode = 30; break; } r4.dmax = 1 << k2, e4.adler = r4.check = 1, r4.mode = 512 & u3 ? 10 : 12, l3 = u3 = 0; break; case 2: for (; l3 < 16; ) { if (0 === o3) break e; o3--, u3 += n4[s3++] << l3, l3 += 8; } if (r4.flags = u3, 8 != (255 & r4.flags)) { e4.msg = "unknown compression method", r4.mode = 30; break; } if (57344 & r4.flags) { e4.msg = "unknown header flags set", r4.mode = 30; break; } r4.head && (r4.head.text = u3 >> 8 & 1), 512 & r4.flags && (E2[0] = 255 & u3, E2[1] = u3 >>> 8 & 255, r4.check = B2(r4.check, E2, 2, 0)), l3 = u3 = 0, r4.mode = 3; case 3: for (; l3 < 32; ) { if (0 === o3) break e; o3--, u3 += n4[s3++] << l3, l3 += 8; } r4.head && (r4.head.time = u3), 512 & r4.flags && (E2[0] = 255 & u3, E2[1] = u3 >>> 8 & 255, E2[2] = u3 >>> 16 & 255, E2[3] = u3 >>> 24 & 255, r4.check = B2(r4.check, E2, 4, 0)), l3 = u3 = 0, r4.mode = 4; case 4: for (; l3 < 16; ) { if (0 === o3) break e; o3--, u3 += n4[s3++] << l3, l3 += 8; } r4.head && (r4.head.xflags = 255 & u3, r4.head.os = u3 >> 8), 512 & r4.flags && (E2[0] = 255 & u3, E2[1] = u3 >>> 8 & 255, r4.check = B2(r4.check, E2, 2, 0)), l3 = u3 = 0, r4.mode = 5; case 5: if (1024 & r4.flags) { for (; l3 < 16; ) { if (0 === o3) break e; o3--, u3 += n4[s3++] << l3, l3 += 8; } r4.length = u3, r4.head && (r4.head.extra_len = u3), 512 & r4.flags && (E2[0] = 255 & u3, E2[1] = u3 >>> 8 & 255, r4.check = B2(r4.check, E2, 2, 0)), l3 = u3 = 0; } else r4.head && (r4.head.extra = null); r4.mode = 6; case 6: if (1024 & r4.flags && (o3 < (d2 = r4.length) && (d2 = o3), d2 && (r4.head && (k2 = r4.head.extra_len - r4.length, r4.head.extra || (r4.head.extra = new Array(r4.head.extra_len)), I2.arraySet(r4.head.extra, n4, s3, d2, k2)), 512 & r4.flags && (r4.check = B2(r4.check, n4, d2, s3)), o3 -= d2, s3 += d2, r4.length -= d2), r4.length)) break e; r4.length = 0, r4.mode = 7; case 7: if (2048 & r4.flags) { if (0 === o3) break e; for (d2 = 0; k2 = n4[s3 + d2++], r4.head && k2 && r4.length < 65536 && (r4.head.name += String.fromCharCode(k2)), k2 && d2 < o3; ) ; if (512 & r4.flags && (r4.check = B2(r4.check, n4, d2, s3)), o3 -= d2, s3 += d2, k2) break e; } else r4.head && (r4.head.name = null); r4.length = 0, r4.mode = 8; case 8: if (4096 & r4.flags) { if (0 === o3) break e; for (d2 = 0; k2 = n4[s3 + d2++], r4.head && k2 && r4.length < 65536 && (r4.head.comment += String.fromCharCode(k2)), k2 && d2 < o3; ) ; if (512 & r4.flags && (r4.check = B2(r4.check, n4, d2, s3)), o3 -= d2, s3 += d2, k2) break e; } else r4.head && (r4.head.comment = null); r4.mode = 9; case 9: if (512 & r4.flags) { for (; l3 < 16; ) { if (0 === o3) break e; o3--, u3 += n4[s3++] << l3, l3 += 8; } if (u3 !== (65535 & r4.check)) { e4.msg = "header crc mismatch", r4.mode = 30; break; } l3 = u3 = 0; } r4.head && (r4.head.hcrc = r4.flags >> 9 & 1, r4.head.done = true), e4.adler = r4.check = 0, r4.mode = 12; break; case 10: for (; l3 < 32; ) { if (0 === o3) break e; o3--, u3 += n4[s3++] << l3, l3 += 8; } e4.adler = r4.check = L2(u3), l3 = u3 = 0, r4.mode = 11; case 11: if (0 === r4.havedict) return e4.next_out = a3, e4.avail_out = h3, e4.next_in = s3, e4.avail_in = o3, r4.hold = u3, r4.bits = l3, 2; e4.adler = r4.check = 1, r4.mode = 12; case 12: if (5 === t3 || 6 === t3) break e; case 13: if (r4.last) { u3 >>>= 7 & l3, l3 -= 7 & l3, r4.mode = 27; break; } for (; l3 < 3; ) { if (0 === o3) break e; o3--, u3 += n4[s3++] << l3, l3 += 8; } switch (r4.last = 1 & u3, l3 -= 1, 3 & (u3 >>>= 1)) { case 0: r4.mode = 14; break; case 1: if (j2(r4), r4.mode = 20, 6 !== t3) break; u3 >>>= 2, l3 -= 2; break e; case 2: r4.mode = 17; break; case 3: e4.msg = "invalid block type", r4.mode = 30; } u3 >>>= 2, l3 -= 2; break; case 14: for (u3 >>>= 7 & l3, l3 -= 7 & l3; l3 < 32; ) { if (0 === o3) break e; o3--, u3 += n4[s3++] << l3, l3 += 8; } if ((65535 & u3) != (u3 >>> 16 ^ 65535)) { e4.msg = "invalid stored block lengths", r4.mode = 30; break; } if (r4.length = 65535 & u3, l3 = u3 = 0, r4.mode = 15, 6 === t3) break e; case 15: r4.mode = 16; case 16: if (d2 = r4.length) { if (o3 < d2 && (d2 = o3), h3 < d2 && (d2 = h3), 0 === d2) break e; I2.arraySet(i4, n4, s3, d2, a3), o3 -= d2, s3 += d2, h3 -= d2, a3 += d2, r4.length -= d2; break; } r4.mode = 12; break; case 17: for (; l3 < 14; ) { if (0 === o3) break e; o3--, u3 += n4[s3++] << l3, l3 += 8; } if (r4.nlen = 257 + (31 & u3), u3 >>>= 5, l3 -= 5, r4.ndist = 1 + (31 & u3), u3 >>>= 5, l3 -= 5, r4.ncode = 4 + (15 & u3), u3 >>>= 4, l3 -= 4, 286 < r4.nlen || 30 < r4.ndist) { e4.msg = "too many length or distance symbols", r4.mode = 30; break; } r4.have = 0, r4.mode = 18; case 18: for (; r4.have < r4.ncode; ) { for (; l3 < 3; ) { if (0 === o3) break e; o3--, u3 += n4[s3++] << l3, l3 += 8; } r4.lens[A2[r4.have++]] = 7 & u3, u3 >>>= 3, l3 -= 3; } for (; r4.have < 19; ) r4.lens[A2[r4.have++]] = 0; if (r4.lencode = r4.lendyn, r4.lenbits = 7, S2 = { bits: r4.lenbits }, x2 = T2(0, r4.lens, 0, 19, r4.lencode, 0, r4.work, S2), r4.lenbits = S2.bits, x2) { e4.msg = "invalid code lengths set", r4.mode = 30; break; } r4.have = 0, r4.mode = 19; case 19: for (; r4.have < r4.nlen + r4.ndist; ) { for (; g2 = (C2 = r4.lencode[u3 & (1 << r4.lenbits) - 1]) >>> 16 & 255, b2 = 65535 & C2, !((_2 = C2 >>> 24) <= l3); ) { if (0 === o3) break e; o3--, u3 += n4[s3++] << l3, l3 += 8; } if (b2 < 16) u3 >>>= _2, l3 -= _2, r4.lens[r4.have++] = b2; else { if (16 === b2) { for (z2 = _2 + 2; l3 < z2; ) { if (0 === o3) break e; o3--, u3 += n4[s3++] << l3, l3 += 8; } if (u3 >>>= _2, l3 -= _2, 0 === r4.have) { e4.msg = "invalid bit length repeat", r4.mode = 30; break; } k2 = r4.lens[r4.have - 1], d2 = 3 + (3 & u3), u3 >>>= 2, l3 -= 2; } else if (17 === b2) { for (z2 = _2 + 3; l3 < z2; ) { if (0 === o3) break e; o3--, u3 += n4[s3++] << l3, l3 += 8; } l3 -= _2, k2 = 0, d2 = 3 + (7 & (u3 >>>= _2)), u3 >>>= 3, l3 -= 3; } else { for (z2 = _2 + 7; l3 < z2; ) { if (0 === o3) break e; o3--, u3 += n4[s3++] << l3, l3 += 8; } l3 -= _2, k2 = 0, d2 = 11 + (127 & (u3 >>>= _2)), u3 >>>= 7, l3 -= 7; } if (r4.have + d2 > r4.nlen + r4.ndist) { e4.msg = "invalid bit length repeat", r4.mode = 30; break; } for (; d2--; ) r4.lens[r4.have++] = k2; } } if (30 === r4.mode) break; if (0 === r4.lens[256]) { e4.msg = "invalid code -- missing end-of-block", r4.mode = 30; break; } if (r4.lenbits = 9, S2 = { bits: r4.lenbits }, x2 = T2(D, r4.lens, 0, r4.nlen, r4.lencode, 0, r4.work, S2), r4.lenbits = S2.bits, x2) { e4.msg = "invalid literal/lengths set", r4.mode = 30; break; } if (r4.distbits = 6, r4.distcode = r4.distdyn, S2 = { bits: r4.distbits }, x2 = T2(F, r4.lens, r4.nlen, r4.ndist, r4.distcode, 0, r4.work, S2), r4.distbits = S2.bits, x2) { e4.msg = "invalid distances set", r4.mode = 30; break; } if (r4.mode = 20, 6 === t3) break e; case 20: r4.mode = 21; case 21: if (6 <= o3 && 258 <= h3) { e4.next_out = a3, e4.avail_out = h3, e4.next_in = s3, e4.avail_in = o3, r4.hold = u3, r4.bits = l3, R2(e4, c4), a3 = e4.next_out, i4 = e4.output, h3 = e4.avail_out, s3 = e4.next_in, n4 = e4.input, o3 = e4.avail_in, u3 = r4.hold, l3 = r4.bits, 12 === r4.mode && (r4.back = -1); break; } for (r4.back = 0; g2 = (C2 = r4.lencode[u3 & (1 << r4.lenbits) - 1]) >>> 16 & 255, b2 = 65535 & C2, !((_2 = C2 >>> 24) <= l3); ) { if (0 === o3) break e; o3--, u3 += n4[s3++] << l3, l3 += 8; } if (g2 && 0 == (240 & g2)) { for (v2 = _2, y2 = g2, w = b2; g2 = (C2 = r4.lencode[w + ((u3 & (1 << v2 + y2) - 1) >> v2)]) >>> 16 & 255, b2 = 65535 & C2, !(v2 + (_2 = C2 >>> 24) <= l3); ) { if (0 === o3) break e; o3--, u3 += n4[s3++] << l3, l3 += 8; } u3 >>>= v2, l3 -= v2, r4.back += v2; } if (u3 >>>= _2, l3 -= _2, r4.back += _2, r4.length = b2, 0 === g2) { r4.mode = 26; break; } if (32 & g2) { r4.back = -1, r4.mode = 12; break; } if (64 & g2) { e4.msg = "invalid literal/length code", r4.mode = 30; break; } r4.extra = 15 & g2, r4.mode = 22; case 22: if (r4.extra) { for (z2 = r4.extra; l3 < z2; ) { if (0 === o3) break e; o3--, u3 += n4[s3++] << l3, l3 += 8; } r4.length += u3 & (1 << r4.extra) - 1, u3 >>>= r4.extra, l3 -= r4.extra, r4.back += r4.extra; } r4.was = r4.length, r4.mode = 23; case 23: for (; g2 = (C2 = r4.distcode[u3 & (1 << r4.distbits) - 1]) >>> 16 & 255, b2 = 65535 & C2, !((_2 = C2 >>> 24) <= l3); ) { if (0 === o3) break e; o3--, u3 += n4[s3++] << l3, l3 += 8; } if (0 == (240 & g2)) { for (v2 = _2, y2 = g2, w = b2; g2 = (C2 = r4.distcode[w + ((u3 & (1 << v2 + y2) - 1) >> v2)]) >>> 16 & 255, b2 = 65535 & C2, !(v2 + (_2 = C2 >>> 24) <= l3); ) { if (0 === o3) break e; o3--, u3 += n4[s3++] << l3, l3 += 8; } u3 >>>= v2, l3 -= v2, r4.back += v2; } if (u3 >>>= _2, l3 -= _2, r4.back += _2, 64 & g2) { e4.msg = "invalid distance code", r4.mode = 30; break; } r4.offset = b2, r4.extra = 15 & g2, r4.mode = 24; case 24: if (r4.extra) { for (z2 = r4.extra; l3 < z2; ) { if (0 === o3) break e; o3--, u3 += n4[s3++] << l3, l3 += 8; } r4.offset += u3 & (1 << r4.extra) - 1, u3 >>>= r4.extra, l3 -= r4.extra, r4.back += r4.extra; } if (r4.offset > r4.dmax) { e4.msg = "invalid distance too far back", r4.mode = 30; break; } r4.mode = 25; case 25: if (0 === h3) break e; if (d2 = c4 - h3, r4.offset > d2) { if ((d2 = r4.offset - d2) > r4.whave && r4.sane) { e4.msg = "invalid distance too far back", r4.mode = 30; break; } p2 = d2 > r4.wnext ? (d2 -= r4.wnext, r4.wsize - d2) : r4.wnext - d2, d2 > r4.length && (d2 = r4.length), m2 = r4.window; } else m2 = i4, p2 = a3 - r4.offset, d2 = r4.length; for (h3 < d2 && (d2 = h3), h3 -= d2, r4.length -= d2; i4[a3++] = m2[p2++], --d2; ) ; 0 === r4.length && (r4.mode = 21); break; case 26: if (0 === h3) break e; i4[a3++] = r4.length, h3--, r4.mode = 21; break; case 27: if (r4.wrap) { for (; l3 < 32; ) { if (0 === o3) break e; o3--, u3 |= n4[s3++] << l3, l3 += 8; } if (c4 -= h3, e4.total_out += c4, r4.total += c4, c4 && (e4.adler = r4.check = r4.flags ? B2(r4.check, i4, c4, a3 - c4) : O(r4.check, i4, c4, a3 - c4)), c4 = h3, (r4.flags ? u3 : L2(u3)) !== r4.check) { e4.msg = "incorrect data check", r4.mode = 30; break; } l3 = u3 = 0; } r4.mode = 28; case 28: if (r4.wrap && r4.flags) { for (; l3 < 32; ) { if (0 === o3) break e; o3--, u3 += n4[s3++] << l3, l3 += 8; } if (u3 !== (4294967295 & r4.total)) { e4.msg = "incorrect length check", r4.mode = 30; break; } l3 = u3 = 0; } r4.mode = 29; case 29: x2 = 1; break e; case 30: x2 = -3; break e; case 31: return -4; case 32: default: return U; } return e4.next_out = a3, e4.avail_out = h3, e4.next_in = s3, e4.avail_in = o3, r4.hold = u3, r4.bits = l3, (r4.wsize || c4 !== e4.avail_out && r4.mode < 30 && (r4.mode < 27 || 4 !== t3)) && Z(e4, e4.output, e4.next_out, c4 - e4.avail_out) ? (r4.mode = 31, -4) : (f3 -= e4.avail_in, c4 -= e4.avail_out, e4.total_in += f3, e4.total_out += c4, r4.total += c4, r4.wrap && c4 && (e4.adler = r4.check = r4.flags ? B2(r4.check, i4, c4, e4.next_out - c4) : O(r4.check, i4, c4, e4.next_out - c4)), e4.data_type = r4.bits + (r4.last ? 64 : 0) + (12 === r4.mode ? 128 : 0) + (20 === r4.mode || 15 === r4.mode ? 256 : 0), (0 == f3 && 0 === c4 || 4 === t3) && x2 === N2 && (x2 = -5), x2); }, r3.inflateEnd = function(e4) { if (!e4 || !e4.state) return U; var t3 = e4.state; return t3.window && (t3.window = null), e4.state = null, N2; }, r3.inflateGetHeader = function(e4, t3) { var r4; return e4 && e4.state ? 0 == (2 & (r4 = e4.state).wrap) ? U : ((r4.head = t3).done = false, N2) : U; }, r3.inflateSetDictionary = function(e4, t3) { var r4, n4 = t3.length; return e4 && e4.state ? 0 !== (r4 = e4.state).wrap && 11 !== r4.mode ? U : 11 === r4.mode && O(1, t3, n4, 0) !== r4.check ? -3 : Z(e4, t3, n4, n4) ? (r4.mode = 31, -4) : (r4.havedict = 1, N2) : U; }, r3.inflateInfo = "pako inflate (from Nodeca project)"; }, { "../utils/common": 41, "./adler32": 43, "./crc32": 45, "./inffast": 48, "./inftrees": 50 }], 50: [function(e3, t2, r3) { var D = e3("../utils/common"), F = [3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31, 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0], N2 = [16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 18, 19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 16, 72, 78], U = [1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193, 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145, 8193, 12289, 16385, 24577, 0, 0], P2 = [16, 16, 16, 16, 17, 17, 18, 18, 19, 19, 20, 20, 21, 21, 22, 22, 23, 23, 24, 24, 25, 25, 26, 26, 27, 27, 28, 28, 29, 29, 64, 64]; t2.exports = function(e4, t3, r4, n3, i3, s2, a2, o2) { var h2, u2, l2, f2, c3, d2, p2, m2, _2, g2 = o2.bits, b2 = 0, v2 = 0, y2 = 0, w = 0, k2 = 0, x2 = 0, S2 = 0, z2 = 0, C2 = 0, E2 = 0, A2 = null, I2 = 0, O = new D.Buf16(16), B2 = new D.Buf16(16), R2 = null, T2 = 0; for (b2 = 0; b2 <= 15; b2++) O[b2] = 0; for (v2 = 0; v2 < n3; v2++) O[t3[r4 + v2]]++; for (k2 = g2, w = 15; 1 <= w && 0 === O[w]; w--) ; if (w < k2 && (k2 = w), 0 === w) return i3[s2++] = 20971520, i3[s2++] = 20971520, o2.bits = 1, 0; for (y2 = 1; y2 < w && 0 === O[y2]; y2++) ; for (k2 < y2 && (k2 = y2), b2 = z2 = 1; b2 <= 15; b2++) if (z2 <<= 1, (z2 -= O[b2]) < 0) return -1; if (0 < z2 && (0 === e4 || 1 !== w)) return -1; for (B2[1] = 0, b2 = 1; b2 < 15; b2++) B2[b2 + 1] = B2[b2] + O[b2]; for (v2 = 0; v2 < n3; v2++) 0 !== t3[r4 + v2] && (a2[B2[t3[r4 + v2]]++] = v2); if (d2 = 0 === e4 ? (A2 = R2 = a2, 19) : 1 === e4 ? (A2 = F, I2 -= 257, R2 = N2, T2 -= 257, 256) : (A2 = U, R2 = P2, -1), b2 = y2, c3 = s2, S2 = v2 = E2 = 0, l2 = -1, f2 = (C2 = 1 << (x2 = k2)) - 1, 1 === e4 && 852 < C2 || 2 === e4 && 592 < C2) return 1; for (; ; ) { for (p2 = b2 - S2, _2 = a2[v2] < d2 ? (m2 = 0, a2[v2]) : a2[v2] > d2 ? (m2 = R2[T2 + a2[v2]], A2[I2 + a2[v2]]) : (m2 = 96, 0), h2 = 1 << b2 - S2, y2 = u2 = 1 << x2; i3[c3 + (E2 >> S2) + (u2 -= h2)] = p2 << 24 | m2 << 16 | _2 | 0, 0 !== u2; ) ; for (h2 = 1 << b2 - 1; E2 & h2; ) h2 >>= 1; if (0 !== h2 ? (E2 &= h2 - 1, E2 += h2) : E2 = 0, v2++, 0 == --O[b2]) { if (b2 === w) break; b2 = t3[r4 + a2[v2]]; } if (k2 < b2 && (E2 & f2) !== l2) { for (0 === S2 && (S2 = k2), c3 += y2, z2 = 1 << (x2 = b2 - S2); x2 + S2 < w && !((z2 -= O[x2 + S2]) <= 0); ) x2++, z2 <<= 1; if (C2 += 1 << x2, 1 === e4 && 852 < C2 || 2 === e4 && 592 < C2) return 1; i3[l2 = E2 & f2] = k2 << 24 | x2 << 16 | c3 - s2 | 0; } } return 0 !== E2 && (i3[c3 + E2] = b2 - S2 << 24 | 64 << 16 | 0), o2.bits = k2, 0; }; }, { "../utils/common": 41 }], 51: [function(e3, t2, r3) { t2.exports = { 2: "need dictionary", 1: "stream end", 0: "", "-1": "file error", "-2": "stream error", "-3": "data error", "-4": "insufficient memory", "-5": "buffer error", "-6": "incompatible version" }; }, {}], 52: [function(e3, t2, r3) { var i3 = e3("../utils/common"), o2 = 0, h2 = 1; function n3(e4) { for (var t3 = e4.length; 0 <= --t3; ) e4[t3] = 0; } var s2 = 0, a2 = 29, u2 = 256, l2 = u2 + 1 + a2, f2 = 30, c3 = 19, _2 = 2 * l2 + 1, g2 = 15, d2 = 16, p2 = 7, m2 = 256, b2 = 16, v2 = 17, y2 = 18, w = [0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0], k2 = [0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13], x2 = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 3, 7], S2 = [16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15], z2 = new Array(2 * (l2 + 2)); n3(z2); var C2 = new Array(2 * f2); n3(C2); var E2 = new Array(512); n3(E2); var A2 = new Array(256); n3(A2); var I2 = new Array(a2); n3(I2); var O, B2, R2, T2 = new Array(f2); function D(e4, t3, r4, n4, i4) { this.static_tree = e4, this.extra_bits = t3, this.extra_base = r4, this.elems = n4, this.max_length = i4, this.has_stree = e4 && e4.length; } function F(e4, t3) { this.dyn_tree = e4, this.max_code = 0, this.stat_desc = t3; } function N2(e4) { return e4 < 256 ? E2[e4] : E2[256 + (e4 >>> 7)]; } function U(e4, t3) { e4.pending_buf[e4.pending++] = 255 & t3, e4.pending_buf[e4.pending++] = t3 >>> 8 & 255; } function P2(e4, t3, r4) { e4.bi_valid > d2 - r4 ? (e4.bi_buf |= t3 << e4.bi_valid & 65535, U(e4, e4.bi_buf), e4.bi_buf = t3 >> d2 - e4.bi_valid, e4.bi_valid += r4 - d2) : (e4.bi_buf |= t3 << e4.bi_valid & 65535, e4.bi_valid += r4); } function L2(e4, t3, r4) { P2(e4, r4[2 * t3], r4[2 * t3 + 1]); } function j2(e4, t3) { for (var r4 = 0; r4 |= 1 & e4, e4 >>>= 1, r4 <<= 1, 0 < --t3; ) ; return r4 >>> 1; } function Z(e4, t3, r4) { var n4, i4, s3 = new Array(g2 + 1), a3 = 0; for (n4 = 1; n4 <= g2; n4++) s3[n4] = a3 = a3 + r4[n4 - 1] << 1; for (i4 = 0; i4 <= t3; i4++) { var o3 = e4[2 * i4 + 1]; 0 !== o3 && (e4[2 * i4] = j2(s3[o3]++, o3)); } } function W(e4) { var t3; for (t3 = 0; t3 < l2; t3++) e4.dyn_ltree[2 * t3] = 0; for (t3 = 0; t3 < f2; t3++) e4.dyn_dtree[2 * t3] = 0; for (t3 = 0; t3 < c3; t3++) e4.bl_tree[2 * t3] = 0; e4.dyn_ltree[2 * m2] = 1, e4.opt_len = e4.static_len = 0, e4.last_lit = e4.matches = 0; } function M2(e4) { 8 < e4.bi_valid ? U(e4, e4.bi_buf) : 0 < e4.bi_valid && (e4.pending_buf[e4.pending++] = e4.bi_buf), e4.bi_buf = 0, e4.bi_valid = 0; } function H2(e4, t3, r4, n4) { var i4 = 2 * t3, s3 = 2 * r4; return e4[i4] < e4[s3] || e4[i4] === e4[s3] && n4[t3] <= n4[r4]; } function G(e4, t3, r4) { for (var n4 = e4.heap[r4], i4 = r4 << 1; i4 <= e4.heap_len && (i4 < e4.heap_len && H2(t3, e4.heap[i4 + 1], e4.heap[i4], e4.depth) && i4++, !H2(t3, n4, e4.heap[i4], e4.depth)); ) e4.heap[r4] = e4.heap[i4], r4 = i4, i4 <<= 1; e4.heap[r4] = n4; } function K(e4, t3, r4) { var n4, i4, s3, a3, o3 = 0; if (0 !== e4.last_lit) for (; n4 = e4.pending_buf[e4.d_buf + 2 * o3] << 8 | e4.pending_buf[e4.d_buf + 2 * o3 + 1], i4 = e4.pending_buf[e4.l_buf + o3], o3++, 0 === n4 ? L2(e4, i4, t3) : (L2(e4, (s3 = A2[i4]) + u2 + 1, t3), 0 !== (a3 = w[s3]) && P2(e4, i4 -= I2[s3], a3), L2(e4, s3 = N2(--n4), r4), 0 !== (a3 = k2[s3]) && P2(e4, n4 -= T2[s3], a3)), o3 < e4.last_lit; ) ; L2(e4, m2, t3); } function Y(e4, t3) { var r4, n4, i4, s3 = t3.dyn_tree, a3 = t3.stat_desc.static_tree, o3 = t3.stat_desc.has_stree, h3 = t3.stat_desc.elems, u3 = -1; for (e4.heap_len = 0, e4.heap_max = _2, r4 = 0; r4 < h3; r4++) 0 !== s3[2 * r4] ? (e4.heap[++e4.heap_len] = u3 = r4, e4.depth[r4] = 0) : s3[2 * r4 + 1] = 0; for (; e4.heap_len < 2; ) s3[2 * (i4 = e4.heap[++e4.heap_len] = u3 < 2 ? ++u3 : 0)] = 1, e4.depth[i4] = 0, e4.opt_len--, o3 && (e4.static_len -= a3[2 * i4 + 1]); for (t3.max_code = u3, r4 = e4.heap_len >> 1; 1 <= r4; r4--) G(e4, s3, r4); for (i4 = h3; r4 = e4.heap[1], e4.heap[1] = e4.heap[e4.heap_len--], G(e4, s3, 1), n4 = e4.heap[1], e4.heap[--e4.heap_max] = r4, e4.heap[--e4.heap_max] = n4, s3[2 * i4] = s3[2 * r4] + s3[2 * n4], e4.depth[i4] = (e4.depth[r4] >= e4.depth[n4] ? e4.depth[r4] : e4.depth[n4]) + 1, s3[2 * r4 + 1] = s3[2 * n4 + 1] = i4, e4.heap[1] = i4++, G(e4, s3, 1), 2 <= e4.heap_len; ) ; e4.heap[--e4.heap_max] = e4.heap[1], function(e5, t4) { var r5, n5, i5, s4, a4, o4, h4 = t4.dyn_tree, u4 = t4.max_code, l3 = t4.stat_desc.static_tree, f3 = t4.stat_desc.has_stree, c4 = t4.stat_desc.extra_bits, d3 = t4.stat_desc.extra_base, p3 = t4.stat_desc.max_length, m3 = 0; for (s4 = 0; s4 <= g2; s4++) e5.bl_count[s4] = 0; for (h4[2 * e5.heap[e5.heap_max] + 1] = 0, r5 = e5.heap_max + 1; r5 < _2; r5++) p3 < (s4 = h4[2 * h4[2 * (n5 = e5.heap[r5]) + 1] + 1] + 1) && (s4 = p3, m3++), h4[2 * n5 + 1] = s4, u4 < n5 || (e5.bl_count[s4]++, a4 = 0, d3 <= n5 && (a4 = c4[n5 - d3]), o4 = h4[2 * n5], e5.opt_len += o4 * (s4 + a4), f3 && (e5.static_len += o4 * (l3[2 * n5 + 1] + a4))); if (0 !== m3) { do { for (s4 = p3 - 1; 0 === e5.bl_count[s4]; ) s4--; e5.bl_count[s4]--, e5.bl_count[s4 + 1] += 2, e5.bl_count[p3]--, m3 -= 2; } while (0 < m3); for (s4 = p3; 0 !== s4; s4--) for (n5 = e5.bl_count[s4]; 0 !== n5; ) u4 < (i5 = e5.heap[--r5]) || (h4[2 * i5 + 1] !== s4 && (e5.opt_len += (s4 - h4[2 * i5 + 1]) * h4[2 * i5], h4[2 * i5 + 1] = s4), n5--); } }(e4, t3), Z(s3, u3, e4.bl_count); } function X(e4, t3, r4) { var n4, i4, s3 = -1, a3 = t3[1], o3 = 0, h3 = 7, u3 = 4; for (0 === a3 && (h3 = 138, u3 = 3), t3[2 * (r4 + 1) + 1] = 65535, n4 = 0; n4 <= r4; n4++) i4 = a3, a3 = t3[2 * (n4 + 1) + 1], ++o3 < h3 && i4 === a3 || (o3 < u3 ? e4.bl_tree[2 * i4] += o3 : 0 !== i4 ? (i4 !== s3 && e4.bl_tree[2 * i4]++, e4.bl_tree[2 * b2]++) : o3 <= 10 ? e4.bl_tree[2 * v2]++ : e4.bl_tree[2 * y2]++, s3 = i4, u3 = (o3 = 0) === a3 ? (h3 = 138, 3) : i4 === a3 ? (h3 = 6, 3) : (h3 = 7, 4)); } function V2(e4, t3, r4) { var n4, i4, s3 = -1, a3 = t3[1], o3 = 0, h3 = 7, u3 = 4; for (0 === a3 && (h3 = 138, u3 = 3), n4 = 0; n4 <= r4; n4++) if (i4 = a3, a3 = t3[2 * (n4 + 1) + 1], !(++o3 < h3 && i4 === a3)) { if (o3 < u3) for (; L2(e4, i4, e4.bl_tree), 0 != --o3; ) ; else 0 !== i4 ? (i4 !== s3 && (L2(e4, i4, e4.bl_tree), o3--), L2(e4, b2, e4.bl_tree), P2(e4, o3 - 3, 2)) : o3 <= 10 ? (L2(e4, v2, e4.bl_tree), P2(e4, o3 - 3, 3)) : (L2(e4, y2, e4.bl_tree), P2(e4, o3 - 11, 7)); s3 = i4, u3 = (o3 = 0) === a3 ? (h3 = 138, 3) : i4 === a3 ? (h3 = 6, 3) : (h3 = 7, 4); } } n3(T2); var q = false; function J(e4, t3, r4, n4) { P2(e4, (s2 << 1) + (n4 ? 1 : 0), 3), function(e5, t4, r5, n5) { M2(e5), U(e5, r5), U(e5, ~r5), i3.arraySet(e5.pending_buf, e5.window, t4, r5, e5.pending), e5.pending += r5; }(e4, t3, r4); } r3._tr_init = function(e4) { q || (function() { var e5, t3, r4, n4, i4, s3 = new Array(g2 + 1); for (n4 = r4 = 0; n4 < a2 - 1; n4++) for (I2[n4] = r4, e5 = 0; e5 < 1 << w[n4]; e5++) A2[r4++] = n4; for (A2[r4 - 1] = n4, n4 = i4 = 0; n4 < 16; n4++) for (T2[n4] = i4, e5 = 0; e5 < 1 << k2[n4]; e5++) E2[i4++] = n4; for (i4 >>= 7; n4 < f2; n4++) for (T2[n4] = i4 << 7, e5 = 0; e5 < 1 << k2[n4] - 7; e5++) E2[256 + i4++] = n4; for (t3 = 0; t3 <= g2; t3++) s3[t3] = 0; for (e5 = 0; e5 <= 143; ) z2[2 * e5 + 1] = 8, e5++, s3[8]++; for (; e5 <= 255; ) z2[2 * e5 + 1] = 9, e5++, s3[9]++; for (; e5 <= 279; ) z2[2 * e5 + 1] = 7, e5++, s3[7]++; for (; e5 <= 287; ) z2[2 * e5 + 1] = 8, e5++, s3[8]++; for (Z(z2, l2 + 1, s3), e5 = 0; e5 < f2; e5++) C2[2 * e5 + 1] = 5, C2[2 * e5] = j2(e5, 5); O = new D(z2, w, u2 + 1, l2, g2), B2 = new D(C2, k2, 0, f2, g2), R2 = new D(new Array(0), x2, 0, c3, p2); }(), q = true), e4.l_desc = new F(e4.dyn_ltree, O), e4.d_desc = new F(e4.dyn_dtree, B2), e4.bl_desc = new F(e4.bl_tree, R2), e4.bi_buf = 0, e4.bi_valid = 0, W(e4); }, r3._tr_stored_block = J, r3._tr_flush_block = function(e4, t3, r4, n4) { var i4, s3, a3 = 0; 0 < e4.level ? (2 === e4.strm.data_type && (e4.strm.data_type = function(e5) { var t4, r5 = 4093624447; for (t4 = 0; t4 <= 31; t4++, r5 >>>= 1) if (1 & r5 && 0 !== e5.dyn_ltree[2 * t4]) return o2; if (0 !== e5.dyn_ltree[18] || 0 !== e5.dyn_ltree[20] || 0 !== e5.dyn_ltree[26]) return h2; for (t4 = 32; t4 < u2; t4++) if (0 !== e5.dyn_ltree[2 * t4]) return h2; return o2; }(e4)), Y(e4, e4.l_desc), Y(e4, e4.d_desc), a3 = function(e5) { var t4; for (X(e5, e5.dyn_ltree, e5.l_desc.max_code), X(e5, e5.dyn_dtree, e5.d_desc.max_code), Y(e5, e5.bl_desc), t4 = c3 - 1; 3 <= t4 && 0 === e5.bl_tree[2 * S2[t4] + 1]; t4--) ; return e5.opt_len += 3 * (t4 + 1) + 5 + 5 + 4, t4; }(e4), i4 = e4.opt_len + 3 + 7 >>> 3, (s3 = e4.static_len + 3 + 7 >>> 3) <= i4 && (i4 = s3)) : i4 = s3 = r4 + 5, r4 + 4 <= i4 && -1 !== t3 ? J(e4, t3, r4, n4) : 4 === e4.strategy || s3 === i4 ? (P2(e4, 2 + (n4 ? 1 : 0), 3), K(e4, z2, C2)) : (P2(e4, 4 + (n4 ? 1 : 0), 3), function(e5, t4, r5, n5) { var i5; for (P2(e5, t4 - 257, 5), P2(e5, r5 - 1, 5), P2(e5, n5 - 4, 4), i5 = 0; i5 < n5; i5++) P2(e5, e5.bl_tree[2 * S2[i5] + 1], 3); V2(e5, e5.dyn_ltree, t4 - 1), V2(e5, e5.dyn_dtree, r5 - 1); }(e4, e4.l_desc.max_code + 1, e4.d_desc.max_code + 1, a3 + 1), K(e4, e4.dyn_ltree, e4.dyn_dtree)), W(e4), n4 && M2(e4); }, r3._tr_tally = function(e4, t3, r4) { return e4.pending_buf[e4.d_buf + 2 * e4.last_lit] = t3 >>> 8 & 255, e4.pending_buf[e4.d_buf + 2 * e4.last_lit + 1] = 255 & t3, e4.pending_buf[e4.l_buf + e4.last_lit] = 255 & r4, e4.last_lit++, 0 === t3 ? e4.dyn_ltree[2 * r4]++ : (e4.matches++, t3--, e4.dyn_ltree[2 * (A2[r4] + u2 + 1)]++, e4.dyn_dtree[2 * N2(t3)]++), e4.last_lit === e4.lit_bufsize - 1; }, r3._tr_align = function(e4) { P2(e4, 2, 3), L2(e4, m2, z2), function(e5) { 16 === e5.bi_valid ? (U(e5, e5.bi_buf), e5.bi_buf = 0, e5.bi_valid = 0) : 8 <= e5.bi_valid && (e5.pending_buf[e5.pending++] = 255 & e5.bi_buf, e5.bi_buf >>= 8, e5.bi_valid -= 8); }(e4); }; }, { "../utils/common": 41 }], 53: [function(e3, t2, r3) { t2.exports = function() { this.input = null, this.next_in = 0, this.avail_in = 0, this.total_in = 0, this.output = null, this.next_out = 0, this.avail_out = 0, this.total_out = 0, this.msg = "", this.state = null, this.data_type = 2, this.adler = 0; }; }, {}], 54: [function(e3, t2, r3) { (function(e4) { !function(r4, n3) { if (!r4.setImmediate) { var i3, s2, t3, a2, o2 = 1, h2 = {}, u2 = false, l2 = r4.document, e5 = Object.getPrototypeOf && Object.getPrototypeOf(r4); e5 = e5 && e5.setTimeout ? e5 : r4, i3 = "[object process]" === {}.toString.call(r4.process) ? function(e6) { process.nextTick(function() { c3(e6); }); } : function() { if (r4.postMessage && !r4.importScripts) { var e6 = true, t4 = r4.onmessage; return r4.onmessage = function() { e6 = false; }, r4.postMessage("", "*"), r4.onmessage = t4, e6; } }() ? (a2 = "setImmediate$" + Math.random() + "$", r4.addEventListener ? r4.addEventListener("message", d2, false) : r4.attachEvent("onmessage", d2), function(e6) { r4.postMessage(a2 + e6, "*"); }) : r4.MessageChannel ? ((t3 = new MessageChannel()).port1.onmessage = function(e6) { c3(e6.data); }, function(e6) { t3.port2.postMessage(e6); }) : l2 && "onreadystatechange" in l2.createElement("script") ? (s2 = l2.documentElement, function(e6) { var t4 = l2.createElement("script"); t4.onreadystatechange = function() { c3(e6), t4.onreadystatechange = null, s2.removeChild(t4), t4 = null; }, s2.appendChild(t4); }) : function(e6) { setTimeout(c3, 0, e6); }, e5.setImmediate = function(e6) { "function" != typeof e6 && (e6 = new Function("" + e6)); for (var t4 = new Array(arguments.length - 1), r5 = 0; r5 < t4.length; r5++) t4[r5] = arguments[r5 + 1]; var n4 = { callback: e6, args: t4 }; return h2[o2] = n4, i3(o2), o2++; }, e5.clearImmediate = f2; } function f2(e6) { delete h2[e6]; } function c3(e6) { if (u2) setTimeout(c3, 0, e6); else { var t4 = h2[e6]; if (t4) { u2 = true; try { !function(e7) { var t5 = e7.callback, r5 = e7.args; switch (r5.length) { case 0: t5(); break; case 1: t5(r5[0]); break; case 2: t5(r5[0], r5[1]); break; case 3: t5(r5[0], r5[1], r5[2]); break; default: t5.apply(n3, r5); } }(t4); } finally { f2(e6), u2 = false; } } } } function d2(e6) { e6.source === r4 && "string" == typeof e6.data && 0 === e6.data.indexOf(a2) && c3(+e6.data.slice(a2.length)); } }("undefined" == typeof self ? undefined === e4 ? this : e4 : self); }).call(this, "undefined" != typeof commonjsGlobal ? commonjsGlobal : "undefined" != typeof self ? self : "undefined" != typeof window ? window : {}); }, {}] }, {}, [10])(10); }); })(jszip_min); return jszip_min.exports; } var jszip_minExports = requireJszip_min(); const JSZip = /* @__PURE__ */ getDefaultExportFromCjs(jszip_minExports); var FileSaver_min$1 = { exports: {} }; var FileSaver_min = FileSaver_min$1.exports; var hasRequiredFileSaver_min; function requireFileSaver_min() { if (hasRequiredFileSaver_min) return FileSaver_min$1.exports; hasRequiredFileSaver_min = 1; (function(module, exports) { (function(a2, b2) { b2(); })(FileSaver_min, function() { function b2(a3, b3) { return "undefined" == typeof b3 ? b3 = { autoBom: false } : "object" != typeof b3 && (console.warn("Deprecated: Expected third argument to be a object"), b3 = { autoBom: !b3 }), b3.autoBom && /^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(a3.type) ? new Blob(["\uFEFF", a3], { type: a3.type }) : a3; } function c3(a3, b3, c4) { var d3 = new XMLHttpRequest(); d3.open("GET", a3), d3.responseType = "blob", d3.onload = function() { g2(d3.response, b3, c4); }, d3.onerror = function() { console.error("could not download file"); }, d3.send(); } function d2(a3) { var b3 = new XMLHttpRequest(); b3.open("HEAD", a3, false); try { b3.send(); } catch (a4) { } return 200 <= b3.status && 299 >= b3.status; } function e3(a3) { try { a3.dispatchEvent(new MouseEvent("click")); } catch (c4) { var b3 = document.createEvent("MouseEvents"); b3.initMouseEvent("click", true, true, window, 0, 0, 0, 80, 20, false, false, false, false, 0, null), a3.dispatchEvent(b3); } } var f2 = "object" == typeof window && window.window === window ? window : "object" == typeof self && self.self === self ? self : "object" == typeof commonjsGlobal && commonjsGlobal.global === commonjsGlobal ? commonjsGlobal : undefined, a2 = f2.navigator && /Macintosh/.test(navigator.userAgent) && /AppleWebKit/.test(navigator.userAgent) && !/Safari/.test(navigator.userAgent), g2 = f2.saveAs || ("object" != typeof window || window !== f2 ? function() { } : "download" in HTMLAnchorElement.prototype && !a2 ? function(b3, g3, h2) { var i3 = f2.URL || f2.webkitURL, j2 = document.createElement("a"); g3 = g3 || b3.name || "download", j2.download = g3, j2.rel = "noopener", "string" == typeof b3 ? (j2.href = b3, j2.origin === location.origin ? e3(j2) : d2(j2.href) ? c3(b3, g3, h2) : e3(j2, j2.target = "_blank")) : (j2.href = i3.createObjectURL(b3), setTimeout(function() { i3.revokeObjectURL(j2.href); }, 4e4), setTimeout(function() { e3(j2); }, 0)); } : "msSaveOrOpenBlob" in navigator ? function(f3, g3, h2) { if (g3 = g3 || f3.name || "download", "string" != typeof f3) navigator.msSaveOrOpenBlob(b2(f3, h2), g3); else if (d2(f3)) c3(f3, g3, h2); else { var i3 = document.createElement("a"); i3.href = f3, i3.target = "_blank", setTimeout(function() { e3(i3); }); } } : function(b3, d3, e4, g3) { if (g3 = g3 || open("", "_blank"), g3 && (g3.document.title = g3.document.body.innerText = "downloading..."), "string" == typeof b3) return c3(b3, d3, e4); var h2 = "application/octet-stream" === b3.type, i3 = /constructor/i.test(f2.HTMLElement) || f2.safari, j2 = /CriOS\/[\d]+/.test(navigator.userAgent); if ((j2 || h2 && i3 || a2) && "undefined" != typeof FileReader) { var k2 = new FileReader(); k2.onloadend = function() { var a3 = k2.result; a3 = j2 ? a3 : a3.replace(/^data:[^;]*;/, "data:attachment/file;"), g3 ? g3.location.href = a3 : location = a3, g3 = null; }, k2.readAsDataURL(b3); } else { var l2 = f2.URL || f2.webkitURL, m2 = l2.createObjectURL(b3); g3 ? g3.location = m2 : location.href = m2, g3 = null, setTimeout(function() { l2.revokeObjectURL(m2); }, 4e4); } }); f2.saveAs = g2.saveAs = g2, module.exports = g2; }); })(FileSaver_min$1); return FileSaver_min$1.exports; } var FileSaver_minExports = requireFileSaver_min(); const localStorage$1 = localforage.createInstance({ name: "localforage" }); const snapshotStorage = localforage.createInstance({ name: "snapshot" }); const screenshotStorage = localforage.createInstance({ name: "screenshot" }); const hanashiroStorage = localforage.createInstance({ name: "Hanashiro" }); const simplyActivityIds = async (snapshotId) => { const snapshotInfo = await snapshotStorage.getItem(snapshotId); const activityId = snapshotInfo == null ? undefined : snapshotInfo.activityId; if (activityId) { const appId = snapshotInfo.appId; if (activityId.startsWith(appId) && activityId[appId.length] === ".") { const simplyActivityIds2 = activityId.replace(appId, ""); return simplyActivityIds2; } else return false; } else return false; }; const editNode = async (snapshotId, nodeId, options) => { try { const snapshotInfo = await snapshotStorage.getItem(snapshotId); const nodes = snapshotInfo.nodes; const nodeAttr = nodes[nodeId].attr; options.forEach( (option) => nodeAttr[option.target] = option.value ); nodes[nodeId].attr = nodeAttr; snapshotInfo.nodes = nodes; await snapshotStorage.setItem(snapshotId, snapshotInfo); return true; } catch { return false; } }; const getScreenInfo = async (snapshotId) => { const snapshotInfo = await snapshotStorage.getItem(snapshotId); return { width: snapshotInfo.screenWidth, height: snapshotInfo.screenHeight }; }; const getScreenshot = async (snapshotId) => { return await screenshotStorage.getItem(snapshotId); }; const replaceScreenshot = async (snapshotId, image) => { await screenshotStorage.setItem(snapshotId, image); }; const getNodeAttr = async (snapshotId, nodeId, target) => { const snapshotInfo = await snapshotStorage.getItem(snapshotId); const nodes = snapshotInfo.nodes; const nodeAttr = nodes[nodeId].attr; return nodeAttr[target]; }; const downloadSnapshot = async (snapshotId) => { const snapshotInfo = await snapshotStorage.getItem(snapshotId); const screenshot = await screenshotStorage.getItem(snapshotId); const jszip = new JSZip(); jszip.file( `snapshot-${snapshotId}.json`, JSON.stringify(snapshotInfo, undefined, 2) ); jszip.file(`screenshot-${snapshotId}.png`, screenshot); jszip.generateAsync({ type: "blob" }).then((snapshotFile) => { FileSaver_minExports.saveAs(snapshotFile, `snapshot-${snapshotId}.zip`); }); }; const getAutoAction = async (snapshotId) => { const snapshotInfo = await snapshotStorage.getItem(snapshotId); let autoActions = snapshotInfo.autoAction; if (!autoActions) autoActions = { autoSearchSelector: "" }; return autoActions; }; const setAutoAction = async (snapshotId, autoAction2) => { const snapshotInfo = await snapshotStorage.getItem(snapshotId); snapshotInfo.autoAction = autoAction2; await snapshotStorage.setItem(snapshotId, snapshotInfo); }; const setHanashiroSettings = async (item, value) => { await hanashiroStorage.setItem(item, value); }; const getHanashiroSettings = async (item) => { return await hanashiroStorage.getItem(item); }; const getInspectSettings = async () => { return await localStorage$1.getItem("settings"); }; const setInspectSettings = async (newSettings) => { await localStorage$1.setItem("settings", newSettings); }; const rulesKeySort = [ "key", "preKeys", "fastQuery", "matchTime", "actionMaximum", "resetMatch", "priorityTime", "action", "activityIds", "position", "matches", "exampleUrls", "snapshotUrls" ]; if (!await( getHanashiroSettings("selectors"))) await( setHanashiroSettings("selectors", [])); if (!await( getHanashiroSettings("rulesKeySort")) || (await( getHanashiroSettings("rulesKeySort"))).length == 0) { await( setHanashiroSettings("rulesKeySort", rulesKeySort)); } for (const rulesKey of await( getHanashiroSettings( "rulesKeySort" ))) { if (!rulesKeySort.includes(rulesKey)) confirm({ headline: "同步最新rulesKey排序", description: "检测你的rulesKey排序有多余或缺失字段,可能无法使用最新的功能。是否同步?注意:这会丢失你现有的排序设置。", closeOnEsc: true, closeOnOverlayClick: true, confirmText: "同步", cancelText: "取消", onConfirm: async () => await setHanashiroSettings("rulesKeySort", rulesKeySort) }); } if (!await( getInspectSettings())) await( setInspectSettings({ autoUploadImport: false, ignoreUploadWarn: false, ignoreWasmWarn: false, maxShowNodeSize: 2e3 })); Object.defineProperty(window, "Hanashiro", { value: {}, writable: true }); if (await( getHanashiroSettings("hideLoadSnackbar")) === false) { snackbar({ message: "世界第一公主殿下已经降下魔法~", autoCloseDelay: 2e3, placement: "top" }); } const send = (eventName) => { const event = new Event(eventName); window.dispatchEvent(event); }; const receive = (eventName, callback, once) => { window.addEventListener(eventName, callback, { once }); }; const createBarIcon = (icon, tooltip, onclick) => { const iconTooltip = document.createElement("mdui-tooltip"); iconTooltip.content = tooltip; const iconElement = document.createElement("mdui-button-icon"); iconElement.icon = icon; iconElement.style.height = "36px"; iconElement.style.width = "36px"; iconElement.onclick = onclick; iconTooltip.append(iconElement); return iconTooltip; }; const observeElement = (selector, callback, continuous = false) => { let elementExists = false; try { const timer = setInterval(() => { const element = document.querySelector(selector); if (element && !elementExists) { elementExists = true; callback(); } else if (!element) elementExists = false; if (element && !continuous) { clearInterval(timer); } }, 100); } catch (e3) { console.log(e3); } }; const insertBarIcon = (icon) => { const iconBar = document.querySelector("#iconBar"); iconBar.append(icon); }; Object.defineProperty(window, "HatsuneMiku", { value: { event: { send, receive }, utils: { icon: { createBarIcon, insertBarIcon }, common: { observeElement }, storage: { getHanashiroSettings, setHanashiroSettings, getInspectSettings, setInspectSettings }, ui: { snackbar, confirm, dialog } } }, writable: true }); const attrList = [ "id", "vid", "text", "text.length", "desc", "desc.length", "clickable", "focusable", "checkable", "checked", "editable", "longClickable", "visibleToUser", "left", "top", "right", "bottom", "width", "height", "childCount", "index" ]; const copyProxy = new Proxy(navigator.clipboard.writeText, { apply: async (target, thisArg, args) => { const data2 = args[0]; if (data2.startsWith("{") && data2.endsWith("}")) { window.Hanashiro.originRule = args[0]; send("copyEvent"); await new Promise((resolve) => { receive( "modifyEnd", async () => { await Reflect.apply(target, thisArg, [ window.Hanashiro.returnResult ]); snackbar({ message: "注入修改成功", placement: "top", onClosed: () => resolve(true) }); }, true ); }); } else if (data2.startsWith("name=")) { if (await getHanashiroSettings("simplyName") == true) { const fullname = data2.split('"')[1]; const splitedName = fullname.split("."); const name = splitedName[splitedName.length - 1]; await Reflect.apply(target, thisArg, [name]); } else await Reflect.apply(target, thisArg, [data2]); } else if (attrList.filter((attr) => data2.startsWith(`${attr}=`)).length != 0) { await Reflect.apply(target, thisArg, [`[${data2}]`]); } else if (data2.startsWith(window.origin)) { const selectors = await getHanashiroSettings("selectors"); if (selectors.length != 0) { const copiedUrl = new URL(data2); if (copiedUrl.searchParams.has("gkd")) { const selectorBase64 = copiedUrl.searchParams.get("gkd"); prompt({ headline: "备注", description: "给该选择器的备注,留空就用默认的了哦~", confirmText: "就决定是你了!", cancelText: "这个不要保存!", closeOnEsc: true, closeOnOverlayClick: true, onConfirm: async (value) => { selectors.push({ name: value ? value : selectorBase64, base64: selectorBase64, order: 1 }); selectors.sort((a2, b2) => { if (a2.order > b2.order) return -1; else if (a2.order == b2.order) return 0; else return 1; }); await setHanashiroSettings("selectors", selectors); } }).catch(); } } await Reflect.apply(target, thisArg, [data2]); } else await Reflect.apply(target, thisArg, [data2]); } }); navigator.clipboard.writeText = copyProxy; observeElement(".n-button.n-button--default-type.n-button--medium-type", () => { const settingsButton = document.querySelectorAll( ".n-button.n-button--default-type.n-button--medium-type" )[1]; settingsButton.onclick = () => { snackbar({ message: "网页审查工具未实现该功能,脚本粗略替代实现。未来官方实现可能与目前不同,请勿过度依赖。", placement: "top" }); send("openInspectSettings"); }; }); const getSnapshotId = () => { return location.pathname.split("/")[2]; }; const getCurrentNodeId = () => { const currentSelectedNode = document.querySelector( ".n-tree-node-wrapper .n-tree-node--selected" ); if (!currentSelectedNode) return 0; else return Number(currentSelectedNode.getAttribute("data-node-id")); }; const replaceNodeInfo = async () => { const snapshotId = getSnapshotId(); const nodeId = getCurrentNodeId() == -1 ? 0 : getCurrentNodeId(); const text = await getNodeAttr(snapshotId, nodeId, "text"); const desc = await getNodeAttr(snapshotId, nodeId, "desc"); let newText, newDesc; if (text !== null) { newText = ""; for (let i3 = 0; i3 < text.length; i3++) { newText += "*"; } } else newText = null; if (desc !== null) { newDesc = ""; for (let i3 = 0; i3 < desc.length; i3++) { newDesc += "*"; } } else newDesc = null; editNode(snapshotId, nodeId, [ { target: "text", value: newText }, { target: "desc", value: newDesc } ]).then((result) => { if (result) snackbar({ message: "修改成功!你可以选择上传获取导入链接或下载快照分享", placement: "top" }); }); }; const replaceNodeInfo$1 = () => { dialog({ headline: "确认要对该节点打码吗?", description: "进行打码操作会对导入的快照造成无法恢复的修改,如需恢复,需要删除当前快照重新导入。建议你先下载备份!", actions: [ { text: "我再想想" }, { text: "下载快照文件并打码", onClick: () => { return new Promise((resolve, reject) => { snackbar({ message: "开始下载中……下载开始后会自动关闭弹窗", placement: "top" }); downloadSnapshot(getSnapshotId()).then(() => { resolve(); replaceNodeInfo(); }).catch(() => { snackbar({ message: "下载失败", placement: "top" }); reject(); }); }); } }, { text: "直接打码", onClick: () => replaceNodeInfo() } ], closeOnEsc: true, closeOnOverlayClick: true }); }; observeElement( ".n-input-group", () => { if (!document.querySelector("#iconBar")) { const inputGroup = document.querySelector(".n-input-group"); const iconBar = document.createElement("div"); iconBar.id = "iconBar"; const UseSelectorIcon = createBarIcon("search", "搜索选择器", () => { send("openUseSelector"); }); const AddSelectorIcon = createBarIcon("add", "添加选择器", () => { send("openAddSelector"); }); const ManageSelectorsIcon = createBarIcon("edit", "管理选择器", () => { send("openManageSelectors"); }); const ChangeScreenshotIcon = createBarIcon("photo", "更换截图", () => { send("openChangeScreenshot"); }); const SettingsIcon = createBarIcon("settings", "脚本设置", () => { send("openSettings"); }); const autoActionIcon = createBarIcon("edit_note", "自动动作管理", () => { send("openAutoAction"); }); const HelpIcon = createBarIcon("help", "帮助", () => { send("openHelp"); }); const SponsorIcon = createBarIcon("coffee", "捐赠", () => { window.open("https://afdian.com/a/Adpro"); }); iconBar.append( UseSelectorIcon, AddSelectorIcon, ManageSelectorsIcon, ChangeScreenshotIcon, SettingsIcon, autoActionIcon, HelpIcon, SponsorIcon ); inputGroup.insertAdjacentElement("beforebegin", iconBar); } }, true ); observeElement("#app", () => { const app = document.querySelector("#app"); const editNodeIcon = document.createElement("mdui-fab"); editNodeIcon.icon = "edit"; editNodeIcon.variant = "secondary"; editNodeIcon.extended = true; editNodeIcon.textContent = "替换当前节点信息"; editNodeIcon.style.right = "16px"; editNodeIcon.style.bottom = "120px"; editNodeIcon.setAttribute("fixed", ""); editNodeIcon.onclick = replaceNodeInfo$1; const positionIcon = document.createElement("mdui-fab"); positionIcon.icon = "open_with"; positionIcon.variant = "secondary"; positionIcon.extended = true; positionIcon.textContent = "生成坐标"; positionIcon.style.right = "16px"; positionIcon.style.bottom = "60px"; positionIcon.setAttribute("fixed", ""); positionIcon.onclick = () => send("openGeneratePosition"); app.append(editNodeIcon, positionIcon); }); const _hasBuffer = typeof Buffer === "function"; const _TD = typeof TextDecoder === "function" ? new TextDecoder() : undefined; const _TE = typeof TextEncoder === "function" ? new TextEncoder() : undefined; const b64ch = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="; const b64chs = Array.prototype.slice.call(b64ch); const b64tab = ((a2) => { let tab = {}; a2.forEach((c3, i3) => tab[c3] = i3); return tab; })(b64chs); const b64re = /^(?:[A-Za-z\d+\/]{4})*?(?:[A-Za-z\d+\/]{2}(?:==)?|[A-Za-z\d+\/]{3}=?)?$/; const _fromCC = String.fromCharCode.bind(String); const _U8Afrom = typeof Uint8Array.from === "function" ? Uint8Array.from.bind(Uint8Array) : (it) => new Uint8Array(Array.prototype.slice.call(it, 0)); const _mkUriSafe = (src) => src.replace(/=/g, "").replace(/[+\/]/g, (m0) => m0 == "+" ? "-" : "_"); const _tidyB64 = (s2) => s2.replace(/[^A-Za-z0-9\+\/]/g, ""); const btoaPolyfill = (bin) => { let u32, c0, c1, c22, asc = ""; const pad = bin.length % 3; for (let i3 = 0; i3 < bin.length; ) { if ((c0 = bin.charCodeAt(i3++)) > 255 || (c1 = bin.charCodeAt(i3++)) > 255 || (c22 = bin.charCodeAt(i3++)) > 255) throw new TypeError("invalid character found"); u32 = c0 << 16 | c1 << 8 | c22; asc += b64chs[u32 >> 18 & 63] + b64chs[u32 >> 12 & 63] + b64chs[u32 >> 6 & 63] + b64chs[u32 & 63]; } return pad ? asc.slice(0, pad - 3) + "===".substring(pad) : asc; }; const _btoa = typeof btoa === "function" ? (bin) => btoa(bin) : _hasBuffer ? (bin) => Buffer.from(bin, "binary").toString("base64") : btoaPolyfill; const _fromUint8Array = _hasBuffer ? (u8a) => Buffer.from(u8a).toString("base64") : (u8a) => { const maxargs = 4096; let strs = []; for (let i3 = 0, l2 = u8a.length; i3 < l2; i3 += maxargs) { strs.push(_fromCC.apply(null, u8a.subarray(i3, i3 + maxargs))); } return _btoa(strs.join("")); }; const cb_utob = (c3) => { if (c3.length < 2) { var cc2 = c3.charCodeAt(0); return cc2 < 128 ? c3 : cc2 < 2048 ? _fromCC(192 | cc2 >>> 6) + _fromCC(128 | cc2 & 63) : _fromCC(224 | cc2 >>> 12 & 15) + _fromCC(128 | cc2 >>> 6 & 63) + _fromCC(128 | cc2 & 63); } else { var cc2 = 65536 + (c3.charCodeAt(0) - 55296) * 1024 + (c3.charCodeAt(1) - 56320); return _fromCC(240 | cc2 >>> 18 & 7) + _fromCC(128 | cc2 >>> 12 & 63) + _fromCC(128 | cc2 >>> 6 & 63) + _fromCC(128 | cc2 & 63); } }; const re_utob = /[\uD800-\uDBFF][\uDC00-\uDFFFF]|[^\x00-\x7F]/g; const utob = (u2) => u2.replace(re_utob, cb_utob); const _encode = _hasBuffer ? (s2) => Buffer.from(s2, "utf8").toString("base64") : _TE ? (s2) => _fromUint8Array(_TE.encode(s2)) : (s2) => _btoa(utob(s2)); const encode = (src, urlsafe = false) => urlsafe ? _mkUriSafe(_encode(src)) : _encode(src); const encodeURI = (src) => encode(src, true); const re_btou = /[\xC0-\xDF][\x80-\xBF]|[\xE0-\xEF][\x80-\xBF]{2}|[\xF0-\xF7][\x80-\xBF]{3}/g; const cb_btou = (cccc) => { switch (cccc.length) { case 4: var cp = (7 & cccc.charCodeAt(0)) << 18 | (63 & cccc.charCodeAt(1)) << 12 | (63 & cccc.charCodeAt(2)) << 6 | 63 & cccc.charCodeAt(3), offset = cp - 65536; return _fromCC((offset >>> 10) + 55296) + _fromCC((offset & 1023) + 56320); case 3: return _fromCC((15 & cccc.charCodeAt(0)) << 12 | (63 & cccc.charCodeAt(1)) << 6 | 63 & cccc.charCodeAt(2)); default: return _fromCC((31 & cccc.charCodeAt(0)) << 6 | 63 & cccc.charCodeAt(1)); } }; const btou = (b2) => b2.replace(re_btou, cb_btou); const atobPolyfill = (asc) => { asc = asc.replace(/\s+/g, ""); if (!b64re.test(asc)) throw new TypeError("malformed base64."); asc += "==".slice(2 - (asc.length & 3)); let u24, bin = "", r1, r22; for (let i3 = 0; i3 < asc.length; ) { u24 = b64tab[asc.charAt(i3++)] << 18 | b64tab[asc.charAt(i3++)] << 12 | (r1 = b64tab[asc.charAt(i3++)]) << 6 | (r22 = b64tab[asc.charAt(i3++)]); bin += r1 === 64 ? _fromCC(u24 >> 16 & 255) : r22 === 64 ? _fromCC(u24 >> 16 & 255, u24 >> 8 & 255) : _fromCC(u24 >> 16 & 255, u24 >> 8 & 255, u24 & 255); } return bin; }; const _atob = typeof atob === "function" ? (asc) => atob(_tidyB64(asc)) : _hasBuffer ? (asc) => Buffer.from(asc, "base64").toString("binary") : atobPolyfill; const _toUint8Array = _hasBuffer ? (a2) => _U8Afrom(Buffer.from(a2, "base64")) : (a2) => _U8Afrom(_atob(a2).split("").map((c3) => c3.charCodeAt(0))); const _decode = _hasBuffer ? (a2) => Buffer.from(a2, "base64").toString("utf8") : _TD ? (a2) => _TD.decode(_toUint8Array(a2)) : (a2) => btou(_atob(a2)); const _unURI = (a2) => _tidyB64(a2.replace(/[-_]/g, (m0) => m0 == "-" ? "+" : "/")); const decode = (src) => _decode(_unURI(src)); const autoAction = await( getAutoAction(getSnapshotId())); if (autoAction.autoSearchSelector) { const url = new URL(window.location.href); if (!url.searchParams.get("gkd")) { const selectorBase64 = encodeURI( autoAction.autoSearchSelector.replaceAll('"', '"') ); url.searchParams.set("gkd", selectorBase64); window.location.href = url.toString(); } } var Space_Separator = /[\u1680\u2000-\u200A\u202F\u205F\u3000]/; var ID_Start = /[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u08A0-\u08B4\u08B6-\u08BD\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312E\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEA\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF2D-\uDF4A\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC03-\uDC37\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDF00-\uDF19]|\uD806[\uDCA0-\uDCDF\uDCFF\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE83\uDE86-\uDE89\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50\uDF93-\uDF9F\uDFE0\uDFE1]|\uD821[\uDC00-\uDFEC]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00-\uDD1E\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD83A[\uDC00-\uDCC4\uDD00-\uDD43]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]/; var ID_Continue = /[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u0483-\u0487\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u05D0-\u05EA\u05F0-\u05F2\u0610-\u061A\u0620-\u0669\u066E-\u06D3\u06D5-\u06DC\u06DF-\u06E8\u06EA-\u06FC\u06FF\u0710-\u074A\u074D-\u07B1\u07C0-\u07F5\u07FA\u0800-\u082D\u0840-\u085B\u0860-\u086A\u08A0-\u08B4\u08B6-\u08BD\u08D4-\u08E1\u08E3-\u0963\u0966-\u096F\u0971-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09F1\u09FC\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AEF\u0AF9-\u0AFF\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3C-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B66-\u0B6F\u0B71\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BEF\u0C00-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58-\u0C5A\u0C60-\u0C63\u0C66-\u0C6F\u0C80-\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1\u0CF2\u0D00-\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D44\u0D46-\u0D48\u0D4A-\u0D4E\u0D54-\u0D57\u0D5F-\u0D63\u0D66-\u0D6F\u0D7A-\u0D7F\u0D82\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2\u0DF3\u0E01-\u0E3A\u0E40-\u0E4E\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB9\u0EBB-\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECD\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E-\u0F47\u0F49-\u0F6C\u0F71-\u0F84\u0F86-\u0F97\u0F99-\u0FBC\u0FC6\u1000-\u1049\u1050-\u109D\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u135D-\u135F\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17D3\u17D7\u17DC\u17DD\u17E0-\u17E9\u180B-\u180D\u1810-\u1819\u1820-\u1877\u1880-\u18AA\u18B0-\u18F5\u1900-\u191E\u1920-\u192B\u1930-\u193B\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19D9\u1A00-\u1A1B\u1A20-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AA7\u1AB0-\u1ABD\u1B00-\u1B4B\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1BF3\u1C00-\u1C37\u1C40-\u1C49\u1C4D-\u1C7D\u1C80-\u1C88\u1CD0-\u1CD2\u1CD4-\u1CF9\u1D00-\u1DF9\u1DFB-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u203F\u2040\u2054\u2071\u207F\u2090-\u209C\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D7F-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2DFF\u2E2F\u3005-\u3007\u3021-\u302F\u3031-\u3035\u3038-\u303C\u3041-\u3096\u3099\u309A\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312E\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEA\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66F\uA674-\uA67D\uA67F-\uA6F1\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA827\uA840-\uA873\uA880-\uA8C5\uA8D0-\uA8D9\uA8E0-\uA8F7\uA8FB\uA8FD\uA900-\uA92D\uA930-\uA953\uA960-\uA97C\uA980-\uA9C0\uA9CF-\uA9D9\uA9E0-\uA9FE\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA60-\uAA76\uAA7A-\uAAC2\uAADB-\uAADD\uAAE0-\uAAEF\uAAF2-\uAAF6\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABEA\uABEC\uABED\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE00-\uFE0F\uFE20-\uFE2F\uFE33\uFE34\uFE4D-\uFE4F\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF3F\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDDFD\uDE80-\uDE9C\uDEA0-\uDED0\uDEE0\uDF00-\uDF1F\uDF2D-\uDF4A\uDF50-\uDF7A\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCA0-\uDCA9\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00-\uDE03\uDE05\uDE06\uDE0C-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE38-\uDE3A\uDE3F\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE6\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC00-\uDC46\uDC66-\uDC6F\uDC7F-\uDCBA\uDCD0-\uDCE8\uDCF0-\uDCF9\uDD00-\uDD34\uDD36-\uDD3F\uDD50-\uDD73\uDD76\uDD80-\uDDC4\uDDCA-\uDDCC\uDDD0-\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE37\uDE3E\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEEA\uDEF0-\uDEF9\uDF00-\uDF03\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3C-\uDF44\uDF47\uDF48\uDF4B-\uDF4D\uDF50\uDF57\uDF5D-\uDF63\uDF66-\uDF6C\uDF70-\uDF74]|\uD805[\uDC00-\uDC4A\uDC50-\uDC59\uDC80-\uDCC5\uDCC7\uDCD0-\uDCD9\uDD80-\uDDB5\uDDB8-\uDDC0\uDDD8-\uDDDD\uDE00-\uDE40\uDE44\uDE50-\uDE59\uDE80-\uDEB7\uDEC0-\uDEC9\uDF00-\uDF19\uDF1D-\uDF2B\uDF30-\uDF39]|\uD806[\uDCA0-\uDCE9\uDCFF\uDE00-\uDE3E\uDE47\uDE50-\uDE83\uDE86-\uDE99\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC36\uDC38-\uDC40\uDC50-\uDC59\uDC72-\uDC8F\uDC92-\uDCA7\uDCA9-\uDCB6\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD36\uDD3A\uDD3C\uDD3D\uDD3F-\uDD47\uDD50-\uDD59]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE60-\uDE69\uDED0-\uDEED\uDEF0-\uDEF4\uDF00-\uDF36\uDF40-\uDF43\uDF50-\uDF59\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50-\uDF7E\uDF8F-\uDF9F\uDFE0\uDFE1]|\uD821[\uDC00-\uDFEC]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00-\uDD1E\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99\uDC9D\uDC9E]|\uD834[\uDD65-\uDD69\uDD6D-\uDD72\uDD7B-\uDD82\uDD85-\uDD8B\uDDAA-\uDDAD\uDE42-\uDE44]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB\uDFCE-\uDFFF]|\uD836[\uDE00-\uDE36\uDE3B-\uDE6C\uDE75\uDE84\uDE9B-\uDE9F\uDEA1-\uDEAF]|\uD838[\uDC00-\uDC06\uDC08-\uDC18\uDC1B-\uDC21\uDC23\uDC24\uDC26-\uDC2A]|\uD83A[\uDC00-\uDCC4\uDCD0-\uDCD6\uDD00-\uDD4A\uDD50-\uDD59]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]|\uDB40[\uDD00-\uDDEF]/; var unicode = { Space_Separator, ID_Start, ID_Continue }; var util = { isSpaceSeparator(c3) { return typeof c3 === "string" && unicode.Space_Separator.test(c3); }, isIdStartChar(c3) { return typeof c3 === "string" && (c3 >= "a" && c3 <= "z" || c3 >= "A" && c3 <= "Z" || c3 === "$" || c3 === "_" || unicode.ID_Start.test(c3)); }, isIdContinueChar(c3) { return typeof c3 === "string" && (c3 >= "a" && c3 <= "z" || c3 >= "A" && c3 <= "Z" || c3 >= "0" && c3 <= "9" || c3 === "$" || c3 === "_" || c3 === "‌" || c3 === "‍" || unicode.ID_Continue.test(c3)); }, isDigit(c3) { return typeof c3 === "string" && /[0-9]/.test(c3); }, isHexDigit(c3) { return typeof c3 === "string" && /[0-9A-Fa-f]/.test(c3); } }; let source; let parseState; let stack; let pos; let line; let column; let token; let key$1; let root; var parse = function parse2(text, reviver) { source = String(text); parseState = "start"; stack = []; pos = 0; line = 1; column = 0; token = undefined; key$1 = undefined; root = undefined; do { token = lex(); parseStates[parseState](); } while (token.type !== "eof"); if (typeof reviver === "function") { return internalize({ "": root }, "", reviver); } return root; }; function internalize(holder, name, reviver) { const value = holder[name]; if (value != null && typeof value === "object") { if (Array.isArray(value)) { for (let i3 = 0; i3 < value.length; i3++) { const key2 = String(i3); const replacement = internalize(value, key2, reviver); if (replacement === undefined) { delete value[key2]; } else { Object.defineProperty(value, key2, { value: replacement, writable: true, enumerable: true, configurable: true }); } } } else { for (const key2 in value) { const replacement = internalize(value, key2, reviver); if (replacement === undefined) { delete value[key2]; } else { Object.defineProperty(value, key2, { value: replacement, writable: true, enumerable: true, configurable: true }); } } } } return reviver.call(holder, name, value); } let lexState; let buffer; let doubleQuote; let sign; let c2; function lex() { lexState = "default"; buffer = ""; doubleQuote = false; sign = 1; for (; ; ) { c2 = peek(); const token2 = lexStates[lexState](); if (token2) { return token2; } } } function peek() { if (source[pos]) { return String.fromCodePoint(source.codePointAt(pos)); } } function read() { const c3 = peek(); if (c3 === "\n") { line++; column = 0; } else if (c3) { column += c3.length; } else { column++; } if (c3) { pos += c3.length; } return c3; } const lexStates = { default() { switch (c2) { case " ": case "\v": case "\f": case " ": case " ": case "\uFEFF": case "\n": case "\r": case "\u2028": case "\u2029": read(); return; case "/": read(); lexState = "comment"; return; case undefined: read(); return newToken("eof"); } if (util.isSpaceSeparator(c2)) { read(); return; } return lexStates[parseState](); }, comment() { switch (c2) { case "*": read(); lexState = "multiLineComment"; return; case "/": read(); lexState = "singleLineComment"; return; } throw invalidChar(read()); }, multiLineComment() { switch (c2) { case "*": read(); lexState = "multiLineCommentAsterisk"; return; case undefined: throw invalidChar(read()); } read(); }, multiLineCommentAsterisk() { switch (c2) { case "*": read(); return; case "/": read(); lexState = "default"; return; case undefined: throw invalidChar(read()); } read(); lexState = "multiLineComment"; }, singleLineComment() { switch (c2) { case "\n": case "\r": case "\u2028": case "\u2029": read(); lexState = "default"; return; case undefined: read(); return newToken("eof"); } read(); }, value() { switch (c2) { case "{": case "[": return newToken("punctuator", read()); case "n": read(); literal("ull"); return newToken("null", null); case "t": read(); literal("rue"); return newToken("boolean", true); case "f": read(); literal("alse"); return newToken("boolean", false); case "-": case "+": if (read() === "-") { sign = -1; } lexState = "sign"; return; case ".": buffer = read(); lexState = "decimalPointLeading"; return; case "0": buffer = read(); lexState = "zero"; return; case "1": case "2": case "3": case "4": case "5": case "6": case "7": case "8": case "9": buffer = read(); lexState = "decimalInteger"; return; case "I": read(); literal("nfinity"); return newToken("numeric", Infinity); case "N": read(); literal("aN"); return newToken("numeric", NaN); case '"': case "'": doubleQuote = read() === '"'; buffer = ""; lexState = "string"; return; } throw invalidChar(read()); }, identifierNameStartEscape() { if (c2 !== "u") { throw invalidChar(read()); } read(); const u2 = unicodeEscape(); switch (u2) { case "$": case "_": break; default: if (!util.isIdStartChar(u2)) { throw invalidIdentifier(); } break; } buffer += u2; lexState = "identifierName"; }, identifierName() { switch (c2) { case "$": case "_": case "‌": case "‍": buffer += read(); return; case "\\": read(); lexState = "identifierNameEscape"; return; } if (util.isIdContinueChar(c2)) { buffer += read(); return; } return newToken("identifier", buffer); }, identifierNameEscape() { if (c2 !== "u") { throw invalidChar(read()); } read(); const u2 = unicodeEscape(); switch (u2) { case "$": case "_": case "‌": case "‍": break; default: if (!util.isIdContinueChar(u2)) { throw invalidIdentifier(); } break; } buffer += u2; lexState = "identifierName"; }, sign() { switch (c2) { case ".": buffer = read(); lexState = "decimalPointLeading"; return; case "0": buffer = read(); lexState = "zero"; return; case "1": case "2": case "3": case "4": case "5": case "6": case "7": case "8": case "9": buffer = read(); lexState = "decimalInteger"; return; case "I": read(); literal("nfinity"); return newToken("numeric", sign * Infinity); case "N": read(); literal("aN"); return newToken("numeric", NaN); } throw invalidChar(read()); }, zero() { switch (c2) { case ".": buffer += read(); lexState = "decimalPoint"; return; case "e": case "E": buffer += read(); lexState = "decimalExponent"; return; case "x": case "X": buffer += read(); lexState = "hexadecimal"; return; } return newToken("numeric", sign * 0); }, decimalInteger() { switch (c2) { case ".": buffer += read(); lexState = "decimalPoint"; return; case "e": case "E": buffer += read(); lexState = "decimalExponent"; return; } if (util.isDigit(c2)) { buffer += read(); return; } return newToken("numeric", sign * Number(buffer)); }, decimalPointLeading() { if (util.isDigit(c2)) { buffer += read(); lexState = "decimalFraction"; return; } throw invalidChar(read()); }, decimalPoint() { switch (c2) { case "e": case "E": buffer += read(); lexState = "decimalExponent"; return; } if (util.isDigit(c2)) { buffer += read(); lexState = "decimalFraction"; return; } return newToken("numeric", sign * Number(buffer)); }, decimalFraction() { switch (c2) { case "e": case "E": buffer += read(); lexState = "decimalExponent"; return; } if (util.isDigit(c2)) { buffer += read(); return; } return newToken("numeric", sign * Number(buffer)); }, decimalExponent() { switch (c2) { case "+": case "-": buffer += read(); lexState = "decimalExponentSign"; return; } if (util.isDigit(c2)) { buffer += read(); lexState = "decimalExponentInteger"; return; } throw invalidChar(read()); }, decimalExponentSign() { if (util.isDigit(c2)) { buffer += read(); lexState = "decimalExponentInteger"; return; } throw invalidChar(read()); }, decimalExponentInteger() { if (util.isDigit(c2)) { buffer += read(); return; } return newToken("numeric", sign * Number(buffer)); }, hexadecimal() { if (util.isHexDigit(c2)) { buffer += read(); lexState = "hexadecimalInteger"; return; } throw invalidChar(read()); }, hexadecimalInteger() { if (util.isHexDigit(c2)) { buffer += read(); return; } return newToken("numeric", sign * Number(buffer)); }, string() { switch (c2) { case "\\": read(); buffer += escape(); return; case '"': if (doubleQuote) { read(); return newToken("string", buffer); } buffer += read(); return; case "'": if (!doubleQuote) { read(); return newToken("string", buffer); } buffer += read(); return; case "\n": case "\r": throw invalidChar(read()); case "\u2028": case "\u2029": separatorChar(c2); break; case undefined: throw invalidChar(read()); } buffer += read(); }, start() { switch (c2) { case "{": case "[": return newToken("punctuator", read()); } lexState = "value"; }, beforePropertyName() { switch (c2) { case "$": case "_": buffer = read(); lexState = "identifierName"; return; case "\\": read(); lexState = "identifierNameStartEscape"; return; case "}": return newToken("punctuator", read()); case '"': case "'": doubleQuote = read() === '"'; lexState = "string"; return; } if (util.isIdStartChar(c2)) { buffer += read(); lexState = "identifierName"; return; } throw invalidChar(read()); }, afterPropertyName() { if (c2 === ":") { return newToken("punctuator", read()); } throw invalidChar(read()); }, beforePropertyValue() { lexState = "value"; }, afterPropertyValue() { switch (c2) { case ",": case "}": return newToken("punctuator", read()); } throw invalidChar(read()); }, beforeArrayValue() { if (c2 === "]") { return newToken("punctuator", read()); } lexState = "value"; }, afterArrayValue() { switch (c2) { case ",": case "]": return newToken("punctuator", read()); } throw invalidChar(read()); }, end() { throw invalidChar(read()); } }; function newToken(type, value) { return { type, value, line, column }; } function literal(s2) { for (const c3 of s2) { const p2 = peek(); if (p2 !== c3) { throw invalidChar(read()); } read(); } } function escape() { const c3 = peek(); switch (c3) { case "b": read(); return "\b"; case "f": read(); return "\f"; case "n": read(); return "\n"; case "r": read(); return "\r"; case "t": read(); return " "; case "v": read(); return "\v"; case "0": read(); if (util.isDigit(peek())) { throw invalidChar(read()); } return "\0"; case "x": read(); return hexEscape(); case "u": read(); return unicodeEscape(); case "\n": case "\u2028": case "\u2029": read(); return ""; case "\r": read(); if (peek() === "\n") { read(); } return ""; case "1": case "2": case "3": case "4": case "5": case "6": case "7": case "8": case "9": throw invalidChar(read()); case undefined: throw invalidChar(read()); } return read(); } function hexEscape() { let buffer2 = ""; let c3 = peek(); if (!util.isHexDigit(c3)) { throw invalidChar(read()); } buffer2 += read(); c3 = peek(); if (!util.isHexDigit(c3)) { throw invalidChar(read()); } buffer2 += read(); return String.fromCodePoint(parseInt(buffer2, 16)); } function unicodeEscape() { let buffer2 = ""; let count = 4; while (count-- > 0) { const c3 = peek(); if (!util.isHexDigit(c3)) { throw invalidChar(read()); } buffer2 += read(); } return String.fromCodePoint(parseInt(buffer2, 16)); } const parseStates = { start() { if (token.type === "eof") { throw invalidEOF(); } push(); }, beforePropertyName() { switch (token.type) { case "identifier": case "string": key$1 = token.value; parseState = "afterPropertyName"; return; case "punctuator": pop(); return; case "eof": throw invalidEOF(); } }, afterPropertyName() { if (token.type === "eof") { throw invalidEOF(); } parseState = "beforePropertyValue"; }, beforePropertyValue() { if (token.type === "eof") { throw invalidEOF(); } push(); }, beforeArrayValue() { if (token.type === "eof") { throw invalidEOF(); } if (token.type === "punctuator" && token.value === "]") { pop(); return; } push(); }, afterPropertyValue() { if (token.type === "eof") { throw invalidEOF(); } switch (token.value) { case ",": parseState = "beforePropertyName"; return; case "}": pop(); } }, afterArrayValue() { if (token.type === "eof") { throw invalidEOF(); } switch (token.value) { case ",": parseState = "beforeArrayValue"; return; case "]": pop(); } }, end() { } }; function push() { let value; switch (token.type) { case "punctuator": switch (token.value) { case "{": value = {}; break; case "[": value = []; break; } break; case "null": case "boolean": case "numeric": case "string": value = token.value; break; } if (root === undefined) { root = value; } else { const parent = stack[stack.length - 1]; if (Array.isArray(parent)) { parent.push(value); } else { Object.defineProperty(parent, key$1, { value, writable: true, enumerable: true, configurable: true }); } } if (value !== null && typeof value === "object") { stack.push(value); if (Array.isArray(value)) { parseState = "beforeArrayValue"; } else { parseState = "beforePropertyName"; } } else { const current = stack[stack.length - 1]; if (current == null) { parseState = "end"; } else if (Array.isArray(current)) { parseState = "afterArrayValue"; } else { parseState = "afterPropertyValue"; } } } function pop() { stack.pop(); const current = stack[stack.length - 1]; if (current == null) { parseState = "end"; } else if (Array.isArray(current)) { parseState = "afterArrayValue"; } else { parseState = "afterPropertyValue"; } } function invalidChar(c3) { if (c3 === undefined) { return syntaxError(`JSON5: invalid end of input at ${line}:${column}`); } return syntaxError(`JSON5: invalid character '${formatChar(c3)}' at ${line}:${column}`); } function invalidEOF() { return syntaxError(`JSON5: invalid end of input at ${line}:${column}`); } function invalidIdentifier() { column -= 5; return syntaxError(`JSON5: invalid identifier character at ${line}:${column}`); } function separatorChar(c3) { console.warn(`JSON5: '${formatChar(c3)}' in strings is not valid ECMAScript; consider escaping`); } function formatChar(c3) { const replacements = { "'": "\\'", '"': '\\"', "\\": "\\\\", "\b": "\\b", "\f": "\\f", "\n": "\\n", "\r": "\\r", " ": "\\t", "\v": "\\v", "\0": "\\0", "\u2028": "\\u2028", "\u2029": "\\u2029" }; if (replacements[c3]) { return replacements[c3]; } if (c3 < " ") { const hexString = c3.charCodeAt(0).toString(16); return "\\x" + ("00" + hexString).substring(hexString.length); } return c3; } function syntaxError(message) { const err = new SyntaxError(message); err.lineNumber = line; err.columnNumber = column; return err; } var stringify = function stringify2(value, replacer, space) { const stack2 = []; let indent = ""; let propertyList; let replacerFunc; let gap = ""; let quote; if (replacer != null && typeof replacer === "object" && !Array.isArray(replacer)) { space = replacer.space; quote = replacer.quote; replacer = replacer.replacer; } if (typeof replacer === "function") { replacerFunc = replacer; } else if (Array.isArray(replacer)) { propertyList = []; for (const v2 of replacer) { let item; if (typeof v2 === "string") { item = v2; } else if (typeof v2 === "number" || v2 instanceof String || v2 instanceof Number) { item = String(v2); } if (item !== undefined && propertyList.indexOf(item) < 0) { propertyList.push(item); } } } if (space instanceof Number) { space = Number(space); } else if (space instanceof String) { space = String(space); } if (typeof space === "number") { if (space > 0) { space = Math.min(10, Math.floor(space)); gap = " ".substr(0, space); } } else if (typeof space === "string") { gap = space.substr(0, 10); } return serializeProperty("", { "": value }); function serializeProperty(key2, holder) { let value2 = holder[key2]; if (value2 != null) { if (typeof value2.toJSON5 === "function") { value2 = value2.toJSON5(key2); } else if (typeof value2.toJSON === "function") { value2 = value2.toJSON(key2); } } if (replacerFunc) { value2 = replacerFunc.call(holder, key2, value2); } if (value2 instanceof Number) { value2 = Number(value2); } else if (value2 instanceof String) { value2 = String(value2); } else if (value2 instanceof Boolean) { value2 = value2.valueOf(); } switch (value2) { case null: return "null"; case true: return "true"; case false: return "false"; } if (typeof value2 === "string") { return quoteString(value2); } if (typeof value2 === "number") { return String(value2); } if (typeof value2 === "object") { return Array.isArray(value2) ? serializeArray(value2) : serializeObject(value2); } return undefined; } function quoteString(value2) { const quotes = { "'": 0.1, '"': 0.2 }; const replacements = { "'": "\\'", '"': '\\"', "\\": "\\\\", "\b": "\\b", "\f": "\\f", "\n": "\\n", "\r": "\\r", " ": "\\t", "\v": "\\v", "\0": "\\0", "\u2028": "\\u2028", "\u2029": "\\u2029" }; let product = ""; for (let i3 = 0; i3 < value2.length; i3++) { const c3 = value2[i3]; switch (c3) { case "'": case '"': quotes[c3]++; product += c3; continue; case "\0": if (util.isDigit(value2[i3 + 1])) { product += "\\x00"; continue; } } if (replacements[c3]) { product += replacements[c3]; continue; } if (c3 < " ") { let hexString = c3.charCodeAt(0).toString(16); product += "\\x" + ("00" + hexString).substring(hexString.length); continue; } product += c3; } const quoteChar = quote || Object.keys(quotes).reduce((a2, b2) => quotes[a2] < quotes[b2] ? a2 : b2); product = product.replace(new RegExp(quoteChar, "g"), replacements[quoteChar]); return quoteChar + product + quoteChar; } function serializeObject(value2) { if (stack2.indexOf(value2) >= 0) { throw TypeError("Converting circular structure to JSON5"); } stack2.push(value2); let stepback = indent; indent = indent + gap; let keys = propertyList || Object.keys(value2); let partial = []; for (const key2 of keys) { const propertyString = serializeProperty(key2, value2); if (propertyString !== undefined) { let member = serializeKey(key2) + ":"; if (gap !== "") { member += " "; } member += propertyString; partial.push(member); } } let final; if (partial.length === 0) { final = "{}"; } else { let properties; if (gap === "") { properties = partial.join(","); final = "{" + properties + "}"; } else { let separator = ",\n" + indent; properties = partial.join(separator); final = "{\n" + indent + properties + ",\n" + stepback + "}"; } } stack2.pop(); indent = stepback; return final; } function serializeKey(key2) { if (key2.length === 0) { return quoteString(key2); } const firstChar = String.fromCodePoint(key2.codePointAt(0)); if (!util.isIdStartChar(firstChar)) { return quoteString(key2); } for (let i3 = firstChar.length; i3 < key2.length; i3++) { if (!util.isIdContinueChar(String.fromCodePoint(key2.codePointAt(i3)))) { return quoteString(key2); } } return key2; } function serializeArray(value2) { if (stack2.indexOf(value2) >= 0) { throw TypeError("Converting circular structure to JSON5"); } stack2.push(value2); let stepback = indent; indent = indent + gap; let partial = []; for (let i3 = 0; i3 < value2.length; i3++) { const propertyString = serializeProperty(String(i3), value2); partial.push(propertyString !== undefined ? propertyString : "null"); } let final; if (partial.length === 0) { final = "[]"; } else { if (gap === "") { let properties = partial.join(","); final = "[" + properties + "]"; } else { let separator = ",\n" + indent; let properties = partial.join(separator); final = "[\n" + indent + properties + ",\n" + stepback + "]"; } } stack2.pop(); indent = stepback; return final; } }; const JSON5 = { parse, stringify }; var lib = JSON5; const onChange = (element) => { if (element.id == "left") { if (element.value != "") document.querySelector(".position#right").disabled = true; else document.querySelector(".position#right").disabled = false; } if (element.id == "right") { if (element.value != "") document.querySelector(".position#left").disabled = true; else document.querySelector(".position#left").disabled = false; } if (element.id == "top") { if (element.value != "") document.querySelector(".position#bottom").disabled = true; else document.querySelector(".position#bottom").disabled = false; } if (element.id == "bottom") { if (element.value != "") document.querySelector(".position#top").disabled = true; else document.querySelector(".position#top").disabled = false; } }; const constructPositionArray = () => { const left = document.querySelector(".position#left").value; const right = document.querySelector(".position#right").value; const top = document.querySelector(".position#top").value; const bottom = document.querySelector(".position#bottom").value; if (!left && !right && !top && !bottom) return []; else return [top, left, right, bottom]; }; const iArrayToArray = (array = []) => { return Array().concat(array); }; const groupsKeyOrder = [ "key", "name", "desc", "matchTime", "actionMaximum", "resetMatch", "priorityTime", "rules" ]; const sort = async (groups) => { const rulesKeyOrder = await getHanashiroSettings("rulesKeySort"); const groupsKeyValue = []; const rulesKeyValue = []; groupsKeyOrder.forEach((groupsKey) => { if (groups[groupsKey] !== undefined) groupsKeyValue.push(groups[groupsKey]); else groupsKeyValue.push(undefined); }); rulesKeyOrder.forEach((rulesKey) => { if (groups.rules[0][rulesKey] !== undefined) rulesKeyValue.push(groups.rules[0][rulesKey]); else rulesKeyValue.push(undefined); }); const sortedRules = {}; rulesKeyOrder.forEach((rulesKey, index) => { sortedRules[rulesKey] = rulesKeyValue[index]; }); const sortedGroups = { key: groupsKeyValue[0], name: groupsKeyValue[1], desc: groupsKeyValue[2], matchTime: groupsKeyValue[3], actionMaximum: groupsKeyValue[4], resetMatch: groupsKeyValue[5], priorityTime: groupsKeyValue[6], rules: [sortedRules] }; return sortedGroups; }; const checkPositionLegality = (position) => { const { top, left, right, bottom } = position; if (top) { if (bottom || !left && !right) { snackbar({ message: "非法坐标", placement: "top" }); return false; } } if (left) { if (right || !top && !bottom) { snackbar({ message: "非法坐标", placement: "top" }); return false; } } if (right) { if (left || !top && !bottom) { snackbar({ message: "非法坐标", placement: "top" }); return false; } } if (bottom) { if (top || !left && !right) { snackbar({ message: "非法坐标", placement: "top" }); return false; } } return true; }; const finish = async () => { const copyDepth = document.querySelector("#copyDepth").value; const action = document.querySelector("#action").value; const ruleName = document.querySelector("#ruleName").value; const ruleDesc = document.querySelector("#ruleDesc").value; const category = window.Hanashiro.currentCategory; const isLimit = document.querySelector("#limit").checked; const isNoExample = document.querySelector("#noExample").checked; const preKeys = document.querySelector("#preKeys").value; const position = constructPositionArray().length != 0 ? constructPositionArray() : false; const isSimplyActivityIds = await getHanashiroSettings("activityIdsSimply"); const origin = lib.parse(window.Hanashiro.originRule); if (ruleName) origin.groups[0].name = ruleName; else origin.groups[0].name = ""; if (ruleDesc) origin.groups[0].desc = ruleDesc; else delete origin.groups[0].desc; if (category) { if (!ruleName) origin.groups[0].name = category; else origin.groups[0].name = `${category}-${origin.groups[0].name}`; if (category == "开屏广告") { origin.groups[0].priorityTime = 1e4; const rule = iArrayToArray( origin.groups[0].rules )[0]; delete rule.activityIds; origin.groups[0].rules = [rule]; } } if (action) { const rule = iArrayToArray(origin.groups[0].rules)[0]; rule.action = action; origin.groups[0].rules = [rule]; } if (isLimit) { if (copyDepth == "rules") { const rule = iArrayToArray( origin.groups[0].rules )[0]; rule.actionMaximum = 1; rule.resetMatch = "app"; rule.matchTime = 1e4; origin.groups[0].rules = [rule]; } else { origin.groups[0].actionMaximum = 1; origin.groups[0].resetMatch = "app"; origin.groups[0].matchTime = 1e4; } } if (isNoExample) { const rule = iArrayToArray(origin.groups[0].rules)[0]; delete rule.exampleUrls; origin.groups[0].rules = [rule]; } if (preKeys) { const preKeysArray = preKeys.split(","); const preKeysNumberArray = []; preKeysArray.forEach((preKey) => { preKeysNumberArray.push(Number(preKey)); }); const rule = iArrayToArray(origin.groups[0].rules)[0]; rule.preKeys = preKeysNumberArray; origin.groups[0].rules = [rule]; } if (position) { const positionName = [ "top", "left", "right", "bottom" ]; const positionObject = {}; position.forEach((position2, index) => { if (position2) { positionObject[positionName[index]] = position2; } }); if (!checkPositionLegality(positionObject)) return; const rule = iArrayToArray(origin.groups[0].rules)[0]; rule.position = positionObject; origin.groups[0].rules = [rule]; } if (isSimplyActivityIds === true) { const snapshotId = getSnapshotId(); const rule = iArrayToArray(origin.groups[0].rules)[0]; const result = await simplyActivityIds(snapshotId); if (result && rule.activityIds) { rule.activityIds = result; origin.groups[0].rules = [rule]; } } origin.groups[0] = await sort(origin.groups[0]); const stringify3 = lib.stringify(origin, null, 2); if (copyDepth == "ts") { const text = `import { defineGkdApp } from '@gkd-kit/define';\r\rexport default defineGkdApp(${stringify3});\r`; window.Hanashiro.returnResult = text; } else if (copyDepth == "app") window.Hanashiro.returnResult = stringify3; else if (copyDepth == "groups") window.Hanashiro.returnResult = lib.stringify(origin.groups[0], null, 2); else if (copyDepth == "rules") window.Hanashiro.returnResult = lib.stringify( iArrayToArray(origin.groups[0].rules)[0], null, 2 ); send("closePage"); send("modifyEnd"); }; const key = () => { const copyDepth = document.querySelector("#copyDepth").value; const key2 = document.querySelector("#key").value; const origin = lib.parse(window.Hanashiro.originRule); if (key2) { if (copyDepth == "rules") { const rule = iArrayToArray( origin.groups[0].rules )[0]; rule.key = Number(key2); origin.groups[0].rules = [rule]; } else origin.groups[0].key = Number(key2); window.Hanashiro.originRule = lib.stringify(origin, null, 2); snackbar({ message: "key值修改成功!", placement: "top" }); } }; const renderedCategories = async () => { const categories = await getHanashiroSettings("categories"); const categoriesGroup = document.querySelector("#category"); if (categories) { let innerHtmlString = ""; categories.forEach((category) => { innerHtmlString += `${category.name}`; }); categoriesGroup.innerHTML = innerHtmlString; } }; const _sfc_main$a = vue.defineComponent({ methods: { async finish() { await finish(); }, key() { key(); }, onPositionChange(event) { onChange(event.target); }, closeDialog() { send("closePage"); } }, data() { return { originRule: lib.parse(window.Hanashiro.originRule) }; }, async mounted() { window.Hanashiro.currentCategory = ""; await renderedCategories(); document.querySelector("#category").addEventListener("change", (e3) => { window.Hanashiro.currentCategory = e3.target.value; }); document.querySelector("#page").open = true; } }); const _export_sfc = (sfc, props) => { const target = sfc.__vccOpts || sfc; for (const [key2, val] of props) { target[key2] = val; } return target; }; const _hoisted_1 = ["placeholder"]; function _sfc_render$9(_ctx, _cache, $props, $setup, $data, $options) { return vue.openBlock(), vue.createElementBlock("mdui-dialog", { id: "page", headline: "配置", "close-on-overlay-click": "", "close-on-esc": "", onClosed: _cache[6] || (_cache[6] = (...args) => _ctx.closeDialog && _ctx.closeDialog(...args)) }, [ _cache[14] || (_cache[14] = vue.createStaticVNode('
选择复制深度:ts层app层groups层rules层
选择分类:
插入action类型:clickCenterbacklongClick
插入限制字段:插入matchTime、resetMatch和actionMaximum
去除exampleUrls:
', 5)), vue.createElementVNode("div", null, [ _cache[7] || (_cache[7] = vue.createElementVNode("span", null, "修改key值为:", -1)), vue.createElementVNode("mdui-text-field", { id: "key", variant: "filled", type: "number", label: "key", placeholder: "填写一个数字", helper: "rules模式修改ruleKey,其余修改groupKey。请提前选好模式,失焦保存!", onChange: _cache[0] || (_cache[0] = (...args) => _ctx.key && _ctx.key(...args)) }, null, 32) ]), _cache[15] || (_cache[15] = vue.createElementVNode("div", null, [ vue.createElementVNode("span", null, "修改preKeys值为:"), vue.createElementVNode("mdui-text-field", { id: "preKeys", variant: "filled", label: "preKeys", placeholder: "填写多个以英文逗号分隔的数字", helper: "失焦保存" }) ], -1)), vue.createElementVNode("div", null, [ _cache[8] || (_cache[8] = vue.createElementVNode("span", null, "坐标:", -1)), _cache[9] || (_cache[9] = vue.createElementVNode("mdui-chip", { variant: "input" }, "左", -1)), vue.createElementVNode("mdui-text-field", { variant: "filled", class: "position", id: "left", onChange: _cache[1] || (_cache[1] = (...args) => _ctx.onPositionChange && _ctx.onPositionChange(...args)) }, null, 32), _cache[10] || (_cache[10] = vue.createElementVNode("mdui-chip", { variant: "input" }, "右", -1)), vue.createElementVNode("mdui-text-field", { variant: "filled", class: "position", id: "right", onChange: _cache[2] || (_cache[2] = (...args) => _ctx.onPositionChange && _ctx.onPositionChange(...args)) }, null, 32), _cache[11] || (_cache[11] = vue.createElementVNode("mdui-chip", { variant: "input" }, "上", -1)), vue.createElementVNode("mdui-text-field", { variant: "filled", class: "position", id: "top", onChange: _cache[3] || (_cache[3] = (...args) => _ctx.onPositionChange && _ctx.onPositionChange(...args)) }, null, 32), _cache[12] || (_cache[12] = vue.createElementVNode("mdui-chip", { variant: "input" }, "下", -1)), vue.createElementVNode("mdui-text-field", { variant: "filled", class: "position", id: "bottom", onChange: _cache[4] || (_cache[4] = (...args) => _ctx.onPositionChange && _ctx.onPositionChange(...args)) }, null, 32) ]), vue.createElementVNode("div", null, [ _cache[13] || (_cache[13] = vue.createElementVNode("span", null, "规则组名称:", -1)), vue.createElementVNode("mdui-text-field", { id: "ruleName", variant: "filled", label: "名称", placeholder: _ctx.originRule.groups[0].name }, null, 8, _hoisted_1) ]), _cache[16] || (_cache[16] = vue.createElementVNode("div", null, [ vue.createElementVNode("span", null, "规则组描述:"), vue.createElementVNode("mdui-text-field", { id: "ruleDesc", variant: "filled", label: "描述", placeholder: "没有描述不填" }) ], -1)), vue.createElementVNode("div", null, [ vue.createElementVNode("mdui-button", { slot: "action", variant: "tonal", onClick: _cache[5] || (_cache[5] = (...args) => _ctx.finish && _ctx.finish(...args)) }, "确定") ]) ], 32); } const Main = /* @__PURE__ */ _export_sfc(_sfc_main$a, [["render", _sfc_render$9]]); const settings = async () => { const categories = document.querySelector("#categories").value; const rulesKeySort2 = document.querySelector("#rulesKeySort").value; const maxShowSize = document.querySelector("#maxShowSize").value; const isHideLoadSnackbar = document.querySelector("#hideLoadSnackbar").checked; const isSimplyName = document.querySelector("#simplyName").checked; const isAutoAddSelector = document.querySelector("#autoAddSelector").checked; const isActivityIdsSimply = document.querySelector("#activityIdsSimply").checked; const inspectSettings = await getInspectSettings(); await setHanashiroSettings( "categories", lib.parse(categories ? categories : "[]") ); await setHanashiroSettings( "rulesKeySort", lib.parse(rulesKeySort2 ? rulesKeySort2 : "[]") ); await setHanashiroSettings("hideLoadSnackbar", isHideLoadSnackbar); await setHanashiroSettings("simplyName", isSimplyName); await setHanashiroSettings("autoAddSelector", isAutoAddSelector); await setHanashiroSettings("activityIdsSimply", isActivityIdsSimply); inspectSettings.maxShowNodeSize = Number(maxShowSize); await setInspectSettings(inspectSettings); send("closePage"); }; const setValue$1 = async (settings2) => { try { await setHanashiroSettings("activityIdsSimply", settings2.activityIdsSimply); await setHanashiroSettings("autoAddSelector", settings2.autoAddSelector); await setHanashiroSettings("categories", settings2.categories); await setHanashiroSettings("hideLoadSnackbar", settings2.hideLoadSnackbar); await setHanashiroSettings("rulesKeySort", settings2.rulesKeySort); await setHanashiroSettings("simplyName", settings2.simplyName); } catch { snackbar({ message: "应用设置失败", placement: "top" }); return; } }; const getRemoteSettings = async (url) => { let remoteSettings; try { remoteSettings = lib.parse(await (await fetch(url)).text()); } catch { snackbar({ message: "请求失败!", placement: "top" }); return; } await setValue$1(remoteSettings); snackbar({ message: "设置应用成功!重新打开页面即可看见更改", placement: "top" }); }; const showFilePicker$1 = () => document.querySelector("input#localImport").click(); const getLocalSettings = async () => { const inputElement = document.querySelector( "input#localImport" ); const fileList = inputElement.files; if (!fileList) return; const file = fileList[0]; const localSettings = lib.parse(await file.text()); await setValue$1(localSettings); snackbar({ message: "设置应用成功!重新打开页面即可看见更改", placement: "top" }); }; const _import$1 = () => { dialog({ headline: "选择导入渠道", description: "选择从本地导入或者远程导入", closeOnEsc: true, closeOnOverlayClick: true, actions: [ { text: "本地导入", onClick: showFilePicker$1 }, { text: "远程导入", onClick: () => { prompt({ headline: "远程设置文件链接", description: "请输入远程设置文件的链接以导入", closeOnEsc: true, closeOnOverlayClick: true, confirmText: "导入", cancelText: "取消", onConfirm: async (value) => { if (!value) { snackbar({ message: "请输入链接!", placement: "top" }); return new Promise((_2, reject) => reject(false)); } else await getRemoteSettings(value); } }); } } ] }); }; const _export$1 = async () => { const activityIdsSimply = await getHanashiroSettings("activityIdsSimply"); const autoAddSelector = await getHanashiroSettings("autoAddSelector"); const categories = await getHanashiroSettings("categories"); const hideLoadSnackbar = await getHanashiroSettings("hideLoadSnackbar"); const rulesKeySort2 = await getHanashiroSettings("rulesKeySort"); const simplyName = await getHanashiroSettings("simplyName"); const settings2 = { activityIdsSimply: activityIdsSimply ? activityIdsSimply : false, autoAddSelector: autoAddSelector ? autoAddSelector : false, categories: categories ? categories : [], hideLoadSnackbar: hideLoadSnackbar ? hideLoadSnackbar : false, rulesKeySort: rulesKeySort2, simplyName: simplyName ? simplyName : false }; const settingsFile = new Blob([lib.stringify(settings2, undefined, 2)]); FileSaver_minExports.saveAs(settingsFile, "settings.json5"); }; const _sfc_main$9 = vue.defineComponent({ methods: { settings() { settings(); }, async exportSettings() { await _export$1(); }, importSettings() { _import$1(); }, async getLocalSettingsFile() { await getLocalSettings(); }, closeDialog() { send("closePage"); } }, async mounted() { if (await getHanashiroSettings("categories")) { document.querySelector("#categories").value = lib.stringify(await getHanashiroSettings("categories")); } if (await getHanashiroSettings("rulesKeySort")) { document.querySelector("#rulesKeySort").value = lib.stringify(await getHanashiroSettings("rulesKeySort")); } if (await getInspectSettings()) { document.querySelector("#maxShowSize").value = String((await getInspectSettings()).maxShowNodeSize); } if (await getHanashiroSettings("hideLoadSnackbar") == true) document.querySelector("#hideLoadSnackbar").checked = true; if (await getHanashiroSettings("simplyName") == true) document.querySelector("#simplyName").checked = true; if (await getHanashiroSettings("activityIdsSimply") == true) document.querySelector("#activityIdsSimply").checked = true; document.querySelector("#page").open = true; } }); function _sfc_render$8(_ctx, _cache, $props, $setup, $data, $options) { return vue.openBlock(), vue.createElementBlock(vue.Fragment, null, [ vue.createElementVNode("mdui-dialog", { id: "page", headline: "设置", "close-on-overlay-click": "", "close-on-esc": "", onClosed: _cache[3] || (_cache[3] = (...args) => _ctx.closeDialog && _ctx.closeDialog(...args)) }, [ vue.createElementVNode("div", null, [ vue.createElementVNode("mdui-button", { variant: "tonal", onClick: _cache[0] || (_cache[0] = (...args) => _ctx.exportSettings && _ctx.exportSettings(...args)) }, "导出"), vue.createElementVNode("mdui-button", { variant: "tonal", onClick: _cache[1] || (_cache[1] = (...args) => _ctx.importSettings && _ctx.importSettings(...args)) }, "导入") ]), _cache[5] || (_cache[5] = vue.createElementVNode("div", null, [ vue.createElementVNode("span", null, "分类设置:"), vue.createElementVNode("mdui-text-field", { variant: "filled", id: "categories", label: "分类", placeholder: "填入合法的分类", rows: "10" }) ], -1)), _cache[6] || (_cache[6] = vue.createElementVNode("div", null, [ vue.createElementVNode("span", null, "字段排序设置:"), vue.createElementVNode("mdui-text-field", { variant: "filled", id: "rulesKeySort", label: "字段排序", placeholder: "目前仅支持rules内字段", rows: "10" }), vue.createElementVNode("span", { class: "introduction" }, " 接受一个字符串数组,目前支持的字段有: key,preKeys,fastQuery,matchTime,actionMaximum,resetMatch,priorityTime action,activityIds,position,matches,exampleUrls,snapshotUrls ") ], -1)), _cache[7] || (_cache[7] = vue.createElementVNode("div", null, [ vue.createElementVNode("span", null, "节点阈值:"), vue.createElementVNode("mdui-text-field", { variant: "filled", id: "maxShowSize", type: "number", label: "节点阈值", placeholder: "填入数字" }), vue.createElementVNode("span", { class: "introduction" }, "最大节点展示数量,超出的节点将被丢弃") ], -1)), _cache[8] || (_cache[8] = vue.createStaticVNode('
隐藏加载成功提示:每次脚本加载时会弹出一个snackbar,此选项可选择是否弹出
name属性复制优化:在复制name属性时,会自动优化复制的内容。如复制 android.widget.TextView 时会优化为 TextView
选择器分享自动添加快捷搜索:在分享选择器时,自动添加到快捷搜索列表中
activityIds规则复制优化:在复制规则代码时,若activityIds满足简写条件时,使用简写
', 4)), vue.createElementVNode("div", null, [ vue.createElementVNode("mdui-button", { slot: "action", variant: "tonal", onClick: _cache[2] || (_cache[2] = (...args) => _ctx.settings && _ctx.settings(...args)) }, "确定") ]) ], 32), vue.createElementVNode("input", { type: "file", id: "localImport", accept: ".json,.json5", onChange: _cache[4] || (_cache[4] = (...args) => _ctx.getLocalSettingsFile && _ctx.getLocalSettingsFile(...args)) }, null, 32) ], 64); } const Settings = /* @__PURE__ */ _export_sfc(_sfc_main$9, [["render", _sfc_render$8]]); const inspect = async () => { const currentInspectSettings = await getInspectSettings(); const isUploadWarn = document.querySelector("#uploadWarn").checked; const isWasmWarn = document.querySelector("#wasmWarn").checked; const isAutoUploadImport = document.querySelector("#autoUploadImport").checked; currentInspectSettings.ignoreUploadWarn = !isUploadWarn; currentInspectSettings.ignoreWasmWarn = !isWasmWarn; currentInspectSettings.autoUploadImport = isAutoUploadImport; await setInspectSettings(currentInspectSettings); send("closePage"); }; const _sfc_main$8 = vue.defineComponent({ methods: { async inspect() { await inspect(); }, closeDialog() { send("closePage"); } }, async mounted() { const currentInspectSettings = await getInspectSettings(); if (currentInspectSettings.ignoreUploadWarn) document.querySelector("#uploadWarn").checked = false; if (currentInspectSettings.ignoreWasmWarn) document.querySelector("#wasmWarn").checked = false; if (currentInspectSettings.autoUploadImport) document.querySelector("#autoUploadImport").checked = true; document.querySelector("#page").open = true; } }); function _sfc_render$7(_ctx, _cache, $props, $setup, $data, $options) { return vue.openBlock(), vue.createElementBlock("mdui-dialog", { id: "page", headline: "网页审查工具设置", "close-on-overlay-click": "", "close-on-esc": "", onClosed: _cache[1] || (_cache[1] = (...args) => _ctx.closeDialog && _ctx.closeDialog(...args)) }, [ _cache[2] || (_cache[2] = vue.createStaticVNode('
生成分享链接弹窗提醒:默认开启。关闭则不会提醒
浏览器版本正则表达式WASM(GC)提醒:默认开启。关闭则不会提醒
打开快照页面自动生成分享链接:请确保不含隐私!
', 3)), vue.createElementVNode("div", null, [ vue.createElementVNode("mdui-button", { slot: "action", variant: "tonal", onClick: _cache[0] || (_cache[0] = (...args) => _ctx.inspect && _ctx.inspect(...args)) }, "确定") ]) ], 32); } const InspectSettings = /* @__PURE__ */ _export_sfc(_sfc_main$8, [["render", _sfc_render$7]]); const _sfc_main$7 = vue.defineComponent({ methods: { closeDialog() { send("closePage"); } }, mounted() { document.querySelector("#page").open = true; } }); function _sfc_render$6(_ctx, _cache, $props, $setup, $data, $options) { return vue.openBlock(), vue.createElementBlock("mdui-dialog", { id: "page", headline: "帮助", "close-on-overlay-click": "", "close-on-esc": "", onClosed: _cache[0] || (_cache[0] = (...args) => _ctx.closeDialog && _ctx.closeDialog(...args)) }, _cache[1] || (_cache[1] = [ vue.createStaticVNode('

本脚本已开源至Github,欢迎反馈:Github仓库

你可以通过以下方式联系我:
QQ群:494273126
邮箱:adpro_qwq@qq.com
Telegram群组:Telegram群组
Telegram频道:Telegram频道

在这里推荐AIsouler的GKD订阅,特别好用,受到用户广泛好评!Github仓库

', 1) ]), 32); } const Help = /* @__PURE__ */ _export_sfc(_sfc_main$7, [["render", _sfc_render$6]]); const generateSelectors$1 = async () => { const selectors = await getHanashiroSettings("selectors"); const selectorsGroup = document.querySelector("#selectors"); let innerHtmlString = ""; selectors.forEach(({ name, base64 }, index) => { innerHtmlString += `${name}`; }); selectorsGroup.innerHTML = innerHtmlString; document.querySelectorAll("#selector").forEach((radio) => { radio.addEventListener("click", (e3) => { window.Hanashiro.currentUseSelectorIndex = Number( e3.target.getAttribute("data-index") ); }); }); }; const search = async () => { const selectors = await getHanashiroSettings("selectors"); const target = new URL(window.location.href); target.searchParams.set( "gkd", selectors[window.Hanashiro.currentUseSelectorIndex].base64 ); window.location.href = target.toString(); }; const _sfc_main$6 = vue.defineComponent({ methods: { async search() { await search(); }, closeDialog() { send("closePage"); } }, async mounted() { await generateSelectors$1(); document.querySelector("#page").open = true; } }); function _sfc_render$5(_ctx, _cache, $props, $setup, $data, $options) { return vue.openBlock(), vue.createElementBlock("mdui-dialog", { id: "page", headline: "使用选择器", "close-on-overlay-click": "", "close-on-esc": "", onClosed: _cache[1] || (_cache[1] = (...args) => _ctx.closeDialog && _ctx.closeDialog(...args)) }, [ _cache[2] || (_cache[2] = vue.createElementVNode("div", null, [ vue.createElementVNode("span", null, "选择选择器:"), vue.createElementVNode("mdui-radio-group", { id: "selectors" }) ], -1)), vue.createElementVNode("div", null, [ vue.createElementVNode("mdui-button", { slot: "action", variant: "tonal", onClick: _cache[0] || (_cache[0] = (...args) => _ctx.search && _ctx.search(...args)) }, "搜索") ]) ], 32); } const UseSelector = /* @__PURE__ */ _export_sfc(_sfc_main$6, [["render", _sfc_render$5]]); const _sfc_main$5 = vue.defineComponent({ mounted() { prompt({ headline: "请输入选择器备注", description: "对该选择器的备注,方便辨认", confirmText: "就决定是你了!", cancelText: "算了", closeOnEsc: true, closeOnOverlayClick: true, onConfirm: (name) => { if (!name) { snackbar({ message: "请不要留空哦~", placement: "top" }); return false; } else { prompt({ headline: "请输入选择器", description: "输入选择器", confirmText: "好了~", cancelText: "算了", closeOnEsc: true, closeOnOverlayClick: true, onConfirm: async (selector) => { if (!selector) { snackbar({ message: "请不要留空哦~", placement: "top" }); return new Promise((_2, reject) => reject(false)); } else { const savedSelectors = await getHanashiroSettings("selectors"); savedSelectors.push({ name, base64: encodeURI(selector), order: 1 }); savedSelectors.sort((a2, b2) => { if (a2.order > b2.order) return -1; else if (a2.order == b2.order) return 0; else return 1; }); await setHanashiroSettings("selectors", savedSelectors); send("closePage"); } }, onCancel: () => send("closePage") }).catch(); } }, onCancel: () => send("closePage") }).catch(); } }); const generateSelectors = async () => { const selectors = await getHanashiroSettings("selectors"); const selectorsGroup = document.querySelector("#selectors"); let innerHtmlString = ""; selectors.sort((a2, b2) => { if (a2.order > b2.order) return -1; else if (a2.order == b2.order) return 0; else return 1; }); selectors.forEach(({ name, base64, order }, index) => { innerHtmlString += `${name}`; }); selectorsGroup.innerHTML = innerHtmlString; document.querySelectorAll("#selectorRadio").forEach((radio) => { radio.addEventListener("click", (e3) => { const nameTextField = document.querySelector("#name"); const selectorTextField = document.querySelector( "#selector" ); const orderTextField = document.querySelector("#order"); nameTextField.value = e3.target.innerText; selectorTextField.value = decode(e3.target.value); orderTextField.value = e3.target.getAttribute("data-order"); window.Hanashiro.currentSelector = { index: Number(e3.target.getAttribute("data-index")), name: e3.target.innerText, base64: e3.target.value }; }); }); }; const editSelector = async () => { const selectors = await getHanashiroSettings("selectors"); const nameTextField = document.querySelector("#name"); const selectorTextField = document.querySelector("#selector"); const orderTextField = document.querySelector("#order"); if (selectorTextField.value) { selectors[window.Hanashiro.currentSelector.index] = { name: nameTextField.value, base64: encodeURI(selectorTextField.value), order: Number(orderTextField.value == "" ? 1 : orderTextField.value) }; } else selectors.splice(window.Hanashiro.currentSelector.index, 1); await setHanashiroSettings("selectors", selectors); snackbar({ message: "修改成功!", placement: "top" }); }; const setValue = async (selectors) => { try { if (window.Hanashiro.selectorsImportWay == 0) await setHanashiroSettings("selectors", selectors); else { const hadSelectors = await getHanashiroSettings("selectors"); await setHanashiroSettings("selectors", hadSelectors.concat(selectors)); } } catch { snackbar({ message: "应用设置失败", placement: "top" }); return; } }; const getRemoteSelectors = async (url) => { let remoteSelectors; try { remoteSelectors = lib.parse(await (await fetch(url)).text()); } catch { snackbar({ message: "请求失败!", placement: "top" }); return; } await setValue(remoteSelectors); snackbar({ message: "设置应用成功!重新打开页面即可看见更改", placement: "top" }); }; const showFilePicker = () => document.querySelector("input#localImport").click(); const getLocalSelectors = async () => { const inputElement = document.querySelector( "input#localImport" ); const fileList = inputElement.files; if (!fileList) return; const file = fileList[0]; const localSelectors = lib.parse(await file.text()); await setValue(localSelectors); snackbar({ message: "设置应用成功!重新打开页面即可看见更改", placement: "top" }); }; const _import = () => { dialog({ headline: "选择导入方式", description: "选择覆盖导入或者添加导入", closeOnEsc: true, closeOnOverlayClick: true, queue: "selectors", actions: [ { text: "覆盖导入", onClick: () => { window.Hanashiro.selectorsImportWay = 0; } }, { text: "添加导入", onClick: () => { window.Hanashiro.selectorsImportWay = 1; } } ] }); dialog({ headline: "选择导入渠道", description: "选择从本地导入或者远程导入", closeOnEsc: true, closeOnOverlayClick: true, queue: "selectors", actions: [ { text: "本地导入", onClick: showFilePicker }, { text: "远程导入", onClick: () => { prompt({ headline: "远程设置文件链接", description: "请输入远程设置文件的链接以导入", closeOnEsc: true, closeOnOverlayClick: true, confirmText: "导入", cancelText: "取消", onConfirm: async (value) => { if (!value) { snackbar({ message: "请输入链接!", placement: "top" }); return new Promise((_2, reject) => reject(false)); } else await getRemoteSelectors(value); } }); } } ] }); }; const _export = async () => { const selectors = await getHanashiroSettings("selectors"); const selectorsFile = new Blob([lib.stringify(selectors, undefined, 2)]); FileSaver_minExports.saveAs(selectorsFile, "selectors.json5"); }; const _sfc_main$4 = vue.defineComponent({ methods: { async editSelector() { await editSelector(); }, async close() { const selectors = await getHanashiroSettings("selectors"); selectors.sort((a2, b2) => { if (a2.order > b2.order) return -1; else if (a2.order == b2.order) return 0; else return 1; }); await setHanashiroSettings("selectors", selectors); send("closePage"); }, async exportSelectors() { await _export(); }, importSelectors() { _import(); }, async getLocalSelectorsFile() { await getLocalSelectors(); } }, async mounted() { await generateSelectors(); document.querySelector("#page").open = true; } }); function _sfc_render$4(_ctx, _cache, $props, $setup, $data, $options) { return vue.openBlock(), vue.createElementBlock(vue.Fragment, null, [ vue.createElementVNode("mdui-dialog", { id: "page", headline: "管理选择器", "close-on-overlay-click": "", "close-on-esc": "", onClosed: _cache[6] || (_cache[6] = (...args) => _ctx.close && _ctx.close(...args)) }, [ vue.createElementVNode("div", null, [ vue.createElementVNode("mdui-button", { variant: "tonal", onClick: _cache[0] || (_cache[0] = (...args) => _ctx.exportSelectors && _ctx.exportSelectors(...args)) }, "导出"), vue.createElementVNode("mdui-button", { variant: "tonal", onClick: _cache[1] || (_cache[1] = (...args) => _ctx.importSelectors && _ctx.importSelectors(...args)) }, "导入") ]), _cache[14] || (_cache[14] = vue.createElementVNode("div", null, [ vue.createElementVNode("span", null, "选择选择器:"), vue.createElementVNode("mdui-radio-group", { id: "selectors" }) ], -1)), vue.createElementVNode("div", null, [ _cache[8] || (_cache[8] = vue.createElementVNode("span", null, "备注:", -1)), vue.createElementVNode("mdui-text-field", { variant: "filled", id: "name", label: "备注", onChange: _cache[2] || (_cache[2] = (...args) => _ctx.editSelector && _ctx.editSelector(...args)) }, null, 32), _cache[9] || (_cache[9] = vue.createElementVNode("span", { class: "introduction" }, "失焦保存", -1)) ]), vue.createElementVNode("div", null, [ _cache[10] || (_cache[10] = vue.createElementVNode("span", null, "选择器:", -1)), vue.createElementVNode("mdui-text-field", { variant: "filled", id: "selector", label: "选择器", onChange: _cache[3] || (_cache[3] = (...args) => _ctx.editSelector && _ctx.editSelector(...args)) }, null, 32), _cache[11] || (_cache[11] = vue.createElementVNode("span", { class: "introduction" }, "留空删除。失焦保存", -1)) ]), vue.createElementVNode("div", null, [ _cache[12] || (_cache[12] = vue.createElementVNode("span", null, "排序优先值:", -1)), vue.createElementVNode("mdui-text-field", { variant: "filled", id: "order", label: "排序优先值", type: "number", onChange: _cache[4] || (_cache[4] = (...args) => _ctx.editSelector && _ctx.editSelector(...args)) }, null, 32), _cache[13] || (_cache[13] = vue.createElementVNode("span", { class: "introduction" }, "数字越大,排序越前。失焦保存", -1)) ]), vue.createElementVNode("div", null, [ vue.createElementVNode("mdui-button", { slot: "action", variant: "tonal", onClick: _cache[5] || (_cache[5] = (...args) => _ctx.close && _ctx.close(...args)) }, "关闭") ]) ], 32), vue.createElementVNode("input", { type: "file", id: "localImport", accept: ".json,.json5", onChange: _cache[7] || (_cache[7] = (...args) => _ctx.getLocalSelectorsFile && _ctx.getLocalSelectorsFile(...args)) }, null, 32) ], 64); } const ManageSelectors = /* @__PURE__ */ _export_sfc(_sfc_main$4, [["render", _sfc_render$4]]); const _sfc_main$3 = vue.defineComponent({ methods: { async getImg() { const inputElement = document.querySelector("#img"); const fileList = inputElement.files; const imageArrayBuffer = await fileList[0].arrayBuffer(); await replaceScreenshot(getSnapshotId(), imageArrayBuffer); snackbar({ message: "更换截图成功!刷新页面即可看见更改", placement: "top" }); send("closePage"); }, cancel() { send("closePage"); } }, async mounted() { document.querySelector("#img").click(); } }); function _sfc_render$3(_ctx, _cache, $props, $setup, $data, $options) { return vue.openBlock(), vue.createElementBlock("input", { type: "file", id: "img", accept: ".png", onChange: _cache[0] || (_cache[0] = (...args) => _ctx.getImg && _ctx.getImg(...args)), onCancel: _cache[1] || (_cache[1] = (...args) => _ctx.cancel && _ctx.cancel(...args)) }, null, 32); } const ChangeScreenshot = /* @__PURE__ */ _export_sfc(_sfc_main$3, [["render", _sfc_render$3]]); const arrayBufferToImage = (arrayBuffer) => { const arrayBufferView = new Uint8Array(arrayBuffer); const blob = new Blob([arrayBufferView], { type: "image/png" }); const src = (window.URL || window.webkitURL).createObjectURL(blob); const img = document.createElement("img"); img.src = src; return img; }; const getInfo = async () => { const canvas = document.querySelector("#canvas"); const snapshotId = getSnapshotId(); const screenshot = await getScreenshot(snapshotId); const nodeId = getCurrentNodeId(); const screenWidth = (await getScreenInfo(getSnapshotId())).width; const screenHeight = (await getScreenInfo(getSnapshotId())).height; const left = await getNodeAttr(snapshotId, nodeId, "left"); const top = await getNodeAttr(snapshotId, nodeId, "top"); const width = await getNodeAttr(snapshotId, nodeId, "width"); const height = await getNodeAttr(snapshotId, nodeId, "height"); const fullImg = arrayBufferToImage(screenshot); return [canvas, screenWidth, screenHeight, left, top, width, height, fullImg]; }; const partialView = (canvas, screenWidth, screenHeight, left, top, width, height, fullImg) => { window.Hanashiro.currentPositionView = "partial"; const ctx = canvas.getContext("2d"); const tampCanvas = document.createElement("canvas"); const tampCtx = tampCanvas.getContext("2d"); canvas.width = width; canvas.height = height; tampCanvas.width = screenWidth; tampCanvas.height = screenHeight; tampCtx.drawImage(fullImg, 0, 0, screenWidth, screenHeight); const imgData = tampCtx.getImageData(left, top, width, height); ctx.putImageData(imgData, 0, 0); }; const globalView = (canvas, screenWidth, screenHeight, fullImg) => { window.Hanashiro.currentPositionView = "global"; const ctx = canvas.getContext("2d"); canvas.width = screenWidth; canvas.height = screenHeight; ctx.drawImage(fullImg, 0, 0, screenWidth, screenHeight); }; const generatePosition = async () => { const [canvas, screenWidth, screenHeight, left, top, width, height, fullImg] = await getInfo(); fullImg.onload = () => partialView( canvas, screenWidth, screenHeight, left, top, width, height, fullImg ); canvas.onclick = (e3) => { let x2 = e3.offsetX, y2 = e3.offsetY; if (window.Hanashiro.currentPositionView == "global") { x2 -= left; y2 -= top; } const absolutePosition = { left: left + x2, top: top + y2 }; const relativePosition = { left: `width * ${String((x2 / width).toFixed(4))}`, top: `width * ${String((y2 / width).toFixed(4))}` }; window.Hanashiro.nodePosition = { absolute: absolutePosition, relative: relativePosition }; const result = document.querySelector("#result"); result.open = true; }; }; const _sfc_main$2 = vue.defineComponent({ methods: { closeDialog() { send("closePage"); }, closeResult() { const result = document.querySelector("#result"); result.open = false; }, async partialView() { const [canvas, screenWidth, screenHeight, left, top, width, height, fullImg] = await getInfo(); fullImg.onload = () => partialView(canvas, screenWidth, screenHeight, left, top, width, height, fullImg); }, async globalView() { const [canvas, screenWidth, screenHeight, _left, _top, _width, _height, fullImg] = await getInfo(); fullImg.onload = () => globalView(canvas, screenWidth, screenHeight, fullImg); }, getNewPosition() { const absolute = window.Hanashiro.nodePosition.absolute; const relative = window.Hanashiro.nodePosition.relative; document.querySelector("#absolute").value = lib.stringify({ position: absolute }, undefined, 2); document.querySelector("#relative").value = lib.stringify({ position: relative }, undefined, 2); } }, async mounted() { await generatePosition(); document.querySelector("#page").open = true; } }); function _sfc_render$2(_ctx, _cache, $props, $setup, $data, $options) { return vue.openBlock(), vue.createElementBlock(vue.Fragment, null, [ vue.createElementVNode("mdui-dialog", { id: "page", headline: "选择点击坐标", fullscreen: "", "close-on-overlay-click": "", "close-on-esc": "", onClosed: _cache[3] || (_cache[3] = (...args) => _ctx.closeDialog && _ctx.closeDialog(...args)) }, [ _cache[6] || (_cache[6] = vue.createElementVNode("div", null, [ vue.createElementVNode("canvas", { id: "canvas" }) ], -1)), vue.createElementVNode("div", null, [ vue.createElementVNode("mdui-button-icon", { icon: "open_in_full", onClick: _cache[0] || (_cache[0] = (...args) => _ctx.globalView && _ctx.globalView(...args)) }), vue.createElementVNode("mdui-button-icon", { icon: "close_fullscreen", onClick: _cache[1] || (_cache[1] = (...args) => _ctx.partialView && _ctx.partialView(...args)) }) ]), vue.createElementVNode("div", null, [ vue.createElementVNode("mdui-button", { slot: "action", variant: "tonal", onClick: _cache[2] || (_cache[2] = (...args) => _ctx.closeDialog && _ctx.closeDialog(...args)) }, "关闭") ]) ], 32), vue.createElementVNode("mdui-dialog", { id: "result", headline: "计算结果", "close-on-esc": "", "close-on-overlay-click": "", onOpen: _cache[5] || (_cache[5] = (...args) => _ctx.getNewPosition && _ctx.getNewPosition(...args)) }, [ _cache[7] || (_cache[7] = vue.createElementVNode("div", null, [ vue.createElementVNode("span", null, "绝对坐标:"), vue.createElementVNode("mdui-text-field", { id: "absolute", variant: "filled", label: "绝对坐标", rows: "8" }) ], -1)), _cache[8] || (_cache[8] = vue.createElementVNode("div", null, [ vue.createElementVNode("span", null, "相对坐标:"), vue.createElementVNode("mdui-text-field", { id: "relative", variant: "filled", label: "相对坐标", rows: "8" }) ], -1)), vue.createElementVNode("div", null, [ vue.createElementVNode("mdui-button", { slot: "action", variant: "tonal", onClick: _cache[4] || (_cache[4] = (...args) => _ctx.closeResult && _ctx.closeResult(...args)) }, "关闭") ]) ], 32) ], 64); } const GeneratePosition = /* @__PURE__ */ _export_sfc(_sfc_main$2, [["render", _sfc_render$2]]); const showAutoAction = async () => { const autoAction2 = await getAutoAction(getSnapshotId()); document.querySelector("#autoSearchSelector").value = autoAction2.autoSearchSelector; }; const manage = async () => { const autoAction2 = { autoSearchSelector: "" }; const autoSearchSelector = document.querySelector("#autoSearchSelector").value; if (autoSearchSelector) autoAction2.autoSearchSelector = autoSearchSelector.replaceAll('"', '"'); await setAutoAction(getSnapshotId(), autoAction2); snackbar({ message: "修改成功!如果已经上传到Github,需要重新获取快照链接!", placement: "top" }); }; const _sfc_main$1 = vue.defineComponent({ methods: { async manage() { await manage(); }, closeDialog() { send("closePage"); } }, async mounted() { await showAutoAction(); document.querySelector("#page").open = true; } }); function _sfc_render$1(_ctx, _cache, $props, $setup, $data, $options) { return vue.openBlock(), vue.createElementBlock("mdui-dialog", { id: "page", headline: "自动动作配置", "close-on-overlay-click": "", "close-on-esc": "", onClosed: _cache[2] || (_cache[2] = (...args) => _ctx.closeDialog && _ctx.closeDialog(...args)) }, [ vue.createElementVNode("div", null, [ _cache[3] || (_cache[3] = vue.createElementVNode("span", null, "自动搜索选择器:", -1)), vue.createElementVNode("mdui-text-field", { variant: "filled", id: "autoSearchSelector", label: "自动搜索选择器", onChange: _cache[0] || (_cache[0] = (...args) => _ctx.manage && _ctx.manage(...args)) }, null, 32), _cache[4] || (_cache[4] = vue.createElementVNode("span", { class: "introduction" }, "在当前网址存在gkd参数时不进行自动搜索。失焦保存", -1)) ]), vue.createElementVNode("div", null, [ vue.createElementVNode("mdui-button", { slot: "action", variant: "tonal", onClick: _cache[1] || (_cache[1] = (...args) => _ctx.closeDialog && _ctx.closeDialog(...args)) }, "确定") ]) ], 32); } const AutoAction = /* @__PURE__ */ _export_sfc(_sfc_main$1, [["render", _sfc_render$1]]); const _sfc_main = vue.defineComponent({ components: { Main, Settings, InspectSettings, Help, UseSelector, AddSelector: _sfc_main$5, ManageSelectors, ChangeScreenshot, GeneratePosition, AutoAction }, data() { return { currentComponent: "" }; }, created() { receive("copyEvent", () => { this.currentComponent = "Main"; }); receive("openSettings", () => { this.currentComponent = "Settings"; }); receive("openHelp", () => { this.currentComponent = "Help"; }); receive("openUseSelector", () => { this.currentComponent = "UseSelector"; }); receive("openAddSelector", () => { this.currentComponent = "AddSelector"; }); receive("openManageSelectors", () => { this.currentComponent = "ManageSelectors"; }); receive("openChangeScreenshot", () => { this.currentComponent = "ChangeScreenshot"; }); receive("openGeneratePosition", () => { this.currentComponent = "GeneratePosition"; }); receive("openInspectSettings", () => { this.currentComponent = "InspectSettings"; }); receive("openAutoAction", () => { this.currentComponent = "AutoAction"; }); receive("closePage", () => { this.currentComponent = ""; }); }, mounted() { setColorScheme("#39C5BB"); } }); function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) { return vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(_ctx.currentComponent)); } const App = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]); vue.createApp(App).mount( (() => { const app = document.createElement("div"); document.body.append(app); return app; })() ); })(Vue);