@yongdall/theme 0.1.0 → 0.1.2
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/assets.yongdall.mjs +2 -2
- package/hooks.mjs +1 -1
- package/hooks.mjs.map +1 -1
- package/hooks.yongdall.mjs +14 -7
- package/hooks.yongdall.mjs.map +1 -1
- package/index.mjs +25 -25
- package/index.mjs.map +1 -1
- package/package.json +1 -1
- package/theme-base.css +210 -0
- package/theme-base.css.map +1 -0
- package/{theme-tradition.css → theme-tabs.css} +41 -41
- package/theme-tabs.css.map +1 -0
- package/theme-tabs.mjs +0 -0
- package/theme-tradition.css.map +0 -1
- /package/{theme-tradition.mjs → theme-base.mjs} +0 -0
package/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","names":["prefix","#table","#thead","#createUrl","#renderList","#labelPattern","#fieldsShow","#idFields","#tr","#tbody","#documents","style","#printer","#value","#internals","style","#style","#separator","style","#label","#explain","style","verticalWritingMode","setBoolAttribute","#shadow","#header","#body","#main","#updateSize","#ro","#closeOthersWhenOpen","#label","style","hasPopover","#shadow","#main","#target","#open","#mounted","#getTarget","#svg","#show","#close","style","Group","#style","#updateStyle","style","verticalWritingMode","getLayout","Menu","#direction","#align","#label","#parentMenu","#show","#dialog","#currentSubMenu","#close","#mounted","#update","#target","#open","#internals","#updateLayout","#getTarget","#root","#rowVertical","#rowReverse","#colReverse","style","#main","#style","#close","#hidePopover","#duration","#clearTimeout","#shown","#internals","#setTimeout","#handler","#remove","#mounted","#show","#hide","style","setBoolAttribute","#dialog","#main","#okButton","#cancelButton","#mounted","style$1","#connect","#disconnect","#children","style","#adaptively","#targets","#pagination","#size","#total","#pages","#page","Pagination","#unregister","#shadow","#input","#button","#updateDisabled","#slot","style$3","#children","#buttons","#createButtons","style$2","style$1","#nonLabel","#labels","#update","style","#state","#text","#subElements","style","#value","#main","#sign","#update","style","#aliquotStyle","#style","style","#style","#pointerId","#internals","#trigger","#shadow","#stopMove","#startArea","#endArea","#fns","#pagination","filter","header","main","allMenus","currentMenus","ac","prefix","header","actions","sidebar","openedClassName","prefix","closeSidebarWhenMobile","Sider","#disabled","#hide","#click","sidebar","prefix","#children","Sider","actions","span","#page","#parent","#hidden","#sides","rootContainer","header","actions","rootContainer"],"sources":["../../packages/theme/styles/variables.mjs","../../packages/theme/pageManager/index.mjs","../../packages/theme/components/List.mjs","../../node_modules/.pnpm/@neeloong+components@0.7.0/node_modules/@neeloong/components/Angle.mjs","../../node_modules/.pnpm/@neeloong+components@0.7.0/node_modules/@neeloong/components/Breadcrumb.mjs","../../node_modules/.pnpm/@neeloong+components@0.7.0/node_modules/@neeloong/components/Cell.mjs","../../node_modules/.pnpm/@neeloong+components@0.7.0/node_modules/@neeloong/components/Collapse.mjs","../../node_modules/.pnpm/@neeloong+components@0.7.0/node_modules/@neeloong/components/Focus.mjs","../../node_modules/.pnpm/@neeloong+components@0.7.0/node_modules/@neeloong/components/Group.mjs","../../node_modules/.pnpm/@neeloong+components@0.7.0/node_modules/@neeloong/components/Menu.mjs","../../node_modules/.pnpm/@neeloong+components@0.7.0/node_modules/@neeloong/components/Message.mjs","../../node_modules/.pnpm/@neeloong+components@0.7.0/node_modules/@neeloong/components/Modal.mjs","../../node_modules/.pnpm/@neeloong+components@0.7.0/node_modules/@neeloong/components/Movable.mjs","../../node_modules/.pnpm/@neeloong+components@0.7.0/node_modules/@neeloong/components/Pagination.mjs","../../node_modules/.pnpm/@neeloong+components@0.7.0/node_modules/@neeloong/components/RollDigit.mjs","../../node_modules/.pnpm/@neeloong+components@0.7.0/node_modules/@neeloong/components/Row.mjs","../../node_modules/.pnpm/@neeloong+components@0.7.0/node_modules/@neeloong/components/Space.mjs","../../node_modules/.pnpm/@neeloong+components@0.7.0/node_modules/@neeloong/components/Split.mjs","../../packages/theme/components/Pagination.mjs","../../packages/theme/home/index.mjs","../../packages/theme/menu/createNavMenu.mjs","../../packages/theme/workspace/index.mjs","../../packages/theme/user/userAvatar.mjs","../../packages/theme/user/index.mjs","../../packages/theme/logo.mjs","../../packages/theme/error/index.mjs","../../packages/theme/theme-allSider/dom.mjs","../../packages/theme/theme-allSider/Sider.mjs","../../packages/theme/theme-allSider/Group.mjs","../../packages/theme/theme-allSider/sides.mjs","../../packages/theme/theme-allSider/AllSiderPage.mjs","../../packages/theme/menu/createMenu.mjs","../../packages/theme/menu/createMenuButtons.mjs","../../packages/theme/menu/createMenuItem.mjs","../../packages/theme/menu/createMenuButton.mjs","../../packages/theme/theme-allSider/index.mjs","../../packages/theme/theme-tradition/dom.mjs","../../packages/theme/theme-tradition/TraditionPage.mjs","../../packages/theme/theme-tradition/index.mjs"],"sourcesContent":["export const cssPrefix = `YongDallTheme`;\n","import { configuration, effect, waitAbortSignal } from '@yongdall/web';\n/** @import { PageHandle, PageManager } from '@yongdall/web' */\nimport { cssPrefix } from '../styles/variables.mjs';\nconst prefix = `${cssPrefix}-activity`;\n\nexport const activityContainer = document.createElement('div');\nactivityContainer.classList.add(prefix);\n\n\n\n/**\n * @typedef {object} ButtonProxy\n * @property {HTMLElement} button\n * @property {HTMLAnchorElement} link\n * @property {ButtonProxy} [last]\n * @property {ButtonProxy} [next]\n */\n\n/** @type {Map<PageHandle, ButtonProxy>} */\nconst buttons = new Map();\n/** @type {ButtonProxy | undefined} */\nlet first;\n\n/**\n * \n * @param {PageHandle?} [page] \n */\nfunction setTitle(page) {\n\tdocument.title = [\n\t\tpage ? page.title : '',\n\t\tconfiguration.title || '拥道YongDall',\n\t].filter(Boolean).join(' | ');\n}\nsetTitle();\n/** @type {PageManager} */\nconst pageManager = (page) => {\n\tconst button = document.createElement('div');\n\tbutton.classList.add(`${prefix}-page`);\n\tconst link = button.appendChild(document.createElement('a'));\n\tlink.classList.add(`${prefix}-title`);\n\tlink.href = page.href;\n\tlink.innerText = page.title;\n\tconst close = button.appendChild(document.createElement('button'));\n\tclose.type = 'button';\n\tclose.classList.add(`${prefix}-close`);\n\tclose.addEventListener('click', () => {\n\t\tpage.destroy();\n\t});\n\t/** @type {ButtonProxy} */\n\tconst btn = {\n\t\tbutton, link,\n\t\tnext: first,\n\t};\n\tif (first) { first.last = btn; }\n\tfirst = btn;\n\tbuttons.set(page, btn);\n\tactivityContainer.insertBefore(button, activityContainer.firstChild);\n\n\teffect(() => {\n\t\tif (!page.current) { return; }\n\t\tsetTitle(page);\n\t}, page.signal);\n\teffect(() => { btn.link.innerText = page.title; }, page.signal);\n\teffect(() => { btn.link.href = page.href; }, page.signal);\n\n\teffect(() => {\n\t\tif (page.current) {\n\t\t\tbtn.button.classList.add(`${prefix}-current`);\n\t\t} else {\n\t\t\tbtn.button.classList.remove(`${prefix}-current`);\n\t\t}\n\t}, page.signal);\n\teffect(() => {\n\t\tif (page.loading) {\n\t\t\tbtn.button.classList.add(`${prefix}-loading`);\n\t\t} else {\n\t\t\tbtn.button.classList.remove(`${prefix}-loading`);\n\t\t}\n\t}, page.signal);\n\teffect(() => {\n\t\tif (page.unsaved) {\n\t\t\tbtn.button.classList.add(`${prefix}-unsaved`);\n\t\t} else {\n\t\t\tbtn.button.classList.remove(`${prefix}-unsaved`);\n\t\t}\n\t}, page.signal);\n\twaitAbortSignal(page.signal).then(() => {\n\t\tconst { last, next } = btn;\n\t\tif (last) { last.next = next; }\n\t\tif (next) { next.last = last; }\n\t\tif (first === btn) { first = next; }\n\t\tbtn.button.remove();\n\t});\n};\nexport default pageManager;\n","/** @import { FieldScriptConfiguration, ModelScriptConfiguration } from '@yongdall/web' */\nimport { createShowField, runPattern} from '@yongdall/web';\n\n\nexport default class List {\n\t/** @type {((id: string) => string)?} */\n\t#createUrl;\n\t/** @type {readonly [string, FieldScriptConfiguration][]} */\n\t#fieldsShow;\n\t/** @type {string} */\n\t#labelPattern;\n\t/** @type {string[]} */\n\t#idFields;\n\t/** @type {readonly any[]} */\n\t#documents = [];\n\t#table = document.createElement('table');\n\t#thead = this.#table.appendChild(document.createElement('thead'));\n\t#tr = this.#thead.appendChild(document.createElement('tr'));\n\t#tbody = this.#table.appendChild(document.createElement('tbody'));\n\tget root() { return this.#table }\n\tget createUrl() {\n\t\treturn this.#createUrl;\n\t}\n\tset createUrl(fn) {\n\t\tconst createUrl = typeof fn === 'function' ? fn : null;\n\t\tif (this.#createUrl === createUrl) { return }\n\t\tthis.#createUrl = createUrl;\n\t\tthis.#renderList();\n\t}\n\t/**\n\t * \n\t * @param {(id: string) => string} createUrl \n\t * @param {ModelScriptConfiguration} model \n\t */\n\tconstructor(createUrl, model) {\n\t\tconst fieldsShow = Object.entries(model.fields).filter(([,{type}]) => type && typeof type !== 'object');\n\t\tconst idFields = Object.entries(model.fields).filter(([,v]) => v.primary).map(([v]) => v);\n\t\tconst labelPattern = model.labelPattern || '';\n\t\tthis.#labelPattern = labelPattern;\n\t\tthis.#createUrl = typeof createUrl === 'function' ? createUrl : null;\n\t\tthis.#fieldsShow = fieldsShow;\n\t\tthis.#idFields = idFields;\n\t\tconst tr = this.#tr;\n\t\ttr.innerHTML = '';\n\t\tconst th = tr.appendChild(document.createElement('th'));\n\t\tth.appendChild(document.createTextNode('#'));\n\t\tfor (const [name,field] of fieldsShow) {\n\t\t\tconst th = tr.appendChild(document.createElement('th'));\n\t\t\tth.appendChild(document.createTextNode(field.label || name));\n\t\t}\n\t}\n\t#renderList() {\n\t\tconst tbody = this.#tbody;\n\t\ttbody.innerHTML = '';\n\t\tconst idFields = this.#idFields;\n\t\tconst labelPattern = this.#labelPattern;\n\t\tconst fieldsShow = this.#fieldsShow;\n\t\tconst createUrl = this.#createUrl;\n\t\tfor (const r of this.#documents) {\n\t\t\tconst tr = tbody.appendChild(document.createElement('tr'));\n\t\t\tconst td = tr.appendChild(document.createElement('td'));\n\t\t\tconst label = runPattern(labelPattern, r) || idFields.map(v => r[v]).join('$')\n\t\t\tif (createUrl) {\n\t\t\t\tconst a = td.appendChild(document.createElement('a'));\n\t\t\t\ta.href = createUrl(idFields.map(v => r[v]).join('$'));\n\t\t\t\ta.appendChild(document.createTextNode(label));\n\t\t\t} else {\n\t\t\t\ttd.appendChild(document.createTextNode(label));\n\t\t\t}\n\t\t\tfor (const [name,field] of fieldsShow) {\n\t\t\t\tconst td = tr.appendChild(document.createElement('td'));\n\t\t\t\tconst f = createShowField(name, field, {inline: true}, r);\n\t\t\t\ttd.appendChild(f.root);\n\t\t\t}\n\t\t}\n\t}\n\t/**\n\t * \n\t * @param {readonly any[]} list \n\t */\n\tsetData(list) {\n\t\tthis.#documents = list;\n\t\tthis.#renderList();\n\n\t}\n\tdestroy() {\n\t\t\n\t}\n}\n","/*!\n * 匿龙组件库 @neeloong/components v0.7.0\n * (c) 2023-2024 猛火Fierflame\n * @license MIT\n */\nconst style = `\\\n:host {\n\tdisplay: inline-block;\n\tcolor: #000;\n\tmargin: auto;\n\tposition: relative;\n\tborder-radius: 100%;\n\tborder: 1px solid;\n\twidth: 1em;\n\theight: 1em;\n}\n:host([hidden]) {\n\tdisplay: none;\n}\ndiv {\n\theight: 1px;\n\twidth: 50%;\n\tposition: absolute;\n\tbackground: currentColor;\n\tmargin: auto 0 auto auto;\n\ttop: 0;\n\tleft: 0;\n\tright: 0;\n\tbottom: 0;\n\tpointer-events: none;\n\ttransform-origin: left;\n}\n`;\nclass Angle extends HTMLElement {\n\t/** @readonly */\n\tstatic formAssociated = true;\n\t/** @readonly */\n\t#printer = document.createElement('div');\n\t/** @readonly */\n\t#internals = this.attachInternals();\n\tconstructor() {\n\t\tsuper();\n\t\tconst root = this.attachShadow({mode: 'closed'});\n\t\troot.appendChild(document.createElement('style')).textContent = style;\n\t\troot.appendChild(this.#printer);\n\t\t/**\n\t\t *\n\t\t * @param {PointerEvent} event\n\t\t * @returns {void}\n\t\t */\n\t\tconst onTouch = event => {\n\t\t\tif (!(event.buttons & 1)) { return; }\n\t\t\tconst { left, width, top, height } = this.getBoundingClientRect();\n\t\t\tconst x = event.clientX - left - width / 2;\n\t\t\tconst y = event.clientY - top - height / 2;\n\t\t\tconst value = Math.atan2(y, x) / Math.PI * 180;\n\t\t\tthis.value = Math.round(value);\n\t\t\tthis.dispatchEvent(new InputEvent('input'));\n\t\t\tthis.dispatchEvent(new InputEvent('change'));\n\t\t};\n\t\tthis.addEventListener('pointerdown', onTouch);\n\t\tthis.addEventListener('pointermove', onTouch);\n\t\tthis.value = this.getAttribute('value');\n\t}\n\t#value = 0;\n\t/** @type {number} */\n\tget value() {\n\t\treturn this.#value;\n\t}\n\t/**\n\t * @param {number | string | null} [v]\n\t */\n\tset value(v) {\n\t\tconst a = parseInt(String(v));\n\t\tif (!Number.isFinite(a)) { return; }\n\t\tthis.#value = a;\n\t\tthis.#printer.style.transform = `rotate(${a}deg)`;\n\t\tthis.#internals.setFormValue(String(a));\n\t}\n\tconnectedCallback() {\n\t\tif (this.getAttribute('tabindex') === null) {\n\t\t\tthis.setAttribute('tabindex', '0');\n\t\t}\n\t}\n}\n\ntry {\n\tcustomElements.define('nl-angle', Angle);\n} catch {}\n\nexport { Angle as default };\n","/*!\n * 匿龙组件库 @neeloong/components v0.7.0\n * (c) 2023-2024 猛火Fierflame\n * @license MIT\n */\nconst style = `::slotted(*)::after {content: var(--nl-breadcrumb-separator, ' / ');}`;\nconst styleOfLast = `::slotted(:last-child)::after {content: none}`;\n\nclass Breadcrumb extends HTMLElement {\n\tstatic observedAttributes = ['separator'];\n\t#style = document.createElement('style');\n\t/**\n\t *\n\t * @param {string | null} newVal\n\t * @returns {void}\n\t */\n\t#separator(newVal) {\n\t\tif (newVal === null) {\n\t\t\tthis.#style.textContent = '';\n\t\t\treturn;\n\t\t}\n\t\tconst content = JSON.stringify(newVal);\n\t\tconst style = `::slotted(*)::after {content: ${content}; }`;\n\t\tthis.#style.textContent = style;\n\t}\n\tconstructor() {\n\t\tsuper();\n\t\tconst shadow = this.attachShadow({mode:'closed'});\n\t\tshadow.appendChild(document.createElement('style'))\n\t\t\t.textContent = style;\n\t\tshadow.appendChild(this.#style);\n\t\tshadow.appendChild(document.createElement('style'))\n\t\t\t.textContent = styleOfLast;\n\t\tshadow.appendChild(document.createElement('slot'));\n\t}\n\t/**\n\t * 分隔符\n\t * @type {string | null}\n\t */\n\tget separator() { return this.getAttribute('separator'); }\n\tset separator(separator) {\n\t\tif (separator === undefined || separator === null) {\n\t\t\tthis.removeAttribute('separator');\n\t\t} else {\n\t\t\tthis.setAttribute('separator', separator);\n\t\t}\n\t}\n\tconnectedCallback() {\n\t\tthis.#separator(this.separator);\n\t}\n\t/**\n\t * @param {string} attrName\n\t * @param {string | null} oldVal\n\t * @param {string | null} newVal\n\t * @returns {void}\n\t */\n\tattributeChangedCallback(attrName, oldVal, newVal) {\n\t\tif (oldVal === newVal) { return; }\n\t\tswitch (attrName) {\n\t\t\tcase 'separator': {\n\t\t\t\tthis.#separator(newVal);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n}\n\ntry {\n\tcustomElements.define('nl-breadcrumb', Breadcrumb);\n} catch {}\n\nexport { Breadcrumb as default };\n","/*!\n * 匿龙组件库 @neeloong/components v0.7.0\n * (c) 2023-2024 猛火Fierflame\n * @license MIT\n */\nconst style = `\n[hidden]{\n\tdisplay: none!important;\n}\n:host {\n\tposition: relative;\n\tborder-block: 1px solid currentColor;\n\tdisplay: flex;\n\talign-items: center;\n\tline-height: 1.4;\n\toverflow: hidden;\n\tpadding: 8px;\n\tmin-block-size: 32px;\n\tfont-size: 14px;\n\ttext-decoration: none;\n}\n\n.icon {\n\tdisplay: block;\n\tmargin-inline-end: 5px;\n}\n\n.body {\n\tflex: 1;\n}\n\n.label {\n\tline-height: 24px;\n\tfont-size: 14px;\n}\n:host([bold]) .label {\n\tfont-weight: bold;\n}\n.explain {\n\tcolor: var(--nl-cell-explain-color, currentColor);\n}\n.explain:empty {\n\tdisplay: none;\n}\n.extra {\n\tdisplay: block;\n\tposition: relative;\n\ttext-align: end;\n}\n.link {\n\tdisplay: none;\n\tposition: relative;\n\tinline-size: 16px;\n\ttext-align: center;\n}\n.link::before {\n\tcontent: '';\n\ttransform: rotate(45deg);\n\tborder: 2px solid transparent;\n\tpointer-events: none;\n\tinline-size: 8px;\n\tblock-size: 8px;\n\tdisplay: inline-block;\n\tcolor: var(--nl-cell-link-color, #CCC);\n\tborder-block-start-color: currentColor;\n\tborder-inline-end-color: currentColor;\n}\n\n:host([link]) .link {\n\tdisplay: block;\n}\n\n`;\nclass Cell extends HTMLElement {\n\tstatic observedAttributes = ['label', 'explain'];\n\tget label() { return this.getAttribute('label') || ''; }\n\tset label(label) {\n\t\tif (label) {\n\t\t\tthis.setAttribute('label', label);\n\t\t} else {\n\t\t\tthis.removeAttribute('label');\n\t\t}\n\t}\n\tget explain() { return this.getAttribute('explain') || ''; }\n\tset explain(explain) {\n\t\tif (explain) {\n\t\t\tthis.setAttribute('explain', explain);\n\t\t} else {\n\t\t\tthis.removeAttribute('explain');\n\t\t}\n\t}\n\tget disabled() { return this.hasAttribute('disabled'); }\n\tset disabled(disabled) {\n\t\tif (disabled) {\n\t\t\tthis.setAttribute('disabled', '');\n\t\t} else {\n\t\t\tthis.removeAttribute('disabled');\n\t\t}\n\t}\n\t#label = document.createElement('div');\n\t#explain = document.createElement('div');\n\tconstructor() {\n\t\tsuper();\n\t\tconst shadow = this.attachShadow({mode:'closed'});\n\t\tshadow.appendChild(document.createElement('style')).textContent = style;\n\n\n\t\tshadow.addEventListener('click', e => {\n\t\t\tif (!this.disabled) { return; }\n\t\t\te.stopPropagation();\n\t\t\te.preventDefault();\n\t\t});\n\n\t\tconst iconSlot = shadow.appendChild(document.createElement('slot'));\n\t\ticonSlot.name = 'icon';\n\t\ticonSlot.className = 'icon';\n\t\ticonSlot.hidden = !iconSlot.assignedNodes().length;\n\t\ticonSlot.addEventListener('slotchange', e=> {\n\t\t\ticonSlot.hidden = !iconSlot.assignedNodes().length;\n\t\t});\n\n\t\tconst body = shadow.appendChild(document.createElement('div'));\n\t\tbody.className = 'body';\n\t\tconst label = body.appendChild(this.#label);\n\t\tlabel.className = 'label';\n\t\tconst explain = body.appendChild(this.#explain);\n\t\texplain.setAttribute('part', 'explain');\n\t\texplain.className = 'explain';\n\n\t\tconst extraSlot = shadow.appendChild(document.createElement('slot'));\n\t\textraSlot.name = 'extra';\n\t\textraSlot.className = 'extra';\n\t\textraSlot.hidden = !extraSlot.assignedNodes().length;\n\t\textraSlot.addEventListener('slotchange', e=> {\n\t\t\textraSlot.hidden = !extraSlot.assignedNodes().length;\n\t\t});\n\t\tconst link = shadow.appendChild(document.createElement('div'));\n\t\tlink.className = 'link';\n\t\tlink.setAttribute('part', 'link');\n\t}\n\t/**\n\t * @param {string} attrName\n\t * @param {string | null} oldVal\n\t * @param {string | null} newVal\n\t * @returns {void}\n\t */\n\tattributeChangedCallback(attrName, oldVal, newVal) {\n\t\tif (oldVal === newVal) { return; }\n\t\tswitch (attrName) {\n\t\t\tcase 'label': {\n\t\t\t\tthis.#label.innerText = newVal || '';\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase 'explain': {\n\t\t\t\tthis.#explain.innerText = newVal || '';\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n}\n\ntry {\n\tcustomElements.define('nl-cell', Cell);\n} catch {}\n\nexport { Cell as default };\n","/*!\n * 匿龙组件库 @neeloong/components v0.7.0\n * (c) 2023-2024 猛火Fierflame\n * @license MIT\n */\nconst style = `\n:host {\n\tdisplay: block;\n\tborder: 1px solid #666;\n\twriting-mode: inherit;\n}\n:host[hidden] {\n\tdisplay: none;\n}\nheader {\n\tdisplay: flex;\n\tborder-block-end: inherit;\n\tcursor: pointer;\n}\n.label {\n\tflex: 1;\n\tdisplay: flex;\n}\n.trigger {\n\twidth: .35em;\n\theight: .35em;\n\tborder: .15em solid currentcolor;\n\tborder-block-start: none;\n\tborder-inline-start: none;\n\tmargin-inline: .3em .5em;\n\tmargin-block: auto;\n\ttransform: rotate(-45deg);\n}\nsection {\n\toverflow: hidden;\n}\nmain {\n\tpadding: 8px;\n}\n\n:host(:not([open])) section {\n\tblock-size: 0!important;\n}\n:host(:not([open])) header {\n\tmargin-block-end: -1px;\n}\n\n:host([open]) .trigger {\n\ttransform: rotate(45deg);\n}\n\n\n:host([menu]) {\n\t\tborder: none;\n}\n:host([menu]) main {\n\tpadding: 0!important;\n}\n:host([menu]) header {\n\tmargin-block-end: 0;\n}\n:host([animation]) section {\n\ttransition: block-size .3s;\n}\n:host([animation]) .trigger {\n\ttransition: transform .3s;\n}\n:host([non-trigger]) .trigger-slot {\n\tdisplay: none;\n}\n\n:host([start-trigger]) header {\n\tflex-direction: row-reverse;\n}\n`;\n\nconst verticalWritingMode = new Set([\n\t'vertical-lr', 'vertical-rl', 'sideways-lr', 'sideways-rl',\n]);\n/**\n *\n * @param {HTMLElement} el\n * @param {string} name\n * @param {boolean} value\n */\nfunction setBoolAttribute(el, name, value) {\n\tif (value) {\n\t\tel.setAttribute(name, '');\n\t} else {\n\t\tel.removeAttribute(name);\n\t}\n}\nclass Collapse extends HTMLElement {\n\tstatic observedAttributes = ['accordion', 'disabled', 'open', 'menu', 'animation', 'label'];\n\t/** @type {boolean} 无折叠图标 */\n\tget nonTrigger() { return this.getAttribute('non-trigger') !== null; }\n\tset nonTrigger(value) { setBoolAttribute(this, 'non-trigger', value); }\n\t/** @type {boolean} 图标在开头 */\n\tget startTrigger() { return this.getAttribute('start-trigger') !== null; }\n\tset startTrigger(value) { setBoolAttribute(this, 'start-trigger', value); }\n\t/** @type {boolean} 手风琴 */\n\tget accordion() { return this.getAttribute('accordion') !== null; }\n\tset accordion(value) { setBoolAttribute(this, 'accordion', value); }\n\t/** @type {boolean} 禁用 */\n\tget disabled() { return this.getAttribute('disabled') !== null; }\n\tset disabled(value) { setBoolAttribute(this, 'disabled', value); }\n\t/** @type {boolean} 打开状态 */\n\tget open() { return this.getAttribute('open') !== null; }\n\tset open(value) { setBoolAttribute(this, 'open', value); }\n\t/** @type {boolean} 动画 */\n\tget animation() { return this.getAttribute('animation') !== null; }\n\tset animation(value) { setBoolAttribute(this, 'animation', value); }\n\t/** @type {boolean} 菜单模式 */\n\tget menu() { return this.getAttribute('menu') !== null; }\n\tset menu(value) { setBoolAttribute(this, 'menu', value); }\n\t/** @type {string} 标签 */\n\tget label() { return this.getAttribute('label') || ''; }\n\tset label(value) {\n\t\tif (value) {\n\t\t\tthis.setAttribute('label', value);\n\t\t} else {\n\t\t\tthis.removeAttribute('label');\n\t\t}\n\t}\n\n\n\t#shadow = (() => {\n\t\tconst shadow = this.attachShadow({mode:'closed'});\n\t\tshadow.appendChild(document.createElement('style')).textContent = style;\n\t\treturn shadow;\n\t})();\n\t#header = (() => {\n\t\tconst header = document.createElement('header');\n\t\theader.setAttribute('part', 'header');\n\t\tthis.#shadow.appendChild(header);\n\t\theader.tabIndex = 0;\n\t\t/** @param {Event} e */\n\t\tconst click = e => {\n\t\t\tif (this.disabled) { return; }\n\t\t\tif (this.#shadow.activeElement !== header) { return; }\n\t\t\tif (!this.dispatchEvent(new Event('beforechange', {cancelable: true}))) { return; }\n\t\t\tthis.open = !this.open;\n\t\t\tthis.dispatchEvent(new Event('change'));\n\t\t};\n\t\theader.addEventListener('click', click);\n\t\theader.addEventListener('keydown', e => {\n\t\t\tif (e.code === 'Enter' || e.code === 'Space') {\n\t\t\t\tclick();\n\t\t\t}\n\t\t});\n\t\treturn header;\n\t})();\n\t#label = (() => {\n\t\tconst slot = document.createElement('slot');\n\t\tthis.#header.appendChild(slot);\n\t\tslot.className = 'label';\n\t\tslot.name = 'label';\n\t\treturn slot;\n\t})();\n\t#trigger = (() => {\n\t\tconst slot = document.createElement('slot');\n\t\tthis.#header.appendChild(slot);\n\t\tslot.name = 'trigger';\n\t\tslot.className = 'trigger-slot';\n\t\tslot.appendChild(document.createElement('span')).className = 'trigger';\n\t\treturn slot;\n\t})();\n\n\t#body = (() => {\n\t\tconst body = document.createElement('section');\n\t\tbody.setAttribute('part', 'main');\n\t\tthis.#shadow.appendChild(body);\n\t\treturn body;\n\t})();\n\t#main = (() => {\n\t\tconst main = document.createElement('main');\n\t\tthis.#body.appendChild(main);\n\t\tmain.appendChild(document.createElement('slot'));\n\t\treturn main;\n\t})();\n\n\n\t#updateSize() {\n\t\tconst vertical = verticalWritingMode.has(getComputedStyle(this).writingMode?.toLowerCase());\n\t\tthis.#body.style.blockSize = `${vertical ? this.#main.clientWidth : this.#main.clientHeight}px`;\n\n\t}\n\tupdateSize() { this.#updateSize(); }\n\t/** @type {ResizeObserver} */\n\t#ro = new ResizeObserver(() => this.#updateSize());\n\t/**\n\t * @returns {void}\n\t */\n\tconnectedCallback() {\n\t\tthis.#ro.observe(this.#main);\n\t}\n\t/**\n\t * @returns {void}\n\t */\n\tdisconnectedCallback() {\n\t\tthis.#ro.unobserve(this.#main);\n\t}\n\t/**\n\t * @returns {void}\n\t */\n\tadoptedCallback() { }\n\t#closeOthersWhenOpen() {\n\t\tconst parent = this.parentElement;\n\t\tif (!parent) { return; }\n\t\tconst style = getComputedStyle(parent).whiteSpace?.toLowerCase() || '';\n\t\tconst pre = style.startsWith('pre') || style === 'break-spaces';\n\t\t/** @type {Node?} */\n\t\tlet node = this;\n\t\t// eslint-disable-next-line no-cond-assign\n\t\twhile (node = node.previousSibling) {\n\t\t\tif (node instanceof Comment) { continue; }\n\t\t\tif (node instanceof Text) {\n\t\t\t\tconst text = node.textContent || '';\n\t\t\t\tif (pre ? text.includes('\\n') : text.replace(/[\\s\\n ]/g, '')) { break; }\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (!(node instanceof Collapse)) { break; }\n\t\t\tif (!node.accordion) { break; }\n\t\t\tnode.open = false;\n\t\t}\n\t\tnode = this;\n\t\t// eslint-disable-next-line no-cond-assign\n\t\twhile (node = node.nextSibling) {\n\t\t\tif (node instanceof Comment) { continue; }\n\t\t\tif (node instanceof Text) {\n\t\t\t\tconst text = node.textContent || '';\n\t\t\t\tif (pre ? text.includes('\\n') : text.replace(/[\\s\\n ]/g, '')) { break; }\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (!(node instanceof Collapse)) { break; }\n\t\t\tif (!node.accordion) { break; }\n\t\t\tnode.open = false;\n\t\t}\n\t}\n\t/**\n\t * @param {string} attrName\n\t * @param {string | null} oldVal\n\t * @param {string | null} newVal\n\t * @returns {void}\n\t * @protected\n\t */\n\tattributeChangedCallback(attrName, oldVal, newVal) {\n\t\tif (oldVal === newVal) { return; }\n\t\tswitch (attrName) {\n\t\t\tcase 'accordion': {\n\t\t\t\tif (newVal === null) { break; }\n\t\t\t\tif (!this.open) { break; }\n\t\t\t\tthis.#closeOthersWhenOpen();\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase 'disabled': {\n\t\t\t\tif (newVal === null) {\n\t\t\t\t\tthis.#header.tabIndex = 0;\n\t\t\t\t} else {\n\t\t\t\t\tthis.#header.removeAttribute('tabindex');\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase 'open': {\n\t\t\t\tif (!this.accordion) { break; }\n\t\t\t\tif (!this.open) { break; }\n\t\t\t\tthis.#closeOthersWhenOpen();\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase 'label': {\n\t\t\t\tthis.#label.innerText = newVal || '';\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n}\n\ntry {\n\tcustomElements.define('nl-collapse', Collapse);\n} catch {}\n\nexport { Collapse as default };\n","/*!\n * 匿龙组件库 @neeloong/components v0.7.0\n * (c) 2023-2024 猛火Fierflame\n * @license MIT\n */\nconst style = `\n:host {\n\tdisplay: contents;\n\tcolor: inherit;\n}\ndiv {\n\tcolor: inherit;\n\twidth: 100%;\n\theight: 100%;\n\tposition: fixed;\n\tinset: 0;\n\tpointer-events: none;\n\tbackground: none;\n\tborder: none;\n\tmargin: 0;\n\tpadding: 0;\n\toverflow: hidden;\n}\nsvg {\n\tcolor: inherit;\n\twidth: 100%;\n\theight: 100%;\n\tposition: fixed;\n\tinset: 0;\n\tpointer-events: none;\n}\n`;\n\nconst hasPopover = typeof HTMLElement.prototype.showPopover === 'function';\n\nlet maskNextId = 0;\n/**\n * @typedef {object} Rect\n * @property {(x: number, y: number, w: number, h: number) => void} setRect\n */\n/**\n *\n * @param {Element} parent\n * @returns {Rect}\n */\nfunction createRect(parent) {\n\tconst svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n\tconst defs = document.createElementNS('http://www.w3.org/2000/svg', 'defs');\n\tconst mask = document.createElementNS('http://www.w3.org/2000/svg', 'mask');\n\tconst whiteRect = document.createElementNS('http://www.w3.org/2000/svg', 'rect');\n\tconst blackRect = document.createElementNS('http://www.w3.org/2000/svg', 'rect');\n\tconst bgRect = document.createElementNS('http://www.w3.org/2000/svg', 'rect');\n\tconst g = document.createElementNS('http://www.w3.org/2000/svg', 'g');\n\tconst rect1 = document.createElementNS('http://www.w3.org/2000/svg', 'rect');\n\tconst rect2 = document.createElementNS('http://www.w3.org/2000/svg', 'rect');\n\tconst rect3 = document.createElementNS('http://www.w3.org/2000/svg', 'rect');\n\tconst rect4 = document.createElementNS('http://www.w3.org/2000/svg', 'rect');\n\n\tconst maskId = `nl-focus-mask:${maskNextId++}`;\n\tsvg.appendChild(defs);\n\tdefs.appendChild(mask);\n\tmask.setAttribute('id', maskId);\n\tmask.appendChild(whiteRect);\n\twhiteRect.setAttribute('x', '0');\n\twhiteRect.setAttribute('y', '0');\n\twhiteRect.setAttribute('width', '100vw');\n\twhiteRect.setAttribute('height', '100vh');\n\twhiteRect.setAttribute('fill', 'white');\n\tmask.appendChild(blackRect);\n\tblackRect.setAttribute('x', '0');\n\tblackRect.setAttribute('y', '0');\n\tblackRect.setAttribute('width', '100vw');\n\tblackRect.setAttribute('height', '100vh');\n\tblackRect.setAttribute('fill', 'black');\n\tsvg.appendChild(bgRect);\n\tbgRect.setAttribute('x', '0');\n\tbgRect.setAttribute('y', '0');\n\tbgRect.setAttribute('width', '100%');\n\tbgRect.setAttribute('height', '100%');\n\tbgRect.setAttribute('fill', 'currentcolor');\n\tbgRect.setAttribute('mask', `url(#${maskId})`);\n\tsvg.appendChild(g);\n\tg.setAttribute('pointer-events', 'auto');\n\tg.setAttribute('fill', 'transparent');\n\tg.appendChild(rect1);\n\trect1.setAttribute('x', '0');\n\trect1.setAttribute('y', '0');\n\trect1.setAttribute('width', '100%');\n\trect1.setAttribute('height', '100%');\n\tg.appendChild(rect2);\n\trect2.setAttribute('x', '0');\n\trect2.setAttribute('y', '0');\n\trect2.setAttribute('width', '100%');\n\trect2.setAttribute('height', '100%');\n\tg.appendChild(rect3);\n\trect3.setAttribute('x', '0');\n\trect3.setAttribute('y', '0');\n\trect3.setAttribute('width', '100%');\n\trect3.setAttribute('height', '100%');\n\tg.appendChild(rect4);\n\trect4.setAttribute('x', '0');\n\trect4.setAttribute('y', '0');\n\trect4.setAttribute('width', '100%');\n\trect4.setAttribute('height', '100%');\n\tparent.appendChild(svg);\n\treturn {\n\t\tsetRect(x, y, w, h) {\n\t\t\tblackRect.setAttribute('x', `${x}`);\n\t\t\tblackRect.setAttribute('y', `${y}`);\n\t\t\tblackRect.setAttribute('width', `${w}`);\n\t\t\tblackRect.setAttribute('height', `${h}`);\n\t\t\trect1.setAttribute('width', `${x}`);\n\t\t\trect2.setAttribute('height', `${y}`);\n\t\t\trect3.setAttribute('x', `${x + w}`);\n\t\t\trect4.setAttribute('y', `${y + h}`);\n\t\t},\n\t};\n}\n\nclass Focus extends HTMLElement {\n\tstatic observedAttributes = ['hidden', 'target', 'x', 'y', 'width', 'height'];\n\tget x() { return parseFloat(this.getAttribute('x') || '') || 0; }\n\tset x(x) {\n\t\tif (x && typeof x === 'number' && Number.isFinite(x)) {\n\t\t\tthis.setAttribute('x', String(x));\n\t\t} else {\n\t\t\tthis.removeAttribute('x');\n\t\t}\n\t}\n\tget y() { return parseFloat(this.getAttribute('y') || '') || 0; }\n\tset y(y) {\n\t\tif (y && typeof y === 'number' && Number.isFinite(y)) {\n\t\t\tthis.setAttribute('y', String(y));\n\t\t} else {\n\t\t\tthis.removeAttribute('y');\n\t\t}\n\t}\n\tget width() { return parseFloat(this.getAttribute('width') || '') || 0; }\n\tset width(width) {\n\t\tif (width && typeof width === 'number' && Number.isFinite(width)) {\n\t\t\tthis.setAttribute('width', String(width));\n\t\t} else {\n\t\t\tthis.removeAttribute('width');\n\t\t}\n\t}\n\tget height() { return parseFloat(this.getAttribute('height') || '') || 0; }\n\tset height(height) {\n\t\tif (height && typeof height === 'number' && Number.isFinite(height)) {\n\t\t\tthis.setAttribute('height', String(height));\n\t\t} else {\n\t\t\tthis.removeAttribute('height');\n\t\t}\n\t}\n\tget target() { return this.getAttribute('target'); }\n\tset target(target) {\n\t\tif (typeof target !== 'string') {\n\t\t\tthis.removeAttribute('target');\n\t\t} else {\n\t\t\tthis.setAttribute('target', target);\n\t\t}\n\t}\n\t#shadow = (() => {\n\t\tconst shadow = this.attachShadow({ mode: 'closed' });\n\t\tshadow.appendChild(document.createElement('style')).textContent = style;\n\t\treturn shadow;\n\t})();\n\t#main = this.#shadow.appendChild(document.createElement('div'));\n\t#svg = createRect(this.#main);\n\t#internals = this.attachInternals();\n\n\t/** @type {Element?} */\n\t#target = null;\n\tget targetElement() { return this.#target; }\n\tset targetElement(el) { this.#target = el instanceof Element ? el : null; }\n\t#open = false;\n\t#mounted = false;\n\t#close() {\n\t\tif (!this.#open) { return; }\n\t\tthis.#main.removeAttribute('popover');\n\t\tthis.#open = false;\n\t}\n\t#show() {\n\t\tif (this.#open || !this.#mounted) { return; }\n\t\tif (hasPopover) {\n\t\t\tconst dialog = this.#main;\n\t\t\tdialog.popover = 'manual';\n\t\t\tdialog.showPopover();\n\t\t}\n\t\tthis.update();\n\t\tthis.#open = true;\n\t}\n\t#getTarget() {\n\t\tconst targetElement = this.#target;\n\t\tif (targetElement) { return targetElement; }\n\t\tconst {target} = this;\n\t\tif (target === '') { return this.parentElement; }\n\t\tif (!target) { return null; }\n\t\ttry { return document.querySelector(target); } catch {}\n\t\treturn null;\n\t}\n\tupdate() {\n\t\tif (!this.#mounted) { return; }\n\t\tconst target = this.#getTarget();\n\t\tconst {\n\t\t\tleft, top, width, height,\n\t\t} = target?.getBoundingClientRect() || {\n\t\t\ttop: this.y, left: this.x, width: this.width, height: this.height,\n\t\t};\n\t\tthis.#svg.setRect(left, top, width, height);\n\t}\n\tconnectedCallback() {\n\t\tthis.#mounted = true;\n\t\tif (this.hidden) { return; }\n\t\tthis.#show();\n\t}\n\tdisconnectedCallback() {\n\t\tthis.#mounted = false;\n\t}\n\t/**\n\t * @param {string} attrName\n\t * @param {string | null} oldVal\n\t * @param {string | null} newVal\n\t * @returns {void}\n\t */\n\tattributeChangedCallback(attrName, oldVal, newVal) {\n\t\tif (!this.#mounted) { return; }\n\t\tif (oldVal === newVal) { return; }\n\t\tswitch (attrName) {\n\t\t\tcase 'hidden': {\n\t\t\t\tif (newVal !== null) {\n\t\t\t\t\tthis.#close();\n\t\t\t\t} else {\n\t\t\t\t\tthis.#show();\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase 'target': case 'x': case 'y': case 'width': case 'height': {\n\t\t\t\tthis.update();\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n}\n\ntry {\n\tcustomElements.define('nl-focus', Focus);\n} catch {}\n\nexport { Focus as default };\n","/*!\n * 匿龙组件库 @neeloong/components v0.7.0\n * (c) 2023-2024 猛火Fierflame\n * @license MIT\n */\nconst style = `\n:host {\n\tdisplay: inline-flex;\n\tflex-direction: row;\n}\n\n:host([column]) {\n\tflex-direction: column;\n}\nslot {\n\tborder-radius: inherit;\n}\n::slotted(*) {\n\tborder-radius: 0;\n\tflex: 1;\n}\n::slotted(:first-child) {\n\tborder-start-start-radius: inherit;\n\tborder-end-start-radius: inherit;\n}\n\n::slotted(:last-child) {\n\tborder-start-end-radius: inherit;\n\tborder-end-end-radius: inherit;\n}\n\n:host([column]) ::slotted(:first-child) {\n\tborder-end-start-radius: 0;\n\tborder-start-end-radius: inherit;\n}\n\n:host([column]) ::slotted(:last-child) {\n\tborder-start-end-radius: 0;\n\tborder-end-start-radius: inherit;\n}\n\n:host([nl-long]) {\n\tdisplay: flex;\n\tinline-size: 100%;\n}\n::slotted([nl-long]) {\n\tflex: 100000;\n}\n`;\n\nclass Group extends HTMLElement {\n\tstatic observedAttributes = ['radius', 'unit'];\n\tget radius() {\n\t\tconst radius = parseFloat(this.getAttribute('radius') || '');\n\t\tif (Number.isNaN(radius)) { return 0; }\n\t\tif (!Number.isFinite(radius)) { return 0; }\n\t\treturn radius < 0 ? -1 : radius;\n\t}\n\tset radius(radius) {\n\t\tif (typeof radius !== 'number' || !Number.isFinite(radius)) {\n\t\t\tthis.removeAttribute('radius');\n\t\t} else {\n\t\t\tthis.setAttribute('radius', radius < 0 ? '-1' : String(radius));\n\t\t}\n\t}\n\tget unit() { return this.getAttribute('unit') || 'px'; }\n\tset unit(unit) {\n\t\tif (unit) {\n\t\t\tthis.setAttribute('unit', unit);\n\t\t} else {\n\t\t\tthis.removeAttribute('unit');\n\t\t}\n\t}\n\tget long() { return this.hasAttribute('nl-long'); }\n\tset long(long) {\n\t\tif (long) {\n\t\t\tthis.setAttribute('nl-long', '');\n\t\t} else {\n\t\t\tthis.removeAttribute('nl-long');\n\t\t}\n\t}\n\tget column() { return this.hasAttribute('column'); }\n\tset column(column) {\n\t\tif (column) {\n\t\t\tthis.setAttribute('column', '');\n\t\t} else {\n\t\t\tthis.removeAttribute('column');\n\t\t}\n\t}\n\n\n\t#style = document.createElement('style');\n\tconstructor() {\n\t\tsuper();\n\t\tconst shadow = this.attachShadow({mode:'closed'});\n\t\tshadow.appendChild(document.createElement('style')).textContent = style;\n\t\tshadow.appendChild(this.#style);\n\t\tshadow.appendChild(document.createElement('slot'));\n\t\tthis.#updateStyle();\n\t}\n\t#updateStyle() {\n\t\tconst {radius} = this;\n\t\tconst value = radius >= 0 ? `${radius}${this.unit}` : '50%';\n\t\tthis.#style.textContent =\n\t\t\t`:host {border-radius: var(--nl-group-radius, ${value})}`;\n\n\t}\n\t/**\n\t * @param {string} attrName\n\t * @param {string | null} oldVal\n\t * @param {string | null} newVal\n\t * @returns {void}\n\t */\n\tattributeChangedCallback(attrName, oldVal, newVal) {\n\t\tif (oldVal === newVal) { return; }\n\t\tswitch (attrName) {\n\t\t\tcase 'radius': case 'unit': {\n\t\t\t\tthis.#updateStyle();\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n}\n\ntry {\n\tcustomElements.define('nl-group', Group);\n} catch {}\n\nexport { Group as default };\n","/*!\n * 匿龙组件库 @neeloong/components v0.7.0\n * (c) 2023-2024 猛火Fierflame\n * @license MIT\n */\nconst style = `\n:host {\n\tdisplay: contents;\n}\ndiv {\n\tdisplay: flex;\n\tflex-wrap: nowrap;\n\tflex-direction: row;\n\talign-items: stretch;\n}\ndiv[hidden] {\n\tdisplay: none;\n}\ndiv slot {\n\tdisplay: inline;\n\tflex: 1;\n}\ndiv::after {\n\tcontent: '';\n\twidth: 0;\n\theight: 0;\n\tbox-sizing: content-box;\n\tborder: transparent solid 0.3em;\n\tborder-inline-start-color: currentColor;\n\tmargin: auto;\n\tmargin-inline-start: 0.3em;\n}\ndialog {\n\tposition: fixed;\n\tmargin: 0;\n\tbox-sizing: border-box;\n\tmax-width: calc(100% - 36px);\n\tmax-height: calc(100% - 36px);\n\tuser-select: none;\n\tpadding: .2em;\n\tborder: 1px solid;\n\toutline: none;\n}\ndiv, dialog ::slotted(*) {\n\tcolor: var(--neeloong-menu-fg, #000);\n\tbackground: var(--neeloong-menu-bg, #FFF);\n}\ndiv.open, div:hover, div:focus, dialog ::slotted(:hover), dialog ::slotted(:focus) {\n\tcolor: var(--neeloong-menu-fg-highlight, #000);\n\tbackground: var(--neeloong-menu-bg-highlight, #6666);\n}\n:host([disabled]) div, dialog ::slotted([disabled]) {\n\tcolor: var(--neeloong-menu-fg-disabled, #AAA);\n\tbackground: var(--neeloong-menu-bg-disabled, #FFF);\n}\n\ndialog::backdrop {\n\tbackground: transparent;\n}\n`;\n\nconst openMenus = new Set();\ndocument.addEventListener('pointerdown', e => {\n\tif (!e.isPrimary) { return; }\n\tconst els = new Set(e.composedPath());\n\tfor (const menu of [...openMenus]) {\n\t\tif (els.has(menu)) { continue; }\n\t\tmenu.close();\n\t}\n});\nconst verticalWritingMode = new Set([\n\t'vertical-lr', 'vertical-rl', 'sideways-lr', 'sideways-rl',\n]);\n\nconst hasPopover = typeof HTMLElement.prototype.showPopover === 'function';\n/**\n *\n * @param {object} option\n * @param {number} option.left\n * @param {number} option.top\n * @param {number} option.width\n * @param {number} option.height\n * @param {boolean} rowVertical\n * @param {boolean} rowReverse\n * @param {boolean} colReverse\n * @returns {[[number, number, number], [number, number, number]]}\n */\nfunction getSize({left, top, width, height}, rowVertical, rowReverse, colReverse) {\n\tconst right = window.innerWidth - left - width;\n\tconst bottom = window.innerHeight - top - height;\n\t/** @type {[[number, number, number], [number, number, number]]} */\n\tconst size = [\n\t\t[left, width, right],\n\t\t[top, height, bottom],\n\t];\n\tif (rowVertical) { size.reverse(); }\n\tif (rowReverse) { size[1].reverse(); }\n\tif (colReverse) { size[0].reverse(); }\n\n\treturn size;\n\n}\nconst directionDefault = ['blockEnd', 'blockStart', 'inlineEnd', 'inlineStart'];\nconst alignDefault = ['start', 'end', 'center'];\n\nconst subMenuDirection = ['inlineEnd', 'inlineStart'];\nconst subMenuAlign = ['start', 'end'];\n\n/**\n *\n * @param {string?} [val]\n * @returns {string[]}\n */\nfunction getDirections(val) {\n\t/** @type {string[]} */\n\tconst direction = [];\n\t/**\n\t *\n\t * @param {string} v\n\t */\n\tfunction add(v) {\n\t\tif (direction.includes(v)) { return; }\n\t\tdirection.push(v);\n\t}\n\tfor (const v of (val || '').replace(/\\n|\\s|-/g, '').toLowerCase().split(/,/)) {\n\t\tif (v === 'inlineend' || v === 'inline') { add('inlineEnd'); }\n\t\tif (v === 'inlinestart' || v === 'inline') { add('inlineStart'); }\n\t\tif (v === 'blockend' || v === 'block') { add('blockEnd'); }\n\t\tif (v === 'blockstart' || v === 'block') { add('blockStart'); }\n\t}\n\treturn direction.length ? direction : directionDefault;\n}\n/**\n *\n * @param {string?} [val]\n * @returns {string[]}\n */\nfunction getAligns(val) {\n\t/** @type {string[]} */\n\tconst align = [];\n\tfor (const v of (val || '').replace(/\\n|\\s|-/g, '').toLowerCase().split(/,/)) {\n\t\tif (!['start', 'end', 'center'].includes(v)) { continue; }\n\t\tif (align.includes(v)) { continue; }\n\t\talign.push(v);\n\t}\n\treturn align.length ? align : alignDefault;\n}\n/**\n *\n * @param {Element} root\n * @returns {[boolean, boolean, boolean]}\n */\nfunction getLayout(root) {\n\tconst style = getComputedStyle(root);\n\tconst writingMode = style.writingMode?.toLowerCase();\n\tconst vertical = verticalWritingMode.has(writingMode);\n\tconst rowReverse = ['vertical-rl', 'sideways-rl'].includes(writingMode);\n\tconst colReverse = style.direction.toLowerCase() === 'rtl' !== (writingMode === 'sideways-lr');\n\treturn [vertical, rowReverse, colReverse];\n}\n\nclass Menu extends HTMLElement {\n\tstatic observedAttributes = ['open', 'hidden', 'target', 'x', 'y', 'direction', 'align', 'mask', 'disabled'];\n\tclose() { this.removeAttribute('open'); }\n\tshow() { this.setAttribute('open', ''); }\n\tget open() { return this.hasAttribute('open'); }\n\tset open(open) { if (open) { this.show(); } else { this.close(); } }\n\tget disabled() { return this.hasAttribute('disabled'); }\n\tset disabled(disabled) {\n\t\tif (disabled) {\n\t\t\tthis.setAttribute('disabled', '');\n\t\t} else {\n\t\t\tthis.removeAttribute('disabled');\n\t\t}\n\t}\n\tget mask() { return this.hasAttribute('mask'); }\n\tset mask(mask) {\n\t\tif (mask) {\n\t\t\tthis.setAttribute('mask', '');\n\t\t} else {\n\t\t\tthis.removeAttribute('mask');\n\t\t}\n\t}\n\tget x() { return parseFloat(this.getAttribute('x') || '') || 0; }\n\tset x(x) {\n\t\tif (x && typeof x === 'number' && Number.isFinite(x)) {\n\t\t\tthis.setAttribute('x', String(x));\n\t\t} else {\n\t\t\tthis.removeAttribute('x');\n\t\t}\n\t}\n\tget y() { return parseFloat(this.getAttribute('y') || '') || 0; }\n\tset y(y) {\n\t\tif (y && typeof y === 'number' && Number.isFinite(y)) {\n\t\t\tthis.setAttribute('y', String(y));\n\t\t} else {\n\t\t\tthis.removeAttribute('y');\n\t\t}\n\t}\n\tget target() { return this.getAttribute('target'); }\n\tset target(target) {\n\t\tif (typeof target !== 'string') {\n\t\t\tthis.removeAttribute('target');\n\t\t} else {\n\t\t\tthis.setAttribute('target', target);\n\t\t}\n\t}\n\t#direction = directionDefault;\n\t#align = alignDefault;\n\tget direction() { return [...this.#direction]; }\n\tset direction(v) {\n\t\tconst direction = Array.isArray(v) ? v.filter(Boolean).join(',') : v;\n\t\tif (direction !== null && typeof direction !== 'string') { return; }\n\t\tif (!direction) {\n\t\t\tthis.removeAttribute('direction');\n\t\t} else {\n\t\t\tthis.setAttribute('direction', direction);\n\t\t}\n\t}\n\tget align() { return [...this.#align]; }\n\tset align(v) {\n\t\tconst align = Array.isArray(v) ? v.filter(Boolean).join(',') : v;\n\t\tif (align !== null && typeof align !== 'string') { return; }\n\t\tif (!align) {\n\t\t\tthis.removeAttribute('direction');\n\t\t} else {\n\t\t\tthis.setAttribute('direction', align);\n\t\t}\n\t}\n\n\t#label = document.createElement('div');\n\t#dialog = document.createElement('dialog');\n\t#internals = this.attachInternals();\n\t/** @type {Menu} */\n\t#root = this;\n\tconstructor() {\n\t\tsuper();\n\t\tconst shadow = this.attachShadow({ mode: 'closed' });\n\t\tshadow.appendChild(document.createElement('style')).textContent = style;\n\n\t\tconst label = shadow.appendChild(this.#label);\n\t\tlabel.appendChild(document.createElement('slot')).name = 'label';\n\n\t\tlabel.addEventListener('pointerenter', e=> {\n\t\t\tif (!this.#parentMenu) { return; }\n\t\t\tif (!e.isPrimary) { return; }\n\t\t\tthis.#show();\n\t\t});\n\t\tlabel.addEventListener('click', e=> { e.stopPropagation(); });\n\n\t\tconst dialog = shadow.appendChild(this.#dialog);\n\t\tdialog.setAttribute('part', 'menu');\n\t\tconst dialogSlot = dialog.appendChild(document.createElement('slot'));\n\t\tdialog.addEventListener('click', e => {\n\t\t\tif (this.#parentMenu) { return; }\n\t\t\tconst list = e.composedPath();\n\t\t\tconst index = list.indexOf(dialog);\n\t\t\tif (index >= 0 && list.slice(0, index).find(v => v instanceof Element && v.getAttribute('disabled') !== null || v instanceof HTMLHRElement)) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis.close();\n\t\t});\n\t\tdialog.addEventListener('close', e=> { this.close(); });\n\t\tdialogSlot.addEventListener('pointermove', e => {\n\t\t\tif (!e.isPrimary) { return; }\n\t\t\tconst currentSubMenu = this.#currentSubMenu;\n\t\t\tif (!currentSubMenu) { return; }\n\t\t\tif (e.composedPath().includes(currentSubMenu)) { return; }\n\t\t\tcurrentSubMenu.#close();\n\t\t});\n\t\tdialog.addEventListener('scroll', e=> {\n\t\t\tif (!this.#mounted) { return; }\n\t\t\tconst currentSubMenu = this.#currentSubMenu;\n\t\t\tif (currentSubMenu) {\n\t\t\t\tcurrentSubMenu.#update();\n\t\t\t}\n\t\t});\n\t\tthis.addEventListener('contextmenu', e=> {\n\t\t\te.stopPropagation();\n\t\t\te.preventDefault();\n\t\t}, {capture: true});\n\t}\n\n\t/** @type {Element?} */\n\t#target = null;\n\tget targetElement() { return this.#target; }\n\tset targetElement(el) { this.#target = el instanceof Element ? el : null; }\n\t#open = false;\n\t#mounted = false;\n\t/** @type {Menu?} */\n\t#currentSubMenu = null;\n\t/** @type {Menu?} */\n\t#parentMenu = null;\n\tget parentMenu() { return this.#parentMenu; }\n\t#close() {\n\t\tif (!this.#open) { return; }\n\t\tconst subMenu = this.#currentSubMenu;\n\t\tif (subMenu) { subMenu.#close(); }\n\t\tconst parent = this.#parentMenu;\n\t\tif (parent && parent.#currentSubMenu === this) {\n\t\t\tparent.#currentSubMenu = null;\n\t\t} else {\n\t\t\topenMenus.delete(this);\n\t\t}\n\t\tconst dialog = this.#dialog;\n\t\tdialog.close();\n\n\t\t// @ts-ignore\n\t\tthis.#internals.states?.delete('--open');\n\t\tthis.#label.classList.remove('open');\n\t\tdialog.removeAttribute('popover');\n\t\tthis.#open = false;\n\t}\n\t#show() {\n\t\tif (this.#open || !this.#mounted) { return; }\n\t\tconst parent = this.#parentMenu;\n\t\tconst dialog = this.#dialog;\n\t\tif (parent) {\n\t\t\tif (!parent.#open || this.disabled) { return; }\n\t\t\tconst currentSubMenu = parent.#currentSubMenu;\n\t\t\tif (currentSubMenu) {\n\t\t\t\tcurrentSubMenu.#close();\n\t\t\t}\n\t\t\tparent.#currentSubMenu = this;\n\t\t\tif (hasPopover) {\n\t\t\t\tdialog.popover = 'manual';\n\t\t\t\tdialog.showPopover();\n\t\t\t} else {\n\t\t\t\tdialog.show();\n\t\t\t}\n\t\t} else {\n\t\t\tthis.#updateLayout();\n\t\t\tconst subMenu = this.#currentSubMenu;\n\t\t\tif (subMenu) { subMenu.#close(); }\n\t\t\tif (hasPopover && !this.hasAttribute('mask')) {\n\t\t\t\tdialog.popover = 'manual';\n\t\t\t\tdialog.showPopover();\n\t\t\t\topenMenus.add(this);\n\t\t\t} else {\n\t\t\t\tdialog.showModal();\n\t\t\t}\n\t\t}\n\t\tthis.#label.classList.add('open');\n\t\t// @ts-ignore\n\t\tthis.#internals.states?.add('--open');\n\t\trequestAnimationFrame(() => { if (this.#mounted) { this.#update(); } });\n\t\tthis.#open = true;\n\t}\n\t#rowVertical = false;\n\t#rowReverse = false;\n\t#colReverse = false;\n\t#getTarget() {\n\t\tif (this.#parentMenu) { return this.#label; }\n\t\tconst targetElement = this.#target;\n\t\tif (targetElement) { return targetElement; }\n\t\tconst {target} = this;\n\t\tif (target === '') { return this.parentElement; }\n\t\tif (!target) { return null; }\n\t\ttry { return document.querySelector(target); } catch {}\n\t\treturn null;\n\t}\n\t#update() {\n\t\tif (!this.#mounted) { return; }\n\t\tconst dialog = this.#dialog;\n\t\tconst target = this.#getTarget();\n\t\tconst root = this.#root;\n\t\tconst rowVertical = root.#rowVertical;\n\t\tconst size = getSize(\n\t\t\ttarget?.getBoundingClientRect() || {top: this.y, left: this.x, width: 0, height: 0},\n\t\t\troot.#rowVertical,\n\t\t\troot.#rowReverse,\n\t\t\troot.#colReverse,\n\t\t);\n\t\tconst [[inlineStart, inlineSize, inlineEnd], [blockStart, blockSize, blockEnd]] = size;\n\t\tconst [d, s] = this.#parentMenu ? [subMenuDirection, subMenuAlign] : [this.#direction, this.#align];\n\t\tconst rect = dialog.getBoundingClientRect();\n\t\tconst inline = rowVertical ? rect.height : rect.width;\n\t\tconst block = rowVertical ? rect.width : rect.height;\n\t\t/** @type {[string, number, number][]} */\n\t\tconst dirs = d.map(d => {\n\t\t\tswitch (d) {\n\t\t\t\tcase 'blockStart': return [d, blockStart / block, 1];\n\t\t\t\tcase 'blockEnd': return [d, blockEnd / block, 1];\n\t\t\t\tcase 'inlineStart': return [d, 1, inlineStart / inline];\n\t\t\t\tdefault: return ['inlineEnd', 1, inlineEnd / inline];\n\t\t\t}\n\t\t});\n\n\t\tconst [dir] = dirs.reduce((r, d) => {\n\t\t\tif (r[1] < 1 && d[1] < 1) { return r[1] >= d[1] ? r : d; }\n\t\t\tif (r[1] >= 1 && d[1] < 1) { return r; }\n\t\t\tif (d[1] >= 1 && r[1] < 1) { return d; }\n\t\t\tif (r[2] >= 1 || r[2] >= d[2]) { return r; }\n\t\t\treturn d;\n\t\t});\n\t\tconst blockDir = dir === 'blockEnd' || dir === 'blockStart';\n\t\tif (blockDir) { size.reverse(); }\n\t\tconst [[inlineStartX, inlineSizeX, inlineEndX], [blockStartX, blockSizeX, blockEndX]] = size;\n\t\tconst [rowSize, colSize] = blockDir ? [inline, block] : [block, inline];\n\t\tconst align = s.find(a => a === 'start' ? blockSizeX + blockEndX > rowSize : a === 'end' ? blockSizeX + blockStartX > rowSize : true) || '';\n\n\t\tlet insetInlineStart = dir === 'inlineStart' || dir === 'blockStart' ? inlineStartX - colSize : inlineStartX + inlineSizeX;\n\t\tlet insetBlockStart = 0;\n\t\tswitch (align) {\n\t\t\tcase 'start':\n\t\t\t\tinsetBlockStart = blockStartX;\n\t\t\t\tbreak;\n\t\t\tcase 'end':\n\t\t\t\tinsetBlockStart = blockStartX + blockSizeX - rowSize;\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tinsetBlockStart = Math.max(18, Math.min(blockStartX + blockSizeX / 2 - rowSize / 2, blockStartX + blockSizeX + blockEndX - 18 - rowSize));\n\t\t\t\tbreak;\n\t\t}\n\n\t\tif (blockDir) {\n\t\t\t[insetInlineStart, insetBlockStart] = [insetBlockStart, insetInlineStart];\n\t\t}\n\t\tdialog.style.insetBlockStart = `${insetBlockStart}px`;\n\t\tdialog.style.insetInlineStart = `${insetInlineStart}px`;\n\n\t\tconst currentSubMenu = this.#currentSubMenu;\n\t\tif (!currentSubMenu) { return; }\n\t\tcurrentSubMenu.#update();\n\t}\n\tupdate() {\n\t\tif (!this.#mounted) { return; }\n\t\treturn this.#update();\n\n\t}\n\t#updateLayout() {\n\t\tconst [rowVertical, rowReverse, colReverse] = getLayout(this);\n\t\tthis.#rowVertical = rowVertical;\n\t\tthis.#rowReverse = rowReverse;\n\t\tthis.#colReverse = colReverse;\n\t}\n\tconnectedCallback() {\n\t\tthis.#mounted = true;\n\t\tconst parent = this.parentNode;\n\t\tconst parentMenu = parent instanceof Menu ? parent : null;\n\t\tthis.#parentMenu = parentMenu;\n\t\tthis.#root = parentMenu ? parentMenu.#root : this;\n\n\t\tthis.#label.hidden = !parentMenu;\n\t\tconst open = !this.hidden && (parentMenu ? parentMenu.#open : false);\n\t\tif (open) {\n\t\t\tthis.#show();\n\t\t}\n\t}\n\tdisconnectedCallback() {\n\t\tthis.close();\n\t\tthis.#root = this;\n\t\tthis.#mounted = false;\n\t\tthis.#parentMenu = null;\n\t}\n\t/**\n\t * @param {string} attrName\n\t * @param {string | null} oldVal\n\t * @param {string | null} newVal\n\t * @returns {void}\n\t */\n\tattributeChangedCallback(attrName, oldVal, newVal) {\n\t\tif (!this.#mounted) { return; }\n\t\tif (oldVal === newVal) { return; }\n\t\tswitch (attrName) {\n\t\t\tcase 'disabled': {\n\t\t\t\tif (this.#mounted && this.open && newVal !== null) {\n\t\t\t\t\tthis.close();\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase 'open': {\n\t\t\t\tif (!this.#parentMenu && !this.hidden) {\n\t\t\t\t\tif (newVal === null) {\n\t\t\t\t\t\tthis.#close();\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.#show();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase 'mask': {\n\t\t\t\tif (newVal !== null) {\n\t\t\t\t\tconst dialog = this.#dialog;\n\t\t\t\t\tif (dialog.getAttribute('popover') !== null) {\n\t\t\t\t\t\tdialog.removeAttribute('popover');\n\t\t\t\t\t\tthis.close();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase 'hidden': {\n\t\t\t\tif (newVal !== null) {\n\t\t\t\t\tthis.#close();\n\t\t\t\t} else if (this.open && !this.#parentMenu) {\n\t\t\t\t\tthis.#show();\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase 'direction': {\n\t\t\t\tthis.#direction = getDirections(newVal);\n\t\t\t\tif (this.#mounted && !this.#parentMenu) { this.#update(); }\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase 'align': {\n\t\t\t\tthis.#align = getAligns(newVal);\n\t\t\t\tif (this.#mounted && !this.#parentMenu) { this.#update(); }\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase 'target': case 'x': case 'y': {\n\t\t\t\tif (this.#mounted && !this.#parentMenu) { this.#update(); }\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n}\n\ntry {\n\tcustomElements.define('nl-menu', Menu);\n} catch {}\n\nexport { Menu as default };\n","/*!\n * 匿龙组件库 @neeloong/components v0.7.0\n * (c) 2023-2024 猛火Fierflame\n * @license MIT\n */\nconst style = `\n:host {\n\ttransition-property: none;\n\ttransition-duration: .5s;\n\tdisplay: contents;\n\tinline-size: fit-content;\n\tblock-size: fit-content;\n\tcolor: canvastext;\n\tbackground-color: canvas;\n\tborder: solid;\n\tpadding: 0.25em;\n\twriting-mode: inherit;\n}\nsection {\n\tinline-size: inherit;\n\tblock-size: inherit;\n\tbackground: inherit;\n\tborder: inherit;\n\tborder-radius: inherit;\n\tcolor: inherit;\n\tpadding: inherit;\n\tposition: fixed;\n\tinset: auto;\n\tinset-inline: 0;\n\tmargin-block: 0;\n\tmargin-inline: auto;\n\toverflow: auto;\n\ttransition-property: opacity;\n\ttransition-duration: inherit;\n\topacity: 0;\n\tdisplay: none;\n\tz-index: 9999999999999999999999;\n}\nsection.open {\n\topacity: 1;\n}\n.shown {\n\tdisplay: flex;\n\ttransition-property: opacity, inset-block-start;\n\talign-items: center;\n\tflex-wrap: nowrap;\n\tflex-direction: row;\n}\n\nslot {\n\tdisplay: block;\n\tflex: 1;\n}\n\n.close {\n\tblock-size: 1em;\n\tinline-size: 1em;\n\tdisplay: none;\n\tcursor: pointer;\n\ttransition: color .5s;\n\tposition: relative;\n\tline-height: 1em;\n\tborder-radius: 100%;\n\toverflow: hidden;\n}\n:host([closable]) .close {\n\tdisplay: block;\n}\n.close::before,\n.close::after {\n\tcontent: '';\n\tposition: absolute;\n\tdisplay: inline-block;\n\tinline-size: 80%;\n\tblock-size: 5%;\n\tbackground: currentColor;\n\tinset: 0;\n\tmargin: auto;\n}\n.close::before {\n\ttransform: rotate(45deg);\n}\n.close::after {\n\ttransform: rotate(-45deg);\n}\n\n`;\n/**\n * @typedef {object} Handler\n * @property {HTMLElement} element\n */\n\n/** @type {Handler[]} */\nconst messages = [];\n\n/**\n *\n * @param {Element} root\n * @returns {number} 上 左 右 下\n */\nfunction getPos(root) {\n\tconst writingMode = getComputedStyle(root).writingMode?.toLowerCase();\n\tif (['vertical-lr', 'sideways-lr'].includes(writingMode)) { return 1; }\n\tif (['vertical-rl', 'sideways-rl'].includes(writingMode)) { return 2; }\n\treturn 0;\n}\n/**\n *\n */\nfunction update() {\n\tconst offset = [0, 0, 0, 0];\n\tfor (const {element} of messages) {\n\t\tconst pos = getPos(element);\n\t\tconst openState = element.classList.contains('open');\n\t\tif (openState) { offset[pos] += 20; }\n\t\telement.style.insetBlockStart = `${offset[pos]}px`;\n\t\tif (!openState) { continue; }\n\t\toffset[pos] += pos % 3 ? element.clientWidth : element.clientHeight;\n\t}\n}\nconst resizeObserver = new ResizeObserver(function() { update(); });\n\nclass Message extends HTMLElement {\n\tstatic observedAttributes = ['open', 'hidden', 'duration'];\n\n\tget open() { return this.hasAttribute('open'); }\n\tset open(open) {\n\t\tif (open) {\n\t\t\tthis.setAttribute('open', '');\n\t\t} else {\n\t\t\tthis.removeAttribute('open');\n\t\t}\n\t}\n\n\tget closable() { return this.hasAttribute('closable'); }\n\tset closable(closable) {\n\t\tif (closable) {\n\t\t\tthis.setAttribute('closable', '');\n\t\t} else {\n\t\t\tthis.removeAttribute('closable');\n\t\t}\n\t}\n\tget duration() {\n\t\tconst duration = parseFloat(this.getAttribute('duration') || '');\n\t\tif (Number.isNaN(duration)) { return 1.5; }\n\t\tif (duration <= 0) { return Infinity; }\n\t\tif (!Number.isFinite(duration)) { return 1.5; }\n\t\treturn duration;\n\t}\n\tset duration(duration) {\n\t\tif (typeof duration !== 'number' || !Number.isFinite(duration)) {\n\t\t\tthis.removeAttribute('duration');\n\t\t} else if (duration <= 0 || !Number.isFinite(duration)) {\n\t\t\tthis.setAttribute('duration', `0`);\n\t\t} else {\n\t\t\tthis.setAttribute('duration', String(duration));\n\t\t}\n\t}\n\n\n\t#style = document.createElement('style');\n\t#main = document.createElement('section');\n\t/** @type {Handler} */\n\t#handler = {element: this.#main};\n\t#mounted = false;\n\t/** @type {NodeJS.Timeout?} */\n\t#duration = null;\n\t#internals = this.attachInternals();\n\tconstructor() {\n\t\tsuper();\n\t\tconst shadow = this.attachShadow({mode:'closed'});\n\t\tshadow.appendChild(document.createElement('style')).textContent = style;\n\t\tshadow.appendChild(this.#style);\n\t\tconst main = shadow.appendChild(this.#main);\n\t\tmain.popover = 'manual';\n\t\tmain.setAttribute('part', 'message');\n\t\tmain.appendChild(document.createElement('slot')).setAttribute('part', 'slot');\n\t\tconst close = main.appendChild(document.createElement('div'));\n\t\tclose.className = 'close';\n\t\tclose.addEventListener('click', e => { this.#close(e); });\n\t\tclose.setAttribute('part', 'close');\n\t\tclose.tabIndex = 0;\n\t\tclose.addEventListener('keydown', e => {\n\t\t\tif (!['Enter', 'Space'].includes(e.code)) { return; }\n\t\t\tthis.#close(e);\n\t\t});\n\t\tmain.addEventListener('transitionend', e => {\n\t\t\tif (e.propertyName !== 'opacity') { return; }\n\t\t\tif (main.classList.contains('open')) { return; }\n\t\t\tthis.#hidePopover();\n\t\t});\n\t}\n\t/**\n\t * @param {Event} e\n\t */\n\t#close(e) {\n\t\tif (e?.defaultPrevented) { return; }\n\t\tif (!this.open) { return; }\n\t\tif (!this.dispatchEvent(new Event('beforeclose', {cancelable: true}))) { return; }\n\t\tthis.open = false;\n\t\tthis.dispatchEvent(new Event('close'));\n\t}\n\t#shown = false;\n\t#clearTimeout() {\n\t\tconst duration = this.#duration;\n\t\tif (duration === null) { return; }\n\t\tclearTimeout(duration);\n\t\tthis.#duration = null;\n\n\t}\n\t#setTimeout() {\n\t\tthis.#clearTimeout();\n\t\tconst {duration} = this;\n\t\tif (duration === Infinity) { return; }\n\t\tthis.#duration = setTimeout(() => {\n\t\t\tthis.#duration = null;\n\t\t\tthis.open = false;\n\t\t}, duration * 1000);\n\t}\n\t#show() {\n\t\tif (this.#shown) { return; }\n\t\tthis.#shown = true;\n\t\tlet inset = 0;\n\t\tconst pos = getPos(this.#main);\n\t\tfor (const {element} of messages) {\n\t\t\tif (!element.classList.contains('open')) { continue; }\n\t\t\tif (getPos(element) !== pos) { continue; }\n\t\t\tinset += (pos % 3 ? element.clientWidth : element.clientHeight) + 20;\n\t\t}\n\t\tconst main = this.#main;\n\t\tmain.style.insetBlockStart = `${inset}px`;\n\t\tmain.showPopover?.();\n\t\tmain.classList.add('shown');\n\t\t// @ts-ignore\n\t\tthis.#internals.states?.add('--shown');\n\t\tmain.setAttribute('part', 'message shown');\n\t\trequestAnimationFrame(() => {\n\t\t\trequestAnimationFrame(() => {\n\t\t\t\tif (!this.#shown) { return; }\n\t\t\t\tif (!main.classList.contains('shown')) { return; }\n\t\t\t\tmain.classList.add('open');\n\t\t\t\t// @ts-ignore\n\t\t\t\tthis.#internals.states?.add('--open');\n\t\t\t\tthis.#setTimeout();\n\t\t\t\tresizeObserver.observe(main);\n\t\t\t\tmessages.push(this.#handler);\n\t\t\t\tupdate();\n\t\t\t});\n\t\t});\n\t}\n\t#remove() {\n\t\tconst index = messages.indexOf(this.#handler);\n\t\tif (index < 0) { return; }\n\t\tmessages.splice(index, 1);\n\t\tif (index >= messages.length) { return; }\n\t\tupdate();\n\t}\n\t#hide() {\n\t\tif (!this.#shown) { return; }\n\t\tthis.#shown = false;\n\t\tthis.#clearTimeout();\n\t\tconst main = this.#main;\n\t\tmain.classList.remove('open');\n\t\t// @ts-ignore\n\t\tthis.#internals.states?.delete('--open');\n\t\tresizeObserver.unobserve(main);\n\t\tupdate();\n\t}\n\t#hidePopover() {\n\t\tthis.#remove();\n\t\tconst main = this.#main;\n\t\tmain.hidePopover?.();\n\t\t// @ts-ignore\n\t\tthis.#internals.states?.delete('--shown');\n\t\tmain.classList.remove('shown');\n\t\tmain.setAttribute('part', 'message');\n\t}\n\tconnectedCallback() {\n\t\tthis.#mounted = true;\n\t\tif (!this.hidden && this.open) {\n\t\t\tthis.#show();\n\t\t}\n\t}\n\tdisconnectedCallback() {\n\t\tthis.#mounted = false;\n\t\tthis.#hide();\n\t\tthis.#hidePopover();\n\t}\n\t/**\n\t * @param {string} attrName\n\t * @param {string | null} oldVal\n\t * @param {string | null} newVal\n\t * @returns {void}\n\t */\n\tattributeChangedCallback(attrName, oldVal, newVal) {\n\t\tif (oldVal === newVal) { return; }\n\t\tswitch (attrName) {\n\t\t\tcase 'hidden': case 'open': {\n\t\t\t\tif (this.#mounted) {\n\t\t\t\t\tif (!this.hidden && this.open) {\n\t\t\t\t\t\tthis.#show();\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.#hide();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase 'duration': {\n\t\t\t\tthis.#setTimeout();\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n}\n\ntry {\n\tcustomElements.define('nl-message', Message);\n} catch {}\n\nexport { Message as default };\n","/*!\n * 匿龙组件库 @neeloong/components v0.7.0\n * (c) 2023-2024 猛火Fierflame\n * @license MIT\n */\nconst style = `\n:host {\n\tdisplay: none;\n}\n:host([open]) {\n\tdisplay: contents;\n}\n:host([open][hidden]) {\n\tdisplay: none;\n}\ndialog {\n\tposition: fixed;\n\tmax-block-size: 100%;\n\tmax-inline-size: 100%;\n\tinline-size: 100%;\n\tborder: none;\n\tbackground: none;\n\toutline: none;\n\tpadding: 0;\n}\ndialog::backdrop {\n\tbackground: none;\n}\n:host([mask]) dialog::backdrop {\n\tbackground: rgba(48,48,48,0.5);\n}\n.ok:after {\n\tcontent: '确认';\n}\n.cancel {\n\tdisplay: none;\n}\n.cancel:after {\n\tcontent: '取消';\n}\n:host([cancelable]) .cancel {\n\tdisplay: inline-block;\n}\nsection {\n\tright: 0;\n\tleft: 0;\n\tpadding: 1em;\n\tbackground: #FFF;\n\tbox-sizing: content-box;\n\tbox-shadow: 5px 5px 10px -4px rgba(0,0,0,.12),\n\t5px -5px 10px -4px rgba(0,0,0,.12),\n\t-5px 5px 10px -4px rgba(0,0,0,.12),\n\t-5px -5px 10px -4px rgba(0,0,0,.12)\n}\n.center {\n\tpadding-block: 6px;\n}\n.inline-start {\n\tblock-size: 100%;\n\tmargin-inline-start: 0;\n}\n.inline-end {\n\tblock-size: 100%;\n\tmargin-inline-end: 0;\n}\n.block-start {\n\tmargin-block-start: 0;\n}\n.block-end {\n\tmargin-block-end: 0;\n}\n.center section, .inline-start section, .inline-end section {\n\tdisplay: flex;\n\tflex-direction: column;\n\tmin-block-size: calc(100% - 2em);\n\tinline-size: var(--nl-modal-size, 640px);\n\tmax-inline-size: calc(100vi - 2em - 16px);\n}\n.block-start section, .block-end section {\n\tdisplay: flex;\n\tflex-direction: column;\n\tblock-size: var(--nl-modal-size, 640px);\n\tmax-block-size: calc(100vb - 2em - 16px);\n}\n.center section {\n\tmargin: auto;\n}\n.inline-start section {\n\tmargin-inline-end: auto;\n}\n.inline-end section {\n\tmargin-inline-start: auto;\n}\n.block-start section {\n\tmargin-block-end: auto;\n}\n.block-end section {\n\tmargin-block-start: auto;\n}\n.inline-start section slot.body, .inline-end section slot.body {\n\tflex: 1;\n\tdisplay: block;\n}\n.block-start section slot.body, .block-end section slot.body {\n\tflex: 1;\n\tdisplay: block;\n\toverflow: auto;\n}\n:host([round]) .center section {\n\tborder-radius: 1em;\n}\n:host([round]) .inline-start section {\n\tborder-start-end-radius: 1em;\n\tborder-end-end-radius: 1em;\n}\n:host([round]) .inline-end section {\n\tborder-start-start-radius: 1em;\n\tborder-end-start-radius: 1em;\n}\n:host([round]) .block-start section {\n\tborder-end-start-radius: 1em;\n\tborder-end-end-radius: 1em;\n}\n:host([round]) .block-end section {\n\tborder-start-start-radius: 1em;\n\tborder-start-end-radius: 1em;\n}\n\n\n.close {\n\tblock-size: 40px;\n\tinline-size: 40px;\n\tdisplay: none;\n\tcursor: pointer;\n\ttransition: color .5s;\n\tposition: relative;\n\tline-height: 40px;\n}\n:host([closable]) .close {\n\tdisplay: inline-block;\n}\n.close-icon {\n\toverflow: hidden;\n}\n.close-icon::before,\n.close-icon::after {\n\tcontent: '';\n\tposition: absolute;\n\tdisplay: inline-block;\n\tinline-size: 60%;\n\tblock-size: 5%;\n\tbackground: currentColor;\n\tinset: 0;\n\tmargin: auto;\n}\n.close-icon::before {\n\ttransform: rotate(45deg);\n\n}\n.close-icon::after {\n\ttransform: rotate(-45deg);\n\n}\n.close-icon:hover {\n\tcolor: #88F;\n}\n\nheader {\n\tposition: sticky;\n\ttext-align: start;\n\tinset-block-start: 0;\n\tbackground: inherit;\n\tmargin-block-start: -1em;\n\tmargin-inline: -1em;\n\tpadding-inline: 1em;\n\tpadding-block-start: 1em;\n\tpadding-block-end: 1em;\n\tborder-start-start-radius: inherit;\n\tborder-start-end-radius: inherit;\n\tdisplay: flex;\n}\n.empty {\n\tpadding-block: 0;\n}\n[name=header] {\n\tdisplay: block;\n\tflex: 1;\n\tline-height: 40px;\n}\nfooter {\n\ttext-align: end;\n\tposition: sticky;\n\tinset-block-end: 0;\n\tbackground: inherit;\n\tmargin-block-end: -1em;\n\tmargin-inline: -1em;\n\tpadding-inline: 1em;\n\tpadding-block-start: 1em;\n\tpadding-block-end: 1em;\n\tborder-end-start-radius: inherit;\n\tborder-end-end-radius: inherit;\n}\n\n`;\n\n/**\n *\n * @param {HTMLElement} el\n * @param {string} name\n * @param {boolean} value\n */\nfunction setBoolAttribute(el, name, value) {\n\tif (value) {\n\t\tel.setAttribute(name, '');\n\t} else {\n\t\tel.removeAttribute(name);\n\t}\n\n}\nclass Modal extends HTMLElement {\n\tstatic observedAttributes = ['hidden', 'open', 'disabled', 'size', 'position'];\n\tget open() { return this.hasAttribute('open'); }\n\tset open(open) { setBoolAttribute(this, 'open', open); }\n\tget cancelable() { return this.hasAttribute('cancelable'); }\n\tset cancelable(cancelable) { setBoolAttribute(this, 'cancelable', cancelable); }\n\tget closable() { return this.hasAttribute('closable'); }\n\tset closable(closable) { setBoolAttribute(this, 'closable', closable); }\n\tget mask() { return this.hasAttribute('mask'); }\n\tset mask(mask) { setBoolAttribute(this, 'mask', mask); }\n\tget maskClosable() { return this.hasAttribute('mask-closable'); }\n\tset maskClosable(maskClosable) { setBoolAttribute(this, 'mask-closable', maskClosable); }\n\tget disabled() { return this.hasAttribute('disabled'); }\n\tset disabled(disabled) { setBoolAttribute(this, 'disabled', disabled); }\n\tget size() { return this.getAttribute('size') || ''; }\n\tset size(size) {\n\t\tif (size) {\n\t\t\tthis.setAttribute('size', size);\n\t\t} else {\n\t\t\tthis.removeAttribute('size');\n\t\t}\n\t}\n\tget position() {\n\t\tconst position = this.getAttribute('position') || '';\n\t\tif (['block-start', 'block-end', 'inline-start', 'inline-end'].includes(position)) { return position; }\n\t\treturn 'center';\n\t}\n\tset position(position) {\n\t\tif (position) {\n\t\t\tthis.setAttribute('position', position);\n\t\t} else {\n\t\t\tthis.removeAttribute('position');\n\t\t}\n\t}\n\n\tcancel () {\n\t\tif (this.disabled) { return; }\n\t\tif (!this.open) { return; }\n\t\tif (!this.dispatchEvent(new Event('cancel', {cancelable: true}))) { return; }\n\t\tthis.open = false;\n\t\tthis.dispatchEvent(new Event('close'));\n\t}\n\tok() {\n\t\tif (this.disabled) { return; }\n\t\tif (!this.open) { return; }\n\t\tif (!this.dispatchEvent(new Event('ok', {cancelable: true}))) { return; }\n\t\tthis.open = false;\n\t\tthis.dispatchEvent(new Event('close'));\n\t}\n\t#main = document.createElement('section');\n\t#dialog = document.createElement('dialog');\n\t#okButton = document.createElement('button');\n\t#cancelButton = document.createElement('button');\n\tconstructor() {\n\t\tsuper();\n\t\tconst cancel = () => this.cancel();\n\t\tconst shadow = this.attachShadow({mode:'closed'});\n\t\tshadow.appendChild(document.createElement('style')).textContent = style;\n\n\t\tthis.#dialog.autofocus = false;\n\t\tconst dialog = shadow.appendChild(this.#dialog);\n\t\tdialog.className = 'center';\n\n\t\tdialog.addEventListener('keydown', e =>{\n\t\t\tif (e.defaultPrevented) { return; }\n\t\t\tif (e.code !== 'Escape') { return; }\n\t\t\te.preventDefault();\n\t\t\tcancel();\n\t\t});\n\t\tdialog.addEventListener('click', e =>{\n\t\t\tif (e.target !== e.currentTarget) { return; }\n\t\t\tif (!this.maskClosable) { return; }\n\t\t\tcancel();\n\t\t});\n\t\tconst main = dialog.appendChild(this.#main);\n\t\tmain.style.inlineSize = this.getAttribute('size') || '';\n\n\n\t\tconst header = main.appendChild(document.createElement('header'));\n\t\tconst headerSlot = header.appendChild(document.createElement('slot'));\n\t\theaderSlot.name = 'header';\n\t\theaderSlot.addEventListener('slotchange', e=> {\n\t\t\tif (headerSlot.assignedNodes().length) {\n\t\t\t\theader.classList.remove('empty');\n\t\t\t} else {\n\t\t\t\theader.classList.add('empty');\n\t\t\t}\n\t\t});\n\t\tif (headerSlot.assignedNodes().length) {\n\t\t\theader.classList.remove('empty');\n\t\t} else {\n\t\t\theader.classList.add('empty');\n\t\t}\n\t\tconst close = header.appendChild(document.createElement('slot'));\n\t\tclose.className = 'close';\n\t\tclose.name = 'close';\n\t\tclose.addEventListener('click', cancel);\n\t\tclose.addEventListener('slotchange', e=> {\n\t\t\tif (close.assignedNodes().length) {\n\t\t\t\tclose.classList.remove('close-icon');\n\t\t\t} else {\n\t\t\t\tclose.classList.add('close-icon');\n\t\t\t}\n\t\t});\n\t\tif (close.assignedNodes().length) {\n\t\t\tclose.classList.remove('close-icon');\n\t\t} else {\n\t\t\tclose.classList.add('close-icon');\n\t\t}\n\n\t\tmain.appendChild(document.createElement('slot')).className = 'body';\n\n\n\t\tconst footer = main.appendChild(document.createElement('footer'));\n\t\tconst footerSlot = footer.appendChild(document.createElement('slot'));\n\t\tfooterSlot.name = 'footer';\n\t\tconst {disabled} = this;\n\t\tconst okButton = footerSlot.appendChild(this.#okButton);\n\t\tokButton.addEventListener('click', () => this.ok());\n\t\tokButton.className = 'ok';\n\t\tokButton.disabled = disabled;\n\t\tconst cancelButton = footerSlot.appendChild(this.#cancelButton);\n\t\tcancelButton.addEventListener('click', cancel);\n\t\tcancelButton.className = 'cancel';\n\t\tcancelButton.disabled = disabled;\n\t}\n\t#mounted = false;\n\tconnectedCallback() {\n\t\tthis.#mounted = true;\n\t\tif (!this.hidden && this.open) {\n\t\t\tthis.#dialog.showModal();\n\t\t}\n\t}\n\tdisconnectedCallback() {\n\t\tthis.#mounted = false;\n\t\tthis.#dialog.close();\n\t}\n\t/**\n\t * @param {string} attrName\n\t * @param {string | null} oldVal\n\t * @param {string | null} newVal\n\t * @returns {void}\n\t */\n\tattributeChangedCallback(attrName, oldVal, newVal) {\n\t\tif (oldVal === newVal) { return; }\n\t\tswitch (attrName) {\n\t\t\tcase 'hidden': case 'open': {\n\t\t\t\tif (this.#mounted) {\n\t\t\t\t\tif (!this.hidden && this.open) {\n\t\t\t\t\t\tthis.#dialog.showModal();\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.#dialog.close();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase 'disabled': {\n\t\t\t\tconst disabled = newVal !== null;\n\t\t\t\tthis.#cancelButton.disabled = disabled;\n\t\t\t\tthis.#okButton.disabled = disabled;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase 'position': {\n\t\t\t\tconst {size} = this;\n\t\t\t\tconst main = this.#main;\n\t\t\t\tconst dialog = this.#dialog;\n\n\t\t\t\tswitch (newVal) {\n\t\t\t\t\tcase 'block-start':\n\t\t\t\t\tcase 'block-end':\n\t\t\t\t\t\tmain.style.inlineSize = '';\n\t\t\t\t\t\tmain.style.blockSize = size;\n\t\t\t\t\t\tdialog.className = newVal;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'inline-start':\n\t\t\t\t\tcase 'inline-end':\n\t\t\t\t\t\tmain.style.inlineSize = size;\n\t\t\t\t\t\tmain.style.blockSize = '';\n\t\t\t\t\t\tdialog.className = newVal;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tmain.style.inlineSize = size;\n\t\t\t\t\t\tmain.style.blockSize = '';\n\t\t\t\t\t\tdialog.className = 'center';\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\t}\n\t\t\tcase 'size': {\n\t\t\t\tif (this.position.startsWith('block')) {\n\t\t\t\t\tthis.#main.style.blockSize = newVal || '';\n\t\t\t\t} else {\n\t\t\t\t\tthis.#main.style.inlineSize = newVal || '';\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n}\n\ntry {\n\tcustomElements.define('nl-modal', Modal);\n} catch {}\n\nexport { Modal as default };\n","/*!\n * 匿龙组件库 @neeloong/components v0.7.0\n * (c) 2023-2024 猛火Fierflame\n * @license MIT\n */\nconst style$1 = `:host {\n\tdisplay: block;\n\toverflow: hidden;\n\tposition: relative;\n}\n:host([hidden]) { display: none; }`;\n\n/**\n *\n * @param {MovableArea} el\n * @param {Set<import('./index.mjs').Interface>} children\n * @returns {[() => void, () => void]}\n */\nfunction init$1(el, children) {\n\tconst shadow = el.attachShadow({ mode: 'closed' });\n\tshadow.appendChild(document.createElement('style')).textContent = style$1;\n\tshadow.appendChild(document.createElement('slot'));\n\tconst observer = new ResizeObserver(e => {\n\t\tconst last = e.pop();\n\t\tif (!last) { return; }\n\t\tconst { contentRect: { width, height } } = last;\n\n\t\tfor (const t of children) {\n\t\t\tt.resize(width, height);\n\t\t}\n\t});\n\t/**\n\t *\n\t * @param {Event} event\n\t * @returns {import('./index.mjs').Interface | null}\n\t */\n\tfunction getTarget(event) {\n\t\tconst list = event.composedPath();\n\n\t\tconst k = list.findIndex(t => t === el);\n\t\tconst e = k < 0 ? [] : list.slice(0, k).reverse();\n\t\tfor (const child of [...children]) {\n\t\t\tconst r = child.match(e);\n\t\t\tif (r) { return child; }\n\t\t\tif (r === null) { return null; }\n\t\t}\n\t\treturn null;\n\t}\n\t/** @type {Record<number, import('./index.mjs').Interface>} */\n\tconst touchTargets = {};\n\n\t/**\n\t *\n\t * @param {PointerEvent} event\n\t * @returns {void}\n\t */\n\tfunction pointerdown(event) {\n\t\tconst target = getTarget(event);\n\t\tif (!target) { return; }\n\t\tconst { pageX, pageY, pointerId } = event;\n\t\tconst { x: OffX, y: OffY } = el.getBoundingClientRect();\n\t\tconst x = pageX - OffX;\n\t\tconst y = pageY - OffY;\n\t\t/** @type {boolean?} */\n\t\tlet state = null;\n\t\tif (event.pointerType === 'mouse') {\n\t\t\tstate = target.mouseBegin(x, y, event.buttons);\n\t\t} else if (event.pointerType === 'touch') {\n\t\t\tstate = target.touchBegin(pointerId, x, y);\n\t\t}\n\t\tif (typeof state !== 'boolean') { return; }\n\t\tif (state) { el.setPointerCapture(pointerId); }\n\t\ttouchTargets[pointerId] = target;\n\t}\n\t/**\n\t *\n\t * @param {PointerEvent} event\n\t * @returns {void}\n\t */\n\tfunction pointermove(event) {\n\t\tconst { pointerId } = event;\n\t\tconst target = touchTargets[pointerId];\n\t\tif (!target) { return; }\n\t\tconst { pageX, pageY } = event;\n\t\tconst { x: OffX, y: OffY } = el.getBoundingClientRect();\n\t\tconst x = pageX - OffX;\n\t\tconst y = pageY - OffY;\n\t\tif (event.pointerType === 'mouse') {\n\t\t\ttarget?.mouseMove(x, y, event.buttons);\n\t\t\treturn;\n\t\t}\n\t\tif (event.pointerType === 'touch') {\n\t\t\ttarget.touchMove(pointerId, x, y);\n\t\t}\n\t}\n\t/**\n\t *\n\t * @param {PointerEvent} event\n\t * @returns {void}\n\t */\n\tfunction pointerup(event) {\n\t\tconst { pointerId } = event;\n\t\tif (el.hasPointerCapture(pointerId)) {\n\t\t\tel.releasePointerCapture(pointerId);\n\t\t}\n\t\tconst target = touchTargets[pointerId];\n\t\tif (!target) { return; }\n\t\tif (event.pointerType === 'mouse') {\n\t\t\ttarget.mouseEnd();\n\t\t}\n\t\tif (event.pointerType === 'touch') {\n\t\t\tdelete touchTargets[pointerId];\n\t\t\ttarget.touchEnd(pointerId);\n\t\t}\n\t}\n\t/**\n\t *\n\t * @param {WheelEvent} event\n\t * @returns {void}\n\t */\n\tfunction wheel(event) {\n\t\tconst target = getTarget(event);\n\t\tif (!target) { return; }\n\t\tconst { deltaMode, deltaX, deltaY, pageX, pageY } = event;\n\t\tconst { x: OffX, y: OffY } = el.getBoundingClientRect();\n\t\tconst x = pageX - OffX;\n\t\tconst y = pageY - OffY;\n\t\ttarget.wheel(deltaMode, deltaX, deltaY, x, y);\n\t}\n\n\tel.addEventListener('wheel', wheel, true);\n\n\tel.addEventListener('pointermove', pointermove);\n\tel.addEventListener('pointerdown', pointerdown);\n\tel.addEventListener('pointerup', pointerup);\n\tel.addEventListener('pointercancel', pointerup);\n\tel.addEventListener('lostpointercapture', pointerup);\n\tel.addEventListener('touchmove', e => e.preventDefault());\n\treturn [() => {\n\t\tobserver.observe(el);\n\t}, () => {\n\t\tobserver.unobserve(el);\n\t}];\n\n}\n\nclass MovableArea extends HTMLElement {\n\t/** @type {Set<import('./index.mjs').Interface>} */\n\t#children = new Set();\n\t/** @type {() => void} */\n\t#connect;\n\t/** @type {() => void} */\n\t#disconnect;\n\tconstructor() {\n\t\tsuper();\n\t\t[this.#connect, this.#disconnect] = init$1(this, this.#children);\n\t}\n\t/**\n\t *\n\t * @param {import('./index.mjs').Interface} o\n\t * @returns {() => void}\n\t */\n\tregister(o) {\n\t\tconst children = this.#children;\n\t\tchildren.add(o);\n\t\tconst { width, height } = this.getBoundingClientRect();\n\t\to.resize(width, height);\n\t\treturn () => {\n\t\t\tchildren.delete(o);\n\t\t};\n\n\t}\n\t/**\n\t * @returns {void}\n\t */\n\tconnectedCallback() { this.#connect(); }\n\t/**\n\t * @returns {void}\n\t */\n\tdisconnectedCallback() { this.#disconnect(); }\n\t/**\n\t * @returns {void}\n\t */\n\tadoptedCallback() { }\n}\n\n/**\n * 线性回归求斜率\n * @param {number[]} t\n * @param {number[]} v\n * @returns {number}\n */\nfunction regression(t, v) {\n\tconst tb = t.reduce((a, b) => a + b) / t.length;\n\tconst vb = v.reduce((a, b) => a + b) / v.length;\n\treturn t.map((_, i) => (t[i] - tb) * (v[i] - vb)).reduce((a, b) => a + b)\n\t\t/ t.map(a => (a - tb) ** 2).reduce((a, b) => a + b);\n}\n\n/**\n *\n * @param {number[][]} frame\n * @returns {(() => [number, number, boolean]) | undefined }\n */\nfunction getInertiaFn(frame) {\n\tconst time = performance.now() / 1000;\n\tlet last = time;\n\tfor (let i = 0; i < frame.length; i++) {\n\t\tconst [,, that] = frame[i];\n\t\tif (last - that > 0.05) { frame.length = i; break; }\n\t\tlast = that;\n\t}\n\tif (frame.length < 3) { return; }\n\t// 时间(s)\n\tconst times = frame.map(f => f[2]);\n\t// 方向速度(px/s)\n\tconst xb = regression(times, frame.map(f => f[0]));\n\tconst yb = regression(times, frame.map(f => f[1]));\n\t// 方向符号\n\tconst xs = Math.sign(xb);\n\tconst ys = Math.sign(yb);\n\t// 方向速度绝对值(px/s)\n\tconst xv = Math.abs(xb);\n\tconst yv = Math.abs(yb);\n\t// 和速度(px/s)\n\tconst v = (xv ** 2 + yv ** 2) ** 0.5;\n\t// 方向速度比\n\tconst xp = xv / v;\n\tconst yp = yv / v;\n\t// 加速度(px/s²)\n\tconst a = 1000;\n\t// 最后帧(px, px, s)\n\tconst [[xf, yf, b]] = frame;\n\t/**\n\t * @returns {[number, number, boolean]}\n\t */\n\tfunction calc() {\n\t\tconst t = performance.now() / 1000;\n\t\t// 时间差(s)\n\t\tconst tt = t - b;\n\t\t// 新的速度(px/s)\n\t\tlet nv = v - tt * a;\n\t\tif (nv <= 0) {\n\t\t\tconst x = xf + xs * xv * v / a / 2;\n\t\t\tconst y = yf + ys * yv * v / a / 2;\n\t\t\treturn [x, y, true];\n\t\t}\n\t\tconst x = xf + xs * (xv + xv - a * xp * tt) * tt / 2;\n\t\tconst y = yf + ys * (yv + yv - a * yp * tt) * tt / 2;\n\t\treturn [x, y, false];\n\n\t}\n\treturn calc;\n}\n\nclass MovableTarget extends HTMLElement {\n\t/** @type {() => void} */\n\t#disconnect;\n\t/** @type {() => void} */\n\t#connect;\n\tconstructor() {\n\t\tsuper();\n\t\t/** @type {() => void} */\n\t\tlet unregister = () => {};\n\t\tthis.#connect = () => {\n\t\t\tlet parent = this.parentNode;\n\t\t\twhile (parent) {\n\t\t\t\tif (parent instanceof Movable$1) { break; }\n\t\t\t\tparent = parent.parentNode;\n\t\t\t}\n\t\t\tif (parent) { unregister = parent.register(this); }\n\t\t};\n\t\tthis.#disconnect = () => { unregister(); };\n\t}\n\t/**\n\t * @returns {void}\n\t */\n\tconnectedCallback() { this.#connect(); }\n\t/**\n\t * @returns {void}\n\t */\n\tdisconnectedCallback() { this.#disconnect(); }\n}\n\n/**\n * @typedef {object} Interface\n * @property {(e: EventTarget[]) => boolean | null} match\n * @property {(width: number, height: number) => void} resize\n * @property {(id: number, x: number, y: number) => boolean?} touchBegin\n * @property {(id: number, x: number, y: number) => void} touchMove\n * @property {(id: number) => void} touchEnd\n * @property {(x: number, y: number, keys: number) => boolean?} mouseBegin\n * @property {(x: number, y: number, keys: number) => void} mouseMove\n * @property {() => void} mouseEnd\n * @property {(deltaMode: number, deltaX: number, deltaY: number, pageX: number, pageY: number) => void} wheel\n */\n\n/**\n *\n * @param {number} x1\n * @param {number} x2\n * @param {number} y1\n * @param {number} y2\n * @returns {number}\n */\nfunction getLength(x1, x2, y1, y2) {\n\treturn ((x1 - x2) ** 2 + (y1 - y2) ** 2) ** 0.5;\n}\n\n\n/**\n *\n * @param {number} v\n * @param {number} area\n * @param {number} target\n * @returns {number}\n */\nfunction calc(v, area, target) {\n\tconst differential = area - target;\n\tconst min = Math.min(differential, 0);\n\tconst max = Math.max(differential, 0);\n\treturn Math.min(Math.max(min, v), max);\n}\n\nconst style = `\n:host{display: block; position: absolute; transform-origin: 0 0; }\n:host([hidden]) { display: none; }\n`;\n\n/**\n *\n * @param {Movable} el\n * @param {Set<EventTarget>} targets\n * @returns {[() => void, () => void, () => void]}\n */\nfunction init(el, targets) {\n\tconst shadow = el.attachShadow({ mode: 'closed' });\n\tshadow.appendChild(document.createElement('style')).textContent = style;\n\tshadow.appendChild(document.createElement('slot'));\n\n\tlet needAdaptively = false;\n\n\t/**\n\t *\n\t * @returns {void}\n\t */\n\tfunction adaptively() {\n\t\tneedAdaptively = true;\n\t\tconst [aWidth, aHeight] = areaSize;\n\t\tif (!aWidth || !aHeight) { return; }\n\t\tneedAdaptively = false;\n\t\tzoom = Math.min(aWidth / el.clientWidth, aHeight / el.clientHeight);\n\t\tx = (aWidth - el.clientWidth * zoom) / 2;\n\t\ty = (aHeight - el.clientHeight * zoom) / 2;\n\t\tel.style.transform = `translate(${x}px,${y}px)scale(${zoom})`;\n\t}\n\n\t/** @type {Record<number, [number, number]>} */\n\tconst touches = {};\n\t/** @type {[number, number]} */\n\tlet areaSize = [0, 0];\n\tlet x = 0;\n\tlet y = 0;\n\tlet zoom = 1;\n\t/**\n\t *\n\t * @param {number} newZoom\n\t * @returns {number}\n\t */\n\tfunction getZoom(newZoom) {\n\t\tconst elWidth = el.clientWidth;\n\t\tconst elHeight = el.clientHeight;\n\t\tconst [areaWidth, areaHeight] = areaSize;\n\t\tif (!areaWidth || !areaHeight) { return newZoom; }\n\t\tconst w = areaWidth / elWidth;\n\t\tconst h = areaHeight / elHeight;\n\t\tconst max = Math.max(w, h, 5);\n\t\tconst min = Math.min(w, h, 0.5);\n\t\treturn Math.max(min, Math.min(newZoom, max));\n\t}\n\n\t/** @type {'touch' | ''} */\n\tlet scaleType = '';\n\t/** @type {undefined | { x: number; y: number; s: number; }} */\n\tlet scaleInfo;\n\n\t/**\n\t *\n\t * @param {number} x1\n\t * @param {number} y1\n\t * @param {number} x2\n\t * @param {number} y2\n\t * @returns {void}\n\t */\n\tfunction scaleBegin(x1, y1, x2, y2) {\n\t\tconst l = getLength(x1, x2, y1, y2);\n\t\tconst z = zoom;\n\t\tif (!l || !z) {\n\t\t\tscaleInfo = undefined;\n\t\t\treturn;\n\t\t}\n\t\tscaleInfo = {\n\t\t\tx: (x - (x1 + x2) / 2) / z,\n\t\t\ty: (y - (y1 + y2) / 2) / z,\n\t\t\ts: z / l,\n\t\t};\n\t}\n\t/**\n\t *\n\t * @param {number} x1\n\t * @param {number} y1\n\t * @param {number} x2\n\t * @param {number} y2\n\t * @returns {void}\n\t */\n\tfunction scaleMove(x1, y1, x2, y2) {\n\t\tif (!scaleInfo) { return; }\n\t\tconst l = getLength(x1, x2, y1, y2);\n\t\tif (!l) { return; }\n\t\tconst { s, x: ox, y: oy } = scaleInfo;\n\t\tconst newZoom = getZoom(l * s);\n\t\tzoom = newZoom;\n\t\tx = ox * newZoom + (x1 + x2) / 2;\n\t\ty = oy * newZoom + (y1 + y2) / 2;\n\t\tupdate();\n\t}\n\t/**\n\t *\n\t * @returns {void}\n\t */\n\tfunction scaleStop() {\n\t\tscaleType = '';\n\t\tscaleInfo = undefined;\n\t}\n\n\n\t/** @type {'touch' | 'roller'| 'leftMouse' | ''} */\n\tlet moveType = '';\n\t/**\n\t * @typedef {object} MoveInfo\n\t * @property {number} x\n\t * @property {number} y\n\t * @property {number} bx\n\t * @property {number} by\n\t * @property {[x: number, y: number, t: number][]} frame\n\t */\n\t/**\n\t * @type {MoveInfo | undefined}\n\t */\n\tlet moveInfo;\n\tlet moveAnimation = 0;\n\t/**\n\t *\n\t * @param {number} pageX\n\t * @param {number} pageY\n\t * @returns {void}\n\t */\n\tfunction moveBegin(pageX, pageY) {\n\t\tcancelAnimationFrame(moveAnimation);\n\t\tmoveInfo = undefined;\n\t\tmoveInfo = {\n\t\t\tx,\n\t\t\ty,\n\t\t\tframe: [[x, y, performance.now() / 1000]],\n\t\t\tbx: pageX,\n\t\t\tby: pageY,\n\t\t};\n\n\t}\n\t/**\n\t *\n\t * @param {number} pageX\n\t * @param {number} pageY\n\t * @returns {void}\n\t */\n\tfunction moveMove(pageX, pageY) {\n\t\tif (!moveInfo) { return; }\n\t\tconst { x: ox, y: oy, bx, by } = moveInfo;\n\t\tx = ox + pageX - bx;\n\t\ty = oy + pageY - by;\n\t\t/** @type {[x: number, y: number, t: number]} */\n\t\tconst current = [x, y, performance.now() / 1000];\n\t\tmoveInfo.frame = [current, ...moveInfo.frame].slice(0, 20);\n\t\tupdate();\n\t}\n\t/**\n\t *\n\t * @returns {void}\n\t */\n\tfunction moveEnd() {\n\t\tif (!moveInfo) { return; }\n\t\tmoveType = '';\n\t\tconst { frame } = moveInfo;\n\t\tmoveInfo = undefined;\n\t\tif (!el.inertia) { return; }\n\t\tconst calc = getInertiaFn(frame);\n\t\tif (!calc) { return; }\n\t\t/**\n\t\t *\n\t\t * @returns {void}\n\t\t */\n\t\tconst run = () => {\n\t\t\t/** @type {boolean} */\n\t\t\tlet stop;\n\t\t\t[x, y, stop] = calc();\n\t\t\tupdate();\n\t\t\tif (!el.inertia) { return; }\n\t\t\tif (stop) { return; }\n\t\t\tmoveAnimation = requestAnimationFrame(run);\n\t\t};\n\t\trun();\n\t}\n\t/**\n\t *\n\t * @returns {void}\n\t */\n\tfunction moveStop() {\n\t\tcancelAnimationFrame(moveAnimation);\n\t\tmoveType = '';\n\t\tmoveInfo = undefined;\n\t}\n\n\t/** @type {Interface} */\n\tconst movableAreaMember = {\n\t\tresize(width, height) {\n\t\t\tareaSize = [width, height];\n\t\t\tif (el.autoAdaptively || needAdaptively) { adaptively(); }\n\t\t},\n\t\tmatch(e) {\n\t\t\tif (!e.length) { return el.global || false; }\n\t\t\tif (e[0] !== el) { return false; }\n\t\t\tif (!targets.size) { return true; }\n\t\t\tconst list = new Set(e);\n\t\t\tfor (const t of targets) { if (list.has(t)) { return true; } }\n\t\t\treturn null;\n\t\t},\n\n\t\ttouchMove(id, x, y) {\n\t\t\ttouches[id] = [x, y];\n\t\t\tconst touchList = Object.values(touches);\n\t\t\tif (moveType === 'touch') {\n\t\t\t\tif (touchList.length !== 1) { return moveStop(); }\n\t\t\t\tconst [t1] = touchList;\n\t\t\t\tmoveMove(t1[0], t1[1]);\n\t\t\t}\n\t\t\tif (scaleType !== 'touch') { return; }\n\t\t\tif (!el.touchScalable || touchList.length !== 2) {\n\t\t\t\treturn scaleStop();\n\t\t\t}\n\t\t\tconst [t1, t2] = touchList;\n\t\t\tscaleMove(t1[0], t1[1], t2[0], t2[1]);\n\t\t},\n\t\ttouchBegin(id, x, y) {\n\t\t\ttouches[id] = [x, y];\n\t\t\tconst touchList = Object.values(touches);\n\t\t\tif (touchList.length === 1) {\n\t\t\t\tif (!moveType && el.touchMovable) {\n\t\t\t\t\tscaleStop();\n\t\t\t\t\tmoveType = 'touch';\n\t\t\t\t\tmoveBegin(x, y);\n\t\t\t\t\treturn el.touchCapture;\n\t\t\t\t}\n\t\t\t} else if (touchList.length === 2) {\n\t\t\t\tif (!scaleType && el.touchScalable) {\n\t\t\t\t\tmoveStop();\n\t\t\t\t\tscaleType = 'touch';\n\t\t\t\t\tconst [t1, t2] = touchList;\n\t\t\t\t\tscaleBegin(t1[0], t1[1], t2[0], t2[1]);\n\t\t\t\t\treturn el.touchCapture;\n\t\t\t\t}\n\n\t\t\t}\n\t\t\treturn null;\n\t\t},\n\t\ttouchEnd(id) {\n\t\t\tdelete touches[id];\n\t\t\tif (scaleType === 'touch') { scaleStop(); }\n\t\t\tif (moveType === 'touch') { moveEnd(); }\n\t\t},\n\t\tmouseMove(x, y, keys) {\n\t\t\tif (moveType === 'leftMouse' && !(keys & 1) || moveType === 'roller' && !(keys & 4)) {\n\t\t\t\tmoveEnd();\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (!moveType) { return; }\n\t\t\tmoveMove(x, y);\n\t\t},\n\t\tmouseBegin(x, y, keys) {\n\t\t\tif (moveType) { return null; }\n\t\t\t/** @type {'leftMouse' | 'roller' | ''} */\n\t\t\tlet type = '';\n\t\t\t/** @type {boolean?} */\n\t\t\tlet res = null;\n\t\t\tif (keys & 1) {\n\t\t\t\tif (!el.leftMouseMovable) { return null; }\n\t\t\t\ttype = 'leftMouse';\n\t\t\t\tres = el.leftMouseMovableCapture;\n\t\t\t} else if (keys & 4) {\n\t\t\t\tif (!el.rollerMovable) { return null; }\n\t\t\t\ttype = 'roller';\n\t\t\t\tres = el.rollerMovableCapture;\n\t\t\t}\n\t\t\tscaleStop();\n\t\t\tmoveType = type;\n\t\t\tmoveBegin(x, y);\n\t\t\treturn res;\n\t\t},\n\t\tmouseEnd() {\n\t\t\tif (!moveType) { return; }\n\t\t\tmoveEnd();\n\t\t},\n\t\twheel(mode, dx, dy, px, py) {\n\t\t\tif (!el.rollerScalable) { return; }\n\t\t\tconst v = Math.abs(dx) > Math.abs(dy) ? dx : dy;\n\t\t\tif (v === 0) { return; }\n\t\t\tscaleStop();\n\t\t\tconst abs = Math.abs(v);\n\t\t\tlet base = 0;\n\t\t\tif (v > 0) {\n\t\t\t\tswitch (mode) {\n\t\t\t\t\tcase 0: base = 1.01; break;\n\t\t\t\t\tcase 1: base = 1.25; break;\n\t\t\t\t\tcase 2: base = 1.6; break;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tswitch (mode) {\n\t\t\t\t\tcase 0: base = 1 / 1.01; break;\n\t\t\t\t\tcase 1: base = 1 / 1.25; break;\n\t\t\t\t\tcase 2: base = 1 / 1.6; break;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst oldZoom = zoom;\n\t\t\tconst newZoom = getZoom(base ** abs * oldZoom);\n\t\t\tzoom = newZoom;\n\t\t\tx = (x - px) / oldZoom * newZoom + px;\n\t\t\ty = (y - py) / oldZoom * newZoom + py;\n\t\t\tupdate();\n\t\t},\n\t};\n\n\t/** @type {() => void} */\n\tlet unregister = () => { };\n\n\t/**\n\t *\n\t * @returns {void}\n\t */\n\tfunction update() {\n\t\tconst [areaWidth, areaHeight] = areaSize;\n\t\tif (!areaWidth || !areaHeight) {\n\t\t\tel.style.transform = `translate(${x}px,${y}px)scale(${zoom})`;\n\t\t}\n\t\tx = calc(x, areaWidth, el.clientWidth * zoom);\n\t\ty = calc(y, areaHeight, el.clientHeight * zoom);\n\t\tel.style.transform = `translate(${x}px,${y}px)scale(${zoom})`;\n\t}\n\treturn [() => {\n\t\tif (el.autoAdaptively) { requestAnimationFrame(adaptively); }\n\n\t\tlet parent = el.parentNode;\n\t\twhile (parent) {\n\t\t\tif (parent instanceof MovableArea) { break; }\n\t\t\tparent = parent.parentNode;\n\t\t}\n\t\tif (parent) {\n\t\t\tunregister = parent.register(movableAreaMember);\n\t\t}\n\t\t// TODO: 绑定到页面中\n\t}, () => {\n\t\tunregister();\n\t}, adaptively];\n}\n/**\n *\n * @param {HTMLElement} el\n * @param {string} name\n * @param {string | boolean} value\n * @returns {void}\n */\nfunction setBoolAttr(el, name, value) {\n\tif (!value && value !== '') {\n\t\tel.removeAttribute(name);\n\t\treturn;\n\t}\n\tel.setAttribute(name, value === true ? '' : value);\n}\n\nclass Movable extends HTMLElement {\n\tstatic get Area() { return MovableArea; }\n\tstatic get Target() { return MovableTarget; }\n\t/**\n\t * 是否拥有惯性\n\t * @type {boolean}\n\t */\n\tget inertia() { return this.getAttribute('inertia') !== null; }\n\tset inertia(v) { setBoolAttr(this, 'inertia', v); }\n\t/**\n\t * 触屏是否捕获\n\t * @type {boolean}\n\t */\n\tget touchCapture() { return this.getAttribute('touch-capture') !== null; }\n\tset touchCapture(v) { setBoolAttr(this, 'touch-capture', v); }\n\t/**\n\t * 是否支持触屏移动\n\t * @type {boolean}\n\t */\n\tget touchMovable() { return this.getAttribute('touch-movable') !== null; }\n\tset touchMovable(v) { setBoolAttr(this, 'touch-movable', v); }\n\t/**\n\t * 是否支持触屏缩放\n\t * @type {boolean}\n\t */\n\tget touchScalable() { return this.getAttribute('touch-scalable') !== null; }\n\tset touchScalable(v) { setBoolAttr(this, 'touch-scalable', v); }\n\t/**\n\t * 是否支持鼠标滚论移动\n\t * @type {boolean}\n\t */\n\tget rollerMovable() { return this.getAttribute('roller-movable') !== null; }\n\tset rollerMovable(v) { setBoolAttr(this, 'roller-movable', v); }\n\t/**\n\t * 鼠标滚论移动是否捕获\n\t * @type {boolean}\n\t */\n\tget rollerMovableCapture() { return this.getAttribute('roller-movable-capture') !== null; }\n\tset rollerMovableCapture(v) { setBoolAttr(this, 'roller-movable-capture', v); }\n\t/**\n\t * 是否支持鼠标滚论缩放\n\t * @type {boolean}\n\t */\n\tget rollerScalable() { return this.getAttribute('roller-scalable') !== null; }\n\tset rollerScalable(v) { setBoolAttr(this, 'roller-scalable', v); }\n\t/**\n\t * 是否支持鼠标左键移动\n\t * @type {boolean}\n\t */\n\tget leftMouseMovable() { return this.getAttribute('left-mouse-movable') !== null; }\n\tset leftMouseMovable(v) { setBoolAttr(this, 'left-mouse-movable', v); }\n\t/**\n\t * 鼠标左键移动是否捕获\n\t * @type {boolean}\n\t */\n\tget leftMouseMovableCapture() { return this.getAttribute('left-mouse-movable-capture') !== null; }\n\tset leftMouseMovableCapture(v) { setBoolAttr(this, 'left-mouse-movable-capture', v); }\n\t/**\n\t * 是否自动自适应\n\t * @type {boolean}\n\t */\n\tget autoAdaptively() { return this.getAttribute('adaptively') !== null; }\n\tset autoAdaptively(v) { setBoolAttr(this, 'adaptively', v); }\n\t/**\n\t * 是否在整个 `<nl-movable-area>` 区域内操作都有效\n\t * @type {boolean}\n\t */\n\tget global() { return this.getAttribute('global') !== null; }\n\tset global(v) { setBoolAttr(this, 'global', v); }\n\t/** @type {Set<EventTarget>} */\n\t#targets = new Set();\n\t/** @type {() => void} */\n\t#connect;\n\t/** @type {() => void} */\n\t#disconnect;\n\t/** @type {() => void} */\n\t#adaptively;\n\tconstructor() {\n\t\tsuper();\n\t\t[\n\t\t\tthis.#connect,\n\t\t\tthis.#disconnect,\n\t\t\tthis.#adaptively,\n\t\t] = init(this, this.#targets);\n\t}\n\t/**\n\t *\n\t * @param {EventTarget} o\n\t * @returns {() => void}\n\t */\n\tregister(o) {\n\t\tconst targets = this.#targets;\n\t\ttargets.add(o);\n\t\treturn () => { targets.delete(o); };\n\t}\n\t/**\n\t * 自适应\n\t * @returns {void}\n\t */\n\tadaptively() { this.#adaptively(); }\n\t/**\n\t * @returns {void}\n\t */\n\tconnectedCallback() { this.#connect(); }\n\t/**\n\t * @returns {void}\n\t */\n\tdisconnectedCallback() { this.#disconnect(); }\n\t/**\n\t * @returns {void}\n\t */\n\tadoptedCallback() { }\n}\n\ntry {\n\tcustomElements.define('nl-movable-area', MovableArea);\n\tcustomElements.define('nl-movable', Movable);\n\tcustomElements.define('nl-movable-target', MovableTarget);\n} catch {}\n\n/** @typedef {MovableArea} Movable.Area */\n/** @typedef {MovableTarget} Movable.Target */\nvar Movable$1 = Movable;\n\nexport { Movable$1 as default };\n","/*!\n * 匿龙组件库 @neeloong/components v0.7.0\n * (c) 2023-2024 猛火Fierflame\n * @license MIT\n */\nclass PaginationWidget extends HTMLElement {\n\t/** @type {() => void} */\n\t#unregister = () => {};\n\t/** @type {Pagination?} */\n\t#pagination = null;\n\tget pagination() { return this.#pagination; }\n\t/**\n\t * @param {import('./index.mjs').State} state\n\t * @protected\n\t */\n\tupdateCallback(state) { }\n\t#size = 0;\n\t#total = 0;\n\t#pages = 1;\n\t#page = 1;\n\tget size() { return this.#size; }\n\tget total() { return this.#total; }\n\tget pages() { return this.#pages; }\n\tget page() { return this.#page; }\n\n\t/**\n\t * @returns {void}\n\t */\n\tconnectedCallback() {\n\t\tlet parent = this.parentNode;\n\t\twhile (parent) {\n\t\t\tif (parent instanceof Pagination) { break; }\n\t\t\tparent = parent.parentNode;\n\t\t}\n\t\tif (!parent) { return; }\n\t\tthis.#pagination = parent;\n\t\tthis.#unregister = parent.register({\n\t\t\tupdate: ({size, total, pages, page}) => {\n\t\t\t\tthis.#size = size;\n\t\t\t\tthis.#total = total;\n\t\t\t\tthis.#pages = pages;\n\t\t\t\tthis.#page = page;\n\t\t\t\tthis.updateCallback({size, total, pages, page});\n\t\t\t},\n\t\t});\n\t}\n\t/**\n\t * @returns {void}\n\t */\n\tdisconnectedCallback() {\n\t\tthis.#pagination = null;\n\t\tthis.#unregister();\n\t}\n}\n\n/**\n *\n * @param {string} style\n * @returns {HTMLStyleElement}\n */\nfunction createStyle(style) {\n\tconst el = document.createElement('style');\n\tel.textContent = style;\n\treturn el;\n}\n\nconst style$6 = '';\n\n// TODO: 自定义跳转\nclass PaginationJumper extends PaginationWidget {\n\tstatic observedAttributes = ['disabled'];\n\t/**\n\t * 每页数量\n\t * @type {boolean}\n\t */\n\tget disabled() { return this.getAttribute('disabled') !== null; }\n\tset disabled(value) {\n\t\tif (!value) {\n\t\t\tthis.removeAttribute('disabled');\n\t\t} else {\n\t\t\tthis.setAttribute('disabled', '');\n\t\t}\n\t}\n\t#shadow = this.attachShadow({ mode: 'closed' });\n\t#style = this.#shadow.appendChild(createStyle(style$6));\n\t#input = (() => {\n\t\tconst input = document.createElement('input');\n\t\tinput.setAttribute('part', 'input');\n\t\tinput.type = 'number';\n\t\tinput.min = '1';\n\t\tinput.step = '1';\n\t\tthis.#shadow.appendChild(input);\n\t\tconst change = () => {\n\t\t\tconst {pagination} = this;\n\t\t\tif (!pagination) { return; }\n\t\t\tconst page = input.value;\n\t\t\tif (!page) { return; }\n\t\t\tpagination.setPage(Number(page));\n\n\t\t};\n\t\tinput.addEventListener('change', change);\n\t\tinput.addEventListener('keydown', e => {\n\t\t\tif (e.code !== 'Enter') { return; }\n\t\t\te.preventDefault();\n\t\t\tchange();\n\t\t});\n\t\treturn input;\n\t})();\n\t/** @protected */\n\tupdateCallback() {\n\t\tconst input = this.#input;\n\t\tconst {pages, page} = this;\n\t\tinput.max = String(pages);\n\t\tinput.value = String(page);\n\t\tinput.placeholder = String(page);\n\t}\n\t/**\n\t * @param {string} attrName\n\t * @param {string | null} oldVal\n\t * @param {string | null} newVal\n\t * @returns {void}\n\t */\n\tattributeChangedCallback(attrName, oldVal, newVal) {\n\t\tif (oldVal === newVal) { return; }\n\t\tswitch (attrName) {\n\t\t\tcase 'disabled':\n\t\t\t\tthis.#input.disabled = this.disabled;\n\t\t\t\tbreak;\n\t\t}\n\t}\n}\n\nconst style$5 = '';\n\n// TODO: 下一页的实现\n// TODO: 当不满足跳转时的处理:自动调整、隐藏、禁用\n// TODO: 当无法跳转时的处理:隐藏、禁用\nclass PaginationNext extends PaginationWidget {\n\tstatic observedAttributes = ['disabled'];\n\t/**\n\t * 每页数量\n\t * @type {boolean}\n\t */\n\tget disabled() { return this.getAttribute('disabled') !== null; }\n\tset disabled(value) {\n\t\tif (!value) {\n\t\t\tthis.removeAttribute('disabled');\n\t\t} else {\n\t\t\tthis.setAttribute('disabled', '');\n\t\t}\n\t}\n\t#shadow = this.attachShadow({ mode: 'closed' });\n\t#style = this.#shadow.appendChild(createStyle(style$5));\n\t#button = (() => {\n\t\tconst button = document.createElement('button');\n\t\tbutton.type = 'button';\n\t\tthis.#shadow.appendChild(button);\n\t\tbutton.setAttribute('part', 'button');\n\t\treturn button;\n\t})();\n\t#slot = this.#button.appendChild(document.createElement('slot'));\n\t#updateDisabled() { this.#button.disabled = this.disabled || this.page === this.pages; }\n\tconstructor() {\n\t\tsuper();\n\t\tthis.addEventListener('click', e => {\n\t\t\tconst {defaultPrevented} = e;\n\t\t\te.preventDefault();\n\t\t\tif (this.#button.disabled) {\n\t\t\t\te.stopPropagation();\n\t\t\t} else if (!defaultPrevented) {\n\t\t\t\tthis.pagination?.setPage(this.page + 1);\n\t\t\t}\n\t\t});\n\t}\n\t/** @protected */\n\tupdateCallback() {\n\t\tthis.#updateDisabled();\n\t}\n\n\t/**\n\t * @param {string} attrName\n\t * @param {string | null} oldVal\n\t * @param {string | null} newVal\n\t * @returns {void}\n\t */\n\tattributeChangedCallback(attrName, oldVal, newVal) {\n\t\tif (oldVal === newVal) { return; }\n\t\tswitch (attrName) {\n\t\t\tcase 'disabled':\n\t\t\t\tthis.#updateDisabled();\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n}\n\nconst style$4 = '';\n\n// TODO: 当不满足跳转时的处理:自动调整、隐藏、禁用\n// TODO: 当无法跳转时的处理:隐藏、禁用\nclass PaginationPage extends PaginationWidget {\n\tstatic observedAttributes = ['value', 'disabled'];\n\t/**\n\t * 每页数量\n\t * @type {number}\n\t */\n\tget value() { return Math.max(1, parseInt(this.getAttribute('value') || '') || 1); }\n\tset value(value) {\n\t\tif (!value) {\n\t\t\tthis.removeAttribute('value');\n\t\t} else {\n\t\t\tthis.setAttribute('value', String(value));\n\t\t}\n\t}\n\t/**\n\t * 每页数量\n\t * @type {boolean}\n\t */\n\tget disabled() { return this.getAttribute('disabled') !== null; }\n\tset disabled(value) {\n\t\tif (!value) {\n\t\t\tthis.removeAttribute('disabled');\n\t\t} else {\n\t\t\tthis.setAttribute('disabled', '');\n\t\t}\n\t}\n\tget target() { return Math.min(this.value, this.pages); }\n\tget isCurrent() { return this.target === this.page; }\n\n\t#shadow = this.attachShadow({ mode: 'closed' });\n\t#style = this.#shadow.appendChild(createStyle(style$4));\n\t#button = (() => {\n\t\tconst button = document.createElement('button');\n\t\tbutton.type = 'button';\n\t\tbutton.setAttribute('part', 'button');\n\t\tthis.#shadow.appendChild(button);\n\t\treturn button;\n\t})();\n\t#slot = (() => {\n\t\tconst slot = document.createElement('slot');\n\t\tthis.#button.appendChild(slot);\n\t\tslot.innerText = '1';\n\t\treturn slot;\n\t})();\n\t#updateDisabled() { this.#button.disabled = this.disabled || this.isCurrent; }\n\tconstructor() {\n\t\tsuper();\n\t\tthis.addEventListener('click', e => {\n\t\t\tconst {defaultPrevented} = e;\n\t\t\te.preventDefault();\n\t\t\tif (this.#button.disabled) {\n\t\t\t\te.stopPropagation();\n\t\t\t} else if (!defaultPrevented) {\n\t\t\t\tthis.pagination?.setPage(this.value);\n\t\t\t}\n\t\t});\n\t}\n\t/** @protected */\n\tupdateCallback() {\n\t\tthis.#updateDisabled();\n\t}\n\t/**\n\t * @param {string} attrName\n\t * @param {string | null} oldVal\n\t * @param {string | null} newVal\n\t * @returns {void}\n\t */\n\tattributeChangedCallback(attrName, oldVal, newVal) {\n\t\tif (oldVal === newVal) { return; }\n\t\tswitch (attrName) {\n\t\t\tcase 'value':\n\t\t\t\tthis.#slot.innerText = String(this.value);\n\t\t\t\tthis.#updateDisabled();\n\t\t\t\tbreak;\n\t\t\tcase 'disabled':\n\t\t\t\tthis.#updateDisabled();\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n}\n\nconst style$3 = `\n:host { display: contents; }\n.placeholder::after {\n\tcontent: var(--nl-pagination-pager-placeholder, '...');\n}\n`;\n\n// TODO: 常规页面切换器\n// TODO: 向前(后)最多显示多少\n// TODO: 是否显示第一/最后页\nclass PaginationPager extends PaginationWidget {\n\tstatic observedAttributes = ['disabled'];\n\t/**\n\t * 每页数量\n\t * @type {boolean}\n\t */\n\tget disabled() { return this.getAttribute('disabled') !== null; }\n\tset disabled(value) {\n\t\tif (!value) {\n\t\t\tthis.removeAttribute('disabled');\n\t\t} else {\n\t\t\tthis.setAttribute('disabled', '');\n\t\t}\n\t}\n\t#shadow = this.attachShadow({ mode: 'closed' });\n\t#style = this.#shadow.appendChild(createStyle(style$3));\n\t/** @type {Record<number, HTMLButtonElement>} */\n\t#buttons = Object.create(null);\n\t/** @type {HTMLElement[]} */\n\t#children = [];\n\t#createButtons() {\n\t\tfor (const el of this.#children) {\n\t\t\tel.remove();\n\t\t}\n\t\tconst buttons = Object.create(null);\n\t\t/** @type {HTMLElement[]} */\n\t\tconst children = [];\n\t\tthis.#buttons = buttons;\n\t\tthis.#children = children;\n\n\t\tconst { disabled } = this;\n\t\tconst shadow = this.#shadow;\n\t\tconst current = this.page;\n\t\tconst max = this.pages;\n\n\t\tlet start = Math.max(2, current - 2);\n\t\tlet end = Math.min(current + 2, max - 1);\n\t\t/** @param {number} k */\n\t\tconst createButton = k => {\n\t\t\tconst button = document.createElement('button');\n\t\t\tbutton.type = 'button';\n\t\t\tbutton.innerText = String(k);\n\t\t\tbutton.setAttribute('part', k === current ? 'button current' : 'button');\n\t\t\tbutton.disabled = disabled || k === current;\n\t\t\tbutton.addEventListener('click', () => {\n\t\t\t\tthis.pagination?.setPage(k);\n\t\t\t});\n\t\t\tchildren.push(button);\n\t\t\tshadow.appendChild(button);\n\t\t\tbuttons[k] = button;\n\t\t};\n\t\tconst createPlaceholder = () => {\n\t\t\tconst span = document.createElement('span');\n\t\t\tspan.className = 'placeholder';\n\t\t\tspan.setAttribute('part', 'placeholder');\n\t\t\tshadow.appendChild(span);\n\t\t\tchildren.push(span);\n\t\t};\n\t\tcreateButton(1);\n\t\tif (current > 4) {\n\t\t\tcreatePlaceholder();\n\t\t}\n\t\tfor (let i = start; i <= end; i++) {\n\t\t\tcreateButton(i);\n\t\t}\n\t\tif (max - current > 3) {\n\t\t\tcreatePlaceholder();\n\t\t}\n\t\tif (max > 1) {\n\t\t\tcreateButton(max);\n\t\t}\n\n\t}\n\t#updateDisabled() {\n\t\tconst { disabled } = this;\n\t\tconst current = String(this.page);\n\t\tfor (const [k, v] of Object.entries(this.#buttons)) {\n\t\t\tv.disabled = disabled || k === current;\n\t\t}\n\t}\n\t/** @protected */\n\tupdateCallback() {\n\t\tthis.#createButtons();\n\t\t// TODO:\n\t}\n\t/**\n\t * @param {string} attrName\n\t * @param {string | null} oldVal\n\t * @param {string | null} newVal\n\t * @returns {void}\n\t */\n\tattributeChangedCallback(attrName, oldVal, newVal) {\n\t\tif (oldVal === newVal) { return; }\n\t\tswitch (attrName) {\n\t\t\tcase 'disabled':\n\t\t\t\tthis.#updateDisabled();\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n}\n\nconst style$2 = '';\n\n// TODO: 上一页的实现\n// TODO: 当不满足跳转时的处理:自动调整、隐藏、禁用\n// TODO: 当无法跳转时的处理:隐藏、禁用\nclass PaginationPrev extends PaginationWidget {\n\tstatic observedAttributes = ['disabled'];\n\t/**\n\t * 每页数量\n\t * @type {boolean}\n\t */\n\tget disabled() { return this.getAttribute('disabled') !== null; }\n\tset disabled(value) {\n\t\tif (!value) {\n\t\t\tthis.removeAttribute('disabled');\n\t\t} else {\n\t\t\tthis.setAttribute('disabled', '');\n\t\t}\n\t}\n\t#shadow = this.attachShadow({ mode: 'closed' });\n\t#style = this.#shadow.appendChild(createStyle(style$2));\n\t#button = (() => {\n\t\tconst button = document.createElement('button');\n\t\tbutton.type = 'button';\n\t\tbutton.setAttribute('part', 'button');\n\t\tthis.#shadow.appendChild(button);\n\t\treturn button;\n\t})();\n\t#slot = this.#button.appendChild(document.createElement('slot'));\n\t#updateDisabled() { this.#button.disabled = this.disabled || this.page === 1; }\n\tconstructor() {\n\t\tsuper();\n\t\tthis.addEventListener('click', e => {\n\t\t\tconst {defaultPrevented} = e;\n\t\t\te.preventDefault();\n\t\t\tif (this.#button.disabled) {\n\t\t\t\te.stopPropagation();\n\t\t\t} else if (!defaultPrevented) {\n\t\t\t\tthis.pagination?.setPage(this.page - 1);\n\t\t\t}\n\t\t});\n\t}\n\t/** @protected */\n\tupdateCallback() {\n\t\tthis.#updateDisabled();\n\t}\n\t/**\n\t * @param {string} attrName\n\t * @param {string | null} oldVal\n\t * @param {string | null} newVal\n\t * @returns {void}\n\t */\n\tattributeChangedCallback(attrName, oldVal, newVal) {\n\t\tif (oldVal === newVal) { return; }\n\t\tswitch (attrName) {\n\t\t\tcase 'disabled':\n\t\t\t\tthis.#updateDisabled();\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n}\n\nconst style$1 = '';\n\n\n/**\n *\n * @param {string?} t\n * @returns {Set<number>?}\n */\nfunction parseSizes(t) {\n\tconst l = t?.split(/[,;: ]/).map(v => parseInt(v)).filter(v => v >= 0);\n\treturn l?.length ? new Set(l) : null;\n}\n/**\n *\n * @param {string | number | bigint | (string | bigint | number)[]} sizes\n * @returns {number[]}\n */\nfunction parseSizesInput(sizes) {\n\tif (typeof sizes === 'string') {\n\t\tconst s = parseSizes(sizes);\n\t\treturn s ? [...s] : [];\n\t}\n\tif (typeof sizes === 'number') {\n\t\tconst s = Math.floor(sizes);\n\t\treturn s >= 0 ? [s] : [];\n\t}\n\tif (typeof sizes === 'bigint') {\n\t\treturn sizes >= 0n ? [Number(sizes)] : [];\n\t}\n\ttry {\n\t\treturn Array(sizes).flat(Infinity).flatMap(parseSizesInput);\n\t} catch {\n\t\treturn [];\n\t}\n\n}\nconst defaultSizes = [10, 20, 30, 50, 100];\n/**\n *\n * @param {string?} t\n * @param {number?} [d]\n * @returns {number[]}\n */\nfunction getSizes(t, d) {\n\tconst s = parseSizes(t) || new Set(defaultSizes);\n\tif (typeof d === 'number') { s.add(d); }\n\treturn [...s].sort((a, b) => a - b);\n}\n// TODO: 分页器\n// TODO: 可选范围,逗号隔开\nclass PaginationSizer extends PaginationWidget {\n\tstatic observedAttributes = ['sizes', 'label', 'non-label', 'disabled'];\n\t/**\n\t * 每页数量\n\t * @type {boolean}\n\t */\n\tget disabled() { return this.getAttribute('disabled') !== null; }\n\tset disabled(value) {\n\t\tif (!value) {\n\t\t\tthis.removeAttribute('disabled');\n\t\t} else {\n\t\t\tthis.setAttribute('disabled', '');\n\t\t}\n\t}\n\t#shadow = this.attachShadow({ mode: 'closed' });\n\t#style = this.#shadow.appendChild(createStyle(style$1));\n\t#input = (() => {\n\t\tconst select = this.#shadow.appendChild(document.createElement('select'));\n\t\tselect.setAttribute('part', 'input');\n\t\tselect.addEventListener('change', () => {\n\t\t\tconst {pagination} = this;\n\t\t\tif (!pagination) { return; }\n\t\t\tpagination.setSize(Number(select.value));\n\t\t});\n\t\treturn select;\n\t})();\n\t/** @type {HTMLOptionElement} */\n\t#nonLabel = (() => {\n\t\tconst nonLabel = document.createElement('option');\n\t\tnonLabel.label = '-';\n\t\tnonLabel.value = '0';\n\t\treturn nonLabel;\n\t})();\n\t/** @type {HTMLOptionElement[]} */\n\t#labels = [];\n\t#update() {\n\t\tconst s = parseSizes(this.getAttribute('sizes')) || new Set(defaultSizes);\n\t\tconst {size} = this;\n\t\ts.add(size);\n\t\tconst select = this.#input;\n\t\tselect.innerHTML = '';\n\t\tif (s.delete(0)) {\n\t\t\tselect.appendChild(this.#nonLabel);\n\t\t}\n\t\t/** @type {HTMLOptionElement[]} */\n\t\tconst labels = [];\n\t\tthis.#labels = labels;\n\t\tconst labelText = this.label;\n\t\tfor (const o of [...s].sort((a, b) => a - b)) {\n\t\t\tconst label = document.createElement('option');\n\t\t\tlabel.label = labelText.replace(/#/g, String(o));\n\t\t\tlabel.value = String(o);\n\t\t\tlabels.push(label);\n\t\t\tselect.appendChild(label);\n\t\t}\n\t\tselect.value = String(size);\n\t}\n\tget label() { return this.getAttribute('label') || '#'; }\n\tset label(label) {\n\t\tif (label) {\n\t\t\tthis.setAttribute('label', label);\n\t\t} else {\n\t\t\tthis.removeAttribute('label');\n\t\t}\n\t}\n\tget nonLabel() { return this.getAttribute('non-label') || '-'; }\n\tset nonLabel(label) {\n\t\tif (label) {\n\t\t\tthis.setAttribute('non-label', label);\n\t\t} else {\n\t\t\tthis.removeAttribute('non-label');\n\t\t}\n\t}\n\tget sizes() { return getSizes(this.getAttribute('sizes')); }\n\tset sizes(sizes) {\n\t\tconst s = parseSizesInput(sizes);\n\t\tif (!s.length) {\n\t\t\tthis.removeAttribute('sizes');\n\t\t} else {\n\t\t\tthis.setAttribute('sizes', [...new Set(s)].sort((a, b) => a - b).join(','));\n\t\t}\n\t}\n\t#size = 0;\n\t/** @protected */\n\tupdateCallback() {\n\t\tconst {size} = this;\n\t\tif (this.#size === size) { return; }\n\t\tthis.#size = size;\n\t\tthis.#update();\n\t}\n\t/**\n\t * @param {string} attrName\n\t * @param {string | null} oldVal\n\t * @param {string | null} newVal\n\t * @returns {void}\n\t */\n\tattributeChangedCallback(attrName, oldVal, newVal) {\n\t\tif (oldVal === newVal) { return; }\n\t\tswitch (attrName) {\n\t\t\tcase 'sizes':\n\t\t\t\tthis.#update();\n\t\t\t\tbreak;\n\t\t\tcase 'label':{\n\t\t\t\tconst labelText = this.label;\n\t\t\t\tfor (const label of this.#labels) {\n\t\t\t\t\tlabel.label = labelText.replace(/#/g, label.value);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase 'non-label':{\n\t\t\t\tthis.#nonLabel.label = this.nonLabel;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase 'disabled':\n\t\t\t\tthis.#input.disabled = this.disabled;\n\t\t\t\tbreak;\n\t\t}\n\t}\n}\n\nconst style = '';\n\nclass PaginationValue extends PaginationWidget {\n\tstatic observedAttributes = ['name'];\n\t/**\n\t * 每页数量\n\t * @type {'size' | 'total' | 'pages' | 'page' | 'start' | 'end' | 'page'}\n\t */\n\tget name() {\n\t\tconst name = this.getAttribute('name')?.toLowerCase() || '';\n\t\tif (['size', 'total', 'pages', 'page', 'start', 'end'].includes(name)) { return /** @type {any} */(name); }\n\t\treturn 'page';\n\t}\n\t/** @param {string} value*/\n\tset name(value) {\n\t\tif (!value) {\n\t\t\tthis.removeAttribute('name');\n\t\t} else {\n\t\t\tthis.setAttribute('name', String(value));\n\t\t}\n\t}\n\t#state = { size: 0, total: 0, pages: 1, page: 1, start: 0, end: 0 };\n\t#shadow = this.attachShadow({ mode: 'closed' });\n\t#style = this.#shadow.appendChild(createStyle(style));\n\t#text = this.#shadow.appendChild(document.createTextNode(''));\n\t#update() {\n\t\tconst value = this.#state[this.name];\n\t\tthis.#text.textContent = String(value);\n\t}\n\t/** @protected */\n\tupdateCallback() {\n\t\tconst {size, total, pages, page} = this;\n\t\tthis.#state = {\n\t\t\tsize,\n\t\t\ttotal, pages, page,\n\t\t\tstart: Math.min((page - 1) * size + 1, total),\n\t\t\tend: size ? Math.min(page * size, total) : total,\n\n\t\t};\n\t\tthis.#update();\n\t}\n\t/**\n\t * @param {string} attrName\n\t * @param {string | null} oldVal\n\t * @param {string | null} newVal\n\t * @returns {void}\n\t */\n\tattributeChangedCallback(attrName, oldVal, newVal) {\n\t\tif (oldVal === newVal) { return; }\n\t\tswitch (attrName) {\n\t\t\tcase 'name': this.#update();\n\t\t}\n\t}\n\n}\n\n/**\n * @typedef {object} State\n * @property {number} size\n * @property {number} total\n * @property {number} pages\n * @property {number} page\n */\n/**\n * @typedef {object} Component\n * @property {(state: State) => void} update\n */\n/**\n *\n * @param {HTMLElement} el\n * @param {string} name\n * @param {string | number | null} value\n * @returns {void}\n */\nfunction setIntAttr(el, name, value) {\n\tif (typeof value === 'string') {\n\t\tvalue = parseInt(value);\n\t} else if (typeof value === 'number') {\n\t\tvalue = Math.floor(value);\n\t} else if (typeof value === 'bigint') {\n\t\tvalue = Number(value);\n\t} else {\n\t\tvalue = Number.NaN;\n\t}\n\tif (Number.isNaN(value) || value < 0) {\n\t\tel.removeAttribute(name);\n\t\treturn;\n\t}\n\tel.setAttribute(name, String(value));\n}\n/**\n *\n * @param {string?} value\n * @returns {number}\n */\nfunction parseIntAttr(value) {\n\tif (!value) { return 0; }\n\tconst n = parseInt(value);\n\treturn Number.isNaN(n) || n < 0 ? 0 : n;\n}\nclass Pagination extends HTMLElement {\n\tstatic get Widget() { return PaginationWidget; }\n\tstatic get Jumper() { return PaginationJumper; }\n\tstatic get Next() { return PaginationNext; }\n\tstatic get Page() { return PaginationPage; }\n\tstatic get Pager() { return PaginationPager; }\n\tstatic get Prev() { return PaginationPrev; }\n\tstatic get Sizer() { return PaginationSizer; }\n\tstatic get Value() { return PaginationValue; }\n\tstatic observedAttributes = ['size', 'total', 'pages', 'page'];\n\t/**\n\t * 每页数量\n\t * @type {number}\n\t */\n\tget size() { return parseIntAttr(this.getAttribute('size')) || 0; }\n\tset size(v) { setIntAttr(this, 'size', v); }\n\t/**\n\t * 总数\n\t * @type {number}\n\t */\n\tget total() { return parseIntAttr(this.getAttribute('total')) || 0; }\n\tset total(v) { setIntAttr(this, 'total', v); }\n\t/**\n\t * 总分页数,如果未设置,则为 `Math.ceil(total / size)`\n\t * @type {number}\n\t */\n\tget pages() {\n\t\tconst pages = parseIntAttr(this.getAttribute('pages'));\n\t\tif (pages) { return pages; }\n\t\tconst {size} = this;\n\t\tif (!size) { return 1; }\n\t\treturn Math.ceil(this.total / size) || 1;\n\t}\n\tset pages(v) { setIntAttr(this, 'pages', v); }\n\t/**\n\t * 当前页码\n\t * @type {number}\n\t */\n\tget page() { return Math.min(parseIntAttr(this.getAttribute('page')) || 1, this.pages); }\n\tset page(v) { setIntAttr(this, 'page', v); }\n\t/**\n\t *\n\t * @param {number} page\n\t */\n\tsetPage(page) {\n\t\tthis.page = page;\n\t\tthis.dispatchEvent(new Event('change'));\n\t}\n\t/**\n\t *\n\t * @param {number} size\n\t */\n\tsetSize(size) {\n\t\tthis.size = size;\n\t\tthis.dispatchEvent(new Event('change'));\n\t}\n\t#subElements = new Set();\n\t/**\n\t *\n\t * @param {Component} o\n\t * @returns {() => void}\n\t */\n\tregister(o) {\n\t\tconst subElements = this.#subElements;\n\t\tsubElements.add(o);\n\t\to.update({...this.#state});\n\t\treturn () => { subElements.delete(o); };\n\t}\n\t/**\n\t * @returns {void}\n\t */\n\tconnectedCallback() { }\n\t/**\n\t * @returns {void}\n\t */\n\tdisconnectedCallback() { }\n\t/**\n\t * @returns {void}\n\t */\n\tadoptedCallback() { }\n\t#state = {size: 0, total: 0, pages: 1, page: 1};\n\t/**\n\t * @param {string} attrName\n\t * @param {string | null} oldVal\n\t * @param {string | null} newVal\n\t * @returns {void}\n\t */\n\tattributeChangedCallback(attrName, oldVal, newVal) {\n\t\tif (oldVal === newVal) { return; }\n\t\tconst {size, total, pages, page} = this;\n\t\tconst oldState = this.#state;\n\t\tif (size === oldState.size && total === oldState.total && pages === oldState.pages && page === oldState.page) {\n\t\t\treturn;\n\t\t}\n\t\tconst state = {size, total, pages, page};\n\t\tthis.#state = state;\n\t\tfor (const s of [...this.#subElements]) {\n\t\t\ts.update({...state});\n\t\t}\n\t}\n\n}\n\ntry {\n\tcustomElements.define('nl-pagination', Pagination);\n\tcustomElements.define('nl-pagination-jumper', PaginationJumper);\n\tcustomElements.define('nl-pagination-next', PaginationNext);\n\tcustomElements.define('nl-pagination-page', PaginationPage);\n\tcustomElements.define('nl-pagination-pager', PaginationPager);\n\tcustomElements.define('nl-pagination-prev', PaginationPrev);\n\tcustomElements.define('nl-pagination-sizer', PaginationSizer);\n\tcustomElements.define('nl-pagination-value', PaginationValue);\n} catch {}\n\nexport { Pagination, Pagination as default };\n","/*!\n * 匿龙组件库 @neeloong/components v0.7.0\n * (c) 2023-2024 猛火Fierflame\n * @license MIT\n */\nconst style = `\n:host {\n\tdisplay: inline-block;\n\toverflow: hidden;\n\n\tposition: relative;\n\tcontainer-name: host;\n}\n:host([hidden]) { display: none; }\n\n.value {\n\tcolor: transparent;\n\ttext-align: center;\n\ttext-orientation: upright;\n\tinline-size: 100%;\n\tblock-size: 100%;\n\tdisplay: flex;\n\tflex-direction: column;\n\toverflow: hidden;\n}\n.value:empty::before {\n\tcontent: '.'\n}\n.root, .sign {\n\tposition: absolute;\n\ttext-align: center;\n\ttext-orientation: upright;\n\ttransition: all 1.5s;\n\tdisplay: flex;\n\tflex-direction: column;\n\tjustify-content: space-around;\n\toverflow: hidden;\n\tuser-select: none;\n\tpointer-events: none;\n}\n.root {\n\tcounter-reset: nl-roll-digit -1;\n\tinline-size: 100%;\n\tblock-size: 1000%;\n\tinset-inline-start: 0;\n}\n.root span {\n\tflex: 1;\n\toverflow: hidden;\n\tcounter-increment: nl-roll-digit;\n}\n.root span::before {\n\tcontent: counter(nl-roll-digit)\n}\n.sign {\n\tinline-size: 100%;\n\tblock-size: 300%;\n\tinset-block-start: -100%;\n\tinset-inline-start: -100%;\n}\n.sign span {\n\tflex: 1;\n\toverflow: hidden;\n}\n.sign span::before {\n\tcontent: ''\n}\n.sign span:first-child::before {\n\tcontent: '-'\n}\n.sign span:last-child::before {\n\tcontent: '+'\n}\n:host([sign]) .sign {\n\tinset-inline-start: 0;\n}\n:host([sign]) .root {\n\tinset-inline-start: 100%;\n}\n`;\n\n/**\n * 数字滚动组件\n */\nclass RollDigit extends HTMLElement {\n\tstatic observedAttributes = ['digit', 'value', 'sign', 'plus', 'zero'];\n\t#main = document.createElement('span');\n\t#sign = document.createElement('span');\n\t#value = document.createElement('span');\n\t#update() {\n\t\tconst n = this.currentDigit;\n\t\tconst s = this.currentSign;\n\t\tthis.#value.innerText = this.sign ? s : `${n}`;\n\t\tthis.#main.style.insetBlockStart = `-${n}00%`;\n\t\tthis.#sign.style.insetBlockStart = `-${s === '+' ? 2 : s === '-' ? 0 : 1}00%`;\n\t}\n\tconstructor() {\n\t\tsuper();\n\t\tconst shadow = this.attachShadow({mode:'closed'});\n\t\tshadow.appendChild(document.createElement('style')).textContent = style;\n\t\tconst main = shadow.appendChild(this.#main);\n\t\tmain.className = 'root';\n\t\tfor (let i = 0; i < 10; i++) {\n\t\t\tmain.appendChild(document.createElement('span'));\n\t\t}\n\t\tconst sign = shadow.appendChild(this.#sign);\n\t\tsign.className = 'sign';\n\t\tfor (let i = 0; i < 3; i++) {\n\t\t\tsign.appendChild(document.createElement('span'));\n\t\t}\n\t\tshadow.appendChild(this.#value).className = 'value';\n\t}\n\t/**\n\t * @type {number}\n\t */\n\tget currentDigit() {\n\t\treturn Math.floor(Math.abs(this.value) / 10 ** this.digit % 10);\n\t}\n\tget currentSign() {\n\t\tconst {value} = this;\n\t\tif (value < 0) { return '-'; }\n\t\tif (!value) { return this.zero; }\n\t\treturn this.plus ? '+' : '';\n\t}\n\t/**\n\t * @type {number}\n\t */\n\tget digit() {\n\t\treturn parseInt(this.getAttribute('digit') || '') || 0;\n\t}\n\t/** @type {number | string | null | undefined} */\n\tset digit(digit) {\n\t\tif (digit === undefined || digit === null) {\n\t\t\tthis.removeAttribute('digit');\n\t\t} else {\n\t\t\tthis.setAttribute('digit', String(digit));\n\t\t}\n\t}\n\tget sign() { return this.hasAttribute('sign'); }\n\tset sign(sign) {\n\t\tif (sign) {\n\t\t\tthis.setAttribute('sign', '');\n\t\t} else {\n\t\t\tthis.removeAttribute('sign');\n\t\t}\n\t}\n\tget plus() { return this.hasAttribute('plus'); }\n\tset plus(plus) {\n\t\tif (plus) {\n\t\t\tthis.setAttribute('plus', '');\n\t\t} else {\n\t\t\tthis.removeAttribute('plus');\n\t\t}\n\t}\n\tget zero() {\n\t\tconst sign = this.getAttribute('zero');\n\t\treturn sign === '+' || sign === '-' ? sign : '';\n\t}\n\tset zero(sign) {\n\t\tif (sign === '+' || sign === '-') {\n\t\t\tthis.setAttribute('plus-zero', sign);\n\t\t} else {\n\t\t\tthis.removeAttribute('zero');\n\t\t}\n\t}\n\t/**\n\t * @type {number}\n\t */\n\tget value() { return parseFloat(this.getAttribute('value') || '') || 0; }\n\t/** @type {number | string | null | undefined} */\n\tset value(value) {\n\t\tif (value === undefined || value === null) {\n\t\t\tthis.removeAttribute('value');\n\t\t} else {\n\t\t\tthis.setAttribute('value', String(value));\n\t\t}\n\t}\n\tconnectedCallback() {\n\t\tthis.#update();\n\t}\n\t/**\n\t * @param {string} attrName\n\t * @param {string | null} oldVal\n\t * @param {string | null} newVal\n\t * @returns {void}\n\t * @protected\n\t */\n\tattributeChangedCallback(attrName, oldVal, newVal) {\n\t\tif (oldVal === newVal) { return; }\n\t\tswitch (attrName) {\n\t\t\tcase 'digit': case 'value': case 'sign': case 'plus': case 'zero': {\n\t\t\t\tthis.#update();\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n}\n\ntry {\n\tcustomElements.define('nl-roll-digit', RollDigit);\n} catch {}\n\nexport { RollDigit as default };\n","/*!\n * 匿龙组件库 @neeloong/components v0.7.0\n * (c) 2023-2024 猛火Fierflame\n * @license MIT\n */\nconst style = `\n:host { display: flex; flex-flow: row wrap; }\n::slotted(*) { box-sizing: border-box; }\n::slotted([nl-span=0]) { flex: 0 0 0%; max-inline-size: 0%; }\n`;\n/**\n * @param {string?} g\n * @returns {string}\n */\nfunction parseGutter(g) {\n\tif (!g) { return '0'; }\n\tif (/^\\d+$/.test(g)) { return `${g}px`; }\n\treturn g;\n}\n/**\n *\n * @param {number} aliquot\n * @returns {string}\n */\nfunction getAliquotStyle(aliquot) {\n\tconst styles = [`::slotted(*) {\n\t\tflex-basis: calc(100% / ${aliquot});\n\t\tmax-inline-size: calc(100% / ${aliquot});\n\t}`];\n\tfor (let i = 1; i <= aliquot; i++) {\n\t\tstyles.push(`::slotted([nl-span=\"${i}\"]) {\n\t\t\tflex-basis: calc(${i}00% / ${aliquot});\n\t\t\tmin-inline-size: calc(${i}00% / ${aliquot});\n\t\t\tmax-inline-size: calc(${i}00% / ${aliquot});\n\t\t}`);\n\t\tstyles.push(`::slotted([nl-offset=\"${i}\"]) {\n\t\t\tmargin-inline-start: calc(${i}00% / ${aliquot});\n\t\t}`);\n\t}\n\treturn styles.join('\\n');\n}\n/**\n *\n * @param {number} aliquot\n * @returns {number}\n */\nfunction getNewAliquot(aliquot) {\n\tif (typeof aliquot !== 'number') { return 0; }\n\tconst n = Math.floor(aliquot);\n\tif (!Number.isFinite(n)) { return 0; }\n\treturn n > 1 ? n : 0;\n}\nclass Row extends HTMLElement {\n\tstatic observedAttributes = ['aliquot', 'gutter-inline', 'gutter-block'];\n\t#style = document.createElement('style');\n\t#aliquotStyle = document.createElement('style');\n\tget gutterInline() {\n\t\treturn parseGutter(this.getAttribute('gutter-inline'));\n\t}\n\t/** @param {string | number} gutter*/\n\tset gutterInline(gutter) {\n\t\tthis.setAttribute('gutter-inline', String(gutter));\n\t}\n\tget gutterBlock() {\n\t\treturn parseGutter(this.getAttribute('gutter-block'));\n\t}\n\t/** @param {string | number} gutter*/\n\tset gutterBlock(gutter) {\n\t\tthis.setAttribute('gutter-block', String(gutter));\n\t}\n\tget aliquot() {\n\t\tconst s = parseInt(this.getAttribute('aliquot') || '');\n\t\tif (!s || s < 2) { return 24; }\n\t\treturn s;\n\t}\n\tset aliquot(aliquot) {\n\t\tconst n = getNewAliquot(aliquot);\n\t\tif (n) {\n\t\t\tthis.setAttribute('aliquot', String(n));\n\t\t} else {\n\t\t\tthis.removeAttribute('aliquot');\n\t\t}\n\t}\n\n\tconstructor() {\n\t\tsuper();\n\t\tconst shadow = this.attachShadow({mode:'closed'});\n\t\tshadow.appendChild(document.createElement('style')).textContent = style;\n\t\tshadow.appendChild(this.#aliquotStyle);\n\t\tshadow.appendChild(this.#style);\n\t\tshadow.appendChild(document.createElement('slot'));\n\t}\n\t/**\n\t * @param {string} attrName\n\t * @param {string | null} oldVal\n\t * @param {string | null} newVal\n\t * @returns {void}\n\t */\n\tattributeChangedCallback(attrName, oldVal, newVal) {\n\t\tif (oldVal === newVal) { return; }\n\t\tswitch (attrName) {\n\t\t\tcase 'aliquot': {\n\t\t\t\tthis.#aliquotStyle.textContent = getAliquotStyle(this.aliquot);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase 'gutter-inline': case 'gutter-block': {\n\t\t\t\tthis.#style.textContent = `::slotted(*) {\n\t\t\t\t\tpadding-block: ${this.gutterBlock};\n\t\t\t\t\tpadding-inline: ${this.gutterInline};\n\t\t\t\t}`;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\n}\n\ntry {\n\tcustomElements.define('nl-row', Row);\n} catch {}\n\nexport { Row as default };\n","/*!\n * 匿龙组件库 @neeloong/components v0.7.0\n * (c) 2023-2024 猛火Fierflame\n * @license MIT\n */\nconst style = `\n:host {\n\tdisplay: inline-block;\n}\n::slotted(*) {\n\tdisplay: inline-block;\n}\n::slotted(*:last-child) {\n\tmargin-inline-end: 0;\n\tmargin-block-end: 0;\n}\n:host([column]) ::slotted(*) {\n\tdisplay: block;\n}\n`;\nclass Space extends HTMLElement {\n\tstatic observedAttributes = ['column', 'space', 'unit'];\n\tget column() {\n\t\treturn this.hasAttribute('column');\n\t}\n\tset column(column) {\n\t\tif (column) {\n\t\t\tthis.setAttribute('column', '');\n\t\t} else {\n\t\t\tthis.removeAttribute('column');\n\t\t}\n\t}\n\tget space() {\n\t\tconst space = parseFloat(this.getAttribute('space') || '');\n\t\tif (Number.isNaN(space)) { return 16; }\n\t\tif (!Number.isFinite(space)) { return 16; }\n\t\treturn space <= 0 ? 0 : space;\n\t}\n\tset space(space) {\n\t\tif (typeof space !== 'number' || !Number.isFinite(space)) {\n\t\t\tthis.removeAttribute('space');\n\t\t} else {\n\t\t\tthis.setAttribute('space', space <= 0 ? '0' : String(space));\n\t\t}\n\t}\n\tget unit() { return this.getAttribute('unit') || 'px'; }\n\tset unit(unit) {\n\t\tif (unit) {\n\t\t\tthis.setAttribute('unit', unit);\n\t\t} else {\n\t\t\tthis.removeAttribute('unit');\n\t\t}\n\t}\n\t#style = document.createElement('style');\n\tconstructor() {\n\t\tsuper();\n\t\tconst shadow = this.attachShadow({mode:'closed'});\n\t\tshadow.appendChild(this.#style);\n\t\tshadow.appendChild(document.createElement('style')).textContent = style;\n\t\tshadow.appendChild(document.createElement('slot'));\n\t}\n\t/**\n\t * @param {string} attrName\n\t * @param {string | null} oldVal\n\t * @param {string | null} newVal\n\t * @returns {void}\n\t * @protected\n\t */\n\tattributeChangedCallback(attrName, oldVal, newVal) {\n\t\tif (oldVal === newVal) { return; }\n\t\tswitch (attrName) {\n\t\t\tcase 'column': case 'space': case 'unit': {\n\t\t\t\tthis.#style.textContent =\n\t\t\t\t`::slotted(*) {margin-${this.column ? 'block' : 'inline'}-end: var(--nl-space, ${this.space}${this.unit})}`;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n}\n\ntry {\n\tcustomElements.define('nl-space', Space);\n} catch {}\n\nexport { Space as default };\n","/*!\n * 匿龙组件库 @neeloong/components v0.7.0\n * (c) 2023-2024 猛火Fierflame\n * @license MIT\n */\nconst style = `\n:host {\n\tdisplay: flex;\n\tborder: 1px solid;\n\twriting-mode: inherit;\n}\n:host([hidden]) {\n\tdisplay: none;\n}\n:host([column]) {\n\tdisplay: none;\n\tflex-direction: column;\n}\nslot {\n\tdisplay: block;\n\tposition: relative;\n}\n.start {\n\tflex: 1;\n\toverflow: hidden;\n}\n.end {\n\tflex: 1;\n\toverflow: hidden;\n}\n.trigger {\n\tcursor: move;\n}\n.trigger div {\n\tinline-size: 8px;\n\tblock-size: 100%;\n\tbackground: currentColor;\n\topacity: .2;\n}\n:host(:state(--moving)) div, div:hover {\n\topacity: .5;\n}\n`;\n/**\n *\n * @param {HTMLElement} el\n * @param {string} name\n * @param {boolean} value\n */\nfunction setBoolAttribute(el, name, value) {\n\tif (value) {\n\t\tel.setAttribute(name, '');\n\t} else {\n\t\tel.removeAttribute(name);\n\t}\n}\n/**\n *\n * @param {string?} v\n * @param {number} def\n * @param {number} [min]\n * @param {number} [max]\n * @returns {number}\n */\nfunction toFloat01(v, def, min = 0, max = 1) {\n\tconst value = v ? parseFloat(v) : def;\n\treturn Math.max(min, Math.min(Number.isNaN(value) ? def : value, max));\n}\n/**\n *\n * @param {HTMLElement} el\n * @param {string} name\n * @param {number | string | null} value\n * @param {number} [min]\n * @param {number} [max]\n */\nfunction setFloat01Attribute(el, name, value, min = 0, max = 1) {\n\tlet float = typeof value === 'string' ? parseFloat(value) : value === null ? NaN : value;\n\tif (Number.isNaN(float)) {\n\t\tel.removeAttribute(name);\n\t\treturn;\n\t}\n\tel.setAttribute(name, String(Math.max(min, Math.min(float, max))));\n}\n\nconst verticalWritingMode = new Set([\n\t'vertical-lr', 'vertical-rl', 'sideways-lr', 'sideways-rl',\n]);\n/**\n *\n * @param {Element} root\n * @returns {[boolean, boolean]}\n */\nfunction getLayout(root) {\n\tconst style = getComputedStyle(root);\n\tconst writingMode = style.writingMode?.toLowerCase();\n\tconst vertical = verticalWritingMode.has(writingMode);\n\n\tconst flexDir = style.flexDirection.toLocaleLowerCase();\n\tconst column = flexDir.includes('column');\n\tlet reverse = column\n\t\t? ['vertical-rl', 'sideways-rl'].includes(writingMode)\n\t\t: style.direction.toLowerCase() === 'rtl' !== (writingMode === 'sideways-lr');\n\treverse = reverse !== flexDir.includes('reverse');\n\treturn [vertical !== column, reverse];\n}\n\nclass Split extends HTMLElement {\n\tstatic observedAttributes = ['column', 'disabled', 'min', 'max', 'value'];\n\t/** @type {boolean} 纵向分割 */\n\tget column() { return this.getAttribute('column') !== null; }\n\tset column(value) { setBoolAttribute(this, 'column', value); }\n\t/** @type {boolean} 禁用 */\n\tget disabled() { return this.getAttribute('disabled') !== null; }\n\tset disabled(value) { setBoolAttribute(this, 'disabled', value); }\n\t/** @type {number} 最小阈值 */\n\tget min() { return toFloat01(this.getAttribute('min'), 0, 0, 1); }\n\tset min(value) { setFloat01Attribute(this, 'min', value, 0, toFloat01(this.getAttribute('max'), 1, 0, 1)); }\n\t/** @type {number} 最大阈值 */\n\tget max() { return toFloat01(this.getAttribute('max'), 1, this.min, 1); }\n\tset max(value) { setFloat01Attribute(this, 'max', value, this.min, 1); }\n\t/** @type {number} 当前值 */\n\tget value() { return toFloat01(this.getAttribute('value'), 0.5, this.min, this.max); }\n\tset value(value) { setFloat01Attribute(this, 'value', value, this.min, this.max); }\n\n\t/** @type {number?} */\n\t#pointerId = null;\n\n\t#stopMove() {\n\t\tconst pointerId = this.#pointerId;\n\t\tif (pointerId === null) { return; }\n\t\tthis.#internals.states.delete('--moving');\n\t\tthis.#pointerId = null;\n\t\tthis.#trigger.releasePointerCapture(pointerId);\n\t}\n\n\t#shadow = (() => {\n\t\tconst shadow = this.attachShadow({mode:'closed'});\n\t\tshadow.appendChild(document.createElement('style')).textContent = style;\n\t\treturn shadow;\n\t})();\n\t#startArea = (() => {\n\t\tconst el = document.createElement('slot');\n\t\tel.name = 'start';\n\t\tel.className = 'start';\n\t\tthis.#shadow.appendChild(el);\n\t\treturn el;\n\t})();\n\t/** @readonly */\n\t#internals = this.attachInternals();\n\t#trigger = (() => {\n\t\tconst trigger = document.createElement('slot');\n\t\ttrigger.name = 'trigger';\n\t\ttrigger.tabIndex = 0;\n\t\ttrigger.className = 'trigger';\n\t\ttrigger.appendChild(document.createElement('div'));\n\t\tthis.#shadow.appendChild(trigger);\n\t\tlet offset = 0;\n\t\ttrigger.addEventListener('pointerdown', e => {\n\t\t\tif (this.hidden || this.disabled) { return; }\n\t\t\t// if (this.#shadow.activeElement !== trigger) { return; }\n\t\t\tconst { pointerId } = e;\n\t\t\tconst currentPointerId = this.#pointerId;\n\t\t\tif (![null, pointerId].includes(currentPointerId)) { return; }\n\t\t\tthis.#internals.states.add('--moving');\n\t\t\tthis.#pointerId = pointerId;\n\t\t\ttrigger.setPointerCapture(pointerId);\n\t\t\tswitch (getLayout(trigger).map((v, i) => v ? 2 ** i : 0).reduce((a, b) => a + b)) {\n\t\t\t\tcase 0: offset = -e.offsetX; break;\n\t\t\t\tcase 1: offset = -e.offsetY; break;\n\t\t\t\tcase 2: offset = e.offsetX - trigger.offsetWidth; break;\n\t\t\t\tcase 3: offset = e.offsetY - trigger.offsetHeight; break;\n\t\t\t}\n\t\t});\n\t\tconst areaEl = this;\n\t\t/**\n\t\t * @param {boolean} vertical\n\t\t * @returns {number}\n\t\t */\n\t\tconst getSize = vertical => {\n\t\t\tconst size = vertical\n\t\t\t\t? areaEl.clientHeight - trigger.offsetHeight\n\t\t\t\t: areaEl.clientWidth - trigger.offsetWidth;\n\t\t\treturn size;\n\t\t};\n\t\t/** @param {PointerEvent} e */\n\t\tconst updateMove = e => {\n\t\t\tconst [vertical, reverse] = getLayout(trigger);\n\t\t\tlet os = 0;\n\t\t\tswitch ([vertical, reverse].map((v, i) => v ? 2 ** i : 0).reduce((a, b) => a + b)) {\n\t\t\t\tcase 0: os = e.clientX - areaEl.getBoundingClientRect().left; break;\n\t\t\t\tcase 1: os = e.clientY - areaEl.getBoundingClientRect().top; break;\n\t\t\t\tcase 2: os = areaEl.getBoundingClientRect().right - e.clientX; break;\n\t\t\t\tcase 3: os = areaEl.getBoundingClientRect().bottom - e.clientY; break;\n\t\t\t}\n\t\t\tconst {max, min} = this;\n\t\t\tconst value = Math.max(min, Math.min((os + offset) / getSize(vertical), max));\n\t\t\tthis.setAttribute('value', String(value));\n\n\t\t};\n\t\ttrigger.addEventListener('pointermove', e => {\n\t\t\tconst { pointerId } = e;\n\t\t\tif (!trigger.hasPointerCapture(pointerId)) { return; }\n\t\t\tupdateMove(e);\n\t\t});\n\t\ttrigger.addEventListener('pointerup', e => {\n\t\t\tconst { pointerId } = e;\n\t\t\tif (pointerId !== this.#pointerId) { return; }\n\t\t\tupdateMove(e);\n\t\t\tthis.#stopMove();\n\t\t});\n\t\ttrigger.addEventListener('pointercancel', e => {\n\t\t\tconst { pointerId } = e;\n\t\t\tif (pointerId !== this.#pointerId) { return; }\n\t\t\tupdateMove(e);\n\t\t\tthis.#stopMove();\n\t\t});\n\t\ttrigger.addEventListener('keydown', e => {\n\t\t\tif (this.hidden || this.disabled || this.#pointerId !== null) { return; }\n\t\t\tif (this.#shadow.activeElement !== trigger) { return; }\n\t\t\tconst {max, min} = this;\n\t\t\tswitch (e.code) {\n\t\t\t\tcase 'Home': {\n\t\t\t\t\te.preventDefault();\n\t\t\t\t\tthis.setAttribute('value', String(Math.max(min, 0)));\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tcase 'End': {\n\t\t\t\t\te.preventDefault();\n\t\t\t\t\tthis.setAttribute('value', String(Math.min(1, max)));\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t\tconst [vertical, reverse] = getLayout(trigger);\n\t\t\tlet offset = 0;\n\t\t\tswitch (e.code) {\n\t\t\t\tcase 'ArrowUp': offset = vertical ? -1 : 0; break;\n\t\t\t\tcase 'ArrowDown': offset = vertical ? 1 : 0; break;\n\t\t\t\tcase 'ArrowLeft': offset = vertical ? 0 : -1; break;\n\t\t\t\tcase 'ArrowRight': offset = vertical ? 0 : 1; break;\n\t\t\t}\n\t\t\tif (!offset) { return; }\n\t\t\te.preventDefault();\n\t\t\tif (reverse) { offset = -offset; }\n\t\t\tif (e.ctrlKey) { offset *= 100; }\n\t\t\tif (e.shiftKey) { offset *= 10; }\n\n\t\t\tlet value = toFloat01(this.getAttribute('value'), 0.5, min, max);\n\t\t\tvalue = Math.max(min, Math.min(value + offset / getSize(vertical), max));\n\t\t\tthis.setAttribute('value', String(value));\n\t\t});\n\t\treturn trigger;\n\t})();\n\t#endArea = (() => {\n\t\tconst el = document.createElement('slot');\n\t\tel.name = 'end';\n\t\tel.className = 'end';\n\t\tthis.#shadow.appendChild(el);\n\t\treturn el;\n\t})();\n\t/**\n\t * @returns {void}\n\t */\n\tconnectedCallback() { }\n\t/**\n\t * @returns {void}\n\t */\n\tdisconnectedCallback() { this.#stopMove(); }\n\t/**\n\t * @returns {void}\n\t */\n\tadoptedCallback() { this.#stopMove(); }\n\t/**\n\t * @param {string} attrName\n\t * @param {string | null} oldVal\n\t * @param {string | null} newVal\n\t * @returns {void}\n\t * @protected\n\t */\n\tattributeChangedCallback(attrName, oldVal, newVal) {\n\t\tif (oldVal === newVal) { return; }\n\t\tswitch (attrName) {\n\t\t\tcase 'hidden': {\n\t\t\t\tif (!this.hidden) { break; }\n\t\t\t\tthis.#stopMove();\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase 'disabled': {\n\t\t\t\tif (newVal === null) {\n\t\t\t\t\tthis.#trigger.tabIndex = 0;\n\t\t\t\t} else {\n\t\t\t\t\tthis.#trigger.removeAttribute('tabindex');\n\t\t\t\t}\n\t\t\t\tthis.#stopMove();\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase 'min': case 'max': case 'value': {\n\t\t\t\tconst {value} = this;\n\t\t\t\tthis.#startArea.style.flex = `${value}`;\n\t\t\t\tthis.#endArea.style.flex = `${1 - value}`;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n}\n\ntry {\n\tcustomElements.define('nl-split', Split);\n} catch {}\n\nexport { Split as default };\n","import { Pagination as NlPagination } from '@neeloong/components'\n\nexport default class Pagination {\n\t#fns;\n\t#pagination;\n\tconstructor() {\n\t\tconst pagination = /** @type {NlPagination} */(document.createElement('nl-pagination'));\n\t\tpagination.size = 20;\n\t\tpagination.appendChild(/** @type {NlPagination.Value} */(document.createElement('nl-pagination-value'))).name=\"start\";\n\t\tpagination.appendChild(document.createTextNode('-'));\n\t\tpagination.appendChild(/** @type {NlPagination.Value} */(document.createElement('nl-pagination-value'))).name=\"end\";\n\t\tpagination.appendChild(document.createTextNode('/'));\n\t\tpagination.appendChild(/** @type {NlPagination.Value} */(document.createElement('nl-pagination-value'))).name=\"total\";\n\t\tpagination.appendChild(document.createElement('nl-pagination-prev')).innerText = '上一页';\n\t\tpagination.appendChild(document.createElement('nl-pagination-pager'));\n\t\tpagination.appendChild(document.createElement('nl-pagination-next')).innerText = '下一页';\n\t\tpagination.appendChild(document.createElement('nl-pagination-sizer'));\n\t\tconst fns = new Set();\n\t\t\n\t\tpagination.addEventListener('change', () => {\n\t\t\tfor (const fn of fns) {\n\t\t\t\tfn();\n\t\t\t}\n\t\t})\n\t\tthis.#fns = fns;\n\t\tthis.#pagination = pagination;\n\n\t}\n\tget root() {return this.#pagination; }\n\tget size() { return this.#pagination.size}\n\tset size(v) { this.#pagination.size = v}\n\tget page() { return this.#pagination.page}\n\tset page(v) { this.#pagination.page = v}\n\tget total() { return this.#pagination.total}\n\tset total(v) { this.#pagination.total = v}\n\t/**\n\t * \n\t * @param {(p: Pagination) => void} listen \n\t * @returns {() => void}\n\t */\n\tlisten(listen) {\n\t\tconst fns = this.#fns;\n\t\tconst f = () => listen(this);\n\t\tfns.add(f);\n\t\treturn () => {fns.delete(f)}\n\t}\n\tdestroy() {\n\t\t\n\t}\n}\n","/** @import { HomeContext } from '@yongdall/web' */\n/**\n *\n * @param {string} href\n * @param {string} title\n */\nfunction createLink(href, title) {\n\tconst a = document.createElement('a');\n\ta.href = href;\n\ta.title = title;\n\ta.style.display = 'block';\n\ta.appendChild(document.createTextNode(title));\n\treturn a;\n}\n\n\n/**\n * @param {HTMLElement} container\n */\nfunction renderHome(container) {\n}\n\n\n/**\n * \n * @param {HomeContext} homeContext \n */\nexport default function home(homeContext) {\n\thomeContext.listen('update', () => {\n\t\tconst { container } = homeContext;\n\t\tcontainer.innerHTML = '';\n\t\treturn renderHome(container);\n\t});\n}\n","import '@neeloong/components';\n/** @import { Menu } from '@yongdall/web' */\n/** @import {Collapse} from '@neeloong/components' */\nimport { neverAbortedSignal, watch } from '@yongdall/web';\n\n\n\n/**\n * \n * @param {HTMLElement} element \n * @returns {Iterable<Text>}\n */\nfunction* findTextNode(element) {\n\tconst walker = document.createTreeWalker(element, NodeFilter.SHOW_TEXT);\n\tfor (let node; node = walker.nextNode();) {\n\t\t// @ts-ignore\n\t\tyield node;\n\t}\n}\n/**\n * \n * @param {string[]} texts \n * @param {HTMLElement} element \n * @returns {Range[]}\n */\nfunction filter(texts, element) {\n\tconst ranges = [];\n\n\tconst textNodes = [...findTextNode(element)].filter(n => n.nodeValue?.length);\n\tconst indexes = textNodes.reduce((list, currentValue) => {\n\t\tconst index = list[list.length - 1]?.[1] || 0;\n\t\treturn /** @type {[number, number, Text][]} */([...list, [\n\t\t\tindex,\n\t\t\tindex + (currentValue.nodeValue?.length || 0),\n\t\t\tcurrentValue,\n\t\t]]);\n\t}, /** @type {[number, number, Text][]} */([]));\n\tconst fullText = textNodes.map(n => n.nodeValue).join('');\n\n\tlet startIndex = 0;\n\tfor (const searchText of texts) {\n\t\tconst index = fullText.indexOf(searchText, startIndex);\n\t\tif (index === -1) { return []; }\n\t\tconst endIndex = index + searchText.length;\n\n\t\tconst start = indexes.findLast(([start]) => start <= index);\n\t\tif (!start) { return []; }\n\t\tconst end = indexes.findLast(([, end]) => end >= endIndex);\n\t\tif (!end) { return []; }\n\t\tstartIndex = index + searchText.length;\n\n\n\t\tconst range = new Range();\n\t\trange.setStart(start[2], index - start[0]);\n\t\trange.setEnd(end[2], endIndex - start[0]);\n\t\tranges.push(range);\n\t}\n\treturn ranges;\n}\n/**\n * \n * @param {Element} root \n * @param {(Menu | null)[]} menus \n * @param {Menu.Renderer} create \n * @param {object} [options] \n * @param {string} [options.active] \n * @param {AbortSignal} [options.signal] \n * @param {string} [options.filter] \n */\nexport default function createNavMenu(root, menus, create, options = {}) {\n\t/** @type {Map<string, HTMLElement[]>} */\n\tconst menuMap = new Map();\n\t/** @type {HTMLElement?} */\n\tlet current = null;\n\t/** @type {HTMLElement[]} */\n\tconst allMenus = [];\n\t/** @type {(() => void)[]} */\n\tconst destroyList = [];\n\n\t/**\n\t * \n\t * @param {Menu.Button} button \n\t */\n\tfunction createButtons(button) {\n\t\tconst link = document.createElement('a');\n\t\tlink.href = button.path || '#';\n\t\tlink.appendChild(document.createTextNode(button.label || button.title || ''));\n\t\tlink.title = button.title || button.label || '';\n\t\treturn link;\n\t}\n\n\t/**\n\t * \n\t * @param {Menu} menu \n\t * @param {number} level \n\t * @returns {{el: HTMLElement; filter(show: boolean, t?: string[]?): Range[]} | null}\n\t */\n\tfunction renderMenu(menu, level) {\n\t\tconst { children } = menu;\n\t\tif (!children.length) {\n\t\t\tconst item = document.createElement('div');\n\t\t\tconst ac = new AbortController();\n\t\t\tconst result = create(menu, ac.signal);\n\t\t\tif (!result) {\n\t\t\t\tac.abort();\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\tdestroyList.push(() => { ac.abort(); });\n\t\t\titem.appendChild(result);\n\t\t\tfor (const button of menu.buttons || []) {\n\t\t\t\titem.appendChild(createButtons(button));\n\t\t\t}\n\t\t\titem.className = 'NavMenu-item';\n\t\t\tconst { page, path } = menu;\n\t\t\tif (page) {\n\t\t\t\tconst p = `${page}/${path}`;\n\t\t\t\tconst list = menuMap.get(p);\n\t\t\t\tif (list) {\n\t\t\t\t\tlist.push(item);\n\t\t\t\t} else {\n\t\t\t\t\tmenuMap.set(p, [item]);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn {\n\t\t\t\tel: item, filter(show, text) {\n\t\t\t\t\tconst list = text ? filter(text, result) : [];\n\t\t\t\t\titem.hidden = Boolean(!show && text && !list.length);\n\t\t\t\t\treturn list;\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t\tconst item = /** @type {Collapse} */(document.createElement('nl-collapse'));\n\t\titem.setAttribute('animation', '');\n\t\titem.setAttribute('menu', '');\n\t\tconst header = item.appendChild(document.createElement('div'));\n\t\theader.appendChild(document.createTextNode(menu.label || menu.title || ''));\n\t\theader.className = 'NavMenu-label';\n\t\theader.slot = 'label';\n\t\theader.style.flex = '1';\n\t\tfor (const button of menu.buttons || []) {\n\t\t\titem.appendChild(createButtons(button)).slot = 'label';\n\t\t}\n\t\tconst childrenMenu = renderChildren(item, children, level + 1);\n\t\tif (!childrenMenu.length) { return null; }\n\t\treturn {\n\t\t\tel: item, filter(show, text) {\n\t\t\t\tif (!text) {\n\t\t\t\t\tfor (const menu of childrenMenu) { menu.filter(show); }\n\t\t\t\t\titem.hidden = false;\n\t\t\t\t\titem.open = false;\n\t\t\t\t\treturn [];\n\t\t\t\t}\n\t\t\t\tconst self = filter(text, header);\n\t\t\t\tconst hasSelf = Boolean(show || self.length);\n\n\t\t\t\tconst ranges = childrenMenu.flatMap(v => v.filter(hasSelf, text));\n\t\t\t\titem.open = Boolean(ranges.length);\n\t\t\t\tconst list = [...self, ...ranges];\n\t\t\t\titem.hidden = !show && !list.length;\n\t\t\t\treturn list;\n\t\t\t}\n\t\t};\n\t}\n\t/**\n\t * \n\t * @param {Element} parent \n\t * @param {(Menu | null)[]} menus \n\t * @param {number} level \n\t * @returns \n\t */\n\tfunction renderChildren(parent, menus, level) {\n\t\tlet has = false;\n\t\tlet divider = false;\n\t\tlet children = [];\n\t\tfor (const menu of menus) {\n\t\t\tif (!menu) {\n\t\t\t\tif (!has) { continue; }\n\t\t\t\tdivider = true;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (divider) {\n\t\t\t\tdivider = false;\n\t\t\t\troot.appendChild(document.createElement('hr'));\n\t\t\t}\n\t\t\tconst item = renderMenu(menu, level);\n\t\t\tif (!item) { continue; }\n\t\t\tchildren.push(item);\n\t\t\thas = true;\n\t\t\tparent.appendChild(item.el);\n\t\t\tallMenus.push(item.el);\n\t\t\titem.el.style.setProperty('--NavMenu-level', String(level));\n\t\t}\n\t\treturn children;\n\t}\n\tconst menuList = renderChildren(root, menus, 0);\n\t/**\n\t * \n\t * @param {string} path \n\t * @returns \n\t */\n\tfunction set(path) {\n\t\tconst menu = menuMap.get(path)?.[0];\n\t\tif (!menu) { return; }\n\t\tconst list = [];\n\t\tlet parent = menu.parentElement;\n\t\tfor (; parent && parent !== root; parent = parent.parentElement) {\n\t\t\tlist.push(parent);\n\t\t}\n\t\tif (parent !== root) { return; }\n\t\tcurrent?.classList.remove('NavMenu-current');\n\t\tfor (const item of list) {\n\t\t\titem.setAttribute('open', '');\n\t\t}\n\t\tcurrent = menu;\n\t\tcurrent?.classList.add('NavMenu-current');\n\t}\n\tlet destroyed = false;\n\tfunction destroy() {\n\t\tif (destroyed) { return; }\n\t\tdestroyed = true;\n\t\tfor (const m of allMenus) {\n\t\t\tm.remove();\n\t\t}\n\t\tfor (const destroy of destroyList) {\n\t\t\tdestroy();\n\t\t}\n\t}\n\tconst signal = options.signal || neverAbortedSignal;\n\tif (signal.aborted) {\n\t\tdestroy();\n\t} else {\n\t\tsignal.addEventListener('abort', destroy, { once: true });\n\t}\n\twatch(() => options.active || '', active => {\n\t\tif (!active) { return }\n\t\tset(active);\n\t}, { signal, immediate: true });\n\t/**\n\t * \n\t * @param {string} text \n\t * @returns \n\t */\n\treturn text => {\n\t\t/** @type {string[]?} */\n\t\tlet texts = text.toLowerCase().split(/[\\s\\n]+/).filter(Boolean);\n\t\tif (!texts.length) { texts = null; }\n\t\treturn menuList.flatMap(v => v.filter(false, texts));\n\t}\n}\n","import { configuration, createComputed, createIcon, createState, effect, filterPermission, loadMenu, Menu, User } from '@yongdall/web';\nimport createNavMenu from '../menu/createNavMenu.mjs';\n\n\n\n\nexport const menuContainer = document.createElement('div');\n\n\nmenuContainer.style.display = 'flex';\nmenuContainer.style.flexDirection = 'column';\nconst header = menuContainer.appendChild(document.createElement('header'));\nheader.classList.add('NavMenu-header');\nconst filter = header.appendChild(document.createElement('input'));\nfilter.placeholder = '过滤菜单...';\nfilter.type = 'search'\nconst refreshButton = header.appendChild(document.createElement('button'));\nrefreshButton.appendChild(createIcon('refresh', true));\nrefreshButton.classList.add('icon');\nrefreshButton.title = '刷新';\n\n\nconst main = menuContainer.appendChild(document.createElement('main'));\nmain.style.flex = '1';\nmain.style.overflow = 'auto';\nmain.classList.add('NavMenu')\nlet k = 0;\nlet loaded = false;\n/** @type {ReturnType<typeof createNavMenu>?} */\nlet navMenu = null;\nfunction filterMenu() {\n\tconst list = navMenu?.(filter.value) || [];\n\tconst highlight = new Highlight(...list);\n\tCSS.highlights.set(\"NavMenu-filter-highlight\", highlight);\n}\nfilter.addEventListener('input', filterMenu);\n\nconst allMenus = createState(/** @type {(Menu | null)[]} */([]));\n\nconst currentMenus = createComputed(() => {\n\tconst permissions = User.permissions;\n\tconst menus = allMenus.get();\n\tif (!permissions) { return menus; }\n\n\treturn Menu.filter(menus, m => {\n\t\tconst permission = m.permission;\n\t\tif (!permission) { return true; }\n\t\treturn filterPermission(permission, permissions);\n\t});\n});\n/** @type {AbortController?} */\nlet ac = null;\neffect(() => {\n\tac?.abort();\n\tmain.innerHTML = '';\n\tac = new AbortController();\n\tnavMenu = createNavMenu(main, currentMenus.get(), Menu.createItem, {\n\t\tsignal: ac.signal,\n\t});\n\tfilterMenu();\n});\n\nexport async function refreshMenu(force = false) {\n\tif (refreshButton.disabled) { return }\n\trefreshButton.disabled =true;\n\t++k\n\tlet v = k;\n\tconst groupType = 'application'\n\tconst group = configuration.application || '';\n\tconst menus = await loadMenu(groupType, group, force);\n\tif (loaded && v !== k) { return }\n\trefreshButton.disabled = false;\n\tloaded = true;\n\t/** @type {Menu.Button[]} */\n\tconst buttons = [];\n\tallMenus.set(Menu.build(menus, groupType, group, buttons));\n}\nrefreshButton.addEventListener('click', () => refreshMenu(true));\n","import { configuration, createComputed, createIcon, effect, User } from '@yongdall/web';\nimport { cssPrefix } from '../styles/variables.mjs';\n\n\n/**\n * \n * @param {string} avatar \n * @param {AbortSignal} signal\n * @param {boolean} [button] \n */\nfunction createAvatar(avatar, signal, button) {\n\tif (!avatar) {\n\t\tconst svg = createIcon('user', signal);\n\t\tif (!button)\n\t\t\tsvg.setAttribute('fill-opacity', '0.5');\n\t\treturn svg;\n\t}\n\tconst img = document.createElement('img');\n\timg.src = avatar;\n\treturn img;\n\n}\n/**\n * \n * @param {HTMLElement} root \n * @param {boolean} [button] \n * @returns \n */\nexport function createUserAvatar(root, button) {\n\troot.classList.add(`${cssPrefix}-user-avatar`);\n\t/** @type {(() => void)[]} */\n\tconst destroyList = [];\n\t/** @type {Element} */\n\tlet sessionAvatarElement;\n\t/** @type {AbortController?} */\n\tlet sessionAvatarAbortController = null;\n\tconst ac = new AbortController();\n\tdestroyList.push(() => ac.abort());\n\tif (configuration.single) {\n\t\tconst ac = new AbortController();\n\t\tsessionAvatarElement = createIcon('singleUser', ac.signal);\n\t\tif (!button) {\n\t\t\tsessionAvatarElement.setAttribute('fill-opacity', '0.5');\n\t\t}\n\t\troot.appendChild(sessionAvatarElement);\n\t} else {\n\t\t/** @type {string?} */\n\t\tlet oldAvatar = '';\n\t\t/** @type {AbortController?} */\n\t\tlet sessionAbortController = new AbortController();\n\t\tsessionAvatarElement = createAvatar(oldAvatar, sessionAbortController.signal, button);\n\t\troot.appendChild(sessionAvatarElement);\n\t\tconst targetAvatar = createComputed(() => User.session?.avatar || '');\n\t\teffect(() => {\n\t\t\tconst avatar = targetAvatar.get();\n\t\t\tif (avatar === oldAvatar) { return; }\n\t\t\toldAvatar = avatar;\n\t\t\tsessionAbortController?.abort();\n\t\t\tsessionAbortController = new AbortController();\n\t\t\tconst newAvatar = createAvatar(oldAvatar, sessionAbortController.signal, button);\n\t\t\troot.replaceChild(newAvatar, sessionAvatarElement);\n\t\t\tsessionAvatarElement = newAvatar;\n\t\t}, ac.signal);\n\t\tdestroyList.push(() => {\n\t\t\tsessionAbortController?.abort();\n\t\t\tsessionAbortController = null;\n\t\t});\n\n\t}\n\tconst targetAvatar = createComputed(() => {\n\t\tconst target = User.target;\n\t\tconst session = User.session;\n\t\tif (!target) { return null; }\n\t\tif (target.id === (session?.id || '')) { return null; }\n\t\treturn target.avatar || '';\n\t});\n\t/** @type {string?} */\n\tlet oldTargetAvatar = null;\n\t/** @type {Element?} */\n\tlet targetAvatarElement = null;\n\t/** @type {AbortController?} */\n\tlet targetAbortController = null;\n\teffect(() => {\n\t\tconst avatar = targetAvatar.get();\n\t\tif (avatar === oldTargetAvatar) { return; }\n\t\toldTargetAvatar = avatar;\n\t\ttargetAvatarElement?.remove();\n\t\ttargetAvatarElement = null;\n\t\ttargetAbortController?.abort();\n\t\tif (avatar === null) { return; }\n\t\ttargetAbortController = new AbortController();\n\t\ttargetAvatarElement = createAvatar(avatar, targetAbortController.signal, button);\n\t\troot.insertBefore(targetAvatarElement, sessionAvatarElement);\n\t}, ac.signal);\n\tdestroyList.push(() => {\n\t\ttargetAbortController?.abort();\n\t\ttargetAbortController = null;\n\t});\n\treturn () => {\n\t\tfor (const f of destroyList) {\n\t\t\tf();\n\t\t}\n\t};\n\n}\n","import { configuration, createComputed, createIcon, createState, effect, Menu, User, userMenus } from '@yongdall/web';\nimport { createUserAvatar } from './userAvatar.mjs';\nimport { cssPrefix } from '../styles/variables.mjs';\nimport createNavMenu from '../menu/createNavMenu.mjs';\n\nexport const userContainer = document.createElement('div');\nuserContainer.classList.add(`${cssPrefix}-user`);\nexport const userButton = document.createElement('div');\nuserButton.classList.add(`${cssPrefix}-user-button`);\ncreateUserAvatar(userButton, true);\nconst userInfo = userContainer.appendChild(document.createElement('span'));\nuserInfo.classList.add(`${cssPrefix}-user-info`);\nconst avatar = userInfo.appendChild(document.createElement('span'));\ncreateUserAvatar(avatar);\navatar.classList.add('avatar');\nconst username = userInfo.appendChild(document.createElement('span'));\nusername.classList.add('username');\nusername.innerText = '用户名';\nconst btns = userInfo.appendChild(document.createElement('span'));\nbtns.classList.add('btns');\n\nif (configuration.help) {\n\tconst help = btns.appendChild(document.createElement('a'));\n\thelp.href = configuration.help;\n\thelp.target = '_blank';\n\thelp.appendChild(createIcon('help', true));\n\thelp.title = '帮助';\n}\n\nconst exitButton = btns.appendChild(document.createElement('div'));\nexitButton.appendChild(createIcon('logout', true));\nexitButton.title = '退出登录';\neffect(() => {\n\texitButton.hidden = !User.current;\n});\nexitButton.addEventListener('click', () => User.exit());\n\neffect(() => {\n\tusername.innerText = User.current?.name || '';\n});\n\n\nconst allMenus = createState(/** @type {(Menu | null)[]} */([]));\n\nallMenus.set(Menu.fromDefine(userMenus, []));\n\nconst currentMenus = createComputed(() => {\n\tconst menus = allMenus.get();\n\tif (User.current) { return menus; }\n\treturn Menu.filter(menus, v=> !v.logged);\n});\n\nconst main = userContainer.appendChild(document.createElement('main'));\nmain.style.flex = '1';\nmain.style.overflow = 'auto';\nmain.classList.add('NavMenu');\n\n/** @type {AbortController?} */\nlet ac = null;\neffect(() => {\n\tac?.abort();\n\tmain.innerHTML = '';\n\tac = new AbortController();\n\tcreateNavMenu(main, currentMenus.get(), Menu.createItem, {\n\t\tsignal: ac.signal,\n\t});\n});\n","\nimport { configuration, createIcon, toFileLink, webRoot } from '@yongdall/web';\nimport { cssPrefix } from './styles/variables.mjs';\n\nconst logoLink = document.createElement('a')\nlogoLink.classList.add(`${cssPrefix}-logo`);\nlogoLink.href = webRoot.href;\nconst logo = configuration.logo;\nconst logoImgLink = logo && toFileLink(logo);\n\nif (logoImgLink) {\n\tconst logoImg = logoLink.appendChild(document.createElement('img'));\n\tlogoImg.src = logoImgLink.href;\n\tlogoImg.classList.add('logo');\n} else {\n\tconst logoImg = logoLink.appendChild(createIcon('logo', true));\n\tlogoImg.classList.add('logo');\n}\nexport { logoLink }\n","/** @import { PageContext } from '@yongdall/web' */\n\n/**\n * @typedef {object} PageError\n * @property {string} title\n * @property {string} [description]\n */\n\n/** @type {Record<string, PageError>} */\nexport const errors = {\n\t404: {\n\t\ttitle: '您所请求的页面无法找到',\n\t\tdescription: '服务器无法正常提供信息。\\n目标页面可能已经被更改、删除或移到其他位置,或您所输入页面地址错误。',\n\t}\n};\n\n/**\n * @param {PageContext} ctx\n * @param {unknown} error\n */\nexport default function renderError(ctx, error) {\n\tif ((error ?? '') == '') {\n\t\tctx.container.appendChild(document.createTextNode('空页面'));\n\t\treturn;\n\t}\n\tconst e = (typeof error === 'number' || typeof error === 'string')\n\t\t&& Object.hasOwn(errors, error) && errors[error]\n\t\t|| errors['404'];\n\tconst title = e?.title || 'Error';\n\tconst info = e?.description;\n\tconst errorContainer = document.createElement('div');\n\tconst main = errorContainer.appendChild(document.createElement('div'));\n\tconst titleDiv = main.appendChild(document.createElement('div'));\n\tconst infoDiv = main.appendChild(document.createElement('div'));\n\terrorContainer.style.marginBlock = '8%';\n\terrorContainer.style.marginInline = 'auto';\n\terrorContainer.style.inlineSize = '600px';\n\terrorContainer.style.maxInlineSize = '100%';\n\terrorContainer.style.padding = '20px';\n\ttitleDiv.style.paddingBlock = '20px';\n\ttitleDiv.style.fontSize = '20px';\n\ttitleDiv.style.color = '#8e8e8e';\n\ttitleDiv.style.textAlign = 'center';\n\tinfoDiv.style.fontSize = '13px';\n\tinfoDiv.style.lineHeight = '1.3em';\n\tinfoDiv.style.color = '#b5b5b5';\n\ttitleDiv.appendChild(document.createTextNode(title));\n\tctx.title = title || 'Error';\n\tif (info && typeof info === 'string') {\n\t\tfor (const p of info.split('\\n')) {\n\t\t\tinfoDiv.appendChild(document.createTextNode(p));\n\t\t\tinfoDiv.appendChild(document.createElement('br'));\n\t\t}\n\t}\n\tctx.container.appendChild(errorContainer);\n\tctx.loading = false;\n}\n","import { cssPrefix } from '../styles/variables.mjs';\n\nexport const prefix = `${cssPrefix}-allSider-nav`\n\nexport const header = document.createElement('header');\nheader.className = `${prefix}-header`;\nexport const actions = header.appendChild(document.createElement('div'));\nactions.classList.add(`${prefix}-actions`)\nexport const sidebar = header.appendChild(document.createElement('div'));\nsidebar.classList.add(`${prefix}-sidebar`);\n","import { prefix, sidebar } from './dom.mjs';\nconst openedClassName = `${prefix}-open`\n/** @type {(() => void)?} */\nlet current = null;\n\nexport function closeSidebarWhenMobile() {\n\tif (window.innerWidth > 800) { return; }\n\tcurrent?.();\n}\n\nexport default class Sider {\n\t/** @readonly @type {HTMLElement} */\n\tbutton;\n\t/** @readonly @type {HTMLElement} */\n\tsider;\n\t/** @type {() => void} */\n\t#hide;\n\n\t#disabled = false;\n\tget disabled() { return this.#disabled; }\n\tset disabled(v) {\n\t\tif (v) {\n\t\t\tthis.disable();\n\t\t} else {\n\t\t\tthis.enable();\n\t\t}\n\t}\n\tdisable() {\n\t\tif (this.#disabled) { return; }\n\t\tthis.#disabled = true;\n\t\tconst hide = this.#hide;\n\t\tif (current === hide) {\n\t\t\thide();\n\t\t}\n\t\tthis.button.hidden = true;\n\t\tthis.sider.hidden = true;\n\t\t// TODO: 隐藏分组\n\t}\n\tenable() {\n\t\tif (!this.#disabled) { return; }\n\t\tthis.#disabled = false;\n\t\tthis.button.hidden = false;\n\t\t// TODO: 显示分组\n\t}\n\t#click = () => this.toggle()\n\t/**\n\t * \n\t * @param {HTMLElement} [siderContainer] \n\t * @param {HTMLElement} [buttonContainer] \n\t */\n\tconstructor(siderContainer, buttonContainer) {\n\t\tconst button = buttonContainer instanceof HTMLElement\n\t\t\t? buttonContainer\n\t\t\t: document.createElement('div');\n\t\tconst sider = siderContainer instanceof HTMLElement\n\t\t\t? siderContainer\n\t\t\t: document.createElement('div');\n\t\tbutton.tabIndex = 0\n\t\tbutton.classList.add(`${prefix}-button`)\n\t\tsider.hidden = true;\n\t\tsidebar.appendChild(sider);\n\t\tbutton.classList.add(`${prefix}-selectable`)\n\t\tconst hide = () => {\n\t\t\tcurrent = null;\n\t\t\tdocument.body.classList.remove(openedClassName);\n\t\t\tbutton.classList.remove(`${prefix}-selected`);\n\t\t\tsider.hidden = true;\n\t\t}\n\t\tbutton.addEventListener('click', this.#click);\n\t\tthis.#hide = hide;\n\t\tthis.button = button;\n\t\tthis.sider = sider;\n\t}\n\tget open() { return current === this.#hide; }\n\tset open(p) {\n\t\tif (p) {\n\t\t\tthis.show();\n\t\t} else {\n\t\t\tthis.hide();\n\t\t}\n\t}\n\tshow() {\n\t\tif (this.#disabled) { return; }\n\t\tconst hide = this.#hide;\n\t\tif (current === hide) { return }\n\t\tcurrent?.();\n\t\tcurrent = hide;\n\t\tdocument.body.classList.add(openedClassName);\n\t\tthis.button.classList.add(`${prefix}-selected`);\n\t\tthis.sider.hidden = false;\n\t}\n\ttoggle() {\n\t\tif (this.#disabled) { return; }\n\t\tconst hide = this.#hide;\n\t\tif (current === hide) {\n\t\t\thide();\n\t\t\treturn\n\t\t}\n\t\tthis.show();\n\t}\n\thide() {\n\t\tif (this.#disabled) { return; }\n\t\tconst hide = this.#hide;\n\t\tif (current !== hide) { return }\n\t\thide();\n\t}\n\tremove() {\n\t\tconst hide = this.#hide;\n\t\tif (current === hide) {\n\t\t\thide();\n\t\t}\n\t\tconst {button, sider} = this;\n\t\tbutton.remove();\n\t\tsider.remove();\n\t\tbutton.classList.remove(`${prefix}-button`)\n\t\tbutton.classList.remove(`${prefix}-selectable`)\n\t\tbutton.removeEventListener('click', this.#click);\n\t\tsider.hidden = false;\n\t\t// TODO: ...\n\t\t// TODO: 隐藏分组\n\t}\n}\nsidebar.addEventListener('click', (e) => {\n\tif (e.target !== e.currentTarget) { return }\n\tcurrent?.();\n})\n","import Sider, { closeSidebarWhenMobile } from './Sider.mjs';\nimport { prefix } from './dom.mjs';\n\n\n\nexport default class Group {\n\t/** @readonly */\n\troot = document.createElement('div');\n\t/** @type {Set<() => void>} */\n\t#children = new Set()\n\t/**\n\t * \n\t * @param {HTMLElement} parent \n\t */\n\tconstructor(parent) {\n\t\tconst root = this.root;\n\t\tparent.appendChild(root);\n\t\troot.className = `${prefix}-group`;\n\t}\n\tremove() {\n\t\tthis.root.remove();\n\t\tfor (const r of [...this.#children]) {\n\t\t\tr();\n\t\t}\n\t}\n\tcreateGroup() {\n\t\tconst group = new Group(this.root);\n\t\tconst children = this.#children;\n\t\tconst remove = () => {children.delete(remove); group. remove(); }\n\t\tchildren.add(remove);\n\t\treturn group;\n\t}\n\t/**\n\t * \n\t * @overload\n\t * @param {true} isLink \n\t * @returns {HTMLAnchorElement}\n\t */\n\t/**\n\t * \n\t * @overload\n\t * @param {boolean} [isLink] \n\t * @returns {HTMLElement}\n\t */\n\t/**\n\t * \n\t * @param {boolean} [isLink] \n\t * @returns {HTMLElement}\n\t */\n\tcreateAction(isLink) {\n\t\tconst btn = document.createElement(isLink ? 'a' : 'div');\n\t\tbtn.tabIndex = 0;\n\t\tbtn.classList.add(`${prefix}-button`);\n\t\tbtn.addEventListener('click', () => { closeSidebarWhenMobile(); });\n\t\tthis.root.appendChild(btn);\n\n\n\t\tconst children = this.#children;\n\t\tconst remove = () => {children.delete(remove); btn.remove(); }\n\t\tchildren.add(remove);\n\t\treturn btn;\n\t}\n\t/**\n\t * \n\t * @param {HTMLElement} [siderContainer] \n\t * @param {HTMLElement} [buttonContainer] \n\t */\n\tcreateSider(siderContainer, buttonContainer) {\n\t\tconst sider = new Sider(siderContainer, buttonContainer);\n\t\tthis.root.appendChild(sider.button);\n\n\n\t\tconst children = this.#children;\n\t\tconst remove = () => {children.delete(remove); sider.remove(); }\n\t\tchildren.add(remove);\n\t\treturn sider;\n\t}\n}\n","import Group from './Group.mjs';\nimport { actions } from './dom.mjs';\nexport const pageSiderContainer = document.createElement('div');\nexport const startGroup = new Group(actions);\nexport const pageGroup = new Group(actions);\nexport const mainGroup = new Group(actions);\nexport const span = actions.appendChild(document.createElement('span'));\nexport const endGroup = new Group(actions);\n\nexport const pageSider = pageGroup.createSider(pageSiderContainer);\npageSider.button.innerText = '页面';\npageSider.disabled = true;\n","import { pageSider, pageSiderContainer } from './sides.mjs';\n\nimport { PageSider, Page } from '@yongdall/web';\n\n\nclass Sider extends PageSider {\n\t#page;\n\t#parent;\n\t/**\n\t * @param {AllSiderPage} page \n\t * @param {ParentNode} parent \n\t * @param {Node?} next \n\t * @param {boolean} inserted \n\t * @param {AbortSignal} signal \n\t * @param {ParentNode} parent \n\t * @returns \n\t */\n\tconstructor(page, parent, next, inserted, signal) {\n\t\tsuper(parent, next, inserted, signal);\n\t\tthis.#page = page;\n\t\tthis.#parent = parent;\n\t\tsignal.addEventListener('abort', () => {\n\t\tthis.#hidden();\n\t\t})\n\t}\n\tinsert() {\n\t\tsuper.insert();\n\n\t\tif (this.#page.show) { pageSider.disabled = false; }\n\t}\n\t#hidden() {\n\t\tif (this.#page.show && !this.#parent.children.length) {\n\t\t\tpageSider.disabled = true;\n\t\t}\n\t}\n\tremove() {\n\t\tsuper.remove();\n\t\tthis.#hidden();\n\t}\n\n}\n\nexport default class AllSiderPage extends Page {\n\t#sides = (() => {\n\t\tconst sides = document.createElement('div');\n\t\tsides.classList.add('Page-sides');\n\t\tpageSiderContainer.appendChild(sides);\n\t\treturn sides;\n\t})();\n\tdestroy() {\n\t\tif (!super.destroy()) { return false; }\n\t\tthis.#sides.remove();\n\t\treturn true;\n\t}\n\t/**\n\t * \n\t * @param {boolean} show \n\t */\n\ttoggle(show) {\n\t\tsuper.toggle(show);\n\t\t// TODO: 区别区域\n\t\tpageSider.disabled = !(show && this.#sides.children.length);\n\t}\n\tget siderOpen() { return pageSider.open; }\n\tset siderOpen(open) {\n\t\t// TODO: 判断是不是当前的\n\t\tif (open) {\n\t\t\tpageSider.show();\n\t\t} else {\n\t\t\tpageSider.hide();\n\t\t}\n\t}\n\t/**\n\t * \n\t * @param {boolean} [inserted] \n\t * @param {AbortSignal} [signal] \n\t * @returns {PageSider?}\n\t */\n\tcreateSider(inserted, signal) {\n\t\tif (this.destroyed) { return null; }\n\t\tif (signal?.aborted) { return null; }\n\t\tconst parent = this.#sides;\n\t\treturn new Sider(\n\t\t\tthis,\n\t\t\tparent,\n\t\t\tnull,\n\t\t\tinserted !== false,\n\t\t\tsignal instanceof AbortSignal\n\t\t\t\t? AbortSignal.any([signal, this.signal])\n\t\t\t\t: this.signal\n\t\t);\n\t}\n\t/**\n\t * \n\t * @param {boolean} show \n\t */\n\tconstructor(show) {\n\t\tsuper(show);\n\t\tif (show) {\n\t\t\tpageSider.disabled = !this.#sides.children.length;\n\t\t}\n\t}\n}\n","import '@neeloong/components';\n/** @import { Menu } from '@yongdall/web' */\n/** @import { Menu as NeeloongMenu } from '@neeloong/components'*/\n\n\n/**\n * \n * @param {(Menu | null)[]} menus \n * @param {Menu.Renderer} create \n * @param {AbortSignal} signal \n */\nexport default function createMenu(menus, create, signal) {\n\t/** @type {NeeloongMenu} */\n\t// @ts-ignore\n\tconst parent = document.createElement('nl-menu');\n\tlet has = false;\n\tlet divider = false;\n\tconst createDivider = () => {\n\t\thas = true;\n\t\tif (!divider) { return; }\n\t\tdivider = false;\n\t\tparent.appendChild(document.createElement('hr'));\n\t};\n\tfor (const menu of menus) {\n\t\tif (!menu) {\n\t\t\tif (!has) { continue; }\n\t\t\tdivider = true;\n\t\t\tcontinue;\n\t\t}\n\t\tconst { children } = menu;\n\t\tif (!children?.length) {\n\t\t\tconst ac = new AbortController();\n\t\t\tconst result = create(menu, AbortSignal.any([signal, ac.signal]));\n\t\t\tif (!result) {\n\t\t\t\tac.abort();\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tcreateDivider();\n\t\t\tparent.appendChild(result);\n\t\t\tcontinue;\n\t\t}\n\t\tconst child = createMenu(children, create, signal);\n\t\tif (!child) { continue; }\n\t\tcreateDivider();\n\n\t\tconst item = parent.appendChild(child);\n\t\tconst header = item.insertBefore(document.createElement('div'), item.firstChild);\n\t\theader.appendChild(document.createTextNode(menu.label || menu.title || ''));\n\t\theader.slot = 'label';\n\t}\n\tif (!has) { return null; }\n\treturn parent;\n}\n","import '@neeloong/components';\nimport createMenu from './createMenu.mjs';\n/** @import { Menu } from '@yongdall/web' */\n/**\n * \n * @param {(Menu | null)[]} menus \n * @param {Menu.Renderer} create \n * @param {AbortSignal} signal \n */\nexport default function createMenuButtons(menus, create, signal) {\n\tif (signal.aborted) { return null; }\n\tconst root = document.createElement('div');\n\tlet has = false;\n\tlet divider = false;\n\tconst createDivider = () => {\n\t\thas = true;\n\t\tif (!divider) { return; }\n\t\tdivider = false;\n\t\t// TODO: 分割线\n\t};\n\tfor (const menu of menus) {\n\t\tif (!menu) {\n\t\t\tif (!has) { continue; }\n\t\t\tdivider = true;\n\t\t\tcontinue;\n\t\t}\n\t\tconst { children } = menu;\n\t\tif (!children?.length) {\n\t\t\tconst ac = new AbortController();\n\t\t\tconst result = create(menu, AbortSignal.any([signal, ac.signal]));\n\t\t\tif (!result) {\n\t\t\t\tac.abort();\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tcreateDivider();\n\t\t\tconst button = root.appendChild(document.createElement('button'));\n\t\t\tbutton.appendChild(result);\n\t\t\tcontinue;\n\t\t}\n\t\tconst child = createMenu(children, create, signal);\n\t\tif (!child) { continue; }\n\t\tcreateDivider();\n\t\tconst button = root.appendChild(document.createElement('button'));\n\t\tbutton.appendChild(document.createTextNode(menu.label || menu.title || ''));\n\t\tchild.targetElement = button;\n\t\tbutton.addEventListener('click', () => child.show?.());\n\t\troot.appendChild(child);\n\t}\n\tif (!root.childNodes.length) { return null; }\n\troot.classList.add('MenuButtons');\n\treturn root;\n}\n","import { effect, webRoot } from '@yongdall/web';\n/** @import { Menu } from '@yongdall/web' */\n\n\n\n/**\n * \n * @param {Menu} menu \n * @param {AbortSignal} signal \n * @returns {HTMLElement}\n */\nexport default function createMenuItem(menu, signal) {\n\tconst link = document.createElement('a');\n\tlink.appendChild(document.createTextNode(menu.label || menu.title || ''));\n\n\tconst { page, path, uri, target, command, script, click } = menu;\n\tfunction isDisabled() {\n\t\tconst disabled = menu.disabled;\n\t\treturn Boolean(typeof disabled === 'function' ? disabled() : disabled);\n\t}\n\n\teffect(() => {\n\t\t// @ts-ignore\n\t\tlink.disabled = isDisabled();\n\t}, signal);\n\n\tif (page) {\n\t\tlink.href = new URL(path?.[0] === '/' ? `${page}${path}` : `${page}/${path || ''}`, webRoot).href;\n\t\tif (target && typeof target === 'string') { link.target = target; }\n\t} else if (uri) {\n\t\tlink.href = uri;\n\t\tif (target !== '') { link.target = target ?? '_blank'; }\n\t} else if (typeof click === 'function') {\n\t\tlink.addEventListener('click', (e) => {\n\t\t\tif (isDisabled()) { return; }\n\t\t\tif (e.defaultPrevented) { return; }\n\t\t\tclick();\n\t\t});\n\t} else if (command) {\n\t\tlink.addEventListener('click', (e) => {\n\t\t\tif (isDisabled()) { return; }\n\t\t\tif (e.defaultPrevented) { return; }\n\t\t\t// TODO:\n\t\t});\n\t} else if (script) {\n\t\tlink.addEventListener('click', (e) => {\n\t\t\tif (isDisabled()) { return; }\n\t\t\tif (e.defaultPrevented) { return; }\n\t\t\t// TODO:\n\t\t});\n\n\t}\n\treturn link;\n\n}\n","import '@neeloong/components';\nimport createMenu from './createMenu.mjs';\nimport { createIcon } from '@yongdall/web';\n/** @import { Menu } from '@yongdall/web' */\n/**\n * \n * @param {(Menu | null)[]} menus \n * @param {Menu?} menu\n * @param {Menu.Renderer} create \n * @param {AbortSignal} signal \n */\nexport default function createMenuButton(menus, menu, create, signal) {\n\tconst root = document.createElement('div');\n\tconst child = createMenu(menus, create, signal);\n\tif (!child) { return null; }\n\tconst button = root.appendChild(document.createElement('button'));\n\tconst label = menu?.label || menu?.title || '';\n\tif (label) {\n\t\tbutton.appendChild(document.createTextNode(label));\n\t} else {\n\t\tbutton.appendChild(createIcon(menu?.icon || 'more', signal));\n\t}\n\tchild.targetElement = button;\n\tbutton.addEventListener('click', () => child.show());\n\troot.appendChild(child);\n\treturn root;\n}\n","/** @import { Theme } from '@yongdall/web' */\nimport { createIcon, root as rootContainer } from '@yongdall/web';\nimport { cssPrefix } from '../styles/variables.mjs';\nimport pageManager, { activityContainer } from '../pageManager/index.mjs';\n\nimport List from '../components/List.mjs';\nimport Pagination from '../components/Pagination.mjs';\nimport { default as home } from '../home/index.mjs';\nimport { menuContainer, refreshMenu } from '../workspace/index.mjs';\nimport { userButton, userContainer } from '../user/index.mjs';\nimport { logoLink } from '../logo.mjs';\nimport renderError from '../error/index.mjs';\n\nimport { actions, header } from './dom.mjs';\nimport { closeSidebarWhenMobile } from './Sider.mjs';\nimport { endGroup, startGroup } from './sides.mjs';\nimport AllSiderPage from './AllSiderPage.mjs';\nimport createMenuButtons from '../menu/createMenuButtons.mjs';\nimport createMenuItem from '../menu/createMenuItem.mjs';\nimport createMenuButton from '../menu/createMenuButton.mjs';\n\n\n\n/**\n * \n * @type {Theme}\n */\nexport default {\n\tcomponents: { List, Pagination, createMenuButtons, createMenuItem, createMenuButton },\n\tpageManager,\n\telements: [rootContainer, header],\n\tclassNames: [cssPrefix, `${cssPrefix}-allSider`],\n\tstyleFiles: ['theme-allSider.css'],\n\thome,\n\trootClassName: `${cssPrefix}-root`,\n\tcreatePage(show) { return new AllSiderPage(show); },\n\trenderError(ctx, error) { renderError(ctx, error); },\n\tsetup(signal) {\n\t\tlogoLink.addEventListener('click', () => { closeSidebarWhenMobile(); }, {signal});\n\t\tactions.insertBefore(logoLink, actions.firstElementChild);\n\n\t\tconst workspaceSider = startGroup.createSider(menuContainer);\n\t\trefreshMenu(true);\n\t\tworkspaceSider.button.appendChild(createIcon('menu', signal));\n\t\tworkspaceSider.button.title = '菜单';\n\t\tconst activitySider = startGroup.createSider(activityContainer);\n\t\tactivitySider.button.appendChild(createIcon('activity', signal));\n\t\tactivitySider.button.title = '活动';\n\n\t\tconst userSider = endGroup.createSider(userContainer, userButton);\n\n\t\tsignal.addEventListener('abort', () => {\n\t\t\tlogoLink.remove();\n\t\t\tworkspaceSider.remove();\n\t\t\tactivitySider.remove();\n\t\t\tuserSider.remove();\n\t\t}, {once: true});\n\t},\n\n};\n","import { configuration, createIcon } from '@yongdall/web';\nimport { cssPrefix } from '../styles/variables.mjs';\n\nexport const prefix = `${cssPrefix}-tradition`;\n\nexport const header = document.createElement('header');\nexport const actions = header.appendChild(document.createElement('div'));\nactions.classList.add(`${prefix}-header`);\nexport const sidebar = header.appendChild(document.createElement('div'));\nsidebar.classList.add(`${prefix}-sidebar`);\n\nconst menuButton = actions.appendChild(createIcon('menu', true));\nmenuButton.classList.add(`${prefix}-menu-button`);\n\nexport const titleSpan = actions.appendChild(document.createElement('div'));\ntitleSpan.classList.add(`${prefix}-header-title`);\ntitleSpan.innerText = configuration.title || configuration.company || ''\n\nexport const span = actions.appendChild(document.createElement('span'));\n\n\nconst openedClassName = `${prefix}-menu-open`;\n\nmenuButton.addEventListener('click', () => {\n\tdocument.body.classList.toggle(openedClassName);\n});\n\n\nexport function closeSidebarWhenMobile() {\n\tif (window.innerWidth > 800) { return; }\n\tdocument.body.classList.remove(openedClassName);\n}\nsidebar.addEventListener('click', (e) => {\n\tif (e.target !== e.currentTarget) { return; }\n\tdocument.body.classList.remove(openedClassName);\n});\n","import { Page } from '@yongdall/web';\n\nexport default class TraditionPage extends Page {\n}\n","/** @import { Theme } from '@yongdall/web' */\nimport { root as rootContainer } from '@yongdall/web';\nimport { cssPrefix } from '../styles/variables.mjs';\nimport pageManager, { activityContainer } from '../pageManager/index.mjs';\n\nimport List from '../components/List.mjs';\nimport Pagination from '../components/Pagination.mjs';\nimport { default as home } from '../home/index.mjs';\nimport { menuContainer, refreshMenu } from '../workspace/index.mjs';\nimport { userButton, userContainer } from '../user/index.mjs';\nimport { logoLink } from '../logo.mjs';\nimport renderError from '../error/index.mjs';\n\nimport { actions, closeSidebarWhenMobile, titleSpan } from './dom.mjs';\nimport { header, sidebar } from './dom.mjs';\nimport TraditionPage from './TraditionPage.mjs';\nimport createMenuButtons from '../menu/createMenuButtons.mjs';\nimport createMenuItem from '../menu/createMenuItem.mjs';\nimport createMenuButton from '../menu/createMenuButton.mjs';\n\n\n\n/**\n * \n * @type {Theme}\n */\nexport default {\n\tcomponents: { List, Pagination, createMenuButtons, createMenuItem, createMenuButton },\n\tpageManager,\n\telements: [header, rootContainer],\n\tclassNames: [cssPrefix, `${cssPrefix}-tradition`],\n\tstyleFiles: ['theme-tradition.css'],\n\thome,\n\trootClassName: `${cssPrefix}-root`,\n\tcreatePage(show) { return new TraditionPage(show); },\n\trenderError(ctx, error) { renderError(ctx, error);},\n\tsetup(signal) {\n\t\tlogoLink.addEventListener('click', () => { closeSidebarWhenMobile(); }, {signal});\n\t\tactions.insertBefore(logoLink, titleSpan);\n\t\theader.appendChild(activityContainer);\n\n\t\tsidebar.appendChild(menuContainer);\n\n\t\trefreshMenu(true);\n\n\t\tdocument.body.appendChild(userContainer);\n\t\tuserContainer.setAttribute('popover', 'auto')\n\t\tuserButton.addEventListener('click', () => { userContainer.showPopover(); }, {signal});\n\n\t\tactions.appendChild(userButton);\n\n\n\n\t\tsignal.addEventListener('abort', () => {\n\t\t\tlogoLink.remove();\n\t\t\tactivityContainer.remove();\n\t\t\tmenuContainer.remove();\n\t\t\tuserContainer.removeAttribute('popover')\n\t\t\tuserContainer.remove();\n\t\t\tuserButton.remove();\n\t\t}, {once: true});\n\t},\n\n};\n"],"x_google_ignoreList":[3,4,5,6,7,8,9,10,11,12,13,14,15,16,17],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.mjs","names":["prefix","#table","#thead","#createUrl","#renderList","#labelPattern","#fieldsShow","#idFields","#tr","#tbody","#documents","style","#printer","#value","#internals","style","#style","#separator","style","#label","#explain","style","verticalWritingMode","setBoolAttribute","#shadow","#header","#body","#main","#updateSize","#ro","#closeOthersWhenOpen","#label","style","hasPopover","#shadow","#main","#target","#open","#mounted","#getTarget","#svg","#show","#close","style","Group","#style","#updateStyle","style","verticalWritingMode","getLayout","Menu","#direction","#align","#label","#parentMenu","#show","#dialog","#currentSubMenu","#close","#mounted","#update","#target","#open","#internals","#updateLayout","#getTarget","#root","#rowVertical","#rowReverse","#colReverse","style","#main","#style","#close","#hidePopover","#duration","#clearTimeout","#shown","#internals","#setTimeout","#handler","#remove","#mounted","#show","#hide","style","setBoolAttribute","#dialog","#main","#okButton","#cancelButton","#mounted","style$1","#connect","#disconnect","#children","style","#adaptively","#targets","#pagination","#size","#total","#pages","#page","Pagination","#unregister","#shadow","#input","#button","#updateDisabled","#slot","style$3","#children","#buttons","#createButtons","style$2","style$1","#nonLabel","#labels","#update","style","#state","#text","#subElements","style","#value","#main","#sign","#update","style","#aliquotStyle","#style","style","#style","#pointerId","#internals","#trigger","#shadow","#stopMove","#startArea","#endArea","#fns","#pagination","filter","header","main","allMenus","currentMenus","ac","prefix","header","actions","sidebar","openedClassName","prefix","closeSidebarWhenMobile","Sider","#disabled","#hide","#click","sidebar","prefix","#children","Sider","actions","span","#page","#parent","#hidden","#sides","rootContainer","header","actions","prefix","header","actions","sidebar","menuButton","titleSpan","openedClassName","rootContainer","rootContainer"],"sources":["../../packages/theme/styles/variables.mjs","../../packages/theme/pageManager/index.mjs","../../packages/theme/components/List.mjs","../../node_modules/.pnpm/@neeloong+components@0.7.0/node_modules/@neeloong/components/Angle.mjs","../../node_modules/.pnpm/@neeloong+components@0.7.0/node_modules/@neeloong/components/Breadcrumb.mjs","../../node_modules/.pnpm/@neeloong+components@0.7.0/node_modules/@neeloong/components/Cell.mjs","../../node_modules/.pnpm/@neeloong+components@0.7.0/node_modules/@neeloong/components/Collapse.mjs","../../node_modules/.pnpm/@neeloong+components@0.7.0/node_modules/@neeloong/components/Focus.mjs","../../node_modules/.pnpm/@neeloong+components@0.7.0/node_modules/@neeloong/components/Group.mjs","../../node_modules/.pnpm/@neeloong+components@0.7.0/node_modules/@neeloong/components/Menu.mjs","../../node_modules/.pnpm/@neeloong+components@0.7.0/node_modules/@neeloong/components/Message.mjs","../../node_modules/.pnpm/@neeloong+components@0.7.0/node_modules/@neeloong/components/Modal.mjs","../../node_modules/.pnpm/@neeloong+components@0.7.0/node_modules/@neeloong/components/Movable.mjs","../../node_modules/.pnpm/@neeloong+components@0.7.0/node_modules/@neeloong/components/Pagination.mjs","../../node_modules/.pnpm/@neeloong+components@0.7.0/node_modules/@neeloong/components/RollDigit.mjs","../../node_modules/.pnpm/@neeloong+components@0.7.0/node_modules/@neeloong/components/Row.mjs","../../node_modules/.pnpm/@neeloong+components@0.7.0/node_modules/@neeloong/components/Space.mjs","../../node_modules/.pnpm/@neeloong+components@0.7.0/node_modules/@neeloong/components/Split.mjs","../../packages/theme/components/Pagination.mjs","../../packages/theme/home/index.mjs","../../packages/theme/menu/createNavMenu.mjs","../../packages/theme/workspace/index.mjs","../../packages/theme/user/userAvatar.mjs","../../packages/theme/menu/createMenuItem.mjs","../../packages/theme/user/index.mjs","../../packages/theme/logo.mjs","../../packages/theme/error/index.mjs","../../packages/theme/theme-allSider/dom.mjs","../../packages/theme/theme-allSider/Sider.mjs","../../packages/theme/theme-allSider/Group.mjs","../../packages/theme/theme-allSider/sides.mjs","../../packages/theme/theme-allSider/AllSiderPage.mjs","../../packages/theme/menu/createMenu.mjs","../../packages/theme/menu/createMenuButtons.mjs","../../packages/theme/menu/createMenuButton.mjs","../../packages/theme/theme-allSider/index.mjs","../../packages/theme/theme-base/index.mjs","../../packages/theme/theme-tabs/dom.mjs","../../packages/theme/theme-tabs/index.mjs"],"sourcesContent":["export const cssPrefix = `YongDallTheme`;\n","import { configuration, effect, waitAbortSignal } from '@yongdall/web';\n/** @import { PageHandle, PageManager } from '@yongdall/web' */\nimport { cssPrefix } from '../styles/variables.mjs';\nconst prefix = `${cssPrefix}-activity`;\n\nexport const activityContainer = document.createElement('div');\nactivityContainer.classList.add(prefix);\n\n\n\n/**\n * @typedef {object} ButtonProxy\n * @property {HTMLElement} button\n * @property {HTMLAnchorElement} link\n * @property {ButtonProxy} [last]\n * @property {ButtonProxy} [next]\n */\n\n/** @type {Map<PageHandle, ButtonProxy>} */\nconst buttons = new Map();\n/** @type {ButtonProxy | undefined} */\nlet first;\nlet append = false;\n/**\n * \n * @param {boolean} a \n */\nexport function setMode(a){\n\tappend = a;\n}\n/**\n * \n * @param {PageHandle?} [page] \n */\nfunction setTitle(page) {\n\tdocument.title = [\n\t\tpage ? page.title : '',\n\t\tconfiguration.title || '拥道YongDall',\n\t].filter(Boolean).join(' | ');\n}\nsetTitle();\n/** @type {PageManager} */\nconst pageManager = (page) => {\n\tconst button = document.createElement('div');\n\tbutton.classList.add(`${prefix}-page`);\n\tconst link = button.appendChild(document.createElement('a'));\n\tlink.classList.add(`${prefix}-title`);\n\tlink.href = page.href;\n\tlink.innerText = page.title;\n\tconst close = button.appendChild(document.createElement('button'));\n\tclose.type = 'button';\n\tclose.classList.add(`${prefix}-close`);\n\tclose.addEventListener('click', () => {\n\t\tpage.destroy();\n\t});\n\t/** @type {ButtonProxy} */\n\tconst btn = {\n\t\tbutton, link,\n\t\tnext: first,\n\t};\n\tif (first) { first.last = btn; }\n\tfirst = btn;\n\tbuttons.set(page, btn);\n\tactivityContainer.insertBefore(button, append ? null : activityContainer.firstChild);\n\n\teffect(() => {\n\t\tif (!page.current) { return; }\n\t\tsetTitle(page);\n\t}, page.signal);\n\teffect(() => { link.innerText = page.title; }, page.signal);\n\teffect(() => { link.href = page.href; }, page.signal);\n\n\teffect(() => {\n\t\tif (page.current) {\n\t\t\tbutton.classList.add(`${prefix}-current`);\n\t\t} else {\n\t\t\tbutton.classList.remove(`${prefix}-current`);\n\t\t}\n\t}, page.signal);\n\teffect(() => {\n\t\tif (page.loading) {\n\t\t\tbutton.classList.add(`${prefix}-loading`);\n\t\t} else {\n\t\t\tbutton.classList.remove(`${prefix}-loading`);\n\t\t}\n\t}, page.signal);\n\teffect(() => {\n\t\tif (page.unsaved) {\n\t\t\tbutton.classList.add(`${prefix}-unsaved`);\n\t\t} else {\n\t\t\tbutton.classList.remove(`${prefix}-unsaved`);\n\t\t}\n\t}, page.signal);\n\twaitAbortSignal(page.signal).then(() => {\n\t\tconst { last, next } = btn;\n\t\tif (last) { last.next = next; }\n\t\tif (next) { next.last = last; }\n\t\tif (first === btn) { first = next; }\n\t\tbutton.remove();\n\t});\n};\nexport default pageManager;\n","/** @import { FieldScriptConfiguration, ModelScriptConfiguration } from '@yongdall/web' */\nimport { createShowField, runPattern} from '@yongdall/web';\n\n\nexport default class List {\n\t/** @type {((id: string) => string)?} */\n\t#createUrl;\n\t/** @type {readonly [string, FieldScriptConfiguration][]} */\n\t#fieldsShow;\n\t/** @type {string} */\n\t#labelPattern;\n\t/** @type {string[]} */\n\t#idFields;\n\t/** @type {readonly any[]} */\n\t#documents = [];\n\t#table = document.createElement('table');\n\t#thead = this.#table.appendChild(document.createElement('thead'));\n\t#tr = this.#thead.appendChild(document.createElement('tr'));\n\t#tbody = this.#table.appendChild(document.createElement('tbody'));\n\tget root() { return this.#table }\n\tget createUrl() {\n\t\treturn this.#createUrl;\n\t}\n\tset createUrl(fn) {\n\t\tconst createUrl = typeof fn === 'function' ? fn : null;\n\t\tif (this.#createUrl === createUrl) { return }\n\t\tthis.#createUrl = createUrl;\n\t\tthis.#renderList();\n\t}\n\t/**\n\t * \n\t * @param {(id: string) => string} createUrl \n\t * @param {ModelScriptConfiguration} model \n\t */\n\tconstructor(createUrl, model) {\n\t\tconst fieldsShow = Object.entries(model.fields).filter(([,{type}]) => type && typeof type !== 'object');\n\t\tconst idFields = Object.entries(model.fields).filter(([,v]) => v.primary).map(([v]) => v);\n\t\tconst labelPattern = model.labelPattern || '';\n\t\tthis.#labelPattern = labelPattern;\n\t\tthis.#createUrl = typeof createUrl === 'function' ? createUrl : null;\n\t\tthis.#fieldsShow = fieldsShow;\n\t\tthis.#idFields = idFields;\n\t\tconst tr = this.#tr;\n\t\ttr.innerHTML = '';\n\t\tconst th = tr.appendChild(document.createElement('th'));\n\t\tth.appendChild(document.createTextNode('#'));\n\t\tfor (const [name,field] of fieldsShow) {\n\t\t\tconst th = tr.appendChild(document.createElement('th'));\n\t\t\tth.appendChild(document.createTextNode(field.label || name));\n\t\t}\n\t}\n\t#renderList() {\n\t\tconst tbody = this.#tbody;\n\t\ttbody.innerHTML = '';\n\t\tconst idFields = this.#idFields;\n\t\tconst labelPattern = this.#labelPattern;\n\t\tconst fieldsShow = this.#fieldsShow;\n\t\tconst createUrl = this.#createUrl;\n\t\tfor (const r of this.#documents) {\n\t\t\tconst tr = tbody.appendChild(document.createElement('tr'));\n\t\t\tconst td = tr.appendChild(document.createElement('td'));\n\t\t\tconst label = runPattern(labelPattern, r) || idFields.map(v => r[v]).join('$')\n\t\t\tif (createUrl) {\n\t\t\t\tconst a = td.appendChild(document.createElement('a'));\n\t\t\t\ta.href = createUrl(idFields.map(v => r[v]).join('$'));\n\t\t\t\ta.appendChild(document.createTextNode(label));\n\t\t\t} else {\n\t\t\t\ttd.appendChild(document.createTextNode(label));\n\t\t\t}\n\t\t\tfor (const [name,field] of fieldsShow) {\n\t\t\t\tconst td = tr.appendChild(document.createElement('td'));\n\t\t\t\tconst f = createShowField(name, field, {inline: true}, r);\n\t\t\t\ttd.appendChild(f.root);\n\t\t\t}\n\t\t}\n\t}\n\t/**\n\t * \n\t * @param {readonly any[]} list \n\t */\n\tsetData(list) {\n\t\tthis.#documents = list;\n\t\tthis.#renderList();\n\n\t}\n\tdestroy() {\n\t\t\n\t}\n}\n","/*!\n * 匿龙组件库 @neeloong/components v0.7.0\n * (c) 2023-2024 猛火Fierflame\n * @license MIT\n */\nconst style = `\\\n:host {\n\tdisplay: inline-block;\n\tcolor: #000;\n\tmargin: auto;\n\tposition: relative;\n\tborder-radius: 100%;\n\tborder: 1px solid;\n\twidth: 1em;\n\theight: 1em;\n}\n:host([hidden]) {\n\tdisplay: none;\n}\ndiv {\n\theight: 1px;\n\twidth: 50%;\n\tposition: absolute;\n\tbackground: currentColor;\n\tmargin: auto 0 auto auto;\n\ttop: 0;\n\tleft: 0;\n\tright: 0;\n\tbottom: 0;\n\tpointer-events: none;\n\ttransform-origin: left;\n}\n`;\nclass Angle extends HTMLElement {\n\t/** @readonly */\n\tstatic formAssociated = true;\n\t/** @readonly */\n\t#printer = document.createElement('div');\n\t/** @readonly */\n\t#internals = this.attachInternals();\n\tconstructor() {\n\t\tsuper();\n\t\tconst root = this.attachShadow({mode: 'closed'});\n\t\troot.appendChild(document.createElement('style')).textContent = style;\n\t\troot.appendChild(this.#printer);\n\t\t/**\n\t\t *\n\t\t * @param {PointerEvent} event\n\t\t * @returns {void}\n\t\t */\n\t\tconst onTouch = event => {\n\t\t\tif (!(event.buttons & 1)) { return; }\n\t\t\tconst { left, width, top, height } = this.getBoundingClientRect();\n\t\t\tconst x = event.clientX - left - width / 2;\n\t\t\tconst y = event.clientY - top - height / 2;\n\t\t\tconst value = Math.atan2(y, x) / Math.PI * 180;\n\t\t\tthis.value = Math.round(value);\n\t\t\tthis.dispatchEvent(new InputEvent('input'));\n\t\t\tthis.dispatchEvent(new InputEvent('change'));\n\t\t};\n\t\tthis.addEventListener('pointerdown', onTouch);\n\t\tthis.addEventListener('pointermove', onTouch);\n\t\tthis.value = this.getAttribute('value');\n\t}\n\t#value = 0;\n\t/** @type {number} */\n\tget value() {\n\t\treturn this.#value;\n\t}\n\t/**\n\t * @param {number | string | null} [v]\n\t */\n\tset value(v) {\n\t\tconst a = parseInt(String(v));\n\t\tif (!Number.isFinite(a)) { return; }\n\t\tthis.#value = a;\n\t\tthis.#printer.style.transform = `rotate(${a}deg)`;\n\t\tthis.#internals.setFormValue(String(a));\n\t}\n\tconnectedCallback() {\n\t\tif (this.getAttribute('tabindex') === null) {\n\t\t\tthis.setAttribute('tabindex', '0');\n\t\t}\n\t}\n}\n\ntry {\n\tcustomElements.define('nl-angle', Angle);\n} catch {}\n\nexport { Angle as default };\n","/*!\n * 匿龙组件库 @neeloong/components v0.7.0\n * (c) 2023-2024 猛火Fierflame\n * @license MIT\n */\nconst style = `::slotted(*)::after {content: var(--nl-breadcrumb-separator, ' / ');}`;\nconst styleOfLast = `::slotted(:last-child)::after {content: none}`;\n\nclass Breadcrumb extends HTMLElement {\n\tstatic observedAttributes = ['separator'];\n\t#style = document.createElement('style');\n\t/**\n\t *\n\t * @param {string | null} newVal\n\t * @returns {void}\n\t */\n\t#separator(newVal) {\n\t\tif (newVal === null) {\n\t\t\tthis.#style.textContent = '';\n\t\t\treturn;\n\t\t}\n\t\tconst content = JSON.stringify(newVal);\n\t\tconst style = `::slotted(*)::after {content: ${content}; }`;\n\t\tthis.#style.textContent = style;\n\t}\n\tconstructor() {\n\t\tsuper();\n\t\tconst shadow = this.attachShadow({mode:'closed'});\n\t\tshadow.appendChild(document.createElement('style'))\n\t\t\t.textContent = style;\n\t\tshadow.appendChild(this.#style);\n\t\tshadow.appendChild(document.createElement('style'))\n\t\t\t.textContent = styleOfLast;\n\t\tshadow.appendChild(document.createElement('slot'));\n\t}\n\t/**\n\t * 分隔符\n\t * @type {string | null}\n\t */\n\tget separator() { return this.getAttribute('separator'); }\n\tset separator(separator) {\n\t\tif (separator === undefined || separator === null) {\n\t\t\tthis.removeAttribute('separator');\n\t\t} else {\n\t\t\tthis.setAttribute('separator', separator);\n\t\t}\n\t}\n\tconnectedCallback() {\n\t\tthis.#separator(this.separator);\n\t}\n\t/**\n\t * @param {string} attrName\n\t * @param {string | null} oldVal\n\t * @param {string | null} newVal\n\t * @returns {void}\n\t */\n\tattributeChangedCallback(attrName, oldVal, newVal) {\n\t\tif (oldVal === newVal) { return; }\n\t\tswitch (attrName) {\n\t\t\tcase 'separator': {\n\t\t\t\tthis.#separator(newVal);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n}\n\ntry {\n\tcustomElements.define('nl-breadcrumb', Breadcrumb);\n} catch {}\n\nexport { Breadcrumb as default };\n","/*!\n * 匿龙组件库 @neeloong/components v0.7.0\n * (c) 2023-2024 猛火Fierflame\n * @license MIT\n */\nconst style = `\n[hidden]{\n\tdisplay: none!important;\n}\n:host {\n\tposition: relative;\n\tborder-block: 1px solid currentColor;\n\tdisplay: flex;\n\talign-items: center;\n\tline-height: 1.4;\n\toverflow: hidden;\n\tpadding: 8px;\n\tmin-block-size: 32px;\n\tfont-size: 14px;\n\ttext-decoration: none;\n}\n\n.icon {\n\tdisplay: block;\n\tmargin-inline-end: 5px;\n}\n\n.body {\n\tflex: 1;\n}\n\n.label {\n\tline-height: 24px;\n\tfont-size: 14px;\n}\n:host([bold]) .label {\n\tfont-weight: bold;\n}\n.explain {\n\tcolor: var(--nl-cell-explain-color, currentColor);\n}\n.explain:empty {\n\tdisplay: none;\n}\n.extra {\n\tdisplay: block;\n\tposition: relative;\n\ttext-align: end;\n}\n.link {\n\tdisplay: none;\n\tposition: relative;\n\tinline-size: 16px;\n\ttext-align: center;\n}\n.link::before {\n\tcontent: '';\n\ttransform: rotate(45deg);\n\tborder: 2px solid transparent;\n\tpointer-events: none;\n\tinline-size: 8px;\n\tblock-size: 8px;\n\tdisplay: inline-block;\n\tcolor: var(--nl-cell-link-color, #CCC);\n\tborder-block-start-color: currentColor;\n\tborder-inline-end-color: currentColor;\n}\n\n:host([link]) .link {\n\tdisplay: block;\n}\n\n`;\nclass Cell extends HTMLElement {\n\tstatic observedAttributes = ['label', 'explain'];\n\tget label() { return this.getAttribute('label') || ''; }\n\tset label(label) {\n\t\tif (label) {\n\t\t\tthis.setAttribute('label', label);\n\t\t} else {\n\t\t\tthis.removeAttribute('label');\n\t\t}\n\t}\n\tget explain() { return this.getAttribute('explain') || ''; }\n\tset explain(explain) {\n\t\tif (explain) {\n\t\t\tthis.setAttribute('explain', explain);\n\t\t} else {\n\t\t\tthis.removeAttribute('explain');\n\t\t}\n\t}\n\tget disabled() { return this.hasAttribute('disabled'); }\n\tset disabled(disabled) {\n\t\tif (disabled) {\n\t\t\tthis.setAttribute('disabled', '');\n\t\t} else {\n\t\t\tthis.removeAttribute('disabled');\n\t\t}\n\t}\n\t#label = document.createElement('div');\n\t#explain = document.createElement('div');\n\tconstructor() {\n\t\tsuper();\n\t\tconst shadow = this.attachShadow({mode:'closed'});\n\t\tshadow.appendChild(document.createElement('style')).textContent = style;\n\n\n\t\tshadow.addEventListener('click', e => {\n\t\t\tif (!this.disabled) { return; }\n\t\t\te.stopPropagation();\n\t\t\te.preventDefault();\n\t\t});\n\n\t\tconst iconSlot = shadow.appendChild(document.createElement('slot'));\n\t\ticonSlot.name = 'icon';\n\t\ticonSlot.className = 'icon';\n\t\ticonSlot.hidden = !iconSlot.assignedNodes().length;\n\t\ticonSlot.addEventListener('slotchange', e=> {\n\t\t\ticonSlot.hidden = !iconSlot.assignedNodes().length;\n\t\t});\n\n\t\tconst body = shadow.appendChild(document.createElement('div'));\n\t\tbody.className = 'body';\n\t\tconst label = body.appendChild(this.#label);\n\t\tlabel.className = 'label';\n\t\tconst explain = body.appendChild(this.#explain);\n\t\texplain.setAttribute('part', 'explain');\n\t\texplain.className = 'explain';\n\n\t\tconst extraSlot = shadow.appendChild(document.createElement('slot'));\n\t\textraSlot.name = 'extra';\n\t\textraSlot.className = 'extra';\n\t\textraSlot.hidden = !extraSlot.assignedNodes().length;\n\t\textraSlot.addEventListener('slotchange', e=> {\n\t\t\textraSlot.hidden = !extraSlot.assignedNodes().length;\n\t\t});\n\t\tconst link = shadow.appendChild(document.createElement('div'));\n\t\tlink.className = 'link';\n\t\tlink.setAttribute('part', 'link');\n\t}\n\t/**\n\t * @param {string} attrName\n\t * @param {string | null} oldVal\n\t * @param {string | null} newVal\n\t * @returns {void}\n\t */\n\tattributeChangedCallback(attrName, oldVal, newVal) {\n\t\tif (oldVal === newVal) { return; }\n\t\tswitch (attrName) {\n\t\t\tcase 'label': {\n\t\t\t\tthis.#label.innerText = newVal || '';\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase 'explain': {\n\t\t\t\tthis.#explain.innerText = newVal || '';\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n}\n\ntry {\n\tcustomElements.define('nl-cell', Cell);\n} catch {}\n\nexport { Cell as default };\n","/*!\n * 匿龙组件库 @neeloong/components v0.7.0\n * (c) 2023-2024 猛火Fierflame\n * @license MIT\n */\nconst style = `\n:host {\n\tdisplay: block;\n\tborder: 1px solid #666;\n\twriting-mode: inherit;\n}\n:host[hidden] {\n\tdisplay: none;\n}\nheader {\n\tdisplay: flex;\n\tborder-block-end: inherit;\n\tcursor: pointer;\n}\n.label {\n\tflex: 1;\n\tdisplay: flex;\n}\n.trigger {\n\twidth: .35em;\n\theight: .35em;\n\tborder: .15em solid currentcolor;\n\tborder-block-start: none;\n\tborder-inline-start: none;\n\tmargin-inline: .3em .5em;\n\tmargin-block: auto;\n\ttransform: rotate(-45deg);\n}\nsection {\n\toverflow: hidden;\n}\nmain {\n\tpadding: 8px;\n}\n\n:host(:not([open])) section {\n\tblock-size: 0!important;\n}\n:host(:not([open])) header {\n\tmargin-block-end: -1px;\n}\n\n:host([open]) .trigger {\n\ttransform: rotate(45deg);\n}\n\n\n:host([menu]) {\n\t\tborder: none;\n}\n:host([menu]) main {\n\tpadding: 0!important;\n}\n:host([menu]) header {\n\tmargin-block-end: 0;\n}\n:host([animation]) section {\n\ttransition: block-size .3s;\n}\n:host([animation]) .trigger {\n\ttransition: transform .3s;\n}\n:host([non-trigger]) .trigger-slot {\n\tdisplay: none;\n}\n\n:host([start-trigger]) header {\n\tflex-direction: row-reverse;\n}\n`;\n\nconst verticalWritingMode = new Set([\n\t'vertical-lr', 'vertical-rl', 'sideways-lr', 'sideways-rl',\n]);\n/**\n *\n * @param {HTMLElement} el\n * @param {string} name\n * @param {boolean} value\n */\nfunction setBoolAttribute(el, name, value) {\n\tif (value) {\n\t\tel.setAttribute(name, '');\n\t} else {\n\t\tel.removeAttribute(name);\n\t}\n}\nclass Collapse extends HTMLElement {\n\tstatic observedAttributes = ['accordion', 'disabled', 'open', 'menu', 'animation', 'label'];\n\t/** @type {boolean} 无折叠图标 */\n\tget nonTrigger() { return this.getAttribute('non-trigger') !== null; }\n\tset nonTrigger(value) { setBoolAttribute(this, 'non-trigger', value); }\n\t/** @type {boolean} 图标在开头 */\n\tget startTrigger() { return this.getAttribute('start-trigger') !== null; }\n\tset startTrigger(value) { setBoolAttribute(this, 'start-trigger', value); }\n\t/** @type {boolean} 手风琴 */\n\tget accordion() { return this.getAttribute('accordion') !== null; }\n\tset accordion(value) { setBoolAttribute(this, 'accordion', value); }\n\t/** @type {boolean} 禁用 */\n\tget disabled() { return this.getAttribute('disabled') !== null; }\n\tset disabled(value) { setBoolAttribute(this, 'disabled', value); }\n\t/** @type {boolean} 打开状态 */\n\tget open() { return this.getAttribute('open') !== null; }\n\tset open(value) { setBoolAttribute(this, 'open', value); }\n\t/** @type {boolean} 动画 */\n\tget animation() { return this.getAttribute('animation') !== null; }\n\tset animation(value) { setBoolAttribute(this, 'animation', value); }\n\t/** @type {boolean} 菜单模式 */\n\tget menu() { return this.getAttribute('menu') !== null; }\n\tset menu(value) { setBoolAttribute(this, 'menu', value); }\n\t/** @type {string} 标签 */\n\tget label() { return this.getAttribute('label') || ''; }\n\tset label(value) {\n\t\tif (value) {\n\t\t\tthis.setAttribute('label', value);\n\t\t} else {\n\t\t\tthis.removeAttribute('label');\n\t\t}\n\t}\n\n\n\t#shadow = (() => {\n\t\tconst shadow = this.attachShadow({mode:'closed'});\n\t\tshadow.appendChild(document.createElement('style')).textContent = style;\n\t\treturn shadow;\n\t})();\n\t#header = (() => {\n\t\tconst header = document.createElement('header');\n\t\theader.setAttribute('part', 'header');\n\t\tthis.#shadow.appendChild(header);\n\t\theader.tabIndex = 0;\n\t\t/** @param {Event} e */\n\t\tconst click = e => {\n\t\t\tif (this.disabled) { return; }\n\t\t\tif (this.#shadow.activeElement !== header) { return; }\n\t\t\tif (!this.dispatchEvent(new Event('beforechange', {cancelable: true}))) { return; }\n\t\t\tthis.open = !this.open;\n\t\t\tthis.dispatchEvent(new Event('change'));\n\t\t};\n\t\theader.addEventListener('click', click);\n\t\theader.addEventListener('keydown', e => {\n\t\t\tif (e.code === 'Enter' || e.code === 'Space') {\n\t\t\t\tclick();\n\t\t\t}\n\t\t});\n\t\treturn header;\n\t})();\n\t#label = (() => {\n\t\tconst slot = document.createElement('slot');\n\t\tthis.#header.appendChild(slot);\n\t\tslot.className = 'label';\n\t\tslot.name = 'label';\n\t\treturn slot;\n\t})();\n\t#trigger = (() => {\n\t\tconst slot = document.createElement('slot');\n\t\tthis.#header.appendChild(slot);\n\t\tslot.name = 'trigger';\n\t\tslot.className = 'trigger-slot';\n\t\tslot.appendChild(document.createElement('span')).className = 'trigger';\n\t\treturn slot;\n\t})();\n\n\t#body = (() => {\n\t\tconst body = document.createElement('section');\n\t\tbody.setAttribute('part', 'main');\n\t\tthis.#shadow.appendChild(body);\n\t\treturn body;\n\t})();\n\t#main = (() => {\n\t\tconst main = document.createElement('main');\n\t\tthis.#body.appendChild(main);\n\t\tmain.appendChild(document.createElement('slot'));\n\t\treturn main;\n\t})();\n\n\n\t#updateSize() {\n\t\tconst vertical = verticalWritingMode.has(getComputedStyle(this).writingMode?.toLowerCase());\n\t\tthis.#body.style.blockSize = `${vertical ? this.#main.clientWidth : this.#main.clientHeight}px`;\n\n\t}\n\tupdateSize() { this.#updateSize(); }\n\t/** @type {ResizeObserver} */\n\t#ro = new ResizeObserver(() => this.#updateSize());\n\t/**\n\t * @returns {void}\n\t */\n\tconnectedCallback() {\n\t\tthis.#ro.observe(this.#main);\n\t}\n\t/**\n\t * @returns {void}\n\t */\n\tdisconnectedCallback() {\n\t\tthis.#ro.unobserve(this.#main);\n\t}\n\t/**\n\t * @returns {void}\n\t */\n\tadoptedCallback() { }\n\t#closeOthersWhenOpen() {\n\t\tconst parent = this.parentElement;\n\t\tif (!parent) { return; }\n\t\tconst style = getComputedStyle(parent).whiteSpace?.toLowerCase() || '';\n\t\tconst pre = style.startsWith('pre') || style === 'break-spaces';\n\t\t/** @type {Node?} */\n\t\tlet node = this;\n\t\t// eslint-disable-next-line no-cond-assign\n\t\twhile (node = node.previousSibling) {\n\t\t\tif (node instanceof Comment) { continue; }\n\t\t\tif (node instanceof Text) {\n\t\t\t\tconst text = node.textContent || '';\n\t\t\t\tif (pre ? text.includes('\\n') : text.replace(/[\\s\\n ]/g, '')) { break; }\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (!(node instanceof Collapse)) { break; }\n\t\t\tif (!node.accordion) { break; }\n\t\t\tnode.open = false;\n\t\t}\n\t\tnode = this;\n\t\t// eslint-disable-next-line no-cond-assign\n\t\twhile (node = node.nextSibling) {\n\t\t\tif (node instanceof Comment) { continue; }\n\t\t\tif (node instanceof Text) {\n\t\t\t\tconst text = node.textContent || '';\n\t\t\t\tif (pre ? text.includes('\\n') : text.replace(/[\\s\\n ]/g, '')) { break; }\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (!(node instanceof Collapse)) { break; }\n\t\t\tif (!node.accordion) { break; }\n\t\t\tnode.open = false;\n\t\t}\n\t}\n\t/**\n\t * @param {string} attrName\n\t * @param {string | null} oldVal\n\t * @param {string | null} newVal\n\t * @returns {void}\n\t * @protected\n\t */\n\tattributeChangedCallback(attrName, oldVal, newVal) {\n\t\tif (oldVal === newVal) { return; }\n\t\tswitch (attrName) {\n\t\t\tcase 'accordion': {\n\t\t\t\tif (newVal === null) { break; }\n\t\t\t\tif (!this.open) { break; }\n\t\t\t\tthis.#closeOthersWhenOpen();\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase 'disabled': {\n\t\t\t\tif (newVal === null) {\n\t\t\t\t\tthis.#header.tabIndex = 0;\n\t\t\t\t} else {\n\t\t\t\t\tthis.#header.removeAttribute('tabindex');\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase 'open': {\n\t\t\t\tif (!this.accordion) { break; }\n\t\t\t\tif (!this.open) { break; }\n\t\t\t\tthis.#closeOthersWhenOpen();\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase 'label': {\n\t\t\t\tthis.#label.innerText = newVal || '';\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n}\n\ntry {\n\tcustomElements.define('nl-collapse', Collapse);\n} catch {}\n\nexport { Collapse as default };\n","/*!\n * 匿龙组件库 @neeloong/components v0.7.0\n * (c) 2023-2024 猛火Fierflame\n * @license MIT\n */\nconst style = `\n:host {\n\tdisplay: contents;\n\tcolor: inherit;\n}\ndiv {\n\tcolor: inherit;\n\twidth: 100%;\n\theight: 100%;\n\tposition: fixed;\n\tinset: 0;\n\tpointer-events: none;\n\tbackground: none;\n\tborder: none;\n\tmargin: 0;\n\tpadding: 0;\n\toverflow: hidden;\n}\nsvg {\n\tcolor: inherit;\n\twidth: 100%;\n\theight: 100%;\n\tposition: fixed;\n\tinset: 0;\n\tpointer-events: none;\n}\n`;\n\nconst hasPopover = typeof HTMLElement.prototype.showPopover === 'function';\n\nlet maskNextId = 0;\n/**\n * @typedef {object} Rect\n * @property {(x: number, y: number, w: number, h: number) => void} setRect\n */\n/**\n *\n * @param {Element} parent\n * @returns {Rect}\n */\nfunction createRect(parent) {\n\tconst svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n\tconst defs = document.createElementNS('http://www.w3.org/2000/svg', 'defs');\n\tconst mask = document.createElementNS('http://www.w3.org/2000/svg', 'mask');\n\tconst whiteRect = document.createElementNS('http://www.w3.org/2000/svg', 'rect');\n\tconst blackRect = document.createElementNS('http://www.w3.org/2000/svg', 'rect');\n\tconst bgRect = document.createElementNS('http://www.w3.org/2000/svg', 'rect');\n\tconst g = document.createElementNS('http://www.w3.org/2000/svg', 'g');\n\tconst rect1 = document.createElementNS('http://www.w3.org/2000/svg', 'rect');\n\tconst rect2 = document.createElementNS('http://www.w3.org/2000/svg', 'rect');\n\tconst rect3 = document.createElementNS('http://www.w3.org/2000/svg', 'rect');\n\tconst rect4 = document.createElementNS('http://www.w3.org/2000/svg', 'rect');\n\n\tconst maskId = `nl-focus-mask:${maskNextId++}`;\n\tsvg.appendChild(defs);\n\tdefs.appendChild(mask);\n\tmask.setAttribute('id', maskId);\n\tmask.appendChild(whiteRect);\n\twhiteRect.setAttribute('x', '0');\n\twhiteRect.setAttribute('y', '0');\n\twhiteRect.setAttribute('width', '100vw');\n\twhiteRect.setAttribute('height', '100vh');\n\twhiteRect.setAttribute('fill', 'white');\n\tmask.appendChild(blackRect);\n\tblackRect.setAttribute('x', '0');\n\tblackRect.setAttribute('y', '0');\n\tblackRect.setAttribute('width', '100vw');\n\tblackRect.setAttribute('height', '100vh');\n\tblackRect.setAttribute('fill', 'black');\n\tsvg.appendChild(bgRect);\n\tbgRect.setAttribute('x', '0');\n\tbgRect.setAttribute('y', '0');\n\tbgRect.setAttribute('width', '100%');\n\tbgRect.setAttribute('height', '100%');\n\tbgRect.setAttribute('fill', 'currentcolor');\n\tbgRect.setAttribute('mask', `url(#${maskId})`);\n\tsvg.appendChild(g);\n\tg.setAttribute('pointer-events', 'auto');\n\tg.setAttribute('fill', 'transparent');\n\tg.appendChild(rect1);\n\trect1.setAttribute('x', '0');\n\trect1.setAttribute('y', '0');\n\trect1.setAttribute('width', '100%');\n\trect1.setAttribute('height', '100%');\n\tg.appendChild(rect2);\n\trect2.setAttribute('x', '0');\n\trect2.setAttribute('y', '0');\n\trect2.setAttribute('width', '100%');\n\trect2.setAttribute('height', '100%');\n\tg.appendChild(rect3);\n\trect3.setAttribute('x', '0');\n\trect3.setAttribute('y', '0');\n\trect3.setAttribute('width', '100%');\n\trect3.setAttribute('height', '100%');\n\tg.appendChild(rect4);\n\trect4.setAttribute('x', '0');\n\trect4.setAttribute('y', '0');\n\trect4.setAttribute('width', '100%');\n\trect4.setAttribute('height', '100%');\n\tparent.appendChild(svg);\n\treturn {\n\t\tsetRect(x, y, w, h) {\n\t\t\tblackRect.setAttribute('x', `${x}`);\n\t\t\tblackRect.setAttribute('y', `${y}`);\n\t\t\tblackRect.setAttribute('width', `${w}`);\n\t\t\tblackRect.setAttribute('height', `${h}`);\n\t\t\trect1.setAttribute('width', `${x}`);\n\t\t\trect2.setAttribute('height', `${y}`);\n\t\t\trect3.setAttribute('x', `${x + w}`);\n\t\t\trect4.setAttribute('y', `${y + h}`);\n\t\t},\n\t};\n}\n\nclass Focus extends HTMLElement {\n\tstatic observedAttributes = ['hidden', 'target', 'x', 'y', 'width', 'height'];\n\tget x() { return parseFloat(this.getAttribute('x') || '') || 0; }\n\tset x(x) {\n\t\tif (x && typeof x === 'number' && Number.isFinite(x)) {\n\t\t\tthis.setAttribute('x', String(x));\n\t\t} else {\n\t\t\tthis.removeAttribute('x');\n\t\t}\n\t}\n\tget y() { return parseFloat(this.getAttribute('y') || '') || 0; }\n\tset y(y) {\n\t\tif (y && typeof y === 'number' && Number.isFinite(y)) {\n\t\t\tthis.setAttribute('y', String(y));\n\t\t} else {\n\t\t\tthis.removeAttribute('y');\n\t\t}\n\t}\n\tget width() { return parseFloat(this.getAttribute('width') || '') || 0; }\n\tset width(width) {\n\t\tif (width && typeof width === 'number' && Number.isFinite(width)) {\n\t\t\tthis.setAttribute('width', String(width));\n\t\t} else {\n\t\t\tthis.removeAttribute('width');\n\t\t}\n\t}\n\tget height() { return parseFloat(this.getAttribute('height') || '') || 0; }\n\tset height(height) {\n\t\tif (height && typeof height === 'number' && Number.isFinite(height)) {\n\t\t\tthis.setAttribute('height', String(height));\n\t\t} else {\n\t\t\tthis.removeAttribute('height');\n\t\t}\n\t}\n\tget target() { return this.getAttribute('target'); }\n\tset target(target) {\n\t\tif (typeof target !== 'string') {\n\t\t\tthis.removeAttribute('target');\n\t\t} else {\n\t\t\tthis.setAttribute('target', target);\n\t\t}\n\t}\n\t#shadow = (() => {\n\t\tconst shadow = this.attachShadow({ mode: 'closed' });\n\t\tshadow.appendChild(document.createElement('style')).textContent = style;\n\t\treturn shadow;\n\t})();\n\t#main = this.#shadow.appendChild(document.createElement('div'));\n\t#svg = createRect(this.#main);\n\t#internals = this.attachInternals();\n\n\t/** @type {Element?} */\n\t#target = null;\n\tget targetElement() { return this.#target; }\n\tset targetElement(el) { this.#target = el instanceof Element ? el : null; }\n\t#open = false;\n\t#mounted = false;\n\t#close() {\n\t\tif (!this.#open) { return; }\n\t\tthis.#main.removeAttribute('popover');\n\t\tthis.#open = false;\n\t}\n\t#show() {\n\t\tif (this.#open || !this.#mounted) { return; }\n\t\tif (hasPopover) {\n\t\t\tconst dialog = this.#main;\n\t\t\tdialog.popover = 'manual';\n\t\t\tdialog.showPopover();\n\t\t}\n\t\tthis.update();\n\t\tthis.#open = true;\n\t}\n\t#getTarget() {\n\t\tconst targetElement = this.#target;\n\t\tif (targetElement) { return targetElement; }\n\t\tconst {target} = this;\n\t\tif (target === '') { return this.parentElement; }\n\t\tif (!target) { return null; }\n\t\ttry { return document.querySelector(target); } catch {}\n\t\treturn null;\n\t}\n\tupdate() {\n\t\tif (!this.#mounted) { return; }\n\t\tconst target = this.#getTarget();\n\t\tconst {\n\t\t\tleft, top, width, height,\n\t\t} = target?.getBoundingClientRect() || {\n\t\t\ttop: this.y, left: this.x, width: this.width, height: this.height,\n\t\t};\n\t\tthis.#svg.setRect(left, top, width, height);\n\t}\n\tconnectedCallback() {\n\t\tthis.#mounted = true;\n\t\tif (this.hidden) { return; }\n\t\tthis.#show();\n\t}\n\tdisconnectedCallback() {\n\t\tthis.#mounted = false;\n\t}\n\t/**\n\t * @param {string} attrName\n\t * @param {string | null} oldVal\n\t * @param {string | null} newVal\n\t * @returns {void}\n\t */\n\tattributeChangedCallback(attrName, oldVal, newVal) {\n\t\tif (!this.#mounted) { return; }\n\t\tif (oldVal === newVal) { return; }\n\t\tswitch (attrName) {\n\t\t\tcase 'hidden': {\n\t\t\t\tif (newVal !== null) {\n\t\t\t\t\tthis.#close();\n\t\t\t\t} else {\n\t\t\t\t\tthis.#show();\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase 'target': case 'x': case 'y': case 'width': case 'height': {\n\t\t\t\tthis.update();\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n}\n\ntry {\n\tcustomElements.define('nl-focus', Focus);\n} catch {}\n\nexport { Focus as default };\n","/*!\n * 匿龙组件库 @neeloong/components v0.7.0\n * (c) 2023-2024 猛火Fierflame\n * @license MIT\n */\nconst style = `\n:host {\n\tdisplay: inline-flex;\n\tflex-direction: row;\n}\n\n:host([column]) {\n\tflex-direction: column;\n}\nslot {\n\tborder-radius: inherit;\n}\n::slotted(*) {\n\tborder-radius: 0;\n\tflex: 1;\n}\n::slotted(:first-child) {\n\tborder-start-start-radius: inherit;\n\tborder-end-start-radius: inherit;\n}\n\n::slotted(:last-child) {\n\tborder-start-end-radius: inherit;\n\tborder-end-end-radius: inherit;\n}\n\n:host([column]) ::slotted(:first-child) {\n\tborder-end-start-radius: 0;\n\tborder-start-end-radius: inherit;\n}\n\n:host([column]) ::slotted(:last-child) {\n\tborder-start-end-radius: 0;\n\tborder-end-start-radius: inherit;\n}\n\n:host([nl-long]) {\n\tdisplay: flex;\n\tinline-size: 100%;\n}\n::slotted([nl-long]) {\n\tflex: 100000;\n}\n`;\n\nclass Group extends HTMLElement {\n\tstatic observedAttributes = ['radius', 'unit'];\n\tget radius() {\n\t\tconst radius = parseFloat(this.getAttribute('radius') || '');\n\t\tif (Number.isNaN(radius)) { return 0; }\n\t\tif (!Number.isFinite(radius)) { return 0; }\n\t\treturn radius < 0 ? -1 : radius;\n\t}\n\tset radius(radius) {\n\t\tif (typeof radius !== 'number' || !Number.isFinite(radius)) {\n\t\t\tthis.removeAttribute('radius');\n\t\t} else {\n\t\t\tthis.setAttribute('radius', radius < 0 ? '-1' : String(radius));\n\t\t}\n\t}\n\tget unit() { return this.getAttribute('unit') || 'px'; }\n\tset unit(unit) {\n\t\tif (unit) {\n\t\t\tthis.setAttribute('unit', unit);\n\t\t} else {\n\t\t\tthis.removeAttribute('unit');\n\t\t}\n\t}\n\tget long() { return this.hasAttribute('nl-long'); }\n\tset long(long) {\n\t\tif (long) {\n\t\t\tthis.setAttribute('nl-long', '');\n\t\t} else {\n\t\t\tthis.removeAttribute('nl-long');\n\t\t}\n\t}\n\tget column() { return this.hasAttribute('column'); }\n\tset column(column) {\n\t\tif (column) {\n\t\t\tthis.setAttribute('column', '');\n\t\t} else {\n\t\t\tthis.removeAttribute('column');\n\t\t}\n\t}\n\n\n\t#style = document.createElement('style');\n\tconstructor() {\n\t\tsuper();\n\t\tconst shadow = this.attachShadow({mode:'closed'});\n\t\tshadow.appendChild(document.createElement('style')).textContent = style;\n\t\tshadow.appendChild(this.#style);\n\t\tshadow.appendChild(document.createElement('slot'));\n\t\tthis.#updateStyle();\n\t}\n\t#updateStyle() {\n\t\tconst {radius} = this;\n\t\tconst value = radius >= 0 ? `${radius}${this.unit}` : '50%';\n\t\tthis.#style.textContent =\n\t\t\t`:host {border-radius: var(--nl-group-radius, ${value})}`;\n\n\t}\n\t/**\n\t * @param {string} attrName\n\t * @param {string | null} oldVal\n\t * @param {string | null} newVal\n\t * @returns {void}\n\t */\n\tattributeChangedCallback(attrName, oldVal, newVal) {\n\t\tif (oldVal === newVal) { return; }\n\t\tswitch (attrName) {\n\t\t\tcase 'radius': case 'unit': {\n\t\t\t\tthis.#updateStyle();\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n}\n\ntry {\n\tcustomElements.define('nl-group', Group);\n} catch {}\n\nexport { Group as default };\n","/*!\n * 匿龙组件库 @neeloong/components v0.7.0\n * (c) 2023-2024 猛火Fierflame\n * @license MIT\n */\nconst style = `\n:host {\n\tdisplay: contents;\n}\ndiv {\n\tdisplay: flex;\n\tflex-wrap: nowrap;\n\tflex-direction: row;\n\talign-items: stretch;\n}\ndiv[hidden] {\n\tdisplay: none;\n}\ndiv slot {\n\tdisplay: inline;\n\tflex: 1;\n}\ndiv::after {\n\tcontent: '';\n\twidth: 0;\n\theight: 0;\n\tbox-sizing: content-box;\n\tborder: transparent solid 0.3em;\n\tborder-inline-start-color: currentColor;\n\tmargin: auto;\n\tmargin-inline-start: 0.3em;\n}\ndialog {\n\tposition: fixed;\n\tmargin: 0;\n\tbox-sizing: border-box;\n\tmax-width: calc(100% - 36px);\n\tmax-height: calc(100% - 36px);\n\tuser-select: none;\n\tpadding: .2em;\n\tborder: 1px solid;\n\toutline: none;\n}\ndiv, dialog ::slotted(*) {\n\tcolor: var(--neeloong-menu-fg, #000);\n\tbackground: var(--neeloong-menu-bg, #FFF);\n}\ndiv.open, div:hover, div:focus, dialog ::slotted(:hover), dialog ::slotted(:focus) {\n\tcolor: var(--neeloong-menu-fg-highlight, #000);\n\tbackground: var(--neeloong-menu-bg-highlight, #6666);\n}\n:host([disabled]) div, dialog ::slotted([disabled]) {\n\tcolor: var(--neeloong-menu-fg-disabled, #AAA);\n\tbackground: var(--neeloong-menu-bg-disabled, #FFF);\n}\n\ndialog::backdrop {\n\tbackground: transparent;\n}\n`;\n\nconst openMenus = new Set();\ndocument.addEventListener('pointerdown', e => {\n\tif (!e.isPrimary) { return; }\n\tconst els = new Set(e.composedPath());\n\tfor (const menu of [...openMenus]) {\n\t\tif (els.has(menu)) { continue; }\n\t\tmenu.close();\n\t}\n});\nconst verticalWritingMode = new Set([\n\t'vertical-lr', 'vertical-rl', 'sideways-lr', 'sideways-rl',\n]);\n\nconst hasPopover = typeof HTMLElement.prototype.showPopover === 'function';\n/**\n *\n * @param {object} option\n * @param {number} option.left\n * @param {number} option.top\n * @param {number} option.width\n * @param {number} option.height\n * @param {boolean} rowVertical\n * @param {boolean} rowReverse\n * @param {boolean} colReverse\n * @returns {[[number, number, number], [number, number, number]]}\n */\nfunction getSize({left, top, width, height}, rowVertical, rowReverse, colReverse) {\n\tconst right = window.innerWidth - left - width;\n\tconst bottom = window.innerHeight - top - height;\n\t/** @type {[[number, number, number], [number, number, number]]} */\n\tconst size = [\n\t\t[left, width, right],\n\t\t[top, height, bottom],\n\t];\n\tif (rowVertical) { size.reverse(); }\n\tif (rowReverse) { size[1].reverse(); }\n\tif (colReverse) { size[0].reverse(); }\n\n\treturn size;\n\n}\nconst directionDefault = ['blockEnd', 'blockStart', 'inlineEnd', 'inlineStart'];\nconst alignDefault = ['start', 'end', 'center'];\n\nconst subMenuDirection = ['inlineEnd', 'inlineStart'];\nconst subMenuAlign = ['start', 'end'];\n\n/**\n *\n * @param {string?} [val]\n * @returns {string[]}\n */\nfunction getDirections(val) {\n\t/** @type {string[]} */\n\tconst direction = [];\n\t/**\n\t *\n\t * @param {string} v\n\t */\n\tfunction add(v) {\n\t\tif (direction.includes(v)) { return; }\n\t\tdirection.push(v);\n\t}\n\tfor (const v of (val || '').replace(/\\n|\\s|-/g, '').toLowerCase().split(/,/)) {\n\t\tif (v === 'inlineend' || v === 'inline') { add('inlineEnd'); }\n\t\tif (v === 'inlinestart' || v === 'inline') { add('inlineStart'); }\n\t\tif (v === 'blockend' || v === 'block') { add('blockEnd'); }\n\t\tif (v === 'blockstart' || v === 'block') { add('blockStart'); }\n\t}\n\treturn direction.length ? direction : directionDefault;\n}\n/**\n *\n * @param {string?} [val]\n * @returns {string[]}\n */\nfunction getAligns(val) {\n\t/** @type {string[]} */\n\tconst align = [];\n\tfor (const v of (val || '').replace(/\\n|\\s|-/g, '').toLowerCase().split(/,/)) {\n\t\tif (!['start', 'end', 'center'].includes(v)) { continue; }\n\t\tif (align.includes(v)) { continue; }\n\t\talign.push(v);\n\t}\n\treturn align.length ? align : alignDefault;\n}\n/**\n *\n * @param {Element} root\n * @returns {[boolean, boolean, boolean]}\n */\nfunction getLayout(root) {\n\tconst style = getComputedStyle(root);\n\tconst writingMode = style.writingMode?.toLowerCase();\n\tconst vertical = verticalWritingMode.has(writingMode);\n\tconst rowReverse = ['vertical-rl', 'sideways-rl'].includes(writingMode);\n\tconst colReverse = style.direction.toLowerCase() === 'rtl' !== (writingMode === 'sideways-lr');\n\treturn [vertical, rowReverse, colReverse];\n}\n\nclass Menu extends HTMLElement {\n\tstatic observedAttributes = ['open', 'hidden', 'target', 'x', 'y', 'direction', 'align', 'mask', 'disabled'];\n\tclose() { this.removeAttribute('open'); }\n\tshow() { this.setAttribute('open', ''); }\n\tget open() { return this.hasAttribute('open'); }\n\tset open(open) { if (open) { this.show(); } else { this.close(); } }\n\tget disabled() { return this.hasAttribute('disabled'); }\n\tset disabled(disabled) {\n\t\tif (disabled) {\n\t\t\tthis.setAttribute('disabled', '');\n\t\t} else {\n\t\t\tthis.removeAttribute('disabled');\n\t\t}\n\t}\n\tget mask() { return this.hasAttribute('mask'); }\n\tset mask(mask) {\n\t\tif (mask) {\n\t\t\tthis.setAttribute('mask', '');\n\t\t} else {\n\t\t\tthis.removeAttribute('mask');\n\t\t}\n\t}\n\tget x() { return parseFloat(this.getAttribute('x') || '') || 0; }\n\tset x(x) {\n\t\tif (x && typeof x === 'number' && Number.isFinite(x)) {\n\t\t\tthis.setAttribute('x', String(x));\n\t\t} else {\n\t\t\tthis.removeAttribute('x');\n\t\t}\n\t}\n\tget y() { return parseFloat(this.getAttribute('y') || '') || 0; }\n\tset y(y) {\n\t\tif (y && typeof y === 'number' && Number.isFinite(y)) {\n\t\t\tthis.setAttribute('y', String(y));\n\t\t} else {\n\t\t\tthis.removeAttribute('y');\n\t\t}\n\t}\n\tget target() { return this.getAttribute('target'); }\n\tset target(target) {\n\t\tif (typeof target !== 'string') {\n\t\t\tthis.removeAttribute('target');\n\t\t} else {\n\t\t\tthis.setAttribute('target', target);\n\t\t}\n\t}\n\t#direction = directionDefault;\n\t#align = alignDefault;\n\tget direction() { return [...this.#direction]; }\n\tset direction(v) {\n\t\tconst direction = Array.isArray(v) ? v.filter(Boolean).join(',') : v;\n\t\tif (direction !== null && typeof direction !== 'string') { return; }\n\t\tif (!direction) {\n\t\t\tthis.removeAttribute('direction');\n\t\t} else {\n\t\t\tthis.setAttribute('direction', direction);\n\t\t}\n\t}\n\tget align() { return [...this.#align]; }\n\tset align(v) {\n\t\tconst align = Array.isArray(v) ? v.filter(Boolean).join(',') : v;\n\t\tif (align !== null && typeof align !== 'string') { return; }\n\t\tif (!align) {\n\t\t\tthis.removeAttribute('direction');\n\t\t} else {\n\t\t\tthis.setAttribute('direction', align);\n\t\t}\n\t}\n\n\t#label = document.createElement('div');\n\t#dialog = document.createElement('dialog');\n\t#internals = this.attachInternals();\n\t/** @type {Menu} */\n\t#root = this;\n\tconstructor() {\n\t\tsuper();\n\t\tconst shadow = this.attachShadow({ mode: 'closed' });\n\t\tshadow.appendChild(document.createElement('style')).textContent = style;\n\n\t\tconst label = shadow.appendChild(this.#label);\n\t\tlabel.appendChild(document.createElement('slot')).name = 'label';\n\n\t\tlabel.addEventListener('pointerenter', e=> {\n\t\t\tif (!this.#parentMenu) { return; }\n\t\t\tif (!e.isPrimary) { return; }\n\t\t\tthis.#show();\n\t\t});\n\t\tlabel.addEventListener('click', e=> { e.stopPropagation(); });\n\n\t\tconst dialog = shadow.appendChild(this.#dialog);\n\t\tdialog.setAttribute('part', 'menu');\n\t\tconst dialogSlot = dialog.appendChild(document.createElement('slot'));\n\t\tdialog.addEventListener('click', e => {\n\t\t\tif (this.#parentMenu) { return; }\n\t\t\tconst list = e.composedPath();\n\t\t\tconst index = list.indexOf(dialog);\n\t\t\tif (index >= 0 && list.slice(0, index).find(v => v instanceof Element && v.getAttribute('disabled') !== null || v instanceof HTMLHRElement)) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis.close();\n\t\t});\n\t\tdialog.addEventListener('close', e=> { this.close(); });\n\t\tdialogSlot.addEventListener('pointermove', e => {\n\t\t\tif (!e.isPrimary) { return; }\n\t\t\tconst currentSubMenu = this.#currentSubMenu;\n\t\t\tif (!currentSubMenu) { return; }\n\t\t\tif (e.composedPath().includes(currentSubMenu)) { return; }\n\t\t\tcurrentSubMenu.#close();\n\t\t});\n\t\tdialog.addEventListener('scroll', e=> {\n\t\t\tif (!this.#mounted) { return; }\n\t\t\tconst currentSubMenu = this.#currentSubMenu;\n\t\t\tif (currentSubMenu) {\n\t\t\t\tcurrentSubMenu.#update();\n\t\t\t}\n\t\t});\n\t\tthis.addEventListener('contextmenu', e=> {\n\t\t\te.stopPropagation();\n\t\t\te.preventDefault();\n\t\t}, {capture: true});\n\t}\n\n\t/** @type {Element?} */\n\t#target = null;\n\tget targetElement() { return this.#target; }\n\tset targetElement(el) { this.#target = el instanceof Element ? el : null; }\n\t#open = false;\n\t#mounted = false;\n\t/** @type {Menu?} */\n\t#currentSubMenu = null;\n\t/** @type {Menu?} */\n\t#parentMenu = null;\n\tget parentMenu() { return this.#parentMenu; }\n\t#close() {\n\t\tif (!this.#open) { return; }\n\t\tconst subMenu = this.#currentSubMenu;\n\t\tif (subMenu) { subMenu.#close(); }\n\t\tconst parent = this.#parentMenu;\n\t\tif (parent && parent.#currentSubMenu === this) {\n\t\t\tparent.#currentSubMenu = null;\n\t\t} else {\n\t\t\topenMenus.delete(this);\n\t\t}\n\t\tconst dialog = this.#dialog;\n\t\tdialog.close();\n\n\t\t// @ts-ignore\n\t\tthis.#internals.states?.delete('--open');\n\t\tthis.#label.classList.remove('open');\n\t\tdialog.removeAttribute('popover');\n\t\tthis.#open = false;\n\t}\n\t#show() {\n\t\tif (this.#open || !this.#mounted) { return; }\n\t\tconst parent = this.#parentMenu;\n\t\tconst dialog = this.#dialog;\n\t\tif (parent) {\n\t\t\tif (!parent.#open || this.disabled) { return; }\n\t\t\tconst currentSubMenu = parent.#currentSubMenu;\n\t\t\tif (currentSubMenu) {\n\t\t\t\tcurrentSubMenu.#close();\n\t\t\t}\n\t\t\tparent.#currentSubMenu = this;\n\t\t\tif (hasPopover) {\n\t\t\t\tdialog.popover = 'manual';\n\t\t\t\tdialog.showPopover();\n\t\t\t} else {\n\t\t\t\tdialog.show();\n\t\t\t}\n\t\t} else {\n\t\t\tthis.#updateLayout();\n\t\t\tconst subMenu = this.#currentSubMenu;\n\t\t\tif (subMenu) { subMenu.#close(); }\n\t\t\tif (hasPopover && !this.hasAttribute('mask')) {\n\t\t\t\tdialog.popover = 'manual';\n\t\t\t\tdialog.showPopover();\n\t\t\t\topenMenus.add(this);\n\t\t\t} else {\n\t\t\t\tdialog.showModal();\n\t\t\t}\n\t\t}\n\t\tthis.#label.classList.add('open');\n\t\t// @ts-ignore\n\t\tthis.#internals.states?.add('--open');\n\t\trequestAnimationFrame(() => { if (this.#mounted) { this.#update(); } });\n\t\tthis.#open = true;\n\t}\n\t#rowVertical = false;\n\t#rowReverse = false;\n\t#colReverse = false;\n\t#getTarget() {\n\t\tif (this.#parentMenu) { return this.#label; }\n\t\tconst targetElement = this.#target;\n\t\tif (targetElement) { return targetElement; }\n\t\tconst {target} = this;\n\t\tif (target === '') { return this.parentElement; }\n\t\tif (!target) { return null; }\n\t\ttry { return document.querySelector(target); } catch {}\n\t\treturn null;\n\t}\n\t#update() {\n\t\tif (!this.#mounted) { return; }\n\t\tconst dialog = this.#dialog;\n\t\tconst target = this.#getTarget();\n\t\tconst root = this.#root;\n\t\tconst rowVertical = root.#rowVertical;\n\t\tconst size = getSize(\n\t\t\ttarget?.getBoundingClientRect() || {top: this.y, left: this.x, width: 0, height: 0},\n\t\t\troot.#rowVertical,\n\t\t\troot.#rowReverse,\n\t\t\troot.#colReverse,\n\t\t);\n\t\tconst [[inlineStart, inlineSize, inlineEnd], [blockStart, blockSize, blockEnd]] = size;\n\t\tconst [d, s] = this.#parentMenu ? [subMenuDirection, subMenuAlign] : [this.#direction, this.#align];\n\t\tconst rect = dialog.getBoundingClientRect();\n\t\tconst inline = rowVertical ? rect.height : rect.width;\n\t\tconst block = rowVertical ? rect.width : rect.height;\n\t\t/** @type {[string, number, number][]} */\n\t\tconst dirs = d.map(d => {\n\t\t\tswitch (d) {\n\t\t\t\tcase 'blockStart': return [d, blockStart / block, 1];\n\t\t\t\tcase 'blockEnd': return [d, blockEnd / block, 1];\n\t\t\t\tcase 'inlineStart': return [d, 1, inlineStart / inline];\n\t\t\t\tdefault: return ['inlineEnd', 1, inlineEnd / inline];\n\t\t\t}\n\t\t});\n\n\t\tconst [dir] = dirs.reduce((r, d) => {\n\t\t\tif (r[1] < 1 && d[1] < 1) { return r[1] >= d[1] ? r : d; }\n\t\t\tif (r[1] >= 1 && d[1] < 1) { return r; }\n\t\t\tif (d[1] >= 1 && r[1] < 1) { return d; }\n\t\t\tif (r[2] >= 1 || r[2] >= d[2]) { return r; }\n\t\t\treturn d;\n\t\t});\n\t\tconst blockDir = dir === 'blockEnd' || dir === 'blockStart';\n\t\tif (blockDir) { size.reverse(); }\n\t\tconst [[inlineStartX, inlineSizeX, inlineEndX], [blockStartX, blockSizeX, blockEndX]] = size;\n\t\tconst [rowSize, colSize] = blockDir ? [inline, block] : [block, inline];\n\t\tconst align = s.find(a => a === 'start' ? blockSizeX + blockEndX > rowSize : a === 'end' ? blockSizeX + blockStartX > rowSize : true) || '';\n\n\t\tlet insetInlineStart = dir === 'inlineStart' || dir === 'blockStart' ? inlineStartX - colSize : inlineStartX + inlineSizeX;\n\t\tlet insetBlockStart = 0;\n\t\tswitch (align) {\n\t\t\tcase 'start':\n\t\t\t\tinsetBlockStart = blockStartX;\n\t\t\t\tbreak;\n\t\t\tcase 'end':\n\t\t\t\tinsetBlockStart = blockStartX + blockSizeX - rowSize;\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tinsetBlockStart = Math.max(18, Math.min(blockStartX + blockSizeX / 2 - rowSize / 2, blockStartX + blockSizeX + blockEndX - 18 - rowSize));\n\t\t\t\tbreak;\n\t\t}\n\n\t\tif (blockDir) {\n\t\t\t[insetInlineStart, insetBlockStart] = [insetBlockStart, insetInlineStart];\n\t\t}\n\t\tdialog.style.insetBlockStart = `${insetBlockStart}px`;\n\t\tdialog.style.insetInlineStart = `${insetInlineStart}px`;\n\n\t\tconst currentSubMenu = this.#currentSubMenu;\n\t\tif (!currentSubMenu) { return; }\n\t\tcurrentSubMenu.#update();\n\t}\n\tupdate() {\n\t\tif (!this.#mounted) { return; }\n\t\treturn this.#update();\n\n\t}\n\t#updateLayout() {\n\t\tconst [rowVertical, rowReverse, colReverse] = getLayout(this);\n\t\tthis.#rowVertical = rowVertical;\n\t\tthis.#rowReverse = rowReverse;\n\t\tthis.#colReverse = colReverse;\n\t}\n\tconnectedCallback() {\n\t\tthis.#mounted = true;\n\t\tconst parent = this.parentNode;\n\t\tconst parentMenu = parent instanceof Menu ? parent : null;\n\t\tthis.#parentMenu = parentMenu;\n\t\tthis.#root = parentMenu ? parentMenu.#root : this;\n\n\t\tthis.#label.hidden = !parentMenu;\n\t\tconst open = !this.hidden && (parentMenu ? parentMenu.#open : false);\n\t\tif (open) {\n\t\t\tthis.#show();\n\t\t}\n\t}\n\tdisconnectedCallback() {\n\t\tthis.close();\n\t\tthis.#root = this;\n\t\tthis.#mounted = false;\n\t\tthis.#parentMenu = null;\n\t}\n\t/**\n\t * @param {string} attrName\n\t * @param {string | null} oldVal\n\t * @param {string | null} newVal\n\t * @returns {void}\n\t */\n\tattributeChangedCallback(attrName, oldVal, newVal) {\n\t\tif (!this.#mounted) { return; }\n\t\tif (oldVal === newVal) { return; }\n\t\tswitch (attrName) {\n\t\t\tcase 'disabled': {\n\t\t\t\tif (this.#mounted && this.open && newVal !== null) {\n\t\t\t\t\tthis.close();\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase 'open': {\n\t\t\t\tif (!this.#parentMenu && !this.hidden) {\n\t\t\t\t\tif (newVal === null) {\n\t\t\t\t\t\tthis.#close();\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.#show();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase 'mask': {\n\t\t\t\tif (newVal !== null) {\n\t\t\t\t\tconst dialog = this.#dialog;\n\t\t\t\t\tif (dialog.getAttribute('popover') !== null) {\n\t\t\t\t\t\tdialog.removeAttribute('popover');\n\t\t\t\t\t\tthis.close();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase 'hidden': {\n\t\t\t\tif (newVal !== null) {\n\t\t\t\t\tthis.#close();\n\t\t\t\t} else if (this.open && !this.#parentMenu) {\n\t\t\t\t\tthis.#show();\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase 'direction': {\n\t\t\t\tthis.#direction = getDirections(newVal);\n\t\t\t\tif (this.#mounted && !this.#parentMenu) { this.#update(); }\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase 'align': {\n\t\t\t\tthis.#align = getAligns(newVal);\n\t\t\t\tif (this.#mounted && !this.#parentMenu) { this.#update(); }\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase 'target': case 'x': case 'y': {\n\t\t\t\tif (this.#mounted && !this.#parentMenu) { this.#update(); }\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n}\n\ntry {\n\tcustomElements.define('nl-menu', Menu);\n} catch {}\n\nexport { Menu as default };\n","/*!\n * 匿龙组件库 @neeloong/components v0.7.0\n * (c) 2023-2024 猛火Fierflame\n * @license MIT\n */\nconst style = `\n:host {\n\ttransition-property: none;\n\ttransition-duration: .5s;\n\tdisplay: contents;\n\tinline-size: fit-content;\n\tblock-size: fit-content;\n\tcolor: canvastext;\n\tbackground-color: canvas;\n\tborder: solid;\n\tpadding: 0.25em;\n\twriting-mode: inherit;\n}\nsection {\n\tinline-size: inherit;\n\tblock-size: inherit;\n\tbackground: inherit;\n\tborder: inherit;\n\tborder-radius: inherit;\n\tcolor: inherit;\n\tpadding: inherit;\n\tposition: fixed;\n\tinset: auto;\n\tinset-inline: 0;\n\tmargin-block: 0;\n\tmargin-inline: auto;\n\toverflow: auto;\n\ttransition-property: opacity;\n\ttransition-duration: inherit;\n\topacity: 0;\n\tdisplay: none;\n\tz-index: 9999999999999999999999;\n}\nsection.open {\n\topacity: 1;\n}\n.shown {\n\tdisplay: flex;\n\ttransition-property: opacity, inset-block-start;\n\talign-items: center;\n\tflex-wrap: nowrap;\n\tflex-direction: row;\n}\n\nslot {\n\tdisplay: block;\n\tflex: 1;\n}\n\n.close {\n\tblock-size: 1em;\n\tinline-size: 1em;\n\tdisplay: none;\n\tcursor: pointer;\n\ttransition: color .5s;\n\tposition: relative;\n\tline-height: 1em;\n\tborder-radius: 100%;\n\toverflow: hidden;\n}\n:host([closable]) .close {\n\tdisplay: block;\n}\n.close::before,\n.close::after {\n\tcontent: '';\n\tposition: absolute;\n\tdisplay: inline-block;\n\tinline-size: 80%;\n\tblock-size: 5%;\n\tbackground: currentColor;\n\tinset: 0;\n\tmargin: auto;\n}\n.close::before {\n\ttransform: rotate(45deg);\n}\n.close::after {\n\ttransform: rotate(-45deg);\n}\n\n`;\n/**\n * @typedef {object} Handler\n * @property {HTMLElement} element\n */\n\n/** @type {Handler[]} */\nconst messages = [];\n\n/**\n *\n * @param {Element} root\n * @returns {number} 上 左 右 下\n */\nfunction getPos(root) {\n\tconst writingMode = getComputedStyle(root).writingMode?.toLowerCase();\n\tif (['vertical-lr', 'sideways-lr'].includes(writingMode)) { return 1; }\n\tif (['vertical-rl', 'sideways-rl'].includes(writingMode)) { return 2; }\n\treturn 0;\n}\n/**\n *\n */\nfunction update() {\n\tconst offset = [0, 0, 0, 0];\n\tfor (const {element} of messages) {\n\t\tconst pos = getPos(element);\n\t\tconst openState = element.classList.contains('open');\n\t\tif (openState) { offset[pos] += 20; }\n\t\telement.style.insetBlockStart = `${offset[pos]}px`;\n\t\tif (!openState) { continue; }\n\t\toffset[pos] += pos % 3 ? element.clientWidth : element.clientHeight;\n\t}\n}\nconst resizeObserver = new ResizeObserver(function() { update(); });\n\nclass Message extends HTMLElement {\n\tstatic observedAttributes = ['open', 'hidden', 'duration'];\n\n\tget open() { return this.hasAttribute('open'); }\n\tset open(open) {\n\t\tif (open) {\n\t\t\tthis.setAttribute('open', '');\n\t\t} else {\n\t\t\tthis.removeAttribute('open');\n\t\t}\n\t}\n\n\tget closable() { return this.hasAttribute('closable'); }\n\tset closable(closable) {\n\t\tif (closable) {\n\t\t\tthis.setAttribute('closable', '');\n\t\t} else {\n\t\t\tthis.removeAttribute('closable');\n\t\t}\n\t}\n\tget duration() {\n\t\tconst duration = parseFloat(this.getAttribute('duration') || '');\n\t\tif (Number.isNaN(duration)) { return 1.5; }\n\t\tif (duration <= 0) { return Infinity; }\n\t\tif (!Number.isFinite(duration)) { return 1.5; }\n\t\treturn duration;\n\t}\n\tset duration(duration) {\n\t\tif (typeof duration !== 'number' || !Number.isFinite(duration)) {\n\t\t\tthis.removeAttribute('duration');\n\t\t} else if (duration <= 0 || !Number.isFinite(duration)) {\n\t\t\tthis.setAttribute('duration', `0`);\n\t\t} else {\n\t\t\tthis.setAttribute('duration', String(duration));\n\t\t}\n\t}\n\n\n\t#style = document.createElement('style');\n\t#main = document.createElement('section');\n\t/** @type {Handler} */\n\t#handler = {element: this.#main};\n\t#mounted = false;\n\t/** @type {NodeJS.Timeout?} */\n\t#duration = null;\n\t#internals = this.attachInternals();\n\tconstructor() {\n\t\tsuper();\n\t\tconst shadow = this.attachShadow({mode:'closed'});\n\t\tshadow.appendChild(document.createElement('style')).textContent = style;\n\t\tshadow.appendChild(this.#style);\n\t\tconst main = shadow.appendChild(this.#main);\n\t\tmain.popover = 'manual';\n\t\tmain.setAttribute('part', 'message');\n\t\tmain.appendChild(document.createElement('slot')).setAttribute('part', 'slot');\n\t\tconst close = main.appendChild(document.createElement('div'));\n\t\tclose.className = 'close';\n\t\tclose.addEventListener('click', e => { this.#close(e); });\n\t\tclose.setAttribute('part', 'close');\n\t\tclose.tabIndex = 0;\n\t\tclose.addEventListener('keydown', e => {\n\t\t\tif (!['Enter', 'Space'].includes(e.code)) { return; }\n\t\t\tthis.#close(e);\n\t\t});\n\t\tmain.addEventListener('transitionend', e => {\n\t\t\tif (e.propertyName !== 'opacity') { return; }\n\t\t\tif (main.classList.contains('open')) { return; }\n\t\t\tthis.#hidePopover();\n\t\t});\n\t}\n\t/**\n\t * @param {Event} e\n\t */\n\t#close(e) {\n\t\tif (e?.defaultPrevented) { return; }\n\t\tif (!this.open) { return; }\n\t\tif (!this.dispatchEvent(new Event('beforeclose', {cancelable: true}))) { return; }\n\t\tthis.open = false;\n\t\tthis.dispatchEvent(new Event('close'));\n\t}\n\t#shown = false;\n\t#clearTimeout() {\n\t\tconst duration = this.#duration;\n\t\tif (duration === null) { return; }\n\t\tclearTimeout(duration);\n\t\tthis.#duration = null;\n\n\t}\n\t#setTimeout() {\n\t\tthis.#clearTimeout();\n\t\tconst {duration} = this;\n\t\tif (duration === Infinity) { return; }\n\t\tthis.#duration = setTimeout(() => {\n\t\t\tthis.#duration = null;\n\t\t\tthis.open = false;\n\t\t}, duration * 1000);\n\t}\n\t#show() {\n\t\tif (this.#shown) { return; }\n\t\tthis.#shown = true;\n\t\tlet inset = 0;\n\t\tconst pos = getPos(this.#main);\n\t\tfor (const {element} of messages) {\n\t\t\tif (!element.classList.contains('open')) { continue; }\n\t\t\tif (getPos(element) !== pos) { continue; }\n\t\t\tinset += (pos % 3 ? element.clientWidth : element.clientHeight) + 20;\n\t\t}\n\t\tconst main = this.#main;\n\t\tmain.style.insetBlockStart = `${inset}px`;\n\t\tmain.showPopover?.();\n\t\tmain.classList.add('shown');\n\t\t// @ts-ignore\n\t\tthis.#internals.states?.add('--shown');\n\t\tmain.setAttribute('part', 'message shown');\n\t\trequestAnimationFrame(() => {\n\t\t\trequestAnimationFrame(() => {\n\t\t\t\tif (!this.#shown) { return; }\n\t\t\t\tif (!main.classList.contains('shown')) { return; }\n\t\t\t\tmain.classList.add('open');\n\t\t\t\t// @ts-ignore\n\t\t\t\tthis.#internals.states?.add('--open');\n\t\t\t\tthis.#setTimeout();\n\t\t\t\tresizeObserver.observe(main);\n\t\t\t\tmessages.push(this.#handler);\n\t\t\t\tupdate();\n\t\t\t});\n\t\t});\n\t}\n\t#remove() {\n\t\tconst index = messages.indexOf(this.#handler);\n\t\tif (index < 0) { return; }\n\t\tmessages.splice(index, 1);\n\t\tif (index >= messages.length) { return; }\n\t\tupdate();\n\t}\n\t#hide() {\n\t\tif (!this.#shown) { return; }\n\t\tthis.#shown = false;\n\t\tthis.#clearTimeout();\n\t\tconst main = this.#main;\n\t\tmain.classList.remove('open');\n\t\t// @ts-ignore\n\t\tthis.#internals.states?.delete('--open');\n\t\tresizeObserver.unobserve(main);\n\t\tupdate();\n\t}\n\t#hidePopover() {\n\t\tthis.#remove();\n\t\tconst main = this.#main;\n\t\tmain.hidePopover?.();\n\t\t// @ts-ignore\n\t\tthis.#internals.states?.delete('--shown');\n\t\tmain.classList.remove('shown');\n\t\tmain.setAttribute('part', 'message');\n\t}\n\tconnectedCallback() {\n\t\tthis.#mounted = true;\n\t\tif (!this.hidden && this.open) {\n\t\t\tthis.#show();\n\t\t}\n\t}\n\tdisconnectedCallback() {\n\t\tthis.#mounted = false;\n\t\tthis.#hide();\n\t\tthis.#hidePopover();\n\t}\n\t/**\n\t * @param {string} attrName\n\t * @param {string | null} oldVal\n\t * @param {string | null} newVal\n\t * @returns {void}\n\t */\n\tattributeChangedCallback(attrName, oldVal, newVal) {\n\t\tif (oldVal === newVal) { return; }\n\t\tswitch (attrName) {\n\t\t\tcase 'hidden': case 'open': {\n\t\t\t\tif (this.#mounted) {\n\t\t\t\t\tif (!this.hidden && this.open) {\n\t\t\t\t\t\tthis.#show();\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.#hide();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase 'duration': {\n\t\t\t\tthis.#setTimeout();\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n}\n\ntry {\n\tcustomElements.define('nl-message', Message);\n} catch {}\n\nexport { Message as default };\n","/*!\n * 匿龙组件库 @neeloong/components v0.7.0\n * (c) 2023-2024 猛火Fierflame\n * @license MIT\n */\nconst style = `\n:host {\n\tdisplay: none;\n}\n:host([open]) {\n\tdisplay: contents;\n}\n:host([open][hidden]) {\n\tdisplay: none;\n}\ndialog {\n\tposition: fixed;\n\tmax-block-size: 100%;\n\tmax-inline-size: 100%;\n\tinline-size: 100%;\n\tborder: none;\n\tbackground: none;\n\toutline: none;\n\tpadding: 0;\n}\ndialog::backdrop {\n\tbackground: none;\n}\n:host([mask]) dialog::backdrop {\n\tbackground: rgba(48,48,48,0.5);\n}\n.ok:after {\n\tcontent: '确认';\n}\n.cancel {\n\tdisplay: none;\n}\n.cancel:after {\n\tcontent: '取消';\n}\n:host([cancelable]) .cancel {\n\tdisplay: inline-block;\n}\nsection {\n\tright: 0;\n\tleft: 0;\n\tpadding: 1em;\n\tbackground: #FFF;\n\tbox-sizing: content-box;\n\tbox-shadow: 5px 5px 10px -4px rgba(0,0,0,.12),\n\t5px -5px 10px -4px rgba(0,0,0,.12),\n\t-5px 5px 10px -4px rgba(0,0,0,.12),\n\t-5px -5px 10px -4px rgba(0,0,0,.12)\n}\n.center {\n\tpadding-block: 6px;\n}\n.inline-start {\n\tblock-size: 100%;\n\tmargin-inline-start: 0;\n}\n.inline-end {\n\tblock-size: 100%;\n\tmargin-inline-end: 0;\n}\n.block-start {\n\tmargin-block-start: 0;\n}\n.block-end {\n\tmargin-block-end: 0;\n}\n.center section, .inline-start section, .inline-end section {\n\tdisplay: flex;\n\tflex-direction: column;\n\tmin-block-size: calc(100% - 2em);\n\tinline-size: var(--nl-modal-size, 640px);\n\tmax-inline-size: calc(100vi - 2em - 16px);\n}\n.block-start section, .block-end section {\n\tdisplay: flex;\n\tflex-direction: column;\n\tblock-size: var(--nl-modal-size, 640px);\n\tmax-block-size: calc(100vb - 2em - 16px);\n}\n.center section {\n\tmargin: auto;\n}\n.inline-start section {\n\tmargin-inline-end: auto;\n}\n.inline-end section {\n\tmargin-inline-start: auto;\n}\n.block-start section {\n\tmargin-block-end: auto;\n}\n.block-end section {\n\tmargin-block-start: auto;\n}\n.inline-start section slot.body, .inline-end section slot.body {\n\tflex: 1;\n\tdisplay: block;\n}\n.block-start section slot.body, .block-end section slot.body {\n\tflex: 1;\n\tdisplay: block;\n\toverflow: auto;\n}\n:host([round]) .center section {\n\tborder-radius: 1em;\n}\n:host([round]) .inline-start section {\n\tborder-start-end-radius: 1em;\n\tborder-end-end-radius: 1em;\n}\n:host([round]) .inline-end section {\n\tborder-start-start-radius: 1em;\n\tborder-end-start-radius: 1em;\n}\n:host([round]) .block-start section {\n\tborder-end-start-radius: 1em;\n\tborder-end-end-radius: 1em;\n}\n:host([round]) .block-end section {\n\tborder-start-start-radius: 1em;\n\tborder-start-end-radius: 1em;\n}\n\n\n.close {\n\tblock-size: 40px;\n\tinline-size: 40px;\n\tdisplay: none;\n\tcursor: pointer;\n\ttransition: color .5s;\n\tposition: relative;\n\tline-height: 40px;\n}\n:host([closable]) .close {\n\tdisplay: inline-block;\n}\n.close-icon {\n\toverflow: hidden;\n}\n.close-icon::before,\n.close-icon::after {\n\tcontent: '';\n\tposition: absolute;\n\tdisplay: inline-block;\n\tinline-size: 60%;\n\tblock-size: 5%;\n\tbackground: currentColor;\n\tinset: 0;\n\tmargin: auto;\n}\n.close-icon::before {\n\ttransform: rotate(45deg);\n\n}\n.close-icon::after {\n\ttransform: rotate(-45deg);\n\n}\n.close-icon:hover {\n\tcolor: #88F;\n}\n\nheader {\n\tposition: sticky;\n\ttext-align: start;\n\tinset-block-start: 0;\n\tbackground: inherit;\n\tmargin-block-start: -1em;\n\tmargin-inline: -1em;\n\tpadding-inline: 1em;\n\tpadding-block-start: 1em;\n\tpadding-block-end: 1em;\n\tborder-start-start-radius: inherit;\n\tborder-start-end-radius: inherit;\n\tdisplay: flex;\n}\n.empty {\n\tpadding-block: 0;\n}\n[name=header] {\n\tdisplay: block;\n\tflex: 1;\n\tline-height: 40px;\n}\nfooter {\n\ttext-align: end;\n\tposition: sticky;\n\tinset-block-end: 0;\n\tbackground: inherit;\n\tmargin-block-end: -1em;\n\tmargin-inline: -1em;\n\tpadding-inline: 1em;\n\tpadding-block-start: 1em;\n\tpadding-block-end: 1em;\n\tborder-end-start-radius: inherit;\n\tborder-end-end-radius: inherit;\n}\n\n`;\n\n/**\n *\n * @param {HTMLElement} el\n * @param {string} name\n * @param {boolean} value\n */\nfunction setBoolAttribute(el, name, value) {\n\tif (value) {\n\t\tel.setAttribute(name, '');\n\t} else {\n\t\tel.removeAttribute(name);\n\t}\n\n}\nclass Modal extends HTMLElement {\n\tstatic observedAttributes = ['hidden', 'open', 'disabled', 'size', 'position'];\n\tget open() { return this.hasAttribute('open'); }\n\tset open(open) { setBoolAttribute(this, 'open', open); }\n\tget cancelable() { return this.hasAttribute('cancelable'); }\n\tset cancelable(cancelable) { setBoolAttribute(this, 'cancelable', cancelable); }\n\tget closable() { return this.hasAttribute('closable'); }\n\tset closable(closable) { setBoolAttribute(this, 'closable', closable); }\n\tget mask() { return this.hasAttribute('mask'); }\n\tset mask(mask) { setBoolAttribute(this, 'mask', mask); }\n\tget maskClosable() { return this.hasAttribute('mask-closable'); }\n\tset maskClosable(maskClosable) { setBoolAttribute(this, 'mask-closable', maskClosable); }\n\tget disabled() { return this.hasAttribute('disabled'); }\n\tset disabled(disabled) { setBoolAttribute(this, 'disabled', disabled); }\n\tget size() { return this.getAttribute('size') || ''; }\n\tset size(size) {\n\t\tif (size) {\n\t\t\tthis.setAttribute('size', size);\n\t\t} else {\n\t\t\tthis.removeAttribute('size');\n\t\t}\n\t}\n\tget position() {\n\t\tconst position = this.getAttribute('position') || '';\n\t\tif (['block-start', 'block-end', 'inline-start', 'inline-end'].includes(position)) { return position; }\n\t\treturn 'center';\n\t}\n\tset position(position) {\n\t\tif (position) {\n\t\t\tthis.setAttribute('position', position);\n\t\t} else {\n\t\t\tthis.removeAttribute('position');\n\t\t}\n\t}\n\n\tcancel () {\n\t\tif (this.disabled) { return; }\n\t\tif (!this.open) { return; }\n\t\tif (!this.dispatchEvent(new Event('cancel', {cancelable: true}))) { return; }\n\t\tthis.open = false;\n\t\tthis.dispatchEvent(new Event('close'));\n\t}\n\tok() {\n\t\tif (this.disabled) { return; }\n\t\tif (!this.open) { return; }\n\t\tif (!this.dispatchEvent(new Event('ok', {cancelable: true}))) { return; }\n\t\tthis.open = false;\n\t\tthis.dispatchEvent(new Event('close'));\n\t}\n\t#main = document.createElement('section');\n\t#dialog = document.createElement('dialog');\n\t#okButton = document.createElement('button');\n\t#cancelButton = document.createElement('button');\n\tconstructor() {\n\t\tsuper();\n\t\tconst cancel = () => this.cancel();\n\t\tconst shadow = this.attachShadow({mode:'closed'});\n\t\tshadow.appendChild(document.createElement('style')).textContent = style;\n\n\t\tthis.#dialog.autofocus = false;\n\t\tconst dialog = shadow.appendChild(this.#dialog);\n\t\tdialog.className = 'center';\n\n\t\tdialog.addEventListener('keydown', e =>{\n\t\t\tif (e.defaultPrevented) { return; }\n\t\t\tif (e.code !== 'Escape') { return; }\n\t\t\te.preventDefault();\n\t\t\tcancel();\n\t\t});\n\t\tdialog.addEventListener('click', e =>{\n\t\t\tif (e.target !== e.currentTarget) { return; }\n\t\t\tif (!this.maskClosable) { return; }\n\t\t\tcancel();\n\t\t});\n\t\tconst main = dialog.appendChild(this.#main);\n\t\tmain.style.inlineSize = this.getAttribute('size') || '';\n\n\n\t\tconst header = main.appendChild(document.createElement('header'));\n\t\tconst headerSlot = header.appendChild(document.createElement('slot'));\n\t\theaderSlot.name = 'header';\n\t\theaderSlot.addEventListener('slotchange', e=> {\n\t\t\tif (headerSlot.assignedNodes().length) {\n\t\t\t\theader.classList.remove('empty');\n\t\t\t} else {\n\t\t\t\theader.classList.add('empty');\n\t\t\t}\n\t\t});\n\t\tif (headerSlot.assignedNodes().length) {\n\t\t\theader.classList.remove('empty');\n\t\t} else {\n\t\t\theader.classList.add('empty');\n\t\t}\n\t\tconst close = header.appendChild(document.createElement('slot'));\n\t\tclose.className = 'close';\n\t\tclose.name = 'close';\n\t\tclose.addEventListener('click', cancel);\n\t\tclose.addEventListener('slotchange', e=> {\n\t\t\tif (close.assignedNodes().length) {\n\t\t\t\tclose.classList.remove('close-icon');\n\t\t\t} else {\n\t\t\t\tclose.classList.add('close-icon');\n\t\t\t}\n\t\t});\n\t\tif (close.assignedNodes().length) {\n\t\t\tclose.classList.remove('close-icon');\n\t\t} else {\n\t\t\tclose.classList.add('close-icon');\n\t\t}\n\n\t\tmain.appendChild(document.createElement('slot')).className = 'body';\n\n\n\t\tconst footer = main.appendChild(document.createElement('footer'));\n\t\tconst footerSlot = footer.appendChild(document.createElement('slot'));\n\t\tfooterSlot.name = 'footer';\n\t\tconst {disabled} = this;\n\t\tconst okButton = footerSlot.appendChild(this.#okButton);\n\t\tokButton.addEventListener('click', () => this.ok());\n\t\tokButton.className = 'ok';\n\t\tokButton.disabled = disabled;\n\t\tconst cancelButton = footerSlot.appendChild(this.#cancelButton);\n\t\tcancelButton.addEventListener('click', cancel);\n\t\tcancelButton.className = 'cancel';\n\t\tcancelButton.disabled = disabled;\n\t}\n\t#mounted = false;\n\tconnectedCallback() {\n\t\tthis.#mounted = true;\n\t\tif (!this.hidden && this.open) {\n\t\t\tthis.#dialog.showModal();\n\t\t}\n\t}\n\tdisconnectedCallback() {\n\t\tthis.#mounted = false;\n\t\tthis.#dialog.close();\n\t}\n\t/**\n\t * @param {string} attrName\n\t * @param {string | null} oldVal\n\t * @param {string | null} newVal\n\t * @returns {void}\n\t */\n\tattributeChangedCallback(attrName, oldVal, newVal) {\n\t\tif (oldVal === newVal) { return; }\n\t\tswitch (attrName) {\n\t\t\tcase 'hidden': case 'open': {\n\t\t\t\tif (this.#mounted) {\n\t\t\t\t\tif (!this.hidden && this.open) {\n\t\t\t\t\t\tthis.#dialog.showModal();\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.#dialog.close();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase 'disabled': {\n\t\t\t\tconst disabled = newVal !== null;\n\t\t\t\tthis.#cancelButton.disabled = disabled;\n\t\t\t\tthis.#okButton.disabled = disabled;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase 'position': {\n\t\t\t\tconst {size} = this;\n\t\t\t\tconst main = this.#main;\n\t\t\t\tconst dialog = this.#dialog;\n\n\t\t\t\tswitch (newVal) {\n\t\t\t\t\tcase 'block-start':\n\t\t\t\t\tcase 'block-end':\n\t\t\t\t\t\tmain.style.inlineSize = '';\n\t\t\t\t\t\tmain.style.blockSize = size;\n\t\t\t\t\t\tdialog.className = newVal;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'inline-start':\n\t\t\t\t\tcase 'inline-end':\n\t\t\t\t\t\tmain.style.inlineSize = size;\n\t\t\t\t\t\tmain.style.blockSize = '';\n\t\t\t\t\t\tdialog.className = newVal;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tmain.style.inlineSize = size;\n\t\t\t\t\t\tmain.style.blockSize = '';\n\t\t\t\t\t\tdialog.className = 'center';\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\t}\n\t\t\tcase 'size': {\n\t\t\t\tif (this.position.startsWith('block')) {\n\t\t\t\t\tthis.#main.style.blockSize = newVal || '';\n\t\t\t\t} else {\n\t\t\t\t\tthis.#main.style.inlineSize = newVal || '';\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n}\n\ntry {\n\tcustomElements.define('nl-modal', Modal);\n} catch {}\n\nexport { Modal as default };\n","/*!\n * 匿龙组件库 @neeloong/components v0.7.0\n * (c) 2023-2024 猛火Fierflame\n * @license MIT\n */\nconst style$1 = `:host {\n\tdisplay: block;\n\toverflow: hidden;\n\tposition: relative;\n}\n:host([hidden]) { display: none; }`;\n\n/**\n *\n * @param {MovableArea} el\n * @param {Set<import('./index.mjs').Interface>} children\n * @returns {[() => void, () => void]}\n */\nfunction init$1(el, children) {\n\tconst shadow = el.attachShadow({ mode: 'closed' });\n\tshadow.appendChild(document.createElement('style')).textContent = style$1;\n\tshadow.appendChild(document.createElement('slot'));\n\tconst observer = new ResizeObserver(e => {\n\t\tconst last = e.pop();\n\t\tif (!last) { return; }\n\t\tconst { contentRect: { width, height } } = last;\n\n\t\tfor (const t of children) {\n\t\t\tt.resize(width, height);\n\t\t}\n\t});\n\t/**\n\t *\n\t * @param {Event} event\n\t * @returns {import('./index.mjs').Interface | null}\n\t */\n\tfunction getTarget(event) {\n\t\tconst list = event.composedPath();\n\n\t\tconst k = list.findIndex(t => t === el);\n\t\tconst e = k < 0 ? [] : list.slice(0, k).reverse();\n\t\tfor (const child of [...children]) {\n\t\t\tconst r = child.match(e);\n\t\t\tif (r) { return child; }\n\t\t\tif (r === null) { return null; }\n\t\t}\n\t\treturn null;\n\t}\n\t/** @type {Record<number, import('./index.mjs').Interface>} */\n\tconst touchTargets = {};\n\n\t/**\n\t *\n\t * @param {PointerEvent} event\n\t * @returns {void}\n\t */\n\tfunction pointerdown(event) {\n\t\tconst target = getTarget(event);\n\t\tif (!target) { return; }\n\t\tconst { pageX, pageY, pointerId } = event;\n\t\tconst { x: OffX, y: OffY } = el.getBoundingClientRect();\n\t\tconst x = pageX - OffX;\n\t\tconst y = pageY - OffY;\n\t\t/** @type {boolean?} */\n\t\tlet state = null;\n\t\tif (event.pointerType === 'mouse') {\n\t\t\tstate = target.mouseBegin(x, y, event.buttons);\n\t\t} else if (event.pointerType === 'touch') {\n\t\t\tstate = target.touchBegin(pointerId, x, y);\n\t\t}\n\t\tif (typeof state !== 'boolean') { return; }\n\t\tif (state) { el.setPointerCapture(pointerId); }\n\t\ttouchTargets[pointerId] = target;\n\t}\n\t/**\n\t *\n\t * @param {PointerEvent} event\n\t * @returns {void}\n\t */\n\tfunction pointermove(event) {\n\t\tconst { pointerId } = event;\n\t\tconst target = touchTargets[pointerId];\n\t\tif (!target) { return; }\n\t\tconst { pageX, pageY } = event;\n\t\tconst { x: OffX, y: OffY } = el.getBoundingClientRect();\n\t\tconst x = pageX - OffX;\n\t\tconst y = pageY - OffY;\n\t\tif (event.pointerType === 'mouse') {\n\t\t\ttarget?.mouseMove(x, y, event.buttons);\n\t\t\treturn;\n\t\t}\n\t\tif (event.pointerType === 'touch') {\n\t\t\ttarget.touchMove(pointerId, x, y);\n\t\t}\n\t}\n\t/**\n\t *\n\t * @param {PointerEvent} event\n\t * @returns {void}\n\t */\n\tfunction pointerup(event) {\n\t\tconst { pointerId } = event;\n\t\tif (el.hasPointerCapture(pointerId)) {\n\t\t\tel.releasePointerCapture(pointerId);\n\t\t}\n\t\tconst target = touchTargets[pointerId];\n\t\tif (!target) { return; }\n\t\tif (event.pointerType === 'mouse') {\n\t\t\ttarget.mouseEnd();\n\t\t}\n\t\tif (event.pointerType === 'touch') {\n\t\t\tdelete touchTargets[pointerId];\n\t\t\ttarget.touchEnd(pointerId);\n\t\t}\n\t}\n\t/**\n\t *\n\t * @param {WheelEvent} event\n\t * @returns {void}\n\t */\n\tfunction wheel(event) {\n\t\tconst target = getTarget(event);\n\t\tif (!target) { return; }\n\t\tconst { deltaMode, deltaX, deltaY, pageX, pageY } = event;\n\t\tconst { x: OffX, y: OffY } = el.getBoundingClientRect();\n\t\tconst x = pageX - OffX;\n\t\tconst y = pageY - OffY;\n\t\ttarget.wheel(deltaMode, deltaX, deltaY, x, y);\n\t}\n\n\tel.addEventListener('wheel', wheel, true);\n\n\tel.addEventListener('pointermove', pointermove);\n\tel.addEventListener('pointerdown', pointerdown);\n\tel.addEventListener('pointerup', pointerup);\n\tel.addEventListener('pointercancel', pointerup);\n\tel.addEventListener('lostpointercapture', pointerup);\n\tel.addEventListener('touchmove', e => e.preventDefault());\n\treturn [() => {\n\t\tobserver.observe(el);\n\t}, () => {\n\t\tobserver.unobserve(el);\n\t}];\n\n}\n\nclass MovableArea extends HTMLElement {\n\t/** @type {Set<import('./index.mjs').Interface>} */\n\t#children = new Set();\n\t/** @type {() => void} */\n\t#connect;\n\t/** @type {() => void} */\n\t#disconnect;\n\tconstructor() {\n\t\tsuper();\n\t\t[this.#connect, this.#disconnect] = init$1(this, this.#children);\n\t}\n\t/**\n\t *\n\t * @param {import('./index.mjs').Interface} o\n\t * @returns {() => void}\n\t */\n\tregister(o) {\n\t\tconst children = this.#children;\n\t\tchildren.add(o);\n\t\tconst { width, height } = this.getBoundingClientRect();\n\t\to.resize(width, height);\n\t\treturn () => {\n\t\t\tchildren.delete(o);\n\t\t};\n\n\t}\n\t/**\n\t * @returns {void}\n\t */\n\tconnectedCallback() { this.#connect(); }\n\t/**\n\t * @returns {void}\n\t */\n\tdisconnectedCallback() { this.#disconnect(); }\n\t/**\n\t * @returns {void}\n\t */\n\tadoptedCallback() { }\n}\n\n/**\n * 线性回归求斜率\n * @param {number[]} t\n * @param {number[]} v\n * @returns {number}\n */\nfunction regression(t, v) {\n\tconst tb = t.reduce((a, b) => a + b) / t.length;\n\tconst vb = v.reduce((a, b) => a + b) / v.length;\n\treturn t.map((_, i) => (t[i] - tb) * (v[i] - vb)).reduce((a, b) => a + b)\n\t\t/ t.map(a => (a - tb) ** 2).reduce((a, b) => a + b);\n}\n\n/**\n *\n * @param {number[][]} frame\n * @returns {(() => [number, number, boolean]) | undefined }\n */\nfunction getInertiaFn(frame) {\n\tconst time = performance.now() / 1000;\n\tlet last = time;\n\tfor (let i = 0; i < frame.length; i++) {\n\t\tconst [,, that] = frame[i];\n\t\tif (last - that > 0.05) { frame.length = i; break; }\n\t\tlast = that;\n\t}\n\tif (frame.length < 3) { return; }\n\t// 时间(s)\n\tconst times = frame.map(f => f[2]);\n\t// 方向速度(px/s)\n\tconst xb = regression(times, frame.map(f => f[0]));\n\tconst yb = regression(times, frame.map(f => f[1]));\n\t// 方向符号\n\tconst xs = Math.sign(xb);\n\tconst ys = Math.sign(yb);\n\t// 方向速度绝对值(px/s)\n\tconst xv = Math.abs(xb);\n\tconst yv = Math.abs(yb);\n\t// 和速度(px/s)\n\tconst v = (xv ** 2 + yv ** 2) ** 0.5;\n\t// 方向速度比\n\tconst xp = xv / v;\n\tconst yp = yv / v;\n\t// 加速度(px/s²)\n\tconst a = 1000;\n\t// 最后帧(px, px, s)\n\tconst [[xf, yf, b]] = frame;\n\t/**\n\t * @returns {[number, number, boolean]}\n\t */\n\tfunction calc() {\n\t\tconst t = performance.now() / 1000;\n\t\t// 时间差(s)\n\t\tconst tt = t - b;\n\t\t// 新的速度(px/s)\n\t\tlet nv = v - tt * a;\n\t\tif (nv <= 0) {\n\t\t\tconst x = xf + xs * xv * v / a / 2;\n\t\t\tconst y = yf + ys * yv * v / a / 2;\n\t\t\treturn [x, y, true];\n\t\t}\n\t\tconst x = xf + xs * (xv + xv - a * xp * tt) * tt / 2;\n\t\tconst y = yf + ys * (yv + yv - a * yp * tt) * tt / 2;\n\t\treturn [x, y, false];\n\n\t}\n\treturn calc;\n}\n\nclass MovableTarget extends HTMLElement {\n\t/** @type {() => void} */\n\t#disconnect;\n\t/** @type {() => void} */\n\t#connect;\n\tconstructor() {\n\t\tsuper();\n\t\t/** @type {() => void} */\n\t\tlet unregister = () => {};\n\t\tthis.#connect = () => {\n\t\t\tlet parent = this.parentNode;\n\t\t\twhile (parent) {\n\t\t\t\tif (parent instanceof Movable$1) { break; }\n\t\t\t\tparent = parent.parentNode;\n\t\t\t}\n\t\t\tif (parent) { unregister = parent.register(this); }\n\t\t};\n\t\tthis.#disconnect = () => { unregister(); };\n\t}\n\t/**\n\t * @returns {void}\n\t */\n\tconnectedCallback() { this.#connect(); }\n\t/**\n\t * @returns {void}\n\t */\n\tdisconnectedCallback() { this.#disconnect(); }\n}\n\n/**\n * @typedef {object} Interface\n * @property {(e: EventTarget[]) => boolean | null} match\n * @property {(width: number, height: number) => void} resize\n * @property {(id: number, x: number, y: number) => boolean?} touchBegin\n * @property {(id: number, x: number, y: number) => void} touchMove\n * @property {(id: number) => void} touchEnd\n * @property {(x: number, y: number, keys: number) => boolean?} mouseBegin\n * @property {(x: number, y: number, keys: number) => void} mouseMove\n * @property {() => void} mouseEnd\n * @property {(deltaMode: number, deltaX: number, deltaY: number, pageX: number, pageY: number) => void} wheel\n */\n\n/**\n *\n * @param {number} x1\n * @param {number} x2\n * @param {number} y1\n * @param {number} y2\n * @returns {number}\n */\nfunction getLength(x1, x2, y1, y2) {\n\treturn ((x1 - x2) ** 2 + (y1 - y2) ** 2) ** 0.5;\n}\n\n\n/**\n *\n * @param {number} v\n * @param {number} area\n * @param {number} target\n * @returns {number}\n */\nfunction calc(v, area, target) {\n\tconst differential = area - target;\n\tconst min = Math.min(differential, 0);\n\tconst max = Math.max(differential, 0);\n\treturn Math.min(Math.max(min, v), max);\n}\n\nconst style = `\n:host{display: block; position: absolute; transform-origin: 0 0; }\n:host([hidden]) { display: none; }\n`;\n\n/**\n *\n * @param {Movable} el\n * @param {Set<EventTarget>} targets\n * @returns {[() => void, () => void, () => void]}\n */\nfunction init(el, targets) {\n\tconst shadow = el.attachShadow({ mode: 'closed' });\n\tshadow.appendChild(document.createElement('style')).textContent = style;\n\tshadow.appendChild(document.createElement('slot'));\n\n\tlet needAdaptively = false;\n\n\t/**\n\t *\n\t * @returns {void}\n\t */\n\tfunction adaptively() {\n\t\tneedAdaptively = true;\n\t\tconst [aWidth, aHeight] = areaSize;\n\t\tif (!aWidth || !aHeight) { return; }\n\t\tneedAdaptively = false;\n\t\tzoom = Math.min(aWidth / el.clientWidth, aHeight / el.clientHeight);\n\t\tx = (aWidth - el.clientWidth * zoom) / 2;\n\t\ty = (aHeight - el.clientHeight * zoom) / 2;\n\t\tel.style.transform = `translate(${x}px,${y}px)scale(${zoom})`;\n\t}\n\n\t/** @type {Record<number, [number, number]>} */\n\tconst touches = {};\n\t/** @type {[number, number]} */\n\tlet areaSize = [0, 0];\n\tlet x = 0;\n\tlet y = 0;\n\tlet zoom = 1;\n\t/**\n\t *\n\t * @param {number} newZoom\n\t * @returns {number}\n\t */\n\tfunction getZoom(newZoom) {\n\t\tconst elWidth = el.clientWidth;\n\t\tconst elHeight = el.clientHeight;\n\t\tconst [areaWidth, areaHeight] = areaSize;\n\t\tif (!areaWidth || !areaHeight) { return newZoom; }\n\t\tconst w = areaWidth / elWidth;\n\t\tconst h = areaHeight / elHeight;\n\t\tconst max = Math.max(w, h, 5);\n\t\tconst min = Math.min(w, h, 0.5);\n\t\treturn Math.max(min, Math.min(newZoom, max));\n\t}\n\n\t/** @type {'touch' | ''} */\n\tlet scaleType = '';\n\t/** @type {undefined | { x: number; y: number; s: number; }} */\n\tlet scaleInfo;\n\n\t/**\n\t *\n\t * @param {number} x1\n\t * @param {number} y1\n\t * @param {number} x2\n\t * @param {number} y2\n\t * @returns {void}\n\t */\n\tfunction scaleBegin(x1, y1, x2, y2) {\n\t\tconst l = getLength(x1, x2, y1, y2);\n\t\tconst z = zoom;\n\t\tif (!l || !z) {\n\t\t\tscaleInfo = undefined;\n\t\t\treturn;\n\t\t}\n\t\tscaleInfo = {\n\t\t\tx: (x - (x1 + x2) / 2) / z,\n\t\t\ty: (y - (y1 + y2) / 2) / z,\n\t\t\ts: z / l,\n\t\t};\n\t}\n\t/**\n\t *\n\t * @param {number} x1\n\t * @param {number} y1\n\t * @param {number} x2\n\t * @param {number} y2\n\t * @returns {void}\n\t */\n\tfunction scaleMove(x1, y1, x2, y2) {\n\t\tif (!scaleInfo) { return; }\n\t\tconst l = getLength(x1, x2, y1, y2);\n\t\tif (!l) { return; }\n\t\tconst { s, x: ox, y: oy } = scaleInfo;\n\t\tconst newZoom = getZoom(l * s);\n\t\tzoom = newZoom;\n\t\tx = ox * newZoom + (x1 + x2) / 2;\n\t\ty = oy * newZoom + (y1 + y2) / 2;\n\t\tupdate();\n\t}\n\t/**\n\t *\n\t * @returns {void}\n\t */\n\tfunction scaleStop() {\n\t\tscaleType = '';\n\t\tscaleInfo = undefined;\n\t}\n\n\n\t/** @type {'touch' | 'roller'| 'leftMouse' | ''} */\n\tlet moveType = '';\n\t/**\n\t * @typedef {object} MoveInfo\n\t * @property {number} x\n\t * @property {number} y\n\t * @property {number} bx\n\t * @property {number} by\n\t * @property {[x: number, y: number, t: number][]} frame\n\t */\n\t/**\n\t * @type {MoveInfo | undefined}\n\t */\n\tlet moveInfo;\n\tlet moveAnimation = 0;\n\t/**\n\t *\n\t * @param {number} pageX\n\t * @param {number} pageY\n\t * @returns {void}\n\t */\n\tfunction moveBegin(pageX, pageY) {\n\t\tcancelAnimationFrame(moveAnimation);\n\t\tmoveInfo = undefined;\n\t\tmoveInfo = {\n\t\t\tx,\n\t\t\ty,\n\t\t\tframe: [[x, y, performance.now() / 1000]],\n\t\t\tbx: pageX,\n\t\t\tby: pageY,\n\t\t};\n\n\t}\n\t/**\n\t *\n\t * @param {number} pageX\n\t * @param {number} pageY\n\t * @returns {void}\n\t */\n\tfunction moveMove(pageX, pageY) {\n\t\tif (!moveInfo) { return; }\n\t\tconst { x: ox, y: oy, bx, by } = moveInfo;\n\t\tx = ox + pageX - bx;\n\t\ty = oy + pageY - by;\n\t\t/** @type {[x: number, y: number, t: number]} */\n\t\tconst current = [x, y, performance.now() / 1000];\n\t\tmoveInfo.frame = [current, ...moveInfo.frame].slice(0, 20);\n\t\tupdate();\n\t}\n\t/**\n\t *\n\t * @returns {void}\n\t */\n\tfunction moveEnd() {\n\t\tif (!moveInfo) { return; }\n\t\tmoveType = '';\n\t\tconst { frame } = moveInfo;\n\t\tmoveInfo = undefined;\n\t\tif (!el.inertia) { return; }\n\t\tconst calc = getInertiaFn(frame);\n\t\tif (!calc) { return; }\n\t\t/**\n\t\t *\n\t\t * @returns {void}\n\t\t */\n\t\tconst run = () => {\n\t\t\t/** @type {boolean} */\n\t\t\tlet stop;\n\t\t\t[x, y, stop] = calc();\n\t\t\tupdate();\n\t\t\tif (!el.inertia) { return; }\n\t\t\tif (stop) { return; }\n\t\t\tmoveAnimation = requestAnimationFrame(run);\n\t\t};\n\t\trun();\n\t}\n\t/**\n\t *\n\t * @returns {void}\n\t */\n\tfunction moveStop() {\n\t\tcancelAnimationFrame(moveAnimation);\n\t\tmoveType = '';\n\t\tmoveInfo = undefined;\n\t}\n\n\t/** @type {Interface} */\n\tconst movableAreaMember = {\n\t\tresize(width, height) {\n\t\t\tareaSize = [width, height];\n\t\t\tif (el.autoAdaptively || needAdaptively) { adaptively(); }\n\t\t},\n\t\tmatch(e) {\n\t\t\tif (!e.length) { return el.global || false; }\n\t\t\tif (e[0] !== el) { return false; }\n\t\t\tif (!targets.size) { return true; }\n\t\t\tconst list = new Set(e);\n\t\t\tfor (const t of targets) { if (list.has(t)) { return true; } }\n\t\t\treturn null;\n\t\t},\n\n\t\ttouchMove(id, x, y) {\n\t\t\ttouches[id] = [x, y];\n\t\t\tconst touchList = Object.values(touches);\n\t\t\tif (moveType === 'touch') {\n\t\t\t\tif (touchList.length !== 1) { return moveStop(); }\n\t\t\t\tconst [t1] = touchList;\n\t\t\t\tmoveMove(t1[0], t1[1]);\n\t\t\t}\n\t\t\tif (scaleType !== 'touch') { return; }\n\t\t\tif (!el.touchScalable || touchList.length !== 2) {\n\t\t\t\treturn scaleStop();\n\t\t\t}\n\t\t\tconst [t1, t2] = touchList;\n\t\t\tscaleMove(t1[0], t1[1], t2[0], t2[1]);\n\t\t},\n\t\ttouchBegin(id, x, y) {\n\t\t\ttouches[id] = [x, y];\n\t\t\tconst touchList = Object.values(touches);\n\t\t\tif (touchList.length === 1) {\n\t\t\t\tif (!moveType && el.touchMovable) {\n\t\t\t\t\tscaleStop();\n\t\t\t\t\tmoveType = 'touch';\n\t\t\t\t\tmoveBegin(x, y);\n\t\t\t\t\treturn el.touchCapture;\n\t\t\t\t}\n\t\t\t} else if (touchList.length === 2) {\n\t\t\t\tif (!scaleType && el.touchScalable) {\n\t\t\t\t\tmoveStop();\n\t\t\t\t\tscaleType = 'touch';\n\t\t\t\t\tconst [t1, t2] = touchList;\n\t\t\t\t\tscaleBegin(t1[0], t1[1], t2[0], t2[1]);\n\t\t\t\t\treturn el.touchCapture;\n\t\t\t\t}\n\n\t\t\t}\n\t\t\treturn null;\n\t\t},\n\t\ttouchEnd(id) {\n\t\t\tdelete touches[id];\n\t\t\tif (scaleType === 'touch') { scaleStop(); }\n\t\t\tif (moveType === 'touch') { moveEnd(); }\n\t\t},\n\t\tmouseMove(x, y, keys) {\n\t\t\tif (moveType === 'leftMouse' && !(keys & 1) || moveType === 'roller' && !(keys & 4)) {\n\t\t\t\tmoveEnd();\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (!moveType) { return; }\n\t\t\tmoveMove(x, y);\n\t\t},\n\t\tmouseBegin(x, y, keys) {\n\t\t\tif (moveType) { return null; }\n\t\t\t/** @type {'leftMouse' | 'roller' | ''} */\n\t\t\tlet type = '';\n\t\t\t/** @type {boolean?} */\n\t\t\tlet res = null;\n\t\t\tif (keys & 1) {\n\t\t\t\tif (!el.leftMouseMovable) { return null; }\n\t\t\t\ttype = 'leftMouse';\n\t\t\t\tres = el.leftMouseMovableCapture;\n\t\t\t} else if (keys & 4) {\n\t\t\t\tif (!el.rollerMovable) { return null; }\n\t\t\t\ttype = 'roller';\n\t\t\t\tres = el.rollerMovableCapture;\n\t\t\t}\n\t\t\tscaleStop();\n\t\t\tmoveType = type;\n\t\t\tmoveBegin(x, y);\n\t\t\treturn res;\n\t\t},\n\t\tmouseEnd() {\n\t\t\tif (!moveType) { return; }\n\t\t\tmoveEnd();\n\t\t},\n\t\twheel(mode, dx, dy, px, py) {\n\t\t\tif (!el.rollerScalable) { return; }\n\t\t\tconst v = Math.abs(dx) > Math.abs(dy) ? dx : dy;\n\t\t\tif (v === 0) { return; }\n\t\t\tscaleStop();\n\t\t\tconst abs = Math.abs(v);\n\t\t\tlet base = 0;\n\t\t\tif (v > 0) {\n\t\t\t\tswitch (mode) {\n\t\t\t\t\tcase 0: base = 1.01; break;\n\t\t\t\t\tcase 1: base = 1.25; break;\n\t\t\t\t\tcase 2: base = 1.6; break;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tswitch (mode) {\n\t\t\t\t\tcase 0: base = 1 / 1.01; break;\n\t\t\t\t\tcase 1: base = 1 / 1.25; break;\n\t\t\t\t\tcase 2: base = 1 / 1.6; break;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst oldZoom = zoom;\n\t\t\tconst newZoom = getZoom(base ** abs * oldZoom);\n\t\t\tzoom = newZoom;\n\t\t\tx = (x - px) / oldZoom * newZoom + px;\n\t\t\ty = (y - py) / oldZoom * newZoom + py;\n\t\t\tupdate();\n\t\t},\n\t};\n\n\t/** @type {() => void} */\n\tlet unregister = () => { };\n\n\t/**\n\t *\n\t * @returns {void}\n\t */\n\tfunction update() {\n\t\tconst [areaWidth, areaHeight] = areaSize;\n\t\tif (!areaWidth || !areaHeight) {\n\t\t\tel.style.transform = `translate(${x}px,${y}px)scale(${zoom})`;\n\t\t}\n\t\tx = calc(x, areaWidth, el.clientWidth * zoom);\n\t\ty = calc(y, areaHeight, el.clientHeight * zoom);\n\t\tel.style.transform = `translate(${x}px,${y}px)scale(${zoom})`;\n\t}\n\treturn [() => {\n\t\tif (el.autoAdaptively) { requestAnimationFrame(adaptively); }\n\n\t\tlet parent = el.parentNode;\n\t\twhile (parent) {\n\t\t\tif (parent instanceof MovableArea) { break; }\n\t\t\tparent = parent.parentNode;\n\t\t}\n\t\tif (parent) {\n\t\t\tunregister = parent.register(movableAreaMember);\n\t\t}\n\t\t// TODO: 绑定到页面中\n\t}, () => {\n\t\tunregister();\n\t}, adaptively];\n}\n/**\n *\n * @param {HTMLElement} el\n * @param {string} name\n * @param {string | boolean} value\n * @returns {void}\n */\nfunction setBoolAttr(el, name, value) {\n\tif (!value && value !== '') {\n\t\tel.removeAttribute(name);\n\t\treturn;\n\t}\n\tel.setAttribute(name, value === true ? '' : value);\n}\n\nclass Movable extends HTMLElement {\n\tstatic get Area() { return MovableArea; }\n\tstatic get Target() { return MovableTarget; }\n\t/**\n\t * 是否拥有惯性\n\t * @type {boolean}\n\t */\n\tget inertia() { return this.getAttribute('inertia') !== null; }\n\tset inertia(v) { setBoolAttr(this, 'inertia', v); }\n\t/**\n\t * 触屏是否捕获\n\t * @type {boolean}\n\t */\n\tget touchCapture() { return this.getAttribute('touch-capture') !== null; }\n\tset touchCapture(v) { setBoolAttr(this, 'touch-capture', v); }\n\t/**\n\t * 是否支持触屏移动\n\t * @type {boolean}\n\t */\n\tget touchMovable() { return this.getAttribute('touch-movable') !== null; }\n\tset touchMovable(v) { setBoolAttr(this, 'touch-movable', v); }\n\t/**\n\t * 是否支持触屏缩放\n\t * @type {boolean}\n\t */\n\tget touchScalable() { return this.getAttribute('touch-scalable') !== null; }\n\tset touchScalable(v) { setBoolAttr(this, 'touch-scalable', v); }\n\t/**\n\t * 是否支持鼠标滚论移动\n\t * @type {boolean}\n\t */\n\tget rollerMovable() { return this.getAttribute('roller-movable') !== null; }\n\tset rollerMovable(v) { setBoolAttr(this, 'roller-movable', v); }\n\t/**\n\t * 鼠标滚论移动是否捕获\n\t * @type {boolean}\n\t */\n\tget rollerMovableCapture() { return this.getAttribute('roller-movable-capture') !== null; }\n\tset rollerMovableCapture(v) { setBoolAttr(this, 'roller-movable-capture', v); }\n\t/**\n\t * 是否支持鼠标滚论缩放\n\t * @type {boolean}\n\t */\n\tget rollerScalable() { return this.getAttribute('roller-scalable') !== null; }\n\tset rollerScalable(v) { setBoolAttr(this, 'roller-scalable', v); }\n\t/**\n\t * 是否支持鼠标左键移动\n\t * @type {boolean}\n\t */\n\tget leftMouseMovable() { return this.getAttribute('left-mouse-movable') !== null; }\n\tset leftMouseMovable(v) { setBoolAttr(this, 'left-mouse-movable', v); }\n\t/**\n\t * 鼠标左键移动是否捕获\n\t * @type {boolean}\n\t */\n\tget leftMouseMovableCapture() { return this.getAttribute('left-mouse-movable-capture') !== null; }\n\tset leftMouseMovableCapture(v) { setBoolAttr(this, 'left-mouse-movable-capture', v); }\n\t/**\n\t * 是否自动自适应\n\t * @type {boolean}\n\t */\n\tget autoAdaptively() { return this.getAttribute('adaptively') !== null; }\n\tset autoAdaptively(v) { setBoolAttr(this, 'adaptively', v); }\n\t/**\n\t * 是否在整个 `<nl-movable-area>` 区域内操作都有效\n\t * @type {boolean}\n\t */\n\tget global() { return this.getAttribute('global') !== null; }\n\tset global(v) { setBoolAttr(this, 'global', v); }\n\t/** @type {Set<EventTarget>} */\n\t#targets = new Set();\n\t/** @type {() => void} */\n\t#connect;\n\t/** @type {() => void} */\n\t#disconnect;\n\t/** @type {() => void} */\n\t#adaptively;\n\tconstructor() {\n\t\tsuper();\n\t\t[\n\t\t\tthis.#connect,\n\t\t\tthis.#disconnect,\n\t\t\tthis.#adaptively,\n\t\t] = init(this, this.#targets);\n\t}\n\t/**\n\t *\n\t * @param {EventTarget} o\n\t * @returns {() => void}\n\t */\n\tregister(o) {\n\t\tconst targets = this.#targets;\n\t\ttargets.add(o);\n\t\treturn () => { targets.delete(o); };\n\t}\n\t/**\n\t * 自适应\n\t * @returns {void}\n\t */\n\tadaptively() { this.#adaptively(); }\n\t/**\n\t * @returns {void}\n\t */\n\tconnectedCallback() { this.#connect(); }\n\t/**\n\t * @returns {void}\n\t */\n\tdisconnectedCallback() { this.#disconnect(); }\n\t/**\n\t * @returns {void}\n\t */\n\tadoptedCallback() { }\n}\n\ntry {\n\tcustomElements.define('nl-movable-area', MovableArea);\n\tcustomElements.define('nl-movable', Movable);\n\tcustomElements.define('nl-movable-target', MovableTarget);\n} catch {}\n\n/** @typedef {MovableArea} Movable.Area */\n/** @typedef {MovableTarget} Movable.Target */\nvar Movable$1 = Movable;\n\nexport { Movable$1 as default };\n","/*!\n * 匿龙组件库 @neeloong/components v0.7.0\n * (c) 2023-2024 猛火Fierflame\n * @license MIT\n */\nclass PaginationWidget extends HTMLElement {\n\t/** @type {() => void} */\n\t#unregister = () => {};\n\t/** @type {Pagination?} */\n\t#pagination = null;\n\tget pagination() { return this.#pagination; }\n\t/**\n\t * @param {import('./index.mjs').State} state\n\t * @protected\n\t */\n\tupdateCallback(state) { }\n\t#size = 0;\n\t#total = 0;\n\t#pages = 1;\n\t#page = 1;\n\tget size() { return this.#size; }\n\tget total() { return this.#total; }\n\tget pages() { return this.#pages; }\n\tget page() { return this.#page; }\n\n\t/**\n\t * @returns {void}\n\t */\n\tconnectedCallback() {\n\t\tlet parent = this.parentNode;\n\t\twhile (parent) {\n\t\t\tif (parent instanceof Pagination) { break; }\n\t\t\tparent = parent.parentNode;\n\t\t}\n\t\tif (!parent) { return; }\n\t\tthis.#pagination = parent;\n\t\tthis.#unregister = parent.register({\n\t\t\tupdate: ({size, total, pages, page}) => {\n\t\t\t\tthis.#size = size;\n\t\t\t\tthis.#total = total;\n\t\t\t\tthis.#pages = pages;\n\t\t\t\tthis.#page = page;\n\t\t\t\tthis.updateCallback({size, total, pages, page});\n\t\t\t},\n\t\t});\n\t}\n\t/**\n\t * @returns {void}\n\t */\n\tdisconnectedCallback() {\n\t\tthis.#pagination = null;\n\t\tthis.#unregister();\n\t}\n}\n\n/**\n *\n * @param {string} style\n * @returns {HTMLStyleElement}\n */\nfunction createStyle(style) {\n\tconst el = document.createElement('style');\n\tel.textContent = style;\n\treturn el;\n}\n\nconst style$6 = '';\n\n// TODO: 自定义跳转\nclass PaginationJumper extends PaginationWidget {\n\tstatic observedAttributes = ['disabled'];\n\t/**\n\t * 每页数量\n\t * @type {boolean}\n\t */\n\tget disabled() { return this.getAttribute('disabled') !== null; }\n\tset disabled(value) {\n\t\tif (!value) {\n\t\t\tthis.removeAttribute('disabled');\n\t\t} else {\n\t\t\tthis.setAttribute('disabled', '');\n\t\t}\n\t}\n\t#shadow = this.attachShadow({ mode: 'closed' });\n\t#style = this.#shadow.appendChild(createStyle(style$6));\n\t#input = (() => {\n\t\tconst input = document.createElement('input');\n\t\tinput.setAttribute('part', 'input');\n\t\tinput.type = 'number';\n\t\tinput.min = '1';\n\t\tinput.step = '1';\n\t\tthis.#shadow.appendChild(input);\n\t\tconst change = () => {\n\t\t\tconst {pagination} = this;\n\t\t\tif (!pagination) { return; }\n\t\t\tconst page = input.value;\n\t\t\tif (!page) { return; }\n\t\t\tpagination.setPage(Number(page));\n\n\t\t};\n\t\tinput.addEventListener('change', change);\n\t\tinput.addEventListener('keydown', e => {\n\t\t\tif (e.code !== 'Enter') { return; }\n\t\t\te.preventDefault();\n\t\t\tchange();\n\t\t});\n\t\treturn input;\n\t})();\n\t/** @protected */\n\tupdateCallback() {\n\t\tconst input = this.#input;\n\t\tconst {pages, page} = this;\n\t\tinput.max = String(pages);\n\t\tinput.value = String(page);\n\t\tinput.placeholder = String(page);\n\t}\n\t/**\n\t * @param {string} attrName\n\t * @param {string | null} oldVal\n\t * @param {string | null} newVal\n\t * @returns {void}\n\t */\n\tattributeChangedCallback(attrName, oldVal, newVal) {\n\t\tif (oldVal === newVal) { return; }\n\t\tswitch (attrName) {\n\t\t\tcase 'disabled':\n\t\t\t\tthis.#input.disabled = this.disabled;\n\t\t\t\tbreak;\n\t\t}\n\t}\n}\n\nconst style$5 = '';\n\n// TODO: 下一页的实现\n// TODO: 当不满足跳转时的处理:自动调整、隐藏、禁用\n// TODO: 当无法跳转时的处理:隐藏、禁用\nclass PaginationNext extends PaginationWidget {\n\tstatic observedAttributes = ['disabled'];\n\t/**\n\t * 每页数量\n\t * @type {boolean}\n\t */\n\tget disabled() { return this.getAttribute('disabled') !== null; }\n\tset disabled(value) {\n\t\tif (!value) {\n\t\t\tthis.removeAttribute('disabled');\n\t\t} else {\n\t\t\tthis.setAttribute('disabled', '');\n\t\t}\n\t}\n\t#shadow = this.attachShadow({ mode: 'closed' });\n\t#style = this.#shadow.appendChild(createStyle(style$5));\n\t#button = (() => {\n\t\tconst button = document.createElement('button');\n\t\tbutton.type = 'button';\n\t\tthis.#shadow.appendChild(button);\n\t\tbutton.setAttribute('part', 'button');\n\t\treturn button;\n\t})();\n\t#slot = this.#button.appendChild(document.createElement('slot'));\n\t#updateDisabled() { this.#button.disabled = this.disabled || this.page === this.pages; }\n\tconstructor() {\n\t\tsuper();\n\t\tthis.addEventListener('click', e => {\n\t\t\tconst {defaultPrevented} = e;\n\t\t\te.preventDefault();\n\t\t\tif (this.#button.disabled) {\n\t\t\t\te.stopPropagation();\n\t\t\t} else if (!defaultPrevented) {\n\t\t\t\tthis.pagination?.setPage(this.page + 1);\n\t\t\t}\n\t\t});\n\t}\n\t/** @protected */\n\tupdateCallback() {\n\t\tthis.#updateDisabled();\n\t}\n\n\t/**\n\t * @param {string} attrName\n\t * @param {string | null} oldVal\n\t * @param {string | null} newVal\n\t * @returns {void}\n\t */\n\tattributeChangedCallback(attrName, oldVal, newVal) {\n\t\tif (oldVal === newVal) { return; }\n\t\tswitch (attrName) {\n\t\t\tcase 'disabled':\n\t\t\t\tthis.#updateDisabled();\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n}\n\nconst style$4 = '';\n\n// TODO: 当不满足跳转时的处理:自动调整、隐藏、禁用\n// TODO: 当无法跳转时的处理:隐藏、禁用\nclass PaginationPage extends PaginationWidget {\n\tstatic observedAttributes = ['value', 'disabled'];\n\t/**\n\t * 每页数量\n\t * @type {number}\n\t */\n\tget value() { return Math.max(1, parseInt(this.getAttribute('value') || '') || 1); }\n\tset value(value) {\n\t\tif (!value) {\n\t\t\tthis.removeAttribute('value');\n\t\t} else {\n\t\t\tthis.setAttribute('value', String(value));\n\t\t}\n\t}\n\t/**\n\t * 每页数量\n\t * @type {boolean}\n\t */\n\tget disabled() { return this.getAttribute('disabled') !== null; }\n\tset disabled(value) {\n\t\tif (!value) {\n\t\t\tthis.removeAttribute('disabled');\n\t\t} else {\n\t\t\tthis.setAttribute('disabled', '');\n\t\t}\n\t}\n\tget target() { return Math.min(this.value, this.pages); }\n\tget isCurrent() { return this.target === this.page; }\n\n\t#shadow = this.attachShadow({ mode: 'closed' });\n\t#style = this.#shadow.appendChild(createStyle(style$4));\n\t#button = (() => {\n\t\tconst button = document.createElement('button');\n\t\tbutton.type = 'button';\n\t\tbutton.setAttribute('part', 'button');\n\t\tthis.#shadow.appendChild(button);\n\t\treturn button;\n\t})();\n\t#slot = (() => {\n\t\tconst slot = document.createElement('slot');\n\t\tthis.#button.appendChild(slot);\n\t\tslot.innerText = '1';\n\t\treturn slot;\n\t})();\n\t#updateDisabled() { this.#button.disabled = this.disabled || this.isCurrent; }\n\tconstructor() {\n\t\tsuper();\n\t\tthis.addEventListener('click', e => {\n\t\t\tconst {defaultPrevented} = e;\n\t\t\te.preventDefault();\n\t\t\tif (this.#button.disabled) {\n\t\t\t\te.stopPropagation();\n\t\t\t} else if (!defaultPrevented) {\n\t\t\t\tthis.pagination?.setPage(this.value);\n\t\t\t}\n\t\t});\n\t}\n\t/** @protected */\n\tupdateCallback() {\n\t\tthis.#updateDisabled();\n\t}\n\t/**\n\t * @param {string} attrName\n\t * @param {string | null} oldVal\n\t * @param {string | null} newVal\n\t * @returns {void}\n\t */\n\tattributeChangedCallback(attrName, oldVal, newVal) {\n\t\tif (oldVal === newVal) { return; }\n\t\tswitch (attrName) {\n\t\t\tcase 'value':\n\t\t\t\tthis.#slot.innerText = String(this.value);\n\t\t\t\tthis.#updateDisabled();\n\t\t\t\tbreak;\n\t\t\tcase 'disabled':\n\t\t\t\tthis.#updateDisabled();\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n}\n\nconst style$3 = `\n:host { display: contents; }\n.placeholder::after {\n\tcontent: var(--nl-pagination-pager-placeholder, '...');\n}\n`;\n\n// TODO: 常规页面切换器\n// TODO: 向前(后)最多显示多少\n// TODO: 是否显示第一/最后页\nclass PaginationPager extends PaginationWidget {\n\tstatic observedAttributes = ['disabled'];\n\t/**\n\t * 每页数量\n\t * @type {boolean}\n\t */\n\tget disabled() { return this.getAttribute('disabled') !== null; }\n\tset disabled(value) {\n\t\tif (!value) {\n\t\t\tthis.removeAttribute('disabled');\n\t\t} else {\n\t\t\tthis.setAttribute('disabled', '');\n\t\t}\n\t}\n\t#shadow = this.attachShadow({ mode: 'closed' });\n\t#style = this.#shadow.appendChild(createStyle(style$3));\n\t/** @type {Record<number, HTMLButtonElement>} */\n\t#buttons = Object.create(null);\n\t/** @type {HTMLElement[]} */\n\t#children = [];\n\t#createButtons() {\n\t\tfor (const el of this.#children) {\n\t\t\tel.remove();\n\t\t}\n\t\tconst buttons = Object.create(null);\n\t\t/** @type {HTMLElement[]} */\n\t\tconst children = [];\n\t\tthis.#buttons = buttons;\n\t\tthis.#children = children;\n\n\t\tconst { disabled } = this;\n\t\tconst shadow = this.#shadow;\n\t\tconst current = this.page;\n\t\tconst max = this.pages;\n\n\t\tlet start = Math.max(2, current - 2);\n\t\tlet end = Math.min(current + 2, max - 1);\n\t\t/** @param {number} k */\n\t\tconst createButton = k => {\n\t\t\tconst button = document.createElement('button');\n\t\t\tbutton.type = 'button';\n\t\t\tbutton.innerText = String(k);\n\t\t\tbutton.setAttribute('part', k === current ? 'button current' : 'button');\n\t\t\tbutton.disabled = disabled || k === current;\n\t\t\tbutton.addEventListener('click', () => {\n\t\t\t\tthis.pagination?.setPage(k);\n\t\t\t});\n\t\t\tchildren.push(button);\n\t\t\tshadow.appendChild(button);\n\t\t\tbuttons[k] = button;\n\t\t};\n\t\tconst createPlaceholder = () => {\n\t\t\tconst span = document.createElement('span');\n\t\t\tspan.className = 'placeholder';\n\t\t\tspan.setAttribute('part', 'placeholder');\n\t\t\tshadow.appendChild(span);\n\t\t\tchildren.push(span);\n\t\t};\n\t\tcreateButton(1);\n\t\tif (current > 4) {\n\t\t\tcreatePlaceholder();\n\t\t}\n\t\tfor (let i = start; i <= end; i++) {\n\t\t\tcreateButton(i);\n\t\t}\n\t\tif (max - current > 3) {\n\t\t\tcreatePlaceholder();\n\t\t}\n\t\tif (max > 1) {\n\t\t\tcreateButton(max);\n\t\t}\n\n\t}\n\t#updateDisabled() {\n\t\tconst { disabled } = this;\n\t\tconst current = String(this.page);\n\t\tfor (const [k, v] of Object.entries(this.#buttons)) {\n\t\t\tv.disabled = disabled || k === current;\n\t\t}\n\t}\n\t/** @protected */\n\tupdateCallback() {\n\t\tthis.#createButtons();\n\t\t// TODO:\n\t}\n\t/**\n\t * @param {string} attrName\n\t * @param {string | null} oldVal\n\t * @param {string | null} newVal\n\t * @returns {void}\n\t */\n\tattributeChangedCallback(attrName, oldVal, newVal) {\n\t\tif (oldVal === newVal) { return; }\n\t\tswitch (attrName) {\n\t\t\tcase 'disabled':\n\t\t\t\tthis.#updateDisabled();\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n}\n\nconst style$2 = '';\n\n// TODO: 上一页的实现\n// TODO: 当不满足跳转时的处理:自动调整、隐藏、禁用\n// TODO: 当无法跳转时的处理:隐藏、禁用\nclass PaginationPrev extends PaginationWidget {\n\tstatic observedAttributes = ['disabled'];\n\t/**\n\t * 每页数量\n\t * @type {boolean}\n\t */\n\tget disabled() { return this.getAttribute('disabled') !== null; }\n\tset disabled(value) {\n\t\tif (!value) {\n\t\t\tthis.removeAttribute('disabled');\n\t\t} else {\n\t\t\tthis.setAttribute('disabled', '');\n\t\t}\n\t}\n\t#shadow = this.attachShadow({ mode: 'closed' });\n\t#style = this.#shadow.appendChild(createStyle(style$2));\n\t#button = (() => {\n\t\tconst button = document.createElement('button');\n\t\tbutton.type = 'button';\n\t\tbutton.setAttribute('part', 'button');\n\t\tthis.#shadow.appendChild(button);\n\t\treturn button;\n\t})();\n\t#slot = this.#button.appendChild(document.createElement('slot'));\n\t#updateDisabled() { this.#button.disabled = this.disabled || this.page === 1; }\n\tconstructor() {\n\t\tsuper();\n\t\tthis.addEventListener('click', e => {\n\t\t\tconst {defaultPrevented} = e;\n\t\t\te.preventDefault();\n\t\t\tif (this.#button.disabled) {\n\t\t\t\te.stopPropagation();\n\t\t\t} else if (!defaultPrevented) {\n\t\t\t\tthis.pagination?.setPage(this.page - 1);\n\t\t\t}\n\t\t});\n\t}\n\t/** @protected */\n\tupdateCallback() {\n\t\tthis.#updateDisabled();\n\t}\n\t/**\n\t * @param {string} attrName\n\t * @param {string | null} oldVal\n\t * @param {string | null} newVal\n\t * @returns {void}\n\t */\n\tattributeChangedCallback(attrName, oldVal, newVal) {\n\t\tif (oldVal === newVal) { return; }\n\t\tswitch (attrName) {\n\t\t\tcase 'disabled':\n\t\t\t\tthis.#updateDisabled();\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n}\n\nconst style$1 = '';\n\n\n/**\n *\n * @param {string?} t\n * @returns {Set<number>?}\n */\nfunction parseSizes(t) {\n\tconst l = t?.split(/[,;: ]/).map(v => parseInt(v)).filter(v => v >= 0);\n\treturn l?.length ? new Set(l) : null;\n}\n/**\n *\n * @param {string | number | bigint | (string | bigint | number)[]} sizes\n * @returns {number[]}\n */\nfunction parseSizesInput(sizes) {\n\tif (typeof sizes === 'string') {\n\t\tconst s = parseSizes(sizes);\n\t\treturn s ? [...s] : [];\n\t}\n\tif (typeof sizes === 'number') {\n\t\tconst s = Math.floor(sizes);\n\t\treturn s >= 0 ? [s] : [];\n\t}\n\tif (typeof sizes === 'bigint') {\n\t\treturn sizes >= 0n ? [Number(sizes)] : [];\n\t}\n\ttry {\n\t\treturn Array(sizes).flat(Infinity).flatMap(parseSizesInput);\n\t} catch {\n\t\treturn [];\n\t}\n\n}\nconst defaultSizes = [10, 20, 30, 50, 100];\n/**\n *\n * @param {string?} t\n * @param {number?} [d]\n * @returns {number[]}\n */\nfunction getSizes(t, d) {\n\tconst s = parseSizes(t) || new Set(defaultSizes);\n\tif (typeof d === 'number') { s.add(d); }\n\treturn [...s].sort((a, b) => a - b);\n}\n// TODO: 分页器\n// TODO: 可选范围,逗号隔开\nclass PaginationSizer extends PaginationWidget {\n\tstatic observedAttributes = ['sizes', 'label', 'non-label', 'disabled'];\n\t/**\n\t * 每页数量\n\t * @type {boolean}\n\t */\n\tget disabled() { return this.getAttribute('disabled') !== null; }\n\tset disabled(value) {\n\t\tif (!value) {\n\t\t\tthis.removeAttribute('disabled');\n\t\t} else {\n\t\t\tthis.setAttribute('disabled', '');\n\t\t}\n\t}\n\t#shadow = this.attachShadow({ mode: 'closed' });\n\t#style = this.#shadow.appendChild(createStyle(style$1));\n\t#input = (() => {\n\t\tconst select = this.#shadow.appendChild(document.createElement('select'));\n\t\tselect.setAttribute('part', 'input');\n\t\tselect.addEventListener('change', () => {\n\t\t\tconst {pagination} = this;\n\t\t\tif (!pagination) { return; }\n\t\t\tpagination.setSize(Number(select.value));\n\t\t});\n\t\treturn select;\n\t})();\n\t/** @type {HTMLOptionElement} */\n\t#nonLabel = (() => {\n\t\tconst nonLabel = document.createElement('option');\n\t\tnonLabel.label = '-';\n\t\tnonLabel.value = '0';\n\t\treturn nonLabel;\n\t})();\n\t/** @type {HTMLOptionElement[]} */\n\t#labels = [];\n\t#update() {\n\t\tconst s = parseSizes(this.getAttribute('sizes')) || new Set(defaultSizes);\n\t\tconst {size} = this;\n\t\ts.add(size);\n\t\tconst select = this.#input;\n\t\tselect.innerHTML = '';\n\t\tif (s.delete(0)) {\n\t\t\tselect.appendChild(this.#nonLabel);\n\t\t}\n\t\t/** @type {HTMLOptionElement[]} */\n\t\tconst labels = [];\n\t\tthis.#labels = labels;\n\t\tconst labelText = this.label;\n\t\tfor (const o of [...s].sort((a, b) => a - b)) {\n\t\t\tconst label = document.createElement('option');\n\t\t\tlabel.label = labelText.replace(/#/g, String(o));\n\t\t\tlabel.value = String(o);\n\t\t\tlabels.push(label);\n\t\t\tselect.appendChild(label);\n\t\t}\n\t\tselect.value = String(size);\n\t}\n\tget label() { return this.getAttribute('label') || '#'; }\n\tset label(label) {\n\t\tif (label) {\n\t\t\tthis.setAttribute('label', label);\n\t\t} else {\n\t\t\tthis.removeAttribute('label');\n\t\t}\n\t}\n\tget nonLabel() { return this.getAttribute('non-label') || '-'; }\n\tset nonLabel(label) {\n\t\tif (label) {\n\t\t\tthis.setAttribute('non-label', label);\n\t\t} else {\n\t\t\tthis.removeAttribute('non-label');\n\t\t}\n\t}\n\tget sizes() { return getSizes(this.getAttribute('sizes')); }\n\tset sizes(sizes) {\n\t\tconst s = parseSizesInput(sizes);\n\t\tif (!s.length) {\n\t\t\tthis.removeAttribute('sizes');\n\t\t} else {\n\t\t\tthis.setAttribute('sizes', [...new Set(s)].sort((a, b) => a - b).join(','));\n\t\t}\n\t}\n\t#size = 0;\n\t/** @protected */\n\tupdateCallback() {\n\t\tconst {size} = this;\n\t\tif (this.#size === size) { return; }\n\t\tthis.#size = size;\n\t\tthis.#update();\n\t}\n\t/**\n\t * @param {string} attrName\n\t * @param {string | null} oldVal\n\t * @param {string | null} newVal\n\t * @returns {void}\n\t */\n\tattributeChangedCallback(attrName, oldVal, newVal) {\n\t\tif (oldVal === newVal) { return; }\n\t\tswitch (attrName) {\n\t\t\tcase 'sizes':\n\t\t\t\tthis.#update();\n\t\t\t\tbreak;\n\t\t\tcase 'label':{\n\t\t\t\tconst labelText = this.label;\n\t\t\t\tfor (const label of this.#labels) {\n\t\t\t\t\tlabel.label = labelText.replace(/#/g, label.value);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase 'non-label':{\n\t\t\t\tthis.#nonLabel.label = this.nonLabel;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase 'disabled':\n\t\t\t\tthis.#input.disabled = this.disabled;\n\t\t\t\tbreak;\n\t\t}\n\t}\n}\n\nconst style = '';\n\nclass PaginationValue extends PaginationWidget {\n\tstatic observedAttributes = ['name'];\n\t/**\n\t * 每页数量\n\t * @type {'size' | 'total' | 'pages' | 'page' | 'start' | 'end' | 'page'}\n\t */\n\tget name() {\n\t\tconst name = this.getAttribute('name')?.toLowerCase() || '';\n\t\tif (['size', 'total', 'pages', 'page', 'start', 'end'].includes(name)) { return /** @type {any} */(name); }\n\t\treturn 'page';\n\t}\n\t/** @param {string} value*/\n\tset name(value) {\n\t\tif (!value) {\n\t\t\tthis.removeAttribute('name');\n\t\t} else {\n\t\t\tthis.setAttribute('name', String(value));\n\t\t}\n\t}\n\t#state = { size: 0, total: 0, pages: 1, page: 1, start: 0, end: 0 };\n\t#shadow = this.attachShadow({ mode: 'closed' });\n\t#style = this.#shadow.appendChild(createStyle(style));\n\t#text = this.#shadow.appendChild(document.createTextNode(''));\n\t#update() {\n\t\tconst value = this.#state[this.name];\n\t\tthis.#text.textContent = String(value);\n\t}\n\t/** @protected */\n\tupdateCallback() {\n\t\tconst {size, total, pages, page} = this;\n\t\tthis.#state = {\n\t\t\tsize,\n\t\t\ttotal, pages, page,\n\t\t\tstart: Math.min((page - 1) * size + 1, total),\n\t\t\tend: size ? Math.min(page * size, total) : total,\n\n\t\t};\n\t\tthis.#update();\n\t}\n\t/**\n\t * @param {string} attrName\n\t * @param {string | null} oldVal\n\t * @param {string | null} newVal\n\t * @returns {void}\n\t */\n\tattributeChangedCallback(attrName, oldVal, newVal) {\n\t\tif (oldVal === newVal) { return; }\n\t\tswitch (attrName) {\n\t\t\tcase 'name': this.#update();\n\t\t}\n\t}\n\n}\n\n/**\n * @typedef {object} State\n * @property {number} size\n * @property {number} total\n * @property {number} pages\n * @property {number} page\n */\n/**\n * @typedef {object} Component\n * @property {(state: State) => void} update\n */\n/**\n *\n * @param {HTMLElement} el\n * @param {string} name\n * @param {string | number | null} value\n * @returns {void}\n */\nfunction setIntAttr(el, name, value) {\n\tif (typeof value === 'string') {\n\t\tvalue = parseInt(value);\n\t} else if (typeof value === 'number') {\n\t\tvalue = Math.floor(value);\n\t} else if (typeof value === 'bigint') {\n\t\tvalue = Number(value);\n\t} else {\n\t\tvalue = Number.NaN;\n\t}\n\tif (Number.isNaN(value) || value < 0) {\n\t\tel.removeAttribute(name);\n\t\treturn;\n\t}\n\tel.setAttribute(name, String(value));\n}\n/**\n *\n * @param {string?} value\n * @returns {number}\n */\nfunction parseIntAttr(value) {\n\tif (!value) { return 0; }\n\tconst n = parseInt(value);\n\treturn Number.isNaN(n) || n < 0 ? 0 : n;\n}\nclass Pagination extends HTMLElement {\n\tstatic get Widget() { return PaginationWidget; }\n\tstatic get Jumper() { return PaginationJumper; }\n\tstatic get Next() { return PaginationNext; }\n\tstatic get Page() { return PaginationPage; }\n\tstatic get Pager() { return PaginationPager; }\n\tstatic get Prev() { return PaginationPrev; }\n\tstatic get Sizer() { return PaginationSizer; }\n\tstatic get Value() { return PaginationValue; }\n\tstatic observedAttributes = ['size', 'total', 'pages', 'page'];\n\t/**\n\t * 每页数量\n\t * @type {number}\n\t */\n\tget size() { return parseIntAttr(this.getAttribute('size')) || 0; }\n\tset size(v) { setIntAttr(this, 'size', v); }\n\t/**\n\t * 总数\n\t * @type {number}\n\t */\n\tget total() { return parseIntAttr(this.getAttribute('total')) || 0; }\n\tset total(v) { setIntAttr(this, 'total', v); }\n\t/**\n\t * 总分页数,如果未设置,则为 `Math.ceil(total / size)`\n\t * @type {number}\n\t */\n\tget pages() {\n\t\tconst pages = parseIntAttr(this.getAttribute('pages'));\n\t\tif (pages) { return pages; }\n\t\tconst {size} = this;\n\t\tif (!size) { return 1; }\n\t\treturn Math.ceil(this.total / size) || 1;\n\t}\n\tset pages(v) { setIntAttr(this, 'pages', v); }\n\t/**\n\t * 当前页码\n\t * @type {number}\n\t */\n\tget page() { return Math.min(parseIntAttr(this.getAttribute('page')) || 1, this.pages); }\n\tset page(v) { setIntAttr(this, 'page', v); }\n\t/**\n\t *\n\t * @param {number} page\n\t */\n\tsetPage(page) {\n\t\tthis.page = page;\n\t\tthis.dispatchEvent(new Event('change'));\n\t}\n\t/**\n\t *\n\t * @param {number} size\n\t */\n\tsetSize(size) {\n\t\tthis.size = size;\n\t\tthis.dispatchEvent(new Event('change'));\n\t}\n\t#subElements = new Set();\n\t/**\n\t *\n\t * @param {Component} o\n\t * @returns {() => void}\n\t */\n\tregister(o) {\n\t\tconst subElements = this.#subElements;\n\t\tsubElements.add(o);\n\t\to.update({...this.#state});\n\t\treturn () => { subElements.delete(o); };\n\t}\n\t/**\n\t * @returns {void}\n\t */\n\tconnectedCallback() { }\n\t/**\n\t * @returns {void}\n\t */\n\tdisconnectedCallback() { }\n\t/**\n\t * @returns {void}\n\t */\n\tadoptedCallback() { }\n\t#state = {size: 0, total: 0, pages: 1, page: 1};\n\t/**\n\t * @param {string} attrName\n\t * @param {string | null} oldVal\n\t * @param {string | null} newVal\n\t * @returns {void}\n\t */\n\tattributeChangedCallback(attrName, oldVal, newVal) {\n\t\tif (oldVal === newVal) { return; }\n\t\tconst {size, total, pages, page} = this;\n\t\tconst oldState = this.#state;\n\t\tif (size === oldState.size && total === oldState.total && pages === oldState.pages && page === oldState.page) {\n\t\t\treturn;\n\t\t}\n\t\tconst state = {size, total, pages, page};\n\t\tthis.#state = state;\n\t\tfor (const s of [...this.#subElements]) {\n\t\t\ts.update({...state});\n\t\t}\n\t}\n\n}\n\ntry {\n\tcustomElements.define('nl-pagination', Pagination);\n\tcustomElements.define('nl-pagination-jumper', PaginationJumper);\n\tcustomElements.define('nl-pagination-next', PaginationNext);\n\tcustomElements.define('nl-pagination-page', PaginationPage);\n\tcustomElements.define('nl-pagination-pager', PaginationPager);\n\tcustomElements.define('nl-pagination-prev', PaginationPrev);\n\tcustomElements.define('nl-pagination-sizer', PaginationSizer);\n\tcustomElements.define('nl-pagination-value', PaginationValue);\n} catch {}\n\nexport { Pagination, Pagination as default };\n","/*!\n * 匿龙组件库 @neeloong/components v0.7.0\n * (c) 2023-2024 猛火Fierflame\n * @license MIT\n */\nconst style = `\n:host {\n\tdisplay: inline-block;\n\toverflow: hidden;\n\n\tposition: relative;\n\tcontainer-name: host;\n}\n:host([hidden]) { display: none; }\n\n.value {\n\tcolor: transparent;\n\ttext-align: center;\n\ttext-orientation: upright;\n\tinline-size: 100%;\n\tblock-size: 100%;\n\tdisplay: flex;\n\tflex-direction: column;\n\toverflow: hidden;\n}\n.value:empty::before {\n\tcontent: '.'\n}\n.root, .sign {\n\tposition: absolute;\n\ttext-align: center;\n\ttext-orientation: upright;\n\ttransition: all 1.5s;\n\tdisplay: flex;\n\tflex-direction: column;\n\tjustify-content: space-around;\n\toverflow: hidden;\n\tuser-select: none;\n\tpointer-events: none;\n}\n.root {\n\tcounter-reset: nl-roll-digit -1;\n\tinline-size: 100%;\n\tblock-size: 1000%;\n\tinset-inline-start: 0;\n}\n.root span {\n\tflex: 1;\n\toverflow: hidden;\n\tcounter-increment: nl-roll-digit;\n}\n.root span::before {\n\tcontent: counter(nl-roll-digit)\n}\n.sign {\n\tinline-size: 100%;\n\tblock-size: 300%;\n\tinset-block-start: -100%;\n\tinset-inline-start: -100%;\n}\n.sign span {\n\tflex: 1;\n\toverflow: hidden;\n}\n.sign span::before {\n\tcontent: ''\n}\n.sign span:first-child::before {\n\tcontent: '-'\n}\n.sign span:last-child::before {\n\tcontent: '+'\n}\n:host([sign]) .sign {\n\tinset-inline-start: 0;\n}\n:host([sign]) .root {\n\tinset-inline-start: 100%;\n}\n`;\n\n/**\n * 数字滚动组件\n */\nclass RollDigit extends HTMLElement {\n\tstatic observedAttributes = ['digit', 'value', 'sign', 'plus', 'zero'];\n\t#main = document.createElement('span');\n\t#sign = document.createElement('span');\n\t#value = document.createElement('span');\n\t#update() {\n\t\tconst n = this.currentDigit;\n\t\tconst s = this.currentSign;\n\t\tthis.#value.innerText = this.sign ? s : `${n}`;\n\t\tthis.#main.style.insetBlockStart = `-${n}00%`;\n\t\tthis.#sign.style.insetBlockStart = `-${s === '+' ? 2 : s === '-' ? 0 : 1}00%`;\n\t}\n\tconstructor() {\n\t\tsuper();\n\t\tconst shadow = this.attachShadow({mode:'closed'});\n\t\tshadow.appendChild(document.createElement('style')).textContent = style;\n\t\tconst main = shadow.appendChild(this.#main);\n\t\tmain.className = 'root';\n\t\tfor (let i = 0; i < 10; i++) {\n\t\t\tmain.appendChild(document.createElement('span'));\n\t\t}\n\t\tconst sign = shadow.appendChild(this.#sign);\n\t\tsign.className = 'sign';\n\t\tfor (let i = 0; i < 3; i++) {\n\t\t\tsign.appendChild(document.createElement('span'));\n\t\t}\n\t\tshadow.appendChild(this.#value).className = 'value';\n\t}\n\t/**\n\t * @type {number}\n\t */\n\tget currentDigit() {\n\t\treturn Math.floor(Math.abs(this.value) / 10 ** this.digit % 10);\n\t}\n\tget currentSign() {\n\t\tconst {value} = this;\n\t\tif (value < 0) { return '-'; }\n\t\tif (!value) { return this.zero; }\n\t\treturn this.plus ? '+' : '';\n\t}\n\t/**\n\t * @type {number}\n\t */\n\tget digit() {\n\t\treturn parseInt(this.getAttribute('digit') || '') || 0;\n\t}\n\t/** @type {number | string | null | undefined} */\n\tset digit(digit) {\n\t\tif (digit === undefined || digit === null) {\n\t\t\tthis.removeAttribute('digit');\n\t\t} else {\n\t\t\tthis.setAttribute('digit', String(digit));\n\t\t}\n\t}\n\tget sign() { return this.hasAttribute('sign'); }\n\tset sign(sign) {\n\t\tif (sign) {\n\t\t\tthis.setAttribute('sign', '');\n\t\t} else {\n\t\t\tthis.removeAttribute('sign');\n\t\t}\n\t}\n\tget plus() { return this.hasAttribute('plus'); }\n\tset plus(plus) {\n\t\tif (plus) {\n\t\t\tthis.setAttribute('plus', '');\n\t\t} else {\n\t\t\tthis.removeAttribute('plus');\n\t\t}\n\t}\n\tget zero() {\n\t\tconst sign = this.getAttribute('zero');\n\t\treturn sign === '+' || sign === '-' ? sign : '';\n\t}\n\tset zero(sign) {\n\t\tif (sign === '+' || sign === '-') {\n\t\t\tthis.setAttribute('plus-zero', sign);\n\t\t} else {\n\t\t\tthis.removeAttribute('zero');\n\t\t}\n\t}\n\t/**\n\t * @type {number}\n\t */\n\tget value() { return parseFloat(this.getAttribute('value') || '') || 0; }\n\t/** @type {number | string | null | undefined} */\n\tset value(value) {\n\t\tif (value === undefined || value === null) {\n\t\t\tthis.removeAttribute('value');\n\t\t} else {\n\t\t\tthis.setAttribute('value', String(value));\n\t\t}\n\t}\n\tconnectedCallback() {\n\t\tthis.#update();\n\t}\n\t/**\n\t * @param {string} attrName\n\t * @param {string | null} oldVal\n\t * @param {string | null} newVal\n\t * @returns {void}\n\t * @protected\n\t */\n\tattributeChangedCallback(attrName, oldVal, newVal) {\n\t\tif (oldVal === newVal) { return; }\n\t\tswitch (attrName) {\n\t\t\tcase 'digit': case 'value': case 'sign': case 'plus': case 'zero': {\n\t\t\t\tthis.#update();\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n}\n\ntry {\n\tcustomElements.define('nl-roll-digit', RollDigit);\n} catch {}\n\nexport { RollDigit as default };\n","/*!\n * 匿龙组件库 @neeloong/components v0.7.0\n * (c) 2023-2024 猛火Fierflame\n * @license MIT\n */\nconst style = `\n:host { display: flex; flex-flow: row wrap; }\n::slotted(*) { box-sizing: border-box; }\n::slotted([nl-span=0]) { flex: 0 0 0%; max-inline-size: 0%; }\n`;\n/**\n * @param {string?} g\n * @returns {string}\n */\nfunction parseGutter(g) {\n\tif (!g) { return '0'; }\n\tif (/^\\d+$/.test(g)) { return `${g}px`; }\n\treturn g;\n}\n/**\n *\n * @param {number} aliquot\n * @returns {string}\n */\nfunction getAliquotStyle(aliquot) {\n\tconst styles = [`::slotted(*) {\n\t\tflex-basis: calc(100% / ${aliquot});\n\t\tmax-inline-size: calc(100% / ${aliquot});\n\t}`];\n\tfor (let i = 1; i <= aliquot; i++) {\n\t\tstyles.push(`::slotted([nl-span=\"${i}\"]) {\n\t\t\tflex-basis: calc(${i}00% / ${aliquot});\n\t\t\tmin-inline-size: calc(${i}00% / ${aliquot});\n\t\t\tmax-inline-size: calc(${i}00% / ${aliquot});\n\t\t}`);\n\t\tstyles.push(`::slotted([nl-offset=\"${i}\"]) {\n\t\t\tmargin-inline-start: calc(${i}00% / ${aliquot});\n\t\t}`);\n\t}\n\treturn styles.join('\\n');\n}\n/**\n *\n * @param {number} aliquot\n * @returns {number}\n */\nfunction getNewAliquot(aliquot) {\n\tif (typeof aliquot !== 'number') { return 0; }\n\tconst n = Math.floor(aliquot);\n\tif (!Number.isFinite(n)) { return 0; }\n\treturn n > 1 ? n : 0;\n}\nclass Row extends HTMLElement {\n\tstatic observedAttributes = ['aliquot', 'gutter-inline', 'gutter-block'];\n\t#style = document.createElement('style');\n\t#aliquotStyle = document.createElement('style');\n\tget gutterInline() {\n\t\treturn parseGutter(this.getAttribute('gutter-inline'));\n\t}\n\t/** @param {string | number} gutter*/\n\tset gutterInline(gutter) {\n\t\tthis.setAttribute('gutter-inline', String(gutter));\n\t}\n\tget gutterBlock() {\n\t\treturn parseGutter(this.getAttribute('gutter-block'));\n\t}\n\t/** @param {string | number} gutter*/\n\tset gutterBlock(gutter) {\n\t\tthis.setAttribute('gutter-block', String(gutter));\n\t}\n\tget aliquot() {\n\t\tconst s = parseInt(this.getAttribute('aliquot') || '');\n\t\tif (!s || s < 2) { return 24; }\n\t\treturn s;\n\t}\n\tset aliquot(aliquot) {\n\t\tconst n = getNewAliquot(aliquot);\n\t\tif (n) {\n\t\t\tthis.setAttribute('aliquot', String(n));\n\t\t} else {\n\t\t\tthis.removeAttribute('aliquot');\n\t\t}\n\t}\n\n\tconstructor() {\n\t\tsuper();\n\t\tconst shadow = this.attachShadow({mode:'closed'});\n\t\tshadow.appendChild(document.createElement('style')).textContent = style;\n\t\tshadow.appendChild(this.#aliquotStyle);\n\t\tshadow.appendChild(this.#style);\n\t\tshadow.appendChild(document.createElement('slot'));\n\t}\n\t/**\n\t * @param {string} attrName\n\t * @param {string | null} oldVal\n\t * @param {string | null} newVal\n\t * @returns {void}\n\t */\n\tattributeChangedCallback(attrName, oldVal, newVal) {\n\t\tif (oldVal === newVal) { return; }\n\t\tswitch (attrName) {\n\t\t\tcase 'aliquot': {\n\t\t\t\tthis.#aliquotStyle.textContent = getAliquotStyle(this.aliquot);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase 'gutter-inline': case 'gutter-block': {\n\t\t\t\tthis.#style.textContent = `::slotted(*) {\n\t\t\t\t\tpadding-block: ${this.gutterBlock};\n\t\t\t\t\tpadding-inline: ${this.gutterInline};\n\t\t\t\t}`;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\n}\n\ntry {\n\tcustomElements.define('nl-row', Row);\n} catch {}\n\nexport { Row as default };\n","/*!\n * 匿龙组件库 @neeloong/components v0.7.0\n * (c) 2023-2024 猛火Fierflame\n * @license MIT\n */\nconst style = `\n:host {\n\tdisplay: inline-block;\n}\n::slotted(*) {\n\tdisplay: inline-block;\n}\n::slotted(*:last-child) {\n\tmargin-inline-end: 0;\n\tmargin-block-end: 0;\n}\n:host([column]) ::slotted(*) {\n\tdisplay: block;\n}\n`;\nclass Space extends HTMLElement {\n\tstatic observedAttributes = ['column', 'space', 'unit'];\n\tget column() {\n\t\treturn this.hasAttribute('column');\n\t}\n\tset column(column) {\n\t\tif (column) {\n\t\t\tthis.setAttribute('column', '');\n\t\t} else {\n\t\t\tthis.removeAttribute('column');\n\t\t}\n\t}\n\tget space() {\n\t\tconst space = parseFloat(this.getAttribute('space') || '');\n\t\tif (Number.isNaN(space)) { return 16; }\n\t\tif (!Number.isFinite(space)) { return 16; }\n\t\treturn space <= 0 ? 0 : space;\n\t}\n\tset space(space) {\n\t\tif (typeof space !== 'number' || !Number.isFinite(space)) {\n\t\t\tthis.removeAttribute('space');\n\t\t} else {\n\t\t\tthis.setAttribute('space', space <= 0 ? '0' : String(space));\n\t\t}\n\t}\n\tget unit() { return this.getAttribute('unit') || 'px'; }\n\tset unit(unit) {\n\t\tif (unit) {\n\t\t\tthis.setAttribute('unit', unit);\n\t\t} else {\n\t\t\tthis.removeAttribute('unit');\n\t\t}\n\t}\n\t#style = document.createElement('style');\n\tconstructor() {\n\t\tsuper();\n\t\tconst shadow = this.attachShadow({mode:'closed'});\n\t\tshadow.appendChild(this.#style);\n\t\tshadow.appendChild(document.createElement('style')).textContent = style;\n\t\tshadow.appendChild(document.createElement('slot'));\n\t}\n\t/**\n\t * @param {string} attrName\n\t * @param {string | null} oldVal\n\t * @param {string | null} newVal\n\t * @returns {void}\n\t * @protected\n\t */\n\tattributeChangedCallback(attrName, oldVal, newVal) {\n\t\tif (oldVal === newVal) { return; }\n\t\tswitch (attrName) {\n\t\t\tcase 'column': case 'space': case 'unit': {\n\t\t\t\tthis.#style.textContent =\n\t\t\t\t`::slotted(*) {margin-${this.column ? 'block' : 'inline'}-end: var(--nl-space, ${this.space}${this.unit})}`;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n}\n\ntry {\n\tcustomElements.define('nl-space', Space);\n} catch {}\n\nexport { Space as default };\n","/*!\n * 匿龙组件库 @neeloong/components v0.7.0\n * (c) 2023-2024 猛火Fierflame\n * @license MIT\n */\nconst style = `\n:host {\n\tdisplay: flex;\n\tborder: 1px solid;\n\twriting-mode: inherit;\n}\n:host([hidden]) {\n\tdisplay: none;\n}\n:host([column]) {\n\tdisplay: none;\n\tflex-direction: column;\n}\nslot {\n\tdisplay: block;\n\tposition: relative;\n}\n.start {\n\tflex: 1;\n\toverflow: hidden;\n}\n.end {\n\tflex: 1;\n\toverflow: hidden;\n}\n.trigger {\n\tcursor: move;\n}\n.trigger div {\n\tinline-size: 8px;\n\tblock-size: 100%;\n\tbackground: currentColor;\n\topacity: .2;\n}\n:host(:state(--moving)) div, div:hover {\n\topacity: .5;\n}\n`;\n/**\n *\n * @param {HTMLElement} el\n * @param {string} name\n * @param {boolean} value\n */\nfunction setBoolAttribute(el, name, value) {\n\tif (value) {\n\t\tel.setAttribute(name, '');\n\t} else {\n\t\tel.removeAttribute(name);\n\t}\n}\n/**\n *\n * @param {string?} v\n * @param {number} def\n * @param {number} [min]\n * @param {number} [max]\n * @returns {number}\n */\nfunction toFloat01(v, def, min = 0, max = 1) {\n\tconst value = v ? parseFloat(v) : def;\n\treturn Math.max(min, Math.min(Number.isNaN(value) ? def : value, max));\n}\n/**\n *\n * @param {HTMLElement} el\n * @param {string} name\n * @param {number | string | null} value\n * @param {number} [min]\n * @param {number} [max]\n */\nfunction setFloat01Attribute(el, name, value, min = 0, max = 1) {\n\tlet float = typeof value === 'string' ? parseFloat(value) : value === null ? NaN : value;\n\tif (Number.isNaN(float)) {\n\t\tel.removeAttribute(name);\n\t\treturn;\n\t}\n\tel.setAttribute(name, String(Math.max(min, Math.min(float, max))));\n}\n\nconst verticalWritingMode = new Set([\n\t'vertical-lr', 'vertical-rl', 'sideways-lr', 'sideways-rl',\n]);\n/**\n *\n * @param {Element} root\n * @returns {[boolean, boolean]}\n */\nfunction getLayout(root) {\n\tconst style = getComputedStyle(root);\n\tconst writingMode = style.writingMode?.toLowerCase();\n\tconst vertical = verticalWritingMode.has(writingMode);\n\n\tconst flexDir = style.flexDirection.toLocaleLowerCase();\n\tconst column = flexDir.includes('column');\n\tlet reverse = column\n\t\t? ['vertical-rl', 'sideways-rl'].includes(writingMode)\n\t\t: style.direction.toLowerCase() === 'rtl' !== (writingMode === 'sideways-lr');\n\treverse = reverse !== flexDir.includes('reverse');\n\treturn [vertical !== column, reverse];\n}\n\nclass Split extends HTMLElement {\n\tstatic observedAttributes = ['column', 'disabled', 'min', 'max', 'value'];\n\t/** @type {boolean} 纵向分割 */\n\tget column() { return this.getAttribute('column') !== null; }\n\tset column(value) { setBoolAttribute(this, 'column', value); }\n\t/** @type {boolean} 禁用 */\n\tget disabled() { return this.getAttribute('disabled') !== null; }\n\tset disabled(value) { setBoolAttribute(this, 'disabled', value); }\n\t/** @type {number} 最小阈值 */\n\tget min() { return toFloat01(this.getAttribute('min'), 0, 0, 1); }\n\tset min(value) { setFloat01Attribute(this, 'min', value, 0, toFloat01(this.getAttribute('max'), 1, 0, 1)); }\n\t/** @type {number} 最大阈值 */\n\tget max() { return toFloat01(this.getAttribute('max'), 1, this.min, 1); }\n\tset max(value) { setFloat01Attribute(this, 'max', value, this.min, 1); }\n\t/** @type {number} 当前值 */\n\tget value() { return toFloat01(this.getAttribute('value'), 0.5, this.min, this.max); }\n\tset value(value) { setFloat01Attribute(this, 'value', value, this.min, this.max); }\n\n\t/** @type {number?} */\n\t#pointerId = null;\n\n\t#stopMove() {\n\t\tconst pointerId = this.#pointerId;\n\t\tif (pointerId === null) { return; }\n\t\tthis.#internals.states.delete('--moving');\n\t\tthis.#pointerId = null;\n\t\tthis.#trigger.releasePointerCapture(pointerId);\n\t}\n\n\t#shadow = (() => {\n\t\tconst shadow = this.attachShadow({mode:'closed'});\n\t\tshadow.appendChild(document.createElement('style')).textContent = style;\n\t\treturn shadow;\n\t})();\n\t#startArea = (() => {\n\t\tconst el = document.createElement('slot');\n\t\tel.name = 'start';\n\t\tel.className = 'start';\n\t\tthis.#shadow.appendChild(el);\n\t\treturn el;\n\t})();\n\t/** @readonly */\n\t#internals = this.attachInternals();\n\t#trigger = (() => {\n\t\tconst trigger = document.createElement('slot');\n\t\ttrigger.name = 'trigger';\n\t\ttrigger.tabIndex = 0;\n\t\ttrigger.className = 'trigger';\n\t\ttrigger.appendChild(document.createElement('div'));\n\t\tthis.#shadow.appendChild(trigger);\n\t\tlet offset = 0;\n\t\ttrigger.addEventListener('pointerdown', e => {\n\t\t\tif (this.hidden || this.disabled) { return; }\n\t\t\t// if (this.#shadow.activeElement !== trigger) { return; }\n\t\t\tconst { pointerId } = e;\n\t\t\tconst currentPointerId = this.#pointerId;\n\t\t\tif (![null, pointerId].includes(currentPointerId)) { return; }\n\t\t\tthis.#internals.states.add('--moving');\n\t\t\tthis.#pointerId = pointerId;\n\t\t\ttrigger.setPointerCapture(pointerId);\n\t\t\tswitch (getLayout(trigger).map((v, i) => v ? 2 ** i : 0).reduce((a, b) => a + b)) {\n\t\t\t\tcase 0: offset = -e.offsetX; break;\n\t\t\t\tcase 1: offset = -e.offsetY; break;\n\t\t\t\tcase 2: offset = e.offsetX - trigger.offsetWidth; break;\n\t\t\t\tcase 3: offset = e.offsetY - trigger.offsetHeight; break;\n\t\t\t}\n\t\t});\n\t\tconst areaEl = this;\n\t\t/**\n\t\t * @param {boolean} vertical\n\t\t * @returns {number}\n\t\t */\n\t\tconst getSize = vertical => {\n\t\t\tconst size = vertical\n\t\t\t\t? areaEl.clientHeight - trigger.offsetHeight\n\t\t\t\t: areaEl.clientWidth - trigger.offsetWidth;\n\t\t\treturn size;\n\t\t};\n\t\t/** @param {PointerEvent} e */\n\t\tconst updateMove = e => {\n\t\t\tconst [vertical, reverse] = getLayout(trigger);\n\t\t\tlet os = 0;\n\t\t\tswitch ([vertical, reverse].map((v, i) => v ? 2 ** i : 0).reduce((a, b) => a + b)) {\n\t\t\t\tcase 0: os = e.clientX - areaEl.getBoundingClientRect().left; break;\n\t\t\t\tcase 1: os = e.clientY - areaEl.getBoundingClientRect().top; break;\n\t\t\t\tcase 2: os = areaEl.getBoundingClientRect().right - e.clientX; break;\n\t\t\t\tcase 3: os = areaEl.getBoundingClientRect().bottom - e.clientY; break;\n\t\t\t}\n\t\t\tconst {max, min} = this;\n\t\t\tconst value = Math.max(min, Math.min((os + offset) / getSize(vertical), max));\n\t\t\tthis.setAttribute('value', String(value));\n\n\t\t};\n\t\ttrigger.addEventListener('pointermove', e => {\n\t\t\tconst { pointerId } = e;\n\t\t\tif (!trigger.hasPointerCapture(pointerId)) { return; }\n\t\t\tupdateMove(e);\n\t\t});\n\t\ttrigger.addEventListener('pointerup', e => {\n\t\t\tconst { pointerId } = e;\n\t\t\tif (pointerId !== this.#pointerId) { return; }\n\t\t\tupdateMove(e);\n\t\t\tthis.#stopMove();\n\t\t});\n\t\ttrigger.addEventListener('pointercancel', e => {\n\t\t\tconst { pointerId } = e;\n\t\t\tif (pointerId !== this.#pointerId) { return; }\n\t\t\tupdateMove(e);\n\t\t\tthis.#stopMove();\n\t\t});\n\t\ttrigger.addEventListener('keydown', e => {\n\t\t\tif (this.hidden || this.disabled || this.#pointerId !== null) { return; }\n\t\t\tif (this.#shadow.activeElement !== trigger) { return; }\n\t\t\tconst {max, min} = this;\n\t\t\tswitch (e.code) {\n\t\t\t\tcase 'Home': {\n\t\t\t\t\te.preventDefault();\n\t\t\t\t\tthis.setAttribute('value', String(Math.max(min, 0)));\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tcase 'End': {\n\t\t\t\t\te.preventDefault();\n\t\t\t\t\tthis.setAttribute('value', String(Math.min(1, max)));\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t\tconst [vertical, reverse] = getLayout(trigger);\n\t\t\tlet offset = 0;\n\t\t\tswitch (e.code) {\n\t\t\t\tcase 'ArrowUp': offset = vertical ? -1 : 0; break;\n\t\t\t\tcase 'ArrowDown': offset = vertical ? 1 : 0; break;\n\t\t\t\tcase 'ArrowLeft': offset = vertical ? 0 : -1; break;\n\t\t\t\tcase 'ArrowRight': offset = vertical ? 0 : 1; break;\n\t\t\t}\n\t\t\tif (!offset) { return; }\n\t\t\te.preventDefault();\n\t\t\tif (reverse) { offset = -offset; }\n\t\t\tif (e.ctrlKey) { offset *= 100; }\n\t\t\tif (e.shiftKey) { offset *= 10; }\n\n\t\t\tlet value = toFloat01(this.getAttribute('value'), 0.5, min, max);\n\t\t\tvalue = Math.max(min, Math.min(value + offset / getSize(vertical), max));\n\t\t\tthis.setAttribute('value', String(value));\n\t\t});\n\t\treturn trigger;\n\t})();\n\t#endArea = (() => {\n\t\tconst el = document.createElement('slot');\n\t\tel.name = 'end';\n\t\tel.className = 'end';\n\t\tthis.#shadow.appendChild(el);\n\t\treturn el;\n\t})();\n\t/**\n\t * @returns {void}\n\t */\n\tconnectedCallback() { }\n\t/**\n\t * @returns {void}\n\t */\n\tdisconnectedCallback() { this.#stopMove(); }\n\t/**\n\t * @returns {void}\n\t */\n\tadoptedCallback() { this.#stopMove(); }\n\t/**\n\t * @param {string} attrName\n\t * @param {string | null} oldVal\n\t * @param {string | null} newVal\n\t * @returns {void}\n\t * @protected\n\t */\n\tattributeChangedCallback(attrName, oldVal, newVal) {\n\t\tif (oldVal === newVal) { return; }\n\t\tswitch (attrName) {\n\t\t\tcase 'hidden': {\n\t\t\t\tif (!this.hidden) { break; }\n\t\t\t\tthis.#stopMove();\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase 'disabled': {\n\t\t\t\tif (newVal === null) {\n\t\t\t\t\tthis.#trigger.tabIndex = 0;\n\t\t\t\t} else {\n\t\t\t\t\tthis.#trigger.removeAttribute('tabindex');\n\t\t\t\t}\n\t\t\t\tthis.#stopMove();\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase 'min': case 'max': case 'value': {\n\t\t\t\tconst {value} = this;\n\t\t\t\tthis.#startArea.style.flex = `${value}`;\n\t\t\t\tthis.#endArea.style.flex = `${1 - value}`;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n}\n\ntry {\n\tcustomElements.define('nl-split', Split);\n} catch {}\n\nexport { Split as default };\n","import { Pagination as NlPagination } from '@neeloong/components'\n\nexport default class Pagination {\n\t#fns;\n\t#pagination;\n\tconstructor() {\n\t\tconst pagination = /** @type {NlPagination} */(document.createElement('nl-pagination'));\n\t\tpagination.size = 20;\n\t\tpagination.appendChild(/** @type {NlPagination.Value} */(document.createElement('nl-pagination-value'))).name=\"start\";\n\t\tpagination.appendChild(document.createTextNode('-'));\n\t\tpagination.appendChild(/** @type {NlPagination.Value} */(document.createElement('nl-pagination-value'))).name=\"end\";\n\t\tpagination.appendChild(document.createTextNode('/'));\n\t\tpagination.appendChild(/** @type {NlPagination.Value} */(document.createElement('nl-pagination-value'))).name=\"total\";\n\t\tpagination.appendChild(document.createElement('nl-pagination-prev')).innerText = '上一页';\n\t\tpagination.appendChild(document.createElement('nl-pagination-pager'));\n\t\tpagination.appendChild(document.createElement('nl-pagination-next')).innerText = '下一页';\n\t\tpagination.appendChild(document.createElement('nl-pagination-sizer'));\n\t\tconst fns = new Set();\n\t\t\n\t\tpagination.addEventListener('change', () => {\n\t\t\tfor (const fn of fns) {\n\t\t\t\tfn();\n\t\t\t}\n\t\t})\n\t\tthis.#fns = fns;\n\t\tthis.#pagination = pagination;\n\n\t}\n\tget root() {return this.#pagination; }\n\tget size() { return this.#pagination.size}\n\tset size(v) { this.#pagination.size = v}\n\tget page() { return this.#pagination.page}\n\tset page(v) { this.#pagination.page = v}\n\tget total() { return this.#pagination.total}\n\tset total(v) { this.#pagination.total = v}\n\t/**\n\t * \n\t * @param {(p: Pagination) => void} listen \n\t * @returns {() => void}\n\t */\n\tlisten(listen) {\n\t\tconst fns = this.#fns;\n\t\tconst f = () => listen(this);\n\t\tfns.add(f);\n\t\treturn () => {fns.delete(f)}\n\t}\n\tdestroy() {\n\t\t\n\t}\n}\n","/** @import { HomeContext } from '@yongdall/web' */\n/**\n *\n * @param {string} href\n * @param {string} title\n */\nfunction createLink(href, title) {\n\tconst a = document.createElement('a');\n\ta.href = href;\n\ta.title = title;\n\ta.style.display = 'block';\n\ta.appendChild(document.createTextNode(title));\n\treturn a;\n}\n\n\n/**\n * @param {HTMLElement} container\n */\nfunction renderHome(container) {\n}\n\n\n/**\n * \n * @param {HomeContext} homeContext \n */\nexport default function home(homeContext) {\n\thomeContext.listen('update', () => {\n\t\tconst { container } = homeContext;\n\t\tcontainer.innerHTML = '';\n\t\treturn renderHome(container);\n\t});\n}\n","import '@neeloong/components';\n/** @import { Menu } from '@yongdall/web' */\n/** @import {Collapse} from '@neeloong/components' */\nimport { neverAbortedSignal, watch } from '@yongdall/web';\n\n\n\n/**\n * \n * @param {HTMLElement} element \n * @returns {Iterable<Text>}\n */\nfunction* findTextNode(element) {\n\tconst walker = document.createTreeWalker(element, NodeFilter.SHOW_TEXT);\n\tfor (let node; node = walker.nextNode();) {\n\t\t// @ts-ignore\n\t\tyield node;\n\t}\n}\n/**\n * \n * @param {string[]} texts \n * @param {HTMLElement} element \n * @returns {Range[]}\n */\nfunction filter(texts, element) {\n\tconst ranges = [];\n\n\tconst textNodes = [...findTextNode(element)].filter(n => n.nodeValue?.length);\n\tconst indexes = textNodes.reduce((list, currentValue) => {\n\t\tconst index = list[list.length - 1]?.[1] || 0;\n\t\treturn /** @type {[number, number, Text][]} */([...list, [\n\t\t\tindex,\n\t\t\tindex + (currentValue.nodeValue?.length || 0),\n\t\t\tcurrentValue,\n\t\t]]);\n\t}, /** @type {[number, number, Text][]} */([]));\n\tconst fullText = textNodes.map(n => n.nodeValue).join('');\n\n\tlet startIndex = 0;\n\tfor (const searchText of texts) {\n\t\tconst index = fullText.indexOf(searchText, startIndex);\n\t\tif (index === -1) { return []; }\n\t\tconst endIndex = index + searchText.length;\n\n\t\tconst start = indexes.findLast(([start]) => start <= index);\n\t\tif (!start) { return []; }\n\t\tconst end = indexes.findLast(([, end]) => end >= endIndex);\n\t\tif (!end) { return []; }\n\t\tstartIndex = index + searchText.length;\n\n\n\t\tconst range = new Range();\n\t\trange.setStart(start[2], index - start[0]);\n\t\trange.setEnd(end[2], endIndex - start[0]);\n\t\tranges.push(range);\n\t}\n\treturn ranges;\n}\n/**\n * \n * @param {Element} root \n * @param {(Menu | null)[]} menus \n * @param {Menu.Renderer} create \n * @param {object} [options] \n * @param {string} [options.active] \n * @param {AbortSignal} [options.signal] \n * @param {string} [options.filter] \n */\nexport default function createNavMenu(root, menus, create, options = {}) {\n\t/** @type {Map<string, HTMLElement[]>} */\n\tconst menuMap = new Map();\n\t/** @type {HTMLElement?} */\n\tlet current = null;\n\t/** @type {HTMLElement[]} */\n\tconst allMenus = [];\n\t/** @type {(() => void)[]} */\n\tconst destroyList = [];\n\n\t/**\n\t * \n\t * @param {Menu.Button} button \n\t */\n\tfunction createButtons(button) {\n\t\tconst link = document.createElement('a');\n\t\tlink.href = button.path || '#';\n\t\tlink.appendChild(document.createTextNode(button.label || button.title || ''));\n\t\tlink.title = button.title || button.label || '';\n\t\treturn link;\n\t}\n\n\t/**\n\t * \n\t * @param {Menu} menu \n\t * @param {number} level \n\t * @returns {{el: HTMLElement; filter(show: boolean, t?: string[]?): Range[]} | null}\n\t */\n\tfunction renderMenu(menu, level) {\n\t\tconst { children } = menu;\n\t\tif (!children.length) {\n\t\t\tconst item = document.createElement('div');\n\t\t\tconst ac = new AbortController();\n\t\t\tconst result = create(menu, ac.signal);\n\t\t\tif (!result) {\n\t\t\t\tac.abort();\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\tdestroyList.push(() => { ac.abort(); });\n\t\t\titem.appendChild(result);\n\t\t\tfor (const button of menu.buttons || []) {\n\t\t\t\titem.appendChild(createButtons(button));\n\t\t\t}\n\t\t\titem.className = 'NavMenu-item';\n\t\t\tconst { page, path } = menu;\n\t\t\tif (page) {\n\t\t\t\tconst p = `${page}/${path}`;\n\t\t\t\tconst list = menuMap.get(p);\n\t\t\t\tif (list) {\n\t\t\t\t\tlist.push(item);\n\t\t\t\t} else {\n\t\t\t\t\tmenuMap.set(p, [item]);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn {\n\t\t\t\tel: item, filter(show, text) {\n\t\t\t\t\tconst list = text ? filter(text, result) : [];\n\t\t\t\t\titem.hidden = Boolean(!show && text && !list.length);\n\t\t\t\t\treturn list;\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t\tconst item = /** @type {Collapse} */(document.createElement('nl-collapse'));\n\t\titem.setAttribute('animation', '');\n\t\titem.setAttribute('menu', '');\n\t\tconst header = item.appendChild(document.createElement('div'));\n\t\theader.appendChild(document.createTextNode(menu.label || menu.title || ''));\n\t\theader.className = 'NavMenu-label';\n\t\theader.slot = 'label';\n\t\theader.style.flex = '1';\n\t\tfor (const button of menu.buttons || []) {\n\t\t\titem.appendChild(createButtons(button)).slot = 'label';\n\t\t}\n\t\tconst childrenMenu = renderChildren(item, children, level + 1);\n\t\tif (!childrenMenu.length) { return null; }\n\t\treturn {\n\t\t\tel: item, filter(show, text) {\n\t\t\t\tif (!text) {\n\t\t\t\t\tfor (const menu of childrenMenu) { menu.filter(show); }\n\t\t\t\t\titem.hidden = false;\n\t\t\t\t\titem.open = false;\n\t\t\t\t\treturn [];\n\t\t\t\t}\n\t\t\t\tconst self = filter(text, header);\n\t\t\t\tconst hasSelf = Boolean(show || self.length);\n\n\t\t\t\tconst ranges = childrenMenu.flatMap(v => v.filter(hasSelf, text));\n\t\t\t\titem.open = Boolean(ranges.length);\n\t\t\t\tconst list = [...self, ...ranges];\n\t\t\t\titem.hidden = !show && !list.length;\n\t\t\t\treturn list;\n\t\t\t}\n\t\t};\n\t}\n\t/**\n\t * \n\t * @param {Element} parent \n\t * @param {(Menu | null)[]} menus \n\t * @param {number} level \n\t * @returns \n\t */\n\tfunction renderChildren(parent, menus, level) {\n\t\tlet has = false;\n\t\tlet divider = false;\n\t\tlet children = [];\n\t\tfor (const menu of menus) {\n\t\t\tif (!menu) {\n\t\t\t\tif (!has) { continue; }\n\t\t\t\tdivider = true;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (divider) {\n\t\t\t\tdivider = false;\n\t\t\t\troot.appendChild(document.createElement('hr'));\n\t\t\t}\n\t\t\tconst item = renderMenu(menu, level);\n\t\t\tif (!item) { continue; }\n\t\t\tchildren.push(item);\n\t\t\thas = true;\n\t\t\tparent.appendChild(item.el);\n\t\t\tallMenus.push(item.el);\n\t\t\titem.el.style.setProperty('--NavMenu-level', String(level));\n\t\t}\n\t\treturn children;\n\t}\n\tconst menuList = renderChildren(root, menus, 0);\n\t/**\n\t * \n\t * @param {string} path \n\t * @returns \n\t */\n\tfunction set(path) {\n\t\tconst menu = menuMap.get(path)?.[0];\n\t\tif (!menu) { return; }\n\t\tconst list = [];\n\t\tlet parent = menu.parentElement;\n\t\tfor (; parent && parent !== root; parent = parent.parentElement) {\n\t\t\tlist.push(parent);\n\t\t}\n\t\tif (parent !== root) { return; }\n\t\tcurrent?.classList.remove('NavMenu-current');\n\t\tfor (const item of list) {\n\t\t\titem.setAttribute('open', '');\n\t\t}\n\t\tcurrent = menu;\n\t\tcurrent?.classList.add('NavMenu-current');\n\t}\n\tlet destroyed = false;\n\tfunction destroy() {\n\t\tif (destroyed) { return; }\n\t\tdestroyed = true;\n\t\tfor (const m of allMenus) {\n\t\t\tm.remove();\n\t\t}\n\t\tfor (const destroy of destroyList) {\n\t\t\tdestroy();\n\t\t}\n\t}\n\tconst signal = options.signal || neverAbortedSignal;\n\tif (signal.aborted) {\n\t\tdestroy();\n\t} else {\n\t\tsignal.addEventListener('abort', destroy, { once: true });\n\t}\n\twatch(() => options.active || '', active => {\n\t\tif (!active) { return }\n\t\tset(active);\n\t}, { signal, immediate: true });\n\t/**\n\t * \n\t * @param {string} text \n\t * @returns \n\t */\n\treturn text => {\n\t\t/** @type {string[]?} */\n\t\tlet texts = text.toLowerCase().split(/[\\s\\n]+/).filter(Boolean);\n\t\tif (!texts.length) { texts = null; }\n\t\treturn menuList.flatMap(v => v.filter(false, texts));\n\t}\n}\n","import { configuration, createComputed, createIcon, createState, effect, filterPermission, loadMenu, Menu, User } from '@yongdall/web';\nimport createNavMenu from '../menu/createNavMenu.mjs';\n\n\n\n\nexport const menuContainer = document.createElement('div');\n\n\nmenuContainer.style.display = 'flex';\nmenuContainer.style.flexDirection = 'column';\nconst header = menuContainer.appendChild(document.createElement('header'));\nheader.classList.add('NavMenu-header');\nconst filter = header.appendChild(document.createElement('input'));\nfilter.placeholder = '过滤菜单...';\nfilter.type = 'search'\nconst refreshButton = header.appendChild(document.createElement('button'));\nrefreshButton.appendChild(createIcon('refresh', true));\nrefreshButton.classList.add('icon');\nrefreshButton.title = '刷新';\n\n\nconst main = menuContainer.appendChild(document.createElement('main'));\nmain.style.flex = '1';\nmain.style.overflow = 'auto';\nmain.classList.add('NavMenu')\nlet k = 0;\nlet loaded = false;\n/** @type {ReturnType<typeof createNavMenu>?} */\nlet navMenu = null;\nfunction filterMenu() {\n\tconst list = navMenu?.(filter.value) || [];\n\tconst highlight = new Highlight(...list);\n\tCSS.highlights.set(\"NavMenu-filter-highlight\", highlight);\n}\nfilter.addEventListener('input', filterMenu);\n\nconst allMenus = createState(/** @type {(Menu | null)[]} */([]));\n\nconst currentMenus = createComputed(() => {\n\tconst permissions = User.permissions;\n\tconst menus = allMenus.get();\n\tif (!permissions) { return menus; }\n\n\treturn Menu.filter(menus, m => {\n\t\tconst permission = m.permission;\n\t\tif (!permission) { return true; }\n\t\treturn filterPermission(permission, permissions);\n\t});\n});\n/** @type {AbortController?} */\nlet ac = null;\neffect(() => {\n\tac?.abort();\n\tmain.innerHTML = '';\n\tac = new AbortController();\n\tnavMenu = createNavMenu(main, currentMenus.get(), Menu.createItem, {\n\t\tsignal: ac.signal,\n\t});\n\tfilterMenu();\n});\n\nexport async function refreshMenu(force = false) {\n\tif (refreshButton.disabled) { return }\n\trefreshButton.disabled =true;\n\t++k\n\tlet v = k;\n\tconst groupType = 'application'\n\tconst group = configuration.application || '';\n\tconst menus = await loadMenu(groupType, group, force);\n\tif (loaded && v !== k) { return }\n\trefreshButton.disabled = false;\n\tloaded = true;\n\t/** @type {Menu.Button[]} */\n\tconst buttons = [];\n\tallMenus.set(Menu.build(menus, groupType, group, buttons));\n}\nrefreshButton.addEventListener('click', () => refreshMenu(true));\n","import { configuration, createComputed, createIcon, effect, User } from '@yongdall/web';\nimport { cssPrefix } from '../styles/variables.mjs';\n\n\n/**\n * \n * @param {string} avatar \n * @param {AbortSignal} signal\n * @param {boolean} [button] \n */\nfunction createAvatar(avatar, signal, button) {\n\tif (!avatar) {\n\t\tconst svg = createIcon('user', signal);\n\t\tif (!button)\n\t\t\tsvg.setAttribute('fill-opacity', '0.5');\n\t\treturn svg;\n\t}\n\tconst img = document.createElement('img');\n\timg.src = avatar;\n\treturn img;\n\n}\n/**\n * \n * @param {HTMLElement} root \n * @param {boolean} [button] \n * @returns \n */\nexport function createUserAvatar(root, button) {\n\troot.classList.add(`${cssPrefix}-user-avatar`);\n\t/** @type {(() => void)[]} */\n\tconst destroyList = [];\n\t/** @type {Element} */\n\tlet sessionAvatarElement;\n\t/** @type {AbortController?} */\n\tlet sessionAvatarAbortController = null;\n\tconst ac = new AbortController();\n\tdestroyList.push(() => ac.abort());\n\tif (configuration.single) {\n\t\tconst ac = new AbortController();\n\t\tsessionAvatarElement = createIcon('singleUser', ac.signal);\n\t\tif (!button) {\n\t\t\tsessionAvatarElement.setAttribute('fill-opacity', '0.5');\n\t\t}\n\t\troot.appendChild(sessionAvatarElement);\n\t} else {\n\t\t/** @type {string?} */\n\t\tlet oldAvatar = '';\n\t\t/** @type {AbortController?} */\n\t\tlet sessionAbortController = new AbortController();\n\t\tsessionAvatarElement = createAvatar(oldAvatar, sessionAbortController.signal, button);\n\t\troot.appendChild(sessionAvatarElement);\n\t\tconst targetAvatar = createComputed(() => User.session?.avatar || '');\n\t\teffect(() => {\n\t\t\tconst avatar = targetAvatar.get();\n\t\t\tif (avatar === oldAvatar) { return; }\n\t\t\toldAvatar = avatar;\n\t\t\tsessionAbortController?.abort();\n\t\t\tsessionAbortController = new AbortController();\n\t\t\tconst newAvatar = createAvatar(oldAvatar, sessionAbortController.signal, button);\n\t\t\troot.replaceChild(newAvatar, sessionAvatarElement);\n\t\t\tsessionAvatarElement = newAvatar;\n\t\t}, ac.signal);\n\t\tdestroyList.push(() => {\n\t\t\tsessionAbortController?.abort();\n\t\t\tsessionAbortController = null;\n\t\t});\n\n\t}\n\tconst targetAvatar = createComputed(() => {\n\t\tconst target = User.target;\n\t\tconst session = User.session;\n\t\tif (!target) { return null; }\n\t\tif (target.id === (session?.id || '')) { return null; }\n\t\treturn target.avatar || '';\n\t});\n\t/** @type {string?} */\n\tlet oldTargetAvatar = null;\n\t/** @type {Element?} */\n\tlet targetAvatarElement = null;\n\t/** @type {AbortController?} */\n\tlet targetAbortController = null;\n\teffect(() => {\n\t\tconst avatar = targetAvatar.get();\n\t\tif (avatar === oldTargetAvatar) { return; }\n\t\toldTargetAvatar = avatar;\n\t\ttargetAvatarElement?.remove();\n\t\ttargetAvatarElement = null;\n\t\ttargetAbortController?.abort();\n\t\tif (avatar === null) { return; }\n\t\ttargetAbortController = new AbortController();\n\t\ttargetAvatarElement = createAvatar(avatar, targetAbortController.signal, button);\n\t\troot.insertBefore(targetAvatarElement, sessionAvatarElement);\n\t}, ac.signal);\n\tdestroyList.push(() => {\n\t\ttargetAbortController?.abort();\n\t\ttargetAbortController = null;\n\t});\n\treturn () => {\n\t\tfor (const f of destroyList) {\n\t\t\tf();\n\t\t}\n\t};\n\n}\n","import { effect, webRoot } from '@yongdall/web';\n/** @import { Menu } from '@yongdall/web' */\n\n\n\n/**\n * \n * @param {Menu} menu \n * @param {AbortSignal} signal \n * @returns {HTMLElement}\n */\nexport default function createMenuItem(menu, signal) {\n\tconst link = document.createElement('a');\n\tlink.appendChild(document.createTextNode(menu.label || menu.title || ''));\n\n\tconst { page, path, uri, target, command, script, click } = menu;\n\tfunction isDisabled() {\n\t\tconst disabled = menu.disabled;\n\t\treturn Boolean(typeof disabled === 'function' ? disabled() : disabled);\n\t}\n\n\teffect(() => {\n\t\t// @ts-ignore\n\t\tlink.disabled = isDisabled();\n\t}, signal);\n\n\tif (page) {\n\t\tlink.href = new URL(path?.[0] === '/' ? `${page}${path}` : `${page}/${path || ''}`, webRoot).href;\n\t\tif (target && typeof target === 'string') { link.target = target; }\n\t} else if (uri) {\n\t\tlink.href = uri;\n\t\tif (target !== '') { link.target = target ?? '_blank'; }\n\t} else if (typeof click === 'function') {\n\t\tlink.addEventListener('click', (e) => {\n\t\t\tif (isDisabled()) { return; }\n\t\t\tif (e.defaultPrevented) { return; }\n\t\t\tclick();\n\t\t});\n\t} else if (command) {\n\t\tlink.addEventListener('click', (e) => {\n\t\t\tif (isDisabled()) { return; }\n\t\t\tif (e.defaultPrevented) { return; }\n\t\t\t// TODO:\n\t\t});\n\t} else if (script) {\n\t\tlink.addEventListener('click', (e) => {\n\t\t\tif (isDisabled()) { return; }\n\t\t\tif (e.defaultPrevented) { return; }\n\t\t\t// TODO:\n\t\t});\n\n\t}\n\treturn link;\n\n}\n","import { configuration, createComputed, createIcon, createState, effect, Menu, User, userMenus } from '@yongdall/web';\nimport { createUserAvatar } from './userAvatar.mjs';\nimport { cssPrefix } from '../styles/variables.mjs';\nimport createNavMenu from '../menu/createNavMenu.mjs';\nimport createMenuItem from '../menu/createMenuItem.mjs';\n\nexport const userContainer = document.createElement('div');\nuserContainer.classList.add(`${cssPrefix}-user`);\nexport const userButton = document.createElement('div');\nuserButton.classList.add(`${cssPrefix}-user-button`);\ncreateUserAvatar(userButton, true);\nconst userInfo = userContainer.appendChild(document.createElement('span'));\nuserInfo.classList.add(`${cssPrefix}-user-info`);\nconst avatar = userInfo.appendChild(document.createElement('span'));\ncreateUserAvatar(avatar);\navatar.classList.add('avatar');\nconst username = userInfo.appendChild(document.createElement('span'));\nusername.classList.add('username');\nusername.innerText = '用户名';\nconst btns = userInfo.appendChild(document.createElement('span'));\nbtns.classList.add('btns');\n\nif (configuration.help) {\n\tconst help = btns.appendChild(document.createElement('a'));\n\thelp.href = configuration.help;\n\thelp.target = '_blank';\n\thelp.appendChild(createIcon('help', true));\n\thelp.title = '帮助';\n}\n\nconst exitButton = btns.appendChild(document.createElement('div'));\nexitButton.appendChild(createIcon('logout', true));\nexitButton.title = '退出登录';\neffect(() => {\n\texitButton.hidden = !User.current;\n});\nexitButton.addEventListener('click', () => User.exit());\n\neffect(() => {\n\tusername.innerText = User.current?.name || '';\n});\n\n\nconst allMenus = createState(/** @type {(Menu | null)[]} */([]));\n\nallMenus.set(Menu.fromDefine(userMenus, []));\n\nconst currentMenus = createComputed(() => {\n\tconst menus = allMenus.get();\n\tif (User.current) { return menus; }\n\treturn Menu.filter(menus, v=> !v.logged);\n});\n\nconst main = userContainer.appendChild(document.createElement('main'));\nmain.style.flex = '1';\nmain.style.overflow = 'auto';\nmain.classList.add('NavMenu');\n\n/** @type {AbortController?} */\nlet ac = null;\neffect(() => {\n\tac?.abort();\n\tmain.innerHTML = '';\n\tac = new AbortController();\n\tcreateNavMenu(main, currentMenus.get(), createMenuItem, {\n\t\tsignal: ac.signal,\n\t});\n});\n","\nimport { configuration, createIcon, toFileLink, webRoot } from '@yongdall/web';\nimport { cssPrefix } from './styles/variables.mjs';\n\nconst logoLink = document.createElement('a')\nlogoLink.classList.add(`${cssPrefix}-logo`);\nlogoLink.href = webRoot.href;\nconst logo = configuration.logo;\nconst logoImgLink = logo && toFileLink(logo);\n\nif (logoImgLink) {\n\tconst logoImg = logoLink.appendChild(document.createElement('img'));\n\tlogoImg.src = logoImgLink.href;\n\tlogoImg.classList.add('logo');\n} else {\n\tconst logoImg = logoLink.appendChild(createIcon('logo', true));\n\tlogoImg.classList.add('logo');\n}\nexport { logoLink }\n","/** @import { PageContext } from '@yongdall/web' */\n\n/**\n * @typedef {object} PageError\n * @property {string} title\n * @property {string} [description]\n */\n\n/** @type {Record<string, PageError>} */\nexport const errors = {\n\t404: {\n\t\ttitle: '您所请求的页面无法找到',\n\t\tdescription: '服务器无法正常提供信息。\\n目标页面可能已经被更改、删除或移到其他位置,或您所输入页面地址错误。',\n\t}\n};\n\n/**\n * @param {PageContext} ctx\n * @param {unknown} error\n */\nexport default function renderError(ctx, error) {\n\tif ((error ?? '') == '') {\n\t\tctx.container.appendChild(document.createTextNode('空页面'));\n\t\treturn;\n\t}\n\tconst e = (typeof error === 'number' || typeof error === 'string')\n\t\t&& Object.hasOwn(errors, error) && errors[error]\n\t\t|| errors['404'];\n\tconst title = e?.title || 'Error';\n\tconst info = e?.description;\n\tconst errorContainer = document.createElement('div');\n\tconst main = errorContainer.appendChild(document.createElement('div'));\n\tconst titleDiv = main.appendChild(document.createElement('div'));\n\tconst infoDiv = main.appendChild(document.createElement('div'));\n\terrorContainer.style.marginBlock = '8%';\n\terrorContainer.style.marginInline = 'auto';\n\terrorContainer.style.inlineSize = '600px';\n\terrorContainer.style.maxInlineSize = '100%';\n\terrorContainer.style.padding = '20px';\n\ttitleDiv.style.paddingBlock = '20px';\n\ttitleDiv.style.fontSize = '20px';\n\ttitleDiv.style.color = '#8e8e8e';\n\ttitleDiv.style.textAlign = 'center';\n\tinfoDiv.style.fontSize = '13px';\n\tinfoDiv.style.lineHeight = '1.3em';\n\tinfoDiv.style.color = '#b5b5b5';\n\ttitleDiv.appendChild(document.createTextNode(title));\n\tctx.title = title || 'Error';\n\tif (info && typeof info === 'string') {\n\t\tfor (const p of info.split('\\n')) {\n\t\t\tinfoDiv.appendChild(document.createTextNode(p));\n\t\t\tinfoDiv.appendChild(document.createElement('br'));\n\t\t}\n\t}\n\tctx.container.appendChild(errorContainer);\n\tctx.loading = false;\n}\n","import { cssPrefix } from '../styles/variables.mjs';\n\nexport const prefix = `${cssPrefix}-allSider-nav`\n\nexport const header = document.createElement('header');\nheader.className = `${prefix}-header`;\nexport const actions = header.appendChild(document.createElement('div'));\nactions.classList.add(`${prefix}-actions`)\nexport const sidebar = header.appendChild(document.createElement('div'));\nsidebar.classList.add(`${prefix}-sidebar`);\n","import { prefix, sidebar } from './dom.mjs';\nconst openedClassName = `${prefix}-open`\n/** @type {(() => void)?} */\nlet current = null;\n\nexport function closeSidebarWhenMobile() {\n\tif (window.innerWidth > 800) { return; }\n\tcurrent?.();\n}\n\nexport default class Sider {\n\t/** @readonly @type {HTMLElement} */\n\tbutton;\n\t/** @readonly @type {HTMLElement} */\n\tsider;\n\t/** @type {() => void} */\n\t#hide;\n\n\t#disabled = false;\n\tget disabled() { return this.#disabled; }\n\tset disabled(v) {\n\t\tif (v) {\n\t\t\tthis.disable();\n\t\t} else {\n\t\t\tthis.enable();\n\t\t}\n\t}\n\tdisable() {\n\t\tif (this.#disabled) { return; }\n\t\tthis.#disabled = true;\n\t\tconst hide = this.#hide;\n\t\tif (current === hide) {\n\t\t\thide();\n\t\t}\n\t\tthis.button.hidden = true;\n\t\tthis.sider.hidden = true;\n\t\t// TODO: 隐藏分组\n\t}\n\tenable() {\n\t\tif (!this.#disabled) { return; }\n\t\tthis.#disabled = false;\n\t\tthis.button.hidden = false;\n\t\t// TODO: 显示分组\n\t}\n\t#click = () => this.toggle()\n\t/**\n\t * \n\t * @param {HTMLElement} [siderContainer] \n\t * @param {HTMLElement} [buttonContainer] \n\t */\n\tconstructor(siderContainer, buttonContainer) {\n\t\tconst button = buttonContainer instanceof HTMLElement\n\t\t\t? buttonContainer\n\t\t\t: document.createElement('div');\n\t\tconst sider = siderContainer instanceof HTMLElement\n\t\t\t? siderContainer\n\t\t\t: document.createElement('div');\n\t\tbutton.tabIndex = 0\n\t\tbutton.classList.add(`${prefix}-button`)\n\t\tsider.hidden = true;\n\t\tsidebar.appendChild(sider);\n\t\tbutton.classList.add(`${prefix}-selectable`)\n\t\tconst hide = () => {\n\t\t\tcurrent = null;\n\t\t\tdocument.body.classList.remove(openedClassName);\n\t\t\tbutton.classList.remove(`${prefix}-selected`);\n\t\t\tsider.hidden = true;\n\t\t}\n\t\tbutton.addEventListener('click', this.#click);\n\t\tthis.#hide = hide;\n\t\tthis.button = button;\n\t\tthis.sider = sider;\n\t}\n\tget open() { return current === this.#hide; }\n\tset open(p) {\n\t\tif (p) {\n\t\t\tthis.show();\n\t\t} else {\n\t\t\tthis.hide();\n\t\t}\n\t}\n\tshow() {\n\t\tif (this.#disabled) { return; }\n\t\tconst hide = this.#hide;\n\t\tif (current === hide) { return }\n\t\tcurrent?.();\n\t\tcurrent = hide;\n\t\tdocument.body.classList.add(openedClassName);\n\t\tthis.button.classList.add(`${prefix}-selected`);\n\t\tthis.sider.hidden = false;\n\t}\n\ttoggle() {\n\t\tif (this.#disabled) { return; }\n\t\tconst hide = this.#hide;\n\t\tif (current === hide) {\n\t\t\thide();\n\t\t\treturn\n\t\t}\n\t\tthis.show();\n\t}\n\thide() {\n\t\tif (this.#disabled) { return; }\n\t\tconst hide = this.#hide;\n\t\tif (current !== hide) { return }\n\t\thide();\n\t}\n\tremove() {\n\t\tconst hide = this.#hide;\n\t\tif (current === hide) {\n\t\t\thide();\n\t\t}\n\t\tconst {button, sider} = this;\n\t\tbutton.remove();\n\t\tsider.remove();\n\t\tbutton.classList.remove(`${prefix}-button`)\n\t\tbutton.classList.remove(`${prefix}-selectable`)\n\t\tbutton.removeEventListener('click', this.#click);\n\t\tsider.hidden = false;\n\t\t// TODO: ...\n\t\t// TODO: 隐藏分组\n\t}\n}\nsidebar.addEventListener('click', (e) => {\n\tif (e.target !== e.currentTarget) { return }\n\tcurrent?.();\n})\n","import Sider, { closeSidebarWhenMobile } from './Sider.mjs';\nimport { prefix } from './dom.mjs';\n\n\n\nexport default class Group {\n\t/** @readonly */\n\troot = document.createElement('div');\n\t/** @type {Set<() => void>} */\n\t#children = new Set()\n\t/**\n\t * \n\t * @param {HTMLElement} parent \n\t */\n\tconstructor(parent) {\n\t\tconst root = this.root;\n\t\tparent.appendChild(root);\n\t\troot.className = `${prefix}-group`;\n\t}\n\tremove() {\n\t\tthis.root.remove();\n\t\tfor (const r of [...this.#children]) {\n\t\t\tr();\n\t\t}\n\t}\n\tcreateGroup() {\n\t\tconst group = new Group(this.root);\n\t\tconst children = this.#children;\n\t\tconst remove = () => {children.delete(remove); group. remove(); }\n\t\tchildren.add(remove);\n\t\treturn group;\n\t}\n\t/**\n\t * \n\t * @overload\n\t * @param {true} isLink \n\t * @returns {HTMLAnchorElement}\n\t */\n\t/**\n\t * \n\t * @overload\n\t * @param {boolean} [isLink] \n\t * @returns {HTMLElement}\n\t */\n\t/**\n\t * \n\t * @param {boolean} [isLink] \n\t * @returns {HTMLElement}\n\t */\n\tcreateAction(isLink) {\n\t\tconst btn = document.createElement(isLink ? 'a' : 'div');\n\t\tbtn.tabIndex = 0;\n\t\tbtn.classList.add(`${prefix}-button`);\n\t\tbtn.addEventListener('click', () => { closeSidebarWhenMobile(); });\n\t\tthis.root.appendChild(btn);\n\n\n\t\tconst children = this.#children;\n\t\tconst remove = () => {children.delete(remove); btn.remove(); }\n\t\tchildren.add(remove);\n\t\treturn btn;\n\t}\n\t/**\n\t * \n\t * @param {HTMLElement} [siderContainer] \n\t * @param {HTMLElement} [buttonContainer] \n\t */\n\tcreateSider(siderContainer, buttonContainer) {\n\t\tconst sider = new Sider(siderContainer, buttonContainer);\n\t\tthis.root.appendChild(sider.button);\n\n\n\t\tconst children = this.#children;\n\t\tconst remove = () => {children.delete(remove); sider.remove(); }\n\t\tchildren.add(remove);\n\t\treturn sider;\n\t}\n}\n","import Group from './Group.mjs';\nimport { actions } from './dom.mjs';\nexport const pageSiderContainer = document.createElement('div');\nexport const startGroup = new Group(actions);\nexport const pageGroup = new Group(actions);\nexport const mainGroup = new Group(actions);\nexport const span = actions.appendChild(document.createElement('span'));\nexport const endGroup = new Group(actions);\n\nexport const pageSider = pageGroup.createSider(pageSiderContainer);\npageSider.button.innerText = '页面';\npageSider.disabled = true;\n","import { pageSider, pageSiderContainer } from './sides.mjs';\n\nimport { PageSider, Page } from '@yongdall/web';\n\n\nclass Sider extends PageSider {\n\t#page;\n\t#parent;\n\t/**\n\t * @param {AllSiderPage} page \n\t * @param {ParentNode} parent \n\t * @param {Node?} next \n\t * @param {boolean} inserted \n\t * @param {AbortSignal} signal \n\t * @param {ParentNode} parent \n\t * @returns \n\t */\n\tconstructor(page, parent, next, inserted, signal) {\n\t\tsuper(parent, next, inserted, signal);\n\t\tthis.#page = page;\n\t\tthis.#parent = parent;\n\t\tsignal.addEventListener('abort', () => {\n\t\tthis.#hidden();\n\t\t})\n\t}\n\tinsert() {\n\t\tsuper.insert();\n\n\t\tif (this.#page.show) { pageSider.disabled = false; }\n\t}\n\t#hidden() {\n\t\tif (this.#page.show && !this.#parent.children.length) {\n\t\t\tpageSider.disabled = true;\n\t\t}\n\t}\n\tremove() {\n\t\tsuper.remove();\n\t\tthis.#hidden();\n\t}\n\n}\n\nexport default class AllSiderPage extends Page {\n\t#sides = (() => {\n\t\tconst sides = document.createElement('div');\n\t\tsides.classList.add('Page-sides');\n\t\tpageSiderContainer.appendChild(sides);\n\t\treturn sides;\n\t})();\n\tdestroy() {\n\t\tif (!super.destroy()) { return false; }\n\t\tthis.#sides.remove();\n\t\treturn true;\n\t}\n\t/**\n\t * \n\t * @param {boolean} show \n\t */\n\ttoggle(show) {\n\t\tsuper.toggle(show);\n\t\t// TODO: 区别区域\n\t\tpageSider.disabled = !(show && this.#sides.children.length);\n\t}\n\tget siderOpen() { return pageSider.open; }\n\tset siderOpen(open) {\n\t\t// TODO: 判断是不是当前的\n\t\tif (open) {\n\t\t\tpageSider.show();\n\t\t} else {\n\t\t\tpageSider.hide();\n\t\t}\n\t}\n\t/**\n\t * \n\t * @param {boolean} [inserted] \n\t * @param {AbortSignal} [signal] \n\t * @returns {PageSider?}\n\t */\n\tcreateSider(inserted, signal) {\n\t\tif (this.destroyed) { return null; }\n\t\tif (signal?.aborted) { return null; }\n\t\tconst parent = this.#sides;\n\t\treturn new Sider(\n\t\t\tthis,\n\t\t\tparent,\n\t\t\tnull,\n\t\t\tinserted !== false,\n\t\t\tsignal instanceof AbortSignal\n\t\t\t\t? AbortSignal.any([signal, this.signal])\n\t\t\t\t: this.signal\n\t\t);\n\t}\n\t/**\n\t * \n\t * @param {boolean} show \n\t */\n\tconstructor(show) {\n\t\tsuper(show);\n\t\tif (show) {\n\t\t\tpageSider.disabled = !this.#sides.children.length;\n\t\t}\n\t}\n}\n","import '@neeloong/components';\n/** @import { Menu } from '@yongdall/web' */\n/** @import { Menu as NeeloongMenu } from '@neeloong/components'*/\n\n\n/**\n * \n * @param {(Menu | null)[]} menus \n * @param {Menu.Renderer} create \n * @param {AbortSignal} signal \n */\nexport default function createMenu(menus, create, signal) {\n\t/** @type {NeeloongMenu} */\n\t// @ts-ignore\n\tconst parent = document.createElement('nl-menu');\n\tlet has = false;\n\tlet divider = false;\n\tconst createDivider = () => {\n\t\thas = true;\n\t\tif (!divider) { return; }\n\t\tdivider = false;\n\t\tparent.appendChild(document.createElement('hr'));\n\t};\n\tfor (const menu of menus) {\n\t\tif (!menu) {\n\t\t\tif (!has) { continue; }\n\t\t\tdivider = true;\n\t\t\tcontinue;\n\t\t}\n\t\tconst { children } = menu;\n\t\tif (!children?.length) {\n\t\t\tconst ac = new AbortController();\n\t\t\tconst result = create(menu, AbortSignal.any([signal, ac.signal]));\n\t\t\tif (!result) {\n\t\t\t\tac.abort();\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tcreateDivider();\n\t\t\tparent.appendChild(result);\n\t\t\tcontinue;\n\t\t}\n\t\tconst child = createMenu(children, create, signal);\n\t\tif (!child) { continue; }\n\t\tcreateDivider();\n\n\t\tconst item = parent.appendChild(child);\n\t\tconst header = item.insertBefore(document.createElement('div'), item.firstChild);\n\t\theader.appendChild(document.createTextNode(menu.label || menu.title || ''));\n\t\theader.slot = 'label';\n\t}\n\tif (!has) { return null; }\n\treturn parent;\n}\n","import '@neeloong/components';\nimport createMenu from './createMenu.mjs';\n/** @import { Menu } from '@yongdall/web' */\n/**\n * \n * @param {(Menu | null)[]} menus \n * @param {Menu.Renderer} create \n * @param {AbortSignal} signal \n */\nexport default function createMenuButtons(menus, create, signal) {\n\tif (signal.aborted) { return null; }\n\tconst root = document.createElement('div');\n\tlet has = false;\n\tlet divider = false;\n\tconst createDivider = () => {\n\t\thas = true;\n\t\tif (!divider) { return; }\n\t\tdivider = false;\n\t\t// TODO: 分割线\n\t};\n\tfor (const menu of menus) {\n\t\tif (!menu) {\n\t\t\tif (!has) { continue; }\n\t\t\tdivider = true;\n\t\t\tcontinue;\n\t\t}\n\t\tconst { children } = menu;\n\t\tif (!children?.length) {\n\t\t\tconst ac = new AbortController();\n\t\t\tconst result = create(menu, AbortSignal.any([signal, ac.signal]));\n\t\t\tif (!result) {\n\t\t\t\tac.abort();\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tcreateDivider();\n\t\t\tconst button = root.appendChild(document.createElement('button'));\n\t\t\tbutton.appendChild(result);\n\t\t\tcontinue;\n\t\t}\n\t\tconst child = createMenu(children, create, signal);\n\t\tif (!child) { continue; }\n\t\tcreateDivider();\n\t\tconst button = root.appendChild(document.createElement('button'));\n\t\tbutton.appendChild(document.createTextNode(menu.label || menu.title || ''));\n\t\tchild.targetElement = button;\n\t\tbutton.addEventListener('click', () => child.show?.());\n\t\troot.appendChild(child);\n\t}\n\tif (!root.childNodes.length) { return null; }\n\troot.classList.add('MenuButtons');\n\treturn root;\n}\n","import '@neeloong/components';\nimport createMenu from './createMenu.mjs';\nimport { createIcon } from '@yongdall/web';\n/** @import { Menu } from '@yongdall/web' */\n/**\n * \n * @param {(Menu | null)[]} menus \n * @param {Menu?} menu\n * @param {Menu.Renderer} create \n * @param {AbortSignal} signal \n */\nexport default function createMenuButton(menus, menu, create, signal) {\n\tconst root = document.createElement('div');\n\tconst child = createMenu(menus, create, signal);\n\tif (!child) { return null; }\n\tconst button = root.appendChild(document.createElement('button'));\n\tconst label = menu?.label || menu?.title || '';\n\tif (label) {\n\t\tbutton.appendChild(document.createTextNode(label));\n\t} else {\n\t\tbutton.appendChild(createIcon(menu?.icon || 'more', signal));\n\t}\n\tchild.targetElement = button;\n\tbutton.addEventListener('click', () => child.show());\n\troot.appendChild(child);\n\treturn root;\n}\n","/** @import { Theme } from '@yongdall/web' */\nimport { createIcon, root as rootContainer } from '@yongdall/web';\nimport { cssPrefix } from '../styles/variables.mjs';\nimport pageManager, { activityContainer, setMode } from '../pageManager/index.mjs';\n\nimport List from '../components/List.mjs';\nimport Pagination from '../components/Pagination.mjs';\nimport { default as home } from '../home/index.mjs';\nimport { menuContainer, refreshMenu } from '../workspace/index.mjs';\nimport { userButton, userContainer } from '../user/index.mjs';\nimport { logoLink } from '../logo.mjs';\nimport renderError from '../error/index.mjs';\n\nimport { actions, header } from './dom.mjs';\nimport { closeSidebarWhenMobile } from './Sider.mjs';\nimport { endGroup, startGroup } from './sides.mjs';\nimport AllSiderPage from './AllSiderPage.mjs';\nimport createMenuButtons from '../menu/createMenuButtons.mjs';\nimport createMenuItem from '../menu/createMenuItem.mjs';\nimport createMenuButton from '../menu/createMenuButton.mjs';\n\n\n\n/**\n * \n * @type {Theme}\n */\nexport default {\n\tcomponents: { List, Pagination, createMenuButtons, createMenuItem, createMenuButton },\n\tpageManager,\n\telements: [rootContainer, header],\n\tclassNames: [cssPrefix, `${cssPrefix}-allSider`],\n\tstyleFiles: ['theme-allSider.css'],\n\thome,\n\trootClassName: `${cssPrefix}-root`,\n\tcreatePage(show) { return new AllSiderPage(show); },\n\trenderError(ctx, error) { renderError(ctx, error); },\n\tsetup(signal) {\n\t\tsetMode(false);\n\t\tlogoLink.addEventListener('click', () => { closeSidebarWhenMobile(); }, {signal});\n\t\tactions.insertBefore(logoLink, actions.firstElementChild);\n\n\t\tconst workspaceSider = startGroup.createSider(menuContainer);\n\t\trefreshMenu(true);\n\t\tworkspaceSider.button.appendChild(createIcon('menu', signal));\n\t\tworkspaceSider.button.title = '菜单';\n\t\tconst activitySider = startGroup.createSider(activityContainer);\n\t\tactivitySider.button.appendChild(createIcon('activity', signal));\n\t\tactivitySider.button.title = '活动';\n\n\t\tconst userSider = endGroup.createSider(userContainer, userButton);\n\n\t\tsignal.addEventListener('abort', () => {\n\t\t\tlogoLink.remove();\n\t\t\tworkspaceSider.remove();\n\t\t\tactivitySider.remove();\n\t\t\tuserSider.remove();\n\t\t}, {once: true});\n\t},\n\n};\n","/** @import { Theme } from '@yongdall/web' */\nimport { Page, root as rootContainer } from '@yongdall/web';\nimport { configuration, createIcon, effect } from '@yongdall/web';\n\nimport { cssPrefix } from '../styles/variables.mjs';\nimport List from '../components/List.mjs';\nimport Pagination from '../components/Pagination.mjs';\nimport { default as home } from '../home/index.mjs';\nimport { menuContainer, refreshMenu } from '../workspace/index.mjs';\nimport { userButton, userContainer } from '../user/index.mjs';\nimport { logoLink } from '../logo.mjs';\nimport renderError from '../error/index.mjs';\n\nimport createMenuButtons from '../menu/createMenuButtons.mjs';\nimport createMenuItem from '../menu/createMenuItem.mjs';\nimport createMenuButton from '../menu/createMenuButton.mjs';\n\n\n\nconst prefix = `${cssPrefix}-base`;\nconst styleFiles = ['theme-base.css'];\n\nconst header = document.createElement('header');\nconst actions = header.appendChild(document.createElement('div'));\nactions.classList.add(`${prefix}-header`);\nconst sidebar = header.appendChild(document.createElement('div'));\nsidebar.classList.add(`${prefix}-sidebar`);\n\nconst menuButton = actions.appendChild(createIcon('menu', true));\nmenuButton.classList.add(`${prefix}-menu-button`);\n\nconst titleSpan = actions.appendChild(document.createElement('div'));\ntitleSpan.classList.add(`${prefix}-header-title`);\ntitleSpan.innerText = configuration.title || configuration.company || '';\n\nactions.appendChild(document.createElement('span'));\n\nconst openedClassName = `${prefix}-menu-open`;\n\nmenuButton.addEventListener('click', () => {\n\tdocument.body.classList.toggle(openedClassName);\n});\n\n\nsidebar.addEventListener('click', (e) => {\n\tif (e.target !== e.currentTarget) { return; }\n\tdocument.body.classList.remove(openedClassName);\n});\n\n\n\n/**\n * \n * @type {Theme}\n */\nexport default {\n\tcomponents: { List, Pagination, createMenuButtons, createMenuItem, createMenuButton },\n\tpageManager(page) {\n\t\tlet shown = false;\n\t\teffect(() => {\n\t\t\tif (!page.current) {\n\t\t\t\tif (shown) { page.destroy(); }\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tshown = true;\n\t\t\tdocument.title = [\n\t\t\t\tpage ? page.title : '',\n\t\t\t\tconfiguration.title || '拥道YongDall',\n\t\t\t].filter(Boolean).join(' | ');\n\t\t}, page.signal);\n\t},\n\telements: [header, rootContainer],\n\tclassNames: [cssPrefix, prefix],\n\tstyleFiles,\n\thome,\n\trootClassName: `${cssPrefix}-root`,\n\tcreatePage(show) { return new Page(show); },\n\trenderError(ctx, error) { renderError(ctx, error); },\n\tsetup(signal) {\n\t\tlogoLink.addEventListener('click', () => {\n\t\t\tif (window.innerWidth > 800) { return; }\n\t\t\tdocument.body.classList.remove(openedClassName);\n\t\t}, { signal });\n\t\tactions.insertBefore(logoLink, titleSpan);\n\n\t\tsidebar.appendChild(menuContainer);\n\n\t\trefreshMenu(true);\n\n\t\tdocument.body.appendChild(userContainer);\n\t\tuserContainer.setAttribute('popover', 'auto');\n\t\tuserButton.addEventListener('click', () => { userContainer.showPopover(); }, { signal });\n\n\t\tactions.appendChild(userButton);\n\n\n\n\t\tsignal.addEventListener('abort', () => {\n\t\t\tlogoLink.remove();\n\t\t\tmenuContainer.remove();\n\t\t\tuserContainer.removeAttribute('popover');\n\t\t\tuserContainer.remove();\n\t\t\tuserButton.remove();\n\t\t}, { once: true });\n\t},\n\n};\n","import { configuration, createIcon } from '@yongdall/web';\nimport { cssPrefix } from '../styles/variables.mjs';\n\nexport const prefix = `${cssPrefix}-tabs`;\n\nexport const header = document.createElement('header');\nexport const actions = header.appendChild(document.createElement('div'));\nactions.classList.add(`${prefix}-header`);\nexport const sidebar = header.appendChild(document.createElement('div'));\nsidebar.classList.add(`${prefix}-sidebar`);\n\nconst menuButton = actions.appendChild(createIcon('menu', true));\nmenuButton.classList.add(`${prefix}-menu-button`);\n\nexport const titleSpan = actions.appendChild(document.createElement('div'));\ntitleSpan.classList.add(`${prefix}-header-title`);\ntitleSpan.innerText = configuration.title || configuration.company || ''\n\nexport const span = actions.appendChild(document.createElement('span'));\n\n\nconst openedClassName = `${prefix}-menu-open`;\n\nmenuButton.addEventListener('click', () => {\n\tdocument.body.classList.toggle(openedClassName);\n});\n\n\nexport function closeSidebarWhenMobile() {\n\tif (window.innerWidth > 800) { return; }\n\tdocument.body.classList.remove(openedClassName);\n}\nsidebar.addEventListener('click', (e) => {\n\tif (e.target !== e.currentTarget) { return; }\n\tdocument.body.classList.remove(openedClassName);\n});\n","/** @import { Theme } from '@yongdall/web' */\nimport { Page, root as rootContainer } from '@yongdall/web';\nimport { cssPrefix } from '../styles/variables.mjs';\nimport pageManager, { activityContainer, setMode } from '../pageManager/index.mjs';\n\nimport List from '../components/List.mjs';\nimport Pagination from '../components/Pagination.mjs';\nimport { default as home } from '../home/index.mjs';\nimport { menuContainer, refreshMenu } from '../workspace/index.mjs';\nimport { userButton, userContainer } from '../user/index.mjs';\nimport { logoLink } from '../logo.mjs';\nimport renderError from '../error/index.mjs';\n\nimport { actions, closeSidebarWhenMobile, titleSpan } from './dom.mjs';\nimport { header, sidebar } from './dom.mjs';\nimport createMenuButtons from '../menu/createMenuButtons.mjs';\nimport createMenuItem from '../menu/createMenuItem.mjs';\nimport createMenuButton from '../menu/createMenuButton.mjs';\n\n\n\n/**\n * \n * @type {Theme}\n */\nexport default {\n\tcomponents: { List, Pagination, createMenuButtons, createMenuItem, createMenuButton },\n\tpageManager,\n\telements: [header, rootContainer],\n\tclassNames: [cssPrefix, `${cssPrefix}-tabs`],\n\tstyleFiles: ['theme-tabs.css'],\n\thome,\n\trootClassName: `${cssPrefix}-root`,\n\tcreatePage(show) { return new Page(show); },\n\trenderError(ctx, error) { renderError(ctx, error);},\n\tsetup(signal) {\n\t\tsetMode(true);\n\t\tlogoLink.addEventListener('click', () => { closeSidebarWhenMobile(); }, {signal});\n\t\tactions.insertBefore(logoLink, titleSpan);\n\t\theader.appendChild(activityContainer);\n\n\t\tsidebar.appendChild(menuContainer);\n\n\t\trefreshMenu(true);\n\n\t\tdocument.body.appendChild(userContainer);\n\t\tuserContainer.setAttribute('popover', 'auto')\n\t\tuserButton.addEventListener('click', () => { userContainer.showPopover(); }, {signal});\n\n\t\tactions.appendChild(userButton);\n\n\n\n\t\tsignal.addEventListener('abort', () => {\n\t\t\tlogoLink.remove();\n\t\t\tactivityContainer.remove();\n\t\t\tmenuContainer.remove();\n\t\t\tuserContainer.removeAttribute('popover')\n\t\t\tuserContainer.remove();\n\t\t\tuserButton.remove();\n\t\t}, {once: true});\n\t},\n\n};\n"],"x_google_ignoreList":[3,4,5,6,7,8,9,10,11,12,13,14,15,16,17],"mappings":"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"}
|