@televet/kibble-ui 5.0.26-sc.2 → 5.0.26-sc.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 (54) hide show
  1. package/dist/chunks/{anatomy-BsrdhlLN.js → anatomy-B0LtI6sf.js} +2 -2
  2. package/dist/chunks/{anatomy-BsrdhlLN.js.map → anatomy-B0LtI6sf.js.map} +1 -1
  3. package/dist/chunks/{anatomy-ByfITE1W.js → anatomy-DKlFmIC5.js} +11 -11
  4. package/dist/chunks/{anatomy-ByfITE1W.js.map → anatomy-DKlFmIC5.js.map} +1 -1
  5. package/dist/chunks/{datePicker.component-BkCLLBbA.js → datePicker.component-BTNp4pkH.js} +2 -2
  6. package/dist/chunks/{datePicker.component-BkCLLBbA.js.map → datePicker.component-BTNp4pkH.js.map} +1 -1
  7. package/dist/chunks/{datePicker.component-Dbxjqbki.js → datePicker.component-DgbWKb2q.js} +2 -2
  8. package/dist/chunks/{datePicker.component-Dbxjqbki.js.map → datePicker.component-DgbWKb2q.js.map} +1 -1
  9. package/dist/chunks/{dateTimePicker.component-49q0KN3k.js → dateTimePicker.component-CvNBzSf6.js} +2 -2
  10. package/dist/chunks/{dateTimePicker.component-49q0KN3k.js.map → dateTimePicker.component-CvNBzSf6.js.map} +1 -1
  11. package/dist/chunks/{dateTimePicker.component-jPa4WzsR.js → dateTimePicker.component-DgyypWQR.js} +3 -3
  12. package/dist/chunks/{dateTimePicker.component-jPa4WzsR.js.map → dateTimePicker.component-DgyypWQR.js.map} +1 -1
  13. package/dist/chunks/{popover.component-C9PY02k_.js → popover.component-DIYT1Lc0.js} +2 -2
  14. package/dist/chunks/{popover.component-C9PY02k_.js.map → popover.component-DIYT1Lc0.js.map} +1 -1
  15. package/dist/chunks/{popover.component-CiRGriH0.js → popover.component-DTjA1GSd.js} +2 -2
  16. package/dist/chunks/{popover.component-CiRGriH0.js.map → popover.component-DTjA1GSd.js.map} +1 -1
  17. package/dist/chunks/{popover.recipe-DhiHO7Ev.js → popover.recipe-CtptsJg6.js} +2 -2
  18. package/dist/chunks/{popover.recipe-DhiHO7Ev.js.map → popover.recipe-CtptsJg6.js.map} +1 -1
  19. package/dist/chunks/{popover.recipe-Bg7XkURN.js → popover.recipe-DPwwsWLb.js} +2 -2
  20. package/dist/chunks/{popover.recipe-Bg7XkURN.js.map → popover.recipe-DPwwsWLb.js.map} +1 -1
  21. package/dist/chunks/theme.provider-6Q7cs-Zb.js +28 -0
  22. package/dist/chunks/theme.provider-6Q7cs-Zb.js.map +1 -0
  23. package/dist/chunks/{theme.provider-BiwmZ1Gw.js → theme.provider-NzQochsc.js} +328 -331
  24. package/dist/chunks/theme.provider-NzQochsc.js.map +1 -0
  25. package/dist/chunks/{timePicker.component-CkYqU0UZ.js → timePicker.component--sP-VAU6.js} +2 -2
  26. package/dist/chunks/{timePicker.component-CkYqU0UZ.js.map → timePicker.component--sP-VAU6.js.map} +1 -1
  27. package/dist/chunks/{timePicker.component-wuq0ZnAY.js → timePicker.component-BQavnU5-.js} +2 -2
  28. package/dist/chunks/{timePicker.component-wuq0ZnAY.js.map → timePicker.component-BQavnU5-.js.map} +1 -1
  29. package/dist/chunks/{timeRange.component-4vXrNask.js → timeRange.component-CK1x2GMK.js} +2 -2
  30. package/dist/chunks/{timeRange.component-4vXrNask.js.map → timeRange.component-CK1x2GMK.js.map} +1 -1
  31. package/dist/chunks/{timeRange.component-FoG-HHMx.js → timeRange.component-CNgdynZc.js} +2 -2
  32. package/dist/chunks/{timeRange.component-FoG-HHMx.js.map → timeRange.component-CNgdynZc.js.map} +1 -1
  33. package/dist/cjs/components/DatePicker/index.cjs +1 -1
  34. package/dist/cjs/components/DateTimePicker/index.cjs +1 -1
  35. package/dist/cjs/components/Popover/index.cjs +1 -1
  36. package/dist/cjs/components/TimePicker/index.cjs +1 -1
  37. package/dist/cjs/components/TimeRange/index.cjs +1 -1
  38. package/dist/cjs/components/index.cjs +1 -1
  39. package/dist/cjs/index.cjs +1 -1
  40. package/dist/cjs/theme/index.cjs +1 -1
  41. package/dist/esm/components/DatePicker/index.js +1 -1
  42. package/dist/esm/components/DateTimePicker/index.js +1 -1
  43. package/dist/esm/components/Popover/index.js +1 -1
  44. package/dist/esm/components/TimePicker/index.js +1 -1
  45. package/dist/esm/components/TimeRange/index.js +1 -1
  46. package/dist/esm/components/index.js +5 -5
  47. package/dist/esm/index.js +14 -15
  48. package/dist/esm/theme/index.js +4 -5
  49. package/dist/types/theme/index.d.ts +0 -1
  50. package/dist/types/theme/recipes/Field/field.recipe.d.ts +1 -0
  51. package/package.json +1 -1
  52. package/dist/chunks/theme.provider-BiwmZ1Gw.js.map +0 -1
  53. package/dist/chunks/theme.provider-CUMlVRCg.js +0 -28
  54. package/dist/chunks/theme.provider-CUMlVRCg.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"anatomy-ByfITE1W.js","sources":["../../node_modules/@zag-js/combobox/dist/index.mjs","../../node_modules/@ark-ui/react/dist/components/fieldset/fieldset.anatomy.js","../../node_modules/@chakra-ui/react/dist/esm/anatomy.js"],"sourcesContent":["import { createAnatomy } from '@zag-js/anatomy';\nimport { ListCollection } from '@zag-js/collection';\nimport { raf, setCaretToEnd, nextTick, scrollIntoView, observeAttributes, clickIfLink, query, dataAttr, ariaAttr, isDownloadingEvent, isOpeningInNewTab, isContextMenuEvent, isLeftClick, getEventKey, isComposingEvent, isAnchorElement } from '@zag-js/dom-query';\nimport { getPlacement, getPlacementStyles } from '@zag-js/popper';\nimport { match, remove, addOrRemove, isBoolean, isEqual, createSplitProps, ensure } from '@zag-js/utils';\nimport { ariaHidden } from '@zag-js/aria-hidden';\nimport { setup } from '@zag-js/core';\nimport { trackDismissableElement } from '@zag-js/dismissable';\nimport { createProps } from '@zag-js/types';\n\n// src/combobox.anatomy.ts\nvar anatomy = createAnatomy(\"combobox\").parts(\n \"root\",\n \"clearTrigger\",\n \"content\",\n \"control\",\n \"input\",\n \"item\",\n \"itemGroup\",\n \"itemGroupLabel\",\n \"itemIndicator\",\n \"itemText\",\n \"label\",\n \"list\",\n \"positioner\",\n \"trigger\"\n);\nvar parts = anatomy.build();\nvar collection = (options) => {\n return new ListCollection(options);\n};\ncollection.empty = () => {\n return new ListCollection({ items: [] });\n};\nvar getRootId = (ctx) => ctx.ids?.root ?? `combobox:${ctx.id}`;\nvar getLabelId = (ctx) => ctx.ids?.label ?? `combobox:${ctx.id}:label`;\nvar getControlId = (ctx) => ctx.ids?.control ?? `combobox:${ctx.id}:control`;\nvar getInputId = (ctx) => ctx.ids?.input ?? `combobox:${ctx.id}:input`;\nvar getContentId = (ctx) => ctx.ids?.content ?? `combobox:${ctx.id}:content`;\nvar getPositionerId = (ctx) => ctx.ids?.positioner ?? `combobox:${ctx.id}:popper`;\nvar getTriggerId = (ctx) => ctx.ids?.trigger ?? `combobox:${ctx.id}:toggle-btn`;\nvar getClearTriggerId = (ctx) => ctx.ids?.clearTrigger ?? `combobox:${ctx.id}:clear-btn`;\nvar getItemGroupId = (ctx, id) => ctx.ids?.itemGroup?.(id) ?? `combobox:${ctx.id}:optgroup:${id}`;\nvar getItemGroupLabelId = (ctx, id) => ctx.ids?.itemGroupLabel?.(id) ?? `combobox:${ctx.id}:optgroup-label:${id}`;\nvar getItemId = (ctx, id) => ctx.ids?.item?.(id) ?? `combobox:${ctx.id}:option:${id}`;\nvar getContentEl = (ctx) => ctx.getById(getContentId(ctx));\nvar getInputEl = (ctx) => ctx.getById(getInputId(ctx));\nvar getPositionerEl = (ctx) => ctx.getById(getPositionerId(ctx));\nvar getControlEl = (ctx) => ctx.getById(getControlId(ctx));\nvar getTriggerEl = (ctx) => ctx.getById(getTriggerId(ctx));\nvar getClearTriggerEl = (ctx) => ctx.getById(getClearTriggerId(ctx));\nvar getItemEl = (ctx, value) => {\n if (value == null) return;\n const selector = `[role=option][data-value=\"${CSS.escape(value)}\"]`;\n return query(getContentEl(ctx), selector);\n};\nvar focusInputEl = (ctx) => {\n const inputEl = getInputEl(ctx);\n if (ctx.isActiveElement(inputEl)) return;\n inputEl?.focus({ preventScroll: true });\n};\nvar focusTriggerEl = (ctx) => {\n const triggerEl = getTriggerEl(ctx);\n if (ctx.isActiveElement(triggerEl)) return;\n triggerEl?.focus({ preventScroll: true });\n};\n\n// src/combobox.connect.ts\nfunction connect(service, normalize) {\n const { context, prop, state, send, scope, computed, event } = service;\n const translations = prop(\"translations\");\n const collection2 = prop(\"collection\");\n const disabled = prop(\"disabled\");\n const interactive = computed(\"isInteractive\");\n const invalid = prop(\"invalid\");\n const readOnly = prop(\"readOnly\");\n const open = state.hasTag(\"open\");\n const focused = state.hasTag(\"focused\");\n const composite = prop(\"composite\");\n const highlightedValue = context.get(\"highlightedValue\");\n const popperStyles = getPlacementStyles({\n ...prop(\"positioning\"),\n placement: context.get(\"currentPlacement\")\n });\n function getItemState(props2) {\n const disabled2 = collection2.getItemDisabled(props2.item);\n const value = collection2.getItemValue(props2.item);\n ensure(value, () => `[zag-js] No value found for item ${JSON.stringify(props2.item)}`);\n return {\n value,\n disabled: Boolean(disabled2 || disabled2),\n highlighted: highlightedValue === value,\n selected: context.get(\"value\").includes(value)\n };\n }\n return {\n focused,\n open,\n inputValue: context.get(\"inputValue\"),\n highlightedValue,\n highlightedItem: context.get(\"highlightedItem\"),\n value: context.get(\"value\"),\n valueAsString: computed(\"valueAsString\"),\n hasSelectedItems: computed(\"hasSelectedItems\"),\n selectedItems: context.get(\"selectedItems\"),\n collection: prop(\"collection\"),\n multiple: !!prop(\"multiple\"),\n disabled: !!disabled,\n syncSelectedItems() {\n send({ type: \"SELECTED_ITEMS.SYNC\" });\n },\n reposition(options = {}) {\n send({ type: \"POSITIONING.SET\", options });\n },\n setHighlightValue(value) {\n send({ type: \"HIGHLIGHTED_VALUE.SET\", value });\n },\n clearHighlightValue() {\n send({ type: \"HIGHLIGHTED_VALUE.CLEAR\" });\n },\n selectValue(value) {\n send({ type: \"ITEM.SELECT\", value });\n },\n setValue(value) {\n send({ type: \"VALUE.SET\", value });\n },\n setInputValue(value, reason = \"script\") {\n send({ type: \"INPUT_VALUE.SET\", value, src: reason });\n },\n clearValue(value) {\n if (value != null) {\n send({ type: \"ITEM.CLEAR\", value });\n } else {\n send({ type: \"VALUE.CLEAR\" });\n }\n },\n focus() {\n getInputEl(scope)?.focus();\n },\n setOpen(nextOpen, reason = \"script\") {\n const open2 = state.hasTag(\"open\");\n if (open2 === nextOpen) return;\n send({ type: nextOpen ? \"OPEN\" : \"CLOSE\", src: reason });\n },\n getRootProps() {\n return normalize.element({\n ...parts.root.attrs,\n dir: prop(\"dir\"),\n id: getRootId(scope),\n \"data-invalid\": dataAttr(invalid),\n \"data-readonly\": dataAttr(readOnly)\n });\n },\n getLabelProps() {\n return normalize.label({\n ...parts.label.attrs,\n dir: prop(\"dir\"),\n htmlFor: getInputId(scope),\n id: getLabelId(scope),\n \"data-readonly\": dataAttr(readOnly),\n \"data-disabled\": dataAttr(disabled),\n \"data-invalid\": dataAttr(invalid),\n \"data-focus\": dataAttr(focused),\n onClick(event2) {\n if (composite) return;\n event2.preventDefault();\n getTriggerEl(scope)?.focus({ preventScroll: true });\n }\n });\n },\n getControlProps() {\n return normalize.element({\n ...parts.control.attrs,\n dir: prop(\"dir\"),\n id: getControlId(scope),\n \"data-state\": open ? \"open\" : \"closed\",\n \"data-focus\": dataAttr(focused),\n \"data-disabled\": dataAttr(disabled),\n \"data-invalid\": dataAttr(invalid)\n });\n },\n getPositionerProps() {\n return normalize.element({\n ...parts.positioner.attrs,\n dir: prop(\"dir\"),\n id: getPositionerId(scope),\n style: popperStyles.floating\n });\n },\n getInputProps() {\n return normalize.input({\n ...parts.input.attrs,\n dir: prop(\"dir\"),\n \"aria-invalid\": ariaAttr(invalid),\n \"data-invalid\": dataAttr(invalid),\n \"data-autofocus\": dataAttr(prop(\"autoFocus\")),\n name: prop(\"name\"),\n form: prop(\"form\"),\n disabled,\n required: prop(\"required\"),\n autoComplete: \"off\",\n autoCorrect: \"off\",\n autoCapitalize: \"none\",\n spellCheck: \"false\",\n readOnly,\n placeholder: prop(\"placeholder\"),\n id: getInputId(scope),\n type: \"text\",\n role: \"combobox\",\n defaultValue: context.get(\"inputValue\"),\n \"aria-autocomplete\": computed(\"autoComplete\") ? \"both\" : \"list\",\n \"aria-controls\": getContentId(scope),\n \"aria-expanded\": open,\n \"data-state\": open ? \"open\" : \"closed\",\n \"aria-activedescendant\": highlightedValue ? getItemId(scope, highlightedValue) : void 0,\n onClick(event2) {\n if (event2.defaultPrevented) return;\n if (!prop(\"openOnClick\")) return;\n if (!interactive) return;\n send({ type: \"INPUT.CLICK\", src: \"input-click\" });\n },\n onFocus() {\n if (disabled) return;\n send({ type: \"INPUT.FOCUS\" });\n },\n onBlur() {\n if (disabled) return;\n send({ type: \"INPUT.BLUR\" });\n },\n onChange(event2) {\n send({ type: \"INPUT.CHANGE\", value: event2.currentTarget.value, src: \"input-change\" });\n },\n onKeyDown(event2) {\n if (event2.defaultPrevented) return;\n if (!interactive) return;\n if (event2.ctrlKey || event2.shiftKey || isComposingEvent(event2)) return;\n const openOnKeyPress = prop(\"openOnKeyPress\");\n const isModifierKey = event2.ctrlKey || event2.metaKey || event2.shiftKey;\n const keypress = true;\n const keymap = {\n ArrowDown(event3) {\n if (!openOnKeyPress && !open) return;\n send({ type: event3.altKey ? \"OPEN\" : \"INPUT.ARROW_DOWN\", keypress, src: \"arrow-key\" });\n event3.preventDefault();\n },\n ArrowUp() {\n if (!openOnKeyPress && !open) return;\n send({ type: event2.altKey ? \"CLOSE\" : \"INPUT.ARROW_UP\", keypress, src: \"arrow-key\" });\n event2.preventDefault();\n },\n Home(event3) {\n if (isModifierKey) return;\n send({ type: \"INPUT.HOME\", keypress });\n if (open) {\n event3.preventDefault();\n }\n },\n End(event3) {\n if (isModifierKey) return;\n send({ type: \"INPUT.END\", keypress });\n if (open) {\n event3.preventDefault();\n }\n },\n Enter(event3) {\n send({ type: \"INPUT.ENTER\", keypress, src: \"item-select\" });\n const submittable = computed(\"isCustomValue\") && prop(\"allowCustomValue\");\n if (open && !submittable) {\n event3.preventDefault();\n }\n if (highlightedValue == null) return;\n const itemEl = getItemEl(scope, highlightedValue);\n if (isAnchorElement(itemEl)) {\n prop(\"navigate\")?.({ value: highlightedValue, node: itemEl, href: itemEl.href });\n }\n },\n Escape() {\n send({ type: \"INPUT.ESCAPE\", keypress, src: \"escape-key\" });\n event2.preventDefault();\n }\n };\n const key = getEventKey(event2, { dir: prop(\"dir\") });\n const exec = keymap[key];\n exec?.(event2);\n }\n });\n },\n getTriggerProps(props2 = {}) {\n return normalize.button({\n ...parts.trigger.attrs,\n dir: prop(\"dir\"),\n id: getTriggerId(scope),\n \"aria-haspopup\": composite ? \"listbox\" : \"dialog\",\n type: \"button\",\n tabIndex: props2.focusable ? void 0 : -1,\n \"aria-label\": translations.triggerLabel,\n \"aria-expanded\": open,\n \"data-state\": open ? \"open\" : \"closed\",\n \"aria-controls\": open ? getContentId(scope) : void 0,\n disabled,\n \"data-invalid\": dataAttr(invalid),\n \"data-focusable\": dataAttr(props2.focusable),\n \"data-readonly\": dataAttr(readOnly),\n \"data-disabled\": dataAttr(disabled),\n onFocus() {\n if (!props2.focusable) return;\n send({ type: \"INPUT.FOCUS\", src: \"trigger\" });\n },\n onClick(event2) {\n if (event2.defaultPrevented) return;\n if (!interactive) return;\n if (!isLeftClick(event2)) return;\n send({ type: \"TRIGGER.CLICK\", src: \"trigger-click\" });\n },\n onPointerDown(event2) {\n if (!interactive) return;\n if (event2.pointerType === \"touch\") return;\n if (!isLeftClick(event2)) return;\n event2.preventDefault();\n queueMicrotask(() => {\n getInputEl(scope)?.focus({ preventScroll: true });\n });\n },\n onKeyDown(event2) {\n if (event2.defaultPrevented) return;\n if (composite) return;\n const keyMap = {\n ArrowDown() {\n send({ type: \"INPUT.ARROW_DOWN\", src: \"arrow-key\" });\n },\n ArrowUp() {\n send({ type: \"INPUT.ARROW_UP\", src: \"arrow-key\" });\n }\n };\n const key = getEventKey(event2, { dir: prop(\"dir\") });\n const exec = keyMap[key];\n if (exec) {\n exec(event2);\n event2.preventDefault();\n }\n }\n });\n },\n getContentProps() {\n return normalize.element({\n ...parts.content.attrs,\n dir: prop(\"dir\"),\n id: getContentId(scope),\n role: !composite ? \"dialog\" : \"listbox\",\n tabIndex: -1,\n hidden: !open,\n \"data-state\": open ? \"open\" : \"closed\",\n \"data-placement\": context.get(\"currentPlacement\"),\n \"aria-labelledby\": getLabelId(scope),\n \"aria-multiselectable\": prop(\"multiple\") && composite ? true : void 0,\n \"data-empty\": dataAttr(collection2.size === 0),\n onPointerDown(event2) {\n if (!isLeftClick(event2)) return;\n event2.preventDefault();\n }\n });\n },\n getListProps() {\n return normalize.element({\n ...parts.list.attrs,\n role: !composite ? \"listbox\" : void 0,\n \"data-empty\": dataAttr(collection2.size === 0),\n \"aria-labelledby\": getLabelId(scope),\n \"aria-multiselectable\": prop(\"multiple\") && !composite ? true : void 0\n });\n },\n getClearTriggerProps() {\n return normalize.button({\n ...parts.clearTrigger.attrs,\n dir: prop(\"dir\"),\n id: getClearTriggerId(scope),\n type: \"button\",\n tabIndex: -1,\n disabled,\n \"data-invalid\": dataAttr(invalid),\n \"aria-label\": translations.clearTriggerLabel,\n \"aria-controls\": getInputId(scope),\n hidden: !context.get(\"value\").length,\n onPointerDown(event2) {\n if (!isLeftClick(event2)) return;\n event2.preventDefault();\n },\n onClick(event2) {\n if (event2.defaultPrevented) return;\n if (!interactive) return;\n send({ type: \"VALUE.CLEAR\", src: \"clear-trigger\" });\n }\n });\n },\n getItemState,\n getItemProps(props2) {\n const itemState = getItemState(props2);\n const value = itemState.value;\n return normalize.element({\n ...parts.item.attrs,\n dir: prop(\"dir\"),\n id: getItemId(scope, value),\n role: \"option\",\n tabIndex: -1,\n \"data-highlighted\": dataAttr(itemState.highlighted),\n \"data-state\": itemState.selected ? \"checked\" : \"unchecked\",\n \"aria-selected\": ariaAttr(itemState.highlighted),\n \"aria-disabled\": ariaAttr(itemState.disabled),\n \"data-disabled\": dataAttr(itemState.disabled),\n \"data-value\": itemState.value,\n onPointerMove() {\n if (itemState.disabled) return;\n if (itemState.highlighted) return;\n send({ type: \"ITEM.POINTER_MOVE\", value });\n },\n onPointerLeave() {\n if (props2.persistFocus) return;\n if (itemState.disabled) return;\n const prev = event.previous();\n const mouseMoved = prev?.type.includes(\"POINTER\");\n if (!mouseMoved) return;\n send({ type: \"ITEM.POINTER_LEAVE\", value });\n },\n onClick(event2) {\n if (isDownloadingEvent(event2)) return;\n if (isOpeningInNewTab(event2)) return;\n if (isContextMenuEvent(event2)) return;\n if (itemState.disabled) return;\n send({ type: \"ITEM.CLICK\", src: \"item-select\", value });\n }\n });\n },\n getItemTextProps(props2) {\n const itemState = getItemState(props2);\n return normalize.element({\n ...parts.itemText.attrs,\n dir: prop(\"dir\"),\n \"data-state\": itemState.selected ? \"checked\" : \"unchecked\",\n \"data-disabled\": dataAttr(itemState.disabled),\n \"data-highlighted\": dataAttr(itemState.highlighted)\n });\n },\n getItemIndicatorProps(props2) {\n const itemState = getItemState(props2);\n return normalize.element({\n \"aria-hidden\": true,\n ...parts.itemIndicator.attrs,\n dir: prop(\"dir\"),\n \"data-state\": itemState.selected ? \"checked\" : \"unchecked\",\n hidden: !itemState.selected\n });\n },\n getItemGroupProps(props2) {\n const { id } = props2;\n return normalize.element({\n ...parts.itemGroup.attrs,\n dir: prop(\"dir\"),\n id: getItemGroupId(scope, id),\n \"aria-labelledby\": getItemGroupLabelId(scope, id),\n \"data-empty\": dataAttr(collection2.size === 0),\n role: \"group\"\n });\n },\n getItemGroupLabelProps(props2) {\n const { htmlFor } = props2;\n return normalize.element({\n ...parts.itemGroupLabel.attrs,\n dir: prop(\"dir\"),\n id: getItemGroupLabelId(scope, htmlFor),\n role: \"presentation\"\n });\n }\n };\n}\nvar { guards, createMachine, choose } = setup();\nvar { and, not } = guards;\nvar machine = createMachine({\n props({ props: props2 }) {\n return {\n loopFocus: true,\n openOnClick: false,\n defaultValue: [],\n closeOnSelect: !props2.multiple,\n allowCustomValue: false,\n inputBehavior: \"none\",\n selectionBehavior: props2.multiple ? \"clear\" : \"replace\",\n openOnKeyPress: true,\n openOnChange: true,\n composite: true,\n navigate({ node }) {\n clickIfLink(node);\n },\n collection: collection.empty(),\n ...props2,\n positioning: {\n placement: \"bottom\",\n sameWidth: true,\n ...props2.positioning\n },\n translations: {\n triggerLabel: \"Toggle suggestions\",\n clearTriggerLabel: \"Clear value\",\n ...props2.translations\n }\n };\n },\n initialState({ prop }) {\n const open = prop(\"open\") || prop(\"defaultOpen\");\n return open ? \"suggesting\" : \"idle\";\n },\n context({ prop, bindable, getContext, getEvent }) {\n return {\n currentPlacement: bindable(() => ({\n defaultValue: void 0\n })),\n value: bindable(() => ({\n defaultValue: prop(\"defaultValue\"),\n value: prop(\"value\"),\n isEqual,\n hash(value) {\n return value.join(\",\");\n },\n onChange(value) {\n const context = getContext();\n const prevSelectedItems = context.get(\"selectedItems\");\n const collection2 = prop(\"collection\");\n const nextItems = value.map((v) => {\n const item = prevSelectedItems.find((item2) => collection2.getItemValue(item2) === v);\n return item || collection2.find(v);\n });\n context.set(\"selectedItems\", nextItems);\n prop(\"onValueChange\")?.({ value, items: nextItems });\n }\n })),\n highlightedValue: bindable(() => ({\n defaultValue: prop(\"defaultHighlightedValue\") || null,\n value: prop(\"highlightedValue\"),\n onChange(value) {\n const item = prop(\"collection\").find(value);\n prop(\"onHighlightChange\")?.({ highlightedValue: value, highlightedItem: item });\n }\n })),\n inputValue: bindable(() => {\n let inputValue = prop(\"inputValue\") || prop(\"defaultInputValue\") || \"\";\n const value = prop(\"defaultValue\") || prop(\"value\") || [];\n if (!inputValue.trim() && !prop(\"multiple\")) {\n const valueAsString = prop(\"collection\").stringifyMany(value);\n inputValue = match(prop(\"selectionBehavior\"), {\n preserve: inputValue || valueAsString,\n replace: valueAsString,\n clear: \"\"\n });\n }\n return {\n defaultValue: inputValue,\n value: prop(\"inputValue\"),\n onChange(value2) {\n const event = getEvent();\n const reason = (event.previousEvent || event).src;\n prop(\"onInputValueChange\")?.({ inputValue: value2, reason });\n }\n };\n }),\n highlightedItem: bindable(() => {\n const highlightedValue = prop(\"highlightedValue\");\n const highlightedItem = prop(\"collection\").find(highlightedValue);\n return { defaultValue: highlightedItem };\n }),\n selectedItems: bindable(() => {\n const value = prop(\"value\") || prop(\"defaultValue\") || [];\n const selectedItems = prop(\"collection\").findMany(value);\n return { defaultValue: selectedItems };\n })\n };\n },\n computed: {\n isInputValueEmpty: ({ context }) => context.get(\"inputValue\").length === 0,\n isInteractive: ({ prop }) => !(prop(\"readOnly\") || prop(\"disabled\")),\n autoComplete: ({ prop }) => prop(\"inputBehavior\") === \"autocomplete\",\n autoHighlight: ({ prop }) => prop(\"inputBehavior\") === \"autohighlight\",\n hasSelectedItems: ({ context }) => context.get(\"value\").length > 0,\n valueAsString: ({ context, prop }) => prop(\"collection\").stringifyItems(context.get(\"selectedItems\")),\n isCustomValue: ({ context, computed }) => context.get(\"inputValue\") !== computed(\"valueAsString\")\n },\n watch({ context, prop, track, action, send }) {\n track([() => context.hash(\"value\")], () => {\n action([\"syncSelectedItems\"]);\n });\n track([() => context.get(\"inputValue\")], () => {\n action([\"syncInputValue\"]);\n });\n track([() => context.get(\"highlightedValue\")], () => {\n action([\"syncHighlightedItem\", \"autofillInputValue\"]);\n });\n track([() => prop(\"open\")], () => {\n action([\"toggleVisibility\"]);\n });\n track([() => prop(\"collection\").toString()], () => {\n send({ type: \"CHILDREN_CHANGE\" });\n });\n },\n on: {\n \"SELECTED_ITEMS.SYNC\": {\n actions: [\"syncSelectedItems\"]\n },\n \"HIGHLIGHTED_VALUE.SET\": {\n actions: [\"setHighlightedValue\"]\n },\n \"HIGHLIGHTED_VALUE.CLEAR\": {\n actions: [\"clearHighlightedValue\"]\n },\n \"ITEM.SELECT\": {\n actions: [\"selectItem\"]\n },\n \"ITEM.CLEAR\": {\n actions: [\"clearItem\"]\n },\n \"VALUE.SET\": {\n actions: [\"setValue\"]\n },\n \"INPUT_VALUE.SET\": {\n actions: [\"setInputValue\"]\n },\n \"POSITIONING.SET\": {\n actions: [\"reposition\"]\n }\n },\n entry: choose([\n {\n guard: \"autoFocus\",\n actions: [\"setInitialFocus\"]\n }\n ]),\n states: {\n idle: {\n tags: [\"idle\", \"closed\"],\n entry: [\"scrollContentToTop\", \"clearHighlightedValue\"],\n on: {\n \"CONTROLLED.OPEN\": {\n target: \"interacting\"\n },\n \"TRIGGER.CLICK\": [\n {\n guard: \"isOpenControlled\",\n actions: [\"setInitialFocus\", \"highlightFirstSelectedItem\", \"invokeOnOpen\"]\n },\n {\n target: \"interacting\",\n actions: [\"setInitialFocus\", \"highlightFirstSelectedItem\", \"invokeOnOpen\"]\n }\n ],\n \"INPUT.CLICK\": [\n {\n guard: \"isOpenControlled\",\n actions: [\"highlightFirstSelectedItem\", \"invokeOnOpen\"]\n },\n {\n target: \"interacting\",\n actions: [\"highlightFirstSelectedItem\", \"invokeOnOpen\"]\n }\n ],\n \"INPUT.FOCUS\": {\n target: \"focused\"\n },\n OPEN: [\n {\n guard: \"isOpenControlled\",\n actions: [\"invokeOnOpen\"]\n },\n {\n target: \"interacting\",\n actions: [\"invokeOnOpen\"]\n }\n ],\n \"VALUE.CLEAR\": {\n target: \"focused\",\n actions: [\"clearInputValue\", \"clearSelectedItems\", \"setInitialFocus\"]\n }\n }\n },\n focused: {\n tags: [\"focused\", \"closed\"],\n entry: [\"scrollContentToTop\", \"clearHighlightedValue\"],\n on: {\n \"CONTROLLED.OPEN\": [\n {\n guard: \"isChangeEvent\",\n target: \"suggesting\"\n },\n {\n target: \"interacting\"\n }\n ],\n \"INPUT.CHANGE\": [\n {\n guard: and(\"isOpenControlled\", \"openOnChange\"),\n actions: [\"setInputValue\", \"invokeOnOpen\", \"highlightFirstItemIfNeeded\"]\n },\n {\n guard: \"openOnChange\",\n target: \"suggesting\",\n actions: [\"setInputValue\", \"invokeOnOpen\", \"highlightFirstItemIfNeeded\"]\n },\n {\n actions: [\"setInputValue\"]\n }\n ],\n \"LAYER.INTERACT_OUTSIDE\": {\n target: \"idle\"\n },\n \"INPUT.ESCAPE\": {\n guard: and(\"isCustomValue\", not(\"allowCustomValue\")),\n actions: [\"revertInputValue\"]\n },\n \"INPUT.BLUR\": {\n target: \"idle\"\n },\n \"INPUT.CLICK\": [\n {\n guard: \"isOpenControlled\",\n actions: [\"highlightFirstSelectedItem\", \"invokeOnOpen\"]\n },\n {\n target: \"interacting\",\n actions: [\"highlightFirstSelectedItem\", \"invokeOnOpen\"]\n }\n ],\n \"TRIGGER.CLICK\": [\n {\n guard: \"isOpenControlled\",\n actions: [\"setInitialFocus\", \"highlightFirstSelectedItem\", \"invokeOnOpen\"]\n },\n {\n target: \"interacting\",\n actions: [\"setInitialFocus\", \"highlightFirstSelectedItem\", \"invokeOnOpen\"]\n }\n ],\n \"INPUT.ARROW_DOWN\": [\n // == group 1 ==\n {\n guard: and(\"isOpenControlled\", \"autoComplete\"),\n actions: [\"invokeOnOpen\"]\n },\n {\n guard: \"autoComplete\",\n target: \"interacting\",\n actions: [\"invokeOnOpen\"]\n },\n // == group 2 ==\n {\n guard: \"isOpenControlled\",\n actions: [\"highlightFirstOrSelectedItem\", \"invokeOnOpen\"]\n },\n {\n target: \"interacting\",\n actions: [\"highlightFirstOrSelectedItem\", \"invokeOnOpen\"]\n }\n ],\n \"INPUT.ARROW_UP\": [\n // == group 1 ==\n {\n guard: \"autoComplete\",\n target: \"interacting\",\n actions: [\"invokeOnOpen\"]\n },\n {\n guard: \"autoComplete\",\n target: \"interacting\",\n actions: [\"invokeOnOpen\"]\n },\n // == group 2 ==\n {\n target: \"interacting\",\n actions: [\"highlightLastOrSelectedItem\", \"invokeOnOpen\"]\n },\n {\n target: \"interacting\",\n actions: [\"highlightLastOrSelectedItem\", \"invokeOnOpen\"]\n }\n ],\n OPEN: [\n {\n guard: \"isOpenControlled\",\n actions: [\"invokeOnOpen\"]\n },\n {\n target: \"interacting\",\n actions: [\"invokeOnOpen\"]\n }\n ],\n \"VALUE.CLEAR\": {\n actions: [\"clearInputValue\", \"clearSelectedItems\"]\n }\n }\n },\n interacting: {\n tags: [\"open\", \"focused\"],\n entry: [\"setInitialFocus\"],\n effects: [\"scrollToHighlightedItem\", \"trackDismissableLayer\", \"trackPlacement\", \"hideOtherElements\"],\n on: {\n \"CONTROLLED.CLOSE\": [\n {\n guard: \"restoreFocus\",\n target: \"focused\",\n actions: [\"setFinalFocus\"]\n },\n {\n target: \"idle\"\n }\n ],\n CHILDREN_CHANGE: [\n {\n guard: \"isHighlightedItemRemoved\",\n actions: [\"clearHighlightedValue\"]\n },\n {\n actions: [\"scrollToHighlightedItem\"]\n }\n ],\n \"INPUT.HOME\": {\n actions: [\"highlightFirstItem\"]\n },\n \"INPUT.END\": {\n actions: [\"highlightLastItem\"]\n },\n \"INPUT.ARROW_DOWN\": [\n {\n guard: and(\"autoComplete\", \"isLastItemHighlighted\"),\n actions: [\"clearHighlightedValue\", \"scrollContentToTop\"]\n },\n {\n actions: [\"highlightNextItem\"]\n }\n ],\n \"INPUT.ARROW_UP\": [\n {\n guard: and(\"autoComplete\", \"isFirstItemHighlighted\"),\n actions: [\"clearHighlightedValue\"]\n },\n {\n actions: [\"highlightPrevItem\"]\n }\n ],\n \"INPUT.ENTER\": [\n // == group 1 ==\n {\n guard: and(\"isOpenControlled\", \"isCustomValue\", not(\"hasHighlightedItem\"), not(\"allowCustomValue\")),\n actions: [\"revertInputValue\", \"invokeOnClose\"]\n },\n {\n guard: and(\"isCustomValue\", not(\"hasHighlightedItem\"), not(\"allowCustomValue\")),\n target: \"focused\",\n actions: [\"revertInputValue\", \"invokeOnClose\"]\n },\n // == group 2 ==\n {\n guard: and(\"isOpenControlled\", \"closeOnSelect\"),\n actions: [\"selectHighlightedItem\", \"invokeOnClose\"]\n },\n {\n guard: \"closeOnSelect\",\n target: \"focused\",\n actions: [\"selectHighlightedItem\", \"invokeOnClose\", \"setFinalFocus\"]\n },\n {\n actions: [\"selectHighlightedItem\"]\n }\n ],\n \"INPUT.CHANGE\": [\n {\n guard: \"autoComplete\",\n target: \"suggesting\",\n actions: [\"setInputValue\"]\n },\n {\n target: \"suggesting\",\n actions: [\"clearHighlightedValue\", \"setInputValue\"]\n }\n ],\n \"ITEM.POINTER_MOVE\": {\n actions: [\"setHighlightedValue\"]\n },\n \"ITEM.POINTER_LEAVE\": {\n actions: [\"clearHighlightedValue\"]\n },\n \"ITEM.CLICK\": [\n {\n guard: and(\"isOpenControlled\", \"closeOnSelect\"),\n actions: [\"selectItem\", \"invokeOnClose\"]\n },\n {\n guard: \"closeOnSelect\",\n target: \"focused\",\n actions: [\"selectItem\", \"invokeOnClose\", \"setFinalFocus\"]\n },\n {\n actions: [\"selectItem\"]\n }\n ],\n \"LAYER.ESCAPE\": [\n {\n guard: and(\"isOpenControlled\", \"autoComplete\"),\n actions: [\"syncInputValue\", \"invokeOnClose\"]\n },\n {\n guard: \"autoComplete\",\n target: \"focused\",\n actions: [\"syncInputValue\", \"invokeOnClose\"]\n },\n {\n guard: \"isOpenControlled\",\n actions: [\"invokeOnClose\"]\n },\n {\n target: \"focused\",\n actions: [\"invokeOnClose\", \"setFinalFocus\"]\n }\n ],\n \"TRIGGER.CLICK\": [\n {\n guard: \"isOpenControlled\",\n actions: [\"invokeOnClose\"]\n },\n {\n target: \"focused\",\n actions: [\"invokeOnClose\"]\n }\n ],\n \"LAYER.INTERACT_OUTSIDE\": [\n // == group 1 ==\n {\n guard: and(\"isOpenControlled\", \"isCustomValue\", not(\"allowCustomValue\")),\n actions: [\"revertInputValue\", \"invokeOnClose\"]\n },\n {\n guard: and(\"isCustomValue\", not(\"allowCustomValue\")),\n target: \"idle\",\n actions: [\"revertInputValue\", \"invokeOnClose\"]\n },\n // == group 2 ==\n {\n guard: \"isOpenControlled\",\n actions: [\"invokeOnClose\"]\n },\n {\n target: \"idle\",\n actions: [\"invokeOnClose\"]\n }\n ],\n CLOSE: [\n {\n guard: \"isOpenControlled\",\n actions: [\"invokeOnClose\"]\n },\n {\n target: \"focused\",\n actions: [\"invokeOnClose\", \"setFinalFocus\"]\n }\n ],\n \"VALUE.CLEAR\": [\n {\n guard: \"isOpenControlled\",\n actions: [\"clearInputValue\", \"clearSelectedItems\", \"invokeOnClose\"]\n },\n {\n target: \"focused\",\n actions: [\"clearInputValue\", \"clearSelectedItems\", \"invokeOnClose\", \"setFinalFocus\"]\n }\n ]\n }\n },\n suggesting: {\n tags: [\"open\", \"focused\"],\n effects: [\"trackDismissableLayer\", \"scrollToHighlightedItem\", \"trackPlacement\", \"hideOtherElements\"],\n entry: [\"setInitialFocus\"],\n on: {\n \"CONTROLLED.CLOSE\": [\n {\n guard: \"restoreFocus\",\n target: \"focused\",\n actions: [\"setFinalFocus\"]\n },\n {\n target: \"idle\"\n }\n ],\n CHILDREN_CHANGE: [\n {\n guard: \"autoHighlight\",\n actions: [\"highlightFirstItem\"]\n },\n {\n guard: \"isHighlightedItemRemoved\",\n actions: [\"clearHighlightedValue\"]\n }\n ],\n \"INPUT.ARROW_DOWN\": {\n target: \"interacting\",\n actions: [\"highlightNextItem\"]\n },\n \"INPUT.ARROW_UP\": {\n target: \"interacting\",\n actions: [\"highlightPrevItem\"]\n },\n \"INPUT.HOME\": {\n target: \"interacting\",\n actions: [\"highlightFirstItem\"]\n },\n \"INPUT.END\": {\n target: \"interacting\",\n actions: [\"highlightLastItem\"]\n },\n \"INPUT.ENTER\": [\n // == group 1 ==\n {\n guard: and(\"isOpenControlled\", \"isCustomValue\", not(\"hasHighlightedItem\"), not(\"allowCustomValue\")),\n actions: [\"revertInputValue\", \"invokeOnClose\"]\n },\n {\n guard: and(\"isCustomValue\", not(\"hasHighlightedItem\"), not(\"allowCustomValue\")),\n target: \"focused\",\n actions: [\"revertInputValue\", \"invokeOnClose\"]\n },\n // == group 2 ==\n {\n guard: and(\"isOpenControlled\", \"closeOnSelect\"),\n actions: [\"selectHighlightedItem\", \"invokeOnClose\"]\n },\n {\n guard: \"closeOnSelect\",\n target: \"focused\",\n actions: [\"selectHighlightedItem\", \"invokeOnClose\", \"setFinalFocus\"]\n },\n {\n actions: [\"selectHighlightedItem\"]\n }\n ],\n \"INPUT.CHANGE\": {\n actions: [\"setInputValue\"]\n },\n \"LAYER.ESCAPE\": [\n {\n guard: \"isOpenControlled\",\n actions: [\"invokeOnClose\"]\n },\n {\n target: \"focused\",\n actions: [\"invokeOnClose\"]\n }\n ],\n \"ITEM.POINTER_MOVE\": {\n target: \"interacting\",\n actions: [\"setHighlightedValue\"]\n },\n \"ITEM.POINTER_LEAVE\": {\n actions: [\"clearHighlightedValue\"]\n },\n \"LAYER.INTERACT_OUTSIDE\": [\n // == group 1 ==\n {\n guard: and(\"isOpenControlled\", \"isCustomValue\", not(\"allowCustomValue\")),\n actions: [\"revertInputValue\", \"invokeOnClose\"]\n },\n {\n guard: and(\"isCustomValue\", not(\"allowCustomValue\")),\n target: \"idle\",\n actions: [\"revertInputValue\", \"invokeOnClose\"]\n },\n // == group 2 ==\n {\n guard: \"isOpenControlled\",\n actions: [\"invokeOnClose\"]\n },\n {\n target: \"idle\",\n actions: [\"invokeOnClose\"]\n }\n ],\n \"TRIGGER.CLICK\": [\n {\n guard: \"isOpenControlled\",\n actions: [\"invokeOnClose\"]\n },\n {\n target: \"focused\",\n actions: [\"invokeOnClose\"]\n }\n ],\n \"ITEM.CLICK\": [\n {\n guard: and(\"isOpenControlled\", \"closeOnSelect\"),\n actions: [\"selectItem\", \"invokeOnClose\"]\n },\n {\n guard: \"closeOnSelect\",\n target: \"focused\",\n actions: [\"selectItem\", \"invokeOnClose\", \"setFinalFocus\"]\n },\n {\n actions: [\"selectItem\"]\n }\n ],\n CLOSE: [\n {\n guard: \"isOpenControlled\",\n actions: [\"invokeOnClose\"]\n },\n {\n target: \"focused\",\n actions: [\"invokeOnClose\", \"setFinalFocus\"]\n }\n ],\n \"VALUE.CLEAR\": [\n {\n guard: \"isOpenControlled\",\n actions: [\"clearInputValue\", \"clearSelectedItems\", \"invokeOnClose\"]\n },\n {\n target: \"focused\",\n actions: [\"clearInputValue\", \"clearSelectedItems\", \"invokeOnClose\", \"setFinalFocus\"]\n }\n ]\n }\n }\n },\n implementations: {\n guards: {\n isInputValueEmpty: ({ computed }) => computed(\"isInputValueEmpty\"),\n autoComplete: ({ computed, prop }) => computed(\"autoComplete\") && !prop(\"multiple\"),\n autoHighlight: ({ computed }) => computed(\"autoHighlight\"),\n isFirstItemHighlighted: ({ prop, context }) => prop(\"collection\").firstValue === context.get(\"highlightedValue\"),\n isLastItemHighlighted: ({ prop, context }) => prop(\"collection\").lastValue === context.get(\"highlightedValue\"),\n isCustomValue: ({ computed }) => computed(\"isCustomValue\"),\n allowCustomValue: ({ prop }) => !!prop(\"allowCustomValue\"),\n hasHighlightedItem: ({ context }) => context.get(\"highlightedValue\") != null,\n closeOnSelect: ({ prop }) => !!prop(\"closeOnSelect\"),\n isOpenControlled: ({ prop }) => prop(\"open\") != null,\n openOnChange: ({ prop, context }) => {\n const openOnChange = prop(\"openOnChange\");\n if (isBoolean(openOnChange)) return openOnChange;\n return !!openOnChange?.({ inputValue: context.get(\"inputValue\") });\n },\n restoreFocus: ({ event }) => event.restoreFocus == null ? true : !!event.restoreFocus,\n isChangeEvent: ({ event }) => event.previousEvent?.type === \"INPUT.CHANGE\",\n autoFocus: ({ prop }) => !!prop(\"autoFocus\"),\n isHighlightedItemRemoved: ({ prop, context }) => !prop(\"collection\").has(context.get(\"highlightedValue\"))\n },\n effects: {\n trackDismissableLayer({ send, prop, scope }) {\n if (prop(\"disableLayer\")) return;\n const contentEl = () => getContentEl(scope);\n return trackDismissableElement(contentEl, {\n defer: true,\n exclude: () => [getInputEl(scope), getTriggerEl(scope), getClearTriggerEl(scope)],\n onFocusOutside: prop(\"onFocusOutside\"),\n onPointerDownOutside: prop(\"onPointerDownOutside\"),\n onInteractOutside: prop(\"onInteractOutside\"),\n onEscapeKeyDown(event) {\n event.preventDefault();\n event.stopPropagation();\n send({ type: \"LAYER.ESCAPE\", src: \"escape-key\" });\n },\n onDismiss() {\n send({ type: \"LAYER.INTERACT_OUTSIDE\", src: \"interact-outside\", restoreFocus: false });\n }\n });\n },\n hideOtherElements({ scope }) {\n return ariaHidden([\n getInputEl(scope),\n getContentEl(scope),\n getTriggerEl(scope),\n getClearTriggerEl(scope)\n ]);\n },\n trackPlacement({ context, prop, scope }) {\n const anchorEl = () => getControlEl(scope) || getTriggerEl(scope);\n const positionerEl = () => getPositionerEl(scope);\n context.set(\"currentPlacement\", prop(\"positioning\").placement);\n return getPlacement(anchorEl, positionerEl, {\n ...prop(\"positioning\"),\n defer: true,\n onComplete(data) {\n context.set(\"currentPlacement\", data.placement);\n }\n });\n },\n scrollToHighlightedItem({ context, prop, scope, event }) {\n const inputEl = getInputEl(scope);\n let cleanups = [];\n const exec = (immediate) => {\n const pointer = event.current().type.includes(\"POINTER\");\n const highlightedValue = context.get(\"highlightedValue\");\n if (pointer || !highlightedValue) return;\n const itemEl = getItemEl(scope, highlightedValue);\n const contentEl = getContentEl(scope);\n const scrollToIndexFn = prop(\"scrollToIndexFn\");\n if (scrollToIndexFn) {\n const highlightedIndex = prop(\"collection\").indexOf(highlightedValue);\n scrollToIndexFn({ index: highlightedIndex, immediate });\n return;\n }\n const raf_cleanup = raf(() => {\n scrollIntoView(itemEl, { rootEl: contentEl, block: \"nearest\" });\n });\n cleanups.push(raf_cleanup);\n };\n const rafCleanup = raf(() => exec(true));\n cleanups.push(rafCleanup);\n const observerCleanup = observeAttributes(inputEl, {\n attributes: [\"aria-activedescendant\"],\n callback: () => exec(false)\n });\n cleanups.push(observerCleanup);\n return () => {\n cleanups.forEach((cleanup) => cleanup());\n };\n }\n },\n actions: {\n reposition({ context, prop, scope, event }) {\n const controlEl = () => getControlEl(scope);\n const positionerEl = () => getPositionerEl(scope);\n getPlacement(controlEl, positionerEl, {\n ...prop(\"positioning\"),\n ...event.options,\n defer: true,\n listeners: false,\n onComplete(data) {\n context.set(\"currentPlacement\", data.placement);\n }\n });\n },\n setHighlightedValue({ context, event }) {\n if (event.value == null) return;\n context.set(\"highlightedValue\", event.value);\n },\n clearHighlightedValue({ context }) {\n context.set(\"highlightedValue\", null);\n },\n selectHighlightedItem(params) {\n const { context, prop } = params;\n const collection2 = prop(\"collection\");\n const highlightedValue = context.get(\"highlightedValue\");\n if (!highlightedValue || !collection2.has(highlightedValue)) return;\n const nextValue = prop(\"multiple\") ? addOrRemove(context.get(\"value\"), highlightedValue) : [highlightedValue];\n prop(\"onSelect\")?.({ value: nextValue, itemValue: highlightedValue });\n context.set(\"value\", nextValue);\n const inputValue = match(prop(\"selectionBehavior\"), {\n preserve: context.get(\"inputValue\"),\n replace: collection2.stringifyMany(nextValue),\n clear: \"\"\n });\n context.set(\"inputValue\", inputValue);\n },\n scrollToHighlightedItem({ context, prop, scope }) {\n nextTick(() => {\n const highlightedValue = context.get(\"highlightedValue\");\n if (highlightedValue == null) return;\n const itemEl = getItemEl(scope, highlightedValue);\n const contentEl = getContentEl(scope);\n const scrollToIndexFn = prop(\"scrollToIndexFn\");\n if (scrollToIndexFn) {\n const highlightedIndex = prop(\"collection\").indexOf(highlightedValue);\n scrollToIndexFn({ index: highlightedIndex, immediate: true });\n return;\n }\n scrollIntoView(itemEl, { rootEl: contentEl, block: \"nearest\" });\n });\n },\n selectItem(params) {\n const { context, event, flush, prop } = params;\n if (event.value == null) return;\n flush(() => {\n const nextValue = prop(\"multiple\") ? addOrRemove(context.get(\"value\"), event.value) : [event.value];\n prop(\"onSelect\")?.({ value: nextValue, itemValue: event.value });\n context.set(\"value\", nextValue);\n const inputValue = match(prop(\"selectionBehavior\"), {\n preserve: context.get(\"inputValue\"),\n replace: prop(\"collection\").stringifyMany(nextValue),\n clear: \"\"\n });\n context.set(\"inputValue\", inputValue);\n });\n },\n clearItem(params) {\n const { context, event, flush, prop } = params;\n if (event.value == null) return;\n flush(() => {\n const nextValue = remove(context.get(\"value\"), event.value);\n context.set(\"value\", nextValue);\n const inputValue = match(prop(\"selectionBehavior\"), {\n preserve: context.get(\"inputValue\"),\n replace: prop(\"collection\").stringifyMany(nextValue),\n clear: \"\"\n });\n context.set(\"inputValue\", inputValue);\n });\n },\n setInitialFocus({ scope }) {\n raf(() => {\n focusInputEl(scope);\n });\n },\n setFinalFocus({ scope }) {\n raf(() => {\n const triggerEl = getTriggerEl(scope);\n if (triggerEl?.dataset.focusable == null) {\n focusInputEl(scope);\n } else {\n focusTriggerEl(scope);\n }\n });\n },\n syncInputValue({ context, scope, event }) {\n const inputEl = getInputEl(scope);\n if (!inputEl) return;\n inputEl.value = context.get(\"inputValue\");\n queueMicrotask(() => {\n if (event.current().type === \"INPUT.CHANGE\") return;\n setCaretToEnd(inputEl);\n });\n },\n setInputValue({ context, event }) {\n context.set(\"inputValue\", event.value);\n },\n clearInputValue({ context }) {\n context.set(\"inputValue\", \"\");\n },\n revertInputValue({ context, prop, computed }) {\n const selectionBehavior = prop(\"selectionBehavior\");\n const inputValue = match(selectionBehavior, {\n replace: computed(\"hasSelectedItems\") ? computed(\"valueAsString\") : \"\",\n preserve: context.get(\"inputValue\"),\n clear: \"\"\n });\n context.set(\"inputValue\", inputValue);\n },\n setValue(params) {\n const { context, flush, event, prop } = params;\n flush(() => {\n context.set(\"value\", event.value);\n const inputValue = match(prop(\"selectionBehavior\"), {\n preserve: context.get(\"inputValue\"),\n replace: prop(\"collection\").stringifyMany(event.value),\n clear: \"\"\n });\n context.set(\"inputValue\", inputValue);\n });\n },\n clearSelectedItems(params) {\n const { context, flush, prop } = params;\n flush(() => {\n context.set(\"value\", []);\n const inputValue = match(prop(\"selectionBehavior\"), {\n preserve: context.get(\"inputValue\"),\n replace: prop(\"collection\").stringifyMany([]),\n clear: \"\"\n });\n context.set(\"inputValue\", inputValue);\n });\n },\n scrollContentToTop({ prop, scope }) {\n const scrollToIndexFn = prop(\"scrollToIndexFn\");\n if (scrollToIndexFn) {\n scrollToIndexFn({ index: 0, immediate: true });\n } else {\n const contentEl = getContentEl(scope);\n if (!contentEl) return;\n contentEl.scrollTop = 0;\n }\n },\n invokeOnOpen({ prop, event }) {\n const reason = getOpenChangeReason(event);\n prop(\"onOpenChange\")?.({ open: true, reason });\n },\n invokeOnClose({ prop, event }) {\n const reason = getOpenChangeReason(event);\n prop(\"onOpenChange\")?.({ open: false, reason });\n },\n highlightFirstItem({ context, prop, scope }) {\n const exec = getContentEl(scope) ? queueMicrotask : raf;\n exec(() => {\n const value = prop(\"collection\").firstValue;\n if (value) context.set(\"highlightedValue\", value);\n });\n },\n highlightFirstItemIfNeeded({ computed, action }) {\n if (!computed(\"autoHighlight\")) return;\n action([\"highlightFirstItem\"]);\n },\n highlightLastItem({ context, prop, scope }) {\n const exec = getContentEl(scope) ? queueMicrotask : raf;\n exec(() => {\n const value = prop(\"collection\").lastValue;\n if (value) context.set(\"highlightedValue\", value);\n });\n },\n highlightNextItem({ context, prop }) {\n let value = null;\n const highlightedValue = context.get(\"highlightedValue\");\n const collection2 = prop(\"collection\");\n if (highlightedValue) {\n value = collection2.getNextValue(highlightedValue);\n if (!value && prop(\"loopFocus\")) value = collection2.firstValue;\n } else {\n value = collection2.firstValue;\n }\n if (value) context.set(\"highlightedValue\", value);\n },\n highlightPrevItem({ context, prop }) {\n let value = null;\n const highlightedValue = context.get(\"highlightedValue\");\n const collection2 = prop(\"collection\");\n if (highlightedValue) {\n value = collection2.getPreviousValue(highlightedValue);\n if (!value && prop(\"loopFocus\")) value = collection2.lastValue;\n } else {\n value = collection2.lastValue;\n }\n if (value) context.set(\"highlightedValue\", value);\n },\n highlightFirstSelectedItem({ context, prop }) {\n raf(() => {\n const [value] = prop(\"collection\").sort(context.get(\"value\"));\n if (value) context.set(\"highlightedValue\", value);\n });\n },\n highlightFirstOrSelectedItem({ context, prop, computed }) {\n raf(() => {\n let value = null;\n if (computed(\"hasSelectedItems\")) {\n value = prop(\"collection\").sort(context.get(\"value\"))[0];\n } else {\n value = prop(\"collection\").firstValue;\n }\n if (value) context.set(\"highlightedValue\", value);\n });\n },\n highlightLastOrSelectedItem({ context, prop, computed }) {\n raf(() => {\n const collection2 = prop(\"collection\");\n let value = null;\n if (computed(\"hasSelectedItems\")) {\n value = collection2.sort(context.get(\"value\"))[0];\n } else {\n value = collection2.lastValue;\n }\n if (value) context.set(\"highlightedValue\", value);\n });\n },\n autofillInputValue({ context, computed, prop, event, scope }) {\n const inputEl = getInputEl(scope);\n const collection2 = prop(\"collection\");\n if (!computed(\"autoComplete\") || !inputEl || !event.keypress) return;\n const valueText = collection2.stringify(context.get(\"highlightedValue\"));\n raf(() => {\n inputEl.value = valueText || context.get(\"inputValue\");\n });\n },\n syncSelectedItems(params) {\n queueMicrotask(() => {\n const { context, prop } = params;\n const collection2 = prop(\"collection\");\n const value = context.get(\"value\");\n const selectedItems = value.map((v) => {\n const item = context.get(\"selectedItems\").find((item2) => collection2.getItemValue(item2) === v);\n return item || collection2.find(v);\n });\n context.set(\"selectedItems\", selectedItems);\n const inputValue = match(prop(\"selectionBehavior\"), {\n preserve: context.get(\"inputValue\"),\n replace: collection2.stringifyMany(value),\n clear: \"\"\n });\n context.set(\"inputValue\", inputValue);\n });\n },\n syncHighlightedItem({ context, prop }) {\n const item = prop(\"collection\").find(context.get(\"highlightedValue\"));\n context.set(\"highlightedItem\", item);\n },\n toggleVisibility({ event, send, prop }) {\n send({ type: prop(\"open\") ? \"CONTROLLED.OPEN\" : \"CONTROLLED.CLOSE\", previousEvent: event });\n }\n }\n }\n});\nfunction getOpenChangeReason(event) {\n return (event.previousEvent || event).src;\n}\nvar props = createProps()([\n \"allowCustomValue\",\n \"autoFocus\",\n \"closeOnSelect\",\n \"collection\",\n \"composite\",\n \"defaultHighlightedValue\",\n \"defaultInputValue\",\n \"defaultOpen\",\n \"defaultValue\",\n \"dir\",\n \"disabled\",\n \"disableLayer\",\n \"form\",\n \"getRootNode\",\n \"highlightedValue\",\n \"id\",\n \"ids\",\n \"inputBehavior\",\n \"inputValue\",\n \"invalid\",\n \"loopFocus\",\n \"multiple\",\n \"name\",\n \"navigate\",\n \"onFocusOutside\",\n \"onHighlightChange\",\n \"onInputValueChange\",\n \"onInteractOutside\",\n \"onOpenChange\",\n \"onOpenChange\",\n \"onPointerDownOutside\",\n \"onSelect\",\n \"onValueChange\",\n \"open\",\n \"openOnChange\",\n \"openOnClick\",\n \"openOnKeyPress\",\n \"placeholder\",\n \"positioning\",\n \"readOnly\",\n \"required\",\n \"scrollToIndexFn\",\n \"selectionBehavior\",\n \"translations\",\n \"value\"\n]);\nvar splitProps = createSplitProps(props);\nvar itemGroupLabelProps = createProps()([\"htmlFor\"]);\nvar splitItemGroupLabelProps = createSplitProps(itemGroupLabelProps);\nvar itemGroupProps = createProps()([\"id\"]);\nvar splitItemGroupProps = createSplitProps(itemGroupProps);\nvar itemProps = createProps()([\"item\", \"persistFocus\"]);\nvar splitItemProps = createSplitProps(itemProps);\n\nexport { anatomy, collection, connect, itemGroupLabelProps, itemGroupProps, itemProps, machine, props, splitItemGroupLabelProps, splitItemGroupProps, splitItemProps, splitProps };\n","'use client';\nimport { createAnatomy } from '@zag-js/anatomy';\n\nconst fieldsetAnatomy = createAnatomy(\"fieldset\").parts(\"root\", \"errorText\", \"helperText\", \"legend\");\nconst parts = fieldsetAnatomy.build();\n\nexport { fieldsetAnatomy, parts };\n","\"use strict\";\nimport { comboboxAnatomy as comboboxAnatomy$1 } from '@ark-ui/react';\nimport { accordionAnatomy as accordionAnatomy$1 } from '@ark-ui/react/accordion';\nimport { createAnatomy } from '@ark-ui/react/anatomy';\nimport { clipboardAnatomy as clipboardAnatomy$1 } from '@ark-ui/react/clipboard';\nimport { colorPickerAnatomy as colorPickerAnatomy$1 } from '@ark-ui/react/color-picker';\nimport { dialogAnatomy as dialogAnatomy$1 } from '@ark-ui/react/dialog';\nimport { editableAnatomy as editableAnatomy$1 } from '@ark-ui/react/editable';\nimport { fieldAnatomy as fieldAnatomy$1 } from '@ark-ui/react/field';\nimport { fieldsetAnatomy as fieldsetAnatomy$1 } from '@ark-ui/react/fieldset';\nimport { fileUploadAnatomy as fileUploadAnatomy$1 } from '@ark-ui/react/file-upload';\nimport { menuAnatomy as menuAnatomy$1 } from '@ark-ui/react/menu';\nimport { popoverAnatomy as popoverAnatomy$1 } from '@ark-ui/react/popover';\nimport { radioGroupAnatomy as radioGroupAnatomy$1 } from '@ark-ui/react/radio-group';\nimport { ratingGroupAnatomy as ratingGroupAnatomy$1 } from '@ark-ui/react/rating-group';\nimport { selectAnatomy as selectAnatomy$1 } from '@ark-ui/react/select';\nimport { sliderAnatomy as sliderAnatomy$1 } from '@ark-ui/react/slider';\nimport { switchAnatomy as switchAnatomy$1 } from '@ark-ui/react/switch';\nexport { treeViewAnatomy } from '@ark-ui/react/tree-view';\nexport { avatarAnatomy } from '@ark-ui/react/avatar';\nexport { checkboxAnatomy } from '@ark-ui/react/checkbox';\nexport { collapsibleAnatomy } from '@ark-ui/react/collapsible';\nexport { hoverCardAnatomy } from '@ark-ui/react/hover-card';\nexport { numberInputAnatomy } from '@ark-ui/react/number-input';\nexport { pinInputAnatomy } from '@ark-ui/react/pin-input';\nexport { progressAnatomy } from '@ark-ui/react/progress';\nexport { qrCodeAnatomy } from '@ark-ui/react/qr-code';\nexport { segmentGroupAnatomy } from '@ark-ui/react/segment-group';\nexport { tooltipAnatomy } from '@ark-ui/react/tooltip';\n\nconst accordionAnatomy = accordionAnatomy$1.extendWith(\"itemBody\");\nconst actionBarAnatomy = createAnatomy(\"action-bar\").parts(\n \"positioner\",\n \"content\",\n \"separator\",\n \"selectionTrigger\",\n \"closeTrigger\"\n);\nconst alertAnatomy = createAnatomy(\"alert\").parts(\n \"title\",\n \"description\",\n \"root\",\n \"indicator\",\n \"content\"\n);\nconst breadcrumbAnatomy = createAnatomy(\"breadcrumb\").parts(\n \"link\",\n \"currentLink\",\n \"item\",\n \"list\",\n \"root\",\n \"ellipsis\",\n \"separator\"\n);\nconst blockquoteAnatomy = createAnatomy(\"blockquote\").parts(\n \"root\",\n \"icon\",\n \"content\",\n \"caption\"\n);\nconst cardAnatomy = createAnatomy(\"card\").parts(\n \"root\",\n \"header\",\n \"body\",\n \"footer\",\n \"title\",\n \"description\"\n);\nconst checkboxCardAnatomy = createAnatomy(\"checkbox-card\", [\n \"root\",\n \"control\",\n \"label\",\n \"description\",\n \"addon\",\n \"indicator\",\n \"content\"\n]);\nconst dataListAnatomy = createAnatomy(\"data-list\").parts(\n \"root\",\n \"item\",\n \"itemLabel\",\n \"itemValue\"\n);\nconst dialogAnatomy = dialogAnatomy$1.extendWith(\n \"header\",\n \"body\",\n \"footer\",\n \"backdrop\"\n);\nconst drawerAnatomy = dialogAnatomy$1.extendWith(\n \"header\",\n \"body\",\n \"footer\",\n \"backdrop\"\n);\nconst editableAnatomy = editableAnatomy$1.extendWith(\"textarea\");\nconst emptyStateAnatomy = createAnatomy(\"empty-state\", [\n \"root\",\n \"content\",\n \"indicator\",\n \"title\",\n \"description\"\n]);\nconst fieldAnatomy = fieldAnatomy$1.extendWith(\"requiredIndicator\");\nconst fieldsetAnatomy = fieldsetAnatomy$1.extendWith(\"content\");\nconst fileUploadAnatomy = fileUploadAnatomy$1.extendWith(\n \"itemContent\",\n \"dropzoneContent\",\n \"fileText\"\n);\nconst listAnatomy = createAnatomy(\"list\").parts(\n \"root\",\n \"item\",\n \"indicator\"\n);\nconst menuAnatomy = menuAnatomy$1.extendWith(\"itemCommand\");\nconst nativeSelectAnatomy = createAnatomy(\"select\").parts(\n \"root\",\n \"field\",\n \"indicator\"\n);\nconst popoverAnatomy = popoverAnatomy$1.extendWith(\n \"header\",\n \"body\",\n \"footer\"\n);\nconst radioGroupAnatomy = radioGroupAnatomy$1.extendWith(\n \"itemAddon\",\n \"itemIndicator\"\n);\nconst radioCardAnatomy = radioGroupAnatomy.extendWith(\n \"itemContent\",\n \"itemDescription\"\n);\nconst ratingGroupAnatomy = ratingGroupAnatomy$1.extendWith(\"itemIndicator\");\nconst selectAnatomy = selectAnatomy$1.extendWith(\"indicatorGroup\");\nconst comboboxAnatomy = comboboxAnatomy$1.extendWith(\n \"indicatorGroup\",\n \"empty\"\n);\nconst sliderAnatomy = sliderAnatomy$1.extendWith(\"markerIndicator\");\nconst statAnatomy = createAnatomy(\"stat\").parts(\n \"root\",\n \"label\",\n \"helpText\",\n \"valueText\",\n \"valueUnit\",\n \"indicator\"\n);\nconst statusAnatomy = createAnatomy(\"status\").parts(\"root\", \"indicator\");\nconst stepsAnatomy = createAnatomy(\"steps\", [\n \"root\",\n \"list\",\n \"item\",\n \"trigger\",\n \"indicator\",\n \"separator\",\n \"content\",\n \"title\",\n \"description\",\n \"nextTrigger\",\n \"prevTrigger\",\n \"progress\"\n]);\nconst switchAnatomy = switchAnatomy$1.extendWith(\"indicator\");\nconst tableAnatomy = createAnatomy(\"table\").parts(\n \"root\",\n \"header\",\n \"body\",\n \"row\",\n \"columnHeader\",\n \"cell\",\n \"footer\",\n \"caption\"\n);\nconst toastAnatomy = createAnatomy(\"toast\").parts(\n \"root\",\n \"title\",\n \"description\",\n \"indicator\",\n \"closeTrigger\",\n \"actionTrigger\"\n);\nconst tabsAnatomy = createAnatomy(\"tabs\").parts(\n \"root\",\n \"trigger\",\n \"list\",\n \"content\",\n \"contentGroup\",\n \"indicator\"\n);\nconst tagAnatomy = createAnatomy(\"tag\").parts(\n \"root\",\n \"label\",\n \"closeTrigger\",\n \"startElement\",\n \"endElement\"\n);\nconst timelineAnatomy = createAnatomy(\"timeline\").parts(\n \"root\",\n \"item\",\n \"content\",\n \"separator\",\n \"indicator\",\n \"connector\",\n \"title\",\n \"description\"\n);\nconst colorPickerAnatomy = colorPickerAnatomy$1.extendWith(\"channelText\");\nconst codeBlockAnatomy = createAnatomy(\"code-block\", [\n \"root\",\n \"content\",\n \"title\",\n \"header\",\n \"footer\",\n \"control\",\n \"overlay\",\n \"code\",\n \"codeText\",\n \"copyTrigger\",\n \"copyIndicator\",\n \"collapseTrigger\",\n \"collapseIndicator\",\n \"collapseText\"\n]);\nconst clipboardAnatomy = clipboardAnatomy$1.extendWith(\"valueText\");\n\nexport { accordionAnatomy, actionBarAnatomy, alertAnatomy, blockquoteAnatomy, breadcrumbAnatomy, cardAnatomy, checkboxCardAnatomy, clipboardAnatomy, codeBlockAnatomy, colorPickerAnatomy, comboboxAnatomy, dataListAnatomy, dialogAnatomy, drawerAnatomy, editableAnatomy, emptyStateAnatomy, fieldAnatomy, fieldsetAnatomy, fileUploadAnatomy, listAnatomy, menuAnatomy, nativeSelectAnatomy, popoverAnatomy, radioCardAnatomy, radioGroupAnatomy, ratingGroupAnatomy, selectAnatomy, sliderAnatomy, statAnatomy, statusAnatomy, stepsAnatomy, switchAnatomy, tableAnatomy, tabsAnatomy, tagAnatomy, timelineAnatomy, toastAnatomy };\n"],"names":["anatomy","createAnatomy","createProps","fieldsetAnatomy","accordionAnatomy","accordionAnatomy$1","actionBarAnatomy","alertAnatomy","breadcrumbAnatomy","blockquoteAnatomy","cardAnatomy","checkboxCardAnatomy","dataListAnatomy","dialogAnatomy","dialogAnatomy$1","drawerAnatomy","editableAnatomy","editableAnatomy$1","emptyStateAnatomy","fieldAnatomy","fieldAnatomy$1","fieldsetAnatomy$1","fileUploadAnatomy","fileUploadAnatomy$1","listAnatomy","menuAnatomy","menuAnatomy$1","nativeSelectAnatomy","popoverAnatomy","popoverAnatomy$1","radioGroupAnatomy","radioGroupAnatomy$1","radioCardAnatomy","ratingGroupAnatomy","ratingGroupAnatomy$1","selectAnatomy","selectAnatomy$1","comboboxAnatomy","comboboxAnatomy$1","sliderAnatomy","sliderAnatomy$1","statAnatomy","statusAnatomy","stepsAnatomy","switchAnatomy","switchAnatomy$1","tableAnatomy","toastAnatomy","tabsAnatomy","tagAnatomy","timelineAnatomy","colorPickerAnatomy","colorPickerAnatomy$1","codeBlockAnatomy","clipboardAnatomy$1"],"mappings":"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","x_google_ignoreList":[0,1,2]}
1
+ {"version":3,"file":"anatomy-DKlFmIC5.js","sources":["../../node_modules/@zag-js/combobox/dist/index.mjs","../../node_modules/@ark-ui/react/dist/components/fieldset/fieldset.anatomy.js","../../node_modules/@chakra-ui/react/dist/esm/anatomy.js"],"sourcesContent":["import { createAnatomy } from '@zag-js/anatomy';\nimport { ListCollection } from '@zag-js/collection';\nimport { raf, setCaretToEnd, nextTick, scrollIntoView, observeAttributes, clickIfLink, query, dataAttr, ariaAttr, isDownloadingEvent, isOpeningInNewTab, isContextMenuEvent, isLeftClick, getEventKey, isComposingEvent, isAnchorElement } from '@zag-js/dom-query';\nimport { getPlacement, getPlacementStyles } from '@zag-js/popper';\nimport { match, remove, addOrRemove, isBoolean, isEqual, createSplitProps, ensure } from '@zag-js/utils';\nimport { ariaHidden } from '@zag-js/aria-hidden';\nimport { setup } from '@zag-js/core';\nimport { trackDismissableElement } from '@zag-js/dismissable';\nimport { createProps } from '@zag-js/types';\n\n// src/combobox.anatomy.ts\nvar anatomy = createAnatomy(\"combobox\").parts(\n \"root\",\n \"clearTrigger\",\n \"content\",\n \"control\",\n \"input\",\n \"item\",\n \"itemGroup\",\n \"itemGroupLabel\",\n \"itemIndicator\",\n \"itemText\",\n \"label\",\n \"list\",\n \"positioner\",\n \"trigger\"\n);\nvar parts = anatomy.build();\nvar collection = (options) => {\n return new ListCollection(options);\n};\ncollection.empty = () => {\n return new ListCollection({ items: [] });\n};\nvar getRootId = (ctx) => ctx.ids?.root ?? `combobox:${ctx.id}`;\nvar getLabelId = (ctx) => ctx.ids?.label ?? `combobox:${ctx.id}:label`;\nvar getControlId = (ctx) => ctx.ids?.control ?? `combobox:${ctx.id}:control`;\nvar getInputId = (ctx) => ctx.ids?.input ?? `combobox:${ctx.id}:input`;\nvar getContentId = (ctx) => ctx.ids?.content ?? `combobox:${ctx.id}:content`;\nvar getPositionerId = (ctx) => ctx.ids?.positioner ?? `combobox:${ctx.id}:popper`;\nvar getTriggerId = (ctx) => ctx.ids?.trigger ?? `combobox:${ctx.id}:toggle-btn`;\nvar getClearTriggerId = (ctx) => ctx.ids?.clearTrigger ?? `combobox:${ctx.id}:clear-btn`;\nvar getItemGroupId = (ctx, id) => ctx.ids?.itemGroup?.(id) ?? `combobox:${ctx.id}:optgroup:${id}`;\nvar getItemGroupLabelId = (ctx, id) => ctx.ids?.itemGroupLabel?.(id) ?? `combobox:${ctx.id}:optgroup-label:${id}`;\nvar getItemId = (ctx, id) => ctx.ids?.item?.(id) ?? `combobox:${ctx.id}:option:${id}`;\nvar getContentEl = (ctx) => ctx.getById(getContentId(ctx));\nvar getInputEl = (ctx) => ctx.getById(getInputId(ctx));\nvar getPositionerEl = (ctx) => ctx.getById(getPositionerId(ctx));\nvar getControlEl = (ctx) => ctx.getById(getControlId(ctx));\nvar getTriggerEl = (ctx) => ctx.getById(getTriggerId(ctx));\nvar getClearTriggerEl = (ctx) => ctx.getById(getClearTriggerId(ctx));\nvar getItemEl = (ctx, value) => {\n if (value == null) return;\n const selector = `[role=option][data-value=\"${CSS.escape(value)}\"]`;\n return query(getContentEl(ctx), selector);\n};\nvar focusInputEl = (ctx) => {\n const inputEl = getInputEl(ctx);\n if (ctx.isActiveElement(inputEl)) return;\n inputEl?.focus({ preventScroll: true });\n};\nvar focusTriggerEl = (ctx) => {\n const triggerEl = getTriggerEl(ctx);\n if (ctx.isActiveElement(triggerEl)) return;\n triggerEl?.focus({ preventScroll: true });\n};\n\n// src/combobox.connect.ts\nfunction connect(service, normalize) {\n const { context, prop, state, send, scope, computed, event } = service;\n const translations = prop(\"translations\");\n const collection2 = prop(\"collection\");\n const disabled = prop(\"disabled\");\n const interactive = computed(\"isInteractive\");\n const invalid = prop(\"invalid\");\n const readOnly = prop(\"readOnly\");\n const open = state.hasTag(\"open\");\n const focused = state.hasTag(\"focused\");\n const composite = prop(\"composite\");\n const highlightedValue = context.get(\"highlightedValue\");\n const popperStyles = getPlacementStyles({\n ...prop(\"positioning\"),\n placement: context.get(\"currentPlacement\")\n });\n function getItemState(props2) {\n const disabled2 = collection2.getItemDisabled(props2.item);\n const value = collection2.getItemValue(props2.item);\n ensure(value, () => `[zag-js] No value found for item ${JSON.stringify(props2.item)}`);\n return {\n value,\n disabled: Boolean(disabled2 || disabled2),\n highlighted: highlightedValue === value,\n selected: context.get(\"value\").includes(value)\n };\n }\n return {\n focused,\n open,\n inputValue: context.get(\"inputValue\"),\n highlightedValue,\n highlightedItem: context.get(\"highlightedItem\"),\n value: context.get(\"value\"),\n valueAsString: computed(\"valueAsString\"),\n hasSelectedItems: computed(\"hasSelectedItems\"),\n selectedItems: context.get(\"selectedItems\"),\n collection: prop(\"collection\"),\n multiple: !!prop(\"multiple\"),\n disabled: !!disabled,\n syncSelectedItems() {\n send({ type: \"SELECTED_ITEMS.SYNC\" });\n },\n reposition(options = {}) {\n send({ type: \"POSITIONING.SET\", options });\n },\n setHighlightValue(value) {\n send({ type: \"HIGHLIGHTED_VALUE.SET\", value });\n },\n clearHighlightValue() {\n send({ type: \"HIGHLIGHTED_VALUE.CLEAR\" });\n },\n selectValue(value) {\n send({ type: \"ITEM.SELECT\", value });\n },\n setValue(value) {\n send({ type: \"VALUE.SET\", value });\n },\n setInputValue(value, reason = \"script\") {\n send({ type: \"INPUT_VALUE.SET\", value, src: reason });\n },\n clearValue(value) {\n if (value != null) {\n send({ type: \"ITEM.CLEAR\", value });\n } else {\n send({ type: \"VALUE.CLEAR\" });\n }\n },\n focus() {\n getInputEl(scope)?.focus();\n },\n setOpen(nextOpen, reason = \"script\") {\n const open2 = state.hasTag(\"open\");\n if (open2 === nextOpen) return;\n send({ type: nextOpen ? \"OPEN\" : \"CLOSE\", src: reason });\n },\n getRootProps() {\n return normalize.element({\n ...parts.root.attrs,\n dir: prop(\"dir\"),\n id: getRootId(scope),\n \"data-invalid\": dataAttr(invalid),\n \"data-readonly\": dataAttr(readOnly)\n });\n },\n getLabelProps() {\n return normalize.label({\n ...parts.label.attrs,\n dir: prop(\"dir\"),\n htmlFor: getInputId(scope),\n id: getLabelId(scope),\n \"data-readonly\": dataAttr(readOnly),\n \"data-disabled\": dataAttr(disabled),\n \"data-invalid\": dataAttr(invalid),\n \"data-focus\": dataAttr(focused),\n onClick(event2) {\n if (composite) return;\n event2.preventDefault();\n getTriggerEl(scope)?.focus({ preventScroll: true });\n }\n });\n },\n getControlProps() {\n return normalize.element({\n ...parts.control.attrs,\n dir: prop(\"dir\"),\n id: getControlId(scope),\n \"data-state\": open ? \"open\" : \"closed\",\n \"data-focus\": dataAttr(focused),\n \"data-disabled\": dataAttr(disabled),\n \"data-invalid\": dataAttr(invalid)\n });\n },\n getPositionerProps() {\n return normalize.element({\n ...parts.positioner.attrs,\n dir: prop(\"dir\"),\n id: getPositionerId(scope),\n style: popperStyles.floating\n });\n },\n getInputProps() {\n return normalize.input({\n ...parts.input.attrs,\n dir: prop(\"dir\"),\n \"aria-invalid\": ariaAttr(invalid),\n \"data-invalid\": dataAttr(invalid),\n \"data-autofocus\": dataAttr(prop(\"autoFocus\")),\n name: prop(\"name\"),\n form: prop(\"form\"),\n disabled,\n required: prop(\"required\"),\n autoComplete: \"off\",\n autoCorrect: \"off\",\n autoCapitalize: \"none\",\n spellCheck: \"false\",\n readOnly,\n placeholder: prop(\"placeholder\"),\n id: getInputId(scope),\n type: \"text\",\n role: \"combobox\",\n defaultValue: context.get(\"inputValue\"),\n \"aria-autocomplete\": computed(\"autoComplete\") ? \"both\" : \"list\",\n \"aria-controls\": getContentId(scope),\n \"aria-expanded\": open,\n \"data-state\": open ? \"open\" : \"closed\",\n \"aria-activedescendant\": highlightedValue ? getItemId(scope, highlightedValue) : void 0,\n onClick(event2) {\n if (event2.defaultPrevented) return;\n if (!prop(\"openOnClick\")) return;\n if (!interactive) return;\n send({ type: \"INPUT.CLICK\", src: \"input-click\" });\n },\n onFocus() {\n if (disabled) return;\n send({ type: \"INPUT.FOCUS\" });\n },\n onBlur() {\n if (disabled) return;\n send({ type: \"INPUT.BLUR\" });\n },\n onChange(event2) {\n send({ type: \"INPUT.CHANGE\", value: event2.currentTarget.value, src: \"input-change\" });\n },\n onKeyDown(event2) {\n if (event2.defaultPrevented) return;\n if (!interactive) return;\n if (event2.ctrlKey || event2.shiftKey || isComposingEvent(event2)) return;\n const openOnKeyPress = prop(\"openOnKeyPress\");\n const isModifierKey = event2.ctrlKey || event2.metaKey || event2.shiftKey;\n const keypress = true;\n const keymap = {\n ArrowDown(event3) {\n if (!openOnKeyPress && !open) return;\n send({ type: event3.altKey ? \"OPEN\" : \"INPUT.ARROW_DOWN\", keypress, src: \"arrow-key\" });\n event3.preventDefault();\n },\n ArrowUp() {\n if (!openOnKeyPress && !open) return;\n send({ type: event2.altKey ? \"CLOSE\" : \"INPUT.ARROW_UP\", keypress, src: \"arrow-key\" });\n event2.preventDefault();\n },\n Home(event3) {\n if (isModifierKey) return;\n send({ type: \"INPUT.HOME\", keypress });\n if (open) {\n event3.preventDefault();\n }\n },\n End(event3) {\n if (isModifierKey) return;\n send({ type: \"INPUT.END\", keypress });\n if (open) {\n event3.preventDefault();\n }\n },\n Enter(event3) {\n send({ type: \"INPUT.ENTER\", keypress, src: \"item-select\" });\n const submittable = computed(\"isCustomValue\") && prop(\"allowCustomValue\");\n if (open && !submittable) {\n event3.preventDefault();\n }\n if (highlightedValue == null) return;\n const itemEl = getItemEl(scope, highlightedValue);\n if (isAnchorElement(itemEl)) {\n prop(\"navigate\")?.({ value: highlightedValue, node: itemEl, href: itemEl.href });\n }\n },\n Escape() {\n send({ type: \"INPUT.ESCAPE\", keypress, src: \"escape-key\" });\n event2.preventDefault();\n }\n };\n const key = getEventKey(event2, { dir: prop(\"dir\") });\n const exec = keymap[key];\n exec?.(event2);\n }\n });\n },\n getTriggerProps(props2 = {}) {\n return normalize.button({\n ...parts.trigger.attrs,\n dir: prop(\"dir\"),\n id: getTriggerId(scope),\n \"aria-haspopup\": composite ? \"listbox\" : \"dialog\",\n type: \"button\",\n tabIndex: props2.focusable ? void 0 : -1,\n \"aria-label\": translations.triggerLabel,\n \"aria-expanded\": open,\n \"data-state\": open ? \"open\" : \"closed\",\n \"aria-controls\": open ? getContentId(scope) : void 0,\n disabled,\n \"data-invalid\": dataAttr(invalid),\n \"data-focusable\": dataAttr(props2.focusable),\n \"data-readonly\": dataAttr(readOnly),\n \"data-disabled\": dataAttr(disabled),\n onFocus() {\n if (!props2.focusable) return;\n send({ type: \"INPUT.FOCUS\", src: \"trigger\" });\n },\n onClick(event2) {\n if (event2.defaultPrevented) return;\n if (!interactive) return;\n if (!isLeftClick(event2)) return;\n send({ type: \"TRIGGER.CLICK\", src: \"trigger-click\" });\n },\n onPointerDown(event2) {\n if (!interactive) return;\n if (event2.pointerType === \"touch\") return;\n if (!isLeftClick(event2)) return;\n event2.preventDefault();\n queueMicrotask(() => {\n getInputEl(scope)?.focus({ preventScroll: true });\n });\n },\n onKeyDown(event2) {\n if (event2.defaultPrevented) return;\n if (composite) return;\n const keyMap = {\n ArrowDown() {\n send({ type: \"INPUT.ARROW_DOWN\", src: \"arrow-key\" });\n },\n ArrowUp() {\n send({ type: \"INPUT.ARROW_UP\", src: \"arrow-key\" });\n }\n };\n const key = getEventKey(event2, { dir: prop(\"dir\") });\n const exec = keyMap[key];\n if (exec) {\n exec(event2);\n event2.preventDefault();\n }\n }\n });\n },\n getContentProps() {\n return normalize.element({\n ...parts.content.attrs,\n dir: prop(\"dir\"),\n id: getContentId(scope),\n role: !composite ? \"dialog\" : \"listbox\",\n tabIndex: -1,\n hidden: !open,\n \"data-state\": open ? \"open\" : \"closed\",\n \"data-placement\": context.get(\"currentPlacement\"),\n \"aria-labelledby\": getLabelId(scope),\n \"aria-multiselectable\": prop(\"multiple\") && composite ? true : void 0,\n \"data-empty\": dataAttr(collection2.size === 0),\n onPointerDown(event2) {\n if (!isLeftClick(event2)) return;\n event2.preventDefault();\n }\n });\n },\n getListProps() {\n return normalize.element({\n ...parts.list.attrs,\n role: !composite ? \"listbox\" : void 0,\n \"data-empty\": dataAttr(collection2.size === 0),\n \"aria-labelledby\": getLabelId(scope),\n \"aria-multiselectable\": prop(\"multiple\") && !composite ? true : void 0\n });\n },\n getClearTriggerProps() {\n return normalize.button({\n ...parts.clearTrigger.attrs,\n dir: prop(\"dir\"),\n id: getClearTriggerId(scope),\n type: \"button\",\n tabIndex: -1,\n disabled,\n \"data-invalid\": dataAttr(invalid),\n \"aria-label\": translations.clearTriggerLabel,\n \"aria-controls\": getInputId(scope),\n hidden: !context.get(\"value\").length,\n onPointerDown(event2) {\n if (!isLeftClick(event2)) return;\n event2.preventDefault();\n },\n onClick(event2) {\n if (event2.defaultPrevented) return;\n if (!interactive) return;\n send({ type: \"VALUE.CLEAR\", src: \"clear-trigger\" });\n }\n });\n },\n getItemState,\n getItemProps(props2) {\n const itemState = getItemState(props2);\n const value = itemState.value;\n return normalize.element({\n ...parts.item.attrs,\n dir: prop(\"dir\"),\n id: getItemId(scope, value),\n role: \"option\",\n tabIndex: -1,\n \"data-highlighted\": dataAttr(itemState.highlighted),\n \"data-state\": itemState.selected ? \"checked\" : \"unchecked\",\n \"aria-selected\": ariaAttr(itemState.highlighted),\n \"aria-disabled\": ariaAttr(itemState.disabled),\n \"data-disabled\": dataAttr(itemState.disabled),\n \"data-value\": itemState.value,\n onPointerMove() {\n if (itemState.disabled) return;\n if (itemState.highlighted) return;\n send({ type: \"ITEM.POINTER_MOVE\", value });\n },\n onPointerLeave() {\n if (props2.persistFocus) return;\n if (itemState.disabled) return;\n const prev = event.previous();\n const mouseMoved = prev?.type.includes(\"POINTER\");\n if (!mouseMoved) return;\n send({ type: \"ITEM.POINTER_LEAVE\", value });\n },\n onClick(event2) {\n if (isDownloadingEvent(event2)) return;\n if (isOpeningInNewTab(event2)) return;\n if (isContextMenuEvent(event2)) return;\n if (itemState.disabled) return;\n send({ type: \"ITEM.CLICK\", src: \"item-select\", value });\n }\n });\n },\n getItemTextProps(props2) {\n const itemState = getItemState(props2);\n return normalize.element({\n ...parts.itemText.attrs,\n dir: prop(\"dir\"),\n \"data-state\": itemState.selected ? \"checked\" : \"unchecked\",\n \"data-disabled\": dataAttr(itemState.disabled),\n \"data-highlighted\": dataAttr(itemState.highlighted)\n });\n },\n getItemIndicatorProps(props2) {\n const itemState = getItemState(props2);\n return normalize.element({\n \"aria-hidden\": true,\n ...parts.itemIndicator.attrs,\n dir: prop(\"dir\"),\n \"data-state\": itemState.selected ? \"checked\" : \"unchecked\",\n hidden: !itemState.selected\n });\n },\n getItemGroupProps(props2) {\n const { id } = props2;\n return normalize.element({\n ...parts.itemGroup.attrs,\n dir: prop(\"dir\"),\n id: getItemGroupId(scope, id),\n \"aria-labelledby\": getItemGroupLabelId(scope, id),\n \"data-empty\": dataAttr(collection2.size === 0),\n role: \"group\"\n });\n },\n getItemGroupLabelProps(props2) {\n const { htmlFor } = props2;\n return normalize.element({\n ...parts.itemGroupLabel.attrs,\n dir: prop(\"dir\"),\n id: getItemGroupLabelId(scope, htmlFor),\n role: \"presentation\"\n });\n }\n };\n}\nvar { guards, createMachine, choose } = setup();\nvar { and, not } = guards;\nvar machine = createMachine({\n props({ props: props2 }) {\n return {\n loopFocus: true,\n openOnClick: false,\n defaultValue: [],\n closeOnSelect: !props2.multiple,\n allowCustomValue: false,\n inputBehavior: \"none\",\n selectionBehavior: props2.multiple ? \"clear\" : \"replace\",\n openOnKeyPress: true,\n openOnChange: true,\n composite: true,\n navigate({ node }) {\n clickIfLink(node);\n },\n collection: collection.empty(),\n ...props2,\n positioning: {\n placement: \"bottom\",\n sameWidth: true,\n ...props2.positioning\n },\n translations: {\n triggerLabel: \"Toggle suggestions\",\n clearTriggerLabel: \"Clear value\",\n ...props2.translations\n }\n };\n },\n initialState({ prop }) {\n const open = prop(\"open\") || prop(\"defaultOpen\");\n return open ? \"suggesting\" : \"idle\";\n },\n context({ prop, bindable, getContext, getEvent }) {\n return {\n currentPlacement: bindable(() => ({\n defaultValue: void 0\n })),\n value: bindable(() => ({\n defaultValue: prop(\"defaultValue\"),\n value: prop(\"value\"),\n isEqual,\n hash(value) {\n return value.join(\",\");\n },\n onChange(value) {\n const context = getContext();\n const prevSelectedItems = context.get(\"selectedItems\");\n const collection2 = prop(\"collection\");\n const nextItems = value.map((v) => {\n const item = prevSelectedItems.find((item2) => collection2.getItemValue(item2) === v);\n return item || collection2.find(v);\n });\n context.set(\"selectedItems\", nextItems);\n prop(\"onValueChange\")?.({ value, items: nextItems });\n }\n })),\n highlightedValue: bindable(() => ({\n defaultValue: prop(\"defaultHighlightedValue\") || null,\n value: prop(\"highlightedValue\"),\n onChange(value) {\n const item = prop(\"collection\").find(value);\n prop(\"onHighlightChange\")?.({ highlightedValue: value, highlightedItem: item });\n }\n })),\n inputValue: bindable(() => {\n let inputValue = prop(\"inputValue\") || prop(\"defaultInputValue\") || \"\";\n const value = prop(\"defaultValue\") || prop(\"value\") || [];\n if (!inputValue.trim() && !prop(\"multiple\")) {\n const valueAsString = prop(\"collection\").stringifyMany(value);\n inputValue = match(prop(\"selectionBehavior\"), {\n preserve: inputValue || valueAsString,\n replace: valueAsString,\n clear: \"\"\n });\n }\n return {\n defaultValue: inputValue,\n value: prop(\"inputValue\"),\n onChange(value2) {\n const event = getEvent();\n const reason = (event.previousEvent || event).src;\n prop(\"onInputValueChange\")?.({ inputValue: value2, reason });\n }\n };\n }),\n highlightedItem: bindable(() => {\n const highlightedValue = prop(\"highlightedValue\");\n const highlightedItem = prop(\"collection\").find(highlightedValue);\n return { defaultValue: highlightedItem };\n }),\n selectedItems: bindable(() => {\n const value = prop(\"value\") || prop(\"defaultValue\") || [];\n const selectedItems = prop(\"collection\").findMany(value);\n return { defaultValue: selectedItems };\n })\n };\n },\n computed: {\n isInputValueEmpty: ({ context }) => context.get(\"inputValue\").length === 0,\n isInteractive: ({ prop }) => !(prop(\"readOnly\") || prop(\"disabled\")),\n autoComplete: ({ prop }) => prop(\"inputBehavior\") === \"autocomplete\",\n autoHighlight: ({ prop }) => prop(\"inputBehavior\") === \"autohighlight\",\n hasSelectedItems: ({ context }) => context.get(\"value\").length > 0,\n valueAsString: ({ context, prop }) => prop(\"collection\").stringifyItems(context.get(\"selectedItems\")),\n isCustomValue: ({ context, computed }) => context.get(\"inputValue\") !== computed(\"valueAsString\")\n },\n watch({ context, prop, track, action, send }) {\n track([() => context.hash(\"value\")], () => {\n action([\"syncSelectedItems\"]);\n });\n track([() => context.get(\"inputValue\")], () => {\n action([\"syncInputValue\"]);\n });\n track([() => context.get(\"highlightedValue\")], () => {\n action([\"syncHighlightedItem\", \"autofillInputValue\"]);\n });\n track([() => prop(\"open\")], () => {\n action([\"toggleVisibility\"]);\n });\n track([() => prop(\"collection\").toString()], () => {\n send({ type: \"CHILDREN_CHANGE\" });\n });\n },\n on: {\n \"SELECTED_ITEMS.SYNC\": {\n actions: [\"syncSelectedItems\"]\n },\n \"HIGHLIGHTED_VALUE.SET\": {\n actions: [\"setHighlightedValue\"]\n },\n \"HIGHLIGHTED_VALUE.CLEAR\": {\n actions: [\"clearHighlightedValue\"]\n },\n \"ITEM.SELECT\": {\n actions: [\"selectItem\"]\n },\n \"ITEM.CLEAR\": {\n actions: [\"clearItem\"]\n },\n \"VALUE.SET\": {\n actions: [\"setValue\"]\n },\n \"INPUT_VALUE.SET\": {\n actions: [\"setInputValue\"]\n },\n \"POSITIONING.SET\": {\n actions: [\"reposition\"]\n }\n },\n entry: choose([\n {\n guard: \"autoFocus\",\n actions: [\"setInitialFocus\"]\n }\n ]),\n states: {\n idle: {\n tags: [\"idle\", \"closed\"],\n entry: [\"scrollContentToTop\", \"clearHighlightedValue\"],\n on: {\n \"CONTROLLED.OPEN\": {\n target: \"interacting\"\n },\n \"TRIGGER.CLICK\": [\n {\n guard: \"isOpenControlled\",\n actions: [\"setInitialFocus\", \"highlightFirstSelectedItem\", \"invokeOnOpen\"]\n },\n {\n target: \"interacting\",\n actions: [\"setInitialFocus\", \"highlightFirstSelectedItem\", \"invokeOnOpen\"]\n }\n ],\n \"INPUT.CLICK\": [\n {\n guard: \"isOpenControlled\",\n actions: [\"highlightFirstSelectedItem\", \"invokeOnOpen\"]\n },\n {\n target: \"interacting\",\n actions: [\"highlightFirstSelectedItem\", \"invokeOnOpen\"]\n }\n ],\n \"INPUT.FOCUS\": {\n target: \"focused\"\n },\n OPEN: [\n {\n guard: \"isOpenControlled\",\n actions: [\"invokeOnOpen\"]\n },\n {\n target: \"interacting\",\n actions: [\"invokeOnOpen\"]\n }\n ],\n \"VALUE.CLEAR\": {\n target: \"focused\",\n actions: [\"clearInputValue\", \"clearSelectedItems\", \"setInitialFocus\"]\n }\n }\n },\n focused: {\n tags: [\"focused\", \"closed\"],\n entry: [\"scrollContentToTop\", \"clearHighlightedValue\"],\n on: {\n \"CONTROLLED.OPEN\": [\n {\n guard: \"isChangeEvent\",\n target: \"suggesting\"\n },\n {\n target: \"interacting\"\n }\n ],\n \"INPUT.CHANGE\": [\n {\n guard: and(\"isOpenControlled\", \"openOnChange\"),\n actions: [\"setInputValue\", \"invokeOnOpen\", \"highlightFirstItemIfNeeded\"]\n },\n {\n guard: \"openOnChange\",\n target: \"suggesting\",\n actions: [\"setInputValue\", \"invokeOnOpen\", \"highlightFirstItemIfNeeded\"]\n },\n {\n actions: [\"setInputValue\"]\n }\n ],\n \"LAYER.INTERACT_OUTSIDE\": {\n target: \"idle\"\n },\n \"INPUT.ESCAPE\": {\n guard: and(\"isCustomValue\", not(\"allowCustomValue\")),\n actions: [\"revertInputValue\"]\n },\n \"INPUT.BLUR\": {\n target: \"idle\"\n },\n \"INPUT.CLICK\": [\n {\n guard: \"isOpenControlled\",\n actions: [\"highlightFirstSelectedItem\", \"invokeOnOpen\"]\n },\n {\n target: \"interacting\",\n actions: [\"highlightFirstSelectedItem\", \"invokeOnOpen\"]\n }\n ],\n \"TRIGGER.CLICK\": [\n {\n guard: \"isOpenControlled\",\n actions: [\"setInitialFocus\", \"highlightFirstSelectedItem\", \"invokeOnOpen\"]\n },\n {\n target: \"interacting\",\n actions: [\"setInitialFocus\", \"highlightFirstSelectedItem\", \"invokeOnOpen\"]\n }\n ],\n \"INPUT.ARROW_DOWN\": [\n // == group 1 ==\n {\n guard: and(\"isOpenControlled\", \"autoComplete\"),\n actions: [\"invokeOnOpen\"]\n },\n {\n guard: \"autoComplete\",\n target: \"interacting\",\n actions: [\"invokeOnOpen\"]\n },\n // == group 2 ==\n {\n guard: \"isOpenControlled\",\n actions: [\"highlightFirstOrSelectedItem\", \"invokeOnOpen\"]\n },\n {\n target: \"interacting\",\n actions: [\"highlightFirstOrSelectedItem\", \"invokeOnOpen\"]\n }\n ],\n \"INPUT.ARROW_UP\": [\n // == group 1 ==\n {\n guard: \"autoComplete\",\n target: \"interacting\",\n actions: [\"invokeOnOpen\"]\n },\n {\n guard: \"autoComplete\",\n target: \"interacting\",\n actions: [\"invokeOnOpen\"]\n },\n // == group 2 ==\n {\n target: \"interacting\",\n actions: [\"highlightLastOrSelectedItem\", \"invokeOnOpen\"]\n },\n {\n target: \"interacting\",\n actions: [\"highlightLastOrSelectedItem\", \"invokeOnOpen\"]\n }\n ],\n OPEN: [\n {\n guard: \"isOpenControlled\",\n actions: [\"invokeOnOpen\"]\n },\n {\n target: \"interacting\",\n actions: [\"invokeOnOpen\"]\n }\n ],\n \"VALUE.CLEAR\": {\n actions: [\"clearInputValue\", \"clearSelectedItems\"]\n }\n }\n },\n interacting: {\n tags: [\"open\", \"focused\"],\n entry: [\"setInitialFocus\"],\n effects: [\"scrollToHighlightedItem\", \"trackDismissableLayer\", \"trackPlacement\", \"hideOtherElements\"],\n on: {\n \"CONTROLLED.CLOSE\": [\n {\n guard: \"restoreFocus\",\n target: \"focused\",\n actions: [\"setFinalFocus\"]\n },\n {\n target: \"idle\"\n }\n ],\n CHILDREN_CHANGE: [\n {\n guard: \"isHighlightedItemRemoved\",\n actions: [\"clearHighlightedValue\"]\n },\n {\n actions: [\"scrollToHighlightedItem\"]\n }\n ],\n \"INPUT.HOME\": {\n actions: [\"highlightFirstItem\"]\n },\n \"INPUT.END\": {\n actions: [\"highlightLastItem\"]\n },\n \"INPUT.ARROW_DOWN\": [\n {\n guard: and(\"autoComplete\", \"isLastItemHighlighted\"),\n actions: [\"clearHighlightedValue\", \"scrollContentToTop\"]\n },\n {\n actions: [\"highlightNextItem\"]\n }\n ],\n \"INPUT.ARROW_UP\": [\n {\n guard: and(\"autoComplete\", \"isFirstItemHighlighted\"),\n actions: [\"clearHighlightedValue\"]\n },\n {\n actions: [\"highlightPrevItem\"]\n }\n ],\n \"INPUT.ENTER\": [\n // == group 1 ==\n {\n guard: and(\"isOpenControlled\", \"isCustomValue\", not(\"hasHighlightedItem\"), not(\"allowCustomValue\")),\n actions: [\"revertInputValue\", \"invokeOnClose\"]\n },\n {\n guard: and(\"isCustomValue\", not(\"hasHighlightedItem\"), not(\"allowCustomValue\")),\n target: \"focused\",\n actions: [\"revertInputValue\", \"invokeOnClose\"]\n },\n // == group 2 ==\n {\n guard: and(\"isOpenControlled\", \"closeOnSelect\"),\n actions: [\"selectHighlightedItem\", \"invokeOnClose\"]\n },\n {\n guard: \"closeOnSelect\",\n target: \"focused\",\n actions: [\"selectHighlightedItem\", \"invokeOnClose\", \"setFinalFocus\"]\n },\n {\n actions: [\"selectHighlightedItem\"]\n }\n ],\n \"INPUT.CHANGE\": [\n {\n guard: \"autoComplete\",\n target: \"suggesting\",\n actions: [\"setInputValue\"]\n },\n {\n target: \"suggesting\",\n actions: [\"clearHighlightedValue\", \"setInputValue\"]\n }\n ],\n \"ITEM.POINTER_MOVE\": {\n actions: [\"setHighlightedValue\"]\n },\n \"ITEM.POINTER_LEAVE\": {\n actions: [\"clearHighlightedValue\"]\n },\n \"ITEM.CLICK\": [\n {\n guard: and(\"isOpenControlled\", \"closeOnSelect\"),\n actions: [\"selectItem\", \"invokeOnClose\"]\n },\n {\n guard: \"closeOnSelect\",\n target: \"focused\",\n actions: [\"selectItem\", \"invokeOnClose\", \"setFinalFocus\"]\n },\n {\n actions: [\"selectItem\"]\n }\n ],\n \"LAYER.ESCAPE\": [\n {\n guard: and(\"isOpenControlled\", \"autoComplete\"),\n actions: [\"syncInputValue\", \"invokeOnClose\"]\n },\n {\n guard: \"autoComplete\",\n target: \"focused\",\n actions: [\"syncInputValue\", \"invokeOnClose\"]\n },\n {\n guard: \"isOpenControlled\",\n actions: [\"invokeOnClose\"]\n },\n {\n target: \"focused\",\n actions: [\"invokeOnClose\", \"setFinalFocus\"]\n }\n ],\n \"TRIGGER.CLICK\": [\n {\n guard: \"isOpenControlled\",\n actions: [\"invokeOnClose\"]\n },\n {\n target: \"focused\",\n actions: [\"invokeOnClose\"]\n }\n ],\n \"LAYER.INTERACT_OUTSIDE\": [\n // == group 1 ==\n {\n guard: and(\"isOpenControlled\", \"isCustomValue\", not(\"allowCustomValue\")),\n actions: [\"revertInputValue\", \"invokeOnClose\"]\n },\n {\n guard: and(\"isCustomValue\", not(\"allowCustomValue\")),\n target: \"idle\",\n actions: [\"revertInputValue\", \"invokeOnClose\"]\n },\n // == group 2 ==\n {\n guard: \"isOpenControlled\",\n actions: [\"invokeOnClose\"]\n },\n {\n target: \"idle\",\n actions: [\"invokeOnClose\"]\n }\n ],\n CLOSE: [\n {\n guard: \"isOpenControlled\",\n actions: [\"invokeOnClose\"]\n },\n {\n target: \"focused\",\n actions: [\"invokeOnClose\", \"setFinalFocus\"]\n }\n ],\n \"VALUE.CLEAR\": [\n {\n guard: \"isOpenControlled\",\n actions: [\"clearInputValue\", \"clearSelectedItems\", \"invokeOnClose\"]\n },\n {\n target: \"focused\",\n actions: [\"clearInputValue\", \"clearSelectedItems\", \"invokeOnClose\", \"setFinalFocus\"]\n }\n ]\n }\n },\n suggesting: {\n tags: [\"open\", \"focused\"],\n effects: [\"trackDismissableLayer\", \"scrollToHighlightedItem\", \"trackPlacement\", \"hideOtherElements\"],\n entry: [\"setInitialFocus\"],\n on: {\n \"CONTROLLED.CLOSE\": [\n {\n guard: \"restoreFocus\",\n target: \"focused\",\n actions: [\"setFinalFocus\"]\n },\n {\n target: \"idle\"\n }\n ],\n CHILDREN_CHANGE: [\n {\n guard: \"autoHighlight\",\n actions: [\"highlightFirstItem\"]\n },\n {\n guard: \"isHighlightedItemRemoved\",\n actions: [\"clearHighlightedValue\"]\n }\n ],\n \"INPUT.ARROW_DOWN\": {\n target: \"interacting\",\n actions: [\"highlightNextItem\"]\n },\n \"INPUT.ARROW_UP\": {\n target: \"interacting\",\n actions: [\"highlightPrevItem\"]\n },\n \"INPUT.HOME\": {\n target: \"interacting\",\n actions: [\"highlightFirstItem\"]\n },\n \"INPUT.END\": {\n target: \"interacting\",\n actions: [\"highlightLastItem\"]\n },\n \"INPUT.ENTER\": [\n // == group 1 ==\n {\n guard: and(\"isOpenControlled\", \"isCustomValue\", not(\"hasHighlightedItem\"), not(\"allowCustomValue\")),\n actions: [\"revertInputValue\", \"invokeOnClose\"]\n },\n {\n guard: and(\"isCustomValue\", not(\"hasHighlightedItem\"), not(\"allowCustomValue\")),\n target: \"focused\",\n actions: [\"revertInputValue\", \"invokeOnClose\"]\n },\n // == group 2 ==\n {\n guard: and(\"isOpenControlled\", \"closeOnSelect\"),\n actions: [\"selectHighlightedItem\", \"invokeOnClose\"]\n },\n {\n guard: \"closeOnSelect\",\n target: \"focused\",\n actions: [\"selectHighlightedItem\", \"invokeOnClose\", \"setFinalFocus\"]\n },\n {\n actions: [\"selectHighlightedItem\"]\n }\n ],\n \"INPUT.CHANGE\": {\n actions: [\"setInputValue\"]\n },\n \"LAYER.ESCAPE\": [\n {\n guard: \"isOpenControlled\",\n actions: [\"invokeOnClose\"]\n },\n {\n target: \"focused\",\n actions: [\"invokeOnClose\"]\n }\n ],\n \"ITEM.POINTER_MOVE\": {\n target: \"interacting\",\n actions: [\"setHighlightedValue\"]\n },\n \"ITEM.POINTER_LEAVE\": {\n actions: [\"clearHighlightedValue\"]\n },\n \"LAYER.INTERACT_OUTSIDE\": [\n // == group 1 ==\n {\n guard: and(\"isOpenControlled\", \"isCustomValue\", not(\"allowCustomValue\")),\n actions: [\"revertInputValue\", \"invokeOnClose\"]\n },\n {\n guard: and(\"isCustomValue\", not(\"allowCustomValue\")),\n target: \"idle\",\n actions: [\"revertInputValue\", \"invokeOnClose\"]\n },\n // == group 2 ==\n {\n guard: \"isOpenControlled\",\n actions: [\"invokeOnClose\"]\n },\n {\n target: \"idle\",\n actions: [\"invokeOnClose\"]\n }\n ],\n \"TRIGGER.CLICK\": [\n {\n guard: \"isOpenControlled\",\n actions: [\"invokeOnClose\"]\n },\n {\n target: \"focused\",\n actions: [\"invokeOnClose\"]\n }\n ],\n \"ITEM.CLICK\": [\n {\n guard: and(\"isOpenControlled\", \"closeOnSelect\"),\n actions: [\"selectItem\", \"invokeOnClose\"]\n },\n {\n guard: \"closeOnSelect\",\n target: \"focused\",\n actions: [\"selectItem\", \"invokeOnClose\", \"setFinalFocus\"]\n },\n {\n actions: [\"selectItem\"]\n }\n ],\n CLOSE: [\n {\n guard: \"isOpenControlled\",\n actions: [\"invokeOnClose\"]\n },\n {\n target: \"focused\",\n actions: [\"invokeOnClose\", \"setFinalFocus\"]\n }\n ],\n \"VALUE.CLEAR\": [\n {\n guard: \"isOpenControlled\",\n actions: [\"clearInputValue\", \"clearSelectedItems\", \"invokeOnClose\"]\n },\n {\n target: \"focused\",\n actions: [\"clearInputValue\", \"clearSelectedItems\", \"invokeOnClose\", \"setFinalFocus\"]\n }\n ]\n }\n }\n },\n implementations: {\n guards: {\n isInputValueEmpty: ({ computed }) => computed(\"isInputValueEmpty\"),\n autoComplete: ({ computed, prop }) => computed(\"autoComplete\") && !prop(\"multiple\"),\n autoHighlight: ({ computed }) => computed(\"autoHighlight\"),\n isFirstItemHighlighted: ({ prop, context }) => prop(\"collection\").firstValue === context.get(\"highlightedValue\"),\n isLastItemHighlighted: ({ prop, context }) => prop(\"collection\").lastValue === context.get(\"highlightedValue\"),\n isCustomValue: ({ computed }) => computed(\"isCustomValue\"),\n allowCustomValue: ({ prop }) => !!prop(\"allowCustomValue\"),\n hasHighlightedItem: ({ context }) => context.get(\"highlightedValue\") != null,\n closeOnSelect: ({ prop }) => !!prop(\"closeOnSelect\"),\n isOpenControlled: ({ prop }) => prop(\"open\") != null,\n openOnChange: ({ prop, context }) => {\n const openOnChange = prop(\"openOnChange\");\n if (isBoolean(openOnChange)) return openOnChange;\n return !!openOnChange?.({ inputValue: context.get(\"inputValue\") });\n },\n restoreFocus: ({ event }) => event.restoreFocus == null ? true : !!event.restoreFocus,\n isChangeEvent: ({ event }) => event.previousEvent?.type === \"INPUT.CHANGE\",\n autoFocus: ({ prop }) => !!prop(\"autoFocus\"),\n isHighlightedItemRemoved: ({ prop, context }) => !prop(\"collection\").has(context.get(\"highlightedValue\"))\n },\n effects: {\n trackDismissableLayer({ send, prop, scope }) {\n if (prop(\"disableLayer\")) return;\n const contentEl = () => getContentEl(scope);\n return trackDismissableElement(contentEl, {\n defer: true,\n exclude: () => [getInputEl(scope), getTriggerEl(scope), getClearTriggerEl(scope)],\n onFocusOutside: prop(\"onFocusOutside\"),\n onPointerDownOutside: prop(\"onPointerDownOutside\"),\n onInteractOutside: prop(\"onInteractOutside\"),\n onEscapeKeyDown(event) {\n event.preventDefault();\n event.stopPropagation();\n send({ type: \"LAYER.ESCAPE\", src: \"escape-key\" });\n },\n onDismiss() {\n send({ type: \"LAYER.INTERACT_OUTSIDE\", src: \"interact-outside\", restoreFocus: false });\n }\n });\n },\n hideOtherElements({ scope }) {\n return ariaHidden([\n getInputEl(scope),\n getContentEl(scope),\n getTriggerEl(scope),\n getClearTriggerEl(scope)\n ]);\n },\n trackPlacement({ context, prop, scope }) {\n const anchorEl = () => getControlEl(scope) || getTriggerEl(scope);\n const positionerEl = () => getPositionerEl(scope);\n context.set(\"currentPlacement\", prop(\"positioning\").placement);\n return getPlacement(anchorEl, positionerEl, {\n ...prop(\"positioning\"),\n defer: true,\n onComplete(data) {\n context.set(\"currentPlacement\", data.placement);\n }\n });\n },\n scrollToHighlightedItem({ context, prop, scope, event }) {\n const inputEl = getInputEl(scope);\n let cleanups = [];\n const exec = (immediate) => {\n const pointer = event.current().type.includes(\"POINTER\");\n const highlightedValue = context.get(\"highlightedValue\");\n if (pointer || !highlightedValue) return;\n const itemEl = getItemEl(scope, highlightedValue);\n const contentEl = getContentEl(scope);\n const scrollToIndexFn = prop(\"scrollToIndexFn\");\n if (scrollToIndexFn) {\n const highlightedIndex = prop(\"collection\").indexOf(highlightedValue);\n scrollToIndexFn({ index: highlightedIndex, immediate });\n return;\n }\n const raf_cleanup = raf(() => {\n scrollIntoView(itemEl, { rootEl: contentEl, block: \"nearest\" });\n });\n cleanups.push(raf_cleanup);\n };\n const rafCleanup = raf(() => exec(true));\n cleanups.push(rafCleanup);\n const observerCleanup = observeAttributes(inputEl, {\n attributes: [\"aria-activedescendant\"],\n callback: () => exec(false)\n });\n cleanups.push(observerCleanup);\n return () => {\n cleanups.forEach((cleanup) => cleanup());\n };\n }\n },\n actions: {\n reposition({ context, prop, scope, event }) {\n const controlEl = () => getControlEl(scope);\n const positionerEl = () => getPositionerEl(scope);\n getPlacement(controlEl, positionerEl, {\n ...prop(\"positioning\"),\n ...event.options,\n defer: true,\n listeners: false,\n onComplete(data) {\n context.set(\"currentPlacement\", data.placement);\n }\n });\n },\n setHighlightedValue({ context, event }) {\n if (event.value == null) return;\n context.set(\"highlightedValue\", event.value);\n },\n clearHighlightedValue({ context }) {\n context.set(\"highlightedValue\", null);\n },\n selectHighlightedItem(params) {\n const { context, prop } = params;\n const collection2 = prop(\"collection\");\n const highlightedValue = context.get(\"highlightedValue\");\n if (!highlightedValue || !collection2.has(highlightedValue)) return;\n const nextValue = prop(\"multiple\") ? addOrRemove(context.get(\"value\"), highlightedValue) : [highlightedValue];\n prop(\"onSelect\")?.({ value: nextValue, itemValue: highlightedValue });\n context.set(\"value\", nextValue);\n const inputValue = match(prop(\"selectionBehavior\"), {\n preserve: context.get(\"inputValue\"),\n replace: collection2.stringifyMany(nextValue),\n clear: \"\"\n });\n context.set(\"inputValue\", inputValue);\n },\n scrollToHighlightedItem({ context, prop, scope }) {\n nextTick(() => {\n const highlightedValue = context.get(\"highlightedValue\");\n if (highlightedValue == null) return;\n const itemEl = getItemEl(scope, highlightedValue);\n const contentEl = getContentEl(scope);\n const scrollToIndexFn = prop(\"scrollToIndexFn\");\n if (scrollToIndexFn) {\n const highlightedIndex = prop(\"collection\").indexOf(highlightedValue);\n scrollToIndexFn({ index: highlightedIndex, immediate: true });\n return;\n }\n scrollIntoView(itemEl, { rootEl: contentEl, block: \"nearest\" });\n });\n },\n selectItem(params) {\n const { context, event, flush, prop } = params;\n if (event.value == null) return;\n flush(() => {\n const nextValue = prop(\"multiple\") ? addOrRemove(context.get(\"value\"), event.value) : [event.value];\n prop(\"onSelect\")?.({ value: nextValue, itemValue: event.value });\n context.set(\"value\", nextValue);\n const inputValue = match(prop(\"selectionBehavior\"), {\n preserve: context.get(\"inputValue\"),\n replace: prop(\"collection\").stringifyMany(nextValue),\n clear: \"\"\n });\n context.set(\"inputValue\", inputValue);\n });\n },\n clearItem(params) {\n const { context, event, flush, prop } = params;\n if (event.value == null) return;\n flush(() => {\n const nextValue = remove(context.get(\"value\"), event.value);\n context.set(\"value\", nextValue);\n const inputValue = match(prop(\"selectionBehavior\"), {\n preserve: context.get(\"inputValue\"),\n replace: prop(\"collection\").stringifyMany(nextValue),\n clear: \"\"\n });\n context.set(\"inputValue\", inputValue);\n });\n },\n setInitialFocus({ scope }) {\n raf(() => {\n focusInputEl(scope);\n });\n },\n setFinalFocus({ scope }) {\n raf(() => {\n const triggerEl = getTriggerEl(scope);\n if (triggerEl?.dataset.focusable == null) {\n focusInputEl(scope);\n } else {\n focusTriggerEl(scope);\n }\n });\n },\n syncInputValue({ context, scope, event }) {\n const inputEl = getInputEl(scope);\n if (!inputEl) return;\n inputEl.value = context.get(\"inputValue\");\n queueMicrotask(() => {\n if (event.current().type === \"INPUT.CHANGE\") return;\n setCaretToEnd(inputEl);\n });\n },\n setInputValue({ context, event }) {\n context.set(\"inputValue\", event.value);\n },\n clearInputValue({ context }) {\n context.set(\"inputValue\", \"\");\n },\n revertInputValue({ context, prop, computed }) {\n const selectionBehavior = prop(\"selectionBehavior\");\n const inputValue = match(selectionBehavior, {\n replace: computed(\"hasSelectedItems\") ? computed(\"valueAsString\") : \"\",\n preserve: context.get(\"inputValue\"),\n clear: \"\"\n });\n context.set(\"inputValue\", inputValue);\n },\n setValue(params) {\n const { context, flush, event, prop } = params;\n flush(() => {\n context.set(\"value\", event.value);\n const inputValue = match(prop(\"selectionBehavior\"), {\n preserve: context.get(\"inputValue\"),\n replace: prop(\"collection\").stringifyMany(event.value),\n clear: \"\"\n });\n context.set(\"inputValue\", inputValue);\n });\n },\n clearSelectedItems(params) {\n const { context, flush, prop } = params;\n flush(() => {\n context.set(\"value\", []);\n const inputValue = match(prop(\"selectionBehavior\"), {\n preserve: context.get(\"inputValue\"),\n replace: prop(\"collection\").stringifyMany([]),\n clear: \"\"\n });\n context.set(\"inputValue\", inputValue);\n });\n },\n scrollContentToTop({ prop, scope }) {\n const scrollToIndexFn = prop(\"scrollToIndexFn\");\n if (scrollToIndexFn) {\n scrollToIndexFn({ index: 0, immediate: true });\n } else {\n const contentEl = getContentEl(scope);\n if (!contentEl) return;\n contentEl.scrollTop = 0;\n }\n },\n invokeOnOpen({ prop, event }) {\n const reason = getOpenChangeReason(event);\n prop(\"onOpenChange\")?.({ open: true, reason });\n },\n invokeOnClose({ prop, event }) {\n const reason = getOpenChangeReason(event);\n prop(\"onOpenChange\")?.({ open: false, reason });\n },\n highlightFirstItem({ context, prop, scope }) {\n const exec = getContentEl(scope) ? queueMicrotask : raf;\n exec(() => {\n const value = prop(\"collection\").firstValue;\n if (value) context.set(\"highlightedValue\", value);\n });\n },\n highlightFirstItemIfNeeded({ computed, action }) {\n if (!computed(\"autoHighlight\")) return;\n action([\"highlightFirstItem\"]);\n },\n highlightLastItem({ context, prop, scope }) {\n const exec = getContentEl(scope) ? queueMicrotask : raf;\n exec(() => {\n const value = prop(\"collection\").lastValue;\n if (value) context.set(\"highlightedValue\", value);\n });\n },\n highlightNextItem({ context, prop }) {\n let value = null;\n const highlightedValue = context.get(\"highlightedValue\");\n const collection2 = prop(\"collection\");\n if (highlightedValue) {\n value = collection2.getNextValue(highlightedValue);\n if (!value && prop(\"loopFocus\")) value = collection2.firstValue;\n } else {\n value = collection2.firstValue;\n }\n if (value) context.set(\"highlightedValue\", value);\n },\n highlightPrevItem({ context, prop }) {\n let value = null;\n const highlightedValue = context.get(\"highlightedValue\");\n const collection2 = prop(\"collection\");\n if (highlightedValue) {\n value = collection2.getPreviousValue(highlightedValue);\n if (!value && prop(\"loopFocus\")) value = collection2.lastValue;\n } else {\n value = collection2.lastValue;\n }\n if (value) context.set(\"highlightedValue\", value);\n },\n highlightFirstSelectedItem({ context, prop }) {\n raf(() => {\n const [value] = prop(\"collection\").sort(context.get(\"value\"));\n if (value) context.set(\"highlightedValue\", value);\n });\n },\n highlightFirstOrSelectedItem({ context, prop, computed }) {\n raf(() => {\n let value = null;\n if (computed(\"hasSelectedItems\")) {\n value = prop(\"collection\").sort(context.get(\"value\"))[0];\n } else {\n value = prop(\"collection\").firstValue;\n }\n if (value) context.set(\"highlightedValue\", value);\n });\n },\n highlightLastOrSelectedItem({ context, prop, computed }) {\n raf(() => {\n const collection2 = prop(\"collection\");\n let value = null;\n if (computed(\"hasSelectedItems\")) {\n value = collection2.sort(context.get(\"value\"))[0];\n } else {\n value = collection2.lastValue;\n }\n if (value) context.set(\"highlightedValue\", value);\n });\n },\n autofillInputValue({ context, computed, prop, event, scope }) {\n const inputEl = getInputEl(scope);\n const collection2 = prop(\"collection\");\n if (!computed(\"autoComplete\") || !inputEl || !event.keypress) return;\n const valueText = collection2.stringify(context.get(\"highlightedValue\"));\n raf(() => {\n inputEl.value = valueText || context.get(\"inputValue\");\n });\n },\n syncSelectedItems(params) {\n queueMicrotask(() => {\n const { context, prop } = params;\n const collection2 = prop(\"collection\");\n const value = context.get(\"value\");\n const selectedItems = value.map((v) => {\n const item = context.get(\"selectedItems\").find((item2) => collection2.getItemValue(item2) === v);\n return item || collection2.find(v);\n });\n context.set(\"selectedItems\", selectedItems);\n const inputValue = match(prop(\"selectionBehavior\"), {\n preserve: context.get(\"inputValue\"),\n replace: collection2.stringifyMany(value),\n clear: \"\"\n });\n context.set(\"inputValue\", inputValue);\n });\n },\n syncHighlightedItem({ context, prop }) {\n const item = prop(\"collection\").find(context.get(\"highlightedValue\"));\n context.set(\"highlightedItem\", item);\n },\n toggleVisibility({ event, send, prop }) {\n send({ type: prop(\"open\") ? \"CONTROLLED.OPEN\" : \"CONTROLLED.CLOSE\", previousEvent: event });\n }\n }\n }\n});\nfunction getOpenChangeReason(event) {\n return (event.previousEvent || event).src;\n}\nvar props = createProps()([\n \"allowCustomValue\",\n \"autoFocus\",\n \"closeOnSelect\",\n \"collection\",\n \"composite\",\n \"defaultHighlightedValue\",\n \"defaultInputValue\",\n \"defaultOpen\",\n \"defaultValue\",\n \"dir\",\n \"disabled\",\n \"disableLayer\",\n \"form\",\n \"getRootNode\",\n \"highlightedValue\",\n \"id\",\n \"ids\",\n \"inputBehavior\",\n \"inputValue\",\n \"invalid\",\n \"loopFocus\",\n \"multiple\",\n \"name\",\n \"navigate\",\n \"onFocusOutside\",\n \"onHighlightChange\",\n \"onInputValueChange\",\n \"onInteractOutside\",\n \"onOpenChange\",\n \"onOpenChange\",\n \"onPointerDownOutside\",\n \"onSelect\",\n \"onValueChange\",\n \"open\",\n \"openOnChange\",\n \"openOnClick\",\n \"openOnKeyPress\",\n \"placeholder\",\n \"positioning\",\n \"readOnly\",\n \"required\",\n \"scrollToIndexFn\",\n \"selectionBehavior\",\n \"translations\",\n \"value\"\n]);\nvar splitProps = createSplitProps(props);\nvar itemGroupLabelProps = createProps()([\"htmlFor\"]);\nvar splitItemGroupLabelProps = createSplitProps(itemGroupLabelProps);\nvar itemGroupProps = createProps()([\"id\"]);\nvar splitItemGroupProps = createSplitProps(itemGroupProps);\nvar itemProps = createProps()([\"item\", \"persistFocus\"]);\nvar splitItemProps = createSplitProps(itemProps);\n\nexport { anatomy, collection, connect, itemGroupLabelProps, itemGroupProps, itemProps, machine, props, splitItemGroupLabelProps, splitItemGroupProps, splitItemProps, splitProps };\n","'use client';\nimport { createAnatomy } from '@zag-js/anatomy';\n\nconst fieldsetAnatomy = createAnatomy(\"fieldset\").parts(\"root\", \"errorText\", \"helperText\", \"legend\");\nconst parts = fieldsetAnatomy.build();\n\nexport { fieldsetAnatomy, parts };\n","\"use strict\";\nimport { comboboxAnatomy as comboboxAnatomy$1 } from '@ark-ui/react';\nimport { accordionAnatomy as accordionAnatomy$1 } from '@ark-ui/react/accordion';\nimport { createAnatomy } from '@ark-ui/react/anatomy';\nimport { clipboardAnatomy as clipboardAnatomy$1 } from '@ark-ui/react/clipboard';\nimport { colorPickerAnatomy as colorPickerAnatomy$1 } from '@ark-ui/react/color-picker';\nimport { dialogAnatomy as dialogAnatomy$1 } from '@ark-ui/react/dialog';\nimport { editableAnatomy as editableAnatomy$1 } from '@ark-ui/react/editable';\nimport { fieldAnatomy as fieldAnatomy$1 } from '@ark-ui/react/field';\nimport { fieldsetAnatomy as fieldsetAnatomy$1 } from '@ark-ui/react/fieldset';\nimport { fileUploadAnatomy as fileUploadAnatomy$1 } from '@ark-ui/react/file-upload';\nimport { menuAnatomy as menuAnatomy$1 } from '@ark-ui/react/menu';\nimport { popoverAnatomy as popoverAnatomy$1 } from '@ark-ui/react/popover';\nimport { radioGroupAnatomy as radioGroupAnatomy$1 } from '@ark-ui/react/radio-group';\nimport { ratingGroupAnatomy as ratingGroupAnatomy$1 } from '@ark-ui/react/rating-group';\nimport { selectAnatomy as selectAnatomy$1 } from '@ark-ui/react/select';\nimport { sliderAnatomy as sliderAnatomy$1 } from '@ark-ui/react/slider';\nimport { switchAnatomy as switchAnatomy$1 } from '@ark-ui/react/switch';\nexport { treeViewAnatomy } from '@ark-ui/react/tree-view';\nexport { avatarAnatomy } from '@ark-ui/react/avatar';\nexport { checkboxAnatomy } from '@ark-ui/react/checkbox';\nexport { collapsibleAnatomy } from '@ark-ui/react/collapsible';\nexport { hoverCardAnatomy } from '@ark-ui/react/hover-card';\nexport { numberInputAnatomy } from '@ark-ui/react/number-input';\nexport { pinInputAnatomy } from '@ark-ui/react/pin-input';\nexport { progressAnatomy } from '@ark-ui/react/progress';\nexport { qrCodeAnatomy } from '@ark-ui/react/qr-code';\nexport { segmentGroupAnatomy } from '@ark-ui/react/segment-group';\nexport { tooltipAnatomy } from '@ark-ui/react/tooltip';\n\nconst accordionAnatomy = accordionAnatomy$1.extendWith(\"itemBody\");\nconst actionBarAnatomy = createAnatomy(\"action-bar\").parts(\n \"positioner\",\n \"content\",\n \"separator\",\n \"selectionTrigger\",\n \"closeTrigger\"\n);\nconst alertAnatomy = createAnatomy(\"alert\").parts(\n \"title\",\n \"description\",\n \"root\",\n \"indicator\",\n \"content\"\n);\nconst breadcrumbAnatomy = createAnatomy(\"breadcrumb\").parts(\n \"link\",\n \"currentLink\",\n \"item\",\n \"list\",\n \"root\",\n \"ellipsis\",\n \"separator\"\n);\nconst blockquoteAnatomy = createAnatomy(\"blockquote\").parts(\n \"root\",\n \"icon\",\n \"content\",\n \"caption\"\n);\nconst cardAnatomy = createAnatomy(\"card\").parts(\n \"root\",\n \"header\",\n \"body\",\n \"footer\",\n \"title\",\n \"description\"\n);\nconst checkboxCardAnatomy = createAnatomy(\"checkbox-card\", [\n \"root\",\n \"control\",\n \"label\",\n \"description\",\n \"addon\",\n \"indicator\",\n \"content\"\n]);\nconst dataListAnatomy = createAnatomy(\"data-list\").parts(\n \"root\",\n \"item\",\n \"itemLabel\",\n \"itemValue\"\n);\nconst dialogAnatomy = dialogAnatomy$1.extendWith(\n \"header\",\n \"body\",\n \"footer\",\n \"backdrop\"\n);\nconst drawerAnatomy = dialogAnatomy$1.extendWith(\n \"header\",\n \"body\",\n \"footer\",\n \"backdrop\"\n);\nconst editableAnatomy = editableAnatomy$1.extendWith(\"textarea\");\nconst emptyStateAnatomy = createAnatomy(\"empty-state\", [\n \"root\",\n \"content\",\n \"indicator\",\n \"title\",\n \"description\"\n]);\nconst fieldAnatomy = fieldAnatomy$1.extendWith(\"requiredIndicator\");\nconst fieldsetAnatomy = fieldsetAnatomy$1.extendWith(\"content\");\nconst fileUploadAnatomy = fileUploadAnatomy$1.extendWith(\n \"itemContent\",\n \"dropzoneContent\",\n \"fileText\"\n);\nconst listAnatomy = createAnatomy(\"list\").parts(\n \"root\",\n \"item\",\n \"indicator\"\n);\nconst menuAnatomy = menuAnatomy$1.extendWith(\"itemCommand\");\nconst nativeSelectAnatomy = createAnatomy(\"select\").parts(\n \"root\",\n \"field\",\n \"indicator\"\n);\nconst popoverAnatomy = popoverAnatomy$1.extendWith(\n \"header\",\n \"body\",\n \"footer\"\n);\nconst radioGroupAnatomy = radioGroupAnatomy$1.extendWith(\n \"itemAddon\",\n \"itemIndicator\"\n);\nconst radioCardAnatomy = radioGroupAnatomy.extendWith(\n \"itemContent\",\n \"itemDescription\"\n);\nconst ratingGroupAnatomy = ratingGroupAnatomy$1.extendWith(\"itemIndicator\");\nconst selectAnatomy = selectAnatomy$1.extendWith(\"indicatorGroup\");\nconst comboboxAnatomy = comboboxAnatomy$1.extendWith(\n \"indicatorGroup\",\n \"empty\"\n);\nconst sliderAnatomy = sliderAnatomy$1.extendWith(\"markerIndicator\");\nconst statAnatomy = createAnatomy(\"stat\").parts(\n \"root\",\n \"label\",\n \"helpText\",\n \"valueText\",\n \"valueUnit\",\n \"indicator\"\n);\nconst statusAnatomy = createAnatomy(\"status\").parts(\"root\", \"indicator\");\nconst stepsAnatomy = createAnatomy(\"steps\", [\n \"root\",\n \"list\",\n \"item\",\n \"trigger\",\n \"indicator\",\n \"separator\",\n \"content\",\n \"title\",\n \"description\",\n \"nextTrigger\",\n \"prevTrigger\",\n \"progress\"\n]);\nconst switchAnatomy = switchAnatomy$1.extendWith(\"indicator\");\nconst tableAnatomy = createAnatomy(\"table\").parts(\n \"root\",\n \"header\",\n \"body\",\n \"row\",\n \"columnHeader\",\n \"cell\",\n \"footer\",\n \"caption\"\n);\nconst toastAnatomy = createAnatomy(\"toast\").parts(\n \"root\",\n \"title\",\n \"description\",\n \"indicator\",\n \"closeTrigger\",\n \"actionTrigger\"\n);\nconst tabsAnatomy = createAnatomy(\"tabs\").parts(\n \"root\",\n \"trigger\",\n \"list\",\n \"content\",\n \"contentGroup\",\n \"indicator\"\n);\nconst tagAnatomy = createAnatomy(\"tag\").parts(\n \"root\",\n \"label\",\n \"closeTrigger\",\n \"startElement\",\n \"endElement\"\n);\nconst timelineAnatomy = createAnatomy(\"timeline\").parts(\n \"root\",\n \"item\",\n \"content\",\n \"separator\",\n \"indicator\",\n \"connector\",\n \"title\",\n \"description\"\n);\nconst colorPickerAnatomy = colorPickerAnatomy$1.extendWith(\"channelText\");\nconst codeBlockAnatomy = createAnatomy(\"code-block\", [\n \"root\",\n \"content\",\n \"title\",\n \"header\",\n \"footer\",\n \"control\",\n \"overlay\",\n \"code\",\n \"codeText\",\n \"copyTrigger\",\n \"copyIndicator\",\n \"collapseTrigger\",\n \"collapseIndicator\",\n \"collapseText\"\n]);\nconst clipboardAnatomy = clipboardAnatomy$1.extendWith(\"valueText\");\n\nexport { accordionAnatomy, actionBarAnatomy, alertAnatomy, blockquoteAnatomy, breadcrumbAnatomy, cardAnatomy, checkboxCardAnatomy, clipboardAnatomy, codeBlockAnatomy, colorPickerAnatomy, comboboxAnatomy, dataListAnatomy, dialogAnatomy, drawerAnatomy, editableAnatomy, emptyStateAnatomy, fieldAnatomy, fieldsetAnatomy, fileUploadAnatomy, listAnatomy, menuAnatomy, nativeSelectAnatomy, popoverAnatomy, radioCardAnatomy, radioGroupAnatomy, ratingGroupAnatomy, selectAnatomy, sliderAnatomy, statAnatomy, statusAnatomy, stepsAnatomy, switchAnatomy, tableAnatomy, tabsAnatomy, tagAnatomy, timelineAnatomy, toastAnatomy };\n"],"names":["anatomy","createAnatomy","createProps","fieldsetAnatomy","accordionAnatomy","accordionAnatomy$1","actionBarAnatomy","alertAnatomy","breadcrumbAnatomy","blockquoteAnatomy","cardAnatomy","checkboxCardAnatomy","dataListAnatomy","dialogAnatomy","dialogAnatomy$1","drawerAnatomy","editableAnatomy","editableAnatomy$1","emptyStateAnatomy","fieldAnatomy","fieldAnatomy$1","fieldsetAnatomy$1","fileUploadAnatomy","fileUploadAnatomy$1","listAnatomy","menuAnatomy","menuAnatomy$1","nativeSelectAnatomy","popoverAnatomy","popoverAnatomy$1","radioGroupAnatomy","radioGroupAnatomy$1","radioCardAnatomy","ratingGroupAnatomy","ratingGroupAnatomy$1","selectAnatomy","selectAnatomy$1","comboboxAnatomy","comboboxAnatomy$1","sliderAnatomy","sliderAnatomy$1","statAnatomy","statusAnatomy","stepsAnatomy","switchAnatomy","switchAnatomy$1","tableAnatomy","toastAnatomy","tabsAnatomy","tagAnatomy","timelineAnatomy","colorPickerAnatomy","colorPickerAnatomy$1","codeBlockAnatomy","clipboardAnatomy$1"],"mappings":"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","x_google_ignoreList":[0,1,2]}
@@ -9,7 +9,7 @@ import { H as _ } from "./h-stack-8q5nAOg0.js";
9
9
  import { F } from "./flex-CX-8gE9T.js";
10
10
  import { useCallback as $ } from "react";
11
11
  import { B as S } from "./button.component-BO6oee_V.js";
12
- import { p as M } from "./popover.recipe-Bg7XkURN.js";
12
+ import { p as M } from "./popover.recipe-DPwwsWLb.js";
13
13
  import { u as U } from "./usePortalContentRef-DO_jc4W9.js";
14
14
  import { D as K } from "./divider.component-CFOh4Nw3.js";
15
15
  import { u as V } from "./create-slot-recipe-context-D_FXDJGp.js";
@@ -163,4 +163,4 @@ const ge = (t) => {
163
163
  export {
164
164
  ge as D
165
165
  };
166
- //# sourceMappingURL=datePicker.component-BkCLLBbA.js.map
166
+ //# sourceMappingURL=datePicker.component-BTNp4pkH.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"datePicker.component-BkCLLBbA.js","sources":["../../node_modules/date-fns/isBefore.js","../../src/components/DatePicker/components/DatePickerInput/datePickerInput.utils.ts","../../src/components/DatePicker/components/DatePickerInput/datePickerInput.component.tsx","../../src/components/DatePicker/components/DatePickerFooter/datePickerFooter.component.tsx","../../src/components/DatePicker/datePicker.component.tsx"],"sourcesContent":["import { toDate } from \"./toDate.js\";\n\n/**\n * @name isBefore\n * @category Common Helpers\n * @summary Is the first date before the second one?\n *\n * @description\n * Is the first date before the second one?\n *\n * @param date - The date that should be before the other one to return true\n * @param dateToCompare - The date to compare with\n *\n * @returns The first date is before the second date\n *\n * @example\n * // Is 10 July 1989 before 11 February 1987?\n * const result = isBefore(new Date(1989, 6, 10), new Date(1987, 1, 11))\n * //=> false\n */\nexport function isBefore(date, dateToCompare) {\n return +toDate(date) < +toDate(dateToCompare);\n}\n\n// Fallback for modularized imports:\nexport default isBefore;\n","import isAfter from 'date-fns/isAfter';\nimport isBefore from 'date-fns/isBefore';\n\nexport const isDateAfterMin = (date: Date, minDate?: Date): boolean => (minDate ? isAfter(date, minDate) : true);\nexport const isDateBeforeMax = (date: Date, maxDate?: Date): boolean => (maxDate ? isBefore(date, maxDate) : true);\n","import React, { ChangeEvent } from 'react';\nimport { Flex } from '@chakra-ui/react/flex';\nimport { HStack } from '@chakra-ui/react/stack';\nimport { TextInput, TextInputProps } from 'components/TextInput/textInput.component';\nimport { Icon } from 'components/Icon/icon.component';\nimport { Text } from 'components/Text/text.component';\nimport isDate from 'date-fns/isDate';\nimport { getInputValue, parseDate } from '@datepicker-react/hooks';\nimport { isDateAfterMin, isDateBeforeMax } from './datePickerInput.utils';\nimport { FocusedInput, today, useDatePickerContext } from '../../context/datePicker.context';\nimport format from 'date-fns/format';\nimport { usePopoverContext } from '@chakra-ui/react/popover';\n\ninterface DatePickerInputProps {\n /** Props to customize the input field. See `TextInput` for more information. */\n inputProps?: Omit<TextInputProps, 'onChange' | 'value' | 'isClearable' | 'onClear'>;\n /** Data test id for the input.\n * @default kibble-datepicker-input\n */\n 'data-testid'?: string;\n}\n\nexport function DatePickerInput({\n inputProps,\n ['data-testid']: dataTestId = 'kibble-datepicker-input',\n}: DatePickerInputProps): React.JSX.Element {\n const {\n setFocusedInput,\n startDate,\n endDate,\n focusedInput,\n dateFormat,\n withDateRange,\n minDate,\n maxDate,\n onDateChange,\n onDateSelect,\n onClose,\n } = useDatePickerContext();\n const { open, setOpen } = usePopoverContext();\n const iconSize = inputProps?.size || 'md';\n\n const onKeyDown = (e: React.KeyboardEvent): void => {\n if (e.key === 'Enter' && open) {\n setOpen(false);\n onClose();\n e.preventDefault();\n e.stopPropagation();\n }\n };\n\n const onInputChange = (e: ChangeEvent<HTMLInputElement>): void => {\n const dateValue = e.target.value;\n const parsedDate = parseDate(dateValue, dateFormat, today);\n\n if (\n dateValue.length === dateFormat.length &&\n isDate(parsedDate) &&\n isDateAfterMin(parsedDate, minDate) &&\n isDateBeforeMax(parsedDate, maxDate)\n ) {\n onDateSelect(parsedDate);\n }\n\n // Trigger change when input is empty\n if (!dateValue.length && onDateChange) {\n onDateChange({ startDate: null, endDate: null });\n }\n };\n\n return (\n <HStack w=\"100%\" className=\"DatePicker__Trigger\" data-testid={dataTestId}>\n <TextInput\n className=\"DatePicker__Input--Start\"\n data-testid={`${dataTestId}-start`}\n autoComplete=\"off\"\n rightElement={\n <Flex\n {...(!inputProps?.disabled && {\n onClick: (): void => setFocusedInput(FocusedInput.StartDate),\n })}\n h=\"100%\"\n align=\"center\"\n >\n <Icon name=\"calendarDate\" size={iconSize} />\n </Flex>\n }\n value={getInputValue(startDate, dateFormat, '')}\n onChange={onInputChange}\n onKeyDown={onKeyDown}\n {...(!inputProps?.disabled && {\n onFocus: (): void => {\n setFocusedInput(FocusedInput.StartDate);\n },\n })}\n placeholder={format(today, dateFormat).toString()}\n {...(focusedInput === FocusedInput.StartDate && {\n 'data-focus': true,\n })}\n {...inputProps}\n />\n {withDateRange && (\n <>\n <Text> - </Text>\n <TextInput\n className=\"DatePicker__Input--End\"\n data-testid={`${dataTestId}-end`}\n rightElement={\n <Flex\n {...(!inputProps?.disabled && {\n onClick: (): void => setFocusedInput(FocusedInput.StartDate),\n })}\n h=\"100%\"\n align=\"center\"\n >\n <Icon name=\"calendarDate\" size={iconSize} />\n </Flex>\n }\n value={getInputValue(endDate, dateFormat, '')}\n onChange={onInputChange}\n {...(!inputProps?.disabled && {\n onFocus: (): void => setFocusedInput(FocusedInput.EndDate),\n })}\n onKeyDown={onKeyDown}\n placeholder={format(today, dateFormat).toString()}\n {...(focusedInput === FocusedInput.EndDate && {\n 'data-focus': true,\n })}\n {...inputProps}\n />\n </>\n )}\n </HStack>\n );\n}\n","import React, { useCallback } from 'react';\nimport { Button } from 'components/Button/button.component';\nimport { HStack } from '@chakra-ui/react/stack';\nimport { DateRange } from '../../datePicker.types';\nimport { useDatePickerContext } from '../../context/datePicker.context';\nimport { usePopoverContext } from '@chakra-ui/react/popover';\n\nexport interface DatePickerFooterProps {\n /** Text to display in the submit button.\n * @default Apply\n */\n buttonText?: string;\n /** Callback function to be called when the submit button is clicked. */\n onSubmit?: ({ startDate, endDate }: DateRange) => void;\n /** If true, the reset button will be hidden. */\n hideResetButton?: boolean;\n /** Data test id for the footer.\n * @default kibble-datepicker-footer\n */\n 'data-testid'?: string;\n}\n\nexport function DatePickerFooter({\n buttonText = 'Apply',\n onSubmit,\n hideResetButton,\n}: DatePickerFooterProps): React.JSX.Element {\n const { startDate, endDate, clearDates, standalone } = useDatePickerContext();\n const { open, setOpen } = usePopoverContext();\n\n const handleSubmit = useCallback((): void => {\n if (!standalone) {\n setOpen(false);\n }\n\n if (onSubmit) {\n onSubmit({ startDate, endDate });\n }\n }, [standalone, setOpen, onSubmit, startDate, endDate]);\n\n return (\n <HStack\n w=\"100%\"\n justify={hideResetButton ? 'end' : 'space-between'}\n align=\"center\"\n borderTop=\"1px\"\n borderColor=\"border.default\"\n px={3}\n py={2}\n >\n {!hideResetButton && (\n <Button size=\"sm\" variant=\"ghostNeutral\" onClick={() => clearDates({ open })}>\n Clear Dates\n </Button>\n )}\n <Button size=\"sm\" onClick={handleSubmit}>\n {buttonText}\n </Button>\n </HStack>\n );\n}\n","import React from 'react';\nimport { DateProps } from './datePicker.types';\nimport { TextInputProps } from 'components/TextInput/textInput.component';\nimport { Placement } from 'shared/types/placement';\nimport { DatePickerProvider } from './context/datePicker.provider';\nimport { DatePickerInput } from './components/DatePickerInput/datePickerInput.component';\nimport { DatePickerFooter, DatePickerFooterProps } from './components/DatePickerFooter/datePickerFooter.component';\nimport { DatePickerHeader } from './components/DatePickerHeader/datePickerHeader.component';\nimport { DatePickerCalendar } from './components/DatePickerCalendar/datePickerCalendar.component';\nimport { Popover as CPopover } from '@chakra-ui/react/popover';\nimport { Portal } from '@chakra-ui/react/portal';\nimport { useSlotRecipe } from '@chakra-ui/react/styled-system';\nimport { popoverRecipe } from 'components/Popover/popover.recipe';\nimport { usePortalContentRef } from 'hooks/usePortalContentRef';\nimport { Divider } from 'components/Divider';\n\nexport interface DatePickerProps extends DateProps {\n /** Props to customize the calendar footer. Only applicable when `withDateRange` is true. */\n footerProps?: DatePickerFooterProps;\n /**\n * Hides the calendar footer with the submit button. Only applicable when `withDateRange` is true.\n * @default false\n */\n hideFooter?: boolean;\n /** Props to customize the input field. See `TextInput` for more information. */\n inputProps?: Omit<TextInputProps, 'onChange' | 'value' | 'isClearable' | 'onClear'>;\n /**\n * Placement of the calendar popover\n * @default bottom\n */\n placement?: Placement;\n /**\n * If true, the date picker will be rendered in a portal.\n * @default true\n */\n portalled?: boolean;\n /**\n * If true, the date picker will render two input fields that control both the start and end date for a range selection.\n * @default false\n */\n withDateRange?: boolean;\n /** Data test id for the date picker.\n * @default kibble-datepicker\n */\n 'data-testid'?: string;\n}\n\nexport const DatePicker = (props: DatePickerProps): React.JSX.Element => {\n const {\n footerProps,\n hideFooter = false,\n inputProps,\n portalled = true,\n withDateRange = false,\n ['data-testid']: dataTestId = 'kibble-datepicker',\n } = props;\n const { contentRef } = usePortalContentRef();\n const recipe = useSlotRecipe({ recipe: popoverRecipe });\n const styles = recipe();\n\n return (\n <DatePickerProvider {...props}>\n <CPopover.Trigger w=\"100%\">\n <DatePickerInput inputProps={{ ...inputProps, readOnly: true }} />\n </CPopover.Trigger>\n <Portal container={contentRef || undefined} disabled={!portalled}>\n <CPopover.Positioner className=\"DatePicker\" data-testid={dataTestId}>\n <CPopover.Content\n className=\"DatePicker__Content\"\n data-testid={`${dataTestId}-content`}\n css={{ ...styles.content, minW: '340px' }}\n >\n <CPopover.Body css={{ '--popover-padding': 0 }}>\n <DatePickerHeader />\n <Divider />\n <DatePickerCalendar />\n {withDateRange && !hideFooter && <DatePickerFooter {...footerProps} />}\n </CPopover.Body>\n </CPopover.Content>\n </CPopover.Positioner>\n </Portal>\n </DatePickerProvider>\n );\n};\n"],"names":["isBefore","date","dateToCompare","toDate","isDateAfterMin","minDate","isAfter","isDateBeforeMax","maxDate","DatePickerInput","inputProps","dataTestId","setFocusedInput","startDate","endDate","focusedInput","dateFormat","withDateRange","onDateChange","onDateSelect","onClose","useDatePickerContext","open","setOpen","usePopoverContext","iconSize","onKeyDown","e","onInputChange","dateValue","parsedDate","parseDate","today","isDate","HStack","jsx","TextInput","Flex","FocusedInput","Icon","getInputValue","format","jsxs","Fragment","Text","DatePickerFooter","buttonText","onSubmit","hideResetButton","clearDates","standalone","handleSubmit","useCallback","Button","DatePicker","props","footerProps","hideFooter","portalled","contentRef","usePortalContentRef","styles","useSlotRecipe","popoverRecipe","DatePickerProvider","CPopover.Trigger","Portal","CPopover.Positioner","CPopover.Content","CPopover.Body","DatePickerHeader","Divider","DatePickerCalendar"],"mappings":"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","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"datePicker.component-BTNp4pkH.js","sources":["../../node_modules/date-fns/isBefore.js","../../src/components/DatePicker/components/DatePickerInput/datePickerInput.utils.ts","../../src/components/DatePicker/components/DatePickerInput/datePickerInput.component.tsx","../../src/components/DatePicker/components/DatePickerFooter/datePickerFooter.component.tsx","../../src/components/DatePicker/datePicker.component.tsx"],"sourcesContent":["import { toDate } from \"./toDate.js\";\n\n/**\n * @name isBefore\n * @category Common Helpers\n * @summary Is the first date before the second one?\n *\n * @description\n * Is the first date before the second one?\n *\n * @param date - The date that should be before the other one to return true\n * @param dateToCompare - The date to compare with\n *\n * @returns The first date is before the second date\n *\n * @example\n * // Is 10 July 1989 before 11 February 1987?\n * const result = isBefore(new Date(1989, 6, 10), new Date(1987, 1, 11))\n * //=> false\n */\nexport function isBefore(date, dateToCompare) {\n return +toDate(date) < +toDate(dateToCompare);\n}\n\n// Fallback for modularized imports:\nexport default isBefore;\n","import isAfter from 'date-fns/isAfter';\nimport isBefore from 'date-fns/isBefore';\n\nexport const isDateAfterMin = (date: Date, minDate?: Date): boolean => (minDate ? isAfter(date, minDate) : true);\nexport const isDateBeforeMax = (date: Date, maxDate?: Date): boolean => (maxDate ? isBefore(date, maxDate) : true);\n","import React, { ChangeEvent } from 'react';\nimport { Flex } from '@chakra-ui/react/flex';\nimport { HStack } from '@chakra-ui/react/stack';\nimport { TextInput, TextInputProps } from 'components/TextInput/textInput.component';\nimport { Icon } from 'components/Icon/icon.component';\nimport { Text } from 'components/Text/text.component';\nimport isDate from 'date-fns/isDate';\nimport { getInputValue, parseDate } from '@datepicker-react/hooks';\nimport { isDateAfterMin, isDateBeforeMax } from './datePickerInput.utils';\nimport { FocusedInput, today, useDatePickerContext } from '../../context/datePicker.context';\nimport format from 'date-fns/format';\nimport { usePopoverContext } from '@chakra-ui/react/popover';\n\ninterface DatePickerInputProps {\n /** Props to customize the input field. See `TextInput` for more information. */\n inputProps?: Omit<TextInputProps, 'onChange' | 'value' | 'isClearable' | 'onClear'>;\n /** Data test id for the input.\n * @default kibble-datepicker-input\n */\n 'data-testid'?: string;\n}\n\nexport function DatePickerInput({\n inputProps,\n ['data-testid']: dataTestId = 'kibble-datepicker-input',\n}: DatePickerInputProps): React.JSX.Element {\n const {\n setFocusedInput,\n startDate,\n endDate,\n focusedInput,\n dateFormat,\n withDateRange,\n minDate,\n maxDate,\n onDateChange,\n onDateSelect,\n onClose,\n } = useDatePickerContext();\n const { open, setOpen } = usePopoverContext();\n const iconSize = inputProps?.size || 'md';\n\n const onKeyDown = (e: React.KeyboardEvent): void => {\n if (e.key === 'Enter' && open) {\n setOpen(false);\n onClose();\n e.preventDefault();\n e.stopPropagation();\n }\n };\n\n const onInputChange = (e: ChangeEvent<HTMLInputElement>): void => {\n const dateValue = e.target.value;\n const parsedDate = parseDate(dateValue, dateFormat, today);\n\n if (\n dateValue.length === dateFormat.length &&\n isDate(parsedDate) &&\n isDateAfterMin(parsedDate, minDate) &&\n isDateBeforeMax(parsedDate, maxDate)\n ) {\n onDateSelect(parsedDate);\n }\n\n // Trigger change when input is empty\n if (!dateValue.length && onDateChange) {\n onDateChange({ startDate: null, endDate: null });\n }\n };\n\n return (\n <HStack w=\"100%\" className=\"DatePicker__Trigger\" data-testid={dataTestId}>\n <TextInput\n className=\"DatePicker__Input--Start\"\n data-testid={`${dataTestId}-start`}\n autoComplete=\"off\"\n rightElement={\n <Flex\n {...(!inputProps?.disabled && {\n onClick: (): void => setFocusedInput(FocusedInput.StartDate),\n })}\n h=\"100%\"\n align=\"center\"\n >\n <Icon name=\"calendarDate\" size={iconSize} />\n </Flex>\n }\n value={getInputValue(startDate, dateFormat, '')}\n onChange={onInputChange}\n onKeyDown={onKeyDown}\n {...(!inputProps?.disabled && {\n onFocus: (): void => {\n setFocusedInput(FocusedInput.StartDate);\n },\n })}\n placeholder={format(today, dateFormat).toString()}\n {...(focusedInput === FocusedInput.StartDate && {\n 'data-focus': true,\n })}\n {...inputProps}\n />\n {withDateRange && (\n <>\n <Text> - </Text>\n <TextInput\n className=\"DatePicker__Input--End\"\n data-testid={`${dataTestId}-end`}\n rightElement={\n <Flex\n {...(!inputProps?.disabled && {\n onClick: (): void => setFocusedInput(FocusedInput.StartDate),\n })}\n h=\"100%\"\n align=\"center\"\n >\n <Icon name=\"calendarDate\" size={iconSize} />\n </Flex>\n }\n value={getInputValue(endDate, dateFormat, '')}\n onChange={onInputChange}\n {...(!inputProps?.disabled && {\n onFocus: (): void => setFocusedInput(FocusedInput.EndDate),\n })}\n onKeyDown={onKeyDown}\n placeholder={format(today, dateFormat).toString()}\n {...(focusedInput === FocusedInput.EndDate && {\n 'data-focus': true,\n })}\n {...inputProps}\n />\n </>\n )}\n </HStack>\n );\n}\n","import React, { useCallback } from 'react';\nimport { Button } from 'components/Button/button.component';\nimport { HStack } from '@chakra-ui/react/stack';\nimport { DateRange } from '../../datePicker.types';\nimport { useDatePickerContext } from '../../context/datePicker.context';\nimport { usePopoverContext } from '@chakra-ui/react/popover';\n\nexport interface DatePickerFooterProps {\n /** Text to display in the submit button.\n * @default Apply\n */\n buttonText?: string;\n /** Callback function to be called when the submit button is clicked. */\n onSubmit?: ({ startDate, endDate }: DateRange) => void;\n /** If true, the reset button will be hidden. */\n hideResetButton?: boolean;\n /** Data test id for the footer.\n * @default kibble-datepicker-footer\n */\n 'data-testid'?: string;\n}\n\nexport function DatePickerFooter({\n buttonText = 'Apply',\n onSubmit,\n hideResetButton,\n}: DatePickerFooterProps): React.JSX.Element {\n const { startDate, endDate, clearDates, standalone } = useDatePickerContext();\n const { open, setOpen } = usePopoverContext();\n\n const handleSubmit = useCallback((): void => {\n if (!standalone) {\n setOpen(false);\n }\n\n if (onSubmit) {\n onSubmit({ startDate, endDate });\n }\n }, [standalone, setOpen, onSubmit, startDate, endDate]);\n\n return (\n <HStack\n w=\"100%\"\n justify={hideResetButton ? 'end' : 'space-between'}\n align=\"center\"\n borderTop=\"1px\"\n borderColor=\"border.default\"\n px={3}\n py={2}\n >\n {!hideResetButton && (\n <Button size=\"sm\" variant=\"ghostNeutral\" onClick={() => clearDates({ open })}>\n Clear Dates\n </Button>\n )}\n <Button size=\"sm\" onClick={handleSubmit}>\n {buttonText}\n </Button>\n </HStack>\n );\n}\n","import React from 'react';\nimport { DateProps } from './datePicker.types';\nimport { TextInputProps } from 'components/TextInput/textInput.component';\nimport { Placement } from 'shared/types/placement';\nimport { DatePickerProvider } from './context/datePicker.provider';\nimport { DatePickerInput } from './components/DatePickerInput/datePickerInput.component';\nimport { DatePickerFooter, DatePickerFooterProps } from './components/DatePickerFooter/datePickerFooter.component';\nimport { DatePickerHeader } from './components/DatePickerHeader/datePickerHeader.component';\nimport { DatePickerCalendar } from './components/DatePickerCalendar/datePickerCalendar.component';\nimport { Popover as CPopover } from '@chakra-ui/react/popover';\nimport { Portal } from '@chakra-ui/react/portal';\nimport { useSlotRecipe } from '@chakra-ui/react/styled-system';\nimport { popoverRecipe } from 'components/Popover/popover.recipe';\nimport { usePortalContentRef } from 'hooks/usePortalContentRef';\nimport { Divider } from 'components/Divider';\n\nexport interface DatePickerProps extends DateProps {\n /** Props to customize the calendar footer. Only applicable when `withDateRange` is true. */\n footerProps?: DatePickerFooterProps;\n /**\n * Hides the calendar footer with the submit button. Only applicable when `withDateRange` is true.\n * @default false\n */\n hideFooter?: boolean;\n /** Props to customize the input field. See `TextInput` for more information. */\n inputProps?: Omit<TextInputProps, 'onChange' | 'value' | 'isClearable' | 'onClear'>;\n /**\n * Placement of the calendar popover\n * @default bottom\n */\n placement?: Placement;\n /**\n * If true, the date picker will be rendered in a portal.\n * @default true\n */\n portalled?: boolean;\n /**\n * If true, the date picker will render two input fields that control both the start and end date for a range selection.\n * @default false\n */\n withDateRange?: boolean;\n /** Data test id for the date picker.\n * @default kibble-datepicker\n */\n 'data-testid'?: string;\n}\n\nexport const DatePicker = (props: DatePickerProps): React.JSX.Element => {\n const {\n footerProps,\n hideFooter = false,\n inputProps,\n portalled = true,\n withDateRange = false,\n ['data-testid']: dataTestId = 'kibble-datepicker',\n } = props;\n const { contentRef } = usePortalContentRef();\n const recipe = useSlotRecipe({ recipe: popoverRecipe });\n const styles = recipe();\n\n return (\n <DatePickerProvider {...props}>\n <CPopover.Trigger w=\"100%\">\n <DatePickerInput inputProps={{ ...inputProps, readOnly: true }} />\n </CPopover.Trigger>\n <Portal container={contentRef || undefined} disabled={!portalled}>\n <CPopover.Positioner className=\"DatePicker\" data-testid={dataTestId}>\n <CPopover.Content\n className=\"DatePicker__Content\"\n data-testid={`${dataTestId}-content`}\n css={{ ...styles.content, minW: '340px' }}\n >\n <CPopover.Body css={{ '--popover-padding': 0 }}>\n <DatePickerHeader />\n <Divider />\n <DatePickerCalendar />\n {withDateRange && !hideFooter && <DatePickerFooter {...footerProps} />}\n </CPopover.Body>\n </CPopover.Content>\n </CPopover.Positioner>\n </Portal>\n </DatePickerProvider>\n );\n};\n"],"names":["isBefore","date","dateToCompare","toDate","isDateAfterMin","minDate","isAfter","isDateBeforeMax","maxDate","DatePickerInput","inputProps","dataTestId","setFocusedInput","startDate","endDate","focusedInput","dateFormat","withDateRange","onDateChange","onDateSelect","onClose","useDatePickerContext","open","setOpen","usePopoverContext","iconSize","onKeyDown","e","onInputChange","dateValue","parsedDate","parseDate","today","isDate","HStack","jsx","TextInput","Flex","FocusedInput","Icon","getInputValue","format","jsxs","Fragment","Text","DatePickerFooter","buttonText","onSubmit","hideResetButton","clearDates","standalone","handleSubmit","useCallback","Button","DatePicker","props","footerProps","hideFooter","portalled","contentRef","usePortalContentRef","styles","useSlotRecipe","popoverRecipe","DatePickerProvider","CPopover.Trigger","Portal","CPopover.Positioner","CPopover.Content","CPopover.Body","DatePickerHeader","Divider","DatePickerCalendar"],"mappings":"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","x_google_ignoreList":[0]}
@@ -1,2 +1,2 @@
1
- "use strict";const e=require("./jsx-runtime-BjDatQAs.js"),n=require("./datePicker.provider-CclRyVCb.js"),k=require("./textInput.component-Cj9j8DqH.js"),g=require("./icon.component-B1hr5lLa.js"),S=require("./text.component-BDDz5KQP.js"),l=require("./format-CK7Imh-5.js"),v=require("./popover-root-provider-CZDbUJ2K.js"),q=require("./h-stack-D4MnHHRc.js"),P=require("./flex-BOU6tYUd.js"),y=require("react"),C=require("./button.component-DjdgBXDC.js"),w=require("./popover.recipe-DhiHO7Ev.js"),z=require("./usePortalContentRef-CTrvBQ7I.js"),N=require("./divider.component-BX3zyB7O.js"),T=require("./create-slot-recipe-context-HXE1VazG.js"),B=require("./index-Ts8g8jZd.js"),m=require("./popover-C7aj8Iwj.js");function W(t,r){return+l.toDate(t)<+l.toDate(r)}const A=(t,r)=>r?n.isAfter(t,r):!0,H=(t,r)=>r?W(t,r):!0;function O({inputProps:t,["data-testid"]:r="kibble-datepicker-input"}){const{setFocusedInput:o,startDate:a,endDate:i,focusedInput:c,dateFormat:s,withDateRange:u,minDate:d,maxDate:x,onDateChange:R,onDateSelect:I,onClose:F}=n.useDatePickerContext(),{open:_,setOpen:b}=v.usePopoverContext(),f=t?.size||"md",h=p=>{p.key==="Enter"&&_&&(b(!1),F(),p.preventDefault(),p.stopPropagation())},E=p=>{const D=p.target.value,j=n.xt(D,s,n.today);D.length===s.length&&l.isDate(j)&&A(j,d)&&H(j,x)&&I(j),!D.length&&R&&R({startDate:null,endDate:null})};return e.jsxRuntimeExports.jsxs(q.HStack,{w:"100%",className:"DatePicker__Trigger","data-testid":r,children:[e.jsxRuntimeExports.jsx(k.WrappedTextInput,{className:"DatePicker__Input--Start","data-testid":`${r}-start`,autoComplete:"off",rightElement:e.jsxRuntimeExports.jsx(P.Flex,{...!t?.disabled&&{onClick:()=>o(n.FocusedInput.StartDate)},h:"100%",align:"center",children:e.jsxRuntimeExports.jsx(g.Icon,{name:"calendarDate",size:f})}),value:n.Ue(a,s,""),onChange:E,onKeyDown:h,...!t?.disabled&&{onFocus:()=>{o(n.FocusedInput.StartDate)}},placeholder:l.format(n.today,s).toString(),...c===n.FocusedInput.StartDate&&{"data-focus":!0},...t}),u&&e.jsxRuntimeExports.jsxs(e.jsxRuntimeExports.Fragment,{children:[e.jsxRuntimeExports.jsx(S.WrappedText,{children:" - "}),e.jsxRuntimeExports.jsx(k.WrappedTextInput,{className:"DatePicker__Input--End","data-testid":`${r}-end`,rightElement:e.jsxRuntimeExports.jsx(P.Flex,{...!t?.disabled&&{onClick:()=>o(n.FocusedInput.StartDate)},h:"100%",align:"center",children:e.jsxRuntimeExports.jsx(g.Icon,{name:"calendarDate",size:f})}),value:n.Ue(i,s,""),onChange:E,...!t?.disabled&&{onFocus:()=>o(n.FocusedInput.EndDate)},onKeyDown:h,placeholder:l.format(n.today,s).toString(),...c===n.FocusedInput.EndDate&&{"data-focus":!0},...t})]})]})}function $({buttonText:t="Apply",onSubmit:r,hideResetButton:o}){const{startDate:a,endDate:i,clearDates:c,standalone:s}=n.useDatePickerContext(),{open:u,setOpen:d}=v.usePopoverContext(),x=y.useCallback(()=>{s||d(!1),r&&r({startDate:a,endDate:i})},[s,d,r,a,i]);return e.jsxRuntimeExports.jsxs(q.HStack,{w:"100%",justify:o?"end":"space-between",align:"center",borderTop:"1px",borderColor:"border.default",px:3,py:2,children:[!o&&e.jsxRuntimeExports.jsx(C.Button,{size:"sm",variant:"ghostNeutral",onClick:()=>c({open:u}),children:"Clear Dates"}),e.jsxRuntimeExports.jsx(C.Button,{size:"sm",onClick:x,children:t})]})}const M=t=>{const{footerProps:r,hideFooter:o=!1,inputProps:a,portalled:i=!0,withDateRange:c=!1,["data-testid"]:s="kibble-datepicker"}=t,{contentRef:u}=z.usePortalContentRef(),x=T.useSlotRecipe({recipe:w.popoverRecipe})();return e.jsxRuntimeExports.jsxs(n.DatePickerProvider,{...t,children:[e.jsxRuntimeExports.jsx(m.PopoverTrigger,{w:"100%",children:e.jsxRuntimeExports.jsx(O,{inputProps:{...a,readOnly:!0}})}),e.jsxRuntimeExports.jsx(B.Portal,{container:u||void 0,disabled:!i,children:e.jsxRuntimeExports.jsx(m.PopoverPositioner,{className:"DatePicker","data-testid":s,children:e.jsxRuntimeExports.jsx(m.PopoverContent,{className:"DatePicker__Content","data-testid":`${s}-content`,css:{...x.content,minW:"340px"},children:e.jsxRuntimeExports.jsxs(m.PopoverBody,{css:{"--popover-padding":0},children:[e.jsxRuntimeExports.jsx(n.DatePickerHeader,{}),e.jsxRuntimeExports.jsx(N.Divider,{}),e.jsxRuntimeExports.jsx(n.DatePickerCalendar,{}),c&&!o&&e.jsxRuntimeExports.jsx($,{...r})]})})})})]})};exports.DatePicker=M;
2
- //# sourceMappingURL=datePicker.component-Dbxjqbki.js.map
1
+ "use strict";const e=require("./jsx-runtime-BjDatQAs.js"),n=require("./datePicker.provider-CclRyVCb.js"),k=require("./textInput.component-Cj9j8DqH.js"),g=require("./icon.component-B1hr5lLa.js"),S=require("./text.component-BDDz5KQP.js"),l=require("./format-CK7Imh-5.js"),v=require("./popover-root-provider-CZDbUJ2K.js"),q=require("./h-stack-D4MnHHRc.js"),P=require("./flex-BOU6tYUd.js"),y=require("react"),C=require("./button.component-DjdgBXDC.js"),w=require("./popover.recipe-CtptsJg6.js"),z=require("./usePortalContentRef-CTrvBQ7I.js"),N=require("./divider.component-BX3zyB7O.js"),T=require("./create-slot-recipe-context-HXE1VazG.js"),B=require("./index-Ts8g8jZd.js"),m=require("./popover-C7aj8Iwj.js");function W(t,r){return+l.toDate(t)<+l.toDate(r)}const A=(t,r)=>r?n.isAfter(t,r):!0,H=(t,r)=>r?W(t,r):!0;function O({inputProps:t,["data-testid"]:r="kibble-datepicker-input"}){const{setFocusedInput:o,startDate:a,endDate:i,focusedInput:c,dateFormat:s,withDateRange:u,minDate:d,maxDate:x,onDateChange:R,onDateSelect:I,onClose:F}=n.useDatePickerContext(),{open:_,setOpen:b}=v.usePopoverContext(),f=t?.size||"md",h=p=>{p.key==="Enter"&&_&&(b(!1),F(),p.preventDefault(),p.stopPropagation())},E=p=>{const D=p.target.value,j=n.xt(D,s,n.today);D.length===s.length&&l.isDate(j)&&A(j,d)&&H(j,x)&&I(j),!D.length&&R&&R({startDate:null,endDate:null})};return e.jsxRuntimeExports.jsxs(q.HStack,{w:"100%",className:"DatePicker__Trigger","data-testid":r,children:[e.jsxRuntimeExports.jsx(k.WrappedTextInput,{className:"DatePicker__Input--Start","data-testid":`${r}-start`,autoComplete:"off",rightElement:e.jsxRuntimeExports.jsx(P.Flex,{...!t?.disabled&&{onClick:()=>o(n.FocusedInput.StartDate)},h:"100%",align:"center",children:e.jsxRuntimeExports.jsx(g.Icon,{name:"calendarDate",size:f})}),value:n.Ue(a,s,""),onChange:E,onKeyDown:h,...!t?.disabled&&{onFocus:()=>{o(n.FocusedInput.StartDate)}},placeholder:l.format(n.today,s).toString(),...c===n.FocusedInput.StartDate&&{"data-focus":!0},...t}),u&&e.jsxRuntimeExports.jsxs(e.jsxRuntimeExports.Fragment,{children:[e.jsxRuntimeExports.jsx(S.WrappedText,{children:" - "}),e.jsxRuntimeExports.jsx(k.WrappedTextInput,{className:"DatePicker__Input--End","data-testid":`${r}-end`,rightElement:e.jsxRuntimeExports.jsx(P.Flex,{...!t?.disabled&&{onClick:()=>o(n.FocusedInput.StartDate)},h:"100%",align:"center",children:e.jsxRuntimeExports.jsx(g.Icon,{name:"calendarDate",size:f})}),value:n.Ue(i,s,""),onChange:E,...!t?.disabled&&{onFocus:()=>o(n.FocusedInput.EndDate)},onKeyDown:h,placeholder:l.format(n.today,s).toString(),...c===n.FocusedInput.EndDate&&{"data-focus":!0},...t})]})]})}function $({buttonText:t="Apply",onSubmit:r,hideResetButton:o}){const{startDate:a,endDate:i,clearDates:c,standalone:s}=n.useDatePickerContext(),{open:u,setOpen:d}=v.usePopoverContext(),x=y.useCallback(()=>{s||d(!1),r&&r({startDate:a,endDate:i})},[s,d,r,a,i]);return e.jsxRuntimeExports.jsxs(q.HStack,{w:"100%",justify:o?"end":"space-between",align:"center",borderTop:"1px",borderColor:"border.default",px:3,py:2,children:[!o&&e.jsxRuntimeExports.jsx(C.Button,{size:"sm",variant:"ghostNeutral",onClick:()=>c({open:u}),children:"Clear Dates"}),e.jsxRuntimeExports.jsx(C.Button,{size:"sm",onClick:x,children:t})]})}const M=t=>{const{footerProps:r,hideFooter:o=!1,inputProps:a,portalled:i=!0,withDateRange:c=!1,["data-testid"]:s="kibble-datepicker"}=t,{contentRef:u}=z.usePortalContentRef(),x=T.useSlotRecipe({recipe:w.popoverRecipe})();return e.jsxRuntimeExports.jsxs(n.DatePickerProvider,{...t,children:[e.jsxRuntimeExports.jsx(m.PopoverTrigger,{w:"100%",children:e.jsxRuntimeExports.jsx(O,{inputProps:{...a,readOnly:!0}})}),e.jsxRuntimeExports.jsx(B.Portal,{container:u||void 0,disabled:!i,children:e.jsxRuntimeExports.jsx(m.PopoverPositioner,{className:"DatePicker","data-testid":s,children:e.jsxRuntimeExports.jsx(m.PopoverContent,{className:"DatePicker__Content","data-testid":`${s}-content`,css:{...x.content,minW:"340px"},children:e.jsxRuntimeExports.jsxs(m.PopoverBody,{css:{"--popover-padding":0},children:[e.jsxRuntimeExports.jsx(n.DatePickerHeader,{}),e.jsxRuntimeExports.jsx(N.Divider,{}),e.jsxRuntimeExports.jsx(n.DatePickerCalendar,{}),c&&!o&&e.jsxRuntimeExports.jsx($,{...r})]})})})})]})};exports.DatePicker=M;
2
+ //# sourceMappingURL=datePicker.component-DgbWKb2q.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"datePicker.component-Dbxjqbki.js","sources":["../../node_modules/date-fns/isBefore.js","../../src/components/DatePicker/components/DatePickerInput/datePickerInput.utils.ts","../../src/components/DatePicker/components/DatePickerInput/datePickerInput.component.tsx","../../src/components/DatePicker/components/DatePickerFooter/datePickerFooter.component.tsx","../../src/components/DatePicker/datePicker.component.tsx"],"sourcesContent":["import { toDate } from \"./toDate.js\";\n\n/**\n * @name isBefore\n * @category Common Helpers\n * @summary Is the first date before the second one?\n *\n * @description\n * Is the first date before the second one?\n *\n * @param date - The date that should be before the other one to return true\n * @param dateToCompare - The date to compare with\n *\n * @returns The first date is before the second date\n *\n * @example\n * // Is 10 July 1989 before 11 February 1987?\n * const result = isBefore(new Date(1989, 6, 10), new Date(1987, 1, 11))\n * //=> false\n */\nexport function isBefore(date, dateToCompare) {\n return +toDate(date) < +toDate(dateToCompare);\n}\n\n// Fallback for modularized imports:\nexport default isBefore;\n","import isAfter from 'date-fns/isAfter';\nimport isBefore from 'date-fns/isBefore';\n\nexport const isDateAfterMin = (date: Date, minDate?: Date): boolean => (minDate ? isAfter(date, minDate) : true);\nexport const isDateBeforeMax = (date: Date, maxDate?: Date): boolean => (maxDate ? isBefore(date, maxDate) : true);\n","import React, { ChangeEvent } from 'react';\nimport { Flex } from '@chakra-ui/react/flex';\nimport { HStack } from '@chakra-ui/react/stack';\nimport { TextInput, TextInputProps } from 'components/TextInput/textInput.component';\nimport { Icon } from 'components/Icon/icon.component';\nimport { Text } from 'components/Text/text.component';\nimport isDate from 'date-fns/isDate';\nimport { getInputValue, parseDate } from '@datepicker-react/hooks';\nimport { isDateAfterMin, isDateBeforeMax } from './datePickerInput.utils';\nimport { FocusedInput, today, useDatePickerContext } from '../../context/datePicker.context';\nimport format from 'date-fns/format';\nimport { usePopoverContext } from '@chakra-ui/react/popover';\n\ninterface DatePickerInputProps {\n /** Props to customize the input field. See `TextInput` for more information. */\n inputProps?: Omit<TextInputProps, 'onChange' | 'value' | 'isClearable' | 'onClear'>;\n /** Data test id for the input.\n * @default kibble-datepicker-input\n */\n 'data-testid'?: string;\n}\n\nexport function DatePickerInput({\n inputProps,\n ['data-testid']: dataTestId = 'kibble-datepicker-input',\n}: DatePickerInputProps): React.JSX.Element {\n const {\n setFocusedInput,\n startDate,\n endDate,\n focusedInput,\n dateFormat,\n withDateRange,\n minDate,\n maxDate,\n onDateChange,\n onDateSelect,\n onClose,\n } = useDatePickerContext();\n const { open, setOpen } = usePopoverContext();\n const iconSize = inputProps?.size || 'md';\n\n const onKeyDown = (e: React.KeyboardEvent): void => {\n if (e.key === 'Enter' && open) {\n setOpen(false);\n onClose();\n e.preventDefault();\n e.stopPropagation();\n }\n };\n\n const onInputChange = (e: ChangeEvent<HTMLInputElement>): void => {\n const dateValue = e.target.value;\n const parsedDate = parseDate(dateValue, dateFormat, today);\n\n if (\n dateValue.length === dateFormat.length &&\n isDate(parsedDate) &&\n isDateAfterMin(parsedDate, minDate) &&\n isDateBeforeMax(parsedDate, maxDate)\n ) {\n onDateSelect(parsedDate);\n }\n\n // Trigger change when input is empty\n if (!dateValue.length && onDateChange) {\n onDateChange({ startDate: null, endDate: null });\n }\n };\n\n return (\n <HStack w=\"100%\" className=\"DatePicker__Trigger\" data-testid={dataTestId}>\n <TextInput\n className=\"DatePicker__Input--Start\"\n data-testid={`${dataTestId}-start`}\n autoComplete=\"off\"\n rightElement={\n <Flex\n {...(!inputProps?.disabled && {\n onClick: (): void => setFocusedInput(FocusedInput.StartDate),\n })}\n h=\"100%\"\n align=\"center\"\n >\n <Icon name=\"calendarDate\" size={iconSize} />\n </Flex>\n }\n value={getInputValue(startDate, dateFormat, '')}\n onChange={onInputChange}\n onKeyDown={onKeyDown}\n {...(!inputProps?.disabled && {\n onFocus: (): void => {\n setFocusedInput(FocusedInput.StartDate);\n },\n })}\n placeholder={format(today, dateFormat).toString()}\n {...(focusedInput === FocusedInput.StartDate && {\n 'data-focus': true,\n })}\n {...inputProps}\n />\n {withDateRange && (\n <>\n <Text> - </Text>\n <TextInput\n className=\"DatePicker__Input--End\"\n data-testid={`${dataTestId}-end`}\n rightElement={\n <Flex\n {...(!inputProps?.disabled && {\n onClick: (): void => setFocusedInput(FocusedInput.StartDate),\n })}\n h=\"100%\"\n align=\"center\"\n >\n <Icon name=\"calendarDate\" size={iconSize} />\n </Flex>\n }\n value={getInputValue(endDate, dateFormat, '')}\n onChange={onInputChange}\n {...(!inputProps?.disabled && {\n onFocus: (): void => setFocusedInput(FocusedInput.EndDate),\n })}\n onKeyDown={onKeyDown}\n placeholder={format(today, dateFormat).toString()}\n {...(focusedInput === FocusedInput.EndDate && {\n 'data-focus': true,\n })}\n {...inputProps}\n />\n </>\n )}\n </HStack>\n );\n}\n","import React, { useCallback } from 'react';\nimport { Button } from 'components/Button/button.component';\nimport { HStack } from '@chakra-ui/react/stack';\nimport { DateRange } from '../../datePicker.types';\nimport { useDatePickerContext } from '../../context/datePicker.context';\nimport { usePopoverContext } from '@chakra-ui/react/popover';\n\nexport interface DatePickerFooterProps {\n /** Text to display in the submit button.\n * @default Apply\n */\n buttonText?: string;\n /** Callback function to be called when the submit button is clicked. */\n onSubmit?: ({ startDate, endDate }: DateRange) => void;\n /** If true, the reset button will be hidden. */\n hideResetButton?: boolean;\n /** Data test id for the footer.\n * @default kibble-datepicker-footer\n */\n 'data-testid'?: string;\n}\n\nexport function DatePickerFooter({\n buttonText = 'Apply',\n onSubmit,\n hideResetButton,\n}: DatePickerFooterProps): React.JSX.Element {\n const { startDate, endDate, clearDates, standalone } = useDatePickerContext();\n const { open, setOpen } = usePopoverContext();\n\n const handleSubmit = useCallback((): void => {\n if (!standalone) {\n setOpen(false);\n }\n\n if (onSubmit) {\n onSubmit({ startDate, endDate });\n }\n }, [standalone, setOpen, onSubmit, startDate, endDate]);\n\n return (\n <HStack\n w=\"100%\"\n justify={hideResetButton ? 'end' : 'space-between'}\n align=\"center\"\n borderTop=\"1px\"\n borderColor=\"border.default\"\n px={3}\n py={2}\n >\n {!hideResetButton && (\n <Button size=\"sm\" variant=\"ghostNeutral\" onClick={() => clearDates({ open })}>\n Clear Dates\n </Button>\n )}\n <Button size=\"sm\" onClick={handleSubmit}>\n {buttonText}\n </Button>\n </HStack>\n );\n}\n","import React from 'react';\nimport { DateProps } from './datePicker.types';\nimport { TextInputProps } from 'components/TextInput/textInput.component';\nimport { Placement } from 'shared/types/placement';\nimport { DatePickerProvider } from './context/datePicker.provider';\nimport { DatePickerInput } from './components/DatePickerInput/datePickerInput.component';\nimport { DatePickerFooter, DatePickerFooterProps } from './components/DatePickerFooter/datePickerFooter.component';\nimport { DatePickerHeader } from './components/DatePickerHeader/datePickerHeader.component';\nimport { DatePickerCalendar } from './components/DatePickerCalendar/datePickerCalendar.component';\nimport { Popover as CPopover } from '@chakra-ui/react/popover';\nimport { Portal } from '@chakra-ui/react/portal';\nimport { useSlotRecipe } from '@chakra-ui/react/styled-system';\nimport { popoverRecipe } from 'components/Popover/popover.recipe';\nimport { usePortalContentRef } from 'hooks/usePortalContentRef';\nimport { Divider } from 'components/Divider';\n\nexport interface DatePickerProps extends DateProps {\n /** Props to customize the calendar footer. Only applicable when `withDateRange` is true. */\n footerProps?: DatePickerFooterProps;\n /**\n * Hides the calendar footer with the submit button. Only applicable when `withDateRange` is true.\n * @default false\n */\n hideFooter?: boolean;\n /** Props to customize the input field. See `TextInput` for more information. */\n inputProps?: Omit<TextInputProps, 'onChange' | 'value' | 'isClearable' | 'onClear'>;\n /**\n * Placement of the calendar popover\n * @default bottom\n */\n placement?: Placement;\n /**\n * If true, the date picker will be rendered in a portal.\n * @default true\n */\n portalled?: boolean;\n /**\n * If true, the date picker will render two input fields that control both the start and end date for a range selection.\n * @default false\n */\n withDateRange?: boolean;\n /** Data test id for the date picker.\n * @default kibble-datepicker\n */\n 'data-testid'?: string;\n}\n\nexport const DatePicker = (props: DatePickerProps): React.JSX.Element => {\n const {\n footerProps,\n hideFooter = false,\n inputProps,\n portalled = true,\n withDateRange = false,\n ['data-testid']: dataTestId = 'kibble-datepicker',\n } = props;\n const { contentRef } = usePortalContentRef();\n const recipe = useSlotRecipe({ recipe: popoverRecipe });\n const styles = recipe();\n\n return (\n <DatePickerProvider {...props}>\n <CPopover.Trigger w=\"100%\">\n <DatePickerInput inputProps={{ ...inputProps, readOnly: true }} />\n </CPopover.Trigger>\n <Portal container={contentRef || undefined} disabled={!portalled}>\n <CPopover.Positioner className=\"DatePicker\" data-testid={dataTestId}>\n <CPopover.Content\n className=\"DatePicker__Content\"\n data-testid={`${dataTestId}-content`}\n css={{ ...styles.content, minW: '340px' }}\n >\n <CPopover.Body css={{ '--popover-padding': 0 }}>\n <DatePickerHeader />\n <Divider />\n <DatePickerCalendar />\n {withDateRange && !hideFooter && <DatePickerFooter {...footerProps} />}\n </CPopover.Body>\n </CPopover.Content>\n </CPopover.Positioner>\n </Portal>\n </DatePickerProvider>\n );\n};\n"],"names":["isBefore","date","dateToCompare","toDate","isDateAfterMin","minDate","isAfter","isDateBeforeMax","maxDate","DatePickerInput","inputProps","dataTestId","setFocusedInput","startDate","endDate","focusedInput","dateFormat","withDateRange","onDateChange","onDateSelect","onClose","useDatePickerContext","open","setOpen","usePopoverContext","iconSize","onKeyDown","e","onInputChange","dateValue","parsedDate","parseDate","today","isDate","HStack","jsx","TextInput","Flex","FocusedInput","Icon","getInputValue","format","jsxs","Fragment","Text","DatePickerFooter","buttonText","onSubmit","hideResetButton","clearDates","standalone","handleSubmit","useCallback","Button","DatePicker","props","footerProps","hideFooter","portalled","contentRef","usePortalContentRef","styles","useSlotRecipe","popoverRecipe","DatePickerProvider","CPopover.Trigger","Portal","CPopover.Positioner","CPopover.Content","CPopover.Body","DatePickerHeader","Divider","DatePickerCalendar"],"mappings":"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","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"datePicker.component-DgbWKb2q.js","sources":["../../node_modules/date-fns/isBefore.js","../../src/components/DatePicker/components/DatePickerInput/datePickerInput.utils.ts","../../src/components/DatePicker/components/DatePickerInput/datePickerInput.component.tsx","../../src/components/DatePicker/components/DatePickerFooter/datePickerFooter.component.tsx","../../src/components/DatePicker/datePicker.component.tsx"],"sourcesContent":["import { toDate } from \"./toDate.js\";\n\n/**\n * @name isBefore\n * @category Common Helpers\n * @summary Is the first date before the second one?\n *\n * @description\n * Is the first date before the second one?\n *\n * @param date - The date that should be before the other one to return true\n * @param dateToCompare - The date to compare with\n *\n * @returns The first date is before the second date\n *\n * @example\n * // Is 10 July 1989 before 11 February 1987?\n * const result = isBefore(new Date(1989, 6, 10), new Date(1987, 1, 11))\n * //=> false\n */\nexport function isBefore(date, dateToCompare) {\n return +toDate(date) < +toDate(dateToCompare);\n}\n\n// Fallback for modularized imports:\nexport default isBefore;\n","import isAfter from 'date-fns/isAfter';\nimport isBefore from 'date-fns/isBefore';\n\nexport const isDateAfterMin = (date: Date, minDate?: Date): boolean => (minDate ? isAfter(date, minDate) : true);\nexport const isDateBeforeMax = (date: Date, maxDate?: Date): boolean => (maxDate ? isBefore(date, maxDate) : true);\n","import React, { ChangeEvent } from 'react';\nimport { Flex } from '@chakra-ui/react/flex';\nimport { HStack } from '@chakra-ui/react/stack';\nimport { TextInput, TextInputProps } from 'components/TextInput/textInput.component';\nimport { Icon } from 'components/Icon/icon.component';\nimport { Text } from 'components/Text/text.component';\nimport isDate from 'date-fns/isDate';\nimport { getInputValue, parseDate } from '@datepicker-react/hooks';\nimport { isDateAfterMin, isDateBeforeMax } from './datePickerInput.utils';\nimport { FocusedInput, today, useDatePickerContext } from '../../context/datePicker.context';\nimport format from 'date-fns/format';\nimport { usePopoverContext } from '@chakra-ui/react/popover';\n\ninterface DatePickerInputProps {\n /** Props to customize the input field. See `TextInput` for more information. */\n inputProps?: Omit<TextInputProps, 'onChange' | 'value' | 'isClearable' | 'onClear'>;\n /** Data test id for the input.\n * @default kibble-datepicker-input\n */\n 'data-testid'?: string;\n}\n\nexport function DatePickerInput({\n inputProps,\n ['data-testid']: dataTestId = 'kibble-datepicker-input',\n}: DatePickerInputProps): React.JSX.Element {\n const {\n setFocusedInput,\n startDate,\n endDate,\n focusedInput,\n dateFormat,\n withDateRange,\n minDate,\n maxDate,\n onDateChange,\n onDateSelect,\n onClose,\n } = useDatePickerContext();\n const { open, setOpen } = usePopoverContext();\n const iconSize = inputProps?.size || 'md';\n\n const onKeyDown = (e: React.KeyboardEvent): void => {\n if (e.key === 'Enter' && open) {\n setOpen(false);\n onClose();\n e.preventDefault();\n e.stopPropagation();\n }\n };\n\n const onInputChange = (e: ChangeEvent<HTMLInputElement>): void => {\n const dateValue = e.target.value;\n const parsedDate = parseDate(dateValue, dateFormat, today);\n\n if (\n dateValue.length === dateFormat.length &&\n isDate(parsedDate) &&\n isDateAfterMin(parsedDate, minDate) &&\n isDateBeforeMax(parsedDate, maxDate)\n ) {\n onDateSelect(parsedDate);\n }\n\n // Trigger change when input is empty\n if (!dateValue.length && onDateChange) {\n onDateChange({ startDate: null, endDate: null });\n }\n };\n\n return (\n <HStack w=\"100%\" className=\"DatePicker__Trigger\" data-testid={dataTestId}>\n <TextInput\n className=\"DatePicker__Input--Start\"\n data-testid={`${dataTestId}-start`}\n autoComplete=\"off\"\n rightElement={\n <Flex\n {...(!inputProps?.disabled && {\n onClick: (): void => setFocusedInput(FocusedInput.StartDate),\n })}\n h=\"100%\"\n align=\"center\"\n >\n <Icon name=\"calendarDate\" size={iconSize} />\n </Flex>\n }\n value={getInputValue(startDate, dateFormat, '')}\n onChange={onInputChange}\n onKeyDown={onKeyDown}\n {...(!inputProps?.disabled && {\n onFocus: (): void => {\n setFocusedInput(FocusedInput.StartDate);\n },\n })}\n placeholder={format(today, dateFormat).toString()}\n {...(focusedInput === FocusedInput.StartDate && {\n 'data-focus': true,\n })}\n {...inputProps}\n />\n {withDateRange && (\n <>\n <Text> - </Text>\n <TextInput\n className=\"DatePicker__Input--End\"\n data-testid={`${dataTestId}-end`}\n rightElement={\n <Flex\n {...(!inputProps?.disabled && {\n onClick: (): void => setFocusedInput(FocusedInput.StartDate),\n })}\n h=\"100%\"\n align=\"center\"\n >\n <Icon name=\"calendarDate\" size={iconSize} />\n </Flex>\n }\n value={getInputValue(endDate, dateFormat, '')}\n onChange={onInputChange}\n {...(!inputProps?.disabled && {\n onFocus: (): void => setFocusedInput(FocusedInput.EndDate),\n })}\n onKeyDown={onKeyDown}\n placeholder={format(today, dateFormat).toString()}\n {...(focusedInput === FocusedInput.EndDate && {\n 'data-focus': true,\n })}\n {...inputProps}\n />\n </>\n )}\n </HStack>\n );\n}\n","import React, { useCallback } from 'react';\nimport { Button } from 'components/Button/button.component';\nimport { HStack } from '@chakra-ui/react/stack';\nimport { DateRange } from '../../datePicker.types';\nimport { useDatePickerContext } from '../../context/datePicker.context';\nimport { usePopoverContext } from '@chakra-ui/react/popover';\n\nexport interface DatePickerFooterProps {\n /** Text to display in the submit button.\n * @default Apply\n */\n buttonText?: string;\n /** Callback function to be called when the submit button is clicked. */\n onSubmit?: ({ startDate, endDate }: DateRange) => void;\n /** If true, the reset button will be hidden. */\n hideResetButton?: boolean;\n /** Data test id for the footer.\n * @default kibble-datepicker-footer\n */\n 'data-testid'?: string;\n}\n\nexport function DatePickerFooter({\n buttonText = 'Apply',\n onSubmit,\n hideResetButton,\n}: DatePickerFooterProps): React.JSX.Element {\n const { startDate, endDate, clearDates, standalone } = useDatePickerContext();\n const { open, setOpen } = usePopoverContext();\n\n const handleSubmit = useCallback((): void => {\n if (!standalone) {\n setOpen(false);\n }\n\n if (onSubmit) {\n onSubmit({ startDate, endDate });\n }\n }, [standalone, setOpen, onSubmit, startDate, endDate]);\n\n return (\n <HStack\n w=\"100%\"\n justify={hideResetButton ? 'end' : 'space-between'}\n align=\"center\"\n borderTop=\"1px\"\n borderColor=\"border.default\"\n px={3}\n py={2}\n >\n {!hideResetButton && (\n <Button size=\"sm\" variant=\"ghostNeutral\" onClick={() => clearDates({ open })}>\n Clear Dates\n </Button>\n )}\n <Button size=\"sm\" onClick={handleSubmit}>\n {buttonText}\n </Button>\n </HStack>\n );\n}\n","import React from 'react';\nimport { DateProps } from './datePicker.types';\nimport { TextInputProps } from 'components/TextInput/textInput.component';\nimport { Placement } from 'shared/types/placement';\nimport { DatePickerProvider } from './context/datePicker.provider';\nimport { DatePickerInput } from './components/DatePickerInput/datePickerInput.component';\nimport { DatePickerFooter, DatePickerFooterProps } from './components/DatePickerFooter/datePickerFooter.component';\nimport { DatePickerHeader } from './components/DatePickerHeader/datePickerHeader.component';\nimport { DatePickerCalendar } from './components/DatePickerCalendar/datePickerCalendar.component';\nimport { Popover as CPopover } from '@chakra-ui/react/popover';\nimport { Portal } from '@chakra-ui/react/portal';\nimport { useSlotRecipe } from '@chakra-ui/react/styled-system';\nimport { popoverRecipe } from 'components/Popover/popover.recipe';\nimport { usePortalContentRef } from 'hooks/usePortalContentRef';\nimport { Divider } from 'components/Divider';\n\nexport interface DatePickerProps extends DateProps {\n /** Props to customize the calendar footer. Only applicable when `withDateRange` is true. */\n footerProps?: DatePickerFooterProps;\n /**\n * Hides the calendar footer with the submit button. Only applicable when `withDateRange` is true.\n * @default false\n */\n hideFooter?: boolean;\n /** Props to customize the input field. See `TextInput` for more information. */\n inputProps?: Omit<TextInputProps, 'onChange' | 'value' | 'isClearable' | 'onClear'>;\n /**\n * Placement of the calendar popover\n * @default bottom\n */\n placement?: Placement;\n /**\n * If true, the date picker will be rendered in a portal.\n * @default true\n */\n portalled?: boolean;\n /**\n * If true, the date picker will render two input fields that control both the start and end date for a range selection.\n * @default false\n */\n withDateRange?: boolean;\n /** Data test id for the date picker.\n * @default kibble-datepicker\n */\n 'data-testid'?: string;\n}\n\nexport const DatePicker = (props: DatePickerProps): React.JSX.Element => {\n const {\n footerProps,\n hideFooter = false,\n inputProps,\n portalled = true,\n withDateRange = false,\n ['data-testid']: dataTestId = 'kibble-datepicker',\n } = props;\n const { contentRef } = usePortalContentRef();\n const recipe = useSlotRecipe({ recipe: popoverRecipe });\n const styles = recipe();\n\n return (\n <DatePickerProvider {...props}>\n <CPopover.Trigger w=\"100%\">\n <DatePickerInput inputProps={{ ...inputProps, readOnly: true }} />\n </CPopover.Trigger>\n <Portal container={contentRef || undefined} disabled={!portalled}>\n <CPopover.Positioner className=\"DatePicker\" data-testid={dataTestId}>\n <CPopover.Content\n className=\"DatePicker__Content\"\n data-testid={`${dataTestId}-content`}\n css={{ ...styles.content, minW: '340px' }}\n >\n <CPopover.Body css={{ '--popover-padding': 0 }}>\n <DatePickerHeader />\n <Divider />\n <DatePickerCalendar />\n {withDateRange && !hideFooter && <DatePickerFooter {...footerProps} />}\n </CPopover.Body>\n </CPopover.Content>\n </CPopover.Positioner>\n </Portal>\n </DatePickerProvider>\n );\n};\n"],"names":["isBefore","date","dateToCompare","toDate","isDateAfterMin","minDate","isAfter","isDateBeforeMax","maxDate","DatePickerInput","inputProps","dataTestId","setFocusedInput","startDate","endDate","focusedInput","dateFormat","withDateRange","onDateChange","onDateSelect","onClose","useDatePickerContext","open","setOpen","usePopoverContext","iconSize","onKeyDown","e","onInputChange","dateValue","parsedDate","parseDate","today","isDate","HStack","jsx","TextInput","Flex","FocusedInput","Icon","getInputValue","format","jsxs","Fragment","Text","DatePickerFooter","buttonText","onSubmit","hideResetButton","clearDates","standalone","handleSubmit","useCallback","Button","DatePicker","props","footerProps","hideFooter","portalled","contentRef","usePortalContentRef","styles","useSlotRecipe","popoverRecipe","DatePickerProvider","CPopover.Trigger","Portal","CPopover.Positioner","CPopover.Content","CPopover.Body","DatePickerHeader","Divider","DatePickerCalendar"],"mappings":"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","x_google_ignoreList":[0]}