@planningcenter/tapestry 3.7.0 → 3.7.1-qa-1061.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (32) hide show
  1. package/dist/components/DataTable/DataTable.d.ts +49 -0
  2. package/dist/components/DataTable/DataTable.d.ts.map +1 -0
  3. package/dist/components/DataTable/DataTable.js +71 -0
  4. package/dist/components/DataTable/DataTable.js.map +1 -0
  5. package/dist/components/DataTable/DataTableColumn.d.ts +105 -0
  6. package/dist/components/DataTable/DataTableColumn.d.ts.map +1 -0
  7. package/dist/components/DataTable/DataTableColumnTypes.d.ts +60 -0
  8. package/dist/components/DataTable/DataTableColumnTypes.d.ts.map +1 -0
  9. package/dist/components/DataTable/DataTableColumnTypes.js +167 -0
  10. package/dist/components/DataTable/DataTableColumnTypes.js.map +1 -0
  11. package/dist/components/DataTable/DataTableRow.d.ts +2 -0
  12. package/dist/components/DataTable/DataTableRow.d.ts.map +1 -0
  13. package/dist/components/DataTable/DataTableRow.js +9 -0
  14. package/dist/components/DataTable/DataTableRow.js.map +1 -0
  15. package/dist/components/DataTable/index.d.ts +5 -0
  16. package/dist/components/DataTable/index.d.ts.map +1 -0
  17. package/dist/components/dropdown/Dropdown.d.ts +9 -1
  18. package/dist/components/dropdown/Dropdown.d.ts.map +1 -1
  19. package/dist/components/dropdown/Dropdown.js.map +1 -1
  20. package/dist/ext/@internationalized/date/dist/private/DateFormatter.js +139 -0
  21. package/dist/ext/@internationalized/date/dist/private/DateFormatter.js.map +1 -0
  22. package/dist/reactRender.css +1406 -1264
  23. package/dist/reactRender.css.map +1 -1
  24. package/dist/reactRenderLegacy.css +1406 -1264
  25. package/dist/reactRenderLegacy.css.map +1 -1
  26. package/dist/unstable.css +142 -0
  27. package/dist/unstable.css.map +1 -1
  28. package/dist/unstable.d.ts +1 -0
  29. package/dist/unstable.d.ts.map +1 -1
  30. package/dist/unstable.js +1 -0
  31. package/dist/unstable.js.map +1 -1
  32. package/package.json +5 -5
@@ -1 +1 @@
1
- {"version":3,"file":"Dropdown.js","sources":["../../../src/components/dropdown/Dropdown.tsx"],"sourcesContent":["import \"./index.css\"\n\nimport type { CombineAriaPropsWithCustomProps } from \"@utilities/reactAriaProps\"\nimport classNames from \"classnames\"\nimport React, {\n type ComponentProps,\n type ReactElement,\n type ReactNode,\n} from \"react\"\nimport type {\n Key,\n MenuItemProps,\n MenuSectionProps,\n PopoverProps,\n} from \"react-aria-components\"\nimport {\n Header,\n Menu,\n MenuItem,\n MenuSection,\n MenuTrigger,\n Popover,\n Pressable,\n Separator,\n} from \"react-aria-components/Menu\"\n\nimport { DropdownTriggerContext } from \"./DropdownTriggerContext\"\n\nexport type DropdownPlacement = NonNullable<PopoverProps[\"placement\"]>\n\nexport interface DropdownProps {\n /**\n * A `<DropdownTrigger>` followed by a `<DropdownMenu>` containing the items.\n */\n children: ReactNode\n /** Fires when the menu closes. */\n onClose?: () => void\n /** Fires when the menu opens. Useful for analytics or lazy data prep. */\n onOpen?: () => void\n}\n\nexport type DropdownElementProps = DropdownProps\n\n/**\n * An action menu — a button that, when activated, reveals a list of actions or\n * navigation links. Composed of a `<DropdownTrigger>` wrapping a Tapestry\n * dropdown-trigger button (`DropdownButton`, `DropdownIconButton`, or\n * `PageHeaderActionsDropdownButton`) and a `<DropdownMenu>` containing\n * `<DropdownAction>`, `<DropdownLink>`, `<DropdownSection>`, and\n * `<DropdownSeparator>` items.\n *\n * **Dropdown vs Select.** Use `Dropdown` to trigger an action (\"Edit\",\n * \"Delete\") or navigate (\"Go to documentation\"). Use `Select` to collect a\n * value that is bound to form data or component state. They look visually\n * similar but follow different ARIA patterns (Menu vs Combobox/Listbox) and\n * are not interchangeable.\n *\n * Built on React Aria's `MenuTrigger` primitive; popover positioning and menu\n * identity live on `<DropdownMenu>`.\n *\n * @component\n * @see {@link https://www.w3.org/WAI/ARIA/apg/patterns/menu/ | W3C APG Menu Pattern}\n * @see {@link https://github.com/planningcenter/tapestry/tree/main/packages/tapestry-migration-cli | Migration CLI: Available}\n */\nexport function Dropdown({ children, onClose, onOpen }: DropdownElementProps) {\n const handleOpenChange = (isOpen: boolean) => {\n if (isOpen) onOpen?.()\n else onClose?.()\n }\n\n return <MenuTrigger onOpenChange={handleOpenChange}>{children}</MenuTrigger>\n}\n\nexport interface DropdownMenuProps {\n /**\n * `<DropdownAction>` / `<DropdownLink>` / `<DropdownSection>` /\n * `<DropdownSeparator>` elements.\n */\n children: ReactNode\n /** Override for the underlying `<Menu>` element id. */\n id?: string\n /**\n * Popover position relative to the trigger. Uses React Aria's\n * space-separated format (e.g., `\"bottom start\"`, `\"top end\"`,\n * `\"left top\"`). Defaults to `\"bottom start\"`.\n */\n placement?: DropdownPlacement\n}\n\nexport type DropdownMenuElementProps = DropdownMenuProps\n\n/**\n * The popover surface for a `<Dropdown>`. Wraps React Aria's `<Popover>` and\n * `<Menu>` and contains the menu items.\n *\n * @component\n */\nexport function DropdownMenu({\n children,\n id,\n placement = \"bottom start\",\n}: DropdownMenuElementProps) {\n return (\n <Popover className=\"tds-dropdown-popover\" placement={placement}>\n <Menu id={id}>{children}</Menu>\n </Popover>\n )\n}\n\nexport interface DropdownTriggerProps {\n /**\n * A single Tapestry dropdown-trigger button element (`DropdownButton`,\n * `DropdownIconButton`, or `PageHeaderActionsDropdownButton`).\n */\n children: ReactElement\n /**\n * Whether the trigger is disabled. This is the single source of truth for the\n * trigger's disabled state — a `disabled` set directly on the child button\n * does not win.\n */\n disabled?: boolean\n}\n\n/**\n * Wraps a single Tapestry dropdown-trigger button and bridges it to React\n * Aria's `MenuTrigger` via `<Pressable>`.\n * Uses context to pass `disabled` to the trigger button.\n *\n * @component\n */\ntype PressableChild = ComponentProps<typeof Pressable>[\"children\"]\n\nexport function DropdownTrigger({ children, disabled }: DropdownTriggerProps) {\n return (\n <DropdownTriggerContext.Provider value={{ disabled }}>\n <Pressable isDisabled={disabled}>{children as PressableChild}</Pressable>\n </DropdownTriggerContext.Provider>\n )\n}\n\nexport interface DropdownItemBaseProps {\n /** Applies destructive styling. */\n destructive?: boolean\n /** Applies staff-only visual treatment. */\n staffOnly?: boolean\n}\n\nexport interface DropdownActionProps extends DropdownItemBaseProps {\n /**\n * Disables the item. Renamed to React Aria's `isDisabled` inside the\n * wrapper. Disabled items are skipped by keyboard traversal and won't fire\n * `onAction`.\n */\n disabled?: boolean\n /**\n * Stable identifier — required by React Aria's collection model for keying\n * and focus tracking.\n */\n id: Key\n /** Callback fired when the item is activated. */\n onAction: () => void\n}\n\ntype AriaActionPropsToOmit =\n | \"href\"\n | \"isDisabled\"\n | \"rel\"\n | \"routerOptions\"\n | \"target\"\n | \"value\"\ntype AriaActionPropsToInclude = \"textValue\"\n\nexport type DropdownActionElementProps<T extends object = object> =\n CombineAriaPropsWithCustomProps<\n MenuItemProps<T>,\n DropdownActionProps,\n AriaActionPropsToOmit,\n AriaActionPropsToInclude\n >\n\n/**\n * A `<Dropdown>` item that fires a callback when activated. Renders an RA\n * `<MenuItem>` (`role=\"menuitem\"`). Children are passed through and can use\n * the slot convention (`slot=\"label\" | \"prefix\" | \"suffix\" | \"description\"`)\n * for structured content.\n *\n * @component\n */\nexport function DropdownAction<T extends object>({\n className,\n destructive,\n disabled,\n staffOnly,\n ...restProps\n}: DropdownActionElementProps<T>) {\n return (\n <MenuItem\n {...restProps}\n className={classNames(\n \"tds-dropdown-item\",\n {\n \"tds-dropdown-item--destructive\": destructive,\n \"tds-dropdown-item--staff-only\": staffOnly,\n },\n className\n )}\n isDisabled={disabled}\n />\n )\n}\n\nexport interface DropdownLinkProps extends DropdownItemBaseProps {\n /** If `true`, sets `target=\"_blank\"` and `rel=\"noreferrer noopener\"`. */\n external?: boolean\n /** Destination URL. */\n href: string\n /**\n * Stable identifier — required by React Aria's collection model for keying\n * and focus tracking.\n */\n id: Key\n}\n\ntype AriaLinkPropsToOmit =\n | \"isDisabled\"\n | \"onAction\"\n | \"rel\"\n | \"target\"\n | \"value\"\ntype AriaLinkPropsToInclude = \"href\" | \"routerOptions\" | \"textValue\"\n\nexport type DropdownLinkElementProps<T extends object = object> =\n CombineAriaPropsWithCustomProps<\n MenuItemProps<T>,\n DropdownLinkProps,\n AriaLinkPropsToOmit,\n AriaLinkPropsToInclude\n >\n\n/**\n * A `<Dropdown>` item that navigates to a URL. Renders an RA `<MenuItem>` as\n * an anchor (`<a role=\"menuitem\" href=\"…\">`). Pass `external` to open in a\n * new tab with `rel=\"noreferrer noopener\"`.\n *\n * `disabled` is intentionally not accepted — HTML has no native disabled state\n * for anchors, and a \"disabled link\" has no accessible analog. If a link\n * shouldn't be activatable, omit it.\n *\n * @component\n */\nexport function DropdownLink<T extends object>({\n className,\n destructive,\n external,\n staffOnly,\n ...restProps\n}: DropdownLinkElementProps<T>) {\n const externalProps = external\n ? { rel: \"noreferrer noopener\", target: \"_blank\" as const }\n : null\n return (\n <MenuItem\n {...restProps}\n {...externalProps}\n className={classNames(\n \"tds-dropdown-item\",\n {\n \"tds-dropdown-item--destructive\": destructive,\n \"tds-dropdown-item--staff-only\": staffOnly,\n },\n className\n )}\n />\n )\n}\n\nexport interface DropdownSectionProps {\n /** The items rendered within the section. */\n children: ReactNode\n /**\n * Heading rendered above the section's items. Required — RA renders the\n * section as `role=\"group\"` and the heading provides the group's\n * accessible name via `aria-labelledby`.\n */\n title: string\n}\n\nexport type DropdownSectionElementProps<T extends object = object> =\n CombineAriaPropsWithCustomProps<\n MenuSectionProps<T>,\n DropdownSectionProps,\n \"value\",\n never\n >\n\n/**\n * A grouped section within a `<Dropdown>`. Renders an RA `<MenuSection>`\n * (`role=\"group\"`) with an optional `<Header>` heading when `title` is set.\n *\n * @component\n */\nexport function DropdownSection<T extends object>({\n children,\n className,\n title,\n ...restProps\n}: DropdownSectionElementProps<T>) {\n return (\n <MenuSection\n {...restProps}\n className={classNames(\"tds-dropdown-section\", className)}\n >\n <Header className=\"tds-dropdown-section-label\">{title}</Header>\n {children}\n </MenuSection>\n )\n}\n\nexport type DropdownSeparatorElementProps = Record<string, never>\n\n/**\n * A divider between items in a `<Dropdown>`. Renders an RA `<Separator>`\n * (`role=\"separator\"`).\n *\n * @component\n */\nexport function DropdownSeparator() {\n return <Separator className=\"tds-dropdown-separator\" />\n}\n"],"names":["React"],"mappings":";;;;;AA2CA;;;;;;;;;;;;;;;;;;;;AAoBG;AACG,SAAU,QAAQ,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAwB,EAAA;AAC1E,IAAA,MAAM,gBAAgB,GAAG,CAAC,MAAe,KAAI;AAC3C,QAAA,IAAI,MAAM;YAAE,MAAM,IAAI;;YACjB,OAAO,IAAI;AAClB,IAAA,CAAC;IAED,OAAOA,cAAA,CAAA,aAAA,CAAC,WAAW,EAAA,EAAC,YAAY,EAAE,gBAAgB,EAAA,EAAG,QAAQ,CAAe;AAC9E;AAoBA;;;;;AAKG;AACG,SAAU,YAAY,CAAC,EAC3B,QAAQ,EACR,EAAE,EACF,SAAS,GAAG,cAAc,GACD,EAAA;IACzB,QACEA,cAAA,CAAA,aAAA,CAAC,OAAO,EAAA,EAAC,SAAS,EAAC,sBAAsB,EAAC,SAAS,EAAE,SAAS,EAAA;QAC5DA,cAAA,CAAA,aAAA,CAAC,IAAI,EAAA,EAAC,EAAE,EAAE,EAAE,IAAG,QAAQ,CAAQ,CACvB;AAEd;SAyBgB,eAAe,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAwB,EAAA;IAC1E,QACEA,cAAA,CAAA,aAAA,CAAC,sBAAsB,CAAC,QAAQ,IAAC,KAAK,EAAE,EAAE,QAAQ,EAAE,EAAA;QAClDA,cAAA,CAAA,aAAA,CAAC,SAAS,EAAA,EAAC,UAAU,EAAE,QAAQ,IAAG,QAA0B,CAAa,CACzC;AAEtC;AA0CA;;;;;;;AAOG;AACG,SAAU,cAAc,CAAmB,EAC/C,SAAS,EACT,WAAW,EACX,QAAQ,EACR,SAAS,EACT,GAAG,SAAS,EACkB,EAAA;IAC9B,QACEA,cAAA,CAAA,aAAA,CAAC,QAAQ,EAAA,EAAA,GACH,SAAS,EACb,SAAS,EAAE,UAAU,CACnB,mBAAmB,EACnB;AACE,YAAA,gCAAgC,EAAE,WAAW;AAC7C,YAAA,+BAA+B,EAAE,SAAS;SAC3C,EACD,SAAS,CACV,EACD,UAAU,EAAE,QAAQ,EAAA,CACpB;AAEN;AA8BA;;;;;;;;;;AAUG;AACG,SAAU,YAAY,CAAmB,EAC7C,SAAS,EACT,WAAW,EACX,QAAQ,EACR,SAAS,EACT,GAAG,SAAS,EACgB,EAAA;IAC5B,MAAM,aAAa,GAAG;UAClB,EAAE,GAAG,EAAE,qBAAqB,EAAE,MAAM,EAAE,QAAiB;UACvD,IAAI;AACR,IAAA,QACEA,cAAA,CAAA,aAAA,CAAC,QAAQ,EAAA,EAAA,GACH,SAAS,EAAA,GACT,aAAa,EACjB,SAAS,EAAE,UAAU,CACnB,mBAAmB,EACnB;AACE,YAAA,gCAAgC,EAAE,WAAW;AAC7C,YAAA,+BAA+B,EAAE,SAAS;AAC3C,SAAA,EACD,SAAS,CACV,EAAA,CACD;AAEN;AAqBA;;;;;AAKG;AACG,SAAU,eAAe,CAAmB,EAChD,QAAQ,EACR,SAAS,EACT,KAAK,EACL,GAAG,SAAS,EACmB,EAAA;AAC/B,IAAA,QACEA,cAAA,CAAA,aAAA,CAAC,WAAW,EAAA,EAAA,GACN,SAAS,EACb,SAAS,EAAE,UAAU,CAAC,sBAAsB,EAAE,SAAS,CAAC,EAAA;AAExD,QAAAA,cAAA,CAAA,aAAA,CAAC,MAAM,EAAA,EAAC,SAAS,EAAC,4BAA4B,EAAA,EAAE,KAAK,CAAU;QAC9D,QAAQ,CACG;AAElB;AAIA;;;;;AAKG;SACa,iBAAiB,GAAA;AAC/B,IAAA,OAAOA,6BAAC,SAAS,EAAA,EAAC,SAAS,EAAC,wBAAwB,GAAG;AACzD;;;;"}
1
+ {"version":3,"file":"Dropdown.js","sources":["../../../src/components/dropdown/Dropdown.tsx"],"sourcesContent":["import \"./index.css\"\n\nimport type { CombineAriaPropsWithCustomProps } from \"@utilities/reactAriaProps\"\nimport classNames from \"classnames\"\nimport React, {\n type ComponentProps,\n type ReactElement,\n type ReactNode,\n} from \"react\"\nimport type {\n Key,\n MenuItemProps,\n MenuSectionProps,\n PopoverProps,\n} from \"react-aria-components\"\nimport {\n Header,\n Menu,\n MenuItem,\n MenuSection,\n MenuTrigger,\n Popover,\n Pressable,\n Separator,\n} from \"react-aria-components/Menu\"\n\nimport { DropdownTriggerContext } from \"./DropdownTriggerContext\"\n\nexport type DropdownPlacement = NonNullable<PopoverProps[\"placement\"]>\n\nexport interface DropdownProps {\n /**\n * A `<DropdownTrigger>` followed by a `<DropdownMenu>` containing the items.\n */\n children: ReactNode\n /** Fires when the menu closes. */\n onClose?: () => void\n /** Fires when the menu opens. Useful for analytics or lazy data prep. */\n onOpen?: () => void\n}\n\nexport type DropdownElementProps = DropdownProps\n\n/**\n * An action menu — a button that, when activated, reveals a list of actions or\n * navigation links. Composed of a `<DropdownTrigger>` wrapping a Tapestry\n * dropdown-trigger button (`DropdownButton`, `DropdownIconButton`, or\n * `PageHeaderActionsDropdownButton`) and a `<DropdownMenu>` containing\n * `<DropdownAction>`, `<DropdownLink>`, `<DropdownSection>`, and\n * `<DropdownSeparator>` items.\n *\n * **Dropdown vs Select.** Use `Dropdown` to trigger an action (\"Edit\",\n * \"Delete\") or navigate (\"Go to documentation\"). Use `Select` to collect a\n * value that is bound to form data or component state. They look visually\n * similar but follow different ARIA patterns (Menu vs Combobox/Listbox) and\n * are not interchangeable.\n *\n * Built on React Aria's `MenuTrigger` primitive; popover positioning and menu\n * identity live on `<DropdownMenu>`.\n *\n * @component\n * @see {@link https://www.w3.org/WAI/ARIA/apg/patterns/menu/ | W3C APG Menu Pattern}\n * @see {@link https://github.com/planningcenter/tapestry/tree/main/packages/tapestry-migration-cli | Migration CLI: Available}\n */\nexport function Dropdown({ children, onClose, onOpen }: DropdownElementProps) {\n const handleOpenChange = (isOpen: boolean) => {\n if (isOpen) onOpen?.()\n else onClose?.()\n }\n\n return <MenuTrigger onOpenChange={handleOpenChange}>{children}</MenuTrigger>\n}\n\nexport interface DropdownMenuProps {\n /**\n * `<DropdownAction>` / `<DropdownLink>` / `<DropdownSection>` /\n * `<DropdownSeparator>` elements.\n */\n children: ReactNode\n /** Override for the underlying `<Menu>` element id. */\n id?: string\n /**\n * Popover position relative to the trigger. Uses React Aria's\n * space-separated format (e.g., `\"bottom start\"`, `\"top end\"`,\n * `\"left top\"`). Defaults to `\"bottom start\"`.\n */\n placement?: DropdownPlacement\n}\n\nexport type DropdownMenuElementProps = DropdownMenuProps\n\n/**\n * The popover surface for a `<Dropdown>`. Wraps React Aria's `<Popover>` and\n * `<Menu>` and contains the menu items.\n *\n * @component\n */\nexport function DropdownMenu({\n children,\n id,\n placement = \"bottom start\",\n}: DropdownMenuElementProps) {\n return (\n <Popover className=\"tds-dropdown-popover\" placement={placement}>\n <Menu id={id}>{children}</Menu>\n </Popover>\n )\n}\n\nexport interface DropdownTriggerProps {\n /**\n * A single Tapestry dropdown-trigger button element (`DropdownButton`,\n * `DropdownIconButton`, or `PageHeaderActionsDropdownButton`).\n */\n children: ReactElement\n /**\n * Whether the trigger is disabled. This is the single source of truth for the\n * trigger's disabled state — a `disabled` set directly on the child button\n * does not win.\n */\n disabled?: boolean\n}\n\n/**\n * Wraps a single Tapestry dropdown-trigger button and bridges it to React\n * Aria's `MenuTrigger` via `<Pressable>`.\n * Uses context to pass `disabled` to the trigger button.\n *\n * @component\n */\ntype PressableChild = ComponentProps<typeof Pressable>[\"children\"]\n\nexport function DropdownTrigger({ children, disabled }: DropdownTriggerProps) {\n return (\n <DropdownTriggerContext.Provider value={{ disabled }}>\n <Pressable isDisabled={disabled}>{children as PressableChild}</Pressable>\n </DropdownTriggerContext.Provider>\n )\n}\n\nexport interface DropdownItemBaseProps {\n /** Applies destructive styling. */\n destructive?: boolean\n /** Applies staff-only visual treatment. */\n staffOnly?: boolean\n}\n\nexport interface DropdownActionProps extends DropdownItemBaseProps {\n /**\n * Disables the item. Renamed to React Aria's `isDisabled` inside the\n * wrapper. Disabled items are skipped by keyboard traversal and won't fire\n * `onAction`.\n */\n disabled?: boolean\n /**\n * Stable identifier — required by React Aria's collection model for keying\n * and focus tracking.\n */\n id: Key\n /**\n * Callback fired when the item is activated.\n *\n * React Aria closes the menu and returns focus to the trigger after this\n * runs, which can override a focus change made here — e.g. focusing a\n * nearby input. If `onAction` needs to move focus elsewhere, wrap that\n * part in `queueMicrotask` to defer it until after React Aria's\n * focus-restore has finished: `queueMicrotask(() => inputRef.current?.focus())`.\n */\n onAction: () => void\n}\n\ntype AriaActionPropsToOmit =\n | \"href\"\n | \"isDisabled\"\n | \"rel\"\n | \"routerOptions\"\n | \"target\"\n | \"value\"\ntype AriaActionPropsToInclude = \"textValue\"\n\nexport type DropdownActionElementProps<T extends object = object> =\n CombineAriaPropsWithCustomProps<\n MenuItemProps<T>,\n DropdownActionProps,\n AriaActionPropsToOmit,\n AriaActionPropsToInclude\n >\n\n/**\n * A `<Dropdown>` item that fires a callback when activated. Renders an RA\n * `<MenuItem>` (`role=\"menuitem\"`). Children are passed through and can use\n * the slot convention (`slot=\"label\" | \"prefix\" | \"suffix\" | \"description\"`)\n * for structured content.\n *\n * @component\n */\nexport function DropdownAction<T extends object>({\n className,\n destructive,\n disabled,\n staffOnly,\n ...restProps\n}: DropdownActionElementProps<T>) {\n return (\n <MenuItem\n {...restProps}\n className={classNames(\n \"tds-dropdown-item\",\n {\n \"tds-dropdown-item--destructive\": destructive,\n \"tds-dropdown-item--staff-only\": staffOnly,\n },\n className\n )}\n isDisabled={disabled}\n />\n )\n}\n\nexport interface DropdownLinkProps extends DropdownItemBaseProps {\n /** If `true`, sets `target=\"_blank\"` and `rel=\"noreferrer noopener\"`. */\n external?: boolean\n /** Destination URL. */\n href: string\n /**\n * Stable identifier — required by React Aria's collection model for keying\n * and focus tracking.\n */\n id: Key\n}\n\ntype AriaLinkPropsToOmit =\n | \"isDisabled\"\n | \"onAction\"\n | \"rel\"\n | \"target\"\n | \"value\"\ntype AriaLinkPropsToInclude = \"href\" | \"routerOptions\" | \"textValue\"\n\nexport type DropdownLinkElementProps<T extends object = object> =\n CombineAriaPropsWithCustomProps<\n MenuItemProps<T>,\n DropdownLinkProps,\n AriaLinkPropsToOmit,\n AriaLinkPropsToInclude\n >\n\n/**\n * A `<Dropdown>` item that navigates to a URL. Renders an RA `<MenuItem>` as\n * an anchor (`<a role=\"menuitem\" href=\"…\">`). Pass `external` to open in a\n * new tab with `rel=\"noreferrer noopener\"`.\n *\n * `disabled` is intentionally not accepted — HTML has no native disabled state\n * for anchors, and a \"disabled link\" has no accessible analog. If a link\n * shouldn't be activatable, omit it.\n *\n * @component\n */\nexport function DropdownLink<T extends object>({\n className,\n destructive,\n external,\n staffOnly,\n ...restProps\n}: DropdownLinkElementProps<T>) {\n const externalProps = external\n ? { rel: \"noreferrer noopener\", target: \"_blank\" as const }\n : null\n return (\n <MenuItem\n {...restProps}\n {...externalProps}\n className={classNames(\n \"tds-dropdown-item\",\n {\n \"tds-dropdown-item--destructive\": destructive,\n \"tds-dropdown-item--staff-only\": staffOnly,\n },\n className\n )}\n />\n )\n}\n\nexport interface DropdownSectionProps {\n /** The items rendered within the section. */\n children: ReactNode\n /**\n * Heading rendered above the section's items. Required — RA renders the\n * section as `role=\"group\"` and the heading provides the group's\n * accessible name via `aria-labelledby`.\n */\n title: string\n}\n\nexport type DropdownSectionElementProps<T extends object = object> =\n CombineAriaPropsWithCustomProps<\n MenuSectionProps<T>,\n DropdownSectionProps,\n \"value\",\n never\n >\n\n/**\n * A grouped section within a `<Dropdown>`. Renders an RA `<MenuSection>`\n * (`role=\"group\"`) with an optional `<Header>` heading when `title` is set.\n *\n * @component\n */\nexport function DropdownSection<T extends object>({\n children,\n className,\n title,\n ...restProps\n}: DropdownSectionElementProps<T>) {\n return (\n <MenuSection\n {...restProps}\n className={classNames(\"tds-dropdown-section\", className)}\n >\n <Header className=\"tds-dropdown-section-label\">{title}</Header>\n {children}\n </MenuSection>\n )\n}\n\nexport type DropdownSeparatorElementProps = Record<string, never>\n\n/**\n * A divider between items in a `<Dropdown>`. Renders an RA `<Separator>`\n * (`role=\"separator\"`).\n *\n * @component\n */\nexport function DropdownSeparator() {\n return <Separator className=\"tds-dropdown-separator\" />\n}\n"],"names":["React"],"mappings":";;;;;AA2CA;;;;;;;;;;;;;;;;;;;;AAoBG;AACG,SAAU,QAAQ,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAwB,EAAA;AAC1E,IAAA,MAAM,gBAAgB,GAAG,CAAC,MAAe,KAAI;AAC3C,QAAA,IAAI,MAAM;YAAE,MAAM,IAAI;;YACjB,OAAO,IAAI;AAClB,IAAA,CAAC;IAED,OAAOA,cAAA,CAAA,aAAA,CAAC,WAAW,EAAA,EAAC,YAAY,EAAE,gBAAgB,EAAA,EAAG,QAAQ,CAAe;AAC9E;AAoBA;;;;;AAKG;AACG,SAAU,YAAY,CAAC,EAC3B,QAAQ,EACR,EAAE,EACF,SAAS,GAAG,cAAc,GACD,EAAA;IACzB,QACEA,cAAA,CAAA,aAAA,CAAC,OAAO,EAAA,EAAC,SAAS,EAAC,sBAAsB,EAAC,SAAS,EAAE,SAAS,EAAA;QAC5DA,cAAA,CAAA,aAAA,CAAC,IAAI,EAAA,EAAC,EAAE,EAAE,EAAE,IAAG,QAAQ,CAAQ,CACvB;AAEd;SAyBgB,eAAe,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAwB,EAAA;IAC1E,QACEA,cAAA,CAAA,aAAA,CAAC,sBAAsB,CAAC,QAAQ,IAAC,KAAK,EAAE,EAAE,QAAQ,EAAE,EAAA;QAClDA,cAAA,CAAA,aAAA,CAAC,SAAS,EAAA,EAAC,UAAU,EAAE,QAAQ,IAAG,QAA0B,CAAa,CACzC;AAEtC;AAkDA;;;;;;;AAOG;AACG,SAAU,cAAc,CAAmB,EAC/C,SAAS,EACT,WAAW,EACX,QAAQ,EACR,SAAS,EACT,GAAG,SAAS,EACkB,EAAA;IAC9B,QACEA,cAAA,CAAA,aAAA,CAAC,QAAQ,EAAA,EAAA,GACH,SAAS,EACb,SAAS,EAAE,UAAU,CACnB,mBAAmB,EACnB;AACE,YAAA,gCAAgC,EAAE,WAAW;AAC7C,YAAA,+BAA+B,EAAE,SAAS;SAC3C,EACD,SAAS,CACV,EACD,UAAU,EAAE,QAAQ,EAAA,CACpB;AAEN;AA8BA;;;;;;;;;;AAUG;AACG,SAAU,YAAY,CAAmB,EAC7C,SAAS,EACT,WAAW,EACX,QAAQ,EACR,SAAS,EACT,GAAG,SAAS,EACgB,EAAA;IAC5B,MAAM,aAAa,GAAG;UAClB,EAAE,GAAG,EAAE,qBAAqB,EAAE,MAAM,EAAE,QAAiB;UACvD,IAAI;AACR,IAAA,QACEA,cAAA,CAAA,aAAA,CAAC,QAAQ,EAAA,EAAA,GACH,SAAS,EAAA,GACT,aAAa,EACjB,SAAS,EAAE,UAAU,CACnB,mBAAmB,EACnB;AACE,YAAA,gCAAgC,EAAE,WAAW;AAC7C,YAAA,+BAA+B,EAAE,SAAS;AAC3C,SAAA,EACD,SAAS,CACV,EAAA,CACD;AAEN;AAqBA;;;;;AAKG;AACG,SAAU,eAAe,CAAmB,EAChD,QAAQ,EACR,SAAS,EACT,KAAK,EACL,GAAG,SAAS,EACmB,EAAA;AAC/B,IAAA,QACEA,cAAA,CAAA,aAAA,CAAC,WAAW,EAAA,EAAA,GACN,SAAS,EACb,SAAS,EAAE,UAAU,CAAC,sBAAsB,EAAE,SAAS,CAAC,EAAA;AAExD,QAAAA,cAAA,CAAA,aAAA,CAAC,MAAM,EAAA,EAAC,SAAS,EAAC,4BAA4B,EAAA,EAAE,KAAK,CAAU;QAC9D,QAAQ,CACG;AAElB;AAIA;;;;;AAKG;SACa,iBAAiB,GAAA;AAC/B,IAAA,OAAOA,6BAAC,SAAS,EAAA,EAAC,SAAS,EAAC,wBAAwB,GAAG;AACzD;;;;"}
@@ -0,0 +1,139 @@
1
+ /*
2
+ * Copyright 2020 Adobe. All rights reserved.
3
+ * This file is licensed to you under the Apache License, Version 2.0 (the "License");
4
+ * you may not use this file except in compliance with the License. You may obtain a copy
5
+ * of the License at http://www.apache.org/licenses/LICENSE-2.0
6
+ *
7
+ * Unless required by applicable law or agreed to in writing, software distributed under
8
+ * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS
9
+ * OF ANY KIND, either express or implied. See the License for the specific language
10
+ * governing permissions and limitations under the License.
11
+ */ let $12a3c853105e5a70$var$formatterCache = new Map();
12
+ class $12a3c853105e5a70$export$ad991b66133851cf {
13
+ constructor(locale, options = {}){
14
+ this.formatter = $12a3c853105e5a70$var$getCachedDateFormatter(locale, options);
15
+ this.options = options;
16
+ }
17
+ /** Formats a date as a string according to the locale and format options passed to the constructor. */ format(value) {
18
+ return this.formatter.format(value);
19
+ }
20
+ /** Formats a date to an array of parts such as separators, numbers, punctuation, and more. */ formatToParts(value) {
21
+ return this.formatter.formatToParts(value);
22
+ }
23
+ /** Formats a date range as a string. */ formatRange(start, end) {
24
+ // @ts-ignore
25
+ if (typeof this.formatter.formatRange === 'function') // @ts-ignore
26
+ return this.formatter.formatRange(start, end);
27
+ if (end < start) throw new RangeError('End date must be >= start date');
28
+ // Very basic fallback for old browsers.
29
+ return `${this.formatter.format(start)} \u{2013} ${this.formatter.format(end)}`;
30
+ }
31
+ /** Formats a date range as an array of parts. */ formatRangeToParts(start, end) {
32
+ // @ts-ignore
33
+ if (typeof this.formatter.formatRangeToParts === 'function') // @ts-ignore
34
+ return this.formatter.formatRangeToParts(start, end);
35
+ if (end < start) throw new RangeError('End date must be >= start date');
36
+ let startParts = this.formatter.formatToParts(start);
37
+ let endParts = this.formatter.formatToParts(end);
38
+ return [
39
+ ...startParts.map((p)=>({
40
+ ...p,
41
+ source: 'startRange'
42
+ })),
43
+ {
44
+ type: 'literal',
45
+ value: " \u2013 ",
46
+ source: 'shared'
47
+ },
48
+ ...endParts.map((p)=>({
49
+ ...p,
50
+ source: 'endRange'
51
+ }))
52
+ ];
53
+ }
54
+ /** Returns the resolved formatting options based on the values passed to the constructor. */ resolvedOptions() {
55
+ let resolvedOptions = this.formatter.resolvedOptions();
56
+ if ($12a3c853105e5a70$var$hasBuggyResolvedHourCycle()) {
57
+ if (!this.resolvedHourCycle) this.resolvedHourCycle = $12a3c853105e5a70$var$getResolvedHourCycle(resolvedOptions.locale, this.options);
58
+ resolvedOptions.hourCycle = this.resolvedHourCycle;
59
+ resolvedOptions.hour12 = this.resolvedHourCycle === 'h11' || this.resolvedHourCycle === 'h12';
60
+ }
61
+ // Safari uses a different name for the Ethiopic (Amete Alem) calendar.
62
+ // https://bugs.webkit.org/show_bug.cgi?id=241564
63
+ if (resolvedOptions.calendar === 'ethiopic-amete-alem') resolvedOptions.calendar = 'ethioaa';
64
+ return resolvedOptions;
65
+ }
66
+ }
67
+ // There are multiple bugs involving the hour12 and hourCycle options in various browser engines.
68
+ // - Chrome [1] (and the ECMA 402 spec [2]) resolve hour12: false in English and other locales to h24 (24:00 - 23:59)
69
+ // rather than h23 (00:00 - 23:59). Same can happen with hour12: true in French, which Chrome resolves to h11 (00:00 - 11:59)
70
+ // rather than h12 (12:00 - 11:59).
71
+ // - WebKit returns an incorrect hourCycle resolved option in the French locale due to incorrect parsing of 'h' literal
72
+ // in the resolved pattern. It also formats incorrectly when specifying the hourCycle option for the same reason. [3]
73
+ // [1] https://bugs.chromium.org/p/chromium/issues/detail?id=1045791
74
+ // [2] https://github.com/tc39/ecma402/issues/402
75
+ // [3] https://bugs.webkit.org/show_bug.cgi?id=229313
76
+ // https://github.com/unicode-org/cldr/blob/018b55eff7ceb389c7e3fc44e2f657eae3b10b38/common/supplemental/supplementalData.xml#L4774-L4802
77
+ const $12a3c853105e5a70$var$hour12Preferences = {
78
+ true: {
79
+ // Only Japanese uses the h11 style for 12 hour time. All others use h12.
80
+ ja: 'h11'
81
+ },
82
+ false: {
83
+ }
84
+ };
85
+ function $12a3c853105e5a70$var$getCachedDateFormatter(locale, options = {}) {
86
+ // Work around buggy hour12 behavior in Chrome / ECMA 402 spec by using hourCycle instead.
87
+ // Only apply the workaround if the issue is detected, because the hourCycle option is buggy in Safari.
88
+ if (typeof options.hour12 === 'boolean' && $12a3c853105e5a70$var$hasBuggyHour12Behavior()) {
89
+ options = {
90
+ ...options
91
+ };
92
+ let pref = $12a3c853105e5a70$var$hour12Preferences[String(options.hour12)][locale.split('-')[0]];
93
+ let defaultHourCycle = options.hour12 ? 'h12' : 'h23';
94
+ options.hourCycle = pref ?? defaultHourCycle;
95
+ delete options.hour12;
96
+ }
97
+ let cacheKey = locale + (options ? Object.entries(options).sort((a, b)=>a[0] < b[0] ? -1 : 1).join() : '');
98
+ if ($12a3c853105e5a70$var$formatterCache.has(cacheKey)) return $12a3c853105e5a70$var$formatterCache.get(cacheKey);
99
+ let numberFormatter = new Intl.DateTimeFormat(locale, options);
100
+ $12a3c853105e5a70$var$formatterCache.set(cacheKey, numberFormatter);
101
+ return numberFormatter;
102
+ }
103
+ let $12a3c853105e5a70$var$_hasBuggyHour12Behavior = null;
104
+ function $12a3c853105e5a70$var$hasBuggyHour12Behavior() {
105
+ if ($12a3c853105e5a70$var$_hasBuggyHour12Behavior == null) $12a3c853105e5a70$var$_hasBuggyHour12Behavior = new Intl.DateTimeFormat('en-US', {
106
+ hour: 'numeric',
107
+ hour12: false
108
+ }).format(new Date(2020, 2, 3, 0)) === '24';
109
+ return $12a3c853105e5a70$var$_hasBuggyHour12Behavior;
110
+ }
111
+ let $12a3c853105e5a70$var$_hasBuggyResolvedHourCycle = null;
112
+ function $12a3c853105e5a70$var$hasBuggyResolvedHourCycle() {
113
+ if ($12a3c853105e5a70$var$_hasBuggyResolvedHourCycle == null) $12a3c853105e5a70$var$_hasBuggyResolvedHourCycle = new Intl.DateTimeFormat('fr', {
114
+ hour: 'numeric',
115
+ hour12: false
116
+ }).resolvedOptions().hourCycle === 'h12';
117
+ return $12a3c853105e5a70$var$_hasBuggyResolvedHourCycle;
118
+ }
119
+ function $12a3c853105e5a70$var$getResolvedHourCycle(locale, options) {
120
+ if (!options.timeStyle && !options.hour) return undefined;
121
+ // Work around buggy results in resolved hourCycle and hour12 options in WebKit.
122
+ // Format the minimum possible hour and maximum possible hour in a day and parse the results.
123
+ locale = locale.replace(/(-u-)?-nu-[a-zA-Z0-9]+/, '');
124
+ locale += (locale.includes('-u-') ? '' : '-u') + '-nu-latn';
125
+ let formatter = $12a3c853105e5a70$var$getCachedDateFormatter(locale, {
126
+ ...options,
127
+ timeZone: undefined // use local timezone
128
+ });
129
+ let min = parseInt(formatter.formatToParts(new Date(2020, 2, 3, 0)).find((p)=>p.type === 'hour').value, 10);
130
+ let max = parseInt(formatter.formatToParts(new Date(2020, 2, 3, 23)).find((p)=>p.type === 'hour').value, 10);
131
+ if (min === 0 && max === 23) return 'h23';
132
+ if (min === 24 && max === 23) return 'h24';
133
+ if (min === 0 && max === 11) return 'h11';
134
+ if (min === 12 && max === 11) return 'h12';
135
+ throw new Error('Unexpected hour cycle result');
136
+ }
137
+
138
+ export { $12a3c853105e5a70$export$ad991b66133851cf as DateFormatter };
139
+ //# sourceMappingURL=DateFormatter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DateFormatter.js","sources":["../../../../../../../../node_modules/@internationalized/date/dist/private/DateFormatter.mjs"],"sourcesContent":["/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ let $12a3c853105e5a70$var$formatterCache = new Map();\nclass $12a3c853105e5a70$export$ad991b66133851cf {\n constructor(locale, options = {}){\n this.formatter = $12a3c853105e5a70$var$getCachedDateFormatter(locale, options);\n this.options = options;\n }\n /** Formats a date as a string according to the locale and format options passed to the constructor. */ format(value) {\n return this.formatter.format(value);\n }\n /** Formats a date to an array of parts such as separators, numbers, punctuation, and more. */ formatToParts(value) {\n return this.formatter.formatToParts(value);\n }\n /** Formats a date range as a string. */ formatRange(start, end) {\n // @ts-ignore\n if (typeof this.formatter.formatRange === 'function') // @ts-ignore\n return this.formatter.formatRange(start, end);\n if (end < start) throw new RangeError('End date must be >= start date');\n // Very basic fallback for old browsers.\n return `${this.formatter.format(start)} \\u{2013} ${this.formatter.format(end)}`;\n }\n /** Formats a date range as an array of parts. */ formatRangeToParts(start, end) {\n // @ts-ignore\n if (typeof this.formatter.formatRangeToParts === 'function') // @ts-ignore\n return this.formatter.formatRangeToParts(start, end);\n if (end < start) throw new RangeError('End date must be >= start date');\n let startParts = this.formatter.formatToParts(start);\n let endParts = this.formatter.formatToParts(end);\n return [\n ...startParts.map((p)=>({\n ...p,\n source: 'startRange'\n })),\n {\n type: 'literal',\n value: \" \\u2013 \",\n source: 'shared'\n },\n ...endParts.map((p)=>({\n ...p,\n source: 'endRange'\n }))\n ];\n }\n /** Returns the resolved formatting options based on the values passed to the constructor. */ resolvedOptions() {\n let resolvedOptions = this.formatter.resolvedOptions();\n if ($12a3c853105e5a70$var$hasBuggyResolvedHourCycle()) {\n if (!this.resolvedHourCycle) this.resolvedHourCycle = $12a3c853105e5a70$var$getResolvedHourCycle(resolvedOptions.locale, this.options);\n resolvedOptions.hourCycle = this.resolvedHourCycle;\n resolvedOptions.hour12 = this.resolvedHourCycle === 'h11' || this.resolvedHourCycle === 'h12';\n }\n // Safari uses a different name for the Ethiopic (Amete Alem) calendar.\n // https://bugs.webkit.org/show_bug.cgi?id=241564\n if (resolvedOptions.calendar === 'ethiopic-amete-alem') resolvedOptions.calendar = 'ethioaa';\n return resolvedOptions;\n }\n}\n// There are multiple bugs involving the hour12 and hourCycle options in various browser engines.\n// - Chrome [1] (and the ECMA 402 spec [2]) resolve hour12: false in English and other locales to h24 (24:00 - 23:59)\n// rather than h23 (00:00 - 23:59). Same can happen with hour12: true in French, which Chrome resolves to h11 (00:00 - 11:59)\n// rather than h12 (12:00 - 11:59).\n// - WebKit returns an incorrect hourCycle resolved option in the French locale due to incorrect parsing of 'h' literal\n// in the resolved pattern. It also formats incorrectly when specifying the hourCycle option for the same reason. [3]\n// [1] https://bugs.chromium.org/p/chromium/issues/detail?id=1045791\n// [2] https://github.com/tc39/ecma402/issues/402\n// [3] https://bugs.webkit.org/show_bug.cgi?id=229313\n// https://github.com/unicode-org/cldr/blob/018b55eff7ceb389c7e3fc44e2f657eae3b10b38/common/supplemental/supplementalData.xml#L4774-L4802\nconst $12a3c853105e5a70$var$hour12Preferences = {\n true: {\n // Only Japanese uses the h11 style for 12 hour time. All others use h12.\n ja: 'h11'\n },\n false: {\n }\n};\nfunction $12a3c853105e5a70$var$getCachedDateFormatter(locale, options = {}) {\n // Work around buggy hour12 behavior in Chrome / ECMA 402 spec by using hourCycle instead.\n // Only apply the workaround if the issue is detected, because the hourCycle option is buggy in Safari.\n if (typeof options.hour12 === 'boolean' && $12a3c853105e5a70$var$hasBuggyHour12Behavior()) {\n options = {\n ...options\n };\n let pref = $12a3c853105e5a70$var$hour12Preferences[String(options.hour12)][locale.split('-')[0]];\n let defaultHourCycle = options.hour12 ? 'h12' : 'h23';\n options.hourCycle = pref ?? defaultHourCycle;\n delete options.hour12;\n }\n let cacheKey = locale + (options ? Object.entries(options).sort((a, b)=>a[0] < b[0] ? -1 : 1).join() : '');\n if ($12a3c853105e5a70$var$formatterCache.has(cacheKey)) return $12a3c853105e5a70$var$formatterCache.get(cacheKey);\n let numberFormatter = new Intl.DateTimeFormat(locale, options);\n $12a3c853105e5a70$var$formatterCache.set(cacheKey, numberFormatter);\n return numberFormatter;\n}\nlet $12a3c853105e5a70$var$_hasBuggyHour12Behavior = null;\nfunction $12a3c853105e5a70$var$hasBuggyHour12Behavior() {\n if ($12a3c853105e5a70$var$_hasBuggyHour12Behavior == null) $12a3c853105e5a70$var$_hasBuggyHour12Behavior = new Intl.DateTimeFormat('en-US', {\n hour: 'numeric',\n hour12: false\n }).format(new Date(2020, 2, 3, 0)) === '24';\n return $12a3c853105e5a70$var$_hasBuggyHour12Behavior;\n}\nlet $12a3c853105e5a70$var$_hasBuggyResolvedHourCycle = null;\nfunction $12a3c853105e5a70$var$hasBuggyResolvedHourCycle() {\n if ($12a3c853105e5a70$var$_hasBuggyResolvedHourCycle == null) $12a3c853105e5a70$var$_hasBuggyResolvedHourCycle = new Intl.DateTimeFormat('fr', {\n hour: 'numeric',\n hour12: false\n }).resolvedOptions().hourCycle === 'h12';\n return $12a3c853105e5a70$var$_hasBuggyResolvedHourCycle;\n}\nfunction $12a3c853105e5a70$var$getResolvedHourCycle(locale, options) {\n if (!options.timeStyle && !options.hour) return undefined;\n // Work around buggy results in resolved hourCycle and hour12 options in WebKit.\n // Format the minimum possible hour and maximum possible hour in a day and parse the results.\n locale = locale.replace(/(-u-)?-nu-[a-zA-Z0-9]+/, '');\n locale += (locale.includes('-u-') ? '' : '-u') + '-nu-latn';\n let formatter = $12a3c853105e5a70$var$getCachedDateFormatter(locale, {\n ...options,\n timeZone: undefined // use local timezone\n });\n let min = parseInt(formatter.formatToParts(new Date(2020, 2, 3, 0)).find((p)=>p.type === 'hour').value, 10);\n let max = parseInt(formatter.formatToParts(new Date(2020, 2, 3, 23)).find((p)=>p.type === 'hour').value, 10);\n if (min === 0 && max === 23) return 'h23';\n if (min === 24 && max === 23) return 'h24';\n if (min === 0 && max === 11) return 'h11';\n if (min === 12 && max === 11) return 'h12';\n throw new Error('Unexpected hour cycle result');\n}\n\n\nexport {$12a3c853105e5a70$export$ad991b66133851cf as DateFormatter};\n//# sourceMappingURL=DateFormatter.mjs.map\n"],"names":[],"mappings":"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","x_google_ignoreList":[0]}