@cas-smartdesign/virtual-list 8.0.0 → 9.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/docs/doc.css +1 -1
- package/dist/docs/doc.mjs +43 -28
- package/dist/docs/index.html +8 -0
- package/dist/list-util.d.ts +5 -0
- package/dist/list-util.d.ts.map +1 -1
- package/dist/virtual-list.d.ts.map +1 -1
- package/dist/virtual-list.mjs +18 -13
- package/dist/virtual-list.mjs.map +1 -1
- package/npm-third-party-licenses.json +1 -1
- package/package.json +13 -5
- package/readme.md +19 -10
package/dist/docs/doc.css
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
.markdown-body{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;color:#1f2328;word-wrap:break-word;background-color:#fff;margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Noto Sans,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji;font-size:16px;font-weight:400;line-height:1.5}.markdown-body a{text-underline-offset:.2rem;text-decoration:underline}.markdown-body .octicon{fill:currentColor;vertical-align:text-bottom;display:inline-block}.markdown-body h1:hover .anchor .octicon-link:before,.markdown-body h2:hover .anchor .octicon-link:before,.markdown-body h3:hover .anchor .octicon-link:before,.markdown-body h4:hover .anchor .octicon-link:before,.markdown-body h5:hover .anchor .octicon-link:before,.markdown-body h6:hover .anchor .octicon-link:before{content:" ";background-color:currentColor;width:16px;height:16px;display:inline-block;-webkit-mask-image:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' version='1.1' aria-hidden='true'><path fill-rule='evenodd' d='M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z'></path></svg>");mask-image:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' version='1.1' aria-hidden='true'><path fill-rule='evenodd' d='M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z'></path></svg>")}.markdown-body details,.markdown-body figcaption,.markdown-body figure{display:block}.markdown-body summary{display:list-item}.markdown-body [hidden]{display:none!important}.markdown-body a{color:#0969da;background-color:#0000;text-decoration:none}.markdown-body abbr[title]{border-bottom:none;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}.markdown-body b,.markdown-body strong{font-weight:600}.markdown-body dfn{font-style:italic}.markdown-body h1{border-bottom:1px solid #d1d9e0b3;margin:.67em 0;padding-bottom:.3em;font-size:2em;font-weight:600}.markdown-body mark{color:#1f2328;background-color:#fff8c5}.markdown-body small{font-size:90%}.markdown-body sub,.markdown-body sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}.markdown-body sub{bottom:-.25em}.markdown-body sup{top:-.5em}.markdown-body img{box-sizing:content-box;border-style:none;max-width:100%}.markdown-body code,.markdown-body kbd,.markdown-body pre,.markdown-body samp{font-family:monospace;font-size:1em}.markdown-body figure{margin:1em 2.5rem}.markdown-body hr{box-sizing:content-box;background:#d1d9e0;border:0;height:.25em;margin:1.5rem 0;padding:0;overflow:hidden}.markdown-body input{font:inherit;font-family:inherit;font-size:inherit;line-height:inherit;margin:0;overflow:visible}.markdown-body [type=button],.markdown-body [type=reset],.markdown-body [type=submit]{appearance:button}.markdown-body [type=checkbox],.markdown-body [type=radio]{box-sizing:border-box;padding:0}.markdown-body [type=number]::-webkit-inner-spin-button{height:auto}.markdown-body [type=number]::-webkit-outer-spin-button{height:auto}.markdown-body [type=search]::-webkit-search-cancel-button{appearance:none}.markdown-body [type=search]::-webkit-search-decoration{appearance:none}.markdown-body ::-webkit-input-placeholder{color:inherit;opacity:.54}.markdown-body ::-webkit-file-upload-button{appearance:button;font:inherit}.markdown-body a:hover{text-decoration:underline}.markdown-body ::placeholder{color:#59636e;opacity:1}.markdown-body hr:before{content:"";display:table}.markdown-body hr:after{clear:both;content:"";display:table}.markdown-body table{border-spacing:0;border-collapse:collapse;font-variant:tabular-nums;width:max-content;max-width:100%;display:block;overflow:auto}.markdown-body td,.markdown-body th{padding:0}.markdown-body details summary{cursor:pointer}.markdown-body a:focus,.markdown-body [role=button]:focus,.markdown-body input[type=radio]:focus,.markdown-body input[type=checkbox]:focus{outline:2px solid var(--borderColor-accent-emphasis);outline-offset:-2px;box-shadow:none}.markdown-body a:focus:not(:focus-visible),.markdown-body [role=button]:focus:not(:focus-visible),.markdown-body input[type=radio]:focus:not(:focus-visible),.markdown-body input[type=checkbox]:focus:not(:focus-visible){outline:1px solid #0000}.markdown-body a:focus-visible,.markdown-body [role=button]:focus-visible,.markdown-body input[type=radio]:focus-visible,.markdown-body input[type=checkbox]:focus-visible{outline:2px solid var(--borderColor-accent-emphasis);outline-offset:-2px;box-shadow:none}.markdown-body a:not([class]):focus,.markdown-body a:not([class]):focus-visible,.markdown-body input[type=radio]:focus,.markdown-body input[type=radio]:focus-visible,.markdown-body input[type=checkbox]:focus,.markdown-body input[type=checkbox]:focus-visible{outline-offset:0}.markdown-body kbd{color:#1f2328;vertical-align:middle;border:solid 1px var(--borderColor-muted);border-bottom-color:var(--borderColor-muted);box-shadow:inset 0 -1px 0 var(--borderColor-muted);background-color:#f6f8fa;border-radius:6px;padding:.25rem;font:11px/10px ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace;display:inline-block}.markdown-body h1,.markdown-body h2,.markdown-body h3,.markdown-body h4,.markdown-body h5,.markdown-body h6{margin-top:1.5rem;margin-bottom:1rem;font-weight:600;line-height:1.25}.markdown-body h2{border-bottom:1px solid #d1d9e0b3;padding-bottom:.3em;font-size:1.5em;font-weight:600}.markdown-body h3{font-size:1.25em;font-weight:600}.markdown-body h4{font-size:1em;font-weight:600}.markdown-body h5{font-size:.875em;font-weight:600}.markdown-body h6{color:#59636e;font-size:.85em;font-weight:600}.markdown-body p{margin-top:0;margin-bottom:10px}.markdown-body blockquote{color:#59636e;border-left:.25em solid #d1d9e0;margin:0;padding:0 1em}.markdown-body ul,.markdown-body ol{margin-top:0;margin-bottom:0;padding-left:2em}.markdown-body ol ol,.markdown-body ul ol{list-style-type:lower-roman}.markdown-body ul ul ol,.markdown-body ul ol ol,.markdown-body ol ul ol,.markdown-body ol ol ol{list-style-type:lower-alpha}.markdown-body dd{margin-left:0}.markdown-body tt,.markdown-body code,.markdown-body samp{font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace;font-size:12px}.markdown-body pre{word-wrap:normal;margin-top:0;margin-bottom:0;font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace;font-size:12px}.markdown-body .octicon{vertical-align:text-bottom;fill:currentColor;display:inline-block;overflow:visible!important}.markdown-body input::-webkit-outer-spin-button{appearance:none;margin:0}.markdown-body input::-webkit-inner-spin-button{appearance:none;margin:0}.markdown-body .mr-2{margin-right:.5rem!important}.markdown-body:before{content:"";display:table}.markdown-body:after{clear:both;content:"";display:table}.markdown-body>:first-child{margin-top:0!important}.markdown-body>:last-child{margin-bottom:0!important}.markdown-body a:not([href]){color:inherit;text-decoration:none}.markdown-body .absent{color:#d1242f}.markdown-body .anchor{float:left;margin-left:-20px;padding-right:.25rem;line-height:1}.markdown-body .anchor:focus{outline:none}.markdown-body p,.markdown-body blockquote,.markdown-body ul,.markdown-body ol,.markdown-body dl,.markdown-body table,.markdown-body pre,.markdown-body details{margin-top:0;margin-bottom:1rem}.markdown-body blockquote>:first-child{margin-top:0}.markdown-body blockquote>:last-child{margin-bottom:0}.markdown-body h1 .octicon-link,.markdown-body h2 .octicon-link,.markdown-body h3 .octicon-link,.markdown-body h4 .octicon-link,.markdown-body h5 .octicon-link,.markdown-body h6 .octicon-link{color:#1f2328;vertical-align:middle;visibility:hidden}.markdown-body h1:hover .anchor,.markdown-body h2:hover .anchor,.markdown-body h3:hover .anchor,.markdown-body h4:hover .anchor,.markdown-body h5:hover .anchor,.markdown-body h6:hover .anchor{text-decoration:none}.markdown-body h1:hover .anchor .octicon-link,.markdown-body h2:hover .anchor .octicon-link,.markdown-body h3:hover .anchor .octicon-link,.markdown-body h4:hover .anchor .octicon-link,.markdown-body h5:hover .anchor .octicon-link,.markdown-body h6:hover .anchor .octicon-link{visibility:visible}.markdown-body h1 tt,.markdown-body h1 code,.markdown-body h2 tt,.markdown-body h2 code,.markdown-body h3 tt,.markdown-body h3 code,.markdown-body h4 tt,.markdown-body h4 code,.markdown-body h5 tt,.markdown-body h5 code,.markdown-body h6 tt,.markdown-body h6 code{font-size:inherit;padding:0 .2em}.markdown-body summary h1,.markdown-body summary h2,.markdown-body summary h3,.markdown-body summary h4,.markdown-body summary h5,.markdown-body summary h6{display:inline-block}.markdown-body summary h1 .anchor,.markdown-body summary h2 .anchor,.markdown-body summary h3 .anchor,.markdown-body summary h4 .anchor,.markdown-body summary h5 .anchor,.markdown-body summary h6 .anchor{margin-left:-40px}.markdown-body summary h1,.markdown-body summary h2{border-bottom:0;padding-bottom:0}.markdown-body ul.no-list,.markdown-body ol.no-list{padding:0;list-style-type:none}.markdown-body ol[type=a\ s]{list-style-type:lower-alpha}.markdown-body ol[type=A\ s]{list-style-type:upper-alpha}.markdown-body ol[type=i\ s]{list-style-type:lower-roman}.markdown-body ol[type=I\ s]{list-style-type:upper-roman}.markdown-body ol[type="1"],.markdown-body div>ol:not([type]){list-style-type:decimal}.markdown-body ul ul,.markdown-body ul ol,.markdown-body ol ol,.markdown-body ol ul{margin-top:0;margin-bottom:0}.markdown-body li>p{margin-top:1rem}.markdown-body li+li{margin-top:.25em}.markdown-body dl{padding:0}.markdown-body dl dt{margin-top:1rem;padding:0;font-size:1em;font-style:italic;font-weight:600}.markdown-body dl dd{margin-bottom:1rem;padding:0 1rem}.markdown-body table th{font-weight:600}.markdown-body table th,.markdown-body table td{border:1px solid #d1d9e0;padding:6px 13px}.markdown-body table td>:last-child{margin-bottom:0}.markdown-body table tr{background-color:#fff;border-top:1px solid #d1d9e0b3}.markdown-body table tr:nth-child(2n){background-color:#f6f8fa}.markdown-body table img{background-color:#0000}.markdown-body img[align=right]{padding-left:20px}.markdown-body img[align=left]{padding-right:20px}.markdown-body .emoji{vertical-align:text-top;background-color:#0000;max-width:none}.markdown-body span.frame{display:block;overflow:hidden}.markdown-body span.frame>span{float:left;border:1px solid #d1d9e0;width:auto;margin:13px 0 0;padding:7px;display:block;overflow:hidden}.markdown-body span.frame span img{float:left;display:block}.markdown-body span.frame span span{clear:both;color:#1f2328;padding:5px 0 0;display:block}.markdown-body span.align-center{clear:both;display:block;overflow:hidden}.markdown-body span.align-center>span{text-align:center;margin:13px auto 0;display:block;overflow:hidden}.markdown-body span.align-center span img{text-align:center;margin:0 auto}.markdown-body span.align-right{clear:both;display:block;overflow:hidden}.markdown-body span.align-right>span{text-align:right;margin:13px 0 0;display:block;overflow:hidden}.markdown-body span.align-right span img{text-align:right;margin:0}.markdown-body span.float-left{float:left;margin-right:13px;display:block;overflow:hidden}.markdown-body span.float-left span{margin:13px 0 0}.markdown-body span.float-right{float:right;margin-left:13px;display:block;overflow:hidden}.markdown-body span.float-right>span{text-align:right;margin:13px auto 0;display:block;overflow:hidden}.markdown-body code,.markdown-body tt{white-space:break-spaces;background-color:#818b981f;border-radius:6px;margin:0;padding:.2em .4em;font-size:85%}.markdown-body code br,.markdown-body tt br{display:none}.markdown-body del code{-webkit-text-decoration:inherit;text-decoration:inherit}.markdown-body samp{font-size:85%}.markdown-body pre code{font-size:100%}.markdown-body pre>code{word-break:normal;white-space:pre;background:0 0;border:0;margin:0;padding:0}.markdown-body .highlight{margin-bottom:1rem}.markdown-body .highlight pre{word-break:normal;margin-bottom:0}.markdown-body .highlight pre,.markdown-body pre{color:#1f2328;background-color:#f6f8fa;border-radius:6px;padding:1rem;font-size:85%;line-height:1.45;overflow:auto}.markdown-body pre code,.markdown-body pre tt{line-height:inherit;word-wrap:normal;background-color:#0000;border:0;margin:0;padding:0;display:inline;overflow:visible}.markdown-body .csv-data td,.markdown-body .csv-data th{text-align:left;white-space:nowrap;padding:5px;font-size:12px;line-height:1;overflow:hidden}.markdown-body .csv-data .blob-num{text-align:right;background:#fff;border:0;padding:10px .5rem 9px}.markdown-body .csv-data tr{border-top:0}.markdown-body .csv-data th{background:#f6f8fa;border-top:0;font-weight:600}.markdown-body [data-footnote-ref]:before{content:"["}.markdown-body [data-footnote-ref]:after{content:"]"}.markdown-body .footnotes{color:#59636e;border-top:1px solid #d1d9e0;font-size:12px}.markdown-body .footnotes ol{padding-left:1rem}.markdown-body .footnotes ol ul{margin-top:1rem;padding-left:1rem;display:inline-block}.markdown-body .footnotes li{position:relative}.markdown-body .footnotes li:target:before{pointer-events:none;content:"";border:2px solid #0969da;border-radius:6px;position:absolute;inset:-.5rem -.5rem -.5rem -1.5rem}.markdown-body .footnotes li:target{color:#1f2328}.markdown-body .footnotes .data-footnote-backref g-emoji{font-family:monospace}.markdown-body .pl-c{color:#59636e}.markdown-body .pl-c1,.markdown-body .pl-s .pl-v{color:#0550ae}.markdown-body .pl-e,.markdown-body .pl-en{color:#6639ba}.markdown-body .pl-smi,.markdown-body .pl-s .pl-s1{color:#1f2328}.markdown-body .pl-ent{color:#0550ae}.markdown-body .pl-k{color:#cf222e}.markdown-body .pl-s,.markdown-body .pl-pds,.markdown-body .pl-s .pl-pse .pl-s1,.markdown-body .pl-sr,.markdown-body .pl-sr .pl-cce,.markdown-body .pl-sr .pl-sre,.markdown-body .pl-sr .pl-sra{color:#0a3069}.markdown-body .pl-v,.markdown-body .pl-smw{color:#953800}.markdown-body .pl-bu{color:#82071e}.markdown-body .pl-ii{color:var(--fgColor-danger);background-color:var(--bgColor-danger-muted)}.markdown-body .pl-c2{color:#f6f8fa;background-color:#cf222e}.markdown-body .pl-sr .pl-cce{color:#116329;font-weight:700}.markdown-body .pl-ml{color:#3b2300}.markdown-body .pl-mh,.markdown-body .pl-mh .pl-en,.markdown-body .pl-ms{color:#0550ae;font-weight:700}.markdown-body .pl-mi{color:#1f2328;font-style:italic}.markdown-body .pl-mb{color:#1f2328;font-weight:700}.markdown-body .pl-md{color:#82071e;background-color:#ffebe9}.markdown-body .pl-mi1{color:#116329;background-color:#dafbe1}.markdown-body .pl-mc{color:#953800;background-color:#ffd8b5}.markdown-body .pl-mi2{color:#d1d9e0;background-color:#0550ae}.markdown-body .pl-mdr{color:#8250df;font-weight:700}.markdown-body .pl-ba{color:#59636e}.markdown-body .pl-sg{color:#818b98}.markdown-body .pl-corl{color:#0a3069;text-decoration:underline}.markdown-body [role=button]:focus:not(:focus-visible),.markdown-body [role=tabpanel][tabindex="0"]:focus:not(:focus-visible),.markdown-body button:focus:not(:focus-visible),.markdown-body summary:focus:not(:focus-visible),.markdown-body a:focus:not(:focus-visible){box-shadow:none;outline:none}.markdown-body [tabindex="0"]:focus:not(:focus-visible),.markdown-body details-dialog:focus:not(:focus-visible){outline:none}.markdown-body g-emoji{vertical-align:-.075em;min-width:1ch;font-family:Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol;font-size:1em;font-weight:400;line-height:1;display:inline-block;font-style:normal!important}.markdown-body g-emoji img{width:1em;height:1em}.markdown-body a:has(>p,>div,>pre,>blockquote){display:block}.markdown-body a:has(>p,>div,>pre,>blockquote):not(:has(.snippet-clipboard-content,>pre)){width:fit-content}.markdown-body a:has(>p,>div,>pre,>blockquote):has(.snippet-clipboard-content,>pre):focus-visible{outline:2px solid var(--borderColor-accent-emphasis);outline-offset:2px}.markdown-body .task-list-item{list-style-type:none}.markdown-body .task-list-item label{font-weight:400}.markdown-body .task-list-item.enabled label{cursor:pointer}.markdown-body .task-list-item+.task-list-item{margin-top:.25rem}.markdown-body .task-list-item .handle{display:none}.markdown-body .task-list-item-checkbox{vertical-align:middle;margin:0 .2em .25em -1.4em}.markdown-body ul:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)) .task-list-item-checkbox,.markdown-body ol:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)) .task-list-item-checkbox{margin:0 -1.6em .25em .2em}.markdown-body .contains-task-list:hover .task-list-item-convert-container,.markdown-body .contains-task-list:focus-within .task-list-item-convert-container{clip-path:none;width:auto;height:24px;display:block;overflow:visible}.markdown-body ::-webkit-calendar-picker-indicator{filter:invert(50%)}.markdown-body .markdown-alert{color:inherit;border-left:.25em solid #d1d9e0;margin-bottom:1rem;padding:.5rem 1rem}.markdown-body .markdown-alert>:first-child{margin-top:0}.markdown-body .markdown-alert>:last-child{margin-bottom:0}.markdown-body .markdown-alert .markdown-alert-title{align-items:center;font-weight:500;line-height:1;display:flex}.markdown-body .markdown-alert.markdown-alert-note{border-left-color:#0969da}.markdown-body .markdown-alert.markdown-alert-note .markdown-alert-title{color:#0969da}.markdown-body .markdown-alert.markdown-alert-important{border-left-color:#8250df}.markdown-body .markdown-alert.markdown-alert-important .markdown-alert-title{color:#8250df}.markdown-body .markdown-alert.markdown-alert-warning{border-left-color:#9a6700}.markdown-body .markdown-alert.markdown-alert-warning .markdown-alert-title{color:#9a6700}.markdown-body .markdown-alert.markdown-alert-tip{border-left-color:#1a7f37}.markdown-body .markdown-alert.markdown-alert-tip .markdown-alert-title{color:#1a7f37}.markdown-body .markdown-alert.markdown-alert-caution{border-left-color:#cf222e}.markdown-body .markdown-alert.markdown-alert-caution .markdown-alert-title{color:#d1242f}.markdown-body>:first-child>.heading-element:first-child{margin-top:0!important}.markdown-body .highlight pre:has(+.zeroclipboard-container){min-height:52px}
|
|
1
|
+
:root{--base-color-black-100:#1111111a;--base-color-black-200:#1113;--base-color-black-300:#1111114d;--base-color-black-400:#1116;--base-color-black-500:#11111180;--base-color-black-600:#1119;--base-color-black-700:#111111b3;--base-color-black-800:#111c;--base-color-black-900:#111111e6;--base-color-black-opaque:#111;--base-color-blue-100:#dff1ff;--base-color-blue-150:#d4edff;--base-color-blue-200:#c6e7ff;--base-color-blue-250:#b2deff;--base-color-blue-300:#99d4ff;--base-color-blue-350:#77c5ff;--base-color-blue-400:#4ab2ff;--base-color-blue-500:#0d98ff;--base-color-blue-600:#0a72bf;--base-color-blue-650:#07568f;--base-color-blue-700:#05406c;--base-color-blue-750:#043051;--base-color-blue-800:#03243c;--base-color-blue-850:#021b2d;--base-color-blue-900:#021422;--base-color-brown-100:#efe6dd;--base-color-brown-150:#eaddd2;--base-color-brown-200:#e3d2c3;--base-color-brown-250:#dac3ae;--base-color-brown-300:#cdaf93;--base-color-brown-350:#bd9470;--base-color-brown-400:#a77140;--base-color-brown-500:#894100;--base-color-brown-600:#673100;--base-color-brown-650:#4d2500;--base-color-brown-700:#3a1b00;--base-color-brown-750:#2b1500;--base-color-brown-800:#200f00;--base-color-brown-850:#180c00;--base-color-brown-900:#120900;--base-color-cyan-100:#ddf1f7;--base-color-cyan-150:#d2edf5;--base-color-cyan-200:#c3e7f1;--base-color-cyan-250:#aedfed;--base-color-cyan-300:#93d4e7;--base-color-cyan-350:#70c6de;--base-color-cyan-400:#40b3d3;--base-color-cyan-500:#0099c5;--base-color-cyan-600:#007394;--base-color-cyan-650:#00566f;--base-color-cyan-700:#004153;--base-color-cyan-750:#00303e;--base-color-cyan-800:#00242f;--base-color-cyan-850:#001b23;--base-color-cyan-900:#00141a;--base-color-dark-blue-100:#e0ebf6;--base-color-dark-blue-150:#d5e4f3;--base-color-dark-blue-200:#c7dbef;--base-color-dark-blue-250:#b5cfe9;--base-color-dark-blue-300:#9cbfe2;--base-color-dark-blue-350:#7ba9d8;--base-color-dark-blue-400:#4f8dcb;--base-color-dark-blue-500:#1467ba;--base-color-dark-blue-600:#0f4d8b;--base-color-dark-blue-650:#0b3a69;--base-color-dark-blue-700:#082b4e;--base-color-dark-blue-750:#06213b;--base-color-dark-blue-800:#05182c;--base-color-dark-blue-850:#041221;--base-color-dark-blue-900:#030e19;--base-color-dark-green-100:#ddf1e1;--base-color-dark-green-150:#d2ecd8;--base-color-dark-green-200:#c3e6ca;--base-color-dark-green-250:#aedeb9;--base-color-dark-green-300:#93d3a1;--base-color-dark-green-350:#70c482;--base-color-dark-green-400:#40b059;--base-color-dark-green-500:#009621;--base-color-dark-green-600:#007119;--base-color-dark-green-650:#005413;--base-color-dark-green-700:#003f0e;--base-color-dark-green-750:#002f0a;--base-color-dark-green-800:#002408;--base-color-dark-green-850:#001b06;--base-color-dark-green-900:#001404;--base-color-friendly-blue-100:#dbebff;--base-color-friendly-blue-150:#d1e5ff;--base-color-friendly-blue-200:#c2dcff;--base-color-friendly-blue-250:#add1ff;--base-color-friendly-blue-300:#70aeff;--base-color-friendly-blue-350:#70aeff;--base-color-friendly-blue-400:#3d92ff;--base-color-friendly-blue-500:#006cf8;--base-color-friendly-blue-600:#0050b8;--base-color-friendly-blue-650:#003c8a;--base-color-friendly-blue-700:#002f6b;--base-color-friendly-blue-750:#002f6b;--base-color-friendly-blue-800:#00214d;--base-color-friendly-blue-850:#001b3d;--base-color-friendly-blue-900:#00142e;--base-color-friendly-dark-blue-100:#dce6fe;--base-color-friendly-dark-blue-150:#cddcfe;--base-color-friendly-dark-blue-200:#b8cdfe;--base-color-friendly-dark-blue-250:#9fbbfe;--base-color-friendly-dark-blue-300:#80a5fe;--base-color-friendly-dark-blue-350:#5385fe;--base-color-friendly-dark-blue-400:#165afd;--base-color-friendly-dark-blue-500:#0239be;--base-color-friendly-dark-blue-600:#012d98;--base-color-friendly-dark-blue-650:#01247a;--base-color-friendly-dark-blue-700:#00123d;--base-color-friendly-dark-blue-750:#00123d;--base-color-friendly-dark-blue-800:#000e2e;--base-color-friendly-dark-blue-850:#00091f;--base-color-friendly-dark-blue-900:#00040f;--base-color-green-100:#eff6df;--base-color-green-150:#eaf3d4;--base-color-green-200:#e3efc5;--base-color-green-250:#daeab2;--base-color-green-300:#cee399;--base-color-green-350:#bdda76;--base-color-green-400:#a7cd49;--base-color-green-500:#8abd0c;--base-color-green-600:#688e09;--base-color-green-650:#4e6a07;--base-color-green-700:#3a5005;--base-color-green-750:#2c3c04;--base-color-green-800:#212d03;--base-color-green-850:#192202;--base-color-green-900:#121902;--base-color-grey-100:#f1f1f1;--base-color-grey-150:#ededed;--base-color-grey-200:#e7e7e7;--base-color-grey-250:#dfdfdf;--base-color-grey-300:#d4d4d4;--base-color-grey-350:#c6c6c6;--base-color-grey-400:#b3b3b3;--base-color-grey-500:#999;--base-color-grey-600:#737373;--base-color-grey-650:#565656;--base-color-grey-700:#414141;--base-color-grey-750:#303030;--base-color-grey-800:#242424;--base-color-grey-850:#1b1b1b;--base-color-grey-900:#141414;--base-color-grey-800op80:#242424cc;--base-color-orange-100:#ffebdf;--base-color-orange-150:#ffe5d5;--base-color-orange-200:#ffdcc7;--base-color-orange-250:#ffd0b4;--base-color-orange-300:#ffc19b;--base-color-orange-350:#ffac79;--base-color-orange-400:#ff904d;--base-color-orange-500:#ff6b11;--base-color-orange-600:#bf500d;--base-color-orange-650:#8f3c0a;--base-color-orange-700:#6c2d07;--base-color-orange-750:#512205;--base-color-orange-800:#3c1904;--base-color-orange-850:#2d1303;--base-color-orange-900:#220e02;--base-color-pink-100:#f7e0ed;--base-color-pink-150:#f5d5e7;--base-color-pink-200:#f1c8df;--base-color-pink-250:#ecb5d5;--base-color-pink-300:#e69cc6;--base-color-pink-350:#de7bb4;--base-color-pink-400:#d3509a;--base-color-pink-500:#c41579;--base-color-pink-600:#93105b;--base-color-pink-650:#6e0c44;--base-color-pink-700:#530933;--base-color-pink-750:#3e0726;--base-color-pink-800:#2e051d;--base-color-pink-850:#230416;--base-color-pink-900:#1a0310;--base-color-purple-100:#f1ddf5;--base-color-purple-150:#edd2f1;--base-color-purple-200:#e7c3ed;--base-color-purple-250:#dfaee7;--base-color-purple-300:#d493df;--base-color-purple-350:#c670d4;--base-color-purple-400:#b340c5;--base-color-purple-500:#9900b2;--base-color-purple-600:#730085;--base-color-purple-650:#560064;--base-color-purple-700:#41004b;--base-color-purple-750:#300038;--base-color-purple-800:#24002a;--base-color-purple-850:#1b0020;--base-color-purple-900:#140018;--base-color-red-100:#fbdde0;--base-color-red-150:#fad2d6;--base-color-red-200:#f8c3c9;--base-color-red-250:#f6aeb7;--base-color-red-300:#f3939e;--base-color-red-350:#ef707e;--base-color-red-400:#e94053;--base-color-red-500:#e2001a;--base-color-red-600:#a90014;--base-color-red-650:#7f000f;--base-color-red-700:#5f000b;--base-color-red-750:#470008;--base-color-red-800:#360006;--base-color-red-850:#280005;--base-color-red-900:#1e0003;--base-color-white-100:#ffffff1a;--base-color-white-200:#fff3;--base-color-white-300:#ffffff4d;--base-color-white-400:#fff6;--base-color-white-500:#ffffff80;--base-color-white-600:#fff9;--base-color-white-700:#ffffffb3;--base-color-white-800:#fffc;--base-color-white-900:#ffffffe6;--base-color-white-opaque:#fff;--base-color-yellow-100:#fff6df;--base-color-yellow-150:#fff3d5;--base-color-yellow-200:#ffefc7;--base-color-yellow-250:#ffe9b4;--base-color-yellow-300:#ffe29b;--base-color-yellow-350:#ffd979;--base-color-yellow-400:#ffcc4d;--base-color-yellow-500:#fb1;--base-color-yellow-600:#bf8c0d;--base-color-yellow-650:#8f690a;--base-color-yellow-700:#6c4f07;--base-color-yellow-750:#513b05;--base-color-yellow-800:#3c2c04;--base-color-yellow-850:#2d2103;--base-color-yellow-900:#221902;--base-corner-radius-0:0;--base-corner-radius-50:2px;--base-corner-radius-100:4px;--base-corner-radius-200:8px;--base-corner-radius-300:12px;--base-corner-radius-400:16px;--base-corner-radius-500:20px;--base-corner-radius-600:24px;--base-corner-radius-950:1000px;--base-effect-blur-l:16px;--base-effect-blur-m:8px;--base-effect-blur-s:6px;--base-effect-blur-xl:24px;--base-effect-blur-xs:4px;--base-effect-blur-xxl:32px;--base-effect-blur-xxs:2px;--base-effect-position-l:5px;--base-effect-position-l-negative:-5px;--base-effect-position-m:4px;--base-effect-position-m-negative:-4px;--base-effect-position-none:0;--base-effect-position-s:3px;--base-effect-position-s-negative:-3px;--base-effect-position-xl:6px;--base-effect-position-xl-negative:-6px;--base-effect-position-xs:2px;--base-effect-position-xs-negative:-2px;--base-effect-position-xxl:7px;--base-effect-position-xxl-negative:-7px;--base-effect-position-xxs:1px;--base-effect-position-xxs-negative:-1px;--base-effect-spread-none:0;--base-opacity-100:.1;--base-opacity-200:.2;--base-opacity-300:.3;--base-opacity-400:.4;--base-opacity-500:.5;--base-opacity-600:.6;--base-opacity-700:.7;--base-opacity-800:.8;--base-opacity-900:.9;--base-opacity-none:0;--base-opacity-opaque:1;--base-spacing-002:2px;--base-spacing-004:4px;--base-spacing-006:6px;--base-spacing-008:8px;--base-spacing-012:12px;--base-spacing-016:16px;--base-spacing-024:24px;--base-spacing-032:32px;--base-text-font-family-inter:Inter;--base-text-font-family-segoe:Segoe UI;--base-text-font-size-body:15px;--base-text-font-size-caption:12px;--base-text-font-size-description:13px;--base-text-font-size-display-large:44px;--base-text-font-size-display-medium:38px;--base-text-font-size-display-small:34px;--base-text-font-size-subtitle:18px;--base-text-font-size-title-large:28px;--base-text-font-size-title-medium:24px;--base-text-font-size-title-small:20px;--base-text-font-weight-bold:700;--base-text-font-weight-light:300;--base-text-font-weight-medium:500;--base-text-font-weight-regular:400;--base-text-font-weight-semibold:600;--base-text-line-height-body:20px;--base-text-line-height-caption:14px;--base-text-line-height-description:16px;--base-text-line-height-display-large:52px;--base-text-line-height-display-medium:46px;--base-text-line-height-display-small:40px;--base-text-line-height-subtitle:22px;--base-text-line-height-title-large:34px;--base-text-line-height-title-medium:28px;--base-text-line-height-title-small:24px;--opacity-default:var(--base-opacity-500);--opacity-stronger:var(--base-opacity-700);--opacity-strongest:var(--base-opacity-800);--opacity-weaker:var(--base-opacity-300);--opacity-weakest:var(--base-opacity-200);--radius-l:var(--base-corner-radius-300);--radius-m:var(--base-corner-radius-200);--radius-none:var(--base-corner-radius-0);--radius-round:var(--base-corner-radius-950);--radius-s:var(--base-corner-radius-100);--radius-xl:var(--base-corner-radius-400);--radius-xs:var(--base-corner-radius-50);--spacing-x1:var(--base-spacing-002);--spacing-x2:var(--base-spacing-004);--spacing-x3:var(--base-spacing-006);--spacing-x4:var(--base-spacing-008);--spacing-x6:var(--base-spacing-012);--spacing-x8:var(--base-spacing-016);--spacing-x12:var(--base-spacing-024);--spacing-x16:var(--base-spacing-032);--effect-shadow-default:var(--base-effect-position-none) var(--base-effect-position-m) var(--base-effect-blur-l) var(--base-effect-spread-none) var(--base-color-black-300);--effect-shadow-strong:var(--base-effect-position-xxs) var(--base-effect-position-m) var(--base-effect-blur-xl) var(--base-effect-spread-none) var(--base-color-black-500);--effect-shadow-weak:var(--base-effect-position-none) var(--base-effect-position-none) var(--base-effect-blur-l) var(--base-effect-spread-none) var(--base-color-black-100);--text-body:400 var(--base-text-font-size-body)/var(--base-text-line-height-body) var(--base-text-font-family-inter);--text-body-highlighted:700 var(--base-text-font-size-body)/var(--base-text-line-height-body) var(--base-text-font-family-inter);--text-body-strong:500 var(--base-text-font-size-body)/var(--base-text-line-height-body) var(--base-text-font-family-inter);--text-body-sub:300 var(--base-text-font-size-body)/var(--base-text-line-height-body) var(--base-text-font-family-inter);--text-caption:400 var(--base-text-font-size-caption)/var(--base-text-line-height-caption) var(--base-text-font-family-inter);--text-caption-strong:500 var(--base-text-font-size-caption)/var(--base-text-line-height-caption) var(--base-text-font-family-inter);--text-description:400 var(--base-text-font-size-description)/var(--base-text-line-height-description) var(--base-text-font-family-inter);--text-description-highlighted:700 var(--base-text-font-size-description)/var(--base-text-line-height-description) var(--base-text-font-family-inter);--text-description-strong:500 var(--base-text-font-size-description)/var(--base-text-line-height-description) var(--base-text-font-family-inter);--text-display-large:300 var(--base-text-font-size-display-large)/var(--base-text-line-height-display-large) var(--base-text-font-family-inter);--text-display-large-strong:500 var(--base-text-font-size-display-large)/var(--base-text-line-height-display-large) var(--base-text-font-family-inter);--text-display-medium:300 var(--base-text-font-size-display-medium)/var(--base-text-line-height-display-medium) var(--base-text-font-family-inter);--text-display-medium-strong:500 var(--base-text-font-size-display-medium)/var(--base-text-line-height-display-medium) var(--base-text-font-family-inter);--text-display-small:300 var(--base-text-font-size-display-small)/var(--base-text-line-height-display-small) var(--base-text-font-family-inter);--text-display-small-strong:500 var(--base-text-font-size-display-small)/var(--base-text-line-height-display-small) var(--base-text-font-family-inter);--text-subtitle:300 var(--base-text-font-size-subtitle)/var(--base-text-line-height-subtitle) var(--base-text-font-family-inter);--text-subtitle-strong:500 var(--base-text-font-size-subtitle)/var(--base-text-line-height-subtitle) var(--base-text-font-family-inter);--text-title-large:300 var(--base-text-font-size-title-large)/var(--base-text-line-height-title-large) var(--base-text-font-family-inter);--text-title-large-strong:500 var(--base-text-font-size-title-large)/var(--base-text-line-height-title-large) var(--base-text-font-family-inter);--text-title-medium:300 var(--base-text-font-size-title-medium)/var(--base-text-line-height-title-medium) var(--base-text-font-family-inter);--text-title-medium-strong:500 var(--base-text-font-size-title-medium)/var(--base-text-line-height-title-medium) var(--base-text-font-family-inter);--text-title-small:300 var(--base-text-font-size-title-small)/var(--base-text-line-height-title-small) var(--base-text-font-family-inter);--text-title-small-strong:500 var(--base-text-font-size-title-small)/var(--base-text-line-height-title-small) var(--base-text-font-family-inter)}body:not([sd-color-scheme]),[sd-color-scheme=light\ dark]:not(.prefers-dark),[sd-color-scheme=light]{--color-bg-accent:var(--base-color-dark-blue-500);--color-bg-action-accent-default:var(--base-color-dark-blue-500);--color-bg-action-accent-default-hover:var(--base-color-dark-blue-600);--color-bg-action-accent-default-pressed:var(--base-color-dark-blue-650);--color-bg-action-accent-weak:var(--base-color-dark-blue-100);--color-bg-action-accent-weak-hover:var(--base-color-dark-blue-150);--color-bg-action-accent-weak-pressed:var(--base-color-dark-blue-200);--color-bg-action-accent-weakest:var(--base-color-white-opaque);--color-bg-action-accent-weakest-hover:var(--base-color-dark-blue-100);--color-bg-action-accent-weakest-pressed:var(--base-color-dark-blue-200);--color-bg-action-danger-default:var(--base-color-red-100);--color-bg-action-danger-default-hover:var(--base-color-red-150);--color-bg-action-danger-default-pressed:var(--base-color-red-200);--color-bg-action-neutral-default:var(--base-color-grey-300);--color-bg-action-neutral-default-hover:var(--base-color-grey-350);--color-bg-action-neutral-default-pressed:var(--base-color-grey-400);--color-bg-action-neutral-weak:var(--base-color-grey-150);--color-bg-action-neutral-weak-hover:var(--base-color-grey-250);--color-bg-action-neutral-weak-pressed:var(--base-color-grey-300);--color-bg-action-neutral-weakest:var(--base-color-white-opaque);--color-bg-action-neutral-weakest-hover:var(--base-color-grey-150);--color-bg-action-neutral-weakest-pressed:var(--base-color-grey-250);--color-bg-assistive:var(--base-color-dark-blue-100);--color-bg-brand:var(--base-color-red-500);--color-bg-danger:var(--base-color-red-100);--color-bg-default:var(--base-color-white-opaque);--color-bg-default-translucent:var(--base-color-white-800);--color-bg-interaction-disabled:var(--base-color-grey-200);--color-bg-selection-accent-default:var(--base-color-dark-blue-500);--color-bg-selection-accent-weak:var(--base-color-dark-blue-200);--color-bg-selection-accent-weak-hover:var(--base-color-dark-blue-100);--color-bg-selection-neutral-default:var(--base-color-grey-150);--color-bg-selection-neutral-default-hover:var(--base-color-grey-250);--color-bg-selection-neutral-weakest:var(--base-color-white-opaque);--color-bg-success:var(--base-color-dark-green-100);--color-bg-warning:var(--base-color-yellow-100);--color-bg-weak:var(--base-color-grey-100);--color-bg-weaker:var(--base-color-grey-150);--color-border-accent:var(--base-color-dark-blue-500);--color-border-action-accent-default:var(--base-color-dark-blue-500);--color-border-action-accent-default-hover:var(--base-color-dark-blue-600);--color-border-action-accent-default-pressed:var(--base-color-dark-blue-650);--color-border-action-danger-default:var(--base-color-red-600);--color-border-action-danger-default-hover:var(--base-color-red-650);--color-border-action-danger-default-pressed:var(--base-color-red-700);--color-border-action-neutral-default:var(--base-color-grey-500);--color-border-action-neutral-default-hover:var(--base-color-grey-600);--color-border-action-neutral-default-pressed:var(--base-color-grey-650);--color-border-assistive-default:var(--base-color-dark-blue-200);--color-border-assistive-neutral:var(--base-color-grey-300);--color-border-assistive-strong:var(--base-color-dark-blue-500);--color-border-danger-default:var(--base-color-red-200);--color-border-danger-strong:var(--base-color-red-600);--color-border-default:var(--base-color-grey-300);--color-border-interaction-disabled:var(--base-color-grey-350);--color-border-interaction-focus:var(--base-color-black-opaque);--color-border-on-color:var(--base-color-white-opaque);--color-border-on-translucent:var(--base-color-white-100);--color-border-selection-accent-default:var(--base-color-dark-blue-500);--color-border-selection-accent-weak:var(--base-color-dark-blue-200);--color-border-selection-neutral-default:var(--base-color-grey-500);--color-border-strong:var(--base-color-grey-400);--color-border-success-default:var(--base-color-dark-green-200);--color-border-success-strong:var(--base-color-dark-green-600);--color-border-warning-default:var(--base-color-yellow-250);--color-border-warning-strong:var(--base-color-yellow-600);--color-border-weak:var(--base-color-grey-150);--color-fg-accent:var(--base-color-dark-blue-500);--color-fg-action-accent-default:var(--base-color-dark-blue-500);--color-fg-action-accent-default-hover:var(--base-color-dark-blue-600);--color-fg-action-accent-default-pressed:var(--base-color-dark-blue-650);--color-fg-action-danger-default:var(--base-color-red-600);--color-fg-action-danger-default-hover:var(--base-color-red-650);--color-fg-action-danger-default-pressed:var(--base-color-red-700);--color-fg-action-neutral-default:var(--base-color-black-opaque);--color-fg-action-neutral-default-hover:var(--base-color-grey-850);--color-fg-action-neutral-default-pressed:var(--base-color-grey-800);--color-fg-action-neutral-weak:var(--base-color-grey-600);--color-fg-action-neutral-weak-hover:var(--base-color-grey-650);--color-fg-action-neutral-weak-pressed:var(--base-color-grey-650);--color-fg-assistive-default:var(--base-color-dark-blue-500);--color-fg-assistive-neutral:var(--base-color-grey-600);--color-fg-danger:var(--base-color-red-600);--color-fg-default:var(--base-color-black-opaque);--color-fg-interaction-disabled:var(--base-color-grey-500);--color-fg-interaction-on-color:var(--base-color-white-opaque);--color-fg-on-color:var(--base-color-white-opaque);--color-fg-selection-accent-default:var(--base-color-dark-blue-500);--color-fg-selection-neutral-default:var(--base-color-black-opaque);--color-fg-success:var(--base-color-dark-green-600);--color-fg-warning:var(--base-color-yellow-600);--color-fg-weak:var(--base-color-grey-650);--color-fg-weaker:var(--base-color-grey-600);--color-rainbow-ai-default-gradient-end:var(--base-color-friendly-blue-500);--color-rainbow-ai-default-gradient-start:var(--base-color-friendly-dark-blue-500);--color-rainbow-ai-strong10-gradient-end:var(--base-color-friendly-blue-600);--color-rainbow-ai-strong10-gradient-start:var(--base-color-friendly-dark-blue-600);--color-rainbow-ai-strong20-gradient-end:var(--base-color-friendly-blue-650);--color-rainbow-ai-strong20-gradient-start:var(--base-color-friendly-dark-blue-650);--color-rainbow-ai-strong30-gradient-end:var(--base-color-friendly-blue-750);--color-rainbow-ai-strong30-gradient-start:var(--base-color-friendly-dark-blue-750);--color-rainbow-ai-weak10-gradient-end:var(--base-color-friendly-blue-350);--color-rainbow-ai-weak10-gradient-start:var(--base-color-friendly-dark-blue-350);--color-rainbow-ai-weak20-gradient-end:var(--base-color-friendly-blue-300);--color-rainbow-ai-weak20-gradient-start:var(--base-color-friendly-dark-blue-300);--color-rainbow-ai-weak30-gradient-end:var(--base-color-friendly-blue-200);--color-rainbow-ai-weak30-gradient-start:var(--base-color-friendly-dark-blue-200);--color-rainbow-ai-weak40-gradient-end:var(--base-color-friendly-blue-100);--color-rainbow-ai-weak40-gradient-start:var(--base-color-friendly-dark-blue-100);--color-rainbow-black:var(--base-color-black-opaque);--color-rainbow-blue-default:var(--base-color-blue-500);--color-rainbow-blue-strong10:var(--base-color-blue-600);--color-rainbow-blue-strong20:var(--base-color-blue-650);--color-rainbow-blue-strong30:var(--base-color-blue-750);--color-rainbow-blue-weak10:var(--base-color-blue-350);--color-rainbow-blue-weak20:var(--base-color-blue-300);--color-rainbow-blue-weak30:var(--base-color-blue-200);--color-rainbow-blue-weak40:var(--base-color-blue-100);--color-rainbow-brown-default:var(--base-color-brown-500);--color-rainbow-brown-strong10:var(--base-color-brown-600);--color-rainbow-brown-strong20:var(--base-color-brown-650);--color-rainbow-brown-strong30:var(--base-color-brown-750);--color-rainbow-brown-weak10:var(--base-color-brown-350);--color-rainbow-brown-weak20:var(--base-color-brown-300);--color-rainbow-brown-weak30:var(--base-color-brown-200);--color-rainbow-brown-weak40:var(--base-color-brown-100);--color-rainbow-cyan-default:var(--base-color-cyan-500);--color-rainbow-cyan-strong10:var(--base-color-cyan-600);--color-rainbow-cyan-strong20:var(--base-color-cyan-650);--color-rainbow-cyan-strong30:var(--base-color-cyan-750);--color-rainbow-cyan-weak10:var(--base-color-cyan-350);--color-rainbow-cyan-weak20:var(--base-color-cyan-300);--color-rainbow-cyan-weak30:var(--base-color-cyan-200);--color-rainbow-cyan-weak40:var(--base-color-cyan-100);--color-rainbow-dark-blue-default:var(--base-color-dark-blue-500);--color-rainbow-dark-blue-strong10:var(--base-color-dark-blue-600);--color-rainbow-dark-blue-strong20:var(--base-color-dark-blue-650);--color-rainbow-dark-blue-strong30:var(--base-color-dark-blue-750);--color-rainbow-dark-blue-weak10:var(--base-color-dark-blue-350);--color-rainbow-dark-blue-weak20:var(--base-color-dark-blue-300);--color-rainbow-dark-blue-weak30:var(--base-color-dark-blue-200);--color-rainbow-dark-blue-weak40:var(--base-color-dark-blue-100);--color-rainbow-dark-green-default:var(--base-color-dark-green-500);--color-rainbow-dark-green-strong10:var(--base-color-dark-green-600);--color-rainbow-dark-green-strong20:var(--base-color-dark-green-650);--color-rainbow-dark-green-strong30:var(--base-color-dark-green-750);--color-rainbow-dark-green-weak10:var(--base-color-dark-green-350);--color-rainbow-dark-green-weak20:var(--base-color-dark-green-300);--color-rainbow-dark-green-weak30:var(--base-color-dark-green-200);--color-rainbow-dark-green-weak40:var(--base-color-dark-green-100);--color-rainbow-green-default:var(--base-color-green-500);--color-rainbow-green-strong10:var(--base-color-green-600);--color-rainbow-green-strong20:var(--base-color-green-650);--color-rainbow-green-strong30:var(--base-color-green-750);--color-rainbow-green-weak10:var(--base-color-green-350);--color-rainbow-green-weak20:var(--base-color-green-300);--color-rainbow-green-weak30:var(--base-color-green-200);--color-rainbow-green-weak40:var(--base-color-green-100);--color-rainbow-grey-default:var(--base-color-grey-500);--color-rainbow-grey-strong10:var(--base-color-grey-600);--color-rainbow-grey-strong20:var(--base-color-grey-650);--color-rainbow-grey-strong30:var(--base-color-grey-750);--color-rainbow-grey-weak10:var(--base-color-grey-350);--color-rainbow-grey-weak20:var(--base-color-grey-300);--color-rainbow-grey-weak30:var(--base-color-grey-200);--color-rainbow-grey-weak40:var(--base-color-grey-100);--color-rainbow-mono-strong:var(--base-color-black-opaque);--color-rainbow-mono-weak:var(--base-color-white-opaque);--color-rainbow-orange-default:var(--base-color-orange-500);--color-rainbow-orange-strong10:var(--base-color-orange-600);--color-rainbow-orange-strong20:var(--base-color-orange-650);--color-rainbow-orange-strong30:var(--base-color-orange-750);--color-rainbow-orange-weak10:var(--base-color-orange-350);--color-rainbow-orange-weak20:var(--base-color-orange-300);--color-rainbow-orange-weak30:var(--base-color-orange-200);--color-rainbow-orange-weak40:var(--base-color-orange-100);--color-rainbow-pink-default:var(--base-color-pink-500);--color-rainbow-pink-strong10:var(--base-color-pink-600);--color-rainbow-pink-strong20:var(--base-color-pink-650);--color-rainbow-pink-strong30:var(--base-color-pink-750);--color-rainbow-pink-weak10:var(--base-color-pink-350);--color-rainbow-pink-weak20:var(--base-color-pink-300);--color-rainbow-pink-weak30:var(--base-color-pink-200);--color-rainbow-pink-weak40:var(--base-color-pink-100);--color-rainbow-purple-default:var(--base-color-purple-500);--color-rainbow-purple-strong10:var(--base-color-purple-600);--color-rainbow-purple-strong20:var(--base-color-purple-650);--color-rainbow-purple-strong30:var(--base-color-purple-750);--color-rainbow-purple-weak10:var(--base-color-purple-350);--color-rainbow-purple-weak20:var(--base-color-purple-300);--color-rainbow-purple-weak30:var(--base-color-purple-200);--color-rainbow-purple-weak40:var(--base-color-purple-100);--color-rainbow-red-default:var(--base-color-red-500);--color-rainbow-red-strong10:var(--base-color-red-600);--color-rainbow-red-strong20:var(--base-color-red-650);--color-rainbow-red-strong30:var(--base-color-red-750);--color-rainbow-red-weak10:var(--base-color-red-350);--color-rainbow-red-weak20:var(--base-color-red-300);--color-rainbow-red-weak30:var(--base-color-red-200);--color-rainbow-red-weak40:var(--base-color-red-100);--color-rainbow-white:var(--base-color-white-opaque);--color-rainbow-yellow-default:var(--base-color-yellow-500);--color-rainbow-yellow-strong10:var(--base-color-yellow-600);--color-rainbow-yellow-strong20:var(--base-color-yellow-650);--color-rainbow-yellow-strong30:var(--base-color-yellow-750);--color-rainbow-yellow-weak10:var(--base-color-yellow-350);--color-rainbow-yellow-weak20:var(--base-color-yellow-300);--color-rainbow-yellow-weak30:var(--base-color-yellow-200);--color-rainbow-yellow-weak40:var(--base-color-yellow-100);--color-rainbow-ai-default:linear-gradient(90deg, var(--color-rainbow-ai-default-gradient-start) 0%, var(--color-rainbow-ai-default-gradient-end) 100%);--color-rainbow-ai-strong10:linear-gradient(90deg, var(--color-rainbow-ai-strong10-gradient-start) 0%, var(--color-rainbow-ai-strong10-gradient-end) 100%);--color-rainbow-ai-strong20:linear-gradient(90deg, var(--color-rainbow-ai-strong20-gradient-start) 0%, var(--color-rainbow-ai-strong20-gradient-end) 100%);--color-rainbow-ai-strong30:linear-gradient(90deg, var(--color-rainbow-ai-strong30-gradient-start) 0%, var(--color-rainbow-ai-strong30-gradient-end) 100%);--color-rainbow-ai-weak10:linear-gradient(90deg, var(--color-rainbow-ai-weak10-gradient-start) 0%, var(--color-rainbow-ai-weak10-gradient-end) 100%);--color-rainbow-ai-weak20:linear-gradient(270deg, var(--color-rainbow-ai-weak20-gradient-start) 0%, var(--color-rainbow-ai-weak20-gradient-end) 100%);--color-rainbow-ai-weak30:linear-gradient(270deg, var(--color-rainbow-ai-weak30-gradient-start) 0%, var(--color-rainbow-ai-weak30-gradient-end) 100%);--color-rainbow-ai-weak40:linear-gradient(270deg, var(--color-rainbow-ai-weak40-gradient-start) 0%, var(--color-rainbow-ai-weak40-gradient-end) 100%)}[sd-color-scheme=light\ dark].prefers-dark,[sd-color-scheme=dark]{--color-bg-accent:var(--base-color-blue-500);--color-bg-action-accent-default:var(--base-color-blue-500);--color-bg-action-accent-default-hover:var(--base-color-blue-600);--color-bg-action-accent-default-pressed:var(--base-color-blue-650);--color-bg-action-accent-weak:var(--base-color-blue-850);--color-bg-action-accent-weak-hover:var(--base-color-blue-800);--color-bg-action-accent-weak-pressed:var(--base-color-blue-750);--color-bg-action-accent-weakest:var(--base-color-grey-800);--color-bg-action-accent-weakest-hover:var(--base-color-dark-blue-750);--color-bg-action-accent-weakest-pressed:var(--base-color-dark-blue-800);--color-bg-action-danger-default:var(--base-color-red-800);--color-bg-action-danger-default-hover:var(--base-color-red-750);--color-bg-action-danger-default-pressed:var(--base-color-red-700);--color-bg-action-neutral-default:var(--base-color-grey-700);--color-bg-action-neutral-default-hover:var(--base-color-grey-650);--color-bg-action-neutral-default-pressed:var(--base-color-grey-600);--color-bg-action-neutral-weak:var(--base-color-grey-700);--color-bg-action-neutral-weak-hover:var(--base-color-grey-650);--color-bg-action-neutral-weak-pressed:var(--base-color-grey-600);--color-bg-action-neutral-weakest:var(--base-color-grey-800);--color-bg-action-neutral-weakest-hover:var(--base-color-grey-700);--color-bg-action-neutral-weakest-pressed:var(--base-color-grey-750);--color-bg-assistive:var(--base-color-blue-750);--color-bg-brand:var(--base-color-grey-700);--color-bg-danger:var(--base-color-red-800);--color-bg-default:var(--base-color-grey-800);--color-bg-default-translucent:var(--base-color-grey-800op80);--color-bg-interaction-disabled:var(--base-color-grey-850);--color-bg-selection-accent-default:var(--base-color-blue-500);--color-bg-selection-accent-weak:var(--base-color-blue-800);--color-bg-selection-accent-weak-hover:var(--base-color-blue-850);--color-bg-selection-neutral-default:var(--base-color-grey-700);--color-bg-selection-neutral-default-hover:var(--base-color-grey-750);--color-bg-selection-neutral-weakest:var(--base-color-grey-800);--color-bg-success:var(--base-color-dark-green-750);--color-bg-warning:var(--base-color-yellow-800);--color-bg-weak:var(--base-color-grey-900);--color-bg-weaker:var(--base-color-black-opaque);--color-border-accent:var(--base-color-blue-500);--color-border-action-accent-default:var(--base-color-blue-500);--color-border-action-accent-default-hover:var(--base-color-blue-600);--color-border-action-accent-default-pressed:var(--base-color-blue-650);--color-border-action-danger-default:var(--base-color-red-400);--color-border-action-danger-default-hover:var(--base-color-red-500);--color-border-action-danger-default-pressed:var(--base-color-red-600);--color-border-action-neutral-default:var(--base-color-grey-500);--color-border-action-neutral-default-hover:var(--base-color-grey-400);--color-border-action-neutral-default-pressed:var(--base-color-grey-350);--color-border-assistive-default:var(--base-color-blue-700);--color-border-assistive-neutral:var(--base-color-grey-700);--color-border-assistive-strong:var(--base-color-blue-500);--color-border-danger-default:var(--base-color-red-750);--color-border-danger-strong:var(--base-color-red-400);--color-border-default:var(--base-color-grey-650);--color-border-interaction-disabled:var(--base-color-grey-650);--color-border-interaction-focus:var(--base-color-white-opaque);--color-border-on-color:var(--base-color-black-opaque);--color-border-on-translucent:var(--base-color-grey-750);--color-border-selection-accent-default:var(--base-color-blue-500);--color-border-selection-accent-weak:var(--base-color-blue-750);--color-border-selection-neutral-default:var(--base-color-grey-500);--color-border-strong:var(--base-color-grey-500);--color-border-success-default:var(--base-color-dark-green-700);--color-border-success-strong:var(--base-color-dark-green-400);--color-border-warning-default:var(--base-color-yellow-750);--color-border-warning-strong:var(--base-color-yellow-400);--color-border-weak:var(--base-color-grey-750);--color-fg-accent:var(--base-color-blue-500);--color-fg-action-accent-default:var(--base-color-blue-500);--color-fg-action-accent-default-hover:var(--base-color-blue-600);--color-fg-action-accent-default-pressed:var(--base-color-blue-700);--color-fg-action-danger-default:var(--base-color-red-400);--color-fg-action-danger-default-hover:var(--base-color-red-500);--color-fg-action-danger-default-pressed:var(--base-color-red-600);--color-fg-action-neutral-default:var(--base-color-white-opaque);--color-fg-action-neutral-default-hover:var(--base-color-grey-150);--color-fg-action-neutral-default-pressed:var(--base-color-grey-200);--color-fg-action-neutral-weak:var(--base-color-grey-400);--color-fg-action-neutral-weak-hover:var(--base-color-grey-350);--color-fg-action-neutral-weak-pressed:var(--base-color-grey-250);--color-fg-assistive-default:var(--base-color-blue-500);--color-fg-assistive-neutral:var(--base-color-grey-400);--color-fg-danger:var(--base-color-red-400);--color-fg-default:var(--base-color-white-opaque);--color-fg-interaction-disabled:var(--base-color-grey-500);--color-fg-interaction-on-color:var(--base-color-black-opaque);--color-fg-on-color:var(--base-color-black-opaque);--color-fg-selection-accent-default:var(--base-color-blue-500);--color-fg-selection-neutral-default:var(--base-color-white-opaque);--color-fg-success:var(--base-color-dark-green-400);--color-fg-warning:var(--base-color-yellow-400);--color-fg-weak:var(--base-color-grey-250);--color-fg-weaker:var(--base-color-grey-300);--color-rainbow-ai-default-gradient-end:var(--base-color-friendly-blue-500);--color-rainbow-ai-default-gradient-start:var(--base-color-blue-500);--color-rainbow-ai-strong10-gradient-end:var(--base-color-friendly-blue-400);--color-rainbow-ai-strong10-gradient-start:var(--base-color-blue-400);--color-rainbow-ai-strong20-gradient-end:var(--base-color-friendly-blue-350);--color-rainbow-ai-strong20-gradient-start:var(--base-color-blue-350);--color-rainbow-ai-strong30-gradient-end:var(--base-color-friendly-blue-200);--color-rainbow-ai-strong30-gradient-start:var(--base-color-blue-200);--color-rainbow-ai-weak10-gradient-end:var(--base-color-friendly-blue-650);--color-rainbow-ai-weak10-gradient-start:var(--base-color-blue-650);--color-rainbow-ai-weak20-gradient-end:var(--base-color-friendly-blue-700);--color-rainbow-ai-weak20-gradient-start:var(--base-color-blue-700);--color-rainbow-ai-weak30-gradient-end:var(--base-color-friendly-blue-750);--color-rainbow-ai-weak30-gradient-start:var(--base-color-blue-800);--color-rainbow-ai-weak40-gradient-end:var(--base-color-friendly-blue-800);--color-rainbow-ai-weak40-gradient-start:var(--base-color-blue-850);--color-rainbow-black:var(--base-color-black-opaque);--color-rainbow-blue-default:var(--base-color-blue-500);--color-rainbow-blue-strong10:var(--base-color-blue-400);--color-rainbow-blue-strong20:var(--base-color-blue-350);--color-rainbow-blue-strong30:var(--base-color-blue-200);--color-rainbow-blue-weak10:var(--base-color-blue-650);--color-rainbow-blue-weak20:var(--base-color-blue-700);--color-rainbow-blue-weak30:var(--base-color-blue-750);--color-rainbow-blue-weak40:var(--base-color-blue-800);--color-rainbow-brown-default:var(--base-color-brown-500);--color-rainbow-brown-strong10:var(--base-color-brown-400);--color-rainbow-brown-strong20:var(--base-color-brown-350);--color-rainbow-brown-strong30:var(--base-color-brown-200);--color-rainbow-brown-weak10:var(--base-color-brown-650);--color-rainbow-brown-weak20:var(--base-color-brown-700);--color-rainbow-brown-weak30:var(--base-color-brown-750);--color-rainbow-brown-weak40:var(--base-color-brown-800);--color-rainbow-cyan-default:var(--base-color-cyan-500);--color-rainbow-cyan-strong10:var(--base-color-cyan-400);--color-rainbow-cyan-strong20:var(--base-color-cyan-350);--color-rainbow-cyan-strong30:var(--base-color-cyan-200);--color-rainbow-cyan-weak10:var(--base-color-cyan-650);--color-rainbow-cyan-weak20:var(--base-color-cyan-700);--color-rainbow-cyan-weak30:var(--base-color-cyan-750);--color-rainbow-cyan-weak40:var(--base-color-cyan-800);--color-rainbow-dark-blue-default:var(--base-color-dark-blue-500);--color-rainbow-dark-blue-strong10:var(--base-color-dark-blue-400);--color-rainbow-dark-blue-strong20:var(--base-color-dark-blue-350);--color-rainbow-dark-blue-strong30:var(--base-color-dark-blue-200);--color-rainbow-dark-blue-weak10:var(--base-color-dark-blue-650);--color-rainbow-dark-blue-weak20:var(--base-color-dark-blue-700);--color-rainbow-dark-blue-weak30:var(--base-color-dark-blue-750);--color-rainbow-dark-blue-weak40:var(--base-color-dark-blue-800);--color-rainbow-dark-green-default:var(--base-color-dark-green-500);--color-rainbow-dark-green-strong10:var(--base-color-dark-green-400);--color-rainbow-dark-green-strong20:var(--base-color-dark-green-350);--color-rainbow-dark-green-strong30:var(--base-color-dark-green-200);--color-rainbow-dark-green-weak10:var(--base-color-dark-green-650);--color-rainbow-dark-green-weak20:var(--base-color-dark-green-700);--color-rainbow-dark-green-weak30:var(--base-color-dark-green-750);--color-rainbow-dark-green-weak40:var(--base-color-dark-green-800);--color-rainbow-green-default:var(--base-color-green-500);--color-rainbow-green-strong10:var(--base-color-green-400);--color-rainbow-green-strong20:var(--base-color-green-350);--color-rainbow-green-strong30:var(--base-color-green-200);--color-rainbow-green-weak10:var(--base-color-green-650);--color-rainbow-green-weak20:var(--base-color-green-700);--color-rainbow-green-weak30:var(--base-color-green-750);--color-rainbow-green-weak40:var(--base-color-green-800);--color-rainbow-grey-default:var(--base-color-grey-500);--color-rainbow-grey-strong10:var(--base-color-grey-400);--color-rainbow-grey-strong20:var(--base-color-grey-350);--color-rainbow-grey-strong30:var(--base-color-grey-200);--color-rainbow-grey-weak10:var(--base-color-grey-650);--color-rainbow-grey-weak20:var(--base-color-grey-700);--color-rainbow-grey-weak30:var(--base-color-grey-750);--color-rainbow-grey-weak40:var(--base-color-grey-800);--color-rainbow-mono-strong:var(--base-color-white-opaque);--color-rainbow-mono-weak:var(--base-color-grey-800);--color-rainbow-orange-default:var(--base-color-orange-500);--color-rainbow-orange-strong10:var(--base-color-orange-400);--color-rainbow-orange-strong20:var(--base-color-orange-350);--color-rainbow-orange-strong30:var(--base-color-orange-200);--color-rainbow-orange-weak10:var(--base-color-orange-650);--color-rainbow-orange-weak20:var(--base-color-orange-700);--color-rainbow-orange-weak30:var(--base-color-orange-750);--color-rainbow-orange-weak40:var(--base-color-orange-800);--color-rainbow-pink-default:var(--base-color-pink-500);--color-rainbow-pink-strong10:var(--base-color-pink-400);--color-rainbow-pink-strong20:var(--base-color-pink-350);--color-rainbow-pink-strong30:var(--base-color-pink-200);--color-rainbow-pink-weak10:var(--base-color-pink-650);--color-rainbow-pink-weak20:var(--base-color-pink-700);--color-rainbow-pink-weak30:var(--base-color-pink-750);--color-rainbow-pink-weak40:var(--base-color-pink-800);--color-rainbow-purple-default:var(--base-color-purple-500);--color-rainbow-purple-strong10:var(--base-color-purple-400);--color-rainbow-purple-strong20:var(--base-color-purple-350);--color-rainbow-purple-strong30:var(--base-color-purple-200);--color-rainbow-purple-weak10:var(--base-color-purple-650);--color-rainbow-purple-weak20:var(--base-color-purple-650);--color-rainbow-purple-weak30:var(--base-color-purple-750);--color-rainbow-purple-weak40:var(--base-color-purple-800);--color-rainbow-red-default:var(--base-color-red-500);--color-rainbow-red-strong10:var(--base-color-red-400);--color-rainbow-red-strong20:var(--base-color-red-350);--color-rainbow-red-strong30:var(--base-color-red-200);--color-rainbow-red-weak10:var(--base-color-red-650);--color-rainbow-red-weak20:var(--base-color-red-700);--color-rainbow-red-weak30:var(--base-color-red-750);--color-rainbow-red-weak40:var(--base-color-red-800);--color-rainbow-white:var(--base-color-white-opaque);--color-rainbow-yellow-default:var(--base-color-yellow-500);--color-rainbow-yellow-strong10:var(--base-color-yellow-400);--color-rainbow-yellow-strong20:var(--base-color-yellow-350);--color-rainbow-yellow-strong30:var(--base-color-yellow-200);--color-rainbow-yellow-weak10:var(--base-color-yellow-650);--color-rainbow-yellow-weak20:var(--base-color-yellow-700);--color-rainbow-yellow-weak30:var(--base-color-yellow-750);--color-rainbow-yellow-weak40:var(--base-color-yellow-800);--color-rainbow-ai-default:linear-gradient(90deg, var(--color-rainbow-ai-default-gradient-start) 0%, var(--color-rainbow-ai-default-gradient-end) 100%);--color-rainbow-ai-strong10:linear-gradient(90deg, var(--color-rainbow-ai-strong10-gradient-start) 0%, var(--color-rainbow-ai-strong10-gradient-end) 100%);--color-rainbow-ai-strong20:linear-gradient(90deg, var(--color-rainbow-ai-strong20-gradient-start) 0%, var(--color-rainbow-ai-strong20-gradient-end) 100%);--color-rainbow-ai-strong30:linear-gradient(90deg, var(--color-rainbow-ai-strong30-gradient-start) 0%, var(--color-rainbow-ai-strong30-gradient-end) 100%);--color-rainbow-ai-weak10:linear-gradient(90deg, var(--color-rainbow-ai-weak10-gradient-start) 0%, var(--color-rainbow-ai-weak10-gradient-end) 100%);--color-rainbow-ai-weak20:linear-gradient(270deg, var(--color-rainbow-ai-weak20-gradient-start) 0%, var(--color-rainbow-ai-weak20-gradient-end) 100%);--color-rainbow-ai-weak30:linear-gradient(270deg, var(--color-rainbow-ai-weak30-gradient-start) 0%, var(--color-rainbow-ai-weak30-gradient-end) 100%);--color-rainbow-ai-weak40:linear-gradient(270deg, var(--color-rainbow-ai-weak40-gradient-start) 0%, var(--color-rainbow-ai-weak40-gradient-end) 100%)}.markdown-body{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;color:#1f2328;word-wrap:break-word;background-color:#fff;margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Noto Sans,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji;font-size:16px;font-weight:400;line-height:1.5}.markdown-body a{text-underline-offset:.2rem;text-decoration:underline}.markdown-body .octicon{fill:currentColor;vertical-align:text-bottom;display:inline-block}.markdown-body h1:hover .anchor .octicon-link:before,.markdown-body h2:hover .anchor .octicon-link:before,.markdown-body h3:hover .anchor .octicon-link:before,.markdown-body h4:hover .anchor .octicon-link:before,.markdown-body h5:hover .anchor .octicon-link:before,.markdown-body h6:hover .anchor .octicon-link:before{content:" ";background-color:currentColor;width:16px;height:16px;display:inline-block;-webkit-mask-image:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' version='1.1' aria-hidden='true'><path fill-rule='evenodd' d='M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z'></path></svg>");mask-image:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' version='1.1' aria-hidden='true'><path fill-rule='evenodd' d='M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z'></path></svg>")}.markdown-body details,.markdown-body figcaption,.markdown-body figure{display:block}.markdown-body summary{display:list-item}.markdown-body [hidden]{display:none!important}.markdown-body a{color:#0969da;background-color:#0000;text-decoration:none}.markdown-body abbr[title]{border-bottom:none;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}.markdown-body b,.markdown-body strong{font-weight:600}.markdown-body dfn{font-style:italic}.markdown-body h1{border-bottom:1px solid #d1d9e0b3;margin:.67em 0;padding-bottom:.3em;font-size:2em;font-weight:600}.markdown-body mark{color:#1f2328;background-color:#fff8c5}.markdown-body small{font-size:90%}.markdown-body sub,.markdown-body sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}.markdown-body sub{bottom:-.25em}.markdown-body sup{top:-.5em}.markdown-body img{box-sizing:content-box;border-style:none;max-width:100%}.markdown-body code,.markdown-body kbd,.markdown-body pre,.markdown-body samp{font-family:monospace;font-size:1em}.markdown-body figure{margin:1em 2.5rem}.markdown-body hr{box-sizing:content-box;background:#d1d9e0;border:0;height:.25em;margin:1.5rem 0;padding:0;overflow:hidden}.markdown-body input{font:inherit;font-family:inherit;font-size:inherit;line-height:inherit;margin:0;overflow:visible}.markdown-body [type=button],.markdown-body [type=reset],.markdown-body [type=submit]{appearance:button}.markdown-body [type=checkbox],.markdown-body [type=radio]{box-sizing:border-box;padding:0}.markdown-body [type=number]::-webkit-inner-spin-button{height:auto}.markdown-body [type=number]::-webkit-outer-spin-button{height:auto}.markdown-body [type=search]::-webkit-search-cancel-button{appearance:none}.markdown-body [type=search]::-webkit-search-decoration{appearance:none}.markdown-body ::-webkit-input-placeholder{color:inherit;opacity:.54}.markdown-body ::-webkit-file-upload-button{appearance:button;font:inherit}.markdown-body a:hover{text-decoration:underline}.markdown-body ::placeholder{color:#59636e;opacity:1}.markdown-body hr:before{content:"";display:table}.markdown-body hr:after{clear:both;content:"";display:table}.markdown-body table{border-spacing:0;border-collapse:collapse;font-variant:tabular-nums;width:max-content;max-width:100%;display:block;overflow:auto}.markdown-body td,.markdown-body th{padding:0}.markdown-body details summary{cursor:pointer}.markdown-body a:focus,.markdown-body [role=button]:focus,.markdown-body input[type=radio]:focus,.markdown-body input[type=checkbox]:focus{outline:2px solid var(--borderColor-accent-emphasis);outline-offset:-2px;box-shadow:none}.markdown-body a:focus:not(:focus-visible),.markdown-body [role=button]:focus:not(:focus-visible),.markdown-body input[type=radio]:focus:not(:focus-visible),.markdown-body input[type=checkbox]:focus:not(:focus-visible){outline:1px solid #0000}.markdown-body a:focus-visible,.markdown-body [role=button]:focus-visible,.markdown-body input[type=radio]:focus-visible,.markdown-body input[type=checkbox]:focus-visible{outline:2px solid var(--borderColor-accent-emphasis);outline-offset:-2px;box-shadow:none}.markdown-body a:not([class]):focus,.markdown-body a:not([class]):focus-visible,.markdown-body input[type=radio]:focus,.markdown-body input[type=radio]:focus-visible,.markdown-body input[type=checkbox]:focus,.markdown-body input[type=checkbox]:focus-visible{outline-offset:0}.markdown-body kbd{color:#1f2328;vertical-align:middle;border:solid 1px var(--borderColor-muted);border-bottom-color:var(--borderColor-muted);box-shadow:inset 0 -1px 0 var(--borderColor-muted);background-color:#f6f8fa;border-radius:6px;padding:.25rem;font:11px/10px ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace;display:inline-block}.markdown-body h1,.markdown-body h2,.markdown-body h3,.markdown-body h4,.markdown-body h5,.markdown-body h6{margin-top:1.5rem;margin-bottom:1rem;font-weight:600;line-height:1.25}.markdown-body h2{border-bottom:1px solid #d1d9e0b3;padding-bottom:.3em;font-size:1.5em;font-weight:600}.markdown-body h3{font-size:1.25em;font-weight:600}.markdown-body h4{font-size:1em;font-weight:600}.markdown-body h5{font-size:.875em;font-weight:600}.markdown-body h6{color:#59636e;font-size:.85em;font-weight:600}.markdown-body p{margin-top:0;margin-bottom:10px}.markdown-body blockquote{color:#59636e;border-left:.25em solid #d1d9e0;margin:0;padding:0 1em}.markdown-body ul,.markdown-body ol{margin-top:0;margin-bottom:0;padding-left:2em}.markdown-body ol ol,.markdown-body ul ol{list-style-type:lower-roman}.markdown-body ul ul ol,.markdown-body ul ol ol,.markdown-body ol ul ol,.markdown-body ol ol ol{list-style-type:lower-alpha}.markdown-body dd{margin-left:0}.markdown-body tt,.markdown-body code,.markdown-body samp{font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace;font-size:12px}.markdown-body pre{word-wrap:normal;margin-top:0;margin-bottom:0;font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace;font-size:12px}.markdown-body .octicon{vertical-align:text-bottom;fill:currentColor;display:inline-block;overflow:visible!important}.markdown-body input::-webkit-outer-spin-button{appearance:none;margin:0}.markdown-body input::-webkit-inner-spin-button{appearance:none;margin:0}.markdown-body .mr-2{margin-right:.5rem!important}.markdown-body:before{content:"";display:table}.markdown-body:after{clear:both;content:"";display:table}.markdown-body>:first-child{margin-top:0!important}.markdown-body>:last-child{margin-bottom:0!important}.markdown-body a:not([href]){color:inherit;text-decoration:none}.markdown-body .absent{color:#d1242f}.markdown-body .anchor{float:left;margin-left:-20px;padding-right:.25rem;line-height:1}.markdown-body .anchor:focus{outline:none}.markdown-body p,.markdown-body blockquote,.markdown-body ul,.markdown-body ol,.markdown-body dl,.markdown-body table,.markdown-body pre,.markdown-body details{margin-top:0;margin-bottom:1rem}.markdown-body blockquote>:first-child{margin-top:0}.markdown-body blockquote>:last-child{margin-bottom:0}.markdown-body h1 .octicon-link,.markdown-body h2 .octicon-link,.markdown-body h3 .octicon-link,.markdown-body h4 .octicon-link,.markdown-body h5 .octicon-link,.markdown-body h6 .octicon-link{color:#1f2328;vertical-align:middle;visibility:hidden}.markdown-body h1:hover .anchor,.markdown-body h2:hover .anchor,.markdown-body h3:hover .anchor,.markdown-body h4:hover .anchor,.markdown-body h5:hover .anchor,.markdown-body h6:hover .anchor{text-decoration:none}.markdown-body h1:hover .anchor .octicon-link,.markdown-body h2:hover .anchor .octicon-link,.markdown-body h3:hover .anchor .octicon-link,.markdown-body h4:hover .anchor .octicon-link,.markdown-body h5:hover .anchor .octicon-link,.markdown-body h6:hover .anchor .octicon-link{visibility:visible}.markdown-body h1 tt,.markdown-body h1 code,.markdown-body h2 tt,.markdown-body h2 code,.markdown-body h3 tt,.markdown-body h3 code,.markdown-body h4 tt,.markdown-body h4 code,.markdown-body h5 tt,.markdown-body h5 code,.markdown-body h6 tt,.markdown-body h6 code{font-size:inherit;padding:0 .2em}.markdown-body summary h1,.markdown-body summary h2,.markdown-body summary h3,.markdown-body summary h4,.markdown-body summary h5,.markdown-body summary h6{display:inline-block}.markdown-body summary h1 .anchor,.markdown-body summary h2 .anchor,.markdown-body summary h3 .anchor,.markdown-body summary h4 .anchor,.markdown-body summary h5 .anchor,.markdown-body summary h6 .anchor{margin-left:-40px}.markdown-body summary h1,.markdown-body summary h2{border-bottom:0;padding-bottom:0}.markdown-body ul.no-list,.markdown-body ol.no-list{padding:0;list-style-type:none}.markdown-body ol[type=a\ s]{list-style-type:lower-alpha}.markdown-body ol[type=A\ s]{list-style-type:upper-alpha}.markdown-body ol[type=i\ s]{list-style-type:lower-roman}.markdown-body ol[type=I\ s]{list-style-type:upper-roman}.markdown-body ol[type="1"],.markdown-body div>ol:not([type]){list-style-type:decimal}.markdown-body ul ul,.markdown-body ul ol,.markdown-body ol ol,.markdown-body ol ul{margin-top:0;margin-bottom:0}.markdown-body li>p{margin-top:1rem}.markdown-body li+li{margin-top:.25em}.markdown-body dl{padding:0}.markdown-body dl dt{margin-top:1rem;padding:0;font-size:1em;font-style:italic;font-weight:600}.markdown-body dl dd{margin-bottom:1rem;padding:0 1rem}.markdown-body table th{font-weight:600}.markdown-body table th,.markdown-body table td{border:1px solid #d1d9e0;padding:6px 13px}.markdown-body table td>:last-child{margin-bottom:0}.markdown-body table tr{background-color:#fff;border-top:1px solid #d1d9e0b3}.markdown-body table tr:nth-child(2n){background-color:#f6f8fa}.markdown-body table img{background-color:#0000}.markdown-body img[align=right]{padding-left:20px}.markdown-body img[align=left]{padding-right:20px}.markdown-body .emoji{vertical-align:text-top;background-color:#0000;max-width:none}.markdown-body span.frame{display:block;overflow:hidden}.markdown-body span.frame>span{float:left;border:1px solid #d1d9e0;width:auto;margin:13px 0 0;padding:7px;display:block;overflow:hidden}.markdown-body span.frame span img{float:left;display:block}.markdown-body span.frame span span{clear:both;color:#1f2328;padding:5px 0 0;display:block}.markdown-body span.align-center{clear:both;display:block;overflow:hidden}.markdown-body span.align-center>span{text-align:center;margin:13px auto 0;display:block;overflow:hidden}.markdown-body span.align-center span img{text-align:center;margin:0 auto}.markdown-body span.align-right{clear:both;display:block;overflow:hidden}.markdown-body span.align-right>span{text-align:right;margin:13px 0 0;display:block;overflow:hidden}.markdown-body span.align-right span img{text-align:right;margin:0}.markdown-body span.float-left{float:left;margin-right:13px;display:block;overflow:hidden}.markdown-body span.float-left span{margin:13px 0 0}.markdown-body span.float-right{float:right;margin-left:13px;display:block;overflow:hidden}.markdown-body span.float-right>span{text-align:right;margin:13px auto 0;display:block;overflow:hidden}.markdown-body code,.markdown-body tt{white-space:break-spaces;background-color:#818b981f;border-radius:6px;margin:0;padding:.2em .4em;font-size:85%}.markdown-body code br,.markdown-body tt br{display:none}.markdown-body del code{-webkit-text-decoration:inherit;text-decoration:inherit}.markdown-body samp{font-size:85%}.markdown-body pre code{font-size:100%}.markdown-body pre>code{word-break:normal;white-space:pre;background:0 0;border:0;margin:0;padding:0}.markdown-body .highlight{margin-bottom:1rem}.markdown-body .highlight pre{word-break:normal;margin-bottom:0}.markdown-body .highlight pre,.markdown-body pre{color:#1f2328;background-color:#f6f8fa;border-radius:6px;padding:1rem;font-size:85%;line-height:1.45;overflow:auto}.markdown-body pre code,.markdown-body pre tt{line-height:inherit;word-wrap:normal;background-color:#0000;border:0;margin:0;padding:0;display:inline;overflow:visible}.markdown-body .csv-data td,.markdown-body .csv-data th{text-align:left;white-space:nowrap;padding:5px;font-size:12px;line-height:1;overflow:hidden}.markdown-body .csv-data .blob-num{text-align:right;background:#fff;border:0;padding:10px .5rem 9px}.markdown-body .csv-data tr{border-top:0}.markdown-body .csv-data th{background:#f6f8fa;border-top:0;font-weight:600}.markdown-body [data-footnote-ref]:before{content:"["}.markdown-body [data-footnote-ref]:after{content:"]"}.markdown-body .footnotes{color:#59636e;border-top:1px solid #d1d9e0;font-size:12px}.markdown-body .footnotes ol{padding-left:1rem}.markdown-body .footnotes ol ul{margin-top:1rem;padding-left:1rem;display:inline-block}.markdown-body .footnotes li{position:relative}.markdown-body .footnotes li:target:before{pointer-events:none;content:"";border:2px solid #0969da;border-radius:6px;position:absolute;inset:-.5rem -.5rem -.5rem -1.5rem}.markdown-body .footnotes li:target{color:#1f2328}.markdown-body .footnotes .data-footnote-backref g-emoji{font-family:monospace}.markdown-body .pl-c{color:#59636e}.markdown-body .pl-c1,.markdown-body .pl-s .pl-v{color:#0550ae}.markdown-body .pl-e,.markdown-body .pl-en{color:#6639ba}.markdown-body .pl-smi,.markdown-body .pl-s .pl-s1{color:#1f2328}.markdown-body .pl-ent{color:#0550ae}.markdown-body .pl-k{color:#cf222e}.markdown-body .pl-s,.markdown-body .pl-pds,.markdown-body .pl-s .pl-pse .pl-s1,.markdown-body .pl-sr,.markdown-body .pl-sr .pl-cce,.markdown-body .pl-sr .pl-sre,.markdown-body .pl-sr .pl-sra{color:#0a3069}.markdown-body .pl-v,.markdown-body .pl-smw{color:#953800}.markdown-body .pl-bu{color:#82071e}.markdown-body .pl-ii{color:var(--fgColor-danger);background-color:var(--bgColor-danger-muted)}.markdown-body .pl-c2{color:#f6f8fa;background-color:#cf222e}.markdown-body .pl-sr .pl-cce{color:#116329;font-weight:700}.markdown-body .pl-ml{color:#3b2300}.markdown-body .pl-mh,.markdown-body .pl-mh .pl-en,.markdown-body .pl-ms{color:#0550ae;font-weight:700}.markdown-body .pl-mi{color:#1f2328;font-style:italic}.markdown-body .pl-mb{color:#1f2328;font-weight:700}.markdown-body .pl-md{color:#82071e;background-color:#ffebe9}.markdown-body .pl-mi1{color:#116329;background-color:#dafbe1}.markdown-body .pl-mc{color:#953800;background-color:#ffd8b5}.markdown-body .pl-mi2{color:#d1d9e0;background-color:#0550ae}.markdown-body .pl-mdr{color:#8250df;font-weight:700}.markdown-body .pl-ba{color:#59636e}.markdown-body .pl-sg{color:#818b98}.markdown-body .pl-corl{color:#0a3069;text-decoration:underline}.markdown-body [role=button]:focus:not(:focus-visible),.markdown-body [role=tabpanel][tabindex="0"]:focus:not(:focus-visible),.markdown-body button:focus:not(:focus-visible),.markdown-body summary:focus:not(:focus-visible),.markdown-body a:focus:not(:focus-visible){box-shadow:none;outline:none}.markdown-body [tabindex="0"]:focus:not(:focus-visible),.markdown-body details-dialog:focus:not(:focus-visible){outline:none}.markdown-body g-emoji{vertical-align:-.075em;min-width:1ch;font-family:Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol;font-size:1em;font-weight:400;line-height:1;display:inline-block;font-style:normal!important}.markdown-body g-emoji img{width:1em;height:1em}.markdown-body a:has(>p,>div,>pre,>blockquote){display:block}.markdown-body a:has(>p,>div,>pre,>blockquote):not(:has(.snippet-clipboard-content,>pre)){width:fit-content}.markdown-body a:has(>p,>div,>pre,>blockquote):has(.snippet-clipboard-content,>pre):focus-visible{outline:2px solid var(--borderColor-accent-emphasis);outline-offset:2px}.markdown-body .task-list-item{list-style-type:none}.markdown-body .task-list-item label{font-weight:400}.markdown-body .task-list-item.enabled label{cursor:pointer}.markdown-body .task-list-item+.task-list-item{margin-top:.25rem}.markdown-body .task-list-item .handle{display:none}.markdown-body .task-list-item-checkbox{vertical-align:middle;margin:0 .2em .25em -1.4em}.markdown-body ul:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)) .task-list-item-checkbox,.markdown-body ol:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)) .task-list-item-checkbox{margin:0 -1.6em .25em .2em}.markdown-body .contains-task-list:hover .task-list-item-convert-container,.markdown-body .contains-task-list:focus-within .task-list-item-convert-container{clip-path:none;width:auto;height:24px;display:block;overflow:visible}.markdown-body ::-webkit-calendar-picker-indicator{filter:invert(50%)}.markdown-body .markdown-alert{color:inherit;border-left:.25em solid #d1d9e0;margin-bottom:1rem;padding:.5rem 1rem}.markdown-body .markdown-alert>:first-child{margin-top:0}.markdown-body .markdown-alert>:last-child{margin-bottom:0}.markdown-body .markdown-alert .markdown-alert-title{align-items:center;font-weight:500;line-height:1;display:flex}.markdown-body .markdown-alert.markdown-alert-note{border-left-color:#0969da}.markdown-body .markdown-alert.markdown-alert-note .markdown-alert-title{color:#0969da}.markdown-body .markdown-alert.markdown-alert-important{border-left-color:#8250df}.markdown-body .markdown-alert.markdown-alert-important .markdown-alert-title{color:#8250df}.markdown-body .markdown-alert.markdown-alert-warning{border-left-color:#9a6700}.markdown-body .markdown-alert.markdown-alert-warning .markdown-alert-title{color:#9a6700}.markdown-body .markdown-alert.markdown-alert-tip{border-left-color:#1a7f37}.markdown-body .markdown-alert.markdown-alert-tip .markdown-alert-title{color:#1a7f37}.markdown-body .markdown-alert.markdown-alert-caution{border-left-color:#cf222e}.markdown-body .markdown-alert.markdown-alert-caution .markdown-alert-title{color:#d1242f}.markdown-body>:first-child>.heading-element:first-child{margin-top:0!important}.markdown-body .highlight pre:has(+.zeroclipboard-container){min-height:52px}
|
package/dist/docs/doc.mjs
CHANGED
|
@@ -129,17 +129,17 @@ sd-virtual-list {
|
|
|
129
129
|
}
|
|
130
130
|
`,p=`<div id="selection-example">
|
|
131
131
|
<div id="notification"></div>
|
|
132
|
-
<div>
|
|
132
|
+
<div class="list-wrapper">
|
|
133
133
|
<b>Trigger only</b>
|
|
134
|
-
<sd-virtual-list selection-type="trigger-only"
|
|
134
|
+
<sd-virtual-list selection-type="trigger-only" tabindex="0"></sd-virtual-list>
|
|
135
135
|
</div>
|
|
136
|
-
<div>
|
|
136
|
+
<div class="list-wrapper">
|
|
137
137
|
<b>Single select</b>
|
|
138
|
-
<sd-virtual-list selection-type="single"
|
|
138
|
+
<sd-virtual-list selection-type="single" tabindex="0"></sd-virtual-list>
|
|
139
139
|
</div>
|
|
140
|
-
<div>
|
|
140
|
+
<div class="list-wrapper">
|
|
141
141
|
<b>Multi select</b>
|
|
142
|
-
<sd-virtual-list selection-type="multi"
|
|
142
|
+
<sd-virtual-list selection-type="multi" tabindex="0"></sd-virtual-list>
|
|
143
143
|
</div>
|
|
144
144
|
</div>
|
|
145
145
|
`,m=`<h3 id="selection-types">Selection types</h3>
|
|
@@ -201,9 +201,9 @@ sd-virtual-list {
|
|
|
201
201
|
line-height: 50px;
|
|
202
202
|
}
|
|
203
203
|
`,C=`<div id="search-example">
|
|
204
|
-
<div>
|
|
204
|
+
<div class="list-wrapper">
|
|
205
205
|
<div id="search-bar"><label for="search-input">Search: </label><input id="search-input" /></div>
|
|
206
|
-
<sd-virtual-list selection-type="single"
|
|
206
|
+
<sd-virtual-list selection-type="single" tabindex="0"></sd-virtual-list>
|
|
207
207
|
<div id="no-result">No matching items for: <span id="search-term"></span></div>
|
|
208
208
|
</div>
|
|
209
209
|
</div>
|
|
@@ -339,9 +339,9 @@ sd-virtual-list {
|
|
|
339
339
|
#notification + * {
|
|
340
340
|
grid-column-start: 1;
|
|
341
341
|
}
|
|
342
|
-
`,k=`<div id="duplicate-example">
|
|
342
|
+
`,k=`<div id="duplicate-example" class="list-wrapper">
|
|
343
343
|
<div id="notification"></div>
|
|
344
|
-
<sd-virtual-list selection-type="single"
|
|
344
|
+
<sd-virtual-list selection-type="single" tabindex="0"></sd-virtual-list>
|
|
345
345
|
</div>
|
|
346
346
|
`,A=`<h3 id="selection-event-with-duplicate-items">Selection event with duplicate items</h3>
|
|
347
347
|
`,j=`import "@cas-smartdesign/virtual-list";
|
|
@@ -366,7 +366,7 @@ list.addEventListener("sd-virtual-list-selection", (event) => {
|
|
|
366
366
|
}\`;
|
|
367
367
|
});
|
|
368
368
|
`,M=s({default:()=>N}),N={mainContent:k,description:A,css:O,initializer:{content:j,type:`typescript`,initialize:()=>y(()=>import(`./3_duplicate_items.js`),__vite__mapDeps([3,1]),import.meta.url)},additionalSources:[{type:`source`,label:`item-provider`,language:`typescript`,content:u},{type:`source`,label:`sample-data`,language:`typescript`,content:d}]},P=globalThis,F=e=>e,I=P.trustedTypes,L=I?I.createPolicy(`lit-html`,{createHTML:e=>e}):void 0,R=`$lit$`,z=`lit$${Math.random().toFixed(9).slice(2)}$`,B=`?`+z,ee=`<${B}>`,V=document,te=()=>V.createComment(``),ne=e=>e===null||typeof e!=`object`&&typeof e!=`function`,re=Array.isArray,ie=e=>re(e)||typeof e?.[Symbol.iterator]==`function`,ae=`[
|
|
369
|
-
\f\r]`,oe=/<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g,se=/-->/g,ce=/>/g,le=RegExp(`>|${ae}(?:([^\\s"'>=/]+)(${ae}*=${ae}*(?:[^ \t\n\f\r"'\`<>=]|("|')|))|$)`,`g`),ue=/'/g,de=/"/g,fe=/^(?:script|style|textarea|title)$/i,pe=(e=>(t,...n)=>({_$litType$:e,strings:t,values:n}))(1),me=Symbol.for(`lit-noChange`),H=Symbol.for(`lit-nothing`),he=new WeakMap,ge=V.createTreeWalker(V,129);function _e(e,t){if(!re(e)||!e.hasOwnProperty(`raw`))throw Error(`invalid template strings array`);return L===void 0?t:L.createHTML(t)}var U=(e,t)=>{let n=e.length-1,r=[],i,a=t===2?`<svg>`:t===3?`<math>`:``,o=oe;for(let t=0;t<n;t++){let n=e[t],s,c,l=-1,u=0;for(;u<n.length&&(o.lastIndex=u,c=o.exec(n),c!==null);)u=o.lastIndex,o===oe?c[1]===`!--`?o=se:c[1]===void 0?c[2]===void 0?c[3]!==void 0&&(o=le):(fe.test(c[2])&&(i=RegExp(`</`+c[2],`g`)),o=le):o=ce:o===le?c[0]===`>`?(o=i??oe,l=-1):c[1]===void 0?l=-2:(l=o.lastIndex-c[2].length,s=c[1],o=c[3]===void 0?le:c[3]===`"`?de:ue):o===de||o===ue?o=le:o===se||o===ce?o=oe:(o=le,i=void 0);let d=o===le&&e[t+1].startsWith(`/>`)?` `:``;a+=o===oe?n+ee:l>=0?(r.push(s),n.slice(0,l)+R+n.slice(l)+z+d):n+z+(l===-2?t:d)}return[_e(e,a+(e[n]||`<?>`)+(t===2?`</svg>`:t===3?`</math>`:``)),r]},ve=class e{constructor({strings:t,_$litType$:n},r){let i;this.parts=[];let a=0,o=0,s=t.length-1,c=this.parts,[l,u]=U(t,n);if(this.el=e.createElement(l,r),ge.currentNode=this.el.content,n===2||n===3){let e=this.el.content.firstChild;e.replaceWith(...e.childNodes)}for(;(i=ge.nextNode())!==null&&c.length<s;){if(i.nodeType===1){if(i.hasAttributes())for(let e of i.getAttributeNames())if(e.endsWith(R)){let t=u[o++],n=i.getAttribute(e).split(z),r=/([.?@])?(.*)/.exec(t);c.push({type:1,index:a,name:r[2],strings:n,ctor:r[1]===`.`?Se:r[1]===`?`?Ce:r[1]===`@`?we:xe}),i.removeAttribute(e)}else e.startsWith(z)&&(c.push({type:6,index:a}),i.removeAttribute(e));if(fe.test(i.tagName)){let e=i.textContent.split(z),t=e.length-1;if(t>0){i.textContent=I?I.emptyScript:``;for(let n=0;n<t;n++)i.append(e[n],te()),ge.nextNode(),c.push({type:2,index:++a});i.append(e[t],te())}}}else if(i.nodeType===8)if(i.data===B)c.push({type:2,index:a});else{let e=-1;for(;(e=i.data.indexOf(z,e+1))!==-1;)c.push({type:7,index:a}),e+=z.length-1}a++}}static createElement(e,t){let n=V.createElement(`template`);return n.innerHTML=e,n}};function W(e,t,n=e,r){if(t===me)return t;let i=r===void 0?n._$Cl:n._$Co?.[r],a=ne(t)?void 0:t._$litDirective$;return i?.constructor!==a&&(i?._$AO?.(!1),a===void 0?i=void 0:(i=new a(e),i._$AT(e,n,r)),r===void 0?n._$Cl=i:(n._$Co??=[])[r]=i),i!==void 0&&(t=W(e,i._$AS(e,t.values),i,r)),t}var ye=class{constructor(e,t){this._$AV=[],this._$AN=void 0,this._$AD=e,this._$AM=t}get parentNode(){return this._$AM.parentNode}get _$AU(){return this._$AM._$AU}u(e){let{el:{content:t},parts:n}=this._$AD,r=(e?.creationScope??V).importNode(t,!0);ge.currentNode=r;let i=ge.nextNode(),a=0,o=0,s=n[0];for(;s!==void 0;){if(a===s.index){let t;s.type===2?t=new be(i,i.nextSibling,this,e):s.type===1?t=new s.ctor(i,s.name,s.strings,this,e):s.type===6&&(t=new Te(i,this,e)),this._$AV.push(t),s=n[++o]}a!==s?.index&&(i=ge.nextNode(),a++)}return ge.currentNode=V,r}p(e){let t=0;for(let n of this._$AV)n!==void 0&&(n.strings===void 0?n._$AI(e[t]):(n._$AI(e,n,t),t+=n.strings.length-2)),t++}},be=class e{get _$AU(){return this._$AM?._$AU??this._$Cv}constructor(e,t,n,r){this.type=2,this._$AH=H,this._$AN=void 0,this._$AA=e,this._$AB=t,this._$AM=n,this.options=r,this._$Cv=r?.isConnected??!0}get parentNode(){let e=this._$AA.parentNode,t=this._$AM;return t!==void 0&&e?.nodeType===11&&(e=t.parentNode),e}get startNode(){return this._$AA}get endNode(){return this._$AB}_$AI(e,t=this){e=W(this,e,t),ne(e)?e===H||e==null||e===``?(this._$AH!==H&&this._$AR(),this._$AH=H):e!==this._$AH&&e!==me&&this._(e):e._$litType$===void 0?e.nodeType===void 0?ie(e)?this.k(e):this._(e):this.T(e):this.$(e)}O(e){return this._$AA.parentNode.insertBefore(e,this._$AB)}T(e){this._$AH!==e&&(this._$AR(),this._$AH=this.O(e))}_(e){this._$AH!==H&&ne(this._$AH)?this._$AA.nextSibling.data=e:this.T(V.createTextNode(e)),this._$AH=e}$(e){let{values:t,_$litType$:n}=e,r=typeof n==`number`?this._$AC(e):(n.el===void 0&&(n.el=ve.createElement(_e(n.h,n.h[0]),this.options)),n);if(this._$AH?._$AD===r)this._$AH.p(t);else{let e=new ye(r,this),n=e.u(this.options);e.p(t),this.T(n),this._$AH=e}}_$AC(e){let t=he.get(e.strings);return t===void 0&&he.set(e.strings,t=new ve(e)),t}k(t){re(this._$AH)||(this._$AH=[],this._$AR());let n=this._$AH,r,i=0;for(let a of t)i===n.length?n.push(r=new e(this.O(te()),this.O(te()),this,this.options)):r=n[i],r._$AI(a),i++;i<n.length&&(this._$AR(r&&r._$AB.nextSibling,i),n.length=i)}_$AR(e=this._$AA.nextSibling,t){for(this._$AP?.(!1,!0,t);e!==this._$AB;){let t=F(e).nextSibling;F(e).remove(),e=t}}setConnected(e){this._$AM===void 0&&(this._$Cv=e,this._$AP?.(e))}},xe=class{get tagName(){return this.element.tagName}get _$AU(){return this._$AM._$AU}constructor(e,t,n,r,i){this.type=1,this._$AH=H,this._$AN=void 0,this.element=e,this.name=t,this._$AM=r,this.options=i,n.length>2||n[0]!==``||n[1]!==``?(this._$AH=Array(n.length-1).fill(new String),this.strings=n):this._$AH=H}_$AI(e,t=this,n,r){let i=this.strings,a=!1;if(i===void 0)e=W(this,e,t,0),a=!ne(e)||e!==this._$AH&&e!==me,a&&(this._$AH=e);else{let r=e,o,s;for(e=i[0],o=0;o<i.length-1;o++)s=W(this,r[n+o],t,o),s===me&&(s=this._$AH[o]),a||=!ne(s)||s!==this._$AH[o],s===H?e=H:e!==H&&(e+=(s??``)+i[o+1]),this._$AH[o]=s}a&&!r&&this.j(e)}j(e){e===H?this.element.removeAttribute(this.name):this.element.setAttribute(this.name,e??``)}},Se=class extends xe{constructor(){super(...arguments),this.type=3}j(e){this.element[this.name]=e===H?void 0:e}},Ce=class extends xe{constructor(){super(...arguments),this.type=4}j(e){this.element.toggleAttribute(this.name,!!e&&e!==H)}},we=class extends xe{constructor(e,t,n,r,i){super(e,t,n,r,i),this.type=5}_$AI(e,t=this){if((e=W(this,e,t,0)??H)===me)return;let n=this._$AH,r=e===H&&n!==H||e.capture!==n.capture||e.once!==n.once||e.passive!==n.passive,i=e!==H&&(n===H||r);r&&this.element.removeEventListener(this.name,this,n),i&&this.element.addEventListener(this.name,this,e),this._$AH=e}handleEvent(e){typeof this._$AH==`function`?this._$AH.call(this.options?.host??this.element,e):this._$AH.handleEvent(e)}},Te=class{constructor(e,t,n){this.element=e,this.type=6,this._$AN=void 0,this._$AM=t,this.options=n}get _$AU(){return this._$AM._$AU}_$AI(e){W(this,e)}},Ee={M:R,P:z,A:B,C:1,L:U,R:ye,D:ie,V:W,I:be,H:xe,N:Ce,U:we,B:Se,F:Te},De=P.litHtmlPolyfillSupport;De?.(ve,be),(P.litHtmlVersions??=[]).push(`3.3.2`);var Oe=(e,t,n)=>{let r=n?.renderBefore??t,i=r._$litPart$;if(i===void 0){let e=n?.renderBefore??null;r._$litPart$=i=new be(t.insertBefore(te(),e),e,void 0,n??{})}return i._$AI(e),i},{I:ke}=Ee,Ae=e=>e.strings===void 0,je={ATTRIBUTE:1,CHILD:2,PROPERTY:3,BOOLEAN_ATTRIBUTE:4,EVENT:5,ELEMENT:6},Me=e=>(...t)=>({_$litDirective$:e,values:t}),Ne=class{constructor(e){}get _$AU(){return this._$AM._$AU}_$AT(e,t,n){this._$Ct=e,this._$AM=t,this._$Ci=n}_$AS(e,t){return this.update(e,t)}update(e,t){return this.render(...t)}},Pe=(e,t)=>{let n=e._$AN;if(n===void 0)return!1;for(let e of n)e._$AO?.(t,!1),Pe(e,t);return!0},G=e=>{let t,n;do{if((t=e._$AM)===void 0)break;n=t._$AN,n.delete(e),e=t}while(n?.size===0)},Fe=e=>{for(let t;t=e._$AM;e=t){let n=t._$AN;if(n===void 0)t._$AN=n=new Set;else if(n.has(e))break;n.add(e),Re(t)}};function Ie(e){this._$AN===void 0?this._$AM=e:(G(this),this._$AM=e,Fe(this))}function Le(e,t=!1,n=0){let r=this._$AH,i=this._$AN;if(i!==void 0&&i.size!==0)if(t)if(Array.isArray(r))for(let e=n;e<r.length;e++)Pe(r[e],!1),G(r[e]);else r!=null&&(Pe(r,!1),G(r));else Pe(this,e)}var Re=e=>{e.type==je.CHILD&&(e._$AP??=Le,e._$AQ??=Ie)},ze=class extends Ne{constructor(){super(...arguments),this._$AN=void 0}_$AT(e,t,n){super._$AT(e,t,n),Fe(this),this.isConnected=e._$AU}_$AO(e,t=!0){e!==this.isConnected&&(this.isConnected=e,e?this.reconnected?.():this.disconnected?.()),t&&(Pe(this,e),G(this))}setValue(e){if(Ae(this._$Ct))this._$Ct._$AI(e,this);else{let t=[...this._$Ct._$AH];t[this._$Ci]=e,this._$Ct._$AI(t,this,0)}}disconnected(){}reconnected(){}},Be=e=>e?e.startsWith(`url`)?e:`url("${e}")`:``,Ve=(e,t)=>{if(e){let n=new Image;n.addEventListener(`load`,t),n.src=e,n.complete&&(n.removeEventListener(`load`,t),window.queueMicrotask(()=>t()))}},He=Me(class extends ze{constructor(e){if(super(e),this.useCssBackground=!1,e.type!==je.ATTRIBUTE||e.name!==`src`&&e.name!==`style`)throw Error("The `placeholder` directive must be used in the `src` or `style` attributes")}update(e,[t,n]){return this.useCssBackground=e.name==`style`,this.render(t,n)}render(e,t){this.loadingToken!=null&&(this.loadingToken.cancelled=!0);let n={cancelled:!1};return this.loadingToken=n,typeof e==`string`?this.preload(e,n):e?.then(e=>{this.preload(e,n)}),this.useCssBackground?Be(t):t}preload(e,t){e!=null&&!t.cancelled&&Ve(e,()=>{t.cancelled||this.setValue(this.useCssBackground?Be(e):e)})}}),Ue=globalThis,We=Ue.ShadowRoot&&(Ue.ShadyCSS===void 0||Ue.ShadyCSS.nativeShadow)&&`adoptedStyleSheets`in Document.prototype&&`replace`in CSSStyleSheet.prototype,Ge=Symbol(),Ke=new WeakMap,qe=class{constructor(e,t,n){if(this._$cssResult$=!0,n!==Ge)throw Error("CSSResult is not constructable. Use `unsafeCSS` or `css` instead.");this.cssText=e,this.t=t}get styleSheet(){let e=this.o,t=this.t;if(We&&e===void 0){let n=t!==void 0&&t.length===1;n&&(e=Ke.get(t)),e===void 0&&((this.o=e=new CSSStyleSheet).replaceSync(this.cssText),n&&Ke.set(t,e))}return e}toString(){return this.cssText}},Je=e=>new qe(typeof e==`string`?e:e+``,void 0,Ge),Ye=(e,...t)=>new qe(e.length===1?e[0]:t.reduce((t,n,r)=>t+(e=>{if(!0===e._$cssResult$)return e.cssText;if(typeof e==`number`)return e;throw Error(`Value passed to 'css' function must be a 'css' function result: `+e+`. Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.`)})(n)+e[r+1],e[0]),e,Ge),Xe=(e,t)=>{if(We)e.adoptedStyleSheets=t.map(e=>e instanceof CSSStyleSheet?e:e.styleSheet);else for(let n of t){let t=document.createElement(`style`),r=Ue.litNonce;r!==void 0&&t.setAttribute(`nonce`,r),t.textContent=n.cssText,e.appendChild(t)}},Ze=We?e=>e:e=>e instanceof CSSStyleSheet?(e=>{let t=``;for(let n of e.cssRules)t+=n.cssText;return Je(t)})(e):e,{is:Qe,defineProperty:$e,getOwnPropertyDescriptor:et,getOwnPropertyNames:tt,getOwnPropertySymbols:nt,getPrototypeOf:rt}=Object,it=globalThis,at=it.trustedTypes,ot=at?at.emptyScript:``,st=it.reactiveElementPolyfillSupport,ct=(e,t)=>e,lt={toAttribute(e,t){switch(t){case Boolean:e=e?ot:null;break;case Object:case Array:e=e==null?e:JSON.stringify(e)}return e},fromAttribute(e,t){let n=e;switch(t){case Boolean:n=e!==null;break;case Number:n=e===null?null:Number(e);break;case Object:case Array:try{n=JSON.parse(e)}catch{n=null}}return n}},ut=(e,t)=>!Qe(e,t),dt={attribute:!0,type:String,converter:lt,reflect:!1,useDefault:!1,hasChanged:ut};Symbol.metadata??=Symbol(`metadata`),it.litPropertyMetadata??=new WeakMap;var ft=class extends HTMLElement{static addInitializer(e){this._$Ei(),(this.l??=[]).push(e)}static get observedAttributes(){return this.finalize(),this._$Eh&&[...this._$Eh.keys()]}static createProperty(e,t=dt){if(t.state&&(t.attribute=!1),this._$Ei(),this.prototype.hasOwnProperty(e)&&((t=Object.create(t)).wrapped=!0),this.elementProperties.set(e,t),!t.noAccessor){let n=Symbol(),r=this.getPropertyDescriptor(e,n,t);r!==void 0&&$e(this.prototype,e,r)}}static getPropertyDescriptor(e,t,n){let{get:r,set:i}=et(this.prototype,e)??{get(){return this[t]},set(e){this[t]=e}};return{get:r,set(t){let a=r?.call(this);i?.call(this,t),this.requestUpdate(e,a,n)},configurable:!0,enumerable:!0}}static getPropertyOptions(e){return this.elementProperties.get(e)??dt}static _$Ei(){if(this.hasOwnProperty(ct(`elementProperties`)))return;let e=rt(this);e.finalize(),e.l!==void 0&&(this.l=[...e.l]),this.elementProperties=new Map(e.elementProperties)}static finalize(){if(this.hasOwnProperty(ct(`finalized`)))return;if(this.finalized=!0,this._$Ei(),this.hasOwnProperty(ct(`properties`))){let e=this.properties,t=[...tt(e),...nt(e)];for(let n of t)this.createProperty(n,e[n])}let e=this[Symbol.metadata];if(e!==null){let t=litPropertyMetadata.get(e);if(t!==void 0)for(let[e,n]of t)this.elementProperties.set(e,n)}this._$Eh=new Map;for(let[e,t]of this.elementProperties){let n=this._$Eu(e,t);n!==void 0&&this._$Eh.set(n,e)}this.elementStyles=this.finalizeStyles(this.styles)}static finalizeStyles(e){let t=[];if(Array.isArray(e)){let n=new Set(e.flat(1/0).reverse());for(let e of n)t.unshift(Ze(e))}else e!==void 0&&t.push(Ze(e));return t}static _$Eu(e,t){let n=t.attribute;return!1===n?void 0:typeof n==`string`?n:typeof e==`string`?e.toLowerCase():void 0}constructor(){super(),this._$Ep=void 0,this.isUpdatePending=!1,this.hasUpdated=!1,this._$Em=null,this._$Ev()}_$Ev(){this._$ES=new Promise(e=>this.enableUpdating=e),this._$AL=new Map,this._$E_(),this.requestUpdate(),this.constructor.l?.forEach(e=>e(this))}addController(e){(this._$EO??=new Set).add(e),this.renderRoot!==void 0&&this.isConnected&&e.hostConnected?.()}removeController(e){this._$EO?.delete(e)}_$E_(){let e=new Map,t=this.constructor.elementProperties;for(let n of t.keys())this.hasOwnProperty(n)&&(e.set(n,this[n]),delete this[n]);e.size>0&&(this._$Ep=e)}createRenderRoot(){let e=this.shadowRoot??this.attachShadow(this.constructor.shadowRootOptions);return Xe(e,this.constructor.elementStyles),e}connectedCallback(){this.renderRoot??=this.createRenderRoot(),this.enableUpdating(!0),this._$EO?.forEach(e=>e.hostConnected?.())}enableUpdating(e){}disconnectedCallback(){this._$EO?.forEach(e=>e.hostDisconnected?.())}attributeChangedCallback(e,t,n){this._$AK(e,n)}_$ET(e,t){let n=this.constructor.elementProperties.get(e),r=this.constructor._$Eu(e,n);if(r!==void 0&&!0===n.reflect){let i=(n.converter?.toAttribute===void 0?lt:n.converter).toAttribute(t,n.type);this._$Em=e,i==null?this.removeAttribute(r):this.setAttribute(r,i),this._$Em=null}}_$AK(e,t){let n=this.constructor,r=n._$Eh.get(e);if(r!==void 0&&this._$Em!==r){let e=n.getPropertyOptions(r),i=typeof e.converter==`function`?{fromAttribute:e.converter}:e.converter?.fromAttribute===void 0?lt:e.converter;this._$Em=r;let a=i.fromAttribute(t,e.type);this[r]=a??this._$Ej?.get(r)??a,this._$Em=null}}requestUpdate(e,t,n,r=!1,i){if(e!==void 0){let a=this.constructor;if(!1===r&&(i=this[e]),n??=a.getPropertyOptions(e),!((n.hasChanged??ut)(i,t)||n.useDefault&&n.reflect&&i===this._$Ej?.get(e)&&!this.hasAttribute(a._$Eu(e,n))))return;this.C(e,t,n)}!1===this.isUpdatePending&&(this._$ES=this._$EP())}C(e,t,{useDefault:n,reflect:r,wrapped:i},a){n&&!(this._$Ej??=new Map).has(e)&&(this._$Ej.set(e,a??t??this[e]),!0!==i||a!==void 0)||(this._$AL.has(e)||(this.hasUpdated||n||(t=void 0),this._$AL.set(e,t)),!0===r&&this._$Em!==e&&(this._$Eq??=new Set).add(e))}async _$EP(){this.isUpdatePending=!0;try{await this._$ES}catch(e){Promise.reject(e)}let e=this.scheduleUpdate();return e!=null&&await e,!this.isUpdatePending}scheduleUpdate(){return this.performUpdate()}performUpdate(){if(!this.isUpdatePending)return;if(!this.hasUpdated){if(this.renderRoot??=this.createRenderRoot(),this._$Ep){for(let[e,t]of this._$Ep)this[e]=t;this._$Ep=void 0}let e=this.constructor.elementProperties;if(e.size>0)for(let[t,n]of e){let{wrapped:e}=n,r=this[t];!0!==e||this._$AL.has(t)||r===void 0||this.C(t,void 0,n,r)}}let e=!1,t=this._$AL;try{e=this.shouldUpdate(t),e?(this.willUpdate(t),this._$EO?.forEach(e=>e.hostUpdate?.()),this.update(t)):this._$EM()}catch(t){throw e=!1,this._$EM(),t}e&&this._$AE(t)}willUpdate(e){}_$AE(e){this._$EO?.forEach(e=>e.hostUpdated?.()),this.hasUpdated||(this.hasUpdated=!0,this.firstUpdated(e)),this.updated(e)}_$EM(){this._$AL=new Map,this.isUpdatePending=!1}get updateComplete(){return this.getUpdateComplete()}getUpdateComplete(){return this._$ES}shouldUpdate(e){return!0}update(e){this._$Eq&&=this._$Eq.forEach(e=>this._$ET(e,this[e])),this._$EM()}updated(e){}firstUpdated(e){}};ft.elementStyles=[],ft.shadowRootOptions={mode:`open`},ft[ct(`elementProperties`)]=new Map,ft[ct(`finalized`)]=new Map,st?.({ReactiveElement:ft}),(it.reactiveElementVersions??=[]).push(`2.1.2`);var pt=globalThis,mt=class extends ft{constructor(){super(...arguments),this.renderOptions={host:this},this._$Do=void 0}createRenderRoot(){let e=super.createRenderRoot();return this.renderOptions.renderBefore??=e.firstChild,e}update(e){let t=this.render();this.hasUpdated||(this.renderOptions.isConnected=this.isConnected),super.update(e),this._$Do=Oe(t,this.renderRoot,this.renderOptions)}connectedCallback(){super.connectedCallback(),this._$Do?.setConnected(!0)}disconnectedCallback(){super.disconnectedCallback(),this._$Do?.setConnected(!1)}render(){return me}};mt._$litElement$=!0,mt.finalized=!0,pt.litElementHydrateSupport?.({LitElement:mt});var ht=pt.litElementPolyfillSupport;ht?.({LitElement:mt}),(pt.litElementVersions??=[]).push(`4.2.2`);var gt={attribute:!0,type:String,converter:lt,reflect:!1,hasChanged:ut},_t=(e=gt,t,n)=>{let{kind:r,metadata:i}=n,a=globalThis.litPropertyMetadata.get(i);if(a===void 0&&globalThis.litPropertyMetadata.set(i,a=new Map),r===`setter`&&((e=Object.create(e)).wrapped=!0),a.set(n.name,e),r===`accessor`){let{name:r}=n;return{set(n){let i=t.get.call(this);t.set.call(this,n),this.requestUpdate(r,i,e,!0,n)},init(t){return t!==void 0&&this.C(r,void 0,e,t),t}}}if(r===`setter`){let{name:r}=n;return function(n){let i=this[r];t.call(this,n),this.requestUpdate(r,i,e,!0,n)}}throw Error(`Unsupported decorator location: `+r)};function K(e){return(t,n)=>typeof n==`object`?_t(e,t,n):((e,t,n)=>{let r=t.hasOwnProperty(n);return t.constructor.createProperty(n,e),r?Object.getOwnPropertyDescriptor(t,n):void 0})(e,t,n)}var vt=e=>e??H,yt=class extends Ne{constructor(e){if(super(e),this.it=H,e.type!==je.CHILD)throw Error(this.constructor.directiveName+`() can only be used in child bindings`)}render(e){if(e===H||e==null)return this._t=void 0,this.it=e;if(e===me)return e;if(typeof e!=`string`)throw Error(this.constructor.directiveName+`() called with a non-string value`);if(e===this.it)return this._t;this.it=e;let t=[e];return t.raw=t,this._t={_$litType$:this.constructor.resultType,strings:t,values:[]}}};yt.directiveName=`unsafeHTML`,yt.resultType=1;var bt=Me(yt),xt=`:host{contain:strict;height:50px;display:block}:host([selected]){background-color:#d3e6fa}:host(:not([selected]):hover),:host(:not([selected])[focused]){background-color:#e7f1fa}@media (forced-colors:active){:host([selected]){outline:4px solid}:host(:not([selected]):hover){outline:4px dotted}:host(:not([selected])[focused]){outline:4px dashed}}:host([enable-line-clamp]) .labels>:only-child{-webkit-line-clamp:2;white-space:normal;overflow-wrap:break-word;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.container{box-sizing:border-box;height:100%;display:flex}.container .level-indicator{width:7px;height:100%}.container .level-indicator.level-0{background-color:var(--sd-list-item-level-0-color,#a0c3ef)}.container .level-indicator.level-1{background-color:var(--sd-list-item-level-1-color,#e7c374)}.container .level-indicator.level-2{background-color:var(--sd-list-item-level-2-color,#bfd596)}.container .level-indicator.level-3{background-color:var(--sd-list-item-level-3-color,#fd998d)}.container .level-indicator.level-4{background-color:var(--sd-list-item-level-4-color,#c6e8f5)}.container .level-indicator.level-5{background-color:var(--sd-list-item-level-5-color,#fde3a4)}.container .level-indicator.level-6{background-color:var(--sd-list-item-level-6-color,#dcbfe0)}.side-content{flex-grow:0;align-items:center;display:flex}.labels{height:100%;padding:var(--sd-list-item-label-content-padding,0 8px);flex-direction:column;flex:1 1 0;justify-content:center;line-height:normal;display:flex;overflow:hidden}.caption,.description{width:100%;font-family:var(--sd-list-item-font-family,"Segoe UI", "Lucida Sans", Arial, sans-serif);text-overflow:ellipsis;-webkit-user-select:none;user-select:none;-webkit-text-decoration:var(--sd-list-item-text-decoration,inherit);text-decoration:var(--sd-list-item-text-decoration,inherit);font-style:normal;overflow:hidden}.caption em,.description em{font-weight:bolder}.caption span,.description span,span.caption,span.description{white-space:pre}.caption{font-size:var(--sd-list-item-caption-font-size,16px);color:var(--sd-list-item-caption-text-color,#111);font-weight:var(--sd-list-item-caption-font-weight,normal)}.description{font-size:var(--sd-list-item-description-font-size,13px);color:var(--sd-list-item-description-text-color,#767676);font-weight:var(--sd-list-item-description-font-weight,normal)}.description.with-icon{align-items:center;gap:4px;display:flex}.description.with-icon .description-icon{width:var(--sd-list-item-description-font-size,13px);height:var(--sd-list-item-description-font-size,13px);background-position:bottom;background-repeat:no-repeat;background-size:90%}.icon-wrapper{width:var(--sd-list-item-icon-wrapper-width,45px);justify-content:center;align-items:center;height:100%;display:flex}.icon-wrapper.condensed{--condensed-size:32px;--condensed-margin:8px;height:var(--condensed-size);width:var(--condensed-size);border-radius:var(--sd-list-item-icon-background-radius);margin:var(--condensed-margin) calc(var(--sd-list-item-icon-wrapper-width,45px) - var(--condensed-margin) - var(--condensed-size)) var(--condensed-margin) var(--condensed-margin)}.icon-wrapper .icon{min-height:var(--sd-list-item-icon-size,24px);min-width:var(--sd-list-item-icon-size,24px);background-position:50%;background-repeat:no-repeat;background-size:var(--sd-list-item-icon-background-size,cover)}`;function q(e,t){if(typeof Reflect==`object`&&typeof Reflect.metadata==`function`)return Reflect.metadata(e,t)}function J(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a}var Y=class e extends mt{constructor(...e){super(...e),this.contentMode=`text`,this.role=`option`}static{this.ID=`sd-list-item`}static{this.ensureDefined=()=>{customElements.get(e.ID)||customElements.define(e.ID,e)}}static get styles(){return[Ye`
|
|
369
|
+
\f\r]`,oe=/<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g,se=/-->/g,ce=/>/g,le=RegExp(`>|${ae}(?:([^\\s"'>=/]+)(${ae}*=${ae}*(?:[^ \t\n\f\r"'\`<>=]|("|')|))|$)`,`g`),ue=/'/g,de=/"/g,fe=/^(?:script|style|textarea|title)$/i,pe=(e=>(t,...n)=>({_$litType$:e,strings:t,values:n}))(1),me=Symbol.for(`lit-noChange`),H=Symbol.for(`lit-nothing`),he=new WeakMap,ge=V.createTreeWalker(V,129);function _e(e,t){if(!re(e)||!e.hasOwnProperty(`raw`))throw Error(`invalid template strings array`);return L===void 0?t:L.createHTML(t)}var U=(e,t)=>{let n=e.length-1,r=[],i,a=t===2?`<svg>`:t===3?`<math>`:``,o=oe;for(let t=0;t<n;t++){let n=e[t],s,c,l=-1,u=0;for(;u<n.length&&(o.lastIndex=u,c=o.exec(n),c!==null);)u=o.lastIndex,o===oe?c[1]===`!--`?o=se:c[1]===void 0?c[2]===void 0?c[3]!==void 0&&(o=le):(fe.test(c[2])&&(i=RegExp(`</`+c[2],`g`)),o=le):o=ce:o===le?c[0]===`>`?(o=i??oe,l=-1):c[1]===void 0?l=-2:(l=o.lastIndex-c[2].length,s=c[1],o=c[3]===void 0?le:c[3]===`"`?de:ue):o===de||o===ue?o=le:o===se||o===ce?o=oe:(o=le,i=void 0);let d=o===le&&e[t+1].startsWith(`/>`)?` `:``;a+=o===oe?n+ee:l>=0?(r.push(s),n.slice(0,l)+R+n.slice(l)+z+d):n+z+(l===-2?t:d)}return[_e(e,a+(e[n]||`<?>`)+(t===2?`</svg>`:t===3?`</math>`:``)),r]},ve=class e{constructor({strings:t,_$litType$:n},r){let i;this.parts=[];let a=0,o=0,s=t.length-1,c=this.parts,[l,u]=U(t,n);if(this.el=e.createElement(l,r),ge.currentNode=this.el.content,n===2||n===3){let e=this.el.content.firstChild;e.replaceWith(...e.childNodes)}for(;(i=ge.nextNode())!==null&&c.length<s;){if(i.nodeType===1){if(i.hasAttributes())for(let e of i.getAttributeNames())if(e.endsWith(R)){let t=u[o++],n=i.getAttribute(e).split(z),r=/([.?@])?(.*)/.exec(t);c.push({type:1,index:a,name:r[2],strings:n,ctor:r[1]===`.`?Se:r[1]===`?`?Ce:r[1]===`@`?we:xe}),i.removeAttribute(e)}else e.startsWith(z)&&(c.push({type:6,index:a}),i.removeAttribute(e));if(fe.test(i.tagName)){let e=i.textContent.split(z),t=e.length-1;if(t>0){i.textContent=I?I.emptyScript:``;for(let n=0;n<t;n++)i.append(e[n],te()),ge.nextNode(),c.push({type:2,index:++a});i.append(e[t],te())}}}else if(i.nodeType===8)if(i.data===B)c.push({type:2,index:a});else{let e=-1;for(;(e=i.data.indexOf(z,e+1))!==-1;)c.push({type:7,index:a}),e+=z.length-1}a++}}static createElement(e,t){let n=V.createElement(`template`);return n.innerHTML=e,n}};function W(e,t,n=e,r){if(t===me)return t;let i=r===void 0?n._$Cl:n._$Co?.[r],a=ne(t)?void 0:t._$litDirective$;return i?.constructor!==a&&(i?._$AO?.(!1),a===void 0?i=void 0:(i=new a(e),i._$AT(e,n,r)),r===void 0?n._$Cl=i:(n._$Co??=[])[r]=i),i!==void 0&&(t=W(e,i._$AS(e,t.values),i,r)),t}var ye=class{constructor(e,t){this._$AV=[],this._$AN=void 0,this._$AD=e,this._$AM=t}get parentNode(){return this._$AM.parentNode}get _$AU(){return this._$AM._$AU}u(e){let{el:{content:t},parts:n}=this._$AD,r=(e?.creationScope??V).importNode(t,!0);ge.currentNode=r;let i=ge.nextNode(),a=0,o=0,s=n[0];for(;s!==void 0;){if(a===s.index){let t;s.type===2?t=new be(i,i.nextSibling,this,e):s.type===1?t=new s.ctor(i,s.name,s.strings,this,e):s.type===6&&(t=new Te(i,this,e)),this._$AV.push(t),s=n[++o]}a!==s?.index&&(i=ge.nextNode(),a++)}return ge.currentNode=V,r}p(e){let t=0;for(let n of this._$AV)n!==void 0&&(n.strings===void 0?n._$AI(e[t]):(n._$AI(e,n,t),t+=n.strings.length-2)),t++}},be=class e{get _$AU(){return this._$AM?._$AU??this._$Cv}constructor(e,t,n,r){this.type=2,this._$AH=H,this._$AN=void 0,this._$AA=e,this._$AB=t,this._$AM=n,this.options=r,this._$Cv=r?.isConnected??!0}get parentNode(){let e=this._$AA.parentNode,t=this._$AM;return t!==void 0&&e?.nodeType===11&&(e=t.parentNode),e}get startNode(){return this._$AA}get endNode(){return this._$AB}_$AI(e,t=this){e=W(this,e,t),ne(e)?e===H||e==null||e===``?(this._$AH!==H&&this._$AR(),this._$AH=H):e!==this._$AH&&e!==me&&this._(e):e._$litType$===void 0?e.nodeType===void 0?ie(e)?this.k(e):this._(e):this.T(e):this.$(e)}O(e){return this._$AA.parentNode.insertBefore(e,this._$AB)}T(e){this._$AH!==e&&(this._$AR(),this._$AH=this.O(e))}_(e){this._$AH!==H&&ne(this._$AH)?this._$AA.nextSibling.data=e:this.T(V.createTextNode(e)),this._$AH=e}$(e){let{values:t,_$litType$:n}=e,r=typeof n==`number`?this._$AC(e):(n.el===void 0&&(n.el=ve.createElement(_e(n.h,n.h[0]),this.options)),n);if(this._$AH?._$AD===r)this._$AH.p(t);else{let e=new ye(r,this),n=e.u(this.options);e.p(t),this.T(n),this._$AH=e}}_$AC(e){let t=he.get(e.strings);return t===void 0&&he.set(e.strings,t=new ve(e)),t}k(t){re(this._$AH)||(this._$AH=[],this._$AR());let n=this._$AH,r,i=0;for(let a of t)i===n.length?n.push(r=new e(this.O(te()),this.O(te()),this,this.options)):r=n[i],r._$AI(a),i++;i<n.length&&(this._$AR(r&&r._$AB.nextSibling,i),n.length=i)}_$AR(e=this._$AA.nextSibling,t){for(this._$AP?.(!1,!0,t);e!==this._$AB;){let t=F(e).nextSibling;F(e).remove(),e=t}}setConnected(e){this._$AM===void 0&&(this._$Cv=e,this._$AP?.(e))}},xe=class{get tagName(){return this.element.tagName}get _$AU(){return this._$AM._$AU}constructor(e,t,n,r,i){this.type=1,this._$AH=H,this._$AN=void 0,this.element=e,this.name=t,this._$AM=r,this.options=i,n.length>2||n[0]!==``||n[1]!==``?(this._$AH=Array(n.length-1).fill(new String),this.strings=n):this._$AH=H}_$AI(e,t=this,n,r){let i=this.strings,a=!1;if(i===void 0)e=W(this,e,t,0),a=!ne(e)||e!==this._$AH&&e!==me,a&&(this._$AH=e);else{let r=e,o,s;for(e=i[0],o=0;o<i.length-1;o++)s=W(this,r[n+o],t,o),s===me&&(s=this._$AH[o]),a||=!ne(s)||s!==this._$AH[o],s===H?e=H:e!==H&&(e+=(s??``)+i[o+1]),this._$AH[o]=s}a&&!r&&this.j(e)}j(e){e===H?this.element.removeAttribute(this.name):this.element.setAttribute(this.name,e??``)}},Se=class extends xe{constructor(){super(...arguments),this.type=3}j(e){this.element[this.name]=e===H?void 0:e}},Ce=class extends xe{constructor(){super(...arguments),this.type=4}j(e){this.element.toggleAttribute(this.name,!!e&&e!==H)}},we=class extends xe{constructor(e,t,n,r,i){super(e,t,n,r,i),this.type=5}_$AI(e,t=this){if((e=W(this,e,t,0)??H)===me)return;let n=this._$AH,r=e===H&&n!==H||e.capture!==n.capture||e.once!==n.once||e.passive!==n.passive,i=e!==H&&(n===H||r);r&&this.element.removeEventListener(this.name,this,n),i&&this.element.addEventListener(this.name,this,e),this._$AH=e}handleEvent(e){typeof this._$AH==`function`?this._$AH.call(this.options?.host??this.element,e):this._$AH.handleEvent(e)}},Te=class{constructor(e,t,n){this.element=e,this.type=6,this._$AN=void 0,this._$AM=t,this.options=n}get _$AU(){return this._$AM._$AU}_$AI(e){W(this,e)}},Ee={M:R,P:z,A:B,C:1,L:U,R:ye,D:ie,V:W,I:be,H:xe,N:Ce,U:we,B:Se,F:Te},De=P.litHtmlPolyfillSupport;De?.(ve,be),(P.litHtmlVersions??=[]).push(`3.3.2`);var Oe=(e,t,n)=>{let r=n?.renderBefore??t,i=r._$litPart$;if(i===void 0){let e=n?.renderBefore??null;r._$litPart$=i=new be(t.insertBefore(te(),e),e,void 0,n??{})}return i._$AI(e),i},{I:ke}=Ee,Ae=e=>e.strings===void 0,je={ATTRIBUTE:1,CHILD:2,PROPERTY:3,BOOLEAN_ATTRIBUTE:4,EVENT:5,ELEMENT:6},Me=e=>(...t)=>({_$litDirective$:e,values:t}),Ne=class{constructor(e){}get _$AU(){return this._$AM._$AU}_$AT(e,t,n){this._$Ct=e,this._$AM=t,this._$Ci=n}_$AS(e,t){return this.update(e,t)}update(e,t){return this.render(...t)}},Pe=(e,t)=>{let n=e._$AN;if(n===void 0)return!1;for(let e of n)e._$AO?.(t,!1),Pe(e,t);return!0},G=e=>{let t,n;do{if((t=e._$AM)===void 0)break;n=t._$AN,n.delete(e),e=t}while(n?.size===0)},Fe=e=>{for(let t;t=e._$AM;e=t){let n=t._$AN;if(n===void 0)t._$AN=n=new Set;else if(n.has(e))break;n.add(e),Re(t)}};function Ie(e){this._$AN===void 0?this._$AM=e:(G(this),this._$AM=e,Fe(this))}function Le(e,t=!1,n=0){let r=this._$AH,i=this._$AN;if(i!==void 0&&i.size!==0)if(t)if(Array.isArray(r))for(let e=n;e<r.length;e++)Pe(r[e],!1),G(r[e]);else r!=null&&(Pe(r,!1),G(r));else Pe(this,e)}var Re=e=>{e.type==je.CHILD&&(e._$AP??=Le,e._$AQ??=Ie)},ze=class extends Ne{constructor(){super(...arguments),this._$AN=void 0}_$AT(e,t,n){super._$AT(e,t,n),Fe(this),this.isConnected=e._$AU}_$AO(e,t=!0){e!==this.isConnected&&(this.isConnected=e,e?this.reconnected?.():this.disconnected?.()),t&&(Pe(this,e),G(this))}setValue(e){if(Ae(this._$Ct))this._$Ct._$AI(e,this);else{let t=[...this._$Ct._$AH];t[this._$Ci]=e,this._$Ct._$AI(t,this,0)}}disconnected(){}reconnected(){}},Be=e=>e?e.startsWith(`url`)?e:`url("${e}")`:``,Ve=(e,t)=>{if(e){let n=new Image;n.addEventListener(`load`,t),n.src=e,n.complete&&(n.removeEventListener(`load`,t),window.queueMicrotask(()=>t()))}},He=Me(class extends ze{constructor(e){if(super(e),this.useCssBackground=!1,e.type!==je.ATTRIBUTE||e.name!==`src`&&e.name!==`style`)throw Error("The `placeholder` directive must be used in the `src` or `style` attributes")}update(e,[t,n]){return this.useCssBackground=e.name==`style`,this.render(t,n)}render(e,t){this.loadingToken!=null&&(this.loadingToken.cancelled=!0);let n={cancelled:!1};return this.loadingToken=n,typeof e==`string`?this.preload(e,n):e?.then(e=>{this.preload(e,n)}),this.useCssBackground?Be(t):t}preload(e,t){e!=null&&!t.cancelled&&Ve(e,()=>{t.cancelled||this.setValue(this.useCssBackground?Be(e):e)})}}),Ue=globalThis,We=Ue.ShadowRoot&&(Ue.ShadyCSS===void 0||Ue.ShadyCSS.nativeShadow)&&`adoptedStyleSheets`in Document.prototype&&`replace`in CSSStyleSheet.prototype,Ge=Symbol(),Ke=new WeakMap,qe=class{constructor(e,t,n){if(this._$cssResult$=!0,n!==Ge)throw Error("CSSResult is not constructable. Use `unsafeCSS` or `css` instead.");this.cssText=e,this.t=t}get styleSheet(){let e=this.o,t=this.t;if(We&&e===void 0){let n=t!==void 0&&t.length===1;n&&(e=Ke.get(t)),e===void 0&&((this.o=e=new CSSStyleSheet).replaceSync(this.cssText),n&&Ke.set(t,e))}return e}toString(){return this.cssText}},Je=e=>new qe(typeof e==`string`?e:e+``,void 0,Ge),Ye=(e,...t)=>new qe(e.length===1?e[0]:t.reduce((t,n,r)=>t+(e=>{if(!0===e._$cssResult$)return e.cssText;if(typeof e==`number`)return e;throw Error(`Value passed to 'css' function must be a 'css' function result: `+e+`. Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.`)})(n)+e[r+1],e[0]),e,Ge),Xe=(e,t)=>{if(We)e.adoptedStyleSheets=t.map(e=>e instanceof CSSStyleSheet?e:e.styleSheet);else for(let n of t){let t=document.createElement(`style`),r=Ue.litNonce;r!==void 0&&t.setAttribute(`nonce`,r),t.textContent=n.cssText,e.appendChild(t)}},Ze=We?e=>e:e=>e instanceof CSSStyleSheet?(e=>{let t=``;for(let n of e.cssRules)t+=n.cssText;return Je(t)})(e):e,{is:Qe,defineProperty:$e,getOwnPropertyDescriptor:et,getOwnPropertyNames:tt,getOwnPropertySymbols:nt,getPrototypeOf:rt}=Object,it=globalThis,at=it.trustedTypes,ot=at?at.emptyScript:``,st=it.reactiveElementPolyfillSupport,ct=(e,t)=>e,lt={toAttribute(e,t){switch(t){case Boolean:e=e?ot:null;break;case Object:case Array:e=e==null?e:JSON.stringify(e)}return e},fromAttribute(e,t){let n=e;switch(t){case Boolean:n=e!==null;break;case Number:n=e===null?null:Number(e);break;case Object:case Array:try{n=JSON.parse(e)}catch{n=null}}return n}},ut=(e,t)=>!Qe(e,t),dt={attribute:!0,type:String,converter:lt,reflect:!1,useDefault:!1,hasChanged:ut};Symbol.metadata??=Symbol(`metadata`),it.litPropertyMetadata??=new WeakMap;var ft=class extends HTMLElement{static addInitializer(e){this._$Ei(),(this.l??=[]).push(e)}static get observedAttributes(){return this.finalize(),this._$Eh&&[...this._$Eh.keys()]}static createProperty(e,t=dt){if(t.state&&(t.attribute=!1),this._$Ei(),this.prototype.hasOwnProperty(e)&&((t=Object.create(t)).wrapped=!0),this.elementProperties.set(e,t),!t.noAccessor){let n=Symbol(),r=this.getPropertyDescriptor(e,n,t);r!==void 0&&$e(this.prototype,e,r)}}static getPropertyDescriptor(e,t,n){let{get:r,set:i}=et(this.prototype,e)??{get(){return this[t]},set(e){this[t]=e}};return{get:r,set(t){let a=r?.call(this);i?.call(this,t),this.requestUpdate(e,a,n)},configurable:!0,enumerable:!0}}static getPropertyOptions(e){return this.elementProperties.get(e)??dt}static _$Ei(){if(this.hasOwnProperty(ct(`elementProperties`)))return;let e=rt(this);e.finalize(),e.l!==void 0&&(this.l=[...e.l]),this.elementProperties=new Map(e.elementProperties)}static finalize(){if(this.hasOwnProperty(ct(`finalized`)))return;if(this.finalized=!0,this._$Ei(),this.hasOwnProperty(ct(`properties`))){let e=this.properties,t=[...tt(e),...nt(e)];for(let n of t)this.createProperty(n,e[n])}let e=this[Symbol.metadata];if(e!==null){let t=litPropertyMetadata.get(e);if(t!==void 0)for(let[e,n]of t)this.elementProperties.set(e,n)}this._$Eh=new Map;for(let[e,t]of this.elementProperties){let n=this._$Eu(e,t);n!==void 0&&this._$Eh.set(n,e)}this.elementStyles=this.finalizeStyles(this.styles)}static finalizeStyles(e){let t=[];if(Array.isArray(e)){let n=new Set(e.flat(1/0).reverse());for(let e of n)t.unshift(Ze(e))}else e!==void 0&&t.push(Ze(e));return t}static _$Eu(e,t){let n=t.attribute;return!1===n?void 0:typeof n==`string`?n:typeof e==`string`?e.toLowerCase():void 0}constructor(){super(),this._$Ep=void 0,this.isUpdatePending=!1,this.hasUpdated=!1,this._$Em=null,this._$Ev()}_$Ev(){this._$ES=new Promise(e=>this.enableUpdating=e),this._$AL=new Map,this._$E_(),this.requestUpdate(),this.constructor.l?.forEach(e=>e(this))}addController(e){(this._$EO??=new Set).add(e),this.renderRoot!==void 0&&this.isConnected&&e.hostConnected?.()}removeController(e){this._$EO?.delete(e)}_$E_(){let e=new Map,t=this.constructor.elementProperties;for(let n of t.keys())this.hasOwnProperty(n)&&(e.set(n,this[n]),delete this[n]);e.size>0&&(this._$Ep=e)}createRenderRoot(){let e=this.shadowRoot??this.attachShadow(this.constructor.shadowRootOptions);return Xe(e,this.constructor.elementStyles),e}connectedCallback(){this.renderRoot??=this.createRenderRoot(),this.enableUpdating(!0),this._$EO?.forEach(e=>e.hostConnected?.())}enableUpdating(e){}disconnectedCallback(){this._$EO?.forEach(e=>e.hostDisconnected?.())}attributeChangedCallback(e,t,n){this._$AK(e,n)}_$ET(e,t){let n=this.constructor.elementProperties.get(e),r=this.constructor._$Eu(e,n);if(r!==void 0&&!0===n.reflect){let i=(n.converter?.toAttribute===void 0?lt:n.converter).toAttribute(t,n.type);this._$Em=e,i==null?this.removeAttribute(r):this.setAttribute(r,i),this._$Em=null}}_$AK(e,t){let n=this.constructor,r=n._$Eh.get(e);if(r!==void 0&&this._$Em!==r){let e=n.getPropertyOptions(r),i=typeof e.converter==`function`?{fromAttribute:e.converter}:e.converter?.fromAttribute===void 0?lt:e.converter;this._$Em=r;let a=i.fromAttribute(t,e.type);this[r]=a??this._$Ej?.get(r)??a,this._$Em=null}}requestUpdate(e,t,n,r=!1,i){if(e!==void 0){let a=this.constructor;if(!1===r&&(i=this[e]),n??=a.getPropertyOptions(e),!((n.hasChanged??ut)(i,t)||n.useDefault&&n.reflect&&i===this._$Ej?.get(e)&&!this.hasAttribute(a._$Eu(e,n))))return;this.C(e,t,n)}!1===this.isUpdatePending&&(this._$ES=this._$EP())}C(e,t,{useDefault:n,reflect:r,wrapped:i},a){n&&!(this._$Ej??=new Map).has(e)&&(this._$Ej.set(e,a??t??this[e]),!0!==i||a!==void 0)||(this._$AL.has(e)||(this.hasUpdated||n||(t=void 0),this._$AL.set(e,t)),!0===r&&this._$Em!==e&&(this._$Eq??=new Set).add(e))}async _$EP(){this.isUpdatePending=!0;try{await this._$ES}catch(e){Promise.reject(e)}let e=this.scheduleUpdate();return e!=null&&await e,!this.isUpdatePending}scheduleUpdate(){return this.performUpdate()}performUpdate(){if(!this.isUpdatePending)return;if(!this.hasUpdated){if(this.renderRoot??=this.createRenderRoot(),this._$Ep){for(let[e,t]of this._$Ep)this[e]=t;this._$Ep=void 0}let e=this.constructor.elementProperties;if(e.size>0)for(let[t,n]of e){let{wrapped:e}=n,r=this[t];!0!==e||this._$AL.has(t)||r===void 0||this.C(t,void 0,n,r)}}let e=!1,t=this._$AL;try{e=this.shouldUpdate(t),e?(this.willUpdate(t),this._$EO?.forEach(e=>e.hostUpdate?.()),this.update(t)):this._$EM()}catch(t){throw e=!1,this._$EM(),t}e&&this._$AE(t)}willUpdate(e){}_$AE(e){this._$EO?.forEach(e=>e.hostUpdated?.()),this.hasUpdated||(this.hasUpdated=!0,this.firstUpdated(e)),this.updated(e)}_$EM(){this._$AL=new Map,this.isUpdatePending=!1}get updateComplete(){return this.getUpdateComplete()}getUpdateComplete(){return this._$ES}shouldUpdate(e){return!0}update(e){this._$Eq&&=this._$Eq.forEach(e=>this._$ET(e,this[e])),this._$EM()}updated(e){}firstUpdated(e){}};ft.elementStyles=[],ft.shadowRootOptions={mode:`open`},ft[ct(`elementProperties`)]=new Map,ft[ct(`finalized`)]=new Map,st?.({ReactiveElement:ft}),(it.reactiveElementVersions??=[]).push(`2.1.2`);var pt=globalThis,mt=class extends ft{constructor(){super(...arguments),this.renderOptions={host:this},this._$Do=void 0}createRenderRoot(){let e=super.createRenderRoot();return this.renderOptions.renderBefore??=e.firstChild,e}update(e){let t=this.render();this.hasUpdated||(this.renderOptions.isConnected=this.isConnected),super.update(e),this._$Do=Oe(t,this.renderRoot,this.renderOptions)}connectedCallback(){super.connectedCallback(),this._$Do?.setConnected(!0)}disconnectedCallback(){super.disconnectedCallback(),this._$Do?.setConnected(!1)}render(){return me}};mt._$litElement$=!0,mt.finalized=!0,pt.litElementHydrateSupport?.({LitElement:mt});var ht=pt.litElementPolyfillSupport;ht?.({LitElement:mt}),(pt.litElementVersions??=[]).push(`4.2.2`);var gt={attribute:!0,type:String,converter:lt,reflect:!1,hasChanged:ut},_t=(e=gt,t,n)=>{let{kind:r,metadata:i}=n,a=globalThis.litPropertyMetadata.get(i);if(a===void 0&&globalThis.litPropertyMetadata.set(i,a=new Map),r===`setter`&&((e=Object.create(e)).wrapped=!0),a.set(n.name,e),r===`accessor`){let{name:r}=n;return{set(n){let i=t.get.call(this);t.set.call(this,n),this.requestUpdate(r,i,e,!0,n)},init(t){return t!==void 0&&this.C(r,void 0,e,t),t}}}if(r===`setter`){let{name:r}=n;return function(n){let i=this[r];t.call(this,n),this.requestUpdate(r,i,e,!0,n)}}throw Error(`Unsupported decorator location: `+r)};function K(e){return(t,n)=>typeof n==`object`?_t(e,t,n):((e,t,n)=>{let r=t.hasOwnProperty(n);return t.constructor.createProperty(n,e),r?Object.getOwnPropertyDescriptor(t,n):void 0})(e,t,n)}var vt=e=>e??H,yt=class extends Ne{constructor(e){if(super(e),this.it=H,e.type!==je.CHILD)throw Error(this.constructor.directiveName+`() can only be used in child bindings`)}render(e){if(e===H||e==null)return this._t=void 0,this.it=e;if(e===me)return e;if(typeof e!=`string`)throw Error(this.constructor.directiveName+`() called with a non-string value`);if(e===this.it)return this._t;this.it=e;let t=[e];return t.raw=t,this._t={_$litType$:this.constructor.resultType,strings:t,values:[]}}};yt.directiveName=`unsafeHTML`,yt.resultType=1;var bt=Me(yt),xt=`:host{contain:size layout style;box-sizing:border-box;border:1px solid #0000;height:48px;display:block}:host(:is(:hover,[focused])){background-color:var(--color-bg-action-neutral-weakest-hover,#ededed)}:host(:not([aria-disabled=true]):active){background-color:var(--color-bg-action-neutral-weakest-pressed,#dfdfdf)}:host([aria-selected=true]){background-color:var(--color-bg-selection-neutral-default,#ededed)}:host([aria-selected=true]:is(:hover,[focused])){background-color:var(--color-bg-selection-neutral-default-hover,#dfdfdf)}:host([aria-disabled=true]) .side-content{opacity:var(--opacity-default,.5)}:host([aria-disabled=true]) .caption,:host([aria-disabled=true]) .description{color:var(--color-fg-interaction-disabled,#999)}:host:after{content:"";border:2px solid var(--sd-list-item-focus-ring-offset-color,transparent);outline:1px solid var(--sd-list-item-focus-ring-color,transparent);border-radius:var(--radius-s,4px);pointer-events:none;position:absolute;inset:-2px}@media (forced-colors:active){:host([selected]){outline:4px solid}:host(:not([selected]):hover){outline:4px dotted}:host(:not([selected])[focused]){outline:4px dashed}}:host([enable-line-clamp]) .labels>:only-child{-webkit-line-clamp:2;white-space:pre-wrap;overflow-wrap:break-word;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.container{box-sizing:border-box;height:100%;display:flex}.container .level-indicator{flex-shrink:0;width:6px;height:100%}.container .level-indicator+.level-indicator{margin-left:var(--spacing-x1,2px)}.container .level-indicator.level-0{background-color:var(--sd-list-item-level-0-color,var(--color-rainbow-dark-blue-weak30,#c7dbef))}.container .level-indicator.level-1{background-color:var(--sd-list-item-level-1-color,var(--color-rainbow-orange-weak20,#ffc19b))}.container .level-indicator.level-2{background-color:var(--sd-list-item-level-2-color,var(--color-rainbow-green-weak10,#bdda76))}.container .level-indicator.level-3{background-color:var(--sd-list-item-level-3-color,var(--color-rainbow-red-weak20,#f3939e))}.container .level-indicator.level-4{background-color:var(--sd-list-item-level-4-color,var(--color-rainbow-blue-weak10,#77c5ff))}.container .level-indicator.level-5{background-color:var(--sd-list-item-level-5-color,var(--color-rainbow-yellow-weak10,#ffd979))}.container .level-indicator.level-6{background-color:var(--sd-list-item-level-6-color,var(--color-rainbow-purple-weak20,#d493df))}.side-content{flex-grow:0;align-items:center;display:flex}.labels{height:100%;padding:var(--sd-list-item-label-content-padding,0 var(--spacing-x4,8px));flex-direction:column;flex:auto;justify-content:center;line-height:normal;display:flex;overflow:hidden}.caption,.description{text-overflow:ellipsis;-webkit-user-select:none;user-select:none;width:100%;-webkit-text-decoration:inherit;text-decoration:inherit;overflow:hidden}.caption span,.description span{white-space:pre;text-overflow:ellipsis;overflow:hidden}span.caption,span.description{white-space:pre}.caption{font:var(--sd-list-item-caption-font,var(--text-body,400 15px/20px Inter));color:var(--sd-list-item-caption-color,var(--color-fg-default,#111))}.caption em{font:var(--text-body-highlighted,700 15px/20px Inter)}.description{font:var(--sd-list-item-description-font,var(--text-description,400 13px/16px Inter));color:var(--sd-list-item-description-color,var(--color-fg-weak,#565656))}.description em{font:var(--text-description-highlighted,700 13px/16px Inter)}.description.with-icon{align-items:center;gap:var(--spacing-x2,4px);display:flex}.description.with-icon .description-icon{background-position:50%;background-repeat:no-repeat;background-size:contain;flex-shrink:0;width:12px;height:12px}.icon-wrapper{width:32px;height:32px;margin-left:var(--spacing-x4,8px);border-radius:var(--sd-list-item-icon-background-radius,var(--radius-xs,2px));justify-content:center;align-items:center;display:flex;overflow:hidden}.icon-wrapper .icon{min-height:var(--sd-list-item-icon-size,24px);min-width:var(--sd-list-item-icon-size,24px);background-position:50%;background-repeat:no-repeat;background-size:var(--sd-list-item-icon-background-size,cover)}`;function q(e,t){if(typeof Reflect==`object`&&typeof Reflect.metadata==`function`)return Reflect.metadata(e,t)}function J(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a}var Y=class e extends mt{constructor(...e){super(...e),this.contentMode=`text`,this.role=`option`}static{this.ID=`sd-list-item`}static{this.ensureDefined=()=>{customElements.get(e.ID)||customElements.define(e.ID,e)}}static get styles(){return[Ye`
|
|
370
370
|
${Je(xt)}
|
|
371
371
|
`]}render(){return pe`
|
|
372
372
|
<div class="container">
|
|
@@ -384,7 +384,8 @@ list.addEventListener("sd-virtual-list-selection", (event) => {
|
|
|
384
384
|
</div>
|
|
385
385
|
</div>
|
|
386
386
|
`}renderIcon(){return this.icon||this.iconPlaceholder?pe`<div
|
|
387
|
-
|
|
387
|
+
part="icon"
|
|
388
|
+
class="icon-wrapper"
|
|
388
389
|
@pointerdown="${e=>this.handleIconClick(e)}"
|
|
389
390
|
style="background-color:${vt(this.iconBackgroundColor)};"
|
|
390
391
|
role="img"
|
|
@@ -395,11 +396,13 @@ list.addEventListener("sd-virtual-list-selection", (event) => {
|
|
|
395
396
|
</div> `:H}renderLabel(e,t,n,r){if(t==null)return H;let i=this.contentMode===`html`?bt(t):t;return r==null?pe`<span class="${e}" title="${vt(n)}">${i}</span>`:pe`<div class="${e} with-icon" title="${vt(n)}">
|
|
396
397
|
<div class="${e}-icon" style="background-image:url('${r}')" aria-hidden="true"></div>
|
|
397
398
|
<span>${i}</span>
|
|
398
|
-
</div>`}updated(e){super.updated(e),e.has(`selected`)&&this.setAttribute(`aria-selected`,String(this.selected))}get missingWidthForTexts(){let e=this.enableLineClamp;this.removeAttribute(`enable-line-clamp`);let t=0;if(!this.shadowRoot)return 0;let n=this.shadowRoot.querySelector(`.caption`);n&&(t+=n.scrollWidth-n.clientWidth);let r=this.shadowRoot.querySelector(`.description`);return r&&(t=Math.max(t,r.scrollWidth-r.clientWidth)),t>0&&t++,e&&this.setAttribute(`enable-line-clamp`,``),t}handleIconClick(e){!this.disabled&&!this.dispatchEvent(new PointerEvent(`sd-list-item-icon-click`,e))&&e.preventDefault()}getLevelIndicators(){return this.level?Array(Number(this.level)).fill(null):[]}};J([K({type:String}),q(`design:type`,String)],Y.prototype,`caption`,void 0),J([K({type:String}),q(`design:type`,String)],Y.prototype,`description`,void 0),J([K({type:String}),q(`design:type`,String)],Y.prototype,`descriptionIcon`,void 0),J([K({type:Boolean}),q(`design:type`,Boolean)],Y.prototype,`selected`,void 0),J([K({type:String}),q(`design:type`,String)],Y.prototype,`icon`,void 0),J([K({type:String}),q(`design:type`,String)],Y.prototype,`iconBackgroundColor`,void 0),J([K({type:Boolean}),q(`design:type`,Boolean)],Y.prototype,`condensedIconBackground`,void 0),J([K({type:String}),q(`design:type`,String)],Y.prototype,`iconPlaceholder`,void 0),J([K({type:Number}),q(`design:type`,Number)],Y.prototype,`level`,void 0),J([K(),q(`design:type`,Object)],Y.prototype,`contentMode`,void 0),J([K({type:Boolean,reflect:!0,attribute:`enable-line-clamp`}),q(`design:type`,Boolean)],Y.prototype,`enableLineClamp`,void 0),J([K({converter:{fromAttribute:e=>e==`true`,toAttribute:e=>e},reflect:!0,attribute:`aria-disabled`}),q(`design:type`,Boolean)],Y.prototype,`disabled`,void 0),J([K({type:String,attribute:`icon-attr-aria-label`}),q(`design:type`,String)],Y.prototype,`iconAttrAriaLabel`,void 0),J([K({type:String,reflect:!0}),q(`design:type`,Object)],Y.prototype,`role`,void 0),J([K({type:String,attribute:`caption-attr-title`}),q(`design:type`,String)],Y.prototype,`captionAttrTitle`,void 0),J([K({type:String,attribute:`description-attr-title`}),q(`design:type`,String)],Y.prototype,`descriptionAttrTitle`,void 0),J([K({type:String,attribute:`icon-attr-title`}),q(`design:type`,String)],Y.prototype,`iconAttrTitle`,void 0);var St=(e,t)=>{let n=document.createElement(Y.ID);if(e){if(n.caption=e.caption,n.description=e.description,n.descriptionIcon=e.descriptionIcon,n.icon=e.icon,n.iconBackgroundColor=e.iconBackgroundColor,n.iconPlaceholder=e.iconPlaceholder,n.level=e.level,n.disabled=e.disabled,n.condensedIconBackground=e.condensedIconBackground,e.contentMode&&(n.contentMode=e.contentMode),e.leftContentGenerator){let t=e.leftContentGenerator(e,n);t&&(t.slot=`left-content`,n.appendChild(t))}if(e.rightContentGenerator){let t=e.rightContentGenerator(e,n);t&&(t.slot=`right-content`,n.appendChild(t))}}return n};Y.ensureDefined();var Ct=new class{getOffsetForIndexAndAlignment(e,t,n,r,i,a){let o=Math.max(0,a*r),s=Math.min(o,e*r),c=Math.max(0,e*r-i+r);switch(t){case`start`:return s;case`end`:return c;case`center`:{let e=Math.round(c+(s-c)/2);return e<Math.ceil(i/2)?0:e>o+Math.floor(i/2)?o:e}default:return n>=c&&n<=s?n:n<c?c:s}}debounce(e){let t;return(...n)=>{t&&window.cancelAnimationFrame(t),t=window.requestAnimationFrame(()=>{e(...n),t=null})}}};function X(e,t){if(typeof Reflect==`object`&&typeof Reflect.metadata==`function`)return Reflect.metadata(e,t)}function wt(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a}var Tt=class{constructor(e=100,t=5){this.pageSize=e,this.preloadedItemsCount=t,this._finalSizeIsKnown=!1,this._itemCache=[],this._lastRequestedFirstIndex=0,this._lastRequestedLastIndex=0,this._lastLoadedIndex=0,this._pendingDataRequest=!1,this.handleListDataRequest=e=>{if(this._list==null)return;let{startIndex:t,stopIndex:n}=e.detail;this._lastRequestedFirstIndex=t,this._lastRequestedLastIndex=n,this._list.items=this._itemCache.slice(t,n+1),!this.finalSizeIsKnown&&this._lastLoadedIndex<n+this.preloadedItemsCount&&this.requestData()},this._itemCount=e}get currentPage(){return this.items.length==0&&this.finalSizeIsKnown?0:Math.floor((this.items.length-1)/this.pageSize)}get finalSizeIsKnown(){return this._finalSizeIsKnown}set finalSizeIsKnown(e){this._finalSizeIsKnown=e,e&&(this.itemCount=this._itemCache.length),this._list&&(this._list.finalSizeIsKnown=e)}get itemCount(){return this._itemCount}set itemCount(e){this._itemCount=e,this._list&&(this._list.itemCount=e)}get items(){return this._itemCache}set items(e){this._itemCache=e,this.onItemsChange()}addItems(e){this._itemCache=this._itemCache.concat(e),this.onItemsChange()}connectList(e){this._list&&this._list.removeEventListener(`sd-virtual-list-data-request`,this.handleListDataRequest),this._list=e,e.itemCount=this.itemCount,e.addEventListener(`sd-virtual-list-data-request`,this.handleListDataRequest),e.finalSizeIsKnown=this._finalSizeIsKnown}onItemsChange(){this._pendingDataRequest=!1,this._lastLoadedIndex=this._itemCache.length-1,this.finalSizeIsKnown?this.itemCount=this._itemCache.length:this._lastLoadedIndex>this.itemCount&&(this.itemCount=this._lastLoadedIndex),this._list&&(this._list.items=this._itemCache.slice(this._lastRequestedFirstIndex,this._lastRequestedLastIndex+1))}requestData(){if(!this._pendingDataRequest)if(this.onDataRequest)this._pendingDataRequest=!0,this.onDataRequest(this.currentPage+1),this._lastLoadedIndex+=this.pageSize-1,this._lastLoadedIndex>this.itemCount&&(this.itemCount=this._lastLoadedIndex);else throw Error(`The final size is not yet known and the list would require item data from index `+this._lastRequestedFirstIndex+`. to `+this._lastRequestedLastIndex+`. which is not possible to load without a configured onDataRequest`)}},Et=`:host{contain:layout;--sd-virtual-list-focus-highlight-color:#1467ba;--sd-virtual-list-item-separator-color:#d9d9d9;display:block;position:relative}:host(:focus){outline:none}:host(:focus-visible) ::slotted([focused]){box-shadow:0 0 0 1px var(--sd-virtual-list-focus-highlight-color) inset}.container{width:100%}.container>::slotted(*){box-sizing:border-box;width:100%;position:absolute}.container>::slotted(:not([last])){border-bottom:1px solid var(--sd-virtual-list-item-separator-color)}`,Dt,Ot=function(e){return e.TriggerOnly=`trigger-only`,e.Single=`single`,e.Multi=`multi`,e}({}),kt=0,Z=class e extends mt{static{this.ID=`sd-virtual-list`}static{this.ensureDefined=()=>{Y.ensureDefined(),customElements.get(e.ID)||customElements.define(e.ID,e)}}get focusTarget(){return this.hasAttribute(`focus-target`)}set focusTarget(e){this.toggleAttribute(`focus-target`,e)}get focusIndex(){return this._focusIndex}set focusIndex(e){if(e>=-1&&e<this.itemCount){let t=this._focusIndex;this._focusIndex=e,(e<=this._firstVisibleIndex||this._lastVisibleIndex<=e)&&this.scrollToItem(e),t!=e&&(e==-1&&this.removeAttribute(`aria-activedescendant`),this.requestUpdate(`focusIndex`,t))}}get selectedIndices(){return this._selectedIndices}set selectedIndices(e){e?this._selectedIndices=e.map(e=>Number(e)):this._selectedIndices=[],this.requestUpdate(`selectedIndices`)}scrollToItem(e,t=`auto`){this.scrollTop=Ct.getOffsetForIndexAndAlignment(this.normalizeIndex(e),t,this.scrollTop,this.itemHeight,this.height,this.itemCount),this._lastKnownScrollTop=this.scrollTop}getListItem(e){return!this.shadowRoot||e<this._firstVisibleIndex||this._lastVisibleIndex<e?null:this.querySelector(`[item-index="${e}"]`)}constructor(){super(),this.itemHeight=50,this.itemCount=0,this.items=[],this.selectionType=Ot.TriggerOnly,this.id=e.ID+`_`+ kt++,this.role=`listbox`,this.itemGenerator=St,this._lastKnownScrollTop=0,this._lastRenderedScrollTop=0,this._itemsRenderData=[],this._elementCache=new Map,this._firstVisibleIndex=-1,this._lastVisibleIndex=-1,this._visibleItemsNum=0,this._selectedIndices=[],this._focusIndex=-1,this._lastKnownHeight=0,this.onScroll=()=>{this._lastKnownScrollTop=this.scrollTop;let e=this._lastRenderedScrollTop-this._lastKnownScrollTop;Math.abs(e)>=this.itemHeight&&(this._lastRenderedScrollTop=this._lastKnownScrollTop,this.requestUpdate())},this.handleKeyDown=e=>{let t=!0;switch(e.key){case`Down`:case`ArrowDown`:this.focusIndex=(this.focusIndex+1)%this.itemCount;break;case`Up`:case`ArrowUp`:this.focusIndex>0?this.focusIndex--:this.finalSizeIsKnown&&(this.focusIndex=this.itemCount-1);break;case`Enter`:this.handleSelection(this.focusIndex,e);break;case`End`:this.focusIndex=this.itemCount-1;break;case`PageDown`:this.focusIndex=this.normalizeIndex(this.focusIndex+this._visibleItemsNum-1);break;case`Home`:this.focusIndex=0;break;case`PageUp`:this.focusIndex=this.normalizeIndex(this.focusIndex-this._visibleItemsNum+1);break;default:t=!1;break}t&&(e.preventDefault(),e.stopPropagation())},this.handleClick=e=>{let t=e.composedPath().find(e=>e instanceof HTMLElement&&e.hasAttribute&&e.hasAttribute(`item-index`));if(t){let n=t.getAttribute(`item-index`);if(n!=null){let t=parseInt(n);Number.isInteger(t)&&((e.button==0||e.button==1)&&this.handleSelection(t,e),this.focusIndex=t)}}},this._resizeObserver=new ResizeObserver(()=>{this._lastKnownHeight!==this.offsetHeight&&(this._lastKnownHeight=this.offsetHeight,this.requestUpdate())})}connectedCallback(){super.connectedCallback(),this._resizeObserver.observe(this),this.scrollTop!==this._lastKnownScrollTop&&(this.scrollTop=this._lastKnownScrollTop,this.requestUpdate())}disconnectedCallback(){super.disconnectedCallback(),this._resizeObserver.disconnect()}firstUpdated(e){super.firstUpdated(e),this.addEventListener(`scroll`,this.onScroll),this.addEventListener(`keydown`,this.handleKeyDown),this.addEventListener(`click`,this.handleClick),this.addEventListener(`mousedown`,e=>{e.button==1&&e.preventDefault()}),this.addEventListener(`auxclick`,this.handleClick),this.addEventListener(`focus`,()=>{this.matches(`:focus-visible`)&&(this.focusIndex==-1?(this.selectedIndices&&(this.focusIndex=this.selectedIndices[0]??-1),this.focusIndex==-1&&this.itemCount>0&&(this.focusIndex=0)):this.updateFocusedItemAttributes())}),this.addEventListener(`blur`,()=>{this.focusIndex!=-1&&this.updateFocusedItemAttributes()}),this.selectedIndices.length>0&&this.scrollToItem(this.selectedIndices[0]??-1,`center`)}updateFocusedItemAttributes(){let e=this.getListItem(this.focusIndex);e&&(this.focusTarget||document.activeElement==this?(e.setAttribute(`focused`,``),this.setAttribute(`aria-activedescendant`,e.id)):(e.removeAttribute(`focused`),this.removeAttribute(`aria-activedescendant`)))}static get styles(){return[Ye`
|
|
399
|
+
</div>`}updated(e){super.updated(e),e.has(`selected`)&&this.setAttribute(`aria-selected`,String(this.selected))}get missingWidthForTexts(){let e=this.enableLineClamp;this.removeAttribute(`enable-line-clamp`);let t=0;if(!this.shadowRoot)return 0;let n=this.shadowRoot.querySelector(`.caption`);n&&(t+=n.scrollWidth-n.clientWidth);let r=this.shadowRoot.querySelector(`.description`);return r&&(t=Math.max(t,r.scrollWidth-r.clientWidth)),t>0&&t++,e&&this.setAttribute(`enable-line-clamp`,``),t}handleIconClick(e){!this.disabled&&!this.dispatchEvent(new PointerEvent(`sd-list-item-icon-click`,e))&&e.preventDefault()}getLevelIndicators(){return this.level?Array(Number(this.level)).fill(null):[]}};J([K({type:String}),q(`design:type`,String)],Y.prototype,`caption`,void 0),J([K({type:String}),q(`design:type`,String)],Y.prototype,`description`,void 0),J([K({type:String}),q(`design:type`,String)],Y.prototype,`descriptionIcon`,void 0),J([K({type:Boolean}),q(`design:type`,Boolean)],Y.prototype,`selected`,void 0),J([K({type:String}),q(`design:type`,String)],Y.prototype,`icon`,void 0),J([K({type:String}),q(`design:type`,String)],Y.prototype,`iconBackgroundColor`,void 0),J([K({type:String}),q(`design:type`,String)],Y.prototype,`iconPlaceholder`,void 0),J([K({type:Number}),q(`design:type`,Number)],Y.prototype,`level`,void 0),J([K(),q(`design:type`,Object)],Y.prototype,`contentMode`,void 0),J([K({type:Boolean,reflect:!0,attribute:`enable-line-clamp`}),q(`design:type`,Boolean)],Y.prototype,`enableLineClamp`,void 0),J([K({converter:{fromAttribute:e=>e==`true`,toAttribute:e=>e},reflect:!0,attribute:`aria-disabled`}),q(`design:type`,Boolean)],Y.prototype,`disabled`,void 0),J([K({type:String,attribute:`icon-attr-aria-label`}),q(`design:type`,String)],Y.prototype,`iconAttrAriaLabel`,void 0),J([K({type:String,reflect:!0}),q(`design:type`,Object)],Y.prototype,`role`,void 0),J([K({type:String,attribute:`caption-attr-title`}),q(`design:type`,String)],Y.prototype,`captionAttrTitle`,void 0),J([K({type:String,attribute:`description-attr-title`}),q(`design:type`,String)],Y.prototype,`descriptionAttrTitle`,void 0),J([K({type:String,attribute:`icon-attr-title`}),q(`design:type`,String)],Y.prototype,`iconAttrTitle`,void 0);var St=(e,t)=>{let n=document.createElement(Y.ID);if(e){if(n.caption=e.caption,n.description=e.description,n.descriptionIcon=e.descriptionIcon,n.icon=e.icon,n.iconBackgroundColor=e.iconBackgroundColor,n.iconPlaceholder=e.iconPlaceholder,n.level=e.level,n.disabled=e.disabled,e.contentMode&&(n.contentMode=e.contentMode),e.leftContentGenerator){let t=e.leftContentGenerator(e,n);t&&(t.slot=`left-content`,n.appendChild(t))}if(e.rightContentGenerator){let t=e.rightContentGenerator(e,n);t&&(t.slot=`right-content`,n.appendChild(t))}}return n};Y.ensureDefined();var Ct=new class e{static{this.FOCUS_RING_WIDTH=3}getOffsetForIndexAndAlignment(t,n,r,i,a,o){let s=e.FOCUS_RING_WIDTH,c=Math.max(0,o*i),l=t*i+s,u=Math.min(c,l),d=Math.max(0,l-a+i),f=Math.max(0,u-s),p=Math.min(c,d+s);switch(n){case`start`:return f;case`end`:return p;case`center`:{let e=Math.round(d+(u-d)/2);return e<Math.ceil(a/2)?0:e>c+Math.floor(a/2)?c:e}default:return r>=p&&r<=f?r:r<p?p:f}}debounce(e){let t;return(...n)=>{t&&window.cancelAnimationFrame(t),t=window.requestAnimationFrame(()=>{e(...n),t=null})}}};function X(e,t){if(typeof Reflect==`object`&&typeof Reflect.metadata==`function`)return Reflect.metadata(e,t)}function wt(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a}var Tt=class{constructor(e=100,t=5){this.pageSize=e,this.preloadedItemsCount=t,this._finalSizeIsKnown=!1,this._itemCache=[],this._lastRequestedFirstIndex=0,this._lastRequestedLastIndex=0,this._lastLoadedIndex=0,this._pendingDataRequest=!1,this.handleListDataRequest=e=>{if(this._list==null)return;let{startIndex:t,stopIndex:n}=e.detail;this._lastRequestedFirstIndex=t,this._lastRequestedLastIndex=n,this._list.items=this._itemCache.slice(t,n+1),!this.finalSizeIsKnown&&this._lastLoadedIndex<n+this.preloadedItemsCount&&this.requestData()},this._itemCount=e}get currentPage(){return this.items.length==0&&this.finalSizeIsKnown?0:Math.floor((this.items.length-1)/this.pageSize)}get finalSizeIsKnown(){return this._finalSizeIsKnown}set finalSizeIsKnown(e){this._finalSizeIsKnown=e,e&&(this.itemCount=this._itemCache.length),this._list&&(this._list.finalSizeIsKnown=e)}get itemCount(){return this._itemCount}set itemCount(e){this._itemCount=e,this._list&&(this._list.itemCount=e)}get items(){return this._itemCache}set items(e){this._itemCache=e,this.onItemsChange()}addItems(e){this._itemCache=this._itemCache.concat(e),this.onItemsChange()}connectList(e){this._list&&this._list.removeEventListener(`sd-virtual-list-data-request`,this.handleListDataRequest),this._list=e,e.itemCount=this.itemCount,e.addEventListener(`sd-virtual-list-data-request`,this.handleListDataRequest),e.finalSizeIsKnown=this._finalSizeIsKnown}onItemsChange(){this._pendingDataRequest=!1,this._lastLoadedIndex=this._itemCache.length-1,this.finalSizeIsKnown?this.itemCount=this._itemCache.length:this._lastLoadedIndex>this.itemCount&&(this.itemCount=this._lastLoadedIndex),this._list&&(this._list.items=this._itemCache.slice(this._lastRequestedFirstIndex,this._lastRequestedLastIndex+1))}requestData(){if(!this._pendingDataRequest)if(this.onDataRequest)this._pendingDataRequest=!0,this.onDataRequest(this.currentPage+1),this._lastLoadedIndex+=this.pageSize-1,this._lastLoadedIndex>this.itemCount&&(this.itemCount=this._lastLoadedIndex);else throw Error(`The final size is not yet known and the list would require item data from index `+this._lastRequestedFirstIndex+`. to `+this._lastRequestedLastIndex+`. which is not possible to load without a configured onDataRequest`)}},Et=`:host{contain:layout;--list-item-focus-ring-width:3px;scroll-padding:var(--list-item-focus-ring-width);display:block;position:relative;overflow:hidden auto}:host(:focus){outline:none}:host(:focus-visible) ::slotted([focused]){--sd-list-item-focus-ring-offset-color:var(--color-bg-default,#fff);--sd-list-item-focus-ring-color:var(--color-border-interaction-focus,#111);border-color:var(--color-rainbow-mono-weak,#fff);z-index:1}.scroll-container{padding:var(--list-item-focus-ring-width);background:linear-gradient(var(--sd-virtual-list-background-color,var(--color-bg-default,#fff)), var(--sd-virtual-list-background-color,var(--color-bg-default,#fff))) no-repeat right center/var(--list-item-focus-ring-width) calc(100% - 2 * var(--list-item-focus-ring-width));display:block}.container{background-color:var(--sd-virtual-list-background-color,var(--color-bg-default,#fff));width:100%;position:relative}.container>::slotted(*){box-sizing:border-box;width:100%;position:absolute}.container>::slotted(sd-list-item:not([last])){--sd-list-item-bottom-border-color:var(--color-border-weak,#ededed);border-bottom-color:var(--sd-list-item-bottom-border-color)}.container>::slotted(sd-list-item:is(:hover,[focused],:not([aria-disabled=true]):active,[selected])){--sd-list-item-bottom-border-color:var(--color-rainbow-mono-weak,#fff)}.container>::slotted(sd-list-item[selected]){border-left-color:var(--color-rainbow-mono-weak,#fff);border-right-color:var(--color-rainbow-mono-weak,#fff)}.container>::slotted(:not(:is(sd-list-item,[last]))){border-bottom:1px solid var(--color-border-weak,#ededed)}`,Dt,Ot=function(e){return e.TriggerOnly=`trigger-only`,e.Single=`single`,e.Multi=`multi`,e}({}),kt=0,Z=class e extends mt{static{this.ID=`sd-virtual-list`}static{this.ensureDefined=()=>{Y.ensureDefined(),customElements.get(e.ID)||customElements.define(e.ID,e)}}get focusTarget(){return this.hasAttribute(`focus-target`)}set focusTarget(e){this.toggleAttribute(`focus-target`,e)}get focusIndex(){return this._focusIndex}set focusIndex(e){if(e>=-1&&e<this.itemCount){let t=this._focusIndex;this._focusIndex=e,(e<=this._firstVisibleIndex||this._lastVisibleIndex<=e)&&this.scrollToItem(e),t!=e&&(e==-1&&this.removeAttribute(`aria-activedescendant`),this.requestUpdate(`focusIndex`,t))}}get selectedIndices(){return this._selectedIndices}set selectedIndices(e){e?this._selectedIndices=e.map(e=>Number(e)):this._selectedIndices=[],this.requestUpdate(`selectedIndices`)}scrollToItem(e,t=`auto`){this.scrollTop=Ct.getOffsetForIndexAndAlignment(this.normalizeIndex(e),t,this.scrollTop,this.itemHeight,this.height,this.itemCount),this._lastKnownScrollTop=this.scrollTop}getListItem(e){return!this.shadowRoot||e<this._firstVisibleIndex||this._lastVisibleIndex<e?null:this.querySelector(`[item-index="${e}"]`)}constructor(){super(),this.itemHeight=48,this.itemCount=0,this.items=[],this.selectionType=Ot.TriggerOnly,this.id=e.ID+`_`+ kt++,this.role=`listbox`,this.itemGenerator=St,this._lastKnownScrollTop=0,this._lastRenderedScrollTop=0,this._itemsRenderData=[],this._elementCache=new Map,this._firstVisibleIndex=-1,this._lastVisibleIndex=-1,this._visibleItemsNum=0,this._selectedIndices=[],this._focusIndex=-1,this._lastKnownHeight=0,this.onScroll=()=>{this._lastKnownScrollTop=this.scrollTop;let e=this._lastRenderedScrollTop-this._lastKnownScrollTop;Math.abs(e)>=this.itemHeight&&(this._lastRenderedScrollTop=this._lastKnownScrollTop,this.requestUpdate())},this.handleKeyDown=e=>{let t=!0;switch(e.key){case`Down`:case`ArrowDown`:this.focusIndex=(this.focusIndex+1)%this.itemCount;break;case`Up`:case`ArrowUp`:this.focusIndex>0?this.focusIndex--:this.finalSizeIsKnown&&(this.focusIndex=this.itemCount-1);break;case`Enter`:this.handleSelection(this.focusIndex,e);break;case`End`:this.focusIndex=this.itemCount-1;break;case`PageDown`:this.focusIndex=this.normalizeIndex(this.focusIndex+this._visibleItemsNum-1);break;case`Home`:this.focusIndex=0;break;case`PageUp`:this.focusIndex=this.normalizeIndex(this.focusIndex-this._visibleItemsNum+1);break;default:t=!1;break}t&&(e.preventDefault(),e.stopPropagation())},this.handleClick=e=>{let t=e.composedPath().find(e=>e instanceof HTMLElement&&e.hasAttribute&&e.hasAttribute(`item-index`));if(t){let n=t.getAttribute(`item-index`);if(n!=null){let t=parseInt(n);Number.isInteger(t)&&((e.button==0||e.button==1)&&this.handleSelection(t,e),this.focusIndex=t)}}},this._resizeObserver=new ResizeObserver(()=>{this._lastKnownHeight!==this.offsetHeight&&(this._lastKnownHeight=this.offsetHeight,this.requestUpdate())})}connectedCallback(){super.connectedCallback(),this._resizeObserver.observe(this),this.scrollTop!==this._lastKnownScrollTop&&(this.scrollTop=this._lastKnownScrollTop,this.requestUpdate())}disconnectedCallback(){super.disconnectedCallback(),this._resizeObserver.disconnect()}firstUpdated(e){super.firstUpdated(e),this.addEventListener(`scroll`,this.onScroll),this.addEventListener(`keydown`,this.handleKeyDown),this.addEventListener(`click`,this.handleClick),this.addEventListener(`mousedown`,e=>{e.button==1&&e.preventDefault()}),this.addEventListener(`auxclick`,this.handleClick),this.addEventListener(`focus`,()=>{this.matches(`:focus-visible`)&&(this.focusIndex==-1?(this.selectedIndices&&(this.focusIndex=this.selectedIndices[0]??-1),this.focusIndex==-1&&this.itemCount>0&&(this.focusIndex=0)):this.updateFocusedItemAttributes())}),this.addEventListener(`blur`,()=>{this.focusIndex!=-1&&this.updateFocusedItemAttributes()}),this.selectedIndices.length>0&&this.scrollToItem(this.selectedIndices[0]??-1,`center`)}updateFocusedItemAttributes(){let e=this.getListItem(this.focusIndex);e&&(this.focusTarget||document.activeElement==this?(e.setAttribute(`focused`,``),this.setAttribute(`aria-activedescendant`,e.id)):(e.removeAttribute(`focused`),this.removeAttribute(`aria-activedescendant`)))}static get styles(){return[Ye`
|
|
399
400
|
${Je(Et)}
|
|
400
401
|
`]}render(){return this.updateItemsRenderData(),pe`
|
|
401
|
-
<div class="container"
|
|
402
|
-
<
|
|
402
|
+
<div class="scroll-container">
|
|
403
|
+
<div class="container" style="height: ${this.itemCount*this.itemHeight}px">
|
|
404
|
+
<slot name="items"></slot>
|
|
405
|
+
</div>
|
|
403
406
|
</div>
|
|
404
407
|
`}updated(e){super.updated(e),this._lastRenderedScrollTop=this._lastKnownScrollTop,this.updateItems(),(this._increaseWidthOnNextRenderIfNeeded||this._reachedMaxWidth)&&this._firstVisibleIndex<this._lastVisibleIndex&&this.adjustWidthIfNeeded()}adjustWidthIfNeeded(){this._increaseWidthOnNextRenderIfNeeded?(this._increaseWidthOnNextRenderIfNeeded=!1,window.requestAnimationFrame(()=>{let e=Number.parseInt(getComputedStyle(this).maxWidth)-this.offsetWidth;if(e==0)this._reachedMaxWidth=!0,this.enableLineClampOnItemsIfNeeded();else{this._reachedMaxWidth=!1;let t=[...this.querySelectorAll(`[item-index]`)].map(t=>{if(t instanceof Y){t.enableLineClamp=!1;let n=t.missingWidthForTexts;return n>e&&(t.enableLineClamp=!0),n}let n=t.scrollWidth-t.clientWidth;return n>0?n+1:0}),n=Math.max(...t);n>0&&(this.style.width=`${this.offsetWidth+n}px`)}})):this._reachedMaxWidth&&this.enableLineClampOnItemsIfNeeded()}enableLineClampOnItemsIfNeeded(){this.querySelectorAll(`[item-index]`).forEach(e=>{e instanceof Y&&(e.enableLineClamp=e.enableLineClamp||e.missingWidthForTexts>0)})}increaseWidthOnNextRenderIfNeeded(){this._increaseWidthOnNextRenderIfNeeded=!0}updateItems(){let e=[...this.querySelectorAll(`[item-index]`)],t=new Map,n=document.createDocumentFragment();for(let r of this._itemsRenderData){let i=this.renderItem(r);i.parentElement||n.appendChild(i),t.set(r.dataHash,i);let a=e.indexOf(i);a!==-1&&e.splice(a,1)}this.appendChild(n);for(let t of e)t instanceof Y&&(t.enableLineClamp=!1),this.removeChild(t);t.forEach((e,t)=>{this._elementCache.set(t,e)})}renderItem({index:e,top:t,dataHash:n,data:r}){let i;return r?this._elementCache.has(n)?(i=this._elementCache.get(n),this._elementCache.delete(n)):(i=this.itemGenerator(r,e),i.setAttribute(`slot`,`items`)):(i=document.createElement(`div`),i.setAttribute(`placeholder-item`,``),i.setAttribute(`slot`,`items`)),Object.assign(i.style,{transform:`translateY(${t}px)`,height:`${this.itemHeight}px`}),i.setAttribute(`item-index`,e.toString()),i.setAttribute(`aria-setsize`,String(this.finalSizeIsKnown?this.itemCount:-1)),i.setAttribute(`aria-posinset`,String(e+1)),(!i.id||i.id.startsWith(this.id+`_item_`))&&(i.id=this.id+`_item_`+e),this.itemCount-1==e?i.setAttribute(`last`,``):i.removeAttribute(`last`),this.updateSelectedAttribute(e,i),this.updateFocusedAttribute(e,i),i}updateFocusedAttribute(e,t){this.focusIndex==e&&(this.focusTarget||document.activeElement==this)?(t.setAttribute(`focused`,``),this.setAttribute(`aria-activedescendant`,t.id)):t.removeAttribute(`focused`)}updateSelectedAttribute(e,t){let n=this.selectedIndices.indexOf(e)!==-1;n?t.setAttribute(`selected`,``):t.removeAttribute(`selected`),t.setAttribute(`aria-selected`,String(n))}updateItemsRenderData(){if(this._itemsRenderData=[],this._visibleItemsNum=Math.min(Math.ceil(this.height/this.itemHeight),this.itemCount),this._visibleItemsNum>0){this._firstVisibleIndex=this.normalizeIndex(Math.floor(this._lastKnownScrollTop/this.itemHeight)),this._lastVisibleIndex=this.normalizeIndex(this._firstVisibleIndex+this._visibleItemsNum);let e=this.normalizeIndex(this._firstVisibleIndex-2),t=this.normalizeIndex(this._lastVisibleIndex+2);this.requestData(e,t);for(let n=e;n<=t;n++){let t=n-e,r=this.items[t],i;i=r?JSON.stringify(r):`placeholder-${t}`,this._itemsRenderData.push({index:n,top:this.itemHeight*n,physicalIndex:t,dataHash:i,data:r})}}else this._firstVisibleIndex=0,this._lastVisibleIndex=0}normalizeIndex(e){return Math.max(0,Math.min(e,this.itemCount-1))}get height(){return this.offsetHeight}requestData(e,t){!Number.isNaN(e)&&!Number.isNaN(t)&&this.dispatchEvent(new CustomEvent(`sd-virtual-list-data-request`,{detail:{startIndex:e,stopIndex:t}}))}handleSelection(e,t){if(e<0||this.itemCount<=e)return;let n=this.getListItem(e);if(n==null||n.getAttribute(`aria-disabled`)==`true`||n.hasAttribute(`disabled`))return;let r=!0;if(this.selectionType!==Ot.TriggerOnly){let t=this.selectedIndices.indexOf(e);r=t==-1,r?this.selectionType===Ot.Single?this.selectedIndices=[e]:this.selectedIndices.push(e):this.selectedIndices.splice(t,1),this.requestUpdate(`selectedIndices`)}this.focusIndex=e,this.dispatchSelectionEvent(e,r,t)}dispatchSelectionEvent(e,t,n){this.dispatchEvent(new CustomEvent(`sd-virtual-list-selection`,{detail:{index:e,selected:t,originalEvent:n}}))}};wt([K({type:Number,attribute:`item-height`,reflect:!0}),X(`design:type`,Number)],Z.prototype,`itemHeight`,void 0),wt([K({type:Number}),X(`design:type`,Number)],Z.prototype,`itemCount`,void 0),wt([K({type:Array,attribute:!1}),X(`design:type`,Array)],Z.prototype,`items`,void 0),wt([K({type:String,attribute:`selection-type`,reflect:!0,noAccessor:!0}),X(`design:type`,typeof(Dt=Ot!==void 0&&Ot)==`function`?Dt:Object)],Z.prototype,`selectionType`,void 0),wt([K({type:String,attribute:!0,reflect:!0}),X(`design:type`,String)],Z.prototype,`id`,void 0),wt([K({type:String,reflect:!0}),X(`design:type`,Object)],Z.prototype,`role`,void 0),wt([K({type:Number,attribute:`focus-index`,reflect:!0}),X(`design:type`,Number),X(`design:paramtypes`,[])],Z.prototype,`focusIndex`,null),wt([K({type:Array,attribute:!1}),X(`design:type`,Array),X(`design:paramtypes`,[])],Z.prototype,`selectedIndices`,null),Z.ensureDefined();var At=o(((e,t)=>{var n=String,r=function(){return{isColorSupported:!1,reset:n,bold:n,dim:n,italic:n,underline:n,inverse:n,hidden:n,strikethrough:n,black:n,red:n,green:n,yellow:n,blue:n,magenta:n,cyan:n,white:n,gray:n,bgBlack:n,bgRed:n,bgGreen:n,bgYellow:n,bgBlue:n,bgMagenta:n,bgCyan:n,bgWhite:n,blackBright:n,redBright:n,greenBright:n,yellowBright:n,blueBright:n,magentaBright:n,cyanBright:n,whiteBright:n,bgBlackBright:n,bgRedBright:n,bgGreenBright:n,bgYellowBright:n,bgBlueBright:n,bgMagentaBright:n,bgCyanBright:n,bgWhiteBright:n}};t.exports=r(),t.exports.createColors=r})),Q=o(((e,t)=>{t.exports={}})),jt=o(((e,t)=>{var n=At(),r=Q(),i=class e extends Error{constructor(t,n,r,i,a,o){super(t),this.name=`CssSyntaxError`,this.reason=t,a&&(this.file=a),i&&(this.source=i),o&&(this.plugin=o),n!==void 0&&r!==void 0&&(typeof n==`number`?(this.line=n,this.column=r):(this.line=n.line,this.column=n.column,this.endLine=r.line,this.endColumn=r.column)),this.setMessage(),Error.captureStackTrace&&Error.captureStackTrace(this,e)}setMessage(){this.message=this.plugin?this.plugin+`: `:``,this.message+=this.file?this.file:`<css input>`,this.line!==void 0&&(this.message+=`:`+this.line+`:`+this.column),this.message+=`: `+this.reason}showSourceCode(e){if(!this.source)return``;let t=this.source;e??=n.isColorSupported;let i=e=>e,a=e=>e,o=e=>e;if(e){let{bold:e,gray:t,red:s}=n.createColors(!0);a=t=>e(s(t)),i=e=>t(e),r&&(o=e=>r(e))}let s=t.split(/\r?\n/),c=Math.max(this.line-3,0),l=Math.min(this.line+2,s.length),u=String(l).length;return s.slice(c,l).map((e,t)=>{let n=c+1+t,r=` `+(` `+n).slice(-u)+` | `;if(n===this.line){if(e.length>160){let t=Math.max(0,this.column-20),n=Math.max(this.column+20,this.endColumn+20),s=e.slice(t,n),c=i(r.replace(/\d/g,` `))+e.slice(0,Math.min(this.column-1,19)).replace(/[^\t]/g,` `);return a(`>`)+i(r)+o(s)+`
|
|
405
408
|
`+c+a(`^`)}let t=i(r.replace(/\d/g,` `))+e.slice(0,this.column-1).replace(/[^\t]/g,` `);return a(`>`)+i(r)+o(e)+`
|
|
@@ -432,13 +435,16 @@ https://evilmartians.com/chronicles/postcss-8-plugin-migration`),{}.LANG&&{}.LAN
|
|
|
432
435
|
https://www.w3ctech.com/topic/2226`));let i=t(...r);return i.postcssPlugin=e,i.postcssVersion=new m().version,i}let i;return Object.defineProperty(r,`postcss`,{get(){return i||=r(),i}}),r.process=function(e,t,n){return b([r(n)]).process(e,t)},r},b.stringify=v,b.parse=p,b.fromJSON=c,b.list=d,b.comment=e=>new r(e),b.atRule=e=>new n(e),b.decl=e=>new o(e),b.rule=e=>new _(e),b.root=e=>new g(e),b.document=e=>new s(e),b.CssSyntaxError=a,b.Declaration=o,b.Container=i,b.Processor=m,b.Document=s,b.Comment=r,b.Warning=y,b.AtRule=n,b.Result=h,b.Input=l,b.Rule=_,b.Root=g,b.Node=f,u.registerPostcss(b),t.exports=b,b.default=b}))(),1),an=$.default;$.default.stringify,$.default.fromJSON,$.default.plugin,$.default.parse,$.default.list,$.default.document,$.default.comment,$.default.atRule,$.default.rule,$.default.decl,$.default.root,$.default.CssSyntaxError,$.default.Declaration,$.default.Container,$.default.Processor,$.default.Document,$.default.Comment,$.default.Warning,$.default.AtRule,$.default.Result,$.default.Input,$.default.Rule,$.default.Root,$.default.Node;var on=l(o(((e,t)=>{var n=(e={})=>{let t=e.prefix,n=/\s+$/.test(t)?t:`${t} `,a=e.ignoreFiles?[].concat(e.ignoreFiles):[],o=e.includeFiles?[].concat(e.includeFiles):[];return{postcssPlugin:`postcss-prefix-selector`,prepare(s){let c=s.root,l=c.source.input.file;if(!(a.length&&l&&r(l,a))&&!(o.length&&l&&!r(l,o)))return{Rule(r,{result:a}){r.parent&&[`keyframes`,`-webkit-keyframes`,`-moz-keyframes`,`-o-keyframes`,`-ms-keyframes`].includes(r.parent.name)||(r.selectors=r.selectors.map(a=>e.exclude&&i(a,e.exclude)?a:e.transform?e.transform(t,a,n+a,c.source.input.file,r):[`:root`,`body`,`html`].some(e=>a.startsWith(e))?e.skipGlobalSelectors?a:a.replace(/(html\s+body|:root\s+body|html|:root|body)/gm,t):n+a))}}}}};function r(e,t){return t.some(t=>t instanceof RegExp?t.test(e):e.includes(t))}function i(e,t){return t.some(t=>t instanceof RegExp?t.test(e):e===t)}n.postcss=!0,t.exports=n}))(),1),sn=Object.create,cn=Object.defineProperty,ln=Object.getOwnPropertyDescriptor,un=Object.getOwnPropertyNames,dn=Object.getPrototypeOf,fn=Object.prototype.hasOwnProperty,pn=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),mn=(e,t,n,r)=>{if(t&&typeof t==`object`||typeof t==`function`)for(var i=un(t),a=0,o=i.length,s;a<o;a++)s=i[a],!fn.call(e,s)&&s!==n&&cn(e,s,{get:(e=>t[e]).bind(null,s),enumerable:!(r=ln(t,s))||r.enumerable});return e},hn=(e,t,n)=>(n=e==null?{}:sn(dn(e)),mn(t||!e||!e.__esModule?cn(n,`default`,{value:e,enumerable:!0}):n,e)),gn=`pre code.hljs{padding:1em;display:block;overflow-x:auto}code.hljs{padding:3px 5px}.hljs{color:#24292e;background:#fff}.hljs-doctag,.hljs-keyword,.hljs-meta .hljs-keyword,.hljs-template-tag,.hljs-template-variable,.hljs-type,.hljs-variable.language_{color:#d73a49}.hljs-title,.hljs-title.class_,.hljs-title.class_.inherited__,.hljs-title.function_{color:#6f42c1}.hljs-attr,.hljs-attribute,.hljs-literal,.hljs-meta,.hljs-number,.hljs-operator,.hljs-variable,.hljs-selector-attr,.hljs-selector-class,.hljs-selector-id{color:#005cc5}.hljs-regexp,.hljs-string,.hljs-meta .hljs-string{color:#032f62}.hljs-built_in,.hljs-symbol{color:#e36209}.hljs-comment,.hljs-code,.hljs-formula{color:#6a737d}.hljs-name,.hljs-quote,.hljs-selector-tag,.hljs-selector-pseudo{color:#22863a}.hljs-subst{color:#24292e}.hljs-section{color:#005cc5;font-weight:700}.hljs-bullet{color:#735c0f}.hljs-emphasis{color:#24292e;font-style:italic}.hljs-strong{color:#24292e;font-weight:700}.hljs-addition{color:#22863a;background-color:#f0fff4}.hljs-deletion{color:#b31d28;background-color:#ffeef0}`,_n=`code{white-space:pre}.example{flex-flow:wrap;align-items:center;gap:16px;display:flex}.example>*{flex:500px}.example .tab-control{overflow:hidden}.example div[role=tab]{cursor:pointer;-webkit-user-select:none;user-select:none;background-clip:padding-box;border-bottom:2px solid #0000;padding:8px 16px;font-size:16px;display:inline-block}.example div[role=tab]:hover{background-color:#1467ba14}.example div[role=tab][selected]{background-color:#1467ba21;border-bottom:2px solid #1467ba}.tab-content{margin:16px 0}.tab-content>pre{padding-top:0}.tab-content.code{max-height:500px;overflow:auto}.tab-content.code pre{margin:0}`,vn=hn(pn(((e,t)=>{function n(e){return e instanceof Map?e.clear=e.delete=e.set=function(){throw Error(`map is read-only`)}:e instanceof Set&&(e.add=e.clear=e.delete=function(){throw Error(`set is read-only`)}),Object.freeze(e),Object.getOwnPropertyNames(e).forEach(t=>{let r=e[t],i=typeof r;(i===`object`||i===`function`)&&!Object.isFrozen(r)&&n(r)}),e}var r=class{constructor(e){e.data===void 0&&(e.data={}),this.data=e.data,this.isMatchIgnored=!1}ignoreMatch(){this.isMatchIgnored=!0}};function i(e){return e.replace(/&/g,`&`).replace(/</g,`<`).replace(/>/g,`>`).replace(/"/g,`"`).replace(/'/g,`'`)}function a(e,...t){let n=Object.create(null);for(let t in e)n[t]=e[t];return t.forEach(function(e){for(let t in e)n[t]=e[t]}),n}var o=`</span>`,s=e=>!!e.scope,c=(e,{prefix:t})=>{if(e.startsWith(`language:`))return e.replace(`language:`,`language-`);if(e.includes(`.`)){let n=e.split(`.`);return[`${t}${n.shift()}`,...n.map((e,t)=>`${e}${`_`.repeat(t+1)}`)].join(` `)}return`${t}${e}`},l=class{constructor(e,t){this.buffer=``,this.classPrefix=t.classPrefix,e.walk(this)}addText(e){this.buffer+=i(e)}openNode(e){if(!s(e))return;let t=c(e.scope,{prefix:this.classPrefix});this.span(t)}closeNode(e){s(e)&&(this.buffer+=o)}value(){return this.buffer}span(e){this.buffer+=`<span class="${e}">`}},u=(e={})=>{let t={children:[]};return Object.assign(t,e),t},d=class e{constructor(){this.rootNode=u(),this.stack=[this.rootNode]}get top(){return this.stack[this.stack.length-1]}get root(){return this.rootNode}add(e){this.top.children.push(e)}openNode(e){let t=u({scope:e});this.add(t),this.stack.push(t)}closeNode(){if(this.stack.length>1)return this.stack.pop()}closeAllNodes(){for(;this.closeNode(););}toJSON(){return JSON.stringify(this.rootNode,null,4)}walk(e){return this.constructor._walk(e,this.rootNode)}static _walk(e,t){return typeof t==`string`?e.addText(t):t.children&&(e.openNode(t),t.children.forEach(t=>this._walk(e,t)),e.closeNode(t)),e}static _collapse(t){typeof t!=`string`&&t.children&&(t.children.every(e=>typeof e==`string`)?t.children=[t.children.join(``)]:t.children.forEach(t=>{e._collapse(t)}))}},f=class extends d{constructor(e){super(),this.options=e}addText(e){e!==``&&this.add(e)}startScope(e){this.openNode(e)}endScope(){this.closeNode()}__addSublanguage(e,t){let n=e.root;t&&(n.scope=`language:${t}`),this.add(n)}toHTML(){return new l(this,this.options).value()}finalize(){return this.closeAllNodes(),!0}};function p(e){return e?typeof e==`string`?e:e.source:null}function m(e){return _(`(?=`,e,`)`)}function h(e){return _(`(?:`,e,`)*`)}function g(e){return _(`(?:`,e,`)?`)}function _(...e){return e.map(e=>p(e)).join(``)}function v(e){let t=e[e.length-1];return typeof t==`object`&&t.constructor===Object?(e.splice(e.length-1,1),t):{}}function y(...e){return`(`+(v(e).capture?``:`?:`)+e.map(e=>p(e)).join(`|`)+`)`}function b(e){return RegExp(e.toString()+`|`).exec(``).length-1}function x(e,t){let n=e&&e.exec(t);return n&&n.index===0}var S=/\[(?:[^\\\]]|\\.)*\]|\(\??|\\([1-9][0-9]*)|\\./;function C(e,{joinWith:t}){let n=0;return e.map(e=>{n+=1;let t=n,r=p(e),i=``;for(;r.length>0;){let e=S.exec(r);if(!e){i+=r;break}i+=r.substring(0,e.index),r=r.substring(e.index+e[0].length),e[0][0]===`\\`&&e[1]?i+=`\\`+String(Number(e[1])+t):(i+=e[0],e[0]===`(`&&n++)}return i}).map(e=>`(${e})`).join(t)}var w=/\b\B/,T=`[a-zA-Z]\\w*`,E=`[a-zA-Z_]\\w*`,D=`\\b\\d+(\\.\\d+)?`,O=`(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)`,k=`\\b(0b[01]+)`,A=`!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~`,j=(e={})=>{let t=/^#![ ]*\//;return e.binary&&(e.begin=_(t,/.*\b/,e.binary,/\b.*/)),a({scope:`meta`,begin:t,end:/$/,relevance:0,"on:begin":(e,t)=>{e.index!==0&&t.ignoreMatch()}},e)},M={begin:`\\\\[\\s\\S]`,relevance:0},N={scope:`string`,begin:`'`,end:`'`,illegal:`\\n`,contains:[M]},P={scope:`string`,begin:`"`,end:`"`,illegal:`\\n`,contains:[M]},F={begin:/\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\b/},I=function(e,t,n={}){let r=a({scope:`comment`,begin:e,end:t,contains:[]},n);r.contains.push({scope:`doctag`,begin:`[ ]*(?=(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):)`,end:/(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):/,excludeBegin:!0,relevance:0});let i=y(`I`,`a`,`is`,`so`,`us`,`to`,`at`,`if`,`in`,`it`,`on`,/[A-Za-z]+['](d|ve|re|ll|t|s|n)/,/[A-Za-z]+[-][a-z]+/,/[A-Za-z][a-z]{2,}/);return r.contains.push({begin:_(/[ ]+/,`(`,i,/[.]?[:]?([.][ ]|[ ])/,`){3}`)}),r},L=I(`//`,`$`),R=I(`/\\*`,`\\*/`),z=I(`#`,`$`),B={scope:`number`,begin:D,relevance:0},ee={scope:`number`,begin:O,relevance:0},V={scope:`number`,begin:k,relevance:0},te={scope:`regexp`,begin:/\/(?=[^/\n]*\/)/,end:/\/[gimuy]*/,contains:[M,{begin:/\[/,end:/\]/,relevance:0,contains:[M]}]},ne={scope:`title`,begin:T,relevance:0},re={scope:`title`,begin:E,relevance:0},ie={begin:`\\.\\s*`+E,relevance:0},ae=Object.freeze({__proto__:null,APOS_STRING_MODE:N,BACKSLASH_ESCAPE:M,BINARY_NUMBER_MODE:V,BINARY_NUMBER_RE:k,COMMENT:I,C_BLOCK_COMMENT_MODE:R,C_LINE_COMMENT_MODE:L,C_NUMBER_MODE:ee,C_NUMBER_RE:O,END_SAME_AS_BEGIN:function(e){return Object.assign(e,{"on:begin":(e,t)=>{t.data._beginMatch=e[1]},"on:end":(e,t)=>{t.data._beginMatch!==e[1]&&t.ignoreMatch()}})},HASH_COMMENT_MODE:z,IDENT_RE:T,MATCH_NOTHING_RE:w,METHOD_GUARD:ie,NUMBER_MODE:B,NUMBER_RE:D,PHRASAL_WORDS_MODE:F,QUOTE_STRING_MODE:P,REGEXP_MODE:te,RE_STARTERS_RE:A,SHEBANG:j,TITLE_MODE:ne,UNDERSCORE_IDENT_RE:E,UNDERSCORE_TITLE_MODE:re});function oe(e,t){e.input[e.index-1]===`.`&&t.ignoreMatch()}function se(e,t){e.className!==void 0&&(e.scope=e.className,delete e.className)}function ce(e,t){t&&e.beginKeywords&&(e.begin=`\\b(`+e.beginKeywords.split(` `).join(`|`)+`)(?!\\.)(?=\\b|\\s)`,e.__beforeBegin=oe,e.keywords=e.keywords||e.beginKeywords,delete e.beginKeywords,e.relevance===void 0&&(e.relevance=0))}function le(e,t){Array.isArray(e.illegal)&&(e.illegal=y(...e.illegal))}function ue(e,t){if(e.match){if(e.begin||e.end)throw Error(`begin & end are not supported with match`);e.begin=e.match,delete e.match}}function de(e,t){e.relevance===void 0&&(e.relevance=1)}var fe=(e,t)=>{if(!e.beforeMatch)return;if(e.starts)throw Error(`beforeMatch cannot be used with starts`);let n=Object.assign({},e);Object.keys(e).forEach(t=>{delete e[t]}),e.keywords=n.keywords,e.begin=_(n.beforeMatch,m(n.begin)),e.starts={relevance:0,contains:[Object.assign(n,{endsParent:!0})]},e.relevance=0,delete n.beforeMatch},pe=[`of`,`and`,`for`,`in`,`not`,`or`,`if`,`then`,`parent`,`list`,`value`],me=`keyword`;function H(e,t,n=me){let r=Object.create(null);return typeof e==`string`?i(n,e.split(` `)):Array.isArray(e)?i(n,e):Object.keys(e).forEach(function(n){Object.assign(r,H(e[n],t,n))}),r;function i(e,n){t&&(n=n.map(e=>e.toLowerCase())),n.forEach(function(t){let n=t.split(`|`);r[n[0]]=[e,he(n[0],n[1])]})}}function he(e,t){return t?Number(t):ge(e)?0:1}function ge(e){return pe.includes(e.toLowerCase())}var _e={},U=e=>{console.error(e)},ve=(e,...t)=>{console.log(`WARN: ${e}`,...t)},W=(e,t)=>{_e[`${e}/${t}`]||(console.log(`Deprecated as of ${e}. ${t}`),_e[`${e}/${t}`]=!0)},ye=Error();function be(e,t,{key:n}){let r=0,i=e[n],a={},o={};for(let e=1;e<=t.length;e++)o[e+r]=i[e],a[e+r]=!0,r+=b(t[e-1]);e[n]=o,e[n]._emit=a,e[n]._multi=!0}function xe(e){if(Array.isArray(e.begin)){if(e.skip||e.excludeBegin||e.returnBegin)throw U(`skip, excludeBegin, returnBegin not compatible with beginScope: {}`),ye;if(typeof e.beginScope!=`object`||e.beginScope===null)throw U(`beginScope must be object`),ye;be(e,e.begin,{key:`beginScope`}),e.begin=C(e.begin,{joinWith:``})}}function Se(e){if(Array.isArray(e.end)){if(e.skip||e.excludeEnd||e.returnEnd)throw U(`skip, excludeEnd, returnEnd not compatible with endScope: {}`),ye;if(typeof e.endScope!=`object`||e.endScope===null)throw U(`endScope must be object`),ye;be(e,e.end,{key:`endScope`}),e.end=C(e.end,{joinWith:``})}}function Ce(e){e.scope&&typeof e.scope==`object`&&e.scope!==null&&(e.beginScope=e.scope,delete e.scope)}function we(e){Ce(e),typeof e.beginScope==`string`&&(e.beginScope={_wrap:e.beginScope}),typeof e.endScope==`string`&&(e.endScope={_wrap:e.endScope}),xe(e),Se(e)}function Te(e){function t(t,n){return new RegExp(p(t),`m`+(e.case_insensitive?`i`:``)+(e.unicodeRegex?`u`:``)+(n?`g`:``))}class n{constructor(){this.matchIndexes={},this.regexes=[],this.matchAt=1,this.position=0}addRule(e,t){t.position=this.position++,this.matchIndexes[this.matchAt]=t,this.regexes.push([t,e]),this.matchAt+=b(e)+1}compile(){this.regexes.length===0&&(this.exec=()=>null),this.matcherRe=t(C(this.regexes.map(e=>e[1]),{joinWith:`|`}),!0),this.lastIndex=0}exec(e){this.matcherRe.lastIndex=this.lastIndex;let t=this.matcherRe.exec(e);if(!t)return null;let n=t.findIndex((e,t)=>t>0&&e!==void 0),r=this.matchIndexes[n];return t.splice(0,n),Object.assign(t,r)}}class r{constructor(){this.rules=[],this.multiRegexes=[],this.count=0,this.lastIndex=0,this.regexIndex=0}getMatcher(e){if(this.multiRegexes[e])return this.multiRegexes[e];let t=new n;return this.rules.slice(e).forEach(([e,n])=>t.addRule(e,n)),t.compile(),this.multiRegexes[e]=t,t}resumingScanAtSamePosition(){return this.regexIndex!==0}considerAll(){this.regexIndex=0}addRule(e,t){this.rules.push([e,t]),t.type===`begin`&&this.count++}exec(e){let t=this.getMatcher(this.regexIndex);t.lastIndex=this.lastIndex;let n=t.exec(e);if(this.resumingScanAtSamePosition()&&!(n&&n.index===this.lastIndex)){let t=this.getMatcher(0);t.lastIndex=this.lastIndex+1,n=t.exec(e)}return n&&(this.regexIndex+=n.position+1,this.regexIndex===this.count&&this.considerAll()),n}}function i(e){let t=new r;return e.contains.forEach(e=>t.addRule(e.begin,{rule:e,type:`begin`})),e.terminatorEnd&&t.addRule(e.terminatorEnd,{type:`end`}),e.illegal&&t.addRule(e.illegal,{type:`illegal`}),t}function o(n,r){let a=n;if(n.isCompiled)return a;[se,ue,we,fe].forEach(e=>e(n,r)),e.compilerExtensions.forEach(e=>e(n,r)),n.__beforeBegin=null,[ce,le,de].forEach(e=>e(n,r)),n.isCompiled=!0;let s=null;return typeof n.keywords==`object`&&n.keywords.$pattern&&(n.keywords=Object.assign({},n.keywords),s=n.keywords.$pattern,delete n.keywords.$pattern),s||=/\w+/,n.keywords&&=H(n.keywords,e.case_insensitive),a.keywordPatternRe=t(s,!0),r&&(n.begin||=/\B|\b/,a.beginRe=t(a.begin),!n.end&&!n.endsWithParent&&(n.end=/\B|\b/),n.end&&(a.endRe=t(a.end)),a.terminatorEnd=p(a.end)||``,n.endsWithParent&&r.terminatorEnd&&(a.terminatorEnd+=(n.end?`|`:``)+r.terminatorEnd)),n.illegal&&(a.illegalRe=t(n.illegal)),n.contains||=[],n.contains=[].concat(...n.contains.map(function(e){return De(e===`self`?n:e)})),n.contains.forEach(function(e){o(e,a)}),n.starts&&o(n.starts,r),a.matcher=i(a),a}if(e.compilerExtensions||=[],e.contains&&e.contains.includes(`self`))throw Error("ERR: contains `self` is not supported at the top-level of a language. See documentation.");return e.classNameAliases=a(e.classNameAliases||{}),o(e)}function Ee(e){return e?e.endsWithParent||Ee(e.starts):!1}function De(e){return e.variants&&!e.cachedVariants&&(e.cachedVariants=e.variants.map(function(t){return a(e,{variants:null},t)})),e.cachedVariants?e.cachedVariants:Ee(e)?a(e,{starts:e.starts?a(e.starts):null}):Object.isFrozen(e)?a(e):e}var Oe=`11.11.1`,ke=class extends Error{constructor(e,t){super(e),this.name=`HTMLInjectionError`,this.html=t}},Ae=i,je=a,Me=Symbol(`nomatch`),Ne=7,Pe=function(e){let t=Object.create(null),i=Object.create(null),a=[],o=!0,s=`Could not find the language '{}', did you forget to load/include a language module?`,c={disableAutodetect:!0,name:`Plain text`,contains:[]},l={ignoreUnescapedHTML:!1,throwUnescapedHTML:!1,noHighlightRe:/^(no-?highlight)$/i,languageDetectRe:/\blang(?:uage)?-([\w-]+)\b/i,classPrefix:`hljs-`,cssSelector:`pre code`,languages:null,__emitter:f};function u(e){return l.noHighlightRe.test(e)}function d(e){let t=e.className+` `;t+=e.parentNode?e.parentNode.className:``;let n=l.languageDetectRe.exec(t);if(n){let t=N(n[1]);return t||(ve(s.replace(`{}`,n[1])),ve(`Falling back to no-highlight mode for this block.`,e)),t?n[1]:`no-highlight`}return t.split(/\s+/).find(e=>u(e)||N(e))}function p(e,t,n){let r=``,i=``;typeof t==`object`?(r=e,n=t.ignoreIllegals,i=t.language):(W(`10.7.0`,`highlight(lang, code, ...args) has been deprecated.`),W(`10.7.0`,`Please use highlight(code, options) instead.
|
|
433
436
|
https://github.com/highlightjs/highlight.js/issues/2277`),i=e,r=t),n===void 0&&(n=!0);let a={code:r,language:i};z(`before:highlight`,a);let o=a.result?a.result:v(a.language,a.code,n);return o.code=a.code,z(`after:highlight`,o),o}function v(e,n,i,a){let c=Object.create(null);function u(e,t){return e.keywords[t]}function d(){if(!A.keywords){M.addText(P);return}let e=0;A.keywordPatternRe.lastIndex=0;let t=A.keywordPatternRe.exec(P),n=``;for(;t;){n+=P.substring(e,t.index);let r=D.case_insensitive?t[0].toLowerCase():t[0],i=u(A,r);if(i){let[e,a]=i;if(M.addText(n),n=``,c[r]=(c[r]||0)+1,c[r]<=Ne&&(F+=a),e.startsWith(`_`))n+=t[0];else{let n=D.classNameAliases[e]||e;m(t[0],n)}}else n+=t[0];e=A.keywordPatternRe.lastIndex,t=A.keywordPatternRe.exec(P)}n+=P.substring(e),M.addText(n)}function f(){if(P===``)return;let e=null;if(typeof A.subLanguage==`string`){if(!t[A.subLanguage]){M.addText(P);return}e=v(A.subLanguage,P,!0,j[A.subLanguage]),j[A.subLanguage]=e._top}else e=S(P,A.subLanguage.length?A.subLanguage:null);A.relevance>0&&(F+=e.relevance),M.__addSublanguage(e._emitter,e.language)}function p(){A.subLanguage==null?d():f(),P=``}function m(e,t){e!==``&&(M.startScope(t),M.addText(e),M.endScope())}function h(e,t){let n=1,r=t.length-1;for(;n<=r;){if(!e._emit[n]){n++;continue}let r=D.classNameAliases[e[n]]||e[n],i=t[n];r?m(i,r):(P=i,d(),P=``),n++}}function g(e,t){return e.scope&&typeof e.scope==`string`&&M.openNode(D.classNameAliases[e.scope]||e.scope),e.beginScope&&(e.beginScope._wrap?(m(P,D.classNameAliases[e.beginScope._wrap]||e.beginScope._wrap),P=``):e.beginScope._multi&&(h(e.beginScope,t),P=``)),A=Object.create(e,{parent:{value:A}}),A}function _(e,t,n){let i=x(e.endRe,n);if(i){if(e[`on:end`]){let n=new r(e);e[`on:end`](t,n),n.isMatchIgnored&&(i=!1)}if(i){for(;e.endsParent&&e.parent;)e=e.parent;return e}}if(e.endsWithParent)return _(e.parent,t,n)}function y(e){return A.matcher.regexIndex===0?(P+=e[0],1):(R=!0,0)}function b(e){let t=e[0],n=e.rule,i=new r(n),a=[n.__beforeBegin,n[`on:begin`]];for(let n of a)if(n&&(n(e,i),i.isMatchIgnored))return y(t);return n.skip?P+=t:(n.excludeBegin&&(P+=t),p(),!n.returnBegin&&!n.excludeBegin&&(P=t)),g(n,e),n.returnBegin?0:t.length}function C(e){let t=e[0],r=n.substring(e.index),i=_(A,e,r);if(!i)return Me;let a=A;A.endScope&&A.endScope._wrap?(p(),m(t,A.endScope._wrap)):A.endScope&&A.endScope._multi?(p(),h(A.endScope,e)):a.skip?P+=t:(a.returnEnd||a.excludeEnd||(P+=t),p(),a.excludeEnd&&(P=t));do A.scope&&M.closeNode(),!A.skip&&!A.subLanguage&&(F+=A.relevance),A=A.parent;while(A!==i.parent);return i.starts&&g(i.starts,e),a.returnEnd?0:t.length}function w(){let e=[];for(let t=A;t!==D;t=t.parent)t.scope&&e.unshift(t.scope);e.forEach(e=>M.openNode(e))}let T={};function E(t,r){let a=r&&r[0];if(P+=t,a==null)return p(),0;if(T.type===`begin`&&r.type===`end`&&T.index===r.index&&a===``){if(P+=n.slice(r.index,r.index+1),!o){let t=Error(`0 width match regex (${e})`);throw t.languageName=e,t.badRule=T.rule,t}return 1}if(T=r,r.type===`begin`)return b(r);if(r.type===`illegal`&&!i){let e=Error(`Illegal lexeme "`+a+`" for mode "`+(A.scope||`<unnamed>`)+`"`);throw e.mode=A,e}else if(r.type===`end`){let e=C(r);if(e!==Me)return e}if(r.type===`illegal`&&a===``)return P+=`
|
|
434
437
|
`,1;if(L>1e5&&L>r.index*3)throw Error(`potential infinite loop, way more iterations than matches`);return P+=a,a.length}let D=N(e);if(!D)throw U(s.replace(`{}`,e)),Error(`Unknown language: "`+e+`"`);let O=Te(D),k=``,A=a||O,j={},M=new l.__emitter(l);w();let P=``,F=0,I=0,L=0,R=!1;try{if(D.__emitTokens)D.__emitTokens(n,M);else{for(A.matcher.considerAll();;){L++,R?R=!1:A.matcher.considerAll(),A.matcher.lastIndex=I;let e=A.matcher.exec(n);if(!e)break;let t=E(n.substring(I,e.index),e);I=e.index+t}E(n.substring(I))}return M.finalize(),k=M.toHTML(),{language:e,value:k,relevance:F,illegal:!1,_emitter:M,_top:A}}catch(t){if(t.message&&t.message.includes(`Illegal`))return{language:e,value:Ae(n),illegal:!0,relevance:0,_illegalBy:{message:t.message,index:I,context:n.slice(I-100,I+100),mode:t.mode,resultSoFar:k},_emitter:M};if(o)return{language:e,value:Ae(n),illegal:!1,relevance:0,errorRaised:t,_emitter:M,_top:A};throw t}}function b(e){let t={value:Ae(e),illegal:!1,relevance:0,_top:c,_emitter:new l.__emitter(l)};return t._emitter.addText(e),t}function S(e,n){n=n||l.languages||Object.keys(t);let r=b(e),i=n.filter(N).filter(F).map(t=>v(t,e,!1));i.unshift(r);let[a,o]=i.sort((e,t)=>{if(e.relevance!==t.relevance)return t.relevance-e.relevance;if(e.language&&t.language){if(N(e.language).supersetOf===t.language)return 1;if(N(t.language).supersetOf===e.language)return-1}return 0}),s=a;return s.secondBest=o,s}function C(e,t,n){let r=t&&i[t]||n;e.classList.add(`hljs`),e.classList.add(`language-${r}`)}function w(e){let t=null,n=d(e);if(u(n))return;if(z(`before:highlightElement`,{el:e,language:n}),e.dataset.highlighted){console.log("Element previously highlighted. To highlight again, first unset `dataset.highlighted`.",e);return}if(e.children.length>0&&(l.ignoreUnescapedHTML||(console.warn(`One of your code blocks includes unescaped HTML. This is a potentially serious security risk.`),console.warn(`https://github.com/highlightjs/highlight.js/wiki/security`),console.warn(`The element with unescaped HTML:`),console.warn(e)),l.throwUnescapedHTML))throw new ke(`One of your code blocks includes unescaped HTML.`,e.innerHTML);t=e;let r=t.textContent,i=n?p(r,{language:n,ignoreIllegals:!0}):S(r);e.innerHTML=i.value,e.dataset.highlighted=`yes`,C(e,n,i.language),e.result={language:i.language,re:i.relevance,relevance:i.relevance},i.secondBest&&(e.secondBest={language:i.secondBest.language,relevance:i.secondBest.relevance}),z(`after:highlightElement`,{el:e,result:i,text:r})}function T(e){l=je(l,e)}let E=()=>{k(),W(`10.6.0`,`initHighlighting() deprecated. Use highlightAll() now.`)};function D(){k(),W(`10.6.0`,`initHighlightingOnLoad() deprecated. Use highlightAll() now.`)}let O=!1;function k(){function e(){k()}if(document.readyState===`loading`){O||window.addEventListener(`DOMContentLoaded`,e,!1),O=!0;return}document.querySelectorAll(l.cssSelector).forEach(w)}function A(n,r){let i=null;try{i=r(e)}catch(e){if(U(`Language definition for '{}' could not be registered.`.replace(`{}`,n)),o)U(e);else throw e;i=c}i.name||=n,t[n]=i,i.rawDefinition=r.bind(null,e),i.aliases&&P(i.aliases,{languageName:n})}function j(e){delete t[e];for(let t of Object.keys(i))i[t]===e&&delete i[t]}function M(){return Object.keys(t)}function N(e){return e=(e||``).toLowerCase(),t[e]||t[i[e]]}function P(e,{languageName:t}){typeof e==`string`&&(e=[e]),e.forEach(e=>{i[e.toLowerCase()]=t})}function F(e){let t=N(e);return t&&!t.disableAutodetect}function I(e){e[`before:highlightBlock`]&&!e[`before:highlightElement`]&&(e[`before:highlightElement`]=t=>{e[`before:highlightBlock`](Object.assign({block:t.el},t))}),e[`after:highlightBlock`]&&!e[`after:highlightElement`]&&(e[`after:highlightElement`]=t=>{e[`after:highlightBlock`](Object.assign({block:t.el},t))})}function L(e){I(e),a.push(e)}function R(e){let t=a.indexOf(e);t!==-1&&a.splice(t,1)}function z(e,t){let n=e;a.forEach(function(e){e[n]&&e[n](t)})}function B(e){return W(`10.7.0`,`highlightBlock will be removed entirely in v12.0`),W(`10.7.0`,`Please use highlightElement now.`),w(e)}Object.assign(e,{highlight:p,highlightAuto:S,highlightAll:k,highlightElement:w,highlightBlock:B,configure:T,initHighlighting:E,initHighlightingOnLoad:D,registerLanguage:A,unregisterLanguage:j,listLanguages:M,getLanguage:N,registerAliases:P,autoDetection:F,inherit:je,addPlugin:L,removePlugin:R}),e.debugMode=function(){o=!1},e.safeMode=function(){o=!0},e.versionString=Oe,e.regex={concat:_,lookahead:m,either:y,optional:g,anyNumberOfTimes:h};for(let e in ae)typeof ae[e]==`object`&&n(ae[e]);return Object.assign(e,ae),e},G=Pe({});G.newInstance=()=>Pe({}),t.exports=G,G.HighlightJS=G,G.default=G}))()).default,yn=e=>({IMPORTANT:{scope:`meta`,begin:`!important`},BLOCK_COMMENT:e.C_BLOCK_COMMENT_MODE,HEXCOLOR:{scope:`number`,begin:/#(([0-9a-fA-F]{3,4})|(([0-9a-fA-F]{2}){3,4}))\b/},FUNCTION_DISPATCH:{className:`built_in`,begin:/[\w-]+(?=\()/},ATTRIBUTE_SELECTOR_MODE:{scope:`selector-attr`,begin:/\[/,end:/\]/,illegal:`$`,contains:[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]},CSS_NUMBER_MODE:{scope:`number`,begin:e.NUMBER_RE+`(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?`,relevance:0},CSS_VARIABLE:{className:`attr`,begin:/--[A-Za-z_][A-Za-z0-9_-]*/}}),bn=`a.abbr.address.article.aside.audio.b.blockquote.body.button.canvas.caption.cite.code.dd.del.details.dfn.div.dl.dt.em.fieldset.figcaption.figure.footer.form.h1.h2.h3.h4.h5.h6.header.hgroup.html.i.iframe.img.input.ins.kbd.label.legend.li.main.mark.menu.nav.object.ol.optgroup.option.p.picture.q.quote.samp.section.select.source.span.strong.summary.sup.table.tbody.td.textarea.tfoot.th.thead.time.tr.ul.var.video`.split(`.`),xn=`defs.g.marker.mask.pattern.svg.switch.symbol.feBlend.feColorMatrix.feComponentTransfer.feComposite.feConvolveMatrix.feDiffuseLighting.feDisplacementMap.feFlood.feGaussianBlur.feImage.feMerge.feMorphology.feOffset.feSpecularLighting.feTile.feTurbulence.linearGradient.radialGradient.stop.circle.ellipse.image.line.path.polygon.polyline.rect.text.use.textPath.tspan.foreignObject.clipPath`.split(`.`),Sn=[...bn,...xn],Cn=`any-hover.any-pointer.aspect-ratio.color.color-gamut.color-index.device-aspect-ratio.device-height.device-width.display-mode.forced-colors.grid.height.hover.inverted-colors.monochrome.orientation.overflow-block.overflow-inline.pointer.prefers-color-scheme.prefers-contrast.prefers-reduced-motion.prefers-reduced-transparency.resolution.scan.scripting.update.width.min-width.max-width.min-height.max-height`.split(`.`).sort().reverse(),wn=`active.any-link.blank.checked.current.default.defined.dir.disabled.drop.empty.enabled.first.first-child.first-of-type.fullscreen.future.focus.focus-visible.focus-within.has.host.host-context.hover.indeterminate.in-range.invalid.is.lang.last-child.last-of-type.left.link.local-link.not.nth-child.nth-col.nth-last-child.nth-last-col.nth-last-of-type.nth-of-type.only-child.only-of-type.optional.out-of-range.past.placeholder-shown.read-only.read-write.required.right.root.scope.target.target-within.user-invalid.valid.visited.where`.split(`.`).sort().reverse(),Tn=[`after`,`backdrop`,`before`,`cue`,`cue-region`,`first-letter`,`first-line`,`grammar-error`,`marker`,`part`,`placeholder`,`selection`,`slotted`,`spelling-error`].sort().reverse(),En=`accent-color.align-content.align-items.align-self.alignment-baseline.all.anchor-name.animation.animation-composition.animation-delay.animation-direction.animation-duration.animation-fill-mode.animation-iteration-count.animation-name.animation-play-state.animation-range.animation-range-end.animation-range-start.animation-timeline.animation-timing-function.appearance.aspect-ratio.backdrop-filter.backface-visibility.background.background-attachment.background-blend-mode.background-clip.background-color.background-image.background-origin.background-position.background-position-x.background-position-y.background-repeat.background-size.baseline-shift.block-size.border.border-block.border-block-color.border-block-end.border-block-end-color.border-block-end-style.border-block-end-width.border-block-start.border-block-start-color.border-block-start-style.border-block-start-width.border-block-style.border-block-width.border-bottom.border-bottom-color.border-bottom-left-radius.border-bottom-right-radius.border-bottom-style.border-bottom-width.border-collapse.border-color.border-end-end-radius.border-end-start-radius.border-image.border-image-outset.border-image-repeat.border-image-slice.border-image-source.border-image-width.border-inline.border-inline-color.border-inline-end.border-inline-end-color.border-inline-end-style.border-inline-end-width.border-inline-start.border-inline-start-color.border-inline-start-style.border-inline-start-width.border-inline-style.border-inline-width.border-left.border-left-color.border-left-style.border-left-width.border-radius.border-right.border-right-color.border-right-style.border-right-width.border-spacing.border-start-end-radius.border-start-start-radius.border-style.border-top.border-top-color.border-top-left-radius.border-top-right-radius.border-top-style.border-top-width.border-width.bottom.box-align.box-decoration-break.box-direction.box-flex.box-flex-group.box-lines.box-ordinal-group.box-orient.box-pack.box-shadow.box-sizing.break-after.break-before.break-inside.caption-side.caret-color.clear.clip.clip-path.clip-rule.color.color-interpolation.color-interpolation-filters.color-profile.color-rendering.color-scheme.column-count.column-fill.column-gap.column-rule.column-rule-color.column-rule-style.column-rule-width.column-span.column-width.columns.contain.contain-intrinsic-block-size.contain-intrinsic-height.contain-intrinsic-inline-size.contain-intrinsic-size.contain-intrinsic-width.container.container-name.container-type.content.content-visibility.counter-increment.counter-reset.counter-set.cue.cue-after.cue-before.cursor.cx.cy.direction.display.dominant-baseline.empty-cells.enable-background.field-sizing.fill.fill-opacity.fill-rule.filter.flex.flex-basis.flex-direction.flex-flow.flex-grow.flex-shrink.flex-wrap.float.flood-color.flood-opacity.flow.font.font-display.font-family.font-feature-settings.font-kerning.font-language-override.font-optical-sizing.font-palette.font-size.font-size-adjust.font-smooth.font-smoothing.font-stretch.font-style.font-synthesis.font-synthesis-position.font-synthesis-small-caps.font-synthesis-style.font-synthesis-weight.font-variant.font-variant-alternates.font-variant-caps.font-variant-east-asian.font-variant-emoji.font-variant-ligatures.font-variant-numeric.font-variant-position.font-variation-settings.font-weight.forced-color-adjust.gap.glyph-orientation-horizontal.glyph-orientation-vertical.grid.grid-area.grid-auto-columns.grid-auto-flow.grid-auto-rows.grid-column.grid-column-end.grid-column-start.grid-gap.grid-row.grid-row-end.grid-row-start.grid-template.grid-template-areas.grid-template-columns.grid-template-rows.hanging-punctuation.height.hyphenate-character.hyphenate-limit-chars.hyphens.icon.image-orientation.image-rendering.image-resolution.ime-mode.initial-letter.initial-letter-align.inline-size.inset.inset-area.inset-block.inset-block-end.inset-block-start.inset-inline.inset-inline-end.inset-inline-start.isolation.justify-content.justify-items.justify-self.kerning.left.letter-spacing.lighting-color.line-break.line-height.line-height-step.list-style.list-style-image.list-style-position.list-style-type.margin.margin-block.margin-block-end.margin-block-start.margin-bottom.margin-inline.margin-inline-end.margin-inline-start.margin-left.margin-right.margin-top.margin-trim.marker.marker-end.marker-mid.marker-start.marks.mask.mask-border.mask-border-mode.mask-border-outset.mask-border-repeat.mask-border-slice.mask-border-source.mask-border-width.mask-clip.mask-composite.mask-image.mask-mode.mask-origin.mask-position.mask-repeat.mask-size.mask-type.masonry-auto-flow.math-depth.math-shift.math-style.max-block-size.max-height.max-inline-size.max-width.min-block-size.min-height.min-inline-size.min-width.mix-blend-mode.nav-down.nav-index.nav-left.nav-right.nav-up.none.normal.object-fit.object-position.offset.offset-anchor.offset-distance.offset-path.offset-position.offset-rotate.opacity.order.orphans.outline.outline-color.outline-offset.outline-style.outline-width.overflow.overflow-anchor.overflow-block.overflow-clip-margin.overflow-inline.overflow-wrap.overflow-x.overflow-y.overlay.overscroll-behavior.overscroll-behavior-block.overscroll-behavior-inline.overscroll-behavior-x.overscroll-behavior-y.padding.padding-block.padding-block-end.padding-block-start.padding-bottom.padding-inline.padding-inline-end.padding-inline-start.padding-left.padding-right.padding-top.page.page-break-after.page-break-before.page-break-inside.paint-order.pause.pause-after.pause-before.perspective.perspective-origin.place-content.place-items.place-self.pointer-events.position.position-anchor.position-visibility.print-color-adjust.quotes.r.resize.rest.rest-after.rest-before.right.rotate.row-gap.ruby-align.ruby-position.scale.scroll-behavior.scroll-margin.scroll-margin-block.scroll-margin-block-end.scroll-margin-block-start.scroll-margin-bottom.scroll-margin-inline.scroll-margin-inline-end.scroll-margin-inline-start.scroll-margin-left.scroll-margin-right.scroll-margin-top.scroll-padding.scroll-padding-block.scroll-padding-block-end.scroll-padding-block-start.scroll-padding-bottom.scroll-padding-inline.scroll-padding-inline-end.scroll-padding-inline-start.scroll-padding-left.scroll-padding-right.scroll-padding-top.scroll-snap-align.scroll-snap-stop.scroll-snap-type.scroll-timeline.scroll-timeline-axis.scroll-timeline-name.scrollbar-color.scrollbar-gutter.scrollbar-width.shape-image-threshold.shape-margin.shape-outside.shape-rendering.speak.speak-as.src.stop-color.stop-opacity.stroke.stroke-dasharray.stroke-dashoffset.stroke-linecap.stroke-linejoin.stroke-miterlimit.stroke-opacity.stroke-width.tab-size.table-layout.text-align.text-align-all.text-align-last.text-anchor.text-combine-upright.text-decoration.text-decoration-color.text-decoration-line.text-decoration-skip.text-decoration-skip-ink.text-decoration-style.text-decoration-thickness.text-emphasis.text-emphasis-color.text-emphasis-position.text-emphasis-style.text-indent.text-justify.text-orientation.text-overflow.text-rendering.text-shadow.text-size-adjust.text-transform.text-underline-offset.text-underline-position.text-wrap.text-wrap-mode.text-wrap-style.timeline-scope.top.touch-action.transform.transform-box.transform-origin.transform-style.transition.transition-behavior.transition-delay.transition-duration.transition-property.transition-timing-function.translate.unicode-bidi.user-modify.user-select.vector-effect.vertical-align.view-timeline.view-timeline-axis.view-timeline-inset.view-timeline-name.view-transition-name.visibility.voice-balance.voice-duration.voice-family.voice-pitch.voice-range.voice-rate.voice-stress.voice-volume.white-space.white-space-collapse.widows.width.will-change.word-break.word-spacing.word-wrap.writing-mode.x.y.z-index.zoom`.split(`.`).sort().reverse();function Dn(e){let t=e.regex,n=yn(e),r={begin:/-(webkit|moz|ms|o)-(?=[a-z])/},i=/@-?\w[\w]*(-\w+)*/,a=[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE];return{name:`CSS`,case_insensitive:!0,illegal:/[=|'\$]/,keywords:{keyframePosition:`from to`},classNameAliases:{keyframePosition:`selector-tag`},contains:[n.BLOCK_COMMENT,r,n.CSS_NUMBER_MODE,{className:`selector-id`,begin:/#[A-Za-z0-9_-]+/,relevance:0},{className:`selector-class`,begin:`\\.[a-zA-Z-][a-zA-Z0-9_-]*`,relevance:0},n.ATTRIBUTE_SELECTOR_MODE,{className:`selector-pseudo`,variants:[{begin:`:(`+wn.join(`|`)+`)`},{begin:`:(:)?(`+Tn.join(`|`)+`)`}]},n.CSS_VARIABLE,{className:`attribute`,begin:`\\b(`+En.join(`|`)+`)\\b`},{begin:/:/,end:/[;}{]/,contains:[n.BLOCK_COMMENT,n.HEXCOLOR,n.IMPORTANT,n.CSS_NUMBER_MODE,...a,{begin:/(url|data-uri)\(/,end:/\)/,relevance:0,keywords:{built_in:`url data-uri`},contains:[...a,{className:`string`,begin:/[^)]/,endsWithParent:!0,excludeEnd:!0}]},n.FUNCTION_DISPATCH]},{begin:t.lookahead(/@/),end:`[{;]`,relevance:0,illegal:/:/,contains:[{className:`keyword`,begin:i},{begin:/\s/,endsWithParent:!0,excludeEnd:!0,relevance:0,keywords:{$pattern:/[a-z-]+/,keyword:`and or not only`,attribute:Cn.join(` `)},contains:[{begin:/[a-z-]+(?=:)/,className:`attribute`},...a,n.CSS_NUMBER_MODE]}]},{className:`selector-tag`,begin:`\\b(`+Sn.join(`|`)+`)\\b`}]}}var On=`[A-Za-z$_][0-9A-Za-z$_]*`,kn=`as.in.of.if.for.while.finally.var.new.function.do.return.void.else.break.catch.instanceof.with.throw.case.default.try.switch.continue.typeof.delete.let.yield.const.class.debugger.async.await.static.import.from.export.extends.using`.split(`.`),An=[`true`,`false`,`null`,`undefined`,`NaN`,`Infinity`],jn=`Object.Function.Boolean.Symbol.Math.Date.Number.BigInt.String.RegExp.Array.Float32Array.Float64Array.Int8Array.Uint8Array.Uint8ClampedArray.Int16Array.Int32Array.Uint16Array.Uint32Array.BigInt64Array.BigUint64Array.Set.Map.WeakSet.WeakMap.ArrayBuffer.SharedArrayBuffer.Atomics.DataView.JSON.Promise.Generator.GeneratorFunction.AsyncFunction.Reflect.Proxy.Intl.WebAssembly`.split(`.`),Mn=[`Error`,`EvalError`,`InternalError`,`RangeError`,`ReferenceError`,`SyntaxError`,`TypeError`,`URIError`],Nn=[`setInterval`,`setTimeout`,`clearInterval`,`clearTimeout`,`require`,`exports`,`eval`,`isFinite`,`isNaN`,`parseFloat`,`parseInt`,`decodeURI`,`decodeURIComponent`,`encodeURI`,`encodeURIComponent`,`escape`,`unescape`],Pn=[`arguments`,`this`,`super`,`console`,`window`,`document`,`localStorage`,`sessionStorage`,`module`,`global`],Fn=[].concat(Nn,jn,Mn);function In(e){let t=e.regex,n=(e,{after:t})=>{let n=`</`+e[0].slice(1);return e.input.indexOf(n,t)!==-1},r=On,i={begin:`<>`,end:`</>`},a=/<[A-Za-z0-9\\._:-]+\s*\/>/,o={begin:/<[A-Za-z0-9\\._:-]+/,end:/\/[A-Za-z0-9\\._:-]+>|\/>/,isTrulyOpeningTag:(e,t)=>{let r=e[0].length+e.index,i=e.input[r];if(i===`<`||i===`,`){t.ignoreMatch();return}i===`>`&&(n(e,{after:r})||t.ignoreMatch());let a,o=e.input.substring(r);if(a=o.match(/^\s*=/)){t.ignoreMatch();return}if((a=o.match(/^\s+extends\s+/))&&a.index===0){t.ignoreMatch();return}}},s={$pattern:On,keyword:kn,literal:An,built_in:Fn,"variable.language":Pn},c=`[0-9](_?[0-9])*`,l=`\\.(${c})`,u=`0|[1-9](_?[0-9])*|0[0-7]*[89][0-9]*`,d={className:`number`,variants:[{begin:`(\\b(${u})((${l})|\\.)?|(${l}))[eE][+-]?(${c})\\b`},{begin:`\\b(${u})\\b((${l})\\b|\\.)?|(${l})\\b`},{begin:`\\b(0|[1-9](_?[0-9])*)n\\b`},{begin:`\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*n?\\b`},{begin:`\\b0[bB][0-1](_?[0-1])*n?\\b`},{begin:`\\b0[oO][0-7](_?[0-7])*n?\\b`},{begin:`\\b0[0-7]+n?\\b`}],relevance:0},f={className:`subst`,begin:`\\$\\{`,end:`\\}`,keywords:s,contains:[]},p={begin:".?html`",end:``,starts:{end:"`",returnEnd:!1,contains:[e.BACKSLASH_ESCAPE,f],subLanguage:`xml`}},m={begin:".?css`",end:``,starts:{end:"`",returnEnd:!1,contains:[e.BACKSLASH_ESCAPE,f],subLanguage:`css`}},h={begin:".?gql`",end:``,starts:{end:"`",returnEnd:!1,contains:[e.BACKSLASH_ESCAPE,f],subLanguage:`graphql`}},g={className:`string`,begin:"`",end:"`",contains:[e.BACKSLASH_ESCAPE,f]},_={className:`comment`,variants:[e.COMMENT(/\/\*\*(?!\/)/,`\\*/`,{relevance:0,contains:[{begin:`(?=@[A-Za-z]+)`,relevance:0,contains:[{className:`doctag`,begin:`@[A-Za-z]+`},{className:`type`,begin:`\\{`,end:`\\}`,excludeEnd:!0,excludeBegin:!0,relevance:0},{className:`variable`,begin:r+`(?=\\s*(-)|$)`,endsParent:!0,relevance:0},{begin:/(?=[^\n])\s/,relevance:0}]}]}),e.C_BLOCK_COMMENT_MODE,e.C_LINE_COMMENT_MODE]},v=[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,p,m,h,g,{match:/\$\d+/},d];f.contains=v.concat({begin:/\{/,end:/\}/,keywords:s,contains:[`self`].concat(v)});let y=[].concat(_,f.contains),b=y.concat([{begin:/(\s*)\(/,end:/\)/,keywords:s,contains:[`self`].concat(y)}]),x={className:`params`,begin:/(\s*)\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:s,contains:b},S={variants:[{match:[/class/,/\s+/,r,/\s+/,/extends/,/\s+/,t.concat(r,`(`,t.concat(/\./,r),`)*`)],scope:{1:`keyword`,3:`title.class`,5:`keyword`,7:`title.class.inherited`}},{match:[/class/,/\s+/,r],scope:{1:`keyword`,3:`title.class`}}]},C={relevance:0,match:t.either(/\bJSON/,/\b[A-Z][a-z]+([A-Z][a-z]*|\d)*/,/\b[A-Z]{2,}([A-Z][a-z]+|\d)+([A-Z][a-z]*)*/,/\b[A-Z]{2,}[a-z]+([A-Z][a-z]+|\d)*([A-Z][a-z]*)*/),className:`title.class`,keywords:{_:[...jn,...Mn]}},w={label:`use_strict`,className:`meta`,relevance:10,begin:/^\s*['"]use (strict|asm)['"]/},T={variants:[{match:[/function/,/\s+/,r,/(?=\s*\()/]},{match:[/function/,/\s*(?=\()/]}],className:{1:`keyword`,3:`title.function`},label:`func.def`,contains:[x],illegal:/%/},E={relevance:0,match:/\b[A-Z][A-Z_0-9]+\b/,className:`variable.constant`};function D(e){return t.concat(`(?!`,e.join(`|`),`)`)}let O={match:t.concat(/\b/,D([...Nn,`super`,`import`].map(e=>`${e}\\s*\\(`)),r,t.lookahead(/\s*\(/)),className:`title.function`,relevance:0},k={begin:t.concat(/\./,t.lookahead(t.concat(r,/(?![0-9A-Za-z$_(])/))),end:r,excludeBegin:!0,keywords:`prototype`,className:`property`,relevance:0},A={match:[/get|set/,/\s+/,r,/(?=\()/],className:{1:`keyword`,3:`title.function`},contains:[{begin:/\(\)/},x]},j=`(\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)|`+e.UNDERSCORE_IDENT_RE+`)\\s*=>`,M={match:[/const|var|let/,/\s+/,r,/\s*/,/=\s*/,/(async\s*)?/,t.lookahead(j)],keywords:`async`,className:{1:`keyword`,3:`title.function`},contains:[x]};return{name:`JavaScript`,aliases:[`js`,`jsx`,`mjs`,`cjs`],keywords:s,exports:{PARAMS_CONTAINS:b,CLASS_REFERENCE:C},illegal:/#(?![$_A-z])/,contains:[e.SHEBANG({label:`shebang`,binary:`node`,relevance:5}),w,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,p,m,h,g,_,{match:/\$\d+/},d,C,{scope:`attr`,match:r+t.lookahead(`:`),relevance:0},M,{begin:`(`+e.RE_STARTERS_RE+`|\\b(case|return|throw)\\b)\\s*`,keywords:`return throw case`,relevance:0,contains:[_,e.REGEXP_MODE,{className:`function`,begin:j,returnBegin:!0,end:`\\s*=>`,contains:[{className:`params`,variants:[{begin:e.UNDERSCORE_IDENT_RE,relevance:0},{className:null,begin:/\(\s*\)/,skip:!0},{begin:/(\s*)\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:s,contains:b}]}]},{begin:/,/,relevance:0},{match:/\s+/,relevance:0},{variants:[{begin:i.begin,end:i.end},{match:a},{begin:o.begin,"on:begin":o.isTrulyOpeningTag,end:o.end}],subLanguage:`xml`,contains:[{begin:o.begin,end:o.end,skip:!0,contains:[`self`]}]}]},T,{beginKeywords:`while if switch catch for`},{begin:`\\b(?!function)`+e.UNDERSCORE_IDENT_RE+`\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)\\s*\\{`,returnBegin:!0,label:`func.def`,contains:[x,e.inherit(e.TITLE_MODE,{begin:r,className:`title.function`})]},{match:/\.\.\./,relevance:0},k,{match:`\\$`+r,relevance:0},{match:[/\bconstructor(?=\s*\()/],className:{1:`title.function`},contains:[x]},O,E,S,A,{match:/\$[(.]/}]}}function Ln(e){let t=e.regex,n=In(e),r=On,i=[`any`,`void`,`number`,`boolean`,`string`,`object`,`never`,`symbol`,`bigint`,`unknown`],a={begin:[/namespace/,/\s+/,e.IDENT_RE],beginScope:{1:`keyword`,3:`title.class`}},o={beginKeywords:`interface`,end:/\{/,excludeEnd:!0,keywords:{keyword:`interface extends`,built_in:i},contains:[n.exports.CLASS_REFERENCE]},s={className:`meta`,relevance:10,begin:/^\s*['"]use strict['"]/},c={$pattern:On,keyword:kn.concat([`type`,`interface`,`public`,`private`,`protected`,`implements`,`declare`,`abstract`,`readonly`,`enum`,`override`,`satisfies`]),literal:An,built_in:Fn.concat(i),"variable.language":Pn},l={className:`meta`,begin:`@`+r},u=(e,t,n)=>{let r=e.contains.findIndex(e=>e.label===t);if(r===-1)throw Error(`can not find mode to replace`);e.contains.splice(r,1,n)};Object.assign(n.keywords,c),n.exports.PARAMS_CONTAINS.push(l);let d=n.contains.find(e=>e.scope===`attr`),f=Object.assign({},d,{match:t.concat(r,t.lookahead(/\s*\?:/))});n.exports.PARAMS_CONTAINS.push([n.exports.CLASS_REFERENCE,d,f]),n.contains=n.contains.concat([l,a,o,f]),u(n,`shebang`,e.SHEBANG()),u(n,`use_strict`,s);let p=n.contains.find(e=>e.label===`func.def`);return p.relevance=0,Object.assign(n,{name:`TypeScript`,aliases:[`ts`,`tsx`,`mts`,`cts`]}),n}function Rn(e){let t=e.regex,n=t.concat(/[\p{L}_]/u,t.optional(/[\p{L}0-9_.-]*:/u),/[\p{L}0-9_.-]*/u),r=/[\p{L}0-9._:-]+/u,i={className:`symbol`,begin:/&[a-z]+;|&#[0-9]+;|&#x[a-f0-9]+;/},a={begin:/\s/,contains:[{className:`keyword`,begin:/#?[a-z_][a-z1-9_-]+/,illegal:/\n/}]},o=e.inherit(a,{begin:/\(/,end:/\)/}),s=e.inherit(e.APOS_STRING_MODE,{className:`string`}),c=e.inherit(e.QUOTE_STRING_MODE,{className:`string`}),l={endsWithParent:!0,illegal:/</,relevance:0,contains:[{className:`attr`,begin:r,relevance:0},{begin:/=\s*/,relevance:0,contains:[{className:`string`,endsParent:!0,variants:[{begin:/"/,end:/"/,contains:[i]},{begin:/'/,end:/'/,contains:[i]},{begin:/[^\s"'=<>`]+/}]}]}]};return{name:`HTML, XML`,aliases:[`html`,`xhtml`,`rss`,`atom`,`xjb`,`xsd`,`xsl`,`plist`,`wsf`,`svg`],case_insensitive:!0,unicodeRegex:!0,contains:[{className:`meta`,begin:/<![a-z]/,end:/>/,relevance:10,contains:[a,c,s,o,{begin:/\[/,end:/\]/,contains:[{className:`meta`,begin:/<![a-z]/,end:/>/,contains:[a,o,c,s]}]}]},e.COMMENT(/<!--/,/-->/,{relevance:10}),{begin:/<!\[CDATA\[/,end:/\]\]>/,relevance:10},i,{className:`meta`,end:/\?>/,variants:[{begin:/<\?xml/,relevance:10,contains:[c]},{begin:/<\?[a-z][a-z0-9]+/}]},{className:`tag`,begin:/<style(?=\s|>)/,end:/>/,keywords:{name:`style`},contains:[l],starts:{end:/<\/style>/,returnEnd:!0,subLanguage:[`css`,`xml`]}},{className:`tag`,begin:/<script(?=\s|>)/,end:/>/,keywords:{name:`script`},contains:[l],starts:{end:/<\/script>/,returnEnd:!0,subLanguage:[`javascript`,`handlebars`,`xml`]}},{className:`tag`,begin:/<>|<\/>/},{className:`tag`,begin:t.concat(/</,t.lookahead(t.concat(n,t.either(/\/>/,/>/,/\s/)))),end:/\/?>/,contains:[{className:`name`,begin:n,relevance:0,starts:l}]},{className:`tag`,begin:t.concat(/<\//,t.lookahead(t.concat(n,/>/))),contains:[{className:`name`,begin:n,relevance:0},{begin:/>/,relevance:0,endsParent:!0}]}]}}var zn=document.createElement(`style`);zn.innerText=[_n,gn].join(`
|
|
435
|
-
`),document.head.appendChild(zn),vn.registerLanguage(`typescript`,Ln),vn.registerLanguage(`html`,Rn),vn.registerLanguage(`css`,Dn);function Bn(...e){let t=document.createElement(`div`),n=document.createElement(`div`);n.classList.add(`tab-control`);let r=document.createElement(`div`);return e.forEach(n=>{t.appendChild(n),n.addEventListener(`click`,()=>{e.forEach(e=>e.removeAttribute(`selected`)),n.setAttribute(`selected`,``),r.innerHTML=``,r.appendChild(n.content),r.className=n.className,r.classList.add(`tab-content`)})}),n.appendChild(t),n.appendChild(r),r.classList.add(`tab-content`),e[0].setAttribute(`selected`,``),r.appendChild(e[0].content),n}function Vn(e,t){let n=document.createElement(`div`);return n.role=`tab`,n.tabIndex=0,n.innerText=e,n.content=t,t.tagName==`PRE`&&n.classList.add(`code`),n}function Hn(e,t){let n=document.createElement(`template`);if(typeof t==`string`)return n.innerHTML=`<${e}>${t}</${e}>`,n.content.firstElementChild;{n.innerHTML=`<${e}></${e}>`;let r=n.content.firstElementChild;return t.forEach(e=>r.appendChild(e)),r}}async function Un(e,t,n){let r=t.mainContent,i=
|
|
438
|
+
`),document.head.appendChild(zn),vn.registerLanguage(`typescript`,Ln),vn.registerLanguage(`html`,Rn),vn.registerLanguage(`css`,Dn);function Bn(...e){let t=document.createElement(`div`),n=document.createElement(`div`);n.classList.add(`tab-control`);let r=document.createElement(`div`);return e.forEach(n=>{t.appendChild(n),n.addEventListener(`click`,()=>{e.forEach(e=>e.removeAttribute(`selected`)),n.setAttribute(`selected`,``),r.innerHTML=``,r.appendChild(n.content),r.className=n.className,r.classList.add(`tab-content`)})}),n.appendChild(t),n.appendChild(r),r.classList.add(`tab-content`),e[0].setAttribute(`selected`,``),r.appendChild(e[0].content),n}function Vn(e,t){let n=document.createElement(`div`);return n.role=`tab`,n.tabIndex=0,n.innerText=e,n.content=t,t.tagName==`PRE`&&n.classList.add(`code`),n}function Hn(e,t){let n=document.createElement(`template`);if(typeof t==`string`)return n.innerHTML=`<${e}>${t}</${e}>`,n.content.firstElementChild;{n.innerHTML=`<${e}></${e}>`;let r=n.content.firstElementChild;return t.forEach(e=>r.appendChild(e)),r}}async function Un(e,t,n){let r=t.mainContent,i=typeof t.css==`string`?void 0:t.css?.label,a=typeof t.css==`string`?t.css:t.css?.content,o=`example-preview-${n}`,s;if(t.isolateMainContent){s=document.createElement(`div`);let e=s.attachShadow({mode:`open`});if(e.innerHTML=r,a){let t=new CSSStyleSheet;t.replaceSync(a),e.adoptedStyleSheets=[t]}}else s=Hn(`div`,r),a&&Gn(`#${o}`,a);s.id=o;let c=Bn(Vn(`Preview`,s),...r?[Vn(`HTML`,Wn(`html`,r))]:[],...a?[Vn(i??`CSS`,Wn(`css`,a))]:[],...t.initializer&&t.initializer.content?[Vn(t.initializer.label??`TS`,Wn(`typescript`,t.initializer.content))]:[],...(t.additionalSources||[]).map(e=>Vn(e.label,Wn(e.language,e.content))));t.description&&e.appendChild(Hn(`div`,t.description));let l=Hn(`div`,[c]);l.classList.add(`example`),e.appendChild(l),t.initializer?.initialize&&await t.initializer.initialize(s)}function Wn(e,t){let n=t.split(/\r?\n/).map(e=>{let t=e.indexOf(`///`);if(t>-1){let n=e.substring(t+3).trimStart();return n?e.replace(/^(\s*)([^\s].*)$/,`$1${n}`):void 0}return e}).filter(e=>e!==void 0).join(`
|
|
436
439
|
`).trim();return e&&e!=`raw`&&(n=vn.highlight(n,{language:e}).value),Hn(`pre`,[Hn(`code`,n)])}function Gn(e,t){let n=document.createElement(`style`);n.innerHTML=an().use((0,on.default)({prefix:e})).process(t).css,document.head.appendChild(n)}async function Kn(e,t=document.body){let n=Jn(t),r=0;return Object.keys(e).sort().map(async t=>{let i=document.createElement(`div`);i.className=`example-container`,n.appendChild(i);let a=e[t].default;await Un(i,a,r++)})}function qn(e){let t=document.createElement(`div`);t.id=`examples-container`;let n=e.querySelector(`#examples`);return n?n.after(t):e.appendChild(t),t}function Jn(e){return e.children?qn(e):e}var Yn=`<h1 id="@cas-smartdesign/virtual-list">@cas-smartdesign/virtual-list</h1>
|
|
437
440
|
<p>A list element with ui-virtualization and infinite scrolling.</p>
|
|
441
|
+
<p>This element must be used together with the design tokens of SmartDesign.
|
|
442
|
+
For an independent application, make sure to include the @cas-smartdesign/design-tokens package.
|
|
443
|
+
For a web app / web widget, refer to the official documentation about design token usage.</p>
|
|
438
444
|
<h2 id="attributes">Attributes</h2>
|
|
439
445
|
<ul>
|
|
440
446
|
<li><code>item-height</code><ul>
|
|
441
|
-
<li>Defines the height in px of the list items.</li>
|
|
447
|
+
<li>Defines the height in px of the list items. Defaults to 48.</li>
|
|
442
448
|
</ul>
|
|
443
449
|
</li>
|
|
444
450
|
<li><code>item-count</code><ul>
|
|
@@ -454,8 +460,12 @@ https://github.com/highlightjs/highlight.js/issues/2277`),i=e,r=t),n===void 0&&(
|
|
|
454
460
|
<li>Defines the index of currently focused item</li>
|
|
455
461
|
</ul>
|
|
456
462
|
</li>
|
|
463
|
+
<li><code>focus-target</code><ul>
|
|
464
|
+
<li>When present, the item at <code>focus-index</code> is kept marked as <code>focused</code> even while the list itself does not have DOM focus.</li>
|
|
465
|
+
</ul>
|
|
466
|
+
</li>
|
|
457
467
|
<li><code>role</code>: string<ul>
|
|
458
|
-
<li>Aria attribute, default value is "
|
|
468
|
+
<li>Aria attribute, default value is "listbox"</li>
|
|
459
469
|
</ul>
|
|
460
470
|
</li>
|
|
461
471
|
</ul>
|
|
@@ -470,7 +480,7 @@ https://github.com/highlightjs/highlight.js/issues/2277`),i=e,r=t),n===void 0&&(
|
|
|
470
480
|
<li>A method that renders the list items.</li>
|
|
471
481
|
</ul>
|
|
472
482
|
</li>
|
|
473
|
-
<li><code>itemHeight</code> <strong><em>number (default=
|
|
483
|
+
<li><code>itemHeight</code> <strong><em>number (default=48)</em></strong><ul>
|
|
474
484
|
<li>Reflects the corresponding attribute</li>
|
|
475
485
|
</ul>
|
|
476
486
|
</li>
|
|
@@ -482,23 +492,27 @@ https://github.com/highlightjs/highlight.js/issues/2277`),i=e,r=t),n===void 0&&(
|
|
|
482
492
|
<li>Reflects the corresponding attribute</li>
|
|
483
493
|
</ul>
|
|
484
494
|
</li>
|
|
485
|
-
<li><code>focusIndex</code> <strong><em>number (default
|
|
486
|
-
<li>Reflects the corresponding attribute</li>
|
|
495
|
+
<li><code>focusIndex</code> <strong><em>number (default=-1)</em></strong><ul>
|
|
496
|
+
<li>Reflects the corresponding attribute. <code>-1</code> means no item is focused.</li>
|
|
487
497
|
</ul>
|
|
488
498
|
</li>
|
|
489
499
|
<li><code>selectedIndices</code> <strong><em>number[] (default=empty)</em></strong><ul>
|
|
490
500
|
<li>Contains the indices of the selected items.</li>
|
|
491
501
|
</ul>
|
|
492
502
|
</li>
|
|
503
|
+
<li><code>focusTarget</code> <strong><em>boolean (default=false)</em></strong><ul>
|
|
504
|
+
<li>Reflects the <code>focus-target</code> attribute. Keeps the focused item marked even while the list does not have DOM focus.</li>
|
|
493
505
|
</ul>
|
|
494
|
-
|
|
495
|
-
<ul>
|
|
496
|
-
<li
|
|
497
|
-
<li>Defines the focus highlight color for list items, defaults to #1467ba</li>
|
|
506
|
+
</li>
|
|
507
|
+
<li><code>finalSizeIsKnown</code> <strong><em>boolean (default=undefined)</em></strong><ul>
|
|
508
|
+
<li>Indicates whether the total number of items is final. While false/undefined the list is in infinite-scrolling state and items report <code>aria-setsize="-1"</code>.</li>
|
|
498
509
|
</ul>
|
|
499
510
|
</li>
|
|
500
|
-
|
|
501
|
-
<
|
|
511
|
+
</ul>
|
|
512
|
+
<h2 id="css-custom-properties">CSS Custom Properties</h2>
|
|
513
|
+
<ul>
|
|
514
|
+
<li><code>--sd-virtual-list-background-color</code><ul>
|
|
515
|
+
<li>Defines the background color of the list (default is the <code>--color-bg-default</code> token, <code>#ffffff</code>)</li>
|
|
502
516
|
</ul>
|
|
503
517
|
</li>
|
|
504
518
|
</ul>
|
|
@@ -524,7 +538,8 @@ https://github.com/highlightjs/highlight.js/issues/2277`),i=e,r=t),n===void 0&&(
|
|
|
524
538
|
</ul>
|
|
525
539
|
</li>
|
|
526
540
|
<li><code>scrollToItem</code><ul>
|
|
527
|
-
<li>Scrolls the list to the item with the given index
|
|
541
|
+
<li>Scrolls the list to the item with the given index.</li>
|
|
542
|
+
<li>Accepts an optional alignment argument: <code>"auto"</code> (default), <code>"start"</code>, <code>"center"</code>, or <code>"end"</code>. A small padding is kept between the item and the viewport edge so the item's focus ring stays visible.</li>
|
|
528
543
|
</ul>
|
|
529
544
|
</li>
|
|
530
545
|
<li><code>increaseWidthOnNextRenderIfNeeded</code><ul>
|
package/dist/docs/index.html
CHANGED
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
<meta charset="UTF-8" />
|
|
5
5
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
6
6
|
<meta http-equiv="X-UA-Compatible" content="ie=edge" />
|
|
7
|
+
<link rel="stylesheet" href="https://rsms.me/inter/inter.css" />
|
|
7
8
|
<title>Virtual list</title>
|
|
8
9
|
<style>
|
|
9
10
|
.markdown-body {
|
|
@@ -17,6 +18,13 @@
|
|
|
17
18
|
#markdown-container img {
|
|
18
19
|
background-color: transparent;
|
|
19
20
|
}
|
|
21
|
+
.list-wrapper {
|
|
22
|
+
background-color: var(--color-bg-weak, #f1f1f1);
|
|
23
|
+
padding: var(--spacing-x8, 16px);
|
|
24
|
+
}
|
|
25
|
+
sd-virtual-list {
|
|
26
|
+
border-radius: var(--radius-s, 4px);
|
|
27
|
+
}
|
|
20
28
|
</style>
|
|
21
29
|
<script type="module" crossorigin src="./doc.mjs"></script>
|
|
22
30
|
<link rel="stylesheet" crossorigin href="./doc.css">
|
package/dist/list-util.d.ts
CHANGED
|
@@ -4,6 +4,11 @@ export interface IListUtil {
|
|
|
4
4
|
debounce(func: (...args: any) => void): () => void;
|
|
5
5
|
}
|
|
6
6
|
declare class ListUtil implements IListUtil {
|
|
7
|
+
/**
|
|
8
|
+
* Padding kept between a scrolled-to item and the viewport edge so the item's focus ring
|
|
9
|
+
* stays visible. Must be kept in sync with `--list-item-focus-ring-width` in style.scss.
|
|
10
|
+
*/
|
|
11
|
+
private static readonly FOCUS_RING_WIDTH;
|
|
7
12
|
getOffsetForIndexAndAlignment(index: number, alignment: ScrollToAlignment, scrollOffset: number, itemHeight: number, height: number, itemCount: number): number;
|
|
8
13
|
debounce(func: (...args: any) => void): (...args: unknown[]) => void;
|
|
9
14
|
}
|
package/dist/list-util.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list-util.d.ts","sourceRoot":"","sources":["../list-util.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG,QAAQ,GAAG,OAAO,GAAG,KAAK,CAAC;AAEpE,MAAM,WAAW,SAAS;IACtB,6BAA6B,CACzB,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,iBAAiB,EAC5B,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,GAClB,MAAM,CAAC;IAEV,QAAQ,CAAC,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,KAAK,IAAI,GAAG,MAAM,IAAI,CAAC;CACtD;AAED,cAAM,QAAS,YAAW,SAAS;
|
|
1
|
+
{"version":3,"file":"list-util.d.ts","sourceRoot":"","sources":["../list-util.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG,QAAQ,GAAG,OAAO,GAAG,KAAK,CAAC;AAEpE,MAAM,WAAW,SAAS;IACtB,6BAA6B,CACzB,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,iBAAiB,EAC5B,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,GAClB,MAAM,CAAC;IAEV,QAAQ,CAAC,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,KAAK,IAAI,GAAG,MAAM,IAAI,CAAC;CACtD;AAED,cAAM,QAAS,YAAW,SAAS;IAC/B;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,gBAAgB,CAAK;IAEtC,6BAA6B,CAChC,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,iBAAiB,EAC5B,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,GAClB,MAAM;IAqCF,QAAQ,CAAC,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,KAAK,IAAI,GAAG,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI;CAY9E;;AAED,wBAA8B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"virtual-list.d.ts","sourceRoot":"","sources":["../virtual-list.ts"],"names":[],"mappings":"AAAA,OAAiB,EAAa,KAAK,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAChF,OAAO,EAAE,UAAU,EAAE,KAAK,cAAc,EAAmB,KAAK,cAAc,EAAO,MAAM,KAAK,CAAC;AAGjG,OAAiB,EAAE,KAAK,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAC/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAEnD,OAAO,CAAC,MAAM,CAAC;IACX,UAAU,qBAAqB;QAC3B,CAAC,WAAW,CAAC,EAAE,CAAC,EAAE,WAAW,CAAC;KACjC;IACD,UAAU,mBAAmB;QACzB,8BAA8B,EAAE,WAAW,CAAC,iBAAiB,CAAC,CAAC;QAC/D,2BAA2B,EAAE,WAAW,CAAC,eAAe,CAAC,CAAC;KAC7D;CACJ;AAID,MAAM,MAAM,aAAa,GAAG,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,KAAK,WAAW,CAAC;AAC5E,oBAAY,aAAa;IACrB,WAAW,iBAAiB;IAC5B,MAAM,WAAW;IACjB,KAAK,UAAU;CAClB;AAYD,MAAM,WAAW,iBAAiB;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,eAAe;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,OAAO,CAAC;IAClB,aAAa,EAAE,KAAK,CAAC;CACxB;AAED,MAAM,CAAC,OAAO,OAAO,WAAY,SAAQ,UAAU;IAC/C,gBAAuB,EAAE,qBAAqB;IAC9C,OAAc,aAAa,QAAO,IAAI,CAKpC;IAGK,UAAU,EAAE,MAAM,CAAM;IAExB,SAAS,EAAE,MAAM,CAAK;IAEtB,KAAK,EAAE,OAAO,EAAE,CAAM;IAEtB,aAAa,EAAE,aAAa,CAA6B;IAEhD,EAAE,EAAE,MAAM,CAAsC;IAIhD,IAAI,SAAa;IAE1B,aAAa,EAAE,aAAa,CAAa;IACzC,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAElC,OAAO,CAAC,mBAAmB,CAAK;IAChC,OAAO,CAAC,sBAAsB,CAAK;IAEnC,OAAO,CAAC,gBAAgB,CAAwB;IAChD,OAAO,CAAC,aAAa,CAAuC;IAE5D,OAAO,CAAC,kBAAkB,CAAc;IACxC,OAAO,CAAC,iBAAiB,CAAc;IACvC,OAAO,CAAC,gBAAgB,CAAK;IAE7B,OAAO,CAAC,gBAAgB,CAAgB;IACxC,OAAO,CAAC,WAAW,CAAM;IACzB,OAAO,CAAC,eAAe,CAAiB;IACxC,OAAO,CAAC,gBAAgB,CAAK;IAC7B,OAAO,CAAC,kCAAkC,CAAC,CAAU;IACrD,OAAO,CAAC,gBAAgB,CAAC,CAAU;IAEnC,IAAW,WAAW,IAAI,OAAO,CAEhC;IAED,IAAW,WAAW,CAAC,KAAK,EAAE,OAAO,EAEpC;IAED,IACW,UAAU,IAAI,MAAM,CAE9B;IAED,IAAW,UAAU,CAAC,KAAK,EAAE,MAAM,EAclC;IAED,IACW,eAAe,IAAI,MAAM,EAAE,CAErC;IAED,IAAW,eAAe,CAAC,eAAe,EAAE,MAAM,EAAE,EAQnD;IAEM,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,GAAE,iBAA0B,GAAG,IAAI;IAcxE,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI;;IAiBrC,iBAAiB,IAAI,IAAI;IAazB,oBAAoB,IAAI,IAAI;IAK5B,YAAY,CAAC,kBAAkB,EAAE,cAAc,GAAG,IAAI;IAoCtE,OAAO,CAAC,2BAA2B;IAanC,WAAoB,MAAM,8BAMzB;IACe,MAAM,IAAI,cAAc;
|
|
1
|
+
{"version":3,"file":"virtual-list.d.ts","sourceRoot":"","sources":["../virtual-list.ts"],"names":[],"mappings":"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"}
|
package/dist/virtual-list.mjs
CHANGED
|
@@ -1,17 +1,20 @@
|
|
|
1
1
|
import e, { generator as t } from "@cas-smartdesign/list-item";
|
|
2
2
|
import { LitElement as n, css as r, html as i, unsafeCSS as a } from "lit";
|
|
3
3
|
import { property as o } from "lit/decorators/property.js";
|
|
4
|
-
var s = new class {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
4
|
+
var s = new class e {
|
|
5
|
+
static {
|
|
6
|
+
this.FOCUS_RING_WIDTH = 3;
|
|
7
|
+
}
|
|
8
|
+
getOffsetForIndexAndAlignment(t, n, r, i, a, o) {
|
|
9
|
+
let s = e.FOCUS_RING_WIDTH, c = Math.max(0, o * i), l = t * i + s, u = Math.min(c, l), d = Math.max(0, l - a + i), f = Math.max(0, u - s), p = Math.min(c, d + s);
|
|
10
|
+
switch (n) {
|
|
11
|
+
case "start": return f;
|
|
12
|
+
case "end": return p;
|
|
10
13
|
case "center": {
|
|
11
|
-
let e = Math.round(
|
|
12
|
-
return e < Math.ceil(
|
|
14
|
+
let e = Math.round(d + (u - d) / 2);
|
|
15
|
+
return e < Math.ceil(a / 2) ? 0 : e > c + Math.floor(a / 2) ? c : e;
|
|
13
16
|
}
|
|
14
|
-
default: return
|
|
17
|
+
default: return r >= p && r <= f ? r : r < p ? p : f;
|
|
15
18
|
}
|
|
16
19
|
}
|
|
17
20
|
debounce(e) {
|
|
@@ -80,7 +83,7 @@ var u = class {
|
|
|
80
83
|
if (!this._pendingDataRequest) if (this.onDataRequest) this._pendingDataRequest = !0, this.onDataRequest(this.currentPage + 1), this._lastLoadedIndex += this.pageSize - 1, this._lastLoadedIndex > this.itemCount && (this.itemCount = this._lastLoadedIndex);
|
|
81
84
|
else throw Error("The final size is not yet known and the list would require item data from index " + this._lastRequestedFirstIndex + ". to " + this._lastRequestedLastIndex + ". which is not possible to load without a configured onDataRequest");
|
|
82
85
|
}
|
|
83
|
-
}, d = ":host{contain:layout;--
|
|
86
|
+
}, d = ":host{contain:layout;--list-item-focus-ring-width:3px;scroll-padding:var(--list-item-focus-ring-width);display:block;position:relative;overflow:hidden auto}:host(:focus){outline:none}:host(:focus-visible) ::slotted([focused]){--sd-list-item-focus-ring-offset-color:var(--color-bg-default,#fff);--sd-list-item-focus-ring-color:var(--color-border-interaction-focus,#111);border-color:var(--color-rainbow-mono-weak,#fff);z-index:1}.scroll-container{padding:var(--list-item-focus-ring-width);background:linear-gradient(var(--sd-virtual-list-background-color,var(--color-bg-default,#fff)), var(--sd-virtual-list-background-color,var(--color-bg-default,#fff))) no-repeat right center/var(--list-item-focus-ring-width) calc(100% - 2 * var(--list-item-focus-ring-width));display:block}.container{background-color:var(--sd-virtual-list-background-color,var(--color-bg-default,#fff));width:100%;position:relative}.container>::slotted(*){box-sizing:border-box;width:100%;position:absolute}.container>::slotted(sd-list-item:not([last])){--sd-list-item-bottom-border-color:var(--color-border-weak,#ededed);border-bottom-color:var(--sd-list-item-bottom-border-color)}.container>::slotted(sd-list-item:is(:hover,[focused],:not([aria-disabled=true]):active,[selected])){--sd-list-item-bottom-border-color:var(--color-rainbow-mono-weak,#fff)}.container>::slotted(sd-list-item[selected]){border-left-color:var(--color-rainbow-mono-weak,#fff);border-right-color:var(--color-rainbow-mono-weak,#fff)}.container>::slotted(:not(:is(sd-list-item,[last]))){border-bottom:1px solid var(--color-border-weak,#ededed)}", f, p = /* @__PURE__ */ function(e) {
|
|
84
87
|
return e.TriggerOnly = "trigger-only", e.Single = "single", e.Multi = "multi", e;
|
|
85
88
|
}({}), m = 0, h = class o extends n {
|
|
86
89
|
static {
|
|
@@ -119,7 +122,7 @@ var u = class {
|
|
|
119
122
|
return !this.shadowRoot || e < this._firstVisibleIndex || this._lastVisibleIndex < e ? null : this.querySelector(`[item-index="${e}"]`);
|
|
120
123
|
}
|
|
121
124
|
constructor() {
|
|
122
|
-
super(), this.itemHeight =
|
|
125
|
+
super(), this.itemHeight = 48, this.itemCount = 0, this.items = [], this.selectionType = p.TriggerOnly, this.id = o.ID + "_" + m++, this.role = "listbox", this.itemGenerator = t, this._lastKnownScrollTop = 0, this._lastRenderedScrollTop = 0, this._itemsRenderData = [], this._elementCache = /* @__PURE__ */ new Map(), this._firstVisibleIndex = -1, this._lastVisibleIndex = -1, this._visibleItemsNum = 0, this._selectedIndices = [], this._focusIndex = -1, this._lastKnownHeight = 0, this.onScroll = () => {
|
|
123
126
|
this._lastKnownScrollTop = this.scrollTop;
|
|
124
127
|
let e = this._lastRenderedScrollTop - this._lastKnownScrollTop;
|
|
125
128
|
Math.abs(e) >= this.itemHeight && (this._lastRenderedScrollTop = this._lastKnownScrollTop, this.requestUpdate());
|
|
@@ -193,8 +196,10 @@ var u = class {
|
|
|
193
196
|
}
|
|
194
197
|
render() {
|
|
195
198
|
return this.updateItemsRenderData(), i`
|
|
196
|
-
<div class="container"
|
|
197
|
-
<
|
|
199
|
+
<div class="scroll-container">
|
|
200
|
+
<div class="container" style="height: ${this.itemCount * this.itemHeight}px">
|
|
201
|
+
<slot name="items"></slot>
|
|
202
|
+
</div>
|
|
198
203
|
</div>
|
|
199
204
|
`;
|
|
200
205
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"virtual-list.mjs","names":[],"sources":["../list-util.ts","../data-provider.ts","../style.scss?inline","../virtual-list.ts"],"sourcesContent":["export type ScrollToAlignment = \"auto\" | \"center\" | \"start\" | \"end\";\n\nexport interface IListUtil {\n getOffsetForIndexAndAlignment(\n index: number,\n alignment: ScrollToAlignment,\n scrollOffset: number,\n itemHeight: number,\n height: number,\n itemCount: number,\n ): number;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n debounce(func: (...args: any) => void): () => void;\n}\n\nclass ListUtil implements IListUtil {\n public getOffsetForIndexAndAlignment(\n index: number,\n alignment: ScrollToAlignment,\n scrollOffset: number,\n itemHeight: number,\n height: number,\n itemCount: number,\n ): number {\n const lastItemOffset = Math.max(0, itemCount * itemHeight);\n const maxOffset = Math.min(lastItemOffset, index * itemHeight);\n const minOffset = Math.max(0, index * itemHeight - height + itemHeight);\n\n switch (alignment) {\n case \"start\":\n return maxOffset;\n case \"end\":\n return minOffset;\n case \"center\": {\n const middleOffset = Math.round(minOffset + (maxOffset - minOffset) / 2);\n if (middleOffset < Math.ceil(height / 2)) {\n return 0;\n } else if (middleOffset > lastItemOffset + Math.floor(height / 2)) {\n return lastItemOffset;\n } else {\n return middleOffset;\n }\n }\n case \"auto\":\n default:\n if (scrollOffset >= minOffset && scrollOffset <= maxOffset) {\n return scrollOffset;\n } else if (scrollOffset < minOffset) {\n return minOffset;\n } else {\n return maxOffset;\n }\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public debounce(func: (...args: any) => void): (...args: unknown[]) => void {\n let timer: number | null;\n return (...args: unknown[]) => {\n if (timer) {\n window.cancelAnimationFrame(timer);\n }\n timer = window.requestAnimationFrame(() => {\n func(...args);\n timer = null;\n });\n };\n }\n}\n\nexport default new ListUtil();\n","import VirtualList from \"./virtual-list\";\n\nexport class ListDataProvider {\n public onDataRequest?: (page: number) => void;\n\n private _finalSizeIsKnown = false;\n private _itemCache: unknown[] = [];\n private _lastRequestedFirstIndex = 0;\n private _lastRequestedLastIndex = 0;\n private _lastLoadedIndex = 0;\n private _list?: VirtualList;\n private _itemCount: number;\n private _pendingDataRequest: boolean = false;\n\n constructor(\n public pageSize: number = 100,\n public preloadedItemsCount: number = 5,\n ) {\n this._itemCount = pageSize; // configure initial load\n }\n\n public get currentPage(): number {\n if (this.items.length == 0 && this.finalSizeIsKnown) {\n return 0; // Otherwise empty cache means we haven't fetched anything\n }\n // With pageSize 100\n // 0 => -1\n // 1 100 => 0\n // 101 200 => 1\n return Math.floor((this.items.length - 1) / this.pageSize);\n }\n\n public get finalSizeIsKnown(): boolean {\n return this._finalSizeIsKnown;\n }\n\n public set finalSizeIsKnown(value: boolean) {\n this._finalSizeIsKnown = value;\n if (value) {\n this.itemCount = this._itemCache.length;\n }\n if (this._list) {\n this._list.finalSizeIsKnown = value;\n }\n }\n\n private get itemCount(): number {\n return this._itemCount;\n }\n\n private set itemCount(count: number) {\n this._itemCount = count;\n if (this._list) {\n this._list.itemCount = count;\n }\n }\n\n public get items(): unknown[] {\n return this._itemCache;\n }\n\n public set items(items: unknown[]) {\n this._itemCache = items;\n this.onItemsChange();\n }\n\n public addItems(items: unknown[]): void {\n this._itemCache = this._itemCache.concat(items);\n this.onItemsChange();\n }\n\n public connectList(list: VirtualList): void {\n if (this._list) {\n this._list.removeEventListener(\"sd-virtual-list-data-request\", this.handleListDataRequest);\n }\n this._list = list;\n list.itemCount = this.itemCount;\n list.addEventListener(\"sd-virtual-list-data-request\", this.handleListDataRequest);\n list.finalSizeIsKnown = this._finalSizeIsKnown;\n }\n\n private onItemsChange(): void {\n this._pendingDataRequest = false;\n this._lastLoadedIndex = this._itemCache.length - 1;\n if (this.finalSizeIsKnown) {\n this.itemCount = this._itemCache.length;\n } else if (this._lastLoadedIndex > this.itemCount) {\n this.itemCount = this._lastLoadedIndex;\n }\n if (this._list) {\n this._list.items = this._itemCache.slice(this._lastRequestedFirstIndex, this._lastRequestedLastIndex + 1);\n }\n }\n\n private handleListDataRequest = (event: CustomEvent) => {\n if (this._list == null) {\n return;\n }\n const { startIndex, stopIndex } = event.detail;\n this._lastRequestedFirstIndex = startIndex;\n this._lastRequestedLastIndex = stopIndex;\n this._list.items = this._itemCache.slice(startIndex, stopIndex + 1);\n\n if (!this.finalSizeIsKnown && this._lastLoadedIndex < stopIndex + this.preloadedItemsCount) {\n this.requestData();\n }\n };\n\n private requestData(): void {\n if (this._pendingDataRequest) {\n return;\n }\n if (this.onDataRequest) {\n this._pendingDataRequest = true;\n this.onDataRequest(this.currentPage + 1);\n this._lastLoadedIndex += this.pageSize - 1;\n if (this._lastLoadedIndex > this.itemCount) {\n this.itemCount = this._lastLoadedIndex;\n }\n } else {\n throw Error(\n \"The final size is not yet known and the list would require item data from index \" +\n this._lastRequestedFirstIndex +\n \". to \" +\n this._lastRequestedLastIndex +\n \". which is not possible to load without a configured onDataRequest\",\n );\n }\n }\n}\n",":host {\n\tdisplay: block;\n\tposition: relative;\n\tcontain: layout;\n\t--sd-virtual-list-focus-highlight-color: #1467ba;\n\t--sd-virtual-list-item-separator-color: #d9d9d9;\n}\n\n:host(:focus) {\n\toutline: none;\n}\n\n:host(:focus-visible) ::slotted([focused]) {\n\tbox-shadow: 0 0 0 1px var(--sd-virtual-list-focus-highlight-color) inset;\n}\n\n.container {\n\twidth: 100%;\n}\n\n.container > ::slotted(*) {\n\twidth: 100%;\n\tposition: absolute;\n\tbox-sizing: border-box;\n}\n\n.container > ::slotted(:not([last])) {\n\tborder-bottom: 1px solid var(--sd-virtual-list-item-separator-color);\n}\n","import ListItem, { generator, type ItemData } from \"@cas-smartdesign/list-item\";\nimport { LitElement, type TemplateResult, html, unsafeCSS, type PropertyValues, css } from \"lit\";\nimport { property } from \"lit/decorators/property.js\";\n\nimport ListUtil, { type ScrollToAlignment } from \"./list-util\";\nexport { ListDataProvider } from \"./data-provider\";\n\ndeclare global {\n interface HTMLElementTagNameMap {\n [VirtualList.ID]: VirtualList;\n }\n interface HTMLElementEventMap {\n \"sd-virtual-list-data-request\": CustomEvent<IDataRequestEvent>;\n \"sd-virtual-list-selection\": CustomEvent<ISelectionEvent>;\n }\n}\n\nimport style from \"./style.scss?inline\";\n\nexport type ItemGenerator = (data: ItemData, _index: number) => HTMLElement;\nexport enum SelectionType {\n TriggerOnly = \"trigger-only\",\n Single = \"single\",\n Multi = \"multi\",\n}\n\ninterface ItemRenderData {\n index: number;\n top: number;\n physicalIndex: number;\n dataHash: string;\n data?: unknown;\n}\n\nlet idCounter = 0;\n\nexport interface IDataRequestEvent {\n startIndex: number;\n stopIndex: number;\n}\n\nexport interface ISelectionEvent {\n index: number;\n selected: boolean;\n originalEvent: Event;\n}\n\nexport default class VirtualList extends LitElement {\n public static readonly ID = \"sd-virtual-list\";\n public static ensureDefined = (): void => {\n ListItem.ensureDefined();\n if (!customElements.get(VirtualList.ID)) {\n customElements.define(VirtualList.ID, VirtualList);\n }\n };\n\n @property({ type: Number, attribute: \"item-height\", reflect: true })\n public itemHeight: number = 50;\n @property({ type: Number })\n public itemCount: number = 0;\n @property({ type: Array, attribute: false })\n public items: unknown[] = [];\n @property({ type: String, attribute: \"selection-type\", reflect: true, noAccessor: true })\n public selectionType: SelectionType = SelectionType.TriggerOnly;\n @property({ type: String, attribute: true, reflect: true })\n public override id: string = VirtualList.ID + \"_\" + idCounter++;\n\n // aria attributes\n @property({ type: String, reflect: true })\n public override role = \"listbox\";\n\n public itemGenerator: ItemGenerator = generator;\n public finalSizeIsKnown?: boolean;\n\n private _lastKnownScrollTop = 0;\n private _lastRenderedScrollTop = 0;\n\n private _itemsRenderData: ItemRenderData[] = [];\n private _elementCache: Map<string, HTMLElement> = new Map();\n\n private _firstVisibleIndex: number = -1;\n private _lastVisibleIndex: number = -1;\n private _visibleItemsNum = 0;\n\n private _selectedIndices: number[] = [];\n private _focusIndex = -1;\n private _resizeObserver: ResizeObserver;\n private _lastKnownHeight = 0;\n private _increaseWidthOnNextRenderIfNeeded?: boolean;\n private _reachedMaxWidth?: boolean;\n\n public get focusTarget(): boolean {\n return this.hasAttribute(\"focus-target\");\n }\n\n public set focusTarget(value: boolean) {\n this.toggleAttribute(\"focus-target\", value);\n }\n\n @property({ type: Number, attribute: \"focus-index\", reflect: true })\n public get focusIndex(): number {\n return this._focusIndex;\n }\n\n public set focusIndex(index: number) {\n if (index >= -1 && index < this.itemCount) {\n const oldValue = this._focusIndex;\n this._focusIndex = index;\n if (index <= this._firstVisibleIndex || this._lastVisibleIndex <= index) {\n this.scrollToItem(index);\n }\n if (oldValue != index) {\n if (index == -1) {\n this.removeAttribute(\"aria-activedescendant\");\n }\n this.requestUpdate(\"focusIndex\", oldValue);\n }\n }\n }\n\n @property({ type: Array, attribute: false })\n public get selectedIndices(): number[] {\n return this._selectedIndices;\n }\n\n public set selectedIndices(selectedIndices: number[]) {\n if (selectedIndices) {\n // Parse to primitive numbers as the virtual-list uses numbers and not objects for the indexOf(item-index) checks.\n this._selectedIndices = selectedIndices.map((index) => Number(index));\n } else {\n this._selectedIndices = [];\n }\n this.requestUpdate(\"selectedIndices\");\n }\n\n public scrollToItem(index: number, alignment: ScrollToAlignment = \"auto\"): void {\n this.scrollTop = ListUtil.getOffsetForIndexAndAlignment(\n this.normalizeIndex(index),\n alignment,\n this.scrollTop,\n this.itemHeight,\n this.height,\n this.itemCount,\n );\n // The render might have already been scheduled, but the onScroll event is dispatched later.\n // We need to update the _lastKnownScrollTop manually to ensure an up-to-date value is used even for the next render.\n this._lastKnownScrollTop = this.scrollTop;\n }\n\n public getListItem(index: number): HTMLElement | null {\n if (!this.shadowRoot || index < this._firstVisibleIndex || this._lastVisibleIndex < index) {\n return null;\n }\n return this.querySelector(`[item-index=\"${index}\"]`);\n }\n\n constructor() {\n super();\n this._resizeObserver = new ResizeObserver(() => {\n if (this._lastKnownHeight !== this.offsetHeight) {\n this._lastKnownHeight = this.offsetHeight;\n this.requestUpdate();\n }\n });\n }\n\n public override connectedCallback(): void {\n super.connectedCallback();\n\n this._resizeObserver.observe(this);\n // these are needed because when reattaching the list to the DOM\n // then the scroll position is reset but no scroll event is called\n // so the list shows the items at incorrect position\n if (this.scrollTop !== this._lastKnownScrollTop) {\n this.scrollTop = this._lastKnownScrollTop;\n this.requestUpdate();\n }\n }\n\n public override disconnectedCallback(): void {\n super.disconnectedCallback();\n this._resizeObserver.disconnect();\n }\n\n public override firstUpdated(_changedProperties: PropertyValues): void {\n super.firstUpdated(_changedProperties);\n\n this.addEventListener(\"scroll\", this.onScroll);\n this.addEventListener(\"keydown\", this.handleKeyDown);\n this.addEventListener(\"click\", this.handleClick);\n this.addEventListener(\"mousedown\", (event) => {\n if (event.button == 1) {\n event.preventDefault();\n }\n });\n this.addEventListener(\"auxclick\", this.handleClick);\n this.addEventListener(\"focus\", () => {\n if (this.matches(\":focus-visible\")) {\n if (this.focusIndex == -1) {\n if (this.selectedIndices) {\n this.focusIndex = this.selectedIndices[0] ?? -1;\n }\n if (this.focusIndex == -1 && this.itemCount > 0) {\n this.focusIndex = 0;\n }\n } else {\n this.updateFocusedItemAttributes();\n }\n }\n });\n this.addEventListener(\"blur\", () => {\n if (this.focusIndex != -1) {\n this.updateFocusedItemAttributes();\n }\n });\n if (this.selectedIndices.length > 0) {\n this.scrollToItem(this.selectedIndices[0] ?? -1, \"center\");\n }\n }\n\n private updateFocusedItemAttributes() {\n const focusedElement = this.getListItem(this.focusIndex);\n if (focusedElement) {\n if (this.focusTarget || document.activeElement == this) {\n focusedElement.setAttribute(\"focused\", \"\");\n this.setAttribute(\"aria-activedescendant\", focusedElement.id);\n } else {\n focusedElement.removeAttribute(\"focused\");\n this.removeAttribute(\"aria-activedescendant\");\n }\n }\n }\n\n static override get styles() {\n return [\n css`\n ${unsafeCSS(style)}\n `,\n ];\n }\n public override render(): TemplateResult {\n this.updateItemsRenderData();\n return html`\n <div class=\"container\" style=\"height: ${this.itemCount * this.itemHeight}px\">\n <slot name=\"items\"></slot>\n </div>\n `;\n }\n\n public override updated(_changedProperties: PropertyValues): void {\n super.updated(_changedProperties);\n this._lastRenderedScrollTop = this._lastKnownScrollTop;\n this.updateItems();\n\n if (\n (this._increaseWidthOnNextRenderIfNeeded || this._reachedMaxWidth) && //\n this._firstVisibleIndex < this._lastVisibleIndex\n ) {\n this.adjustWidthIfNeeded();\n }\n }\n\n private adjustWidthIfNeeded() {\n if (this._increaseWidthOnNextRenderIfNeeded) {\n this._increaseWidthOnNextRenderIfNeeded = false;\n window.requestAnimationFrame(() => {\n const remainingWidth = Number.parseInt(getComputedStyle(this).maxWidth) - this.offsetWidth;\n if (remainingWidth == 0) {\n this._reachedMaxWidth = true;\n this.enableLineClampOnItemsIfNeeded();\n } else {\n this._reachedMaxWidth = false;\n const missingWidths = [...this.querySelectorAll(\"[item-index]\")].map((item) => {\n if (item instanceof ListItem) {\n item.enableLineClamp = false;\n const missingWidthForTexts = item.missingWidthForTexts;\n if (missingWidthForTexts > remainingWidth) {\n item.enableLineClamp = true;\n }\n return missingWidthForTexts;\n }\n const missingWidth = item.scrollWidth - item.clientWidth;\n if (missingWidth > 0) {\n return missingWidth + 1; // ensure ellipsis is not shown for subpixel rendering\n }\n return 0;\n });\n const additionalWidth = Math.max(...missingWidths);\n if (additionalWidth > 0) {\n this.style.width = `${this.offsetWidth + additionalWidth}px`;\n }\n }\n });\n } else if (this._reachedMaxWidth) {\n this.enableLineClampOnItemsIfNeeded();\n }\n }\n\n private enableLineClampOnItemsIfNeeded() {\n this.querySelectorAll(\"[item-index]\").forEach((item) => {\n if (item instanceof ListItem) {\n item.enableLineClamp = item.enableLineClamp || item.missingWidthForTexts > 0;\n }\n });\n }\n\n /**\n * Searches for list-items where there is a need for an additional width (ellipsis maybe shown) and increases the width of the list,\n * therefore all the content is visible without tooltips. As it can be an expensive task to retrieve the required details, calling\n * this function has an effect only on the very next render. Note that it only works if the virtual-list works with sd-list-item elements.\n * If the maximum width is reached, line clamp is enabled on list items as a last resort approach to show the content if possible.\n */\n public increaseWidthOnNextRenderIfNeeded(): void {\n this._increaseWidthOnNextRenderIfNeeded = true;\n }\n\n private updateItems() {\n const unusedItems: Element[] = [...this.querySelectorAll(\"[item-index]\")];\n const renderedItems: Map<string, HTMLElement> = new Map();\n\n const newItemsFragment = document.createDocumentFragment();\n for (const renderData of this._itemsRenderData) {\n const itemElement = this.renderItem(renderData);\n if (!itemElement.parentElement) {\n newItemsFragment.appendChild(itemElement);\n }\n renderedItems.set(renderData.dataHash, itemElement);\n const index = unusedItems.indexOf(itemElement);\n if (index !== -1) {\n unusedItems.splice(index, 1);\n }\n }\n this.appendChild(newItemsFragment);\n\n for (const unusedItemElement of unusedItems) {\n if (unusedItemElement instanceof ListItem) {\n unusedItemElement.enableLineClamp = false;\n }\n this.removeChild(unusedItemElement);\n }\n\n renderedItems.forEach((itemElement, dataHash) => {\n this._elementCache.set(dataHash, itemElement);\n });\n }\n\n private renderItem({ index, top, dataHash, data }: ItemRenderData): HTMLElement {\n let element: HTMLElement;\n if (data) {\n if (this._elementCache.has(dataHash)) {\n element = this._elementCache.get(dataHash)!;\n this._elementCache.delete(dataHash); // Allow to be rendered twice\n } else {\n element = this.itemGenerator(data, index);\n element.setAttribute(\"slot\", \"items\");\n // Do not add to cache yet, because the same item might need to be rendered twice\n }\n } else {\n element = document.createElement(\"div\");\n element.setAttribute(\"placeholder-item\", \"\");\n element.setAttribute(\"slot\", \"items\");\n }\n Object.assign(element.style, {\n transform: `translateY(${top}px)`,\n height: `${this.itemHeight}px`,\n });\n element.setAttribute(\"item-index\", index.toString());\n element.setAttribute(\"aria-setsize\", String(this.finalSizeIsKnown ? this.itemCount : -1));\n element.setAttribute(\"aria-posinset\", String(index + 1));\n if (!element.id || element.id.startsWith(this.id + \"_item_\")) {\n element.id = this.id + \"_item_\" + index;\n }\n if (this.itemCount - 1 == index) {\n element.setAttribute(\"last\", \"\");\n } else {\n element.removeAttribute(\"last\");\n }\n\n this.updateSelectedAttribute(index, element);\n this.updateFocusedAttribute(index, element);\n\n return element;\n }\n\n private onScroll = () => {\n this._lastKnownScrollTop = this.scrollTop;\n const delta = this._lastRenderedScrollTop - this._lastKnownScrollTop;\n if (Math.abs(delta) >= this.itemHeight) {\n this._lastRenderedScrollTop = this._lastKnownScrollTop;\n this.requestUpdate();\n }\n };\n\n private updateFocusedAttribute(index: number, itemElement: HTMLElement) {\n if (this.focusIndex == index && (this.focusTarget || document.activeElement == this)) {\n itemElement.setAttribute(\"focused\", \"\");\n this.setAttribute(\"aria-activedescendant\", itemElement.id);\n } else {\n itemElement.removeAttribute(\"focused\");\n }\n }\n\n private updateSelectedAttribute(index: number, itemElement: HTMLElement) {\n const selected = this.selectedIndices.indexOf(index) !== -1;\n if (selected) {\n itemElement.setAttribute(\"selected\", \"\");\n } else {\n itemElement.removeAttribute(\"selected\");\n }\n itemElement.setAttribute(\"aria-selected\", String(selected));\n }\n\n private updateItemsRenderData(): void {\n this._itemsRenderData = [];\n this._visibleItemsNum = Math.min(Math.ceil(this.height / this.itemHeight), this.itemCount);\n\n if (this._visibleItemsNum > 0) {\n this._firstVisibleIndex = this.normalizeIndex(Math.floor(this._lastKnownScrollTop / this.itemHeight));\n this._lastVisibleIndex = this.normalizeIndex(this._firstVisibleIndex + this._visibleItemsNum);\n\n const firstRenderedIndex = this.normalizeIndex(this._firstVisibleIndex - 2);\n const lastRenderedIndex = this.normalizeIndex(this._lastVisibleIndex + 2);\n\n // May update value of this.items, which could trigger another render if not called from a lifecycle callback where it is ignored\n this.requestData(firstRenderedIndex, lastRenderedIndex);\n\n for (let i = firstRenderedIndex; i <= lastRenderedIndex; i++) {\n const physicalIndex = i - firstRenderedIndex;\n const itemData = this.items[physicalIndex];\n let dataHash;\n if (itemData) {\n dataHash = JSON.stringify(itemData);\n } else {\n dataHash = `placeholder-${physicalIndex}`;\n }\n this._itemsRenderData.push({\n index: i,\n top: this.itemHeight * i,\n physicalIndex,\n dataHash,\n data: itemData,\n });\n }\n } else {\n this._firstVisibleIndex = 0;\n this._lastVisibleIndex = 0;\n }\n }\n\n private normalizeIndex(index: number): number {\n return Math.max(0, Math.min(index, this.itemCount - 1));\n }\n\n private get height(): number {\n return this.offsetHeight;\n }\n\n private requestData(firstRenderedIndex: number, lastRenderedIndex: number): void {\n if (!Number.isNaN(firstRenderedIndex) && !Number.isNaN(lastRenderedIndex)) {\n this.dispatchEvent(\n new CustomEvent<IDataRequestEvent>(\"sd-virtual-list-data-request\", {\n detail: {\n startIndex: firstRenderedIndex,\n stopIndex: lastRenderedIndex,\n },\n }),\n );\n }\n }\n\n private handleKeyDown = (event: KeyboardEvent) => {\n let shouldPrevent = true;\n switch (event.key) {\n case \"Down\":\n case \"ArrowDown\":\n this.focusIndex = (this.focusIndex + 1) % this.itemCount;\n break;\n case \"Up\":\n case \"ArrowUp\":\n if (this.focusIndex > 0) {\n this.focusIndex--;\n } else if (this.finalSizeIsKnown) {\n this.focusIndex = this.itemCount - 1;\n }\n break;\n case \"Enter\":\n this.handleSelection(this.focusIndex, event);\n break;\n case \"End\":\n this.focusIndex = this.itemCount - 1;\n break;\n case \"PageDown\":\n this.focusIndex = this.normalizeIndex(this.focusIndex + this._visibleItemsNum - 1);\n break;\n case \"Home\":\n this.focusIndex = 0;\n break;\n case \"PageUp\":\n this.focusIndex = this.normalizeIndex(this.focusIndex - this._visibleItemsNum + 1);\n break;\n default:\n shouldPrevent = false;\n break;\n }\n if (shouldPrevent) {\n event.preventDefault();\n event.stopPropagation();\n }\n };\n\n private handleSelection(index: number, event: Event): void {\n if (index < 0 || this.itemCount <= index) {\n return;\n }\n const element = this.getListItem(index);\n if (element == null || element.getAttribute(\"aria-disabled\") == \"true\" || element.hasAttribute(\"disabled\")) {\n return;\n }\n let hasBeenSelected = true;\n if (this.selectionType !== SelectionType.TriggerOnly) {\n const existingIndex = this.selectedIndices.indexOf(index);\n hasBeenSelected = existingIndex == -1;\n if (hasBeenSelected) {\n if (this.selectionType === SelectionType.Single) {\n this.selectedIndices = [index];\n } else {\n this.selectedIndices.push(index);\n }\n } else {\n this.selectedIndices.splice(existingIndex, 1);\n }\n this.requestUpdate(\"selectedIndices\"); // altering inside of an array does not retrigger an update\n }\n this.focusIndex = index;\n this.dispatchSelectionEvent(index, hasBeenSelected, event);\n }\n\n private dispatchSelectionEvent(index: number, selected: boolean, originalEvent: Event): void {\n this.dispatchEvent(\n new CustomEvent<ISelectionEvent>(\"sd-virtual-list-selection\", {\n detail: { index, selected, originalEvent },\n }),\n );\n }\n\n private handleClick = (event: MouseEvent) => {\n const clickedElement = event\n .composedPath()\n .find(\n (target) => target instanceof HTMLElement && target.hasAttribute && target.hasAttribute(\"item-index\"),\n ) as HTMLElement | undefined;\n if (clickedElement) {\n const itemIndexFromAttribute = clickedElement.getAttribute(\"item-index\");\n if (itemIndexFromAttribute != null) {\n const index = parseInt(itemIndexFromAttribute);\n if (Number.isInteger(index)) {\n if (event.button == 0 || event.button == 1) {\n this.handleSelection(index, event);\n }\n this.focusIndex = index;\n }\n }\n }\n };\n}\n\nVirtualList.ensureDefined();\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"virtual-list.mjs","names":[],"sources":["../list-util.ts","../data-provider.ts","../style.scss?inline","../virtual-list.ts"],"sourcesContent":["export type ScrollToAlignment = \"auto\" | \"center\" | \"start\" | \"end\";\n\nexport interface IListUtil {\n getOffsetForIndexAndAlignment(\n index: number,\n alignment: ScrollToAlignment,\n scrollOffset: number,\n itemHeight: number,\n height: number,\n itemCount: number,\n ): number;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n debounce(func: (...args: any) => void): () => void;\n}\n\nclass ListUtil implements IListUtil {\n /**\n * Padding kept between a scrolled-to item and the viewport edge so the item's focus ring\n * stays visible. Must be kept in sync with `--list-item-focus-ring-width` in style.scss.\n */\n private static readonly FOCUS_RING_WIDTH = 3;\n\n public getOffsetForIndexAndAlignment(\n index: number,\n alignment: ScrollToAlignment,\n scrollOffset: number,\n itemHeight: number,\n height: number,\n itemCount: number,\n ): number {\n const focusRingWidth = ListUtil.FOCUS_RING_WIDTH;\n const lastItemOffset = Math.max(0, itemCount * itemHeight);\n const renderedTop = index * itemHeight + focusRingWidth;\n const rawMaxOffset = Math.min(lastItemOffset, renderedTop);\n const rawMinOffset = Math.max(0, renderedTop - height + itemHeight);\n const maxOffset = Math.max(0, rawMaxOffset - focusRingWidth);\n const minOffset = Math.min(lastItemOffset, rawMinOffset + focusRingWidth);\n\n switch (alignment) {\n case \"start\":\n return maxOffset;\n case \"end\":\n return minOffset;\n case \"center\": {\n const middleOffset = Math.round(rawMinOffset + (rawMaxOffset - rawMinOffset) / 2);\n if (middleOffset < Math.ceil(height / 2)) {\n return 0;\n } else if (middleOffset > lastItemOffset + Math.floor(height / 2)) {\n return lastItemOffset;\n } else {\n return middleOffset;\n }\n }\n case \"auto\":\n default:\n if (scrollOffset >= minOffset && scrollOffset <= maxOffset) {\n return scrollOffset;\n } else if (scrollOffset < minOffset) {\n return minOffset;\n } else {\n return maxOffset;\n }\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public debounce(func: (...args: any) => void): (...args: unknown[]) => void {\n let timer: number | null;\n return (...args: unknown[]) => {\n if (timer) {\n window.cancelAnimationFrame(timer);\n }\n timer = window.requestAnimationFrame(() => {\n func(...args);\n timer = null;\n });\n };\n }\n}\n\nexport default new ListUtil();\n","import VirtualList from \"./virtual-list\";\n\nexport class ListDataProvider {\n public onDataRequest?: (page: number) => void;\n\n private _finalSizeIsKnown = false;\n private _itemCache: unknown[] = [];\n private _lastRequestedFirstIndex = 0;\n private _lastRequestedLastIndex = 0;\n private _lastLoadedIndex = 0;\n private _list?: VirtualList;\n private _itemCount: number;\n private _pendingDataRequest: boolean = false;\n\n constructor(\n public pageSize: number = 100,\n public preloadedItemsCount: number = 5,\n ) {\n this._itemCount = pageSize; // configure initial load\n }\n\n public get currentPage(): number {\n if (this.items.length == 0 && this.finalSizeIsKnown) {\n return 0; // Otherwise empty cache means we haven't fetched anything\n }\n // With pageSize 100\n // 0 => -1\n // 1 100 => 0\n // 101 200 => 1\n return Math.floor((this.items.length - 1) / this.pageSize);\n }\n\n public get finalSizeIsKnown(): boolean {\n return this._finalSizeIsKnown;\n }\n\n public set finalSizeIsKnown(value: boolean) {\n this._finalSizeIsKnown = value;\n if (value) {\n this.itemCount = this._itemCache.length;\n }\n if (this._list) {\n this._list.finalSizeIsKnown = value;\n }\n }\n\n private get itemCount(): number {\n return this._itemCount;\n }\n\n private set itemCount(count: number) {\n this._itemCount = count;\n if (this._list) {\n this._list.itemCount = count;\n }\n }\n\n public get items(): unknown[] {\n return this._itemCache;\n }\n\n public set items(items: unknown[]) {\n this._itemCache = items;\n this.onItemsChange();\n }\n\n public addItems(items: unknown[]): void {\n this._itemCache = this._itemCache.concat(items);\n this.onItemsChange();\n }\n\n public connectList(list: VirtualList): void {\n if (this._list) {\n this._list.removeEventListener(\"sd-virtual-list-data-request\", this.handleListDataRequest);\n }\n this._list = list;\n list.itemCount = this.itemCount;\n list.addEventListener(\"sd-virtual-list-data-request\", this.handleListDataRequest);\n list.finalSizeIsKnown = this._finalSizeIsKnown;\n }\n\n private onItemsChange(): void {\n this._pendingDataRequest = false;\n this._lastLoadedIndex = this._itemCache.length - 1;\n if (this.finalSizeIsKnown) {\n this.itemCount = this._itemCache.length;\n } else if (this._lastLoadedIndex > this.itemCount) {\n this.itemCount = this._lastLoadedIndex;\n }\n if (this._list) {\n this._list.items = this._itemCache.slice(this._lastRequestedFirstIndex, this._lastRequestedLastIndex + 1);\n }\n }\n\n private handleListDataRequest = (event: CustomEvent) => {\n if (this._list == null) {\n return;\n }\n const { startIndex, stopIndex } = event.detail;\n this._lastRequestedFirstIndex = startIndex;\n this._lastRequestedLastIndex = stopIndex;\n this._list.items = this._itemCache.slice(startIndex, stopIndex + 1);\n\n if (!this.finalSizeIsKnown && this._lastLoadedIndex < stopIndex + this.preloadedItemsCount) {\n this.requestData();\n }\n };\n\n private requestData(): void {\n if (this._pendingDataRequest) {\n return;\n }\n if (this.onDataRequest) {\n this._pendingDataRequest = true;\n this.onDataRequest(this.currentPage + 1);\n this._lastLoadedIndex += this.pageSize - 1;\n if (this._lastLoadedIndex > this.itemCount) {\n this.itemCount = this._lastLoadedIndex;\n }\n } else {\n throw Error(\n \"The final size is not yet known and the list would require item data from index \" +\n this._lastRequestedFirstIndex +\n \". to \" +\n this._lastRequestedLastIndex +\n \". which is not possible to load without a configured onDataRequest\",\n );\n }\n }\n}\n",":host {\n\tdisplay: block;\n\tposition: relative;\n\tcontain: layout;\n\toverflow-y: auto;\n\toverflow-x: hidden;\n\t--list-item-focus-ring-width: 3px;\n\tscroll-padding: var(--list-item-focus-ring-width);\n}\n\n:host(:focus) {\n\toutline: none;\n}\n\n:host(:focus-visible) ::slotted([focused]) {\n\t--sd-list-item-focus-ring-offset-color: var(--color-bg-default, #ffffff);\n\t--sd-list-item-focus-ring-color: var(--color-border-interaction-focus, #111);\n\tborder-color: var(--color-rainbow-mono-weak, #ffffff);\n\tz-index: 1;\n}\n\n.scroll-container {\n\tdisplay: block;\n\tpadding: var(--list-item-focus-ring-width);\n\t/* join the list background with the scrollbar */\n\tbackground: linear-gradient(\n\t\t\tvar(--sd-virtual-list-background-color, var(--color-bg-default, #ffffff)),\n\t\t\tvar(--sd-virtual-list-background-color, var(--color-bg-default, #ffffff))\n\t\t)\n\t\tno-repeat right center / var(--list-item-focus-ring-width) calc(100% - 2 * var(--list-item-focus-ring-width));\n}\n\n.container {\n\twidth: 100%;\n\tposition: relative;\n\tbackground-color: var(--sd-virtual-list-background-color, var(--color-bg-default, #ffffff));\n\n\t& > ::slotted(*) {\n\t\twidth: 100%;\n\t\tposition: absolute;\n\t\tbox-sizing: border-box;\n\t}\n\n\t& > ::slotted(sd-list-item:not([last])) {\n\t\t--sd-list-item-bottom-border-color: var(--color-border-weak, #ededed);\n\t\tborder-bottom-color: var(--sd-list-item-bottom-border-color);\n\t}\n\n\t& > ::slotted(sd-list-item:is(:hover, [focused], :not([aria-disabled=\"true\"]):active, [selected])) {\n\t\t--sd-list-item-bottom-border-color: var(--color-rainbow-mono-weak, #ffffff);\n\t}\n\n\t& > ::slotted(sd-list-item[selected]) {\n\t\tborder-left-color: var(--color-rainbow-mono-weak, #ffffff);\n\t\tborder-right-color: var(--color-rainbow-mono-weak, #ffffff);\n\t}\n\n\t& > ::slotted(:not(:is(sd-list-item, [last]))) {\n\t\tborder-bottom: 1px solid var(--color-border-weak, #ededed);\n\t}\n}\n","import ListItem, { generator, type ItemData } from \"@cas-smartdesign/list-item\";\nimport { LitElement, type TemplateResult, html, unsafeCSS, type PropertyValues, css } from \"lit\";\nimport { property } from \"lit/decorators/property.js\";\n\nimport ListUtil, { type ScrollToAlignment } from \"./list-util\";\nexport { ListDataProvider } from \"./data-provider\";\n\ndeclare global {\n interface HTMLElementTagNameMap {\n [VirtualList.ID]: VirtualList;\n }\n interface HTMLElementEventMap {\n \"sd-virtual-list-data-request\": CustomEvent<IDataRequestEvent>;\n \"sd-virtual-list-selection\": CustomEvent<ISelectionEvent>;\n }\n}\n\nimport style from \"./style.scss?inline\";\n\nexport type ItemGenerator = (data: ItemData, _index: number) => HTMLElement;\nexport enum SelectionType {\n TriggerOnly = \"trigger-only\",\n Single = \"single\",\n Multi = \"multi\",\n}\n\ninterface ItemRenderData {\n index: number;\n top: number;\n physicalIndex: number;\n dataHash: string;\n data?: unknown;\n}\n\nlet idCounter = 0;\n\nexport interface IDataRequestEvent {\n startIndex: number;\n stopIndex: number;\n}\n\nexport interface ISelectionEvent {\n index: number;\n selected: boolean;\n originalEvent: Event;\n}\n\nexport default class VirtualList extends LitElement {\n public static readonly ID = \"sd-virtual-list\";\n public static ensureDefined = (): void => {\n ListItem.ensureDefined();\n if (!customElements.get(VirtualList.ID)) {\n customElements.define(VirtualList.ID, VirtualList);\n }\n };\n\n @property({ type: Number, attribute: \"item-height\", reflect: true })\n public itemHeight: number = 48;\n @property({ type: Number })\n public itemCount: number = 0;\n @property({ type: Array, attribute: false })\n public items: unknown[] = [];\n @property({ type: String, attribute: \"selection-type\", reflect: true, noAccessor: true })\n public selectionType: SelectionType = SelectionType.TriggerOnly;\n @property({ type: String, attribute: true, reflect: true })\n public override id: string = VirtualList.ID + \"_\" + idCounter++;\n\n // aria attributes\n @property({ type: String, reflect: true })\n public override role = \"listbox\";\n\n public itemGenerator: ItemGenerator = generator;\n public finalSizeIsKnown?: boolean;\n\n private _lastKnownScrollTop = 0;\n private _lastRenderedScrollTop = 0;\n\n private _itemsRenderData: ItemRenderData[] = [];\n private _elementCache: Map<string, HTMLElement> = new Map();\n\n private _firstVisibleIndex: number = -1;\n private _lastVisibleIndex: number = -1;\n private _visibleItemsNum = 0;\n\n private _selectedIndices: number[] = [];\n private _focusIndex = -1;\n private _resizeObserver: ResizeObserver;\n private _lastKnownHeight = 0;\n private _increaseWidthOnNextRenderIfNeeded?: boolean;\n private _reachedMaxWidth?: boolean;\n\n public get focusTarget(): boolean {\n return this.hasAttribute(\"focus-target\");\n }\n\n public set focusTarget(value: boolean) {\n this.toggleAttribute(\"focus-target\", value);\n }\n\n @property({ type: Number, attribute: \"focus-index\", reflect: true })\n public get focusIndex(): number {\n return this._focusIndex;\n }\n\n public set focusIndex(index: number) {\n if (index >= -1 && index < this.itemCount) {\n const oldValue = this._focusIndex;\n this._focusIndex = index;\n if (index <= this._firstVisibleIndex || this._lastVisibleIndex <= index) {\n this.scrollToItem(index);\n }\n if (oldValue != index) {\n if (index == -1) {\n this.removeAttribute(\"aria-activedescendant\");\n }\n this.requestUpdate(\"focusIndex\", oldValue);\n }\n }\n }\n\n @property({ type: Array, attribute: false })\n public get selectedIndices(): number[] {\n return this._selectedIndices;\n }\n\n public set selectedIndices(selectedIndices: number[]) {\n if (selectedIndices) {\n // Parse to primitive numbers as the virtual-list uses numbers and not objects for the indexOf(item-index) checks.\n this._selectedIndices = selectedIndices.map((index) => Number(index));\n } else {\n this._selectedIndices = [];\n }\n this.requestUpdate(\"selectedIndices\");\n }\n\n public scrollToItem(index: number, alignment: ScrollToAlignment = \"auto\"): void {\n this.scrollTop = ListUtil.getOffsetForIndexAndAlignment(\n this.normalizeIndex(index),\n alignment,\n this.scrollTop,\n this.itemHeight,\n this.height,\n this.itemCount,\n );\n // The render might have already been scheduled, but the onScroll event is dispatched later.\n // We need to update the _lastKnownScrollTop manually to ensure an up-to-date value is used even for the next render.\n this._lastKnownScrollTop = this.scrollTop;\n }\n\n public getListItem(index: number): HTMLElement | null {\n if (!this.shadowRoot || index < this._firstVisibleIndex || this._lastVisibleIndex < index) {\n return null;\n }\n return this.querySelector(`[item-index=\"${index}\"]`);\n }\n\n constructor() {\n super();\n this._resizeObserver = new ResizeObserver(() => {\n if (this._lastKnownHeight !== this.offsetHeight) {\n this._lastKnownHeight = this.offsetHeight;\n this.requestUpdate();\n }\n });\n }\n\n public override connectedCallback(): void {\n super.connectedCallback();\n\n this._resizeObserver.observe(this);\n // these are needed because when reattaching the list to the DOM\n // then the scroll position is reset but no scroll event is called\n // so the list shows the items at incorrect position\n if (this.scrollTop !== this._lastKnownScrollTop) {\n this.scrollTop = this._lastKnownScrollTop;\n this.requestUpdate();\n }\n }\n\n public override disconnectedCallback(): void {\n super.disconnectedCallback();\n this._resizeObserver.disconnect();\n }\n\n public override firstUpdated(_changedProperties: PropertyValues): void {\n super.firstUpdated(_changedProperties);\n\n this.addEventListener(\"scroll\", this.onScroll);\n this.addEventListener(\"keydown\", this.handleKeyDown);\n this.addEventListener(\"click\", this.handleClick);\n this.addEventListener(\"mousedown\", (event) => {\n if (event.button == 1) {\n event.preventDefault();\n }\n });\n this.addEventListener(\"auxclick\", this.handleClick);\n this.addEventListener(\"focus\", () => {\n if (this.matches(\":focus-visible\")) {\n if (this.focusIndex == -1) {\n if (this.selectedIndices) {\n this.focusIndex = this.selectedIndices[0] ?? -1;\n }\n if (this.focusIndex == -1 && this.itemCount > 0) {\n this.focusIndex = 0;\n }\n } else {\n this.updateFocusedItemAttributes();\n }\n }\n });\n this.addEventListener(\"blur\", () => {\n if (this.focusIndex != -1) {\n this.updateFocusedItemAttributes();\n }\n });\n if (this.selectedIndices.length > 0) {\n this.scrollToItem(this.selectedIndices[0] ?? -1, \"center\");\n }\n }\n\n private updateFocusedItemAttributes() {\n const focusedElement = this.getListItem(this.focusIndex);\n if (focusedElement) {\n if (this.focusTarget || document.activeElement == this) {\n focusedElement.setAttribute(\"focused\", \"\");\n this.setAttribute(\"aria-activedescendant\", focusedElement.id);\n } else {\n focusedElement.removeAttribute(\"focused\");\n this.removeAttribute(\"aria-activedescendant\");\n }\n }\n }\n\n static override get styles() {\n return [\n css`\n ${unsafeCSS(style)}\n `,\n ];\n }\n public override render(): TemplateResult {\n this.updateItemsRenderData();\n return html`\n <div class=\"scroll-container\">\n <div class=\"container\" style=\"height: ${this.itemCount * this.itemHeight}px\">\n <slot name=\"items\"></slot>\n </div>\n </div>\n `;\n }\n\n public override updated(_changedProperties: PropertyValues): void {\n super.updated(_changedProperties);\n this._lastRenderedScrollTop = this._lastKnownScrollTop;\n this.updateItems();\n\n if (\n (this._increaseWidthOnNextRenderIfNeeded || this._reachedMaxWidth) && //\n this._firstVisibleIndex < this._lastVisibleIndex\n ) {\n this.adjustWidthIfNeeded();\n }\n }\n\n private adjustWidthIfNeeded() {\n if (this._increaseWidthOnNextRenderIfNeeded) {\n this._increaseWidthOnNextRenderIfNeeded = false;\n window.requestAnimationFrame(() => {\n const remainingWidth = Number.parseInt(getComputedStyle(this).maxWidth) - this.offsetWidth;\n if (remainingWidth == 0) {\n this._reachedMaxWidth = true;\n this.enableLineClampOnItemsIfNeeded();\n } else {\n this._reachedMaxWidth = false;\n const missingWidths = [...this.querySelectorAll(\"[item-index]\")].map((item) => {\n if (item instanceof ListItem) {\n item.enableLineClamp = false;\n const missingWidthForTexts = item.missingWidthForTexts;\n if (missingWidthForTexts > remainingWidth) {\n item.enableLineClamp = true;\n }\n return missingWidthForTexts;\n }\n const missingWidth = item.scrollWidth - item.clientWidth;\n if (missingWidth > 0) {\n return missingWidth + 1; // ensure ellipsis is not shown for subpixel rendering\n }\n return 0;\n });\n const additionalWidth = Math.max(...missingWidths);\n if (additionalWidth > 0) {\n this.style.width = `${this.offsetWidth + additionalWidth}px`;\n }\n }\n });\n } else if (this._reachedMaxWidth) {\n this.enableLineClampOnItemsIfNeeded();\n }\n }\n\n private enableLineClampOnItemsIfNeeded() {\n this.querySelectorAll(\"[item-index]\").forEach((item) => {\n if (item instanceof ListItem) {\n item.enableLineClamp = item.enableLineClamp || item.missingWidthForTexts > 0;\n }\n });\n }\n\n /**\n * Searches for list-items where there is a need for an additional width (ellipsis maybe shown) and increases the width of the list,\n * therefore all the content is visible without tooltips. As it can be an expensive task to retrieve the required details, calling\n * this function has an effect only on the very next render. Note that it only works if the virtual-list works with sd-list-item elements.\n * If the maximum width is reached, line clamp is enabled on list items as a last resort approach to show the content if possible.\n */\n public increaseWidthOnNextRenderIfNeeded(): void {\n this._increaseWidthOnNextRenderIfNeeded = true;\n }\n\n private updateItems() {\n const unusedItems: Element[] = [...this.querySelectorAll(\"[item-index]\")];\n const renderedItems: Map<string, HTMLElement> = new Map();\n\n const newItemsFragment = document.createDocumentFragment();\n for (const renderData of this._itemsRenderData) {\n const itemElement = this.renderItem(renderData);\n if (!itemElement.parentElement) {\n newItemsFragment.appendChild(itemElement);\n }\n renderedItems.set(renderData.dataHash, itemElement);\n const index = unusedItems.indexOf(itemElement);\n if (index !== -1) {\n unusedItems.splice(index, 1);\n }\n }\n this.appendChild(newItemsFragment);\n\n for (const unusedItemElement of unusedItems) {\n if (unusedItemElement instanceof ListItem) {\n unusedItemElement.enableLineClamp = false;\n }\n this.removeChild(unusedItemElement);\n }\n\n renderedItems.forEach((itemElement, dataHash) => {\n this._elementCache.set(dataHash, itemElement);\n });\n }\n\n private renderItem({ index, top, dataHash, data }: ItemRenderData): HTMLElement {\n let element: HTMLElement;\n if (data) {\n if (this._elementCache.has(dataHash)) {\n element = this._elementCache.get(dataHash)!;\n this._elementCache.delete(dataHash); // Allow to be rendered twice\n } else {\n element = this.itemGenerator(data, index);\n element.setAttribute(\"slot\", \"items\");\n // Do not add to cache yet, because the same item might need to be rendered twice\n }\n } else {\n element = document.createElement(\"div\");\n element.setAttribute(\"placeholder-item\", \"\");\n element.setAttribute(\"slot\", \"items\");\n }\n Object.assign(element.style, {\n transform: `translateY(${top}px)`,\n height: `${this.itemHeight}px`,\n });\n element.setAttribute(\"item-index\", index.toString());\n element.setAttribute(\"aria-setsize\", String(this.finalSizeIsKnown ? this.itemCount : -1));\n element.setAttribute(\"aria-posinset\", String(index + 1));\n if (!element.id || element.id.startsWith(this.id + \"_item_\")) {\n element.id = this.id + \"_item_\" + index;\n }\n if (this.itemCount - 1 == index) {\n element.setAttribute(\"last\", \"\");\n } else {\n element.removeAttribute(\"last\");\n }\n\n this.updateSelectedAttribute(index, element);\n this.updateFocusedAttribute(index, element);\n\n return element;\n }\n\n private onScroll = () => {\n this._lastKnownScrollTop = this.scrollTop;\n const delta = this._lastRenderedScrollTop - this._lastKnownScrollTop;\n if (Math.abs(delta) >= this.itemHeight) {\n this._lastRenderedScrollTop = this._lastKnownScrollTop;\n this.requestUpdate();\n }\n };\n\n private updateFocusedAttribute(index: number, itemElement: HTMLElement) {\n if (this.focusIndex == index && (this.focusTarget || document.activeElement == this)) {\n itemElement.setAttribute(\"focused\", \"\");\n this.setAttribute(\"aria-activedescendant\", itemElement.id);\n } else {\n itemElement.removeAttribute(\"focused\");\n }\n }\n\n private updateSelectedAttribute(index: number, itemElement: HTMLElement) {\n const selected = this.selectedIndices.indexOf(index) !== -1;\n if (selected) {\n itemElement.setAttribute(\"selected\", \"\");\n } else {\n itemElement.removeAttribute(\"selected\");\n }\n itemElement.setAttribute(\"aria-selected\", String(selected));\n }\n\n private updateItemsRenderData(): void {\n this._itemsRenderData = [];\n this._visibleItemsNum = Math.min(Math.ceil(this.height / this.itemHeight), this.itemCount);\n\n if (this._visibleItemsNum > 0) {\n this._firstVisibleIndex = this.normalizeIndex(Math.floor(this._lastKnownScrollTop / this.itemHeight));\n this._lastVisibleIndex = this.normalizeIndex(this._firstVisibleIndex + this._visibleItemsNum);\n\n const firstRenderedIndex = this.normalizeIndex(this._firstVisibleIndex - 2);\n const lastRenderedIndex = this.normalizeIndex(this._lastVisibleIndex + 2);\n\n // May update value of this.items, which could trigger another render if not called from a lifecycle callback where it is ignored\n this.requestData(firstRenderedIndex, lastRenderedIndex);\n\n for (let i = firstRenderedIndex; i <= lastRenderedIndex; i++) {\n const physicalIndex = i - firstRenderedIndex;\n const itemData = this.items[physicalIndex];\n let dataHash;\n if (itemData) {\n dataHash = JSON.stringify(itemData);\n } else {\n dataHash = `placeholder-${physicalIndex}`;\n }\n this._itemsRenderData.push({\n index: i,\n top: this.itemHeight * i,\n physicalIndex,\n dataHash,\n data: itemData,\n });\n }\n } else {\n this._firstVisibleIndex = 0;\n this._lastVisibleIndex = 0;\n }\n }\n\n private normalizeIndex(index: number): number {\n return Math.max(0, Math.min(index, this.itemCount - 1));\n }\n\n private get height(): number {\n return this.offsetHeight;\n }\n\n private requestData(firstRenderedIndex: number, lastRenderedIndex: number): void {\n if (!Number.isNaN(firstRenderedIndex) && !Number.isNaN(lastRenderedIndex)) {\n this.dispatchEvent(\n new CustomEvent<IDataRequestEvent>(\"sd-virtual-list-data-request\", {\n detail: {\n startIndex: firstRenderedIndex,\n stopIndex: lastRenderedIndex,\n },\n }),\n );\n }\n }\n\n private handleKeyDown = (event: KeyboardEvent) => {\n let shouldPrevent = true;\n switch (event.key) {\n case \"Down\":\n case \"ArrowDown\":\n this.focusIndex = (this.focusIndex + 1) % this.itemCount;\n break;\n case \"Up\":\n case \"ArrowUp\":\n if (this.focusIndex > 0) {\n this.focusIndex--;\n } else if (this.finalSizeIsKnown) {\n this.focusIndex = this.itemCount - 1;\n }\n break;\n case \"Enter\":\n this.handleSelection(this.focusIndex, event);\n break;\n case \"End\":\n this.focusIndex = this.itemCount - 1;\n break;\n case \"PageDown\":\n this.focusIndex = this.normalizeIndex(this.focusIndex + this._visibleItemsNum - 1);\n break;\n case \"Home\":\n this.focusIndex = 0;\n break;\n case \"PageUp\":\n this.focusIndex = this.normalizeIndex(this.focusIndex - this._visibleItemsNum + 1);\n break;\n default:\n shouldPrevent = false;\n break;\n }\n if (shouldPrevent) {\n event.preventDefault();\n event.stopPropagation();\n }\n };\n\n private handleSelection(index: number, event: Event): void {\n if (index < 0 || this.itemCount <= index) {\n return;\n }\n const element = this.getListItem(index);\n if (element == null || element.getAttribute(\"aria-disabled\") == \"true\" || element.hasAttribute(\"disabled\")) {\n return;\n }\n let hasBeenSelected = true;\n if (this.selectionType !== SelectionType.TriggerOnly) {\n const existingIndex = this.selectedIndices.indexOf(index);\n hasBeenSelected = existingIndex == -1;\n if (hasBeenSelected) {\n if (this.selectionType === SelectionType.Single) {\n this.selectedIndices = [index];\n } else {\n this.selectedIndices.push(index);\n }\n } else {\n this.selectedIndices.splice(existingIndex, 1);\n }\n this.requestUpdate(\"selectedIndices\"); // altering inside of an array does not retrigger an update\n }\n this.focusIndex = index;\n this.dispatchSelectionEvent(index, hasBeenSelected, event);\n }\n\n private dispatchSelectionEvent(index: number, selected: boolean, originalEvent: Event): void {\n this.dispatchEvent(\n new CustomEvent<ISelectionEvent>(\"sd-virtual-list-selection\", {\n detail: { index, selected, originalEvent },\n }),\n );\n }\n\n private handleClick = (event: MouseEvent) => {\n const clickedElement = event\n .composedPath()\n .find(\n (target) => target instanceof HTMLElement && target.hasAttribute && target.hasAttribute(\"item-index\"),\n ) as HTMLElement | undefined;\n if (clickedElement) {\n const itemIndexFromAttribute = clickedElement.getAttribute(\"item-index\");\n if (itemIndexFromAttribute != null) {\n const index = parseInt(itemIndexFromAttribute);\n if (Number.isInteger(index)) {\n if (event.button == 0 || event.button == 1) {\n this.handleSelection(index, event);\n }\n this.focusIndex = index;\n }\n }\n }\n };\n}\n\nVirtualList.ensureDefined();\n"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cas-smartdesign/virtual-list",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "9.0.0",
|
|
4
4
|
"description": "A virtualized list element with SmartDesign look and feel.",
|
|
5
5
|
"license": "SEE LICENSE IN LICENSE",
|
|
6
6
|
"files": [
|
|
@@ -17,12 +17,20 @@
|
|
|
17
17
|
},
|
|
18
18
|
"dependencies": {
|
|
19
19
|
"lit": "^3.3.2",
|
|
20
|
-
"@cas-smartdesign/list-item": "^
|
|
20
|
+
"@cas-smartdesign/list-item": "^9.0.0"
|
|
21
21
|
},
|
|
22
22
|
"devDependencies": {
|
|
23
|
-
"@cas-smartdesign/element-preview": "^1.
|
|
24
|
-
"@cas-smartdesign/
|
|
25
|
-
"@cas-smartdesign/
|
|
23
|
+
"@cas-smartdesign/element-preview": "^1.1.0",
|
|
24
|
+
"@cas-smartdesign/license-generator": "^1.10.0",
|
|
25
|
+
"@cas-smartdesign/element-utils": "^2.0.0"
|
|
26
|
+
},
|
|
27
|
+
"peerDependencies": {
|
|
28
|
+
"@cas-smartdesign/design-tokens": "^3.0.2"
|
|
29
|
+
},
|
|
30
|
+
"peerDependenciesMeta": {
|
|
31
|
+
"@cas-smartdesign/design-tokens": {
|
|
32
|
+
"optional": true
|
|
33
|
+
}
|
|
26
34
|
},
|
|
27
35
|
"scripts": {
|
|
28
36
|
"version": "pnpm version",
|
package/readme.md
CHANGED
|
@@ -2,10 +2,14 @@
|
|
|
2
2
|
|
|
3
3
|
A list element with ui-virtualization and infinite scrolling.
|
|
4
4
|
|
|
5
|
+
This element must be used together with the design tokens of SmartDesign.
|
|
6
|
+
For an independent application, make sure to include the @cas-smartdesign/design-tokens package.
|
|
7
|
+
For a web app / web widget, refer to the official documentation about design token usage.
|
|
8
|
+
|
|
5
9
|
## Attributes
|
|
6
10
|
|
|
7
11
|
- `item-height`
|
|
8
|
-
- Defines the height in px of the list items.
|
|
12
|
+
- Defines the height in px of the list items. Defaults to 48.
|
|
9
13
|
- `item-count`
|
|
10
14
|
- Defines the virtual number of items in the list.
|
|
11
15
|
- `selection-type`
|
|
@@ -13,8 +17,10 @@ A list element with ui-virtualization and infinite scrolling.
|
|
|
13
17
|
- Available values: "trigger-only", "single", "multi"
|
|
14
18
|
- `focus-index`
|
|
15
19
|
- Defines the index of currently focused item
|
|
20
|
+
- `focus-target`
|
|
21
|
+
- When present, the item at `focus-index` is kept marked as `focused` even while the list itself does not have DOM focus.
|
|
16
22
|
- `role`: string
|
|
17
|
-
- Aria attribute, default value is "
|
|
23
|
+
- Aria attribute, default value is "listbox"
|
|
18
24
|
|
|
19
25
|
## Properties
|
|
20
26
|
|
|
@@ -24,23 +30,25 @@ The following properties are available:
|
|
|
24
30
|
- Contains data for the currently rendered list items.
|
|
25
31
|
- `itemGenerator` **_ItemGenerator (default is the generator inside the list-item element)_**
|
|
26
32
|
- A method that renders the list items.
|
|
27
|
-
- `itemHeight` **_number (default=
|
|
33
|
+
- `itemHeight` **_number (default=48)_**
|
|
28
34
|
- Reflects the corresponding attribute
|
|
29
35
|
- `itemCount` **_number (default=0)_**
|
|
30
36
|
- Reflects the corresponding attribute
|
|
31
37
|
- `selectionType` **_string (default="trigger-only")_**
|
|
32
38
|
- Reflects the corresponding attribute
|
|
33
|
-
- `focusIndex` **_number (default
|
|
34
|
-
- Reflects the corresponding attribute
|
|
39
|
+
- `focusIndex` **_number (default=-1)_**
|
|
40
|
+
- Reflects the corresponding attribute. `-1` means no item is focused.
|
|
35
41
|
- `selectedIndices` **_number[] (default=empty)_**
|
|
36
42
|
- Contains the indices of the selected items.
|
|
43
|
+
- `focusTarget` **_boolean (default=false)_**
|
|
44
|
+
- Reflects the `focus-target` attribute. Keeps the focused item marked even while the list does not have DOM focus.
|
|
45
|
+
- `finalSizeIsKnown` **_boolean (default=undefined)_**
|
|
46
|
+
- Indicates whether the total number of items is final. While false/undefined the list is in infinite-scrolling state and items report `aria-setsize="-1"`.
|
|
37
47
|
|
|
38
48
|
## CSS Custom Properties
|
|
39
49
|
|
|
40
|
-
- `--sd-virtual-list-
|
|
41
|
-
- Defines the
|
|
42
|
-
- `--sd-virtual-list-item-separator-color`
|
|
43
|
-
- Defines the separator color for list items, defaults to #d9d9d9
|
|
50
|
+
- `--sd-virtual-list-background-color`
|
|
51
|
+
- Defines the background color of the list (default is the `--color-bg-default` token, `#ffffff`)
|
|
44
52
|
|
|
45
53
|
## Custom events
|
|
46
54
|
|
|
@@ -58,7 +66,8 @@ The following properties are available:
|
|
|
58
66
|
- Returns the DOM node that represents the item with the given index
|
|
59
67
|
- Note that only visible items can be accessed this way
|
|
60
68
|
- `scrollToItem`
|
|
61
|
-
- Scrolls the list to the item with the given index
|
|
69
|
+
- Scrolls the list to the item with the given index.
|
|
70
|
+
- Accepts an optional alignment argument: `"auto"` (default), `"start"`, `"center"`, or `"end"`. A small padding is kept between the item and the viewport edge so the item's focus ring stays visible.
|
|
62
71
|
- `increaseWidthOnNextRenderIfNeeded`
|
|
63
72
|
- The width of the list is increased on the next rendering phase to an extent, that all texts in the list-items are visible without ellipsis.
|
|
64
73
|
- If the list has already reached it's maximum width, then line clamp may be enabled on the items to wrap the content if possible.
|