@aquera/nile-elements 1.7.1 → 1.7.3

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 (88) hide show
  1. package/README.md +7 -0
  2. package/dist/index.cjs.js +1 -1
  3. package/dist/index.esm.js +1 -1
  4. package/dist/index.js +1524 -419
  5. package/dist/nile-breadcrumb-item/nile-breadcrumb-item.cjs.js +1 -1
  6. package/dist/nile-breadcrumb-item/nile-breadcrumb-item.cjs.js.map +1 -1
  7. package/dist/nile-breadcrumb-item/nile-breadcrumb-item.esm.js +8 -6
  8. package/dist/nile-combobox/group-utils.cjs.js +2 -0
  9. package/dist/nile-combobox/group-utils.cjs.js.map +1 -0
  10. package/dist/nile-combobox/group-utils.esm.js +1 -0
  11. package/dist/nile-combobox/index.cjs.js +2 -0
  12. package/dist/nile-combobox/index.cjs.js.map +1 -0
  13. package/dist/nile-combobox/index.esm.js +1 -0
  14. package/dist/nile-combobox/nile-combobox.cjs.js +2 -0
  15. package/dist/nile-combobox/nile-combobox.cjs.js.map +1 -0
  16. package/dist/nile-combobox/nile-combobox.css.cjs.js +2 -0
  17. package/dist/nile-combobox/nile-combobox.css.cjs.js.map +1 -0
  18. package/dist/nile-combobox/nile-combobox.css.esm.js +715 -0
  19. package/dist/nile-combobox/nile-combobox.esm.js +238 -0
  20. package/dist/nile-combobox/portal-manager.cjs.js +2 -0
  21. package/dist/nile-combobox/portal-manager.cjs.js.map +1 -0
  22. package/dist/nile-combobox/portal-manager.esm.js +1 -0
  23. package/dist/nile-combobox/renderer.cjs.js +2 -0
  24. package/dist/nile-combobox/renderer.cjs.js.map +1 -0
  25. package/dist/nile-combobox/renderer.esm.js +147 -0
  26. package/dist/nile-combobox/search-manager.cjs.js +2 -0
  27. package/dist/nile-combobox/search-manager.cjs.js.map +1 -0
  28. package/dist/nile-combobox/search-manager.esm.js +1 -0
  29. package/dist/nile-combobox/selection-manager.cjs.js +2 -0
  30. package/dist/nile-combobox/selection-manager.cjs.js.map +1 -0
  31. package/dist/nile-combobox/selection-manager.esm.js +1 -0
  32. package/dist/nile-combobox/types.cjs.js +2 -0
  33. package/dist/nile-combobox/types.cjs.js.map +1 -0
  34. package/dist/nile-combobox/types.esm.js +1 -0
  35. package/dist/src/index.d.ts +1 -0
  36. package/dist/src/index.js +1 -0
  37. package/dist/src/index.js.map +1 -1
  38. package/dist/src/nile-breadcrumb-item/nile-breadcrumb-item.js +4 -2
  39. package/dist/src/nile-breadcrumb-item/nile-breadcrumb-item.js.map +1 -1
  40. package/dist/src/nile-combobox/group-utils.d.ts +26 -0
  41. package/dist/src/nile-combobox/group-utils.js +140 -0
  42. package/dist/src/nile-combobox/group-utils.js.map +1 -0
  43. package/dist/src/nile-combobox/index.d.ts +1 -0
  44. package/dist/src/nile-combobox/index.js +2 -0
  45. package/dist/src/nile-combobox/index.js.map +1 -0
  46. package/dist/src/nile-combobox/nile-combobox.css.d.ts +9 -0
  47. package/dist/src/nile-combobox/nile-combobox.css.js +724 -0
  48. package/dist/src/nile-combobox/nile-combobox.css.js.map +1 -0
  49. package/dist/src/nile-combobox/nile-combobox.d.ts +320 -0
  50. package/dist/src/nile-combobox/nile-combobox.js +1739 -0
  51. package/dist/src/nile-combobox/nile-combobox.js.map +1 -0
  52. package/dist/src/nile-combobox/nile-combobox.test.d.ts +1 -0
  53. package/dist/src/nile-combobox/nile-combobox.test.js +551 -0
  54. package/dist/src/nile-combobox/nile-combobox.test.js.map +1 -0
  55. package/dist/src/nile-combobox/portal-manager.d.ts +26 -0
  56. package/dist/src/nile-combobox/portal-manager.js +218 -0
  57. package/dist/src/nile-combobox/portal-manager.js.map +1 -0
  58. package/dist/src/nile-combobox/renderer.d.ts +24 -0
  59. package/dist/src/nile-combobox/renderer.js +279 -0
  60. package/dist/src/nile-combobox/renderer.js.map +1 -0
  61. package/dist/src/nile-combobox/search-manager.d.ts +15 -0
  62. package/dist/src/nile-combobox/search-manager.js +41 -0
  63. package/dist/src/nile-combobox/search-manager.js.map +1 -0
  64. package/dist/src/nile-combobox/selection-manager.d.ts +12 -0
  65. package/dist/src/nile-combobox/selection-manager.js +44 -0
  66. package/dist/src/nile-combobox/selection-manager.js.map +1 -0
  67. package/dist/src/nile-combobox/types.d.ts +53 -0
  68. package/dist/src/nile-combobox/types.js +8 -0
  69. package/dist/src/nile-combobox/types.js.map +1 -0
  70. package/dist/src/version.js +1 -1
  71. package/dist/src/version.js.map +1 -1
  72. package/dist/tsconfig.tsbuildinfo +1 -1
  73. package/package.json +3 -1
  74. package/src/index.ts +1 -0
  75. package/src/nile-breadcrumb-item/nile-breadcrumb-item.ts +4 -2
  76. package/src/nile-combobox/group-utils.ts +157 -0
  77. package/src/nile-combobox/index.ts +1 -0
  78. package/src/nile-combobox/nile-combobox.css.ts +726 -0
  79. package/src/nile-combobox/nile-combobox.test.ts +704 -0
  80. package/src/nile-combobox/nile-combobox.ts +1816 -0
  81. package/src/nile-combobox/portal-manager.ts +263 -0
  82. package/src/nile-combobox/renderer.ts +466 -0
  83. package/src/nile-combobox/search-manager.ts +53 -0
  84. package/src/nile-combobox/selection-manager.ts +57 -0
  85. package/src/nile-combobox/types.ts +63 -0
  86. package/vscode-html-custom-data.json +311 -4
  87. package/web-dev-server.config.mjs +9 -0
  88. package/web-test-runner.config.mjs +11 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nile-combobox.cjs.js","sources":["../../../../node_modules/@tanstack/virtual-core/dist/esm/utils.js","../../../../node_modules/@tanstack/virtual-core/dist/esm/index.js","../../../../node_modules/@tanstack/lit-virtual/dist/esm/index.js","../../../src/nile-combobox/nile-combobox.ts"],"sourcesContent":["function memo(getDeps, fn, opts) {\n let deps = opts.initialDeps ?? [];\n let result;\n let isInitial = true;\n function memoizedFunction() {\n var _a, _b, _c;\n let depTime;\n if (opts.key && ((_a = opts.debug) == null ? void 0 : _a.call(opts))) depTime = Date.now();\n const newDeps = getDeps();\n const depsChanged = newDeps.length !== deps.length || newDeps.some((dep, index) => deps[index] !== dep);\n if (!depsChanged) {\n return result;\n }\n deps = newDeps;\n let resultTime;\n if (opts.key && ((_b = opts.debug) == null ? void 0 : _b.call(opts))) resultTime = Date.now();\n result = fn(...newDeps);\n if (opts.key && ((_c = opts.debug) == null ? void 0 : _c.call(opts))) {\n const depEndTime = Math.round((Date.now() - depTime) * 100) / 100;\n const resultEndTime = Math.round((Date.now() - resultTime) * 100) / 100;\n const resultFpsPercentage = resultEndTime / 16;\n const pad = (str, num) => {\n str = String(str);\n while (str.length < num) {\n str = \" \" + str;\n }\n return str;\n };\n console.info(\n `%c⏱ ${pad(resultEndTime, 5)} /${pad(depEndTime, 5)} ms`,\n `\n font-size: .6rem;\n font-weight: bold;\n color: hsl(${Math.max(\n 0,\n Math.min(120 - 120 * resultFpsPercentage, 120)\n )}deg 100% 31%);`,\n opts == null ? void 0 : opts.key\n );\n }\n if ((opts == null ? void 0 : opts.onChange) && !(isInitial && opts.skipInitialOnChange)) {\n opts.onChange(result);\n }\n isInitial = false;\n return result;\n }\n memoizedFunction.updateDeps = (newDeps) => {\n deps = newDeps;\n };\n return memoizedFunction;\n}\nfunction notUndefined(value, msg) {\n if (value === void 0) {\n throw new Error(`Unexpected undefined${msg ? `: ${msg}` : \"\"}`);\n } else {\n return value;\n }\n}\nconst approxEqual = (a, b) => Math.abs(a - b) < 1.01;\nconst debounce = (targetWindow, fn, ms) => {\n let timeoutId;\n return function(...args) {\n targetWindow.clearTimeout(timeoutId);\n timeoutId = targetWindow.setTimeout(() => fn.apply(this, args), ms);\n };\n};\nexport {\n approxEqual,\n debounce,\n memo,\n notUndefined\n};\n//# sourceMappingURL=utils.js.map\n","import { debounce, memo, notUndefined, approxEqual } from \"./utils.js\";\nconst getRect = (element) => {\n const { offsetWidth, offsetHeight } = element;\n return { width: offsetWidth, height: offsetHeight };\n};\nconst defaultKeyExtractor = (index) => index;\nconst defaultRangeExtractor = (range) => {\n const start = Math.max(range.startIndex - range.overscan, 0);\n const end = Math.min(range.endIndex + range.overscan, range.count - 1);\n const arr = [];\n for (let i = start; i <= end; i++) {\n arr.push(i);\n }\n return arr;\n};\nconst observeElementRect = (instance, cb) => {\n const element = instance.scrollElement;\n if (!element) {\n return;\n }\n const targetWindow = instance.targetWindow;\n if (!targetWindow) {\n return;\n }\n const handler = (rect) => {\n const { width, height } = rect;\n cb({ width: Math.round(width), height: Math.round(height) });\n };\n handler(getRect(element));\n if (!targetWindow.ResizeObserver) {\n return () => {\n };\n }\n const observer = new targetWindow.ResizeObserver((entries) => {\n const run = () => {\n const entry = entries[0];\n if (entry == null ? void 0 : entry.borderBoxSize) {\n const box = entry.borderBoxSize[0];\n if (box) {\n handler({ width: box.inlineSize, height: box.blockSize });\n return;\n }\n }\n handler(getRect(element));\n };\n instance.options.useAnimationFrameWithResizeObserver ? requestAnimationFrame(run) : run();\n });\n observer.observe(element, { box: \"border-box\" });\n return () => {\n observer.unobserve(element);\n };\n};\nconst addEventListenerOptions = {\n passive: true\n};\nconst observeWindowRect = (instance, cb) => {\n const element = instance.scrollElement;\n if (!element) {\n return;\n }\n const handler = () => {\n cb({ width: element.innerWidth, height: element.innerHeight });\n };\n handler();\n element.addEventListener(\"resize\", handler, addEventListenerOptions);\n return () => {\n element.removeEventListener(\"resize\", handler);\n };\n};\nconst supportsScrollend = typeof window == \"undefined\" ? true : \"onscrollend\" in window;\nconst observeElementOffset = (instance, cb) => {\n const element = instance.scrollElement;\n if (!element) {\n return;\n }\n const targetWindow = instance.targetWindow;\n if (!targetWindow) {\n return;\n }\n let offset = 0;\n const fallback = instance.options.useScrollendEvent && supportsScrollend ? () => void 0 : debounce(\n targetWindow,\n () => {\n cb(offset, false);\n },\n instance.options.isScrollingResetDelay\n );\n const createHandler = (isScrolling) => () => {\n const { horizontal, isRtl } = instance.options;\n offset = horizontal ? element[\"scrollLeft\"] * (isRtl && -1 || 1) : element[\"scrollTop\"];\n fallback();\n cb(offset, isScrolling);\n };\n const handler = createHandler(true);\n const endHandler = createHandler(false);\n element.addEventListener(\"scroll\", handler, addEventListenerOptions);\n const registerScrollendEvent = instance.options.useScrollendEvent && supportsScrollend;\n if (registerScrollendEvent) {\n element.addEventListener(\"scrollend\", endHandler, addEventListenerOptions);\n }\n return () => {\n element.removeEventListener(\"scroll\", handler);\n if (registerScrollendEvent) {\n element.removeEventListener(\"scrollend\", endHandler);\n }\n };\n};\nconst observeWindowOffset = (instance, cb) => {\n const element = instance.scrollElement;\n if (!element) {\n return;\n }\n const targetWindow = instance.targetWindow;\n if (!targetWindow) {\n return;\n }\n let offset = 0;\n const fallback = instance.options.useScrollendEvent && supportsScrollend ? () => void 0 : debounce(\n targetWindow,\n () => {\n cb(offset, false);\n },\n instance.options.isScrollingResetDelay\n );\n const createHandler = (isScrolling) => () => {\n offset = element[instance.options.horizontal ? \"scrollX\" : \"scrollY\"];\n fallback();\n cb(offset, isScrolling);\n };\n const handler = createHandler(true);\n const endHandler = createHandler(false);\n element.addEventListener(\"scroll\", handler, addEventListenerOptions);\n const registerScrollendEvent = instance.options.useScrollendEvent && supportsScrollend;\n if (registerScrollendEvent) {\n element.addEventListener(\"scrollend\", endHandler, addEventListenerOptions);\n }\n return () => {\n element.removeEventListener(\"scroll\", handler);\n if (registerScrollendEvent) {\n element.removeEventListener(\"scrollend\", endHandler);\n }\n };\n};\nconst measureElement = (element, entry, instance) => {\n if (entry == null ? void 0 : entry.borderBoxSize) {\n const box = entry.borderBoxSize[0];\n if (box) {\n const size = Math.round(\n box[instance.options.horizontal ? \"inlineSize\" : \"blockSize\"]\n );\n return size;\n }\n }\n return element[instance.options.horizontal ? \"offsetWidth\" : \"offsetHeight\"];\n};\nconst windowScroll = (offset, {\n adjustments = 0,\n behavior\n}, instance) => {\n var _a, _b;\n const toOffset = offset + adjustments;\n (_b = (_a = instance.scrollElement) == null ? void 0 : _a.scrollTo) == null ? void 0 : _b.call(_a, {\n [instance.options.horizontal ? \"left\" : \"top\"]: toOffset,\n behavior\n });\n};\nconst elementScroll = (offset, {\n adjustments = 0,\n behavior\n}, instance) => {\n var _a, _b;\n const toOffset = offset + adjustments;\n (_b = (_a = instance.scrollElement) == null ? void 0 : _a.scrollTo) == null ? void 0 : _b.call(_a, {\n [instance.options.horizontal ? \"left\" : \"top\"]: toOffset,\n behavior\n });\n};\nclass Virtualizer {\n constructor(opts) {\n this.unsubs = [];\n this.scrollElement = null;\n this.targetWindow = null;\n this.isScrolling = false;\n this.scrollState = null;\n this.measurementsCache = [];\n this.itemSizeCache = /* @__PURE__ */ new Map();\n this.laneAssignments = /* @__PURE__ */ new Map();\n this.pendingMeasuredCacheIndexes = [];\n this.prevLanes = void 0;\n this.lanesChangedFlag = false;\n this.lanesSettling = false;\n this.scrollRect = null;\n this.scrollOffset = null;\n this.scrollDirection = null;\n this.scrollAdjustments = 0;\n this.elementsCache = /* @__PURE__ */ new Map();\n this.now = () => {\n var _a, _b, _c;\n return ((_c = (_b = (_a = this.targetWindow) == null ? void 0 : _a.performance) == null ? void 0 : _b.now) == null ? void 0 : _c.call(_b)) ?? Date.now();\n };\n this.observer = /* @__PURE__ */ (() => {\n let _ro = null;\n const get = () => {\n if (_ro) {\n return _ro;\n }\n if (!this.targetWindow || !this.targetWindow.ResizeObserver) {\n return null;\n }\n return _ro = new this.targetWindow.ResizeObserver((entries) => {\n entries.forEach((entry) => {\n const run = () => {\n const node = entry.target;\n const index = this.indexFromElement(node);\n if (!node.isConnected) {\n this.observer.unobserve(node);\n return;\n }\n if (this.shouldMeasureDuringScroll(index)) {\n this.resizeItem(\n index,\n this.options.measureElement(node, entry, this)\n );\n }\n };\n this.options.useAnimationFrameWithResizeObserver ? requestAnimationFrame(run) : run();\n });\n });\n };\n return {\n disconnect: () => {\n var _a;\n (_a = get()) == null ? void 0 : _a.disconnect();\n _ro = null;\n },\n observe: (target) => {\n var _a;\n return (_a = get()) == null ? void 0 : _a.observe(target, { box: \"border-box\" });\n },\n unobserve: (target) => {\n var _a;\n return (_a = get()) == null ? void 0 : _a.unobserve(target);\n }\n };\n })();\n this.range = null;\n this.setOptions = (opts2) => {\n Object.entries(opts2).forEach(([key, value]) => {\n if (typeof value === \"undefined\") delete opts2[key];\n });\n this.options = {\n debug: false,\n initialOffset: 0,\n overscan: 1,\n paddingStart: 0,\n paddingEnd: 0,\n scrollPaddingStart: 0,\n scrollPaddingEnd: 0,\n horizontal: false,\n getItemKey: defaultKeyExtractor,\n rangeExtractor: defaultRangeExtractor,\n onChange: () => {\n },\n measureElement,\n initialRect: { width: 0, height: 0 },\n scrollMargin: 0,\n gap: 0,\n indexAttribute: \"data-index\",\n initialMeasurementsCache: [],\n lanes: 1,\n isScrollingResetDelay: 150,\n enabled: true,\n isRtl: false,\n useScrollendEvent: false,\n useAnimationFrameWithResizeObserver: false,\n laneAssignmentMode: \"estimate\",\n ...opts2\n };\n };\n this.notify = (sync) => {\n var _a, _b;\n (_b = (_a = this.options).onChange) == null ? void 0 : _b.call(_a, this, sync);\n };\n this.maybeNotify = memo(\n () => {\n this.calculateRange();\n return [\n this.isScrolling,\n this.range ? this.range.startIndex : null,\n this.range ? this.range.endIndex : null\n ];\n },\n (isScrolling) => {\n this.notify(isScrolling);\n },\n {\n key: process.env.NODE_ENV !== \"production\" && \"maybeNotify\",\n debug: () => this.options.debug,\n initialDeps: [\n this.isScrolling,\n this.range ? this.range.startIndex : null,\n this.range ? this.range.endIndex : null\n ]\n }\n );\n this.cleanup = () => {\n this.unsubs.filter(Boolean).forEach((d) => d());\n this.unsubs = [];\n this.observer.disconnect();\n if (this.rafId != null && this.targetWindow) {\n this.targetWindow.cancelAnimationFrame(this.rafId);\n this.rafId = null;\n }\n this.scrollState = null;\n this.scrollElement = null;\n this.targetWindow = null;\n };\n this._didMount = () => {\n return () => {\n this.cleanup();\n };\n };\n this._willUpdate = () => {\n var _a;\n const scrollElement = this.options.enabled ? this.options.getScrollElement() : null;\n if (this.scrollElement !== scrollElement) {\n this.cleanup();\n if (!scrollElement) {\n this.maybeNotify();\n return;\n }\n this.scrollElement = scrollElement;\n if (this.scrollElement && \"ownerDocument\" in this.scrollElement) {\n this.targetWindow = this.scrollElement.ownerDocument.defaultView;\n } else {\n this.targetWindow = ((_a = this.scrollElement) == null ? void 0 : _a.window) ?? null;\n }\n this.elementsCache.forEach((cached) => {\n this.observer.observe(cached);\n });\n this.unsubs.push(\n this.options.observeElementRect(this, (rect) => {\n this.scrollRect = rect;\n this.maybeNotify();\n })\n );\n this.unsubs.push(\n this.options.observeElementOffset(this, (offset, isScrolling) => {\n this.scrollAdjustments = 0;\n this.scrollDirection = isScrolling ? this.getScrollOffset() < offset ? \"forward\" : \"backward\" : null;\n this.scrollOffset = offset;\n this.isScrolling = isScrolling;\n if (this.scrollState) {\n this.scheduleScrollReconcile();\n }\n this.maybeNotify();\n })\n );\n this._scrollToOffset(this.getScrollOffset(), {\n adjustments: void 0,\n behavior: void 0\n });\n }\n };\n this.rafId = null;\n this.getSize = () => {\n if (!this.options.enabled) {\n this.scrollRect = null;\n return 0;\n }\n this.scrollRect = this.scrollRect ?? this.options.initialRect;\n return this.scrollRect[this.options.horizontal ? \"width\" : \"height\"];\n };\n this.getScrollOffset = () => {\n if (!this.options.enabled) {\n this.scrollOffset = null;\n return 0;\n }\n this.scrollOffset = this.scrollOffset ?? (typeof this.options.initialOffset === \"function\" ? this.options.initialOffset() : this.options.initialOffset);\n return this.scrollOffset;\n };\n this.getFurthestMeasurement = (measurements, index) => {\n const furthestMeasurementsFound = /* @__PURE__ */ new Map();\n const furthestMeasurements = /* @__PURE__ */ new Map();\n for (let m = index - 1; m >= 0; m--) {\n const measurement = measurements[m];\n if (furthestMeasurementsFound.has(measurement.lane)) {\n continue;\n }\n const previousFurthestMeasurement = furthestMeasurements.get(\n measurement.lane\n );\n if (previousFurthestMeasurement == null || measurement.end > previousFurthestMeasurement.end) {\n furthestMeasurements.set(measurement.lane, measurement);\n } else if (measurement.end < previousFurthestMeasurement.end) {\n furthestMeasurementsFound.set(measurement.lane, true);\n }\n if (furthestMeasurementsFound.size === this.options.lanes) {\n break;\n }\n }\n return furthestMeasurements.size === this.options.lanes ? Array.from(furthestMeasurements.values()).sort((a, b) => {\n if (a.end === b.end) {\n return a.index - b.index;\n }\n return a.end - b.end;\n })[0] : void 0;\n };\n this.getMeasurementOptions = memo(\n () => [\n this.options.count,\n this.options.paddingStart,\n this.options.scrollMargin,\n this.options.getItemKey,\n this.options.enabled,\n this.options.lanes,\n this.options.laneAssignmentMode\n ],\n (count, paddingStart, scrollMargin, getItemKey, enabled, lanes, laneAssignmentMode) => {\n const lanesChanged = this.prevLanes !== void 0 && this.prevLanes !== lanes;\n if (lanesChanged) {\n this.lanesChangedFlag = true;\n }\n this.prevLanes = lanes;\n this.pendingMeasuredCacheIndexes = [];\n return {\n count,\n paddingStart,\n scrollMargin,\n getItemKey,\n enabled,\n lanes,\n laneAssignmentMode\n };\n },\n {\n key: false\n }\n );\n this.getMeasurements = memo(\n () => [this.getMeasurementOptions(), this.itemSizeCache],\n ({\n count,\n paddingStart,\n scrollMargin,\n getItemKey,\n enabled,\n lanes,\n laneAssignmentMode\n }, itemSizeCache) => {\n if (!enabled) {\n this.measurementsCache = [];\n this.itemSizeCache.clear();\n this.laneAssignments.clear();\n return [];\n }\n if (this.laneAssignments.size > count) {\n for (const index of this.laneAssignments.keys()) {\n if (index >= count) {\n this.laneAssignments.delete(index);\n }\n }\n }\n if (this.lanesChangedFlag) {\n this.lanesChangedFlag = false;\n this.lanesSettling = true;\n this.measurementsCache = [];\n this.itemSizeCache.clear();\n this.laneAssignments.clear();\n this.pendingMeasuredCacheIndexes = [];\n }\n if (this.measurementsCache.length === 0 && !this.lanesSettling) {\n this.measurementsCache = this.options.initialMeasurementsCache;\n this.measurementsCache.forEach((item) => {\n this.itemSizeCache.set(item.key, item.size);\n });\n }\n const min = this.lanesSettling ? 0 : this.pendingMeasuredCacheIndexes.length > 0 ? Math.min(...this.pendingMeasuredCacheIndexes) : 0;\n this.pendingMeasuredCacheIndexes = [];\n if (this.lanesSettling && this.measurementsCache.length === count) {\n this.lanesSettling = false;\n }\n const measurements = this.measurementsCache.slice(0, min);\n const laneLastIndex = new Array(lanes).fill(\n void 0\n );\n for (let m = 0; m < min; m++) {\n const item = measurements[m];\n if (item) {\n laneLastIndex[item.lane] = m;\n }\n }\n for (let i = min; i < count; i++) {\n const key = getItemKey(i);\n const cachedLane = this.laneAssignments.get(i);\n let lane;\n let start;\n const shouldCacheLane = laneAssignmentMode === \"estimate\" || itemSizeCache.has(key);\n if (cachedLane !== void 0 && this.options.lanes > 1) {\n lane = cachedLane;\n const prevIndex = laneLastIndex[lane];\n const prevInLane = prevIndex !== void 0 ? measurements[prevIndex] : void 0;\n start = prevInLane ? prevInLane.end + this.options.gap : paddingStart + scrollMargin;\n } else {\n const furthestMeasurement = this.options.lanes === 1 ? measurements[i - 1] : this.getFurthestMeasurement(measurements, i);\n start = furthestMeasurement ? furthestMeasurement.end + this.options.gap : paddingStart + scrollMargin;\n lane = furthestMeasurement ? furthestMeasurement.lane : i % this.options.lanes;\n if (this.options.lanes > 1 && shouldCacheLane) {\n this.laneAssignments.set(i, lane);\n }\n }\n const measuredSize = itemSizeCache.get(key);\n const size = typeof measuredSize === \"number\" ? measuredSize : this.options.estimateSize(i);\n const end = start + size;\n measurements[i] = {\n index: i,\n start,\n size,\n end,\n key,\n lane\n };\n laneLastIndex[lane] = i;\n }\n this.measurementsCache = measurements;\n return measurements;\n },\n {\n key: process.env.NODE_ENV !== \"production\" && \"getMeasurements\",\n debug: () => this.options.debug\n }\n );\n this.calculateRange = memo(\n () => [\n this.getMeasurements(),\n this.getSize(),\n this.getScrollOffset(),\n this.options.lanes\n ],\n (measurements, outerSize, scrollOffset, lanes) => {\n return this.range = measurements.length > 0 && outerSize > 0 ? calculateRange({\n measurements,\n outerSize,\n scrollOffset,\n lanes\n }) : null;\n },\n {\n key: process.env.NODE_ENV !== \"production\" && \"calculateRange\",\n debug: () => this.options.debug\n }\n );\n this.getVirtualIndexes = memo(\n () => {\n let startIndex = null;\n let endIndex = null;\n const range = this.calculateRange();\n if (range) {\n startIndex = range.startIndex;\n endIndex = range.endIndex;\n }\n this.maybeNotify.updateDeps([this.isScrolling, startIndex, endIndex]);\n return [\n this.options.rangeExtractor,\n this.options.overscan,\n this.options.count,\n startIndex,\n endIndex\n ];\n },\n (rangeExtractor, overscan, count, startIndex, endIndex) => {\n return startIndex === null || endIndex === null ? [] : rangeExtractor({\n startIndex,\n endIndex,\n overscan,\n count\n });\n },\n {\n key: process.env.NODE_ENV !== \"production\" && \"getVirtualIndexes\",\n debug: () => this.options.debug\n }\n );\n this.indexFromElement = (node) => {\n const attributeName = this.options.indexAttribute;\n const indexStr = node.getAttribute(attributeName);\n if (!indexStr) {\n console.warn(\n `Missing attribute name '${attributeName}={index}' on measured element.`\n );\n return -1;\n }\n return parseInt(indexStr, 10);\n };\n this.shouldMeasureDuringScroll = (index) => {\n var _a;\n if (!this.scrollState || this.scrollState.behavior !== \"smooth\") {\n return true;\n }\n const scrollIndex = this.scrollState.index ?? ((_a = this.getVirtualItemForOffset(this.scrollState.lastTargetOffset)) == null ? void 0 : _a.index);\n if (scrollIndex !== void 0 && this.range) {\n const bufferSize = Math.max(\n this.options.overscan,\n Math.ceil((this.range.endIndex - this.range.startIndex) / 2)\n );\n const minIndex = Math.max(0, scrollIndex - bufferSize);\n const maxIndex = Math.min(\n this.options.count - 1,\n scrollIndex + bufferSize\n );\n return index >= minIndex && index <= maxIndex;\n }\n return true;\n };\n this.measureElement = (node) => {\n if (!node) {\n this.elementsCache.forEach((cached, key2) => {\n if (!cached.isConnected) {\n this.observer.unobserve(cached);\n this.elementsCache.delete(key2);\n }\n });\n return;\n }\n const index = this.indexFromElement(node);\n const key = this.options.getItemKey(index);\n const prevNode = this.elementsCache.get(key);\n if (prevNode !== node) {\n if (prevNode) {\n this.observer.unobserve(prevNode);\n }\n this.observer.observe(node);\n this.elementsCache.set(key, node);\n }\n if ((!this.isScrolling || this.scrollState) && this.shouldMeasureDuringScroll(index)) {\n this.resizeItem(index, this.options.measureElement(node, void 0, this));\n }\n };\n this.resizeItem = (index, size) => {\n var _a;\n const item = this.measurementsCache[index];\n if (!item) return;\n const itemSize = this.itemSizeCache.get(item.key) ?? item.size;\n const delta = size - itemSize;\n if (delta !== 0) {\n if (((_a = this.scrollState) == null ? void 0 : _a.behavior) !== \"smooth\" && (this.shouldAdjustScrollPositionOnItemSizeChange !== void 0 ? this.shouldAdjustScrollPositionOnItemSizeChange(item, delta, this) : item.start < this.getScrollOffset() + this.scrollAdjustments)) {\n if (process.env.NODE_ENV !== \"production\" && this.options.debug) {\n console.info(\"correction\", delta);\n }\n this._scrollToOffset(this.getScrollOffset(), {\n adjustments: this.scrollAdjustments += delta,\n behavior: void 0\n });\n }\n this.pendingMeasuredCacheIndexes.push(item.index);\n this.itemSizeCache = new Map(this.itemSizeCache.set(item.key, size));\n this.notify(false);\n }\n };\n this.getVirtualItems = memo(\n () => [this.getVirtualIndexes(), this.getMeasurements()],\n (indexes, measurements) => {\n const virtualItems = [];\n for (let k = 0, len = indexes.length; k < len; k++) {\n const i = indexes[k];\n const measurement = measurements[i];\n virtualItems.push(measurement);\n }\n return virtualItems;\n },\n {\n key: process.env.NODE_ENV !== \"production\" && \"getVirtualItems\",\n debug: () => this.options.debug\n }\n );\n this.getVirtualItemForOffset = (offset) => {\n const measurements = this.getMeasurements();\n if (measurements.length === 0) {\n return void 0;\n }\n return notUndefined(\n measurements[findNearestBinarySearch(\n 0,\n measurements.length - 1,\n (index) => notUndefined(measurements[index]).start,\n offset\n )]\n );\n };\n this.getMaxScrollOffset = () => {\n if (!this.scrollElement) return 0;\n if (\"scrollHeight\" in this.scrollElement) {\n return this.options.horizontal ? this.scrollElement.scrollWidth - this.scrollElement.clientWidth : this.scrollElement.scrollHeight - this.scrollElement.clientHeight;\n } else {\n const doc = this.scrollElement.document.documentElement;\n return this.options.horizontal ? doc.scrollWidth - this.scrollElement.innerWidth : doc.scrollHeight - this.scrollElement.innerHeight;\n }\n };\n this.getOffsetForAlignment = (toOffset, align, itemSize = 0) => {\n if (!this.scrollElement) return 0;\n const size = this.getSize();\n const scrollOffset = this.getScrollOffset();\n if (align === \"auto\") {\n align = toOffset >= scrollOffset + size ? \"end\" : \"start\";\n }\n if (align === \"center\") {\n toOffset += (itemSize - size) / 2;\n } else if (align === \"end\") {\n toOffset -= size;\n }\n const maxOffset = this.getMaxScrollOffset();\n return Math.max(Math.min(maxOffset, toOffset), 0);\n };\n this.getOffsetForIndex = (index, align = \"auto\") => {\n index = Math.max(0, Math.min(index, this.options.count - 1));\n const size = this.getSize();\n const scrollOffset = this.getScrollOffset();\n const item = this.measurementsCache[index];\n if (!item) return;\n if (align === \"auto\") {\n if (item.end >= scrollOffset + size - this.options.scrollPaddingEnd) {\n align = \"end\";\n } else if (item.start <= scrollOffset + this.options.scrollPaddingStart) {\n align = \"start\";\n } else {\n return [scrollOffset, align];\n }\n }\n if (align === \"end\" && index === this.options.count - 1) {\n return [this.getMaxScrollOffset(), align];\n }\n const toOffset = align === \"end\" ? item.end + this.options.scrollPaddingEnd : item.start - this.options.scrollPaddingStart;\n return [\n this.getOffsetForAlignment(toOffset, align, item.size),\n align\n ];\n };\n this.scrollToOffset = (toOffset, { align = \"start\", behavior = \"auto\" } = {}) => {\n const offset = this.getOffsetForAlignment(toOffset, align);\n const now = this.now();\n this.scrollState = {\n index: null,\n align,\n behavior,\n startedAt: now,\n lastTargetOffset: offset,\n stableFrames: 0\n };\n this._scrollToOffset(offset, { adjustments: void 0, behavior });\n this.scheduleScrollReconcile();\n };\n this.scrollToIndex = (index, {\n align: initialAlign = \"auto\",\n behavior = \"auto\"\n } = {}) => {\n index = Math.max(0, Math.min(index, this.options.count - 1));\n const offsetInfo = this.getOffsetForIndex(index, initialAlign);\n if (!offsetInfo) {\n return;\n }\n const [offset, align] = offsetInfo;\n const now = this.now();\n this.scrollState = {\n index,\n align,\n behavior,\n startedAt: now,\n lastTargetOffset: offset,\n stableFrames: 0\n };\n this._scrollToOffset(offset, { adjustments: void 0, behavior });\n this.scheduleScrollReconcile();\n };\n this.scrollBy = (delta, { behavior = \"auto\" } = {}) => {\n const offset = this.getScrollOffset() + delta;\n const now = this.now();\n this.scrollState = {\n index: null,\n align: \"start\",\n behavior,\n startedAt: now,\n lastTargetOffset: offset,\n stableFrames: 0\n };\n this._scrollToOffset(offset, { adjustments: void 0, behavior });\n this.scheduleScrollReconcile();\n };\n this.getTotalSize = () => {\n var _a;\n const measurements = this.getMeasurements();\n let end;\n if (measurements.length === 0) {\n end = this.options.paddingStart;\n } else if (this.options.lanes === 1) {\n end = ((_a = measurements[measurements.length - 1]) == null ? void 0 : _a.end) ?? 0;\n } else {\n const endByLane = Array(this.options.lanes).fill(null);\n let endIndex = measurements.length - 1;\n while (endIndex >= 0 && endByLane.some((val) => val === null)) {\n const item = measurements[endIndex];\n if (endByLane[item.lane] === null) {\n endByLane[item.lane] = item.end;\n }\n endIndex--;\n }\n end = Math.max(...endByLane.filter((val) => val !== null));\n }\n return Math.max(\n end - this.options.scrollMargin + this.options.paddingEnd,\n 0\n );\n };\n this._scrollToOffset = (offset, {\n adjustments,\n behavior\n }) => {\n this.options.scrollToFn(offset, { behavior, adjustments }, this);\n };\n this.measure = () => {\n this.itemSizeCache = /* @__PURE__ */ new Map();\n this.laneAssignments = /* @__PURE__ */ new Map();\n this.notify(false);\n };\n this.setOptions(opts);\n }\n scheduleScrollReconcile() {\n if (!this.targetWindow) {\n this.scrollState = null;\n return;\n }\n if (this.rafId != null) return;\n this.rafId = this.targetWindow.requestAnimationFrame(() => {\n this.rafId = null;\n this.reconcileScroll();\n });\n }\n reconcileScroll() {\n if (!this.scrollState) return;\n const el = this.scrollElement;\n if (!el) return;\n const MAX_RECONCILE_MS = 5e3;\n if (this.now() - this.scrollState.startedAt > MAX_RECONCILE_MS) {\n this.scrollState = null;\n return;\n }\n const offsetInfo = this.scrollState.index != null ? this.getOffsetForIndex(this.scrollState.index, this.scrollState.align) : void 0;\n const targetOffset = offsetInfo ? offsetInfo[0] : this.scrollState.lastTargetOffset;\n const STABLE_FRAMES = 1;\n const targetChanged = targetOffset !== this.scrollState.lastTargetOffset;\n if (!targetChanged && approxEqual(targetOffset, this.getScrollOffset())) {\n this.scrollState.stableFrames++;\n if (this.scrollState.stableFrames >= STABLE_FRAMES) {\n this.scrollState = null;\n return;\n }\n } else {\n this.scrollState.stableFrames = 0;\n if (targetChanged) {\n this.scrollState.lastTargetOffset = targetOffset;\n this.scrollState.behavior = \"auto\";\n this._scrollToOffset(targetOffset, {\n adjustments: void 0,\n behavior: \"auto\"\n });\n }\n }\n this.scheduleScrollReconcile();\n }\n}\nconst findNearestBinarySearch = (low, high, getCurrentValue, value) => {\n while (low <= high) {\n const middle = (low + high) / 2 | 0;\n const currentValue = getCurrentValue(middle);\n if (currentValue < value) {\n low = middle + 1;\n } else if (currentValue > value) {\n high = middle - 1;\n } else {\n return middle;\n }\n }\n if (low > 0) {\n return low - 1;\n } else {\n return 0;\n }\n};\nfunction calculateRange({\n measurements,\n outerSize,\n scrollOffset,\n lanes\n}) {\n const lastIndex = measurements.length - 1;\n const getOffset = (index) => measurements[index].start;\n if (measurements.length <= lanes) {\n return {\n startIndex: 0,\n endIndex: lastIndex\n };\n }\n let startIndex = findNearestBinarySearch(\n 0,\n lastIndex,\n getOffset,\n scrollOffset\n );\n let endIndex = startIndex;\n if (lanes === 1) {\n while (endIndex < lastIndex && measurements[endIndex].end < scrollOffset + outerSize) {\n endIndex++;\n }\n } else if (lanes > 1) {\n const endPerLane = Array(lanes).fill(0);\n while (endIndex < lastIndex && endPerLane.some((pos) => pos < scrollOffset + outerSize)) {\n const item = measurements[endIndex];\n endPerLane[item.lane] = item.end;\n endIndex++;\n }\n const startPerLane = Array(lanes).fill(scrollOffset + outerSize);\n while (startIndex >= 0 && startPerLane.some((pos) => pos >= scrollOffset)) {\n const item = measurements[startIndex];\n startPerLane[item.lane] = item.start;\n startIndex--;\n }\n startIndex = Math.max(0, startIndex - startIndex % lanes);\n endIndex = Math.min(lastIndex, endIndex + (lanes - 1 - endIndex % lanes));\n }\n return { startIndex, endIndex };\n}\nexport {\n Virtualizer,\n approxEqual,\n debounce,\n defaultKeyExtractor,\n defaultRangeExtractor,\n elementScroll,\n measureElement,\n memo,\n notUndefined,\n observeElementOffset,\n observeElementRect,\n observeWindowOffset,\n observeWindowRect,\n windowScroll\n};\n//# sourceMappingURL=index.js.map\n","import { elementScroll, observeElementOffset, observeElementRect, windowScroll, observeWindowOffset, observeWindowRect, Virtualizer } from \"@tanstack/virtual-core\";\nclass VirtualizerControllerBase {\n constructor(host, options) {\n this.cleanup = () => {\n };\n const resolvedOptions = {\n ...options,\n onChange: (instance, sync) => {\n var _a;\n this.host.updateComplete.then(() => this.host.requestUpdate());\n (_a = options.onChange) == null ? void 0 : _a.call(options, instance, sync);\n }\n };\n this.virtualizer = new Virtualizer(resolvedOptions);\n (this.host = host).addController(this);\n }\n getVirtualizer() {\n return this.virtualizer;\n }\n hostConnected() {\n this.cleanup = this.virtualizer._didMount();\n }\n hostUpdated() {\n this.virtualizer._willUpdate();\n }\n hostDisconnected() {\n this.cleanup();\n }\n}\nclass VirtualizerController extends VirtualizerControllerBase {\n constructor(host, options) {\n super(host, {\n observeElementRect,\n observeElementOffset,\n scrollToFn: elementScroll,\n ...options\n });\n }\n}\nclass WindowVirtualizerController extends VirtualizerControllerBase {\n constructor(host, options) {\n super(host, {\n getScrollElement: () => typeof document !== \"undefined\" ? window : null,\n observeElementRect: observeWindowRect,\n observeElementOffset: observeWindowOffset,\n scrollToFn: windowScroll,\n initialOffset: () => typeof document !== \"undefined\" ? window.scrollY : 0,\n ...options\n });\n }\n}\nexport {\n VirtualizerController,\n WindowVirtualizerController\n};\n//# sourceMappingURL=index.js.map\n","/**\n * Copyright Aquera Inc 2025\n *\n * This source code is licensed under the BSD-3-Clause license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport { html } from 'lit';\nimport { customElement, property, query, state } from 'lit/decorators.js';\nimport { classMap } from 'lit/directives/class-map.js';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport { Ref, createRef, ref } from 'lit/directives/ref.js';\nimport { styles } from './nile-combobox.css';\n\nimport '../nile-icon';\nimport '../nile-popup/nile-popup';\nimport '../nile-tag/nile-tag';\nimport '../nile-option/nile-option';\nimport '../nile-checkbox/nile-checkbox';\nimport '../nile-loader/nile-loader';\n\nimport { animateTo, stopAnimations } from '../internal/animate';\nimport { defaultValue } from '../internal/default-value';\nimport { FormControlController } from '../internal/form';\nimport { getAnimation, setDefaultAnimation } from '../utilities/animation-registry';\nimport { HasSlotController } from '../internal/slot';\nimport { waitForEvent } from '../internal/event';\nimport { watch } from '../internal/watch';\nimport NileElement from '../internal/nile-element';\nimport type { CSSResultGroup, PropertyValues, TemplateResult } from 'lit';\nimport type { NileFormControl } from '../internal/nile-element';\nimport type NilePopup from '../nile-popup/nile-popup';\nimport { VirtualizerController } from '@tanstack/lit-virtual';\n\nimport type {\n ComboboxOption,\n ComboboxRenderItemConfig,\n ComboboxTagLayout,\n ComboboxSize,\n ComboboxPlacement,\n ComboboxRow,\n NileRemoveEvent,\n} from './types.js';\nimport { ComboboxSelectionManager } from './selection-manager.js';\nimport { ComboboxSearchManager } from './search-manager.js';\nimport { ComboboxRenderer } from './renderer.js';\nimport { ComboboxPortalManager } from './portal-manager.js';\nimport { hasGroups, flattenRows, filterRows, getOptionRows } from './group-utils.js';\nimport { VisibilityManager } from '../utilities/visibility-manager.js';\n\n/**\n * @summary A data-driven combobox with virtualized options, inline search, multi-select tags,\n * custom value creation, and full WAI-ARIA Combobox keyboard navigation.\n *\n * @tag nile-combobox\n * @status stable\n * @since 2.0\n *\n * @dependency nile-icon\n * @dependency nile-popup\n * @dependency nile-tag\n * @dependency nile-checkbox\n * @dependency nile-loader\n *\n * @slot label - The input's label.\n * @slot prefix - Prepend a presentational icon or element before the input.\n * @slot clear-icon - An icon to use in lieu of the default clear icon.\n * @slot expand-icon - The icon to show when the control is expanded/collapsed.\n * @slot help-text - Text that describes how to use the input.\n * @slot footer - Custom footer content (overrides default footer in multi-select mode).\n * @slot no-results - Custom no-results content.\n *\n * @event nile-change - Emitted when the control's value changes.\n * @event nile-clear - Emitted when the control's value is cleared.\n * @event nile-input - Emitted when the control receives input.\n * @event nile-focus - Emitted when the control gains focus.\n * @event nile-blur - Emitted when the control loses focus.\n * @event nile-show - Emitted when the dropdown opens.\n * @event nile-after-show - Emitted after the dropdown opens and all animations complete.\n * @event nile-hide - Emitted when the dropdown closes.\n * @event nile-after-hide - Emitted after the dropdown closes and all animations complete.\n * @event nile-search - Emitted (debounced) when the user types. Useful for API-driven filtering.\n * @event nile-tag-remove - Emitted when a tag is removed in multi-select mode.\n * @event nile-tag-add - Emitted when a custom value is added via allowCustomValue.\n * @event nile-scroll-end - Emitted when scrolled to the bottom (for infinite loading).\n * @event nile-invalid - Emitted when form validation constraints aren't satisfied.\n * @event nile-select-all - Emitted when the Select all / Deselect all control toggles. Detail: { value, name, action: 'select-all' | 'deselect-all' }.\n *\n * @csspart form-control - The form control wrapper.\n * @csspart form-control-label - The label wrapper.\n * @csspart form-control-input - The input area wrapper.\n * @csspart combobox - The combobox trigger (input + tags + icons).\n * @csspart input - The text input element.\n * @csspart listbox - The dropdown listbox.\n * @csspart tags - The tags container in multi-select mode.\n * @csspart tag - Each individual tag.\n * @csspart clear-button - The clear button.\n * @csspart expand-icon - The expand/collapse icon.\n * @csspart top-actions - The sticky row above the option list that contains the Select all checkbox and the Selected / Show all filter toggle. Rendered only when multiple && selectAllEnabled.\n * @csspart select-all - The Select all / Deselect all checkbox wrapper inside top-actions.\n * @csspart show-toggle - The \"Selected / Show all\" filter button inside top-actions.\n * @csspart no-results - The empty-state container shown when a search/filter returns no items. Contains no-results-title and no-results-subtitle.\n * @csspart no-results-title - The title row of the no-results empty state.\n * @csspart no-results-subtitle - The subtitle row of the no-results empty state.\n * @csspart no-data - The empty-state container shown when the dataset is empty (no active search/filter).\n * @csspart footer - The footer with \"Show Selected\" / \"Clear All\".\n * @csspart no-results - The no-results message.\n */\n@customElement('nile-combobox')\nexport class NileCombobox extends NileElement implements NileFormControl {\n static styles: CSSResultGroup = styles;\n\n private readonly formControlController = new FormControlController(this, {\n assumeInteractionOn: ['nile-blur', 'nile-input'],\n });\n private readonly hasSlotController = new HasSlotController(this, 'help-text', 'label');\n private readonly portalManager = new ComboboxPortalManager(this);\n private readonly searchManager = new ComboboxSearchManager();\n\n private scrollElementRef: Ref<HTMLDivElement> = createRef();\n private virtualizerCtrl = new VirtualizerController<HTMLDivElement, Element>(this, {\n getScrollElement: () => this.scrollElementRef.value ?? null,\n count: 0,\n estimateSize: () => 38,\n overscan: 5,\n });\n\n private hScrollElementRef: Ref<HTMLDivElement> = createRef();\n private hVirtualizerCtrl = new VirtualizerController<HTMLDivElement, Element>(this, {\n getScrollElement: () => this.hScrollElementRef.value ?? null,\n count: 0,\n estimateSize: () => 160,\n horizontal: true,\n overscan: 3,\n });\n\n private scrollTimeout: number | undefined;\n private scrolling = false;\n private visibilityManager?: VisibilityManager;\n private keyboardActiveIndex = -1;\n\n @query('.combobox-popup') popup: NilePopup;\n @query('.combobox__trigger') combobox: HTMLElement;\n @query('.combobox__input') inputElement: HTMLInputElement;\n @query('.combobox__value-input') valueInput: HTMLInputElement;\n\n @state() private hasFocus = false;\n @state() displayLabel = '';\n @state() selectedOptions: ComboboxOption[] = [];\n\n /** The items displayed after filtering. Renderer reads from this. */\n @state() filteredData: any[] = [];\n\n /**\n * Mixed (header + option) row list, only populated when `data` contains\n * group entries (`type: 'group'`). When non-empty, the listbox renders from\n * this instead of `filteredData`. `filteredData` stays in sync as the\n * option-only projection so existing select-all / strict-match / etc. logic\n * keeps working unchanged.\n */\n @state() private filteredRows: ComboboxRow[] = [];\n\n /** The complete unfiltered dataset (preserved for re-filtering). */\n @state() private originalData: any[] = [];\n\n @state() showNoResults = false;\n @state() showListbox = false;\n @state() searchValue = '';\n @state() private showSelectedOnly = false;\n @state() private selectAllChecked = false;\n @state() private selectAllIndeterminate = false;\n\n /**\n * Index into `filteredRows` of the group header that should be pinned at\n * the top of the (virtualized) listbox right now. -1 means none.\n * Recomputed on scroll.\n */\n @state() private stickyHeaderIndex = -1;\n\n // ── Public properties ──\n\n @property() name = '';\n\n @property({ type: Array }) data: any[] = [];\n\n @property({\n converter: {\n fromAttribute: (value: string) => value.split(' '),\n toAttribute: (value: string[]) => value.join(' '),\n },\n })\n value: string | string[] = '';\n\n @defaultValue() defaultValue: string | string[] = '';\n\n @property() size: ComboboxSize = 'medium';\n\n @property() placeholder = 'Type to search...';\n\n @property({ type: Boolean, reflect: true }) multiple = false;\n\n @property() label = '';\n\n @property({ type: Boolean, reflect: true }) required = false;\n\n @property({ type: Boolean, reflect: true }) disabled = false;\n\n @property({ type: Boolean, reflect: true }) open = false;\n\n @property({ type: Boolean, reflect: true }) clearable = false;\n\n @property({ type: Boolean, reflect: true }) loading = false;\n\n @property({ type: Boolean, reflect: true }) optionsLoading = false;\n\n /** When true, skip local filtering and rely solely on the `nile-search` event for API-driven results. */\n @property({ type: Boolean, reflect: true }) disableLocalSearch = false;\n\n /** When true, displays a \"+ Add [value]\" option for values not in the data. */\n @property({ type: Boolean, reflect: true }) allowCustomValue = false;\n\n /** When true, typing free text and pressing Enter/Tab adds it as a tag (like nile-chip's acceptUserInput). */\n @property({ type: Boolean, reflect: true }) acceptUserInput = false;\n\n /** When true, custom values added via allowCustomValue or acceptUserInput are also appended to the suggestions list. */\n @property({ type: Boolean, reflect: true }) addToSuggestions = false;\n\n /** When true, value must match an option. On blur, reverts to the last valid value if text doesn't match. */\n @property({ type: Boolean, reflect: true }) strict = false;\n\n /** Max tags visible before showing \"+N more\" (0 = no limit). */\n @property({ attribute: 'max-tags-visible', type: Number }) maxTagsVisible = 3;\n\n /** Controls how tags wrap in multi-select mode. */\n @property() tagLayout: ComboboxTagLayout = 'single-line';\n\n /**\n * Show footer with \"Show Selected\" and \"Clear All\" in multi-select mode.\n * Automatically suppressed when `selectAllEnabled` is true, since the top\n * actions row already provides the same controls.\n */\n @property({ type: Boolean, reflect: true }) showFooter = true;\n\n /**\n * When true (and `multiple` is true), renders a \"Select all\" / \"Deselect all\"\n * checkbox at the top of the listbox. Operates on the currently visible,\n * non-disabled options (respects the active search filter).\n */\n @property({ type: Boolean, reflect: true, attribute: 'select-all-enabled' }) selectAllEnabled = false;\n\n /**\n * When true (default), data-driven group headers stick to the top of the\n * listbox while scrolling through that group's options (Atlassian-style).\n * Works in both plain and virtualized rendering modes. Set to false for\n * inline-only headers that scroll away with their options.\n */\n @property({ type: Boolean, reflect: true, attribute: 'sticky-group-header' }) stickyGroupHeader = true;\n\n @property({ type: Boolean, reflect: true }) portal = false;\n\n @property({ type: Boolean }) hoist = false;\n\n @property({ reflect: true }) placement: ComboboxPlacement = 'bottom';\n\n @property({ reflect: true }) form = '';\n\n @property({ attribute: 'help-text', reflect: true }) helpText = '';\n\n @property({ attribute: 'error-message', reflect: true }) errorMessage = '';\n\n @property({ type: Boolean }) warning = false;\n @property({ type: Boolean }) error = false;\n @property({ type: Boolean }) success = false;\n\n @property({ type: Boolean, reflect: true }) filled = false;\n @property({ type: Boolean, reflect: true }) pill = false;\n\n @property({ type: String }) noResultsMessage = 'No result found';\n @property({ type: String, attribute: 'no-results-subtitle' }) noResultsSubtitle = 'Clear search or change filter';\n @property({ type: String, attribute: 'no-data-message' }) noDataMessage = 'No data available';\n\n /**\n * Pre-defined autocomplete suggestions. Accepts a JSON array string attribute\n * or a JS array property (like nile-chip). When `addToSuggestions` is true,\n * custom values added by the user are appended to this list and persisted.\n */\n @property({\n type: Array,\n converter: {\n fromAttribute: (value: string | null) => {\n if (!value) return [];\n try { return JSON.parse(value); } catch { return []; }\n },\n toAttribute: (value: any[]) => JSON.stringify(value),\n },\n })\n autoCompleteOptions: any[] = [];\n\n /** Debounce interval (ms) for the nile-search event. */\n @property({ type: Number }) debounceMs = 300;\n\n @property({ attribute: false }) renderItemConfig?: ComboboxRenderItemConfig;\n\n @property({ type: Boolean, reflect: true }) allowHtmlLabel = true;\n\n @property({ type: Boolean, reflect: true, attribute: true }) enableVisibilityEffect = false;\n @property({ type: Boolean, reflect: true, attribute: true }) enableTabClose = false;\n @property({ type: Boolean, reflect: true }) noWidthSync = false;\n\n /** Number of columns in the dropdown grid (vertical scroll). When > 1, options render in a multi-column grid layout. */\n @property({ attribute: 'grid-columns', type: Number, reflect: true }) gridColumns = 1;\n\n /** Number of visible rows in horizontal grid mode. When > 0, enables horizontal virtual scroll with columns scrolling left/right. */\n @property({ attribute: 'grid-rows', type: Number, reflect: true }) gridRows = 0;\n\n /** Width of each column in horizontal grid mode (px). */\n @property({ attribute: 'grid-column-width', type: Number }) gridColumnWidth = 160;\n\n // ── Accessors ──\n\n get validity() {\n return this.valueInput?.validity;\n }\n\n get validationMessage() {\n return this.valueInput?.validationMessage ?? '';\n }\n\n // ── Lifecycle ──\n\n connectedCallback() {\n super.connectedCallback();\n this.open = false;\n this.setupBoundHandlers();\n this.emit('nile-init');\n\n this.updateComplete.then(() => {\n if (this.autoCompleteOptions.length > 0 && this.data.length === 0) {\n this.data = [...this.autoCompleteOptions];\n }\n if (this.value && this.data.length > 0) {\n this.syncSelection();\n }\n });\n }\n\n disconnectedCallback() {\n this.removeOpenListeners();\n this.visibilityManager?.cleanup();\n this.searchManager.cancelDebounce();\n if (this.scrollTimeout) {\n clearTimeout(this.scrollTimeout);\n this.scrollTimeout = undefined;\n }\n this.portalManager.cleanupPortal();\n }\n\n protected firstUpdated(_changed: PropertyValues) {\n this.visibilityManager = new VisibilityManager({\n host: this,\n target: this.combobox,\n enableVisibilityEffect: this.enableVisibilityEffect,\n enableTabClose: this.enableTabClose,\n isOpen: () => this.open,\n onAnchorOutOfView: () => {\n this.hide();\n this.emit('nile-visibility-change', { visible: false, reason: 'anchor-out-of-view', name: this.name });\n },\n onDocumentHidden: () => {\n this.hide();\n this.emit('nile-visibility-change', { visible: false, reason: 'document-hidden', name: this.name });\n },\n emit: (event: string, detail: any) => this.emit(`nile-${event}`, detail),\n });\n }\n\n protected updated(changedProperties: PropertyValues): void {\n if (changedProperties.has('value')) {\n this.syncSelection();\n }\n this.updateVirtualizerCount();\n }\n\n private get isHorizontalGrid(): boolean {\n return this.gridRows > 0 && this.gridColumns <= 1;\n }\n\n /** True when the source data contains at least one group entry. */\n private get hasGroupedData(): boolean {\n const base = this.originalData.length > 0 ? this.originalData : this.data;\n return hasGroups(base);\n }\n\n /**\n * Walk filteredRows and find the index of the deepest group header whose\n * virtual position is at or above `scrollTop`. That's the header that\n * should be pinned at the top of the listbox right now.\n */\n private updateStickyHeader(scrollTop: number): void {\n if (!this.stickyGroupHeader || !this.hasGroupedData) {\n if (this.stickyHeaderIndex !== -1) this.stickyHeaderIndex = -1;\n return;\n }\n let offset = 0;\n let stuck = -1;\n for (let i = 0; i < this.filteredRows.length; i++) {\n const row = this.filteredRows[i];\n const size = row.kind === 'header' ? 32 : 38;\n if (offset > scrollTop) break;\n if (row.kind === 'header') stuck = i;\n offset += size;\n }\n if (stuck !== this.stickyHeaderIndex) this.stickyHeaderIndex = stuck;\n }\n\n /** Recursively keep only options whose value is in `selectedSet`; drop empty groups. */\n private pruneTreeBySelection(items: any[], selectedSet: Set<string>): any[] {\n const out: any[] = [];\n for (const item of items) {\n if (item && typeof item === 'object' && item.type === 'group' && Array.isArray(item.options)) {\n const kept = this.pruneTreeBySelection(item.options, selectedSet);\n if (kept.length > 0) out.push({ ...item, options: kept });\n } else if (selectedSet.has(String(this.getItemValue(item)))) {\n out.push(item);\n }\n }\n return out;\n }\n\n private get hasActiveFilter(): boolean {\n return !!this.searchValue || this.showSelectedOnly;\n }\n\n private renderEmptyState(): TemplateResult {\n if (this.hasActiveFilter) {\n return ComboboxRenderer.renderNoResults(this.noResultsMessage, this.noResultsSubtitle);\n }\n return ComboboxRenderer.renderNoData(this.noDataMessage);\n }\n\n private get isBidirectionalGrid(): boolean {\n return this.gridRows > 0 && this.gridColumns > 1;\n }\n\n private get virtualRowCount(): number {\n if (this.gridColumns > 1) {\n return Math.ceil(this.filteredData.length / this.gridColumns);\n }\n if (this.hasGroupedData) {\n return this.filteredRows.length;\n }\n return this.filteredData.length;\n }\n\n private get virtualColumnCount(): number {\n return Math.ceil(this.filteredData.length / Math.max(this.gridRows, 1));\n }\n\n private updateVirtualizerCount(): void {\n if (this.isHorizontalGrid) {\n const hVirtualizer = this.hVirtualizerCtrl.getVirtualizer();\n const colCount = this.virtualColumnCount;\n if (hVirtualizer.options.count !== colCount || hVirtualizer.options.estimateSize(0) !== this.gridColumnWidth) {\n hVirtualizer.setOptions({\n ...hVirtualizer.options,\n count: colCount,\n estimateSize: () => this.gridColumnWidth,\n });\n hVirtualizer.measure();\n }\n } else {\n const virtualizer = this.virtualizerCtrl.getVirtualizer();\n const count = this.virtualRowCount;\n const grouped = this.hasGroupedData;\n const countChanged = virtualizer.options.count !== count;\n const modeChanged = this.lastVirtualizerGrouped !== grouped;\n if (countChanged || modeChanged) {\n const estimateSize = grouped\n ? (index: number) => (this.filteredRows[index]?.kind === 'header' ? 32 : 38)\n : () => 38;\n virtualizer.setOptions({\n ...virtualizer.options,\n count,\n estimateSize,\n });\n virtualizer.measure();\n this.lastVirtualizerGrouped = grouped;\n }\n }\n }\n\n private lastVirtualizerGrouped = false;\n\n // ── Data helpers ──\n\n private getDisplayText(item: any): string {\n if (this.renderItemConfig?.getDisplayText) return this.renderItemConfig.getDisplayText(item);\n return item?.label || item?.name || item?.toString?.() || '';\n }\n\n private getItemValue(item: any): string {\n if (this.renderItemConfig?.getValue) return this.renderItemConfig.getValue(item);\n return item?.value ?? item;\n }\n\n private getSearchText(item: any): string {\n if (this.renderItemConfig?.getSearchText) return this.renderItemConfig.getSearchText(item);\n return this.getDisplayText(item);\n }\n\n private getItemDescription(item: any): string {\n return this.renderItemConfig?.getDescription?.(item) ?? item?.description ?? '';\n }\n\n private getItemPrefix(item: any): string {\n return this.renderItemConfig?.getPrefix?.(item) ?? item?.prefix ?? '';\n }\n\n private getItemSuffix(item: any): string {\n return this.renderItemConfig?.getSuffix?.(item) ?? item?.suffix ?? '';\n }\n\n // ── Selection ──\n\n private syncSelection(): void {\n const baseData = this.originalData.length > 0 ? this.originalData : this.data;\n const items = this.hasGroupedData\n ? getOptionRows(flattenRows(baseData)).map(r => r.item)\n : baseData;\n this.selectedOptions = ComboboxSelectionManager.createOptionsFromValues(\n this.value,\n items,\n this.getDisplayText.bind(this),\n this.renderItemConfig?.getValue,\n );\n\n if (!this.multiple) {\n const label = this.selectedOptions[0]?.getTextLabel() ?? '';\n this.displayLabel = label;\n if (label) {\n this.searchValue = label;\n } else if (!this.hasFocus) {\n this.searchValue = '';\n }\n } else {\n this.displayLabel = '';\n }\n\n this.updateValidity();\n this.updateSelectAllState();\n }\n\n // ── Select All ──\n\n /**\n * Returns the options eligible for Select All — the currently filtered data\n * (so the active search/filter is respected) minus any `disabled` items.\n * Mirrors nile-select's `getSelectableOptions()` contract.\n */\n private getSelectableData(): any[] {\n return this.filteredData.filter((item: any) => !item?.disabled);\n }\n\n /**\n * Derives `selectAllChecked` + `selectAllIndeterminate` from the current\n * selection vs. the selectable set. No-op when `multiple` is false.\n *\n * options=0 → both false (nothing to select, e.g. empty search)\n * selected=0 → checked=false, indeterminate=false\n * selected=options → checked=true, indeterminate=false\n * otherwise (partial) → checked=false, indeterminate=true\n */\n private updateSelectAllState(): void {\n if (!this.multiple) {\n this.selectAllChecked = false;\n this.selectAllIndeterminate = false;\n return;\n }\n const options = this.getSelectableData();\n if (options.length === 0) {\n this.selectAllChecked = false;\n this.selectAllIndeterminate = false;\n return;\n }\n const selectedValues = Array.isArray(this.value) ? this.value : [];\n const selectedSet = new Set(selectedValues.map(String));\n const selectedInView = options.reduce((n, item) => {\n return n + (selectedSet.has(String(this.getItemValue(item))) ? 1 : 0);\n }, 0);\n\n if (selectedInView === 0) {\n this.selectAllChecked = false;\n this.selectAllIndeterminate = false;\n } else if (selectedInView === options.length) {\n this.selectAllChecked = true;\n this.selectAllIndeterminate = false;\n } else {\n this.selectAllChecked = false;\n this.selectAllIndeterminate = true;\n }\n }\n\n /**\n * Toggles all selectable, visible options. Indeterminate → clears selection\n * (matches the \"Deselect All\" label flip), empty → selects all,\n * fully-selected → clears.\n */\n private handleSelectAllToggle(event: Event): void {\n event.stopPropagation();\n event.preventDefault();\n if (!this.multiple || !this.selectAllEnabled) return;\n\n const options = this.getSelectableData();\n if (options.length === 0) return;\n\n const shouldUnselectAll = this.selectAllChecked || this.selectAllIndeterminate;\n const current = Array.isArray(this.value) ? [...this.value] : [];\n const inViewValues = options.map(item => String(this.getItemValue(item)));\n const inViewSet = new Set(inViewValues);\n\n let next: string[];\n if (shouldUnselectAll) {\n // Deselect only the in-view options; preserve selections outside the filter.\n next = current.filter(v => !inViewSet.has(String(v)));\n } else {\n // Select all in-view options on top of any existing (out-of-view) selection.\n const merged = new Set(current.map(String));\n inViewValues.forEach(v => merged.add(v));\n next = Array.from(merged);\n }\n\n this.value = next;\n this.searchValue = '';\n this.syncSelection();\n this.filterOptions('', true);\n\n this.updateComplete.then(() => {\n this.emit('nile-input', { value: this.value, name: this.name });\n this.emit('nile-change', { value: this.value, name: this.name });\n this.emit('nile-select-all', {\n value: this.value,\n name: this.name,\n action: shouldUnselectAll ? 'deselect-all' : 'select-all',\n });\n });\n }\n\n // ── Event handler setup ──\n\n private handleDocumentFocusIn!: (e: FocusEvent) => void;\n private handleDocumentKeyDown!: (e: KeyboardEvent) => void;\n private handleDocumentMouseDown!: (e: MouseEvent) => void;\n private handleWindowError!: (e: ErrorEvent) => void;\n private handleWindowResize!: () => void;\n private handleWindowScroll!: () => void;\n\n private setupBoundHandlers(): void {\n this.handleDocumentFocusIn = (event: FocusEvent) => {\n if (!this.open) return;\n const path = event.composedPath();\n const hitSelf = path.includes(this);\n const hitPopup = this.popup && path.includes(this.popup);\n const hitPortal = this.portal && this.portalManager.portalContainerElement && path.includes(this.portalManager.portalContainerElement);\n if (!hitSelf && !hitPopup && !hitPortal) this.hide();\n };\n\n this.handleDocumentKeyDown = (event: KeyboardEvent) => {\n if (!this.open && event.key !== 'ArrowDown' && event.key !== 'ArrowUp' && event.key !== 'Enter') return;\n this.onGlobalKeyDown(event);\n };\n\n this.handleDocumentMouseDown = (event: MouseEvent) => {\n if (!this.open) return;\n const path = event.composedPath();\n const hitSelf = path.includes(this);\n const hitPopup = this.popup && path.includes(this.popup);\n const hitPortal = this.portal && this.portalManager.portalContainerElement && path.includes(this.portalManager.portalContainerElement);\n if (!hitSelf && !hitPopup && !hitPortal) this.hide();\n };\n\n this.handleWindowError = (event: ErrorEvent) => {\n const msg = event.error?.message || event.message || '';\n if (msg.includes(\"Cannot read properties of null (reading 'insertBefore')\")) {\n event.preventDefault();\n }\n };\n\n this.handleWindowResize = () => this.portalManager.updatePosition();\n this.handleWindowScroll = () => this.portalManager.updatePosition();\n }\n\n private addOpenListeners(): void {\n document.addEventListener('focusin', this.handleDocumentFocusIn);\n document.addEventListener('keydown', this.handleDocumentKeyDown);\n document.addEventListener('mousedown', this.handleDocumentMouseDown);\n window.addEventListener('error', this.handleWindowError);\n if (this.portal) {\n window.addEventListener('resize', this.handleWindowResize);\n window.addEventListener('scroll', this.handleWindowScroll, true);\n }\n }\n\n private removeOpenListeners(): void {\n document.removeEventListener('focusin', this.handleDocumentFocusIn);\n document.removeEventListener('keydown', this.handleDocumentKeyDown);\n document.removeEventListener('mousedown', this.handleDocumentMouseDown);\n window.removeEventListener('error', this.handleWindowError);\n window.removeEventListener('resize', this.handleWindowResize);\n window.removeEventListener('scroll', this.handleWindowScroll, true);\n }\n\n // ── Keyboard navigation (WAI-ARIA Combobox) ──\n\n private onInputKeyDown(event: KeyboardEvent): void {\n switch (event.key) {\n case 'ArrowDown':\n event.preventDefault();\n if (!this.open) {\n this.show();\n } else {\n this.moveActiveOption(this.gridColumns > 1 ? this.gridColumns : 1);\n }\n break;\n case 'ArrowUp':\n event.preventDefault();\n if (!this.open) {\n this.show();\n } else {\n this.moveActiveOption(this.gridColumns > 1 ? -this.gridColumns : -1);\n }\n break;\n case 'ArrowRight':\n if (this.gridColumns > 1 && this.open) {\n event.preventDefault();\n this.moveActiveOption(1);\n }\n break;\n case 'ArrowLeft':\n if (this.gridColumns > 1 && this.open) {\n event.preventDefault();\n this.moveActiveOption(-1);\n }\n break;\n case 'Enter':\n event.preventDefault();\n if (this.open) {\n this.selectActiveOption();\n } else if (this.searchValue.trim() && (this.acceptUserInput || this.allowCustomValue)) {\n this.addCustomValue(this.searchValue.trim());\n } else {\n this.show();\n }\n break;\n case 'Escape':\n if (this.open) {\n event.preventDefault();\n event.stopPropagation();\n this.hide();\n }\n break;\n case 'Home':\n if (this.open) {\n event.preventDefault();\n this.setActiveOption(0);\n }\n break;\n case 'End':\n if (this.open) {\n event.preventDefault();\n this.setActiveOption(this.filteredData.length - 1);\n }\n break;\n case 'Backspace':\n if (this.multiple && this.searchValue === '' && this.selectedOptions.length > 0) {\n const last = this.selectedOptions[this.selectedOptions.length - 1];\n this.removeTag(last);\n }\n break;\n case 'Tab':\n if (this.multiple && this.acceptUserInput && this.searchValue.trim()) {\n this.addCustomValue(this.searchValue.trim());\n }\n if (this.open) this.hide();\n break;\n }\n }\n\n private onGlobalKeyDown(event: KeyboardEvent): void {\n if (event.key === 'Escape' && this.open) {\n event.preventDefault();\n event.stopPropagation();\n this.hide();\n this.inputElement?.focus({ preventScroll: true });\n }\n }\n\n private getVisibleOptions(): NodeListOf<Element> | Element[] {\n const root = this.portal ? this.portalManager.portalContainerElement : this.shadowRoot;\n if (!root) return [];\n return root.querySelectorAll('nile-option:not([disabled])');\n }\n\n private moveActiveOption(delta: number): void {\n const options = this.getVisibleOptions();\n if (!options.length) return;\n let next = this.keyboardActiveIndex + delta;\n if (next < 0) next = options.length - 1;\n if (next >= options.length) next = 0;\n this.setActiveOption(next);\n }\n\n private setActiveOption(index: number): void {\n const options = this.getVisibleOptions();\n if (!options.length) return;\n\n options.forEach((opt, i) => {\n const el = opt as HTMLElement;\n if (i === index) {\n el.setAttribute('aria-current', 'true');\n el.classList.add('combobox__option--active');\n el.scrollIntoView?.({ block: 'nearest' });\n } else {\n el.removeAttribute('aria-current');\n el.classList.remove('combobox__option--active');\n }\n });\n\n this.keyboardActiveIndex = index;\n }\n\n private selectActiveOption(): void {\n const options = this.getVisibleOptions();\n if (this.keyboardActiveIndex >= 0 && this.keyboardActiveIndex < options.length) {\n const opt = options[this.keyboardActiveIndex] as any;\n if (opt && !opt.disabled) {\n this.handleOptionSelection(opt.value);\n }\n } else if (this.searchValue.trim() && (this.allowCustomValue || this.acceptUserInput)) {\n this.addCustomValue(this.searchValue.trim());\n }\n }\n\n // ── Input handling ──\n\n private onInputChange(event: Event): void {\n event.stopPropagation();\n }\n\n private onInputHandler(event: Event): void {\n const target = event.target as HTMLInputElement;\n this.searchValue = target.value;\n\n if (!this.open) this.show();\n\n this.emit('nile-input', { value: this.searchValue, name: this.name });\n\n if (this.disableLocalSearch) {\n this.searchManager.debounceSearch(\n (q: string) => this.emit('nile-search', { query: q, name: this.name }),\n this.searchValue,\n this.debounceMs,\n );\n } else {\n this.filterOptions(this.searchValue);\n }\n\n this.keyboardActiveIndex = -1;\n }\n\n private filterOptions(search: string, preserveScroll = false): void {\n const baseData = this.originalData.length > 0 ? this.originalData : this.data;\n\n if (this.hasGroupedData) {\n // Grouped path: filter the tree, derive options-only projection.\n let tree = baseData;\n if (this.showSelectedOnly) {\n const selectedValues = Array.isArray(this.value) ? this.value : [this.value];\n const selectedSet = new Set(selectedValues.map(v => String(v)));\n tree = this.pruneTreeBySelection(baseData, selectedSet);\n }\n const { rows } = filterRows(tree, search, this.getSearchText.bind(this));\n this.filteredRows = rows;\n this.filteredData = getOptionRows(rows).map(r => r.item);\n this.showNoResults = this.filteredData.length === 0;\n // Recompute sticky header at current scroll (defaults to top on filter).\n const st = this.scrollElementRef.value?.scrollTop ?? 0;\n this.updateStickyHeader(st);\n } else {\n let source = baseData;\n if (this.showSelectedOnly) {\n const selectedValues = Array.isArray(this.value) ? this.value : [this.value];\n const selectedSet = new Set(selectedValues.map(v => String(v)));\n source = baseData.filter((item: any) => selectedSet.has(String(this.getItemValue(item))));\n }\n const { filteredItems, showNoResults } = this.searchManager.filter(\n search,\n source,\n this.getSearchText.bind(this),\n );\n this.filteredData = filteredItems;\n this.filteredRows = [];\n this.showNoResults = showNoResults;\n }\n\n this.portalManager.resetMeasuredHeight();\n if (!preserveScroll) {\n this.resetScrollPosition();\n }\n this.updateSelectAllState();\n this.requestUpdate();\n }\n\n // ── Focus ──\n\n private onFocusIn(): void {\n this.hasFocus = true;\n this.emit('nile-focus');\n if (!this.multiple && this.displayLabel) {\n this.searchValue = this.displayLabel;\n this.requestUpdate();\n this.updateComplete.then(() => {\n this.inputElement?.select();\n });\n }\n }\n\n private onFocusOut(): void {\n this.hasFocus = false;\n this.emit('nile-blur');\n\n if (this.open) return;\n\n if (!this.multiple) {\n if (this.strict) {\n const baseData = this.originalData.length > 0 ? this.originalData : this.data;\n const allItems = this.hasGroupedData\n ? getOptionRows(flattenRows(baseData)).map(r => r.item)\n : baseData;\n const match = allItems.find(\n (item: any) => this.getDisplayText(item).toLowerCase() === this.searchValue.toLowerCase(),\n );\n if (match) {\n const val = this.getItemValue(match);\n if (this.value !== val) {\n this.value = val;\n this.syncSelection();\n this.emit('nile-change', { value: this.value, name: this.name });\n }\n } else {\n this.searchValue = this.displayLabel;\n }\n } else {\n this.searchValue = this.displayLabel;\n }\n }\n }\n\n // ── Combobox trigger interaction ──\n\n private onTriggerMouseDown(event: MouseEvent): void {\n if (this.disabled) return;\n const path = event.composedPath();\n if (path.some(el => el instanceof Element && el.tagName.toLowerCase() === 'nile-icon-button')) return;\n\n event.preventDefault();\n this.inputElement?.focus({ preventScroll: true });\n if (this.open) {\n this.hide();\n } else {\n this.show();\n }\n }\n\n // ── Option click ──\n\n private onOptionClick(event: MouseEvent): void {\n // Use composedPath to find nile-option across shadow boundaries\n const path = event.composedPath();\n const option = path.find((el: EventTarget) => \n (el as HTMLElement).tagName === 'NILE-OPTION'\n ) as any;\n \n if (!option || option.disabled) return;\n this.handleOptionSelection(option.value);\n }\n\n private handleOptionSelection(optionValue: string): void {\n const oldValue = this.value;\n\n if (this.multiple) {\n const current = Array.isArray(this.value) ? this.value : [];\n this.value = ComboboxSelectionManager.toggleMultiValue(current, optionValue);\n this.searchValue = '';\n this.syncSelection();\n this.filterOptions('', true);\n } else {\n this.value = optionValue;\n this.syncSelection();\n this.searchValue = this.displayLabel;\n this.hide();\n }\n\n if (JSON.stringify(this.value) !== JSON.stringify(oldValue)) {\n this.updateComplete.then(() => {\n this.emit('nile-input', { value: this.value, name: this.name });\n this.emit('nile-change', { value: this.value, name: this.name });\n });\n }\n\n this.inputElement?.focus({ preventScroll: true });\n }\n\n private addCustomValue(val: string): void {\n if (this.addToSuggestions) {\n const allItems = this.originalData.length > 0 ? this.originalData : this.data;\n const alreadyExists = allItems.some((item: any) =>\n String(this.getItemValue(item)) === val || this.getDisplayText(item) === val,\n );\n if (!alreadyExists) {\n const newItem = this.renderItemConfig?.getValue\n ? { value: val, label: val }\n : val;\n this.originalData = [...allItems, newItem];\n this.data = [...this.originalData];\n this.autoCompleteOptions = [...this.originalData];\n this.filteredData = [...this.originalData];\n }\n }\n\n if (this.multiple) {\n const current = Array.isArray(this.value) ? this.value : [];\n if (!current.includes(val)) {\n this.value = [...current, val];\n }\n } else {\n this.value = val;\n this.hide();\n }\n\n this.searchValue = this.multiple ? '' : val;\n this.syncSelection();\n this.filterOptions(this.searchValue);\n\n this.emit('nile-tag-add', { value: val, name: this.name });\n this.emit('nile-change', { value: this.value, name: this.name });\n }\n\n // ── Clear ──\n\n private onClearClick(event: MouseEvent): void {\n event.stopPropagation();\n this.value = this.multiple ? [] : '';\n this.searchValue = '';\n this.syncSelection();\n this.filterOptions('');\n this.emit('nile-clear', { value: this.value, name: this.name });\n this.emit('nile-change', { value: this.value, name: this.name });\n }\n\n // ── Tags ──\n\n private removeTag(option: ComboboxOption): void {\n if (this.disabled) return;\n const current = Array.isArray(this.value) ? this.value : [];\n this.value = ComboboxSelectionManager.removeValue(current, option.value);\n this.syncSelection();\n this.emit('nile-tag-remove', { value: this.value, name: this.name, removedtagvalue: option.value });\n this.emit('nile-change', { value: this.value, name: this.name });\n }\n\n // ── Footer ──\n\n private onFooterClick(event: MouseEvent): void {\n event.stopPropagation();\n event.preventDefault();\n }\n\n private toggleShowSelected(event: Event): void {\n event.stopPropagation();\n event.preventDefault();\n if (this.selectedOptions.length === 0) return;\n\n this.showSelectedOnly = !this.showSelectedOnly;\n if (this.showSelectedOnly) this.searchValue = '';\n this.filterOptions(this.searchValue);\n }\n\n private clearAll(): void {\n this.showSelectedOnly = false;\n this.value = this.multiple ? [] : '';\n this.filterOptions('');\n this.syncSelection();\n this.emit('nile-change', { value: this.value, name: this.name });\n this.emit('nile-clear', { value: this.value, name: this.name });\n this.resetScrollPosition();\n }\n\n // ── Scroll ──\n\n private onScroll(e: Event): void {\n const target = e.target as HTMLElement;\n this.updateStickyHeader(target.scrollTop);\n if (this.showSelectedOnly) return;\n\n this.emit('nile-scroll', { scrollTop: target.scrollTop, scrollLeft: target.scrollLeft, name: this.name });\n\n if (!this.scrolling) {\n this.scrolling = true;\n this.emit('nile-scroll-start', { scrollTop: target.scrollTop, scrollLeft: target.scrollLeft, name: this.name });\n }\n\n clearTimeout(this.scrollTimeout);\n this.scrollTimeout = window.setTimeout(() => {\n this.scrolling = false;\n }, 300);\n\n const isAtBottom = Math.ceil(target.scrollTop) >= Math.floor(target.scrollHeight - target.offsetHeight);\n if (isAtBottom) {\n this.emit('nile-scroll-end', { scrollTop: target.scrollTop, scrollLeft: target.scrollLeft, name: this.name, isAtBottom: true });\n }\n }\n\n // ── Show / Hide ──\n\n async show(): Promise<unknown> {\n if (this.open || this.disabled) return undefined;\n this.open = true;\n return waitForEvent(this, 'nile-after-show');\n }\n\n async hide(): Promise<unknown> {\n if (!this.open) return undefined;\n this.open = false;\n return waitForEvent(this, 'nile-after-hide');\n }\n\n @watch('open', { waitUntilFirstUpdate: true })\n async handleOpenChange(): Promise<void> {\n if (this.open && !this.disabled) {\n this.visibilityManager?.setup();\n this.showListbox = true;\n await this.updateComplete;\n await this.doOpen();\n\n if (this.portal) this.portalManager.setupPortal();\n } else {\n this.visibilityManager?.cleanup();\n await this.doClose();\n this.showListbox = false;\n\n if (this.portal) this.portalManager.cleanupPortal();\n }\n }\n\n private async doOpen(): Promise<void> {\n this.emit('nile-show', { value: this.value, name: this.name });\n this.addOpenListeners();\n this.keyboardActiveIndex = -1;\n\n if (this.originalData.length === 0 && this.data.length > 0) {\n this.originalData = [...this.data];\n }\n if (this.hasGroupedData) {\n this.filterOptions(this.searchValue);\n } else {\n this.filteredData = [...(this.originalData.length > 0 ? this.originalData : this.data)];\n this.filteredRows = [];\n this.showNoResults = this.filteredData.length === 0;\n }\n\n await stopAnimations(this);\n\n if (this.popup?.popup) {\n this.popup.popup.style.visibility = 'hidden';\n }\n\n this.popup.active = true;\n\n await new Promise(r => requestAnimationFrame(r));\n await new Promise(r => requestAnimationFrame(r));\n\n if (this.popup?.popup) {\n this.popup.popup.style.visibility = '';\n }\n\n const { keyframes, options } = getAnimation(this, 'combobox.show', { dir: 'ltr' });\n await animateTo(this.popup.popup, keyframes, options);\n\n this.resetScrollPosition();\n this.emit('nile-after-show', { value: this.value, name: this.name });\n }\n\n private async doClose(): Promise<void> {\n this.emit('nile-hide', { value: this.value, name: this.name });\n this.removeOpenListeners();\n\n await stopAnimations(this);\n const { keyframes, options } = getAnimation(this, 'combobox.hide', { dir: 'ltr' });\n await animateTo(this.popup.popup, keyframes, options);\n this.popup.active = false;\n\n if (this.popup?.popup) this.popup.popup.style.visibility = '';\n\n this.showSelectedOnly = false;\n this.portalManager.resetMeasuredHeight();\n\n if (!this.multiple) {\n this.searchValue = this.displayLabel;\n }\n\n this.emit('nile-after-hide', { value: this.value, name: this.name });\n }\n\n // ── Watchers ──\n\n @watch('disabled', { waitUntilFirstUpdate: true })\n handleDisabledChange(): void {\n if (this.disabled) {\n this.open = false;\n this.handleOpenChange();\n }\n }\n\n @watch('value', { waitUntilFirstUpdate: true })\n handleValueChange(): void {\n this.syncSelection();\n this.requestUpdate();\n if (this.portal && this.portalManager.portalContainerElement) {\n this.portalManager.updatePosition();\n }\n }\n\n @watch('data', { waitUntilFirstUpdate: true })\n handleDataChange(): void {\n if (this.data.length > 0 && !this.showSelectedOnly) {\n this.originalData = [...this.data];\n }\n if (this.hasGroupedData) {\n this.filterOptions(this.searchValue);\n } else {\n this.filteredData = [...this.data];\n this.filteredRows = [];\n }\n this.syncSelection();\n this.updateSelectAllState();\n\n if (!this.optionsLoading && !this.loading && this.data.length === 0) {\n this.showNoResults = true;\n } else if (this.data.length > 0) {\n this.showNoResults = false;\n }\n\n this.portalManager.resetMeasuredHeight();\n if (this.portal && this.portalManager.portalContainerElement) {\n this.portalManager.updatePosition();\n }\n this.requestUpdate();\n }\n\n @watch('autoCompleteOptions', { waitUntilFirstUpdate: true })\n handleAutoCompleteOptionsChange(): void {\n if (this.autoCompleteOptions.length > 0) {\n this.data = [...this.autoCompleteOptions];\n }\n }\n\n @watch('multiple', { waitUntilFirstUpdate: true })\n @watch('selectAllEnabled', { waitUntilFirstUpdate: true })\n handleSelectAllConfigChange(): void {\n this.updateSelectAllState();\n }\n\n @watch('portal', { waitUntilFirstUpdate: true })\n handlePortalChange(): void {\n if (this.open) {\n if (this.portal) this.portalManager.setupPortal();\n else this.portalManager.cleanupPortal();\n }\n }\n\n // ── Form integration ──\n\n checkValidity(): boolean { return this.valueInput.checkValidity(); }\n getForm(): HTMLFormElement | null { return this.formControlController.getForm(); }\n reportValidity(): boolean { return this.valueInput.reportValidity(); }\n setCustomValidity(message: string): void {\n this.valueInput.setCustomValidity(message);\n this.formControlController.updateValidity();\n }\n\n focus(options?: FocusOptions): void { this.inputElement?.focus(options); }\n blur(): void { this.inputElement?.blur(); }\n\n private handleInvalid(event: Event): void {\n this.formControlController.setValidity(false);\n this.formControlController.emitInvalidEvent(event);\n }\n\n private updateValidity(): void {\n this.updateComplete.then(() => this.formControlController.updateValidity());\n }\n\n private async resetScrollPosition(): Promise<void> {\n await this.portalManager.resetScrollPosition();\n }\n\n // ── Render ──\n\n render(): TemplateResult {\n const hasLabelSlot = this.hasSlotController.test('label');\n const hasLabel = this.label ? true : !!hasLabelSlot;\n const hasValue = this.multiple\n ? (Array.isArray(this.value) && this.value.length > 0)\n : (typeof this.value === 'string' && this.value !== '');\n const hasClearIcon = this.clearable && !this.disabled && hasValue;\n const hasHelpText = !!this.helpText;\n const hasErrorMessage = !!this.errorMessage;\n const isEmpty = !hasValue;\n\n return html`\n <div\n part=\"form-control\"\n class=${classMap({\n 'form-control': true,\n 'form-control--small': this.size === 'small',\n 'form-control--medium': this.size === 'medium',\n 'form-control--large': this.size === 'large',\n 'form-control--has-label': hasLabel,\n 'form-control--has-help-text': hasHelpText,\n })}\n >\n <label\n id=\"label\"\n part=\"form-control-label\"\n class=\"form-control__label\"\n aria-hidden=${hasLabel ? 'false' : 'true'}\n @click=${() => this.inputElement?.focus()}\n >\n <slot name=\"label\">${this.label}</slot>\n </label>\n\n <div part=\"form-control-input\" class=\"form-control-input\">\n <nile-popup\n class=${classMap({\n 'combobox-popup': true,\n 'combobox--open': this.open,\n 'combobox--closed': !this.open,\n 'combobox--disabled': this.disabled,\n 'combobox--focused': this.hasFocus,\n 'combobox--multiple': this.multiple,\n 'combobox--empty': isEmpty,\n 'combobox--small': this.size === 'small',\n 'combobox--medium': this.size === 'medium',\n 'combobox--large': this.size === 'large',\n 'combobox--warning': this.warning,\n 'combobox--error': this.error,\n 'combobox--success': this.success,\n 'combobox--filled': this.filled,\n 'combobox--pill': this.pill,\n })}\n placement=${this.placement}\n strategy=${this.portal ? 'fixed' : (this.hoist ? 'fixed' : 'absolute')}\n distance=\"6\"\n ?flip=${!this.portal}\n ?shift=${!this.portal}\n sync=${ifDefined(!this.noWidthSync ? 'width' : undefined)}\n auto-size=\"vertical\"\n auto-size-padding=\"10\"\n >\n ${this.renderTrigger(hasClearIcon)}\n ${this.showListbox ? this.renderListbox() : html``}\n </nile-popup>\n\n ${hasHelpText ? html`<nile-form-help-text>${this.helpText}</nile-form-help-text>` : html``}\n ${hasErrorMessage ? html`<nile-form-error-message>${this.errorMessage}</nile-form-error-message>` : html``}\n </div>\n </div>\n `;\n }\n\n private renderTrigger(hasClearIcon: boolean): TemplateResult {\n const hasTags = this.multiple && this.selectedOptions.length > 0;\n const inputPlaceholder = hasTags ? '' : this.placeholder;\n\n return html`\n <div\n part=\"combobox\"\n class=\"combobox__trigger\"\n slot=\"anchor\"\n @mousedown=${this.onTriggerMouseDown}\n >\n <slot part=\"prefix\" name=\"prefix\" class=\"combobox__prefix\"></slot>\n\n <div class=${classMap({\n 'combobox__scroll-area': true,\n 'combobox__scroll-area--single-line': this.multiple && this.tagLayout === 'single-line',\n 'combobox__scroll-area--wrap': this.multiple && (this.tagLayout === 'wrap' || this.tagLayout === 'fixed-height'),\n })}>\n ${hasTags ? this.renderInlineTags() : html``}\n\n <div class=\"combobox__input-wrapper\">\n <input\n part=\"input\"\n class=\"combobox__input\"\n type=\"text\"\n placeholder=${inputPlaceholder}\n .disabled=${this.disabled}\n .value=${this.searchValue}\n autocomplete=\"off\"\n spellcheck=\"false\"\n autocapitalize=\"off\"\n aria-controls=\"listbox\"\n aria-expanded=${this.open ? 'true' : 'false'}\n aria-haspopup=\"listbox\"\n aria-labelledby=\"label\"\n aria-disabled=${this.disabled ? 'true' : 'false'}\n aria-describedby=\"help-text\"\n aria-activedescendant=${this.keyboardActiveIndex >= 0 ? `option-${this.keyboardActiveIndex}` : ''}\n role=\"combobox\"\n tabindex=\"0\"\n @input=${this.onInputHandler}\n @keydown=${this.onInputKeyDown}\n @focus=${this.onFocusIn}\n @blur=${this.onFocusOut}\n @change=${this.onInputChange}\n />\n </div>\n </div>\n\n <input\n class=\"combobox__value-input\"\n type=\"text\"\n ?disabled=${this.disabled}\n ?required=${this.required}\n .value=${Array.isArray(this.value) ? this.value.join(', ') : this.value}\n tabindex=\"-1\"\n aria-hidden=\"true\"\n @focus=${() => this.focus()}\n @invalid=${this.handleInvalid}\n />\n\n <div class=\"combobox__actions\">\n ${hasClearIcon ? this.renderClearButton() : html``}\n\n <slot name=\"expand-icon\" part=\"expand-icon\" class=\"combobox__expand-icon\">\n <nile-icon\n library=\"system\"\n name=\"var(--nile-icon-arrow-down, var(--ng-icon-chevron-down))\"\n method=\"var(--nile-svg-method-fill, var(--ng-svg-method-stroke))\"\n color=\"var(--nile-colors-dark-500, var(--ng-colors-fg-quaternary-400))\"\n ></nile-icon>\n </slot>\n </div>\n </div>\n `;\n }\n\n private renderInlineTags(): TemplateResult[] {\n const tags: TemplateResult[] = [];\n\n this.selectedOptions.forEach((option, index) => {\n if (this.maxTagsVisible > 0 && index >= this.maxTagsVisible) {\n if (index === this.maxTagsVisible) {\n tags.push(html`<span class=\"combobox__tags-count\">+${this.selectedOptions.length - this.maxTagsVisible} More</span>`);\n }\n return;\n }\n tags.push(html`\n <nile-tag\n part=\"tag\"\n exportparts=\"base:tag__base, content:tag__content, remove-button:tag__remove-button\"\n ?pill=${this.pill}\n size=${this.size}\n removable\n ?disabled=${this.disabled}\n @nile-remove=${(e: NileRemoveEvent) => { e.stopPropagation(); this.removeTag(option); }}\n >\n ${option.getTextLabel()}\n </nile-tag>\n `);\n });\n\n return tags;\n }\n\n private renderClearButton(): TemplateResult {\n return html`\n <button\n part=\"clear-button\"\n class=\"combobox__clear\"\n type=\"button\"\n aria-label=\"Clear\"\n @mousedown=${(e: MouseEvent) => e.stopPropagation()}\n @click=${this.onClearClick}\n tabindex=\"-1\"\n >\n <slot name=\"clear-icon\">\n <nile-icon\n name=\"var(--nile-icon-close, var(--ng-icon-x-close))\"\n size=\"var(--nile-height-14px, var(--ng-height-16px))\"\n method=\"var(--nile-svg-method-fill, var(--ng-svg-method-stroke))\"\n library=\"system\"\n color=\"var(--nile-colors-dark-500, var(--ng-colors-fg-quaternary-400))\"\n ></nile-icon>\n </slot>\n </button>\n `;\n }\n\n private renderStickyHeaderOverlay(grouped: boolean, useVirtual: boolean): TemplateResult {\n if (!this.stickyGroupHeader || !grouped || !useVirtual) return html``;\n const idx = this.stickyHeaderIndex;\n if (idx < 0 || idx >= this.filteredRows.length) return html``;\n const row = this.filteredRows[idx];\n if (row.kind !== 'header') return html``;\n return html`\n <div class=\"combobox__group-sticky-overlay\">\n ${ComboboxRenderer.renderGroupHeader(row)}\n </div>\n `;\n }\n\n private renderListbox(): TemplateResult {\n const showAddOption = this.allowCustomValue\n && this.searchValue.trim()\n && !this.filteredData.some((item: any) => {\n const v = this.getItemValue(item);\n return String(v).toLowerCase() === this.searchValue.trim().toLowerCase();\n })\n && !this.filteredData.some((item: any) => {\n const t = this.getDisplayText(item);\n return t.toLowerCase() === this.searchValue.trim().toLowerCase();\n });\n\n if (this.isHorizontalGrid) {\n return this.renderHorizontalListbox(!!showAddOption);\n }\n\n const isGrid = this.gridColumns > 1 || this.isBidirectionalGrid;\n const grouped = this.hasGroupedData && !isGrid;\n const useVirtual = grouped\n ? this.filteredRows.length >= 5\n : ComboboxRenderer.shouldUseVirtualizer(this.filteredData, this.gridColumns);\n const virtualizer = this.virtualizerCtrl.getVirtualizer();\n const virtualItems = (useVirtual || isGrid) ? virtualizer.getVirtualItems() : [];\n const totalSize = (useVirtual || isGrid) ? virtualizer.getTotalSize() : 0;\n\n return html`\n <div\n id=\"listbox\"\n role=\"listbox\"\n aria-expanded=${this.open ? 'true' : 'false'}\n aria-multiselectable=${this.multiple ? 'true' : 'false'}\n aria-labelledby=\"label\"\n part=\"listbox\"\n class=\"combobox__listbox ${this.isBidirectionalGrid ? 'combobox__listbox--bidirectional' : ''} ${this.portal ? 'combobox__portal-hidden' : ''}\"\n tabindex=\"-1\"\n @mouseup=${this.onOptionClick}\n @scroll=${this.onScroll}\n style=\"${this.portal ? 'display: none;' : ''}${this.isBidirectionalGrid ? `max-height:${this.gridRows * 38 + 16}px;` : ''}\"\n ${ref(this.scrollElementRef)}\n >\n ${this.renderLoader()}\n ${this.renderSelectAll()}\n ${this.renderStickyHeaderOverlay(grouped, useVirtual)}\n ${this.showNoResults && !this.optionsLoading && !this.loading\n ? this.renderEmptyState()\n : isGrid\n ? ComboboxRenderer.renderVirtualizedGrid(\n virtualItems,\n totalSize,\n this.filteredData,\n this.value,\n this.multiple,\n this.gridColumns,\n this.getDisplayText.bind(this),\n this.getItemValue.bind(this),\n this.optionsLoading || this.loading,\n this.allowHtmlLabel,\n this.renderItemConfig?.getDescription ? this.getItemDescription.bind(this) : undefined,\n this.renderItemConfig?.getPrefix ? this.getItemPrefix.bind(this) : undefined,\n this.renderItemConfig?.getSuffix ? this.getItemSuffix.bind(this) : undefined,\n this.isBidirectionalGrid ? this.gridColumnWidth : undefined,\n )\n : grouped\n ? (useVirtual\n ? ComboboxRenderer.renderRowsVirtualized(\n virtualItems,\n totalSize,\n this.filteredRows,\n this.value,\n this.multiple,\n this.getDisplayText.bind(this),\n this.getItemValue.bind(this),\n this.optionsLoading || this.loading,\n this.allowHtmlLabel,\n this.renderItemConfig?.getDescription ? this.getItemDescription.bind(this) : undefined,\n this.renderItemConfig?.getPrefix ? this.getItemPrefix.bind(this) : undefined,\n this.renderItemConfig?.getSuffix ? this.getItemSuffix.bind(this) : undefined,\n )\n : ComboboxRenderer.renderRowsPlain(\n this.filteredRows,\n this.value,\n this.multiple,\n this.getDisplayText.bind(this),\n this.getItemValue.bind(this),\n this.showNoResults,\n this.noResultsMessage,\n this.optionsLoading || this.loading,\n this.onScroll.bind(this),\n this.allowHtmlLabel,\n this.renderItemConfig?.getDescription ? this.getItemDescription.bind(this) : undefined,\n this.renderItemConfig?.getPrefix ? this.getItemPrefix.bind(this) : undefined,\n this.renderItemConfig?.getSuffix ? this.getItemSuffix.bind(this) : undefined,\n undefined,\n this.hasActiveFilter ? this.noResultsSubtitle : undefined,\n ))\n : useVirtual\n ? ComboboxRenderer.renderVirtualizedOptions(\n virtualItems,\n totalSize,\n this.filteredData,\n this.value,\n this.multiple,\n this.getDisplayText.bind(this),\n this.getItemValue.bind(this),\n this.optionsLoading || this.loading,\n this.allowHtmlLabel,\n virtualizer.measureElement,\n this.renderItemConfig?.getDescription ? this.getItemDescription.bind(this) : undefined,\n this.renderItemConfig?.getPrefix ? this.getItemPrefix.bind(this) : undefined,\n this.renderItemConfig?.getSuffix ? this.getItemSuffix.bind(this) : undefined,\n )\n : ComboboxRenderer.renderPlainOptions(\n this.filteredData,\n this.value,\n this.multiple,\n this.getDisplayText.bind(this),\n this.getItemValue.bind(this),\n this.showNoResults,\n this.noResultsMessage,\n this.optionsLoading || this.loading,\n this.onScroll.bind(this),\n this.allowHtmlLabel,\n this.renderItemConfig?.getDescription ? this.getItemDescription.bind(this) : undefined,\n this.renderItemConfig?.getPrefix ? this.getItemPrefix.bind(this) : undefined,\n this.renderItemConfig?.getSuffix ? this.getItemSuffix.bind(this) : undefined,\n undefined,\n this.hasActiveFilter ? this.noResultsSubtitle : undefined,\n )\n }\n ${showAddOption ? html`\n <div @mouseup=${(e: MouseEvent) => { e.stopPropagation(); this.addCustomValue(this.searchValue.trim()); }}>\n ${ComboboxRenderer.renderAddCustomOption(this.searchValue.trim(), this.multiple)}\n </div>\n ` : ''}\n ${this.multiple && this.showFooter && !this.selectAllEnabled ? this.renderFooter() : ''}\n </div>\n `;\n }\n\n private renderHorizontalListbox(showAddOption: boolean): TemplateResult {\n const hVirtualizer = this.hVirtualizerCtrl.getVirtualizer();\n const virtualItems = hVirtualizer.getVirtualItems();\n const totalSize = hVirtualizer.getTotalSize();\n\n return html`\n <div\n id=\"listbox\"\n role=\"listbox\"\n aria-expanded=${this.open ? 'true' : 'false'}\n aria-multiselectable=${this.multiple ? 'true' : 'false'}\n aria-labelledby=\"label\"\n part=\"listbox\"\n class=\"combobox__listbox combobox__listbox--horizontal ${this.portal ? 'combobox__portal-hidden' : ''}\"\n tabindex=\"-1\"\n @mouseup=${this.onOptionClick}\n style=${this.portal ? 'display: none;' : ''}\n ${ref(this.hScrollElementRef)}\n >\n ${this.renderLoader()}\n ${this.renderSelectAll()}\n ${this.showNoResults && !this.optionsLoading && !this.loading\n ? this.renderEmptyState()\n : ComboboxRenderer.renderHorizontalGrid(\n virtualItems,\n totalSize,\n this.filteredData,\n this.value,\n this.multiple,\n this.gridRows,\n this.gridColumnWidth,\n this.getDisplayText.bind(this),\n this.getItemValue.bind(this),\n this.optionsLoading || this.loading,\n this.allowHtmlLabel,\n this.renderItemConfig?.getDescription ? this.getItemDescription.bind(this) : undefined,\n this.renderItemConfig?.getPrefix ? this.getItemPrefix.bind(this) : undefined,\n this.renderItemConfig?.getSuffix ? this.getItemSuffix.bind(this) : undefined,\n )\n }\n ${showAddOption ? html`\n <div @mouseup=${(e: MouseEvent) => { e.stopPropagation(); this.addCustomValue(this.searchValue.trim()); }}>\n ${ComboboxRenderer.renderAddCustomOption(this.searchValue.trim(), this.multiple)}\n </div>\n ` : ''}\n ${this.multiple && this.showFooter && !this.selectAllEnabled ? this.renderFooter() : ''}\n </div>\n `;\n }\n\n private renderLoader(): TemplateResult {\n if (this.loading) {\n return html`<span class=\"combobox__loader--center\"><nile-loader size=\"sm\"></nile-loader></span>`;\n }\n if (this.optionsLoading) {\n return html`<span class=\"combobox__loader\"><nile-icon class=\"combobox__loader--icon\" name=\"button-loading-blue\"></nile-icon></span>`;\n }\n return html``;\n }\n\n private renderSelectAll(): TemplateResult {\n if (!this.multiple || !this.selectAllEnabled) return html``;\n const disabled = this.showNoResults || this.optionsLoading || this.loading;\n const anySelected = this.selectAllChecked || this.selectAllIndeterminate;\n const label = anySelected ? 'Deselect all' : 'Select all';\n const showToggleDisabled = this.selectedOptions.length === 0 || this.showNoResults;\n const iconColor = showToggleDisabled\n ? 'var(--nile-colors-primary-500, var(--ng-colors-fg-quaternary-400))'\n : 'var(--nile-colors-primary-600, var(--ng-colors-fg-brand-secondary-600))';\n\n return html`\n <div\n part=\"top-actions\"\n class=\"combobox__top-actions ${disabled ? 'combobox__top-actions--disabled' : ''}\"\n @mousedown=${(e: MouseEvent) => e.preventDefault()}\n >\n <div\n class=\"combobox__select-all\"\n @click=${this.handleSelectAllToggle}\n >\n <nile-checkbox\n ?checked=${this.selectAllChecked}\n ?indeterminate=${this.selectAllIndeterminate}\n ?disabled=${disabled}\n >\n ${label}\n </nile-checkbox>\n </div>\n\n <button\n part=\"show-toggle\"\n class=\"combobox__show-toggle\"\n type=\"button\"\n ?disabled=${showToggleDisabled}\n @click=${this.toggleShowSelected}\n >\n <nile-icon\n library=\"system\"\n name=\"filter\"\n color=${iconColor}\n ></nile-icon>\n ${this.showSelectedOnly ? 'Show all' : 'Selected'}\n </button>\n </div>\n `;\n }\n\n private renderFooter(): TemplateResult {\n return html`\n <div\n part=\"footer\"\n class=\"combobox__footer ${this.loading ? 'loading' : ''}\"\n @click=${this.onFooterClick}\n >\n <span @click=${this.toggleShowSelected} style=\"cursor: pointer;\">\n <nile-checkbox\n ?disabled=${this.selectedOptions.length === 0}\n ?checked=${this.showSelectedOnly}\n >\n &nbsp; Show Selected\n </nile-checkbox>\n </span>\n ${this.selectedOptions.length > 0\n ? html`<span class=\"combobox__footer-clear\" @click=${this.clearAll}>Clear All</span>`\n : ''}\n </div>\n `;\n }\n}\n\n// ── Default animations ──\n\nsetDefaultAnimation('combobox.show', {\n keyframes: [\n { opacity: 0, scale: 0.9 },\n { opacity: 1, scale: 1 },\n ],\n options: { duration: 100, easing: 'ease' },\n});\n\nsetDefaultAnimation('combobox.hide', {\n keyframes: [\n { opacity: 1, scale: 1 },\n { opacity: 0, scale: 0.9 },\n ],\n options: { duration: 100, easing: 'ease' },\n});\n\nexport default NileCombobox;\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'nile-combobox': NileCombobox;\n }\n}\n"],"names":["memo","getDeps","fn","opts","result","deps","initialDeps","_t$initialDeps","isInitial","memoizedFunction","_a","_b","_c","depTime","key","debug","call","Date","now","newDeps","length","some","dep","index","resultTime","depEndTime","Math","round","resultEndTime","resultFpsPercentage","pad","n","str","num","String","console","info","concat","max","min","onChange","skipInitialOnChange","updateDeps","notUndefined","value","msg","Error","setters","_tslib","debounce","targetWindow","ms","timeoutId","args","clearTimeout","setTimeout","apply","this","getRect","element","offsetWidth","offsetHeight","width","height","defaultKeyExtractor","defaultRangeExtractor","range","start","startIndex","overscan","end","endIndex","count","arr","i","push","observeElementRect","instance","cb","scrollElement","handler","rect","ResizeObserver","observer","entries","run","o","entry","borderBoxSize","box","inlineSize","blockSize","options","useAnimationFrameWithResizeObserver","requestAnimationFrame","observe","unobserve","addEventListenerOptions","passive","supportsScrollend","window","observeElementOffset","U","offset","fallback","useScrollendEvent","isScrollingResetDelay","createHandler","isScrolling","_i$options","horizontal","isRtl","scrollLeft","scrollTop","endHandler","addEventListener","registerScrollendEvent","removeEventListener","measureElement","elementScroll","_ref$adjustments","_ref","adjustments","behavior","toOffset","scrollTo","Virtualizer","L","unsubs","scrollState","measurementsCache","itemSizeCache","Map","laneAssignments","pendingMeasuredCacheIndexes","prevLanes","lanesChangedFlag","lanesSettling","scrollRect","scrollOffset","scrollDirection","scrollAdjustments","elementsCache","_ref2","performance","_ro","get","forEach","s","node","target","indexFromElement","isConnected","shouldMeasureDuringScroll","resizeItem","disconnect","setOptions","opts2","Object","_ref3","_ref4","_slicedToArray","initialOffset","paddingStart","paddingEnd","scrollPaddingStart","scrollPaddingEnd","getItemKey","rangeExtractor","initialRect","scrollMargin","gap","indexAttribute","initialMeasurementsCache","lanes","enabled","laneAssignmentMode","notify","sync","maybeNotify","calculateRange","cleanup","filter","Boolean","d","rafId","cancelAnimationFrame","_didMount","_willUpdate","getScrollElement","_ref5","ownerDocument","defaultView","cached","getScrollOffset","scheduleScrollReconcile","_scrollToOffset","getSize","_this2$scrollRect","_this2$scrollOffset","getFurthestMeasurement","measurements","furthestMeasurementsFound","furthestMeasurements","m","measurement","has","lane","previousFurthestMeasurement","set","size","Array","from","values","sort","a","b","getMeasurementOptions","getMeasurements","_ref6","clear","keys","_iterator","_step","done","item","slice","laneLastIndex","fill","cachedLane","shouldCacheLane","prevIndex","prevInLane","furthestMeasurement","measuredSize","estimateSize","outerSize","_ref7","lastIndex","getOffset","findNearestBinarySearch","endPerLane","pos","startPerLane","getVirtualIndexes","t","attributeName","indexStr","getAttribute","parseInt","warn","scrollIndex","getVirtualItemForOffset","lastTargetOffset","bufferSize","ceil","minIndex","maxIndex","key2","delete","prevNode","delta","shouldAdjustScrollPositionOnItemSizeChange","getVirtualItems","indexes","virtualItems","k","len","getMaxScrollOffset","scrollWidth","clientWidth","scrollHeight","clientHeight","doc","document","documentElement","innerWidth","innerHeight","getOffsetForAlignment","align","itemSize","maxOffset","getOffsetForIndex","arguments","undefined","scrollToOffset","_ref8$behavior","startedAt","stableFrames","scrollToIndex","initialAlign","offsetInfo","_o5","scrollBy","_ref10","_ref10$behavior","getTotalSize","_ref11","endByLane","val","scrollToFn","measure","_createClass","reconcileScroll","targetOffset","targetChanged","abs","low","high","getCurrentValue","middle","currentValue","VirtualizerControllerBase","H","host","resolvedOptions","_objectSpread","updateComplete","then","requestUpdate","virtualizer","addController","getVirtualizer","hostConnected","hostUpdated","hostDisconnected","VirtualizerController","P","super","_inherits","_H","_export","NileCombobox","_w","G","formControlController","FormControlController","assumeInteractionOn","hasSlotController","HasSlotController","portalManager","ComboboxPortalManager","searchManager","ComboboxSearchManager","scrollElementRef","createRef","virtualizerCtrl","_this5$scrollElementR","hScrollElementRef","hVirtualizerCtrl","_this5$hScrollElement","scrolling","keyboardActiveIndex","hasFocus","displayLabel","selectedOptions","filteredData","filteredRows","originalData","showNoResults","showListbox","searchValue","showSelectedOnly","selectAllChecked","selectAllIndeterminate","stickyHeaderIndex","name","data","defaultValue","placeholder","multiple","label","required","disabled","open","clearable","loading","optionsLoading","disableLocalSearch","allowCustomValue","acceptUserInput","addToSuggestions","strict","maxTagsVisible","tagLayout","showFooter","selectAllEnabled","stickyGroupHeader","portal","hoist","placement","form","helpText","errorMessage","warning","error","success","filled","pill","noResultsMessage","noResultsSubtitle","noDataMessage","autoCompleteOptions","debounceMs","allowHtmlLabel","enableVisibilityEffect","enableTabClose","noWidthSync","gridColumns","gridRows","gridColumnWidth","lastVirtualizerGrouped","_this5","_this$valueInput","valueInput","validity","validationMessage","_this$valueInput$vali","_this$valueInput2","connectedCallback","setupBoundHandlers","emit","syncSelection","disconnectedCallback","removeOpenListeners","visibilityManager","cancelDebounce","scrollTimeout","cleanupPortal","firstUpdated","_changed","VisibilityManager","combobox","isOpen","onAnchorOutOfView","hide","visible","reason","onDocumentHidden","event","detail","updated","changedProperties","updateVirtualizerCount","hasGroupedData","base","hasGroups","updateStickyHeader","stuck","row","kind","pruneTreeBySelection","items","selectedSet","out","_iterator2","_createForOfIteratorHelper","_step2","type","isArray","kept","getItemValue","err","e","f","renderEmptyState","hasActiveFilter","ComboboxRenderer","renderNoResults","renderNoData","virtualRowCount","isHorizontalGrid","hVirtualizer","colCount","virtualColumnCount","grouped","countChanged","modeChanged","_this8$filteredRows$i","getDisplayText","renderItemConfig","toString","_i$toString","getValue","getSearchText","getItemDescription","_ref13","_this$renderItemConfi4","_this$renderItemConfi5","_this$renderItemConfi6","getDescription","description","getItemPrefix","_ref14","_this$renderItemConfi7","_this$renderItemConfi8","_this$renderItemConfi9","getPrefix","prefix","getItemSuffix","_ref15","_this$renderItemConfi10","_this$renderItemConfi11","getSuffix","suffix","baseData","getOptionRows","flattenRows","map","r","ComboboxSelectionManager","createOptionsFromValues","bind","_this$selectedOptions","_this$selectedOptions2","getTextLabel","updateValidity","updateSelectAllState","getSelectableData","selectedValues","Set","selectedInView","reduce","handleSelectAllToggle","stopPropagation","preventDefault","shouldUnselectAll","current","_toConsumableArray","inViewValues","inViewSet","next","v","merged","add","filterOptions","action","handleDocumentFocusIn","path","composedPath","hitSelf","includes","hitPopup","popup","hitPortal","portalContainerElement","handleDocumentKeyDown","onGlobalKeyDown","handleDocumentMouseDown","handleWindowError","message","handleWindowResize","updatePosition","handleWindowScroll","addOpenListeners","onInputKeyDown","moveActiveOption","show","selectActiveOption","trim","addCustomValue","setActiveOption","last","removeTag","inputElement","focus","preventScroll","getVisibleOptions","root","shadowRoot","querySelectorAll","opt","el","setAttribute","classList","_o$scrollIntoView","scrollIntoView","block","removeAttribute","remove","handleOptionSelection","onInputChange","onInputHandler","debounceSearch","q","query","search","_this13","preserveScroll","_this$scrollElementRe","_this$scrollElementRe2","tree","_C","filterRows","rows","st","source","_this$searchManager$f","filteredItems","resetMeasuredHeight","resetScrollPosition","onFocusIn","_this14$inputElement","select","onFocusOut","match","find","toLowerCase","onTriggerMouseDown","Element","tagName","onOptionClick","option","optionValue","oldValue","toggleMultiValue","JSON","stringify","_this$inputElement3","allItems","_this$renderItemConfi14","newItem","onClearClick","removeValue","removedtagvalue","onFooterClick","toggleShowSelected","clearAll","onScroll","floor","isAtBottom","_show","_asyncToGenerator","_regeneratorRuntime","mark","_callee","wrap","_callee$","_context2","prev","abrupt","waitForEvent","stop","_callee2","_callee2$","_context3","_callee3","_this$visibilityManag2","_this$visibilityManag3","_callee3$","_context4","setup","doOpen","setupPortal","doClose","handleOpenChange","_callee4","_this$popup","_this$popup2","_d","_callee4$","_context5","stopAnimations","style","visibility","active","Promise","getAnimation","dir","keyframes","animateTo","_callee5","_this$popup3","_d2","_callee5$","_context6","handleDisabledChange","handleValueChange","handleDataChange","handleAutoCompleteOptionsChange","handleSelectAllConfigChange","handlePortalChange","checkValidity","getForm","reportValidity","setCustomValidity","blur","handleInvalid","setValidity","emitInvalidEvent","_resetScrollPosition","_callee6","_callee6$","_context7","render","hasLabelSlot","test","hasLabel","hasValue","hasClearIcon","hasHelpText","hasErrorMessage","isEmpty","html","_templateObject","_taggedTemplateLiteral","classMap","_this20$inputElement","ifDefined","renderTrigger","renderListbox","_templateObject2","_templateObject3","_templateObject4","_templateObject5","_templateObject6","hasTags","inputPlaceholder","_templateObject7","renderInlineTags","_templateObject8","join","renderClearButton","_templateObject9","tags","_templateObject10","_templateObject11","_templateObject12","renderStickyHeaderOverlay","useVirtual","_templateObject13","idx","_templateObject14","_templateObject15","_templateObject16","renderGroupHeader","_this23","_this$renderItemConfi15","_this$renderItemConfi16","_this$renderItemConfi17","_this$renderItemConfi18","_this$renderItemConfi19","_this$renderItemConfi20","_this$renderItemConfi21","_this$renderItemConfi22","_this$renderItemConfi23","_this$renderItemConfi24","_this$renderItemConfi25","_this$renderItemConfi26","_this$renderItemConfi27","_this$renderItemConfi28","_this$renderItemConfi29","showAddOption","renderHorizontalListbox","isGrid","isBidirectionalGrid","shouldUseVirtualizer","totalSize","_templateObject17","ref","renderLoader","renderSelectAll","renderVirtualizedGrid","renderRowsVirtualized","renderRowsPlain","renderVirtualizedOptions","renderPlainOptions","_templateObject18","renderAddCustomOption","renderFooter","_this$renderItemConfi30","_this$renderItemConfi31","_this$renderItemConfi32","_this24","_templateObject19","renderHorizontalGrid","_templateObject20","_templateObject21","_templateObject22","_templateObject23","_templateObject24","showToggleDisabled","iconColor","_templateObject25","_templateObject26","_templateObject27","NileElement","styles","__decorate","prototype","state","property","converter","fromAttribute","split","toAttribute","reflect","attribute","Number","parse","_unused","watch","waitUntilFirstUpdate","customElement","setDefaultAnimation","opacity","scale","duration","easing"],"mappings":"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","x_google_ignoreList":[0,1,2]}
@@ -0,0 +1,2 @@
1
+ System.register(["lit"],function(_export,_context){"use strict";var o,_templateObject,r;function _taggedTemplateLiteral(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}));}return{setters:[function(_lit){o=_lit.css;}],execute:function execute(){_export("s",r=o(_templateObject||(_templateObject=_taggedTemplateLiteral(["\n :host {\n display: block;\n box-sizing: border-box;\n -webkit-font-smoothing: var(--nile-webkit-font-smoothing, var(--ng-webkit-font-smoothing));\n -moz-osx-font-smoothing: var(--nile-moz-osx-font-smoothing, var(--ng-moz-osx-font-smoothing));\n text-rendering: var(--nile-text-rendering, var(--ng-text-rendering));\n }\n\n :host *,\n :host *::before,\n :host *::after {\n box-sizing: inherit;\n }\n\n [hidden] {\n display: none;\n }\n\n /* \u2500\u2500 Form control \u2500\u2500 */\n\n .form-control .form-control__label {\n display: none;\n }\n\n .form-control--has-label .form-control__label {\n display: block;\n margin-bottom: var(--nile-spacing-sm, var(--ng-spacing-sm));\n color: var(--nile-colors-dark-900, var(--ng-colors-text-secondary-700));\n font-family: var(--nile-font-family-serif, var(--ng-font-family-body));\n font-size: var(--nile-type-scale-3, var(--ng-font-size-text-md));\n font-style: normal;\n font-weight: var(--nile-font-weight-regular, var(--ng-font-weight-medium));\n line-height: var(--nile-spacing-2xl, var(--ng-line-height-text-sm));\n letter-spacing: 0.2px;\n }\n\n .form-control--has-label.form-control--medium .form-control__label {\n font-size: var(--nile-type-scale-3, var(--ng-font-size-text-sm));\n }\n\n :host([required]) .form-control--has-label .form-control__label::after {\n content: '*';\n margin-inline-start: -2px;\n color: var(--nile-colors-red-700, var(--ng-colors-text-error-primary-600));\n }\n\n :host([disabled]) .form-control--has-label .form-control__label {\n user-select: none;\n -webkit-user-select: none;\n }\n\n /* \u2500\u2500 Popup \u2500\u2500 */\n\n .combobox-popup {\n flex: 1 1 auto;\n display: inline-flex;\n width: 100%;\n position: relative;\n vertical-align: middle;\n }\n\n .combobox-popup::part(popup) {\n z-index: 9999;\n }\n\n .combobox-popup[data-current-placement^='top']::part(popup) {\n transform-origin: bottom;\n }\n\n .combobox-popup[data-current-placement^='bottom']::part(popup) {\n transform-origin: top;\n }\n\n /* \u2500\u2500 Trigger: outer row that never scrolls \u2500\u2500 */\n\n .combobox__trigger {\n display: flex;\n align-items: center;\n width: 100%;\n min-width: 0;\n position: relative;\n font-family: var(--nile-font-family-sans-serif, var(--ng-font-family-body));\n font-weight: var(--nile-font-weight-regular, var(--ng-font-weight-medium));\n letter-spacing: normal;\n cursor: text;\n transition: 150ms color, 150ms border, 150ms box-shadow, 150ms background-color;\n background-color: var(--nile-colors-white-base, var(--ng-colors-bg-primary));\n border: solid 1px var(--nile-colors-neutral-500, var(--ng-colors-border-primary));\n outline: none;\n }\n\n .combobox__trigger:hover {\n border-color: var(--nile-colors-dark-900, var(--ng-colors-border-neutral));\n }\n\n .combobox--open .combobox__trigger,\n .combobox--focused .combobox__trigger {\n border-color: var(--ng-colors-border-brand);\n box-shadow: 0 0 0 1px var(--ng-colors-border-brand) inset;\n background-color: var(--nile-colors-neutral-100, var(--ng-colors-bg-secondary));\n }\n\n .combobox--disabled .combobox__trigger {\n background-color: var(--nile-colors-dark-200, var(--ng-colors-bg-disabled-subtle));\n border-color: var(--nile-colors-neutral-500, var(--ng-colors-border-primary));\n color: var(--nile-colors-dark-500, var(--ng-colors-text-disabled));\n cursor: not-allowed;\n user-select: none;\n }\n\n .combobox--warning .combobox__trigger {\n border-color: var(--nile-colors-yellow-500, var(--ng-colors-border-warning));\n }\n\n .combobox--error .combobox__trigger {\n border-color: var(--nile-colors-red-500, var(--ng-colors-border-error));\n }\n\n .combobox--success .combobox__trigger {\n border-color: var(--nile-colors-green-500, var(--ng-componentcolors-utility-success-500));\n }\n\n /* Size: small */\n .combobox--small .combobox__trigger {\n border-radius: var(--nile-radius-sm, var(--ng-radius-md));\n font-size: var(--nile-type-scale-2, var(--ng-font-size-text-xs));\n padding: var(--nile-spacing-md, var(--ng-spacing-sm)) var(--nile-spacing-md, var(--ng-spacing-md));\n min-height: var(--nile-height-32px, var(--ng-height-32px));\n }\n\n /* Size: medium */\n .combobox--medium .combobox__trigger {\n border-radius: var(--nile-radius-sm, var(--ng-radius-md));\n font-size: var(--nile-type-scale-3, var(--ng-font-size-text-md));\n padding: var(--nile-spacing-lg, var(--ng-spacing-md)) var(--nile-spacing-lg, var(--ng-spacing-lg));\n min-height: var(--nile-height-40px, var(--ng-height-40px));\n box-sizing: border-box;\n }\n\n /* Size: large */\n .combobox--large .combobox__trigger {\n border-radius: var(--nile-radius-sm, var(--ng-radius-md));\n font-size: var(--nile-type-scale-4, var(--ng-font-size-text-md));\n padding: var(--nile-spacing-xl, var(--ng-spacing-lg)) var(--nile-spacing-xl, var(--ng-spacing-xl));\n min-height: var(--nile-height-48px, var(--ng-height-48px));\n }\n\n .combobox--pill .combobox__trigger {\n border-radius: var(--nile-radius-3xl, var(--ng-radius-3xl));\n }\n\n .combobox--filled .combobox__trigger {\n border: none;\n background-color: var(--nile-colors-neutral-100, var(--ng-colors-bg-secondary));\n }\n\n .combobox--filled.combobox--open .combobox__trigger,\n .combobox--filled.combobox--focused .combobox__trigger {\n outline: 3px solid rgba(0, 89, 255, 0.4);\n }\n\n /* \u2500\u2500 Inner area: holds tags + input \u2500\u2500 */\n\n .combobox__scroll-area {\n flex: 1;\n min-width: 0;\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: 4px;\n overflow: hidden;\n }\n\n /* Single-line: horizontal scroll for overflowing tags */\n .combobox__scroll-area--single-line {\n flex-wrap: nowrap;\n overflow-x: auto;\n overflow-y: hidden;\n -webkit-overflow-scrolling: touch;\n scrollbar-width: thin;\n scrollbar-color: var(--nile-colors-neutral-500, var(--ng-colors-border-primary)) transparent;\n }\n\n .combobox__scroll-area--single-line::-webkit-scrollbar {\n height: 3px;\n }\n\n .combobox__scroll-area--single-line::-webkit-scrollbar-track {\n background: transparent;\n }\n\n .combobox__scroll-area--single-line::-webkit-scrollbar-thumb {\n background: var(--nile-colors-neutral-500, var(--ng-colors-bg-quaternary));\n border-radius: 3px;\n }\n\n .combobox__scroll-area--single-line::-webkit-scrollbar-thumb:hover {\n background: var(--nile-colors-dark-500, var(--ng-colors-fg-quaternary-400));\n }\n\n /* Wrap: tags flow to multiple lines, trigger grows in height */\n .combobox__scroll-area--wrap {\n flex-wrap: wrap;\n overflow: visible;\n }\n\n /* \u2500\u2500 Tags inside the scroll area \u2500\u2500 */\n\n .combobox__scroll-area nile-tag {\n cursor: pointer;\n flex-shrink: 0;\n }\n\n .combobox--disabled .combobox__scroll-area nile-tag {\n cursor: not-allowed;\n }\n\n .combobox__tags-count {\n color: var(--nile-colors-primary-600, var(--ng-colors-text-brand-secondary-700));\n font-family: var(--nile-font-family-serif, var(--ng-font-family-body));\n font-size: var(--nile-type-scale-3, var(--ng-font-size-text-sm));\n font-weight: var(--nile-font-weight-regular, var(--ng-font-weight-medium));\n line-height: var(--nile-line-height-xsmall, var(--ng-line-height-text-sm));\n letter-spacing: 0.2px;\n white-space: nowrap;\n flex-shrink: 0;\n }\n\n /* \u2500\u2500 Input wrapper inside scroll area \u2500\u2500 */\n\n .combobox__input-wrapper {\n flex: 1;\n min-width: 60px;\n display: flex;\n align-items: center;\n }\n\n .combobox__input {\n width: 100%;\n font: inherit;\n border: none;\n background: none;\n color: var(--nile-colors-dark-900, var(--ng-colors-text-primary-900));\n cursor: inherit;\n overflow: hidden;\n padding: 0;\n margin: 0;\n -webkit-appearance: none;\n font-family: var(--nile-font-family-serif, var(--ng-font-family-body));\n font-size: inherit;\n font-weight: var(--nile-font-weight-regular, var(--ng-font-weight-regular));\n text-overflow: ellipsis;\n line-height: var(--nile-line-height-xsmall, var(--ng-line-height-text-sm));\n }\n\n .combobox__input::placeholder {\n font-family: var(--nile-font-family-serif, var(--ng-font-family-body));\n color: var(--nile-colors-text-placeholder, var(--ng-colors-text-placeholder));\n }\n\n .combobox__input:focus {\n outline: none;\n }\n\n .combobox--disabled .combobox__input {\n color: var(--nile-colors-dark-500, var(--ng-colors-text-disabled));\n pointer-events: none;\n }\n\n /* \u2500\u2500 Hidden form value input \u2500\u2500 */\n\n .combobox__value-input {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n padding: 0;\n margin: 0;\n opacity: 0;\n z-index: -1;\n }\n\n /* \u2500\u2500 Action icons (clear, expand) \u2500\u2500 */\n\n .combobox__actions {\n display: flex;\n align-items: center;\n flex-shrink: 0;\n gap: var(--nile-spacing-sm, var(--ng-spacing-sm));\n margin-inline-start: auto;\n }\n\n .combobox__clear {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n border: none;\n background: none;\n padding: 0;\n cursor: pointer;\n color: var(--nile-colors-dark-500, var(--ng-colors-fg-quaternary-400));\n transition: 150ms color;\n }\n\n .combobox__clear:hover {\n color: var(--nile-colors-dark-900, var(--ng-colors-text-primary-900));\n }\n\n .combobox__clear:focus {\n outline: none;\n }\n\n .combobox__expand-icon {\n display: flex;\n align-items: center;\n flex-shrink: 0;\n transition: 250ms rotate ease;\n rotate: 0;\n }\n\n .combobox--open .combobox__expand-icon {\n rotate: -180deg;\n }\n\n /* \u2500\u2500 Prefix / suffix \u2500\u2500 */\n\n .combobox__prefix,\n .combobox__suffix {\n flex: 0;\n display: inline-flex;\n align-items: center;\n color: var(--nile-colors-dark-500, var(--ng-colors-text-tertiary-600));\n }\n\n .combobox__prefix {\n margin-inline-end: var(--nile-spacing-md, var(--ng-spacing-md));\n }\n\n /* \u2500\u2500 Listbox (dropdown) \u2500\u2500 */\n\n .combobox__listbox {\n display: block;\n position: relative;\n font-size: var(--nile-type-scale-3, var(--ng-font-size-text-md));\n font-weight: var(--nile-font-weight-regular, var(--ng-font-weight-regular));\n background: var(--nile-colors-white-base, var(--ng-colors-bg-primary));\n border: solid 1px var(--nile-colors-neutral-500, var(--ng-colors-border-secondary-alt));\n border-radius: var(--nile-radius-sm, var(--ng-radius-md));\n padding-block: var(--nile-spacing-none, var(--ng-spacing-xs));\n padding-inline: var(--nile-spacing-none, var(--ng-spacing-xs));\n overscroll-behavior: none;\n overflow-y: auto;\n max-width: var(--auto-size-available-width);\n max-height: var(--auto-size-available-height);\n box-shadow: 0px 2px 4px 0px rgba(119, 125, 130, 0.15);\n }\n\n /* \u2500\u2500 Options \u2500\u2500 */\n\n .combobox__options {\n font-size: var(--nile-type-scale-3, var(--ng-font-size-text-sm));\n color: rgb(133, 129, 129);\n width: 100%;\n }\n\n .combobox__options.loading {\n opacity: 0.5;\n pointer-events: none;\n }\n\n .combobox__no-results {\n padding: var(--nile-spacing-lg, var(--ng-spacing-lg));\n font-family: var(--nile-font-family-serif, var(--ng-font-family-body));\n font-size: var(--nile-type-scale-3, var(--ng-font-size-text-sm));\n color: var(--nile-colors-dark-500, var(--ng-colors-text-tertiary-600));\n text-align: center;\n }\n\n .combobox__no-results-title {\n font-weight: var(--nile-font-weight-medium, var(--ng-font-weight-medium));\n color: var(--nile-colors-dark-700, var(--ng-colors-text-secondary-700));\n }\n\n .combobox__no-results-subtitle {\n margin-top: var(--nile-spacing-xs, var(--ng-spacing-xs));\n font-size: var(--nile-type-scale-2, var(--ng-font-size-text-xs));\n color: var(--nile-colors-dark-500, var(--ng-colors-text-tertiary-600));\n }\n\n /* \u2500\u2500 Options (both virtual and plain) \u2500\u2500 */\n\n .combobox__options nile-option {\n width: 100%;\n display: block;\n }\n\n .combobox__options nile-option[selected] {\n background-color: var(--nile-colors-neutral-100, var(--ng-colors-bg-secondary));\n }\n\n .combobox__options nile-option[selected]::part(base) {\n color: var(--nile-colors-primary-600, var(--ng-colors-text-brand-secondary-700));\n }\n\n .combobox__options-plain {\n display: flex;\n flex-direction: column;\n }\n\n .combobox__options-plain nile-option {\n flex-shrink: 0;\n }\n\n /* \u2500\u2500 Top actions (Select All + Selected/All filter toggle) \u2500\u2500 */\n\n .combobox__top-actions {\n position: sticky;\n top: 0;\n z-index: 2;\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: space-between;\n gap: var(--nile-spacing-lg, var(--ng-spacing-lg));\n background: var(--nile-colors-neutral-100, var(--ng-colors-bg-secondary));\n border-bottom: 1px solid var(--nile-colors-neutral-400, var(--ng-colors-border-secondary));\n padding: var(--nile-spacing-lg, var(--ng-spacing-lg));\n user-select: none;\n }\n\n .combobox__top-actions--disabled {\n opacity: 0.6;\n pointer-events: none;\n }\n\n .combobox__select-all {\n display: flex;\n align-items: center;\n gap: var(--nile-spacing-md, var(--ng-spacing-md));\n cursor: pointer;\n flex: 1 1 auto;\n font-family: var(--nile-font-family-serif, var(--ng-font-family-body));\n font-size: var(--nile-type-scale-3, var(--ng-font-size-text-sm));\n line-height: 14px;\n letter-spacing: 0.2px;\n color: var(--nile-colors-dark-900, var(--ng-colors-text-primary));\n }\n\n .combobox__show-toggle {\n display: inline-flex;\n align-items: center;\n gap: var(--nile-spacing-md, var(--ng-spacing-md));\n border: none;\n background: none;\n padding: 0;\n border-radius: var(--nile-radius-sm, var(--ng-radius-sm));\n cursor: pointer;\n color: var(--nile-colors-primary-600, var(--ng-colors-text-brand-secondary-700));\n font-family: var(--nile-font-family-serif, var(--ng-font-family-body));\n font-size: var(--nile-type-scale-3, var(--ng-font-size-text-sm));\n line-height: 14px;\n letter-spacing: 0.2px;\n white-space: nowrap;\n }\n\n .combobox__show-toggle[disabled] {\n color: var(--nile-colors-primary-500, var(--ng-colors-fg-quaternary-400));\n cursor: not-allowed;\n }\n\n /* \u2500\u2500 Footer \u2500\u2500 */\n\n .combobox__footer {\n position: sticky;\n bottom: 0;\n background: var(--nile-colors-neutral-100, var(--ng-colors-bg-secondary));\n border-top: 1px solid var(--nile-colors-neutral-400, var(--ng-colors-border-secondary));\n display: flex;\n flex-direction: row;\n align-items: flex-start;\n padding: var(--nile-spacing-md, var(--ng-spacing-md)) var(--nile-spacing-lg, var(--ng-spacing-lg)) var(--nile-spacing-xl, var(--ng-spacing-xl));\n gap: var(--nile-spacing-lg, var(--ng-spacing-lg));\n justify-content: space-between;\n }\n\n .combobox__footer.loading {\n opacity: 0.5;\n pointer-events: none;\n }\n\n .combobox__footer-clear {\n display: inline-flex;\n align-items: center;\n color: var(--nile-colors-primary-600, var(--ng-colors-text-brand-secondary-700));\n border: none;\n background: none;\n padding: 0;\n cursor: pointer;\n font-family: var(--nile-font-family-serif, var(--ng-font-family-body));\n font-size: var(--nile-type-scale-3, var(--ng-font-size-text-sm));\n letter-spacing: 0.2px;\n }\n\n .combobox__footer-clear:hover {\n text-decoration: underline;\n }\n\n /* \u2500\u2500 Loader \u2500\u2500 */\n\n .combobox__loader {\n width: 100%;\n text-align: center;\n display: block;\n }\n\n .combobox__loader--icon {\n margin-top: var(--nile-spacing-xl, var(--ng-spacing-xl));\n animation: combobox-spin 0.6s linear infinite;\n }\n\n .combobox__loader--center {\n position: absolute;\n display: flex;\n justify-content: center;\n align-items: center;\n width: 100%;\n height: 75%;\n }\n\n @keyframes combobox-spin {\n 0% { transform: rotate(0deg); }\n 100% { transform: rotate(360deg); }\n }\n\n .combobox__add-option::part(base) {\n color: var(--nile-colors-primary-600, var(--ng-colors-text-brand-secondary-700));\n }\n\n /* \u2500\u2500 Grid layout \u2500\u2500 */\n\n :host([grid-columns]) .combobox__listbox {\n overflow-y: auto;\n }\n\n .combobox__grid-row {\n width: 100%;\n }\n\n .combobox__grid-row nile-option {\n min-width: 0;\n overflow: hidden;\n }\n\n .combobox__grid-row nile-option::part(base) {\n border-radius: var(--nile-radius-xs, var(--ng-radius-sm));\n }\n\n /* \u2500\u2500 Bidirectional grid layout (vertical + horizontal scroll) \u2500\u2500 */\n\n .combobox__listbox.combobox__listbox--bidirectional {\n overflow: auto;\n max-width: none;\n scrollbar-width: thin;\n scrollbar-color: var(--nile-colors-neutral-500, var(--ng-colors-bg-quaternary)) transparent;\n }\n\n .combobox__listbox--bidirectional .combobox__options {\n width: max-content;\n min-width: 100%;\n }\n\n .combobox__listbox--bidirectional .combobox__grid-row {\n width: max-content;\n min-width: 100%;\n }\n\n /* \u2500\u2500 Horizontal grid layout \u2500\u2500 */\n\n .combobox__listbox.combobox__listbox--horizontal {\n overflow-x: auto;\n overflow-y: hidden;\n max-height: none;\n max-width: none;\n width: 100%;\n scrollbar-width: thin;\n scrollbar-color: var(--nile-colors-neutral-500, var(--ng-colors-bg-quaternary)) transparent;\n }\n\n .combobox__listbox--horizontal::-webkit-scrollbar {\n height: 6px;\n }\n\n .combobox__listbox--horizontal::-webkit-scrollbar-track {\n background: transparent;\n }\n\n .combobox__listbox--horizontal::-webkit-scrollbar-thumb {\n background: var(--nile-colors-neutral-500, var(--ng-colors-bg-quaternary));\n border-radius: 3px;\n }\n\n .combobox__listbox--horizontal::-webkit-scrollbar-thumb:hover {\n background: var(--nile-colors-dark-500, var(--ng-colors-fg-quaternary-400));\n }\n\n .combobox__options--horizontal {\n display: block;\n width: max-content;\n min-width: 100%;\n }\n\n .combobox__grid-col {\n border-right: 1px solid var(--nile-colors-neutral-200, var(--ng-colors-border-secondary));\n }\n\n .combobox__grid-col:last-child {\n border-right: none;\n }\n\n .combobox__grid-col nile-option {\n width: 100%;\n display: block;\n }\n\n .combobox__grid-col nile-option::part(base) {\n border-radius: 0;\n }\n\n /* \u2500\u2500 Group headers (data-driven grouping) \u2500\u2500 */\n\n /* Plain (non-virtualized) listbox: sticky relative to the scroll container.\n * Activated only when the host has [sticky-group-header]. */\n :host([sticky-group-header]) .combobox__options-plain .combobox__group-header {\n position: sticky;\n top: calc(var(--group-depth, 0) * 28px);\n z-index: 1;\n }\n\n /* Virtualized listbox: each row is absolutely positioned by the virtualizer.\n * Sticky doesn't pin against the scroll container because the row wrapper's\n * transform creates a containing block. Instead we render a separate\n * overlay inside the listbox that mirrors the currently-active group\n * header (computed on scroll). */\n .combobox__group-header-slot {\n pointer-events: none;\n }\n .combobox__group-header-slot .combobox__group-header {\n height: 100%;\n box-sizing: border-box;\n }\n\n .combobox__group-sticky-overlay {\n position: sticky;\n top: 0;\n z-index: 2;\n pointer-events: none;\n }\n .combobox__group-sticky-overlay .combobox__group-header {\n box-shadow: 0 1px 0 0 var(--nile-colors-neutral-300, var(--ng-colors-border-secondary));\n }\n\n .combobox__group-header {\n display: flex;\n align-items: center;\n gap: 6px;\n box-sizing: border-box;\n width: 100%;\n height: 100%;\n /* Match the listbox's natural inline padding so the header sits like a\n * section divider, edge-to-edge with options. Nested groups indent by\n * depth. Override with --combobox-group-header-indent if needed. */\n padding-block: 8px;\n padding-inline-end: var(--nile-spacing-lg, var(--ng-spacing-lg));\n padding-inline-start: calc(var(--combobox-group-header-indent, var(--nile-spacing-lg, var(--ng-spacing-lg))) + var(--group-depth, 0) * 16px);\n font-family: var(--nile-font-family-sans-serif, var(--ng-font-family-body));\n font-size: var(--nile-type-scale-2, var(--ng-font-size-text-xs));\n font-weight: var(--nile-font-weight-semibold, var(--ng-font-weight-semibold));\n line-height: 1;\n text-transform: uppercase;\n letter-spacing: 0.06em;\n color: var(--nile-colors-dark-500, var(--ng-colors-text-tertiary-600));\n background: var(--nile-colors-neutral-100, var(--ng-colors-bg-secondary));\n border-bottom: 1px solid var(--nile-colors-neutral-300, var(--ng-colors-border-secondary));\n pointer-events: none;\n user-select: none;\n }\n\n .combobox__group-label {\n flex: 1;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n .combobox__group-prefix {\n flex-shrink: 0;\n color: inherit;\n }\n\n /* \u2500\u2500 Help / Error \u2500\u2500 */\n\n .form-control__help-text {\n display: none;\n }\n\n .form-control--has-help-text .form-control__help-text {\n display: block;\n color: var(--nile-colors-dark-500, var(--ng-colors-text-tertiary-600));\n margin-top: var(--nile-spacing-lg, var(--ng-spacing-lg));\n font-size: var(--nile-type-scale-3, var(--ng-font-size-text-sm));\n }\n"]))));}};});
2
+ //# sourceMappingURL=nile-combobox.css.cjs.js.map