@sken-ds/primitives 0.4.6 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (52) hide show
  1. package/dist/catalog-y40FMic1-DY2BFupW.js +153 -0
  2. package/dist/catalog-y40FMic1-DY2BFupW.js.map +1 -0
  3. package/dist/{decorate-D4FKzyDw.js → decorate-C1e2sg49.js} +1 -1
  4. package/dist/index.js +16 -12
  5. package/dist/ix-bridge.css +53 -191
  6. package/dist/primitives.css +2 -0
  7. package/dist/rolldown-runtime-BRfZIaNm.js +17 -0
  8. package/dist/sken-button.js +3 -3
  9. package/dist/sken-button.js.map +1 -1
  10. package/dist/sken-checkbox.js +14 -4
  11. package/dist/sken-checkbox.js.map +1 -1
  12. package/dist/sken-combobox-group.js +1 -1
  13. package/dist/sken-combobox-group.js.map +1 -1
  14. package/dist/sken-combobox-item.js +1 -1
  15. package/dist/sken-combobox-item.js.map +1 -1
  16. package/dist/sken-combobox.js +120 -99
  17. package/dist/sken-combobox.js.map +1 -1
  18. package/dist/{sken-datatable-CEXcvhM-.js → sken-datatable-DSXSyrNf.js} +219 -251
  19. package/dist/sken-datatable-DSXSyrNf.js.map +1 -0
  20. package/dist/sken-datatable.js +1 -1
  21. package/dist/sken-date-picker.js +1 -1
  22. package/dist/sken-date-picker.js.map +1 -1
  23. package/dist/sken-dialog.js +251 -2
  24. package/dist/sken-dialog.js.map +1 -0
  25. package/dist/sken-filter-chip.js +1 -1
  26. package/dist/sken-filter-chip.js.map +1 -1
  27. package/dist/sken-input.js +69 -44
  28. package/dist/sken-input.js.map +1 -1
  29. package/dist/sken-layout-region.js +1 -1
  30. package/dist/sken-layout-region.js.map +1 -1
  31. package/dist/sken-layout.js +35 -32
  32. package/dist/sken-layout.js.map +1 -1
  33. package/dist/sken-nav-group.js +306 -0
  34. package/dist/sken-nav-group.js.map +1 -0
  35. package/dist/sken-nav-item.js +224 -0
  36. package/dist/sken-nav-item.js.map +1 -0
  37. package/dist/sken-nav.js +233 -0
  38. package/dist/sken-nav.js.map +1 -0
  39. package/dist/sken-number-input.js +15 -7
  40. package/dist/sken-number-input.js.map +1 -1
  41. package/dist/sken-switch.js +27 -7
  42. package/dist/sken-switch.js.map +1 -1
  43. package/dist/sken-textarea.js +108 -52
  44. package/dist/sken-textarea.js.map +1 -1
  45. package/dist/sken-tooltip.js +70 -0
  46. package/dist/sken-tooltip.js.map +1 -0
  47. package/package.json +35 -16
  48. package/dist/directive-BcLtPdVO.js +0 -263
  49. package/dist/directive-BcLtPdVO.js.map +0 -1
  50. package/dist/sken-datatable-CEXcvhM-.js.map +0 -1
  51. package/dist/sken-dialog-BvRZxwSk.js +0 -258
  52. package/dist/sken-dialog-BvRZxwSk.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sken-datatable-DSXSyrNf.js","names":["AsyncDirective","directive","s","s","t","t","createContext","ContextConsumer","ContextProvider"],"sources":["../../../node_modules/.bun/@tanstack+lit-table@9.2.4+c942255c76ff9cce/node_modules/@tanstack/lit-table/dist/flexRender.js","../../../node_modules/.bun/@tanstack+lit-store@0.14.1+4cd43f0816a0c334/node_modules/@tanstack/lit-store/dist/tan-stack-store-selector.js","../../../node_modules/.bun/@tanstack+store@0.11.1/node_modules/@tanstack/store/dist/alien.js","../../../node_modules/.bun/@tanstack+store@0.11.1/node_modules/@tanstack/store/dist/atom.js","../../../node_modules/.bun/@tanstack+store@0.11.1/node_modules/@tanstack/store/dist/shallow.js","../../../node_modules/.bun/lit@3.3.3/node_modules/lit/async-directive.js","../../../node_modules/.bun/@tanstack+lit-table@9.2.4+c942255c76ff9cce/node_modules/@tanstack/lit-table/dist/subscribe-directive.js","../../../node_modules/.bun/@tanstack+table-core@9.2.4/node_modules/@tanstack/table-core/dist/core/reactivity/renderPhaseReactivity.js","../../../node_modules/.bun/@tanstack+lit-table@9.2.4+c942255c76ff9cce/node_modules/@tanstack/lit-table/dist/reactivity.js","../../../node_modules/.bun/@tanstack+lit-table@9.2.4+c942255c76ff9cce/node_modules/@tanstack/lit-table/dist/TableController.js","../../../node_modules/.bun/@lit+context@1.1.6/node_modules/@lit/context/lib/context-request-event.js","../../../node_modules/.bun/@lit+context@1.1.6/node_modules/@lit/context/lib/create-context.js","../../../node_modules/.bun/@lit+context@1.1.6/node_modules/@lit/context/lib/controllers/context-consumer.js","../../../node_modules/.bun/@lit+context@1.1.6/node_modules/@lit/context/lib/value-notifier.js","../../../node_modules/.bun/@lit+context@1.1.6/node_modules/@lit/context/lib/controllers/context-provider.js","../../../node_modules/.bun/@tanstack+lit-table@9.2.4+c942255c76ff9cce/node_modules/@tanstack/lit-table/dist/createTableHook.js","../../../node_modules/.bun/@tanstack+lit-table@9.2.4+c942255c76ff9cce/node_modules/@tanstack/lit-table/dist/index.js","../../../node_modules/.bun/@tanstack+match-sorter-utils@9.1.2/node_modules/@tanstack/match-sorter-utils/dist/remove-accents.js","../../../node_modules/.bun/@tanstack+match-sorter-utils@9.1.2/node_modules/@tanstack/match-sorter-utils/dist/index.js","../src/components/sken-datatable.ts"],"sourcesContent":["//#region src/flexRender.ts\n/**\n* Renders a Lit table template value with the provided context props.\n*\n* Use this lower-level helper for custom header, cell, or footer renderers when\n* you already have the render function and context. `FlexRender` is the\n* convenience wrapper for table cell/header/footer objects.\n*\n* @example\n* ```ts\n* flexRender(cell.column.columnDef.cell, cell.getContext())\n* ```\n*/\nfunction flexRender(Comp, props) {\n\tif (Comp === null || Comp === void 0) return null;\n\tif (typeof Comp === \"function\") return Comp(props);\n\treturn Comp;\n}\n/**\n* Simplified component wrapper of `flexRender`. Use this utility function to render headers, cells, or footers with custom markup.\n* Only one prop (`cell`, `header`, or `footer`) may be passed.\n* @example\n* ```ts\n* ${FlexRender({ cell })}\n* ${FlexRender({ header })}\n* ${FlexRender({ footer: header })}\n* ```\n*\n* This replaces calling `flexRender` directly like this:\n* ```ts\n* flexRender(cell.column.columnDef.cell, cell.getContext())\n* flexRender(header.column.columnDef.header, header.getContext())\n* flexRender(footer.column.columnDef.footer, footer.getContext())\n* ```\n*/\nfunction FlexRender(props) {\n\tif (\"cell\" in props && props.cell) {\n\t\tconst cell = props.cell;\n\t\tconst columnDef = cell.column.columnDef;\n\t\tconst groupingCell = cell;\n\t\tconst groupingColumnDef = columnDef;\n\t\tif (groupingCell.getIsAggregated?.()) return flexRender(groupingColumnDef.aggregatedCell ?? columnDef.cell, cell.getContext());\n\t\tif (groupingCell.getIsPlaceholder?.()) return null;\n\t\treturn flexRender(columnDef.cell, cell.getContext());\n\t}\n\tif (\"header\" in props && props.header) return flexRender(props.header.column.columnDef.header, props.header.getContext());\n\tif (\"footer\" in props && props.footer) return flexRender(props.footer.column.columnDef.footer, props.footer.getContext());\n\treturn null;\n}\n\n//#endregion\nexport { FlexRender, flexRender };","//#region src/tan-stack-store-selector.ts\nfunction defaultCompare(a, b) {\n\treturn a === b;\n}\nfunction defaultSelector(snapshot) {\n\treturn snapshot;\n}\n/**\n* Subscribes a Lit host to a TanStack Store and exposes a selected slice of its state.\n*\n* The host will only re-render when the selected value actually changes\n* (according to the configured `compare` function).\n*\n* @example\n* ```ts\n* class UserNameEl extends LitElement {\n* #name = new TanStackStoreSelector(\n* this,\n* () => userStore,\n* (snapshot) => snapshot.name,\n* )\n*\n* render() {\n* return html`<p>${this.#name.value}</p>`\n* }\n* }\n* ```\n*\n* @example\n* ```ts\n* class UserNameEl extends LitElement {\n* _ = new TanStackStoreAtom(\n* this,\n* () => userStore,\n* (snapshot) => snapshot.name,\n* )\n*\n* render() {\n* return html`<p>${userStore.state.name}</p>`\n* }\n* }\n* ```\n*\n*/\nvar TanStackStoreSelector = class {\n\t#host;\n\t#getStore;\n\t#selector;\n\t#compare;\n\t#unsubscribe;\n\t#subscribedStore;\n\t#hasSelected = false;\n\t#lastSelected;\n\tconstructor(host, getStore, selector = defaultSelector, options) {\n\t\tthis.#host = host;\n\t\tthis.#getStore = getStore;\n\t\tthis.#selector = selector;\n\t\tthis.#compare = options?.compare ?? defaultCompare;\n\t\thost.addController(this);\n\t}\n\tget value() {\n\t\treturn this.#lastSelected;\n\t}\n\thostUpdate() {\n\t\tconst store = this.#getStore();\n\t\tif (store === this.#subscribedStore) return;\n\t\tthis.#unsubscribe?.();\n\t\tthis.#subscribedStore = store;\n\t\tif (!store) {\n\t\t\tthis.#unsubscribe = void 0;\n\t\t\tthis.#hasSelected = false;\n\t\t\tthis.#lastSelected = void 0;\n\t\t\treturn;\n\t\t}\n\t\tthis.#lastSelected = this.#selector(store.get());\n\t\tthis.#hasSelected = true;\n\t\tthis.#unsubscribe = store.subscribe((value) => {\n\t\t\tconst next = this.#selector(value);\n\t\t\tif (this.#hasSelected && this.#compare(this.#lastSelected, next)) return;\n\t\t\tthis.#lastSelected = next;\n\t\t\tthis.#hasSelected = true;\n\t\t\tthis.#host.requestUpdate();\n\t\t}).unsubscribe;\n\t}\n\thostDisconnected() {\n\t\tthis.#unsubscribe?.();\n\t\tthis.#unsubscribe = void 0;\n\t\tthis.#subscribedStore = void 0;\n\t\tthis.#hasSelected = false;\n\t\tthis.#lastSelected = void 0;\n\t}\n};\n\n//#endregion\nexport { TanStackStoreSelector };\n//# sourceMappingURL=tan-stack-store-selector.js.map","//#region src/alien.ts\nconst NONE = 0;\nconst MUTABLE = 1;\nconst WATCHING = 2;\nconst RECURSED_CHECK = 4;\nconst RECURSED = 8;\nconst DIRTY = 16;\nconst PENDING = 32;\n/* @__NO_SIDE_EFFECTS__ */\nfunction createReactiveSystem({ update, notify, unwatched }) {\n\treturn {\n\t\tlink,\n\t\tunlink,\n\t\tpropagate,\n\t\tcheckDirty,\n\t\tshallowPropagate\n\t};\n\tfunction link(dep, sub, version) {\n\t\tconst prevDep = sub.depsTail;\n\t\tif (prevDep !== void 0 && prevDep.dep === dep) return;\n\t\tconst nextDep = prevDep !== void 0 ? prevDep.nextDep : sub.deps;\n\t\tif (nextDep !== void 0 && nextDep.dep === dep) {\n\t\t\tnextDep.version = version;\n\t\t\tsub.depsTail = nextDep;\n\t\t\treturn;\n\t\t}\n\t\tconst prevSub = dep.subsTail;\n\t\tif (prevSub !== void 0 && prevSub.version === version && prevSub.sub === sub) return;\n\t\tconst newLink = sub.depsTail = dep.subsTail = {\n\t\t\tversion,\n\t\t\tdep,\n\t\t\tsub,\n\t\t\tprevDep,\n\t\t\tnextDep,\n\t\t\tprevSub,\n\t\t\tnextSub: void 0\n\t\t};\n\t\tif (nextDep !== void 0) nextDep.prevDep = newLink;\n\t\tif (prevDep !== void 0) prevDep.nextDep = newLink;\n\t\telse sub.deps = newLink;\n\t\tif (prevSub !== void 0) prevSub.nextSub = newLink;\n\t\telse dep.subs = newLink;\n\t}\n\tfunction unlink(link, sub = link.sub) {\n\t\tconst dep = link.dep;\n\t\tconst prevDep = link.prevDep;\n\t\tconst nextDep = link.nextDep;\n\t\tconst nextSub = link.nextSub;\n\t\tconst prevSub = link.prevSub;\n\t\tif (nextDep !== void 0) nextDep.prevDep = prevDep;\n\t\telse sub.depsTail = prevDep;\n\t\tif (prevDep !== void 0) prevDep.nextDep = nextDep;\n\t\telse sub.deps = nextDep;\n\t\tif (nextSub !== void 0) nextSub.prevSub = prevSub;\n\t\telse dep.subsTail = prevSub;\n\t\tif (prevSub !== void 0) prevSub.nextSub = nextSub;\n\t\telse if ((dep.subs = nextSub) === void 0) unwatched(dep);\n\t\treturn nextDep;\n\t}\n\tfunction propagate(link) {\n\t\tlet next = link.nextSub;\n\t\tlet stack;\n\t\ttop: do {\n\t\t\tconst sub = link.sub;\n\t\t\tlet flags = sub.flags;\n\t\t\tif (!(flags & 60)) sub.flags = flags | 32;\n\t\t\telse if (!(flags & (4 | 8))) flags = 0;\n\t\t\telse if (!(flags & 4)) sub.flags = flags & ~8 | 32;\n\t\t\telse if (!(flags & (16 | 32)) && isValidLink(link, sub)) {\n\t\t\t\tsub.flags = flags | (8 | 32);\n\t\t\t\tflags &= 1;\n\t\t\t} else flags = 0;\n\t\t\tif (flags & 2) notify(sub);\n\t\t\tif (flags & 1) {\n\t\t\t\tconst subSubs = sub.subs;\n\t\t\t\tif (subSubs !== void 0) {\n\t\t\t\t\tconst nextSub = (link = subSubs).nextSub;\n\t\t\t\t\tif (nextSub !== void 0) {\n\t\t\t\t\t\tstack = {\n\t\t\t\t\t\t\tvalue: next,\n\t\t\t\t\t\t\tprev: stack\n\t\t\t\t\t\t};\n\t\t\t\t\t\tnext = nextSub;\n\t\t\t\t\t}\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ((link = next) !== void 0) {\n\t\t\t\tnext = link.nextSub;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\twhile (stack !== void 0) {\n\t\t\t\tlink = stack.value;\n\t\t\t\tstack = stack.prev;\n\t\t\t\tif (link !== void 0) {\n\t\t\t\t\tnext = link.nextSub;\n\t\t\t\t\tcontinue top;\n\t\t\t\t}\n\t\t\t}\n\t\t\tbreak;\n\t\t} while (true);\n\t}\n\tfunction checkDirty(link, sub) {\n\t\tlet stack;\n\t\tlet checkDepth = 0;\n\t\tlet dirty = false;\n\t\ttop: do {\n\t\t\tconst dep = link.dep;\n\t\t\tconst flags = dep.flags;\n\t\t\tif (sub.flags & 16) dirty = true;\n\t\t\telse if ((flags & (1 | 16)) === (1 | 16)) {\n\t\t\t\tif (update(dep)) {\n\t\t\t\t\tconst subs = dep.subs;\n\t\t\t\t\tif (subs.nextSub !== void 0) shallowPropagate(subs);\n\t\t\t\t\tdirty = true;\n\t\t\t\t}\n\t\t\t} else if ((flags & (1 | 32)) === (1 | 32)) {\n\t\t\t\tif (link.nextSub !== void 0 || link.prevSub !== void 0) stack = {\n\t\t\t\t\tvalue: link,\n\t\t\t\t\tprev: stack\n\t\t\t\t};\n\t\t\t\tlink = dep.deps;\n\t\t\t\tsub = dep;\n\t\t\t\t++checkDepth;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (!dirty) {\n\t\t\t\tconst nextDep = link.nextDep;\n\t\t\t\tif (nextDep !== void 0) {\n\t\t\t\t\tlink = nextDep;\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\t\t\twhile (checkDepth--) {\n\t\t\t\tconst firstSub = sub.subs;\n\t\t\t\tconst hasMultipleSubs = firstSub.nextSub !== void 0;\n\t\t\t\tif (hasMultipleSubs) {\n\t\t\t\t\tlink = stack.value;\n\t\t\t\t\tstack = stack.prev;\n\t\t\t\t} else link = firstSub;\n\t\t\t\tif (dirty) {\n\t\t\t\t\tif (update(sub)) {\n\t\t\t\t\t\tif (hasMultipleSubs) shallowPropagate(firstSub);\n\t\t\t\t\t\tsub = link.sub;\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t\tdirty = false;\n\t\t\t\t} else sub.flags &= ~32;\n\t\t\t\tsub = link.sub;\n\t\t\t\tconst nextDep = link.nextDep;\n\t\t\t\tif (nextDep !== void 0) {\n\t\t\t\t\tlink = nextDep;\n\t\t\t\t\tcontinue top;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn dirty;\n\t\t} while (true);\n\t}\n\tfunction shallowPropagate(link) {\n\t\tdo {\n\t\t\tconst sub = link.sub;\n\t\t\tconst flags = sub.flags;\n\t\t\tif ((flags & (32 | 16)) === 32) {\n\t\t\t\tsub.flags = flags | 16;\n\t\t\t\tif ((flags & (2 | 4)) === 2) notify(sub);\n\t\t\t}\n\t\t} while ((link = link.nextSub) !== void 0);\n\t}\n\tfunction isValidLink(checkLink, sub) {\n\t\tlet link = sub.depsTail;\n\t\twhile (link !== void 0) {\n\t\t\tif (link === checkLink) return true;\n\t\t\tlink = link.prevDep;\n\t\t}\n\t\treturn false;\n\t}\n}\n\n//#endregion\nexport { createReactiveSystem };\n//# sourceMappingURL=alien.js.map","import { createReactiveSystem } from \"./alien.js\";\n\n//#region src/atom.ts\nfunction toObserver(nextHandler, errorHandler, completionHandler) {\n\tconst isObserver = typeof nextHandler === \"object\";\n\tconst self = isObserver ? nextHandler : void 0;\n\treturn {\n\t\tnext: (isObserver ? nextHandler.next : nextHandler)?.bind(self),\n\t\terror: (isObserver ? nextHandler.error : errorHandler)?.bind(self),\n\t\tcomplete: (isObserver ? nextHandler.complete : completionHandler)?.bind(self)\n\t};\n}\nconst queuedEffects = [];\nlet cycle = 0;\nconst { link, unlink, propagate, checkDirty, shallowPropagate } = /* @__PURE__ */ createReactiveSystem({\n\tupdate(atom) {\n\t\treturn atom._update();\n\t},\n\tnotify(effect) {\n\t\tqueuedEffects[queuedEffectsLength++] = effect;\n\t\teffect.flags &= ~2;\n\t},\n\tunwatched(atom) {\n\t\tif (atom.depsTail !== void 0) {\n\t\t\tatom.depsTail = void 0;\n\t\t\tatom.flags = 1 | 16;\n\t\t\tpurgeDeps(atom);\n\t\t}\n\t}\n});\nlet notifyIndex = 0;\nlet queuedEffectsLength = 0;\nlet activeSub;\nlet batchDepth = 0;\nfunction batch(fn) {\n\ttry {\n\t\t++batchDepth;\n\t\tfn();\n\t} finally {\n\t\tif (!--batchDepth) flush();\n\t}\n}\nfunction purgeDeps(sub) {\n\tconst depsTail = sub.depsTail;\n\tlet dep = depsTail !== void 0 ? depsTail.nextDep : sub.deps;\n\twhile (dep !== void 0) dep = unlink(dep, sub);\n}\nfunction flush() {\n\tif (batchDepth > 0) return;\n\twhile (notifyIndex < queuedEffectsLength) {\n\t\tconst effect = queuedEffects[notifyIndex];\n\t\tqueuedEffects[notifyIndex++] = void 0;\n\t\teffect.notify();\n\t}\n\tnotifyIndex = 0;\n\tqueuedEffectsLength = 0;\n}\nfunction createAsyncAtom(getValue, options) {\n\tconst ref = {};\n\tconst atom = createAtom(() => {\n\t\tgetValue().then((data) => {\n\t\t\tconst internalAtom = ref.current;\n\t\t\tif (internalAtom._update({\n\t\t\t\tstatus: \"done\",\n\t\t\t\tdata\n\t\t\t})) {\n\t\t\t\tconst subs = internalAtom.subs;\n\t\t\t\tif (subs !== void 0) {\n\t\t\t\t\tpropagate(subs);\n\t\t\t\t\tshallowPropagate(subs);\n\t\t\t\t\tflush();\n\t\t\t\t}\n\t\t\t}\n\t\t}, (error) => {\n\t\t\tconst internalAtom = ref.current;\n\t\t\tif (internalAtom._update({\n\t\t\t\tstatus: \"error\",\n\t\t\t\terror\n\t\t\t})) {\n\t\t\t\tconst subs = internalAtom.subs;\n\t\t\t\tif (subs !== void 0) {\n\t\t\t\t\tpropagate(subs);\n\t\t\t\t\tshallowPropagate(subs);\n\t\t\t\t\tflush();\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\treturn { status: \"pending\" };\n\t}, options);\n\tref.current = atom;\n\treturn atom;\n}\nfunction createAtom(valueOrFn, options) {\n\tconst isComputed = typeof valueOrFn === \"function\";\n\tconst getter = valueOrFn;\n\tconst atom = {\n\t\t_snapshot: isComputed ? void 0 : valueOrFn,\n\t\tsubs: void 0,\n\t\tsubsTail: void 0,\n\t\tdeps: void 0,\n\t\tdepsTail: void 0,\n\t\tflags: isComputed ? 0 : 1,\n\t\tget() {\n\t\t\tif (activeSub !== void 0) link(atom, activeSub, cycle);\n\t\t\treturn atom._snapshot;\n\t\t},\n\t\tsubscribe(observerOrFn) {\n\t\t\tconst obs = toObserver(observerOrFn);\n\t\t\tconst observed = { current: false };\n\t\t\tconst e = effect(() => {\n\t\t\t\tatom.get();\n\t\t\t\tif (!observed.current) observed.current = true;\n\t\t\t\telse obs.next?.(atom._snapshot);\n\t\t\t});\n\t\t\treturn { unsubscribe: () => {\n\t\t\t\te.stop();\n\t\t\t} };\n\t\t},\n\t\t_update(getValue) {\n\t\t\tconst prevSub = activeSub;\n\t\t\tconst compare = options?.compare ?? Object.is;\n\t\t\tif (isComputed) {\n\t\t\t\tactiveSub = atom;\n\t\t\t\t++cycle;\n\t\t\t\tatom.depsTail = void 0;\n\t\t\t} else if (getValue === void 0) return false;\n\t\t\tif (isComputed) atom.flags = 1 | 4;\n\t\t\ttry {\n\t\t\t\tconst oldValue = atom._snapshot;\n\t\t\t\tconst newValue = typeof getValue === \"function\" ? getValue(oldValue) : getValue === void 0 && isComputed ? getter(oldValue) : getValue;\n\t\t\t\tif (oldValue === void 0 || !compare(oldValue, newValue)) {\n\t\t\t\t\tatom._snapshot = newValue;\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t} finally {\n\t\t\t\tactiveSub = prevSub;\n\t\t\t\tif (isComputed) atom.flags &= ~4;\n\t\t\t\tpurgeDeps(atom);\n\t\t\t}\n\t\t}\n\t};\n\tif (isComputed) {\n\t\tatom.flags = 1 | 16;\n\t\tatom.get = function() {\n\t\t\tconst flags = atom.flags;\n\t\t\tif (flags & 16 || flags & 32 && checkDirty(atom.deps, atom)) {\n\t\t\t\tif (atom._update()) {\n\t\t\t\t\tconst subs = atom.subs;\n\t\t\t\t\tif (subs !== void 0) shallowPropagate(subs);\n\t\t\t\t}\n\t\t\t} else if (flags & 32) atom.flags = flags & ~32;\n\t\t\tif (activeSub !== void 0) link(atom, activeSub, cycle);\n\t\t\treturn atom._snapshot;\n\t\t};\n\t} else atom.set = function(valueOrFn) {\n\t\tif (atom._update(valueOrFn)) {\n\t\t\tconst subs = atom.subs;\n\t\t\tif (subs !== void 0) {\n\t\t\t\tpropagate(subs);\n\t\t\t\tshallowPropagate(subs);\n\t\t\t\tflush();\n\t\t\t}\n\t\t}\n\t};\n\treturn atom;\n}\nfunction effect(fn) {\n\tconst run = () => {\n\t\tconst prevSub = activeSub;\n\t\tactiveSub = effectObj;\n\t\t++cycle;\n\t\teffectObj.depsTail = void 0;\n\t\teffectObj.flags = 2 | 4;\n\t\ttry {\n\t\t\treturn fn();\n\t\t} finally {\n\t\t\tactiveSub = prevSub;\n\t\t\teffectObj.flags &= ~4;\n\t\t\tpurgeDeps(effectObj);\n\t\t}\n\t};\n\tconst effectObj = {\n\t\tdeps: void 0,\n\t\tdepsTail: void 0,\n\t\tsubs: void 0,\n\t\tsubsTail: void 0,\n\t\tflags: 2 | 4,\n\t\tnotify() {\n\t\t\tconst flags = this.flags;\n\t\t\tif (flags & 16 || flags & 32 && checkDirty(this.deps, this)) run();\n\t\t\telse this.flags = 2;\n\t\t},\n\t\tstop() {\n\t\t\tthis.flags = 0;\n\t\t\tthis.depsTail = void 0;\n\t\t\tpurgeDeps(this);\n\t\t}\n\t};\n\trun();\n\treturn effectObj;\n}\n\n//#endregion\nexport { batch, createAsyncAtom, createAtom, flush, toObserver };\n//# sourceMappingURL=atom.js.map","//#region src/shallow.ts\nfunction shallow(objA, objB) {\n\tif (Object.is(objA, objB)) return true;\n\tif (typeof objA !== \"object\" || objA === null || typeof objB !== \"object\" || objB === null) return false;\n\tif (objA instanceof Map && objB instanceof Map) {\n\t\tif (objA.size !== objB.size) return false;\n\t\tfor (const [k, v] of objA) if (!objB.has(k) || !Object.is(v, objB.get(k))) return false;\n\t\treturn true;\n\t}\n\tif (objA instanceof Set && objB instanceof Set) {\n\t\tif (objA.size !== objB.size) return false;\n\t\tfor (const v of objA) if (!objB.has(v)) return false;\n\t\treturn true;\n\t}\n\tif (objA instanceof Date && objB instanceof Date) {\n\t\tif (objA.getTime() !== objB.getTime()) return false;\n\t\treturn true;\n\t}\n\tconst keysA = getOwnKeys(objA);\n\tif (keysA.length !== getOwnKeys(objB).length) return false;\n\tfor (let i = 0; i < keysA.length; i++) if (!Object.prototype.hasOwnProperty.call(objB, keysA[i]) || !Object.is(objA[keysA[i]], objB[keysA[i]])) return false;\n\treturn true;\n}\nfunction getOwnKeys(obj) {\n\treturn Object.keys(obj).concat(Object.getOwnPropertySymbols(obj));\n}\n\n//#endregion\nexport { shallow };\n//# sourceMappingURL=shallow.js.map","export*from\"lit-html/async-directive.js\";\n//# sourceMappingURL=async-directive.js.map\n","import { TanStackStoreSelector } from \"@tanstack/lit-store\";\nimport { AsyncDirective, directive } from \"lit/async-directive.js\";\nimport { noChange } from \"lit\";\n\n//#region src/subscribe-directive.ts\n/**\n* A simple identity selector used when no specific selection is needed,\n* allowing the directive to subscribe to the entire state of the source.\n* @template T - The type of the state being passed through unchanged.\n*/\nconst identitySelector = (state) => state;\n/**\n* An asynchronous Lit directive that subscribes to a `@tanstack/lit-store`\n* source and triggers re-renders specifically for the template portion it wraps.\n* * It uses a \"fake\" `ReactiveControllerHost` to bridge the gap between\n* TanStack's standard controller requirements and the `AsyncDirective` lifecycle.\n*/\nvar SubscribeDirective = class extends AsyncDirective {\n\t/** The `TanStackStoreSelector` controller that manages the subscription to the store/atom */\n\tcontroller;\n\t/** The latest source and selector used to determine if a new subscription is needed on updates */\n\tlatestSource;\n\tlatestSelector;\n\tresolvedTemplate;\n\tinitialized = false;\n\trender(_source, _selectorOrTemplate, _template) {\n\t\t/** The actual rendering is handled in the {@link update} method to ensure that template is only evaluated if needed */\n\t\treturn noChange;\n\t}\n\tupdate(_part, args) {\n\t\tconst [source, selectorOrTemplate, template] = args;\n\t\tconst isIdentitySubscription = template === void 0;\n\t\tconst selector = isIdentitySubscription ? identitySelector : selectorOrTemplate;\n\t\tconst actualTemplate = isIdentitySubscription ? selectorOrTemplate : template;\n\t\tconst sourceChanged = this.latestSource !== source;\n\t\tconst selectorChanged = this.latestSelector !== selector;\n\t\tconst shouldReinitialize = !this.initialized || sourceChanged || selectorChanged;\n\t\tthis.resolvedTemplate = actualTemplate;\n\t\tif (shouldReinitialize) {\n\t\t\tif (this.initialized) {\n\t\t\t\tthis.controller?.hostDisconnected();\n\t\t\t\tthis.controller = void 0;\n\t\t\t}\n\t\t\tthis.latestSource = source;\n\t\t\tthis.latestSelector = selector;\n\t\t\tif (!this.controller) this.controller = new TanStackStoreSelector(this.createFakeHost(), () => this.latestSource, (state) => this.latestSelector?.(state));\n\t\t\tthis.controller.hostUpdate();\n\t\t\tthis.initialized = true;\n\t\t}\n\t\treturn this.resolvedTemplate?.(this.latestSelector(this.latestSource.get()));\n\t}\n\t/** Cleans up the controller subscription when the directive is removed from the DOM. */\n\tdisconnected() {\n\t\tthis.controller?.hostDisconnected();\n\t}\n\t/** Restores the controller subscription when the directive is re-attached to the DOM. */\n\treconnected() {\n\t\tthis.controller?.hostUpdate();\n\t\tif (this.resolvedTemplate && this.controller) this.setValue(this.resolvedTemplate(this.controller.value));\n\t}\n\t/**\n\t* Creates a mock `ReactiveControllerHost` allowing the `TanStackStoreSelector`\n\t* to plug into the `AsyncDirective`'s update cycle using `setValue()`.\n\t*/\n\tcreateFakeHost() {\n\t\treturn {\n\t\t\taddController: () => {},\n\t\t\tremoveController: () => {},\n\t\t\trequestUpdate: () => {\n\t\t\t\tif (this.resolvedTemplate && this.controller) this.setValue(this.resolvedTemplate(this.controller.value));\n\t\t\t},\n\t\t\tget updateComplete() {\n\t\t\t\treturn Promise.resolve(true);\n\t\t\t}\n\t\t};\n\t}\n};\n/**\n* A Lit directive that subscribes to a source (Store or Atom)\n* and efficiently updates only the wrapped template\n* when the state or selected slice changes.\n* @example\n* ```ts\n* // Without a selector (subscribes to entire state)\n* html`<div>${subscribe(myStore, (state) => html`<span>${state.count}</span>`)}</div>`\n* * // With a selector (only updates when `count` changes)\n* html`<div>${subscribe(myStore, state => state.count, (count) => html`<span>${count}</span>`)}</div>`\n* ```\n*/\nconst subscribe = directive(SubscribeDirective);\n\n//#endregion\nexport { SubscribeDirective, subscribe };","//#region src/core/reactivity/renderPhaseReactivity.ts\n/**\n* Creates reactivity bindings for render-phase adapters (React, Preact, Lit):\n* frameworks with plain, non-reactive options that are re-synchronized during\n* component render, where store notifications must not fire until the host\n* commits.\n*\n* Readonly atoms are exposed as live facades. `get()` re-evaluates the\n* resolver against the options of the render in progress — a normal computed\n* cannot know that plain `options.state` changed — and caches the result\n* through the configured comparator so external-store consumers (e.g. React's\n* `useSyncExternalStore`) see referentially stable snapshots. `subscribe()`\n* goes through a hidden computed that tracks the resolver's real atom\n* dependencies plus a commit version, so subscribers are invalidated by\n* actual reactive writes and by the adapter's post-commit publication.\n*\n* @example\n* ```ts\n* import { batch, createAtom } from '@tanstack/react-store'\n*\n* export const reactReactivity = () =>\n* renderPhaseReactivity({ createAtom, batch })\n* ```\n*/\nfunction renderPhaseReactivity(primitives) {\n\tconst { createAtom, batch } = primitives;\n\tconst commitAtom = createAtom(0);\n\treturn {\n\t\tcreateOptionsStore: false,\n\t\twrapExternalAtoms: false,\n\t\taddSubscription: () => {\n\t\t\tthrow new Error(\"Feature not supported in current reactivity implementation\");\n\t\t},\n\t\tunmount: () => {\n\t\t\tthrow new Error(\"Feature not supported in current reactivity implementation\");\n\t\t},\n\t\tschedule: primitives.schedule ?? ((fn) => queueMicrotask(fn)),\n\t\tbatch,\n\t\tuntrack: (fn) => fn(),\n\t\tcreateReadonlyAtom: (fn, atomOptions) => {\n\t\t\tconst compare = atomOptions?.compare ?? Object.is;\n\t\t\tlet hasSnapshot = false;\n\t\t\tlet snapshot;\n\t\t\tconst getSnapshot = () => {\n\t\t\t\tconst nextSnapshot = fn();\n\t\t\t\tif (!hasSnapshot || !compare(snapshot, nextSnapshot)) {\n\t\t\t\t\tsnapshot = nextSnapshot;\n\t\t\t\t\thasSnapshot = true;\n\t\t\t\t}\n\t\t\t\treturn snapshot;\n\t\t\t};\n\t\t\tconst reactiveAtom = createAtom(() => {\n\t\t\t\tcommitAtom.get();\n\t\t\t\treturn getSnapshot();\n\t\t\t}, { compare });\n\t\t\treturn {\n\t\t\t\tget: getSnapshot,\n\t\t\t\tsubscribe: reactiveAtom.subscribe.bind(reactiveAtom)\n\t\t\t};\n\t\t},\n\t\tcreateWritableAtom: (value, atomOptions) => {\n\t\t\treturn createAtom(value, { compare: atomOptions?.compare });\n\t\t},\n\t\tcommit: () => {\n\t\t\tcommitAtom.set((version) => version + 1);\n\t\t}\n\t};\n}\n/**\n* Creates a render-phase source with an explicit commit baseline.\n*\n* Render-phase adapters publish controlled state after the host framework\n* commits so isolated subscribers update, but the component that owns the\n* table already rendered that exact snapshot — forwarding the notification to\n* its root subscription would produce a redundant render. Unlike a last-read\n* filter, speculative reads do not change notification behavior: only\n* `markCommitted()` advances the baseline.\n*/\nfunction createRenderPhaseSource(source, compare = Object.is) {\n\tlet hasCommittedSnapshot = false;\n\tlet committedSnapshot;\n\treturn {\n\t\tget: source.get,\n\t\tmarkCommitted: (snapshot) => {\n\t\t\tcommittedSnapshot = snapshot;\n\t\t\thasCommittedSnapshot = true;\n\t\t},\n\t\tsubscribe: (listener) => source.subscribe((value) => {\n\t\t\tif (!hasCommittedSnapshot || !compare(committedSnapshot, value)) listener(value);\n\t\t})\n\t};\n}\n\n//#endregion\nexport { createRenderPhaseSource, renderPhaseReactivity };","import { renderPhaseReactivity } from \"@tanstack/table-core/reactivity\";\nimport { batch, createAtom } from \"@tanstack/lit-store\";\n\n//#region src/reactivity.ts\n/**\n* Creates the table-core reactivity bindings used by the Lit adapter.\n*\n* Lit calls `controller.table(options)` from the host's `render()`, so options\n* are plain values synchronized during the update cycle — writing a reactive\n* options store there would schedule a second update per interaction. The\n* render-phase preset supplies the live readonly-atom facades and the `commit`\n* hook; `TableController` publishes its captured controlled state from\n* `hostUpdated()`. Store primitives come from `@tanstack/lit-store` so all\n* atoms share one store instance with user-provided external atoms.\n*/\nfunction litReactivity() {\n\treturn renderPhaseReactivity({\n\t\tcreateAtom,\n\t\tbatch\n\t});\n}\n\n//#endregion\nexport { litReactivity };","import { FlexRender } from \"./flexRender.js\";\nimport { litReactivity } from \"./reactivity.js\";\nimport { subscribe } from \"./subscribe-directive.js\";\nimport { constructTable } from \"@tanstack/table-core\";\nimport { createRenderPhaseSource } from \"@tanstack/table-core/reactivity\";\nimport { table_publishExternalState, table_setOptions } from \"@tanstack/table-core/static-functions\";\nimport { shallow } from \"@tanstack/lit-store\";\n\n//#region src/TableController.ts\n/**\n* A Lit ReactiveController for TanStack Table integration.\n*\n* Uses `constructReactivityFeature` from table-core to properly integrate\n* with the TanStack Store reactivity system, matching the pattern used by\n* all other framework adapters (React, Vue, Solid, Svelte, Angular).\n*\n* @example\n* ```ts\n* @customElement('my-table')\n* class MyTable extends LitElement {\n* private tableController = new TableController<typeof features, Person>(this)\n*\n* protected render() {\n* const table = this.tableController.table(\n* {\n* features,\n* columns,\n* data,\n* },\n* (state) => ({ sorting: state.sorting }),\n* )\n* // use table in your template...\n* }\n* }\n* ```\n*/\nvar TableController = class {\n\thost;\n\t_table = null;\n\t_rootSource;\n\t_storeSubscription;\n\t_capturedState;\n\t_capturedSnapshot;\n\t_hasSelector = false;\n\t_latestSelector;\n\t_lastSelected;\n\tconstructor(host) {\n\t\t(this.host = host).addController(this);\n\t}\n\t/**\n\t* Returns the Lit-backed table instance for the current render pass.\n\t*\n\t* The first call constructs the table with Lit reactivity bindings and\n\t* subscribes the host to table state/options changes. Later calls merge new\n\t* options into the same table instance and expose selected state through\n\t* `table.state`.\n\t*\n\t* @example\n\t* ```ts\n\t* const table = this.tableController.table(\n\t* { features, columns, data },\n\t* (state) => ({ sorting: state.sorting }),\n\t* )\n\t* ```\n\t*/\n\ttable(tableOptions, selector) {\n\t\tif (!this._table) {\n\t\t\tconst mergedOptions = {\n\t\t\t\t...tableOptions,\n\t\t\t\tfeatures: {\n\t\t\t\t\tcoreReactivityFeature: litReactivity(),\n\t\t\t\t\t...tableOptions.features\n\t\t\t\t},\n\t\t\t\tmergeOptions: (defaultOptions, newOptions) => {\n\t\t\t\t\treturn {\n\t\t\t\t\t\t...defaultOptions,\n\t\t\t\t\t\t...newOptions\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t};\n\t\t\tthis._table = constructTable(mergedOptions);\n\t\t\tthis._rootSource = createRenderPhaseSource(this._table.store, shallow);\n\t\t\tthis._setupSubscriptions();\n\t\t}\n\t\ttable_setOptions(this._table, (prev) => ({\n\t\t\t...prev,\n\t\t\t...tableOptions\n\t\t}), { syncExternalState: false });\n\t\tthis._capturedState = this._table.options.state;\n\t\tconst renderSnapshot = this._rootSource.get();\n\t\tthis._capturedSnapshot = renderSnapshot;\n\t\tthis._hasSelector = selector !== void 0;\n\t\tthis._latestSelector = selector;\n\t\tthis._lastSelected = selector ? selector(renderSnapshot) : renderSnapshot;\n\t\treturn {\n\t\t\t...this._table,\n\t\t\tsubscribe,\n\t\t\tFlexRender,\n\t\t\tget state() {\n\t\t\t\treturn selector?.(renderSnapshot) ?? renderSnapshot;\n\t\t\t}\n\t\t};\n\t}\n\t_setupSubscriptions() {\n\t\tif (this._table && !this._storeSubscription) this._storeSubscription = this._rootSource.subscribe((state) => {\n\t\t\tif (this._hasSelector) {\n\t\t\t\tconst nextSelected = this._latestSelector(state);\n\t\t\t\tif (shallow(this._lastSelected, nextSelected)) return;\n\t\t\t\tthis._lastSelected = nextSelected;\n\t\t\t}\n\t\t\tthis.host.requestUpdate();\n\t\t});\n\t}\n\thostConnected() {\n\t\tthis._setupSubscriptions();\n\t\tif (this._table) this.host.requestUpdate();\n\t}\n\thostUpdated() {\n\t\tif (!this._table) return;\n\t\tthis._rootSource.markCommitted(this._capturedSnapshot);\n\t\ttable_publishExternalState(this._table, this._capturedState ?? null, shallow);\n\t}\n\thostDisconnected() {\n\t\tthis._storeSubscription?.unsubscribe();\n\t\tthis._storeSubscription = void 0;\n\t}\n};\n\n//#endregion\nexport { TableController };","/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nclass s extends Event{constructor(s,t,e,o){super(\"context-request\",{bubbles:!0,composed:!0}),this.context=s,this.contextTarget=t,this.callback=e,this.subscribe=o??!1}}export{s as ContextRequestEvent};\n//# sourceMappingURL=context-request-event.js.map\n","/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nfunction n(n){return n}export{n as createContext};\n//# sourceMappingURL=create-context.js.map\n","import{ContextRequestEvent as t}from\"../context-request-event.js\";\n/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */class s{constructor(t,s,i,h){if(this.subscribe=!1,this.provided=!1,this.value=void 0,this.t=(t,s)=>{this.unsubscribe&&(this.unsubscribe!==s&&(this.provided=!1,this.unsubscribe()),this.subscribe||this.unsubscribe()),this.value=t,this.host.requestUpdate(),this.provided&&!this.subscribe||(this.provided=!0,this.callback&&this.callback(t,s)),this.unsubscribe=s},this.host=t,void 0!==s.context){const t=s;this.context=t.context,this.callback=t.callback,this.subscribe=t.subscribe??!1}else this.context=s,this.callback=i,this.subscribe=h??!1;this.host.addController(this)}hostConnected(){this.dispatchRequest()}hostDisconnected(){this.unsubscribe&&(this.unsubscribe(),this.unsubscribe=void 0)}dispatchRequest(){this.host.dispatchEvent(new t(this.context,this.host,this.t,this.subscribe))}}export{s as ContextConsumer};\n//# sourceMappingURL=context-consumer.js.map\n","/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nclass s{get value(){return this.o}set value(s){this.setValue(s)}setValue(s,t=!1){const i=t||!Object.is(s,this.o);this.o=s,i&&this.updateObservers()}constructor(s){this.subscriptions=new Map,this.updateObservers=()=>{for(const[s,{disposer:t}]of this.subscriptions)s(this.o,t)},void 0!==s&&(this.value=s)}addCallback(s,t,i){if(!i)return void s(this.value);this.subscriptions.has(s)||this.subscriptions.set(s,{disposer:()=>{this.subscriptions.delete(s)},consumerHost:t});const{disposer:h}=this.subscriptions.get(s);s(this.value,h)}clearCallbacks(){this.subscriptions.clear()}}export{s as ValueNotifier};\n//# sourceMappingURL=value-notifier.js.map\n","import{ContextRequestEvent as t}from\"../context-request-event.js\";import{ValueNotifier as s}from\"../value-notifier.js\";\n/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */class e extends Event{constructor(t,s){super(\"context-provider\",{bubbles:!0,composed:!0}),this.context=t,this.contextTarget=s}}class i extends s{constructor(s,e,i){super(void 0!==e.context?e.initialValue:i),this.onContextRequest=t=>{if(t.context!==this.context)return;const s=t.contextTarget??t.composedPath()[0];s!==this.host&&(t.stopPropagation(),this.addCallback(t.callback,s,t.subscribe))},this.onProviderRequest=s=>{if(s.context!==this.context)return;if((s.contextTarget??s.composedPath()[0])===this.host)return;const e=new Set;for(const[s,{consumerHost:i}]of this.subscriptions)e.has(s)||(e.add(s),i.dispatchEvent(new t(this.context,i,s,!0)));s.stopPropagation()},this.host=s,void 0!==e.context?this.context=e.context:this.context=e,this.attachListeners(),this.host.addController?.(this)}attachListeners(){this.host.addEventListener(\"context-request\",this.onContextRequest),this.host.addEventListener(\"context-provider\",this.onProviderRequest)}hostConnected(){this.host.dispatchEvent(new e(this.context,this.host))}}export{i as ContextProvider,e as ContextProviderEvent};\n//# sourceMappingURL=context-provider.js.map\n","import { FlexRender, flexRender } from \"./flexRender.js\";\nimport { TableController } from \"./TableController.js\";\nimport { createColumnHelper } from \"@tanstack/table-core\";\nimport { ContextConsumer, ContextProvider, createContext } from \"@lit/context\";\n\n//#region src/createTableHook.ts\n/**\n* Creates a custom table hook with pre-bound components for composition.\n*\n* This is the table equivalent of TanStack Form's `createFormHook`. It allows you to:\n* - Define features, row models, and default options once, shared across all tables\n* - Register reusable table, cell, and header components\n* - Access table/cell/header instances via `@lit/context` in those components\n* - Get a `useAppTable` hook that returns an extended table with App wrapper functions\n* - Get a `createAppColumnHelper` function pre-bound to your features\n*\n* @example\n* ```ts\n* // hooks/table.ts\n* export const {\n* createAppColumnHelper,\n* useAppTable,\n* useTableContext,\n* useCellContext,\n* useHeaderContext,\n* } = createTableHook({\n* features: tableFeatures({\n* rowPaginationFeature,\n* rowSortingFeature,\n* columnFilteringFeature,\n* paginatedRowModel: createPaginatedRowModel(),\n* sortedRowModel: createSortedRowModel(),\n* filteredRowModel: createFilteredRowModel(),\n* sortFns,\n* filterFns,\n* }),\n* tableComponents: { PaginationControls, RowCount },\n* cellComponents: { TextCell, NumberCell },\n* headerComponents: { SortIndicator, ColumnFilter },\n* })\n*\n* // Create column helper with TFeatures already bound\n* const columnHelper = createAppColumnHelper<Person>()\n*\n* // my-table.ts\n* @customElement('my-table')\n* class MyTable extends LitElement {\n* private appTable = useAppTable(this, {\n* columns,\n* data: this.data,\n* })\n*\n* protected render() {\n* const table = this.appTable.table()\n*\n* return html`\n* <table>\n* <thead>\n* ${repeat(table.getHeaderGroups(), (hg) => hg.id, (hg) => html`\n* <tr>\n* ${hg.headers.map((h) => table.AppHeader(h, (header) => html`\n* <th>${header.FlexRender()}</th>\n* `))}\n* </tr>\n* `)}\n* </thead>\n* <tbody>\n* ${table.getRowModel().rows.map((row) => html`\n* <tr>\n* ${row.getAllCells().map((c) => table.AppCell(c, (cell) => html`\n* <td>${cell.FlexRender()}</td>\n* `))}\n* </tr>\n* `)}\n* </tbody>\n* </table>\n* `\n* }\n* }\n* ```\n*/\nfunction createTableHook({ tableComponents, cellComponents, headerComponents, ...defaultTableOptions }) {\n\tconst tableContext = createContext(Symbol(\"tanstack-table\"));\n\tconst cellContext = createContext(Symbol(\"tanstack-cell\"));\n\tconst headerContext = createContext(Symbol(\"tanstack-header\"));\n\t/**\n\t* Create a column helper pre-bound to the features and components configured in this table hook.\n\t* The cell, header, and footer contexts include pre-bound components (e.g., `cell.TextCell`).\n\t* @example\n\t* ```ts\n\t* const columnHelper = createAppColumnHelper<Person>()\n\t*\n\t* const columns = [\n\t* columnHelper.accessor('firstName', {\n\t* header: 'First Name',\n\t* cell: ({ cell }) => cell.FlexRender(), // cell has pre-bound components!\n\t* }),\n\t* columnHelper.accessor('age', {\n\t* header: 'Age',\n\t* cell: ({ cell }) => cell.NumberCell(),\n\t* }),\n\t* ]\n\t* ```\n\t*/\n\tfunction createAppColumnHelper() {\n\t\treturn createColumnHelper();\n\t}\n\t/**\n\t* Access the table instance from within a custom element that is a descendant\n\t* of the element using `useAppTable`.\n\t* Uses `@lit/context` ContextConsumer to retrieve the table from the nearest ancestor provider.\n\t* TFeatures is already known from the createTableHook call.\n\t*\n\t* @example\n\t* ```ts\n\t* @customElement('pagination-controls')\n\t* class PaginationControls extends LitElement {\n\t* private _table = useTableContext(this)\n\t*\n\t* protected render() {\n\t* const table = this._table.value\n\t* if (!table) return html``\n\t* return html`\n\t* <button @click=${() => table.previousPage()}>Prev</button>\n\t* <button @click=${() => table.nextPage()}>Next</button>\n\t* `\n\t* }\n\t* }\n\t* ```\n\t*/\n\tfunction useTableContext(host) {\n\t\treturn new ContextConsumer(host, {\n\t\t\tcontext: tableContext,\n\t\t\tsubscribe: true\n\t\t});\n\t}\n\t/**\n\t* Access the cell instance from within a custom element that is a descendant\n\t* of an element providing cell context.\n\t* Uses `@lit/context` ContextConsumer to retrieve the cell.\n\t* TFeatures is already known from the createTableHook call.\n\t*\n\t* @example\n\t* ```ts\n\t* @customElement('text-cell')\n\t* class TextCell extends LitElement {\n\t* private _cell = useCellContext(this)\n\t*\n\t* protected render() {\n\t* const cell = this._cell.value\n\t* if (!cell) return html``\n\t* return html`<span>${cell.getValue()}</span>`\n\t* }\n\t* }\n\t* ```\n\t*/\n\tfunction useCellContext(host) {\n\t\treturn new ContextConsumer(host, {\n\t\t\tcontext: cellContext,\n\t\t\tsubscribe: true\n\t\t});\n\t}\n\t/**\n\t* Access the header instance from within a custom element that is a descendant\n\t* of an element providing header context.\n\t* Uses `@lit/context` ContextConsumer to retrieve the header.\n\t* TFeatures is already known from the createTableHook call.\n\t*\n\t* @example\n\t* ```ts\n\t* @customElement('sort-indicator')\n\t* class SortIndicator extends LitElement {\n\t* private _header = useHeaderContext(this)\n\t*\n\t* protected render() {\n\t* const header = this._header.value\n\t* if (!header) return html``\n\t* const sorted = header.column.getIsSorted()\n\t* return html`${sorted === 'asc' ? '🔼' : sorted === 'desc' ? '🔽' : ''}`\n\t* }\n\t* }\n\t* ```\n\t*/\n\tfunction useHeaderContext(host) {\n\t\treturn new ContextConsumer(host, {\n\t\t\tcontext: headerContext,\n\t\t\tsubscribe: true\n\t\t});\n\t}\n\t/**\n\t* Enhanced table hook that returns a controller-like object with a `table()` method.\n\t* The returned table has App wrapper functions and pre-bound tableComponents\n\t* attached directly to the table object.\n\t*\n\t* Default options from createTableHook are automatically merged with\n\t* the options passed here. Options passed here take precedence.\n\t*\n\t* TFeatures is already known from the createTableHook call; TData is inferred from the data prop.\n\t*\n\t* @example\n\t* ```ts\n\t* @customElement('my-table')\n\t* class MyTable extends LitElement {\n\t* private appTable = useAppTable(this, {\n\t* columns,\n\t* data: this.data,\n\t* })\n\t*\n\t* protected render() {\n\t* const table = this.appTable.table()\n\t* return html`...`\n\t* }\n\t* }\n\t* ```\n\t*/\n\tfunction useAppTable(host, tableOptions, selector) {\n\t\tconst controller = new TableController(host);\n\t\tconst provider = new ContextProvider(host, { context: tableContext });\n\t\treturn { table() {\n\t\t\tconst mergedOptions = {\n\t\t\t\t...defaultTableOptions,\n\t\t\t\t...tableOptions\n\t\t\t};\n\t\t\tconst table = controller.table(mergedOptions, selector);\n\t\t\tprovider.setValue(table);\n\t\t\tfunction AppCell(cell, renderFn) {\n\t\t\t\tconst cellFlexRender = () => FlexRender({ cell });\n\t\t\t\tconst boundCellComponents = {};\n\t\t\t\tfor (const [key, fn] of Object.entries(cellComponents ?? {})) boundCellComponents[key] = () => fn(cell);\n\t\t\t\treturn renderFn(Object.assign(cell, {\n\t\t\t\t\tFlexRender: cellFlexRender,\n\t\t\t\t\t...boundCellComponents\n\t\t\t\t}));\n\t\t\t}\n\t\t\tfunction AppHeader(header, renderFn) {\n\t\t\t\tconst headerFlexRender = () => flexRender(header.column.columnDef.header, header.getContext());\n\t\t\t\tconst boundHeaderComponents = {};\n\t\t\t\tfor (const [key, fn] of Object.entries(headerComponents ?? {})) boundHeaderComponents[key] = () => fn(header);\n\t\t\t\treturn renderFn(Object.assign(header, {\n\t\t\t\t\tFlexRender: headerFlexRender,\n\t\t\t\t\t...boundHeaderComponents\n\t\t\t\t}));\n\t\t\t}\n\t\t\tfunction AppFooter(header, renderFn) {\n\t\t\t\tconst footerFlexRender = () => flexRender(header.column.columnDef.footer, header.getContext());\n\t\t\t\tconst boundFooterComponents = {};\n\t\t\t\tfor (const [key, fn] of Object.entries(headerComponents ?? {})) boundFooterComponents[key] = () => fn(header);\n\t\t\t\treturn renderFn(Object.assign(header, {\n\t\t\t\t\tFlexRender: footerFlexRender,\n\t\t\t\t\t...boundFooterComponents\n\t\t\t\t}));\n\t\t\t}\n\t\t\treturn Object.assign(table, {\n\t\t\t\tAppCell,\n\t\t\t\tAppHeader,\n\t\t\t\tAppFooter,\n\t\t\t\tFlexRender,\n\t\t\t\t...tableComponents ?? {}\n\t\t\t});\n\t\t} };\n\t}\n\treturn {\n\t\tappFeatures: defaultTableOptions.features,\n\t\tcreateAppColumnHelper,\n\t\tuseAppTable,\n\t\tuseTableContext,\n\t\tuseCellContext,\n\t\tuseHeaderContext\n\t};\n}\n\n//#endregion\nexport { createTableHook };","import { FlexRender, flexRender } from \"./flexRender.js\";\nimport { SubscribeDirective, subscribe } from \"./subscribe-directive.js\";\nimport { TableController } from \"./TableController.js\";\nimport { createTableHook } from \"./createTableHook.js\";\n\nexport * from \"@tanstack/table-core\"\n\nexport { FlexRender, SubscribeDirective, TableController, createTableHook, flexRender, subscribe };","//#region src/remove-accents.ts\nconst characterMap = {\n\tÀ: \"A\",\n\tÁ: \"A\",\n\tÂ: \"A\",\n\tÃ: \"A\",\n\tÄ: \"A\",\n\tÅ: \"A\",\n\tẤ: \"A\",\n\tẮ: \"A\",\n\tẲ: \"A\",\n\tẴ: \"A\",\n\tẶ: \"A\",\n\tÆ: \"AE\",\n\tẦ: \"A\",\n\tẰ: \"A\",\n\tȂ: \"A\",\n\tÇ: \"C\",\n\tḈ: \"C\",\n\tÈ: \"E\",\n\tÉ: \"E\",\n\tÊ: \"E\",\n\tË: \"E\",\n\tẾ: \"E\",\n\tḖ: \"E\",\n\tỀ: \"E\",\n\tḔ: \"E\",\n\tḜ: \"E\",\n\tȆ: \"E\",\n\tÌ: \"I\",\n\tÍ: \"I\",\n\tÎ: \"I\",\n\tÏ: \"I\",\n\tḮ: \"I\",\n\tȊ: \"I\",\n\tÐ: \"D\",\n\tÑ: \"N\",\n\tÒ: \"O\",\n\tÓ: \"O\",\n\tÔ: \"O\",\n\tÕ: \"O\",\n\tÖ: \"O\",\n\tØ: \"O\",\n\tỐ: \"O\",\n\tṌ: \"O\",\n\tṒ: \"O\",\n\tȎ: \"O\",\n\tÙ: \"U\",\n\tÚ: \"U\",\n\tÛ: \"U\",\n\tÜ: \"U\",\n\tÝ: \"Y\",\n\tà: \"a\",\n\tá: \"a\",\n\tâ: \"a\",\n\tã: \"a\",\n\tä: \"a\",\n\tå: \"a\",\n\tấ: \"a\",\n\tắ: \"a\",\n\tẳ: \"a\",\n\tẵ: \"a\",\n\tặ: \"a\",\n\tæ: \"ae\",\n\tầ: \"a\",\n\tằ: \"a\",\n\tȃ: \"a\",\n\tç: \"c\",\n\tḉ: \"c\",\n\tè: \"e\",\n\té: \"e\",\n\tê: \"e\",\n\të: \"e\",\n\tế: \"e\",\n\tḗ: \"e\",\n\tề: \"e\",\n\tḕ: \"e\",\n\tḝ: \"e\",\n\tȇ: \"e\",\n\tì: \"i\",\n\tí: \"i\",\n\tî: \"i\",\n\tï: \"i\",\n\tḯ: \"i\",\n\tȋ: \"i\",\n\tð: \"d\",\n\tñ: \"n\",\n\tò: \"o\",\n\tó: \"o\",\n\tô: \"o\",\n\tõ: \"o\",\n\tö: \"o\",\n\tø: \"o\",\n\tố: \"o\",\n\tṍ: \"o\",\n\tṓ: \"o\",\n\tȏ: \"o\",\n\tù: \"u\",\n\tú: \"u\",\n\tû: \"u\",\n\tü: \"u\",\n\tý: \"y\",\n\tÿ: \"y\",\n\tĀ: \"A\",\n\tā: \"a\",\n\tĂ: \"A\",\n\tă: \"a\",\n\tĄ: \"A\",\n\tą: \"a\",\n\tĆ: \"C\",\n\tć: \"c\",\n\tĈ: \"C\",\n\tĉ: \"c\",\n\tĊ: \"C\",\n\tċ: \"c\",\n\tČ: \"C\",\n\tč: \"c\",\n\tC̆: \"C\",\n\tc̆: \"c\",\n\tĎ: \"D\",\n\tď: \"d\",\n\tĐ: \"D\",\n\tđ: \"d\",\n\tĒ: \"E\",\n\tē: \"e\",\n\tĔ: \"E\",\n\tĕ: \"e\",\n\tĖ: \"E\",\n\tė: \"e\",\n\tĘ: \"E\",\n\tę: \"e\",\n\tĚ: \"E\",\n\tě: \"e\",\n\tĜ: \"G\",\n\tǴ: \"G\",\n\tĝ: \"g\",\n\tǵ: \"g\",\n\tĞ: \"G\",\n\tğ: \"g\",\n\tĠ: \"G\",\n\tġ: \"g\",\n\tĢ: \"G\",\n\tģ: \"g\",\n\tĤ: \"H\",\n\tĥ: \"h\",\n\tĦ: \"H\",\n\tħ: \"h\",\n\tḪ: \"H\",\n\tḫ: \"h\",\n\tĨ: \"I\",\n\tĩ: \"i\",\n\tĪ: \"I\",\n\tī: \"i\",\n\tĬ: \"I\",\n\tĭ: \"i\",\n\tĮ: \"I\",\n\tį: \"i\",\n\tİ: \"I\",\n\tı: \"i\",\n\tIJ: \"IJ\",\n\tij: \"ij\",\n\tĴ: \"J\",\n\tĵ: \"j\",\n\tĶ: \"K\",\n\tķ: \"k\",\n\tḰ: \"K\",\n\tḱ: \"k\",\n\tK̆: \"K\",\n\tk̆: \"k\",\n\tĹ: \"L\",\n\tĺ: \"l\",\n\tĻ: \"L\",\n\tļ: \"l\",\n\tĽ: \"L\",\n\tľ: \"l\",\n\tĿ: \"L\",\n\tŀ: \"l\",\n\tŁ: \"l\",\n\tł: \"l\",\n\tḾ: \"M\",\n\tḿ: \"m\",\n\tM̆: \"M\",\n\tm̆: \"m\",\n\tŃ: \"N\",\n\tń: \"n\",\n\tŅ: \"N\",\n\tņ: \"n\",\n\tŇ: \"N\",\n\tň: \"n\",\n\tʼn: \"n\",\n\tN̆: \"N\",\n\tn̆: \"n\",\n\tŌ: \"O\",\n\tō: \"o\",\n\tŎ: \"O\",\n\tŏ: \"o\",\n\tŐ: \"O\",\n\tő: \"o\",\n\tŒ: \"OE\",\n\tœ: \"oe\",\n\tP̆: \"P\",\n\tp̆: \"p\",\n\tŔ: \"R\",\n\tŕ: \"r\",\n\tŖ: \"R\",\n\tŗ: \"r\",\n\tŘ: \"R\",\n\tř: \"r\",\n\tR̆: \"R\",\n\tr̆: \"r\",\n\tȒ: \"R\",\n\tȓ: \"r\",\n\tŚ: \"S\",\n\tś: \"s\",\n\tŜ: \"S\",\n\tŝ: \"s\",\n\tŞ: \"S\",\n\tȘ: \"S\",\n\tș: \"s\",\n\tş: \"s\",\n\tŠ: \"S\",\n\tš: \"s\",\n\tŢ: \"T\",\n\tţ: \"t\",\n\tț: \"t\",\n\tȚ: \"T\",\n\tŤ: \"T\",\n\tť: \"t\",\n\tŦ: \"T\",\n\tŧ: \"t\",\n\tT̆: \"T\",\n\tt̆: \"t\",\n\tŨ: \"U\",\n\tũ: \"u\",\n\tŪ: \"U\",\n\tū: \"u\",\n\tŬ: \"U\",\n\tŭ: \"u\",\n\tŮ: \"U\",\n\tů: \"u\",\n\tŰ: \"U\",\n\tű: \"u\",\n\tŲ: \"U\",\n\tų: \"u\",\n\tȖ: \"U\",\n\tȗ: \"u\",\n\tV̆: \"V\",\n\tv̆: \"v\",\n\tŴ: \"W\",\n\tŵ: \"w\",\n\tẂ: \"W\",\n\tẃ: \"w\",\n\tX̆: \"X\",\n\tx̆: \"x\",\n\tŶ: \"Y\",\n\tŷ: \"y\",\n\tŸ: \"Y\",\n\tY̆: \"Y\",\n\ty̆: \"y\",\n\tŹ: \"Z\",\n\tź: \"z\",\n\tŻ: \"Z\",\n\tż: \"z\",\n\tŽ: \"Z\",\n\tž: \"z\",\n\tſ: \"s\",\n\tƒ: \"f\",\n\tƠ: \"O\",\n\tơ: \"o\",\n\tƯ: \"U\",\n\tư: \"u\",\n\tǍ: \"A\",\n\tǎ: \"a\",\n\tǏ: \"I\",\n\tǐ: \"i\",\n\tǑ: \"O\",\n\tǒ: \"o\",\n\tǓ: \"U\",\n\tǔ: \"u\",\n\tǕ: \"U\",\n\tǖ: \"u\",\n\tǗ: \"U\",\n\tǘ: \"u\",\n\tǙ: \"U\",\n\tǚ: \"u\",\n\tǛ: \"U\",\n\tǜ: \"u\",\n\tỨ: \"U\",\n\tứ: \"u\",\n\tṸ: \"U\",\n\tṹ: \"u\",\n\tǺ: \"A\",\n\tǻ: \"a\",\n\tǼ: \"AE\",\n\tǽ: \"ae\",\n\tǾ: \"O\",\n\tǿ: \"o\",\n\tÞ: \"TH\",\n\tþ: \"th\",\n\tṔ: \"P\",\n\tṕ: \"p\",\n\tṤ: \"S\",\n\tṥ: \"s\",\n\tX́: \"X\",\n\tx́: \"x\",\n\tЃ: \"Г\",\n\tѓ: \"г\",\n\tЌ: \"К\",\n\tќ: \"к\",\n\tA̋: \"A\",\n\ta̋: \"a\",\n\tE̋: \"E\",\n\te̋: \"e\",\n\tI̋: \"I\",\n\ti̋: \"i\",\n\tǸ: \"N\",\n\tǹ: \"n\",\n\tỒ: \"O\",\n\tồ: \"o\",\n\tṐ: \"O\",\n\tṑ: \"o\",\n\tỪ: \"U\",\n\từ: \"u\",\n\tẀ: \"W\",\n\tẁ: \"w\",\n\tỲ: \"Y\",\n\tỳ: \"y\",\n\tȀ: \"A\",\n\tȁ: \"a\",\n\tȄ: \"E\",\n\tȅ: \"e\",\n\tȈ: \"I\",\n\tȉ: \"i\",\n\tȌ: \"O\",\n\tȍ: \"o\",\n\tȐ: \"R\",\n\tȑ: \"r\",\n\tȔ: \"U\",\n\tȕ: \"u\",\n\tB̌: \"B\",\n\tb̌: \"b\",\n\tČ̣: \"C\",\n\tč̣: \"c\",\n\tÊ̌: \"E\",\n\tê̌: \"e\",\n\tF̌: \"F\",\n\tf̌: \"f\",\n\tǦ: \"G\",\n\tǧ: \"g\",\n\tȞ: \"H\",\n\tȟ: \"h\",\n\tJ̌: \"J\",\n\tǰ: \"j\",\n\tǨ: \"K\",\n\tǩ: \"k\",\n\tM̌: \"M\",\n\tm̌: \"m\",\n\tP̌: \"P\",\n\tp̌: \"p\",\n\tQ̌: \"Q\",\n\tq̌: \"q\",\n\tŘ̩: \"R\",\n\tř̩: \"r\",\n\tṦ: \"S\",\n\tṧ: \"s\",\n\tV̌: \"V\",\n\tv̌: \"v\",\n\tW̌: \"W\",\n\tw̌: \"w\",\n\tX̌: \"X\",\n\tx̌: \"x\",\n\tY̌: \"Y\",\n\ty̌: \"y\",\n\tA̧: \"A\",\n\ta̧: \"a\",\n\tB̧: \"B\",\n\tb̧: \"b\",\n\tḐ: \"D\",\n\tḑ: \"d\",\n\tȨ: \"E\",\n\tȩ: \"e\",\n\tƐ̧: \"E\",\n\tɛ̧: \"e\",\n\tḨ: \"H\",\n\tḩ: \"h\",\n\tI̧: \"I\",\n\ti̧: \"i\",\n\tƗ̧: \"I\",\n\tɨ̧: \"i\",\n\tM̧: \"M\",\n\tm̧: \"m\",\n\tO̧: \"O\",\n\to̧: \"o\",\n\tQ̧: \"Q\",\n\tq̧: \"q\",\n\tU̧: \"U\",\n\tu̧: \"u\",\n\tX̧: \"X\",\n\tx̧: \"x\",\n\tZ̧: \"Z\",\n\tz̧: \"z\"\n};\nconst chars = Object.keys(characterMap).join(\"|\");\nconst allAccents = new RegExp(chars, \"g\");\nfunction removeAccents(str) {\n\treturn str.replace(allAccents, (match) => {\n\t\treturn characterMap[match];\n\t});\n}\n\n//#endregion\nexport { removeAccents };","import { removeAccents } from \"./remove-accents.js\";\n\n//#region src/index.ts\n/**\n* @name match-sorter\n* @license MIT license.\n* @copyright (c) 2099 Kent C. Dodds\n* @author Kent C. Dodds <me@kentcdodds.com> (https://kentcdodds.com)\n*/\nconst rankings = {\n\tCASE_SENSITIVE_EQUAL: 7,\n\tEQUAL: 6,\n\tSTARTS_WITH: 5,\n\tWORD_STARTS_WITH: 4,\n\tCONTAINS: 3,\n\tACRONYM: 2,\n\tMATCHES: 1,\n\tNO_MATCH: 0\n};\n/**\n* Gets the highest ranking value for the given item based on its values for the given keys\n* @param {*} item - the item to rank\n* @param {String} value - the value to rank against\n* @param {Object} options - options to control the ranking\n* @return {{rank: Number, accessorIndex: Number, accessorThreshold: Number}} - the highest ranking\n*/\nfunction rankItem(item, value, options) {\n\toptions = options || {};\n\toptions.threshold = options.threshold ?? rankings.MATCHES;\n\tif (!options.accessors) {\n\t\tconst rank = getMatchRanking(item, value, options);\n\t\treturn {\n\t\t\trankedValue: item,\n\t\t\trank,\n\t\t\taccessorIndex: -1,\n\t\t\taccessorThreshold: options.threshold,\n\t\t\tpassed: rank >= options.threshold\n\t\t};\n\t}\n\tconst valuesToRank = getAllValuesToRank(item, options.accessors);\n\tconst rankingInfo = {\n\t\trankedValue: item,\n\t\trank: rankings.NO_MATCH,\n\t\taccessorIndex: -1,\n\t\taccessorThreshold: options.threshold,\n\t\tpassed: false\n\t};\n\tfor (let i = 0; i < valuesToRank.length; i++) {\n\t\tconst rankValue = valuesToRank[i];\n\t\tlet newRank = getMatchRanking(rankValue.itemValue, value, options);\n\t\tconst { minRanking, maxRanking, threshold = options.threshold } = rankValue.attributes;\n\t\tif (newRank < minRanking && newRank >= rankings.MATCHES) newRank = minRanking;\n\t\telse if (newRank > maxRanking) newRank = maxRanking;\n\t\tnewRank = Math.min(newRank, maxRanking);\n\t\tif (newRank >= threshold && newRank > rankingInfo.rank) {\n\t\t\trankingInfo.rank = newRank;\n\t\t\trankingInfo.passed = true;\n\t\t\trankingInfo.accessorIndex = i;\n\t\t\trankingInfo.accessorThreshold = threshold;\n\t\t\trankingInfo.rankedValue = rankValue.itemValue;\n\t\t}\n\t}\n\treturn rankingInfo;\n}\n/**\n* Gives a rankings score based on how well the two strings match.\n* @param {String} testString - the string to test against\n* @param {String} stringToRank - the string to rank\n* @param {Object} options - options for the match (like keepDiacritics for comparison)\n* @returns {Number} the ranking for how well stringToRank matches testString\n*/\nfunction getMatchRanking(testString, stringToRank, options) {\n\ttestString = prepareValueForComparison(testString, options);\n\tstringToRank = prepareValueForComparison(stringToRank, options);\n\tif (stringToRank.length > testString.length) return rankings.NO_MATCH;\n\tif (testString === stringToRank) return rankings.CASE_SENSITIVE_EQUAL;\n\ttestString = testString.toLowerCase();\n\tstringToRank = stringToRank.toLowerCase();\n\tif (testString === stringToRank) return rankings.EQUAL;\n\tif (testString.startsWith(stringToRank)) return rankings.STARTS_WITH;\n\tif (testString.includes(` ${stringToRank}`)) return rankings.WORD_STARTS_WITH;\n\tif (testString.includes(stringToRank)) return rankings.CONTAINS;\n\telse if (stringToRank.length === 1) return rankings.NO_MATCH;\n\tif (getAcronym(testString).includes(stringToRank)) return rankings.ACRONYM;\n\treturn getClosenessRanking(testString, stringToRank);\n}\n/**\n* Generates an acronym for a string.\n*\n* @param {String} string the string for which to produce the acronym\n* @returns {String} the acronym\n*/\nfunction getAcronym(string) {\n\tlet acronym = \"\";\n\tstring.split(\" \").forEach((wordInString) => {\n\t\twordInString.split(\"-\").forEach((splitByHyphenWord) => {\n\t\t\tacronym += splitByHyphenWord.substr(0, 1);\n\t\t});\n\t});\n\treturn acronym;\n}\n/**\n* Returns a score based on how spread apart the\n* characters from the stringToRank are within the testString.\n* A number close to rankings.MATCHES represents a loose match. A number close\n* to rankings.MATCHES + 1 represents a tighter match.\n* @param {String} testString - the string to test against\n* @param {String} stringToRank - the string to rank\n* @returns {Number} the number between rankings.MATCHES and\n* rankings.MATCHES + 1 for how well stringToRank matches testString\n*/\nfunction getClosenessRanking(testString, stringToRank) {\n\tlet matchingInOrderCharCount = 0;\n\tlet charNumber = 0;\n\tfunction findMatchingCharacter(matchChar, string, index) {\n\t\tfor (let j = index, J = string.length; j < J; j++) if (string[j] === matchChar) {\n\t\t\tmatchingInOrderCharCount += 1;\n\t\t\treturn j + 1;\n\t\t}\n\t\treturn -1;\n\t}\n\tfunction getRanking(spread) {\n\t\tconst spreadPercentage = 1 / spread;\n\t\tconst inOrderPercentage = matchingInOrderCharCount / stringToRank.length;\n\t\treturn rankings.MATCHES + inOrderPercentage * spreadPercentage;\n\t}\n\tconst firstIndex = findMatchingCharacter(stringToRank[0], testString, 0);\n\tif (firstIndex < 0) return rankings.NO_MATCH;\n\tcharNumber = firstIndex;\n\tfor (let i = 1, I = stringToRank.length; i < I; i++) {\n\t\tconst matchChar = stringToRank[i];\n\t\tcharNumber = findMatchingCharacter(matchChar, testString, charNumber);\n\t\tif (!(charNumber > -1)) return rankings.NO_MATCH;\n\t}\n\treturn getRanking(charNumber - firstIndex);\n}\n/**\n* Sorts items that have a rank, index, and accessorIndex\n* @param {Object} a - the first item to sort\n* @param {Object} b - the second item to sort\n* @return {Number} -1 if a should come first, 1 if b should come first, 0 if equal\n*/\nfunction compareItems(a, b) {\n\treturn a.rank === b.rank ? 0 : a.rank > b.rank ? -1 : 1;\n}\n/**\n* Prepares value for comparison by stringifying it, removing diacritics (if specified)\n* @param {String} value - the value to clean\n* @param {Object} options - {keepDiacritics: whether to remove diacritics}\n* @return {String} the prepared value\n*/\nfunction prepareValueForComparison(value, { keepDiacritics }) {\n\tvalue = `${value}`;\n\tif (!keepDiacritics) value = removeAccents(value);\n\treturn value;\n}\n/**\n* Gets value for key in item at arbitrarily nested keypath\n* @param {Object} item - the item\n* @param {Object|Function} key - the potentially nested keypath or property callback\n* @return {Array} - an array containing the value(s) at the nested keypath\n*/\nfunction getItemValues(item, accessor) {\n\tlet accessorFn = accessor;\n\tif (typeof accessor === \"object\") accessorFn = accessor.accessor;\n\tconst value = accessorFn(item);\n\tif (value == null) return [];\n\tif (Array.isArray(value)) return value;\n\treturn [String(value)];\n}\n/**\n* Gets all the values for the given keys in the given item and returns an array of those values\n* @param item - the item from which the values will be retrieved\n* @param keys - the keys to use to retrieve the values\n* @return objects with {itemValue, attributes}\n*/\nfunction getAllValuesToRank(item, accessors) {\n\tconst allValues = [];\n\tfor (let j = 0, J = accessors.length; j < J; j++) {\n\t\tconst accessor = accessors[j];\n\t\tconst attributes = getAccessorAttributes(accessor);\n\t\tconst itemValues = getItemValues(item, accessor);\n\t\tfor (let i = 0, I = itemValues.length; i < I; i++) allValues.push({\n\t\t\titemValue: itemValues[i],\n\t\t\tattributes\n\t\t});\n\t}\n\treturn allValues;\n}\nconst defaultKeyAttributes = {\n\tmaxRanking: Infinity,\n\tminRanking: -Infinity\n};\n/**\n* Gets all the attributes for the given accessor\n* @param accessor - the accessor from which the attributes will be retrieved\n* @return object containing the accessor's attributes\n*/\nfunction getAccessorAttributes(accessor) {\n\tif (typeof accessor === \"function\") return defaultKeyAttributes;\n\treturn {\n\t\t...defaultKeyAttributes,\n\t\t...accessor\n\t};\n}\n\n//#endregion\nexport { compareItems, rankItem, rankings };","// ── <sken-datatable> — framework-ready data table (M1 shell) ─────────\n\nimport {\n TableController,\n columnFilteringFeature,\n createFilteredRowModel,\n createPaginatedRowModel,\n createSortedRowModel,\n globalFilteringFeature,\n rowPaginationFeature,\n rowSortingFeature,\n tableFeatures,\n type ColumnDef,\n type RowData,\n type SortingState,\n type TableFeatures,\n} from '@tanstack/lit-table'\nimport { LitElement, css, html, nothing, type TemplateResult } from 'lit'\nimport { customElement, property } from 'lit/decorators.js'\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport { rankItem } from '@tanstack/match-sorter-utils'\nimport * as _tableCoreStaticNS from '@tanstack/table-core/static-functions'\n\nexport type SkenColumnDef<TData extends RowData> = ColumnDef<TableFeatures, TData>\n\nexport interface SkenDataTableOptions<TData extends RowData> {\n rows: TData[]\n columns: SkenColumnDef<TData>[]\n getRowId: (row: TData, index: number) => string\n loading?: boolean\n empty?: string\n}\n\n@customElement('sken-datatable')\nexport class SkenDataTable<TData extends RowData> extends LitElement {\n @property({ attribute: false }) rows: TData[] = []\n\n @property({ attribute: false }) columns: SkenColumnDef<TData>[] = []\n\n @property({ attribute: false }) getRowId: ((row: TData, index: number) => string) | undefined =\n undefined\n\n @property({ reflect: true, type: Boolean }) loading = false\n\n @property() empty: string | undefined = undefined\n\n @property({ attribute: false }) sorting: SortingState | undefined = undefined\n\n @property({ attribute: false }) globalFilter: string | undefined = undefined\n\n @property() filterPlaceholder: string = 'Filter…'\n\n @property({ attribute: false }) pagination: { pageIndex: number; pageSize: number } | undefined =\n undefined\n\n @property({ attribute: 'default-page-size', type: Number }) defaultPageSize: number = 10\n\n #uncontrolledSorting: SortingState = []\n #uncontrolledGlobalFilter: string = ''\n #uncontrolledPagination: { pageIndex: number; pageSize: number } = {\n pageIndex: 0,\n pageSize: 10,\n }\n\n #features = tableFeatures({\n rowSortingFeature,\n sortedRowModel: createSortedRowModel(),\n columnFilteringFeature,\n filteredRowModel: createFilteredRowModel(),\n globalFilteringFeature,\n rowPaginationFeature,\n paginatedRowModel: createPaginatedRowModel(),\n })\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n #tableController: TableController<any, TData> | undefined = undefined\n\n #getTableController() {\n if (this.#tableController === undefined) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.#tableController = new TableController<any, TData>(this)\n }\n return this.#tableController\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n #fuzzyFilter = (row: any, _columnId: string, filterValue: unknown): boolean => {\n const flat = Object.values(row.original ?? {})\n .map((v) => (v === null || v === undefined ? '' : String(v)))\n .join(' ')\n const itemRank = rankItem(flat, String(filterValue ?? ''))\n return itemRank.passed\n }\n\n #warnIfNoGetRowId(): void {\n if (this.getRowId === undefined && globalThis.console !== undefined) {\n globalThis.console.warn(\n '[sken-datatable] Missing `getRowId`. This is required in M1.x once ' +\n 'row selection, expansion, or server-side filtering are added. ' +\n 'See ADR-0006 §4 and the research report §1.',\n )\n }\n }\n\n override connectedCallback(): void {\n super.connectedCallback()\n this.#warnIfNoGetRowId()\n if (this.#uncontrolledPagination.pageSize === 10 && this.defaultPageSize !== 10) {\n this.#uncontrolledPagination = {\n pageIndex: 0,\n pageSize: this.defaultPageSize,\n }\n }\n }\n\n override render(): TemplateResult {\n if (this.loading) {\n return html`\n <div class=\"loading\" role=\"status\" aria-busy=\"true\">\n <slot name=\"loading\"></slot>\n </div>\n `\n }\n\n if (this.rows.length === 0) {\n return this.#renderEmpty()\n }\n\n const state: Record<string, unknown> = {}\n const initialState: Record<string, unknown> = {}\n if (this.sorting !== undefined && this.sorting.length > 0) {\n state.sorting = this.sorting\n initialState.sorting = this.sorting\n } else {\n const uncontrolledSorting = this.#uncontrolledSorting\n if (uncontrolledSorting.length > 0) {\n state.sorting = uncontrolledSorting\n initialState.sorting = uncontrolledSorting\n }\n }\n if (this.globalFilter !== undefined) {\n state.globalFilter = this.globalFilter\n initialState.globalFilter = this.globalFilter\n } else {\n const uncontrolledGlobalFilter = this.#uncontrolledGlobalFilter\n state.globalFilter = uncontrolledGlobalFilter\n initialState.globalFilter = uncontrolledGlobalFilter\n }\n if (this.pagination !== undefined) {\n state.pagination = this.pagination\n initialState.pagination = this.pagination\n } else {\n initialState.pagination = this.#uncontrolledPagination\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const table = this.#getTableController().table({\n data: this.rows,\n columns: this.columns,\n getRowId: this.getRowId ?? ((_row, index) => String(index)),\n features: this.#features,\n globalFilterFn: this.#fuzzyFilter,\n state,\n initialState,\n onSortingChange: (updater: unknown) => {\n const current = this.sorting ?? this.#uncontrolledSorting\n const nextSorting =\n typeof updater === 'function'\n ? (updater as (old: SortingState) => SortingState)(current)\n : (updater as SortingState)\n if (this.sorting === undefined) {\n this.#uncontrolledSorting = nextSorting\n this.requestUpdate()\n }\n this.dispatchEvent(\n new CustomEvent<SortingState>('sken-sort-change', {\n detail: nextSorting,\n bubbles: true,\n composed: true,\n }),\n )\n },\n onGlobalFilterChange: (updater: unknown) => {\n const current = this.globalFilter ?? this.#uncontrolledGlobalFilter\n const nextFilter =\n typeof updater === 'function'\n ? (updater as (old: string) => string)(current)\n : (updater as string)\n if (this.globalFilter === undefined) {\n this.#uncontrolledGlobalFilter = nextFilter\n this.requestUpdate()\n }\n this.dispatchEvent(\n new CustomEvent<string>('sken-global-filter-change', {\n detail: nextFilter,\n bubbles: true,\n composed: true,\n }),\n )\n },\n onPaginationChange: (updater: unknown) => {\n const current = this.pagination ?? this.#uncontrolledPagination\n const next =\n typeof updater === 'function'\n ? (updater as (old: typeof current) => typeof current)(current)\n : (updater as typeof current)\n if (this.pagination === undefined) {\n this.#uncontrolledPagination = next\n this.requestUpdate()\n }\n this.dispatchEvent(\n new CustomEvent<typeof current>('sken-pagination-change', {\n detail: next,\n bubbles: true,\n composed: true,\n }),\n )\n },\n } as any)\n\n // TanStack's `TableController` deliberately defers the external `state`\n // → internal store sync to `hostUpdated()` (after Lit has patched the\n // DOM). That's the right move for React/Solid (the store commit is\n // async) but the wrong one for our render path: we read\n // `table.getRowModel()` here, and that read needs the sorted /\n // filtered / paginated model to be live *in this render* — not one\n // commit later. Without this, every controlled sort/filter/page\n // action lags a render and tests + the browser probe see the\n // pre-sync state. We re-publish the captured state before reading\n // the row model; the controller's own `hostUpdated` call later is a\n // safe no-op (the compare function is `===`, the values match).\n //\n // TanStack v9's `TableController.table_setOptions(..., { syncExternalState: false })`\n // defers the external `state` to internal store sync to\n // `hostUpdated()` (after Lit has patched the DOM). The render\n // reads `table.getRowModel()` with the OLD snapshot, so the\n // first render with `state.sorting = [{id, desc}]` does not\n // reflect the sort. Fix: call `table_publishExternalState` from\n // `@tanstack/table-core/static-functions` (subpath, not\n // re-exported from the main index) in `render()` right after\n // building the `table` and before the first `getHeaderGroups()`\n // / `getRowModel()`. The controller's own `hostUpdated` call\n // later is a safe no-op (the compare function is `===`, the\n // values match).\n //\n // **Tree-shake guard**: `@tanstack/table-core` declares\n // `\"sideEffects\": false` in its package.json. Rollup treats\n // every import from that package as pure, and `table_publishExternalState`\n // returns `void` — so an isolated expression-statement call is\n // tree-shaken away in the production bundle. The symptom is\n // silent: tests pass (happy-dom happens to flush in a way that\n // hides the lag), the bundle drops ~150 bytes, and the browser\n // stops reflecting controlled sort/filter/page. We defeat\n // the tree-shake by assigning the call's return value to a\n // module-level `Reflect`-style sink — Rollup treats\n // `Reflect.set` as side-effectful and keeps the call. The cast\n // through `any` covers the `TFeatures` mismatch (the public\n // type is open).\n // Use the namespace import (not the named one) to call the\n // function. The named import is still here for type-only\n // reasons, but the actual call goes through the namespace\n // binding — which Rollup cannot tree-shake because the\n // namespace import is a side-effect anchor (any other code\n // path that reads `_tableCoreStaticNS` would force the\n // module to stay; here the IIFE reads the namespace and so\n // the call survives the bundler).\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ;(_tableCoreStaticNS as any).table_publishExternalState(\n table as any,\n state,\n (a: unknown, b: unknown) => a === b,\n )\n\n return html`\n <div class=\"filter-bar\">\n <slot name=\"filter\">\n <input\n class=\"filter-input\"\n type=\"search\"\n placeholder=${this.filterPlaceholder}\n aria-label=\"Filter rows\"\n .value=${this.globalFilter ?? this.#uncontrolledGlobalFilter}\n @input=${(e: Event) => {\n const input = e.target as HTMLInputElement\n if (this.globalFilter === undefined) {\n this.#uncontrolledGlobalFilter = input.value\n this.requestUpdate()\n }\n this.dispatchEvent(\n new CustomEvent<string>('sken-global-filter-change', {\n detail: input.value,\n bubbles: true,\n composed: true,\n }),\n )\n }}\n />\n </slot>\n </div>\n <table>\n <thead>\n ${table.getHeaderGroups().map((headerGroup: unknown) => {\n const group = headerGroup as unknown as {\n id: string\n headers: ReadonlyArray<{\n id: string\n column: {\n id: string\n columnDef: { header?: unknown; enableSorting?: boolean }\n getCanSort: () => boolean\n getIsSorted: () => false | 'asc' | 'desc'\n getToggleSortingHandler: () => undefined | ((e: unknown) => void)\n }\n }>\n }\n return html`\n <tr>\n ${group.headers.map((header) => {\n const headerRenderable = header.column.columnDef.header\n const headerText =\n typeof headerRenderable === 'string' ? headerRenderable : header.column.id\n const canSort = header.column.getCanSort()\n const isSorted = header.column.getIsSorted()\n const sortIndicator = isSorted === 'asc' ? '▲' : isSorted === 'desc' ? '▼' : ''\n const handler = header.column.getToggleSortingHandler()\n return html`\n <th\n scope=\"col\"\n part=\"header-cell\"\n data-column-id=${header.column.id}\n class=${canSort ? 'sortable' : ''}\n role=${canSort ? 'button' : nothing}\n tabindex=${canSort ? '0' : nothing}\n aria-sort=${\n isSorted === 'asc'\n ? 'ascending'\n : isSorted === 'desc'\n ? 'descending'\n : 'none'\n }\n @click=${canSort && handler ? handler : null}\n @keydown=${\n canSort && handler\n ? (e: KeyboardEvent) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault()\n handler(e)\n }\n }\n : null\n }\n >\n <span class=\"header-text\">${headerText}</span>\n ${\n canSort\n ? html`<span\n class=\"sort-indicator\"\n data-state=${isSorted || 'none'}\n aria-hidden=\"true\"\n >${sortIndicator}</span\n >`\n : nothing\n }\n </th>\n `\n })}\n </tr>\n `\n })}\n </thead>\n <tbody>\n ${table.getRowModel().rows.map((row: unknown) => {\n const r = row as unknown as {\n id: string\n getAllCells: () => ReadonlyArray<{\n id: string\n column: { id: string }\n getValue: () => unknown\n }>\n }\n return html`\n <tr part=\"row\" data-row-id=${r.id}>\n ${r.getAllCells().map((cell) => {\n const cellValue = cell.getValue()\n return html`\n <td part=\"cell\" data-column-id=${cell.column.id}>\n ${cellValue === null || cellValue === undefined ? nothing : String(cellValue)}\n </td>\n `\n })}\n </tr>\n `\n })}\n </tbody>\n </table>\n\n <div class=\"pagination-bar\" part=\"pagination\">\n <slot name=\"pagination\">\n ${(() => {\n const t = table as unknown as {\n state: { pagination: { pageIndex: number; pageSize: number } }\n getPageCount: () => number\n getCanPreviousPage: () => boolean\n getCanNextPage: () => boolean\n previousPage: () => void\n nextPage: () => void\n setPageIndex: (i: number) => void\n }\n const { pageIndex, pageSize } = t.state.pagination\n const pageCount = t.getPageCount()\n return html`\n <button\n type=\"button\"\n class=\"page-btn\"\n ?disabled=${!t.getCanPreviousPage()}\n @click=${() => t.previousPage()}\n aria-label=\"Previous page\"\n >\n ← Prev\n </button>\n <span class=\"page-info\"> Page ${pageIndex + 1} of ${Math.max(pageCount, 1)} </span>\n <button\n type=\"button\"\n class=\"page-btn\"\n ?disabled=${!t.getCanNextPage()}\n @click=${() => t.nextPage()}\n aria-label=\"Next page\"\n >\n Next →\n </button>\n <span class=\"page-size-info\">${pageSize} per page</span>\n `\n })()}\n </slot>\n </div>\n `\n }\n\n #renderEmpty(): TemplateResult {\n return html`\n <div class=\"empty\" role=\"status\">\n <slot name=\"empty\">${this.empty ?? 'No rows'}</slot>\n </div>\n `\n }\n\n static styles = css`\n :host {\n display: block;\n inline-size: 100%;\n font-family: var(--sken-family-sans);\n color: var(--sken-foreground);\n }\n\n table {\n inline-size: 100%;\n border-collapse: collapse;\n border: 1px solid var(--sken-border);\n border-radius: var(--sken-md);\n overflow: hidden;\n }\n\n thead {\n background: var(--sken-muted);\n }\n\n th,\n td {\n padding-block: var(--sken-2);\n padding-inline: var(--sken-3);\n text-align: start;\n border-block-end: 1px solid var(--sken-border);\n }\n\n th {\n font-weight: var(--sken-weight-semibold);\n color: var(--sken-foreground);\n }\n\n th.sortable {\n cursor: pointer;\n user-select: none;\n }\n\n th.sortable:hover {\n background: var(--sken-muted);\n }\n\n /* Keyboard focus indicator. Use :focus-visible (not :focus) so\n * the outline only appears for keyboard navigation, not for\n * mouse clicks. Matches the WAI-ARIA Authoring Practices\n * recommendation for sortable column headers. The outline\n * uses the brand token so it is consistent with the rest of\n * the design system; outline-offset keeps it off the cell\n * border so it stays legible against the header background.\n */\n th.sortable:focus-visible {\n outline: 2px solid var(--sken-primary);\n outline-offset: -2px;\n }\n\n th .header-text {\n margin-inline-end: 0.25rem;\n }\n\n th .sort-indicator {\n display: inline-block;\n min-inline-size: 0.75rem;\n color: var(--sken-muted-foreground);\n font-size: 0.75em;\n }\n\n th .sort-indicator[data-state='asc'],\n th .sort-indicator[data-state='desc'] {\n color: var(--sken-primary);\n }\n\n tbody tr:last-child td {\n border-block-end: none;\n }\n\n tbody tr:hover {\n background: var(--sken-muted);\n }\n\n .empty {\n padding-block: var(--sken-4);\n padding-inline: var(--sken-3);\n text-align: center;\n color: var(--sken-muted-foreground);\n border: 1px solid var(--sken-border);\n border-radius: var(--sken-md);\n }\n\n .loading {\n display: flex;\n align-items: center;\n justify-content: center;\n padding-block: var(--sken-6);\n min-block-size: 12rem;\n border: 1px solid var(--sken-border);\n border-radius: var(--sken-md);\n color: var(--sken-muted-foreground);\n }\n\n /* The loading region renders a loading slot. The consumer\n supplies the spinner (typically a sken-icon with name\n spinner, which animates itself per its name) and the\n datatable provides the layout + accessible status region.\n The keyframe is owned by the icon package, not here,\n because the rotation is part of what spinner means: a\n static spinner would be a different icon. */\n\n .filter-bar {\n margin-block-end: 0.75rem;\n }\n\n .filter-input {\n box-sizing: border-box;\n inline-size: 100%;\n max-inline-size: 20rem;\n padding-block: var(--sken-2);\n padding-inline: var(--sken-3);\n border: 1px solid var(--sken-border);\n border-radius: var(--sken-md);\n background: var(--sken-background);\n color: var(--sken-foreground);\n font-family: var(--sken-family-sans);\n font-size: var(--sken-size-md);\n }\n\n .filter-input::placeholder {\n color: var(--sken-muted-foreground);\n }\n\n .filter-input:focus-visible {\n outline: 2px solid var(--sken-primary);\n outline-offset: 1px;\n }\n\n .pagination-bar {\n display: flex;\n align-items: center;\n gap: 0.75rem;\n margin-block-start: 0.75rem;\n font-size: 0.875rem;\n color: var(--sken-muted-foreground);\n }\n\n .page-btn {\n padding-block: var(--sken-1);\n padding-inline: var(--sken-3);\n border: 1px solid var(--sken-border);\n border-radius: var(--sken-sm);\n background: var(--sken-background);\n color: var(--sken-foreground);\n font-family: inherit;\n font-size: inherit;\n cursor: pointer;\n }\n\n .page-btn:hover:not(:disabled) {\n background: var(--sken-muted);\n }\n\n .page-btn:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n\n .page-info {\n color: var(--sken-foreground);\n }\n `\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'sken-datatable': SkenDataTable<RowData>\n }\n}\n"],"x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18],"mappings":"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AAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,IAAI;CACJ,IAAI;CACJ,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,IAAI;CACJ,IAAI;CACJ,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,IAAI;CACJ,IAAI;CACJ,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,IAAI;CACJ,IAAI;CACJ,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,IAAI;CACJ,IAAI;CACJ,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,IAAI;CACJ,IAAI;CACJ,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,IAAI;CACJ,IAAI;CACJ,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,IAAI;CACJ,IAAI;CACJ,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,IAAI;CACJ,IAAI;CACJ,GAAG;CACH,GAAG;CACH,GAAG;CACH,IAAI;CACJ,IAAI;CACJ,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,IAAI;CACJ,IAAI;CACJ,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,IAAI;CACJ,GAAG;CACH,GAAG;CACH,GAAG;CACH,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,GAAG;CACH,GAAG;CACH,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,IAAI;CACJ,IAAI;CACJ,G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"}
@@ -1,2 +1,2 @@
1
- import { t as e } from "./sken-datatable-CEXcvhM-.js";
1
+ import { t as e } from "./sken-datatable-DSXSyrNf.js";
2
2
  export { e as SkenDataTable };
@@ -1,4 +1,4 @@
1
- import { t as e } from "./decorate-D4FKzyDw.js";
1
+ import { t as e } from "./decorate-C1e2sg49.js";
2
2
  import { LitElement as t, html as n } from "lit";
3
3
  import { customElement as r, property as i } from "lit/decorators.js";
4
4
  //#region src/components/sken-date-picker.ts
@@ -1 +1 @@
1
- {"version":3,"file":"sken-date-picker.js","names":[],"sources":["../src/components/sken-date-picker.ts"],"sourcesContent":["/**\n * `<sken-date-picker>` — Sken contract implementation backed by\n * Siemens iX 5's `<ix-date-input>`.\n *\n * The Sken contract (`SkenDatePickerProps`, `SkenDatePickerEmits`,\n * `skenDatePickerAria`) lives in `@sken-ds/contracts`. This component\n * is a thin Lit 3 wrapper that:\n *\n * 1. Accepts the Sken contract props on a `<sken-date-picker>`\n * custom element registered via `@customElement`.\n * 2. Renders a single `<ix-date-input>` with the Sken-shaped\n * `value` mapped to iX's `value` prop, the Sken `label`\n * rendered as an `<ix-label>` child, and the Sken\n * `helperText` rendered as an `<ix-typography>` child in\n * the `end` slot.\n * 3. Translates iX's `valueChange` event into Sken's\n * `sken-change` CustomEvent whose `detail.value` is the new\n * ISO 8601 date string or `null`.\n *\n * Subpath: import from `@sken-ds/primitives/sken-date-picker` to\n * register the custom element.\n *\n * Consumer boot sequence (same as `<sken-combobox>`):\n *\n * 1. `import '@siemens/ix/dist/siemens-ix/siemens-ix.css'`\n * 2. `defineCustomElements(window)` for both `@siemens/ix/loader`\n * and `@siemens/ix-icons/loader`, BEFORE any\n * `<sken-date-picker>` renders (Stencil does not re-hydrate).\n * 3. `import '@sken-ds/primitives/ix-bridge.css'` once at app boot\n * so the date-picker popover (`<ix-date-time-card>`,\n * `<ix-date-picker>`) renders in Sken colours instead of\n * iX classic light values. The consumer is responsible for\n * setting `data-theme` on a common ancestor.\n */\nimport { LitElement, html } from 'lit'\nimport { customElement, property } from 'lit/decorators.js'\n\nimport type { SkenDatePickerProps } from '@sken-ds/contracts'\n\n@customElement('sken-date-picker')\nexport class SkenDatePicker\n extends LitElement\n implements\n Pick<\n SkenDatePickerProps,\n | 'value'\n | 'label'\n | 'helperText'\n | 'placeholder'\n | 'disabled'\n | 'format'\n | 'minDate'\n | 'maxDate'\n | 'locale'\n >\n{\n /** Controlled value (ISO 8601 `yyyy-MM-dd`). `null` means no selection. */\n @property({ attribute: false })\n value: string | null = null\n\n /** Visible label rendered above the input. */\n @property() label = ''\n\n /** Helper text rendered below the input. */\n @property({ attribute: 'helper-text' })\n helperText = ''\n\n /** Placeholder shown when the input is empty. */\n @property() placeholder = ''\n\n /** Disabled state. @default false */\n @property({ type: Boolean })\n disabled = false\n\n /** Display format. Luxon-style tokens. @default \"yyyy-MM-dd\" */\n @property() format = 'yyyy-MM-dd'\n\n /** Earliest selectable date (ISO 8601 `yyyy-MM-dd`). */\n @property({ attribute: 'min-date' })\n minDate?: string\n\n /** Latest selectable date (ISO 8601 `yyyy-MM-dd`). */\n @property({ attribute: 'max-date' })\n maxDate?: string\n\n /** BCP 47 locale tag. */\n @property() locale?: string\n\n /**\n * Translate iX's `valueChange` event into Sken's `sken-change`\n * CustomEvent. iX 5 emits `valueChange` with `detail` set to\n * a `string | undefined` directly (not an object). We pass\n * the value through as-is so the consumer gets the same\n * string format they passed in; an empty value maps to\n * `null` so the Sken contract stays `string | null`.\n */\n private onIxValueChange = (e: Event) => {\n const detail = (e as CustomEvent<string | undefined>).detail\n const next = detail == null || detail === '' ? null : detail\n if (next === this.value) return\n this.value = next\n this.dispatchEvent(\n new CustomEvent<{ value: string | null }>('sken-change', {\n detail: { value: next },\n bubbles: true,\n composed: true,\n }),\n )\n }\n\n // Light DOM so Sken tokens (CSS custom properties) cascade\n // from the document root into the iX shadow tree. The re-skin\n // mapping (`--ix-*` → Sken tokens) lives in\n // `@sken-ds/primitives/ix-bridge.css`, which the consumer\n // imports once at app boot.\n protected override createRenderRoot(): HTMLElement {\n return this as unknown as HTMLElement\n }\n\n protected override render() {\n return html`\n <ix-date-input\n .value=${this.value ?? ''}\n format=${this.format}\n ?disabled=${this.disabled}\n placeholder=${this.placeholder}\n min-date=${this.minDate ?? ''}\n max-date=${this.maxDate ?? ''}\n locale=${this.locale ?? ''}\n data-testid=\"sken-date-picker\"\n @valueChange=${this.onIxValueChange}\n >\n ${this.label ? html`<ix-label>${this.label}</ix-label>` : null}\n ${\n this.helperText\n ? html`<ix-typography slot=\"end\">${this.helperText}</ix-typography>`\n : null\n }\n </ix-date-input>\n `\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'sken-date-picker': SkenDatePicker\n }\n}\n"],"mappings":";;;;AAwCO,IAAM,IAAN,cACG,EAcV;;EAyC6B,aAtCJ,KAAA,QAAA,MAGH,KAAA,QAAA,IAIP,KAAA,aAAA,IAGa,KAAA,cAAA,IAIf,KAAA,WAAA,IAGU,KAAA,SAAA,cAqBM,KAAA,mBAAA,MAAa;GACtC,IAAM,IAAU,EAAsC,QAChD,IAAO,KAAU,QAAQ,MAAW,KAAK,OAAO;GAClD,MAAS,KAAK,UAClB,KAAK,QAAQ,GACb,KAAK,cACH,IAAI,YAAsC,eAAe;IACvD,QAAQ,EAAE,OAAO,EAAK;IACtB,SAAS;IACT,UAAU;GACZ,CAAC,CACH;EACF;;CAOA,mBAAmD;EACjD,OAAO;CACT;CAEA,SAA4B;EAC1B,OAAO,CAAI;;iBAEE,KAAK,SAAS,GAAG;iBACjB,KAAK,OAAO;oBACT,KAAK,SAAS;sBACZ,KAAK,YAAY;mBACpB,KAAK,WAAW,GAAG;mBACnB,KAAK,WAAW,GAAG;iBACrB,KAAK,UAAU,GAAG;;uBAEZ,KAAK,gBAAgB;;UAElC,KAAK,QAAQ,CAAI,aAAa,KAAK,MAAM,eAAe,KAAK;UAE7D,KAAK,aACD,CAAI,6BAA6B,KAAK,WAAW,oBACjD,KACL;;;CAGP;AACF;AApFG,EAAA,CAAA,EAAS,EAAE,WAAW,GAAM,CAAC,CAAA,GAAA,EAAA,WAAA,SAAA,KAAA,CAAA,GAI7B,EAAA,CAAA,EAAS,CAAA,GAAA,EAAA,WAAA,SAAA,KAAA,CAAA,GAGT,EAAA,CAAA,EAAS,EAAE,WAAW,cAAc,CAAC,CAAA,GAAA,EAAA,WAAA,cAAA,KAAA,CAAA,GAIrC,EAAA,CAAA,EAAS,CAAA,GAAA,EAAA,WAAA,eAAA,KAAA,CAAA,GAGT,EAAA,CAAA,EAAS,EAAE,MAAM,QAAQ,CAAC,CAAA,GAAA,EAAA,WAAA,YAAA,KAAA,CAAA,GAI1B,EAAA,CAAA,EAAS,CAAA,GAAA,EAAA,WAAA,UAAA,KAAA,CAAA,GAGT,EAAA,CAAA,EAAS,EAAE,WAAW,WAAW,CAAC,CAAA,GAAA,EAAA,WAAA,WAAA,KAAA,CAAA,GAIlC,EAAA,CAAA,EAAS,EAAE,WAAW,WAAW,CAAC,CAAA,GAAA,EAAA,WAAA,WAAA,KAAA,CAAA,GAIlC,EAAA,CAAA,EAAS,CAAA,GAAA,EAAA,WAAA,UAAA,KAAA,CAAA,GA/CX,IAAA,EAAA,CAAA,EAAc,kBAAkB,CAAA,GAAA,CAAA"}
1
+ {"version":3,"file":"sken-date-picker.js","names":[],"sources":["../src/components/sken-date-picker.ts"],"sourcesContent":["import { LitElement, html } from 'lit'\nimport { customElement, property } from 'lit/decorators.js'\n\nimport type { SkenDatePickerProps } from '@sken-ds/contracts'\n\n@customElement('sken-date-picker')\nexport class SkenDatePicker\n extends LitElement\n implements\n Pick<\n SkenDatePickerProps,\n | 'value'\n | 'label'\n | 'helperText'\n | 'placeholder'\n | 'disabled'\n | 'format'\n | 'minDate'\n | 'maxDate'\n | 'locale'\n >\n{\n @property({ attribute: false })\n value: string | null = null\n\n @property() label = ''\n\n @property({ attribute: 'helper-text' })\n helperText = ''\n\n @property() placeholder = ''\n\n @property({ type: Boolean })\n disabled = false\n\n @property() format = 'yyyy-MM-dd'\n\n @property({ attribute: 'min-date' })\n minDate?: string\n\n @property({ attribute: 'max-date' })\n maxDate?: string\n\n @property() locale?: string\n\n private onIxValueChange = (e: Event) => {\n const detail = (e as CustomEvent<string | undefined>).detail\n const next = detail == null || detail === '' ? null : detail\n if (next === this.value) return\n this.value = next\n this.dispatchEvent(\n new CustomEvent<{ value: string | null }>('sken-change', {\n detail: { value: next },\n bubbles: true,\n composed: true,\n }),\n )\n }\n\n protected override createRenderRoot(): HTMLElement {\n return this as unknown as HTMLElement\n }\n\n protected override render() {\n return html`\n <ix-date-input\n .value=${this.value ?? ''}\n format=${this.format}\n ?disabled=${this.disabled}\n placeholder=${this.placeholder}\n min-date=${this.minDate ?? ''}\n max-date=${this.maxDate ?? ''}\n locale=${this.locale ?? ''}\n data-testid=\"sken-date-picker\"\n @valueChange=${this.onIxValueChange}\n >\n ${this.label ? html`<ix-label>${this.label}</ix-label>` : null}\n ${\n this.helperText\n ? html`<ix-typography slot=\"end\">${this.helperText}</ix-typography>`\n : null\n }\n </ix-date-input>\n `\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'sken-date-picker': SkenDatePicker\n }\n}\n"],"mappings":";;;;AAMO,IAAM,IAAN,cACG,EAcV;;EAwB6B,aAtBJ,KAAA,QAAA,MAEH,KAAA,QAAA,IAGP,KAAA,aAAA,IAEa,KAAA,cAAA,IAGf,KAAA,WAAA,IAEU,KAAA,SAAA,cAUM,KAAA,mBAAA,MAAa;GACtC,IAAM,IAAU,EAAsC,QAChD,IAAO,KAAU,QAAQ,MAAW,KAAK,OAAO;GAClD,MAAS,KAAK,UAClB,KAAK,QAAQ,GACb,KAAK,cACH,IAAI,YAAsC,eAAe;IACvD,QAAQ,EAAE,OAAO,EAAK;IACtB,SAAS;IACT,UAAU;GACZ,CAAC,CACH;EACF;;CAEA,mBAAmD;EACjD,OAAO;CACT;CAEA,SAA4B;EAC1B,OAAO,CAAI;;iBAEE,KAAK,SAAS,GAAG;iBACjB,KAAK,OAAO;oBACT,KAAK,SAAS;sBACZ,KAAK,YAAY;mBACpB,KAAK,WAAW,GAAG;mBACnB,KAAK,WAAW,GAAG;iBACrB,KAAK,UAAU,GAAG;;uBAEZ,KAAK,gBAAgB;;UAElC,KAAK,QAAQ,CAAI,aAAa,KAAK,MAAM,eAAe,KAAK;UAE7D,KAAK,aACD,CAAI,6BAA6B,KAAK,WAAW,oBACjD,KACL;;;CAGP;AACF;AA/DG,EAAA,CAAA,EAAS,EAAE,WAAW,GAAM,CAAC,CAAA,GAAA,EAAA,WAAA,SAAA,KAAA,CAAA,GAG7B,EAAA,CAAA,EAAS,CAAA,GAAA,EAAA,WAAA,SAAA,KAAA,CAAA,GAET,EAAA,CAAA,EAAS,EAAE,WAAW,cAAc,CAAC,CAAA,GAAA,EAAA,WAAA,cAAA,KAAA,CAAA,GAGrC,EAAA,CAAA,EAAS,CAAA,GAAA,EAAA,WAAA,eAAA,KAAA,CAAA,GAET,EAAA,CAAA,EAAS,EAAE,MAAM,QAAQ,CAAC,CAAA,GAAA,EAAA,WAAA,YAAA,KAAA,CAAA,GAG1B,EAAA,CAAA,EAAS,CAAA,GAAA,EAAA,WAAA,UAAA,KAAA,CAAA,GAET,EAAA,CAAA,EAAS,EAAE,WAAW,WAAW,CAAC,CAAA,GAAA,EAAA,WAAA,WAAA,KAAA,CAAA,GAGlC,EAAA,CAAA,EAAS,EAAE,WAAW,WAAW,CAAC,CAAA,GAAA,EAAA,WAAA,WAAA,KAAA,CAAA,GAGlC,EAAA,CAAA,EAAS,CAAA,GAAA,EAAA,WAAA,UAAA,KAAA,CAAA,GAtCX,IAAA,EAAA,CAAA,EAAc,kBAAkB,CAAA,GAAA,CAAA"}
@@ -1,2 +1,251 @@
1
- import { t as e } from "./sken-dialog-BvRZxwSk.js";
2
- export { e as SkenDialog };
1
+ import { n as e, t } from "./rolldown-runtime-BRfZIaNm.js";
2
+ import { t as n } from "./decorate-C1e2sg49.js";
3
+ import { LitElement as r, css as i, html as a, nothing as o } from "lit";
4
+ import { customElement as s, property as c, query as l } from "lit/decorators.js";
5
+ //#region ../../node_modules/.bun/lit@3.3.3/node_modules/lit/directives/class-map.js
6
+ var u = /* @__PURE__ */ t({});
7
+ import * as d from "lit-html/directives/class-map.js";
8
+ e(u, d);
9
+ //#endregion
10
+ //#region src/components/sken-dialog.ts
11
+ var f = class extends r {
12
+ constructor(...e) {
13
+ super(...e), this.open = !1, this.size = "md", this.dismissable = "dismissable", this.ariaLabel = null, this.ariaDescribedBy = null, this.#e = null, this.#t = null, this.#n = !1, this.#r = !1, this.#i = `sken-dialog-title-${crypto.randomUUID()}`, this.#o = (e) => {
14
+ if (this.dismissable === "persistent") {
15
+ e.preventDefault();
16
+ return;
17
+ }
18
+ this.#u("sken-close", { reason: "escape" });
19
+ }, this.#s = () => {
20
+ this.#u("sken-closed");
21
+ }, this.#c = (e) => {
22
+ e.target === this._dialog && this.dismissable !== "persistent" && this.#u("sken-close", { reason: "backdrop" });
23
+ }, this.#l = () => {
24
+ this.#u("sken-close", { reason: "close-button" });
25
+ }, this.#d = (e) => {
26
+ let t = e.target;
27
+ this.#r = t.assignedNodes({ flatten: !0 }).length > 0, this.requestUpdate();
28
+ };
29
+ }
30
+ #e;
31
+ #t;
32
+ #n;
33
+ #r;
34
+ #i;
35
+ static {
36
+ this.styles = i`
37
+ :host {
38
+ display: contents;
39
+ }
40
+
41
+ dialog {
42
+ /* Reset native styles. */
43
+ padding: 0;
44
+ border: none;
45
+ background: transparent;
46
+ color: inherit;
47
+ max-width: none;
48
+ max-height: none;
49
+ margin: auto;
50
+ outline: none;
51
+ }
52
+
53
+ /* Open animation (entry). The browser fires the open attribute
54
+ on showModal(); with transition-behavior: allow-discrete we
55
+ can animate the top-layer entry. Falls back to no animation
56
+ in browsers without support. */
57
+ dialog[open] {
58
+ animation: sken-dialog-enter 150ms ease-out;
59
+ }
60
+ @keyframes sken-dialog-enter {
61
+ from {
62
+ opacity: 0;
63
+ transform: scale(0.96);
64
+ }
65
+ to {
66
+ opacity: 1;
67
+ transform: scale(1);
68
+ }
69
+ }
70
+
71
+ /* Backdrop. Native ::backdrop is a pseudo-element on the
72
+ <dialog> when shown via showModal(). */
73
+ dialog::backdrop {
74
+ background: rgba(15, 18, 24, 0.55);
75
+ animation: sken-dialog-backdrop-enter 150ms ease-out;
76
+ }
77
+ @keyframes sken-dialog-backdrop-enter {
78
+ from {
79
+ opacity: 0;
80
+ }
81
+ to {
82
+ opacity: 1;
83
+ }
84
+ }
85
+
86
+ .dialog__panel {
87
+ background: var(--sken-background, #ffffff);
88
+ color: var(--sken-foreground, #1a1a1a);
89
+ border-radius: 12px;
90
+ box-shadow: 0 24px 48px -12px rgba(0, 0, 0, 0.25);
91
+ display: flex;
92
+ flex-direction: column;
93
+ max-height: 90vh;
94
+ max-width: 90vw;
95
+ overflow: hidden;
96
+ font-family: var(--sken-family-sans, system-ui, sans-serif);
97
+ }
98
+
99
+ .dialog__panel.sm {
100
+ width: 400px;
101
+ }
102
+ .dialog__panel.md {
103
+ width: 560px;
104
+ }
105
+ .dialog__panel.lg {
106
+ width: 800px;
107
+ }
108
+
109
+ .dialog__header {
110
+ display: flex;
111
+ align-items: center;
112
+ justify-content: space-between;
113
+ gap: 16px;
114
+ padding: 20px 24px 8px;
115
+ }
116
+
117
+ .dialog__header ::slotted(.dialog__title) {
118
+ font-size: 18px;
119
+ font-weight: 600;
120
+ line-height: 1.3;
121
+ margin: 0;
122
+ align-self: flex-end;
123
+ }
124
+
125
+ .dialog__body {
126
+ padding: 8px 24px 16px;
127
+ overflow-y: auto;
128
+ flex: 1;
129
+ }
130
+
131
+ .dialog__footer {
132
+ padding: 12px 24px 20px;
133
+ }
134
+ .dialog__footer:not(:has(::slotted(*))) {
135
+ display: none;
136
+ }
137
+ .dialog__actions {
138
+ display: flex;
139
+ align-items: center;
140
+ justify-content: flex-end;
141
+ gap: var(--spacing-2, 0.5rem);
142
+ }
143
+
144
+ .dialog__close {
145
+ appearance: none;
146
+ background: transparent;
147
+ border: none;
148
+ cursor: pointer;
149
+ width: 32px;
150
+ height: 32px;
151
+ display: inline-flex;
152
+ align-items: center;
153
+ justify-content: center;
154
+ border-radius: 6px;
155
+ color: inherit;
156
+ opacity: 0.6;
157
+ transition:
158
+ opacity 100ms,
159
+ background 100ms;
160
+ flex-shrink: 0;
161
+ }
162
+ .dialog__close:hover {
163
+ opacity: 1;
164
+ background: rgba(0, 0, 0, 0.05);
165
+ }
166
+ .dialog__close:focus-visible {
167
+ outline: 2px solid var(--sken-ring, #2e6fc6);
168
+ outline-offset: 1px;
169
+ }
170
+ `;
171
+ }
172
+ disconnectedCallback() {
173
+ super.disconnectedCallback(), this.#n && this.#e && (this.#t && this.#t.parentNode === this.#e ? this.#e.insertBefore(this, this.#t) : this.#e.appendChild(this), this.#n = !1);
174
+ }
175
+ updated(e) {
176
+ e.has("open") && this._dialog && (this.open ? this.#a() : this._dialog.open && this._dialog.close());
177
+ }
178
+ #a() {
179
+ this.#n === !1 && this.parentNode !== document.body && (this.#e = this.parentNode, this.#t = this.nextSibling, document.body.appendChild(this), this.#n = !0), this._dialog.open || (this._dialog.showModal(), this.#u("sken-opened"), queueMicrotask(() => {
180
+ this.dismissable === "dismissable" && this._closeButton ? this._closeButton.focus() : this._dialog.querySelector("button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])")?.focus();
181
+ }));
182
+ }
183
+ closeDialog(e = "close-button", t) {
184
+ this.#u("sken-close", {
185
+ reason: e,
186
+ actionId: t
187
+ });
188
+ }
189
+ #o;
190
+ #s;
191
+ #c;
192
+ #l;
193
+ #u(e, t) {
194
+ this.dispatchEvent(new CustomEvent(e, {
195
+ detail: t,
196
+ bubbles: !0,
197
+ composed: !0
198
+ }));
199
+ }
200
+ render() {
201
+ let e = {
202
+ dialog__panel: !0,
203
+ [this.size]: !0
204
+ }, t = this.#r || this.dismissable === "dismissable", n = this.ariaLabel ?? "", r = this.#r || this.querySelector("[slot=\"title\"]") !== null;
205
+ return a`
206
+ <dialog
207
+ aria-label=${n || o}
208
+ aria-labelledby=${r && !n ? this.#i : o}
209
+ aria-describedby=${this.ariaDescribedBy || o}
210
+ @cancel=${this.#o}
211
+ @close=${this.#s}
212
+ @click=${this.#c}
213
+ >
214
+ <div class=${(0, u.classMap)(e)}>
215
+ ${t ? a`<header class="dialog__header">
216
+ <slot
217
+ id=${this.#i}
218
+ name="title"
219
+ @slotchange=${this.#d}
220
+ ></slot>
221
+ ${this.dismissable === "dismissable" ? a`<button
222
+ class="dialog__close"
223
+ type="button"
224
+ aria-label="Close dialog"
225
+ @click=${this.#l}
226
+ >
227
+
228
+ </button>` : o}
229
+ </header>` : o}
230
+ <div class="dialog__body">
231
+ <slot></slot>
232
+ </div>
233
+ <footer class="dialog__footer">
234
+ <div class="dialog__actions">
235
+ <slot name="actions"></slot>
236
+ </div>
237
+ </footer>
238
+ </div>
239
+ </dialog>
240
+ `;
241
+ }
242
+ #d;
243
+ };
244
+ n([c({
245
+ reflect: !0,
246
+ type: Boolean
247
+ })], f.prototype, "open", void 0), n([c({ reflect: !0 })], f.prototype, "size", void 0), n([c({ reflect: !0 })], f.prototype, "dismissable", void 0), n([c({ attribute: "aria-label" })], f.prototype, "ariaLabel", void 0), n([c({ attribute: "aria-describedby" })], f.prototype, "ariaDescribedBy", void 0), n([l("dialog")], f.prototype, "_dialog", void 0), n([l(".close-button")], f.prototype, "_closeButton", void 0), f = n([s("sken-dialog")], f);
248
+ //#endregion
249
+ export { f as SkenDialog };
250
+
251
+ //# sourceMappingURL=sken-dialog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sken-dialog.js","names":[],"sources":["../../../node_modules/.bun/lit@3.3.3/node_modules/lit/directives/class-map.js","../src/components/sken-dialog.ts"],"sourcesContent":["export*from\"lit-html/directives/class-map.js\";\n//# sourceMappingURL=class-map.js.map\n","// ── <sken-dialog> — WAI-ARIA modal built on <dialog> ──────────────────\n\nimport type {\n SkenDialogCloseDetail,\n SkenDialogCloseReason,\n SkenDialogDismissable,\n SkenDialogSize,\n} from '@sken-ds/contracts'\nimport { LitElement, css, html, nothing } from 'lit'\nimport { customElement, property, query } from 'lit/decorators.js'\nimport { classMap } from 'lit/directives/class-map.js'\n\n@customElement('sken-dialog')\nexport class SkenDialog extends LitElement {\n @property({ reflect: true, type: Boolean }) open = false\n @property({ reflect: true }) size: SkenDialogSize = 'md'\n @property({ reflect: true }) dismissable: SkenDialogDismissable = 'dismissable'\n @property({ attribute: 'aria-label' }) ariaLabel: string | null = null\n @property({ attribute: 'aria-describedby' }) ariaDescribedBy: string | null = null\n\n @query('dialog') private _dialog!: HTMLDialogElement\n @query('.close-button') private _closeButton!: HTMLButtonElement | null\n\n #originalParent: Node | null = null\n #originalNextSibling: Node | null = null\n #portaled = false\n #hasTitle = false\n #titleId = `sken-dialog-title-${crypto.randomUUID()}`\n\n static styles = css`\n :host {\n display: contents;\n }\n\n dialog {\n /* Reset native styles. */\n padding: 0;\n border: none;\n background: transparent;\n color: inherit;\n max-width: none;\n max-height: none;\n margin: auto;\n outline: none;\n }\n\n /* Open animation (entry). The browser fires the open attribute\n on showModal(); with transition-behavior: allow-discrete we\n can animate the top-layer entry. Falls back to no animation\n in browsers without support. */\n dialog[open] {\n animation: sken-dialog-enter 150ms ease-out;\n }\n @keyframes sken-dialog-enter {\n from {\n opacity: 0;\n transform: scale(0.96);\n }\n to {\n opacity: 1;\n transform: scale(1);\n }\n }\n\n /* Backdrop. Native ::backdrop is a pseudo-element on the\n <dialog> when shown via showModal(). */\n dialog::backdrop {\n background: rgba(15, 18, 24, 0.55);\n animation: sken-dialog-backdrop-enter 150ms ease-out;\n }\n @keyframes sken-dialog-backdrop-enter {\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n }\n\n .dialog__panel {\n background: var(--sken-background, #ffffff);\n color: var(--sken-foreground, #1a1a1a);\n border-radius: 12px;\n box-shadow: 0 24px 48px -12px rgba(0, 0, 0, 0.25);\n display: flex;\n flex-direction: column;\n max-height: 90vh;\n max-width: 90vw;\n overflow: hidden;\n font-family: var(--sken-family-sans, system-ui, sans-serif);\n }\n\n .dialog__panel.sm {\n width: 400px;\n }\n .dialog__panel.md {\n width: 560px;\n }\n .dialog__panel.lg {\n width: 800px;\n }\n\n .dialog__header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 16px;\n padding: 20px 24px 8px;\n }\n\n .dialog__header ::slotted(.dialog__title) {\n font-size: 18px;\n font-weight: 600;\n line-height: 1.3;\n margin: 0;\n align-self: flex-end;\n }\n\n .dialog__body {\n padding: 8px 24px 16px;\n overflow-y: auto;\n flex: 1;\n }\n\n .dialog__footer {\n padding: 12px 24px 20px;\n }\n .dialog__footer:not(:has(::slotted(*))) {\n display: none;\n }\n .dialog__actions {\n display: flex;\n align-items: center;\n justify-content: flex-end;\n gap: var(--spacing-2, 0.5rem);\n }\n\n .dialog__close {\n appearance: none;\n background: transparent;\n border: none;\n cursor: pointer;\n width: 32px;\n height: 32px;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n border-radius: 6px;\n color: inherit;\n opacity: 0.6;\n transition:\n opacity 100ms,\n background 100ms;\n flex-shrink: 0;\n }\n .dialog__close:hover {\n opacity: 1;\n background: rgba(0, 0, 0, 0.05);\n }\n .dialog__close:focus-visible {\n outline: 2px solid var(--sken-ring, #2e6fc6);\n outline-offset: 1px;\n }\n `\n\n disconnectedCallback(): void {\n super.disconnectedCallback()\n if (this.#portaled && this.#originalParent) {\n if (\n this.#originalNextSibling &&\n this.#originalNextSibling.parentNode === this.#originalParent\n ) {\n this.#originalParent.insertBefore(this, this.#originalNextSibling)\n } else {\n this.#originalParent.appendChild(this)\n }\n this.#portaled = false\n }\n }\n\n updated(changed: Map<string, unknown>): void {\n if (!changed.has('open')) return\n if (!this._dialog) return\n\n if (this.open) {\n this.#showModal()\n } else if (this._dialog.open) {\n this._dialog.close()\n }\n }\n\n #showModal(): void {\n if (this.#portaled === false && this.parentNode !== document.body) {\n this.#originalParent = this.parentNode\n this.#originalNextSibling = this.nextSibling\n document.body.appendChild(this)\n this.#portaled = true\n }\n if (!this._dialog.open) {\n this._dialog.showModal()\n this.#dispatch('sken-opened')\n queueMicrotask(() => {\n if (this.dismissable === 'dismissable' && this._closeButton) {\n this._closeButton.focus()\n } else {\n const first = this._dialog.querySelector<HTMLElement>(\n 'button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])',\n )\n first?.focus()\n }\n })\n }\n }\n\n closeDialog(reason: SkenDialogCloseReason = 'close-button', actionId?: string): void {\n this.#dispatch('sken-close', { reason, actionId })\n }\n\n #onCancel = (e: Event): void => {\n if (this.dismissable === 'persistent') {\n e.preventDefault()\n return\n }\n this.#dispatch('sken-close', { reason: 'escape' })\n }\n\n #onClose = (): void => {\n this.#dispatch('sken-closed')\n }\n\n #onClick = (e: MouseEvent): void => {\n if (e.target !== this._dialog) return\n if (this.dismissable === 'persistent') return\n this.#dispatch('sken-close', { reason: 'backdrop' })\n }\n\n #onCloseButton = (): void => {\n this.#dispatch('sken-close', { reason: 'close-button' })\n }\n\n #dispatch(name: 'sken-close', detail: SkenDialogCloseDetail): void\n #dispatch(name: 'sken-opened' | 'sken-closed', detail?: undefined): void\n #dispatch(name: string, detail?: unknown): void {\n this.dispatchEvent(\n new CustomEvent(name, {\n detail,\n bubbles: true,\n composed: true,\n }),\n )\n }\n\n render() {\n const panelClasses = {\n dialog__panel: true,\n [this.size]: true,\n }\n const showHeader = this.#hasTitle || this.dismissable === 'dismissable'\n const ariaLabelAttr = this.ariaLabel ?? ''\n const hasTitleContent = this.#hasTitle || this.querySelector('[slot=\"title\"]') !== null\n if (import.meta.env?.DEV && this.open && !this.ariaLabel && !hasTitleContent) {\n console.warn('<sken-dialog> has no accessible name — pass `aria-label` or a `title` slot.')\n }\n return html`\n <dialog\n aria-label=${ariaLabelAttr || nothing}\n aria-labelledby=${hasTitleContent && !ariaLabelAttr ? this.#titleId : nothing}\n aria-describedby=${this.ariaDescribedBy || nothing}\n @cancel=${this.#onCancel}\n @close=${this.#onClose}\n @click=${this.#onClick}\n >\n <div class=${classMap(panelClasses)}>\n ${\n showHeader\n ? html`<header class=\"dialog__header\">\n <slot\n id=${this.#titleId}\n name=\"title\"\n @slotchange=${this.#onTitleSlotChange}\n ></slot>\n ${\n this.dismissable === 'dismissable'\n ? html`<button\n class=\"dialog__close\"\n type=\"button\"\n aria-label=\"Close dialog\"\n @click=${this.#onCloseButton}\n >\n ✕\n </button>`\n : nothing\n }\n </header>`\n : nothing\n }\n <div class=\"dialog__body\">\n <slot></slot>\n </div>\n <footer class=\"dialog__footer\">\n <div class=\"dialog__actions\">\n <slot name=\"actions\"></slot>\n </div>\n </footer>\n </div>\n </dialog>\n `\n }\n\n #onTitleSlotChange = (e: Event): void => {\n const slot = e.target as HTMLSlotElement\n this.#hasTitle = slot.assignedNodes({ flatten: true }).length > 0\n this.requestUpdate()\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'sken-dialog': SkenDialog\n }\n}\n"],"x_google_ignoreList":[0],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { t as e } from "./decorate-D4FKzyDw.js";
1
+ import { t as e } from "./decorate-C1e2sg49.js";
2
2
  import { LitElement as t, css as n, html as r } from "lit";
3
3
  import { customElement as i, property as a, query as o } from "lit/decorators.js";
4
4
  //#region src/components/sken-filter-chip.ts