@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/hooks.mjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"hooks.mjs","names":["createShow","createInputCell","createShow","getValue","createInput","Component","createInputCell","getValue","createInput","Component","createInputCell","createShow","getValue","createInput","Component","createInputCell","createShow","getValue","createInput","Component","createInputCell","createShow","getValue","createInput","Component","createInputCell","createShow","Component","getValue","createInput","Component","createInputCell","createShow","getValue","createInput","Component","createInputCell","createShow","getValue","createInput","Component","createInputCell","getValue","createInput","Component","createInputCell","createShow","getValue","createInput","Component","createInputCell","createShow","getValue","createInput","Component","createInputCell","createShow","#shadowRoot","#dropdown","#style","#input","#dropdownList","#onInput","#onFocus","#current","#currentValue","#onSelect","#list","#open","#currentNode","#selectItem","#running","#r","#move","#clickOther","#mounted","#updateOpen","#openDropdown","#closeDropdown","loadOptions","Component","Component","createInput","Component","getValue","createInput","Component","getValue","createInput","Component","createInput","Component","createInput","Component","Component","createInput","Component","createInput","Component","createInput","Component","createInput","Component","Component","loadOptions","Component","textInput","textFilter","stringInput","stringFilter","boolInput","boolFilter","floatInput","floatFilter","i32Input","i32Filter","i64Input","i64Filter","dateInput","dateFilter","timeInput","timeFilter","uuidInput","uuidFilter","datetimeInput","datetimeFilter","passwordInput","uriInput","uriFilter","documentInput","documentFilter","selectInput","selectFilter","permissionsInput"],"sources":["../../packages/theme/inputs/createInputCell.mjs","../../packages/theme/inputs/text.mjs","../../packages/theme/inputs/float.mjs","../../packages/theme/inputs/i32.mjs","../../packages/theme/inputs/i64.mjs","../../packages/theme/inputs/string.mjs","../../packages/theme/inputs/bool.mjs","../../packages/theme/inputs/date.mjs","../../packages/theme/inputs/time.mjs","../../packages/theme/inputs/datetime.mjs","../../packages/theme/inputs/password.mjs","../../packages/theme/inputs/uri.mjs","../../packages/theme/inputs/uuid.mjs","../../packages/theme/inputs/YongdallSelect.mjs","../../packages/theme/inputs/document.mjs","../../packages/theme/inputs/select.mjs","../../packages/theme/inputs/permissions.mjs","../../packages/theme/filters/createInputCell.mjs","../../packages/theme/filters/text.mjs","../../packages/theme/filters/float.mjs","../../packages/theme/filters/i32.mjs","../../packages/theme/filters/i64.mjs","../../packages/theme/filters/string.mjs","../../packages/theme/filters/bool.mjs","../../packages/theme/filters/date.mjs","../../packages/theme/filters/time.mjs","../../packages/theme/filters/datetime.mjs","../../packages/theme/filters/uri.mjs","../../packages/theme/filters/uuid.mjs","../../packages/theme/filters/document.mjs","../../packages/theme/filters/select.mjs","../../packages/theme/hooks.mjs"],"sourcesContent":["/** @import { FieldContext } from '@yongdall/web' */\nimport { effect } from '@yongdall/web';\n\n/**\n * \n * @param {FieldContext} ctx\n * @returns {[HTMLElement, (v?: string) => void]}\n */\nexport function createShow(ctx) {\n\tconst inputRoot = document.createElement('div')\n\tconst input = inputRoot;\n\tinput.style.overflow = 'hidden';\n\tinput.style.whiteSpace = 'nowrap';\n\tinput.style.textOverflow = 'ellipsis';\n\t\n\tctx.listen('scrollIntoView', () => inputRoot.scrollIntoView());\n\treturn [inputRoot, v => { input.title = input.innerText = v ?? ''; }];\n\n}\n\n/**\n * @template T\n * @param {FieldContext} ctx\n * @param {(ctx: FieldContext, cb: (v: string) => void) => [HTMLElement, (v?: string) => void]} create\n * @param {(ctx: FieldContext, cb: (v: string) => void) => [HTMLElement, (v?: string) => void]} createShow\n * @param {(v: string, nullable?: boolean | undefined)=> T | null} getValue\n * @param {T} initValue\n * @returns {HTMLElement}\n */\nexport default function createInputCell(ctx,\n\tcreate,\n\tcreateShow,\n\tgetValue,\n\tinitValue,\n\t) {\n\n\tconst editable = ctx.editable;\n\n\t/** @type {T?} */\n\tlet value = ctx.field?.nullable ? null : initValue;\n\tconst [input, set] = (editable ? create : createShow)(ctx, v => {\n\t\tvalue = getValue(v, ctx.field?.nullable);\n\t\tctx.value = value;\n\t});\n\t/**\n\t * \n\t * @param {*} v \n\t * @param {boolean} [force] \n\t * @returns \n\t */\n\tfunction update(v, force) {\n\t\tif (!force && v === value) { return }\n\t\tvalue = v;\n\t\tset(v);\n\t}\n\tupdate(ctx.value, true);\n\teffect(() => update(ctx.value), ctx.signal);\n\treturn input;\n}\n","/** @import { FieldComponent, FieldContext } from '@yongdall/web' */\nimport { effect } from '@yongdall/web';\nimport createInputCell from './createInputCell.mjs';\n\n/**\n * \n * @param {FieldContext} ctx\n * @returns {[HTMLElement, (v?: string) => void]}\n */\nfunction createShow(ctx) {\n\tconst inputRoot = document.createElement('div')\n\tconst input = inputRoot;\n\tctx.listen('scrollIntoView', () => inputRoot.scrollIntoView());\n\treturn [inputRoot, v => { input.innerText = v ?? ''; }];\n\n}\n/**\n* \n* @param {string} v \n* @param {boolean} [nullable] \n* @returns {string?}\n*/\n\nfunction getValue(v, nullable) {\n\treturn v || !nullable ? v : null;\n}\n/**\n * \n * @param {FieldContext} ctx\n * @param {(v: string) => void} cb \n * @returns {[HTMLElement, (v?: string) => void]}\n */\nfunction createInput(ctx, cb) {\n\tconst input = document.createElement('textarea');\n\tinput.addEventListener('input', () => cb(input.value));\n\tinput.addEventListener('input', (e) => ctx.emit('input', e));\n\tinput.addEventListener('change', (e) => ctx.emit('change', e));\n\tinput.addEventListener('focus', (e) => ctx.emit('focus', e));\n\tinput.addEventListener('blur', (e) => ctx.emit('blur', e));\n\teffect(() => input.disabled = Boolean(ctx.readonly || ctx.disabled), ctx.signal);\n\teffect(() => input.placeholder = ctx.placeholder, ctx.signal);\n\tctx.listen('focus', () => input.focus());\n\tctx.listen('scrollIntoView', () => input.scrollIntoView());\n\treturn [input, v => { input.value = v ?? ''; }];\n}\n/** @type {FieldComponent} */\nconst Component = ctx => {\n\treturn createInputCell(ctx, createInput, createShow, getValue, '');\n};\n\nexport default Component;\n","/** @import { FieldComponent, FieldContext } from '@yongdall/web' */\n\nimport { effect } from '@yongdall/web';\nimport createInputCell, { createShow } from './createInputCell.mjs';\n\n/**\n * \n * @param {string} v \n * @param {boolean} [nullable] \n* @returns {number?}\n */\nfunction getValue(v, nullable) {\n\tconst value = parseFloat(v);\n\tif (Number.isFinite(value)) {\n\t\treturn value;\n\t} else {\n\t\treturn !nullable ? 0 : null;\n\t}\n\n}\n/**\n * \n * @param {FieldContext} ctx\n * @param {(v: string) => void} cb \n * @returns {[HTMLElement, (v?: string) => void]}\n */\nfunction createInput(ctx, cb) {\n\tconst input = document.createElement('input');\n\tinput.type = 'number';\n\tinput.addEventListener('input', () => cb(input.value));\n\tinput.addEventListener('input', (e) => ctx.emit('input', e));\n\tinput.addEventListener('change', (e) => ctx.emit('change', e));\n\tinput.addEventListener('focus', (e) => ctx.emit('focus', e));\n\tinput.addEventListener('blur', (e) => ctx.emit('blur', e));\n\teffect(() => input.disabled = Boolean(ctx.readonly || ctx.disabled), ctx.signal);\n\teffect(() => input.placeholder = ctx.placeholder, ctx.signal);\n\tctx.listen('focus', () => input.focus());\n\tctx.listen('scrollIntoView', () => input.scrollIntoView());\n\treturn [input, v => { input.value = v ?? ''; }];\n}\n\n/** @type {FieldComponent} */\nconst Component = ctx => {\n\treturn createInputCell(ctx, createInput, createShow, getValue, 0);\n}\n\nexport default Component;\n","/** @import { FieldComponent, FieldContext } from '@yongdall/web' */\nimport { effect } from '@yongdall/web';\nimport createInputCell, { createShow } from './createInputCell.mjs';\n\n/**\n * \n * @param {string} v \n * @param {boolean} [nullable] \n* @returns {number?}\n */\nfunction getValue(v, nullable) {\n\tconst value = parseInt(v);\n\tif (Number.isFinite(value)) {\n\t\treturn value\n\t} else {\n\t\treturn !nullable ? 0 : null;\n\t}\n\n}\n/**\n * \n * @param {FieldContext} ctx\n * @param {(v: string) => void} cb \n * @returns {[HTMLElement, (v?: string) => void]}\n */\nfunction createInput(ctx, cb) {\n\tconst input = document.createElement('input');\n\tinput.type = 'number';\n\tinput.addEventListener('input', () => cb(input.value));\n\tinput.addEventListener('input', (e) => ctx.emit('input', e));\n\tinput.addEventListener('change', (e) => ctx.emit('change', e));\n\tinput.addEventListener('focus', (e) => ctx.emit('focus', e));\n\tinput.addEventListener('blur', (e) => ctx.emit('blur', e));\n\teffect(() => input.disabled = Boolean(ctx.readonly || ctx.disabled), ctx.signal);\n\teffect(() => input.placeholder = ctx.placeholder, ctx.signal);\n\tctx.listen('focus', () => input.focus());\n\tctx.listen('scrollIntoView', () => input.scrollIntoView());\n\treturn [input, v => { input.value = v ?? ''; }];\n\n}\n/** @type {FieldComponent} */\nconst Component = ctx => {\n\treturn createInputCell(ctx, createInput, createShow, getValue, 0);\n}\n\nexport default Component\n","/** @import { FieldComponent, FieldContext } from '@yongdall/web' */\nimport { effect } from '@yongdall/web';\nimport createInputCell, { createShow } from './createInputCell.mjs';\n\n/**\n* \n* @param {string} v \n* @param {boolean} [nullable] \n* @returns {bigint?}\n*/\nfunction getValue(v, nullable) {\n\tif (!v) {\n\t\treturn !nullable ? 0n : null\n\t}\n\ttry {\n\t\treturn BigInt(v);\n\t} catch {\n\t}\n\treturn !nullable ? 0n : null\n\n}\n/**\n * \n * @param {FieldContext} ctx\n * @param {(v: string) => void} cb \n * @returns {[HTMLElement, (v?: string) => void]}\n */\nfunction createInput(ctx, cb) {\n\tconst input = document.createElement('input');\n\tinput.type = 'number';\n\tinput.addEventListener('input', () => cb(input.value));\n\tinput.addEventListener('input', (e) => ctx.emit('input', e));\n\tinput.addEventListener('change', (e) => ctx.emit('change', e));\n\tinput.addEventListener('focus', (e) => ctx.emit('focus', e));\n\tinput.addEventListener('blur', (e) => ctx.emit('blur', e));\n\teffect(() => input.disabled = Boolean(ctx.readonly || ctx.disabled), ctx.signal);\n\teffect(() => input.placeholder = ctx.placeholder, ctx.signal);\n\tctx.listen('focus', () => input.focus());\n\tctx.listen('scrollIntoView', () => input.scrollIntoView());\n\treturn [input, v => { input.value = v ?? ''; }];\n\n}\n/** @type {FieldComponent} */\nconst Component = ctx => {\n\treturn createInputCell(ctx, createInput, createShow, getValue, 0n);\n}\n\nexport default Component\n","/** @import { FieldComponent, FieldContext } from '@yongdall/web' */\nimport { effect } from '@yongdall/web';\nimport createInputCell, { createShow } from './createInputCell.mjs';\n\n/**\n* \n* @param {string} v \n* @param {boolean} [nullable] \n* @returns {string?}\n*/\nfunction getValue(v, nullable) {\n\treturn v || !nullable ? v : null\n}\n/**\n * \n * @param {FieldContext} ctx\n * @param {(v: string) => void} cb \n * @returns {[HTMLElement, (v?: string) => void]}\n */\nfunction createInput(ctx, cb) {\n\tconst input = document.createElement('input');\n\tinput.addEventListener('input', () => cb(input.value));\n\tinput.addEventListener('input', (e) => ctx.emit('input', e));\n\tinput.addEventListener('change', (e) => ctx.emit('change', e));\n\tinput.addEventListener('focus', (e) => ctx.emit('focus', e));\n\tinput.addEventListener('blur', (e) => ctx.emit('blur', e));\n\teffect(() => input.disabled = Boolean(ctx.readonly || ctx.disabled), ctx.signal);\n\teffect(() => input.placeholder = ctx.placeholder, ctx.signal);\n\tctx.listen('focus', () => input.focus());\n\tctx.listen('scrollIntoView', () => input.scrollIntoView());\n\treturn [input, v => { input.value = v ?? ''; }];\n\n}\n\n/** @type {FieldComponent} */\nconst Component = ctx => {\n\treturn createInputCell(ctx, createInput, createShow, getValue, '');\n}\n\nexport default Component\n","/** @import { FieldComponent } from '@yongdall/web' */\nimport { effect } from '@yongdall/web';\n\n/** @type {FieldComponent} */\nconst Component = ctx => {\n\tconst input = document.createElement('input');\n\tinput.type = 'checkbox';\n\tconst editable = ctx.editable;\n\t/** @type {boolean?} */\n\tlet value = ctx.field?.nullable ? null : false;\n\tif (editable) {\n\t\tinput.addEventListener('input', () => {\n\t\t\tvalue = Boolean(input.checked);\n\t\t\tctx.value = value;\n\t\t});\n\t\tinput.addEventListener('change', (e) => ctx.emit('change', e));\n\t\tinput.addEventListener('focus', (e) => ctx.emit('focus', e));\n\t\tinput.addEventListener('blur', (e) => ctx.emit('blur', e));\n\t} else {\n\t\tinput.disabled = true;\n\t}\n\teffect(() => input.disabled = Boolean(ctx.readonly || ctx.disabled), ctx.signal);\n\teffect(() => input.placeholder = ctx.placeholder, ctx.signal);\n\tctx.listen('focus', () => input.focus());\n\tctx.listen('scrollIntoView', () => input.scrollIntoView());\n\t/**\n\t * \n\t * @param {*} v \n\t * @returns \n\t */\n\tfunction update(v) {\n\t\t// TODO:\n\t\tconst vv = !ctx.field?.nullable || typeof v === 'boolean' ? Boolean(v) : null;\n\t\tif (vv === value) { return; }\n\t\tvalue = vv;\n\t\tinput.checked = Boolean(vv);\n\t}\n\teffect(() => update(ctx.value), ctx.signal);\n\treturn input;\n};\n\nexport default Component;\n","/** @import { FieldComponent, FieldContext } from '@yongdall/web' */\nimport { effect } from '@yongdall/web';\nimport createInputCell, { createShow } from './createInputCell.mjs';\n\n/**\n* \n* @param {string} v \n* @param {boolean} [nullable] \n* @returns {string?}\n*/\nfunction getValue(v, nullable) {\n\tif (Number.isFinite(new Date(v).valueOf())) {\n\t\treturn v;\n\t} else if (!nullable) {\n\t\treturn '';\n\t} else {\n\t\treturn null;\n\t}\n}\n/**\n * \n * @param {FieldContext} ctx\n * @param {(v: string) => void} cb \n * @returns {[HTMLElement, (v?: string) => void]}\n */\nfunction createInput(ctx, cb) {\n\tconst input = document.createElement('input');\n\tinput.type = 'date';\n\tinput.step = '1'\n\tinput.addEventListener('input', () => cb(input.value));\n\tinput.addEventListener('input', (e) => ctx.emit('input', e));\n\tinput.addEventListener('change', (e) => ctx.emit('change', e));\n\tinput.addEventListener('focus', (e) => ctx.emit('focus', e));\n\tinput.addEventListener('blur', (e) => ctx.emit('blur', e));\n\teffect(() => input.disabled = Boolean(ctx.readonly || ctx.disabled), ctx.signal);\n\teffect(() => input.placeholder = ctx.placeholder, ctx.signal);\n\tctx.listen('focus', () => input.focus());\n\tctx.listen('scrollIntoView', () => input.scrollIntoView());\n\treturn [input, v => { input.value = v ?? ''; }];\n\n}\n\n/** @type {FieldComponent} */\nconst Component = ctx => {\n\treturn createInputCell(ctx, createInput, createShow, getValue, '');\n}\n\nexport default Component\n","/** @import { FieldComponent, FieldContext } from '@yongdall/web' */\nimport { effect } from '@yongdall/web';\nimport createInputCell, { createShow } from './createInputCell.mjs';\n\n/**\n* \n* @param {string} v \n* @param {boolean} [nullable] \n* @returns {string?}\n*/\nfunction getValue(v, nullable) {\n\tconst value = new Date(v);\n\tif (Number.isFinite(value)) {\n\t\treturn v;\n\t} else if (!nullable) {\n\t\treturn '';\n\t} else {\n\t\treturn null;\n\t}\n}\n/**\n * \n * @param {FieldContext} ctx\n * @param {(v: string) => void} cb \n * @returns {[HTMLElement, (v?: string) => void]}\n */\nfunction createInput(ctx, cb) {\n\tconst input = document.createElement('input');\n\tinput.type = 'time';\n\tinput.addEventListener('input', () => cb(input.value));\n\tinput.addEventListener('input', (e) => ctx.emit('input', e));\n\tinput.addEventListener('change', (e) => ctx.emit('change', e));\n\tinput.addEventListener('focus', (e) => ctx.emit('focus', e));\n\tinput.addEventListener('blur', (e) => ctx.emit('blur', e));\n\teffect(() => input.disabled = Boolean(ctx.readonly || ctx.disabled), ctx.signal);\n\teffect(() => input.placeholder = ctx.placeholder, ctx.signal);\n\tctx.listen('focus', () => input.focus());\n\tctx.listen('scrollIntoView', () => input.scrollIntoView());\n\treturn [input, v => { input.value = v ?? ''; }];\n\n}\n\n/** @type {FieldComponent} */\nconst Component = ctx => {\n\treturn createInputCell(ctx, createInput, createShow, getValue, '');\n}\n\nexport default Component\n","/** @import { FieldComponent, FieldContext } from '@yongdall/web' */\nimport { effect } from '@yongdall/web';\nimport createInputCell from './createInputCell.mjs';\n\n/**\n* \n* @param {string} v \n* @param {boolean} [nullable] \n* @returns {Date?}\n*/\nfunction getValue(v, nullable) {\n\tconst value = new Date(v);\n\tif (Number.isFinite(value.valueOf())) {\n\t\treturn value;\n\t} else {\n\t\treturn null;\n\t}\n}\n/**\n * \n * @param {Date} date \n * @param {string} show\n */\nfunction toDateStr(date, show) {\n\tconst vv = date.valueOf();\n\tif (!vv) { return '' }\n\treturn `${[\n\t\t`${date.getFullYear()}`.padStart(4, '0'),\n\t\t`${date.getMonth() + 1}`.padStart(2, '0'),\n\t\t`${date.getDate()}`.padStart(2, '0'),\n\t\t].join('-')}${show}${[\n\t\t\t`${date.getHours()}`.padStart(2, '0'),\n\t\t\t`${date.getMinutes()}`.padStart(2, '0'),\n\t\t\t`${date.getSeconds()}`.padStart(2, '0'),\n\t\t\t].join(':')}`\n}\n\n/**\n * \n * @param {*} v \n * @param {string} [show] \n */\nfunction toDateValue(v,show = 'T') {\n\treturn v instanceof Date ? toDateStr(v,show) : toDateStr(new Date(v),show) ?? '';\n\n}\n/**\n * \n * @param {FieldContext} ctx\n * @returns {[HTMLElement, (v?: string) => void]}\n */\nfunction createShow(ctx) {\n\tconst inputRoot = document.createElement('div')\n\tconst input = inputRoot;\n\tinput.style.overflow = 'hidden';\n\tinput.style.whiteSpace = 'nowrap';\n\tinput.style.textOverflow = 'ellipsis';\n\t\n\tctx.listen('scrollIntoView', () => inputRoot.scrollIntoView());\n\treturn [inputRoot, v => { input.title = input.innerText = toDateValue(v, ' '); }];\n\n}\n/**\n * \n * @param {FieldContext} ctx\n * @param {(v: string) => void} cb \n * @returns {[HTMLElement, (v?: string) => void]}\n */\nfunction createInput(ctx, cb) {\n\tconst input = document.createElement('input');\n\tinput.type = 'datetime-local';\n\tinput.step = '1'\n\t// TODO: 追加时区\n\tinput.addEventListener('input', () => cb(input.value));\n\tinput.addEventListener('input', (e) => ctx.emit('input', e));\n\tinput.addEventListener('change', (e) => ctx.emit('change', e));\n\tinput.addEventListener('focus', (e) => ctx.emit('focus', e));\n\tinput.addEventListener('blur', (e) => ctx.emit('blur', e));\n\teffect(() => input.disabled = Boolean(ctx.readonly || ctx.disabled), ctx.signal);\n\teffect(() => input.placeholder = ctx.placeholder, ctx.signal);\n\tctx.listen('focus', () => input.focus());\n\tctx.listen('scrollIntoView', () => input.scrollIntoView());\n\treturn [input, v => { input.value = toDateValue(v); }];\n\n}\n\n/** @type {FieldComponent} */\nconst Component = ctx => {\n\treturn createInputCell(ctx, createInput, createShow, getValue, null);\n}\n\nexport default Component\n","/** @import { FieldComponent, FieldContext } from '@yongdall/web' */\nimport { effect } from '@yongdall/web';\nimport createInputCell, { createShow } from './createInputCell.mjs';\n\n/**\n* \n* @param {string} v \n* @param {boolean} [nullable] \n* @returns {string?}\n*/\nfunction getValue(v, nullable) {\n\treturn v || !nullable ? v : null\n}\n/**\n * \n * @param {FieldContext} ctx\n * @param {(v: string) => void} cb \n * @returns {[HTMLElement, (v?: string) => void]}\n */\nfunction createInput(ctx, cb) {\n\tconst input = document.createElement('input');\n\tinput.type = 'password';\n\tinput.addEventListener('input', () => cb(input.value));\n\tinput.addEventListener('input', (e) => ctx.emit('input', e));\n\tinput.addEventListener('change', (e) => ctx.emit('change', e));\n\tinput.addEventListener('focus', (e) => ctx.emit('focus', e));\n\tinput.addEventListener('blur', (e) => ctx.emit('blur', e));\n\teffect(() => input.disabled = Boolean(ctx.readonly || ctx.disabled), ctx.signal);\n\teffect(() => input.placeholder = ctx.placeholder, ctx.signal);\n\tctx.listen('focus', () => input.focus());\n\tctx.listen('scrollIntoView', () => input.scrollIntoView());\n\treturn [input, v => { input.value = v ?? ''; }];\n\n}\n\n/** @type {FieldComponent} */\nconst Component = ctx => {\n\treturn createInputCell(ctx, createInput, createShow, getValue, '');\n}\n\nexport default Component\n","/** @import { FieldComponent, FieldContext } from '@yongdall/web' */\nimport { effect } from '@yongdall/web';\nimport createInputCell, { createShow } from './createInputCell.mjs';\n\n/**\n* \n* @param {string} v \n* @param {boolean} [nullable] \n* @returns {string?}\n*/\nfunction getValue(v, nullable) {\n\treturn v || !nullable ? v : null\n}\n/**\n * \n * @param {FieldContext} ctx\n * @param {(v: string) => void} cb \n * @returns {[HTMLElement, (v?: string) => void]}\n */\nfunction createInput(ctx, cb) {\n\tconst input = document.createElement('input');\n\tinput.type = 'url';\n\tinput.addEventListener('input', () => cb(input.value));\n\tinput.addEventListener('input', (e) => ctx.emit('input', e));\n\tinput.addEventListener('change', (e) => ctx.emit('change', e));\n\tinput.addEventListener('focus', (e) => ctx.emit('focus', e));\n\tinput.addEventListener('blur', (e) => ctx.emit('blur', e));\n\teffect(() => input.disabled = Boolean(ctx.readonly || ctx.disabled), ctx.signal);\n\teffect(() => input.placeholder = ctx.placeholder, ctx.signal);\n\tctx.listen('focus', () => input.focus());\n\tctx.listen('scrollIntoView', () => input.scrollIntoView());\n\treturn [input, v => { input.value = v ?? ''; }];\n\n}\n\n/** @type {FieldComponent} */\nconst Component = ctx => {\n\treturn createInputCell(ctx, createInput, createShow, getValue, '');\n}\n\nexport default Component\n","/** @import { FieldComponent, FieldContext } from '@yongdall/web' */\nimport { effect } from '@yongdall/web';\nimport createInputCell, { createShow } from './createInputCell.mjs';\n\n/**\n* \n* @param {string} v \n* @param {boolean} [nullable] \n* @returns {string?}\n*/\nfunction getValue(v, nullable) {\n\treturn v || !nullable ? v : null\n}\n/**\n * \n * @param {FieldContext} ctx\n * @param {(v: string) => void} cb \n * @returns {[HTMLElement, (v?: string) => void]}\n */\nfunction createInput(ctx, cb) {\n\tconst input = document.createElement('input');\n\tinput.addEventListener('input', () => cb(input.value));\n\tinput.addEventListener('input', (e) => ctx.emit('input', e));\n\tinput.addEventListener('change', (e) => ctx.emit('change', e));\n\tinput.addEventListener('focus', (e) => ctx.emit('focus', e));\n\tinput.addEventListener('blur', (e) => ctx.emit('blur', e));\n\teffect(() => input.disabled = Boolean(ctx.readonly || ctx.disabled), ctx.signal);\n\teffect(() => input.placeholder = ctx.placeholder, ctx.signal);\n\tctx.listen('focus', () => input.focus());\n\tctx.listen('scrollIntoView', () => input.scrollIntoView());\n\treturn [input, v => { input.value = v ?? ''; }];\n\n}\n\n/** @type {FieldComponent} */\nconst Component = ctx => {\n\treturn createInputCell(ctx, createInput, createShow, getValue, '');\n}\n\nexport default Component\n","\nconst supportsPopover = HTMLElement.prototype.hasOwnProperty(\"popover\");\nconst style =`\\\n:host {\n\tdisplay: contents;\n}\n\ninput {\n\tblock-size: inherit;\n\tinline-size: inherit;\n\tmax-block-size: inherit;\n\tmin-block-size: inherit;\n\tmax-inline-size: inherit;\n\tmin-inline-size: inherit;\n\tfont-size: inherit;\n\tbackground-color: inherit;\n\tborder-radius: inherit;\n\tcursor: text;\n\tpadding: inherit;\n\tborder: inherit;\n\tmargin: inherit;\n\toutline: inherit;\n\tbox-sizing: border-box;\n\n\tline-height: inherit;\n}\n\n.dropdown {\n\tposition: fixed;\n\tbackground: white;\n\tmax-width: 100%;\n\tmax-height: 100%;\n\tmargin: 0;\n\tinset: unset;\n\theight: auto;\n\twidth: auto;\n\toverflow-y: auto;\n\toverflow-x: hidden;\n\tz-index: 999;\n\tdisplay: none;\n\tbox-sizing: border-box;\n\tborder: 1px solid #ddd;\n}\n.dropdown-list {\n\toverflow-y: visible;\n\toverflow-x: visible;\n}\n\n:host([open]) .dropdown {\n\tdisplay: block;\n}\n\n\n.option {\n\tcursor: pointer;\n\tbackground: Canvas;\n\tcolor: CanvasText;\n\toverflow-x: hidden;\n}\n\n.option:hover {\n\tbackground: Highlight;\n\tcolor: HighlightText;\n}\n.current {\n\tbackground: Highlight;\n\tcolor: HighlightText;\n\n}\n\n`\n/**\n * \n * @param {Node} el \n */\nfunction isActive(el) {\n\tlet e = el\n\twhile(e) {\n\t\tlet root = e.getRootNode();\n\t\tif (!root) { return false; }\n\t\tif (root === document) {\n\t\t\treturn document.activeElement === e;\n\t\t}\n\t\tif (!(root instanceof ShadowRoot)) {\n\t\t\treturn false;\n\t\t}\n\t\tif (root.activeElement !== e) {\n\t\t\treturn false;\n\t\t}\n\t\tconst host = root.host;\n\t\tif (!host) { return false; }\n\t\te = host;\n\t}\n}\nexport default class Select extends HTMLElement {\n\t/** @type {{label: string; value: any; level?: any; data?: any}?} */\n\t#current = null;\n\t/** @type {any} */\n\t#currentValue = null;\n\t/** @type {Element?} */\n\t#currentNode = null;\n\t#shadowRoot = this.attachShadow({ mode: 'closed' });\n\t#style = this.#shadowRoot.appendChild(document.createElement('style'));\n\t#input = this.#shadowRoot.appendChild(document.createElement('input'));\n\t#dropdown = this.#shadowRoot.appendChild(document.createElement('div'));\n\t#dropdownList = this.#dropdown.appendChild(document.createElement('div'));\n\tconstructor() {\n\t\tsuper();\n\t\tthis.#style.textContent = style;\n\t\tconst input = this.#input;\n\t\tinput.type = 'text'\n\t\tconst dropdown = this.#dropdown;\n\t\tconst dropdownList = this.#dropdownList;\n\t\tdropdown.className = 'dropdown'\n\t\tdropdownList.className = 'dropdown-list'\n\t\tif (supportsPopover) {\n\t\t\tdropdown.setAttribute('popover', \"manual\");\n\t\t}\n\n\n\t\t// 输入事件处理 \n\t\tinput.addEventListener('input', () => { this.#onInput(); });\n\t\tinput.addEventListener('focus', () => { this.#onFocus(); });\n\t\tinput.addEventListener('blur', () => {\n\t\t\tconst current = this.#current;\n\t\t\tconst value = input.value;\n\t\t\tconst required = this.required;\n\t\t\tif (!value) {\n\t\t\t\tif (!current) { return; }\n\t\t\t\tif (required) {\n\t\t\t\t\tinput.value = current.label;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis.#current = null;\n\t\t\t\tthis.#currentValue = null;\n\t\t\t\tthis.#onSelect();\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (current?.label === value) { return; }\n\t\t\tconst item = this.#list.find(v => v.label === value);\n\t\t\tif (item) {\n\t\t\t\tthis.#current = item;\n\t\t\t\tthis.#currentValue = item.value;\n\t\t\t\tinput.value = item.label;\n\t\t\t\tthis.#onSelect();\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (!current) {\n\t\t\t\tinput.value = '';\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (required) {\n\t\t\t\tinput.value = current.label;\n\t\t\t} else {\n\t\t\t\tinput.value = '';\n\t\t\t\tthis.#current = null;\n\t\t\t\tthis.#currentValue = null;\n\t\t\t\tthis.#onSelect();\n\t\t\t}\n\t\t})\n\n\n\t\t// 键盘导航 \n\t\tthis.addEventListener('keydown', (e) => {\n\t\t\tif (!this.#open) { return; }\n\t\t\t\n\t\t\tconst currentNode = this.#currentNode;\n\n\t\t\tif (e.key === 'ArrowDown') {\n\t\t\t\te.preventDefault();\n\t\t\t\tif (currentNode?.parentNode !== dropdownList) {\n\t\t\t\t\tconst node = dropdownList.firstElementChild;\n\t\t\t\t\tif (!node) {\n\t\t\t\t\t\tthis.#currentNode = null;\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tthis.#currentNode = node;\n\t\t\t\t\tnode.classList.add('current');\n\t\t\t\t\tnode.scrollIntoView();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst node = currentNode.nextElementSibling;\n\t\t\t\tif (!node) { return; }\n\t\t\t\tcurrentNode.classList.remove('current');\n\t\t\t\tthis.#currentNode = node;\n\t\t\t\tnode.classList.add('current');\n\t\t\t\tnode.scrollIntoView();\n\n\t\t\t}\n\n\n\t\t\tif (e.key === 'ArrowUp') {\n\t\t\t\te.preventDefault();\n\t\t\t\tif (currentNode?.parentNode !== dropdownList) {\n\t\t\t\t\tconst node = dropdownList.lastElementChild;\n\t\t\t\t\tif (!node) {\n\t\t\t\t\t\tthis.#currentNode = null;\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tthis.#currentNode = node;\n\t\t\t\t\tnode.classList.add('current');\n\t\t\t\t\tnode.scrollIntoView();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst node = currentNode.previousElementSibling;\n\t\t\t\tif (!node) { return; }\n\t\t\t\tcurrentNode.classList.remove('current');\n\t\t\t\tthis.#currentNode = node;\n\t\t\t\tnode.classList.add('current');\n\t\t\t\tnode.scrollIntoView();\n\n\t\t\t}\n\n\t\t\tif (e.key === 'Enter') {\n\t\t\t\te.preventDefault();\n\t\t\t\tif (currentNode?.parentNode === dropdownList) {\n\t\t\t\t\t// @ts-ignore\n\t\t\t\t\tcurrentNode.click();\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\n\tget options() {\n\t\treturn this.#list;\n\t}\n\tfocus() {\n\t\tthis.#input.focus();\n\t}\n\tset options(items) {\n\t\tthis.#list = items;\n\t\tconst dropdown = this.#dropdown;\n\t\tconst dropdownList = this.#dropdownList;\n\t\tdropdownList.innerHTML = '';\n\t\tfor (const item of items) {\n\t\t\tconst option = document.createElement('div');\n\t\t\toption.className = 'option';\n\t\t\toption.appendChild(document.createTextNode(`${Array(item.level || 0).fill(' ').join('')}${item.label}` || ' '));\n\t\t\tdropdownList.appendChild(option);\n\t\t\toption.addEventListener('pointerdown', (e) => {\n\t\t\t\te.preventDefault()\n\t\t\t\tthis.#selectItem(item)\n\t\t\t});\n\t\t\toption.addEventListener('click', (e) => {\n\t\t\t\te.preventDefault();\n\t\t\t\tthis.#selectItem(item);\n\t\t\t});\n\t\t\toption.addEventListener('pointermove', () => {\n\t\t\t\tthis.#currentNode?.classList.remove('current');\n\t\t\t\tthis.#currentNode = option;\n\t\t\t\toption.classList.add('current');\n\t\t\t});\n\t\t}\n\t\tthis.#currentNode = dropdownList.firstElementChild;\n\t\tthis.#currentNode?.classList.add('current');\n\t\tdropdown.scrollTop = 0;\n\t\tdropdown.scrollLeft = 0;\n\t\tif (isActive(this.#input)) {\n\t\t\tif (this.#input.value === this.current?.label) { return }\n\t\t\tthis.open = true;\n\t\t\treturn;\n\t\t}\n\t\tconst currentValue = this.#currentValue;\n\t\tconst item = this.#list.find(it => it.value === currentValue);\n\t\tif (item) {\n\t\t\tif (item === this.#current) { return; }\n\t\t\tthis.#current = item;\n\t\t\tthis.#currentValue = item.value;\n\t\t\tthis.#input.value = item.label || '';\n\t\t}\n\t}\n\tget active() { return isActive(this.#input); }\n\t/** @type {{label: string; value: any; level?: any; data?: any}[]} */\n\t#list = [];\n\tget current() { return this.#current; }\n\tget value() { return this.#currentValue; }\n\tset value(v) {\n\t\tif (v === this.#currentValue) { return; }\n\t\tconst item = this.#list.find(it => it.value === v);\n\t\tif (!item) {\n\t\t\tthis.#current = null;\n\t\t\tthis.#currentValue = v;\n\t\t\tthis.#input.value = v;\n\t\t\treturn;\n\t\t}\n\t\tif (item === this.#current) { return; }\n\n\t\tthis.#current = item;\n\t\tthis.#currentValue = item.value;\n\t\tthis.#input.value = item.label || '';\n\t}\n\t#onSelect() {\n\t\tthis.dispatchEvent(new Event('change'));\n\t}\n\t#onInput() {\n\t\tthis.dispatchEvent(new Event('input'));\n\t}\n\t#onFocus() {\n\t\tthis.open = true;\n\t\tthis.dispatchEvent(new Event('focus'));\n\t}\n\tget text() {\n\t\treturn this.#input.value;\n\t}\n\n\n\t/**\n\t * \n\t * @param {{label: string; value: any; level?: any; data?: any}} item \n\t */\n\t#selectItem(item) {\n\t\tthis.#current = item;\n\t\tthis.#currentValue = item?.value;\n\t\tthis.#input.value = item?.label || '';\n\t\tthis.#onSelect();\n\t\tthis.open = false;\n\t\tthis.#input.focus();\n\t}\n\n\tget open() { return this.getAttribute('open') !== null; }\n\tset open(v) {\n\t\tif (v) {\n\t\t\tthis.setAttribute('open', '');\n\t\t} else {\n\t\t\tthis.removeAttribute('open');\n\t\t}\n\t}\n\tget disabled() { return this.getAttribute('disabled') !== null; }\n\tset disabled(v) {\n\t\tif (v) {\n\t\t\tthis.setAttribute('disabled', '');\n\t\t} else {\n\t\t\tthis.removeAttribute('disabled');\n\t\t}\n\t}\n\tget readOnly() { return this.getAttribute('readonly') !== null; }\n\tset readOnly(v) {\n\t\tif (v) {\n\t\t\tthis.setAttribute('readonly', '');\n\t\t} else {\n\t\t\tthis.removeAttribute('readonly');\n\t\t}\n\t}\n\tget required() { return this.getAttribute('required') !== null; }\n\tset required(v) {\n\t\tif (v) {\n\t\t\tthis.setAttribute('required', '');\n\t\t} else {\n\t\t\tthis.removeAttribute('required');\n\t\t}\n\t}\n\tget placeholder() { return this.getAttribute('placeholder') || ''; }\n\tset placeholder(v) {\n\t\tif (v) {\n\t\t\tthis.setAttribute('placeholder', v);\n\t\t} else {\n\t\t\tthis.removeAttribute('placeholder');\n\t\t}\n\t}\n\t#move() {\n\t\tconst inputRect = this.#input.getBoundingClientRect();\n\n\t\tconst innerWidth = window.innerWidth;\n\t\tconst innerHeight = window.innerHeight;\n\n\t\tconst right = innerWidth - inputRect.right;\n\t\tconst bottom = innerHeight - inputRect.bottom;\n\t\tconst {top, left, width: aWidth, height: aHeight} = inputRect;\n\t\tconst dropdownRect = this.#dropdownList.getBoundingClientRect();\n\t\tconst width = dropdownRect.width - 2;\n\t\tconst height = dropdownRect.height - 2;\n\t\tconst dropdown = this.#dropdown;\n\t\tdropdown.style.maxWidth = ``;\n\t\tdropdown.style.minWidth = ``;\n\n\t\tdropdown.style.top = `${top + aHeight}px`;\n\t\tdropdown.style.minWidth = `${aWidth}px`;\n\t\tdropdown.style.maxHeight = `${innerHeight - top - aHeight - 4}px`;\n\t\tif (width <= innerWidth - left) {\n\t\t\tdropdown.style.left = `${left}px`;\n\t\t\tdropdown.style.right = ``;\n\t\t} else if (width <= innerWidth - left) {\n\t\t\tdropdown.style.left = `${left}px`;\n\t\t\tdropdown.style.right = `${innerWidth - left}px`;\n\t\t} else {\n\t\t\tdropdown.style.left = `${Math.max(0, Math.min((width - aWidth) / 2, left))}px`;\n\t\t\tdropdown.style.right = ``;\n\t\t}\n\n\n\t\tlet p = 0;\n\t\tif (height <= bottom - 20) {\n\t\t\t// 下方\n\t\t\tp = 1;\n\t\t\tdropdown.style.top = `${top + aHeight}px`;\n\t\t\tdropdown.style.minWidth = `${aWidth}px`;\n\t\t\tdropdown.style.bottom = ``;\n\t\t} else if (height <= top) {\n\t\t\t// 上方\n\t\t\tp = 1;\n\t\t\tdropdown.style.top = ``;\n\t\t\tdropdown.style.bottom = `${bottom + aHeight}px`;\n\t\t} else if (Math.max(left, (right - 20)) < Math.min(width, inputRect.right - left)) {\n\t\t\tif (bottom - 20 >= top) {\n\t\t\t// 下方\n\t\t\tp = 1;\n\t\t\tdropdown.style.top = `${top + aHeight}px`;\n\t\t\tdropdown.style.minWidth = `${aWidth}px`;\n\t\t\tdropdown.style.bottom = ``;\n\t\t} else if (height <= top) {\n\t\t\t// 上方\n\t\t\tp = 1;\n\t\t\tdropdown.style.top = ``;\n\t\t\tdropdown.style.bottom = `${bottom + aHeight}px`;\n\t\t}\n\t\t} else if (width <= (right - 20) || left <= (right - 20)) {\n\t\t\t// 右侧\n\t\t\tdropdown.style.left = `${left + aWidth}px`;\n\t\t\tdropdown.style.maxWidth = `${right}px`;\n\t\t\tdropdown.style.right = ``;\n\t\t} else {\n\t\t\t// 左侧\n\t\t\tdropdown.style.left = ``;\n\t\t\tdropdown.style.right = `${right + aWidth}px`;\n\t\t\tdropdown.style.maxWidth = `${left}px`;\n\t\t}\n\t\tif (p) {\n\t\t\t\n\t\t\tif (width <= innerWidth - left) {\n\t\t\t\tdropdown.style.left = `${left}px`;\n\t\t\t\tdropdown.style.right = ``;\n\t\t\t} else if (width <= innerWidth - left) {\n\t\t\t\tdropdown.style.left = `${left}px`;\n\t\t\t\tdropdown.style.right = `${innerWidth - left}px`;\n\t\t\t} else {\n\t\t\t\tdropdown.style.left = `${Math.max(0, Math.min((width - aWidth) / 2, left))}px`;\n\t\t\t\tdropdown.style.right = ``;\n\t\t\t}\n\t\t} else {\n\t\t\tif (height <= innerHeight - top) {\n\t\t\t\tdropdown.style.top = `${top}px`;\n\t\t\t\tdropdown.style.bottom = ``;\n\t\t\t} else if (height < top + aHeight) {\n\t\t\t\tdropdown.style.top = ``;\n\t\t\t\tdropdown.style.bottom = `${innerHeight - top}px`;\n\t\t\t} else {\n\t\t\t\tdropdown.style.top = `${Math.max(0, Math.min(innerHeight - height, top))}px`;\n\t\t\t\tdropdown.style.bottom = `0`;\n\t\t\t}\n\t\t}\n\t}\n\n\t\n\t#running = false;\n\t/** @type {any} */\n\t#r = null;\n\t#openDropdown() {\n\t\tif (supportsPopover) {\n\t\t\tthis.#dropdown.showPopover();\n\t\t}\n\t\tif (this.#running) { return }\n\t\tthis.#running = true;\n\t\tconst that = this;\n\t\tthis.#r = requestAnimationFrame(function raf() {\n\t\t\tthat.#move();\n\t\t\tif (!that.#running) { return }\n\t\t\tthat.#r = requestAnimationFrame(raf);\n\t\t})\n\t}\n\n\t#closeDropdown() {\n\t\tif (supportsPopover) {\n\t\t\tthis.#dropdown.hidePopover();\n\t\t}\n\t\tif (!this.#running) { return }\n\t\tthis.#running = false;\n\t\tcancelAnimationFrame(this.#r);\n\t}\n\n\t/**\n\t * \n\t * @param {Event} e \n\t */\n\t#clickOther = (e) => {\n\t\t// @ts-ignore\n\t\tif (this.contains(e.target)) { return; }\n\t\tthis.open = false;\n\t}\n\t#mounted = false;\n\tconnectedCallback() {\n\t\tdocument.addEventListener('click', this.#clickOther);\n\t\tthis.#mounted = true;\n\t\tthis.#updateOpen();\n\t}\n\tdisconnectedCallback() {\n\t\tdocument.removeEventListener('click', this.#clickOther);\n\t\tthis.#mounted = false;\n\t\tthis.#updateOpen();\n\t}\n\t#open = false;\n\t#updateOpen() {\n\t\tconst status = !this.readOnly && !this.disabled && this.open && this.#mounted;\n\t\tif (this.#open === status) { return; }\n\t\tthis.#open = status\n\t\tif (status) {\n\t\t\tthis.#openDropdown();\n\t\t} else {\n\t\t\tthis.#closeDropdown();\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 */\n\tattributeChangedCallback(attrName, oldVal, newVal) {\n\t\tif (oldVal === newVal) { return; }\n\t\tswitch (attrName) {\n\t\t\tcase 'open': {\n\t\t\t\tif (!this.#mounted) { return; }\n\t\t\t\tthis.#updateOpen();\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tcase 'placeholder': {\n\t\t\t\tthis.#input.placeholder = newVal || '';\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tcase 'readonly': {\n\t\t\t\tthis.#input.readOnly = newVal !== null;\n\t\t\t\tthis.#updateOpen();\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tcase 'disabled': {\n\t\t\t\tthis.#input.disabled = newVal !== null;\n\t\t\t\tthis.#updateOpen();\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t}\n\tstatic observedAttributes = ['open', 'placeholder', 'readonly', 'disabled'];\n}\n\ntry {\n\tcustomElements.define('yongdall-select', Select);\n} catch {\n}\n","/** @import { FieldComponent, State } from '@yongdall/web' */\nimport { ArrayStore, createComputed, createState, effect, getPatternFields, modelService, runPattern, Search, toId, watch } from '@yongdall/web';\nimport './YongdallSelect.mjs';\n/** @import Select from './YongdallSelect.mjs' */\n\n\n/**\n * \n * @param {string?} filter\n * @param {((placeholder: string) => string | (() => string) | null) | false} [getPlaceholder] \n * @returns {State<{where: any, orWhere: any}>}\n */\nfunction loadOptions(filter, getPlaceholder) {\n\tif (!filter || typeof filter !== 'string') { return createComputed(() => ({where: [], orWhere: []})); }\n\tconst search = Search.parse(filter);\n\t/** @typedef {[(Search.Match | Search.Children)[], (Search.Match | Search.Children | Search.Or)[]]} SearchState */\n\tconst searchState = typeof getPlaceholder === 'function'\n\t\t? createComputed(() => /** @type {SearchState} */([\n\t\t\tSearch.fill(search.where, getPlaceholder),\n\t\t\tSearch.fill(search.orWhere, getPlaceholder),\n\t\t])) : createState(/** @type {SearchState} */([search.where, search.orWhere]));\n\treturn createComputed(() => {\n\t\tconst [where, orWhere] = searchState.get();\n\t\treturn { where, orWhere };\n\t});\n}\n/** @type {FieldComponent} */\nconst Component = (ctx, componentOptions) => {\n\tconst editable = ctx.editable;\n\tconst store = ctx.store;\n\tconst modelName = ctx.field?.model || '';\n\tconst model = modelService(modelName);\n\n\tif (!editable) {\n\t\tconst span = document.createElement('span');\n\t\t/** @type {string?} */\n\t\tlet value = null;\n\t\tctx.listen('focus', () => span.focus());\n\t\tctx.listen('scrollIntoView', () => span.scrollIntoView());\n\t\tif (!store) {\n\t\t\teffect(() => {\n\t\t\t\tspan.innerText = ctx.current[`${ctx.name}~label`] || ctx.value;\n\t\t\t}, ctx.signal);\n\t\t\treturn span;\n\t\t}\n\t\tmodel.then(async (modelConfiguration) => {\n\t\t\tconst labelPattern = modelConfiguration.labelPattern || '';\n\t\t\tif (!getPatternFields(labelPattern).length) {\n\t\t\t\teffect(() => span.innerText = ctx.value || '', ctx.signal);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tasync function updateCurrentItem() {\n\t\t\t\tconst id = value;\n\t\t\t\tif (!id) {\n\t\t\t\t\tspan.innerText = '';\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst { document } = await model.option(id);\n\t\t\t\tif (!document || id !== value) { return; }\n\t\t\t\tspan.innerText = runPattern(labelPattern, document) || value;\n\t\t\t}\n\t\t\t/**\n\t\t\t * \n\t\t\t * @param {*} v \n\t\t\t * @returns \n\t\t\t */\n\t\t\tfunction update(v) {\n\t\t\t\t// TODO:\n\t\t\t\tconst vv = v == '' || v == null ? null : v;\n\t\t\t\tif (vv === value) { return; }\n\t\t\t\tvalue = vv;\n\t\t\t\tspan.innerText = value || '';\n\t\t\t\tupdateCurrentItem();\n\t\t\t}\n\t\t\teffect(() => update(ctx.value), ctx.signal);\n\t\t});\n\t\treturn span;\n\t}\n\n\tconst input = /** @type {Select} */(document.createElement('yongdall-select'));\n\t/** @type {string?} */\n\tlet value = null;\n\tinput.addEventListener('change', () => {\n\t\tvalue = input.value || null;\n\t\tctx.value = value;\n\t});\n\tinput.addEventListener('change', (e) => ctx.emit('change', e));\n\tinput.addEventListener('focus', (e) => ctx.emit('focus', e));\n\tinput.addEventListener('blur', (e) => ctx.emit('blur', e));\n\tctx.listen('focus', () => input.focus());\n\tctx.listen('scrollIntoView', () => input.scrollIntoView());\n\teffect(() => input.hidden = Boolean(ctx.hidden), ctx.signal);\n\teffect(() => input.disabled = Boolean(ctx.readonly || ctx.disabled), ctx.signal);\n\teffect(() => input.placeholder = ctx.placeholder, ctx.signal);\n\tif (store) {\n\t\teffect(() => input.placeholder = store.placeholder || '', ctx.signal);\n\t}\n\n\t/**\n\t * \n\t * @param {string} placeholder \n\t */\n\tfunction getPlaceholder(placeholder) {\n\t\tlet state = ctx.store?.parent;\n\t\tif (!state) { return null; }\n\t\tif (state instanceof ArrayStore) { state = state.parent; }\n\t\tif (!state) { return null; }\n\t\tlet currentState = state;\n\t\tlet k = 0;\n\t\twhile (placeholder[k] === '?') {\n\t\t\tk++;\n\t\t\tlet parent = currentState.parent;\n\t\t\tif (!parent) { break; }\n\t\t\tif (parent instanceof ArrayStore) {\n\t\t\t\tparent = parent.parent;\n\t\t\t}\n\t\t\tif (!parent) { break; }\n\t\t\tcurrentState = parent;\n\t\t}\n\t\twhile (placeholder[k] === '?') { k++; }\n\t\tconst name = placeholder.slice(k);\n\t\tconst field = currentState.child(name);\n\t\tif (!field) { return null; }\n\t\treturn field.value;\n\t}\n\tmodel.then(async (modelConfiguration) => {\n\t\tlet currentQuery = '';\n\t\t/** @type {{[k: string]: number | string}[]} */\n\t\tlet queriedOptions = [];\n\t\t/** @type {NodeJS.Timeout?} */\n\t\tlet timeout = null;\n\n\t\tconst search = loadOptions(componentOptions?.filter, getPlaceholder);\n\n\t\tlet loaded = false;\n\t\tfunction toQuery() {\n\t\t\tloaded = true;\n\t\t\tif (timeout) { clearTimeout(timeout); }\n\t\t\tconst query = input.text;\n\t\t\tcurrentQuery = query;\n\t\t\ttimeout = setTimeout(async () => {\n\t\t\t\tif (currentQuery !== query) { return; }\n\t\t\t\tconst options = await model.options({ ...search.get(), query, limit: 100 });\n\t\t\t\tif (currentQuery !== query) { return; }\n\t\t\t\tqueriedOptions = options;\n\t\t\t\tupdateOptions();\n\t\t\t}, 300);\n\n\t\t}\n\t\tinput.addEventListener('input', toQuery);\n\t\tinput.addEventListener('focus', () => {\n\t\t\tif (loaded) { return; }\n\t\t\ttoQuery();\n\t\t});\n\t\twatch(() => search.get(), () => {\n\t\t\tif (!input.active) { return; }\n\t\t\ttoQuery();\n\t\t}, {signal: ctx.signal});\n\n\t\tconst labelPattern = modelConfiguration.labelPattern || '';\n\n\t\t/** @type {(document: Record<string, any>) => any} */\n\t\tconst toCurrentId = document => toId(modelConfiguration, document);\n\t\t/** @type {{ [k: string]: number | string}?} */\n\t\tlet currentItem = null;\n\t\tasync function updateCurrentItem() {\n\t\t\tconst id = value;\n\t\t\tif (!id) {\n\t\t\t\tcurrentItem = null;\n\t\t\t\tupdateOptions();\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst item = queriedOptions.find(v => toCurrentId(v) === id);\n\t\t\tif (item) {\n\t\t\t\tcurrentItem = item;\n\t\t\t\tupdateOptions();\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst { option } = await model.option(id);\n\t\t\tif (!option || id !== value) { return; }\n\t\t\tif (id !== value) { return; }\n\t\t\tcurrentItem = option;\n\t\t\tupdateOptions();\n\n\t\t}\n\n\n\n\n\n\t\tfunction updateOptions() {\n\t\t\tconst allDocuments = [...queriedOptions];\n\t\t\tconst val = value;\n\t\t\tif (val) {\n\t\t\t\tconst current = currentItem;\n\t\t\t\tif (current && toCurrentId(current) == val && !allDocuments.find(v => toCurrentId(v) == val)) {\n\t\t\t\t\tallDocuments.push(current);\n\t\t\t\t}\n\t\t\t}\n\t\t\t/** @type {{ value: any; label: any; data?: { [k: string]: string | number; };}[]} */\n\t\t\tconst list = allDocuments.map(v => {\n\t\t\t\tconst value = toCurrentId(v);\n\t\t\t\treturn ({ value, label: runPattern(labelPattern, v) || value, data: v });\n\t\t\t});\n\t\t\tif (ctx.clearable) {\n\t\t\t\tlist.unshift({ value: '', label: '' });\n\t\t\t}\n\t\t\tconst item = list.find(v => v.value == value);\n\t\t\tinput.value = item?.label || item?.value || '';\n\t\t\tinput.options = list;\n\t\t}\n\n\n\t\t/**\n\t\t * \n\t\t * @param {*} v \n\t\t * @returns \n\t\t */\n\t\tfunction update(v) {\n\t\t\t// TODO:\n\t\t\tconst vv = v == '' || v == null ? null : v;\n\t\t\tif (vv === value) { return; }\n\t\t\tvalue = vv;\n\t\t\tinput.value = value || '';\n\t\t\tupdateCurrentItem();\n\t\t}\n\t\teffect(() => update(ctx.value), ctx.signal);\n\t});\n\n\treturn input;\n};\n\nexport default Component;\n","/** @import { FieldComponent, Option, State, Store } from '@yongdall/web' */\nimport { ArrayStore, createComputed, createState, effect, loadOptions, ObjectStore } from '@yongdall/web';\nimport './YongdallSelect.mjs';\n/** @import Select from './YongdallSelect.mjs' */\n\n\n/**\n * \n * @param {State<Option[]>} options \n */\nfunction toLabels(options) {\n\treturn createComputed(() => {\n\t\tconst queue = [...options.get()];\n\t\t/** @type {Record<string, string>} */\n\t\tconst labels = Object.create(null);\n\t\tfor (let item; item = queue.shift();) {\n\t\t\tconst children = item.children;\n\t\t\tlabels[item.value] = item.label;\n\t\t\tfor (const c of children) {\n\t\t\t\tqueue.push(c);\n\t\t\t}\n\t\t}\n\t\treturn labels;\n\t});\n}\n\n/**\n * \n * @param {Store?} [store] \n * @param {Record<string, string>?} [bind] \n * @returns {Iterable<(data: Record<string, any>) => void>}\n */\nfunction* getBindFns(store, bind) {\n\tif (!store) { return; }\n\tif (!bind || typeof bind === 'object') { return; }\n\tlet parent = store.parent;\n\tif (!(parent instanceof ObjectStore)) { return; }\n\tfor (const [k, v] of Object.entries(bind)) {\n\t\tconst current = parent.child(k);\n\t\tif (!current) { continue; }\n\t\tif (typeof v === 'string') {\n\t\t\tyield d => current.value = d[v];\n\t\t}\n\t}\n}\n/** @type {FieldComponent} */\nconst Component = (ctx, componentOptions = {}) => {\n\tconst editable = ctx.editable;\n\tconst store = ctx.store;\n\n\tif (!editable) {\n\t\tconst span = document.createElement('span');\n\t\tconst value = createState('');\n\t\tctx.listen('focus', () => span.focus());\n\t\tctx.listen('scrollIntoView', () => span.scrollIntoView());\n\t\tconst labels = toLabels(loadOptions(componentOptions, false));\n\t\tfunction set() {\n\t\t\tconst val = value.get();\n\t\t\tif (val === '') {\n\t\t\t\tspan.innerText = '';\n\t\t\t} else {\n\t\t\t\tspan.innerText = labels.get()[val] ?? '';\n\t\t\t}\n\t\t}\n\t\t/**\n\t\t * \n\t\t * @param {*} v \n\t\t * @returns \n\t\t */\n\t\tfunction update(v) {\n\t\t\tconst vv = v == null ? '' : v;\n\t\t\tif (vv === value) { return; }\n\t\t\tvalue.set(vv);\n\t\t}\n\t\teffect(() => update(ctx.value), ctx.signal);\n\t\teffect(set, ctx.signal);\n\t\treturn span;\n\t}\n\n\n\t/**\n\t * \n\t * @param {string} placeholder \n\t */\n\tfunction getPlaceholder(placeholder) {\n\t\tlet state = ctx.store?.parent;\n\t\tif (!state) { return null; }\n\t\tif (state instanceof ArrayStore) { state = state.parent; }\n\t\tif (!state) { return null; }\n\t\tlet currentState = state;\n\t\tlet k = 0;\n\t\twhile (placeholder[k] === '?') {\n\t\t\tk++;\n\t\t\tlet parent = currentState.parent;\n\t\t\tif (!parent) { break; }\n\t\t\tif (parent instanceof ArrayStore) {\n\t\t\t\tparent = parent.parent;\n\t\t\t}\n\t\t\tif (!parent) { break; }\n\t\t\tcurrentState = parent;\n\t\t}\n\t\twhile (placeholder[k] === '?') { k++; }\n\t\tconst name = placeholder.slice(k);\n\t\tconst field = currentState.child(name);\n\t\tif (!field) { return null; }\n\t\treturn field.value;\n\t}\n\tconst options = loadOptions(componentOptions, getPlaceholder);\n\n\t// TODO: 过滤\n\tconst currentOptions = options;\n\tconst input = /** @type {Select} */(document.createElement('yongdall-select'));\n\tlet value = createState(/** @type {string?} */(null));\n\t/** @type {((data: Record<string, any>) => void)[]} */\n\tlet bindFns = [...getBindFns(store, componentOptions.bind)];\n\n\tinput.addEventListener('change', () => {\n\t\tconst val = input.value || null;\n\t\tvalue.set(val);\n\t\tctx.value = val;\n\t\tif (!bindFns.length) { return; }\n\t\tconst data = input.current?.data;\n\t\tif (!data || typeof data !== 'object') { return; }\n\t\tfor (const fn of bindFns) {\n\t\t\tfn(data);\n\t\t}\n\n\t});\n\tinput.addEventListener('change', (e) => ctx.emit('change', e));\n\tinput.addEventListener('focus', (e) => ctx.emit('focus', e));\n\tinput.addEventListener('blur', (e) => ctx.emit('blur', e));\n\tctx.listen('focus', () => input.focus());\n\tctx.listen('scrollIntoView', () => input.scrollIntoView());\n\teffect(() => input.hidden = Boolean(ctx.hidden), ctx.signal);\n\teffect(() => input.disabled = Boolean(ctx.readonly || ctx.disabled), ctx.signal);\n\teffect(() => input.placeholder = ctx.placeholder, ctx.signal);\n\tif (store) {\n\t\teffect(() => input.placeholder = store.placeholder || '', ctx.signal);\n\t}\n\n\n\t/** @type {NodeJS.Timeout?} */\n\tlet timeout = null;\n\tinput.addEventListener('input', function toQuery() {\n\t\tif (timeout) { clearTimeout(timeout); }\n\t\ttimeout = setTimeout(() => {\n\t\t\t// TODO: 基于搜索项目过滤\n\t\t}, 300);\n\n\t});\n\n\n\n\teffect(() => {\n\t\t/** @type {{ value: any; label: any; data?: { [k: string]: string | number; };}[]} */\n\t\tconst list = [...currentOptions.get()];\n\t\tif (ctx.clearable) {\n\t\t\tlist.unshift({ value: '', label: '' });\n\t\t}\n\t\tconst val = value.get();\n\t\tconst item = list.find(v => v.value == val);\n\t\tinput.value = item?.value || '';\n\t\tinput.options = list;\n\t}, ctx.signal);\n\n\n\n\t/**\n\t * \n\t * @param {*} v \n\t * @returns \n\t */\n\tfunction update(v) {\n\t\t// TODO:\n\t\tconst vv = v == '' || v == null ? null : v;\n\t\tif (vv === value.get()) { return; }\n\t\tvalue.set(vv);\n\t\tinput.value = vv || '';\n\t}\n\teffect(() => update(ctx.value), ctx.signal);\n\n\treturn input;\n};\n\nexport default Component;\n","/** @import { FieldComponent } from '@yongdall/web' */\nimport { createComputed, createState, effect, permissionsService } from '@yongdall/web';\n\n\n\n/** @type {FieldComponent} */\nconst permissionsComponent = ctx => {\n\tconst root = document.createElement('div');\n\tconst checkAllDiv = root.appendChild(document.createElement('div'));\n\tconst checkAllLabel = checkAllDiv.appendChild(document.createElement('label'));\n\tconst checkAll = checkAllLabel.appendChild(document.createElement('input'));\n\tcheckAllLabel.appendChild(document.createTextNode('全选'));\n\tcheckAllLabel.classList.add('align-center');\n\tcheckAll.type = 'checkbox';\n\tconst optionDiv = root.appendChild(document.createElement('div'));\n\tlet value = new Set();\n\tlet allValuesState = createComputed(() =>\n\t\tnew Set(permissionsService.get().flatMap(v => v.children?.map(v => v.value) || []))\n\t);\n\tfunction updateAll() {\n\t\tif (allValuesState.get().size === value.size) {\n\t\t\tcheckAll.indeterminate = false;\n\t\t\tcheckAll.checked = true;\n\t\t} else if (value.size) {\n\t\t\tcheckAll.indeterminate = true;\n\t\t} else {\n\t\t\tcheckAll.indeterminate = false;\n\t\t\tcheckAll.checked = false;\n\t\t}\n\n\t}\n\tfunction updateSelect() {\n\t\tvalue = new Set();\n\t\tfor (const { checked, value: val } of optionDiv.querySelectorAll('input')) {\n\t\t\tif (!checked || !val) { continue; }\n\t\t\tvalue.add(val);\n\t\t}\n\t\tctx.value = [...value].map(v => ({ permission: v }));\n\t\tupdateAll();\n\t}\n\n\tfunction updateValue() {\n\t\tfor (const input of optionDiv.querySelectorAll('input')) {\n\t\t\tinput.checked = value.has(input.value);\n\t\t}\n\t}\n\tfunction updateAllValue() {\n\t\tupdateValue();\n\t\tupdateAll();\n\t}\n\n\tconst inputs = createState(/** @type {HTMLInputElement[]} */([]));\n\n\tfunction updateOptions() {\n\t\toptionDiv.innerHTML = '';\n\t\tconst list = [];\n\t\tfor (const { label, children } of permissionsService.get()) {\n\t\t\tif (!children?.length) { continue; }\n\t\t\tconst groups = optionDiv.appendChild(document.createElement('details'));\n\t\t\tgroups.open = true;\n\t\t\tgroups.appendChild(document.createElement('summary')).appendChild(document.createTextNode(label));\n\t\t\tfor (const { value, label } of children) {\n\t\t\t\tconst checkLabel = groups.appendChild(document.createElement('label'));\n\t\t\t\tconst input = checkLabel.appendChild(document.createElement('input'));\n\t\t\t\tinput.type = 'checkbox';\n\t\t\t\tcheckLabel.appendChild(document.createTextNode(label));\n\t\t\t\tcheckLabel.classList.add('align-center');\n\t\t\t\tcheckLabel.classList.add('inline');\n\t\t\t\tinput.value = String(value || '');\n\t\t\t\tinput.addEventListener('input', updateSelect);\n\t\t\t\tlist.push(input);\n\t\t\t}\n\t\t}\n\t\tinputs.set(list);\n\t\tupdateAllValue();\n\t}\n\teffect(() => updateOptions(), ctx.signal);\n\n\n\n\tcheckAll.addEventListener('input', () => {\n\t\tif (!checkAll.checked) {\n\t\t\tfor (const input of optionDiv.querySelectorAll('input')) {\n\t\t\t\tinput.checked = false;\n\t\t\t}\n\t\t\tctx.value = [];\n\t\t\treturn;\n\t\t}\n\t\tconst value = new Set();\n\t\tfor (const input of optionDiv.querySelectorAll('input')) {\n\t\t\tinput.checked = true;\n\t\t\tvalue.add(input.value);\n\t\t}\n\t\tctx.value = [...value].map(v => ({ permission: v }));\n\t\tupdateValue();\n\t});\n\tcheckAll.addEventListener('change', (e) => ctx.emit('change', e));\n\tcheckAll.addEventListener('focus', (e) => ctx.emit('focus', e));\n\tcheckAll.addEventListener('blur', (e) => ctx.emit('blur', e));\n\n\n\n\n\tconst editable = createComputed(() => Boolean(!ctx.editable || ctx.disabled));\n\tctx.listen('focus', () => checkAll.focus());\n\tctx.listen('scrollIntoView', () => checkAll.scrollIntoView());\n\teffect(() => checkAll.hidden = Boolean(ctx.hidden), ctx.signal);\n\teffect(() => {\n\t\tconst disabled = editable.get();\n\t\tcheckAllLabel.hidden = disabled;\n\t\tfor (const input of inputs.get()) {\n\t\t\tinput.disabled = disabled;\n\n\t\t}\n\t}, ctx.signal);\n\teffect(() => checkAll.readOnly = Boolean(ctx.readonly), ctx.signal);\n\n\n\n\n\n\n\n\t/**\n\t * \n\t * @param {any[]} v \n\t * @returns \n\t */\n\tfunction update(v) {\n\t\tconst list = new Set(Array.isArray(v) && v.map(v => v.permission) || []);\n\t\tif (list.size === value.size) {\n\t\t\tlet updated = false;\n\t\t\tfor (const v of value) {\n\t\t\t\tif (!list.has(v)) {\n\t\t\t\t\tupdated = true;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (!updated) { return; }\n\t\t\treturn;\n\t\t}\n\t\tvalue = list;\n\t\tupdateAllValue();\n\t}\n\teffect(() => update(ctx.value), ctx.signal);\n\treturn root;\n};\n\nexport default permissionsComponent;\n","/** @import { FieldFilterContext } from '@yongdall/web' */\nimport { effect } from '@yongdall/web'\n\n/**\n * @template T\n * @param {(root: Element, placeholder: string, cb: (v: T?) => void) => (v: string) => void} create\n * @param {FieldFilterContext} ctx\n * @returns {HTMLElement}\n */\nexport default function createInputCell(create, ctx) {\n\tconst { inline, showLabel, quick } = ctx.style;\n\tconst root = document.createElement(inline ? 'span' : 'div');\n\tconst labelText = ctx.field?.label ?? '';\n\tif (showLabel) {\n\t\tconst label = root.appendChild(document.createElement(inline ? 'span' : 'div'));\n\t\tlabel.innerText = labelText;\n\t}\n\tconst inputRoot = inline ? root : root.appendChild(document.createElement('div'))\n\n\tconst set = create(inputRoot, quick ? labelText : '', value => { ctx.value = value; });\n\teffect(() => set(ctx.value), ctx.signal);\n\treturn root;\n}\n","/** @import { FieldFilterComponent } from '@yongdall/web' */\n\nimport createInputCell from './createInputCell.mjs';\n\n/**\n * \n * @param {Element} root \n * @param {string} placeholder \n * @param {(v: string?) => void} cb \n * @returns {(v: string) => void}\n */\nfunction createInput(root, placeholder, cb) {\n\tconst input = root.appendChild(document.createElement('textarea'));\n\tif (placeholder) { input.placeholder = placeholder; }\n\tinput.addEventListener('input', () => cb(input.value || null));\n\treturn v => { input.value = v ?? ''; };\n\n}\n/** @type {FieldFilterComponent} */\nconst Component = createInputCell.bind(null, createInput);;\n\nexport default Component;\n","/** @import { FieldFilterComponent } from '@yongdall/web' */\n\nimport createInputCell from './createInputCell.mjs';\n\n/**\n * \n * @param {string} v \n * @param {boolean} [required] \n* @returns {number?}\n */\nfunction getValue(v, required) {\n\tconst value = parseFloat(v);\n\tif (Number.isFinite(value)) {\n\t\treturn value;\n\t} else {\n\t\treturn required ? 0 : null;\n\t}\n\n}\n/**\n * \n * @param {Element} root \n * @param {string} placeholder \n * @param {(v: number?) => void} cb \n * @returns {(v: string) => void}\n */\nfunction createInput(root, placeholder, cb) {\n\tconst input = root.appendChild(document.createElement('input'));\n\tinput.type = 'number';\n\tif (placeholder) { input.placeholder = placeholder; }\n\tinput.addEventListener('input', () => cb(getValue(input.value)));\n\treturn v => { input.value = v ?? ''; };\n}\n\n/** @type {FieldFilterComponent} */\nconst Component = createInputCell.bind(null, createInput);\n\nexport default Component;\n","/** @import { FieldFilterComponent } from '@yongdall/web' */\n\nimport createInputCell from './createInputCell.mjs';\n\n/**\n * \n * @param {string} v \n * @param {boolean} [required] \n* @returns {number?}\n */\nfunction getValue(v, required) {\n\tconst value = parseInt(v);\n\tif (Number.isFinite(value)) {\n\t\treturn value\n\t} else {\n\t\treturn required ? 0 : null;\n\t}\n\n}\n/**\n * \n * @param {Element} root \n * @param {string} placeholder \n * @param {(v: number?) => void} cb \n * @returns {(v: string) => void}\n */\nfunction createInput(root, placeholder, cb) {\n\tconst input = root.appendChild(document.createElement('input'));\n\tinput.type = 'number';\n\tif (placeholder) { input.placeholder = placeholder; }\n\tinput.addEventListener('input', () => cb(getValue(input.value)));\n\treturn v => { input.value = v ?? ''; };\n\n}\n/** @type {FieldFilterComponent} */\nconst Component = createInputCell.bind(null, createInput);\n\nexport default Component\n","/** @import { FieldFilterComponent } from '@yongdall/web' */\n\nimport createInputCell from './createInputCell.mjs';\n\n/**\n* \n* @param {string} v \n* @param {boolean} [required] \n* @returns {bigint?}\n*/\nfunction getValue(v, required) {\n\tif (!v) {\n\t\treturn required ? 0n : null\n\t}\n\ttry {\n\t\treturn BigInt(v);\n\t} catch {\n\t}\n\treturn required ? 0n : null\n\n}\n/**\n * \n * @param {Element} root \n * @param {string} placeholder \n * @param {(v: bigint?) => void} cb \n * @returns {(v: string) => void}\n */\nfunction createInput(root, placeholder, cb) {\n\tconst input = root.appendChild(document.createElement('input'));\n\tinput.type = 'number';\n\tif (placeholder) { input.placeholder = placeholder; }\n\tinput.addEventListener('input', () => cb(getValue(input.value)));\n\treturn v => { input.value = v ?? ''; };\n\n}\n/** @type {FieldFilterComponent} */\nconst Component = createInputCell.bind(null, createInput);\n\nexport default Component\n","/** @import { FieldFilterComponent } from '@yongdall/web' */\n\nimport createInputCell from './createInputCell.mjs';\n\n/**\n * \n * @param {Element} root \n * @param {string} placeholder \n * @param {(v: string?) => void} cb \n * @returns {(v: string) => void}\n */\nfunction createInput(root, placeholder, cb) {\n\tconst input = root.appendChild(document.createElement('input'));\n\tif (placeholder) { input.placeholder = placeholder; }\n\tinput.addEventListener('input', () => cb(input.value || null));\n\treturn v => { input.value = v ?? ''; };\n\n}\n\n/** @type {FieldFilterComponent} */\nconst Component = createInputCell.bind(null, createInput);\n\nexport default Component\n","/** @import { FieldFilterComponent } from '@yongdall/web' */\nimport { effect } from '@yongdall/web'\n\n/** @type {FieldFilterComponent} */\nconst Component = ctx => {\n\tconst { inline, showLabel, quick } = ctx.style;\n\tconst root = document.createElement(inline ? 'span' : 'div');\n\tconst label = root.appendChild(document.createElement('label'));\n\tconst input = label.appendChild(document.createElement('input'));\n\tinput.type = 'checkbox';\n\tinput.addEventListener('input', () => {\n\t\tconst value = input.indeterminate ? Boolean(input.checked) : null;\n\t\tctx.value = value;\n\t});\n\teffect(() => {\n\t\tconst value = ctx.value;\n\t\tif (typeof value === 'boolean') {\n\t\t\tinput.checked = value;\n\t\t\treturn;\n\t\t}\n\t\tinput.indeterminate = true;\n\t\tif (value !== null) {\n\t\t\tctx.value = null;\n\t\t}\n\t}, ctx.signal);\n\tif (showLabel) {\n\t\tlabel.insertBefore(document.createTextNode(ctx.field?.label ?? ''), label.firstChild);\n\t} else if (quick) {\n\t\tlabel.appendChild(document.createTextNode(ctx.field?.label ?? ''));\n\t}\n\treturn root;\n};\n\nexport default Component;\n","/** @import { FieldFilterComponent } from '@yongdall/web' */\n\nimport createInputCell from './createInputCell.mjs';\n\n/**\n * \n * @param {Element} root \n * @param {string} placeholder \n * @param {(v: string?) => void} cb \n * @returns {(v: string) => void}\n */\nfunction createInput(root, placeholder, cb) {\n\tconst input = root.appendChild(document.createElement('input'));\n\tinput.type = 'date';\n\tinput.step = '1'\n\tif (placeholder) { input.placeholder = placeholder; }\n\tinput.addEventListener('input', () => cb(input.value || null));\n\treturn v => { input.value = v ?? ''; };\n\n}\n\n/** @type {FieldFilterComponent} */\nconst Component = createInputCell.bind(null, createInput);\n\nexport default Component\n","/** @import { FieldFilterComponent } from '@yongdall/web' */\n\nimport createInputCell from './createInputCell.mjs';\n\n/**\n * \n * @param {Element} root \n * @param {string} placeholder \n * @param {(v: string?) => void} cb \n * @returns {(v: string) => void}\n */\nfunction createInput(root, placeholder, cb) {\n\tconst input = root.appendChild(document.createElement('input'));\n\tinput.type = 'time';\n\tif (placeholder) { input.placeholder = placeholder; }\n\tinput.addEventListener('input', () => cb(input.value || null));\n\treturn v => { input.value = v ?? ''; };\n\n}\n\n/** @type {FieldFilterComponent} */\nconst Component = createInputCell.bind(null, createInput);\n\nexport default Component\n","/** @import { FieldFilterComponent } from '@yongdall/web' */\n\nimport createInputCell from './createInputCell.mjs';\n\n/**\n * \n * @param {Element} root \n * @param {string} placeholder \n * @param {(v: string?) => void} cb \n * @returns {(v: string) => void}\n */\nfunction createInput(root, placeholder, cb) {\n\tconst input = root.appendChild(document.createElement('input'));\n\tinput.type = 'datetime-local';\n\tinput.step = '1'\n\tif (placeholder) { input.placeholder = placeholder; }\n\tinput.addEventListener('input', () => cb(input.value || null));\n\treturn v => { input.value = v ?? ''; };\n\n}\n\n/** @type {FieldFilterComponent} */\nconst Component = createInputCell.bind(null, createInput);\n\nexport default Component\n","/** @import { FieldFilterComponent } from '@yongdall/web' */\n\nimport createInputCell from './createInputCell.mjs';\n\n/**\n * \n * @param {Element} root \n * @param {string} placeholder \n * @param {(v: string?) => void} cb \n * @returns {(v: string) => void}\n */\nfunction createInput(root, placeholder, cb) {\n\tconst input = root.appendChild(document.createElement('input'));\n\tinput.type = 'url';\n\tif (placeholder) { input.placeholder = placeholder; }\n\tinput.addEventListener('input', () => cb(input.value || null));\n\treturn v => { input.value = v ?? ''; };\n\n}\n\n/** @type {FieldFilterComponent} */\nconst Component = createInputCell.bind(null, createInput);\n\nexport default Component\n","/** @import { FieldFilterComponent } from '@yongdall/web' */\n\nimport createInputCell from './createInputCell.mjs';\n\n/**\n * \n * @param {Element} root \n * @param {string} placeholder \n * @param {(v: string?) => void} cb \n * @returns {(v: string) => void}\n */\nfunction createInput(root, placeholder, cb) {\n\tconst input = root.appendChild(document.createElement('input'));\n\tif (placeholder) { input.placeholder = placeholder; }\n\tinput.addEventListener('input', () => cb(input.value || null));\n\treturn v => { input.value = v ?? ''; };\n\n}\n\n/** @type {FieldFilterComponent} */\nconst Component = createInputCell.bind(null, createInput);\n\nexport default Component\n","/** @import { FieldFilterComponent } from '@yongdall/web' */\nimport { effect, modelService, runPattern, Search, toId } from '@yongdall/web';\nimport '../inputs/YongdallSelect.mjs';\n/** @import Select from '../inputs/YongdallSelect.mjs' */\n\n/**\n * \n * @param {string?} filter\n * @returns {{where?: any, orWhere?: any}}\n */\nfunction loadOptions(filter) {\n\tif (!filter || typeof filter !== 'string') { return {}; }\n\tconst { where, orWhere } = Search.parse(filter);\n\treturn { where, orWhere }\n}\n\n/** @type {FieldFilterComponent} */\nconst Component = (ctx, componentOptions) => {\n\tconst { inline, showLabel, quick } = ctx.style;\n\tconst root = document.createElement(inline ? 'span' : 'div');\n\tconst label = root.appendChild(document.createElement('label'));\n\tconst input = /** @type {Select} */(label.appendChild(document.createElement('yongdall-select')));\n\n\tconst model = modelService(ctx.field?.model || '');\n\n\n\t/** @type {string?} */\n\tlet value = null;\n\tinput.addEventListener('change', () => {\n\t\tvalue = input.value || null;\n\t\tctx.value = value;\n\t});\n\n\tmodel.then(async (modelConfiguration) => {\n\t\tlet currentQuery = '';\n\t\t/** @type {{[k: string]: number | string}[]} */\n\t\tlet queriedOptions = [];\n\t\t/** @type {NodeJS.Timeout?} */\n\t\tlet timeout = null;\n\n\t\tconst search = loadOptions(componentOptions?.filter);\n\t\tlet loaded = false;\n\t\tfunction toQuery() {\n\t\t\tloaded = true;\n\t\t\tif (timeout) { clearTimeout(timeout); }\n\t\t\tconst query = input.text;\n\t\t\tcurrentQuery = query;\n\t\t\ttimeout = setTimeout(async () => {\n\t\t\t\tif (currentQuery !== query) { return; }\n\t\t\t\tconst options = await model.options({ ...search, query, limit: 100 });\n\t\t\t\tif (currentQuery !== query) { return; }\n\t\t\t\tqueriedOptions = options;\n\t\t\t\tupdateOptions();\n\t\t\t}, 300);\n\n\t\t}\n\t\tinput.addEventListener('input', toQuery);\n\t\tinput.addEventListener('focus', () => {\n\t\t\tif (loaded) { return; }\n\t\t\ttoQuery();\n\t\t});\n\n\t\tconst labelPattern = modelConfiguration.labelPattern || '';\n\n\t\t/** @type {(document: Record<string, any>) => any} */\n\t\tconst toCurrentId = document => toId(modelConfiguration, document);\n\t\t/** @type {{ [k: string]: number | string}?} */\n\t\tlet currentItem = null;\n\t\tasync function updateCurrentItem() {\n\t\t\tconst id = value;\n\t\t\tif (!id) {\n\t\t\t\tcurrentItem = null;\n\t\t\t\tupdateOptions();\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst item = queriedOptions.find(v => toCurrentId(v) === id);\n\t\t\tif (item) {\n\t\t\t\tcurrentItem = item;\n\t\t\t\tupdateOptions();\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst { option } = await model.option(id);\n\t\t\tif (!option || id !== value) { return; }\n\t\t\tif (id !== value) { return; }\n\t\t\tcurrentItem = option;\n\t\t\tupdateOptions();\n\n\t\t}\n\n\n\n\n\n\t\tfunction updateOptions() {\n\t\t\tconst allDocuments = [...queriedOptions];\n\t\t\tconst val = value;\n\t\t\tif (val) {\n\t\t\t\tconst current = currentItem;\n\t\t\t\tif (current && toCurrentId(current) == val && !allDocuments.find(v => toCurrentId(v) == val)) {\n\t\t\t\t\tallDocuments.push(current);\n\t\t\t\t}\n\t\t\t}\n\t\t\t/** @type {{ value: any; label: any; data?: { [k: string]: string | number; };}[]} */\n\t\t\tconst list = allDocuments.map(v => {\n\t\t\t\tconst value = toCurrentId(v);\n\t\t\t\treturn ({ value, label: runPattern(labelPattern, v) || value, data: v });\n\t\t\t});\n\t\t\tlist.unshift({ value: '', label: '' });\n\t\t\tconst item = list.find(v => v.value == value);\n\t\t\tinput.value = item?.label || item?.value || '';\n\t\t\tinput.options = list;\n\t\t}\n\n\n\t\teffect(() => {\n\t\t\tconst v = ctx.value;\n\t\t\t// TODO:\n\t\t\tconst vv = v == '' || v == null ? null : v;\n\t\t\tif (vv === value) { return; }\n\t\t\tvalue = vv;\n\t\t\tinput.value = value || '';\n\t\t\tupdateCurrentItem();\n\t\t}, ctx.signal);\n\t});\n\tif (showLabel) {\n\t\tlabel.insertBefore(document.createTextNode(ctx.field?.label ?? ''), label.firstChild);\n\t} else if (quick) {\n\t\tinput.placeholder = ctx.field?.label ?? '';\n\t}\n\n\treturn input;\n};\n\nexport default Component;\n","/** @import { FieldFilterComponent } from '@yongdall/web' */\nimport { createComputed, effect, loadOptions } from '@yongdall/web';\nimport '../inputs/YongdallSelect.mjs';\n/** @import Select from '../inputs/YongdallSelect.mjs' */\n\n\n/** @type {FieldFilterComponent} */\nconst Component = (ctx, componentOptions = {}) => {\n\tconst { inline, showLabel, quick } = ctx.style;\n\tconst root = document.createElement(inline ? 'span' : 'div');\n\tconst label = root.appendChild(document.createElement('label'));\n\tconst input = /** @type {Select} */(label.appendChild(document.createElement('yongdall-select')));\n\tconst options = loadOptions(componentOptions);\n\n\n\n\t/** @type {string?} */\n\tlet value = null;\n\tinput.addEventListener('change', () => {\n\t\tvalue = input.value || null;\n\t\tctx.value = value;\n\t});\n\n\t/** @type {NodeJS.Timeout?} */\n\tlet timeout = null;\n\n\tlet loaded = false;\n\tfunction toQuery() {\n\t\tloaded = true;\n\t\tif (timeout) { clearTimeout(timeout); }\n\t\ttimeout = setTimeout(() => {\n\t\t\t// TODO: 基于搜索项目过滤\n\t\t}, 300);\n\n\t}\n\tinput.addEventListener('input', toQuery);\n\n\n\t// TODO: 过滤\n\tconst currentOptions = createComputed(() => {\n\t\t/** @type {{ value: any; label: any; data?: { [k: string]: string | number; };}[]} */\n\t\tconst list = [{ value: '', label: '' }, ...options.get()];\n\t\tlist.unshift({ value: '', label: '' });\n\t\t\treturn list;\n\t});\n\n\n\n\t\n\teffect(() => { input.options = currentOptions.get() }, ctx.signal);\n\teffect(() => {\n\t\tconst v = ctx.value;\n\t\t// TODO:\n\t\tconst vv = v == '' || v == null ? null : v;\n\t\tif (vv === value) { return; }\n\t\tvalue = vv;\n\t\tinput.value = value || '';\n\t}, ctx.signal);\n\tif (showLabel) {\n\t\tlabel.insertBefore(document.createTextNode(ctx.field?.label ?? ''), label.firstChild);\n\t} else if (quick) {\n\t\tinput.placeholder = ctx.field?.label ?? '';\n\t}\n\n\treturn input;\n};\n\nexport default Component;\n","/** @import { Hooks } from '@yongdall/web' */\n\nimport textInput from './inputs/text.mjs';\nimport floatInput from './inputs/float.mjs';\nimport i32Input from './inputs/i32.mjs';\nimport i64Input from './inputs/i64.mjs';\nimport stringInput from './inputs/string.mjs';\nimport boolInput from './inputs/bool.mjs';\nimport dateInput from './inputs/date.mjs';\nimport timeInput from './inputs/time.mjs';\nimport datetimeInput from './inputs/datetime.mjs';\nimport passwordInput from './inputs/password.mjs';\nimport uriInput from './inputs/uri.mjs';\nimport uuidInput from './inputs/uuid.mjs';\nimport documentInput from './inputs/document.mjs';\nimport selectInput from './inputs/select.mjs';\nimport permissionsInput from './inputs/permissions.mjs';\n\n\nimport textFilter from './filters/text.mjs';\nimport floatFilter from './filters/float.mjs';\nimport i32Filter from './filters/i32.mjs';\nimport i64Filter from './filters/i64.mjs';\nimport stringFilter from './filters/string.mjs';\nimport boolFilter from './filters/bool.mjs';\nimport dateFilter from './filters/date.mjs';\nimport timeFilter from './filters/time.mjs';\nimport datetimeFilter from './filters/datetime.mjs';\nimport uriFilter from './filters/uri.mjs';\nimport uuidFilter from './filters/uuid.mjs';\nimport documentFilter from './filters/document.mjs';\nimport selectFilter from './filters/select.mjs';\n\n\n/** @type {Hooks.Define['formFields']} */\nexport const formFields = [\n\t{ type: 'text', input: textInput, filter: textFilter, notFilter: textFilter, filters: {'=': textFilter, '!=': textFilter} },\n\t{ type: 'string', input: stringInput, filter: stringFilter, notFilter: stringFilter, filters: {'=': stringFilter, '!=': stringFilter} },\n\t{ type: 'bool', input: boolInput, filter: boolFilter, notFilter: boolFilter, filters: {'=': boolFilter, '!=': boolFilter} },\n\t{ type: 'f32', input: floatInput, filter: floatFilter, notFilter: floatFilter, filters: {'=': floatFilter, '!=': floatFilter, '>': floatFilter, '>=': floatFilter, '<': floatFilter, '<=': floatFilter} },\n\t{ type: 'f64', input: floatInput, filter: floatFilter, notFilter: floatFilter, filters: {'=': floatFilter, '!=': floatFilter, '>': floatFilter, '>=': floatFilter, '<': floatFilter, '<=': floatFilter} },\n\t{ type: 'i16', input: i32Input, filter: i32Filter, notFilter: i32Filter, filters: {'=': i32Filter, '!=': i32Filter, '>': i32Filter, '>=': i32Filter, '<': i32Filter, '<=': i32Filter} },\n\t{ type: 'i32', input: i32Input, filter: i32Filter, notFilter: i32Filter, filters: {'=': i32Filter, '!=': i32Filter, '>': i32Filter, '>=': i32Filter, '<': i32Filter, '<=': i32Filter} },\n\t{ type: 'i64', input: i64Input, filter: i64Filter, notFilter: i64Filter, filters: {'=': i64Filter, '!=': i64Filter, '>': i64Filter, '>=': i64Filter, '<': i64Filter, '<=': i64Filter} },\n\t{ type: 'date', input: dateInput, filter: dateFilter, notFilter: dateFilter, filters: {'=': dateFilter, '!=': dateFilter, '>': dateFilter, '>=': dateFilter, '<': dateFilter, '<=': dateFilter} },\n\t{ type: 'time', input: timeInput, filter: timeFilter, notFilter: timeFilter, filters: {'=': timeFilter, '!=': timeFilter, '>': timeFilter, '>=': timeFilter, '<': timeFilter, '<=': timeFilter} },\n\t{ type: 'uuid', input: uuidInput, filter: uuidFilter, notFilter: uuidFilter, filters: {'=': uuidFilter, '!=': uuidFilter } },\n\t{ type: 'datetime', input: datetimeInput, filter: datetimeFilter, notFilter: datetimeFilter, filters: {'=': datetimeFilter, '!=': datetimeFilter, '>': datetimeFilter, '>=': datetimeFilter, '<': datetimeFilter, '<=': datetimeFilter} },\n\t{ type: 'timetz', input: timeInput, filter: timeFilter, notFilter: timeFilter, filters: {'=': timeFilter, '!=': timeFilter, '>': timeFilter, '>=': timeFilter, '<': timeFilter, '<=': timeFilter} },\n\t{ type: 'timestamp', input: datetimeInput, filter: datetimeFilter, notFilter: datetimeFilter, filters: {'=': datetimeFilter, '!=': datetimeFilter, '>': datetimeFilter, '>=': datetimeFilter, '<': datetimeFilter, '<=': datetimeFilter} },\n\t{ type: 'password', input: passwordInput, filter: stringFilter, notFilter: stringFilter, filters: {'=': stringFilter, '!=': stringFilter } },\n\t{ type: 'uri', input: uriInput, filter: uriFilter, notFilter: uriFilter, filters: {'=': uriFilter, '!=': uriFilter } },\n\t{ type: 'document', input: documentInput, filter: documentFilter, notFilter: documentFilter, filters: { '=': documentFilter, '!=': documentFilter } },\n\t{ type: 'select', input: selectInput, filter: selectFilter, notFilter: selectFilter, filters: { '=': selectFilter, '!=': selectFilter } },\n\t{ type: 'submodel', array: true, renderer: 'permission', input: permissionsInput},\n]\nexport const styles = ['style.css'];\n"],"mappings":"+OAQA,SAAgBA,EAAW,EAAK,CAC/B,IAAM,EAAY,SAAS,cAAc,MAAM,CACzC,EAAQ,EAMd,MALA,GAAM,MAAM,SAAW,SACvB,EAAM,MAAM,WAAa,SACzB,EAAM,MAAM,aAAe,WAE3B,EAAI,OAAO,qBAAwB,EAAU,gBAAgB,CAAC,CACvD,CAAC,EAAW,GAAK,CAAE,EAAM,MAAQ,EAAM,UAAY,GAAK,IAAM,CAatE,SAAwBC,EAAgB,EACvC,EACA,EACA,EACA,EACE,CAEF,IAAM,EAAW,EAAI,SAGjB,EAAQ,EAAI,OAAO,SAAW,KAAO,EACnC,CAAC,EAAO,IAAQ,EAAW,EAAS,GAAY,EAAK,GAAK,CAC/D,EAAQ,EAAS,EAAG,EAAI,OAAO,SAAS,CACxC,EAAI,MAAQ,GACX,CAOF,SAAS,EAAO,EAAG,EAAO,CACrB,CAAC,GAAS,IAAM,IACpB,EAAQ,EACR,EAAI,EAAE,EAIP,OAFA,EAAO,EAAI,MAAO,GAAK,CACvB,MAAa,EAAO,EAAI,MAAM,CAAE,EAAI,OAAO,CACpC,EChDR,SAASC,EAAW,EAAK,CACxB,IAAM,EAAY,SAAS,cAAc,MAAM,CACzC,EAAQ,EAEd,OADA,EAAI,OAAO,qBAAwB,EAAU,gBAAgB,CAAC,CACvD,CAAC,EAAW,GAAK,CAAE,EAAM,UAAY,GAAK,IAAM,CAUxD,SAASC,EAAS,EAAG,EAAU,CAC9B,OAAO,GAAK,CAAC,EAAW,EAAI,KAQ7B,SAASC,EAAY,EAAK,EAAI,CAC7B,IAAM,EAAQ,SAAS,cAAc,WAAW,CAUhD,OATA,EAAM,iBAAiB,YAAe,EAAG,EAAM,MAAM,CAAC,CACtD,EAAM,iBAAiB,QAAU,GAAM,EAAI,KAAK,QAAS,EAAE,CAAC,CAC5D,EAAM,iBAAiB,SAAW,GAAM,EAAI,KAAK,SAAU,EAAE,CAAC,CAC9D,EAAM,iBAAiB,QAAU,GAAM,EAAI,KAAK,QAAS,EAAE,CAAC,CAC5D,EAAM,iBAAiB,OAAS,GAAM,EAAI,KAAK,OAAQ,EAAE,CAAC,CAC1D,MAAa,EAAM,SAAW,GAAQ,EAAI,UAAY,EAAI,UAAW,EAAI,OAAO,CAChF,MAAa,EAAM,YAAc,EAAI,YAAa,EAAI,OAAO,CAC7D,EAAI,OAAO,YAAe,EAAM,OAAO,CAAC,CACxC,EAAI,OAAO,qBAAwB,EAAM,gBAAgB,CAAC,CACnD,CAAC,EAAO,GAAK,CAAE,EAAM,MAAQ,GAAK,IAAM,CAOhD,IAAA,EAJkB,GACVE,EAAgB,EAAKF,EAAaF,EAAYC,EAAU,GAAG,CCpCnE,SAASI,EAAS,EAAG,EAAU,CAC9B,IAAM,EAAQ,WAAW,EAAE,CAI1B,OAHG,OAAO,SAAS,EAAM,CAClB,EAEC,EAAe,KAAJ,EAUrB,SAASC,EAAY,EAAK,EAAI,CAC7B,IAAM,EAAQ,SAAS,cAAc,QAAQ,CAW7C,MAVA,GAAM,KAAO,SACb,EAAM,iBAAiB,YAAe,EAAG,EAAM,MAAM,CAAC,CACtD,EAAM,iBAAiB,QAAU,GAAM,EAAI,KAAK,QAAS,EAAE,CAAC,CAC5D,EAAM,iBAAiB,SAAW,GAAM,EAAI,KAAK,SAAU,EAAE,CAAC,CAC9D,EAAM,iBAAiB,QAAU,GAAM,EAAI,KAAK,QAAS,EAAE,CAAC,CAC5D,EAAM,iBAAiB,OAAS,GAAM,EAAI,KAAK,OAAQ,EAAE,CAAC,CAC1D,MAAa,EAAM,SAAW,GAAQ,EAAI,UAAY,EAAI,UAAW,EAAI,OAAO,CAChF,MAAa,EAAM,YAAc,EAAI,YAAa,EAAI,OAAO,CAC7D,EAAI,OAAO,YAAe,EAAM,OAAO,CAAC,CACxC,EAAI,OAAO,qBAAwB,EAAM,gBAAgB,CAAC,CACnD,CAAC,EAAO,GAAK,CAAE,EAAM,MAAQ,GAAK,IAAM,CAQhD,IAAA,EAJkB,GACVE,EAAgB,EAAKF,EAAaG,EAAYJ,EAAU,EAAE,CCjClE,SAASK,EAAS,EAAG,EAAU,CAC9B,IAAM,EAAQ,SAAS,EAAE,CAIxB,OAHG,OAAO,SAAS,EAAM,CAClB,EAEC,EAAe,KAAJ,EAUrB,SAASC,GAAY,EAAK,EAAI,CAC7B,IAAM,EAAQ,SAAS,cAAc,QAAQ,CAW7C,MAVA,GAAM,KAAO,SACb,EAAM,iBAAiB,YAAe,EAAG,EAAM,MAAM,CAAC,CACtD,EAAM,iBAAiB,QAAU,GAAM,EAAI,KAAK,QAAS,EAAE,CAAC,CAC5D,EAAM,iBAAiB,SAAW,GAAM,EAAI,KAAK,SAAU,EAAE,CAAC,CAC9D,EAAM,iBAAiB,QAAU,GAAM,EAAI,KAAK,QAAS,EAAE,CAAC,CAC5D,EAAM,iBAAiB,OAAS,GAAM,EAAI,KAAK,OAAQ,EAAE,CAAC,CAC1D,MAAa,EAAM,SAAW,GAAQ,EAAI,UAAY,EAAI,UAAW,EAAI,OAAO,CAChF,MAAa,EAAM,YAAc,EAAI,YAAa,EAAI,OAAO,CAC7D,EAAI,OAAO,YAAe,EAAM,OAAO,CAAC,CACxC,EAAI,OAAO,qBAAwB,EAAM,gBAAgB,CAAC,CACnD,CAAC,EAAO,GAAK,CAAE,EAAM,MAAQ,GAAK,IAAM,CAQhD,IAAA,EAJkB,GACVE,EAAgB,EAAKF,GAAaG,EAAYJ,EAAU,EAAE,CChClE,SAASK,GAAS,EAAG,EAAU,CAC9B,GAAI,CAAC,EACJ,OAAQ,EAAgB,KAAL,GAEpB,GAAI,CACH,OAAO,OAAO,EAAE,MACT,EAER,OAAQ,EAAgB,KAAL,GASpB,SAASC,GAAY,EAAK,EAAI,CAC7B,IAAM,EAAQ,SAAS,cAAc,QAAQ,CAW7C,MAVA,GAAM,KAAO,SACb,EAAM,iBAAiB,YAAe,EAAG,EAAM,MAAM,CAAC,CACtD,EAAM,iBAAiB,QAAU,GAAM,EAAI,KAAK,QAAS,EAAE,CAAC,CAC5D,EAAM,iBAAiB,SAAW,GAAM,EAAI,KAAK,SAAU,EAAE,CAAC,CAC9D,EAAM,iBAAiB,QAAU,GAAM,EAAI,KAAK,QAAS,EAAE,CAAC,CAC5D,EAAM,iBAAiB,OAAS,GAAM,EAAI,KAAK,OAAQ,EAAE,CAAC,CAC1D,MAAa,EAAM,SAAW,GAAQ,EAAI,UAAY,EAAI,UAAW,EAAI,OAAO,CAChF,MAAa,EAAM,YAAc,EAAI,YAAa,EAAI,OAAO,CAC7D,EAAI,OAAO,YAAe,EAAM,OAAO,CAAC,CACxC,EAAI,OAAO,qBAAwB,EAAM,gBAAgB,CAAC,CACnD,CAAC,EAAO,GAAK,CAAE,EAAM,MAAQ,GAAK,IAAM,CAQhD,IAAA,GAJkB,GACVE,EAAgB,EAAKF,GAAaG,EAAYJ,GAAU,GAAG,CClCnE,SAASK,EAAS,EAAG,EAAU,CAC9B,OAAO,GAAK,CAAC,EAAW,EAAI,KAQ7B,SAASC,EAAY,EAAK,EAAI,CAC7B,IAAM,EAAQ,SAAS,cAAc,QAAQ,CAU7C,OATA,EAAM,iBAAiB,YAAe,EAAG,EAAM,MAAM,CAAC,CACtD,EAAM,iBAAiB,QAAU,GAAM,EAAI,KAAK,QAAS,EAAE,CAAC,CAC5D,EAAM,iBAAiB,SAAW,GAAM,EAAI,KAAK,SAAU,EAAE,CAAC,CAC9D,EAAM,iBAAiB,QAAU,GAAM,EAAI,KAAK,QAAS,EAAE,CAAC,CAC5D,EAAM,iBAAiB,OAAS,GAAM,EAAI,KAAK,OAAQ,EAAE,CAAC,CAC1D,MAAa,EAAM,SAAW,GAAQ,EAAI,UAAY,EAAI,UAAW,EAAI,OAAO,CAChF,MAAa,EAAM,YAAc,EAAI,YAAa,EAAI,OAAO,CAC7D,EAAI,OAAO,YAAe,EAAM,OAAO,CAAC,CACxC,EAAI,OAAO,qBAAwB,EAAM,gBAAgB,CAAC,CACnD,CAAC,EAAO,GAAK,CAAE,EAAM,MAAQ,GAAK,IAAM,CAShD,IAAA,GAJkB,GACVE,EAAgB,EAAKF,EAAaG,EAAYJ,EAAU,GAAG,CCKnE,GArCkB,GAAO,CACxB,IAAM,EAAQ,SAAS,cAAc,QAAQ,CAC7C,EAAM,KAAO,WACb,IAAM,EAAW,EAAI,SAEjB,EAAQ,EAAI,OAAO,SAAW,KAAO,GACrC,GACH,EAAM,iBAAiB,YAAe,CACrC,EAAQ,EAAQ,EAAM,QACtB,EAAI,MAAQ,GACX,CACF,EAAM,iBAAiB,SAAW,GAAM,EAAI,KAAK,SAAU,EAAE,CAAC,CAC9D,EAAM,iBAAiB,QAAU,GAAM,EAAI,KAAK,QAAS,EAAE,CAAC,CAC5D,EAAM,iBAAiB,OAAS,GAAM,EAAI,KAAK,OAAQ,EAAE,CAAC,EAE1D,EAAM,SAAW,GAElB,MAAa,EAAM,SAAW,GAAQ,EAAI,UAAY,EAAI,UAAW,EAAI,OAAO,CAChF,MAAa,EAAM,YAAc,EAAI,YAAa,EAAI,OAAO,CAC7D,EAAI,OAAO,YAAe,EAAM,OAAO,CAAC,CACxC,EAAI,OAAO,qBAAwB,EAAM,gBAAgB,CAAC,CAM1D,SAAS,EAAO,EAAG,CAElB,IAAM,EAAK,CAAC,EAAI,OAAO,UAAY,OAAO,GAAM,UAAY,EAAQ,EAAK,KACrE,IAAO,IACX,EAAQ,EACR,EAAM,QAAU,EAAQ,GAGzB,OADA,MAAa,EAAO,EAAI,MAAM,CAAE,EAAI,OAAO,CACpC,GC5BR,SAASM,GAAS,EAAG,EAAU,CAI7B,OAHG,OAAO,SAAS,IAAI,KAAK,EAAE,CAAC,SAAS,CAAC,CAClC,EACI,EAGJ,KAFA,GAWT,SAASC,GAAY,EAAK,EAAI,CAC7B,IAAM,EAAQ,SAAS,cAAc,QAAQ,CAY7C,MAXA,GAAM,KAAO,OACb,EAAM,KAAO,IACb,EAAM,iBAAiB,YAAe,EAAG,EAAM,MAAM,CAAC,CACtD,EAAM,iBAAiB,QAAU,GAAM,EAAI,KAAK,QAAS,EAAE,CAAC,CAC5D,EAAM,iBAAiB,SAAW,GAAM,EAAI,KAAK,SAAU,EAAE,CAAC,CAC9D,EAAM,iBAAiB,QAAU,GAAM,EAAI,KAAK,QAAS,EAAE,CAAC,CAC5D,EAAM,iBAAiB,OAAS,GAAM,EAAI,KAAK,OAAQ,EAAE,CAAC,CAC1D,MAAa,EAAM,SAAW,GAAQ,EAAI,UAAY,EAAI,UAAW,EAAI,OAAO,CAChF,MAAa,EAAM,YAAc,EAAI,YAAa,EAAI,OAAO,CAC7D,EAAI,OAAO,YAAe,EAAM,OAAO,CAAC,CACxC,EAAI,OAAO,qBAAwB,EAAM,gBAAgB,CAAC,CACnD,CAAC,EAAO,GAAK,CAAE,EAAM,MAAQ,GAAK,IAAM,CAShD,IAAA,GAJkB,GACVE,EAAgB,EAAKF,GAAaG,EAAYJ,GAAU,GAAG,CClCnE,SAASK,GAAS,EAAG,EAAU,CAC9B,IAAM,EAAQ,IAAI,KAAK,EAAE,CAIxB,OAHG,OAAO,SAAS,EAAM,CAClB,EACI,EAGJ,KAFA,GAWT,SAASC,GAAY,EAAK,EAAI,CAC7B,IAAM,EAAQ,SAAS,cAAc,QAAQ,CAW7C,MAVA,GAAM,KAAO,OACb,EAAM,iBAAiB,YAAe,EAAG,EAAM,MAAM,CAAC,CACtD,EAAM,iBAAiB,QAAU,GAAM,EAAI,KAAK,QAAS,EAAE,CAAC,CAC5D,EAAM,iBAAiB,SAAW,GAAM,EAAI,KAAK,SAAU,EAAE,CAAC,CAC9D,EAAM,iBAAiB,QAAU,GAAM,EAAI,KAAK,QAAS,EAAE,CAAC,CAC5D,EAAM,iBAAiB,OAAS,GAAM,EAAI,KAAK,OAAQ,EAAE,CAAC,CAC1D,MAAa,EAAM,SAAW,GAAQ,EAAI,UAAY,EAAI,UAAW,EAAI,OAAO,CAChF,MAAa,EAAM,YAAc,EAAI,YAAa,EAAI,OAAO,CAC7D,EAAI,OAAO,YAAe,EAAM,OAAO,CAAC,CACxC,EAAI,OAAO,qBAAwB,EAAM,gBAAgB,CAAC,CACnD,CAAC,EAAO,GAAK,CAAE,EAAM,MAAQ,GAAK,IAAM,CAShD,IAAA,EAJkB,GACVE,EAAgB,EAAKF,GAAaG,EAAYJ,GAAU,GAAG,CClCnE,SAASK,GAAS,EAAG,EAAU,CAC9B,IAAM,EAAQ,IAAI,KAAK,EAAE,CAIxB,OAHG,OAAO,SAAS,EAAM,SAAS,CAAC,CAC5B,EAEA,KAQT,SAAS,EAAU,EAAM,EAAM,CAG9B,OAFW,EAAK,SAAS,CAElB,GAAG,CACT,GAAG,EAAK,aAAa,GAAG,SAAS,EAAG,IAAI,CACxC,GAAG,EAAK,UAAU,CAAG,IAAI,SAAS,EAAG,IAAI,CACzC,GAAG,EAAK,SAAS,GAAG,SAAS,EAAG,IAAI,CACnC,CAAC,KAAK,IAAI,GAAG,IAAO,CACpB,GAAG,EAAK,UAAU,GAAG,SAAS,EAAG,IAAI,CACrC,GAAG,EAAK,YAAY,GAAG,SAAS,EAAG,IAAI,CACvC,GAAG,EAAK,YAAY,GAAG,SAAS,EAAG,IAAI,CACtC,CAAC,KAAK,IAAI,GATK,GAiBnB,SAAS,EAAY,EAAE,EAAO,IAAK,CAClC,OAAO,aAAa,KAAO,EAAU,EAAE,EAAK,CAAG,EAAU,IAAI,KAAK,EAAE,CAAC,EAAK,EAAI,GAQ/E,SAAS,GAAW,EAAK,CACxB,IAAM,EAAY,SAAS,cAAc,MAAM,CACzC,EAAQ,EAMd,MALA,GAAM,MAAM,SAAW,SACvB,EAAM,MAAM,WAAa,SACzB,EAAM,MAAM,aAAe,WAE3B,EAAI,OAAO,qBAAwB,EAAU,gBAAgB,CAAC,CACvD,CAAC,EAAW,GAAK,CAAE,EAAM,MAAQ,EAAM,UAAY,EAAY,EAAG,IAAI,EAAI,CASlF,SAASC,GAAY,EAAK,EAAI,CAC7B,IAAM,EAAQ,SAAS,cAAc,QAAQ,CAa7C,MAZA,GAAM,KAAO,iBACb,EAAM,KAAO,IAEb,EAAM,iBAAiB,YAAe,EAAG,EAAM,MAAM,CAAC,CACtD,EAAM,iBAAiB,QAAU,GAAM,EAAI,KAAK,QAAS,EAAE,CAAC,CAC5D,EAAM,iBAAiB,SAAW,GAAM,EAAI,KAAK,SAAU,EAAE,CAAC,CAC9D,EAAM,iBAAiB,QAAU,GAAM,EAAI,KAAK,QAAS,EAAE,CAAC,CAC5D,EAAM,iBAAiB,OAAS,GAAM,EAAI,KAAK,OAAQ,EAAE,CAAC,CAC1D,MAAa,EAAM,SAAW,GAAQ,EAAI,UAAY,EAAI,UAAW,EAAI,OAAO,CAChF,MAAa,EAAM,YAAc,EAAI,YAAa,EAAI,OAAO,CAC7D,EAAI,OAAO,YAAe,EAAM,OAAO,CAAC,CACxC,EAAI,OAAO,qBAAwB,EAAM,gBAAgB,CAAC,CACnD,CAAC,EAAO,GAAK,CAAE,EAAM,MAAQ,EAAY,EAAE,EAAI,CASvD,IAAA,EAJkB,GACVE,EAAgB,EAAKF,GAAa,GAAYD,GAAU,KAAK,CC9ErE,SAASI,GAAS,EAAG,EAAU,CAC9B,OAAO,GAAK,CAAC,EAAW,EAAI,KAQ7B,SAASC,GAAY,EAAK,EAAI,CAC7B,IAAM,EAAQ,SAAS,cAAc,QAAQ,CAW7C,MAVA,GAAM,KAAO,WACb,EAAM,iBAAiB,YAAe,EAAG,EAAM,MAAM,CAAC,CACtD,EAAM,iBAAiB,QAAU,GAAM,EAAI,KAAK,QAAS,EAAE,CAAC,CAC5D,EAAM,iBAAiB,SAAW,GAAM,EAAI,KAAK,SAAU,EAAE,CAAC,CAC9D,EAAM,iBAAiB,QAAU,GAAM,EAAI,KAAK,QAAS,EAAE,CAAC,CAC5D,EAAM,iBAAiB,OAAS,GAAM,EAAI,KAAK,OAAQ,EAAE,CAAC,CAC1D,MAAa,EAAM,SAAW,GAAQ,EAAI,UAAY,EAAI,UAAW,EAAI,OAAO,CAChF,MAAa,EAAM,YAAc,EAAI,YAAa,EAAI,OAAO,CAC7D,EAAI,OAAO,YAAe,EAAM,OAAO,CAAC,CACxC,EAAI,OAAO,qBAAwB,EAAM,gBAAgB,CAAC,CACnD,CAAC,EAAO,GAAK,CAAE,EAAM,MAAQ,GAAK,IAAM,CAShD,IAAA,EAJkB,GACVE,EAAgB,EAAKF,GAAaG,EAAYJ,GAAU,GAAG,CC3BnE,SAASK,EAAS,EAAG,EAAU,CAC9B,OAAO,GAAK,CAAC,EAAW,EAAI,KAQ7B,SAASC,EAAY,EAAK,EAAI,CAC7B,IAAM,EAAQ,SAAS,cAAc,QAAQ,CAW7C,MAVA,GAAM,KAAO,MACb,EAAM,iBAAiB,YAAe,EAAG,EAAM,MAAM,CAAC,CACtD,EAAM,iBAAiB,QAAU,GAAM,EAAI,KAAK,QAAS,EAAE,CAAC,CAC5D,EAAM,iBAAiB,SAAW,GAAM,EAAI,KAAK,SAAU,EAAE,CAAC,CAC9D,EAAM,iBAAiB,QAAU,GAAM,EAAI,KAAK,QAAS,EAAE,CAAC,CAC5D,EAAM,iBAAiB,OAAS,GAAM,EAAI,KAAK,OAAQ,EAAE,CAAC,CAC1D,MAAa,EAAM,SAAW,GAAQ,EAAI,UAAY,EAAI,UAAW,EAAI,OAAO,CAChF,MAAa,EAAM,YAAc,EAAI,YAAa,EAAI,OAAO,CAC7D,EAAI,OAAO,YAAe,EAAM,OAAO,CAAC,CACxC,EAAI,OAAO,qBAAwB,EAAM,gBAAgB,CAAC,CACnD,CAAC,EAAO,GAAK,CAAE,EAAM,MAAQ,GAAK,IAAM,CAShD,IAAA,EAJkB,GACVE,EAAgB,EAAKF,EAAaG,EAAYJ,EAAU,GAAG,CC3BnE,SAASK,EAAS,EAAG,EAAU,CAC9B,OAAO,GAAK,CAAC,EAAW,EAAI,KAQ7B,SAASC,EAAY,EAAK,EAAI,CAC7B,IAAM,EAAQ,SAAS,cAAc,QAAQ,CAU7C,OATA,EAAM,iBAAiB,YAAe,EAAG,EAAM,MAAM,CAAC,CACtD,EAAM,iBAAiB,QAAU,GAAM,EAAI,KAAK,QAAS,EAAE,CAAC,CAC5D,EAAM,iBAAiB,SAAW,GAAM,EAAI,KAAK,SAAU,EAAE,CAAC,CAC9D,EAAM,iBAAiB,QAAU,GAAM,EAAI,KAAK,QAAS,EAAE,CAAC,CAC5D,EAAM,iBAAiB,OAAS,GAAM,EAAI,KAAK,OAAQ,EAAE,CAAC,CAC1D,MAAa,EAAM,SAAW,GAAQ,EAAI,UAAY,EAAI,UAAW,EAAI,OAAO,CAChF,MAAa,EAAM,YAAc,EAAI,YAAa,EAAI,OAAO,CAC7D,EAAI,OAAO,YAAe,EAAM,OAAO,CAAC,CACxC,EAAI,OAAO,qBAAwB,EAAM,gBAAgB,CAAC,CACnD,CAAC,EAAO,GAAK,CAAE,EAAM,MAAQ,GAAK,IAAM,CAShD,IAAA,EAJkB,GACVE,EAAgB,EAAKF,EAAaG,EAAYJ,EAAU,GAAG,CCnCnE,MAAM,EAAkB,YAAY,UAAU,eAAe,UAAU,CA0EvE,SAAS,EAAS,EAAI,CACrB,IAAI,EAAI,EACR,KAAM,GAAG,CACR,IAAI,EAAO,EAAE,aAAa,CAC1B,GAAI,CAAC,EAAQ,MAAO,GACpB,GAAI,IAAS,SACZ,OAAO,SAAS,gBAAkB,EAKnC,GAHI,EAAE,aAAgB,aAGlB,EAAK,gBAAkB,EAC1B,MAAO,GAER,IAAM,EAAO,EAAK,KAClB,GAAI,CAAC,EAAQ,MAAO,GACpB,EAAI,GAGN,IAAqB,GAArB,cAAoC,WAAY,CAE/C,GAAW,KAEX,GAAgB,KAEhB,GAAe,KACf,GAAc,KAAK,aAAa,CAAE,KAAM,SAAU,CAAC,CACnD,GAAS,MAAA,EAAiB,YAAY,SAAS,cAAc,QAAQ,CAAC,CACtE,GAAS,MAAA,EAAiB,YAAY,SAAS,cAAc,QAAQ,CAAC,CACtE,GAAY,MAAA,EAAiB,YAAY,SAAS,cAAc,MAAM,CAAC,CACvE,GAAgB,MAAA,EAAe,YAAY,SAAS,cAAc,MAAM,CAAC,CACzE,aAAc,CACb,OAAO,CACP,MAAA,EAAY,YAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAC1B,IAAM,EAAQ,MAAA,EACd,EAAM,KAAO,OACb,IAAM,EAAW,MAAA,EACX,EAAe,MAAA,EACrB,EAAS,UAAY,WACrB,EAAa,UAAY,gBACrB,GACH,EAAS,aAAa,UAAW,SAAS,CAK3C,EAAM,iBAAiB,YAAe,CAAE,MAAA,GAAe,EAAI,CAC3D,EAAM,iBAAiB,YAAe,CAAE,MAAA,GAAe,EAAI,CAC3D,EAAM,iBAAiB,WAAc,CACpC,IAAM,EAAU,MAAA,EACV,EAAQ,EAAM,MACd,EAAW,KAAK,SACtB,GAAI,CAAC,EAAO,CACX,GAAI,CAAC,EAAW,OAChB,GAAI,EAAU,CACb,EAAM,MAAQ,EAAQ,MACtB,OAED,MAAA,EAAgB,KAChB,MAAA,EAAqB,KACrB,MAAA,GAAgB,CAChB,OAED,GAAI,GAAS,QAAU,EAAS,OAChC,IAAM,EAAO,MAAA,EAAW,KAAK,GAAK,EAAE,QAAU,EAAM,CACpD,GAAI,EAAM,CACT,MAAA,EAAgB,EAChB,MAAA,EAAqB,EAAK,MAC1B,EAAM,MAAQ,EAAK,MACnB,MAAA,GAAgB,CAChB,OAED,GAAI,CAAC,EAAS,CACb,EAAM,MAAQ,GACd,OAEG,EACH,EAAM,MAAQ,EAAQ,OAEtB,EAAM,MAAQ,GACd,MAAA,EAAgB,KAChB,MAAA,EAAqB,KACrB,MAAA,GAAgB,GAEhB,CAIF,KAAK,iBAAiB,UAAY,GAAM,CACvC,GAAI,CAAC,MAAA,EAAc,OAEnB,IAAM,EAAc,MAAA,EAEpB,GAAI,EAAE,MAAQ,YAAa,CAE1B,GADA,EAAE,gBAAgB,CACd,GAAa,aAAe,EAAc,CAC7C,IAAM,EAAO,EAAa,kBAC1B,GAAI,CAAC,EAAM,CACV,MAAA,EAAoB,KACpB,OAED,MAAA,EAAoB,EACpB,EAAK,UAAU,IAAI,UAAU,CAC7B,EAAK,gBAAgB,CACrB,OAED,IAAM,EAAO,EAAY,mBACzB,GAAI,CAAC,EAAQ,OACb,EAAY,UAAU,OAAO,UAAU,CACvC,MAAA,EAAoB,EACpB,EAAK,UAAU,IAAI,UAAU,CAC7B,EAAK,gBAAgB,CAKtB,GAAI,EAAE,MAAQ,UAAW,CAExB,GADA,EAAE,gBAAgB,CACd,GAAa,aAAe,EAAc,CAC7C,IAAM,EAAO,EAAa,iBAC1B,GAAI,CAAC,EAAM,CACV,MAAA,EAAoB,KACpB,OAED,MAAA,EAAoB,EACpB,EAAK,UAAU,IAAI,UAAU,CAC7B,EAAK,gBAAgB,CACrB,OAED,IAAM,EAAO,EAAY,uBACzB,GAAI,CAAC,EAAQ,OACb,EAAY,UAAU,OAAO,UAAU,CACvC,MAAA,EAAoB,EACpB,EAAK,UAAU,IAAI,UAAU,CAC7B,EAAK,gBAAgB,CAIlB,EAAE,MAAQ,UACb,EAAE,gBAAgB,CACd,GAAa,aAAe,GAE/B,EAAY,OAAO,GAGpB,CAGH,IAAI,SAAU,CACb,OAAO,MAAA,EAER,OAAQ,CACP,MAAA,EAAY,OAAO,CAEpB,IAAI,QAAQ,EAAO,CAClB,MAAA,EAAa,EACb,IAAM,EAAW,MAAA,EACX,EAAe,MAAA,EACrB,EAAa,UAAY,GACzB,IAAK,IAAM,KAAQ,EAAO,CACzB,IAAM,EAAS,SAAS,cAAc,MAAM,CAC5C,EAAO,UAAY,SACnB,EAAO,YAAY,SAAS,eAAe,GAAG,MAAM,EAAK,OAAS,EAAE,CAAC,KAAK,IAAI,CAAC,KAAK,GAAG,GAAG,EAAK,SAAW,IAAI,CAAC,CAC/G,EAAa,YAAY,EAAO,CAChC,EAAO,iBAAiB,cAAgB,GAAM,CAC7C,EAAE,gBAAgB,CAClB,MAAA,EAAiB,EAAK,EACrB,CACF,EAAO,iBAAiB,QAAU,GAAM,CACvC,EAAE,gBAAgB,CAClB,MAAA,EAAiB,EAAK,EACrB,CACF,EAAO,iBAAiB,kBAAqB,CAC5C,MAAA,GAAmB,UAAU,OAAO,UAAU,CAC9C,MAAA,EAAoB,EACpB,EAAO,UAAU,IAAI,UAAU,EAC9B,CAMH,GAJA,MAAA,EAAoB,EAAa,kBACjC,MAAA,GAAmB,UAAU,IAAI,UAAU,CAC3C,EAAS,UAAY,EACrB,EAAS,WAAa,EAClB,EAAS,MAAA,EAAY,CAAE,CAC1B,GAAI,MAAA,EAAY,QAAU,KAAK,SAAS,MAAS,OACjD,KAAK,KAAO,GACZ,OAED,IAAM,EAAe,MAAA,EACf,EAAO,MAAA,EAAW,KAAK,GAAM,EAAG,QAAU,EAAa,CAC7D,GAAI,EAAM,CACT,GAAI,IAAS,MAAA,EAAiB,OAC9B,MAAA,EAAgB,EAChB,MAAA,EAAqB,EAAK,MAC1B,MAAA,EAAY,MAAQ,EAAK,OAAS,IAGpC,IAAI,QAAS,CAAE,OAAO,EAAS,MAAA,EAAY,CAE3C,GAAQ,EAAE,CACV,IAAI,SAAU,CAAE,OAAO,MAAA,EACvB,IAAI,OAAQ,CAAE,OAAO,MAAA,EACrB,IAAI,MAAM,EAAG,CACZ,GAAI,IAAM,MAAA,EAAsB,OAChC,IAAM,EAAO,MAAA,EAAW,KAAK,GAAM,EAAG,QAAU,EAAE,CAClD,GAAI,CAAC,EAAM,CACV,MAAA,EAAgB,KAChB,MAAA,EAAqB,EACrB,MAAA,EAAY,MAAQ,EACpB,OAEG,IAAS,MAAA,IAEb,MAAA,EAAgB,EAChB,MAAA,EAAqB,EAAK,MAC1B,MAAA,EAAY,MAAQ,EAAK,OAAS,IAEnC,IAAY,CACX,KAAK,cAAc,IAAI,MAAM,SAAS,CAAC,CAExC,IAAW,CACV,KAAK,cAAc,IAAI,MAAM,QAAQ,CAAC,CAEvC,IAAW,CACV,KAAK,KAAO,GACZ,KAAK,cAAc,IAAI,MAAM,QAAQ,CAAC,CAEvC,IAAI,MAAO,CACV,OAAO,MAAA,EAAY,MAQpB,GAAY,EAAM,CACjB,MAAA,EAAgB,EAChB,MAAA,EAAqB,GAAM,MAC3B,MAAA,EAAY,MAAQ,GAAM,OAAS,GACnC,MAAA,GAAgB,CAChB,KAAK,KAAO,GACZ,MAAA,EAAY,OAAO,CAGpB,IAAI,MAAO,CAAE,OAAO,KAAK,aAAa,OAAO,GAAK,KAClD,IAAI,KAAK,EAAG,CACP,EACH,KAAK,aAAa,OAAQ,GAAG,CAE7B,KAAK,gBAAgB,OAAO,CAG9B,IAAI,UAAW,CAAE,OAAO,KAAK,aAAa,WAAW,GAAK,KAC1D,IAAI,SAAS,EAAG,CACX,EACH,KAAK,aAAa,WAAY,GAAG,CAEjC,KAAK,gBAAgB,WAAW,CAGlC,IAAI,UAAW,CAAE,OAAO,KAAK,aAAa,WAAW,GAAK,KAC1D,IAAI,SAAS,EAAG,CACX,EACH,KAAK,aAAa,WAAY,GAAG,CAEjC,KAAK,gBAAgB,WAAW,CAGlC,IAAI,UAAW,CAAE,OAAO,KAAK,aAAa,WAAW,GAAK,KAC1D,IAAI,SAAS,EAAG,CACX,EACH,KAAK,aAAa,WAAY,GAAG,CAEjC,KAAK,gBAAgB,WAAW,CAGlC,IAAI,aAAc,CAAE,OAAO,KAAK,aAAa,cAAc,EAAI,GAC/D,IAAI,YAAY,EAAG,CACd,EACH,KAAK,aAAa,cAAe,EAAE,CAEnC,KAAK,gBAAgB,cAAc,CAGrC,IAAQ,CACP,IAAM,EAAY,MAAA,EAAY,uBAAuB,CAE/C,EAAa,OAAO,WACpB,EAAc,OAAO,YAErB,EAAQ,EAAa,EAAU,MAC/B,EAAS,EAAc,EAAU,OACjC,CAAC,MAAK,OAAM,MAAO,EAAQ,OAAQ,GAAW,EAC9C,EAAe,MAAA,EAAmB,uBAAuB,CACzD,EAAQ,EAAa,MAAQ,EAC7B,EAAS,EAAa,OAAS,EAC/B,EAAW,MAAA,EACjB,EAAS,MAAM,SAAW,GAC1B,EAAS,MAAM,SAAW,GAE1B,EAAS,MAAM,IAAM,GAAG,EAAM,EAAQ,IACtC,EAAS,MAAM,SAAW,GAAG,EAAO,IACpC,EAAS,MAAM,UAAY,GAAG,EAAc,EAAM,EAAU,EAAE,IAC1D,GAAS,EAAa,GACzB,EAAS,MAAM,KAAO,GAAG,EAAK,IAC9B,EAAS,MAAM,MAAQ,IACb,GAAS,EAAa,GAChC,EAAS,MAAM,KAAO,GAAG,EAAK,IAC9B,EAAS,MAAM,MAAQ,GAAG,EAAa,EAAK,MAE5C,EAAS,MAAM,KAAO,GAAG,KAAK,IAAI,EAAG,KAAK,KAAK,EAAQ,GAAU,EAAG,EAAK,CAAC,CAAC,IAC3E,EAAS,MAAM,MAAQ,IAIxB,IAAI,EAAI,EACJ,GAAU,EAAS,IAEtB,EAAI,EACJ,EAAS,MAAM,IAAM,GAAG,EAAM,EAAQ,IACtC,EAAS,MAAM,SAAW,GAAG,EAAO,IACpC,EAAS,MAAM,OAAS,IACd,GAAU,GAEpB,EAAI,EACJ,EAAS,MAAM,IAAM,GACrB,EAAS,MAAM,OAAS,GAAG,EAAS,EAAQ,KAClC,KAAK,IAAI,EAAO,EAAQ,GAAI,CAAG,KAAK,IAAI,EAAO,EAAU,MAAQ,EAAK,CAC5E,EAAS,IAAM,GAEnB,EAAI,EACJ,EAAS,MAAM,IAAM,GAAG,EAAM,EAAQ,IACtC,EAAS,MAAM,SAAW,GAAG,EAAO,IACpC,EAAS,MAAM,OAAS,IACd,GAAU,IAEpB,EAAI,EACJ,EAAS,MAAM,IAAM,GACrB,EAAS,MAAM,OAAS,GAAG,EAAS,EAAQ,KAElC,GAAU,EAAQ,IAAO,GAAS,EAAQ,IAEpD,EAAS,MAAM,KAAO,GAAG,EAAO,EAAO,IACvC,EAAS,MAAM,SAAW,GAAG,EAAM,IACnC,EAAS,MAAM,MAAQ,KAGvB,EAAS,MAAM,KAAO,GACtB,EAAS,MAAM,MAAQ,GAAG,EAAQ,EAAO,IACzC,EAAS,MAAM,SAAW,GAAG,EAAK,KAE/B,EAEC,GAAS,EAAa,GACzB,EAAS,MAAM,KAAO,GAAG,EAAK,IAC9B,EAAS,MAAM,MAAQ,IACb,GAAS,EAAa,GAChC,EAAS,MAAM,KAAO,GAAG,EAAK,IAC9B,EAAS,MAAM,MAAQ,GAAG,EAAa,EAAK,MAE5C,EAAS,MAAM,KAAO,GAAG,KAAK,IAAI,EAAG,KAAK,KAAK,EAAQ,GAAU,EAAG,EAAK,CAAC,CAAC,IAC3E,EAAS,MAAM,MAAQ,IAGpB,GAAU,EAAc,GAC3B,EAAS,MAAM,IAAM,GAAG,EAAI,IAC5B,EAAS,MAAM,OAAS,IACd,EAAS,EAAM,GACzB,EAAS,MAAM,IAAM,GACrB,EAAS,MAAM,OAAS,GAAG,EAAc,EAAI,MAE7C,EAAS,MAAM,IAAM,GAAG,KAAK,IAAI,EAAG,KAAK,IAAI,EAAc,EAAQ,EAAI,CAAC,CAAC,IACzE,EAAS,MAAM,OAAS,KAM3B,GAAW,GAEX,GAAK,KACL,IAAgB,CAIf,GAHI,GACH,MAAA,EAAe,aAAa,CAEzB,MAAA,EAAiB,OACrB,MAAA,EAAgB,GAChB,IAAM,EAAO,KACb,MAAA,EAAU,sBAAsB,SAAS,GAAM,CAC9C,GAAA,GAAY,CACP,GAAA,IACL,GAAA,EAAU,sBAAsB,EAAI,GACnC,CAGH,IAAiB,CACZ,GACH,MAAA,EAAe,aAAa,CAExB,MAAA,IACL,MAAA,EAAgB,GAChB,qBAAqB,MAAA,EAAQ,EAO9B,GAAe,GAAM,CAEhB,KAAK,SAAS,EAAE,OAAO,GAC3B,KAAK,KAAO,KAEb,GAAW,GACX,mBAAoB,CACnB,SAAS,iBAAiB,QAAS,MAAA,EAAiB,CACpD,MAAA,EAAgB,GAChB,MAAA,GAAkB,CAEnB,sBAAuB,CACtB,SAAS,oBAAoB,QAAS,MAAA,EAAiB,CACvD,MAAA,EAAgB,GAChB,MAAA,GAAkB,CAEnB,GAAQ,GACR,IAAc,CACb,IAAM,EAAS,CAAC,KAAK,UAAY,CAAC,KAAK,UAAY,KAAK,MAAQ,MAAA,EAC5D,MAAA,IAAe,IACnB,MAAA,EAAa,EACT,EACH,MAAA,GAAoB,CAEpB,MAAA,GAAqB,EASvB,yBAAyB,EAAU,EAAQ,EAAQ,CAC9C,OAAW,EACf,OAAQ,EAAR,CACC,IAAK,OACJ,GAAI,CAAC,MAAA,EAAiB,OACtB,MAAA,GAAkB,CAClB,OAED,IAAK,cACJ,MAAA,EAAY,YAAc,GAAU,GACpC,OAED,IAAK,WACJ,MAAA,EAAY,SAAW,IAAW,KAClC,MAAA,GAAkB,CAClB,OAED,IAAK,WACJ,MAAA,EAAY,SAAW,IAAW,KAClC,MAAA,GAAkB,CAClB,QAIH,OAAO,mBAAqB,CAAC,OAAQ,cAAe,WAAY,WAAW,EAG5E,GAAI,CACH,eAAe,OAAO,kBAAmB,GAAO,MACzC,ECrhBR,SAAS2B,GAAY,EAAQ,EAAgB,CAC5C,GAAI,CAAC,GAAU,OAAO,GAAW,SAAY,OAAO,OAAsB,CAAC,MAAO,EAAE,CAAE,QAAS,EAAE,CAAC,EAAE,CACpG,IAAM,EAAS,EAAO,MAAM,EAAO,CAE7B,EAAc,OAAO,GAAmB,WAC3C,MAAgD,CACjD,EAAO,KAAK,EAAO,MAAO,EAAe,CACzC,EAAO,KAAK,EAAO,QAAS,EAAe,CAC3C,CAAE,CAAG,EAAuC,CAAC,EAAO,MAAO,EAAO,QAAQ,CAAE,CAC9E,OAAO,MAAqB,CAC3B,GAAM,CAAC,EAAO,GAAW,EAAY,KAAK,CAC1C,MAAO,CAAE,QAAO,UAAS,EACxB,CAgNH,IAAA,IA7MmB,EAAK,IAAqB,CAC5C,IAAM,EAAW,EAAI,SACf,EAAQ,EAAI,MAEZ,EAAQ,EADI,EAAI,OAAO,OAAS,GACD,CAErC,GAAI,CAAC,EAAU,CACd,IAAM,EAAO,SAAS,cAAc,OAAO,CAEvC,EAAQ,KAwCZ,OAvCA,EAAI,OAAO,YAAe,EAAK,OAAO,CAAC,CACvC,EAAI,OAAO,qBAAwB,EAAK,gBAAgB,CAAC,CACpD,GAML,EAAM,KAAK,KAAO,IAAuB,CACxC,IAAM,EAAe,EAAmB,cAAgB,GACxD,GAAI,CAAC,EAAiB,EAAa,CAAC,OAAQ,CAC3C,MAAa,EAAK,UAAY,EAAI,OAAS,GAAI,EAAI,OAAO,CAC1D,OAED,eAAe,GAAoB,CAClC,IAAM,EAAK,EACX,GAAI,CAAC,EAAI,CACR,EAAK,UAAY,GACjB,OAED,GAAM,CAAE,YAAa,MAAM,EAAM,OAAO,EAAG,CACvC,CAAC,GAAY,IAAO,IACxB,EAAK,UAAY,EAAW,EAAc,EAAS,EAAI,GAOxD,SAAS,EAAO,EAAG,CAElB,IAAM,EAAK,GAAK,IAAM,GAAK,KAAO,KAAO,EACrC,IAAO,IACX,EAAQ,EACR,EAAK,UAAY,GAAS,GAC1B,GAAmB,EAEpB,MAAa,EAAO,EAAI,MAAM,CAAE,EAAI,OAAO,EAC1C,CACK,IApCN,MAAa,CACZ,EAAK,UAAY,EAAI,QAAQ,GAAG,EAAI,KAAK,UAAY,EAAI,OACvD,EAAI,OAAO,CACP,GAoCT,IAAM,EAA8B,SAAS,cAAc,kBAAkB,CAEzE,EAAQ,KACZ,EAAM,iBAAiB,aAAgB,CACtC,EAAQ,EAAM,OAAS,KACvB,EAAI,MAAQ,GACX,CACF,EAAM,iBAAiB,SAAW,GAAM,EAAI,KAAK,SAAU,EAAE,CAAC,CAC9D,EAAM,iBAAiB,QAAU,GAAM,EAAI,KAAK,QAAS,EAAE,CAAC,CAC5D,EAAM,iBAAiB,OAAS,GAAM,EAAI,KAAK,OAAQ,EAAE,CAAC,CAC1D,EAAI,OAAO,YAAe,EAAM,OAAO,CAAC,CACxC,EAAI,OAAO,qBAAwB,EAAM,gBAAgB,CAAC,CAC1D,MAAa,EAAM,OAAS,EAAQ,EAAI,OAAS,EAAI,OAAO,CAC5D,MAAa,EAAM,SAAW,GAAQ,EAAI,UAAY,EAAI,UAAW,EAAI,OAAO,CAChF,MAAa,EAAM,YAAc,EAAI,YAAa,EAAI,OAAO,CACzD,GACH,MAAa,EAAM,YAAc,EAAM,aAAe,GAAI,EAAI,OAAO,CAOtE,SAAS,EAAe,EAAa,CACpC,IAAI,EAAQ,EAAI,OAAO,OAGvB,GAFI,CAAC,IACD,aAAiB,IAAc,EAAQ,EAAM,QAC7C,CAAC,GAAS,OAAO,KACrB,IAAI,EAAe,EACf,EAAI,EACR,KAAO,EAAY,KAAO,KAAK,CAC9B,IACA,IAAI,EAAS,EAAa,OAK1B,GAJI,CAAC,IACD,aAAkB,IACrB,EAAS,EAAO,QAEb,CAAC,GAAU,MACf,EAAe,EAEhB,KAAO,EAAY,KAAO,KAAO,IACjC,IAAM,EAAO,EAAY,MAAM,EAAE,CAC3B,EAAQ,EAAa,MAAM,EAAK,CAEtC,OADK,EACE,EAAM,MADQ,KA2GtB,OAxGA,EAAM,KAAK,KAAO,IAAuB,CACxC,IAAI,EAAe,GAEf,EAAiB,EAAE,CAEnB,EAAU,KAER,EAASA,GAAY,GAAkB,OAAQ,EAAe,CAEhE,EAAS,GACb,SAAS,GAAU,CAClB,EAAS,GACL,GAAW,aAAa,EAAQ,CACpC,IAAM,EAAQ,EAAM,KACpB,EAAe,EACf,EAAU,WAAW,SAAY,CAChC,GAAI,IAAiB,EAAS,OAC9B,IAAM,EAAU,MAAM,EAAM,QAAQ,CAAE,GAAG,EAAO,KAAK,CAAE,QAAO,MAAO,IAAK,CAAC,CACvE,IAAiB,IACrB,EAAiB,EACjB,GAAe,GACb,IAAI,CAGR,EAAM,iBAAiB,QAAS,EAAQ,CACxC,EAAM,iBAAiB,YAAe,CACjC,GACJ,GAAS,EACR,CACF,MAAY,EAAO,KAAK,KAAQ,CAC1B,EAAM,QACX,GAAS,EACP,CAAC,OAAQ,EAAI,OAAO,CAAC,CAExB,IAAM,EAAe,EAAmB,cAAgB,GAGlD,EAAc,GAAY,EAAK,EAAoB,EAAS,CAE9D,EAAc,KAClB,eAAe,GAAoB,CAClC,IAAM,EAAK,EACX,GAAI,CAAC,EAAI,CACR,EAAc,KACd,GAAe,CACf,OAED,IAAM,EAAO,EAAe,KAAK,GAAK,EAAY,EAAE,GAAK,EAAG,CAC5D,GAAI,EAAM,CACT,EAAc,EACd,GAAe,CACf,OAED,GAAM,CAAE,UAAW,MAAM,EAAM,OAAO,EAAG,CACrC,CAAC,GAAU,IAAO,GAClB,IAAO,IACX,EAAc,EACd,GAAe,EAQhB,SAAS,GAAgB,CACxB,IAAM,EAAe,CAAC,GAAG,EAAe,CAClC,EAAM,EACZ,GAAI,EAAK,CACR,IAAM,EAAU,EACZ,GAAW,EAAY,EAAQ,EAAI,GAAO,CAAC,EAAa,KAAK,GAAK,EAAY,EAAE,EAAI,EAAI,EAC3F,EAAa,KAAK,EAAQ,CAI5B,IAAM,EAAO,EAAa,IAAI,GAAK,CAClC,IAAM,EAAQ,EAAY,EAAE,CAC5B,MAAQ,CAAE,QAAO,MAAO,EAAW,EAAc,EAAE,EAAI,EAAO,KAAM,EAAG,EACtE,CACE,EAAI,WACP,EAAK,QAAQ,CAAE,MAAO,GAAI,MAAO,GAAI,CAAC,CAEvC,IAAM,EAAO,EAAK,KAAK,GAAK,EAAE,OAAS,EAAM,CAC7C,EAAM,MAAQ,GAAM,OAAS,GAAM,OAAS,GAC5C,EAAM,QAAU,EASjB,SAAS,EAAO,EAAG,CAElB,IAAM,EAAK,GAAK,IAAM,GAAK,KAAO,KAAO,EACrC,IAAO,IACX,EAAQ,EACR,EAAM,MAAQ,GAAS,GACvB,GAAmB,EAEpB,MAAa,EAAO,EAAI,MAAM,CAAE,EAAI,OAAO,EAC1C,CAEK,GC3NR,SAAS,GAAS,EAAS,CAC1B,OAAO,MAAqB,CAC3B,IAAM,EAAQ,CAAC,GAAG,EAAQ,KAAK,CAAC,CAE1B,EAAS,OAAO,OAAO,KAAK,CAClC,IAAK,IAAI,EAAM,EAAO,EAAM,OAAO,EAAG,CACrC,IAAM,EAAW,EAAK,SACtB,EAAO,EAAK,OAAS,EAAK,MAC1B,IAAK,IAAM,KAAK,EACf,EAAM,KAAK,EAAE,CAGf,OAAO,GACN,CASH,SAAU,GAAW,EAAO,EAAM,CAEjC,GADI,CAAC,GACD,CAAC,GAAQ,OAAO,GAAS,SAAY,OACzC,IAAI,EAAS,EAAM,OACb,gBAAkB,EACxB,IAAK,GAAM,CAAC,EAAG,KAAM,OAAO,QAAQ,EAAK,CAAE,CAC1C,IAAM,EAAU,EAAO,MAAM,EAAE,CAC1B,GACD,OAAO,GAAM,WAChB,KAAM,IAAK,EAAQ,MAAQ,EAAE,KA+IhC,IAAA,IA1ImB,EAAK,EAAmB,EAAE,GAAK,CACjD,IAAM,EAAW,EAAI,SACf,EAAQ,EAAI,MAElB,GAAI,CAAC,EAAU,CACd,IAAM,EAAO,SAAS,cAAc,OAAO,CACrC,EAAQ,EAAY,GAAG,CAC7B,EAAI,OAAO,YAAe,EAAK,OAAO,CAAC,CACvC,EAAI,OAAO,qBAAwB,EAAK,gBAAgB,CAAC,CACzD,IAAM,EAAS,GAAS,EAAY,EAAkB,GAAM,CAAC,CAC7D,SAAS,GAAM,CACd,IAAM,EAAM,EAAM,KAAK,CACnB,IAAQ,GACX,EAAK,UAAY,GAEjB,EAAK,UAAY,EAAO,KAAK,CAAC,IAAQ,GAQxC,SAAS,EAAO,EAAG,CAClB,IAAM,EAAK,GAAY,GACnB,IAAO,GACX,EAAM,IAAI,EAAG,CAId,OAFA,MAAa,EAAO,EAAI,MAAM,CAAE,EAAI,OAAO,CAC3C,EAAO,EAAK,EAAI,OAAO,CAChB,EAQR,SAAS,EAAe,EAAa,CACpC,IAAI,EAAQ,EAAI,OAAO,OAGvB,GAFI,CAAC,IACD,aAAiB,IAAc,EAAQ,EAAM,QAC7C,CAAC,GAAS,OAAO,KACrB,IAAI,EAAe,EACf,EAAI,EACR,KAAO,EAAY,KAAO,KAAK,CAC9B,IACA,IAAI,EAAS,EAAa,OAK1B,GAJI,CAAC,IACD,aAAkB,IACrB,EAAS,EAAO,QAEb,CAAC,GAAU,MACf,EAAe,EAEhB,KAAO,EAAY,KAAO,KAAO,IACjC,IAAM,EAAO,EAAY,MAAM,EAAE,CAC3B,EAAQ,EAAa,MAAM,EAAK,CAEtC,OADK,EACE,EAAM,MADQ,KAMtB,IAAM,EAHU,EAAY,EAAkB,EAAe,CAIvD,EAA8B,SAAS,cAAc,kBAAkB,CACzE,EAAQ,EAAmC,KAAM,CAEjD,EAAU,CAAC,GAAG,GAAW,EAAO,EAAiB,KAAK,CAAC,CAE3D,EAAM,iBAAiB,aAAgB,CACtC,IAAM,EAAM,EAAM,OAAS,KAG3B,GAFA,EAAM,IAAI,EAAI,CACd,EAAI,MAAQ,EACR,CAAC,EAAQ,OAAU,OACvB,IAAM,EAAO,EAAM,SAAS,KACxB,MAAC,GAAQ,OAAO,GAAS,UAC7B,IAAK,IAAM,KAAM,EAChB,EAAG,EAAK,EAGR,CACF,EAAM,iBAAiB,SAAW,GAAM,EAAI,KAAK,SAAU,EAAE,CAAC,CAC9D,EAAM,iBAAiB,QAAU,GAAM,EAAI,KAAK,QAAS,EAAE,CAAC,CAC5D,EAAM,iBAAiB,OAAS,GAAM,EAAI,KAAK,OAAQ,EAAE,CAAC,CAC1D,EAAI,OAAO,YAAe,EAAM,OAAO,CAAC,CACxC,EAAI,OAAO,qBAAwB,EAAM,gBAAgB,CAAC,CAC1D,MAAa,EAAM,OAAS,EAAQ,EAAI,OAAS,EAAI,OAAO,CAC5D,MAAa,EAAM,SAAW,GAAQ,EAAI,UAAY,EAAI,UAAW,EAAI,OAAO,CAChF,MAAa,EAAM,YAAc,EAAI,YAAa,EAAI,OAAO,CACzD,GACH,MAAa,EAAM,YAAc,EAAM,aAAe,GAAI,EAAI,OAAO,CAKtE,IAAI,EAAU,KACd,EAAM,iBAAiB,QAAS,UAAmB,CAC9C,GAAW,aAAa,EAAQ,CACpC,EAAU,eAAiB,GAExB,IAAI,EAEN,CAIF,MAAa,CAEZ,IAAM,EAAO,CAAC,GAAG,EAAe,KAAK,CAAC,CAClC,EAAI,WACP,EAAK,QAAQ,CAAE,MAAO,GAAI,MAAO,GAAI,CAAC,CAEvC,IAAM,EAAM,EAAM,KAAK,CAEvB,EAAM,MADO,EAAK,KAAK,GAAK,EAAE,OAAS,EAAI,EACvB,OAAS,GAC7B,EAAM,QAAU,GACd,EAAI,OAAO,CASd,SAAS,EAAO,EAAG,CAElB,IAAM,EAAK,GAAK,IAAM,GAAK,KAAO,KAAO,EACrC,IAAO,EAAM,KAAK,GACtB,EAAM,IAAI,EAAG,CACb,EAAM,MAAQ,GAAM,IAIrB,OAFA,MAAa,EAAO,EAAI,MAAM,CAAE,EAAI,OAAO,CAEpC,GCjCR,GA9I6B,GAAO,CACnC,IAAM,EAAO,SAAS,cAAc,MAAM,CAEpC,EADc,EAAK,YAAY,SAAS,cAAc,MAAM,CAAC,CACjC,YAAY,SAAS,cAAc,QAAQ,CAAC,CACxE,EAAW,EAAc,YAAY,SAAS,cAAc,QAAQ,CAAC,CAC3E,EAAc,YAAY,SAAS,eAAe,KAAK,CAAC,CACxD,EAAc,UAAU,IAAI,eAAe,CAC3C,EAAS,KAAO,WAChB,IAAM,EAAY,EAAK,YAAY,SAAS,cAAc,MAAM,CAAC,CAC7D,EAAQ,IAAI,IACZ,EAAiB,MACpB,IAAI,IAAI,EAAmB,KAAK,CAAC,QAAQ,GAAK,EAAE,UAAU,IAAI,GAAK,EAAE,MAAM,EAAI,EAAE,CAAC,CAAC,CACnF,CACD,SAAS,GAAY,CAChB,EAAe,KAAK,CAAC,OAAS,EAAM,MACvC,EAAS,cAAgB,GACzB,EAAS,QAAU,IACT,EAAM,KAChB,EAAS,cAAgB,IAEzB,EAAS,cAAgB,GACzB,EAAS,QAAU,IAIrB,SAAS,GAAe,CACvB,EAAQ,IAAI,IACZ,IAAK,GAAM,CAAE,UAAS,MAAO,KAAS,EAAU,iBAAiB,QAAQ,CACpE,CAAC,GAAW,CAAC,GACjB,EAAM,IAAI,EAAI,CAEf,EAAI,MAAQ,CAAC,GAAG,EAAM,CAAC,IAAI,IAAM,CAAE,WAAY,EAAG,EAAE,CACpD,GAAW,CAGZ,SAAS,GAAc,CACtB,IAAK,IAAM,KAAS,EAAU,iBAAiB,QAAQ,CACtD,EAAM,QAAU,EAAM,IAAI,EAAM,MAAM,CAGxC,SAAS,GAAiB,CACzB,GAAa,CACb,GAAW,CAGZ,IAAM,EAAS,EAA8C,EAAE,CAAE,CAEjE,SAAS,GAAgB,CACxB,EAAU,UAAY,GACtB,IAAM,EAAO,EAAE,CACf,IAAK,GAAM,CAAE,QAAO,cAAc,EAAmB,KAAK,CAAE,CAC3D,GAAI,CAAC,GAAU,OAAU,SACzB,IAAM,EAAS,EAAU,YAAY,SAAS,cAAc,UAAU,CAAC,CACvE,EAAO,KAAO,GACd,EAAO,YAAY,SAAS,cAAc,UAAU,CAAC,CAAC,YAAY,SAAS,eAAe,EAAM,CAAC,CACjG,IAAK,GAAM,CAAE,QAAO,WAAW,EAAU,CACxC,IAAM,EAAa,EAAO,YAAY,SAAS,cAAc,QAAQ,CAAC,CAChE,EAAQ,EAAW,YAAY,SAAS,cAAc,QAAQ,CAAC,CACrE,EAAM,KAAO,WACb,EAAW,YAAY,SAAS,eAAe,EAAM,CAAC,CACtD,EAAW,UAAU,IAAI,eAAe,CACxC,EAAW,UAAU,IAAI,SAAS,CAClC,EAAM,MAAQ,OAAO,GAAS,GAAG,CACjC,EAAM,iBAAiB,QAAS,EAAa,CAC7C,EAAK,KAAK,EAAM,EAGlB,EAAO,IAAI,EAAK,CAChB,GAAgB,CAEjB,MAAa,GAAe,CAAE,EAAI,OAAO,CAIzC,EAAS,iBAAiB,YAAe,CACxC,GAAI,CAAC,EAAS,QAAS,CACtB,IAAK,IAAM,KAAS,EAAU,iBAAiB,QAAQ,CACtD,EAAM,QAAU,GAEjB,EAAI,MAAQ,EAAE,CACd,OAED,IAAM,EAAQ,IAAI,IAClB,IAAK,IAAM,KAAS,EAAU,iBAAiB,QAAQ,CACtD,EAAM,QAAU,GAChB,EAAM,IAAI,EAAM,MAAM,CAEvB,EAAI,MAAQ,CAAC,GAAG,EAAM,CAAC,IAAI,IAAM,CAAE,WAAY,EAAG,EAAE,CACpD,GAAa,EACZ,CACF,EAAS,iBAAiB,SAAW,GAAM,EAAI,KAAK,SAAU,EAAE,CAAC,CACjE,EAAS,iBAAiB,QAAU,GAAM,EAAI,KAAK,QAAS,EAAE,CAAC,CAC/D,EAAS,iBAAiB,OAAS,GAAM,EAAI,KAAK,OAAQ,EAAE,CAAC,CAK7D,IAAM,EAAW,MAAqB,GAAQ,CAAC,EAAI,UAAY,EAAI,UAAU,CAC7E,EAAI,OAAO,YAAe,EAAS,OAAO,CAAC,CAC3C,EAAI,OAAO,qBAAwB,EAAS,gBAAgB,CAAC,CAC7D,MAAa,EAAS,OAAS,EAAQ,EAAI,OAAS,EAAI,OAAO,CAC/D,MAAa,CACZ,IAAM,EAAW,EAAS,KAAK,CAC/B,EAAc,OAAS,EACvB,IAAK,IAAM,KAAS,EAAO,KAAK,CAC/B,EAAM,SAAW,GAGhB,EAAI,OAAO,CACd,MAAa,EAAS,SAAW,EAAQ,EAAI,SAAW,EAAI,OAAO,CAanE,SAAS,EAAO,EAAG,CAClB,IAAM,EAAO,IAAI,IAAI,MAAM,QAAQ,EAAE,EAAI,EAAE,IAAI,GAAK,EAAE,WAAW,EAAI,EAAE,CAAC,CACxE,GAAI,EAAK,OAAS,EAAM,KAAM,CAE7B,IAAK,IAAM,KAAK,EACf,GAAI,CAAC,EAAK,IAAI,EAAE,CAEf,MAIF,OAED,EAAQ,EACR,GAAgB,CAGjB,OADA,MAAa,EAAO,EAAI,MAAM,CAAE,EAAI,OAAO,CACpC,GCxIR,SAAwB,EAAgB,EAAQ,EAAK,CACpD,GAAM,CAAE,SAAQ,YAAW,SAAU,EAAI,MACnC,EAAO,SAAS,cAAc,EAAS,OAAS,MAAM,CACtD,EAAY,EAAI,OAAO,OAAS,GACtC,GAAI,EAAW,CACd,IAAM,EAAQ,EAAK,YAAY,SAAS,cAAc,EAAS,OAAS,MAAM,CAAC,CAC/E,EAAM,UAAY,EAInB,IAAM,EAAM,EAFM,EAAS,EAAO,EAAK,YAAY,SAAS,cAAc,MAAM,CAAC,CAEnD,EAAQ,EAAY,GAAI,GAAS,CAAE,EAAI,MAAQ,GAAS,CAEtF,OADA,MAAa,EAAI,EAAI,MAAM,CAAE,EAAI,OAAO,CACjC,ECVR,SAASG,GAAY,EAAM,EAAa,EAAI,CAC3C,IAAM,EAAQ,EAAK,YAAY,SAAS,cAAc,WAAW,CAAC,CAGlE,OAFI,IAAe,EAAM,YAAc,GACvC,EAAM,iBAAiB,YAAe,EAAG,EAAM,OAAS,KAAK,CAAC,CACvD,GAAK,CAAE,EAAM,MAAQ,GAAK,IAMlC,IAAA,EAFkB,EAAgB,KAAK,KAAMA,GAAY,CCTzD,SAASE,GAAS,EAAG,EAAU,CAC9B,IAAM,EAAQ,WAAW,EAAE,CAI1B,OAHG,OAAO,SAAS,EAAM,CAClB,EAEA,EAAW,EAAI,KAWxB,SAASC,GAAY,EAAM,EAAa,EAAI,CAC3C,IAAM,EAAQ,EAAK,YAAY,SAAS,cAAc,QAAQ,CAAC,CAI/D,MAHA,GAAM,KAAO,SACT,IAAe,EAAM,YAAc,GACvC,EAAM,iBAAiB,YAAe,EAAGD,GAAS,EAAM,MAAM,CAAC,CAAC,CACzD,GAAK,CAAE,EAAM,MAAQ,GAAK,IAMlC,IAAA,EAFkB,EAAgB,KAAK,KAAMC,GAAY,CCzBzD,SAASE,GAAS,EAAG,EAAU,CAC9B,IAAM,EAAQ,SAAS,EAAE,CAIxB,OAHG,OAAO,SAAS,EAAM,CAClB,EAEA,EAAW,EAAI,KAWxB,SAASC,GAAY,EAAM,EAAa,EAAI,CAC3C,IAAM,EAAQ,EAAK,YAAY,SAAS,cAAc,QAAQ,CAAC,CAI/D,MAHA,GAAM,KAAO,SACT,IAAe,EAAM,YAAc,GACvC,EAAM,iBAAiB,YAAe,EAAGD,GAAS,EAAM,MAAM,CAAC,CAAC,CACzD,GAAK,CAAE,EAAM,MAAQ,GAAK,IAMlC,IAAA,EAFkB,EAAgB,KAAK,KAAMC,GAAY,CCzBzD,SAAS,GAAS,EAAG,EAAU,CAC9B,GAAI,CAAC,EACJ,OAAO,EAAW,GAAK,KAExB,GAAI,CACH,OAAO,OAAO,EAAE,MACT,EAER,OAAO,EAAW,GAAK,KAUxB,SAASE,GAAY,EAAM,EAAa,EAAI,CAC3C,IAAM,EAAQ,EAAK,YAAY,SAAS,cAAc,QAAQ,CAAC,CAI/D,MAHA,GAAM,KAAO,SACT,IAAe,EAAM,YAAc,GACvC,EAAM,iBAAiB,YAAe,EAAG,GAAS,EAAM,MAAM,CAAC,CAAC,CACzD,GAAK,CAAE,EAAM,MAAQ,GAAK,IAMlC,IAAA,EAFkB,EAAgB,KAAK,KAAMA,GAAY,CC1BzD,SAASE,GAAY,EAAM,EAAa,EAAI,CAC3C,IAAM,EAAQ,EAAK,YAAY,SAAS,cAAc,QAAQ,CAAC,CAG/D,OAFI,IAAe,EAAM,YAAc,GACvC,EAAM,iBAAiB,YAAe,EAAG,EAAM,OAAS,KAAK,CAAC,CACvD,GAAK,CAAE,EAAM,MAAQ,GAAK,IAOlC,IAAA,EAFkB,EAAgB,KAAK,KAAMA,GAAY,CCazD,EA7BkB,GAAO,CACxB,GAAM,CAAE,SAAQ,YAAW,SAAU,EAAI,MACnC,EAAO,SAAS,cAAc,EAAS,OAAS,MAAM,CACtD,EAAQ,EAAK,YAAY,SAAS,cAAc,QAAQ,CAAC,CACzD,EAAQ,EAAM,YAAY,SAAS,cAAc,QAAQ,CAAC,CAsBhE,MArBA,GAAM,KAAO,WACb,EAAM,iBAAiB,YAAe,CAErC,EAAI,MADU,EAAM,cAAgB,EAAQ,EAAM,QAAW,MAE5D,CACF,MAAa,CACZ,IAAM,EAAQ,EAAI,MAClB,GAAI,OAAO,GAAU,UAAW,CAC/B,EAAM,QAAU,EAChB,OAED,EAAM,cAAgB,GAClB,IAAU,OACb,EAAI,MAAQ,OAEX,EAAI,OAAO,CACV,EACH,EAAM,aAAa,SAAS,eAAe,EAAI,OAAO,OAAS,GAAG,CAAE,EAAM,WAAW,CAC3E,GACV,EAAM,YAAY,SAAS,eAAe,EAAI,OAAO,OAAS,GAAG,CAAC,CAE5D,GCnBR,SAASG,GAAY,EAAM,EAAa,EAAI,CAC3C,IAAM,EAAQ,EAAK,YAAY,SAAS,cAAc,QAAQ,CAAC,CAK/D,MAJA,GAAM,KAAO,OACb,EAAM,KAAO,IACT,IAAe,EAAM,YAAc,GACvC,EAAM,iBAAiB,YAAe,EAAG,EAAM,OAAS,KAAK,CAAC,CACvD,GAAK,CAAE,EAAM,MAAQ,GAAK,IAOlC,IAAA,EAFkB,EAAgB,KAAK,KAAMA,GAAY,CCXzD,SAASE,GAAY,EAAM,EAAa,EAAI,CAC3C,IAAM,EAAQ,EAAK,YAAY,SAAS,cAAc,QAAQ,CAAC,CAI/D,MAHA,GAAM,KAAO,OACT,IAAe,EAAM,YAAc,GACvC,EAAM,iBAAiB,YAAe,EAAG,EAAM,OAAS,KAAK,CAAC,CACvD,GAAK,CAAE,EAAM,MAAQ,GAAK,IAOlC,IAAA,EAFkB,EAAgB,KAAK,KAAMA,GAAY,CCVzD,SAASE,EAAY,EAAM,EAAa,EAAI,CAC3C,IAAM,EAAQ,EAAK,YAAY,SAAS,cAAc,QAAQ,CAAC,CAK/D,MAJA,GAAM,KAAO,iBACb,EAAM,KAAO,IACT,IAAe,EAAM,YAAc,GACvC,EAAM,iBAAiB,YAAe,EAAG,EAAM,OAAS,KAAK,CAAC,CACvD,GAAK,CAAE,EAAM,MAAQ,GAAK,IAOlC,IAAA,EAFkB,EAAgB,KAAK,KAAMA,EAAY,CCXzD,SAASE,GAAY,EAAM,EAAa,EAAI,CAC3C,IAAM,EAAQ,EAAK,YAAY,SAAS,cAAc,QAAQ,CAAC,CAI/D,MAHA,GAAM,KAAO,MACT,IAAe,EAAM,YAAc,GACvC,EAAM,iBAAiB,YAAe,EAAG,EAAM,OAAS,KAAK,CAAC,CACvD,GAAK,CAAE,EAAM,MAAQ,GAAK,IAOlC,IAAA,EAFkB,EAAgB,KAAK,KAAMA,GAAY,CCVzD,SAAS,GAAY,EAAM,EAAa,EAAI,CAC3C,IAAM,EAAQ,EAAK,YAAY,SAAS,cAAc,QAAQ,CAAC,CAG/D,OAFI,IAAe,EAAM,YAAc,GACvC,EAAM,iBAAiB,YAAe,EAAG,EAAM,OAAS,KAAK,CAAC,CACvD,GAAK,CAAE,EAAM,MAAQ,GAAK,IAOlC,IAAA,EAFkB,EAAgB,KAAK,KAAM,GAAY,CCVzD,SAASG,GAAY,EAAQ,CAC5B,GAAI,CAAC,GAAU,OAAO,GAAW,SAAY,MAAO,EAAE,CACtD,GAAM,CAAE,QAAO,WAAY,EAAO,MAAM,EAAO,CAC/C,MAAO,CAAE,QAAO,UAAS,CAwH1B,IAAA,GApHmB,EAAK,IAAqB,CAC5C,GAAM,CAAE,SAAQ,YAAW,SAAU,EAAI,MAEnC,EADO,SAAS,cAAc,EAAS,OAAS,MAAM,CACzC,YAAY,SAAS,cAAc,QAAQ,CAAC,CACzD,EAA8B,EAAM,YAAY,SAAS,cAAc,kBAAkB,CAAC,CAE1F,EAAQ,EAAa,EAAI,OAAO,OAAS,GAAG,CAI9C,EAAQ,KAuGZ,OAtGA,EAAM,iBAAiB,aAAgB,CACtC,EAAQ,EAAM,OAAS,KACvB,EAAI,MAAQ,GACX,CAEF,EAAM,KAAK,KAAO,IAAuB,CACxC,IAAI,EAAe,GAEf,EAAiB,EAAE,CAEnB,EAAU,KAER,EAASA,GAAY,GAAkB,OAAO,CAChD,EAAS,GACb,SAAS,GAAU,CAClB,EAAS,GACL,GAAW,aAAa,EAAQ,CACpC,IAAM,EAAQ,EAAM,KACpB,EAAe,EACf,EAAU,WAAW,SAAY,CAChC,GAAI,IAAiB,EAAS,OAC9B,IAAM,EAAU,MAAM,EAAM,QAAQ,CAAE,GAAG,EAAQ,QAAO,MAAO,IAAK,CAAC,CACjE,IAAiB,IACrB,EAAiB,EACjB,GAAe,GACb,IAAI,CAGR,EAAM,iBAAiB,QAAS,EAAQ,CACxC,EAAM,iBAAiB,YAAe,CACjC,GACJ,GAAS,EACR,CAEF,IAAM,EAAe,EAAmB,cAAgB,GAGlD,EAAc,GAAY,EAAK,EAAoB,EAAS,CAE9D,EAAc,KAClB,eAAe,GAAoB,CAClC,IAAM,EAAK,EACX,GAAI,CAAC,EAAI,CACR,EAAc,KACd,GAAe,CACf,OAED,IAAM,EAAO,EAAe,KAAK,GAAK,EAAY,EAAE,GAAK,EAAG,CAC5D,GAAI,EAAM,CACT,EAAc,EACd,GAAe,CACf,OAED,GAAM,CAAE,UAAW,MAAM,EAAM,OAAO,EAAG,CACrC,CAAC,GAAU,IAAO,GAClB,IAAO,IACX,EAAc,EACd,GAAe,EAQhB,SAAS,GAAgB,CACxB,IAAM,EAAe,CAAC,GAAG,EAAe,CAClC,EAAM,EACZ,GAAI,EAAK,CACR,IAAM,EAAU,EACZ,GAAW,EAAY,EAAQ,EAAI,GAAO,CAAC,EAAa,KAAK,GAAK,EAAY,EAAE,EAAI,EAAI,EAC3F,EAAa,KAAK,EAAQ,CAI5B,IAAM,EAAO,EAAa,IAAI,GAAK,CAClC,IAAM,EAAQ,EAAY,EAAE,CAC5B,MAAQ,CAAE,QAAO,MAAO,EAAW,EAAc,EAAE,EAAI,EAAO,KAAM,EAAG,EACtE,CACF,EAAK,QAAQ,CAAE,MAAO,GAAI,MAAO,GAAI,CAAC,CACtC,IAAM,EAAO,EAAK,KAAK,GAAK,EAAE,OAAS,EAAM,CAC7C,EAAM,MAAQ,GAAM,OAAS,GAAM,OAAS,GAC5C,EAAM,QAAU,EAIjB,MAAa,CACZ,IAAM,EAAI,EAAI,MAER,EAAK,GAAK,IAAM,GAAK,KAAO,KAAO,EACrC,IAAO,IACX,EAAQ,EACR,EAAM,MAAQ,GAAS,GACvB,GAAmB,GACjB,EAAI,OAAO,EACb,CACE,EACH,EAAM,aAAa,SAAS,eAAe,EAAI,OAAO,OAAS,GAAG,CAAE,EAAM,WAAW,CAC3E,IACV,EAAM,YAAc,EAAI,OAAO,OAAS,IAGlC,GC/DR,GA5DmB,EAAK,EAAmB,EAAE,GAAK,CACjD,GAAM,CAAE,SAAQ,YAAW,SAAU,EAAI,MAEnC,EADO,SAAS,cAAc,EAAS,OAAS,MAAM,CACzC,YAAY,SAAS,cAAc,QAAQ,CAAC,CACzD,EAA8B,EAAM,YAAY,SAAS,cAAc,kBAAkB,CAAC,CAC1F,EAAU,EAAY,EAAiB,CAKzC,EAAQ,KACZ,EAAM,iBAAiB,aAAgB,CACtC,EAAQ,EAAM,OAAS,KACvB,EAAI,MAAQ,GACX,CAGF,IAAI,EAAU,KAGd,SAAS,GAAU,CAEd,GAAW,aAAa,EAAQ,CACpC,EAAU,eAAiB,GAExB,IAAI,CAGR,EAAM,iBAAiB,QAAS,EAAQ,CAIxC,IAAM,EAAiB,MAAqB,CAE3C,IAAM,EAAO,CAAC,CAAE,MAAO,GAAI,MAAO,GAAI,CAAE,GAAG,EAAQ,KAAK,CAAC,CAExD,OADD,EAAK,QAAQ,CAAE,MAAO,GAAI,MAAO,GAAI,CAAC,CAC9B,GACP,CAoBF,OAfA,MAAa,CAAE,EAAM,QAAU,EAAe,KAAK,EAAI,EAAI,OAAO,CAClE,MAAa,CACZ,IAAM,EAAI,EAAI,MAER,EAAK,GAAK,IAAM,GAAK,KAAO,KAAO,EACrC,IAAO,IACX,EAAQ,EACR,EAAM,MAAQ,GAAS,KACrB,EAAI,OAAO,CACV,EACH,EAAM,aAAa,SAAS,eAAe,EAAI,OAAO,OAAS,GAAG,CAAE,EAAM,WAAW,CAC3E,IACV,EAAM,YAAc,EAAI,OAAO,OAAS,IAGlC,GC7BR,MAAa,GAAa,CACzB,CAAE,KAAM,OAAQ,MAAOE,EAAW,OAAQC,EAAY,UAAWA,EAAY,QAAS,CAAC,IAAKA,EAAY,KAAMA,EAAW,CAAE,CAC3H,CAAE,KAAM,SAAU,MAAOC,GAAa,OAAQC,EAAc,UAAWA,EAAc,QAAS,CAAC,IAAKA,EAAc,KAAMA,EAAa,CAAE,CACvI,CAAE,KAAM,OAAQ,MAAOC,GAAW,OAAQC,EAAY,UAAWA,EAAY,QAAS,CAAC,IAAKA,EAAY,KAAMA,EAAW,CAAE,CAC3H,CAAE,KAAM,MAAO,MAAOC,EAAY,OAAQC,EAAa,UAAWA,EAAa,QAAS,CAAC,IAAKA,EAAa,KAAMA,EAAa,IAAKA,EAAa,KAAMA,EAAa,IAAKA,EAAa,KAAMA,EAAY,CAAE,CACzM,CAAE,KAAM,MAAO,MAAOD,EAAY,OAAQC,EAAa,UAAWA,EAAa,QAAS,CAAC,IAAKA,EAAa,KAAMA,EAAa,IAAKA,EAAa,KAAMA,EAAa,IAAKA,EAAa,KAAMA,EAAY,CAAE,CACzM,CAAE,KAAM,MAAO,MAAOC,EAAU,OAAQC,EAAW,UAAWA,EAAW,QAAS,CAAC,IAAKA,EAAW,KAAMA,EAAW,IAAKA,EAAW,KAAMA,EAAW,IAAKA,EAAW,KAAMA,EAAU,CAAE,CACvL,CAAE,KAAM,MAAO,MAAOD,EAAU,OAAQC,EAAW,UAAWA,EAAW,QAAS,CAAC,IAAKA,EAAW,KAAMA,EAAW,IAAKA,EAAW,KAAMA,EAAW,IAAKA,EAAW,KAAMA,EAAU,CAAE,CACvL,CAAE,KAAM,MAAO,MAAOC,GAAU,OAAQC,EAAW,UAAWA,EAAW,QAAS,CAAC,IAAKA,EAAW,KAAMA,EAAW,IAAKA,EAAW,KAAMA,EAAW,IAAKA,EAAW,KAAMA,EAAU,CAAE,CACvL,CAAE,KAAM,OAAQ,MAAOC,GAAW,OAAQC,EAAY,UAAWA,EAAY,QAAS,CAAC,IAAKA,EAAY,KAAMA,EAAY,IAAKA,EAAY,KAAMA,EAAY,IAAKA,EAAY,KAAMA,EAAW,CAAE,CACjM,CAAE,KAAM,OAAQ,MAAOC,EAAW,OAAQC,EAAY,UAAWA,EAAY,QAAS,CAAC,IAAKA,EAAY,KAAMA,EAAY,IAAKA,EAAY,KAAMA,EAAY,IAAKA,EAAY,KAAMA,EAAW,CAAE,CACjM,CAAE,KAAM,OAAQ,MAAOC,EAAW,OAAQC,EAAY,UAAWA,EAAY,QAAS,CAAC,IAAKA,EAAY,KAAMA,EAAY,CAAE,CAC5H,CAAE,KAAM,WAAY,MAAOC,EAAe,OAAQC,EAAgB,UAAWA,EAAgB,QAAS,CAAC,IAAKA,EAAgB,KAAMA,EAAgB,IAAKA,EAAgB,KAAMA,EAAgB,IAAKA,EAAgB,KAAMA,EAAe,CAAE,CACzO,CAAE,KAAM,SAAU,MAAOL,EAAW,OAAQC,EAAY,UAAWA,EAAY,QAAS,CAAC,IAAKA,EAAY,KAAMA,EAAY,IAAKA,EAAY,KAAMA,EAAY,IAAKA,EAAY,KAAMA,EAAW,CAAE,CACnM,CAAE,KAAM,YAAa,MAAOG,EAAe,OAAQC,EAAgB,UAAWA,EAAgB,QAAS,CAAC,IAAKA,EAAgB,KAAMA,EAAgB,IAAKA,EAAgB,KAAMA,EAAgB,IAAKA,EAAgB,KAAMA,EAAe,CAAE,CAC1O,CAAE,KAAM,WAAY,MAAOC,EAAe,OAAQjB,EAAc,UAAWA,EAAc,QAAS,CAAC,IAAKA,EAAc,KAAMA,EAAc,CAAE,CAC5I,CAAE,KAAM,MAAO,MAAOkB,EAAU,OAAQC,EAAW,UAAWA,EAAW,QAAS,CAAC,IAAKA,EAAW,KAAMA,EAAW,CAAE,CACtH,CAAE,KAAM,WAAY,MAAOC,GAAe,OAAQC,EAAgB,UAAWA,EAAgB,QAAS,CAAE,IAAKA,EAAgB,KAAMA,EAAgB,CAAE,CACrJ,CAAE,KAAM,SAAU,MAAOC,GAAa,OAAQC,EAAc,UAAWA,EAAc,QAAS,CAAE,IAAKA,EAAc,KAAMA,EAAc,CAAE,CACzI,CAAE,KAAM,WAAY,MAAO,GAAM,SAAU,aAAc,MAAOC,GAAiB,CACjF,CACY,GAAS,CAAC,YAAY"}
1
+ {"version":3,"file":"hooks.mjs","names":["createShow","createInputCell","createShow","getValue","createInput","Component","createInputCell","getValue","createInput","Component","createInputCell","createShow","getValue","createInput","Component","createInputCell","createShow","getValue","createInput","Component","createInputCell","createShow","getValue","createInput","Component","createInputCell","createShow","Component","getValue","createInput","Component","createInputCell","createShow","getValue","createInput","Component","createInputCell","createShow","getValue","createInput","Component","createInputCell","getValue","createInput","Component","createInputCell","createShow","getValue","createInput","Component","createInputCell","createShow","getValue","createInput","Component","createInputCell","createShow","#shadowRoot","#dropdown","#style","#input","#dropdownList","#onInput","#onFocus","#current","#currentValue","#onSelect","#list","#open","#currentNode","#selectItem","#running","#r","#move","#clickOther","#mounted","#updateOpen","#openDropdown","#closeDropdown","loadOptions","Component","Component","createInput","Component","getValue","createInput","Component","getValue","createInput","Component","createInput","Component","createInput","Component","Component","createInput","Component","createInput","Component","createInput","Component","createInput","Component","Component","loadOptions","Component","textInput","textFilter","stringInput","stringFilter","boolInput","boolFilter","floatInput","floatFilter","i32Input","i32Filter","i64Input","i64Filter","dateInput","dateFilter","timeInput","timeFilter","uuidInput","uuidFilter","datetimeInput","datetimeFilter","passwordInput","uriInput","uriFilter","documentInput","documentFilter","selectInput","selectFilter","permissionsInput"],"sources":["../../packages/theme/inputs/createInputCell.mjs","../../packages/theme/inputs/text.mjs","../../packages/theme/inputs/float.mjs","../../packages/theme/inputs/i32.mjs","../../packages/theme/inputs/i64.mjs","../../packages/theme/inputs/string.mjs","../../packages/theme/inputs/bool.mjs","../../packages/theme/inputs/date.mjs","../../packages/theme/inputs/time.mjs","../../packages/theme/inputs/datetime.mjs","../../packages/theme/inputs/password.mjs","../../packages/theme/inputs/uri.mjs","../../packages/theme/inputs/uuid.mjs","../../packages/theme/inputs/YongdallSelect.mjs","../../packages/theme/inputs/document.mjs","../../packages/theme/inputs/select.mjs","../../packages/theme/inputs/permissions.mjs","../../packages/theme/filters/createInputCell.mjs","../../packages/theme/filters/text.mjs","../../packages/theme/filters/float.mjs","../../packages/theme/filters/i32.mjs","../../packages/theme/filters/i64.mjs","../../packages/theme/filters/string.mjs","../../packages/theme/filters/bool.mjs","../../packages/theme/filters/date.mjs","../../packages/theme/filters/time.mjs","../../packages/theme/filters/datetime.mjs","../../packages/theme/filters/uri.mjs","../../packages/theme/filters/uuid.mjs","../../packages/theme/filters/document.mjs","../../packages/theme/filters/select.mjs","../../packages/theme/hooks.mjs"],"sourcesContent":["/** @import { FieldContext } from '@yongdall/web' */\nimport { effect } from '@yongdall/web';\n\n/**\n * \n * @param {FieldContext} ctx\n * @returns {[HTMLElement, (v?: string) => void]}\n */\nexport function createShow(ctx) {\n\tconst inputRoot = document.createElement('div')\n\tconst input = inputRoot;\n\tinput.style.overflow = 'hidden';\n\tinput.style.whiteSpace = 'nowrap';\n\tinput.style.textOverflow = 'ellipsis';\n\t\n\tctx.listen('scrollIntoView', () => inputRoot.scrollIntoView());\n\treturn [inputRoot, v => { input.title = input.innerText = v ?? ''; }];\n\n}\n\n/**\n * @template T\n * @param {FieldContext} ctx\n * @param {(ctx: FieldContext, cb: (v: string) => void) => [HTMLElement, (v?: string) => void]} create\n * @param {(ctx: FieldContext, cb: (v: string) => void) => [HTMLElement, (v?: string) => void]} createShow\n * @param {(v: string, nullable?: boolean | undefined)=> T | null} getValue\n * @param {T} initValue\n * @returns {HTMLElement}\n */\nexport default function createInputCell(ctx,\n\tcreate,\n\tcreateShow,\n\tgetValue,\n\tinitValue,\n\t) {\n\n\tconst editable = ctx.editable;\n\n\t/** @type {T?} */\n\tlet value = ctx.field?.nullable ? null : initValue;\n\tconst [input, set] = (editable ? create : createShow)(ctx, v => {\n\t\tvalue = getValue(v, ctx.field?.nullable);\n\t\tctx.value = value;\n\t});\n\t/**\n\t * \n\t * @param {*} v \n\t * @param {boolean} [force] \n\t * @returns \n\t */\n\tfunction update(v, force) {\n\t\tif (!force && v === value) { return }\n\t\tvalue = v;\n\t\tset(v);\n\t}\n\tupdate(ctx.value, true);\n\teffect(() => update(ctx.value), ctx.signal);\n\treturn input;\n}\n","/** @import { FieldComponent, FieldContext } from '@yongdall/web' */\nimport { effect } from '@yongdall/web';\nimport createInputCell from './createInputCell.mjs';\n\n/**\n * \n * @param {FieldContext} ctx\n * @returns {[HTMLElement, (v?: string) => void]}\n */\nfunction createShow(ctx) {\n\tconst inputRoot = document.createElement('div')\n\tconst input = inputRoot;\n\tctx.listen('scrollIntoView', () => inputRoot.scrollIntoView());\n\treturn [inputRoot, v => { input.innerText = v ?? ''; }];\n\n}\n/**\n* \n* @param {string} v \n* @param {boolean} [nullable] \n* @returns {string?}\n*/\n\nfunction getValue(v, nullable) {\n\treturn v || !nullable ? v : null;\n}\n/**\n * \n * @param {FieldContext} ctx\n * @param {(v: string) => void} cb \n * @returns {[HTMLElement, (v?: string) => void]}\n */\nfunction createInput(ctx, cb) {\n\tconst input = document.createElement('textarea');\n\tinput.addEventListener('input', () => cb(input.value));\n\tinput.addEventListener('input', (e) => ctx.emit('input', e));\n\tinput.addEventListener('change', (e) => ctx.emit('change', e));\n\tinput.addEventListener('focus', (e) => ctx.emit('focus', e));\n\tinput.addEventListener('blur', (e) => ctx.emit('blur', e));\n\teffect(() => input.disabled = Boolean(ctx.readonly || ctx.disabled), ctx.signal);\n\teffect(() => input.placeholder = ctx.placeholder, ctx.signal);\n\tctx.listen('focus', () => input.focus());\n\tctx.listen('scrollIntoView', () => input.scrollIntoView());\n\treturn [input, v => { input.value = v ?? ''; }];\n}\n/** @type {FieldComponent} */\nconst Component = ctx => {\n\treturn createInputCell(ctx, createInput, createShow, getValue, '');\n};\n\nexport default Component;\n","/** @import { FieldComponent, FieldContext } from '@yongdall/web' */\n\nimport { effect } from '@yongdall/web';\nimport createInputCell, { createShow } from './createInputCell.mjs';\n\n/**\n * \n * @param {string} v \n * @param {boolean} [nullable] \n* @returns {number?}\n */\nfunction getValue(v, nullable) {\n\tconst value = parseFloat(v);\n\tif (Number.isFinite(value)) {\n\t\treturn value;\n\t} else {\n\t\treturn !nullable ? 0 : null;\n\t}\n\n}\n/**\n * \n * @param {FieldContext} ctx\n * @param {(v: string) => void} cb \n * @returns {[HTMLElement, (v?: string) => void]}\n */\nfunction createInput(ctx, cb) {\n\tconst input = document.createElement('input');\n\tinput.type = 'number';\n\tinput.addEventListener('input', () => cb(input.value));\n\tinput.addEventListener('input', (e) => ctx.emit('input', e));\n\tinput.addEventListener('change', (e) => ctx.emit('change', e));\n\tinput.addEventListener('focus', (e) => ctx.emit('focus', e));\n\tinput.addEventListener('blur', (e) => ctx.emit('blur', e));\n\teffect(() => input.disabled = Boolean(ctx.readonly || ctx.disabled), ctx.signal);\n\teffect(() => input.placeholder = ctx.placeholder, ctx.signal);\n\tctx.listen('focus', () => input.focus());\n\tctx.listen('scrollIntoView', () => input.scrollIntoView());\n\treturn [input, v => { input.value = v ?? ''; }];\n}\n\n/** @type {FieldComponent} */\nconst Component = ctx => {\n\treturn createInputCell(ctx, createInput, createShow, getValue, 0);\n}\n\nexport default Component;\n","/** @import { FieldComponent, FieldContext } from '@yongdall/web' */\nimport { effect } from '@yongdall/web';\nimport createInputCell, { createShow } from './createInputCell.mjs';\n\n/**\n * \n * @param {string} v \n * @param {boolean} [nullable] \n* @returns {number?}\n */\nfunction getValue(v, nullable) {\n\tconst value = parseInt(v);\n\tif (Number.isFinite(value)) {\n\t\treturn value\n\t} else {\n\t\treturn !nullable ? 0 : null;\n\t}\n\n}\n/**\n * \n * @param {FieldContext} ctx\n * @param {(v: string) => void} cb \n * @returns {[HTMLElement, (v?: string) => void]}\n */\nfunction createInput(ctx, cb) {\n\tconst input = document.createElement('input');\n\tinput.type = 'number';\n\tinput.addEventListener('input', () => cb(input.value));\n\tinput.addEventListener('input', (e) => ctx.emit('input', e));\n\tinput.addEventListener('change', (e) => ctx.emit('change', e));\n\tinput.addEventListener('focus', (e) => ctx.emit('focus', e));\n\tinput.addEventListener('blur', (e) => ctx.emit('blur', e));\n\teffect(() => input.disabled = Boolean(ctx.readonly || ctx.disabled), ctx.signal);\n\teffect(() => input.placeholder = ctx.placeholder, ctx.signal);\n\tctx.listen('focus', () => input.focus());\n\tctx.listen('scrollIntoView', () => input.scrollIntoView());\n\treturn [input, v => { input.value = v ?? ''; }];\n\n}\n/** @type {FieldComponent} */\nconst Component = ctx => {\n\treturn createInputCell(ctx, createInput, createShow, getValue, 0);\n}\n\nexport default Component\n","/** @import { FieldComponent, FieldContext } from '@yongdall/web' */\nimport { effect } from '@yongdall/web';\nimport createInputCell, { createShow } from './createInputCell.mjs';\n\n/**\n* \n* @param {string} v \n* @param {boolean} [nullable] \n* @returns {bigint?}\n*/\nfunction getValue(v, nullable) {\n\tif (!v) {\n\t\treturn !nullable ? 0n : null\n\t}\n\ttry {\n\t\treturn BigInt(v);\n\t} catch {\n\t}\n\treturn !nullable ? 0n : null\n\n}\n/**\n * \n * @param {FieldContext} ctx\n * @param {(v: string) => void} cb \n * @returns {[HTMLElement, (v?: string) => void]}\n */\nfunction createInput(ctx, cb) {\n\tconst input = document.createElement('input');\n\tinput.type = 'number';\n\tinput.addEventListener('input', () => cb(input.value));\n\tinput.addEventListener('input', (e) => ctx.emit('input', e));\n\tinput.addEventListener('change', (e) => ctx.emit('change', e));\n\tinput.addEventListener('focus', (e) => ctx.emit('focus', e));\n\tinput.addEventListener('blur', (e) => ctx.emit('blur', e));\n\teffect(() => input.disabled = Boolean(ctx.readonly || ctx.disabled), ctx.signal);\n\teffect(() => input.placeholder = ctx.placeholder, ctx.signal);\n\tctx.listen('focus', () => input.focus());\n\tctx.listen('scrollIntoView', () => input.scrollIntoView());\n\treturn [input, v => { input.value = v ?? ''; }];\n\n}\n/** @type {FieldComponent} */\nconst Component = ctx => {\n\treturn createInputCell(ctx, createInput, createShow, getValue, 0n);\n}\n\nexport default Component\n","/** @import { FieldComponent, FieldContext } from '@yongdall/web' */\nimport { effect } from '@yongdall/web';\nimport createInputCell, { createShow } from './createInputCell.mjs';\n\n/**\n* \n* @param {string} v \n* @param {boolean} [nullable] \n* @returns {string?}\n*/\nfunction getValue(v, nullable) {\n\treturn v || !nullable ? v : null\n}\n/**\n * \n * @param {FieldContext} ctx\n * @param {(v: string) => void} cb \n * @returns {[HTMLElement, (v?: string) => void]}\n */\nfunction createInput(ctx, cb) {\n\tconst input = document.createElement('input');\n\tinput.addEventListener('input', () => cb(input.value));\n\tinput.addEventListener('input', (e) => ctx.emit('input', e));\n\tinput.addEventListener('change', (e) => ctx.emit('change', e));\n\tinput.addEventListener('focus', (e) => ctx.emit('focus', e));\n\tinput.addEventListener('blur', (e) => ctx.emit('blur', e));\n\teffect(() => input.disabled = Boolean(ctx.readonly || ctx.disabled), ctx.signal);\n\teffect(() => input.placeholder = ctx.placeholder, ctx.signal);\n\tctx.listen('focus', () => input.focus());\n\tctx.listen('scrollIntoView', () => input.scrollIntoView());\n\treturn [input, v => { input.value = v ?? ''; }];\n\n}\n\n/** @type {FieldComponent} */\nconst Component = ctx => {\n\treturn createInputCell(ctx, createInput, createShow, getValue, '');\n}\n\nexport default Component\n","/** @import { FieldComponent } from '@yongdall/web' */\nimport { effect } from '@yongdall/web';\n\n/** @type {FieldComponent} */\nconst Component = ctx => {\n\tconst input = document.createElement('input');\n\tinput.type = 'checkbox';\n\tconst editable = ctx.editable;\n\t/** @type {boolean?} */\n\tlet value = ctx.field?.nullable ? null : false;\n\tif (editable) {\n\t\tinput.addEventListener('input', () => {\n\t\t\tvalue = Boolean(input.checked);\n\t\t\tctx.value = value;\n\t\t});\n\t\tinput.addEventListener('change', (e) => ctx.emit('change', e));\n\t\tinput.addEventListener('focus', (e) => ctx.emit('focus', e));\n\t\tinput.addEventListener('blur', (e) => ctx.emit('blur', e));\n\t} else {\n\t\tinput.disabled = true;\n\t}\n\teffect(() => input.disabled = Boolean(ctx.readonly || ctx.disabled), ctx.signal);\n\teffect(() => input.placeholder = ctx.placeholder, ctx.signal);\n\tctx.listen('focus', () => input.focus());\n\tctx.listen('scrollIntoView', () => input.scrollIntoView());\n\t/**\n\t * \n\t * @param {*} v \n\t * @returns \n\t */\n\tfunction update(v) {\n\t\t// TODO:\n\t\tconst vv = !ctx.field?.nullable || typeof v === 'boolean' ? Boolean(v) : null;\n\t\tif (vv === value) { return; }\n\t\tvalue = vv;\n\t\tinput.checked = Boolean(vv);\n\t}\n\teffect(() => update(ctx.value), ctx.signal);\n\treturn input;\n};\n\nexport default Component;\n","/** @import { FieldComponent, FieldContext } from '@yongdall/web' */\nimport { effect } from '@yongdall/web';\nimport createInputCell, { createShow } from './createInputCell.mjs';\n\n/**\n* \n* @param {string} v \n* @param {boolean} [nullable] \n* @returns {string?}\n*/\nfunction getValue(v, nullable) {\n\tif (Number.isFinite(new Date(v).valueOf())) {\n\t\treturn v;\n\t} else if (!nullable) {\n\t\treturn '';\n\t} else {\n\t\treturn null;\n\t}\n}\n/**\n * \n * @param {FieldContext} ctx\n * @param {(v: string) => void} cb \n * @returns {[HTMLElement, (v?: string) => void]}\n */\nfunction createInput(ctx, cb) {\n\tconst input = document.createElement('input');\n\tinput.type = 'date';\n\tinput.step = '1'\n\tinput.addEventListener('input', () => cb(input.value));\n\tinput.addEventListener('input', (e) => ctx.emit('input', e));\n\tinput.addEventListener('change', (e) => ctx.emit('change', e));\n\tinput.addEventListener('focus', (e) => ctx.emit('focus', e));\n\tinput.addEventListener('blur', (e) => ctx.emit('blur', e));\n\teffect(() => input.disabled = Boolean(ctx.readonly || ctx.disabled), ctx.signal);\n\teffect(() => input.placeholder = ctx.placeholder, ctx.signal);\n\tctx.listen('focus', () => input.focus());\n\tctx.listen('scrollIntoView', () => input.scrollIntoView());\n\treturn [input, v => { input.value = v ?? ''; }];\n\n}\n\n/** @type {FieldComponent} */\nconst Component = ctx => {\n\treturn createInputCell(ctx, createInput, createShow, getValue, '');\n}\n\nexport default Component\n","/** @import { FieldComponent, FieldContext } from '@yongdall/web' */\nimport { effect } from '@yongdall/web';\nimport createInputCell, { createShow } from './createInputCell.mjs';\n\n/**\n* \n* @param {string} v \n* @param {boolean} [nullable] \n* @returns {string?}\n*/\nfunction getValue(v, nullable) {\n\tconst value = new Date(v);\n\tif (Number.isFinite(value)) {\n\t\treturn v;\n\t} else if (!nullable) {\n\t\treturn '';\n\t} else {\n\t\treturn null;\n\t}\n}\n/**\n * \n * @param {FieldContext} ctx\n * @param {(v: string) => void} cb \n * @returns {[HTMLElement, (v?: string) => void]}\n */\nfunction createInput(ctx, cb) {\n\tconst input = document.createElement('input');\n\tinput.type = 'time';\n\tinput.addEventListener('input', () => cb(input.value));\n\tinput.addEventListener('input', (e) => ctx.emit('input', e));\n\tinput.addEventListener('change', (e) => ctx.emit('change', e));\n\tinput.addEventListener('focus', (e) => ctx.emit('focus', e));\n\tinput.addEventListener('blur', (e) => ctx.emit('blur', e));\n\teffect(() => input.disabled = Boolean(ctx.readonly || ctx.disabled), ctx.signal);\n\teffect(() => input.placeholder = ctx.placeholder, ctx.signal);\n\tctx.listen('focus', () => input.focus());\n\tctx.listen('scrollIntoView', () => input.scrollIntoView());\n\treturn [input, v => { input.value = v ?? ''; }];\n\n}\n\n/** @type {FieldComponent} */\nconst Component = ctx => {\n\treturn createInputCell(ctx, createInput, createShow, getValue, '');\n}\n\nexport default Component\n","/** @import { FieldComponent, FieldContext } from '@yongdall/web' */\nimport { effect } from '@yongdall/web';\nimport createInputCell from './createInputCell.mjs';\n\n/**\n* \n* @param {string} v \n* @param {boolean} [nullable] \n* @returns {Date?}\n*/\nfunction getValue(v, nullable) {\n\tconst value = new Date(v);\n\tif (Number.isFinite(value.valueOf())) {\n\t\treturn value;\n\t} else {\n\t\treturn null;\n\t}\n}\n/**\n * \n * @param {Date} date \n * @param {string} show\n */\nfunction toDateStr(date, show) {\n\tconst vv = date.valueOf();\n\tif (!vv) { return '' }\n\treturn `${[\n\t\t`${date.getFullYear()}`.padStart(4, '0'),\n\t\t`${date.getMonth() + 1}`.padStart(2, '0'),\n\t\t`${date.getDate()}`.padStart(2, '0'),\n\t\t].join('-')}${show}${[\n\t\t\t`${date.getHours()}`.padStart(2, '0'),\n\t\t\t`${date.getMinutes()}`.padStart(2, '0'),\n\t\t\t`${date.getSeconds()}`.padStart(2, '0'),\n\t\t\t].join(':')}`\n}\n\n/**\n * \n * @param {*} v \n * @param {string} [show] \n */\nfunction toDateValue(v,show = 'T') {\n\treturn v instanceof Date ? toDateStr(v,show) : toDateStr(new Date(v),show) ?? '';\n\n}\n/**\n * \n * @param {FieldContext} ctx\n * @returns {[HTMLElement, (v?: string) => void]}\n */\nfunction createShow(ctx) {\n\tconst inputRoot = document.createElement('div')\n\tconst input = inputRoot;\n\tinput.style.overflow = 'hidden';\n\tinput.style.whiteSpace = 'nowrap';\n\tinput.style.textOverflow = 'ellipsis';\n\t\n\tctx.listen('scrollIntoView', () => inputRoot.scrollIntoView());\n\treturn [inputRoot, v => { input.title = input.innerText = toDateValue(v, ' '); }];\n\n}\n/**\n * \n * @param {FieldContext} ctx\n * @param {(v: string) => void} cb \n * @returns {[HTMLElement, (v?: string) => void]}\n */\nfunction createInput(ctx, cb) {\n\tconst input = document.createElement('input');\n\tinput.type = 'datetime-local';\n\tinput.step = '1'\n\t// TODO: 追加时区\n\tinput.addEventListener('input', () => cb(input.value));\n\tinput.addEventListener('input', (e) => ctx.emit('input', e));\n\tinput.addEventListener('change', (e) => ctx.emit('change', e));\n\tinput.addEventListener('focus', (e) => ctx.emit('focus', e));\n\tinput.addEventListener('blur', (e) => ctx.emit('blur', e));\n\teffect(() => input.disabled = Boolean(ctx.readonly || ctx.disabled), ctx.signal);\n\teffect(() => input.placeholder = ctx.placeholder, ctx.signal);\n\tctx.listen('focus', () => input.focus());\n\tctx.listen('scrollIntoView', () => input.scrollIntoView());\n\treturn [input, v => { input.value = toDateValue(v); }];\n\n}\n\n/** @type {FieldComponent} */\nconst Component = ctx => {\n\treturn createInputCell(ctx, createInput, createShow, getValue, null);\n}\n\nexport default Component\n","/** @import { FieldComponent, FieldContext } from '@yongdall/web' */\nimport { effect } from '@yongdall/web';\nimport createInputCell, { createShow } from './createInputCell.mjs';\n\n/**\n* \n* @param {string} v \n* @param {boolean} [nullable] \n* @returns {string?}\n*/\nfunction getValue(v, nullable) {\n\treturn v || !nullable ? v : null\n}\n/**\n * \n * @param {FieldContext} ctx\n * @param {(v: string) => void} cb \n * @returns {[HTMLElement, (v?: string) => void]}\n */\nfunction createInput(ctx, cb) {\n\tconst input = document.createElement('input');\n\tinput.type = 'password';\n\tinput.addEventListener('input', () => cb(input.value));\n\tinput.addEventListener('input', (e) => ctx.emit('input', e));\n\tinput.addEventListener('change', (e) => ctx.emit('change', e));\n\tinput.addEventListener('focus', (e) => ctx.emit('focus', e));\n\tinput.addEventListener('blur', (e) => ctx.emit('blur', e));\n\teffect(() => input.disabled = Boolean(ctx.readonly || ctx.disabled), ctx.signal);\n\teffect(() => input.placeholder = ctx.placeholder, ctx.signal);\n\tctx.listen('focus', () => input.focus());\n\tctx.listen('scrollIntoView', () => input.scrollIntoView());\n\treturn [input, v => { input.value = v ?? ''; }];\n\n}\n\n/** @type {FieldComponent} */\nconst Component = ctx => {\n\treturn createInputCell(ctx, createInput, createShow, getValue, '');\n}\n\nexport default Component\n","/** @import { FieldComponent, FieldContext } from '@yongdall/web' */\nimport { effect } from '@yongdall/web';\nimport createInputCell, { createShow } from './createInputCell.mjs';\n\n/**\n* \n* @param {string} v \n* @param {boolean} [nullable] \n* @returns {string?}\n*/\nfunction getValue(v, nullable) {\n\treturn v || !nullable ? v : null\n}\n/**\n * \n * @param {FieldContext} ctx\n * @param {(v: string) => void} cb \n * @returns {[HTMLElement, (v?: string) => void]}\n */\nfunction createInput(ctx, cb) {\n\tconst input = document.createElement('input');\n\tinput.type = 'url';\n\tinput.addEventListener('input', () => cb(input.value));\n\tinput.addEventListener('input', (e) => ctx.emit('input', e));\n\tinput.addEventListener('change', (e) => ctx.emit('change', e));\n\tinput.addEventListener('focus', (e) => ctx.emit('focus', e));\n\tinput.addEventListener('blur', (e) => ctx.emit('blur', e));\n\teffect(() => input.disabled = Boolean(ctx.readonly || ctx.disabled), ctx.signal);\n\teffect(() => input.placeholder = ctx.placeholder, ctx.signal);\n\tctx.listen('focus', () => input.focus());\n\tctx.listen('scrollIntoView', () => input.scrollIntoView());\n\treturn [input, v => { input.value = v ?? ''; }];\n\n}\n\n/** @type {FieldComponent} */\nconst Component = ctx => {\n\treturn createInputCell(ctx, createInput, createShow, getValue, '');\n}\n\nexport default Component\n","/** @import { FieldComponent, FieldContext } from '@yongdall/web' */\nimport { effect } from '@yongdall/web';\nimport createInputCell, { createShow } from './createInputCell.mjs';\n\n/**\n* \n* @param {string} v \n* @param {boolean} [nullable] \n* @returns {string?}\n*/\nfunction getValue(v, nullable) {\n\treturn v || !nullable ? v : null\n}\n/**\n * \n * @param {FieldContext} ctx\n * @param {(v: string) => void} cb \n * @returns {[HTMLElement, (v?: string) => void]}\n */\nfunction createInput(ctx, cb) {\n\tconst input = document.createElement('input');\n\tinput.addEventListener('input', () => cb(input.value));\n\tinput.addEventListener('input', (e) => ctx.emit('input', e));\n\tinput.addEventListener('change', (e) => ctx.emit('change', e));\n\tinput.addEventListener('focus', (e) => ctx.emit('focus', e));\n\tinput.addEventListener('blur', (e) => ctx.emit('blur', e));\n\teffect(() => input.disabled = Boolean(ctx.readonly || ctx.disabled), ctx.signal);\n\teffect(() => input.placeholder = ctx.placeholder, ctx.signal);\n\tctx.listen('focus', () => input.focus());\n\tctx.listen('scrollIntoView', () => input.scrollIntoView());\n\treturn [input, v => { input.value = v ?? ''; }];\n\n}\n\n/** @type {FieldComponent} */\nconst Component = ctx => {\n\treturn createInputCell(ctx, createInput, createShow, getValue, '');\n}\n\nexport default Component\n","\nconst supportsPopover = HTMLElement.prototype.hasOwnProperty(\"popover\");\nconst style =`\\\n:host {\n\tdisplay: contents;\n}\n\ninput {\n\tblock-size: inherit;\n\tinline-size: inherit;\n\tmax-block-size: inherit;\n\tmin-block-size: inherit;\n\tmax-inline-size: inherit;\n\tmin-inline-size: inherit;\n\tfont-size: inherit;\n\tbackground-color: inherit;\n\tborder-radius: inherit;\n\tcursor: text;\n\tpadding: inherit;\n\tborder: inherit;\n\tmargin: inherit;\n\toutline: inherit;\n\tbox-sizing: border-box;\n\n\tline-height: inherit;\n}\n\n.dropdown {\n\tposition: fixed;\n\tbackground: white;\n\tmax-width: 100%;\n\tmax-height: 100%;\n\tmargin: 0;\n\tinset: unset;\n\theight: auto;\n\twidth: auto;\n\toverflow-y: auto;\n\toverflow-x: hidden;\n\tz-index: 999;\n\tdisplay: none;\n\tbox-sizing: border-box;\n\tborder: 1px solid #ddd;\n}\n.dropdown-list {\n\toverflow-y: visible;\n\toverflow-x: visible;\n}\n\n:host([open]) .dropdown {\n\tdisplay: block;\n}\n\n\n.option {\n\tcursor: pointer;\n\tbackground: Canvas;\n\tcolor: CanvasText;\n\toverflow-x: hidden;\n}\n\n.option:hover {\n\tbackground: Highlight;\n\tcolor: HighlightText;\n}\n.current {\n\tbackground: Highlight;\n\tcolor: HighlightText;\n\n}\n\n`\n/**\n * \n * @param {Node} el \n */\nfunction isActive(el) {\n\tlet e = el\n\twhile(e) {\n\t\tlet root = e.getRootNode();\n\t\tif (!root) { return false; }\n\t\tif (root === document) {\n\t\t\treturn document.activeElement === e;\n\t\t}\n\t\tif (!(root instanceof ShadowRoot)) {\n\t\t\treturn false;\n\t\t}\n\t\tif (root.activeElement !== e) {\n\t\t\treturn false;\n\t\t}\n\t\tconst host = root.host;\n\t\tif (!host) { return false; }\n\t\te = host;\n\t}\n}\nexport default class Select extends HTMLElement {\n\t/** @type {{label: string; value: any; level?: any; data?: any}?} */\n\t#current = null;\n\t/** @type {any} */\n\t#currentValue = null;\n\t/** @type {Element?} */\n\t#currentNode = null;\n\t#shadowRoot = this.attachShadow({ mode: 'closed' });\n\t#style = this.#shadowRoot.appendChild(document.createElement('style'));\n\t#input = this.#shadowRoot.appendChild(document.createElement('input'));\n\t#dropdown = this.#shadowRoot.appendChild(document.createElement('div'));\n\t#dropdownList = this.#dropdown.appendChild(document.createElement('div'));\n\tconstructor() {\n\t\tsuper();\n\t\tthis.#style.textContent = style;\n\t\tconst input = this.#input;\n\t\tinput.type = 'text'\n\t\tconst dropdown = this.#dropdown;\n\t\tconst dropdownList = this.#dropdownList;\n\t\tdropdown.className = 'dropdown'\n\t\tdropdownList.className = 'dropdown-list'\n\t\tif (supportsPopover) {\n\t\t\tdropdown.setAttribute('popover', \"manual\");\n\t\t}\n\n\n\t\t// 输入事件处理 \n\t\tinput.addEventListener('input', () => { this.#onInput(); });\n\t\tinput.addEventListener('focus', () => { this.#onFocus(); });\n\t\tinput.addEventListener('blur', () => {\n\t\t\tconst current = this.#current;\n\t\t\tconst value = input.value;\n\t\t\tconst required = this.required;\n\t\t\tif (!value) {\n\t\t\t\tif (!current) { return; }\n\t\t\t\tif (required) {\n\t\t\t\t\tinput.value = current.label;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis.#current = null;\n\t\t\t\tthis.#currentValue = null;\n\t\t\t\tthis.#onSelect();\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (current?.label === value) { return; }\n\t\t\tconst item = this.#list.find(v => v.label === value);\n\t\t\tif (item) {\n\t\t\t\tthis.#current = item;\n\t\t\t\tthis.#currentValue = item.value;\n\t\t\t\tinput.value = item.label;\n\t\t\t\tthis.#onSelect();\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (!current) {\n\t\t\t\tinput.value = '';\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (required) {\n\t\t\t\tinput.value = current.label;\n\t\t\t} else {\n\t\t\t\tinput.value = '';\n\t\t\t\tthis.#current = null;\n\t\t\t\tthis.#currentValue = null;\n\t\t\t\tthis.#onSelect();\n\t\t\t}\n\t\t})\n\n\n\t\t// 键盘导航 \n\t\tthis.addEventListener('keydown', (e) => {\n\t\t\tif (!this.#open) { return; }\n\t\t\t\n\t\t\tconst currentNode = this.#currentNode;\n\n\t\t\tif (e.key === 'ArrowDown') {\n\t\t\t\te.preventDefault();\n\t\t\t\tif (currentNode?.parentNode !== dropdownList) {\n\t\t\t\t\tconst node = dropdownList.firstElementChild;\n\t\t\t\t\tif (!node) {\n\t\t\t\t\t\tthis.#currentNode = null;\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tthis.#currentNode = node;\n\t\t\t\t\tnode.classList.add('current');\n\t\t\t\t\tnode.scrollIntoView();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst node = currentNode.nextElementSibling;\n\t\t\t\tif (!node) { return; }\n\t\t\t\tcurrentNode.classList.remove('current');\n\t\t\t\tthis.#currentNode = node;\n\t\t\t\tnode.classList.add('current');\n\t\t\t\tnode.scrollIntoView();\n\n\t\t\t}\n\n\n\t\t\tif (e.key === 'ArrowUp') {\n\t\t\t\te.preventDefault();\n\t\t\t\tif (currentNode?.parentNode !== dropdownList) {\n\t\t\t\t\tconst node = dropdownList.lastElementChild;\n\t\t\t\t\tif (!node) {\n\t\t\t\t\t\tthis.#currentNode = null;\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tthis.#currentNode = node;\n\t\t\t\t\tnode.classList.add('current');\n\t\t\t\t\tnode.scrollIntoView();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst node = currentNode.previousElementSibling;\n\t\t\t\tif (!node) { return; }\n\t\t\t\tcurrentNode.classList.remove('current');\n\t\t\t\tthis.#currentNode = node;\n\t\t\t\tnode.classList.add('current');\n\t\t\t\tnode.scrollIntoView();\n\n\t\t\t}\n\n\t\t\tif (e.key === 'Enter') {\n\t\t\t\te.preventDefault();\n\t\t\t\tif (currentNode?.parentNode === dropdownList) {\n\t\t\t\t\t// @ts-ignore\n\t\t\t\t\tcurrentNode.click();\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\n\tget options() {\n\t\treturn this.#list;\n\t}\n\tfocus() {\n\t\tthis.#input.focus();\n\t}\n\tset options(items) {\n\t\tthis.#list = items;\n\t\tconst dropdown = this.#dropdown;\n\t\tconst dropdownList = this.#dropdownList;\n\t\tdropdownList.innerHTML = '';\n\t\tfor (const item of items) {\n\t\t\tconst option = document.createElement('div');\n\t\t\toption.className = 'option';\n\t\t\toption.appendChild(document.createTextNode(`${Array(item.level || 0).fill(' ').join('')}${item.label}` || ' '));\n\t\t\tdropdownList.appendChild(option);\n\t\t\toption.addEventListener('pointerdown', (e) => {\n\t\t\t\te.preventDefault()\n\t\t\t\tthis.#selectItem(item)\n\t\t\t});\n\t\t\toption.addEventListener('click', (e) => {\n\t\t\t\te.preventDefault();\n\t\t\t\tthis.#selectItem(item);\n\t\t\t});\n\t\t\toption.addEventListener('pointermove', () => {\n\t\t\t\tthis.#currentNode?.classList.remove('current');\n\t\t\t\tthis.#currentNode = option;\n\t\t\t\toption.classList.add('current');\n\t\t\t});\n\t\t}\n\t\tthis.#currentNode = dropdownList.firstElementChild;\n\t\tthis.#currentNode?.classList.add('current');\n\t\tdropdown.scrollTop = 0;\n\t\tdropdown.scrollLeft = 0;\n\t\tif (isActive(this.#input)) {\n\t\t\tif (this.#input.value === this.current?.label) { return }\n\t\t\tthis.open = true;\n\t\t\treturn;\n\t\t}\n\t\tconst currentValue = this.#currentValue;\n\t\tconst item = this.#list.find(it => it.value === currentValue);\n\t\tif (item) {\n\t\t\tif (item === this.#current) { return; }\n\t\t\tthis.#current = item;\n\t\t\tthis.#currentValue = item.value;\n\t\t\tthis.#input.value = item.label || '';\n\t\t}\n\t}\n\tget active() { return isActive(this.#input); }\n\t/** @type {{label: string; value: any; level?: any; data?: any}[]} */\n\t#list = [];\n\tget current() { return this.#current; }\n\tget value() { return this.#currentValue; }\n\tset value(v) {\n\t\tif (v === this.#currentValue) { return; }\n\t\tconst item = this.#list.find(it => it.value === v);\n\t\tif (!item) {\n\t\t\tthis.#current = null;\n\t\t\tthis.#currentValue = v;\n\t\t\tthis.#input.value = v;\n\t\t\treturn;\n\t\t}\n\t\tif (item === this.#current) { return; }\n\n\t\tthis.#current = item;\n\t\tthis.#currentValue = item.value;\n\t\tthis.#input.value = item.label || '';\n\t}\n\t#onSelect() {\n\t\tthis.dispatchEvent(new Event('change'));\n\t}\n\t#onInput() {\n\t\tthis.dispatchEvent(new Event('input'));\n\t}\n\t#onFocus() {\n\t\tthis.open = true;\n\t\tthis.dispatchEvent(new Event('focus'));\n\t}\n\tget text() {\n\t\treturn this.#input.value;\n\t}\n\n\n\t/**\n\t * \n\t * @param {{label: string; value: any; level?: any; data?: any}} item \n\t */\n\t#selectItem(item) {\n\t\tthis.#current = item;\n\t\tthis.#currentValue = item?.value;\n\t\tthis.#input.value = item?.label || '';\n\t\tthis.#onSelect();\n\t\tthis.open = false;\n\t\tthis.#input.focus();\n\t}\n\n\tget open() { return this.getAttribute('open') !== null; }\n\tset open(v) {\n\t\tif (v) {\n\t\t\tthis.setAttribute('open', '');\n\t\t} else {\n\t\t\tthis.removeAttribute('open');\n\t\t}\n\t}\n\tget disabled() { return this.getAttribute('disabled') !== null; }\n\tset disabled(v) {\n\t\tif (v) {\n\t\t\tthis.setAttribute('disabled', '');\n\t\t} else {\n\t\t\tthis.removeAttribute('disabled');\n\t\t}\n\t}\n\tget readOnly() { return this.getAttribute('readonly') !== null; }\n\tset readOnly(v) {\n\t\tif (v) {\n\t\t\tthis.setAttribute('readonly', '');\n\t\t} else {\n\t\t\tthis.removeAttribute('readonly');\n\t\t}\n\t}\n\tget required() { return this.getAttribute('required') !== null; }\n\tset required(v) {\n\t\tif (v) {\n\t\t\tthis.setAttribute('required', '');\n\t\t} else {\n\t\t\tthis.removeAttribute('required');\n\t\t}\n\t}\n\tget placeholder() { return this.getAttribute('placeholder') || ''; }\n\tset placeholder(v) {\n\t\tif (v) {\n\t\t\tthis.setAttribute('placeholder', v);\n\t\t} else {\n\t\t\tthis.removeAttribute('placeholder');\n\t\t}\n\t}\n\t#move() {\n\t\tconst inputRect = this.#input.getBoundingClientRect();\n\n\t\tconst innerWidth = window.innerWidth;\n\t\tconst innerHeight = window.innerHeight;\n\n\t\tconst right = innerWidth - inputRect.right;\n\t\tconst bottom = innerHeight - inputRect.bottom;\n\t\tconst {top, left, width: aWidth, height: aHeight} = inputRect;\n\t\tconst dropdownRect = this.#dropdownList.getBoundingClientRect();\n\t\tconst width = dropdownRect.width - 2;\n\t\tconst height = dropdownRect.height - 2;\n\t\tconst dropdown = this.#dropdown;\n\t\tdropdown.style.maxWidth = ``;\n\t\tdropdown.style.minWidth = ``;\n\n\t\tdropdown.style.top = `${top + aHeight}px`;\n\t\tdropdown.style.minWidth = `${aWidth}px`;\n\t\tdropdown.style.maxHeight = `${innerHeight - top - aHeight - 4}px`;\n\t\tif (width <= innerWidth - left) {\n\t\t\tdropdown.style.left = `${left}px`;\n\t\t\tdropdown.style.right = ``;\n\t\t} else if (width <= innerWidth - left) {\n\t\t\tdropdown.style.left = `${left}px`;\n\t\t\tdropdown.style.right = `${innerWidth - left}px`;\n\t\t} else {\n\t\t\tdropdown.style.left = `${Math.max(0, Math.min((width - aWidth) / 2, left))}px`;\n\t\t\tdropdown.style.right = ``;\n\t\t}\n\n\n\t\tlet p = 0;\n\t\tif (height <= bottom - 20) {\n\t\t\t// 下方\n\t\t\tp = 1;\n\t\t\tdropdown.style.top = `${top + aHeight}px`;\n\t\t\tdropdown.style.minWidth = `${aWidth}px`;\n\t\t\tdropdown.style.bottom = ``;\n\t\t} else if (height <= top) {\n\t\t\t// 上方\n\t\t\tp = 1;\n\t\t\tdropdown.style.top = ``;\n\t\t\tdropdown.style.bottom = `${bottom + aHeight}px`;\n\t\t} else if (Math.max(left, (right - 20)) < Math.min(width, inputRect.right - left)) {\n\t\t\tif (bottom - 20 >= top) {\n\t\t\t// 下方\n\t\t\tp = 1;\n\t\t\tdropdown.style.top = `${top + aHeight}px`;\n\t\t\tdropdown.style.minWidth = `${aWidth}px`;\n\t\t\tdropdown.style.bottom = ``;\n\t\t} else if (height <= top) {\n\t\t\t// 上方\n\t\t\tp = 1;\n\t\t\tdropdown.style.top = ``;\n\t\t\tdropdown.style.bottom = `${bottom + aHeight}px`;\n\t\t}\n\t\t} else if (width <= (right - 20) || left <= (right - 20)) {\n\t\t\t// 右侧\n\t\t\tdropdown.style.left = `${left + aWidth}px`;\n\t\t\tdropdown.style.maxWidth = `${right}px`;\n\t\t\tdropdown.style.right = ``;\n\t\t} else {\n\t\t\t// 左侧\n\t\t\tdropdown.style.left = ``;\n\t\t\tdropdown.style.right = `${right + aWidth}px`;\n\t\t\tdropdown.style.maxWidth = `${left}px`;\n\t\t}\n\t\tif (p) {\n\t\t\t\n\t\t\tif (width <= innerWidth - left) {\n\t\t\t\tdropdown.style.left = `${left}px`;\n\t\t\t\tdropdown.style.right = ``;\n\t\t\t} else if (width <= innerWidth - left) {\n\t\t\t\tdropdown.style.left = `${left}px`;\n\t\t\t\tdropdown.style.right = `${innerWidth - left}px`;\n\t\t\t} else {\n\t\t\t\tdropdown.style.left = `${Math.max(0, Math.min((width - aWidth) / 2, left))}px`;\n\t\t\t\tdropdown.style.right = ``;\n\t\t\t}\n\t\t} else {\n\t\t\tif (height <= innerHeight - top) {\n\t\t\t\tdropdown.style.top = `${top}px`;\n\t\t\t\tdropdown.style.bottom = ``;\n\t\t\t} else if (height < top + aHeight) {\n\t\t\t\tdropdown.style.top = ``;\n\t\t\t\tdropdown.style.bottom = `${innerHeight - top}px`;\n\t\t\t} else {\n\t\t\t\tdropdown.style.top = `${Math.max(0, Math.min(innerHeight - height, top))}px`;\n\t\t\t\tdropdown.style.bottom = `0`;\n\t\t\t}\n\t\t}\n\t}\n\n\t\n\t#running = false;\n\t/** @type {any} */\n\t#r = null;\n\t#openDropdown() {\n\t\tif (supportsPopover) {\n\t\t\tthis.#dropdown.showPopover();\n\t\t}\n\t\tif (this.#running) { return }\n\t\tthis.#running = true;\n\t\tconst that = this;\n\t\tthis.#r = requestAnimationFrame(function raf() {\n\t\t\tthat.#move();\n\t\t\tif (!that.#running) { return }\n\t\t\tthat.#r = requestAnimationFrame(raf);\n\t\t})\n\t}\n\n\t#closeDropdown() {\n\t\tif (supportsPopover) {\n\t\t\tthis.#dropdown.hidePopover();\n\t\t}\n\t\tif (!this.#running) { return }\n\t\tthis.#running = false;\n\t\tcancelAnimationFrame(this.#r);\n\t}\n\n\t/**\n\t * \n\t * @param {Event} e \n\t */\n\t#clickOther = (e) => {\n\t\t// @ts-ignore\n\t\tif (this.contains(e.target)) { return; }\n\t\tthis.open = false;\n\t}\n\t#mounted = false;\n\tconnectedCallback() {\n\t\tdocument.addEventListener('click', this.#clickOther);\n\t\tthis.#mounted = true;\n\t\tthis.#updateOpen();\n\t}\n\tdisconnectedCallback() {\n\t\tdocument.removeEventListener('click', this.#clickOther);\n\t\tthis.#mounted = false;\n\t\tthis.#updateOpen();\n\t}\n\t#open = false;\n\t#updateOpen() {\n\t\tconst status = !this.readOnly && !this.disabled && this.open && this.#mounted;\n\t\tif (this.#open === status) { return; }\n\t\tthis.#open = status\n\t\tif (status) {\n\t\t\tthis.#openDropdown();\n\t\t} else {\n\t\t\tthis.#closeDropdown();\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 */\n\tattributeChangedCallback(attrName, oldVal, newVal) {\n\t\tif (oldVal === newVal) { return; }\n\t\tswitch (attrName) {\n\t\t\tcase 'open': {\n\t\t\t\tif (!this.#mounted) { return; }\n\t\t\t\tthis.#updateOpen();\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tcase 'placeholder': {\n\t\t\t\tthis.#input.placeholder = newVal || '';\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tcase 'readonly': {\n\t\t\t\tthis.#input.readOnly = newVal !== null;\n\t\t\t\tthis.#updateOpen();\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tcase 'disabled': {\n\t\t\t\tthis.#input.disabled = newVal !== null;\n\t\t\t\tthis.#updateOpen();\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t}\n\tstatic observedAttributes = ['open', 'placeholder', 'readonly', 'disabled'];\n}\n\ntry {\n\tcustomElements.define('yongdall-select', Select);\n} catch {\n}\n","/** @import { FieldComponent, State } from '@yongdall/web' */\nimport { ArrayStore, createComputed, createState, effect, getPatternFields, modelService, runPattern, Search, toId, watch } from '@yongdall/web';\nimport './YongdallSelect.mjs';\n/** @import Select from './YongdallSelect.mjs' */\n\n\n/**\n * \n * @param {string?} filter\n * @param {((placeholder: string) => string | (() => string) | null) | false} [getPlaceholder] \n * @returns {State<{where: any, orWhere: any}>}\n */\nfunction loadOptions(filter, getPlaceholder) {\n\tif (!filter || typeof filter !== 'string') { return createComputed(() => ({where: [], orWhere: []})); }\n\tconst search = Search.parse(filter);\n\t/** @typedef {[(Search.Match | Search.Children)[], (Search.Match | Search.Children | Search.Or)[]]} SearchState */\n\tconst searchState = typeof getPlaceholder === 'function'\n\t\t? createComputed(() => /** @type {SearchState} */([\n\t\t\tSearch.fill(search.where, getPlaceholder),\n\t\t\tSearch.fill(search.orWhere, getPlaceholder),\n\t\t])) : createState(/** @type {SearchState} */([search.where, search.orWhere]));\n\treturn createComputed(() => {\n\t\tconst [where, orWhere] = searchState.get();\n\t\treturn { where, orWhere };\n\t});\n}\n/** @type {FieldComponent} */\nconst Component = (ctx, componentOptions) => {\n\tconst editable = ctx.editable;\n\tconst store = ctx.store;\n\tconst modelName = ctx.field?.model || '';\n\tconst model = modelService(modelName);\n\n\tif (!editable) {\n\t\tconst span = document.createElement('span');\n\t\t/** @type {string?} */\n\t\tlet value = null;\n\t\tctx.listen('focus', () => span.focus());\n\t\tctx.listen('scrollIntoView', () => span.scrollIntoView());\n\t\tif (!store) {\n\t\t\teffect(() => {\n\t\t\t\tspan.innerText = ctx.current[`${ctx.name}~label`] || ctx.value;\n\t\t\t}, ctx.signal);\n\t\t\treturn span;\n\t\t}\n\t\tmodel.then(async (modelConfiguration) => {\n\t\t\tconst labelPattern = modelConfiguration.labelPattern || '';\n\t\t\tif (!getPatternFields(labelPattern).length) {\n\t\t\t\teffect(() => span.innerText = ctx.value || '', ctx.signal);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tasync function updateCurrentItem() {\n\t\t\t\tconst id = value;\n\t\t\t\tif (!id) {\n\t\t\t\t\tspan.innerText = '';\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst { option } = await model.option(id);\n\t\t\t\tif (!option || id !== value) { return; }\n\t\t\t\tspan.innerText = runPattern(labelPattern, option) || value;\n\t\t\t}\n\t\t\t/**\n\t\t\t * \n\t\t\t * @param {*} v \n\t\t\t * @returns \n\t\t\t */\n\t\t\tfunction update(v) {\n\t\t\t\t// TODO:\n\t\t\t\tconst vv = v == '' || v == null ? null : v;\n\t\t\t\tif (vv === value) { return; }\n\t\t\t\tvalue = vv;\n\t\t\t\tspan.innerText = value || '';\n\t\t\t\tupdateCurrentItem();\n\t\t\t}\n\t\t\teffect(() => update(ctx.value), ctx.signal);\n\t\t});\n\t\treturn span;\n\t}\n\n\tconst input = /** @type {Select} */(document.createElement('yongdall-select'));\n\t/** @type {string?} */\n\tlet value = null;\n\tinput.addEventListener('change', () => {\n\t\tvalue = input.value || null;\n\t\tctx.value = value;\n\t});\n\tinput.addEventListener('change', (e) => ctx.emit('change', e));\n\tinput.addEventListener('focus', (e) => ctx.emit('focus', e));\n\tinput.addEventListener('blur', (e) => ctx.emit('blur', e));\n\tctx.listen('focus', () => input.focus());\n\tctx.listen('scrollIntoView', () => input.scrollIntoView());\n\teffect(() => input.hidden = Boolean(ctx.hidden), ctx.signal);\n\teffect(() => input.disabled = Boolean(ctx.readonly || ctx.disabled), ctx.signal);\n\teffect(() => input.placeholder = ctx.placeholder, ctx.signal);\n\tif (store) {\n\t\teffect(() => input.placeholder = store.placeholder || '', ctx.signal);\n\t}\n\n\t/**\n\t * \n\t * @param {string} placeholder \n\t */\n\tfunction getPlaceholder(placeholder) {\n\t\tlet state = ctx.store?.parent;\n\t\tif (!state) { return null; }\n\t\tif (state instanceof ArrayStore) { state = state.parent; }\n\t\tif (!state) { return null; }\n\t\tlet currentState = state;\n\t\tlet k = 0;\n\t\twhile (placeholder[k] === '?') {\n\t\t\tk++;\n\t\t\tlet parent = currentState.parent;\n\t\t\tif (!parent) { break; }\n\t\t\tif (parent instanceof ArrayStore) {\n\t\t\t\tparent = parent.parent;\n\t\t\t}\n\t\t\tif (!parent) { break; }\n\t\t\tcurrentState = parent;\n\t\t}\n\t\twhile (placeholder[k] === '?') { k++; }\n\t\tconst name = placeholder.slice(k);\n\t\tconst field = currentState.child(name);\n\t\tif (!field) { return null; }\n\t\treturn field.value;\n\t}\n\tmodel.then(async (modelConfiguration) => {\n\t\tlet currentQuery = '';\n\t\t/** @type {{[k: string]: number | string}[]} */\n\t\tlet queriedOptions = [];\n\t\t/** @type {NodeJS.Timeout?} */\n\t\tlet timeout = null;\n\n\t\tconst search = loadOptions(componentOptions?.filter, getPlaceholder);\n\n\t\tlet loaded = false;\n\t\tfunction toQuery() {\n\t\t\tloaded = true;\n\t\t\tif (timeout) { clearTimeout(timeout); }\n\t\t\tconst query = input.text;\n\t\t\tcurrentQuery = query;\n\t\t\ttimeout = setTimeout(async () => {\n\t\t\t\tif (currentQuery !== query) { return; }\n\t\t\t\tconst options = await model.options({ ...search.get(), query, limit: 100 });\n\t\t\t\tif (currentQuery !== query) { return; }\n\t\t\t\tqueriedOptions = options;\n\t\t\t\tupdateOptions();\n\t\t\t}, 300);\n\n\t\t}\n\t\tinput.addEventListener('input', toQuery);\n\t\tinput.addEventListener('focus', () => {\n\t\t\tif (loaded) { return; }\n\t\t\ttoQuery();\n\t\t});\n\t\twatch(() => search.get(), () => {\n\t\t\tif (!input.active) { return; }\n\t\t\ttoQuery();\n\t\t}, {signal: ctx.signal});\n\n\t\tconst labelPattern = modelConfiguration.labelPattern || '';\n\n\t\t/** @type {(document: Record<string, any>) => any} */\n\t\tconst toCurrentId = document => toId(modelConfiguration, document);\n\t\t/** @type {{ [k: string]: number | string}?} */\n\t\tlet currentItem = null;\n\t\tasync function updateCurrentItem() {\n\t\t\tconst id = value;\n\t\t\tif (!id) {\n\t\t\t\tcurrentItem = null;\n\t\t\t\tupdateOptions();\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst item = queriedOptions.find(v => toCurrentId(v) === id);\n\t\t\tif (item) {\n\t\t\t\tcurrentItem = item;\n\t\t\t\tupdateOptions();\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst { option } = await model.option(id);\n\t\t\tif (!option || id !== value) { return; }\n\t\t\tif (id !== value) { return; }\n\t\t\tcurrentItem = option;\n\t\t\tupdateOptions();\n\n\t\t}\n\n\n\n\n\n\t\tfunction updateOptions() {\n\t\t\tconst allDocuments = [...queriedOptions];\n\t\t\tconst val = value;\n\t\t\tif (val) {\n\t\t\t\tconst current = currentItem;\n\t\t\t\tif (current && toCurrentId(current) == val && !allDocuments.find(v => toCurrentId(v) == val)) {\n\t\t\t\t\tallDocuments.push(current);\n\t\t\t\t}\n\t\t\t}\n\t\t\t/** @type {{ value: any; label: any; data?: { [k: string]: string | number; };}[]} */\n\t\t\tconst list = allDocuments.map(v => {\n\t\t\t\tconst value = toCurrentId(v);\n\t\t\t\treturn ({ value, label: runPattern(labelPattern, v) || value, data: v });\n\t\t\t});\n\t\t\tif (ctx.clearable) {\n\t\t\t\tlist.unshift({ value: '', label: '' });\n\t\t\t}\n\t\t\tconst item = list.find(v => v.value == value);\n\t\t\tinput.value = item?.label || item?.value || '';\n\t\t\tinput.options = list;\n\t\t}\n\n\n\t\t/**\n\t\t * \n\t\t * @param {*} v \n\t\t * @returns \n\t\t */\n\t\tfunction update(v) {\n\t\t\t// TODO:\n\t\t\tconst vv = v == '' || v == null ? null : v;\n\t\t\tif (vv === value) { return; }\n\t\t\tvalue = vv;\n\t\t\tinput.value = value || '';\n\t\t\tupdateCurrentItem();\n\t\t}\n\t\teffect(() => update(ctx.value), ctx.signal);\n\t});\n\n\treturn input;\n};\n\nexport default Component;\n","/** @import { FieldComponent, Option, State, Store } from '@yongdall/web' */\nimport { ArrayStore, createComputed, createState, effect, loadOptions, ObjectStore } from '@yongdall/web';\nimport './YongdallSelect.mjs';\n/** @import Select from './YongdallSelect.mjs' */\n\n\n/**\n * \n * @param {State<Option[]>} options \n */\nfunction toLabels(options) {\n\treturn createComputed(() => {\n\t\tconst queue = [...options.get()];\n\t\t/** @type {Record<string, string>} */\n\t\tconst labels = Object.create(null);\n\t\tfor (let item; item = queue.shift();) {\n\t\t\tconst children = item.children;\n\t\t\tlabels[item.value] = item.label;\n\t\t\tfor (const c of children) {\n\t\t\t\tqueue.push(c);\n\t\t\t}\n\t\t}\n\t\treturn labels;\n\t});\n}\n\n/**\n * \n * @param {Store?} [store] \n * @param {Record<string, string>?} [bind] \n * @returns {Iterable<(data: Record<string, any>) => void>}\n */\nfunction* getBindFns(store, bind) {\n\tif (!store) { return; }\n\tif (!bind || typeof bind === 'object') { return; }\n\tlet parent = store.parent;\n\tif (!(parent instanceof ObjectStore)) { return; }\n\tfor (const [k, v] of Object.entries(bind)) {\n\t\tconst current = parent.child(k);\n\t\tif (!current) { continue; }\n\t\tif (typeof v === 'string') {\n\t\t\tyield d => current.value = d[v];\n\t\t}\n\t}\n}\n/** @type {FieldComponent} */\nconst Component = (ctx, componentOptions = {}) => {\n\tconst editable = ctx.editable;\n\tconst store = ctx.store;\n\n\tif (!editable) {\n\t\tconst span = document.createElement('span');\n\t\tconst value = createState('');\n\t\tctx.listen('focus', () => span.focus());\n\t\tctx.listen('scrollIntoView', () => span.scrollIntoView());\n\t\tconst labels = toLabels(loadOptions(componentOptions, false));\n\t\tfunction set() {\n\t\t\tconst val = value.get();\n\t\t\tif (val === '') {\n\t\t\t\tspan.innerText = '';\n\t\t\t} else {\n\t\t\t\tspan.innerText = labels.get()[val] ?? '';\n\t\t\t}\n\t\t}\n\t\t/**\n\t\t * \n\t\t * @param {*} v \n\t\t * @returns \n\t\t */\n\t\tfunction update(v) {\n\t\t\tconst vv = v == null ? '' : v;\n\t\t\tif (vv === value) { return; }\n\t\t\tvalue.set(vv);\n\t\t}\n\t\teffect(() => update(ctx.value), ctx.signal);\n\t\teffect(set, ctx.signal);\n\t\treturn span;\n\t}\n\n\n\t/**\n\t * \n\t * @param {string} placeholder \n\t */\n\tfunction getPlaceholder(placeholder) {\n\t\tlet state = ctx.store?.parent;\n\t\tif (!state) { return null; }\n\t\tif (state instanceof ArrayStore) { state = state.parent; }\n\t\tif (!state) { return null; }\n\t\tlet currentState = state;\n\t\tlet k = 0;\n\t\twhile (placeholder[k] === '?') {\n\t\t\tk++;\n\t\t\tlet parent = currentState.parent;\n\t\t\tif (!parent) { break; }\n\t\t\tif (parent instanceof ArrayStore) {\n\t\t\t\tparent = parent.parent;\n\t\t\t}\n\t\t\tif (!parent) { break; }\n\t\t\tcurrentState = parent;\n\t\t}\n\t\twhile (placeholder[k] === '?') { k++; }\n\t\tconst name = placeholder.slice(k);\n\t\tconst field = currentState.child(name);\n\t\tif (!field) { return null; }\n\t\treturn field.value;\n\t}\n\tconst options = loadOptions(componentOptions, getPlaceholder);\n\n\t// TODO: 过滤\n\tconst currentOptions = options;\n\tconst input = /** @type {Select} */(document.createElement('yongdall-select'));\n\tlet value = createState(/** @type {string?} */(null));\n\t/** @type {((data: Record<string, any>) => void)[]} */\n\tlet bindFns = [...getBindFns(store, componentOptions.bind)];\n\n\tinput.addEventListener('change', () => {\n\t\tconst val = input.value || null;\n\t\tvalue.set(val);\n\t\tctx.value = val;\n\t\tif (!bindFns.length) { return; }\n\t\tconst data = input.current?.data;\n\t\tif (!data || typeof data !== 'object') { return; }\n\t\tfor (const fn of bindFns) {\n\t\t\tfn(data);\n\t\t}\n\n\t});\n\tinput.addEventListener('change', (e) => ctx.emit('change', e));\n\tinput.addEventListener('focus', (e) => ctx.emit('focus', e));\n\tinput.addEventListener('blur', (e) => ctx.emit('blur', e));\n\tctx.listen('focus', () => input.focus());\n\tctx.listen('scrollIntoView', () => input.scrollIntoView());\n\teffect(() => input.hidden = Boolean(ctx.hidden), ctx.signal);\n\teffect(() => input.disabled = Boolean(ctx.readonly || ctx.disabled), ctx.signal);\n\teffect(() => input.placeholder = ctx.placeholder, ctx.signal);\n\tif (store) {\n\t\teffect(() => input.placeholder = store.placeholder || '', ctx.signal);\n\t}\n\n\n\t/** @type {NodeJS.Timeout?} */\n\tlet timeout = null;\n\tinput.addEventListener('input', function toQuery() {\n\t\tif (timeout) { clearTimeout(timeout); }\n\t\ttimeout = setTimeout(() => {\n\t\t\t// TODO: 基于搜索项目过滤\n\t\t}, 300);\n\n\t});\n\n\n\n\teffect(() => {\n\t\t/** @type {{ value: any; label: any; data?: { [k: string]: string | number; };}[]} */\n\t\tconst list = [...currentOptions.get()];\n\t\tif (ctx.clearable) {\n\t\t\tlist.unshift({ value: '', label: '' });\n\t\t}\n\t\tconst val = value.get();\n\t\tconst item = list.find(v => v.value == val);\n\t\tinput.value = item?.value || '';\n\t\tinput.options = list;\n\t}, ctx.signal);\n\n\n\n\t/**\n\t * \n\t * @param {*} v \n\t * @returns \n\t */\n\tfunction update(v) {\n\t\t// TODO:\n\t\tconst vv = v == '' || v == null ? null : v;\n\t\tif (vv === value.get()) { return; }\n\t\tvalue.set(vv);\n\t\tinput.value = vv || '';\n\t}\n\teffect(() => update(ctx.value), ctx.signal);\n\n\treturn input;\n};\n\nexport default Component;\n","/** @import { FieldComponent } from '@yongdall/web' */\nimport { createComputed, createState, effect, permissionsService } from '@yongdall/web';\n\n\n\n/** @type {FieldComponent} */\nconst permissionsComponent = ctx => {\n\tconst root = document.createElement('div');\n\tconst checkAllDiv = root.appendChild(document.createElement('div'));\n\tconst checkAllLabel = checkAllDiv.appendChild(document.createElement('label'));\n\tconst checkAll = checkAllLabel.appendChild(document.createElement('input'));\n\tcheckAllLabel.appendChild(document.createTextNode('全选'));\n\tcheckAllLabel.classList.add('align-center');\n\tcheckAll.type = 'checkbox';\n\tconst optionDiv = root.appendChild(document.createElement('div'));\n\tlet value = new Set();\n\tlet allValuesState = createComputed(() =>\n\t\tnew Set(permissionsService.get().flatMap(v => v.children?.map(v => v.value) || []))\n\t);\n\tfunction updateAll() {\n\t\tif (allValuesState.get().size === value.size) {\n\t\t\tcheckAll.indeterminate = false;\n\t\t\tcheckAll.checked = true;\n\t\t} else if (value.size) {\n\t\t\tcheckAll.indeterminate = true;\n\t\t} else {\n\t\t\tcheckAll.indeterminate = false;\n\t\t\tcheckAll.checked = false;\n\t\t}\n\n\t}\n\tfunction updateSelect() {\n\t\tvalue = new Set();\n\t\tfor (const { checked, value: val } of optionDiv.querySelectorAll('input')) {\n\t\t\tif (!checked || !val) { continue; }\n\t\t\tvalue.add(val);\n\t\t}\n\t\tctx.value = [...value].map(v => ({ permission: v }));\n\t\tupdateAll();\n\t}\n\n\tfunction updateValue() {\n\t\tfor (const input of optionDiv.querySelectorAll('input')) {\n\t\t\tinput.checked = value.has(input.value);\n\t\t}\n\t}\n\tfunction updateAllValue() {\n\t\tupdateValue();\n\t\tupdateAll();\n\t}\n\n\tconst inputs = createState(/** @type {HTMLInputElement[]} */([]));\n\n\tfunction updateOptions() {\n\t\toptionDiv.innerHTML = '';\n\t\tconst list = [];\n\t\tfor (const { label, children } of permissionsService.get()) {\n\t\t\tif (!children?.length) { continue; }\n\t\t\tconst groups = optionDiv.appendChild(document.createElement('details'));\n\t\t\tgroups.open = true;\n\t\t\tgroups.appendChild(document.createElement('summary')).appendChild(document.createTextNode(label));\n\t\t\tfor (const { value, label } of children) {\n\t\t\t\tconst checkLabel = groups.appendChild(document.createElement('label'));\n\t\t\t\tconst input = checkLabel.appendChild(document.createElement('input'));\n\t\t\t\tinput.type = 'checkbox';\n\t\t\t\tcheckLabel.appendChild(document.createTextNode(label));\n\t\t\t\tcheckLabel.classList.add('align-center');\n\t\t\t\tcheckLabel.classList.add('inline');\n\t\t\t\tinput.value = String(value || '');\n\t\t\t\tinput.addEventListener('input', updateSelect);\n\t\t\t\tlist.push(input);\n\t\t\t}\n\t\t}\n\t\tinputs.set(list);\n\t\tupdateAllValue();\n\t}\n\teffect(() => updateOptions(), ctx.signal);\n\n\n\n\tcheckAll.addEventListener('input', () => {\n\t\tif (!checkAll.checked) {\n\t\t\tfor (const input of optionDiv.querySelectorAll('input')) {\n\t\t\t\tinput.checked = false;\n\t\t\t}\n\t\t\tctx.value = [];\n\t\t\treturn;\n\t\t}\n\t\tconst value = new Set();\n\t\tfor (const input of optionDiv.querySelectorAll('input')) {\n\t\t\tinput.checked = true;\n\t\t\tvalue.add(input.value);\n\t\t}\n\t\tctx.value = [...value].map(v => ({ permission: v }));\n\t\tupdateValue();\n\t});\n\tcheckAll.addEventListener('change', (e) => ctx.emit('change', e));\n\tcheckAll.addEventListener('focus', (e) => ctx.emit('focus', e));\n\tcheckAll.addEventListener('blur', (e) => ctx.emit('blur', e));\n\n\n\n\n\tconst editable = createComputed(() => Boolean(!ctx.editable || ctx.disabled));\n\tctx.listen('focus', () => checkAll.focus());\n\tctx.listen('scrollIntoView', () => checkAll.scrollIntoView());\n\teffect(() => checkAll.hidden = Boolean(ctx.hidden), ctx.signal);\n\teffect(() => {\n\t\tconst disabled = editable.get();\n\t\tcheckAllLabel.hidden = disabled;\n\t\tfor (const input of inputs.get()) {\n\t\t\tinput.disabled = disabled;\n\n\t\t}\n\t}, ctx.signal);\n\teffect(() => checkAll.readOnly = Boolean(ctx.readonly), ctx.signal);\n\n\n\n\n\n\n\n\t/**\n\t * \n\t * @param {any[]} v \n\t * @returns \n\t */\n\tfunction update(v) {\n\t\tconst list = new Set(Array.isArray(v) && v.map(v => v.permission) || []);\n\t\tif (list.size === value.size) {\n\t\t\tlet updated = false;\n\t\t\tfor (const v of value) {\n\t\t\t\tif (!list.has(v)) {\n\t\t\t\t\tupdated = true;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (!updated) { return; }\n\t\t\treturn;\n\t\t}\n\t\tvalue = list;\n\t\tupdateAllValue();\n\t}\n\teffect(() => update(ctx.value), ctx.signal);\n\treturn root;\n};\n\nexport default permissionsComponent;\n","/** @import { FieldFilterContext } from '@yongdall/web' */\nimport { effect } from '@yongdall/web'\n\n/**\n * @template T\n * @param {(root: Element, placeholder: string, cb: (v: T?) => void) => (v: string) => void} create\n * @param {FieldFilterContext} ctx\n * @returns {HTMLElement}\n */\nexport default function createInputCell(create, ctx) {\n\tconst { inline, showLabel, quick } = ctx.style;\n\tconst root = document.createElement(inline ? 'span' : 'div');\n\tconst labelText = ctx.field?.label ?? '';\n\tif (showLabel) {\n\t\tconst label = root.appendChild(document.createElement(inline ? 'span' : 'div'));\n\t\tlabel.innerText = labelText;\n\t}\n\tconst inputRoot = inline ? root : root.appendChild(document.createElement('div'))\n\n\tconst set = create(inputRoot, quick ? labelText : '', value => { ctx.value = value; });\n\teffect(() => set(ctx.value), ctx.signal);\n\treturn root;\n}\n","/** @import { FieldFilterComponent } from '@yongdall/web' */\n\nimport createInputCell from './createInputCell.mjs';\n\n/**\n * \n * @param {Element} root \n * @param {string} placeholder \n * @param {(v: string?) => void} cb \n * @returns {(v: string) => void}\n */\nfunction createInput(root, placeholder, cb) {\n\tconst input = root.appendChild(document.createElement('textarea'));\n\tif (placeholder) { input.placeholder = placeholder; }\n\tinput.addEventListener('input', () => cb(input.value || null));\n\treturn v => { input.value = v ?? ''; };\n\n}\n/** @type {FieldFilterComponent} */\nconst Component = createInputCell.bind(null, createInput);;\n\nexport default Component;\n","/** @import { FieldFilterComponent } from '@yongdall/web' */\n\nimport createInputCell from './createInputCell.mjs';\n\n/**\n * \n * @param {string} v \n * @param {boolean} [required] \n* @returns {number?}\n */\nfunction getValue(v, required) {\n\tconst value = parseFloat(v);\n\tif (Number.isFinite(value)) {\n\t\treturn value;\n\t} else {\n\t\treturn required ? 0 : null;\n\t}\n\n}\n/**\n * \n * @param {Element} root \n * @param {string} placeholder \n * @param {(v: number?) => void} cb \n * @returns {(v: string) => void}\n */\nfunction createInput(root, placeholder, cb) {\n\tconst input = root.appendChild(document.createElement('input'));\n\tinput.type = 'number';\n\tif (placeholder) { input.placeholder = placeholder; }\n\tinput.addEventListener('input', () => cb(getValue(input.value)));\n\treturn v => { input.value = v ?? ''; };\n}\n\n/** @type {FieldFilterComponent} */\nconst Component = createInputCell.bind(null, createInput);\n\nexport default Component;\n","/** @import { FieldFilterComponent } from '@yongdall/web' */\n\nimport createInputCell from './createInputCell.mjs';\n\n/**\n * \n * @param {string} v \n * @param {boolean} [required] \n* @returns {number?}\n */\nfunction getValue(v, required) {\n\tconst value = parseInt(v);\n\tif (Number.isFinite(value)) {\n\t\treturn value\n\t} else {\n\t\treturn required ? 0 : null;\n\t}\n\n}\n/**\n * \n * @param {Element} root \n * @param {string} placeholder \n * @param {(v: number?) => void} cb \n * @returns {(v: string) => void}\n */\nfunction createInput(root, placeholder, cb) {\n\tconst input = root.appendChild(document.createElement('input'));\n\tinput.type = 'number';\n\tif (placeholder) { input.placeholder = placeholder; }\n\tinput.addEventListener('input', () => cb(getValue(input.value)));\n\treturn v => { input.value = v ?? ''; };\n\n}\n/** @type {FieldFilterComponent} */\nconst Component = createInputCell.bind(null, createInput);\n\nexport default Component\n","/** @import { FieldFilterComponent } from '@yongdall/web' */\n\nimport createInputCell from './createInputCell.mjs';\n\n/**\n* \n* @param {string} v \n* @param {boolean} [required] \n* @returns {bigint?}\n*/\nfunction getValue(v, required) {\n\tif (!v) {\n\t\treturn required ? 0n : null\n\t}\n\ttry {\n\t\treturn BigInt(v);\n\t} catch {\n\t}\n\treturn required ? 0n : null\n\n}\n/**\n * \n * @param {Element} root \n * @param {string} placeholder \n * @param {(v: bigint?) => void} cb \n * @returns {(v: string) => void}\n */\nfunction createInput(root, placeholder, cb) {\n\tconst input = root.appendChild(document.createElement('input'));\n\tinput.type = 'number';\n\tif (placeholder) { input.placeholder = placeholder; }\n\tinput.addEventListener('input', () => cb(getValue(input.value)));\n\treturn v => { input.value = v ?? ''; };\n\n}\n/** @type {FieldFilterComponent} */\nconst Component = createInputCell.bind(null, createInput);\n\nexport default Component\n","/** @import { FieldFilterComponent } from '@yongdall/web' */\n\nimport createInputCell from './createInputCell.mjs';\n\n/**\n * \n * @param {Element} root \n * @param {string} placeholder \n * @param {(v: string?) => void} cb \n * @returns {(v: string) => void}\n */\nfunction createInput(root, placeholder, cb) {\n\tconst input = root.appendChild(document.createElement('input'));\n\tif (placeholder) { input.placeholder = placeholder; }\n\tinput.addEventListener('input', () => cb(input.value || null));\n\treturn v => { input.value = v ?? ''; };\n\n}\n\n/** @type {FieldFilterComponent} */\nconst Component = createInputCell.bind(null, createInput);\n\nexport default Component\n","/** @import { FieldFilterComponent } from '@yongdall/web' */\nimport { effect } from '@yongdall/web'\n\n/** @type {FieldFilterComponent} */\nconst Component = ctx => {\n\tconst { inline, showLabel, quick } = ctx.style;\n\tconst root = document.createElement(inline ? 'span' : 'div');\n\tconst label = root.appendChild(document.createElement('label'));\n\tconst input = label.appendChild(document.createElement('input'));\n\tinput.type = 'checkbox';\n\tinput.addEventListener('input', () => {\n\t\tconst value = input.indeterminate ? Boolean(input.checked) : null;\n\t\tctx.value = value;\n\t});\n\teffect(() => {\n\t\tconst value = ctx.value;\n\t\tif (typeof value === 'boolean') {\n\t\t\tinput.checked = value;\n\t\t\treturn;\n\t\t}\n\t\tinput.indeterminate = true;\n\t\tif (value !== null) {\n\t\t\tctx.value = null;\n\t\t}\n\t}, ctx.signal);\n\tif (showLabel) {\n\t\tlabel.insertBefore(document.createTextNode(ctx.field?.label ?? ''), label.firstChild);\n\t} else if (quick) {\n\t\tlabel.appendChild(document.createTextNode(ctx.field?.label ?? ''));\n\t}\n\treturn root;\n};\n\nexport default Component;\n","/** @import { FieldFilterComponent } from '@yongdall/web' */\n\nimport createInputCell from './createInputCell.mjs';\n\n/**\n * \n * @param {Element} root \n * @param {string} placeholder \n * @param {(v: string?) => void} cb \n * @returns {(v: string) => void}\n */\nfunction createInput(root, placeholder, cb) {\n\tconst input = root.appendChild(document.createElement('input'));\n\tinput.type = 'date';\n\tinput.step = '1'\n\tif (placeholder) { input.placeholder = placeholder; }\n\tinput.addEventListener('input', () => cb(input.value || null));\n\treturn v => { input.value = v ?? ''; };\n\n}\n\n/** @type {FieldFilterComponent} */\nconst Component = createInputCell.bind(null, createInput);\n\nexport default Component\n","/** @import { FieldFilterComponent } from '@yongdall/web' */\n\nimport createInputCell from './createInputCell.mjs';\n\n/**\n * \n * @param {Element} root \n * @param {string} placeholder \n * @param {(v: string?) => void} cb \n * @returns {(v: string) => void}\n */\nfunction createInput(root, placeholder, cb) {\n\tconst input = root.appendChild(document.createElement('input'));\n\tinput.type = 'time';\n\tif (placeholder) { input.placeholder = placeholder; }\n\tinput.addEventListener('input', () => cb(input.value || null));\n\treturn v => { input.value = v ?? ''; };\n\n}\n\n/** @type {FieldFilterComponent} */\nconst Component = createInputCell.bind(null, createInput);\n\nexport default Component\n","/** @import { FieldFilterComponent } from '@yongdall/web' */\n\nimport createInputCell from './createInputCell.mjs';\n\n/**\n * \n * @param {Element} root \n * @param {string} placeholder \n * @param {(v: string?) => void} cb \n * @returns {(v: string) => void}\n */\nfunction createInput(root, placeholder, cb) {\n\tconst input = root.appendChild(document.createElement('input'));\n\tinput.type = 'datetime-local';\n\tinput.step = '1'\n\tif (placeholder) { input.placeholder = placeholder; }\n\tinput.addEventListener('input', () => cb(input.value || null));\n\treturn v => { input.value = v ?? ''; };\n\n}\n\n/** @type {FieldFilterComponent} */\nconst Component = createInputCell.bind(null, createInput);\n\nexport default Component\n","/** @import { FieldFilterComponent } from '@yongdall/web' */\n\nimport createInputCell from './createInputCell.mjs';\n\n/**\n * \n * @param {Element} root \n * @param {string} placeholder \n * @param {(v: string?) => void} cb \n * @returns {(v: string) => void}\n */\nfunction createInput(root, placeholder, cb) {\n\tconst input = root.appendChild(document.createElement('input'));\n\tinput.type = 'url';\n\tif (placeholder) { input.placeholder = placeholder; }\n\tinput.addEventListener('input', () => cb(input.value || null));\n\treturn v => { input.value = v ?? ''; };\n\n}\n\n/** @type {FieldFilterComponent} */\nconst Component = createInputCell.bind(null, createInput);\n\nexport default Component\n","/** @import { FieldFilterComponent } from '@yongdall/web' */\n\nimport createInputCell from './createInputCell.mjs';\n\n/**\n * \n * @param {Element} root \n * @param {string} placeholder \n * @param {(v: string?) => void} cb \n * @returns {(v: string) => void}\n */\nfunction createInput(root, placeholder, cb) {\n\tconst input = root.appendChild(document.createElement('input'));\n\tif (placeholder) { input.placeholder = placeholder; }\n\tinput.addEventListener('input', () => cb(input.value || null));\n\treturn v => { input.value = v ?? ''; };\n\n}\n\n/** @type {FieldFilterComponent} */\nconst Component = createInputCell.bind(null, createInput);\n\nexport default Component\n","/** @import { FieldFilterComponent } from '@yongdall/web' */\nimport { effect, modelService, runPattern, Search, toId } from '@yongdall/web';\nimport '../inputs/YongdallSelect.mjs';\n/** @import Select from '../inputs/YongdallSelect.mjs' */\n\n/**\n * \n * @param {string?} filter\n * @returns {{where?: any, orWhere?: any}}\n */\nfunction loadOptions(filter) {\n\tif (!filter || typeof filter !== 'string') { return {}; }\n\tconst { where, orWhere } = Search.parse(filter);\n\treturn { where, orWhere }\n}\n\n/** @type {FieldFilterComponent} */\nconst Component = (ctx, componentOptions) => {\n\tconst { inline, showLabel, quick } = ctx.style;\n\tconst root = document.createElement(inline ? 'span' : 'div');\n\tconst label = root.appendChild(document.createElement('label'));\n\tconst input = /** @type {Select} */(label.appendChild(document.createElement('yongdall-select')));\n\n\tconst model = modelService(ctx.field?.model || '');\n\n\n\t/** @type {string?} */\n\tlet value = null;\n\tinput.addEventListener('change', () => {\n\t\tvalue = input.value || null;\n\t\tctx.value = value;\n\t});\n\n\tmodel.then(async (modelConfiguration) => {\n\t\tlet currentQuery = '';\n\t\t/** @type {{[k: string]: number | string}[]} */\n\t\tlet queriedOptions = [];\n\t\t/** @type {NodeJS.Timeout?} */\n\t\tlet timeout = null;\n\n\t\tconst search = loadOptions(componentOptions?.filter);\n\t\tlet loaded = false;\n\t\tfunction toQuery() {\n\t\t\tloaded = true;\n\t\t\tif (timeout) { clearTimeout(timeout); }\n\t\t\tconst query = input.text;\n\t\t\tcurrentQuery = query;\n\t\t\ttimeout = setTimeout(async () => {\n\t\t\t\tif (currentQuery !== query) { return; }\n\t\t\t\tconst options = await model.options({ ...search, query, limit: 100 });\n\t\t\t\tif (currentQuery !== query) { return; }\n\t\t\t\tqueriedOptions = options;\n\t\t\t\tupdateOptions();\n\t\t\t}, 300);\n\n\t\t}\n\t\tinput.addEventListener('input', toQuery);\n\t\tinput.addEventListener('focus', () => {\n\t\t\tif (loaded) { return; }\n\t\t\ttoQuery();\n\t\t});\n\n\t\tconst labelPattern = modelConfiguration.labelPattern || '';\n\n\t\t/** @type {(document: Record<string, any>) => any} */\n\t\tconst toCurrentId = document => toId(modelConfiguration, document);\n\t\t/** @type {{ [k: string]: number | string}?} */\n\t\tlet currentItem = null;\n\t\tasync function updateCurrentItem() {\n\t\t\tconst id = value;\n\t\t\tif (!id) {\n\t\t\t\tcurrentItem = null;\n\t\t\t\tupdateOptions();\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst item = queriedOptions.find(v => toCurrentId(v) === id);\n\t\t\tif (item) {\n\t\t\t\tcurrentItem = item;\n\t\t\t\tupdateOptions();\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst { option } = await model.option(id);\n\t\t\tif (!option || id !== value) { return; }\n\t\t\tif (id !== value) { return; }\n\t\t\tcurrentItem = option;\n\t\t\tupdateOptions();\n\n\t\t}\n\n\n\n\n\n\t\tfunction updateOptions() {\n\t\t\tconst allDocuments = [...queriedOptions];\n\t\t\tconst val = value;\n\t\t\tif (val) {\n\t\t\t\tconst current = currentItem;\n\t\t\t\tif (current && toCurrentId(current) == val && !allDocuments.find(v => toCurrentId(v) == val)) {\n\t\t\t\t\tallDocuments.push(current);\n\t\t\t\t}\n\t\t\t}\n\t\t\t/** @type {{ value: any; label: any; data?: { [k: string]: string | number; };}[]} */\n\t\t\tconst list = allDocuments.map(v => {\n\t\t\t\tconst value = toCurrentId(v);\n\t\t\t\treturn ({ value, label: runPattern(labelPattern, v) || value, data: v });\n\t\t\t});\n\t\t\tlist.unshift({ value: '', label: '' });\n\t\t\tconst item = list.find(v => v.value == value);\n\t\t\tinput.value = item?.label || item?.value || '';\n\t\t\tinput.options = list;\n\t\t}\n\n\n\t\teffect(() => {\n\t\t\tconst v = ctx.value;\n\t\t\t// TODO:\n\t\t\tconst vv = v == '' || v == null ? null : v;\n\t\t\tif (vv === value) { return; }\n\t\t\tvalue = vv;\n\t\t\tinput.value = value || '';\n\t\t\tupdateCurrentItem();\n\t\t}, ctx.signal);\n\t});\n\tif (showLabel) {\n\t\tlabel.insertBefore(document.createTextNode(ctx.field?.label ?? ''), label.firstChild);\n\t} else if (quick) {\n\t\tinput.placeholder = ctx.field?.label ?? '';\n\t}\n\n\treturn input;\n};\n\nexport default Component;\n","/** @import { FieldFilterComponent } from '@yongdall/web' */\nimport { createComputed, effect, loadOptions } from '@yongdall/web';\nimport '../inputs/YongdallSelect.mjs';\n/** @import Select from '../inputs/YongdallSelect.mjs' */\n\n\n/** @type {FieldFilterComponent} */\nconst Component = (ctx, componentOptions = {}) => {\n\tconst { inline, showLabel, quick } = ctx.style;\n\tconst root = document.createElement(inline ? 'span' : 'div');\n\tconst label = root.appendChild(document.createElement('label'));\n\tconst input = /** @type {Select} */(label.appendChild(document.createElement('yongdall-select')));\n\tconst options = loadOptions(componentOptions);\n\n\n\n\t/** @type {string?} */\n\tlet value = null;\n\tinput.addEventListener('change', () => {\n\t\tvalue = input.value || null;\n\t\tctx.value = value;\n\t});\n\n\t/** @type {NodeJS.Timeout?} */\n\tlet timeout = null;\n\n\tlet loaded = false;\n\tfunction toQuery() {\n\t\tloaded = true;\n\t\tif (timeout) { clearTimeout(timeout); }\n\t\ttimeout = setTimeout(() => {\n\t\t\t// TODO: 基于搜索项目过滤\n\t\t}, 300);\n\n\t}\n\tinput.addEventListener('input', toQuery);\n\n\n\t// TODO: 过滤\n\tconst currentOptions = createComputed(() => {\n\t\t/** @type {{ value: any; label: any; data?: { [k: string]: string | number; };}[]} */\n\t\tconst list = [{ value: '', label: '' }, ...options.get()];\n\t\tlist.unshift({ value: '', label: '' });\n\t\t\treturn list;\n\t});\n\n\n\n\t\n\teffect(() => { input.options = currentOptions.get() }, ctx.signal);\n\teffect(() => {\n\t\tconst v = ctx.value;\n\t\t// TODO:\n\t\tconst vv = v == '' || v == null ? null : v;\n\t\tif (vv === value) { return; }\n\t\tvalue = vv;\n\t\tinput.value = value || '';\n\t}, ctx.signal);\n\tif (showLabel) {\n\t\tlabel.insertBefore(document.createTextNode(ctx.field?.label ?? ''), label.firstChild);\n\t} else if (quick) {\n\t\tinput.placeholder = ctx.field?.label ?? '';\n\t}\n\n\treturn input;\n};\n\nexport default Component;\n","/** @import { Hooks } from '@yongdall/web' */\n\nimport textInput from './inputs/text.mjs';\nimport floatInput from './inputs/float.mjs';\nimport i32Input from './inputs/i32.mjs';\nimport i64Input from './inputs/i64.mjs';\nimport stringInput from './inputs/string.mjs';\nimport boolInput from './inputs/bool.mjs';\nimport dateInput from './inputs/date.mjs';\nimport timeInput from './inputs/time.mjs';\nimport datetimeInput from './inputs/datetime.mjs';\nimport passwordInput from './inputs/password.mjs';\nimport uriInput from './inputs/uri.mjs';\nimport uuidInput from './inputs/uuid.mjs';\nimport documentInput from './inputs/document.mjs';\nimport selectInput from './inputs/select.mjs';\nimport permissionsInput from './inputs/permissions.mjs';\n\n\nimport textFilter from './filters/text.mjs';\nimport floatFilter from './filters/float.mjs';\nimport i32Filter from './filters/i32.mjs';\nimport i64Filter from './filters/i64.mjs';\nimport stringFilter from './filters/string.mjs';\nimport boolFilter from './filters/bool.mjs';\nimport dateFilter from './filters/date.mjs';\nimport timeFilter from './filters/time.mjs';\nimport datetimeFilter from './filters/datetime.mjs';\nimport uriFilter from './filters/uri.mjs';\nimport uuidFilter from './filters/uuid.mjs';\nimport documentFilter from './filters/document.mjs';\nimport selectFilter from './filters/select.mjs';\n\n\n/** @type {Hooks.Define['formFields']} */\nexport const formFields = [\n\t{ type: 'text', input: textInput, filter: textFilter, notFilter: textFilter, filters: {'=': textFilter, '!=': textFilter} },\n\t{ type: 'string', input: stringInput, filter: stringFilter, notFilter: stringFilter, filters: {'=': stringFilter, '!=': stringFilter} },\n\t{ type: 'bool', input: boolInput, filter: boolFilter, notFilter: boolFilter, filters: {'=': boolFilter, '!=': boolFilter} },\n\t{ type: 'f32', input: floatInput, filter: floatFilter, notFilter: floatFilter, filters: {'=': floatFilter, '!=': floatFilter, '>': floatFilter, '>=': floatFilter, '<': floatFilter, '<=': floatFilter} },\n\t{ type: 'f64', input: floatInput, filter: floatFilter, notFilter: floatFilter, filters: {'=': floatFilter, '!=': floatFilter, '>': floatFilter, '>=': floatFilter, '<': floatFilter, '<=': floatFilter} },\n\t{ type: 'i16', input: i32Input, filter: i32Filter, notFilter: i32Filter, filters: {'=': i32Filter, '!=': i32Filter, '>': i32Filter, '>=': i32Filter, '<': i32Filter, '<=': i32Filter} },\n\t{ type: 'i32', input: i32Input, filter: i32Filter, notFilter: i32Filter, filters: {'=': i32Filter, '!=': i32Filter, '>': i32Filter, '>=': i32Filter, '<': i32Filter, '<=': i32Filter} },\n\t{ type: 'i64', input: i64Input, filter: i64Filter, notFilter: i64Filter, filters: {'=': i64Filter, '!=': i64Filter, '>': i64Filter, '>=': i64Filter, '<': i64Filter, '<=': i64Filter} },\n\t{ type: 'date', input: dateInput, filter: dateFilter, notFilter: dateFilter, filters: {'=': dateFilter, '!=': dateFilter, '>': dateFilter, '>=': dateFilter, '<': dateFilter, '<=': dateFilter} },\n\t{ type: 'time', input: timeInput, filter: timeFilter, notFilter: timeFilter, filters: {'=': timeFilter, '!=': timeFilter, '>': timeFilter, '>=': timeFilter, '<': timeFilter, '<=': timeFilter} },\n\t{ type: 'uuid', input: uuidInput, filter: uuidFilter, notFilter: uuidFilter, filters: {'=': uuidFilter, '!=': uuidFilter } },\n\t{ type: 'datetime', input: datetimeInput, filter: datetimeFilter, notFilter: datetimeFilter, filters: {'=': datetimeFilter, '!=': datetimeFilter, '>': datetimeFilter, '>=': datetimeFilter, '<': datetimeFilter, '<=': datetimeFilter} },\n\t{ type: 'timetz', input: timeInput, filter: timeFilter, notFilter: timeFilter, filters: {'=': timeFilter, '!=': timeFilter, '>': timeFilter, '>=': timeFilter, '<': timeFilter, '<=': timeFilter} },\n\t{ type: 'timestamp', input: datetimeInput, filter: datetimeFilter, notFilter: datetimeFilter, filters: {'=': datetimeFilter, '!=': datetimeFilter, '>': datetimeFilter, '>=': datetimeFilter, '<': datetimeFilter, '<=': datetimeFilter} },\n\t{ type: 'password', input: passwordInput, filter: stringFilter, notFilter: stringFilter, filters: {'=': stringFilter, '!=': stringFilter } },\n\t{ type: 'uri', input: uriInput, filter: uriFilter, notFilter: uriFilter, filters: {'=': uriFilter, '!=': uriFilter } },\n\t{ type: 'document', input: documentInput, filter: documentFilter, notFilter: documentFilter, filters: { '=': documentFilter, '!=': documentFilter } },\n\t{ type: 'select', input: selectInput, filter: selectFilter, notFilter: selectFilter, filters: { '=': selectFilter, '!=': selectFilter } },\n\t{ type: 'submodel', array: true, renderer: 'permission', input: permissionsInput},\n]\nexport const styles = ['style.css'];\n"],"mappings":"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"}
@@ -1,11 +1,18 @@
1
1
  //#region packages/theme/hooks.yongdall.mjs
2
- const enumerations = { theme: [{
3
- theme: "@yongdall/theme#allSider",
4
- label: "全侧主题"
5
- }, {
6
- theme: "@yongdall/theme#tradition",
7
- label: "传统主题"
8
- }] };
2
+ const enumerations = { theme: [
3
+ {
4
+ theme: "@yongdall/theme#allSider",
5
+ label: "全侧主题"
6
+ },
7
+ {
8
+ theme: "@yongdall/theme#base",
9
+ label: "基础主题"
10
+ },
11
+ {
12
+ theme: "@yongdall/theme#tabs",
13
+ label: "多页主题"
14
+ }
15
+ ] };
9
16
 
10
17
  //#endregion
11
18
  export { enumerations };