File: /www/wwwroot/www.waciwang.com/wp-content/plugins/gutenberg/build/scripts/media-utils/index.js.map
{
"version": 3,
"sources": ["package-external:@wordpress/element", "package-external:@wordpress/i18n", "package-external:@wordpress/blob", "package-external:@wordpress/api-fetch", "package-external:@wordpress/core-data", "package-external:@wordpress/data", "package-external:@wordpress/components", "package-external:@wordpress/primitives", "vendor-external:react/jsx-runtime", "package-external:@wordpress/compose", "vendor-external:react", "vendor-external:react-dom", "../../../node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.js", "../../../node_modules/use-sync-external-store/shim/index.js", "package-external:@wordpress/keycodes", "package-external:@wordpress/private-apis", "../../../node_modules/remove-accents/index.js", "../../../node_modules/fast-deep-equal/es6/index.js", "package-external:@wordpress/warning", "package-external:@wordpress/date", "package-external:@wordpress/url", "../../../packages/media-utils/src/components/media-upload/index.js", "../../../packages/media-utils/src/utils/upload-media.ts", "../../../packages/media-utils/src/utils/upload-to-server.ts", "../../../packages/media-utils/src/utils/flatten-form-data.ts", "../../../packages/media-utils/src/utils/transform-attachment.ts", "../../../packages/media-utils/src/utils/validate-mime-type.ts", "../../../packages/media-utils/src/utils/upload-error.ts", "../../../packages/media-utils/src/utils/validate-mime-type-for-user.ts", "../../../packages/media-utils/src/utils/get-mime-types-array.ts", "../../../packages/media-utils/src/utils/validate-file-size.ts", "../../../packages/media-utils/src/utils/sideload-media.ts", "../../../packages/media-utils/src/utils/sideload-to-server.ts", "../../../packages/media-utils/src/components/media-upload-modal/index.tsx", "../../../packages/icons/src/library/arrow-down.tsx", "../../../packages/icons/src/library/arrow-left.tsx", "../../../packages/icons/src/library/arrow-right.tsx", "../../../packages/icons/src/library/arrow-up.tsx", "../../../packages/icons/src/library/audio.tsx", "../../../packages/icons/src/library/block-table.tsx", "../../../packages/icons/src/library/category.tsx", "../../../packages/icons/src/library/check.tsx", "../../../packages/icons/src/library/close-small.tsx", "../../../packages/icons/src/library/cog.tsx", "../../../packages/icons/src/library/comment-author-avatar.tsx", "../../../packages/icons/src/library/envelope.tsx", "../../../packages/icons/src/library/error.tsx", "../../../packages/icons/src/library/file.tsx", "../../../packages/icons/src/library/format-list-bullets-rtl.tsx", "../../../packages/icons/src/library/format-list-bullets.tsx", "../../../packages/icons/src/library/funnel.tsx", "../../../packages/icons/src/library/image.tsx", "../../../packages/icons/src/library/link.tsx", "../../../packages/icons/src/library/mobile.tsx", "../../../packages/icons/src/library/more-vertical.tsx", "../../../packages/icons/src/library/next.tsx", "../../../packages/icons/src/library/previous.tsx", "../../../packages/icons/src/library/scheduled.tsx", "../../../packages/icons/src/library/search.tsx", "../../../packages/icons/src/library/seen.tsx", "../../../packages/icons/src/library/unseen.tsx", "../../../packages/icons/src/library/upload.tsx", "../../../packages/icons/src/library/video.tsx", "../../../node_modules/@base-ui/utils/esm/useRefWithInit.js", "../../../node_modules/@base-ui/react/esm/utils/useRenderElement.js", "../../../node_modules/@base-ui/utils/esm/useMergedRefs.js", "../../../node_modules/@base-ui/utils/esm/getReactElementRef.js", "../../../node_modules/@base-ui/utils/esm/reactVersion.js", "../../../node_modules/@base-ui/utils/esm/mergeObjects.js", "../../../node_modules/@base-ui/react/esm/utils/getStateAttributesProps.js", "../../../node_modules/@base-ui/react/esm/utils/resolveClassName.js", "../../../node_modules/@base-ui/react/esm/utils/resolveStyle.js", "../../../node_modules/@base-ui/react/esm/merge-props/mergeProps.js", "../../../node_modules/@base-ui/utils/esm/empty.js", "../../../node_modules/@base-ui/react/esm/use-render/useRender.js", "../../../node_modules/clsx/dist/clsx.mjs", "../../../packages/ui/src/stack/stack.tsx", "../../../packages/ui/src/stack/style.module.css", "../../../packages/dataviews/src/components/dataviews-context/index.ts", "../../../packages/dataviews/src/constants.ts", "../../../packages/dataviews/src/components/dataviews-layouts/index.ts", "../../../packages/dataviews/src/components/dataviews-layouts/table/index.tsx", "../../../packages/dataviews/src/components/dataviews-selection-checkbox/index.tsx", "../../../packages/dataviews/src/components/dataviews-item-actions/index.tsx", "../../../packages/dataviews/src/lock-unlock.ts", "../../../packages/dataviews/src/components/dataviews-bulk-actions/index.tsx", "../../../packages/dataviews/src/components/dataviews-layouts/table/column-header-menu.tsx", "../../../packages/dataviews/src/utils/get-hideable-fields.ts", "../../../packages/dataviews/src/components/dataviews-layouts/utils/item-click-wrapper.tsx", "../../../packages/dataviews/src/components/dataviews-layouts/table/column-primary.tsx", "../../../packages/dataviews/src/components/dataviews-layouts/table/use-is-horizontal-scroll-end.ts", "../../../packages/dataviews/src/components/dataviews-layouts/utils/get-data-by-group.ts", "../../../packages/dataviews/src/components/dataviews-view-config/properties-section.tsx", "../../../packages/dataviews/src/components/dataviews-layouts/grid/index.tsx", "../../../packages/dataviews/src/components/dataviews-layouts/grid/composite-grid.tsx", "../../../packages/dataviews/src/components/dataviews-layouts/grid/preview-size-picker.tsx", "../../../packages/dataviews/src/components/dataviews-layouts/list/index.tsx", "../../../packages/dataviews/src/components/dataviews-layouts/activity/index.tsx", "../../../packages/dataviews/src/components/dataviews-layouts/activity/activity-group.tsx", "../../../packages/dataviews/src/components/dataviews-layouts/activity/activity-item.tsx", "../../../packages/dataviews/src/components/dataviews-layouts/activity/activity-items.tsx", "../../../packages/dataviews/src/components/dataviews-layouts/picker-grid/index.tsx", "../../../packages/dataviews/src/components/dataviews-picker-footer/index.tsx", "../../../packages/dataviews/src/components/dataviews-pagination/index.tsx", "../../../packages/dataviews/src/components/dataviews-layouts/utils/grid-items.tsx", "../../../packages/dataviews/src/components/dataviews-layouts/picker-table/index.tsx", "../../../packages/dataviews/src/components/dataviews-layouts/utils/preview-size-picker.tsx", "../../../packages/dataviews/src/components/dataviews-layouts/utils/density-picker.tsx", "../../../packages/dataviews/src/components/dataviews-filters/filters.tsx", "../../../packages/dataviews/src/components/dataviews-filters/filter.tsx", "../../../node_modules/@ariakit/react-core/esm/__chunks/3YLGPPWQ.js", "../../../node_modules/@ariakit/core/esm/__chunks/3YLGPPWQ.js", "../../../node_modules/@ariakit/core/esm/__chunks/PBFD2E7P.js", "../../../node_modules/@ariakit/react-core/esm/__chunks/SK3NAZA3.js", "../../../node_modules/@ariakit/core/esm/__chunks/DTR5TSDJ.js", "../../../node_modules/@ariakit/core/esm/__chunks/QAGXQEUG.js", "../../../node_modules/@ariakit/core/esm/utils/events.js", "../../../node_modules/@ariakit/react-core/esm/__chunks/ABQUS43J.js", "../../../node_modules/@ariakit/react-core/esm/__chunks/LMDWO4NN.js", "../../../node_modules/@ariakit/react-core/esm/__chunks/VDHZ5F7K.js", "../../../node_modules/@ariakit/react-core/esm/__chunks/P7GR5CS5.js", "../../../node_modules/@ariakit/react-core/esm/__chunks/3XAVFTCA.js", "../../../node_modules/@ariakit/core/esm/__chunks/BCALMBPZ.js", "../../../node_modules/@ariakit/react-core/esm/__chunks/YV4JVR4I.js", "../../../node_modules/@ariakit/core/esm/__chunks/CYQWQL4J.js", "../../../node_modules/@ariakit/react-core/esm/__chunks/C3IKGW5T.js", "../../../node_modules/@ariakit/core/esm/__chunks/7PRQYBBV.js", "../../../node_modules/@ariakit/core/esm/__chunks/AJZ4BYF3.js", "../../../node_modules/@ariakit/react-core/esm/__chunks/4CMBR7SL.js", "../../../node_modules/@ariakit/core/esm/__chunks/RCQ5P4YE.js", "../../../node_modules/@ariakit/react-core/esm/__chunks/WYCIER3C.js", "../../../node_modules/@ariakit/core/esm/__chunks/FZZ2AVHF.js", "../../../node_modules/@ariakit/react-core/esm/__chunks/BM6PGYQY.js", "../../../node_modules/@ariakit/core/esm/__chunks/ME2CUF3F.js", "../../../node_modules/@ariakit/react-core/esm/__chunks/O2PQ2652.js", "../../../node_modules/@ariakit/core/esm/combobox/combobox-store.js", "../../../node_modules/@ariakit/react-core/esm/__chunks/FEOFMWBY.js", "../../../node_modules/@ariakit/react-core/esm/__chunks/S6EF7IVO.js", "../../../node_modules/@ariakit/react-core/esm/__chunks/RS7LB2H4.js", "../../../node_modules/@ariakit/react-core/esm/__chunks/MTZPJQMC.js", "../../../node_modules/@ariakit/react-core/esm/__chunks/VEVQD5MH.js", "../../../node_modules/@ariakit/react-core/esm/__chunks/OMU7RWRV.js", "../../../node_modules/@ariakit/react-core/esm/__chunks/5VQZOHHZ.js", "../../../node_modules/@ariakit/react-core/esm/__chunks/SWN3JYXT.js", "../../../node_modules/@ariakit/core/esm/utils/focus.js", "../../../node_modules/@ariakit/react-core/esm/__chunks/LVA2YJMS.js", "../../../node_modules/@ariakit/react-core/esm/__chunks/ITI7HKP4.js", "../../../node_modules/@ariakit/react-core/esm/combobox/combobox.js", "../../../node_modules/@ariakit/react-core/esm/combobox/combobox-provider.js", "../../../node_modules/@ariakit/react-core/esm/__chunks/KUU7WJ55.js", "../../../node_modules/@ariakit/react-core/esm/combobox/combobox-item-value.js", "../../../node_modules/@ariakit/react-core/esm/__chunks/UQQRIHDV.js", "../../../node_modules/@ariakit/react-core/esm/__chunks/RZ4GPYOB.js", "../../../node_modules/@ariakit/react-core/esm/__chunks/P2CTZE2T.js", "../../../node_modules/@ariakit/react-core/esm/__chunks/ZTDSJLD6.js", "../../../node_modules/@ariakit/react-core/esm/combobox/combobox-label.js", "../../../node_modules/@ariakit/react-core/esm/__chunks/VGCJ63VH.js", "../../../node_modules/@ariakit/react-core/esm/__chunks/HUWAI7RB.js", "../../../packages/dataviews/src/components/dataviews-filters/search-widget.tsx", "../../../packages/dataviews/src/components/dataviews-filters/utils.ts", "../../../packages/dataviews/src/hooks/use-elements.ts", "../../../packages/dataviews/src/components/dataviews-filters/input-widget.tsx", "../../../packages/dataviews/src/utils/operators.tsx", "../../../packages/dataviews/src/components/dataviews-filters/add-filter.tsx", "../../../packages/dataviews/src/components/dataviews-filters/reset-filters.tsx", "../../../packages/dataviews/src/components/dataviews-filters/use-filters.ts", "../../../packages/dataviews/src/components/dataviews-filters/toggle.tsx", "../../../packages/dataviews/src/components/dataviews-filters/filters-toggled.tsx", "../../../packages/dataviews/src/components/dataviews-layout/index.tsx", "../../../packages/dataviews/src/components/dataviews-search/index.tsx", "../../../packages/dataviews/src/components/dataviews-view-config/index.tsx", "../../../packages/dataviews/src/components/dataviews-view-config/infinite-scroll-toggle.tsx", "../../../packages/dataviews/src/components/dataform-controls/checkbox.tsx", "../../../packages/dataviews/src/components/dataform-controls/utils/get-custom-validity.ts", "../../../packages/dataviews/node_modules/date-fns/constants.js", "../../../packages/dataviews/node_modules/date-fns/constructFrom.js", "../../../packages/dataviews/node_modules/date-fns/toDate.js", "../../../packages/dataviews/node_modules/date-fns/addDays.js", "../../../packages/dataviews/node_modules/date-fns/addMonths.js", "../../../packages/dataviews/node_modules/date-fns/_lib/defaultOptions.js", "../../../packages/dataviews/node_modules/date-fns/startOfWeek.js", "../../../packages/dataviews/node_modules/date-fns/startOfISOWeek.js", "../../../packages/dataviews/node_modules/date-fns/getISOWeekYear.js", "../../../packages/dataviews/node_modules/date-fns/_lib/getTimezoneOffsetInMilliseconds.js", "../../../packages/dataviews/node_modules/date-fns/_lib/normalizeDates.js", "../../../packages/dataviews/node_modules/date-fns/startOfDay.js", "../../../packages/dataviews/node_modules/date-fns/differenceInCalendarDays.js", "../../../packages/dataviews/node_modules/date-fns/startOfISOWeekYear.js", "../../../packages/dataviews/node_modules/date-fns/addYears.js", "../../../packages/dataviews/node_modules/date-fns/isDate.js", "../../../packages/dataviews/node_modules/date-fns/isValid.js", "../../../packages/dataviews/node_modules/date-fns/startOfMonth.js", "../../../packages/dataviews/node_modules/date-fns/startOfYear.js", "../../../packages/dataviews/node_modules/date-fns/locale/en-US/_lib/formatDistance.js", "../../../packages/dataviews/node_modules/date-fns/locale/_lib/buildFormatLongFn.js", "../../../packages/dataviews/node_modules/date-fns/locale/en-US/_lib/formatLong.js", "../../../packages/dataviews/node_modules/date-fns/locale/en-US/_lib/formatRelative.js", "../../../packages/dataviews/node_modules/date-fns/locale/_lib/buildLocalizeFn.js", "../../../packages/dataviews/node_modules/date-fns/locale/en-US/_lib/localize.js", "../../../packages/dataviews/node_modules/date-fns/locale/_lib/buildMatchFn.js", "../../../packages/dataviews/node_modules/date-fns/locale/_lib/buildMatchPatternFn.js", "../../../packages/dataviews/node_modules/date-fns/locale/en-US/_lib/match.js", "../../../packages/dataviews/node_modules/date-fns/locale/en-US.js", "../../../packages/dataviews/node_modules/date-fns/getDayOfYear.js", "../../../packages/dataviews/node_modules/date-fns/getISOWeek.js", "../../../packages/dataviews/node_modules/date-fns/getWeekYear.js", "../../../packages/dataviews/node_modules/date-fns/startOfWeekYear.js", "../../../packages/dataviews/node_modules/date-fns/getWeek.js", "../../../packages/dataviews/node_modules/date-fns/_lib/addLeadingZeros.js", "../../../packages/dataviews/node_modules/date-fns/_lib/format/lightFormatters.js", "../../../packages/dataviews/node_modules/date-fns/_lib/format/formatters.js", "../../../packages/dataviews/node_modules/date-fns/_lib/format/longFormatters.js", "../../../packages/dataviews/node_modules/date-fns/_lib/protectedTokens.js", "../../../packages/dataviews/node_modules/date-fns/format.js", "../../../packages/dataviews/node_modules/date-fns/subDays.js", "../../../packages/dataviews/node_modules/date-fns/subMonths.js", "../../../packages/dataviews/node_modules/date-fns/subYears.js", "../../../packages/dataviews/src/components/dataform-controls/datetime.tsx", "../../../packages/dataviews/src/components/dataform-controls/utils/relative-date-control.tsx", "../../../packages/dataviews/src/field-types/utils/parse-date-time.ts", "../../../packages/dataviews/src/components/dataform-controls/date.tsx", "../../../packages/dataviews/src/components/dataform-controls/email.tsx", "../../../packages/dataviews/src/components/dataform-controls/utils/validated-input.tsx", "../../../packages/dataviews/src/components/dataform-controls/telephone.tsx", "../../../packages/dataviews/src/components/dataform-controls/url.tsx", "../../../packages/dataviews/src/components/dataform-controls/utils/validated-number.tsx", "../../../packages/dataviews/src/components/dataform-controls/integer.tsx", "../../../packages/dataviews/src/components/dataform-controls/number.tsx", "../../../packages/dataviews/src/components/dataform-controls/radio.tsx", "../../../packages/dataviews/src/components/dataform-controls/select.tsx", "../../../packages/dataviews/src/components/dataform-controls/text.tsx", "../../../packages/dataviews/src/components/dataform-controls/toggle.tsx", "../../../packages/dataviews/src/components/dataform-controls/textarea.tsx", "../../../packages/dataviews/src/components/dataform-controls/toggle-group.tsx", "../../../packages/dataviews/src/components/dataform-controls/array.tsx", "../../../node_modules/colord/index.mjs", "../../../packages/dataviews/src/components/dataform-controls/color.tsx", "../../../packages/dataviews/src/components/dataform-controls/password.tsx", "../../../packages/dataviews/src/field-types/utils/has-elements.ts", "../../../packages/dataviews/src/components/dataform-controls/index.tsx", "../../../packages/dataviews/src/field-types/utils/get-filter-by.ts", "../../../packages/dataviews/src/field-types/utils/get-value-from-id.ts", "../../../packages/dataviews/src/field-types/utils/set-value-from-id.ts", "../../../packages/dataviews/src/field-types/email.tsx", "../../../packages/dataviews/src/field-types/utils/render-from-elements.tsx", "../../../packages/dataviews/src/field-types/utils/render-default.tsx", "../../../packages/dataviews/src/field-types/utils/sort-text.ts", "../../../packages/dataviews/src/field-types/utils/is-valid-required.ts", "../../../packages/dataviews/src/field-types/utils/is-valid-min-length.ts", "../../../packages/dataviews/src/field-types/utils/is-valid-max-length.ts", "../../../packages/dataviews/src/field-types/utils/is-valid-pattern.ts", "../../../packages/dataviews/src/field-types/utils/is-valid-elements.ts", "../../../packages/dataviews/src/field-types/utils/get-value-formatted-default.ts", "../../../packages/dataviews/src/field-types/integer.tsx", "../../../packages/dataviews/src/field-types/utils/sort-number.ts", "../../../packages/dataviews/src/field-types/utils/is-valid-min.ts", "../../../packages/dataviews/src/field-types/utils/is-valid-max.ts", "../../../packages/dataviews/src/field-types/number.tsx", "../../../packages/dataviews/src/field-types/text.tsx", "../../../packages/dataviews/src/field-types/datetime.tsx", "../../../packages/dataviews/src/field-types/date.tsx", "../../../packages/dataviews/src/field-types/boolean.tsx", "../../../packages/dataviews/src/field-types/utils/is-valid-required-for-bool.ts", "../../../packages/dataviews/src/field-types/media.tsx", "../../../packages/dataviews/src/field-types/array.tsx", "../../../packages/dataviews/src/field-types/utils/is-valid-required-for-array.ts", "../../../packages/dataviews/src/field-types/password.tsx", "../../../packages/dataviews/src/field-types/telephone.tsx", "../../../packages/dataviews/src/field-types/color.tsx", "../../../packages/dataviews/src/field-types/url.tsx", "../../../packages/dataviews/src/field-types/no-type.tsx", "../../../packages/dataviews/src/field-types/utils/get-is-valid.ts", "../../../packages/dataviews/src/field-types/utils/get-format.ts", "../../../packages/dataviews/src/field-types/index.tsx", "../../../packages/dataviews/src/dataviews-picker/index.tsx", "../../../packages/media-fields/src/alt_text/index.tsx", "../../../packages/media-fields/src/attached_to/index.tsx", "../../../packages/media-fields/src/attached_to/view.tsx", "../../../packages/media-fields/src/utils/get-rendered-content.ts", "../../../packages/media-fields/src/attached_to/edit.tsx", "../../../packages/media-fields/src/author/index.tsx", "../../../packages/media-fields/src/author/view.tsx", "../../../packages/media-fields/src/caption/index.tsx", "../../../packages/media-fields/src/utils/get-raw-content.ts", "../../../packages/media-fields/src/date_added/index.tsx", "../../../packages/media-fields/src/date_modified/index.tsx", "../../../packages/media-fields/src/description/index.tsx", "../../../packages/media-fields/src/filename/index.ts", "../../../packages/media-fields/src/filename/view.tsx", "../../../packages/media-fields/src/filesize/index.tsx", "../../../packages/media-fields/src/media_dimensions/index.ts", "../../../packages/media-fields/src/media_thumbnail/index.tsx", "../../../packages/media-fields/src/media_thumbnail/view.tsx", "../../../packages/media-fields/src/utils/get-media-type-from-mime-type.ts", "../../../packages/media-fields/src/mime_type/index.ts", "../../../packages/media-utils/src/lock-unlock.ts", "../../../packages/media-utils/src/private-apis.ts"],
"sourcesContent": ["module.exports = window.wp.element;", "module.exports = window.wp.i18n;", "module.exports = window.wp.blob;", "module.exports = window.wp.apiFetch;", "module.exports = window.wp.coreData;", "module.exports = window.wp.data;", "module.exports = window.wp.components;", "module.exports = window.wp.primitives;", "module.exports = window.ReactJSXRuntime;", "module.exports = window.wp.compose;", "module.exports = window.React;", "module.exports = window.ReactDOM;", "/**\n * @license React\n * use-sync-external-store-shim.development.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\n\"production\" !== process.env.NODE_ENV &&\n (function () {\n function is(x, y) {\n return (x === y && (0 !== x || 1 / x === 1 / y)) || (x !== x && y !== y);\n }\n function useSyncExternalStore$2(subscribe, getSnapshot) {\n didWarnOld18Alpha ||\n void 0 === React.startTransition ||\n ((didWarnOld18Alpha = !0),\n console.error(\n \"You are using an outdated, pre-release alpha of React 18 that does not support useSyncExternalStore. The use-sync-external-store shim will not work correctly. Upgrade to a newer pre-release.\"\n ));\n var value = getSnapshot();\n if (!didWarnUncachedGetSnapshot) {\n var cachedValue = getSnapshot();\n objectIs(value, cachedValue) ||\n (console.error(\n \"The result of getSnapshot should be cached to avoid an infinite loop\"\n ),\n (didWarnUncachedGetSnapshot = !0));\n }\n cachedValue = useState({\n inst: { value: value, getSnapshot: getSnapshot }\n });\n var inst = cachedValue[0].inst,\n forceUpdate = cachedValue[1];\n useLayoutEffect(\n function () {\n inst.value = value;\n inst.getSnapshot = getSnapshot;\n checkIfSnapshotChanged(inst) && forceUpdate({ inst: inst });\n },\n [subscribe, value, getSnapshot]\n );\n useEffect(\n function () {\n checkIfSnapshotChanged(inst) && forceUpdate({ inst: inst });\n return subscribe(function () {\n checkIfSnapshotChanged(inst) && forceUpdate({ inst: inst });\n });\n },\n [subscribe]\n );\n useDebugValue(value);\n return value;\n }\n function checkIfSnapshotChanged(inst) {\n var latestGetSnapshot = inst.getSnapshot;\n inst = inst.value;\n try {\n var nextValue = latestGetSnapshot();\n return !objectIs(inst, nextValue);\n } catch (error) {\n return !0;\n }\n }\n function useSyncExternalStore$1(subscribe, getSnapshot) {\n return getSnapshot();\n }\n \"undefined\" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ &&\n \"function\" ===\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart &&\n __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(Error());\n var React = require(\"react\"),\n objectIs = \"function\" === typeof Object.is ? Object.is : is,\n useState = React.useState,\n useEffect = React.useEffect,\n useLayoutEffect = React.useLayoutEffect,\n useDebugValue = React.useDebugValue,\n didWarnOld18Alpha = !1,\n didWarnUncachedGetSnapshot = !1,\n shim =\n \"undefined\" === typeof window ||\n \"undefined\" === typeof window.document ||\n \"undefined\" === typeof window.document.createElement\n ? useSyncExternalStore$1\n : useSyncExternalStore$2;\n exports.useSyncExternalStore =\n void 0 !== React.useSyncExternalStore ? React.useSyncExternalStore : shim;\n \"undefined\" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ &&\n \"function\" ===\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop &&\n __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(Error());\n })();\n", "'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('../cjs/use-sync-external-store-shim.production.js');\n} else {\n module.exports = require('../cjs/use-sync-external-store-shim.development.js');\n}\n", "module.exports = window.wp.keycodes;", "module.exports = window.wp.privateApis;", "var characterMap = {\n\t\"\u00C0\": \"A\",\n\t\"\u00C1\": \"A\",\n\t\"\u00C2\": \"A\",\n\t\"\u00C3\": \"A\",\n\t\"\u00C4\": \"A\",\n\t\"\u00C5\": \"A\",\n\t\"\u1EA4\": \"A\",\n\t\"\u1EAE\": \"A\",\n\t\"\u1EB2\": \"A\",\n\t\"\u1EB4\": \"A\",\n\t\"\u1EB6\": \"A\",\n\t\"\u00C6\": \"AE\",\n\t\"\u1EA6\": \"A\",\n\t\"\u1EB0\": \"A\",\n\t\"\u0202\": \"A\",\n\t\"\u1EA2\": \"A\",\n\t\"\u1EA0\": \"A\",\n\t\"\u1EA8\": \"A\",\n\t\"\u1EAA\": \"A\",\n\t\"\u1EAC\": \"A\",\n\t\"\u00C7\": \"C\",\n\t\"\u1E08\": \"C\",\n\t\"\u00C8\": \"E\",\n\t\"\u00C9\": \"E\",\n\t\"\u00CA\": \"E\",\n\t\"\u00CB\": \"E\",\n\t\"\u1EBE\": \"E\",\n\t\"\u1E16\": \"E\",\n\t\"\u1EC0\": \"E\",\n\t\"\u1E14\": \"E\",\n\t\"\u1E1C\": \"E\",\n\t\"\u0206\": \"E\",\n\t\"\u1EBA\": \"E\",\n\t\"\u1EBC\": \"E\",\n\t\"\u1EB8\": \"E\",\n\t\"\u1EC2\": \"E\",\n\t\"\u1EC4\": \"E\",\n\t\"\u1EC6\": \"E\",\n\t\"\u00CC\": \"I\",\n\t\"\u00CD\": \"I\",\n\t\"\u00CE\": \"I\",\n\t\"\u00CF\": \"I\",\n\t\"\u1E2E\": \"I\",\n\t\"\u020A\": \"I\",\n\t\"\u1EC8\": \"I\",\n\t\"\u1ECA\": \"I\",\n\t\"\u00D0\": \"D\",\n\t\"\u00D1\": \"N\",\n\t\"\u00D2\": \"O\",\n\t\"\u00D3\": \"O\",\n\t\"\u00D4\": \"O\",\n\t\"\u00D5\": \"O\",\n\t\"\u00D6\": \"O\",\n\t\"\u00D8\": \"O\",\n\t\"\u1ED0\": \"O\",\n\t\"\u1E4C\": \"O\",\n\t\"\u1E52\": \"O\",\n\t\"\u020E\": \"O\",\n\t\"\u1ECE\": \"O\",\n\t\"\u1ECC\": \"O\",\n\t\"\u1ED4\": \"O\",\n\t\"\u1ED6\": \"O\",\n\t\"\u1ED8\": \"O\",\n\t\"\u1EDC\": \"O\",\n\t\"\u1EDE\": \"O\",\n\t\"\u1EE0\": \"O\",\n\t\"\u1EDA\": \"O\",\n\t\"\u1EE2\": \"O\",\n\t\"\u00D9\": \"U\",\n\t\"\u00DA\": \"U\",\n\t\"\u00DB\": \"U\",\n\t\"\u00DC\": \"U\",\n\t\"\u1EE6\": \"U\",\n\t\"\u1EE4\": \"U\",\n\t\"\u1EEC\": \"U\",\n\t\"\u1EEE\": \"U\",\n\t\"\u1EF0\": \"U\",\n\t\"\u00DD\": \"Y\",\n\t\"\u00E0\": \"a\",\n\t\"\u00E1\": \"a\",\n\t\"\u00E2\": \"a\",\n\t\"\u00E3\": \"a\",\n\t\"\u00E4\": \"a\",\n\t\"\u00E5\": \"a\",\n\t\"\u1EA5\": \"a\",\n\t\"\u1EAF\": \"a\",\n\t\"\u1EB3\": \"a\",\n\t\"\u1EB5\": \"a\",\n\t\"\u1EB7\": \"a\",\n\t\"\u00E6\": \"ae\",\n\t\"\u1EA7\": \"a\",\n\t\"\u1EB1\": \"a\",\n\t\"\u0203\": \"a\",\n\t\"\u1EA3\": \"a\",\n\t\"\u1EA1\": \"a\",\n\t\"\u1EA9\": \"a\",\n\t\"\u1EAB\": \"a\",\n\t\"\u1EAD\": \"a\",\n\t\"\u00E7\": \"c\",\n\t\"\u1E09\": \"c\",\n\t\"\u00E8\": \"e\",\n\t\"\u00E9\": \"e\",\n\t\"\u00EA\": \"e\",\n\t\"\u00EB\": \"e\",\n\t\"\u1EBF\": \"e\",\n\t\"\u1E17\": \"e\",\n\t\"\u1EC1\": \"e\",\n\t\"\u1E15\": \"e\",\n\t\"\u1E1D\": \"e\",\n\t\"\u0207\": \"e\",\n\t\"\u1EBB\": \"e\",\n\t\"\u1EBD\": \"e\",\n\t\"\u1EB9\": \"e\",\n\t\"\u1EC3\": \"e\",\n\t\"\u1EC5\": \"e\",\n\t\"\u1EC7\": \"e\",\n\t\"\u00EC\": \"i\",\n\t\"\u00ED\": \"i\",\n\t\"\u00EE\": \"i\",\n\t\"\u00EF\": \"i\",\n\t\"\u1E2F\": \"i\",\n\t\"\u020B\": \"i\",\n\t\"\u1EC9\": \"i\",\n\t\"\u1ECB\": \"i\",\n\t\"\u00F0\": \"d\",\n\t\"\u00F1\": \"n\",\n\t\"\u00F2\": \"o\",\n\t\"\u00F3\": \"o\",\n\t\"\u00F4\": \"o\",\n\t\"\u00F5\": \"o\",\n\t\"\u00F6\": \"o\",\n\t\"\u00F8\": \"o\",\n\t\"\u1ED1\": \"o\",\n\t\"\u1E4D\": \"o\",\n\t\"\u1E53\": \"o\",\n\t\"\u020F\": \"o\",\n\t\"\u1ECF\": \"o\",\n\t\"\u1ECD\": \"o\",\n\t\"\u1ED5\": \"o\",\n\t\"\u1ED7\": \"o\",\n\t\"\u1ED9\": \"o\",\n\t\"\u1EDD\": \"o\",\n\t\"\u1EDF\": \"o\",\n\t\"\u1EE1\": \"o\",\n\t\"\u1EDB\": \"o\",\n\t\"\u1EE3\": \"o\",\n\t\"\u00F9\": \"u\",\n\t\"\u00FA\": \"u\",\n\t\"\u00FB\": \"u\",\n\t\"\u00FC\": \"u\",\n\t\"\u1EE7\": \"u\",\n\t\"\u1EE5\": \"u\",\n\t\"\u1EED\": \"u\",\n\t\"\u1EEF\": \"u\",\n\t\"\u1EF1\": \"u\",\n\t\"\u00FD\": \"y\",\n\t\"\u00FF\": \"y\",\n\t\"\u0100\": \"A\",\n\t\"\u0101\": \"a\",\n\t\"\u0102\": \"A\",\n\t\"\u0103\": \"a\",\n\t\"\u0104\": \"A\",\n\t\"\u0105\": \"a\",\n\t\"\u0106\": \"C\",\n\t\"\u0107\": \"c\",\n\t\"\u0108\": \"C\",\n\t\"\u0109\": \"c\",\n\t\"\u010A\": \"C\",\n\t\"\u010B\": \"c\",\n\t\"\u010C\": \"C\",\n\t\"\u010D\": \"c\",\n\t\"C\u0306\": \"C\",\n\t\"c\u0306\": \"c\",\n\t\"\u010E\": \"D\",\n\t\"\u010F\": \"d\",\n\t\"\u0110\": \"D\",\n\t\"\u0111\": \"d\",\n\t\"\u0112\": \"E\",\n\t\"\u0113\": \"e\",\n\t\"\u0114\": \"E\",\n\t\"\u0115\": \"e\",\n\t\"\u0116\": \"E\",\n\t\"\u0117\": \"e\",\n\t\"\u0118\": \"E\",\n\t\"\u0119\": \"e\",\n\t\"\u011A\": \"E\",\n\t\"\u011B\": \"e\",\n\t\"\u011C\": \"G\",\n\t\"\u01F4\": \"G\",\n\t\"\u011D\": \"g\",\n\t\"\u01F5\": \"g\",\n\t\"\u011E\": \"G\",\n\t\"\u011F\": \"g\",\n\t\"\u0120\": \"G\",\n\t\"\u0121\": \"g\",\n\t\"\u0122\": \"G\",\n\t\"\u0123\": \"g\",\n\t\"\u0124\": \"H\",\n\t\"\u0125\": \"h\",\n\t\"\u0126\": \"H\",\n\t\"\u0127\": \"h\",\n\t\"\u1E2A\": \"H\",\n\t\"\u1E2B\": \"h\",\n\t\"\u0128\": \"I\",\n\t\"\u0129\": \"i\",\n\t\"\u012A\": \"I\",\n\t\"\u012B\": \"i\",\n\t\"\u012C\": \"I\",\n\t\"\u012D\": \"i\",\n\t\"\u012E\": \"I\",\n\t\"\u012F\": \"i\",\n\t\"\u0130\": \"I\",\n\t\"\u0131\": \"i\",\n\t\"\u0132\": \"IJ\",\n\t\"\u0133\": \"ij\",\n\t\"\u0134\": \"J\",\n\t\"\u0135\": \"j\",\n\t\"\u0136\": \"K\",\n\t\"\u0137\": \"k\",\n\t\"\u1E30\": \"K\",\n\t\"\u1E31\": \"k\",\n\t\"K\u0306\": \"K\",\n\t\"k\u0306\": \"k\",\n\t\"\u0139\": \"L\",\n\t\"\u013A\": \"l\",\n\t\"\u013B\": \"L\",\n\t\"\u013C\": \"l\",\n\t\"\u013D\": \"L\",\n\t\"\u013E\": \"l\",\n\t\"\u013F\": \"L\",\n\t\"\u0140\": \"l\",\n\t\"\u0141\": \"l\",\n\t\"\u0142\": \"l\",\n\t\"\u1E3E\": \"M\",\n\t\"\u1E3F\": \"m\",\n\t\"M\u0306\": \"M\",\n\t\"m\u0306\": \"m\",\n\t\"\u0143\": \"N\",\n\t\"\u0144\": \"n\",\n\t\"\u0145\": \"N\",\n\t\"\u0146\": \"n\",\n\t\"\u0147\": \"N\",\n\t\"\u0148\": \"n\",\n\t\"\u0149\": \"n\",\n\t\"N\u0306\": \"N\",\n\t\"n\u0306\": \"n\",\n\t\"\u014C\": \"O\",\n\t\"\u014D\": \"o\",\n\t\"\u014E\": \"O\",\n\t\"\u014F\": \"o\",\n\t\"\u0150\": \"O\",\n\t\"\u0151\": \"o\",\n\t\"\u0152\": \"OE\",\n\t\"\u0153\": \"oe\",\n\t\"P\u0306\": \"P\",\n\t\"p\u0306\": \"p\",\n\t\"\u0154\": \"R\",\n\t\"\u0155\": \"r\",\n\t\"\u0156\": \"R\",\n\t\"\u0157\": \"r\",\n\t\"\u0158\": \"R\",\n\t\"\u0159\": \"r\",\n\t\"R\u0306\": \"R\",\n\t\"r\u0306\": \"r\",\n\t\"\u0212\": \"R\",\n\t\"\u0213\": \"r\",\n\t\"\u015A\": \"S\",\n\t\"\u015B\": \"s\",\n\t\"\u015C\": \"S\",\n\t\"\u015D\": \"s\",\n\t\"\u015E\": \"S\",\n\t\"\u0218\": \"S\",\n\t\"\u0219\": \"s\",\n\t\"\u015F\": \"s\",\n\t\"\u0160\": \"S\",\n\t\"\u0161\": \"s\",\n\t\"\u0162\": \"T\",\n\t\"\u0163\": \"t\",\n\t\"\u021B\": \"t\",\n\t\"\u021A\": \"T\",\n\t\"\u0164\": \"T\",\n\t\"\u0165\": \"t\",\n\t\"\u0166\": \"T\",\n\t\"\u0167\": \"t\",\n\t\"T\u0306\": \"T\",\n\t\"t\u0306\": \"t\",\n\t\"\u0168\": \"U\",\n\t\"\u0169\": \"u\",\n\t\"\u016A\": \"U\",\n\t\"\u016B\": \"u\",\n\t\"\u016C\": \"U\",\n\t\"\u016D\": \"u\",\n\t\"\u016E\": \"U\",\n\t\"\u016F\": \"u\",\n\t\"\u0170\": \"U\",\n\t\"\u0171\": \"u\",\n\t\"\u0172\": \"U\",\n\t\"\u0173\": \"u\",\n\t\"\u0216\": \"U\",\n\t\"\u0217\": \"u\",\n\t\"V\u0306\": \"V\",\n\t\"v\u0306\": \"v\",\n\t\"\u0174\": \"W\",\n\t\"\u0175\": \"w\",\n\t\"\u1E82\": \"W\",\n\t\"\u1E83\": \"w\",\n\t\"X\u0306\": \"X\",\n\t\"x\u0306\": \"x\",\n\t\"\u0176\": \"Y\",\n\t\"\u0177\": \"y\",\n\t\"\u0178\": \"Y\",\n\t\"Y\u0306\": \"Y\",\n\t\"y\u0306\": \"y\",\n\t\"\u0179\": \"Z\",\n\t\"\u017A\": \"z\",\n\t\"\u017B\": \"Z\",\n\t\"\u017C\": \"z\",\n\t\"\u017D\": \"Z\",\n\t\"\u017E\": \"z\",\n\t\"\u017F\": \"s\",\n\t\"\u0192\": \"f\",\n\t\"\u01A0\": \"O\",\n\t\"\u01A1\": \"o\",\n\t\"\u01AF\": \"U\",\n\t\"\u01B0\": \"u\",\n\t\"\u01CD\": \"A\",\n\t\"\u01CE\": \"a\",\n\t\"\u01CF\": \"I\",\n\t\"\u01D0\": \"i\",\n\t\"\u01D1\": \"O\",\n\t\"\u01D2\": \"o\",\n\t\"\u01D3\": \"U\",\n\t\"\u01D4\": \"u\",\n\t\"\u01D5\": \"U\",\n\t\"\u01D6\": \"u\",\n\t\"\u01D7\": \"U\",\n\t\"\u01D8\": \"u\",\n\t\"\u01D9\": \"U\",\n\t\"\u01DA\": \"u\",\n\t\"\u01DB\": \"U\",\n\t\"\u01DC\": \"u\",\n\t\"\u1EE8\": \"U\",\n\t\"\u1EE9\": \"u\",\n\t\"\u1E78\": \"U\",\n\t\"\u1E79\": \"u\",\n\t\"\u01FA\": \"A\",\n\t\"\u01FB\": \"a\",\n\t\"\u01FC\": \"AE\",\n\t\"\u01FD\": \"ae\",\n\t\"\u01FE\": \"O\",\n\t\"\u01FF\": \"o\",\n\t\"\u00DE\": \"TH\",\n\t\"\u00FE\": \"th\",\n\t\"\u1E54\": \"P\",\n\t\"\u1E55\": \"p\",\n\t\"\u1E64\": \"S\",\n\t\"\u1E65\": \"s\",\n\t\"X\u0301\": \"X\",\n\t\"x\u0301\": \"x\",\n\t\"\u0403\": \"\u0413\",\n\t\"\u0453\": \"\u0433\",\n\t\"\u040C\": \"\u041A\",\n\t\"\u045C\": \"\u043A\",\n\t\"A\u030B\": \"A\",\n\t\"a\u030B\": \"a\",\n\t\"E\u030B\": \"E\",\n\t\"e\u030B\": \"e\",\n\t\"I\u030B\": \"I\",\n\t\"i\u030B\": \"i\",\n\t\"\u01F8\": \"N\",\n\t\"\u01F9\": \"n\",\n\t\"\u1ED2\": \"O\",\n\t\"\u1ED3\": \"o\",\n\t\"\u1E50\": \"O\",\n\t\"\u1E51\": \"o\",\n\t\"\u1EEA\": \"U\",\n\t\"\u1EEB\": \"u\",\n\t\"\u1E80\": \"W\",\n\t\"\u1E81\": \"w\",\n\t\"\u1EF2\": \"Y\",\n\t\"\u1EF3\": \"y\",\n\t\"\u0200\": \"A\",\n\t\"\u0201\": \"a\",\n\t\"\u0204\": \"E\",\n\t\"\u0205\": \"e\",\n\t\"\u0208\": \"I\",\n\t\"\u0209\": \"i\",\n\t\"\u020C\": \"O\",\n\t\"\u020D\": \"o\",\n\t\"\u0210\": \"R\",\n\t\"\u0211\": \"r\",\n\t\"\u0214\": \"U\",\n\t\"\u0215\": \"u\",\n\t\"B\u030C\": \"B\",\n\t\"b\u030C\": \"b\",\n\t\"\u010C\u0323\": \"C\",\n\t\"\u010D\u0323\": \"c\",\n\t\"\u00CA\u030C\": \"E\",\n\t\"\u00EA\u030C\": \"e\",\n\t\"F\u030C\": \"F\",\n\t\"f\u030C\": \"f\",\n\t\"\u01E6\": \"G\",\n\t\"\u01E7\": \"g\",\n\t\"\u021E\": \"H\",\n\t\"\u021F\": \"h\",\n\t\"J\u030C\": \"J\",\n\t\"\u01F0\": \"j\",\n\t\"\u01E8\": \"K\",\n\t\"\u01E9\": \"k\",\n\t\"M\u030C\": \"M\",\n\t\"m\u030C\": \"m\",\n\t\"P\u030C\": \"P\",\n\t\"p\u030C\": \"p\",\n\t\"Q\u030C\": \"Q\",\n\t\"q\u030C\": \"q\",\n\t\"\u0158\u0329\": \"R\",\n\t\"\u0159\u0329\": \"r\",\n\t\"\u1E66\": \"S\",\n\t\"\u1E67\": \"s\",\n\t\"V\u030C\": \"V\",\n\t\"v\u030C\": \"v\",\n\t\"W\u030C\": \"W\",\n\t\"w\u030C\": \"w\",\n\t\"X\u030C\": \"X\",\n\t\"x\u030C\": \"x\",\n\t\"Y\u030C\": \"Y\",\n\t\"y\u030C\": \"y\",\n\t\"A\u0327\": \"A\",\n\t\"a\u0327\": \"a\",\n\t\"B\u0327\": \"B\",\n\t\"b\u0327\": \"b\",\n\t\"\u1E10\": \"D\",\n\t\"\u1E11\": \"d\",\n\t\"\u0228\": \"E\",\n\t\"\u0229\": \"e\",\n\t\"\u0190\u0327\": \"E\",\n\t\"\u025B\u0327\": \"e\",\n\t\"\u1E28\": \"H\",\n\t\"\u1E29\": \"h\",\n\t\"I\u0327\": \"I\",\n\t\"i\u0327\": \"i\",\n\t\"\u0197\u0327\": \"I\",\n\t\"\u0268\u0327\": \"i\",\n\t\"M\u0327\": \"M\",\n\t\"m\u0327\": \"m\",\n\t\"O\u0327\": \"O\",\n\t\"o\u0327\": \"o\",\n\t\"Q\u0327\": \"Q\",\n\t\"q\u0327\": \"q\",\n\t\"U\u0327\": \"U\",\n\t\"u\u0327\": \"u\",\n\t\"X\u0327\": \"X\",\n\t\"x\u0327\": \"x\",\n\t\"Z\u0327\": \"Z\",\n\t\"z\u0327\": \"z\",\n\t\"\u0439\":\"\u0438\",\n\t\"\u0419\":\"\u0418\",\n\t\"\u0451\":\"\u0435\",\n\t\"\u0401\":\"\u0415\",\n};\n\nvar chars = Object.keys(characterMap).join('|');\nvar allAccents = new RegExp(chars, 'g');\nvar firstAccent = new RegExp(chars, '');\n\nfunction matcher(match) {\n\treturn characterMap[match];\n}\n\nvar removeAccents = function(string) {\n\treturn string.replace(allAccents, matcher);\n};\n\nvar hasAccents = function(string) {\n\treturn !!string.match(firstAccent);\n};\n\nmodule.exports = removeAccents;\nmodule.exports.has = hasAccents;\nmodule.exports.remove = removeAccents;\n", "'use strict';\n\n// do not edit .js files directly - edit src/index.jst\n\n\n var envHasBigInt64Array = typeof BigInt64Array !== 'undefined';\n\n\nmodule.exports = function equal(a, b) {\n if (a === b) return true;\n\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n if (a.constructor !== b.constructor) return false;\n\n var length, i, keys;\n if (Array.isArray(a)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (!equal(a[i], b[i])) return false;\n return true;\n }\n\n\n if ((a instanceof Map) && (b instanceof Map)) {\n if (a.size !== b.size) return false;\n for (i of a.entries())\n if (!b.has(i[0])) return false;\n for (i of a.entries())\n if (!equal(i[1], b.get(i[0]))) return false;\n return true;\n }\n\n if ((a instanceof Set) && (b instanceof Set)) {\n if (a.size !== b.size) return false;\n for (i of a.entries())\n if (!b.has(i[0])) return false;\n return true;\n }\n\n if (ArrayBuffer.isView(a) && ArrayBuffer.isView(b)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (a[i] !== b[i]) return false;\n return true;\n }\n\n\n if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf();\n if (a.toString !== Object.prototype.toString) return a.toString() === b.toString();\n\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) return false;\n\n for (i = length; i-- !== 0;)\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n\n for (i = length; i-- !== 0;) {\n var key = keys[i];\n\n if (!equal(a[key], b[key])) return false;\n }\n\n return true;\n }\n\n // true if both NaN, false otherwise\n return a!==a && b!==b;\n};\n", "module.exports = window.wp.warning;", "module.exports = window.wp.date;", "module.exports = window.wp.url;", "/**\n * WordPress dependencies\n */\nimport { Component } from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\n\nconst DEFAULT_EMPTY_GALLERY = [];\n\n/**\n * Prepares the Featured Image toolbars and frames.\n *\n * @return {window.wp.media.view.MediaFrame.Select} The default media workflow.\n */\nconst getFeaturedImageMediaFrame = () => {\n\tconst { wp } = window;\n\n\treturn wp.media.view.MediaFrame.Select.extend( {\n\t\t/**\n\t\t * Enables the Set Featured Image Button.\n\t\t *\n\t\t * @param {Object} toolbar toolbar for featured image state\n\t\t * @return {void}\n\t\t */\n\t\tfeaturedImageToolbar( toolbar ) {\n\t\t\tthis.createSelectToolbar( toolbar, {\n\t\t\t\ttext: wp.media.view.l10n.setFeaturedImage,\n\t\t\t\tstate: this.options.state,\n\t\t\t} );\n\t\t},\n\n\t\t/**\n\t\t * Handle the edit state requirements of selected media item.\n\t\t *\n\t\t * @return {void}\n\t\t */\n\t\teditState() {\n\t\t\tconst selection = this.state( 'featured-image' ).get( 'selection' );\n\t\t\tconst view = new wp.media.view.EditImage( {\n\t\t\t\tmodel: selection.single(),\n\t\t\t\tcontroller: this,\n\t\t\t} ).render();\n\n\t\t\t// Set the view to the EditImage frame using the selected image.\n\t\t\tthis.content.set( view );\n\n\t\t\t// After bringing in the frame, load the actual editor via an ajax call.\n\t\t\tview.loadEditor();\n\t\t},\n\n\t\t/**\n\t\t * Create the default states.\n\t\t *\n\t\t * @return {void}\n\t\t */\n\t\tcreateStates: function createStates() {\n\t\t\tthis.on(\n\t\t\t\t'toolbar:create:featured-image',\n\t\t\t\tthis.featuredImageToolbar,\n\t\t\t\tthis\n\t\t\t);\n\t\t\tthis.on( 'content:render:edit-image', this.editState, this );\n\n\t\t\tthis.states.add( [\n\t\t\t\tnew wp.media.controller.FeaturedImage(),\n\t\t\t\tnew wp.media.controller.EditImage( {\n\t\t\t\t\tmodel: this.options.editImage,\n\t\t\t\t} ),\n\t\t\t] );\n\t\t},\n\t} );\n};\n\n/**\n * Prepares the default frame for selecting a single media item.\n *\n * @return {window.wp.media.view.MediaFrame.Select} The default media workflow.\n */\nconst getSingleMediaFrame = () => {\n\tconst { wp } = window;\n\n\t// Extend the default Select frame, and use the same `createStates` method as in core,\n\t// but with the addition of `filterable: 'uploaded'` to the Library state, so that\n\t// the user can filter the media library by uploaded media.\n\treturn wp.media.view.MediaFrame.Select.extend( {\n\t\t/**\n\t\t * Create the default states on the frame.\n\t\t */\n\t\tcreateStates() {\n\t\t\tconst options = this.options;\n\n\t\t\tif ( this.options.states ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Add the default states.\n\t\t\tthis.states.add( [\n\t\t\t\t// Main states.\n\t\t\t\tnew wp.media.controller.Library( {\n\t\t\t\t\tlibrary: wp.media.query( options.library ),\n\t\t\t\t\tmultiple: options.multiple,\n\t\t\t\t\ttitle: options.title,\n\t\t\t\t\tpriority: 20,\n\t\t\t\t\tfilterable: 'uploaded', // Allow filtering by uploaded images.\n\t\t\t\t} ),\n\t\t\t\tnew wp.media.controller.EditImage( {\n\t\t\t\t\tmodel: options.editImage,\n\t\t\t\t} ),\n\t\t\t] );\n\t\t},\n\t} );\n};\n\n/**\n * Prepares the Gallery toolbars and frames.\n *\n * @return {window.wp.media.view.MediaFrame.Post} The default media workflow.\n */\nconst getGalleryDetailsMediaFrame = () => {\n\tconst { wp } = window;\n\t/**\n\t * Custom gallery details frame.\n\t *\n\t * @see https://github.com/xwp/wp-core-media-widgets/blob/905edbccfc2a623b73a93dac803c5335519d7837/wp-admin/js/widgets/media-gallery-widget.js\n\t * @class GalleryDetailsMediaFrame\n\t * @class\n\t */\n\treturn wp.media.view.MediaFrame.Post.extend( {\n\t\t/**\n\t\t * Set up gallery toolbar.\n\t\t *\n\t\t * @return {void}\n\t\t */\n\t\tgalleryToolbar() {\n\t\t\tconst editing = this.state().get( 'editing' );\n\t\t\tthis.toolbar.set(\n\t\t\t\tnew wp.media.view.Toolbar( {\n\t\t\t\t\tcontroller: this,\n\t\t\t\t\titems: {\n\t\t\t\t\t\tinsert: {\n\t\t\t\t\t\t\tstyle: 'primary',\n\t\t\t\t\t\t\ttext: editing\n\t\t\t\t\t\t\t\t? wp.media.view.l10n.updateGallery\n\t\t\t\t\t\t\t\t: wp.media.view.l10n.insertGallery,\n\t\t\t\t\t\t\tpriority: 80,\n\t\t\t\t\t\t\trequires: { library: true },\n\n\t\t\t\t\t\t\t/**\n\t\t\t\t\t\t\t * @fires wp.media.controller.State#update\n\t\t\t\t\t\t\t */\n\t\t\t\t\t\t\tclick() {\n\t\t\t\t\t\t\t\tconst controller = this.controller,\n\t\t\t\t\t\t\t\t\tstate = controller.state();\n\n\t\t\t\t\t\t\t\tcontroller.close();\n\t\t\t\t\t\t\t\tstate.trigger(\n\t\t\t\t\t\t\t\t\t'update',\n\t\t\t\t\t\t\t\t\tstate.get( 'library' )\n\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\t// Restore and reset the default state.\n\t\t\t\t\t\t\t\tcontroller.setState( controller.options.state );\n\t\t\t\t\t\t\t\tcontroller.reset();\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t} )\n\t\t\t);\n\t\t},\n\n\t\t/**\n\t\t * Handle the edit state requirements of selected media item.\n\t\t *\n\t\t * @return {void}\n\t\t */\n\t\teditState() {\n\t\t\tconst selection = this.state( 'gallery' ).get( 'selection' );\n\t\t\tconst view = new wp.media.view.EditImage( {\n\t\t\t\tmodel: selection.single(),\n\t\t\t\tcontroller: this,\n\t\t\t} ).render();\n\n\t\t\t// Set the view to the EditImage frame using the selected image.\n\t\t\tthis.content.set( view );\n\n\t\t\t// After bringing in the frame, load the actual editor via an ajax call.\n\t\t\tview.loadEditor();\n\t\t},\n\n\t\t/**\n\t\t * Create the default states.\n\t\t *\n\t\t * @return {void}\n\t\t */\n\t\tcreateStates: function createStates() {\n\t\t\tthis.on( 'toolbar:create:main-gallery', this.galleryToolbar, this );\n\t\t\tthis.on( 'content:render:edit-image', this.editState, this );\n\n\t\t\tthis.states.add( [\n\t\t\t\tnew wp.media.controller.Library( {\n\t\t\t\t\tid: 'gallery',\n\t\t\t\t\ttitle: wp.media.view.l10n.createGalleryTitle,\n\t\t\t\t\tpriority: 40,\n\t\t\t\t\ttoolbar: 'main-gallery',\n\t\t\t\t\tfilterable: 'uploaded',\n\t\t\t\t\tmultiple: 'add',\n\t\t\t\t\teditable: false,\n\n\t\t\t\t\tlibrary: wp.media.query( {\n\t\t\t\t\t\ttype: 'image',\n\t\t\t\t\t\t...this.options.library,\n\t\t\t\t\t} ),\n\t\t\t\t} ),\n\t\t\t\tnew wp.media.controller.EditImage( {\n\t\t\t\t\tmodel: this.options.editImage,\n\t\t\t\t} ),\n\n\t\t\t\tnew wp.media.controller.GalleryEdit( {\n\t\t\t\t\tlibrary: this.options.selection,\n\t\t\t\t\tediting: this.options.editing,\n\t\t\t\t\tmenu: 'gallery',\n\t\t\t\t\tdisplaySettings: false,\n\t\t\t\t\tmultiple: true,\n\t\t\t\t} ),\n\n\t\t\t\tnew wp.media.controller.GalleryAdd(),\n\t\t\t] );\n\t\t},\n\t} );\n};\n\n// The media library image object contains numerous attributes\n// we only need this set to display the image in the library.\nconst slimImageObject = ( img ) => {\n\tconst attrSet = [\n\t\t'sizes',\n\t\t'mime',\n\t\t'type',\n\t\t'subtype',\n\t\t'id',\n\t\t'url',\n\t\t'alt',\n\t\t'link',\n\t\t'caption',\n\t];\n\treturn attrSet.reduce( ( result, key ) => {\n\t\tif ( img?.hasOwnProperty( key ) ) {\n\t\t\tresult[ key ] = img[ key ];\n\t\t}\n\t\treturn result;\n\t}, {} );\n};\n\nconst getAttachmentsCollection = ( ids ) => {\n\tconst { wp } = window;\n\n\treturn wp.media.query( {\n\t\torder: 'ASC',\n\t\torderby: 'post__in',\n\t\tpost__in: ids,\n\t\tposts_per_page: -1,\n\t\tquery: true,\n\t\ttype: 'image',\n\t} );\n};\n\nclass MediaUpload extends Component {\n\tconstructor() {\n\t\tsuper( ...arguments );\n\t\tthis.openModal = this.openModal.bind( this );\n\t\tthis.onOpen = this.onOpen.bind( this );\n\t\tthis.onSelect = this.onSelect.bind( this );\n\t\tthis.onUpdate = this.onUpdate.bind( this );\n\t\tthis.onClose = this.onClose.bind( this );\n\t}\n\n\tinitializeListeners() {\n\t\t// When an image is selected in the media frame...\n\t\tthis.frame.on( 'select', this.onSelect );\n\t\tthis.frame.on( 'update', this.onUpdate );\n\t\tthis.frame.on( 'open', this.onOpen );\n\t\tthis.frame.on( 'close', this.onClose );\n\t}\n\n\t/**\n\t * Sets the Gallery frame and initializes listeners.\n\t *\n\t * @return {void}\n\t */\n\tbuildAndSetGalleryFrame() {\n\t\tconst {\n\t\t\taddToGallery = false,\n\t\t\tallowedTypes,\n\t\t\tmultiple = false,\n\t\t\tvalue = DEFAULT_EMPTY_GALLERY,\n\t\t} = this.props;\n\n\t\t// If the value did not changed there is no need to rebuild the frame,\n\t\t// we can continue to use the existing one.\n\t\tif ( value === this.lastGalleryValue ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst { wp } = window;\n\n\t\tthis.lastGalleryValue = value;\n\n\t\t// If a frame already existed remove it.\n\t\tif ( this.frame ) {\n\t\t\tthis.frame.remove();\n\t\t}\n\t\tlet currentState;\n\t\tif ( addToGallery ) {\n\t\t\tcurrentState = 'gallery-library';\n\t\t} else {\n\t\t\tcurrentState = value && value.length ? 'gallery-edit' : 'gallery';\n\t\t}\n\t\tif ( ! this.GalleryDetailsMediaFrame ) {\n\t\t\tthis.GalleryDetailsMediaFrame = getGalleryDetailsMediaFrame();\n\t\t}\n\t\tconst attachments = getAttachmentsCollection( value );\n\t\tconst selection = new wp.media.model.Selection( attachments.models, {\n\t\t\tprops: attachments.props.toJSON(),\n\t\t\tmultiple,\n\t\t} );\n\t\tthis.frame = new this.GalleryDetailsMediaFrame( {\n\t\t\tmimeType: allowedTypes,\n\t\t\tstate: currentState,\n\t\t\tmultiple,\n\t\t\tselection,\n\t\t\tediting: !! value?.length,\n\t\t} );\n\t\twp.media.frame = this.frame;\n\t\tthis.initializeListeners();\n\t}\n\n\t/**\n\t * Initializes the Media Library requirements for the featured image flow.\n\t *\n\t * @return {void}\n\t */\n\tbuildAndSetFeatureImageFrame() {\n\t\tconst { wp } = window;\n\t\tconst { value: featuredImageId, multiple, allowedTypes } = this.props;\n\t\tconst featuredImageFrame = getFeaturedImageMediaFrame();\n\t\tconst attachments = getAttachmentsCollection( featuredImageId );\n\t\tconst selection = new wp.media.model.Selection( attachments.models, {\n\t\t\tprops: attachments.props.toJSON(),\n\t\t} );\n\t\tthis.frame = new featuredImageFrame( {\n\t\t\tmimeType: allowedTypes,\n\t\t\tstate: 'featured-image',\n\t\t\tmultiple,\n\t\t\tselection,\n\t\t\tediting: featuredImageId,\n\t\t} );\n\t\twp.media.frame = this.frame;\n\t\t// In order to select the current featured image when opening\n\t\t// the media library we have to set the appropriate settings.\n\t\t// Currently they are set in php for the post editor, but\n\t\t// not for site editor.\n\t\twp.media.view.settings.post = {\n\t\t\t...wp.media.view.settings.post,\n\t\t\tfeaturedImageId: featuredImageId || -1,\n\t\t};\n\t}\n\n\t/**\n\t * Initializes the Media Library requirements for the single image flow.\n\t *\n\t * @return {void}\n\t */\n\tbuildAndSetSingleMediaFrame() {\n\t\tconst { wp } = window;\n\t\tconst {\n\t\t\tallowedTypes,\n\t\t\tmultiple = false,\n\t\t\ttitle = __( 'Select or Upload Media' ),\n\t\t\tvalue,\n\t\t} = this.props;\n\n\t\tconst frameConfig = {\n\t\t\ttitle,\n\t\t\tmultiple,\n\t\t};\n\t\tif ( !! allowedTypes ) {\n\t\t\tframeConfig.library = { type: allowedTypes };\n\t\t}\n\n\t\t// If a frame already exists, remove it.\n\t\tif ( this.frame ) {\n\t\t\tthis.frame.remove();\n\t\t}\n\n\t\tconst singleImageFrame = getSingleMediaFrame();\n\t\tconst attachments = getAttachmentsCollection( value );\n\t\tconst selection = new wp.media.model.Selection( attachments.models, {\n\t\t\tprops: attachments.props.toJSON(),\n\t\t} );\n\t\tthis.frame = new singleImageFrame( {\n\t\t\tmimeType: allowedTypes,\n\t\t\tmultiple,\n\t\t\tselection,\n\t\t\t...frameConfig,\n\t\t} );\n\t\twp.media.frame = this.frame;\n\t}\n\n\tcomponentWillUnmount() {\n\t\tthis.frame?.remove();\n\t}\n\n\tonUpdate( selections ) {\n\t\tconst { onSelect, multiple = false } = this.props;\n\t\tconst state = this.frame.state();\n\t\tconst selectedImages = selections || state.get( 'selection' );\n\n\t\tif ( ! selectedImages || ! selectedImages.models.length ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( multiple ) {\n\t\t\tonSelect(\n\t\t\t\tselectedImages.models.map( ( model ) =>\n\t\t\t\t\tslimImageObject( model.toJSON() )\n\t\t\t\t)\n\t\t\t);\n\t\t} else {\n\t\t\tonSelect( slimImageObject( selectedImages.models[ 0 ].toJSON() ) );\n\t\t}\n\t}\n\n\tonSelect() {\n\t\tconst { onSelect, multiple = false } = this.props;\n\t\t// Get media attachment details from the frame state.\n\t\tconst attachment = this.frame.state().get( 'selection' ).toJSON();\n\t\tonSelect( multiple ? attachment : attachment[ 0 ] );\n\t}\n\n\tonOpen() {\n\t\tconst { wp } = window;\n\t\tconst { value } = this.props;\n\t\tthis.updateCollection();\n\n\t\t//Handle active tab in media model on model open.\n\t\tif ( this.props.mode ) {\n\t\t\tthis.frame.content.mode( this.props.mode );\n\t\t}\n\n\t\t// Handle both this.props.value being either (number[]) multiple ids\n\t\t// (for galleries) or a (number) singular id (e.g. image block).\n\t\tconst hasMedia = Array.isArray( value ) ? !! value?.length : !! value;\n\n\t\tif ( ! hasMedia ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst isGallery = this.props.gallery;\n\t\tconst selection = this.frame.state().get( 'selection' );\n\t\tconst valueArray = Array.isArray( value ) ? value : [ value ];\n\n\t\tif ( ! isGallery ) {\n\t\t\tvalueArray.forEach( ( id ) => {\n\t\t\t\tselection.add( wp.media.attachment( id ) );\n\t\t\t} );\n\t\t}\n\n\t\t// Load the images so they are available in the media modal.\n\t\tconst attachments = getAttachmentsCollection( valueArray );\n\n\t\t// Once attachments are loaded, set the current selection.\n\t\tattachments.more().done( function () {\n\t\t\tif ( isGallery && attachments?.models?.length ) {\n\t\t\t\tselection.add( attachments.models );\n\t\t\t}\n\t\t} );\n\t}\n\n\tonClose() {\n\t\tconst { onClose } = this.props;\n\n\t\tif ( onClose ) {\n\t\t\tonClose();\n\t\t}\n\n\t\tthis.frame.detach();\n\t}\n\n\tupdateCollection() {\n\t\tconst frameContent = this.frame.content.get();\n\t\tif ( frameContent && frameContent.collection ) {\n\t\t\tconst collection = frameContent.collection;\n\n\t\t\t// Clean all attachments we have in memory.\n\t\t\tcollection\n\t\t\t\t.toArray()\n\t\t\t\t.forEach( ( model ) => model.trigger( 'destroy', model ) );\n\n\t\t\t// Reset has more flag, if library had small amount of items all items may have been loaded before.\n\t\t\tcollection.mirroring._hasMore = true;\n\n\t\t\t// Request items.\n\t\t\tcollection.more();\n\t\t}\n\t}\n\n\topenModal() {\n\t\tconst {\n\t\t\tgallery = false,\n\t\t\tunstableFeaturedImageFlow = false,\n\t\t\tmodalClass,\n\t\t} = this.props;\n\n\t\tif ( gallery ) {\n\t\t\tthis.buildAndSetGalleryFrame();\n\t\t} else {\n\t\t\tthis.buildAndSetSingleMediaFrame();\n\t\t}\n\n\t\tif ( modalClass ) {\n\t\t\tthis.frame.$el.addClass( modalClass );\n\t\t}\n\n\t\tif ( unstableFeaturedImageFlow ) {\n\t\t\tthis.buildAndSetFeatureImageFrame();\n\t\t}\n\t\tthis.initializeListeners();\n\t\tthis.frame.open();\n\t}\n\n\trender() {\n\t\treturn this.props.render( { open: this.openModal } );\n\t}\n}\n\nexport default MediaUpload;\n", "/**\n * WordPress dependencies\n */\nimport { __, sprintf } from '@wordpress/i18n';\nimport { createBlobURL, revokeBlobURL } from '@wordpress/blob';\n\n/**\n * Internal dependencies\n */\nimport type {\n\tAdditionalData,\n\tAttachment,\n\tOnChangeHandler,\n\tOnErrorHandler,\n} from './types';\nimport { uploadToServer } from './upload-to-server';\nimport { validateMimeType } from './validate-mime-type';\nimport { validateMimeTypeForUser } from './validate-mime-type-for-user';\nimport { validateFileSize } from './validate-file-size';\nimport { UploadError } from './upload-error';\n\ndeclare global {\n\tinterface Window {\n\t\t__experimentalMediaProcessing?: boolean;\n\t}\n}\n\ninterface UploadMediaArgs {\n\t// Additional data to include in the request.\n\tadditionalData?: AdditionalData;\n\t// Array with the types of media that can be uploaded, if unset all types are allowed.\n\tallowedTypes?: string[];\n\t// List of files.\n\tfilesList: File[];\n\t// Maximum upload size in bytes allowed for the site.\n\tmaxUploadFileSize?: number;\n\t// Function called when an error happens.\n\tonError?: OnErrorHandler;\n\t// Function called each time a file or a temporary representation of the file is available.\n\tonFileChange?: OnChangeHandler;\n\t// List of allowed mime types and file extensions.\n\twpAllowedMimeTypes?: Record< string, string > | null;\n\t// Abort signal.\n\tsignal?: AbortSignal;\n\t// Whether to allow multiple files to be uploaded.\n\tmultiple?: boolean;\n}\n\n/**\n * Upload a media file when the file upload button is activated\n * or when adding a file to the editor via drag & drop.\n *\n * @param $0 Parameters object passed to the function.\n * @param $0.allowedTypes Array with the types of media that can be uploaded, if unset all types are allowed.\n * @param $0.additionalData Additional data to include in the request.\n * @param $0.filesList List of files.\n * @param $0.maxUploadFileSize Maximum upload size in bytes allowed for the site.\n * @param $0.onError Function called when an error happens.\n * @param $0.onFileChange Function called each time a file or a temporary representation of the file is available.\n * @param $0.wpAllowedMimeTypes List of allowed mime types and file extensions.\n * @param $0.signal Abort signal.\n * @param $0.multiple Whether to allow multiple files to be uploaded.\n */\nexport function uploadMedia( {\n\twpAllowedMimeTypes,\n\tallowedTypes,\n\tadditionalData = {},\n\tfilesList,\n\tmaxUploadFileSize,\n\tonError,\n\tonFileChange,\n\tsignal,\n\tmultiple = true,\n}: UploadMediaArgs ) {\n\tif ( ! multiple && filesList.length > 1 ) {\n\t\tonError?.( new Error( __( 'Only one file can be used here.' ) ) );\n\t\treturn;\n\t}\n\n\tconst validFiles = [];\n\n\tconst filesSet: Array< Partial< Attachment > | null > = [];\n\tconst setAndUpdateFiles = ( index: number, value: Attachment | null ) => {\n\t\t// For client-side media processing, this is handled by the upload-media package.\n\t\tif ( ! window.__experimentalMediaProcessing ) {\n\t\t\tif ( filesSet[ index ]?.url ) {\n\t\t\t\trevokeBlobURL( filesSet[ index ].url );\n\t\t\t}\n\t\t}\n\t\tfilesSet[ index ] = value;\n\t\tonFileChange?.(\n\t\t\tfilesSet.filter( ( attachment ) => attachment !== null )\n\t\t);\n\t};\n\n\tfor ( const mediaFile of filesList ) {\n\t\t// Verify if user is allowed to upload this mime type.\n\t\t// Defer to the server when type not detected.\n\t\ttry {\n\t\t\tvalidateMimeTypeForUser( mediaFile, wpAllowedMimeTypes );\n\t\t} catch ( error: unknown ) {\n\t\t\tonError?.( error as Error );\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Check if the caller (e.g. a block) supports this mime type.\n\t\t// Defer to the server when type not detected.\n\t\ttry {\n\t\t\tvalidateMimeType( mediaFile, allowedTypes );\n\t\t} catch ( error: unknown ) {\n\t\t\tonError?.( error as Error );\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Verify if file is greater than the maximum file upload size allowed for the site.\n\t\ttry {\n\t\t\tvalidateFileSize( mediaFile, maxUploadFileSize );\n\t\t} catch ( error: unknown ) {\n\t\t\tonError?.( error as Error );\n\t\t\tcontinue;\n\t\t}\n\n\t\tvalidFiles.push( mediaFile );\n\n\t\t// For client-side media processing, this is handled by the upload-media package.\n\t\tif ( ! window.__experimentalMediaProcessing ) {\n\t\t\t// Set temporary URL to create placeholder media file, this is replaced\n\t\t\t// with final file from media gallery when upload is `done` below.\n\t\t\tfilesSet.push( { url: createBlobURL( mediaFile ) } );\n\t\t\tonFileChange?.( filesSet as Array< Partial< Attachment > > );\n\t\t}\n\t}\n\n\tvalidFiles.map( async ( file, index ) => {\n\t\ttry {\n\t\t\tconst attachment = await uploadToServer(\n\t\t\t\tfile,\n\t\t\t\tadditionalData,\n\t\t\t\tsignal\n\t\t\t);\n\t\t\tsetAndUpdateFiles( index, attachment );\n\t\t} catch ( error ) {\n\t\t\t// Reset to empty on failure.\n\t\t\tsetAndUpdateFiles( index, null );\n\n\t\t\t// @wordpress/api-fetch throws any response that isn't in the 200 range as-is.\n\t\t\tlet message: string;\n\t\t\tif (\n\t\t\t\ttypeof error === 'object' &&\n\t\t\t\terror !== null &&\n\t\t\t\t'message' in error\n\t\t\t) {\n\t\t\t\tmessage =\n\t\t\t\t\ttypeof error.message === 'string'\n\t\t\t\t\t\t? error.message\n\t\t\t\t\t\t: String( error.message );\n\t\t\t} else {\n\t\t\t\tmessage = sprintf(\n\t\t\t\t\t// translators: %s: file name\n\t\t\t\t\t__( 'Error while uploading file %s to the media library.' ),\n\t\t\t\t\tfile.name\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tonError?.(\n\t\t\t\tnew UploadError( {\n\t\t\t\t\tcode: 'GENERAL',\n\t\t\t\t\tmessage,\n\t\t\t\t\tfile,\n\t\t\t\t\tcause: error instanceof Error ? error : undefined,\n\t\t\t\t} )\n\t\t\t);\n\t\t}\n\t} );\n}\n", "/**\n * WordPress dependencies\n */\nimport apiFetch from '@wordpress/api-fetch';\n\n/**\n * Internal dependencies\n */\nimport { flattenFormData } from './flatten-form-data';\nimport { transformAttachment } from './transform-attachment';\nimport type { CreateRestAttachment, RestAttachment } from './types';\n\nexport async function uploadToServer(\n\tfile: File,\n\tadditionalData: CreateRestAttachment = {},\n\tsignal?: AbortSignal\n) {\n\t// Create upload payload.\n\tconst data = new FormData();\n\tdata.append( 'file', file, file.name || file.type.replace( '/', '.' ) );\n\tfor ( const [ key, value ] of Object.entries( additionalData ) ) {\n\t\tflattenFormData(\n\t\t\tdata,\n\t\t\tkey,\n\t\t\tvalue as string | Record< string, string > | undefined\n\t\t);\n\t}\n\n\treturn transformAttachment(\n\t\tawait apiFetch< RestAttachment >( {\n\t\t\t// This allows the video block to directly get a video's poster image.\n\t\t\tpath: '/wp/v2/media?_embed=wp:featuredmedia',\n\t\t\tbody: data,\n\t\t\tmethod: 'POST',\n\t\t\tsignal,\n\t\t} )\n\t);\n}\n", "/**\n * Determines whether the passed argument appears to be a plain object.\n *\n * @param data The object to inspect.\n */\nfunction isPlainObject( data: unknown ): data is Record< string, unknown > {\n\treturn (\n\t\tdata !== null &&\n\t\ttypeof data === 'object' &&\n\t\tObject.getPrototypeOf( data ) === Object.prototype\n\t);\n}\n\n/**\n * Recursively flatten data passed to form data, to allow using multi-level objects.\n *\n * @param {FormData} formData Form data object.\n * @param {string} key Key to amend to form data object\n * @param {string|Object} data Data to be amended to form data.\n */\nexport function flattenFormData(\n\tformData: FormData,\n\tkey: string,\n\tdata: string | undefined | Record< string, string >\n) {\n\tif ( isPlainObject( data ) ) {\n\t\tfor ( const [ name, value ] of Object.entries( data ) ) {\n\t\t\tflattenFormData( formData, `${ key }[${ name }]`, value );\n\t\t}\n\t} else if ( data !== undefined ) {\n\t\tformData.append( key, String( data ) );\n\t}\n}\n", "/**\n * Internal dependencies\n */\nimport type { Attachment, RestAttachment } from './types';\n\n/**\n * Transforms an attachment object from the REST API shape into the shape expected by the block editor and other consumers.\n *\n * @param attachment REST API attachment object.\n */\nexport function transformAttachment( attachment: RestAttachment ): Attachment {\n\t// eslint-disable-next-line camelcase\n\tconst { alt_text, source_url, ...savedMediaProps } = attachment;\n\treturn {\n\t\t...savedMediaProps,\n\t\talt: attachment.alt_text,\n\t\tcaption: attachment.caption?.raw ?? '',\n\t\ttitle: attachment.title.raw,\n\t\turl: attachment.source_url,\n\t\tposter:\n\t\t\tattachment._embedded?.[ 'wp:featuredmedia' ]?.[ 0 ]?.source_url ||\n\t\t\tundefined,\n\t};\n}\n", "/**\n * WordPress dependencies\n */\nimport { __, sprintf } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport { UploadError } from './upload-error';\n\n/**\n * Verifies if the caller (e.g. a block) supports this mime type.\n *\n * @param file File object.\n * @param allowedTypes List of allowed mime types.\n */\nexport function validateMimeType( file: File, allowedTypes?: string[] ) {\n\tif ( ! allowedTypes ) {\n\t\treturn;\n\t}\n\n\t// Allowed type specified by consumer.\n\tconst isAllowedType = allowedTypes.some( ( allowedType ) => {\n\t\t// If a complete mimetype is specified verify if it matches exactly the mime type of the file.\n\t\tif ( allowedType.includes( '/' ) ) {\n\t\t\treturn allowedType === file.type;\n\t\t}\n\t\t// Otherwise a general mime type is used, and we should verify if the file mimetype starts with it.\n\t\treturn file.type.startsWith( `${ allowedType }/` );\n\t} );\n\n\tif ( file.type && ! isAllowedType ) {\n\t\tthrow new UploadError( {\n\t\t\tcode: 'MIME_TYPE_NOT_SUPPORTED',\n\t\t\tmessage: sprintf(\n\t\t\t\t// translators: %s: file name.\n\t\t\t\t__( '%s: Sorry, this file type is not supported here.' ),\n\t\t\t\tfile.name\n\t\t\t),\n\t\t\tfile,\n\t\t} );\n\t}\n}\n", "interface UploadErrorArgs {\n\tcode: string;\n\tmessage: string;\n\tfile: File;\n\tcause?: Error;\n}\n\n/**\n * MediaError class.\n *\n * Small wrapper around the `Error` class\n * to hold an error code and a reference to a file object.\n */\nexport class UploadError extends Error {\n\tcode: string;\n\tfile: File;\n\n\tconstructor( { code, message, file, cause }: UploadErrorArgs ) {\n\t\tsuper( message, { cause } );\n\n\t\tObject.setPrototypeOf( this, new.target.prototype );\n\n\t\tthis.code = code;\n\t\tthis.file = file;\n\t}\n}\n", "/**\n * WordPress dependencies\n */\nimport { __, sprintf } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport { UploadError } from './upload-error';\nimport { getMimeTypesArray } from './get-mime-types-array';\n\n/**\n * Verifies if the user is allowed to upload this mime type.\n *\n * @param file File object.\n * @param wpAllowedMimeTypes List of allowed mime types and file extensions.\n */\nexport function validateMimeTypeForUser(\n\tfile: File,\n\twpAllowedMimeTypes?: Record< string, string > | null\n) {\n\t// Allowed types for the current WP_User.\n\tconst allowedMimeTypesForUser = getMimeTypesArray( wpAllowedMimeTypes );\n\n\tif ( ! allowedMimeTypesForUser ) {\n\t\treturn;\n\t}\n\n\tconst isAllowedMimeTypeForUser = allowedMimeTypesForUser.includes(\n\t\tfile.type\n\t);\n\n\tif ( file.type && ! isAllowedMimeTypeForUser ) {\n\t\tthrow new UploadError( {\n\t\t\tcode: 'MIME_TYPE_NOT_ALLOWED_FOR_USER',\n\t\t\tmessage: sprintf(\n\t\t\t\t// translators: %s: file name.\n\t\t\t\t__(\n\t\t\t\t\t'%s: Sorry, you are not allowed to upload this file type.'\n\t\t\t\t),\n\t\t\t\tfile.name\n\t\t\t),\n\t\t\tfile,\n\t\t} );\n\t}\n}\n", "/**\n * Browsers may use unexpected mime types, and they differ from browser to browser.\n * This function computes a flexible array of mime types from the mime type structured provided by the server.\n * Converts { jpg|jpeg|jpe: \"image/jpeg\" } into [ \"image/jpeg\", \"image/jpg\", \"image/jpeg\", \"image/jpe\" ]\n *\n * @param {?Object} wpMimeTypesObject Mime type object received from the server.\n * Extensions are keys separated by '|' and values are mime types associated with an extension.\n *\n * @return An array of mime types or null\n */\nexport function getMimeTypesArray(\n\twpMimeTypesObject?: Record< string, string > | null\n) {\n\tif ( ! wpMimeTypesObject ) {\n\t\treturn null;\n\t}\n\treturn Object.entries( wpMimeTypesObject ).flatMap(\n\t\t( [ extensionsString, mime ] ) => {\n\t\t\tconst [ type ] = mime.split( '/' );\n\t\t\tconst extensions = extensionsString.split( '|' );\n\t\t\treturn [\n\t\t\t\tmime,\n\t\t\t\t...extensions.map(\n\t\t\t\t\t( extension ) => `${ type }/${ extension }`\n\t\t\t\t),\n\t\t\t];\n\t\t}\n\t);\n}\n", "/**\n * WordPress dependencies\n */\nimport { __, sprintf } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport { UploadError } from './upload-error';\n\n/**\n * Verifies whether the file is within the file upload size limits for the site.\n *\n * @param file File object.\n * @param maxUploadFileSize Maximum upload size in bytes allowed for the site.\n */\nexport function validateFileSize( file: File, maxUploadFileSize?: number ) {\n\t// Don't allow empty files to be uploaded.\n\tif ( file.size <= 0 ) {\n\t\tthrow new UploadError( {\n\t\t\tcode: 'EMPTY_FILE',\n\t\t\tmessage: sprintf(\n\t\t\t\t// translators: %s: file name.\n\t\t\t\t__( '%s: This file is empty.' ),\n\t\t\t\tfile.name\n\t\t\t),\n\t\t\tfile,\n\t\t} );\n\t}\n\n\tif ( maxUploadFileSize && file.size > maxUploadFileSize ) {\n\t\tthrow new UploadError( {\n\t\t\tcode: 'SIZE_ABOVE_LIMIT',\n\t\t\tmessage: sprintf(\n\t\t\t\t// translators: %s: file name.\n\t\t\t\t__(\n\t\t\t\t\t'%s: This file exceeds the maximum upload size for this site.'\n\t\t\t\t),\n\t\t\t\tfile.name\n\t\t\t),\n\t\t\tfile,\n\t\t} );\n\t}\n}\n", "/**\n * WordPress dependencies\n */\nimport { __, sprintf } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport type {\n\tOnChangeHandler,\n\tOnErrorHandler,\n\tCreateSideloadFile,\n\tRestAttachment,\n} from './types';\nimport { sideloadToServer } from './sideload-to-server';\nimport { UploadError } from './upload-error';\n\nconst noop = () => {};\n\ninterface SideloadMediaArgs {\n\t// Additional data to include in the request.\n\tadditionalData?: CreateSideloadFile;\n\t// File to sideload.\n\tfile: File;\n\t// Attachment ID.\n\tattachmentId: RestAttachment[ 'id' ];\n\t// Function called when an error happens.\n\tonError?: OnErrorHandler;\n\t// Function called each time a file or a temporary representation of the file is available.\n\tonFileChange?: OnChangeHandler;\n\t// Abort signal.\n\tsignal?: AbortSignal;\n}\n\n/**\n * Uploads a file to the server without creating an attachment.\n *\n * @param $0 Parameters object passed to the function.\n * @param $0.file Media File to Save.\n * @param $0.attachmentId Parent attachment ID.\n * @param $0.additionalData Additional data to include in the request.\n * @param $0.signal Abort signal.\n * @param $0.onFileChange Function called each time a file or a temporary representation of the file is available.\n * @param $0.onError Function called when an error happens.\n */\nexport async function sideloadMedia( {\n\tfile,\n\tattachmentId,\n\tadditionalData = {},\n\tsignal,\n\tonFileChange,\n\tonError = noop,\n}: SideloadMediaArgs ) {\n\ttry {\n\t\tconst attachment = await sideloadToServer(\n\t\t\tfile,\n\t\t\tattachmentId,\n\t\t\tadditionalData,\n\t\t\tsignal\n\t\t);\n\t\tonFileChange?.( [ attachment ] );\n\t} catch ( error ) {\n\t\tlet message;\n\t\tif ( error instanceof Error ) {\n\t\t\tmessage = error.message;\n\t\t} else {\n\t\t\tmessage = sprintf(\n\t\t\t\t// translators: %s: file name\n\t\t\t\t__( 'Error while sideloading file %s to the server.' ),\n\t\t\t\tfile.name\n\t\t\t);\n\t\t}\n\t\tonError(\n\t\t\tnew UploadError( {\n\t\t\t\tcode: 'GENERAL',\n\t\t\t\tmessage,\n\t\t\t\tfile,\n\t\t\t\tcause: error instanceof Error ? error : undefined,\n\t\t\t} )\n\t\t);\n\t}\n}\n", "/**\n * WordPress dependencies\n */\nimport apiFetch from '@wordpress/api-fetch';\n\n/**\n * Internal dependencies\n */\nimport type { CreateSideloadFile, RestAttachment } from './types';\nimport { flattenFormData } from './flatten-form-data';\nimport { transformAttachment } from './transform-attachment';\n\n/**\n * Uploads a file to the server without creating an attachment.\n *\n * @param file Media File to Save.\n * @param attachmentId Parent attachment ID.\n * @param additionalData Additional data to include in the request.\n * @param signal Abort signal.\n *\n * @return The saved attachment.\n */\nexport async function sideloadToServer(\n\tfile: File,\n\tattachmentId: RestAttachment[ 'id' ],\n\tadditionalData: CreateSideloadFile = {},\n\tsignal?: AbortSignal\n) {\n\t// Create upload payload.\n\tconst data = new FormData();\n\tdata.append( 'file', file, file.name || file.type.replace( '/', '.' ) );\n\tfor ( const [ key, value ] of Object.entries( additionalData ) ) {\n\t\tflattenFormData(\n\t\t\tdata,\n\t\t\tkey,\n\t\t\tvalue as string | Record< string, string > | undefined\n\t\t);\n\t}\n\n\treturn transformAttachment(\n\t\tawait apiFetch< RestAttachment >( {\n\t\t\tpath: `/wp/v2/media/${ attachmentId }/sideload`,\n\t\t\tbody: data,\n\t\t\tmethod: 'POST',\n\t\t\tsignal,\n\t\t} )\n\t);\n}\n", "/**\n * WordPress dependencies\n */\nimport { useState, useCallback, useMemo } from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\nimport {\n\tprivateApis as coreDataPrivateApis,\n\tstore as coreStore,\n} from '@wordpress/core-data';\nimport { resolveSelect } from '@wordpress/data';\nimport { Modal, DropZone, FormFileUpload, Button } from '@wordpress/components';\nimport { upload as uploadIcon } from '@wordpress/icons';\nimport { DataViewsPicker } from '@wordpress/dataviews';\nimport type { View, Field, ActionButton } from '@wordpress/dataviews';\nimport {\n\taltTextField,\n\tattachedToField,\n\tauthorField,\n\tcaptionField,\n\tdateAddedField,\n\tdateModifiedField,\n\tdescriptionField,\n\tfilenameField,\n\tfilesizeField,\n\tmediaDimensionsField,\n\tmediaThumbnailField,\n\tmimeTypeField,\n} from '@wordpress/media-fields';\n\n/**\n * Internal dependencies\n */\nimport type { Attachment, RestAttachment } from '../../utils/types';\nimport { transformAttachment } from '../../utils/transform-attachment';\nimport { uploadMedia } from '../../utils/upload-media';\nimport { unlock } from '../../lock-unlock';\n\nconst { useEntityRecordsWithPermissions } = unlock( coreDataPrivateApis );\n\n// Layout constants - matching the picker layout types\nconst LAYOUT_PICKER_GRID = 'pickerGrid';\nconst LAYOUT_PICKER_TABLE = 'pickerTable';\n\ninterface MediaUploadModalProps {\n\t/**\n\t * Array of allowed media types.\n\t * @default ['image']\n\t */\n\tallowedTypes?: string[];\n\n\t/**\n\t * Whether multiple files can be selected.\n\t * @default false\n\t */\n\tmultiple?: boolean;\n\n\t/**\n\t * The currently selected media item(s).\n\t * Can be a single ID number or array of IDs for multiple selection.\n\t */\n\tvalue?: number | number[];\n\n\t/**\n\t * Function called when media is selected.\n\t * Receives single attachment object or array of attachments.\n\t */\n\tonSelect: ( media: Attachment | Attachment[] ) => void;\n\n\t/**\n\t * Function called when the modal is closed without selection.\n\t */\n\tonClose?: () => void;\n\n\t/**\n\t * Function to handle media uploads.\n\t * If not provided, drag and drop will be disabled.\n\t */\n\tonUpload?: ( args: {\n\t\tallowedTypes?: string[];\n\t\tfilesList: File[];\n\t\tonFileChange?: ( attachments: Partial< Attachment >[] ) => void;\n\t\tonError?: ( error: Error ) => void;\n\t\tmultiple?: boolean;\n\t} ) => void;\n\n\t/**\n\t * Title for the modal.\n\t * @default 'Select Media'\n\t */\n\ttitle?: string;\n\n\t/**\n\t * Whether the modal is open.\n\t */\n\tisOpen: boolean;\n\n\t/**\n\t * Whether the modal can be closed by clicking outside or pressing escape.\n\t * @default true\n\t */\n\tisDismissible?: boolean;\n\n\t/**\n\t * Additional CSS class for the modal.\n\t */\n\tmodalClass?: string;\n\n\t/**\n\t * Whether to show a search input.\n\t * @default true\n\t */\n\tsearch?: boolean;\n\n\t/**\n\t * Label for the search input.\n\t */\n\tsearchLabel?: string;\n}\n\n/**\n * MediaUploadModal component that uses Modal and DataViewsPicker for media selection.\n *\n * This is a modern functional component alternative to the legacy MediaUpload class component.\n * It provides a cleaner API and better integration with the WordPress block editor.\n *\n * @param props Component props\n * @param props.allowedTypes Array of allowed media types\n * @param props.multiple Whether multiple files can be selected\n * @param props.value Currently selected media item(s)\n * @param props.onSelect Function called when media is selected\n * @param props.onClose Function called when modal is closed\n * @param props.onUpload Function to handle media uploads\n * @param props.title Title for the modal\n * @param props.isOpen Whether the modal is open\n * @param props.isDismissible Whether modal can be dismissed\n * @param props.modalClass Additional CSS class for modal\n * @param props.search Whether to show search input\n * @param props.searchLabel Label for search input\n * @return JSX element or null\n */\nexport function MediaUploadModal( {\n\tallowedTypes = [ 'image' ],\n\tmultiple = false,\n\tvalue,\n\tonSelect,\n\tonClose,\n\tonUpload,\n\ttitle = __( 'Select Media' ),\n\tisOpen,\n\tisDismissible = true,\n\tmodalClass,\n\tsearch = true,\n\tsearchLabel = __( 'Search media' ),\n}: MediaUploadModalProps ) {\n\tconst [ selection, setSelection ] = useState< string[] >( () => {\n\t\tif ( ! value ) {\n\t\t\treturn [];\n\t\t}\n\t\treturn Array.isArray( value )\n\t\t\t? value.map( String )\n\t\t\t: [ String( value ) ];\n\t} );\n\n\t// DataViews configuration - allow view updates\n\tconst [ view, setView ] = useState< View >( () => ( {\n\t\ttype: LAYOUT_PICKER_GRID,\n\t\tfields: [],\n\t\tshowTitle: false,\n\t\ttitleField: 'title',\n\t\tmediaField: 'media_thumbnail',\n\t\tsearch: '',\n\t\tpage: 1,\n\t\tperPage: 20,\n\t\tfilters: [],\n\t} ) );\n\n\t// Build query args based on view properties, similar to PostList\n\tconst queryArgs = useMemo( () => {\n\t\tconst filters: Record< string, any > = {};\n\n\t\tview.filters?.forEach( ( filter ) => {\n\t\t\t// Handle media type filters\n\t\t\tif ( filter.field === 'media_type' ) {\n\t\t\t\tfilters.media_type = filter.value;\n\t\t\t}\n\t\t\t// Handle author filters\n\t\t\tif ( filter.field === 'author' ) {\n\t\t\t\tif ( filter.operator === 'isAny' ) {\n\t\t\t\t\tfilters.author = filter.value;\n\t\t\t\t} else if ( filter.operator === 'isNone' ) {\n\t\t\t\t\tfilters.author_exclude = filter.value;\n\t\t\t\t}\n\t\t\t}\n\t\t\t// Handle date filters\n\t\t\tif ( filter.field === 'date' || filter.field === 'modified' ) {\n\t\t\t\tif ( filter.operator === 'before' ) {\n\t\t\t\t\tfilters.before = filter.value;\n\t\t\t\t} else if ( filter.operator === 'after' ) {\n\t\t\t\t\tfilters.after = filter.value;\n\t\t\t\t}\n\t\t\t}\n\t\t\t// Handle mime type filters\n\t\t\tif ( filter.field === 'mime_type' ) {\n\t\t\t\tfilters.mime_type = filter.value;\n\t\t\t}\n\t\t} );\n\n\t\t// Base media type on allowedTypes if no filter is set\n\t\tif ( ! filters.media_type ) {\n\t\t\tfilters.media_type = allowedTypes.includes( '*' )\n\t\t\t\t? undefined\n\t\t\t\t: allowedTypes;\n\t\t}\n\n\t\treturn {\n\t\t\tper_page: view.perPage || 20,\n\t\t\tpage: view.page || 1,\n\t\t\tstatus: 'inherit',\n\t\t\torder: view.sort?.direction,\n\t\t\torderby: view.sort?.field,\n\t\t\tsearch: view.search,\n\t\t\t_embed: 'author,wp:attached-to',\n\t\t\t...filters,\n\t\t};\n\t}, [ view, allowedTypes ] );\n\n\t// Fetch all media attachments using WordPress core data with permissions\n\tconst {\n\t\trecords: mediaRecords,\n\t\tisResolving: isLoading,\n\t\ttotalItems,\n\t\ttotalPages,\n\t} = useEntityRecordsWithPermissions( 'postType', 'attachment', queryArgs );\n\n\tconst fields: Field< RestAttachment >[] = useMemo(\n\t\t() => [\n\t\t\t// Media field definitions from @wordpress/media-fields\n\t\t\t// Cast is safe because RestAttachment has the same properties as Attachment\n\t\t\t{\n\t\t\t\t...( mediaThumbnailField as Field< RestAttachment > ),\n\t\t\t\tenableHiding: false, // Within the modal, the thumbnail should always be shown.\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 'title',\n\t\t\t\ttype: 'text' as const,\n\t\t\t\tlabel: __( 'Title' ),\n\t\t\t\tgetValue: ( { item }: { item: RestAttachment } ) => {\n\t\t\t\t\tconst titleValue = item.title.raw || item.title.rendered;\n\t\t\t\t\treturn titleValue || __( '(no title)' );\n\t\t\t\t},\n\t\t\t},\n\t\t\taltTextField as Field< RestAttachment >,\n\t\t\tcaptionField as Field< RestAttachment >,\n\t\t\tdescriptionField as Field< RestAttachment >,\n\t\t\tdateAddedField as Field< RestAttachment >,\n\t\t\tdateModifiedField as Field< RestAttachment >,\n\t\t\tauthorField as Field< RestAttachment >,\n\t\t\tfilenameField as Field< RestAttachment >,\n\t\t\tfilesizeField as Field< RestAttachment >,\n\t\t\tmediaDimensionsField as Field< RestAttachment >,\n\t\t\tmimeTypeField as Field< RestAttachment >,\n\t\t\tattachedToField as Field< RestAttachment >,\n\t\t],\n\t\t[]\n\t);\n\n\tconst actions: ActionButton< RestAttachment >[] = useMemo(\n\t\t() => [\n\t\t\t{\n\t\t\t\tid: 'select',\n\t\t\t\tlabel: multiple ? __( 'Select' ) : __( 'Select' ),\n\t\t\t\tisPrimary: true,\n\t\t\t\tsupportsBulk: multiple,\n\t\t\t\tasync callback() {\n\t\t\t\t\tif ( selection.length === 0 ) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst selectedPostsQuery = {\n\t\t\t\t\t\tinclude: selection,\n\t\t\t\t\t\tper_page: -1,\n\t\t\t\t\t};\n\n\t\t\t\t\tconst selectedPosts = await resolveSelect(\n\t\t\t\t\t\tcoreStore\n\t\t\t\t\t).getEntityRecords< RestAttachment >(\n\t\t\t\t\t\t'postType',\n\t\t\t\t\t\t'attachment',\n\t\t\t\t\t\tselectedPostsQuery\n\t\t\t\t\t);\n\n\t\t\t\t\t// Transform the selected posts to the expected Attachment format\n\t\t\t\t\tconst transformedPosts = ( selectedPosts ?? [] )\n\t\t\t\t\t\t.map( transformAttachment )\n\t\t\t\t\t\t.filter( Boolean );\n\n\t\t\t\t\tconst selectedItems = multiple\n\t\t\t\t\t\t? transformedPosts\n\t\t\t\t\t\t: transformedPosts?.[ 0 ];\n\n\t\t\t\t\tonSelect( selectedItems );\n\t\t\t\t},\n\t\t\t},\n\t\t],\n\t\t[ multiple, onSelect, selection ]\n\t);\n\n\tconst handleModalClose = useCallback( () => {\n\t\tonClose?.();\n\t}, [ onClose ] );\n\n\t// Use onUpload if provided, otherwise fall back to uploadMedia\n\tconst handleUpload = onUpload || uploadMedia;\n\n\tconst handleFileSelect = useCallback(\n\t\t( event: React.ChangeEvent< HTMLInputElement > ) => {\n\t\t\tconst files = event.target.files;\n\t\t\tif ( files && files.length > 0 ) {\n\t\t\t\tconst filesArray = Array.from( files );\n\t\t\t\thandleUpload( {\n\t\t\t\t\tallowedTypes,\n\t\t\t\t\tfilesList: filesArray,\n\t\t\t\t} );\n\t\t\t}\n\t\t},\n\t\t[ allowedTypes, handleUpload ]\n\t);\n\n\tconst paginationInfo = useMemo(\n\t\t() => ( {\n\t\t\ttotalItems,\n\t\t\ttotalPages,\n\t\t} ),\n\t\t[ totalItems, totalPages ]\n\t);\n\n\tconst defaultLayouts = useMemo(\n\t\t() => ( {\n\t\t\t[ LAYOUT_PICKER_GRID ]: {\n\t\t\t\tfields: [],\n\t\t\t\tshowTitle: false,\n\t\t\t},\n\t\t\t[ LAYOUT_PICKER_TABLE ]: {\n\t\t\t\tfields: [\n\t\t\t\t\t'filename',\n\t\t\t\t\t'filesize',\n\t\t\t\t\t'media_dimensions',\n\t\t\t\t\t'author',\n\t\t\t\t\t'date',\n\t\t\t\t],\n\t\t\t\tshowTitle: true,\n\t\t\t},\n\t\t} ),\n\t\t[]\n\t);\n\n\t// Build accept attribute from allowedTypes\n\tconst acceptTypes = useMemo( () => {\n\t\tif ( allowedTypes.includes( '*' ) ) {\n\t\t\treturn undefined;\n\t\t}\n\t\treturn allowedTypes.join( ',' );\n\t}, [ allowedTypes ] );\n\n\tif ( ! isOpen ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<Modal\n\t\t\ttitle={ title }\n\t\t\tonRequestClose={ handleModalClose }\n\t\t\tisDismissible={ isDismissible }\n\t\t\tclassName={ modalClass }\n\t\t\toverlayClassName=\"media-upload-modal\"\n\t\t\tsize=\"fill\"\n\t\t\theaderActions={\n\t\t\t\t<FormFileUpload\n\t\t\t\t\taccept={ acceptTypes }\n\t\t\t\t\tmultiple\n\t\t\t\t\tonChange={ handleFileSelect }\n\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\trender={ ( { openFileDialog } ) => (\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\tonClick={ openFileDialog }\n\t\t\t\t\t\t\ticon={ uploadIcon }\n\t\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __( 'Upload media' ) }\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t) }\n\t\t\t\t/>\n\t\t\t}\n\t\t>\n\t\t\t<DropZone\n\t\t\t\tonFilesDrop={ ( files ) => {\n\t\t\t\t\tlet filteredFiles = files;\n\t\t\t\t\t// Filter files by allowed types if specified\n\t\t\t\t\tif ( allowedTypes && ! allowedTypes.includes( '*' ) ) {\n\t\t\t\t\t\tfilteredFiles = files.filter( ( file ) =>\n\t\t\t\t\t\t\tallowedTypes.some( ( allowedType ) => {\n\t\t\t\t\t\t\t\t// Check if the file type matches the allowed MIME type\n\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\tfile.type === allowedType ||\n\t\t\t\t\t\t\t\t\tfile.type.startsWith(\n\t\t\t\t\t\t\t\t\t\tallowedType.replace( '*', '' )\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t} )\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\tif ( filteredFiles.length > 0 ) {\n\t\t\t\t\t\thandleUpload( {\n\t\t\t\t\t\t\tallowedTypes,\n\t\t\t\t\t\t\tfilesList: filteredFiles,\n\t\t\t\t\t\t} );\n\t\t\t\t\t}\n\t\t\t\t} }\n\t\t\t\tlabel={ __( 'Drop files to upload' ) }\n\t\t\t/>\n\t\t\t<DataViewsPicker\n\t\t\t\tdata={ mediaRecords || [] }\n\t\t\t\tfields={ fields }\n\t\t\t\tview={ view }\n\t\t\t\tonChangeView={ setView }\n\t\t\t\tactions={ actions }\n\t\t\t\tselection={ selection }\n\t\t\t\tonChangeSelection={ setSelection }\n\t\t\t\tisLoading={ isLoading }\n\t\t\t\tpaginationInfo={ paginationInfo }\n\t\t\t\tdefaultLayouts={ defaultLayouts }\n\t\t\t\tgetItemId={ ( item: RestAttachment ) => String( item.id ) }\n\t\t\t\tsearch={ search }\n\t\t\t\tsearchLabel={ searchLabel }\n\t\t\t\titemListLabel={ __( 'Media items' ) }\n\t\t\t/>\n\t\t</Modal>\n\t);\n}\n\nexport default MediaUploadModal;\n", "/**\n * WordPress dependencies\n */\nimport { Path, SVG } from '@wordpress/primitives';\n\nexport default (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n\t<Path d=\"m16.5 13.5-3.7 3.7V4h-1.5v13.2l-3.8-3.7-1 1 5.5 5.6 5.5-5.6z\" />\n\t</SVG>\n);\n", "/**\n * WordPress dependencies\n */\nimport { Path, SVG } from '@wordpress/primitives';\n\nexport default (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n\t<Path d=\"M20 11.2H6.8l3.7-3.7-1-1L3.9 12l5.6 5.5 1-1-3.7-3.7H20z\" />\n\t</SVG>\n);\n", "/**\n * WordPress dependencies\n */\nimport { Path, SVG } from '@wordpress/primitives';\n\nexport default (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n\t<Path d=\"m14.5 6.5-1 1 3.7 3.7H4v1.6h13.2l-3.7 3.7 1 1 5.6-5.5z\" />\n\t</SVG>\n);\n", "/**\n * WordPress dependencies\n */\nimport { Path, SVG } from '@wordpress/primitives';\n\nexport default (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n\t<Path d=\"M12 3.9 6.5 9.5l1 1 3.8-3.7V20h1.5V6.8l3.7 3.7 1-1z\" />\n\t</SVG>\n);\n", "/**\n * WordPress dependencies\n */\nimport { Path, SVG } from '@wordpress/primitives';\n\nexport default (\n\t<SVG viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\">\n\t<Path d=\"M17.7 4.3c-1.2 0-2.8 0-3.8 1-.6.6-.9 1.5-.9 2.6V14c-.6-.6-1.5-1-2.5-1C8.6 13 7 14.6 7 16.5S8.6 20 10.5 20c1.5 0 2.8-1 3.3-2.3.5-.8.7-1.8.7-2.5V7.9c0-.7.2-1.2.5-1.6.6-.6 1.8-.6 2.8-.6h.3V4.3h-.4z\" />\n\t</SVG>\n);\n", "/**\n * WordPress dependencies\n */\nimport { Path, SVG } from '@wordpress/primitives';\n\nexport default (\n\t<SVG viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\">\n\t<Path d=\"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zM5 4.5h14c.3 0 .5.2.5.5v3.5h-15V5c0-.3.2-.5.5-.5zm8 5.5h6.5v3.5H13V10zm-1.5 3.5h-7V10h7v3.5zm-7 5.5v-4h7v4.5H5c-.3 0-.5-.2-.5-.5zm14.5.5h-6V15h6.5v4c0 .3-.2.5-.5.5z\" />\n\t</SVG>\n);\n", "/**\n * WordPress dependencies\n */\nimport { Path, SVG } from '@wordpress/primitives';\n\nexport default (\n\t<SVG viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\">\n\t<Path d=\"M6 5.5h3a.5.5 0 01.5.5v3a.5.5 0 01-.5.5H6a.5.5 0 01-.5-.5V6a.5.5 0 01.5-.5zM4 6a2 2 0 012-2h3a2 2 0 012 2v3a2 2 0 01-2 2H6a2 2 0 01-2-2V6zm11-.5h3a.5.5 0 01.5.5v3a.5.5 0 01-.5.5h-3a.5.5 0 01-.5-.5V6a.5.5 0 01.5-.5zM13 6a2 2 0 012-2h3a2 2 0 012 2v3a2 2 0 01-2 2h-3a2 2 0 01-2-2V6zm5 8.5h-3a.5.5 0 00-.5.5v3a.5.5 0 00.5.5h3a.5.5 0 00.5-.5v-3a.5.5 0 00-.5-.5zM15 13a2 2 0 00-2 2v3a2 2 0 002 2h3a2 2 0 002-2v-3a2 2 0 00-2-2h-3zm-9 1.5h3a.5.5 0 01.5.5v3a.5.5 0 01-.5.5H6a.5.5 0 01-.5-.5v-3a.5.5 0 01.5-.5zM4 15a2 2 0 012-2h3a2 2 0 012 2v3a2 2 0 01-2 2H6a2 2 0 01-2-2v-3z\"\n\t fillRule=\"evenodd\"\n\t clipRule=\"evenodd\"\n\t />\n\t</SVG>\n);\n", "/**\n * WordPress dependencies\n */\nimport { Path, SVG } from '@wordpress/primitives';\n\nexport default (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n\t<Path d=\"M16.5 7.5 10 13.9l-2.5-2.4-1 1 3.5 3.6 7.5-7.6z\" />\n\t</SVG>\n);\n", "/**\n * WordPress dependencies\n */\nimport { Path, SVG } from '@wordpress/primitives';\n\nexport default (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n\t<Path d=\"M12 13.06l3.712 3.713 1.061-1.06L13.061 12l3.712-3.712-1.06-1.06L12 10.938 8.288 7.227l-1.061 1.06L10.939 12l-3.712 3.712 1.06 1.061L12 13.061z\" />\n\t</SVG>\n);\n", "/**\n * WordPress dependencies\n */\nimport { Path, SVG } from '@wordpress/primitives';\n\nexport default (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n\t<Path fillRule=\"evenodd\"\n\t d=\"M10.289 4.836A1 1 0 0111.275 4h1.306a1 1 0 01.987.836l.244 1.466c.787.26 1.503.679 2.108 1.218l1.393-.522a1 1 0 011.216.437l.653 1.13a1 1 0 01-.23 1.273l-1.148.944a6.025 6.025 0 010 2.435l1.149.946a1 1 0 01.23 1.272l-.653 1.13a1 1 0 01-1.216.437l-1.394-.522c-.605.54-1.32.958-2.108 1.218l-.244 1.466a1 1 0 01-.987.836h-1.306a1 1 0 01-.986-.836l-.244-1.466a5.995 5.995 0 01-2.108-1.218l-1.394.522a1 1 0 01-1.217-.436l-.653-1.131a1 1 0 01.23-1.272l1.149-.946a6.026 6.026 0 010-2.435l-1.148-.944a1 1 0 01-.23-1.272l.653-1.131a1 1 0 011.217-.437l1.393.522a5.994 5.994 0 012.108-1.218l.244-1.466zM14.929 12a3 3 0 11-6 0 3 3 0 016 0z\"\n\t clipRule=\"evenodd\"\n\t />\n\t</SVG>\n);\n", "/**\n * WordPress dependencies\n */\nimport { Path, SVG } from '@wordpress/primitives';\n\nexport default (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n\t<Path fillRule=\"evenodd\"\n\t d=\"M7.25 16.437a6.5 6.5 0 1 1 9.5 0V16A2.75 2.75 0 0 0 14 13.25h-4A2.75 2.75 0 0 0 7.25 16v.437Zm1.5 1.193a6.47 6.47 0 0 0 3.25.87 6.47 6.47 0 0 0 3.25-.87V16c0-.69-.56-1.25-1.25-1.25h-4c-.69 0-1.25.56-1.25 1.25v1.63ZM4 12a8 8 0 1 1 16 0 8 8 0 0 1-16 0Zm10-2a2 2 0 1 1-4 0 2 2 0 0 1 4 0Z\"\n\t clipRule=\"evenodd\"\n\t />\n\t</SVG>\n);\n", "/**\n * WordPress dependencies\n */\nimport { Path, SVG } from '@wordpress/primitives';\n\nexport default (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n\t<Path fillRule=\"evenodd\"\n\t clipRule=\"evenodd\"\n\t d=\"M3 7c0-1.1.9-2 2-2h14a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V7Zm2-.5h14c.3 0 .5.2.5.5v1L12 13.5 4.5 7.9V7c0-.3.2-.5.5-.5Zm-.5 3.3V17c0 .3.2.5.5.5h14c.3 0 .5-.2.5-.5V9.8L12 15.4 4.5 9.8Z\"\n\t />\n\t</SVG>\n);\n", "/**\n * WordPress dependencies\n */\nimport { Path, SVG } from '@wordpress/primitives';\n\nexport default (\n\t<SVG viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\">\n\t<Path fillRule=\"evenodd\"\n\t clipRule=\"evenodd\"\n\t d=\"M12.218 5.377a.25.25 0 0 0-.436 0l-7.29 12.96a.25.25 0 0 0 .218.373h14.58a.25.25 0 0 0 .218-.372l-7.29-12.96Zm-1.743-.735c.669-1.19 2.381-1.19 3.05 0l7.29 12.96a1.75 1.75 0 0 1-1.525 2.608H4.71a1.75 1.75 0 0 1-1.525-2.608l7.29-12.96ZM12.75 17.46h-1.5v-1.5h1.5v1.5Zm-1.5-3h1.5v-5h-1.5v5Z\"\n\t />\n\t</SVG>\n);\n", "/**\n * WordPress dependencies\n */\nimport { Path, SVG } from '@wordpress/primitives';\n\nexport default (\n\t<SVG viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\">\n\t<Path fillRule=\"evenodd\"\n\t clipRule=\"evenodd\"\n\t d=\"M12.848 8a1 1 0 0 1-.914-.594l-.723-1.63a.5.5 0 0 0-.447-.276H5a.5.5 0 0 0-.5.5v11.5a.5.5 0 0 0 .5.5h14a.5.5 0 0 0 .5-.5v-9A.5.5 0 0 0 19 8h-6.152Zm.612-1.5a.5.5 0 0 1-.462-.31l-.445-1.084A2 2 0 0 0 10.763 4H5a2 2 0 0 0-2 2v11.5a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-9a2 2 0 0 0-2-2h-5.54Z\"\n\t />\n\t</SVG>\n);\n", "/**\n * WordPress dependencies\n */\nimport { Path, SVG } from '@wordpress/primitives';\n\nexport default (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n\t<Path d=\"M4 8.8h8.9V7.2H4v1.6zm0 7h8.9v-1.5H4v1.5zM18 13c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0-3c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2z\" />\n\t</SVG>\n);\n", "/**\n * WordPress dependencies\n */\nimport { Path, SVG } from '@wordpress/primitives';\n\nexport default (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n\t<Path d=\"M11.1 15.8H20v-1.5h-8.9v1.5zm0-8.6v1.5H20V7.2h-8.9zM6 13c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0-7c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z\" />\n\t</SVG>\n);\n", "/**\n * WordPress dependencies\n */\nimport { Path, SVG } from '@wordpress/primitives';\n\nexport default (\n\t<SVG viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\">\n\t<Path d=\"M10 17.5H14V16H10V17.5ZM6 6V7.5H18V6H6ZM8 12.5H16V11H8V12.5Z\" />\n\t</SVG>\n);\n", "/**\n * WordPress dependencies\n */\nimport { Path, SVG } from '@wordpress/primitives';\n\nexport default (\n\t<SVG viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\">\n\t<Path d=\"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zM5 4.5h14c.3 0 .5.2.5.5v8.4l-3-2.9c-.3-.3-.8-.3-1 0L11.9 14 9 12c-.3-.2-.6-.2-.8 0l-3.6 2.6V5c-.1-.3.1-.5.4-.5zm14 15H5c-.3 0-.5-.2-.5-.5v-2.4l4.1-3 3 1.9c.3.2.7.2.9-.1L16 12l3.5 3.4V19c0 .3-.2.5-.5.5z\" />\n\t</SVG>\n);\n", "/**\n * WordPress dependencies\n */\nimport { Path, SVG } from '@wordpress/primitives';\n\nexport default (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n\t<Path d=\"M10 17.389H8.444A5.194 5.194 0 1 1 8.444 7H10v1.5H8.444a3.694 3.694 0 0 0 0 7.389H10v1.5ZM14 7h1.556a5.194 5.194 0 0 1 0 10.39H14v-1.5h1.556a3.694 3.694 0 0 0 0-7.39H14V7Zm-4.5 6h5v-1.5h-5V13Z\" />\n\t</SVG>\n);\n", "/**\n * WordPress dependencies\n */\nimport { Path, SVG } from '@wordpress/primitives';\n\nexport default (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n\t<Path d=\"M15 4H9c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h6c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zm.5 14c0 .3-.2.5-.5.5H9c-.3 0-.5-.2-.5-.5V6c0-.3.2-.5.5-.5h6c.3 0 .5.2.5.5v12zm-4.5-.5h2V16h-2v1.5z\" />\n\t</SVG>\n);\n", "/**\n * WordPress dependencies\n */\nimport { Path, SVG } from '@wordpress/primitives';\n\nexport default (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n\t<Path d=\"M13 19h-2v-2h2v2zm0-6h-2v-2h2v2zm0-6h-2V5h2v2z\" />\n\t</SVG>\n);\n", "/**\n * WordPress dependencies\n */\nimport { Path, SVG } from '@wordpress/primitives';\n\nexport default (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n\t<Path d=\"M6.6 6L5.4 7l4.5 5-4.5 5 1.1 1 5.5-6-5.4-6zm6 0l-1.1 1 4.5 5-4.5 5 1.1 1 5.5-6-5.5-6z\" />\n\t</SVG>\n);\n", "/**\n * WordPress dependencies\n */\nimport { Path, SVG } from '@wordpress/primitives';\n\nexport default (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n\t<Path d=\"M11.6 7l-1.1-1L5 12l5.5 6 1.1-1L7 12l4.6-5zm6 0l-1.1-1-5.5 6 5.5 6 1.1-1-4.6-5 4.6-5z\" />\n\t</SVG>\n);\n", "/**\n * WordPress dependencies\n */\nimport { Path, SVG } from '@wordpress/primitives';\n\nexport default (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n\t<Path fillRule=\"evenodd\"\n\t clipRule=\"evenodd\"\n\t d=\"M12 18.5a6.5 6.5 0 1 1 0-13 6.5 6.5 0 0 1 0 13ZM4 12a8 8 0 1 1 16 0 8 8 0 0 1-16 0Zm9 1V8h-1.5v3.5h-2V13H13Z\"\n\t />\n\t</SVG>\n);\n", "/**\n * WordPress dependencies\n */\nimport { Path, SVG } from '@wordpress/primitives';\n\nexport default (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n\t<Path d=\"M13 5c-3.3 0-6 2.7-6 6 0 1.4.5 2.7 1.3 3.7l-3.8 3.8 1.1 1.1 3.8-3.8c1 .8 2.3 1.3 3.7 1.3 3.3 0 6-2.7 6-6S16.3 5 13 5zm0 10.5c-2.5 0-4.5-2-4.5-4.5s2-4.5 4.5-4.5 4.5 2 4.5 4.5-2 4.5-4.5 4.5z\" />\n\t</SVG>\n);\n", "/**\n * WordPress dependencies\n */\nimport { Path, SVG } from '@wordpress/primitives';\n\nexport default (\n\t<SVG viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\">\n\t<Path d=\"M3.99961 13C4.67043 13.3354 4.6703 13.3357 4.67017 13.3359L4.67298 13.3305C4.67621 13.3242 4.68184 13.3135 4.68988 13.2985C4.70595 13.2686 4.7316 13.2218 4.76695 13.1608C4.8377 13.0385 4.94692 12.8592 5.09541 12.6419C5.39312 12.2062 5.84436 11.624 6.45435 11.0431C7.67308 9.88241 9.49719 8.75 11.9996 8.75C14.502 8.75 16.3261 9.88241 17.5449 11.0431C18.1549 11.624 18.6061 12.2062 18.9038 12.6419C19.0523 12.8592 19.1615 13.0385 19.2323 13.1608C19.2676 13.2218 19.2933 13.2686 19.3093 13.2985C19.3174 13.3135 19.323 13.3242 19.3262 13.3305L19.3291 13.3359C19.3289 13.3357 19.3288 13.3354 19.9996 13C20.6704 12.6646 20.6703 12.6643 20.6701 12.664L20.6697 12.6632L20.6688 12.6614L20.6662 12.6563L20.6583 12.6408C20.6517 12.6282 20.6427 12.6108 20.631 12.5892C20.6078 12.5459 20.5744 12.4852 20.5306 12.4096C20.4432 12.2584 20.3141 12.0471 20.1423 11.7956C19.7994 11.2938 19.2819 10.626 18.5794 9.9569C17.1731 8.61759 14.9972 7.25 11.9996 7.25C9.00203 7.25 6.82614 8.61759 5.41987 9.9569C4.71736 10.626 4.19984 11.2938 3.85694 11.7956C3.68511 12.0471 3.55605 12.2584 3.4686 12.4096C3.42484 12.4852 3.39142 12.5459 3.36818 12.5892C3.35656 12.6108 3.34748 12.6282 3.34092 12.6408L3.33297 12.6563L3.33041 12.6614L3.32948 12.6632L3.32911 12.664C3.32894 12.6643 3.32879 12.6646 3.99961 13ZM11.9996 16C13.9326 16 15.4996 14.433 15.4996 12.5C15.4996 10.567 13.9326 9 11.9996 9C10.0666 9 8.49961 10.567 8.49961 12.5C8.49961 14.433 10.0666 16 11.9996 16Z\" />\n\t</SVG>\n);\n", "/**\n * WordPress dependencies\n */\nimport { Path, SVG } from '@wordpress/primitives';\n\nexport default (\n\t<SVG viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\">\n\t<Path d=\"M20.7 12.7s0-.1-.1-.2c0-.2-.2-.4-.4-.6-.3-.5-.9-1.2-1.6-1.8-.7-.6-1.5-1.3-2.6-1.8l-.6 1.4c.9.4 1.6 1 2.1 1.5.6.6 1.1 1.2 1.4 1.6.1.2.3.4.3.5v.1l.7-.3.7-.3Zm-5.2-9.3-1.8 4c-.5-.1-1.1-.2-1.7-.2-3 0-5.2 1.4-6.6 2.7-.7.7-1.2 1.3-1.6 1.8-.2.3-.3.5-.4.6 0 0 0 .1-.1.2s0 0 .7.3l.7.3V13c0-.1.2-.3.3-.5.3-.4.7-1 1.4-1.6 1.2-1.2 3-2.3 5.5-2.3H13v.3c-.4 0-.8-.1-1.1-.1-1.9 0-3.5 1.6-3.5 3.5s.6 2.3 1.6 2.9l-2 4.4.9.4 7.6-16.2-.9-.4Zm-3 12.6c1.7-.2 3-1.7 3-3.5s-.2-1.4-.6-1.9L12.4 16Z\" />\n\t</SVG>\n);\n", "/**\n * WordPress dependencies\n */\nimport { Path, SVG } from '@wordpress/primitives';\n\nexport default (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n\t<Path d=\"M18.5 15v3.5H13V6.7l4.5 4.1 1-1.1-6.2-5.8-5.8 5.8 1 1.1 4-4v11.7h-6V15H4v5h16v-5z\" />\n\t</SVG>\n);\n", "/**\n * WordPress dependencies\n */\nimport { Path, SVG } from '@wordpress/primitives';\n\nexport default (\n\t<SVG viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\">\n\t<Path d=\"M18.7 3H5.3C4 3 3 4 3 5.3v13.4C3 20 4 21 5.3 21h13.4c1.3 0 2.3-1 2.3-2.3V5.3C21 4 20 3 18.7 3zm.8 15.7c0 .4-.4.8-.8.8H5.3c-.4 0-.8-.4-.8-.8V5.3c0-.4.4-.8.8-.8h13.4c.4 0 .8.4.8.8v13.4zM10 15l5-3-5-3v6z\" />\n\t</SVG>\n);\n", "'use client';\n\nimport * as React from 'react';\nconst UNINITIALIZED = {};\n\n/**\n * A React.useRef() that is initialized with a function. Note that it accepts an optional\n * initialization argument, so the initialization function doesn't need to be an inline closure.\n *\n * @usage\n * const ref = useRefWithInit(sortColumns, columns)\n */\n\nexport function useRefWithInit(init, initArg) {\n const ref = React.useRef(UNINITIALIZED);\n if (ref.current === UNINITIALIZED) {\n ref.current = init(initArg);\n }\n return ref;\n}", "import _formatErrorMessage from \"@base-ui/utils/formatErrorMessage\";\nimport * as React from 'react';\nimport { useMergedRefs, useMergedRefsN } from '@base-ui/utils/useMergedRefs';\nimport { getReactElementRef } from '@base-ui/utils/getReactElementRef';\nimport { mergeObjects } from '@base-ui/utils/mergeObjects';\nimport { getStateAttributesProps } from \"./getStateAttributesProps.js\";\nimport { resolveClassName } from \"./resolveClassName.js\";\nimport { resolveStyle } from \"./resolveStyle.js\";\nimport { mergeProps, mergePropsN, mergeClassNames } from \"../merge-props/index.js\";\nimport { EMPTY_OBJECT } from \"./constants.js\";\nimport { createElement as _createElement } from \"react\";\n/**\n * Renders a Base UI element.\n *\n * @param element The default HTML element to render. Can be overridden by the `render` prop.\n * @param componentProps An object containing the `render` and `className` props to be used for element customization. Other props are ignored.\n * @param params Additional parameters for rendering the element.\n */\nexport function useRenderElement(element, componentProps, params = {}) {\n const renderProp = componentProps.render;\n const outProps = useRenderElementProps(componentProps, params);\n if (params.enabled === false) {\n return null;\n }\n const state = params.state ?? EMPTY_OBJECT;\n return evaluateRenderProp(element, renderProp, outProps, state);\n}\n\n/**\n * Computes render element final props.\n */\nfunction useRenderElementProps(componentProps, params = {}) {\n const {\n className: classNameProp,\n style: styleProp,\n render: renderProp\n } = componentProps;\n const {\n state = EMPTY_OBJECT,\n ref,\n props,\n stateAttributesMapping,\n enabled = true\n } = params;\n const className = enabled ? resolveClassName(classNameProp, state) : undefined;\n const style = enabled ? resolveStyle(styleProp, state) : undefined;\n const stateProps = enabled ? getStateAttributesProps(state, stateAttributesMapping) : EMPTY_OBJECT;\n const outProps = enabled ? mergeObjects(stateProps, Array.isArray(props) ? mergePropsN(props) : props) ?? EMPTY_OBJECT : EMPTY_OBJECT;\n\n // SAFETY: The `useMergedRefs` functions use a single hook to store the same value,\n // switching between them at runtime is safe. If this assertion fails, React will\n // throw at runtime anyway.\n // This also skips the `useMergedRefs` call on the server, which is fine because\n // refs are not used on the server side.\n /* eslint-disable react-hooks/rules-of-hooks */\n if (typeof document !== 'undefined') {\n if (!enabled) {\n useMergedRefs(null, null);\n } else if (Array.isArray(ref)) {\n outProps.ref = useMergedRefsN([outProps.ref, getReactElementRef(renderProp), ...ref]);\n } else {\n outProps.ref = useMergedRefs(outProps.ref, getReactElementRef(renderProp), ref);\n }\n }\n if (!enabled) {\n return EMPTY_OBJECT;\n }\n if (className !== undefined) {\n outProps.className = mergeClassNames(outProps.className, className);\n }\n if (style !== undefined) {\n outProps.style = mergeObjects(outProps.style, style);\n }\n return outProps;\n}\nfunction evaluateRenderProp(element, render, props, state) {\n if (render) {\n if (typeof render === 'function') {\n return render(props, state);\n }\n const mergedProps = mergeProps(props, render.props);\n mergedProps.ref = props.ref;\n return /*#__PURE__*/React.cloneElement(render, mergedProps);\n }\n if (element) {\n if (typeof element === 'string') {\n return renderTag(element, props);\n }\n }\n // Unreachable, but the typings on `useRenderElement` need to be reworked\n // to annotate it correctly.\n throw new Error(process.env.NODE_ENV !== \"production\" ? 'Base UI: Render element or function are not defined.' : _formatErrorMessage(8));\n}\nfunction renderTag(Tag, props) {\n if (Tag === 'button') {\n return /*#__PURE__*/_createElement(\"button\", {\n type: \"button\",\n ...props,\n key: props.key\n });\n }\n if (Tag === 'img') {\n return /*#__PURE__*/_createElement(\"img\", {\n alt: \"\",\n ...props,\n key: props.key\n });\n }\n return /*#__PURE__*/React.createElement(Tag, props);\n}", "import { useRefWithInit } from \"./useRefWithInit.js\";\n\n/**\n * Merges refs into a single memoized callback ref or `null`.\n * This makes sure multiple refs are updated together and have the same value.\n *\n * This function accepts up to four refs. If you need to merge more, or have an unspecified number of refs to merge,\n * use `useMergedRefsN` instead.\n */\n\nexport function useMergedRefs(a, b, c, d) {\n const forkRef = useRefWithInit(createForkRef).current;\n if (didChange(forkRef, a, b, c, d)) {\n update(forkRef, [a, b, c, d]);\n }\n return forkRef.callback;\n}\n\n/**\n * Merges an array of refs into a single memoized callback ref or `null`.\n *\n * If you need to merge a fixed number (up to four) of refs, use `useMergedRefs` instead for better performance.\n */\nexport function useMergedRefsN(refs) {\n const forkRef = useRefWithInit(createForkRef).current;\n if (didChangeN(forkRef, refs)) {\n update(forkRef, refs);\n }\n return forkRef.callback;\n}\nfunction createForkRef() {\n return {\n callback: null,\n cleanup: null,\n refs: []\n };\n}\nfunction didChange(forkRef, a, b, c, d) {\n // prettier-ignore\n return forkRef.refs[0] !== a || forkRef.refs[1] !== b || forkRef.refs[2] !== c || forkRef.refs[3] !== d;\n}\nfunction didChangeN(forkRef, newRefs) {\n return forkRef.refs.length !== newRefs.length || forkRef.refs.some((ref, index) => ref !== newRefs[index]);\n}\nfunction update(forkRef, refs) {\n forkRef.refs = refs;\n if (refs.every(ref => ref == null)) {\n forkRef.callback = null;\n return;\n }\n forkRef.callback = instance => {\n if (forkRef.cleanup) {\n forkRef.cleanup();\n forkRef.cleanup = null;\n }\n if (instance != null) {\n const cleanupCallbacks = Array(refs.length).fill(null);\n for (let i = 0; i < refs.length; i += 1) {\n const ref = refs[i];\n if (ref == null) {\n continue;\n }\n switch (typeof ref) {\n case 'function':\n {\n const refCleanup = ref(instance);\n if (typeof refCleanup === 'function') {\n cleanupCallbacks[i] = refCleanup;\n }\n break;\n }\n case 'object':\n {\n ref.current = instance;\n break;\n }\n default:\n }\n }\n forkRef.cleanup = () => {\n for (let i = 0; i < refs.length; i += 1) {\n const ref = refs[i];\n if (ref == null) {\n continue;\n }\n switch (typeof ref) {\n case 'function':\n {\n const cleanupCallback = cleanupCallbacks[i];\n if (typeof cleanupCallback === 'function') {\n cleanupCallback();\n } else {\n ref(null);\n }\n break;\n }\n case 'object':\n {\n ref.current = null;\n break;\n }\n default:\n }\n }\n };\n }\n };\n}", "import * as React from 'react';\nimport { isReactVersionAtLeast } from \"./reactVersion.js\";\n\n/**\n * Extracts the `ref` from a React element, handling different React versions.\n */\nexport function getReactElementRef(element) {\n if (! /*#__PURE__*/React.isValidElement(element)) {\n return null;\n }\n const reactElement = element;\n const propsWithRef = reactElement.props;\n return (isReactVersionAtLeast(19) ? propsWithRef?.ref : reactElement.ref) ?? null;\n}", "import * as React from 'react';\nconst majorVersion = parseInt(React.version, 10);\nexport function isReactVersionAtLeast(reactVersionToCheck) {\n return majorVersion >= reactVersionToCheck;\n}", "export function mergeObjects(a, b) {\n if (a && !b) {\n return a;\n }\n if (!a && b) {\n return b;\n }\n if (a || b) {\n return {\n ...a,\n ...b\n };\n }\n return undefined;\n}", "export function getStateAttributesProps(state, customMapping) {\n const props = {};\n\n /* eslint-disable-next-line guard-for-in */\n for (const key in state) {\n const value = state[key];\n if (customMapping?.hasOwnProperty(key)) {\n const customProps = customMapping[key](value);\n if (customProps != null) {\n Object.assign(props, customProps);\n }\n continue;\n }\n if (value === true) {\n props[`data-${key.toLowerCase()}`] = '';\n } else if (value) {\n props[`data-${key.toLowerCase()}`] = value.toString();\n }\n }\n return props;\n}", "/**\n * If the provided className is a string, it will be returned as is.\n * Otherwise, the function will call the className function with the state as the first argument.\n *\n * @param className\n * @param state\n */\nexport function resolveClassName(className, state) {\n return typeof className === 'function' ? className(state) : className;\n}", "/**\n * If the provided style is an object, it will be returned as is.\n * Otherwise, the function will call the style function with the state as the first argument.\n *\n * @param style\n * @param state\n */\nexport function resolveStyle(style, state) {\n return typeof style === 'function' ? style(state) : style;\n}", "import { mergeObjects } from '@base-ui/utils/mergeObjects';\nconst EMPTY_PROPS = {};\n\n/**\n * Merges multiple sets of React props. It follows the Object.assign pattern where the rightmost object's fields overwrite\n * the conflicting ones from others. This doesn't apply to event handlers, `className` and `style` props.\n * Event handlers are merged such that they are called in sequence (the rightmost one being called first),\n * and allows the user to prevent the subsequent event handlers from being\n * executed by attaching a `preventBaseUIHandler` method.\n * It also merges the `className` and `style` props, whereby the classes are concatenated\n * and the rightmost styles overwrite the subsequent ones.\n *\n * Props can either be provided as objects or as functions that take the previous props as an argument.\n * The function will receive the merged props up to that point (going from left to right):\n * so in the case of `(obj1, obj2, fn, obj3)`, `fn` will receive the merged props of `obj1` and `obj2`.\n * The function is responsible for chaining event handlers if needed (i.e. we don't run the merge logic).\n *\n * Event handlers returned by the functions are not automatically prevented when `preventBaseUIHandler` is called.\n * They must check `event.baseUIHandlerPrevented` themselves and bail out if it's true.\n *\n * @important **`ref` is not merged.**\n * @param props props to merge.\n * @returns the merged props.\n */\n/* eslint-disable id-denylist */\n\nexport function mergeProps(a, b, c, d, e) {\n // We need to mutably own `merged`\n let merged = {\n ...resolvePropsGetter(a, EMPTY_PROPS)\n };\n if (b) {\n merged = mergeOne(merged, b);\n }\n if (c) {\n merged = mergeOne(merged, c);\n }\n if (d) {\n merged = mergeOne(merged, d);\n }\n if (e) {\n merged = mergeOne(merged, e);\n }\n return merged;\n}\n/* eslint-enable id-denylist */\n\nexport function mergePropsN(props) {\n if (props.length === 0) {\n return EMPTY_PROPS;\n }\n if (props.length === 1) {\n return resolvePropsGetter(props[0], EMPTY_PROPS);\n }\n\n // We need to mutably own `merged`\n let merged = {\n ...resolvePropsGetter(props[0], EMPTY_PROPS)\n };\n for (let i = 1; i < props.length; i += 1) {\n merged = mergeOne(merged, props[i]);\n }\n return merged;\n}\nfunction mergeOne(merged, inputProps) {\n if (isPropsGetter(inputProps)) {\n return inputProps(merged);\n }\n return mutablyMergeInto(merged, inputProps);\n}\n\n/**\n * Merges two sets of props. In case of conflicts, the external props take precedence.\n */\nfunction mutablyMergeInto(mergedProps, externalProps) {\n if (!externalProps) {\n return mergedProps;\n }\n\n // eslint-disable-next-line guard-for-in\n for (const propName in externalProps) {\n const externalPropValue = externalProps[propName];\n switch (propName) {\n case 'style':\n {\n mergedProps[propName] = mergeObjects(mergedProps.style, externalPropValue);\n break;\n }\n case 'className':\n {\n mergedProps[propName] = mergeClassNames(mergedProps.className, externalPropValue);\n break;\n }\n default:\n {\n if (isEventHandler(propName, externalPropValue)) {\n mergedProps[propName] = mergeEventHandlers(mergedProps[propName], externalPropValue);\n } else {\n mergedProps[propName] = externalPropValue;\n }\n }\n }\n }\n return mergedProps;\n}\nfunction isEventHandler(key, value) {\n // This approach is more efficient than using a regex.\n const code0 = key.charCodeAt(0);\n const code1 = key.charCodeAt(1);\n const code2 = key.charCodeAt(2);\n return code0 === 111 /* o */ && code1 === 110 /* n */ && code2 >= 65 /* A */ && code2 <= 90 /* Z */ && (typeof value === 'function' || typeof value === 'undefined');\n}\nfunction isPropsGetter(inputProps) {\n return typeof inputProps === 'function';\n}\nfunction resolvePropsGetter(inputProps, previousProps) {\n if (isPropsGetter(inputProps)) {\n return inputProps(previousProps);\n }\n return inputProps ?? EMPTY_PROPS;\n}\nfunction mergeEventHandlers(ourHandler, theirHandler) {\n if (!theirHandler) {\n return ourHandler;\n }\n if (!ourHandler) {\n return theirHandler;\n }\n return event => {\n if (isSyntheticEvent(event)) {\n const baseUIEvent = event;\n makeEventPreventable(baseUIEvent);\n const result = theirHandler(baseUIEvent);\n if (!baseUIEvent.baseUIHandlerPrevented) {\n ourHandler?.(baseUIEvent);\n }\n return result;\n }\n const result = theirHandler(event);\n ourHandler?.(event);\n return result;\n };\n}\nexport function makeEventPreventable(event) {\n event.preventBaseUIHandler = () => {\n event.baseUIHandlerPrevented = true;\n };\n return event;\n}\nexport function mergeClassNames(ourClassName, theirClassName) {\n if (theirClassName) {\n if (ourClassName) {\n // eslint-disable-next-line prefer-template\n return theirClassName + ' ' + ourClassName;\n }\n return theirClassName;\n }\n return ourClassName;\n}\nfunction isSyntheticEvent(event) {\n return event != null && typeof event === 'object' && 'nativeEvent' in event;\n}", "export function NOOP() {}\nexport const EMPTY_ARRAY = Object.freeze([]);\nexport const EMPTY_OBJECT = Object.freeze({});", "import { useRenderElement } from \"../utils/useRenderElement.js\";\n/**\n * Renders a Base UI element.\n *\n * @public\n */\nexport function useRender(params) {\n return useRenderElement(params.defaultTagName ?? 'div', params, params);\n}", "function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e)){var o=e.length;for(t=0;t<o;t++)e[t]&&(f=r(e[t]))&&(n&&(n+=\" \"),n+=f)}else for(f in e)e[f]&&(n&&(n+=\" \"),n+=f);return n}export function clsx(){for(var e,t,f=0,n=\"\",o=arguments.length;f<o;f++)(e=arguments[f])&&(t=r(e))&&(n&&(n+=\" \"),n+=t);return n}export default clsx;", "import { useRender, mergeProps } from '@base-ui/react';\nimport { forwardRef } from '@wordpress/element';\nimport { type StackProps } from './types';\nimport styles from './style.module.css';\n\n/**\n * A flexible layout component using CSS Flexbox for consistent spacing and alignment.\n * Built on design tokens for predictable spacing values.\n */\nexport const Stack = forwardRef< HTMLDivElement, StackProps >( function Stack(\n\t{ direction, gap, align, justify, wrap, render, ...props },\n\tref\n) {\n\tconst style: React.CSSProperties = {\n\t\tgap: gap && `var(--wpds-dimension-gap-${ gap })`,\n\t\talignItems: align,\n\t\tjustifyContent: justify,\n\t\tflexDirection: direction,\n\t\tflexWrap: wrap,\n\t};\n\n\tconst element = useRender( {\n\t\trender,\n\t\tref,\n\t\tprops: mergeProps< 'div' >( props, { style, className: styles.stack } ),\n\t} );\n\n\treturn element;\n} );\n", "const css = `@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;\n\n@layer wp-ui-components {\n\t.style-module__stack__Gc4EG {\n\t\tdisplay: flex;\n\t}\n}\n`;\ndocument.head\n .appendChild(document.createElement(\"style\"))\n .appendChild(document.createTextNode(css));\nexport {css};\nexport default {\n \"stack\": \"style-module__stack__Gc4EG\"\n};", "/**\n * External dependencies\n */\nimport type { ComponentProps, ReactElement, ReactNode } from 'react';\n\n/**\n * WordPress dependencies\n */\nimport { createContext, createRef } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport type {\n\tView,\n\tAction,\n\tNormalizedField,\n\tSupportedLayouts,\n\tNormalizedFilter,\n} from '../../types';\nimport type { SetSelection } from '../../types/private';\nimport { LAYOUT_TABLE } from '../../constants';\n\ntype DataViewsContextType< Item > = {\n\tview: View;\n\tonChangeView: ( view: View ) => void;\n\tfields: NormalizedField< Item >[];\n\tactions?: Action< Item >[];\n\tdata: Item[];\n\tisLoading?: boolean;\n\tpaginationInfo: {\n\t\ttotalItems: number;\n\t\ttotalPages: number;\n\t};\n\tselection: string[];\n\tonChangeSelection: SetSelection;\n\topenedFilter: string | null;\n\tsetOpenedFilter: ( openedFilter: string | null ) => void;\n\tgetItemId: ( item: Item ) => string;\n\tgetItemLevel?: ( item: Item ) => number;\n\tonClickItem?: ( item: Item ) => void;\n\trenderItemLink?: (\n\t\tprops: {\n\t\t\titem: Item;\n\t\t} & ComponentProps< 'a' >\n\t) => ReactElement;\n\tisItemClickable: ( item: Item ) => boolean;\n\tcontainerWidth: number;\n\tcontainerRef: React.MutableRefObject< HTMLDivElement | null >;\n\tresizeObserverRef:\n\t\t| ( ( element?: HTMLDivElement | null ) => void )\n\t\t| React.RefObject< HTMLDivElement >;\n\tdefaultLayouts: SupportedLayouts;\n\tfilters: NormalizedFilter[];\n\tisShowingFilter: boolean;\n\tsetIsShowingFilter: ( value: boolean ) => void;\n\tconfig: { perPageSizes: number[] };\n\tempty?: ReactNode;\n\thasInfiniteScrollHandler: boolean;\n\titemListLabel?: string;\n};\n\nconst DataViewsContext = createContext< DataViewsContextType< any > >( {\n\tview: { type: LAYOUT_TABLE },\n\tonChangeView: () => {},\n\tfields: [],\n\tdata: [],\n\tpaginationInfo: {\n\t\ttotalItems: 0,\n\t\ttotalPages: 0,\n\t},\n\tselection: [],\n\tonChangeSelection: () => {},\n\tsetOpenedFilter: () => {},\n\topenedFilter: null,\n\tgetItemId: ( item ) => item.id,\n\tisItemClickable: () => true,\n\trenderItemLink: undefined,\n\tcontainerWidth: 0,\n\tcontainerRef: createRef(),\n\tresizeObserverRef: () => {},\n\tdefaultLayouts: { list: {}, grid: {}, table: {} },\n\tfilters: [],\n\tisShowingFilter: false,\n\tsetIsShowingFilter: () => {},\n\thasInfiniteScrollHandler: false,\n\tconfig: {\n\t\tperPageSizes: [],\n\t},\n} );\n\nDataViewsContext.displayName = 'DataViewsContext';\n\nexport default DataViewsContext;\n", "/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { arrowDown, arrowUp } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport type { DayNumber } from './types';\n\n// Filter operators.\nexport const OPERATOR_IS_ANY = 'isAny';\nexport const OPERATOR_IS_NONE = 'isNone';\nexport const OPERATOR_IS_ALL = 'isAll';\nexport const OPERATOR_IS_NOT_ALL = 'isNotAll';\nexport const OPERATOR_BETWEEN = 'between';\nexport const OPERATOR_IN_THE_PAST = 'inThePast';\nexport const OPERATOR_OVER = 'over';\nexport const OPERATOR_IS = 'is';\nexport const OPERATOR_IS_NOT = 'isNot';\nexport const OPERATOR_LESS_THAN = 'lessThan';\nexport const OPERATOR_GREATER_THAN = 'greaterThan';\nexport const OPERATOR_LESS_THAN_OR_EQUAL = 'lessThanOrEqual';\nexport const OPERATOR_GREATER_THAN_OR_EQUAL = 'greaterThanOrEqual';\nexport const OPERATOR_BEFORE = 'before';\nexport const OPERATOR_AFTER = 'after';\nexport const OPERATOR_BEFORE_INC = 'beforeInc';\nexport const OPERATOR_AFTER_INC = 'afterInc';\nexport const OPERATOR_CONTAINS = 'contains';\nexport const OPERATOR_NOT_CONTAINS = 'notContains';\nexport const OPERATOR_STARTS_WITH = 'startsWith';\nexport const OPERATOR_ON = 'on';\nexport const OPERATOR_NOT_ON = 'notOn';\n\nexport const SORTING_DIRECTIONS = [ 'asc', 'desc' ] as const;\nexport const sortArrows = { asc: '\u2191', desc: '\u2193' };\nexport const sortValues = { asc: 'ascending', desc: 'descending' } as const;\nexport const sortLabels = {\n\tasc: __( 'Sort ascending' ),\n\tdesc: __( 'Sort descending' ),\n};\nexport const sortIcons = {\n\tasc: arrowUp,\n\tdesc: arrowDown,\n};\n\n// View layouts.\nexport const LAYOUT_TABLE = 'table';\nexport const LAYOUT_GRID = 'grid';\nexport const LAYOUT_LIST = 'list';\nexport const LAYOUT_ACTIVITY = 'activity';\n\n// Picker view layouts.\nexport const LAYOUT_PICKER_GRID = 'pickerGrid';\nexport const LAYOUT_PICKER_TABLE = 'pickerTable';\n\nexport const DAYS_OF_WEEK: DayNumber[] = [ 0, 1, 2, 3, 4, 5, 6 ];\n", "/**\n * WordPress dependencies\n */\nimport { __, isRTL } from '@wordpress/i18n';\nimport {\n\tblockTable,\n\tcategory,\n\tformatListBullets,\n\tformatListBulletsRTL,\n\tscheduled,\n} from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport ViewTable from './table';\nimport ViewGrid from './grid';\nimport ViewList from './list';\nimport ViewActivity from './activity';\nimport ViewPickerGrid from './picker-grid';\nimport ViewPickerTable from './picker-table';\nimport {\n\tLAYOUT_GRID,\n\tLAYOUT_LIST,\n\tLAYOUT_TABLE,\n\tLAYOUT_ACTIVITY,\n\tLAYOUT_PICKER_GRID,\n\tLAYOUT_PICKER_TABLE,\n} from '../../constants';\nimport PreviewSizePicker from './utils/preview-size-picker';\nimport DensityPicker from './utils/density-picker';\n\nexport const VIEW_LAYOUTS = [\n\t{\n\t\ttype: LAYOUT_TABLE,\n\t\tlabel: __( 'Table' ),\n\t\tcomponent: ViewTable,\n\t\ticon: blockTable,\n\t\tviewConfigOptions: DensityPicker,\n\t},\n\t{\n\t\ttype: LAYOUT_GRID,\n\t\tlabel: __( 'Grid' ),\n\t\tcomponent: ViewGrid,\n\t\ticon: category,\n\t\tviewConfigOptions: PreviewSizePicker,\n\t},\n\t{\n\t\ttype: LAYOUT_LIST,\n\t\tlabel: __( 'List' ),\n\t\tcomponent: ViewList,\n\t\ticon: isRTL() ? formatListBulletsRTL : formatListBullets,\n\t\tviewConfigOptions: DensityPicker,\n\t},\n\t{\n\t\ttype: LAYOUT_ACTIVITY,\n\t\tlabel: __( 'Activity' ),\n\t\tcomponent: ViewActivity,\n\t\ticon: scheduled,\n\t\tviewConfigOptions: DensityPicker,\n\t},\n\t{\n\t\ttype: LAYOUT_PICKER_GRID,\n\t\tlabel: __( 'Grid' ),\n\t\tcomponent: ViewPickerGrid,\n\t\ticon: category,\n\t\tviewConfigOptions: PreviewSizePicker,\n\t\tisPicker: true,\n\t},\n\t{\n\t\ttype: LAYOUT_PICKER_TABLE,\n\t\tlabel: __( 'Table' ),\n\t\tcomponent: ViewPickerTable,\n\t\ticon: blockTable,\n\t\tviewConfigOptions: DensityPicker,\n\t\tisPicker: true,\n\t},\n];\n", "/**\n * External dependencies\n */\nimport clsx from 'clsx';\nimport type { ComponentProps, ReactElement } from 'react';\n\n/**\n * WordPress dependencies\n */\nimport { __, sprintf } from '@wordpress/i18n';\nimport { Spinner, Popover } from '@wordpress/components';\nimport {\n\tuseContext,\n\tuseEffect,\n\tuseId,\n\tuseRef,\n\tuseState,\n} from '@wordpress/element';\nimport { isAppleOS } from '@wordpress/keycodes';\n\n/**\n * Internal dependencies\n */\nimport DataViewsContext from '../../dataviews-context';\nimport DataViewsSelectionCheckbox from '../../dataviews-selection-checkbox';\nimport ItemActions from '../../dataviews-item-actions';\nimport { sortValues } from '../../../constants';\nimport {\n\tuseSomeItemHasAPossibleBulkAction,\n\tuseHasAPossibleBulkAction,\n\tBulkSelectionCheckbox,\n} from '../../dataviews-bulk-actions';\nimport type {\n\tAction,\n\tNormalizedField,\n\tViewTable as ViewTableType,\n\tViewTableProps,\n} from '../../../types';\nimport type { SetSelection } from '../../../types/private';\nimport ColumnHeaderMenu from './column-header-menu';\nimport ColumnPrimary from './column-primary';\nimport { useIsHorizontalScrollEnd } from './use-is-horizontal-scroll-end';\nimport getDataByGroup from '../utils/get-data-by-group';\nimport { PropertiesSection } from '../../dataviews-view-config/properties-section';\n\ninterface TableColumnFieldProps< Item > {\n\tfields: NormalizedField< Item >[];\n\tcolumn: string;\n\titem: Item;\n\talign?: 'start' | 'center' | 'end';\n}\n\ninterface TableRowProps< Item > {\n\thasBulkActions: boolean;\n\titem: Item;\n\tlevel?: number;\n\tactions: Action< Item >[];\n\tfields: NormalizedField< Item >[];\n\tid: string;\n\tview: ViewTableType;\n\ttitleField?: NormalizedField< Item >;\n\tmediaField?: NormalizedField< Item >;\n\tdescriptionField?: NormalizedField< Item >;\n\tselection: string[];\n\tgetItemId: ( item: Item ) => string;\n\tonChangeSelection: SetSelection;\n\tisItemClickable: ( item: Item ) => boolean;\n\tonClickItem?: ( item: Item ) => void;\n\trenderItemLink?: (\n\t\tprops: {\n\t\t\titem: Item;\n\t\t} & ComponentProps< 'a' >\n\t) => ReactElement;\n\tisActionsColumnSticky?: boolean;\n\tposinset?: number;\n}\n\nfunction TableColumnField< Item >( {\n\titem,\n\tfields,\n\tcolumn,\n\talign,\n}: TableColumnFieldProps< Item > ) {\n\tconst field = fields.find( ( f ) => f.id === column );\n\n\tif ( ! field ) {\n\t\treturn null;\n\t}\n\n\tconst className = clsx( 'dataviews-view-table__cell-content-wrapper', {\n\t\t'dataviews-view-table__cell-align-end': align === 'end',\n\t\t'dataviews-view-table__cell-align-center': align === 'center',\n\t} );\n\n\treturn (\n\t\t<div className={ className }>\n\t\t\t<field.render item={ item } field={ field } />\n\t\t</div>\n\t);\n}\n\nfunction TableRow< Item >( {\n\thasBulkActions,\n\titem,\n\tlevel,\n\tactions,\n\tfields,\n\tid,\n\tview,\n\ttitleField,\n\tmediaField,\n\tdescriptionField,\n\tselection,\n\tgetItemId,\n\tisItemClickable,\n\tonClickItem,\n\trenderItemLink,\n\tonChangeSelection,\n\tisActionsColumnSticky,\n\tposinset,\n}: TableRowProps< Item > ) {\n\tconst { paginationInfo } = useContext( DataViewsContext );\n\tconst hasPossibleBulkAction = useHasAPossibleBulkAction( actions, item );\n\tconst isSelected = hasPossibleBulkAction && selection.includes( id );\n\tconst {\n\t\tshowTitle = true,\n\t\tshowMedia = true,\n\t\tshowDescription = true,\n\t\tinfiniteScrollEnabled,\n\t} = view;\n\t// Will be set to true if `onTouchStart` fires. This happens before\n\t// `onClick` and can be used to exclude touchscreen devices from certain\n\t// behaviours.\n\tconst isTouchDeviceRef = useRef( false );\n\tconst columns = view.fields ?? [];\n\tconst hasPrimaryColumn =\n\t\t( titleField && showTitle ) ||\n\t\t( mediaField && showMedia ) ||\n\t\t( descriptionField && showDescription );\n\n\treturn (\n\t\t<tr\n\t\t\tclassName={ clsx( 'dataviews-view-table__row', {\n\t\t\t\t'is-selected': hasPossibleBulkAction && isSelected,\n\t\t\t\t'has-bulk-actions': hasPossibleBulkAction,\n\t\t\t} ) }\n\t\t\tonTouchStart={ () => {\n\t\t\t\tisTouchDeviceRef.current = true;\n\t\t\t} }\n\t\t\taria-setsize={\n\t\t\t\tinfiniteScrollEnabled ? paginationInfo.totalItems : undefined\n\t\t\t}\n\t\t\taria-posinset={ posinset }\n\t\t\trole={ infiniteScrollEnabled ? 'article' : undefined }\n\t\t\tonMouseDown={ ( event ) => {\n\t\t\t\t// Firefox has a unique feature where ctrl/cmd + click selects a\n\t\t\t\t// table cell. This interferes with the bulk selection behavior,\n\t\t\t\t// so this code prevents it.\n\t\t\t\tconst isMetaClick = isAppleOS() ? event.metaKey : event.ctrlKey;\n\t\t\t\tif (\n\t\t\t\t\tevent.button === 0 &&\n\t\t\t\t\tisMetaClick &&\n\t\t\t\t\twindow.navigator.userAgent\n\t\t\t\t\t\t.toLowerCase()\n\t\t\t\t\t\t.includes( 'firefox' )\n\t\t\t\t) {\n\t\t\t\t\tevent?.preventDefault();\n\t\t\t\t}\n\t\t\t} }\n\t\t\tonClick={ ( event ) => {\n\t\t\t\tif ( ! hasPossibleBulkAction ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Only handle Ctrl/Cmd+Click for multi-selection\n\t\t\t\tconst isModifierKeyPressed = isAppleOS()\n\t\t\t\t\t? event.metaKey\n\t\t\t\t\t: event.ctrlKey;\n\n\t\t\t\tif (\n\t\t\t\t\tisModifierKeyPressed &&\n\t\t\t\t\t! isTouchDeviceRef.current &&\n\t\t\t\t\tdocument.getSelection()?.type !== 'Range'\n\t\t\t\t) {\n\t\t\t\t\t// Handle non-consecutive selection with Ctrl/Cmd+Click\n\t\t\t\t\tonChangeSelection(\n\t\t\t\t\t\tselection.includes( id )\n\t\t\t\t\t\t\t? selection.filter( ( itemId ) => id !== itemId )\n\t\t\t\t\t\t\t: [ ...selection, id ]\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t} }\n\t\t>\n\t\t\t{ hasBulkActions && (\n\t\t\t\t<td className=\"dataviews-view-table__checkbox-column\">\n\t\t\t\t\t<div className=\"dataviews-view-table__cell-content-wrapper\">\n\t\t\t\t\t\t<DataViewsSelectionCheckbox\n\t\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\t\tselection={ selection }\n\t\t\t\t\t\t\tonChangeSelection={ onChangeSelection }\n\t\t\t\t\t\t\tgetItemId={ getItemId }\n\t\t\t\t\t\t\ttitleField={ titleField }\n\t\t\t\t\t\t\tdisabled={ ! hasPossibleBulkAction }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t</td>\n\t\t\t) }\n\t\t\t{ hasPrimaryColumn && (\n\t\t\t\t<td>\n\t\t\t\t\t<ColumnPrimary\n\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\tlevel={ level }\n\t\t\t\t\t\ttitleField={ showTitle ? titleField : undefined }\n\t\t\t\t\t\tmediaField={ showMedia ? mediaField : undefined }\n\t\t\t\t\t\tdescriptionField={\n\t\t\t\t\t\t\tshowDescription ? descriptionField : undefined\n\t\t\t\t\t\t}\n\t\t\t\t\t\tisItemClickable={ isItemClickable }\n\t\t\t\t\t\tonClickItem={ onClickItem }\n\t\t\t\t\t\trenderItemLink={ renderItemLink }\n\t\t\t\t\t/>\n\t\t\t\t</td>\n\t\t\t) }\n\t\t\t{ columns.map( ( column: string ) => {\n\t\t\t\t// Explicit picks the supported styles.\n\t\t\t\tconst { width, maxWidth, minWidth, align } =\n\t\t\t\t\tview.layout?.styles?.[ column ] ?? {};\n\n\t\t\t\treturn (\n\t\t\t\t\t<td\n\t\t\t\t\t\tkey={ column }\n\t\t\t\t\t\tstyle={ {\n\t\t\t\t\t\t\twidth,\n\t\t\t\t\t\t\tmaxWidth,\n\t\t\t\t\t\t\tminWidth,\n\t\t\t\t\t\t} }\n\t\t\t\t\t>\n\t\t\t\t\t\t<TableColumnField\n\t\t\t\t\t\t\tfields={ fields }\n\t\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\t\tcolumn={ column }\n\t\t\t\t\t\t\talign={ align }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</td>\n\t\t\t\t);\n\t\t\t} ) }\n\t\t\t{ !! actions?.length && (\n\t\t\t\t// Disable reason: we are not making the element interactive,\n\t\t\t\t// but preventing any click events from bubbling up to the\n\t\t\t\t// table row. This allows us to add a click handler to the row\n\t\t\t\t// itself (to toggle row selection) without erroneously\n\t\t\t\t// intercepting click events from ItemActions.\n\n\t\t\t\t/* eslint-disable jsx-a11y/no-noninteractive-element-interactions, jsx-a11y/click-events-have-key-events */\n\t\t\t\t<td\n\t\t\t\t\tclassName={ clsx( 'dataviews-view-table__actions-column', {\n\t\t\t\t\t\t'dataviews-view-table__actions-column--sticky': true,\n\t\t\t\t\t\t'dataviews-view-table__actions-column--stuck':\n\t\t\t\t\t\t\tisActionsColumnSticky,\n\t\t\t\t\t} ) }\n\t\t\t\t\tonClick={ ( e ) => e.stopPropagation() }\n\t\t\t\t>\n\t\t\t\t\t<ItemActions item={ item } actions={ actions } />\n\t\t\t\t</td>\n\t\t\t\t/* eslint-enable jsx-a11y/no-noninteractive-element-interactions, jsx-a11y/click-events-have-key-events */\n\t\t\t) }\n\t\t</tr>\n\t);\n}\n\nfunction ViewTable< Item >( {\n\tactions,\n\tdata,\n\tfields,\n\tgetItemId,\n\tgetItemLevel,\n\tisLoading = false,\n\tonChangeView,\n\tonChangeSelection,\n\tselection,\n\tsetOpenedFilter,\n\tonClickItem,\n\tisItemClickable,\n\trenderItemLink,\n\tview,\n\tclassName,\n\tempty,\n}: ViewTableProps< Item > ) {\n\tconst { containerRef } = useContext( DataViewsContext );\n\tconst headerMenuRefs = useRef<\n\t\tMap< string, { node: HTMLButtonElement; fallback: string } >\n\t>( new Map() );\n\tconst headerMenuToFocusRef = useRef< HTMLButtonElement >();\n\tconst [ nextHeaderMenuToFocus, setNextHeaderMenuToFocus ] =\n\t\tuseState< HTMLButtonElement >();\n\tconst hasBulkActions = useSomeItemHasAPossibleBulkAction( actions, data );\n\tconst [ contextMenuAnchor, setContextMenuAnchor ] = useState< {\n\t\tgetBoundingClientRect: () => DOMRect;\n\t} | null >( null );\n\n\tuseEffect( () => {\n\t\tif ( headerMenuToFocusRef.current ) {\n\t\t\theaderMenuToFocusRef.current.focus();\n\t\t\theaderMenuToFocusRef.current = undefined;\n\t\t}\n\t} );\n\n\tconst tableNoticeId = useId();\n\n\tconst isHorizontalScrollEnd = useIsHorizontalScrollEnd( {\n\t\tscrollContainerRef: containerRef,\n\t\tenabled: !! actions?.length,\n\t} );\n\n\tif ( nextHeaderMenuToFocus ) {\n\t\t// If we need to force focus, we short-circuit rendering here\n\t\t// to prevent any additional work while we handle that.\n\t\t// Clearing out the focus directive is necessary to make sure\n\t\t// future renders don't cause unexpected focus jumps.\n\t\theaderMenuToFocusRef.current = nextHeaderMenuToFocus;\n\t\tsetNextHeaderMenuToFocus( undefined );\n\t\treturn;\n\t}\n\n\tconst onHide = ( field: NormalizedField< Item > ) => {\n\t\tconst hidden = headerMenuRefs.current.get( field.id );\n\t\tconst fallback = hidden\n\t\t\t? headerMenuRefs.current.get( hidden.fallback )\n\t\t\t: undefined;\n\t\tsetNextHeaderMenuToFocus( fallback?.node );\n\t};\n\n\tconst handleHeaderContextMenu = ( event: React.MouseEvent ) => {\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\t\tconst virtualAnchor = {\n\t\t\tgetBoundingClientRect: () => ( {\n\t\t\t\tx: event.clientX,\n\t\t\t\ty: event.clientY,\n\t\t\t\ttop: event.clientY,\n\t\t\t\tleft: event.clientX,\n\t\t\t\tright: event.clientX,\n\t\t\t\tbottom: event.clientY,\n\t\t\t\twidth: 0,\n\t\t\t\theight: 0,\n\t\t\t\ttoJSON: () => ( {} ),\n\t\t\t} ),\n\t\t};\n\t\twindow.requestAnimationFrame( () => {\n\t\t\tsetContextMenuAnchor( virtualAnchor );\n\t\t} );\n\t};\n\n\tconst hasData = !! data?.length;\n\n\tconst titleField = fields.find( ( field ) => field.id === view.titleField );\n\tconst mediaField = fields.find( ( field ) => field.id === view.mediaField );\n\tconst descriptionField = fields.find(\n\t\t( field ) => field.id === view.descriptionField\n\t);\n\n\tconst groupField = view.groupBy?.field\n\t\t? fields.find( ( f ) => f.id === view.groupBy?.field )\n\t\t: null;\n\tconst dataByGroup = groupField ? getDataByGroup( data, groupField ) : null;\n\tconst { showTitle = true, showMedia = true, showDescription = true } = view;\n\tconst hasPrimaryColumn =\n\t\t( titleField && showTitle ) ||\n\t\t( mediaField && showMedia ) ||\n\t\t( descriptionField && showDescription );\n\tconst columns = view.fields ?? [];\n\tconst headerMenuRef =\n\t\t( column: string, index: number ) => ( node: HTMLButtonElement ) => {\n\t\t\tif ( node ) {\n\t\t\t\theaderMenuRefs.current.set( column, {\n\t\t\t\t\tnode,\n\t\t\t\t\tfallback: columns[ index > 0 ? index - 1 : 1 ],\n\t\t\t\t} );\n\t\t\t} else {\n\t\t\t\theaderMenuRefs.current.delete( column );\n\t\t\t}\n\t\t};\n\tconst isInfiniteScroll = view.infiniteScrollEnabled && ! dataByGroup;\n\n\treturn (\n\t\t<>\n\t\t\t<table\n\t\t\t\tclassName={ clsx( 'dataviews-view-table', className, {\n\t\t\t\t\t[ `has-${ view.layout?.density }-density` ]:\n\t\t\t\t\t\tview.layout?.density &&\n\t\t\t\t\t\t[ 'compact', 'comfortable' ].includes(\n\t\t\t\t\t\t\tview.layout.density\n\t\t\t\t\t\t),\n\t\t\t\t\t'has-bulk-actions': hasBulkActions,\n\t\t\t\t} ) }\n\t\t\t\taria-busy={ isLoading }\n\t\t\t\taria-describedby={ tableNoticeId }\n\t\t\t\trole={ isInfiniteScroll ? 'feed' : undefined }\n\t\t\t>\n\t\t\t\t<colgroup>\n\t\t\t\t\t{ hasBulkActions && (\n\t\t\t\t\t\t<col className=\"dataviews-view-table__col-checkbox\" />\n\t\t\t\t\t) }\n\t\t\t\t\t{ hasPrimaryColumn && (\n\t\t\t\t\t\t<col className=\"dataviews-view-table__col-first-data\" />\n\t\t\t\t\t) }\n\t\t\t\t\t{ columns.map( ( column, index ) => (\n\t\t\t\t\t\t<col\n\t\t\t\t\t\t\tkey={ `col-${ column }` }\n\t\t\t\t\t\t\tclassName={ clsx(\n\t\t\t\t\t\t\t\t`dataviews-view-table__col-${ column }`,\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t'dataviews-view-table__col-first-data':\n\t\t\t\t\t\t\t\t\t\t! hasPrimaryColumn && index === 0,\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) ) }\n\t\t\t\t\t{ !! actions?.length && (\n\t\t\t\t\t\t<col className=\"dataviews-view-table__col-actions\" />\n\t\t\t\t\t) }\n\t\t\t\t</colgroup>\n\t\t\t\t{ contextMenuAnchor && (\n\t\t\t\t\t<Popover\n\t\t\t\t\t\tanchor={ contextMenuAnchor }\n\t\t\t\t\t\tonClose={ () => setContextMenuAnchor( null ) }\n\t\t\t\t\t\tplacement=\"bottom-start\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<PropertiesSection showLabel={ false } />\n\t\t\t\t\t</Popover>\n\t\t\t\t) }\n\t\t\t\t<thead onContextMenu={ handleHeaderContextMenu }>\n\t\t\t\t\t<tr className=\"dataviews-view-table__row\">\n\t\t\t\t\t\t{ hasBulkActions && (\n\t\t\t\t\t\t\t<th\n\t\t\t\t\t\t\t\tclassName=\"dataviews-view-table__checkbox-column\"\n\t\t\t\t\t\t\t\tscope=\"col\"\n\t\t\t\t\t\t\t\tonContextMenu={ handleHeaderContextMenu }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<BulkSelectionCheckbox\n\t\t\t\t\t\t\t\t\tselection={ selection }\n\t\t\t\t\t\t\t\t\tonChangeSelection={ onChangeSelection }\n\t\t\t\t\t\t\t\t\tdata={ data }\n\t\t\t\t\t\t\t\t\tactions={ actions }\n\t\t\t\t\t\t\t\t\tgetItemId={ getItemId }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</th>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t{ hasPrimaryColumn && (\n\t\t\t\t\t\t\t<th scope=\"col\">\n\t\t\t\t\t\t\t\t{ titleField && (\n\t\t\t\t\t\t\t\t\t<ColumnHeaderMenu\n\t\t\t\t\t\t\t\t\t\tref={ headerMenuRef(\n\t\t\t\t\t\t\t\t\t\t\ttitleField.id,\n\t\t\t\t\t\t\t\t\t\t\t0\n\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t\tfieldId={ titleField.id }\n\t\t\t\t\t\t\t\t\t\tview={ view }\n\t\t\t\t\t\t\t\t\t\tfields={ fields }\n\t\t\t\t\t\t\t\t\t\tonChangeView={ onChangeView }\n\t\t\t\t\t\t\t\t\t\tonHide={ onHide }\n\t\t\t\t\t\t\t\t\t\tsetOpenedFilter={ setOpenedFilter }\n\t\t\t\t\t\t\t\t\t\tcanMove={ false }\n\t\t\t\t\t\t\t\t\t\tcanInsertLeft={ false }\n\t\t\t\t\t\t\t\t\t\tcanInsertRight={\n\t\t\t\t\t\t\t\t\t\t\tview.layout?.enableMoving ?? true\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t</th>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t{ columns.map( ( column, index ) => {\n\t\t\t\t\t\t\t// Explicit picks the supported styles.\n\t\t\t\t\t\t\tconst { width, maxWidth, minWidth, align } =\n\t\t\t\t\t\t\t\tview.layout?.styles?.[ column ] ?? {};\n\t\t\t\t\t\t\tconst canInsertOrMove =\n\t\t\t\t\t\t\t\tview.layout?.enableMoving ?? true;\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<th\n\t\t\t\t\t\t\t\t\tkey={ column }\n\t\t\t\t\t\t\t\t\tstyle={ {\n\t\t\t\t\t\t\t\t\t\twidth,\n\t\t\t\t\t\t\t\t\t\tmaxWidth,\n\t\t\t\t\t\t\t\t\t\tminWidth,\n\t\t\t\t\t\t\t\t\t\ttextAlign: align,\n\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\taria-sort={\n\t\t\t\t\t\t\t\t\t\tview.sort?.direction &&\n\t\t\t\t\t\t\t\t\t\tview.sort?.field === column\n\t\t\t\t\t\t\t\t\t\t\t? sortValues[ view.sort.direction ]\n\t\t\t\t\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tscope=\"col\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<ColumnHeaderMenu\n\t\t\t\t\t\t\t\t\t\tref={ headerMenuRef( column, index ) }\n\t\t\t\t\t\t\t\t\t\tfieldId={ column }\n\t\t\t\t\t\t\t\t\t\tview={ view }\n\t\t\t\t\t\t\t\t\t\tfields={ fields }\n\t\t\t\t\t\t\t\t\t\tonChangeView={ onChangeView }\n\t\t\t\t\t\t\t\t\t\tonHide={ onHide }\n\t\t\t\t\t\t\t\t\t\tsetOpenedFilter={ setOpenedFilter }\n\t\t\t\t\t\t\t\t\t\tcanMove={ canInsertOrMove }\n\t\t\t\t\t\t\t\t\t\tcanInsertLeft={ canInsertOrMove }\n\t\t\t\t\t\t\t\t\t\tcanInsertRight={ canInsertOrMove }\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</th>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} ) }\n\t\t\t\t\t\t{ !! actions?.length && (\n\t\t\t\t\t\t\t<th\n\t\t\t\t\t\t\t\tclassName={ clsx(\n\t\t\t\t\t\t\t\t\t'dataviews-view-table__actions-column',\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t'dataviews-view-table__actions-column--sticky':\n\t\t\t\t\t\t\t\t\t\t\ttrue,\n\t\t\t\t\t\t\t\t\t\t'dataviews-view-table__actions-column--stuck':\n\t\t\t\t\t\t\t\t\t\t\t! isHorizontalScrollEnd,\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<span className=\"dataviews-view-table-header\">\n\t\t\t\t\t\t\t\t\t{ __( 'Actions' ) }\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t</th>\n\t\t\t\t\t\t) }\n\t\t\t\t\t</tr>\n\t\t\t\t</thead>\n\t\t\t\t{ /* Render grouped data if groupBy is specified */ }\n\t\t\t\t{ hasData && groupField && dataByGroup ? (\n\t\t\t\t\tArray.from( dataByGroup.entries() ).map(\n\t\t\t\t\t\t( [ groupName, groupItems ] ) => (\n\t\t\t\t\t\t\t<tbody key={ `group-${ groupName }` }>\n\t\t\t\t\t\t\t\t<tr className=\"dataviews-view-table__group-header-row\">\n\t\t\t\t\t\t\t\t\t<td\n\t\t\t\t\t\t\t\t\t\tcolSpan={\n\t\t\t\t\t\t\t\t\t\t\tcolumns.length +\n\t\t\t\t\t\t\t\t\t\t\t( hasPrimaryColumn ? 1 : 0 ) +\n\t\t\t\t\t\t\t\t\t\t\t( hasBulkActions ? 1 : 0 ) +\n\t\t\t\t\t\t\t\t\t\t\t( actions?.length ? 1 : 0 )\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tclassName=\"dataviews-view-table__group-header-cell\"\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{ view.groupBy?.showLabel === false\n\t\t\t\t\t\t\t\t\t\t\t? groupName\n\t\t\t\t\t\t\t\t\t\t\t: sprintf(\n\t\t\t\t\t\t\t\t\t\t\t\t\t// translators: 1: The label of the field e.g. \"Date\". 2: The value of the field, e.g.: \"May 2022\".\n\t\t\t\t\t\t\t\t\t\t\t\t\t__( '%1$s: %2$s' ),\n\t\t\t\t\t\t\t\t\t\t\t\t\tgroupField.label,\n\t\t\t\t\t\t\t\t\t\t\t\t\tgroupName\n\t\t\t\t\t\t\t\t\t\t\t ) }\n\t\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t\t{ groupItems.map( ( item, index ) => (\n\t\t\t\t\t\t\t\t\t<TableRow\n\t\t\t\t\t\t\t\t\t\tkey={ getItemId( item ) }\n\t\t\t\t\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\t\t\t\t\tlevel={\n\t\t\t\t\t\t\t\t\t\t\tview.showLevels &&\n\t\t\t\t\t\t\t\t\t\t\ttypeof getItemLevel === 'function'\n\t\t\t\t\t\t\t\t\t\t\t\t? getItemLevel( item )\n\t\t\t\t\t\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\thasBulkActions={ hasBulkActions }\n\t\t\t\t\t\t\t\t\t\tactions={ actions }\n\t\t\t\t\t\t\t\t\t\tfields={ fields }\n\t\t\t\t\t\t\t\t\t\tid={\n\t\t\t\t\t\t\t\t\t\t\tgetItemId( item ) ||\n\t\t\t\t\t\t\t\t\t\t\tindex.toString()\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tview={ view }\n\t\t\t\t\t\t\t\t\t\ttitleField={ titleField }\n\t\t\t\t\t\t\t\t\t\tmediaField={ mediaField }\n\t\t\t\t\t\t\t\t\t\tdescriptionField={ descriptionField }\n\t\t\t\t\t\t\t\t\t\tselection={ selection }\n\t\t\t\t\t\t\t\t\t\tgetItemId={ getItemId }\n\t\t\t\t\t\t\t\t\t\tonChangeSelection={ onChangeSelection }\n\t\t\t\t\t\t\t\t\t\tonClickItem={ onClickItem }\n\t\t\t\t\t\t\t\t\t\trenderItemLink={ renderItemLink }\n\t\t\t\t\t\t\t\t\t\tisItemClickable={ isItemClickable }\n\t\t\t\t\t\t\t\t\t\tisActionsColumnSticky={\n\t\t\t\t\t\t\t\t\t\t\t! isHorizontalScrollEnd\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t) ) }\n\t\t\t\t\t\t\t</tbody>\n\t\t\t\t\t\t)\n\t\t\t\t\t)\n\t\t\t\t) : (\n\t\t\t\t\t<tbody>\n\t\t\t\t\t\t{ hasData &&\n\t\t\t\t\t\t\tdata.map( ( item, index ) => (\n\t\t\t\t\t\t\t\t<TableRow\n\t\t\t\t\t\t\t\t\tkey={ getItemId( item ) }\n\t\t\t\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\t\t\t\tlevel={\n\t\t\t\t\t\t\t\t\t\tview.showLevels &&\n\t\t\t\t\t\t\t\t\t\ttypeof getItemLevel === 'function'\n\t\t\t\t\t\t\t\t\t\t\t? getItemLevel( item )\n\t\t\t\t\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\thasBulkActions={ hasBulkActions }\n\t\t\t\t\t\t\t\t\tactions={ actions }\n\t\t\t\t\t\t\t\t\tfields={ fields }\n\t\t\t\t\t\t\t\t\tid={ getItemId( item ) || index.toString() }\n\t\t\t\t\t\t\t\t\tview={ view }\n\t\t\t\t\t\t\t\t\ttitleField={ titleField }\n\t\t\t\t\t\t\t\t\tmediaField={ mediaField }\n\t\t\t\t\t\t\t\t\tdescriptionField={ descriptionField }\n\t\t\t\t\t\t\t\t\tselection={ selection }\n\t\t\t\t\t\t\t\t\tgetItemId={ getItemId }\n\t\t\t\t\t\t\t\t\tonChangeSelection={ onChangeSelection }\n\t\t\t\t\t\t\t\t\tonClickItem={ onClickItem }\n\t\t\t\t\t\t\t\t\trenderItemLink={ renderItemLink }\n\t\t\t\t\t\t\t\t\tisItemClickable={ isItemClickable }\n\t\t\t\t\t\t\t\t\tisActionsColumnSticky={\n\t\t\t\t\t\t\t\t\t\t! isHorizontalScrollEnd\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tposinset={\n\t\t\t\t\t\t\t\t\t\tisInfiniteScroll ? index + 1 : undefined\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t) ) }\n\t\t\t\t\t</tbody>\n\t\t\t\t) }\n\t\t\t</table>\n\t\t\t<div\n\t\t\t\tclassName={ clsx( {\n\t\t\t\t\t'dataviews-loading': isLoading,\n\t\t\t\t\t'dataviews-no-results': ! hasData && ! isLoading,\n\t\t\t\t} ) }\n\t\t\t\tid={ tableNoticeId }\n\t\t\t>\n\t\t\t\t{ ! hasData &&\n\t\t\t\t\t( isLoading ? (\n\t\t\t\t\t\t<p>\n\t\t\t\t\t\t\t<Spinner />\n\t\t\t\t\t\t</p>\n\t\t\t\t\t) : (\n\t\t\t\t\t\tempty\n\t\t\t\t\t) ) }\n\t\t\t\t{ hasData && isLoading && (\n\t\t\t\t\t<p className=\"dataviews-loading-more\">\n\t\t\t\t\t\t<Spinner />\n\t\t\t\t\t</p>\n\t\t\t\t) }\n\t\t\t</div>\n\t\t</>\n\t);\n}\n\nexport default ViewTable;\n", "/**\n * WordPress dependencies\n */\nimport { CheckboxControl } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport type { SetSelection } from '../../types/private';\nimport type { NormalizedField } from '../../types';\n\ninterface DataViewsSelectionCheckboxProps< Item > {\n\tselection: string[];\n\tonChangeSelection: SetSelection;\n\titem: Item;\n\tgetItemId: ( item: Item ) => string;\n\ttitleField?: NormalizedField< Item >;\n\tdisabled: boolean;\n\ttabIndex?: number;\n}\n\nexport default function DataViewsSelectionCheckbox< Item >( {\n\tselection,\n\tonChangeSelection,\n\titem,\n\tgetItemId,\n\ttitleField,\n\tdisabled,\n\t...extraProps\n}: DataViewsSelectionCheckboxProps< Item > ) {\n\tconst id = getItemId( item );\n\tconst checked = ! disabled && selection.includes( id );\n\n\t// Fallback label to ensure accessibility\n\tconst selectionLabel =\n\t\ttitleField?.getValue?.( { item } ) || __( '(no title)' );\n\n\treturn (\n\t\t<CheckboxControl\n\t\t\tclassName=\"dataviews-selection-checkbox\"\n\t\t\taria-label={ selectionLabel }\n\t\t\taria-disabled={ disabled }\n\t\t\tchecked={ checked }\n\t\t\tonChange={ () => {\n\t\t\t\tif ( disabled ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tonChangeSelection(\n\t\t\t\t\tselection.includes( id )\n\t\t\t\t\t\t? selection.filter( ( itemId ) => id !== itemId )\n\t\t\t\t\t\t: [ ...selection, id ]\n\t\t\t\t);\n\t\t\t} }\n\t\t\t{ ...extraProps }\n\t\t/>\n\t);\n}\n", "/**\n * External dependencies\n */\nimport type { MouseEventHandler } from 'react';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tButton,\n\tModal,\n\tprivateApis as componentsPrivateApis,\n} from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { useMemo, useState } from '@wordpress/element';\nimport { moreVertical } from '@wordpress/icons';\nimport { useRegistry } from '@wordpress/data';\nimport { useViewportMatch } from '@wordpress/compose';\nimport { Stack } from '@wordpress/ui';\n\n/**\n * Internal dependencies\n */\nimport { unlock } from '../../lock-unlock';\nimport type { Action, ActionModal as ActionModalType } from '../../types';\n\nconst { Menu, kebabCase } = unlock( componentsPrivateApis );\n\nexport interface ActionTriggerProps< Item > {\n\taction: Action< Item >;\n\tonClick: MouseEventHandler;\n\tisBusy?: boolean;\n\titems: Item[];\n\tvariant?: 'primary' | 'secondary' | 'tertiary' | 'link';\n}\n\nexport interface ActionModalProps< Item > {\n\taction: ActionModalType< Item >;\n\titems: Item[];\n\tcloseModal: () => void;\n}\n\ninterface ActionsMenuGroupProps< Item > {\n\tactions: Action< Item >[];\n\titem: Item;\n\tregistry: ReturnType< typeof useRegistry >;\n\tsetActiveModalAction: ( action: ActionModalType< Item > | null ) => void;\n}\n\ninterface ItemActionsProps< Item > {\n\titem: Item;\n\tactions: Action< Item >[];\n\tisCompact?: boolean;\n}\n\ninterface CompactItemActionsProps< Item > {\n\titem: Item;\n\tactions: Action< Item >[];\n\tisSmall?: boolean;\n\tregistry: ReturnType< typeof useRegistry >;\n}\n\ninterface PrimaryActionsProps< Item > {\n\titem: Item;\n\tactions: Action< Item >[];\n\tregistry: ReturnType< typeof useRegistry >;\n\tbuttonVariant?: 'primary' | 'secondary' | 'tertiary' | 'link';\n}\n\nfunction ButtonTrigger< Item >( {\n\taction,\n\tonClick,\n\titems,\n\tvariant,\n}: ActionTriggerProps< Item > ) {\n\tconst label =\n\t\ttypeof action.label === 'string' ? action.label : action.label( items );\n\treturn (\n\t\t<Button\n\t\t\tdisabled={ !! action.disabled }\n\t\t\taccessibleWhenDisabled\n\t\t\tsize=\"compact\"\n\t\t\tvariant={ variant }\n\t\t\tonClick={ onClick }\n\t\t>\n\t\t\t{ label }\n\t\t</Button>\n\t);\n}\n\nfunction MenuItemTrigger< Item >( {\n\taction,\n\tonClick,\n\titems,\n}: ActionTriggerProps< Item > ) {\n\tconst label =\n\t\ttypeof action.label === 'string' ? action.label : action.label( items );\n\treturn (\n\t\t<Menu.Item disabled={ action.disabled } onClick={ onClick }>\n\t\t\t<Menu.ItemLabel>{ label }</Menu.ItemLabel>\n\t\t</Menu.Item>\n\t);\n}\n\nexport function ActionModal< Item >( {\n\taction,\n\titems,\n\tcloseModal,\n}: ActionModalProps< Item > ) {\n\tconst label =\n\t\ttypeof action.label === 'string' ? action.label : action.label( items );\n\n\tconst modalHeader =\n\t\ttypeof action.modalHeader === 'function'\n\t\t\t? action.modalHeader( items )\n\t\t\t: action.modalHeader;\n\treturn (\n\t\t<Modal\n\t\t\ttitle={ modalHeader || label }\n\t\t\t__experimentalHideHeader={ !! action.hideModalHeader }\n\t\t\tonRequestClose={ closeModal }\n\t\t\tfocusOnMount={ action.modalFocusOnMount ?? true }\n\t\t\tsize={ action.modalSize || 'medium' }\n\t\t\toverlayClassName={ `dataviews-action-modal dataviews-action-modal__${ kebabCase(\n\t\t\t\taction.id\n\t\t\t) }` }\n\t\t>\n\t\t\t<action.RenderModal items={ items } closeModal={ closeModal } />\n\t\t</Modal>\n\t);\n}\n\nexport function ActionsMenuGroup< Item >( {\n\tactions,\n\titem,\n\tregistry,\n\tsetActiveModalAction,\n}: ActionsMenuGroupProps< Item > ) {\n\tconst { primaryActions, regularActions } = useMemo( () => {\n\t\treturn actions.reduce(\n\t\t\t( acc, action ) => {\n\t\t\t\t( action.isPrimary\n\t\t\t\t\t? acc.primaryActions\n\t\t\t\t\t: acc.regularActions\n\t\t\t\t).push( action );\n\t\t\t\treturn acc;\n\t\t\t},\n\t\t\t{\n\t\t\t\tprimaryActions: [] as Action< Item >[],\n\t\t\t\tregularActions: [] as Action< Item >[],\n\t\t\t}\n\t\t);\n\t}, [ actions ] );\n\n\tconst renderActionGroup = ( actionList: Action< Item >[] ) =>\n\t\tactionList.map( ( action ) => (\n\t\t\t<MenuItemTrigger\n\t\t\t\tkey={ action.id }\n\t\t\t\taction={ action }\n\t\t\t\tonClick={ () => {\n\t\t\t\t\tif ( 'RenderModal' in action ) {\n\t\t\t\t\t\tsetActiveModalAction( action );\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\taction.callback( [ item ], { registry } );\n\t\t\t\t} }\n\t\t\t\titems={ [ item ] }\n\t\t\t/>\n\t\t) );\n\n\treturn (\n\t\t<Menu.Group>\n\t\t\t{ renderActionGroup( primaryActions ) }\n\t\t\t{ primaryActions.length > 0 && regularActions.length > 0 && (\n\t\t\t\t<Menu.Separator />\n\t\t\t) }\n\t\t\t{ renderActionGroup( regularActions ) }\n\t\t</Menu.Group>\n\t);\n}\n\nexport default function ItemActions< Item >( {\n\titem,\n\tactions,\n\tisCompact,\n}: ItemActionsProps< Item > ) {\n\tconst registry = useRegistry();\n\tconst { primaryActions, eligibleActions } = useMemo( () => {\n\t\t// If an action is eligible for all items, doesn't need\n\t\t// to provide the `isEligible` function.\n\t\tconst _eligibleActions = actions.filter(\n\t\t\t( action ) => ! action.isEligible || action.isEligible( item )\n\t\t);\n\t\tconst _primaryActions = _eligibleActions.filter(\n\t\t\t( action ) => action.isPrimary\n\t\t);\n\t\treturn {\n\t\t\tprimaryActions: _primaryActions,\n\t\t\teligibleActions: _eligibleActions,\n\t\t};\n\t}, [ actions, item ] );\n\n\tif ( isCompact ) {\n\t\treturn (\n\t\t\t<CompactItemActions\n\t\t\t\titem={ item }\n\t\t\t\tactions={ eligibleActions }\n\t\t\t\tisSmall\n\t\t\t\tregistry={ registry }\n\t\t\t/>\n\t\t);\n\t}\n\n\treturn (\n\t\t<Stack\n\t\t\tdirection=\"row\"\n\t\t\tjustify=\"flex-end\"\n\t\t\tclassName=\"dataviews-item-actions\"\n\t\t\tstyle={ {\n\t\t\t\tflexShrink: 0,\n\t\t\t\twidth: 'auto',\n\t\t\t} }\n\t\t>\n\t\t\t<PrimaryActions\n\t\t\t\titem={ item }\n\t\t\t\tactions={ primaryActions }\n\t\t\t\tregistry={ registry }\n\t\t\t/>\n\t\t\t{ primaryActions.length < eligibleActions.length && (\n\t\t\t\t<CompactItemActions\n\t\t\t\t\titem={ item }\n\t\t\t\t\tactions={ eligibleActions }\n\t\t\t\t\tregistry={ registry }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</Stack>\n\t);\n}\n\nfunction CompactItemActions< Item >( {\n\titem,\n\tactions,\n\tisSmall,\n\tregistry,\n}: CompactItemActionsProps< Item > ) {\n\tconst [ activeModalAction, setActiveModalAction ] = useState(\n\t\tnull as ActionModalType< Item > | null\n\t);\n\treturn (\n\t\t<>\n\t\t\t<Menu placement=\"bottom-end\">\n\t\t\t\t<Menu.TriggerButton\n\t\t\t\t\trender={\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\tsize={ isSmall ? 'small' : 'compact' }\n\t\t\t\t\t\t\ticon={ moreVertical }\n\t\t\t\t\t\t\tlabel={ __( 'Actions' ) }\n\t\t\t\t\t\t\taccessibleWhenDisabled\n\t\t\t\t\t\t\tdisabled={ ! actions.length }\n\t\t\t\t\t\t\tclassName=\"dataviews-all-actions-button\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t}\n\t\t\t\t/>\n\t\t\t\t<Menu.Popover>\n\t\t\t\t\t<ActionsMenuGroup\n\t\t\t\t\t\tactions={ actions }\n\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\tregistry={ registry }\n\t\t\t\t\t\tsetActiveModalAction={ setActiveModalAction }\n\t\t\t\t\t/>\n\t\t\t\t</Menu.Popover>\n\t\t\t</Menu>\n\t\t\t{ !! activeModalAction && (\n\t\t\t\t<ActionModal\n\t\t\t\t\taction={ activeModalAction }\n\t\t\t\t\titems={ [ item ] }\n\t\t\t\t\tcloseModal={ () => setActiveModalAction( null ) }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</>\n\t);\n}\n\nexport function PrimaryActions< Item >( {\n\titem,\n\tactions,\n\tregistry,\n\tbuttonVariant,\n}: PrimaryActionsProps< Item > ) {\n\tconst [ activeModalAction, setActiveModalAction ] = useState( null as any );\n\tconst isMobileViewport = useViewportMatch( 'medium', '<' );\n\n\tif ( isMobileViewport ) {\n\t\treturn null;\n\t}\n\n\tif ( ! Array.isArray( actions ) || actions.length === 0 ) {\n\t\treturn null;\n\t}\n\treturn (\n\t\t<>\n\t\t\t{ actions.map( ( action ) => (\n\t\t\t\t<ButtonTrigger\n\t\t\t\t\tkey={ action.id }\n\t\t\t\t\taction={ action }\n\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\tif ( 'RenderModal' in action ) {\n\t\t\t\t\t\t\tsetActiveModalAction( action );\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\taction.callback( [ item ], { registry } );\n\t\t\t\t\t} }\n\t\t\t\t\titems={ [ item ] }\n\t\t\t\t\tvariant={ buttonVariant }\n\t\t\t\t/>\n\t\t\t) ) }\n\t\t\t{ !! activeModalAction && (\n\t\t\t\t<ActionModal\n\t\t\t\t\taction={ activeModalAction }\n\t\t\t\t\titems={ [ item ] }\n\t\t\t\t\tcloseModal={ () => setActiveModalAction( null ) }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</>\n\t);\n}\n", "/**\n * WordPress dependencies\n */\nimport { __dangerousOptInToUnstableAPIsOnlyForCoreModules } from '@wordpress/private-apis';\n\nexport const { lock, unlock } =\n\t__dangerousOptInToUnstableAPIsOnlyForCoreModules(\n\t\t'I acknowledge private features are not for use in themes or plugins and doing so will break in the next version of WordPress.',\n\t\t'@wordpress/dataviews'\n\t);\n", "/**\n * External dependencies\n */\nimport type { ReactElement } from 'react';\n\n/**\n * WordPress dependencies\n */\nimport { Button, CheckboxControl } from '@wordpress/components';\nimport { __, sprintf, _n } from '@wordpress/i18n';\nimport { useMemo, useState, useRef, useContext } from '@wordpress/element';\nimport { useRegistry } from '@wordpress/data';\nimport { closeSmall } from '@wordpress/icons';\nimport { useViewportMatch } from '@wordpress/compose';\nimport { Stack } from '@wordpress/ui';\n\n/**\n * Internal dependencies\n */\nimport DataViewsContext from '../dataviews-context';\nimport { ActionModal } from '../dataviews-item-actions';\nimport type { Action, ActionModal as ActionModalType } from '../../types';\nimport type { SetSelection } from '../../types/private';\nimport type { ActionTriggerProps } from '../dataviews-item-actions';\n\ninterface ActionWithModalProps< Item > {\n\taction: ActionModalType< Item >;\n\titems: Item[];\n\tActionTriggerComponent: (\n\t\tprops: ActionTriggerProps< Item >\n\t) => ReactElement;\n}\n\nfunction ActionWithModal< Item >( {\n\taction,\n\titems,\n\tActionTriggerComponent,\n}: ActionWithModalProps< Item > ) {\n\tconst [ isModalOpen, setIsModalOpen ] = useState( false );\n\tconst actionTriggerProps = {\n\t\taction,\n\t\tonClick: () => {\n\t\t\tsetIsModalOpen( true );\n\t\t},\n\t\titems,\n\t};\n\treturn (\n\t\t<>\n\t\t\t<ActionTriggerComponent { ...actionTriggerProps } />\n\t\t\t{ isModalOpen && (\n\t\t\t\t<ActionModal\n\t\t\t\t\taction={ action }\n\t\t\t\t\titems={ items }\n\t\t\t\t\tcloseModal={ () => setIsModalOpen( false ) }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</>\n\t);\n}\n\nexport function useHasAPossibleBulkAction< Item >(\n\tactions: Action< Item >[],\n\titem: Item\n) {\n\treturn useMemo( () => {\n\t\treturn actions.some( ( action ) => {\n\t\t\treturn (\n\t\t\t\taction.supportsBulk &&\n\t\t\t\t( ! action.isEligible || action.isEligible( item ) )\n\t\t\t);\n\t\t} );\n\t}, [ actions, item ] );\n}\n\nexport function useSomeItemHasAPossibleBulkAction< Item >(\n\tactions: Action< Item >[],\n\tdata: Item[]\n) {\n\treturn useMemo( () => {\n\t\treturn data.some( ( item ) => {\n\t\t\treturn actions.some( ( action ) => {\n\t\t\t\treturn (\n\t\t\t\t\taction.supportsBulk &&\n\t\t\t\t\t( ! action.isEligible || action.isEligible( item ) )\n\t\t\t\t);\n\t\t\t} );\n\t\t} );\n\t}, [ actions, data ] );\n}\n\ninterface BulkSelectionCheckboxProps< Item > {\n\tselection: string[];\n\tonChangeSelection: SetSelection;\n\tdata: Item[];\n\tactions: Action< Item >[];\n\tgetItemId: ( item: Item ) => string;\n}\n\nexport function BulkSelectionCheckbox< Item >( {\n\tselection,\n\tonChangeSelection,\n\tdata,\n\tactions,\n\tgetItemId,\n}: BulkSelectionCheckboxProps< Item > ) {\n\tconst selectableItems = useMemo( () => {\n\t\treturn data.filter( ( item ) => {\n\t\t\treturn actions.some(\n\t\t\t\t( action ) =>\n\t\t\t\t\taction.supportsBulk &&\n\t\t\t\t\t( ! action.isEligible || action.isEligible( item ) )\n\t\t\t);\n\t\t} );\n\t}, [ data, actions ] );\n\tconst selectedItems = data.filter(\n\t\t( item ) =>\n\t\t\tselection.includes( getItemId( item ) ) &&\n\t\t\tselectableItems.includes( item )\n\t);\n\tconst areAllSelected = selectedItems.length === selectableItems.length;\n\treturn (\n\t\t<CheckboxControl\n\t\t\tclassName=\"dataviews-view-table-selection-checkbox\"\n\t\t\tchecked={ areAllSelected }\n\t\t\tindeterminate={ ! areAllSelected && !! selectedItems.length }\n\t\t\tonChange={ () => {\n\t\t\t\tif ( areAllSelected ) {\n\t\t\t\t\tonChangeSelection( [] );\n\t\t\t\t} else {\n\t\t\t\t\tonChangeSelection(\n\t\t\t\t\t\tselectableItems.map( ( item ) => getItemId( item ) )\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t} }\n\t\t\taria-label={\n\t\t\t\tareAllSelected ? __( 'Deselect all' ) : __( 'Select all' )\n\t\t\t}\n\t\t/>\n\t);\n}\n\ninterface ActionButtonProps< Item > {\n\taction: Action< Item >;\n\tselectedItems: Item[];\n\tactionInProgress: string | null;\n\tsetActionInProgress: ( actionId: string | null ) => void;\n}\n\ninterface ToolbarContentProps< Item > {\n\tselection: string[];\n\tonChangeSelection: SetSelection;\n\tdata: Item[];\n\tactions: Action< Item >[];\n\tgetItemId: ( item: Item ) => string;\n}\n\nfunction ActionTrigger< Item >( {\n\taction,\n\tonClick,\n\tisBusy,\n\titems,\n}: ActionTriggerProps< Item > ) {\n\tconst label =\n\t\ttypeof action.label === 'string' ? action.label : action.label( items );\n\tconst isMobile = useViewportMatch( 'medium', '<' );\n\n\tif ( isMobile ) {\n\t\treturn (\n\t\t\t<Button\n\t\t\t\tdisabled={ isBusy }\n\t\t\t\taccessibleWhenDisabled\n\t\t\t\tlabel={ label }\n\t\t\t\ticon={ action.icon }\n\t\t\t\tsize=\"compact\"\n\t\t\t\tonClick={ onClick }\n\t\t\t\tisBusy={ isBusy }\n\t\t\t/>\n\t\t);\n\t}\n\n\treturn (\n\t\t<Button\n\t\t\tdisabled={ isBusy }\n\t\t\taccessibleWhenDisabled\n\t\t\tsize=\"compact\"\n\t\t\tonClick={ onClick }\n\t\t\tisBusy={ isBusy }\n\t\t>\n\t\t\t{ label }\n\t\t</Button>\n\t);\n}\n\nconst EMPTY_ARRAY: [] = [];\n\nfunction ActionButton< Item >( {\n\taction,\n\tselectedItems,\n\tactionInProgress,\n\tsetActionInProgress,\n}: ActionButtonProps< Item > ) {\n\tconst registry = useRegistry();\n\tconst selectedEligibleItems = useMemo( () => {\n\t\treturn selectedItems.filter( ( item ) => {\n\t\t\treturn ! action.isEligible || action.isEligible( item );\n\t\t} );\n\t}, [ action, selectedItems ] );\n\tif ( 'RenderModal' in action ) {\n\t\treturn (\n\t\t\t<ActionWithModal\n\t\t\t\tkey={ action.id }\n\t\t\t\taction={ action }\n\t\t\t\titems={ selectedEligibleItems }\n\t\t\t\tActionTriggerComponent={ ActionTrigger }\n\t\t\t/>\n\t\t);\n\t}\n\treturn (\n\t\t<ActionTrigger\n\t\t\tkey={ action.id }\n\t\t\taction={ action }\n\t\t\tonClick={ async () => {\n\t\t\t\tsetActionInProgress( action.id );\n\t\t\t\tawait action.callback( selectedItems, {\n\t\t\t\t\tregistry,\n\t\t\t\t} );\n\t\t\t\tsetActionInProgress( null );\n\t\t\t} }\n\t\t\titems={ selectedEligibleItems }\n\t\t\tisBusy={ actionInProgress === action.id }\n\t\t/>\n\t);\n}\n\nfunction renderFooterContent< Item >(\n\tdata: Item[],\n\tactions: Action< Item >[],\n\tgetItemId: ( item: Item ) => string,\n\tselection: string[],\n\tactionsToShow: Action< Item >[],\n\tselectedItems: Item[],\n\tactionInProgress: string | null,\n\tsetActionInProgress: ( actionId: string | null ) => void,\n\tonChangeSelection: SetSelection\n) {\n\tconst message =\n\t\tselectedItems.length > 0\n\t\t\t? sprintf(\n\t\t\t\t\t/* translators: %d: number of items. */\n\t\t\t\t\t_n(\n\t\t\t\t\t\t'%d Item selected',\n\t\t\t\t\t\t'%d Items selected',\n\t\t\t\t\t\tselectedItems.length\n\t\t\t\t\t),\n\t\t\t\t\tselectedItems.length\n\t\t\t )\n\t\t\t: sprintf(\n\t\t\t\t\t/* translators: %d: number of items. */\n\t\t\t\t\t_n( '%d Item', '%d Items', data.length ),\n\t\t\t\t\tdata.length\n\t\t\t );\n\treturn (\n\t\t<Stack\n\t\t\tdirection=\"row\"\n\t\t\tclassName=\"dataviews-bulk-actions-footer__container\"\n\t\t\tgap=\"sm\"\n\t\t\talign=\"center\"\n\t\t>\n\t\t\t<BulkSelectionCheckbox\n\t\t\t\tselection={ selection }\n\t\t\t\tonChangeSelection={ onChangeSelection }\n\t\t\t\tdata={ data }\n\t\t\t\tactions={ actions }\n\t\t\t\tgetItemId={ getItemId }\n\t\t\t/>\n\t\t\t<span className=\"dataviews-bulk-actions-footer__item-count\">\n\t\t\t\t{ message }\n\t\t\t</span>\n\t\t\t<Stack\n\t\t\t\tdirection=\"row\"\n\t\t\t\tclassName=\"dataviews-bulk-actions-footer__action-buttons\"\n\t\t\t\tgap=\"2xs\"\n\t\t\t>\n\t\t\t\t{ actionsToShow.map( ( action ) => {\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<ActionButton\n\t\t\t\t\t\t\tkey={ action.id }\n\t\t\t\t\t\t\taction={ action }\n\t\t\t\t\t\t\tselectedItems={ selectedItems }\n\t\t\t\t\t\t\tactionInProgress={ actionInProgress }\n\t\t\t\t\t\t\tsetActionInProgress={ setActionInProgress }\n\t\t\t\t\t\t/>\n\t\t\t\t\t);\n\t\t\t\t} ) }\n\t\t\t\t{ selectedItems.length > 0 && (\n\t\t\t\t\t<Button\n\t\t\t\t\t\ticon={ closeSmall }\n\t\t\t\t\t\tshowTooltip\n\t\t\t\t\t\ttooltipPosition=\"top\"\n\t\t\t\t\t\tsize=\"compact\"\n\t\t\t\t\t\tlabel={ __( 'Cancel' ) }\n\t\t\t\t\t\tdisabled={ !! actionInProgress }\n\t\t\t\t\t\taccessibleWhenDisabled={ false }\n\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\tonChangeSelection( EMPTY_ARRAY );\n\t\t\t\t\t\t} }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t</Stack>\n\t\t</Stack>\n\t);\n}\n\nfunction FooterContent< Item >( {\n\tselection,\n\tactions,\n\tonChangeSelection,\n\tdata,\n\tgetItemId,\n}: ToolbarContentProps< Item > ) {\n\tconst [ actionInProgress, setActionInProgress ] = useState< string | null >(\n\t\tnull\n\t);\n\tconst footerContentRef = useRef< JSX.Element | null >( null );\n\tconst isMobile = useViewportMatch( 'medium', '<' );\n\n\tconst bulkActions = useMemo(\n\t\t() => actions.filter( ( action ) => action.supportsBulk ),\n\t\t[ actions ]\n\t);\n\tconst selectableItems = useMemo( () => {\n\t\treturn data.filter( ( item ) => {\n\t\t\treturn bulkActions.some(\n\t\t\t\t( action ) => ! action.isEligible || action.isEligible( item )\n\t\t\t);\n\t\t} );\n\t}, [ data, bulkActions ] );\n\n\tconst selectedItems = useMemo( () => {\n\t\treturn data.filter(\n\t\t\t( item ) =>\n\t\t\t\tselection.includes( getItemId( item ) ) &&\n\t\t\t\tselectableItems.includes( item )\n\t\t);\n\t}, [ selection, data, getItemId, selectableItems ] );\n\n\tconst actionsToShow = useMemo(\n\t\t() =>\n\t\t\tactions.filter( ( action ) => {\n\t\t\t\treturn (\n\t\t\t\t\taction.supportsBulk &&\n\t\t\t\t\t( ! isMobile || action.icon ) &&\n\t\t\t\t\tselectedItems.some(\n\t\t\t\t\t\t( item ) =>\n\t\t\t\t\t\t\t! action.isEligible || action.isEligible( item )\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t\t} ),\n\t\t[ actions, selectedItems, isMobile ]\n\t);\n\tif ( ! actionInProgress ) {\n\t\tif ( footerContentRef.current ) {\n\t\t\tfooterContentRef.current = null;\n\t\t}\n\t\treturn renderFooterContent(\n\t\t\tdata,\n\t\t\tactions,\n\t\t\tgetItemId,\n\t\t\tselection,\n\t\t\tactionsToShow,\n\t\t\tselectedItems,\n\t\t\tactionInProgress,\n\t\t\tsetActionInProgress,\n\t\t\tonChangeSelection\n\t\t);\n\t} else if ( ! footerContentRef.current ) {\n\t\tfooterContentRef.current = renderFooterContent(\n\t\t\tdata,\n\t\t\tactions,\n\t\t\tgetItemId,\n\t\t\tselection,\n\t\t\tactionsToShow,\n\t\t\tselectedItems,\n\t\t\tactionInProgress,\n\t\t\tsetActionInProgress,\n\t\t\tonChangeSelection\n\t\t);\n\t}\n\treturn footerContentRef.current;\n}\n\nexport function BulkActionsFooter() {\n\tconst {\n\t\tdata,\n\t\tselection,\n\t\tactions = EMPTY_ARRAY,\n\t\tonChangeSelection,\n\t\tgetItemId,\n\t} = useContext( DataViewsContext );\n\treturn (\n\t\t<FooterContent\n\t\t\tselection={ selection }\n\t\t\tonChangeSelection={ onChangeSelection }\n\t\t\tdata={ data }\n\t\t\tactions={ actions }\n\t\t\tgetItemId={ getItemId }\n\t\t/>\n\t);\n}\n", "/**\n * External dependencies\n */\nimport type { ReactNode, Ref, PropsWithoutRef, RefAttributes } from 'react';\n\n/**\n * WordPress dependencies\n */\nimport { __, isRTL } from '@wordpress/i18n';\nimport { arrowLeft, arrowRight, unseen, funnel } from '@wordpress/icons';\nimport {\n\tButton,\n\tIcon,\n\tprivateApis as componentsPrivateApis,\n} from '@wordpress/components';\nimport { forwardRef, Children, Fragment, useContext } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { unlock } from '../../../lock-unlock';\nimport { SORTING_DIRECTIONS, sortArrows, sortLabels } from '../../../constants';\nimport type {\n\tNormalizedField,\n\tSortDirection,\n\tViewTable as ViewTableType,\n\tViewPickerTable as ViewPickerTableType,\n\tOperator,\n} from '../../../types';\nimport DataViewsContext from '../../dataviews-context';\nimport getHideableFields from '../../../utils/get-hideable-fields';\n\nconst { Menu } = unlock( componentsPrivateApis );\n\ninterface HeaderMenuProps< Item > {\n\tfieldId: string;\n\tview: ViewTableType | ViewPickerTableType;\n\tfields: NormalizedField< Item >[];\n\tonChangeView: ( view: ViewTableType | ViewPickerTableType ) => void;\n\tonHide: ( field: NormalizedField< Item > ) => void;\n\tsetOpenedFilter: ( fieldId: string ) => void;\n\tcanMove?: boolean;\n\tcanInsertLeft?: boolean;\n\tcanInsertRight?: boolean;\n}\n\nfunction WithMenuSeparators( { children }: { children: ReactNode } ) {\n\treturn Children.toArray( children )\n\t\t.filter( Boolean )\n\t\t.map( ( child, i ) => (\n\t\t\t<Fragment key={ i }>\n\t\t\t\t{ i > 0 && <Menu.Separator /> }\n\t\t\t\t{ child }\n\t\t\t</Fragment>\n\t\t) );\n}\n\nconst _HeaderMenu = forwardRef( function HeaderMenu< Item >(\n\t{\n\t\tfieldId,\n\t\tview,\n\t\tfields,\n\t\tonChangeView,\n\t\tonHide,\n\t\tsetOpenedFilter,\n\t\tcanMove = true,\n\t\tcanInsertLeft = true,\n\t\tcanInsertRight = true,\n\t}: HeaderMenuProps< Item >,\n\tref: Ref< HTMLButtonElement >\n) {\n\tconst visibleFieldIds = view.fields ?? [];\n\tconst index = visibleFieldIds?.indexOf( fieldId ) as number;\n\tconst isSorted = view.sort?.field === fieldId;\n\tlet isHidable = false;\n\tlet isSortable = false;\n\tlet canAddFilter = false;\n\tlet operators: Operator[] = [];\n\tconst field = fields.find( ( f ) => f.id === fieldId );\n\n\tconst { setIsShowingFilter } = useContext( DataViewsContext );\n\n\tif ( ! field ) {\n\t\t// No combined or regular field found.\n\t\treturn null;\n\t}\n\n\tisHidable = field.enableHiding !== false;\n\tisSortable = field.enableSorting !== false;\n\tconst header = field.header;\n\n\toperators = ( !! field.filterBy && field.filterBy?.operators ) || [];\n\n\t// Filter can be added if:\n\t//\n\t// 1. The field is not already part of a view's filters.\n\t// 2. The field has elements or Edit property.\n\t// 3. The field does not opt-out of filtering.\n\t// 4. The filter is not primary (if it is, it is already visible).\n\tcanAddFilter =\n\t\t! view.filters?.some( ( _filter ) => fieldId === _filter.field ) &&\n\t\t!! ( field.hasElements || field.Edit ) &&\n\t\tfield.filterBy !== false &&\n\t\t! field.filterBy?.isPrimary;\n\n\tif ( ! isSortable && ! canMove && ! isHidable && ! canAddFilter ) {\n\t\treturn header;\n\t}\n\n\tconst hiddenFields = getHideableFields( view, fields ).filter(\n\t\t( f ) => ! visibleFieldIds.includes( f.id )\n\t);\n\tconst canInsert =\n\t\t( canInsertLeft || canInsertRight ) && !! hiddenFields.length;\n\n\tconst isRtl = isRTL();\n\n\treturn (\n\t\t<Menu>\n\t\t\t<Menu.TriggerButton\n\t\t\t\trender={\n\t\t\t\t\t<Button\n\t\t\t\t\t\tsize=\"compact\"\n\t\t\t\t\t\tclassName=\"dataviews-view-table-header-button\"\n\t\t\t\t\t\tref={ ref }\n\t\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\t/>\n\t\t\t\t}\n\t\t\t>\n\t\t\t\t{ header }\n\t\t\t\t{ view.sort && isSorted && (\n\t\t\t\t\t<span aria-hidden=\"true\">\n\t\t\t\t\t\t{ sortArrows[ view.sort.direction ] }\n\t\t\t\t\t</span>\n\t\t\t\t) }\n\t\t\t</Menu.TriggerButton>\n\t\t\t<Menu.Popover style={ { minWidth: '240px' } }>\n\t\t\t\t<WithMenuSeparators>\n\t\t\t\t\t{ isSortable && (\n\t\t\t\t\t\t<Menu.Group>\n\t\t\t\t\t\t\t{ SORTING_DIRECTIONS.map(\n\t\t\t\t\t\t\t\t( direction: SortDirection ) => {\n\t\t\t\t\t\t\t\t\tconst isChecked =\n\t\t\t\t\t\t\t\t\t\tview.sort &&\n\t\t\t\t\t\t\t\t\t\tisSorted &&\n\t\t\t\t\t\t\t\t\t\tview.sort.direction === direction;\n\n\t\t\t\t\t\t\t\t\tconst value = `${ fieldId }-${ direction }`;\n\n\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t<Menu.RadioItem\n\t\t\t\t\t\t\t\t\t\t\tkey={ value }\n\t\t\t\t\t\t\t\t\t\t\t// All sorting radio items share the same name, so that\n\t\t\t\t\t\t\t\t\t\t\t// selecting a sorting option automatically deselects the\n\t\t\t\t\t\t\t\t\t\t\t// previously selected one, even if it is displayed in\n\t\t\t\t\t\t\t\t\t\t\t// another submenu. The field and direction are passed via\n\t\t\t\t\t\t\t\t\t\t\t// the `value` prop.\n\t\t\t\t\t\t\t\t\t\t\tname=\"view-table-sorting\"\n\t\t\t\t\t\t\t\t\t\t\tvalue={ value }\n\t\t\t\t\t\t\t\t\t\t\tchecked={ isChecked }\n\t\t\t\t\t\t\t\t\t\t\tonChange={ () => {\n\t\t\t\t\t\t\t\t\t\t\t\tonChangeView( {\n\t\t\t\t\t\t\t\t\t\t\t\t\t...view,\n\t\t\t\t\t\t\t\t\t\t\t\t\tsort: {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tfield: fieldId,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tdirection,\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\tshowLevels: false,\n\t\t\t\t\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t<Menu.ItemLabel>\n\t\t\t\t\t\t\t\t\t\t\t\t{ sortLabels[ direction ] }\n\t\t\t\t\t\t\t\t\t\t\t</Menu.ItemLabel>\n\t\t\t\t\t\t\t\t\t\t</Menu.RadioItem>\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t</Menu.Group>\n\t\t\t\t\t) }\n\t\t\t\t\t{ canAddFilter && (\n\t\t\t\t\t\t<Menu.Group>\n\t\t\t\t\t\t\t<Menu.Item\n\t\t\t\t\t\t\t\tprefix={ <Icon icon={ funnel } /> }\n\t\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\t\tsetOpenedFilter( fieldId );\n\t\t\t\t\t\t\t\t\tsetIsShowingFilter( true );\n\t\t\t\t\t\t\t\t\tonChangeView( {\n\t\t\t\t\t\t\t\t\t\t...view,\n\t\t\t\t\t\t\t\t\t\tpage: 1,\n\t\t\t\t\t\t\t\t\t\tfilters: [\n\t\t\t\t\t\t\t\t\t\t\t...( view.filters || [] ),\n\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\tfield: fieldId,\n\t\t\t\t\t\t\t\t\t\t\t\tvalue: undefined,\n\t\t\t\t\t\t\t\t\t\t\t\toperator: operators[ 0 ],\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<Menu.ItemLabel>\n\t\t\t\t\t\t\t\t\t{ __( 'Add filter' ) }\n\t\t\t\t\t\t\t\t</Menu.ItemLabel>\n\t\t\t\t\t\t\t</Menu.Item>\n\t\t\t\t\t\t</Menu.Group>\n\t\t\t\t\t) }\n\t\t\t\t\t{ ( canMove || isHidable || canInsert ) && field && (\n\t\t\t\t\t\t<Menu.Group>\n\t\t\t\t\t\t\t{ canMove && (\n\t\t\t\t\t\t\t\t<Menu.Item\n\t\t\t\t\t\t\t\t\tprefix={ <Icon icon={ arrowLeft } /> }\n\t\t\t\t\t\t\t\t\tdisabled={\n\t\t\t\t\t\t\t\t\t\tisRtl\n\t\t\t\t\t\t\t\t\t\t\t? index >=\n\t\t\t\t\t\t\t\t\t\t\t visibleFieldIds.length - 1\n\t\t\t\t\t\t\t\t\t\t\t: index < 1\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\t\t\t// In RTL, moving left visually means moving right in the array\n\t\t\t\t\t\t\t\t\t\tconst targetIndex = isRtl\n\t\t\t\t\t\t\t\t\t\t\t? index + 1\n\t\t\t\t\t\t\t\t\t\t\t: index - 1;\n\t\t\t\t\t\t\t\t\t\tconst newFields = [\n\t\t\t\t\t\t\t\t\t\t\t...visibleFieldIds,\n\t\t\t\t\t\t\t\t\t\t];\n\t\t\t\t\t\t\t\t\t\tnewFields.splice( index, 1 );\n\t\t\t\t\t\t\t\t\t\tnewFields.splice(\n\t\t\t\t\t\t\t\t\t\t\ttargetIndex,\n\t\t\t\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\t\t\t\tfieldId\n\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\tonChangeView( {\n\t\t\t\t\t\t\t\t\t\t\t...view,\n\t\t\t\t\t\t\t\t\t\t\tfields: newFields,\n\t\t\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<Menu.ItemLabel>\n\t\t\t\t\t\t\t\t\t\t{ __( 'Move left' ) }\n\t\t\t\t\t\t\t\t\t</Menu.ItemLabel>\n\t\t\t\t\t\t\t\t</Menu.Item>\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t{ canMove && (\n\t\t\t\t\t\t\t\t<Menu.Item\n\t\t\t\t\t\t\t\t\tprefix={ <Icon icon={ arrowRight } /> }\n\t\t\t\t\t\t\t\t\tdisabled={\n\t\t\t\t\t\t\t\t\t\tisRtl\n\t\t\t\t\t\t\t\t\t\t\t? index < 1\n\t\t\t\t\t\t\t\t\t\t\t: index >=\n\t\t\t\t\t\t\t\t\t\t\t visibleFieldIds.length - 1\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\t\t\t// In RTL, moving right visually means moving left in the array\n\t\t\t\t\t\t\t\t\t\tconst targetIndex = isRtl\n\t\t\t\t\t\t\t\t\t\t\t? index - 1\n\t\t\t\t\t\t\t\t\t\t\t: index + 1;\n\t\t\t\t\t\t\t\t\t\tconst newFields = [\n\t\t\t\t\t\t\t\t\t\t\t...visibleFieldIds,\n\t\t\t\t\t\t\t\t\t\t];\n\t\t\t\t\t\t\t\t\t\tnewFields.splice( index, 1 );\n\t\t\t\t\t\t\t\t\t\tnewFields.splice(\n\t\t\t\t\t\t\t\t\t\t\ttargetIndex,\n\t\t\t\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\t\t\t\tfieldId\n\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\tonChangeView( {\n\t\t\t\t\t\t\t\t\t\t\t...view,\n\t\t\t\t\t\t\t\t\t\t\tfields: newFields,\n\t\t\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<Menu.ItemLabel>\n\t\t\t\t\t\t\t\t\t\t{ __( 'Move right' ) }\n\t\t\t\t\t\t\t\t\t</Menu.ItemLabel>\n\t\t\t\t\t\t\t\t</Menu.Item>\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t{ canInsertLeft && !! hiddenFields.length && (\n\t\t\t\t\t\t\t\t<Menu>\n\t\t\t\t\t\t\t\t\t<Menu.SubmenuTriggerItem>\n\t\t\t\t\t\t\t\t\t\t<Menu.ItemLabel>\n\t\t\t\t\t\t\t\t\t\t\t{ __( 'Insert left' ) }\n\t\t\t\t\t\t\t\t\t\t</Menu.ItemLabel>\n\t\t\t\t\t\t\t\t\t</Menu.SubmenuTriggerItem>\n\t\t\t\t\t\t\t\t\t<Menu.Popover>\n\t\t\t\t\t\t\t\t\t\t{ hiddenFields.map( ( hiddenField ) => (\n\t\t\t\t\t\t\t\t\t\t\t<Menu.Item\n\t\t\t\t\t\t\t\t\t\t\t\tkey={ hiddenField.id }\n\t\t\t\t\t\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\t\t\t\t\t\tonChangeView( {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t...view,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tfields: [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t...visibleFieldIds.slice(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tindex\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\thiddenField.id,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t...visibleFieldIds.slice(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tindex\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t<Menu.ItemLabel>\n\t\t\t\t\t\t\t\t\t\t\t\t\t{ hiddenField.label }\n\t\t\t\t\t\t\t\t\t\t\t\t</Menu.ItemLabel>\n\t\t\t\t\t\t\t\t\t\t\t</Menu.Item>\n\t\t\t\t\t\t\t\t\t\t) ) }\n\t\t\t\t\t\t\t\t\t</Menu.Popover>\n\t\t\t\t\t\t\t\t</Menu>\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t{ canInsertRight && !! hiddenFields.length && (\n\t\t\t\t\t\t\t\t<Menu>\n\t\t\t\t\t\t\t\t\t<Menu.SubmenuTriggerItem>\n\t\t\t\t\t\t\t\t\t\t<Menu.ItemLabel>\n\t\t\t\t\t\t\t\t\t\t\t{ __( 'Insert right' ) }\n\t\t\t\t\t\t\t\t\t\t</Menu.ItemLabel>\n\t\t\t\t\t\t\t\t\t</Menu.SubmenuTriggerItem>\n\t\t\t\t\t\t\t\t\t<Menu.Popover>\n\t\t\t\t\t\t\t\t\t\t{ hiddenFields.map( ( hiddenField ) => (\n\t\t\t\t\t\t\t\t\t\t\t<Menu.Item\n\t\t\t\t\t\t\t\t\t\t\t\tkey={ hiddenField.id }\n\t\t\t\t\t\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\t\t\t\t\t\tonChangeView( {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t...view,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tfields: [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t...visibleFieldIds.slice(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tindex + 1\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\thiddenField.id,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t...visibleFieldIds.slice(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tindex + 1\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t<Menu.ItemLabel>\n\t\t\t\t\t\t\t\t\t\t\t\t\t{ hiddenField.label }\n\t\t\t\t\t\t\t\t\t\t\t\t</Menu.ItemLabel>\n\t\t\t\t\t\t\t\t\t\t\t</Menu.Item>\n\t\t\t\t\t\t\t\t\t\t) ) }\n\t\t\t\t\t\t\t\t\t</Menu.Popover>\n\t\t\t\t\t\t\t\t</Menu>\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t{ isHidable && field && (\n\t\t\t\t\t\t\t\t<Menu.Item\n\t\t\t\t\t\t\t\t\tprefix={ <Icon icon={ unseen } /> }\n\t\t\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\t\t\tonHide( field );\n\t\t\t\t\t\t\t\t\t\tonChangeView( {\n\t\t\t\t\t\t\t\t\t\t\t...view,\n\t\t\t\t\t\t\t\t\t\t\tfields: visibleFieldIds.filter(\n\t\t\t\t\t\t\t\t\t\t\t\t( id ) => id !== fieldId\n\t\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<Menu.ItemLabel>\n\t\t\t\t\t\t\t\t\t\t{ __( 'Hide column' ) }\n\t\t\t\t\t\t\t\t\t</Menu.ItemLabel>\n\t\t\t\t\t\t\t\t</Menu.Item>\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t</Menu.Group>\n\t\t\t\t\t) }\n\t\t\t\t</WithMenuSeparators>\n\t\t\t</Menu.Popover>\n\t\t</Menu>\n\t);\n} );\n\n// @ts-expect-error Lift the `Item` type argument through the forwardRef.\nconst ColumnHeaderMenu: < Item >(\n\tprops: PropsWithoutRef< HeaderMenuProps< Item > > &\n\t\tRefAttributes< HTMLButtonElement >\n) => ReturnType< typeof _HeaderMenu > = _HeaderMenu;\n\nexport default ColumnHeaderMenu;\n", "/**\n * Internal dependencies\n */\nimport type { NormalizedField, View } from '../types';\n\nexport default function getHideableFields< Item >(\n\tview: View,\n\tfields: NormalizedField< Item >[]\n): NormalizedField< Item >[] {\n\tconst togglableFields = [\n\t\tview?.titleField,\n\t\tview?.mediaField,\n\t\tview?.descriptionField,\n\t].filter( Boolean );\n\treturn fields.filter(\n\t\t( f ) =>\n\t\t\t! togglableFields.includes( f.id ) &&\n\t\t\tf.type !== 'media' &&\n\t\t\tf.enableHiding !== false\n\t);\n}\n", "/**\n * External dependencies\n */\nimport type { ReactNode, ReactElement, ComponentProps } from 'react';\n\n/**\n * WordPress dependencies\n */\nimport { cloneElement } from '@wordpress/element';\n\nfunction getClickableItemProps< Item >( {\n\titem,\n\tisItemClickable,\n\tonClickItem,\n\tclassName,\n}: {\n\titem: Item;\n\tisItemClickable: ( item: Item ) => boolean;\n\tonClickItem?: ( item: Item ) => void;\n\tclassName?: string;\n} ) {\n\tif ( ! isItemClickable( item ) || ! onClickItem ) {\n\t\treturn { className };\n\t}\n\n\treturn {\n\t\tclassName: className\n\t\t\t? `${ className } ${ className }--clickable`\n\t\t\t: undefined,\n\t\trole: 'button',\n\t\ttabIndex: 0,\n\t\tonClick: ( event: React.MouseEvent ) => {\n\t\t\t// Prevents onChangeSelection from triggering.\n\t\t\tevent.stopPropagation();\n\t\t\tonClickItem( item );\n\t\t},\n\t\tonKeyDown: ( event: React.KeyboardEvent ) => {\n\t\t\tif (\n\t\t\t\tevent.key === 'Enter' ||\n\t\t\t\tevent.key === '' ||\n\t\t\t\tevent.key === ' '\n\t\t\t) {\n\t\t\t\t// Prevents onChangeSelection from triggering.\n\t\t\t\tevent.stopPropagation();\n\t\t\t\tonClickItem( item );\n\t\t\t}\n\t\t},\n\t};\n}\n\nexport function ItemClickWrapper< Item >( {\n\titem,\n\tisItemClickable,\n\tonClickItem,\n\trenderItemLink,\n\tclassName,\n\tchildren,\n\t...extraProps\n}: {\n\titem: Item;\n\tisItemClickable: ( item: Item ) => boolean;\n\tonClickItem?: ( item: Item ) => void;\n\trenderItemLink?: (\n\t\tprops: {\n\t\t\titem: Item;\n\t\t} & ComponentProps< 'a' >\n\t) => ReactElement;\n\tclassName?: string;\n\tchildren: ReactNode;\n} ) {\n\t// Always render a wrapper element so layout and styling relying on the wrapper\n\t// still works even if the item is not clickable.\n\tif ( ! isItemClickable( item ) ) {\n\t\treturn (\n\t\t\t<div className={ className } { ...extraProps }>\n\t\t\t\t{ children }\n\t\t\t</div>\n\t\t);\n\t}\n\n\t// If we have a renderItemLink, use it\n\tif ( renderItemLink ) {\n\t\tconst renderedElement = renderItemLink( {\n\t\t\titem,\n\t\t\tclassName: `${ className } ${ className }--clickable`,\n\t\t\t...extraProps,\n\t\t\tchildren,\n\t\t} );\n\n\t\t// Clone the element and enhance onClick to stop propagation\n\t\treturn cloneElement( renderedElement, {\n\t\t\tonClick: ( event: React.MouseEvent ) => {\n\t\t\t\t// Always stop propagation to prevent selection\n\t\t\t\tevent.stopPropagation();\n\n\t\t\t\t// If consumer provided an onClick, call it\n\t\t\t\tif ( renderedElement.props.onClick ) {\n\t\t\t\t\trenderedElement.props.onClick( event );\n\t\t\t\t}\n\t\t\t},\n\t\t\tonKeyDown: ( event: React.KeyboardEvent ) => {\n\t\t\t\tif (\n\t\t\t\t\tevent.key === 'Enter' ||\n\t\t\t\t\tevent.key === '' ||\n\t\t\t\t\tevent.key === ' '\n\t\t\t\t) {\n\t\t\t\t\t// Prevents onChangeSelection from triggering.\n\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t// If consumer provided an onKeyDown, call it\n\t\t\t\t\tif ( renderedElement.props.onKeyDown ) {\n\t\t\t\t\t\trenderedElement.props.onKeyDown( event );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t} );\n\t}\n\n\t// Otherwise use the classic click handler approach\n\tconst clickProps = getClickableItemProps( {\n\t\titem,\n\t\tisItemClickable,\n\t\tonClickItem,\n\t\tclassName,\n\t} );\n\n\treturn (\n\t\t<div { ...clickProps } { ...extraProps }>\n\t\t\t{ children }\n\t\t</div>\n\t);\n}\n", "/**\n * External dependencies\n */\nimport type { ComponentProps, ReactElement } from 'react';\n\n/**\n * WordPress dependencies\n */\nimport { Stack } from '@wordpress/ui';\n\n/**\n * Internal dependencies\n */\nimport type { NormalizedField } from '../../../types';\nimport { ItemClickWrapper } from '../utils/item-click-wrapper';\n\nfunction ColumnPrimary< Item >( {\n\titem,\n\tlevel,\n\ttitleField,\n\tmediaField,\n\tdescriptionField,\n\tonClickItem,\n\trenderItemLink,\n\tisItemClickable,\n}: {\n\titem: Item;\n\tlevel?: number;\n\ttitleField?: NormalizedField< Item >;\n\tmediaField?: NormalizedField< Item >;\n\tdescriptionField?: NormalizedField< Item >;\n\tonClickItem?: ( item: Item ) => void;\n\trenderItemLink?: (\n\t\tprops: {\n\t\t\titem: Item;\n\t\t} & ComponentProps< 'a' >\n\t) => ReactElement;\n\tisItemClickable: ( item: Item ) => boolean;\n} ) {\n\treturn (\n\t\t<Stack direction=\"row\" gap=\"sm\" align=\"flex-start\" justify=\"flex-start\">\n\t\t\t{ mediaField && (\n\t\t\t\t<ItemClickWrapper\n\t\t\t\t\titem={ item }\n\t\t\t\t\tisItemClickable={ isItemClickable }\n\t\t\t\t\tonClickItem={ onClickItem }\n\t\t\t\t\trenderItemLink={ renderItemLink }\n\t\t\t\t\tclassName=\"dataviews-view-table__cell-content-wrapper dataviews-column-primary__media\"\n\t\t\t\t\taria-label={\n\t\t\t\t\t\tisItemClickable( item ) &&\n\t\t\t\t\t\t( !! onClickItem || !! renderItemLink ) &&\n\t\t\t\t\t\t!! titleField\n\t\t\t\t\t\t\t? titleField.getValue?.( { item } )\n\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t}\n\t\t\t\t>\n\t\t\t\t\t<mediaField.render\n\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\tfield={ mediaField }\n\t\t\t\t\t\tconfig={ { sizes: '32px' } }\n\t\t\t\t\t/>\n\t\t\t\t</ItemClickWrapper>\n\t\t\t) }\n\t\t\t<Stack\n\t\t\t\tdirection=\"column\"\n\t\t\t\talign=\"flex-start\"\n\t\t\t\tclassName=\"dataviews-view-table__primary-column-content\"\n\t\t\t>\n\t\t\t\t{ titleField && (\n\t\t\t\t\t<ItemClickWrapper\n\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\tisItemClickable={ isItemClickable }\n\t\t\t\t\t\tonClickItem={ onClickItem }\n\t\t\t\t\t\trenderItemLink={ renderItemLink }\n\t\t\t\t\t\tclassName=\"dataviews-view-table__cell-content-wrapper dataviews-title-field\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{ level !== undefined && level > 0 && (\n\t\t\t\t\t\t\t<span className=\"dataviews-view-table__level\">\n\t\t\t\t\t\t\t\t{ Array( level ).fill( '\u2014' ).join( ' ' ) } \n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t<titleField.render item={ item } field={ titleField } />\n\t\t\t\t\t</ItemClickWrapper>\n\t\t\t\t) }\n\t\t\t\t{ descriptionField && (\n\t\t\t\t\t<descriptionField.render\n\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\tfield={ descriptionField }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t</Stack>\n\t\t</Stack>\n\t);\n}\n\nexport default ColumnPrimary;\n", "/**\n * External dependencies\n */\nimport type { MutableRefObject } from 'react';\n\n/**\n * WordPress dependencies\n */\nimport { useDebounce } from '@wordpress/compose';\nimport { useCallback, useEffect, useState } from '@wordpress/element';\nimport { isRTL } from '@wordpress/i18n';\n\nconst isScrolledToEnd = ( element: Element ) => {\n\tif ( isRTL() ) {\n\t\tconst scrollLeft = Math.abs( element.scrollLeft );\n\t\treturn scrollLeft <= 1;\n\t}\n\n\treturn element.scrollLeft + element.clientWidth >= element.scrollWidth - 1;\n};\n\n/**\n * A hook to check if a given scroll container has reached the horizontal scroll end.\n *\n * The current way receives \"refs\" as arguments, but it lacks a mechanism to detect when a ref has changed.\n * As a result, when the \"ref\" is updated and attached to a new div, the computation should trigger again.\n * However, this isn't possible in the current setup because the hook is unaware that the ref has changed.\n *\n * See https://github.com/Automattic/wp-calypso/pull/103005#discussion_r2077567912.\n *\n * @param {Object} params The parameters for the hook.\n * @param {MutableRefObject<HTMLDivElement | null>} params.scrollContainerRef The ref to the scroll container element.\n * @param {boolean} [params.enabled=false] Whether the hook is enabled.\n * @return {boolean} - Returns true if the scroll container is scrolled to the end or false otherwise.\n */\nexport function useIsHorizontalScrollEnd( {\n\tscrollContainerRef,\n\tenabled = false,\n}: {\n\tscrollContainerRef: React.MutableRefObject< HTMLDivElement | null >;\n\tenabled?: boolean;\n} ): boolean {\n\tconst [ isHorizontalScrollEnd, setIsHorizontalScrollEnd ] =\n\t\tuseState( false );\n\n\tconst handleIsHorizontalScrollEnd = useDebounce(\n\t\tuseCallback( () => {\n\t\t\tconst scrollContainer = scrollContainerRef.current;\n\t\t\tif ( scrollContainer ) {\n\t\t\t\tsetIsHorizontalScrollEnd( isScrolledToEnd( scrollContainer ) );\n\t\t\t}\n\t\t}, [ scrollContainerRef, setIsHorizontalScrollEnd ] ),\n\t\t200\n\t);\n\n\tuseEffect( () => {\n\t\tif (\n\t\t\ttypeof window === 'undefined' ||\n\t\t\t! enabled ||\n\t\t\t! scrollContainerRef.current\n\t\t) {\n\t\t\treturn () => {};\n\t\t}\n\n\t\thandleIsHorizontalScrollEnd();\n\t\tscrollContainerRef.current.addEventListener(\n\t\t\t'scroll',\n\t\t\thandleIsHorizontalScrollEnd\n\t\t);\n\t\twindow.addEventListener( 'resize', handleIsHorizontalScrollEnd );\n\n\t\treturn () => {\n\t\t\tscrollContainerRef.current?.removeEventListener(\n\t\t\t\t'scroll',\n\t\t\t\thandleIsHorizontalScrollEnd\n\t\t\t);\n\t\t\twindow.removeEventListener( 'resize', handleIsHorizontalScrollEnd );\n\t\t};\n\t}, [ scrollContainerRef, enabled ] );\n\n\treturn isHorizontalScrollEnd;\n}\n", "/**\n * Internal dependencies\n */\nimport type { NormalizedField } from '../../../types';\n\nexport default function getDataByGroup< Item >(\n\tdata: any[],\n\tgroupByField: NormalizedField< Item >\n): Map< string, any[] > {\n\treturn data.reduce( ( groups: Map< string, typeof data >, item ) => {\n\t\tconst groupName = groupByField.getValue( { item } );\n\t\tif ( ! groups.has( groupName ) ) {\n\t\t\tgroups.set( groupName, [] );\n\t\t}\n\t\tgroups.get( groupName )?.push( item );\n\t\treturn groups;\n\t}, new Map< string, typeof data >() );\n}\n", "/**\n * WordPress dependencies\n */\nimport {\n\t__experimentalItemGroup as ItemGroup,\n\t__experimentalItem as Item,\n\tBaseControl,\n\tIcon,\n} from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { useContext } from '@wordpress/element';\nimport { check } from '@wordpress/icons';\nimport { Stack } from '@wordpress/ui';\n\n/**\n * Internal dependencies\n */\nimport type { NormalizedField } from '../../types';\nimport DataViewsContext from '../dataviews-context';\nimport getHideableFields from '../../utils/get-hideable-fields';\n\nfunction FieldItem( {\n\tfield,\n\tisVisible,\n\tonToggleVisibility,\n}: {\n\tfield: NormalizedField< any >;\n\tisVisible: boolean;\n\tonToggleVisibility?: () => void;\n} ) {\n\treturn (\n\t\t<Item onClick={ field.enableHiding ? onToggleVisibility : undefined }>\n\t\t\t<Stack direction=\"row\" gap=\"xs\" justify=\"flex-start\" align=\"center\">\n\t\t\t\t<div style={ { height: 24, width: 24 } }>\n\t\t\t\t\t{ isVisible && <Icon icon={ check } /> }\n\t\t\t\t</div>\n\t\t\t\t<span className=\"dataviews-view-config__label\">\n\t\t\t\t\t{ field.label }\n\t\t\t\t</span>\n\t\t\t</Stack>\n\t\t</Item>\n\t);\n}\n\nfunction isDefined< T >( item: T | undefined ): item is T {\n\treturn !! item;\n}\n\nexport function PropertiesSection( {\n\tshowLabel = true,\n}: {\n\tshowLabel?: boolean;\n} ) {\n\tconst { view, fields, onChangeView } = useContext( DataViewsContext );\n\n\t// Get all regular fields (non-locked) in their original order from fields prop\n\tconst regularFields = getHideableFields( view, fields );\n\n\tif ( ! regularFields?.length ) {\n\t\treturn null;\n\t}\n\tconst titleField = fields.find( ( f ) => f.id === view.titleField );\n\tconst previewField = fields.find( ( f ) => f.id === view.mediaField );\n\tconst descriptionField = fields.find(\n\t\t( f ) => f.id === view.descriptionField\n\t);\n\n\tconst lockedFields = [\n\t\t{\n\t\t\tfield: titleField,\n\t\t\tisVisibleFlag: 'showTitle',\n\t\t},\n\t\t{\n\t\t\tfield: previewField,\n\t\t\tisVisibleFlag: 'showMedia',\n\t\t},\n\t\t{\n\t\t\tfield: descriptionField,\n\t\t\tisVisibleFlag: 'showDescription',\n\t\t},\n\t].filter( ( { field } ) => isDefined( field ) ) as Array< {\n\t\tfield: NormalizedField< any >;\n\t\tisVisibleFlag: string;\n\t} >;\n\tconst visibleFieldIds = view.fields ?? [];\n\tconst visibleRegularFieldsCount = regularFields.filter( ( f ) =>\n\t\tvisibleFieldIds.includes( f.id )\n\t).length;\n\n\tconst visibleLockedFields = lockedFields.filter(\n\t\t( { isVisibleFlag } ) =>\n\t\t\t// @ts-expect-error\n\t\t\tview[ isVisibleFlag ] ?? true\n\t);\n\n\t// If only one field (locked or regular) is visible, prevent it from being hidden\n\tconst totalVisibleFields =\n\t\tvisibleLockedFields.length + visibleRegularFieldsCount;\n\tconst isSingleVisibleLockedField =\n\t\ttotalVisibleFields === 1 && visibleLockedFields.length === 1;\n\n\treturn (\n\t\t<Stack direction=\"column\" className=\"dataviews-field-control\">\n\t\t\t{ showLabel && (\n\t\t\t\t<BaseControl.VisualLabel>\n\t\t\t\t\t{ __( 'Properties' ) }\n\t\t\t\t</BaseControl.VisualLabel>\n\t\t\t) }\n\t\t\t<Stack\n\t\t\t\tdirection=\"column\"\n\t\t\t\tclassName=\"dataviews-view-config__properties\"\n\t\t\t>\n\t\t\t\t<ItemGroup isBordered isSeparated size=\"medium\">\n\t\t\t\t\t{ lockedFields.map( ( { field, isVisibleFlag } ) => {\n\t\t\t\t\t\t// @ts-expect-error\n\t\t\t\t\t\tconst isVisible = view[ isVisibleFlag ] ?? true;\n\t\t\t\t\t\tconst fieldToRender =\n\t\t\t\t\t\t\tisSingleVisibleLockedField && isVisible\n\t\t\t\t\t\t\t\t? { ...field, enableHiding: false }\n\t\t\t\t\t\t\t\t: field;\n\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<FieldItem\n\t\t\t\t\t\t\t\tkey={ field.id }\n\t\t\t\t\t\t\t\tfield={ fieldToRender }\n\t\t\t\t\t\t\t\tisVisible={ isVisible }\n\t\t\t\t\t\t\t\tonToggleVisibility={ () => {\n\t\t\t\t\t\t\t\t\tonChangeView( {\n\t\t\t\t\t\t\t\t\t\t...view,\n\t\t\t\t\t\t\t\t\t\t[ isVisibleFlag ]: ! isVisible,\n\t\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t);\n\t\t\t\t\t} ) }\n\n\t\t\t\t\t{ regularFields.map( ( field ) => {\n\t\t\t\t\t\t// Check if this is the last visible field to prevent hiding\n\t\t\t\t\t\tconst isVisible = visibleFieldIds.includes( field.id );\n\t\t\t\t\t\tconst fieldToRender =\n\t\t\t\t\t\t\ttotalVisibleFields === 1 && isVisible\n\t\t\t\t\t\t\t\t? { ...field, enableHiding: false }\n\t\t\t\t\t\t\t\t: field;\n\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<FieldItem\n\t\t\t\t\t\t\t\tkey={ field.id }\n\t\t\t\t\t\t\t\tfield={ fieldToRender }\n\t\t\t\t\t\t\t\tisVisible={ isVisible }\n\t\t\t\t\t\t\t\tonToggleVisibility={ () => {\n\t\t\t\t\t\t\t\t\tonChangeView( {\n\t\t\t\t\t\t\t\t\t\t...view,\n\t\t\t\t\t\t\t\t\t\tfields: isVisible\n\t\t\t\t\t\t\t\t\t\t\t? visibleFieldIds.filter(\n\t\t\t\t\t\t\t\t\t\t\t\t\t( fieldId ) =>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tfieldId !== field.id\n\t\t\t\t\t\t\t\t\t\t\t )\n\t\t\t\t\t\t\t\t\t\t\t: [ ...visibleFieldIds, field.id ],\n\t\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t);\n\t\t\t\t\t} ) }\n\t\t\t\t</ItemGroup>\n\t\t\t</Stack>\n\t\t</Stack>\n\t);\n}\n", "/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport { Spinner } from '@wordpress/components';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { Stack } from '@wordpress/ui';\n\n/**\n * Internal dependencies\n */\nimport type { ViewGridProps } from '../../../types';\nimport getDataByGroup from '../utils/get-data-by-group';\nimport CompositeGrid from './composite-grid';\n\nfunction ViewGrid< Item >( {\n\tactions,\n\tdata,\n\tfields,\n\tgetItemId,\n\tisLoading,\n\tonChangeSelection,\n\tonClickItem,\n\tisItemClickable,\n\trenderItemLink,\n\tselection,\n\tview,\n\tclassName,\n\tempty,\n}: ViewGridProps< Item > ) {\n\tconst hasData = !! data?.length;\n\tconst groupField = view.groupBy?.field\n\t\t? fields.find( ( f ) => f.id === view.groupBy?.field )\n\t\t: null;\n\tconst dataByGroup = groupField ? getDataByGroup( data, groupField ) : null;\n\tconst isInfiniteScroll = view.infiniteScrollEnabled && ! dataByGroup;\n\tconst gridProps = {\n\t\tclassName,\n\t\tisLoading,\n\t\tview,\n\t\tfields,\n\t\tselection,\n\t\tonChangeSelection,\n\t\tonClickItem,\n\t\tisItemClickable,\n\t\trenderItemLink,\n\t\tgetItemId,\n\t\tactions,\n\t};\n\treturn (\n\t\t<>\n\t\t\t{\n\t\t\t\t// Render multiple groups.\n\t\t\t\thasData && groupField && dataByGroup && (\n\t\t\t\t\t<Stack direction=\"column\" gap=\"md\">\n\t\t\t\t\t\t{ Array.from( dataByGroup.entries() ).map(\n\t\t\t\t\t\t\t( [ groupName, groupItems ] ) => (\n\t\t\t\t\t\t\t\t<Stack\n\t\t\t\t\t\t\t\t\tdirection=\"column\"\n\t\t\t\t\t\t\t\t\tkey={ groupName }\n\t\t\t\t\t\t\t\t\tgap=\"xs\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<h3 className=\"dataviews-view-grid__group-header\">\n\t\t\t\t\t\t\t\t\t\t{ view.groupBy?.showLabel === false\n\t\t\t\t\t\t\t\t\t\t\t? groupName\n\t\t\t\t\t\t\t\t\t\t\t: sprintf(\n\t\t\t\t\t\t\t\t\t\t\t\t\t// translators: 1: The label of the field e.g. \"Date\". 2: The value of the field, e.g.: \"May 2022\".\n\t\t\t\t\t\t\t\t\t\t\t\t\t__( '%1$s: %2$s' ),\n\t\t\t\t\t\t\t\t\t\t\t\t\tgroupField.label,\n\t\t\t\t\t\t\t\t\t\t\t\t\tgroupName\n\t\t\t\t\t\t\t\t\t\t\t ) }\n\t\t\t\t\t\t\t\t\t</h3>\n\t\t\t\t\t\t\t\t\t<CompositeGrid\n\t\t\t\t\t\t\t\t\t\t{ ...gridProps }\n\t\t\t\t\t\t\t\t\t\tdata={ groupItems }\n\t\t\t\t\t\t\t\t\t\tisInfiniteScroll={ false }\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</Stack>\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t) }\n\t\t\t\t\t</Stack>\n\t\t\t\t)\n\t\t\t}\n\t\t\t{\n\t\t\t\t// Render a single grid with all data.\n\t\t\t\thasData && ! dataByGroup && (\n\t\t\t\t\t<CompositeGrid\n\t\t\t\t\t\t{ ...gridProps }\n\t\t\t\t\t\tdata={ data }\n\t\t\t\t\t\tisInfiniteScroll={ !! isInfiniteScroll }\n\t\t\t\t\t/>\n\t\t\t\t)\n\t\t\t}\n\t\t\t{\n\t\t\t\t// Render empty state.\n\t\t\t\t! hasData && (\n\t\t\t\t\t<div\n\t\t\t\t\t\tclassName={ clsx( {\n\t\t\t\t\t\t\t'dataviews-loading': isLoading,\n\t\t\t\t\t\t\t'dataviews-no-results': ! isLoading,\n\t\t\t\t\t\t} ) }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ isLoading ? (\n\t\t\t\t\t\t\t<p>\n\t\t\t\t\t\t\t\t<Spinner />\n\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\tempty\n\t\t\t\t\t\t) }\n\t\t\t\t\t</div>\n\t\t\t\t)\n\t\t\t}\n\t\t\t{ hasData && isLoading && (\n\t\t\t\t<p className=\"dataviews-loading-more\">\n\t\t\t\t\t<Spinner />\n\t\t\t\t</p>\n\t\t\t) }\n\t\t</>\n\t);\n}\n\nexport default ViewGrid;\n", "/**\n * External dependencies\n */\nimport clsx from 'clsx';\nimport type { ComponentProps, ReactElement, HTMLAttributes } from 'react';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tFlex,\n\tFlexItem,\n\tTooltip,\n\tComposite,\n\tprivateApis as componentsPrivateApis,\n} from '@wordpress/components';\nimport { Stack } from '@wordpress/ui';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { useInstanceId } from '@wordpress/compose';\nimport { isAppleOS } from '@wordpress/keycodes';\nimport { useContext, forwardRef } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { unlock } from '../../../lock-unlock';\nimport ItemActions from '../../dataviews-item-actions';\nimport DataViewsSelectionCheckbox from '../../dataviews-selection-checkbox';\nimport DataViewsContext from '../../dataviews-context';\nimport {\n\tuseHasAPossibleBulkAction,\n\tuseSomeItemHasAPossibleBulkAction,\n} from '../../dataviews-bulk-actions';\nimport type {\n\tAction,\n\tNormalizedField,\n\tViewGrid as ViewGridType,\n} from '../../../types';\nimport type { SetSelection } from '../../../types/private';\nimport { ItemClickWrapper } from '../utils/item-click-wrapper';\nconst { Badge } = unlock( componentsPrivateApis );\nimport { useGridColumns } from './preview-size-picker';\n\nfunction chunk< T >( array: T[], size: number ): T[][] {\n\tconst chunks: T[][] = [];\n\tfor ( let i = 0, j = array.length; i < j; i += size ) {\n\t\tchunks.push( array.slice( i, i + size ) );\n\t}\n\treturn chunks;\n}\n\ninterface GridItemProps< Item > extends HTMLAttributes< HTMLDivElement > {\n\tview: ViewGridType;\n\tselection: string[];\n\tonChangeSelection: SetSelection;\n\tgetItemId: ( item: Item ) => string;\n\tonClickItem?: ( item: Item ) => void;\n\trenderItemLink?: (\n\t\tprops: {\n\t\t\titem: Item;\n\t\t} & ComponentProps< 'a' >\n\t) => ReactElement;\n\tisItemClickable: ( item: Item ) => boolean;\n\titem: Item;\n\tactions: Action< Item >[];\n\ttitleField?: NormalizedField< Item >;\n\tmediaField?: NormalizedField< Item >;\n\tdescriptionField?: NormalizedField< Item >;\n\tregularFields: NormalizedField< Item >[];\n\tbadgeFields: NormalizedField< Item >[];\n\thasBulkActions: boolean;\n\tconfig: {\n\t\tsizes: string;\n\t};\n}\n\nconst GridItem = forwardRef( function GridItem< Item >(\n\t{\n\t\tview,\n\t\tselection,\n\t\tonChangeSelection,\n\t\tonClickItem,\n\t\tisItemClickable,\n\t\trenderItemLink,\n\t\tgetItemId,\n\t\titem,\n\t\tactions,\n\t\tmediaField,\n\t\ttitleField,\n\t\tdescriptionField,\n\t\tregularFields,\n\t\tbadgeFields,\n\t\thasBulkActions,\n\t\tconfig,\n\t\t...props\n\t}: GridItemProps< Item >,\n\tref: React.ForwardedRef< HTMLDivElement >\n) {\n\tconst { showTitle = true, showMedia = true, showDescription = true } = view;\n\tconst hasBulkAction = useHasAPossibleBulkAction( actions, item );\n\tconst id = getItemId( item );\n\tconst instanceId = useInstanceId( GridItem );\n\tconst isSelected = selection.includes( id );\n\tconst renderedMediaField = mediaField?.render ? (\n\t\t<mediaField.render\n\t\t\titem={ item }\n\t\t\tfield={ mediaField }\n\t\t\tconfig={ config }\n\t\t/>\n\t) : null;\n\tconst renderedTitleField =\n\t\tshowTitle && titleField?.render ? (\n\t\t\t<titleField.render item={ item } field={ titleField } />\n\t\t) : null;\n\tconst shouldRenderMedia = showMedia && renderedMediaField;\n\n\tlet mediaA11yProps;\n\tlet titleA11yProps;\n\tif ( isItemClickable( item ) && onClickItem ) {\n\t\tif ( renderedTitleField ) {\n\t\t\tmediaA11yProps = {\n\t\t\t\t'aria-labelledby': `dataviews-view-grid__title-field-${ instanceId }`,\n\t\t\t};\n\t\t\ttitleA11yProps = {\n\t\t\t\tid: `dataviews-view-grid__title-field-${ instanceId }`,\n\t\t\t};\n\t\t} else {\n\t\t\tmediaA11yProps = {\n\t\t\t\t'aria-label': __( 'Navigate to item' ),\n\t\t\t};\n\t\t}\n\t}\n\treturn (\n\t\t<Stack\n\t\t\tdirection=\"column\"\n\t\t\t{ ...props }\n\t\t\tref={ ref }\n\t\t\tclassName={ clsx(\n\t\t\t\tprops.className,\n\t\t\t\t'dataviews-view-grid__row__gridcell',\n\t\t\t\t'dataviews-view-grid__card',\n\t\t\t\t{\n\t\t\t\t\t'is-selected': hasBulkAction && isSelected,\n\t\t\t\t}\n\t\t\t) }\n\t\t\tonClickCapture={ ( event ) => {\n\t\t\t\tprops.onClickCapture?.( event );\n\t\t\t\tif ( isAppleOS() ? event.metaKey : event.ctrlKey ) {\n\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\tif ( ! hasBulkAction ) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tonChangeSelection(\n\t\t\t\t\t\tselection.includes( id )\n\t\t\t\t\t\t\t? selection.filter( ( itemId ) => id !== itemId )\n\t\t\t\t\t\t\t: [ ...selection, id ]\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t} }\n\t\t>\n\t\t\t{ shouldRenderMedia && (\n\t\t\t\t<ItemClickWrapper\n\t\t\t\t\titem={ item }\n\t\t\t\t\tisItemClickable={ isItemClickable }\n\t\t\t\t\tonClickItem={ onClickItem }\n\t\t\t\t\trenderItemLink={ renderItemLink }\n\t\t\t\t\tclassName=\"dataviews-view-grid__media\"\n\t\t\t\t\t{ ...mediaA11yProps }\n\t\t\t\t>\n\t\t\t\t\t{ renderedMediaField }\n\t\t\t\t</ItemClickWrapper>\n\t\t\t) }\n\t\t\t{ hasBulkActions && shouldRenderMedia && (\n\t\t\t\t<DataViewsSelectionCheckbox\n\t\t\t\t\titem={ item }\n\t\t\t\t\tselection={ selection }\n\t\t\t\t\tonChangeSelection={ onChangeSelection }\n\t\t\t\t\tgetItemId={ getItemId }\n\t\t\t\t\ttitleField={ titleField }\n\t\t\t\t\tdisabled={ ! hasBulkAction }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t{ ! showTitle && shouldRenderMedia && !! actions?.length && (\n\t\t\t\t<div className=\"dataviews-view-grid__media-actions\">\n\t\t\t\t\t<ItemActions item={ item } actions={ actions } isCompact />\n\t\t\t\t</div>\n\t\t\t) }\n\t\t\t{ showTitle && (\n\t\t\t\t<Stack\n\t\t\t\t\tdirection=\"row\"\n\t\t\t\t\tgap=\"xs\"\n\t\t\t\t\tclassName=\"dataviews-view-grid__title-actions\"\n\t\t\t\t>\n\t\t\t\t\t<ItemClickWrapper\n\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\tisItemClickable={ isItemClickable }\n\t\t\t\t\t\tonClickItem={ onClickItem }\n\t\t\t\t\t\trenderItemLink={ renderItemLink }\n\t\t\t\t\t\tclassName=\"dataviews-view-grid__title-field dataviews-title-field\"\n\t\t\t\t\t\t{ ...titleA11yProps }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ renderedTitleField }\n\t\t\t\t\t</ItemClickWrapper>\n\t\t\t\t\t{ !! actions?.length && (\n\t\t\t\t\t\t<ItemActions\n\t\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\t\tactions={ actions }\n\t\t\t\t\t\t\tisCompact\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t</Stack>\n\t\t\t) }\n\t\t\t<Stack direction=\"column\" gap=\"2xs\">\n\t\t\t\t{ showDescription && descriptionField?.render && (\n\t\t\t\t\t<descriptionField.render\n\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\tfield={ descriptionField }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t\t{ !! badgeFields?.length && (\n\t\t\t\t\t<Stack\n\t\t\t\t\t\tdirection=\"row\"\n\t\t\t\t\t\tclassName=\"dataviews-view-grid__badge-fields\"\n\t\t\t\t\t\tgap=\"xs\"\n\t\t\t\t\t\twrap=\"wrap\"\n\t\t\t\t\t\talign=\"top\"\n\t\t\t\t\t\tjustify=\"flex-start\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{ badgeFields.map( ( field ) => {\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<Badge\n\t\t\t\t\t\t\t\t\tkey={ field.id }\n\t\t\t\t\t\t\t\t\tclassName=\"dataviews-view-grid__field-value\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<field.render\n\t\t\t\t\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\t\t\t\t\tfield={ field }\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</Badge>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} ) }\n\t\t\t\t\t</Stack>\n\t\t\t\t) }\n\t\t\t\t{ !! regularFields?.length && (\n\t\t\t\t\t<Stack\n\t\t\t\t\t\tdirection=\"column\"\n\t\t\t\t\t\tclassName=\"dataviews-view-grid__fields\"\n\t\t\t\t\t\tgap=\"2xs\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{ regularFields.map( ( field ) => {\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<Flex\n\t\t\t\t\t\t\t\t\tclassName=\"dataviews-view-grid__field\"\n\t\t\t\t\t\t\t\t\tkey={ field.id }\n\t\t\t\t\t\t\t\t\tgap={ 1 }\n\t\t\t\t\t\t\t\t\tjustify=\"flex-start\"\n\t\t\t\t\t\t\t\t\texpanded\n\t\t\t\t\t\t\t\t\tstyle={ { height: 'auto' } }\n\t\t\t\t\t\t\t\t\tdirection=\"row\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t\t<Tooltip text={ field.label }>\n\t\t\t\t\t\t\t\t\t\t\t<FlexItem className=\"dataviews-view-grid__field-name\">\n\t\t\t\t\t\t\t\t\t\t\t\t{ field.header }\n\t\t\t\t\t\t\t\t\t\t\t</FlexItem>\n\t\t\t\t\t\t\t\t\t\t</Tooltip>\n\t\t\t\t\t\t\t\t\t\t<FlexItem\n\t\t\t\t\t\t\t\t\t\t\tclassName=\"dataviews-view-grid__field-value\"\n\t\t\t\t\t\t\t\t\t\t\tstyle={ { maxHeight: 'none' } }\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t<field.render\n\t\t\t\t\t\t\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\t\t\t\t\t\t\tfield={ field }\n\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t</FlexItem>\n\t\t\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t\t\t</Flex>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} ) }\n\t\t\t\t\t</Stack>\n\t\t\t\t) }\n\t\t\t</Stack>\n\t\t</Stack>\n\t);\n} ) as < Item >(\n\tprops: GridItemProps< Item > & {\n\t\tref?: React.ForwardedRef< HTMLDivElement >;\n\t}\n) => JSX.Element;\n\ninterface CompositeGridProps< Item > {\n\tdata: Item[];\n\tisInfiniteScroll: boolean;\n\tclassName?: string;\n\tisLoading?: boolean;\n\tview: ViewGridType;\n\tfields: NormalizedField< Item >[];\n\tselection: string[];\n\tonChangeSelection: SetSelection;\n\tonClickItem?: ( item: Item ) => void;\n\tisItemClickable: ( item: Item ) => boolean;\n\trenderItemLink?: (\n\t\tprops: {\n\t\t\titem: Item;\n\t\t} & ComponentProps< 'a' >\n\t) => ReactElement;\n\tgetItemId: ( item: Item ) => string;\n\tactions: Action< Item >[];\n}\n\nexport default function CompositeGrid< Item >( {\n\tdata,\n\tisInfiniteScroll,\n\tclassName,\n\tisLoading,\n\tview,\n\tfields,\n\tselection,\n\tonChangeSelection,\n\tonClickItem,\n\tisItemClickable,\n\trenderItemLink,\n\tgetItemId,\n\tactions,\n}: CompositeGridProps< Item > ) {\n\tconst { paginationInfo, resizeObserverRef } =\n\t\tuseContext( DataViewsContext );\n\tconst gridColumns = useGridColumns();\n\tconst hasBulkActions = useSomeItemHasAPossibleBulkAction( actions, data );\n\tconst titleField = fields.find(\n\t\t( field ) => field.id === view?.titleField\n\t);\n\tconst mediaField = fields.find(\n\t\t( field ) => field.id === view?.mediaField\n\t);\n\tconst descriptionField = fields.find(\n\t\t( field ) => field.id === view?.descriptionField\n\t);\n\tconst otherFields = view.fields ?? [];\n\tconst { regularFields, badgeFields } = otherFields.reduce(\n\t\t(\n\t\t\taccumulator: Record< string, NormalizedField< Item >[] >,\n\t\t\tfieldId\n\t\t) => {\n\t\t\tconst field = fields.find( ( f ) => f.id === fieldId );\n\t\t\tif ( ! field ) {\n\t\t\t\treturn accumulator;\n\t\t\t}\n\t\t\t// If the field is a badge field, add it to the badgeFields array\n\t\t\t// otherwise add it to the rest visibleFields array.\n\t\t\tconst key = view.layout?.badgeFields?.includes( fieldId )\n\t\t\t\t? 'badgeFields'\n\t\t\t\t: 'regularFields';\n\t\t\taccumulator[ key ].push( field );\n\t\t\treturn accumulator;\n\t\t},\n\t\t{ regularFields: [], badgeFields: [] }\n\t);\n\n\t/*\n\t * This is the maximum width that an image can achieve in the grid. The reasoning is:\n\t * The biggest min image width available is 430px (see /dataviews-layouts/grid/preview-size-picker.tsx).\n\t * Because the grid is responsive, once there is room for another column, the images shrink to accommodate it.\n\t * So each image will never grow past 2*430px plus a little more to account for the gaps.\n\t */\n\tconst size = '900px';\n\tconst totalRows = Math.ceil( data.length / gridColumns );\n\n\treturn (\n\t\t<Composite\n\t\t\trole={ isInfiniteScroll ? 'feed' : 'grid' }\n\t\t\tclassName={ clsx( 'dataviews-view-grid', className ) }\n\t\t\tfocusWrap\n\t\t\taria-busy={ isLoading }\n\t\t\taria-rowcount={ isInfiniteScroll ? undefined : totalRows }\n\t\t\tref={ resizeObserverRef }\n\t\t>\n\t\t\t{ chunk( data, gridColumns ).map( ( row, i ) => (\n\t\t\t\t<Composite.Row\n\t\t\t\t\tkey={ i }\n\t\t\t\t\trender={\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\trole=\"row\"\n\t\t\t\t\t\t\taria-rowindex={ i + 1 }\n\t\t\t\t\t\t\taria-label={ sprintf(\n\t\t\t\t\t\t\t\t/* translators: %d: The row number in the grid */\n\t\t\t\t\t\t\t\t__( 'Row %d' ),\n\t\t\t\t\t\t\t\ti + 1\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\tclassName=\"dataviews-view-grid__row\"\n\t\t\t\t\t\t\tstyle={ {\n\t\t\t\t\t\t\t\tgridTemplateColumns: `repeat( ${ gridColumns }, minmax(0, 1fr) )`,\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t/>\n\t\t\t\t\t}\n\t\t\t\t>\n\t\t\t\t\t{ row.map( ( item, indexInRow ) => {\n\t\t\t\t\t\tconst index = i * gridColumns + indexInRow;\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<Composite.Item\n\t\t\t\t\t\t\t\tkey={ getItemId( item ) }\n\t\t\t\t\t\t\t\trender={ ( props ) => (\n\t\t\t\t\t\t\t\t\t<GridItem\n\t\t\t\t\t\t\t\t\t\t{ ...props }\n\t\t\t\t\t\t\t\t\t\trole={\n\t\t\t\t\t\t\t\t\t\t\tisInfiniteScroll\n\t\t\t\t\t\t\t\t\t\t\t\t? 'article'\n\t\t\t\t\t\t\t\t\t\t\t\t: 'gridcell'\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\taria-setsize={\n\t\t\t\t\t\t\t\t\t\t\tisInfiniteScroll\n\t\t\t\t\t\t\t\t\t\t\t\t? paginationInfo.totalItems\n\t\t\t\t\t\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\taria-posinset={\n\t\t\t\t\t\t\t\t\t\t\tisInfiniteScroll\n\t\t\t\t\t\t\t\t\t\t\t\t? index + 1\n\t\t\t\t\t\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tview={ view }\n\t\t\t\t\t\t\t\t\t\tselection={ selection }\n\t\t\t\t\t\t\t\t\t\tonChangeSelection={ onChangeSelection }\n\t\t\t\t\t\t\t\t\t\tonClickItem={ onClickItem }\n\t\t\t\t\t\t\t\t\t\tisItemClickable={ isItemClickable }\n\t\t\t\t\t\t\t\t\t\trenderItemLink={ renderItemLink }\n\t\t\t\t\t\t\t\t\t\tgetItemId={ getItemId }\n\t\t\t\t\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\t\t\t\t\tactions={ actions }\n\t\t\t\t\t\t\t\t\t\tmediaField={ mediaField }\n\t\t\t\t\t\t\t\t\t\ttitleField={ titleField }\n\t\t\t\t\t\t\t\t\t\tdescriptionField={ descriptionField }\n\t\t\t\t\t\t\t\t\t\tregularFields={ regularFields }\n\t\t\t\t\t\t\t\t\t\tbadgeFields={ badgeFields }\n\t\t\t\t\t\t\t\t\t\thasBulkActions={ hasBulkActions }\n\t\t\t\t\t\t\t\t\t\tconfig={ {\n\t\t\t\t\t\t\t\t\t\t\tsizes: size,\n\t\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t);\n\t\t\t\t\t} ) }\n\t\t\t\t</Composite.Row>\n\t\t\t) ) }\n\t\t</Composite>\n\t);\n}\n", "/**\n * WordPress dependencies\n */\nimport { RangeControl } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { useContext, useMemo } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport DataViewsContext from '../../dataviews-context';\nimport type { ViewGrid } from '../../../types';\n\nconst imageSizes = [\n\t{\n\t\tvalue: 120,\n\t\tbreakpoint: 1,\n\t},\n\t{\n\t\tvalue: 170,\n\t\tbreakpoint: 1,\n\t},\n\t{\n\t\tvalue: 230,\n\t\tbreakpoint: 1,\n\t},\n\t{\n\t\tvalue: 290,\n\t\tbreakpoint: 1112, // at minimum image width, 4 images display at this container size\n\t},\n\t{\n\t\tvalue: 350,\n\t\tbreakpoint: 1636, // at minimum image width, 6 images display at this container size\n\t},\n\t{\n\t\tvalue: 430,\n\t\tbreakpoint: 588, // at minimum image width, 2 images display at this container size\n\t},\n];\n\n// Default preview size is the third smallest image size if no preview size is set.\nconst DEFAULT_PREVIEW_SIZE = imageSizes[ 2 ].value;\n\n/**\n * Calculate the number of grid columns based on container width and preview size.\n * This matches how CSS grid auto-fill works: repeat(auto-fill, minmax(previewSize, 1fr)).\n */\nexport function useGridColumns() {\n\tconst context = useContext( DataViewsContext );\n\tconst view = context.view as ViewGrid;\n\treturn useMemo( () => {\n\t\tconst containerWidth = context.containerWidth;\n\t\tconst gap = 32; // This is the value of the grid gap in CSS.\n\t\tconst previewSize = view.layout?.previewSize ?? DEFAULT_PREVIEW_SIZE;\n\t\tconst columns = Math.floor(\n\t\t\t( containerWidth + gap ) / ( previewSize + gap )\n\t\t);\n\t\treturn Math.max( 1, columns ); // Ensure at least 1 column.\n\t}, [ context.containerWidth, view.layout?.previewSize ] );\n}\n\nexport default function PreviewSizePicker() {\n\tconst context = useContext( DataViewsContext );\n\tconst view = context.view as ViewGrid;\n\n\tconst breakValues = imageSizes.filter( ( size ) => {\n\t\treturn context.containerWidth >= size.breakpoint;\n\t} );\n\n\tconst layoutPreviewSize = view.layout?.previewSize ?? DEFAULT_PREVIEW_SIZE;\n\t// If the container has resized and the set preview size is no longer available,\n\t// we reset it to the next smallest size, or the smallest available size.\n\tconst previewSizeToUse =\n\t\tbreakValues\n\t\t\t.map( ( size, index ) => ( { ...size, index } ) )\n\t\t\t.filter( ( size ) => size.value <= layoutPreviewSize )\n\t\t\t.sort( ( a, b ) => b.value - a.value )[ 0 ]?.index ?? 0;\n\n\tconst marks = breakValues.map( ( size, index ) => {\n\t\treturn {\n\t\t\tvalue: index,\n\t\t};\n\t} );\n\n\treturn (\n\t\t<RangeControl\n\t\t\t__next40pxDefaultSize\n\t\t\tshowTooltip={ false }\n\t\t\tlabel={ __( 'Preview size' ) }\n\t\t\tvalue={ previewSizeToUse }\n\t\t\tmin={ 0 }\n\t\t\tmax={ breakValues.length - 1 }\n\t\t\twithInputField={ false }\n\t\t\tonChange={ ( value = 0 ) => {\n\t\t\t\tcontext.onChangeView( {\n\t\t\t\t\t...view,\n\t\t\t\t\tlayout: {\n\t\t\t\t\t\t...view.layout,\n\t\t\t\t\t\tpreviewSize: breakValues[ value ].value,\n\t\t\t\t\t},\n\t\t\t\t} );\n\t\t\t} }\n\t\t\tstep={ 1 }\n\t\t\tmarks={ marks }\n\t\t/>\n\t);\n}\n", "/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport { useInstanceId, usePrevious } from '@wordpress/compose';\nimport {\n\tButton,\n\tprivateApis as componentsPrivateApis,\n\tSpinner,\n\tVisuallyHidden,\n\tComposite,\n} from '@wordpress/components';\nimport {\n\tuseCallback,\n\tuseEffect,\n\tuseMemo,\n\tuseRef,\n\tuseState,\n\tuseContext,\n} from '@wordpress/element';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { moreVertical } from '@wordpress/icons';\nimport { useRegistry } from '@wordpress/data';\nimport { Stack } from '@wordpress/ui';\n\n/**\n * Internal dependencies\n */\nimport { unlock } from '../../../lock-unlock';\nimport { ActionsMenuGroup, ActionModal } from '../../dataviews-item-actions';\nimport DataViewsContext from '../../dataviews-context';\nimport type {\n\tAction,\n\tNormalizedField,\n\tViewList as ViewListType,\n\tViewListProps,\n\tActionModal as ActionModalType,\n} from '../../../types';\nimport getDataByGroup from '../utils/get-data-by-group';\n\ninterface ListViewItemProps< Item > {\n\tview: ViewListType;\n\tactions: Action< Item >[];\n\tidPrefix: string;\n\tisSelected: boolean;\n\titem: Item;\n\ttitleField?: NormalizedField< Item >;\n\tmediaField?: NormalizedField< Item >;\n\tdescriptionField?: NormalizedField< Item >;\n\tonSelect: ( item: Item ) => void;\n\totherFields: NormalizedField< Item >[];\n\tonDropdownTriggerKeyDown: React.KeyboardEventHandler< HTMLButtonElement >;\n\tposinset?: number;\n}\n\nconst { Menu } = unlock( componentsPrivateApis );\n\nfunction generateItemWrapperCompositeId( idPrefix: string ) {\n\treturn `${ idPrefix }-item-wrapper`;\n}\nfunction generatePrimaryActionCompositeId(\n\tidPrefix: string,\n\tprimaryActionId: string\n) {\n\treturn `${ idPrefix }-primary-action-${ primaryActionId }`;\n}\nfunction generateDropdownTriggerCompositeId( idPrefix: string ) {\n\treturn `${ idPrefix }-dropdown`;\n}\n\nfunction PrimaryActionGridCell< Item >( {\n\tidPrefix,\n\tprimaryAction,\n\titem,\n}: {\n\tidPrefix: string;\n\tprimaryAction: Action< Item >;\n\titem: Item;\n} ) {\n\tconst registry = useRegistry();\n\tconst [ isModalOpen, setIsModalOpen ] = useState( false );\n\n\tconst compositeItemId = generatePrimaryActionCompositeId(\n\t\tidPrefix,\n\t\tprimaryAction.id\n\t);\n\n\tconst label =\n\t\ttypeof primaryAction.label === 'string'\n\t\t\t? primaryAction.label\n\t\t\t: primaryAction.label( [ item ] );\n\n\treturn 'RenderModal' in primaryAction ? (\n\t\t<div role=\"gridcell\" key={ primaryAction.id }>\n\t\t\t<Composite.Item\n\t\t\t\tid={ compositeItemId }\n\t\t\t\trender={\n\t\t\t\t\t<Button\n\t\t\t\t\t\tdisabled={ !! primaryAction.disabled }\n\t\t\t\t\t\taccessibleWhenDisabled\n\t\t\t\t\t\ttext={ label }\n\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\tonClick={ () => setIsModalOpen( true ) }\n\t\t\t\t\t/>\n\t\t\t\t}\n\t\t\t>\n\t\t\t\t{ isModalOpen && (\n\t\t\t\t\t<ActionModal< Item >\n\t\t\t\t\t\taction={ primaryAction }\n\t\t\t\t\t\titems={ [ item ] }\n\t\t\t\t\t\tcloseModal={ () => setIsModalOpen( false ) }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t</Composite.Item>\n\t\t</div>\n\t) : (\n\t\t<div role=\"gridcell\" key={ primaryAction.id }>\n\t\t\t<Composite.Item\n\t\t\t\tid={ compositeItemId }\n\t\t\t\trender={\n\t\t\t\t\t<Button\n\t\t\t\t\t\tdisabled={ !! primaryAction.disabled }\n\t\t\t\t\t\taccessibleWhenDisabled\n\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\tprimaryAction.callback( [ item ], { registry } );\n\t\t\t\t\t\t} }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ label }\n\t\t\t\t\t</Button>\n\t\t\t\t}\n\t\t\t/>\n\t\t</div>\n\t);\n}\n\nfunction ListItem< Item >( {\n\tview,\n\tactions,\n\tidPrefix,\n\tisSelected,\n\titem,\n\ttitleField,\n\tmediaField,\n\tdescriptionField,\n\tonSelect,\n\totherFields,\n\tonDropdownTriggerKeyDown,\n\tposinset,\n}: ListViewItemProps< Item > ) {\n\tconst {\n\t\tshowTitle = true,\n\t\tshowMedia = true,\n\t\tshowDescription = true,\n\t\tinfiniteScrollEnabled,\n\t} = view;\n\tconst itemRef = useRef< HTMLDivElement >( null );\n\tconst labelId = `${ idPrefix }-label`;\n\tconst descriptionId = `${ idPrefix }-description`;\n\n\tconst registry = useRegistry();\n\tconst [ isHovered, setIsHovered ] = useState( false );\n\tconst [ activeModalAction, setActiveModalAction ] = useState(\n\t\tnull as ActionModalType< Item > | null\n\t);\n\tconst handleHover: React.MouseEventHandler = ( { type } ) => {\n\t\tconst isHover = type === 'mouseenter';\n\t\tsetIsHovered( isHover );\n\t};\n\n\tconst { paginationInfo } = useContext( DataViewsContext );\n\tuseEffect( () => {\n\t\tif ( isSelected ) {\n\t\t\titemRef.current?.scrollIntoView( {\n\t\t\t\tbehavior: 'auto',\n\t\t\t\tblock: 'nearest',\n\t\t\t\tinline: 'nearest',\n\t\t\t} );\n\t\t}\n\t}, [ isSelected ] );\n\n\tconst { primaryAction, eligibleActions } = useMemo( () => {\n\t\t// If an action is eligible for all items, doesn't need\n\t\t// to provide the `isEligible` function.\n\t\tconst _eligibleActions = actions.filter(\n\t\t\t( action ) => ! action.isEligible || action.isEligible( item )\n\t\t);\n\t\tconst _primaryActions = _eligibleActions.filter(\n\t\t\t( action ) => action.isPrimary\n\t\t);\n\t\treturn {\n\t\t\tprimaryAction: _primaryActions[ 0 ],\n\t\t\teligibleActions: _eligibleActions,\n\t\t};\n\t}, [ actions, item ] );\n\n\tconst hasOnlyOnePrimaryAction = primaryAction && actions.length === 1;\n\n\tconst renderedMediaField =\n\t\tshowMedia && mediaField?.render ? (\n\t\t\t<div className=\"dataviews-view-list__media-wrapper\">\n\t\t\t\t<mediaField.render\n\t\t\t\t\titem={ item }\n\t\t\t\t\tfield={ mediaField }\n\t\t\t\t\tconfig={ { sizes: '52px' } }\n\t\t\t\t/>\n\t\t\t</div>\n\t\t) : null;\n\n\tconst renderedTitleField =\n\t\tshowTitle && titleField?.render ? (\n\t\t\t<titleField.render item={ item } field={ titleField } />\n\t\t) : null;\n\n\tconst usedActions = eligibleActions?.length > 0 && (\n\t\t<Stack\n\t\t\tdirection=\"row\"\n\t\t\tgap=\"sm\"\n\t\t\tclassName=\"dataviews-view-list__item-actions\"\n\t\t>\n\t\t\t{ primaryAction && (\n\t\t\t\t<PrimaryActionGridCell\n\t\t\t\t\tidPrefix={ idPrefix }\n\t\t\t\t\tprimaryAction={ primaryAction }\n\t\t\t\t\titem={ item }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t{ ! hasOnlyOnePrimaryAction && (\n\t\t\t\t<div role=\"gridcell\">\n\t\t\t\t\t<Menu placement=\"bottom-end\">\n\t\t\t\t\t\t<Menu.TriggerButton\n\t\t\t\t\t\t\trender={\n\t\t\t\t\t\t\t\t<Composite.Item\n\t\t\t\t\t\t\t\t\tid={ generateDropdownTriggerCompositeId(\n\t\t\t\t\t\t\t\t\t\tidPrefix\n\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\trender={\n\t\t\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t\t\t\t\t\ticon={ moreVertical }\n\t\t\t\t\t\t\t\t\t\t\tlabel={ __( 'Actions' ) }\n\t\t\t\t\t\t\t\t\t\t\taccessibleWhenDisabled\n\t\t\t\t\t\t\t\t\t\t\tdisabled={ ! actions.length }\n\t\t\t\t\t\t\t\t\t\t\tonKeyDown={\n\t\t\t\t\t\t\t\t\t\t\t\tonDropdownTriggerKeyDown\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<Menu.Popover>\n\t\t\t\t\t\t\t<ActionsMenuGroup\n\t\t\t\t\t\t\t\tactions={ eligibleActions }\n\t\t\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\t\t\tregistry={ registry }\n\t\t\t\t\t\t\t\tsetActiveModalAction={ setActiveModalAction }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</Menu.Popover>\n\t\t\t\t\t</Menu>\n\t\t\t\t\t{ !! activeModalAction && (\n\t\t\t\t\t\t<ActionModal\n\t\t\t\t\t\t\taction={ activeModalAction }\n\t\t\t\t\t\t\titems={ [ item ] }\n\t\t\t\t\t\t\tcloseModal={ () => setActiveModalAction( null ) }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t</div>\n\t\t\t) }\n\t\t</Stack>\n\t);\n\n\treturn (\n\t\t<Composite.Row\n\t\t\tref={ itemRef }\n\t\t\trender={\n\t\t\t\t/* aria-posinset breaks Composite.Row if passed to it directly. */\n\t\t\t\t<div\n\t\t\t\t\taria-posinset={ posinset }\n\t\t\t\t\taria-setsize={\n\t\t\t\t\t\tinfiniteScrollEnabled\n\t\t\t\t\t\t\t? paginationInfo.totalItems\n\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t}\n\t\t\t\t/>\n\t\t\t}\n\t\t\trole={ infiniteScrollEnabled ? 'article' : 'row' }\n\t\t\tclassName={ clsx( {\n\t\t\t\t'is-selected': isSelected,\n\t\t\t\t'is-hovered': isHovered,\n\t\t\t} ) }\n\t\t\tonMouseEnter={ handleHover }\n\t\t\tonMouseLeave={ handleHover }\n\t\t>\n\t\t\t<Stack\n\t\t\t\tdirection=\"row\"\n\t\t\t\tclassName=\"dataviews-view-list__item-wrapper\"\n\t\t\t>\n\t\t\t\t<div role=\"gridcell\">\n\t\t\t\t\t<Composite.Item\n\t\t\t\t\t\tid={ generateItemWrapperCompositeId( idPrefix ) }\n\t\t\t\t\t\taria-pressed={ isSelected }\n\t\t\t\t\t\taria-labelledby={ labelId }\n\t\t\t\t\t\taria-describedby={ descriptionId }\n\t\t\t\t\t\tclassName=\"dataviews-view-list__item\"\n\t\t\t\t\t\tonClick={ () => onSelect( item ) }\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t\t<Stack\n\t\t\t\t\tdirection=\"row\"\n\t\t\t\t\tgap=\"sm\"\n\t\t\t\t\tjustify=\"start\"\n\t\t\t\t\talign=\"flex-start\"\n\t\t\t\t\tstyle={ { flex: 1 } }\n\t\t\t\t>\n\t\t\t\t\t{ renderedMediaField }\n\t\t\t\t\t<Stack\n\t\t\t\t\t\tdirection=\"column\"\n\t\t\t\t\t\tgap=\"2xs\"\n\t\t\t\t\t\tclassName=\"dataviews-view-list__field-wrapper\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<Stack direction=\"row\" align=\"center\">\n\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\tclassName=\"dataviews-title-field\"\n\t\t\t\t\t\t\t\tid={ labelId }\n\t\t\t\t\t\t\t\tstyle={ { flex: 1 } }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{ renderedTitleField }\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t{ usedActions }\n\t\t\t\t\t\t</Stack>\n\t\t\t\t\t\t{ showDescription && descriptionField?.render && (\n\t\t\t\t\t\t\t<div className=\"dataviews-view-list__field\">\n\t\t\t\t\t\t\t\t<descriptionField.render\n\t\t\t\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\t\t\t\tfield={ descriptionField }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclassName=\"dataviews-view-list__fields\"\n\t\t\t\t\t\t\tid={ descriptionId }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ otherFields.map( ( field ) => (\n\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\tkey={ field.id }\n\t\t\t\t\t\t\t\t\tclassName=\"dataviews-view-list__field\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<VisuallyHidden\n\t\t\t\t\t\t\t\t\t\tas=\"span\"\n\t\t\t\t\t\t\t\t\t\tclassName=\"dataviews-view-list__field-label\"\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{ field.label }\n\t\t\t\t\t\t\t\t\t</VisuallyHidden>\n\t\t\t\t\t\t\t\t\t<span className=\"dataviews-view-list__field-value\">\n\t\t\t\t\t\t\t\t\t\t<field.render\n\t\t\t\t\t\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\t\t\t\t\t\tfield={ field }\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t) ) }\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</Stack>\n\t\t\t\t</Stack>\n\t\t\t</Stack>\n\t\t</Composite.Row>\n\t);\n}\n\nfunction isDefined< T >( item: T | undefined ): item is T {\n\treturn !! item;\n}\n\nexport default function ViewList< Item >( props: ViewListProps< Item > ) {\n\tconst {\n\t\tactions,\n\t\tdata,\n\t\tfields,\n\t\tgetItemId,\n\t\tisLoading,\n\t\tonChangeSelection,\n\t\tselection,\n\t\tview,\n\t\tclassName,\n\t\tempty,\n\t} = props;\n\tconst baseId = useInstanceId( ViewList, 'view-list' );\n\n\tconst selectedItem = data?.findLast( ( item ) =>\n\t\tselection.includes( getItemId( item ) )\n\t);\n\tconst titleField = fields.find( ( field ) => field.id === view.titleField );\n\tconst mediaField = fields.find( ( field ) => field.id === view.mediaField );\n\tconst descriptionField = fields.find(\n\t\t( field ) => field.id === view.descriptionField\n\t);\n\tconst otherFields = ( view?.fields ?? [] )\n\t\t.map( ( fieldId ) => fields.find( ( f ) => fieldId === f.id ) )\n\t\t.filter( isDefined );\n\n\tconst onSelect = ( item: Item ) =>\n\t\tonChangeSelection( [ getItemId( item ) ] );\n\n\tconst generateCompositeItemIdPrefix = useCallback(\n\t\t( item: Item ) => `${ baseId }-${ getItemId( item ) }`,\n\t\t[ baseId, getItemId ]\n\t);\n\n\tconst isActiveCompositeItem = useCallback(\n\t\t( item: Item, idToCheck: string ) => {\n\t\t\t// All composite items use the same prefix in their IDs.\n\t\t\treturn idToCheck.startsWith(\n\t\t\t\tgenerateCompositeItemIdPrefix( item )\n\t\t\t);\n\t\t},\n\t\t[ generateCompositeItemIdPrefix ]\n\t);\n\n\t// Controlled state for the active composite item.\n\tconst [ activeCompositeId, setActiveCompositeId ] = useState<\n\t\tstring | null | undefined\n\t>( undefined );\n\n\t// Update the active composite item when the selected item changes.\n\tuseEffect( () => {\n\t\tif ( selectedItem ) {\n\t\t\tsetActiveCompositeId(\n\t\t\t\tgenerateItemWrapperCompositeId(\n\t\t\t\t\tgenerateCompositeItemIdPrefix( selectedItem )\n\t\t\t\t)\n\t\t\t);\n\t\t}\n\t}, [ selectedItem, generateCompositeItemIdPrefix ] );\n\n\tconst activeItemIndex = data.findIndex( ( item ) =>\n\t\tisActiveCompositeItem( item, activeCompositeId ?? '' )\n\t);\n\tconst previousActiveItemIndex = usePrevious( activeItemIndex );\n\tconst isActiveIdInList = activeItemIndex !== -1;\n\n\tconst selectCompositeItem = useCallback(\n\t\t(\n\t\t\ttargetIndex: number,\n\t\t\t// Allows invokers to specify a custom function to generate the\n\t\t\t// target composite item ID\n\t\t\tgenerateCompositeId: ( idPrefix: string ) => string\n\t\t) => {\n\t\t\t// Clamping between 0 and data.length - 1 to avoid out of bounds.\n\t\t\tconst clampedIndex = Math.min(\n\t\t\t\tdata.length - 1,\n\t\t\t\tMath.max( 0, targetIndex )\n\t\t\t);\n\t\t\tif ( ! data[ clampedIndex ] ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst itemIdPrefix = generateCompositeItemIdPrefix(\n\t\t\t\tdata[ clampedIndex ]\n\t\t\t);\n\t\t\tconst targetCompositeItemId = generateCompositeId( itemIdPrefix );\n\n\t\t\tsetActiveCompositeId( targetCompositeItemId );\n\t\t\tdocument.getElementById( targetCompositeItemId )?.focus();\n\t\t},\n\t\t[ data, generateCompositeItemIdPrefix ]\n\t);\n\n\t// Select a new active composite item when the current active item\n\t// is removed from the list.\n\tuseEffect( () => {\n\t\tconst wasActiveIdInList =\n\t\t\tpreviousActiveItemIndex !== undefined &&\n\t\t\tpreviousActiveItemIndex !== -1;\n\t\tif ( ! isActiveIdInList && wasActiveIdInList ) {\n\t\t\t// By picking `previousActiveItemIndex` as the next item index, we are\n\t\t\t// basically picking the item that would have been after the deleted one.\n\t\t\t// If the previously active (and removed) item was the last of the list,\n\t\t\t// we will select the item before it \u2014 which is the new last item.\n\t\t\tselectCompositeItem(\n\t\t\t\tpreviousActiveItemIndex,\n\t\t\t\tgenerateItemWrapperCompositeId\n\t\t\t);\n\t\t}\n\t}, [ isActiveIdInList, selectCompositeItem, previousActiveItemIndex ] );\n\n\t// Prevent the default behavior (open dropdown menu) and instead select the\n\t// dropdown menu trigger on the previous/next row.\n\t// https://github.com/ariakit/ariakit/issues/3768\n\tconst onDropdownTriggerKeyDown = useCallback(\n\t\t( event: React.KeyboardEvent< HTMLButtonElement > ) => {\n\t\t\tif ( event.key === 'ArrowDown' ) {\n\t\t\t\t// Select the dropdown menu trigger item in the next row.\n\t\t\t\tevent.preventDefault();\n\t\t\t\tselectCompositeItem(\n\t\t\t\t\tactiveItemIndex + 1,\n\t\t\t\t\tgenerateDropdownTriggerCompositeId\n\t\t\t\t);\n\t\t\t}\n\t\t\tif ( event.key === 'ArrowUp' ) {\n\t\t\t\t// Select the dropdown menu trigger item in the previous row.\n\t\t\t\tevent.preventDefault();\n\t\t\t\tselectCompositeItem(\n\t\t\t\t\tactiveItemIndex - 1,\n\t\t\t\t\tgenerateDropdownTriggerCompositeId\n\t\t\t\t);\n\t\t\t}\n\t\t},\n\t\t[ selectCompositeItem, activeItemIndex ]\n\t);\n\n\tconst hasData = data?.length;\n\tif ( ! hasData ) {\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName={ clsx( {\n\t\t\t\t\t'dataviews-loading': isLoading,\n\t\t\t\t\t'dataviews-no-results': ! hasData && ! isLoading,\n\t\t\t\t} ) }\n\t\t\t>\n\t\t\t\t{ ! hasData &&\n\t\t\t\t\t( isLoading ? (\n\t\t\t\t\t\t<p>\n\t\t\t\t\t\t\t<Spinner />\n\t\t\t\t\t\t</p>\n\t\t\t\t\t) : (\n\t\t\t\t\t\tempty\n\t\t\t\t\t) ) }\n\t\t\t</div>\n\t\t);\n\t}\n\n\tconst groupField = view.groupBy?.field\n\t\t? fields.find( ( field ) => field.id === view.groupBy?.field )\n\t\t: null;\n\tconst dataByGroup = groupField ? getDataByGroup( data, groupField ) : null;\n\n\t// Render data grouped by field\n\tif ( hasData && groupField && dataByGroup ) {\n\t\treturn (\n\t\t\t<Composite\n\t\t\t\tid={ `${ baseId }` }\n\t\t\t\trender={ <div /> }\n\t\t\t\tclassName=\"dataviews-view-list__group\"\n\t\t\t\trole=\"grid\"\n\t\t\t\tactiveId={ activeCompositeId }\n\t\t\t\tsetActiveId={ setActiveCompositeId }\n\t\t\t>\n\t\t\t\t<Stack\n\t\t\t\t\tdirection=\"column\"\n\t\t\t\t\tgap=\"md\"\n\t\t\t\t\tclassName={ clsx( 'dataviews-view-list', className ) }\n\t\t\t\t>\n\t\t\t\t\t{ Array.from( dataByGroup.entries() ).map(\n\t\t\t\t\t\t( [ groupName, groupItems ] ) => (\n\t\t\t\t\t\t\t<Stack\n\t\t\t\t\t\t\t\tdirection=\"column\"\n\t\t\t\t\t\t\t\tkey={ groupName }\n\t\t\t\t\t\t\t\tgap=\"xs\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<h3 className=\"dataviews-view-list__group-header\">\n\t\t\t\t\t\t\t\t\t{ view.groupBy?.showLabel === false\n\t\t\t\t\t\t\t\t\t\t? groupName\n\t\t\t\t\t\t\t\t\t\t: sprintf(\n\t\t\t\t\t\t\t\t\t\t\t\t// translators: 1: The label of the field e.g. \"Date\". 2: The value of the field, e.g.: \"May 2022\".\n\t\t\t\t\t\t\t\t\t\t\t\t__( '%1$s: %2$s' ),\n\t\t\t\t\t\t\t\t\t\t\t\tgroupField.label,\n\t\t\t\t\t\t\t\t\t\t\t\tgroupName\n\t\t\t\t\t\t\t\t\t\t ) }\n\t\t\t\t\t\t\t\t</h3>\n\t\t\t\t\t\t\t\t{ groupItems.map( ( item ) => {\n\t\t\t\t\t\t\t\t\tconst id =\n\t\t\t\t\t\t\t\t\t\tgenerateCompositeItemIdPrefix( item );\n\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t<ListItem\n\t\t\t\t\t\t\t\t\t\t\tkey={ id }\n\t\t\t\t\t\t\t\t\t\t\tview={ view }\n\t\t\t\t\t\t\t\t\t\t\tidPrefix={ id }\n\t\t\t\t\t\t\t\t\t\t\tactions={ actions }\n\t\t\t\t\t\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\t\t\t\t\t\tisSelected={ item === selectedItem }\n\t\t\t\t\t\t\t\t\t\t\tonSelect={ onSelect }\n\t\t\t\t\t\t\t\t\t\t\tmediaField={ mediaField }\n\t\t\t\t\t\t\t\t\t\t\ttitleField={ titleField }\n\t\t\t\t\t\t\t\t\t\t\tdescriptionField={\n\t\t\t\t\t\t\t\t\t\t\t\tdescriptionField\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\totherFields={ otherFields }\n\t\t\t\t\t\t\t\t\t\t\tonDropdownTriggerKeyDown={\n\t\t\t\t\t\t\t\t\t\t\t\tonDropdownTriggerKeyDown\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t} ) }\n\t\t\t\t\t\t\t</Stack>\n\t\t\t\t\t\t)\n\t\t\t\t\t) }\n\t\t\t\t</Stack>\n\t\t\t</Composite>\n\t\t);\n\t}\n\n\t// Render ungrouped data\n\treturn (\n\t\t<>\n\t\t\t<Composite\n\t\t\t\tid={ baseId }\n\t\t\t\trender={ <div /> }\n\t\t\t\tclassName={ clsx( 'dataviews-view-list', className, {\n\t\t\t\t\t[ `has-${ view.layout?.density }-density` ]:\n\t\t\t\t\t\tview.layout?.density &&\n\t\t\t\t\t\t[ 'compact', 'comfortable' ].includes(\n\t\t\t\t\t\t\tview.layout.density\n\t\t\t\t\t\t),\n\t\t\t\t} ) }\n\t\t\t\trole={ view.infiniteScrollEnabled ? 'feed' : 'grid' }\n\t\t\t\tactiveId={ activeCompositeId }\n\t\t\t\tsetActiveId={ setActiveCompositeId }\n\t\t\t>\n\t\t\t\t{ data.map( ( item, index ) => {\n\t\t\t\t\tconst id = generateCompositeItemIdPrefix( item );\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<ListItem\n\t\t\t\t\t\t\tkey={ id }\n\t\t\t\t\t\t\tview={ view }\n\t\t\t\t\t\t\tidPrefix={ id }\n\t\t\t\t\t\t\tactions={ actions }\n\t\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\t\tisSelected={ item === selectedItem }\n\t\t\t\t\t\t\tonSelect={ onSelect }\n\t\t\t\t\t\t\tmediaField={ mediaField }\n\t\t\t\t\t\t\ttitleField={ titleField }\n\t\t\t\t\t\t\tdescriptionField={ descriptionField }\n\t\t\t\t\t\t\totherFields={ otherFields }\n\t\t\t\t\t\t\tonDropdownTriggerKeyDown={\n\t\t\t\t\t\t\t\tonDropdownTriggerKeyDown\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tposinset={\n\t\t\t\t\t\t\t\tview.infiniteScrollEnabled\n\t\t\t\t\t\t\t\t\t? index + 1\n\t\t\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t/>\n\t\t\t\t\t);\n\t\t\t\t} ) }\n\t\t\t</Composite>\n\t\t\t{ hasData && isLoading && (\n\t\t\t\t<p className=\"dataviews-loading-more\">\n\t\t\t\t\t<Spinner />\n\t\t\t\t</p>\n\t\t\t) }\n\t\t</>\n\t);\n}\n", "/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport { Spinner } from '@wordpress/components';\nimport { Stack } from '@wordpress/ui';\n\n/**\n * Internal dependencies\n */\nimport type { ViewActivityProps } from '../../../types';\nimport getDataByGroup from '../utils/get-data-by-group';\nimport ActivityGroup from './activity-group';\nimport ActivityItems from './activity-items';\n\nexport default function ViewActivity< Item >(\n\tprops: ViewActivityProps< Item >\n) {\n\tconst { empty, data, fields, isLoading, view, className } = props;\n\n\t// Handle empty/loading states\n\tconst hasData = data?.length;\n\tif ( ! hasData ) {\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName={ clsx( {\n\t\t\t\t\t'dataviews-loading': isLoading,\n\t\t\t\t\t'dataviews-no-results': ! hasData && ! isLoading,\n\t\t\t\t} ) }\n\t\t\t>\n\t\t\t\t{ ! hasData &&\n\t\t\t\t\t( isLoading ? (\n\t\t\t\t\t\t<p>\n\t\t\t\t\t\t\t<Spinner />\n\t\t\t\t\t\t</p>\n\t\t\t\t\t) : (\n\t\t\t\t\t\tempty\n\t\t\t\t\t) ) }\n\t\t\t</div>\n\t\t);\n\t}\n\n\tconst wrapperClassName = clsx( 'dataviews-view-activity', className );\n\n\t// Check if data should be grouped\n\tconst groupField = view.groupBy?.field\n\t\t? fields.find( ( field ) => field.id === view.groupBy?.field )\n\t\t: null;\n\tconst dataByGroup = groupField ? getDataByGroup( data, groupField ) : null;\n\n\t// Convert dataByGroup entries into array.\n\tconst groupedEntries = dataByGroup\n\t\t? Array.from( dataByGroup.entries() )\n\t\t: [];\n\n\t// Render grouped activity\n\tif ( hasData && groupField && dataByGroup ) {\n\t\treturn (\n\t\t\t<Stack direction=\"column\" gap=\"xs\" className={ wrapperClassName }>\n\t\t\t\t{ groupedEntries.map(\n\t\t\t\t\t( [ groupName, groupData ]: [ string, Item[] ] ) => (\n\t\t\t\t\t\t<ActivityGroup< Item >\n\t\t\t\t\t\t\tkey={ groupName }\n\t\t\t\t\t\t\tgroupName={ groupName }\n\t\t\t\t\t\t\tgroupData={ groupData }\n\t\t\t\t\t\t\tgroupField={ groupField }\n\t\t\t\t\t\t\tshowLabel={ view.groupBy?.showLabel !== false }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<ActivityItems< Item >\n\t\t\t\t\t\t\t\t{ ...props }\n\t\t\t\t\t\t\t\tdata={ groupData }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</ActivityGroup>\n\t\t\t\t\t)\n\t\t\t\t) }\n\t\t\t</Stack>\n\t\t);\n\t}\n\n\t// Render flat activity (no grouping)\n\treturn (\n\t\t<>\n\t\t\t<div\n\t\t\t\tclassName={ wrapperClassName }\n\t\t\t\trole={ view.infiniteScrollEnabled ? 'feed' : undefined }\n\t\t\t>\n\t\t\t\t<ActivityItems< Item > { ...props } />\n\t\t\t</div>\n\t\t\t{ hasData && isLoading && (\n\t\t\t\t<p className=\"dataviews-loading-more\">\n\t\t\t\t\t<Spinner />\n\t\t\t\t</p>\n\t\t\t) }\n\t\t</>\n\t);\n}\n", "/**\n * WordPress dependencies\n */\nimport { __, sprintf } from '@wordpress/i18n';\nimport { createInterpolateElement } from '@wordpress/element';\nimport { Stack } from '@wordpress/ui';\n\n/**\n * Internal dependencies\n */\nimport type { NormalizedField } from '../../../types';\n\ninterface ActivityGroupProps< Item > {\n\tgroupName: string;\n\tgroupData: Item[];\n\tgroupField: NormalizedField< Item >;\n\tshowLabel?: boolean;\n\tchildren: React.ReactNode;\n}\n\nexport default function ActivityGroup< Item >( {\n\tgroupName,\n\tgroupData,\n\tgroupField,\n\tshowLabel = true,\n\tchildren,\n}: ActivityGroupProps< Item > ) {\n\t// Render group header content - either with or without field label\n\tconst groupHeader = showLabel ? (\n\t\tcreateInterpolateElement(\n\t\t\t// translators: %s: The label of the field e.g. \"Status\".\n\t\t\tsprintf( __( '%s: <groupName />' ), groupField.label ).trim(),\n\t\t\t{\n\t\t\t\tgroupName: (\n\t\t\t\t\t<groupField.render\n\t\t\t\t\t\titem={ groupData[ 0 ] }\n\t\t\t\t\t\tfield={ groupField }\n\t\t\t\t\t/>\n\t\t\t\t),\n\t\t\t}\n\t\t)\n\t) : (\n\t\t<groupField.render item={ groupData[ 0 ] } field={ groupField } />\n\t);\n\n\treturn (\n\t\t<Stack\n\t\t\tkey={ groupName }\n\t\t\tdirection=\"column\"\n\t\t\tclassName=\"dataviews-view-activity__group\"\n\t\t>\n\t\t\t<h3 className=\"dataviews-view-activity__group-header\">\n\t\t\t\t{ groupHeader }\n\t\t\t</h3>\n\t\t\t{ children }\n\t\t</Stack>\n\t);\n}\n", "/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport { VisuallyHidden } from '@wordpress/components';\nimport { useRef, useContext, useMemo } from '@wordpress/element';\nimport { useRegistry } from '@wordpress/data';\nimport { Stack } from '@wordpress/ui';\n\n/**\n * Internal dependencies\n */\nimport ItemActions, { PrimaryActions } from '../../dataviews-item-actions';\nimport DataViewsContext from '../../dataviews-context';\nimport { ItemClickWrapper } from '../utils/item-click-wrapper';\nimport type { NormalizedField, ViewActivityProps } from '../../../types';\n\nfunction ActivityItem< Item >(\n\tprops: ViewActivityProps< Item > & {\n\t\titem: Item;\n\t\tmediaField?: NormalizedField< Item >;\n\t\ttitleField?: NormalizedField< Item >;\n\t\tdescriptionField?: NormalizedField< Item >;\n\t\totherFields: NormalizedField< Item >[];\n\t\tposinset?: number;\n\t}\n) {\n\tconst {\n\t\tview,\n\t\tactions,\n\t\titem,\n\t\ttitleField,\n\t\tmediaField,\n\t\tdescriptionField,\n\t\totherFields,\n\t\tposinset,\n\t\tonClickItem,\n\t\trenderItemLink,\n\t\tisItemClickable,\n\t} = props;\n\tconst {\n\t\tshowTitle = true,\n\t\tshowMedia = true,\n\t\tshowDescription = true,\n\t\tinfiniteScrollEnabled,\n\t} = view;\n\tconst itemRef = useRef< HTMLDivElement >( null );\n\tconst registry = useRegistry();\n\tconst { paginationInfo } = useContext( DataViewsContext );\n\n\tconst { primaryActions, eligibleActions } = useMemo( () => {\n\t\t// If an action is eligible for all items, doesn't need\n\t\t// to provide the `isEligible` function.\n\t\tconst _eligibleActions = actions.filter(\n\t\t\t( action ) => ! action.isEligible || action.isEligible( item )\n\t\t);\n\t\tconst _primaryActions = _eligibleActions.filter(\n\t\t\t( action ) => action.isPrimary\n\t\t);\n\t\treturn {\n\t\t\tprimaryActions: _primaryActions,\n\t\t\teligibleActions: _eligibleActions,\n\t\t};\n\t}, [ actions, item ] );\n\n\tconst density = view.layout?.density ?? 'balanced';\n\tconst mediaContent =\n\t\tshowMedia && density !== 'compact' && mediaField?.render ? (\n\t\t\t<mediaField.render\n\t\t\t\titem={ item }\n\t\t\t\tfield={ mediaField }\n\t\t\t\tconfig={ {\n\t\t\t\t\tsizes: density === 'comfortable' ? '32px' : '24px',\n\t\t\t\t} }\n\t\t\t/>\n\t\t) : null;\n\n\tconst renderedMediaField = (\n\t\t<div className=\"dataviews-view-activity__item-type-icon\">\n\t\t\t{ mediaContent || (\n\t\t\t\t<span\n\t\t\t\t\tclassName=\"dataviews-view-activity__item-bullet\"\n\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t/>\n\t\t\t) }\n\t\t</div>\n\t);\n\n\tconst renderedTitleField =\n\t\tshowTitle && titleField?.render ? (\n\t\t\t<titleField.render item={ item } field={ titleField } />\n\t\t) : null;\n\n\tconst verticalGap = useMemo( () => {\n\t\tswitch ( density ) {\n\t\t\tcase 'comfortable':\n\t\t\t\treturn 'sm';\n\t\t\tdefault:\n\t\t\t\treturn 'xs';\n\t\t}\n\t}, [ density ] );\n\n\treturn (\n\t\t<div\n\t\t\tref={ itemRef }\n\t\t\trole={ infiniteScrollEnabled ? 'article' : undefined }\n\t\t\taria-posinset={ posinset }\n\t\t\taria-setsize={\n\t\t\t\tinfiniteScrollEnabled ? paginationInfo.totalItems : undefined\n\t\t\t}\n\t\t\tclassName={ clsx(\n\t\t\t\t'dataviews-view-activity__item',\n\t\t\t\tdensity === 'compact' && 'is-compact',\n\t\t\t\tdensity === 'balanced' && 'is-balanced',\n\t\t\t\tdensity === 'comfortable' && 'is-comfortable'\n\t\t\t) }\n\t\t>\n\t\t\t<Stack direction=\"row\" gap=\"md\" justify=\"start\" align=\"flex-start\">\n\t\t\t\t<Stack\n\t\t\t\t\tdirection=\"column\"\n\t\t\t\t\tgap=\"2xs\"\n\t\t\t\t\talign=\"center\"\n\t\t\t\t\tclassName=\"dataviews-view-activity__item-type\"\n\t\t\t\t>\n\t\t\t\t\t{ renderedMediaField }\n\t\t\t\t</Stack>\n\t\t\t\t<Stack\n\t\t\t\t\tdirection=\"column\"\n\t\t\t\t\tgap={ verticalGap }\n\t\t\t\t\talign=\"flex-start\"\n\t\t\t\t\tclassName=\"dataviews-view-activity__item-content\"\n\t\t\t\t>\n\t\t\t\t\t{ renderedTitleField && (\n\t\t\t\t\t\t<ItemClickWrapper\n\t\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\t\tisItemClickable={ isItemClickable }\n\t\t\t\t\t\t\tonClickItem={ onClickItem }\n\t\t\t\t\t\t\trenderItemLink={ renderItemLink }\n\t\t\t\t\t\t\tclassName=\"dataviews-view-activity__item-title\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ renderedTitleField }\n\t\t\t\t\t\t</ItemClickWrapper>\n\t\t\t\t\t) }\n\t\t\t\t\t{ showDescription && descriptionField && (\n\t\t\t\t\t\t<div className=\"dataviews-view-activity__item-description\">\n\t\t\t\t\t\t\t<descriptionField.render\n\t\t\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\t\t\tfield={ descriptionField }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t) }\n\t\t\t\t\t<div className=\"dataviews-view-activity__item-fields\">\n\t\t\t\t\t\t{ otherFields.map( ( field ) => (\n\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\tkey={ field.id }\n\t\t\t\t\t\t\t\tclassName=\"dataviews-view-activity__item-field\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<VisuallyHidden\n\t\t\t\t\t\t\t\t\tas=\"span\"\n\t\t\t\t\t\t\t\t\tclassName=\"dataviews-view-activity__item-field-label\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{ field.label }\n\t\t\t\t\t\t\t\t</VisuallyHidden>\n\t\t\t\t\t\t\t\t<span className=\"dataviews-view-activity__item-field-value\">\n\t\t\t\t\t\t\t\t\t<field.render\n\t\t\t\t\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\t\t\t\t\tfield={ field }\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t) ) }\n\t\t\t\t\t</div>\n\t\t\t\t\t{ !! primaryActions?.length && (\n\t\t\t\t\t\t<PrimaryActions\n\t\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\t\tactions={ primaryActions }\n\t\t\t\t\t\t\tregistry={ registry }\n\t\t\t\t\t\t\tbuttonVariant=\"secondary\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t</Stack>\n\t\t\t\t{ primaryActions.length < eligibleActions.length && (\n\t\t\t\t\t<div className=\"dataviews-view-activity__item-actions\">\n\t\t\t\t\t\t<ItemActions\n\t\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\t\tactions={ eligibleActions }\n\t\t\t\t\t\t\tisCompact\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t) }\n\t\t\t</Stack>\n\t\t</div>\n\t);\n}\n\nexport default ActivityItem;\n", "/**\n * Internal dependencies\n */\nimport ActivityItem from './activity-item';\nimport type { ViewActivityProps } from '../../../types';\n\nfunction isDefined< T >( item: T | undefined ): item is T {\n\treturn !! item;\n}\n\nexport default function ActivityItems< Item >(\n\tprops: ViewActivityProps< Item >\n) {\n\tconst { data, fields, getItemId, view } = props;\n\n\t// Determine which fields to display based on view configuration\n\tconst titleField = fields.find( ( field ) => field.id === view.titleField );\n\tconst mediaField = fields.find( ( field ) => field.id === view.mediaField );\n\tconst descriptionField = fields.find(\n\t\t( field ) => field.id === view.descriptionField\n\t);\n\tconst otherFields = ( view?.fields ?? [] )\n\t\t.map( ( fieldId ) => fields.find( ( f ) => fieldId === f.id ) )\n\t\t.filter( isDefined );\n\n\treturn data.map( ( item, index ) => {\n\t\treturn (\n\t\t\t<ActivityItem\n\t\t\t\t{ ...props }\n\t\t\t\tkey={ getItemId( item ) }\n\t\t\t\titem={ item }\n\t\t\t\tmediaField={ mediaField }\n\t\t\t\ttitleField={ titleField }\n\t\t\t\tdescriptionField={ descriptionField }\n\t\t\t\totherFields={ otherFields }\n\t\t\t\tposinset={ view.infiniteScrollEnabled ? index + 1 : undefined }\n\t\t\t/>\n\t\t);\n\t} );\n}\n", "/**\n * External dependencies\n */\nimport clsx from 'clsx';\nimport type { ReactNode } from 'react';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tSpinner,\n\tFlex,\n\tFlexItem,\n\tprivateApis as componentsPrivateApis,\n\tComposite,\n} from '@wordpress/components';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { useInstanceId } from '@wordpress/compose';\nimport { useContext } from '@wordpress/element';\nimport { Stack } from '@wordpress/ui';\n\n/**\n * Internal dependencies\n */\nimport { unlock } from '../../../lock-unlock';\nimport DataViewsSelectionCheckbox from '../../dataviews-selection-checkbox';\nimport DataViewsContext from '../../dataviews-context';\nimport { useIsMultiselectPicker } from '../../dataviews-picker-footer';\nimport type {\n\tNormalizedField,\n\tViewPickerGrid as ViewPickerGridType,\n\tViewPickerGridProps,\n} from '../../../types';\nimport type { SetSelection } from '../../../types/private';\nimport { GridItems } from '../utils/grid-items';\nconst { Badge } = unlock( componentsPrivateApis );\nimport getDataByGroup from '../utils/get-data-by-group';\n\ninterface GridItemProps< Item > {\n\tview: ViewPickerGridType;\n\tmultiselect?: boolean;\n\tselection: string[];\n\tonChangeSelection: SetSelection;\n\tgetItemId: ( item: Item ) => string;\n\titem: Item;\n\ttitleField?: NormalizedField< Item >;\n\tmediaField?: NormalizedField< Item >;\n\tdescriptionField?: NormalizedField< Item >;\n\tregularFields: NormalizedField< Item >[];\n\tbadgeFields: NormalizedField< Item >[];\n\tconfig: {\n\t\tsizes: string;\n\t};\n\tposinset?: number;\n\tsetsize?: number;\n}\n\nfunction GridItem< Item >( {\n\tview,\n\tmultiselect,\n\tselection,\n\tonChangeSelection,\n\tgetItemId,\n\titem,\n\tmediaField,\n\ttitleField,\n\tdescriptionField,\n\tregularFields,\n\tbadgeFields,\n\tconfig,\n\tposinset,\n\tsetsize,\n}: GridItemProps< Item > ) {\n\tconst { showTitle = true, showMedia = true, showDescription = true } = view;\n\tconst id = getItemId( item );\n\tconst isSelected = selection.includes( id );\n\tconst renderedMediaField = mediaField?.render ? (\n\t\t<mediaField.render\n\t\t\titem={ item }\n\t\t\tfield={ mediaField }\n\t\t\tconfig={ config }\n\t\t/>\n\t) : null;\n\tconst renderedTitleField =\n\t\tshowTitle && titleField?.render ? (\n\t\t\t<titleField.render item={ item } field={ titleField } />\n\t\t) : null;\n\n\treturn (\n\t\t<Composite.Item\n\t\t\taria-label={\n\t\t\t\ttitleField\n\t\t\t\t\t? titleField.getValue( { item } ) || __( '(no title)' )\n\t\t\t\t\t: undefined\n\t\t\t}\n\t\t\tkey={ id }\n\t\t\trender={ ( { children, ...props } ) => (\n\t\t\t\t<Stack direction=\"column\" children={ children } { ...props } />\n\t\t\t) }\n\t\t\trole=\"option\"\n\t\t\taria-posinset={ posinset }\n\t\t\taria-setsize={ setsize }\n\t\t\tclassName={ clsx( 'dataviews-view-picker-grid__card', {\n\t\t\t\t'is-selected': isSelected,\n\t\t\t} ) }\n\t\t\taria-selected={ isSelected }\n\t\t\tonClick={ () => {\n\t\t\t\tif ( isSelected ) {\n\t\t\t\t\tonChangeSelection(\n\t\t\t\t\t\tselection.filter( ( itemId ) => id !== itemId )\n\t\t\t\t\t);\n\t\t\t\t} else {\n\t\t\t\t\tconst newSelection = multiselect\n\t\t\t\t\t\t? [ ...selection, id ]\n\t\t\t\t\t\t: [ id ];\n\t\t\t\t\tonChangeSelection( newSelection );\n\t\t\t\t}\n\t\t\t} }\n\t\t>\n\t\t\t{ showMedia && renderedMediaField && (\n\t\t\t\t<div className=\"dataviews-view-picker-grid__media\">\n\t\t\t\t\t{ renderedMediaField }\n\t\t\t\t</div>\n\t\t\t) }\n\t\t\t{ showMedia && renderedMediaField && (\n\t\t\t\t<DataViewsSelectionCheckbox\n\t\t\t\t\titem={ item }\n\t\t\t\t\tselection={ selection }\n\t\t\t\t\tonChangeSelection={ onChangeSelection }\n\t\t\t\t\tgetItemId={ getItemId }\n\t\t\t\t\ttitleField={ titleField }\n\t\t\t\t\tdisabled={ false }\n\t\t\t\t\taria-hidden\n\t\t\t\t\ttabIndex={ -1 }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t{ showTitle && (\n\t\t\t\t<Stack\n\t\t\t\t\tdirection=\"row\"\n\t\t\t\t\tjustify=\"space-between\"\n\t\t\t\t\tclassName=\"dataviews-view-picker-grid__title-actions\"\n\t\t\t\t>\n\t\t\t\t\t<div className=\"dataviews-view-picker-grid__title-field dataviews-title-field\">\n\t\t\t\t\t\t{ renderedTitleField }\n\t\t\t\t\t</div>\n\t\t\t\t</Stack>\n\t\t\t) }\n\t\t\t<Stack direction=\"column\" gap=\"2xs\">\n\t\t\t\t{ showDescription && descriptionField?.render && (\n\t\t\t\t\t<descriptionField.render\n\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\tfield={ descriptionField }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t\t{ !! badgeFields?.length && (\n\t\t\t\t\t<Stack\n\t\t\t\t\t\tdirection=\"row\"\n\t\t\t\t\t\tclassName=\"dataviews-view-picker-grid__badge-fields\"\n\t\t\t\t\t\tgap=\"xs\"\n\t\t\t\t\t\twrap=\"wrap\"\n\t\t\t\t\t\talign=\"top\"\n\t\t\t\t\t\tjustify=\"flex-start\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{ badgeFields.map( ( field ) => {\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<Badge\n\t\t\t\t\t\t\t\t\tkey={ field.id }\n\t\t\t\t\t\t\t\t\tclassName=\"dataviews-view-picker-grid__field-value\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<field.render\n\t\t\t\t\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\t\t\t\t\tfield={ field }\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</Badge>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} ) }\n\t\t\t\t\t</Stack>\n\t\t\t\t) }\n\t\t\t\t{ !! regularFields?.length && (\n\t\t\t\t\t<Stack\n\t\t\t\t\t\tdirection=\"column\"\n\t\t\t\t\t\tclassName=\"dataviews-view-picker-grid__fields\"\n\t\t\t\t\t\tgap=\"2xs\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{ regularFields.map( ( field ) => {\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<Flex\n\t\t\t\t\t\t\t\t\tclassName=\"dataviews-view-picker-grid__field\"\n\t\t\t\t\t\t\t\t\tkey={ field.id }\n\t\t\t\t\t\t\t\t\tgap={ 1 }\n\t\t\t\t\t\t\t\t\tjustify=\"flex-start\"\n\t\t\t\t\t\t\t\t\texpanded\n\t\t\t\t\t\t\t\t\tstyle={ { height: 'auto' } }\n\t\t\t\t\t\t\t\t\tdirection=\"row\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t\t<FlexItem className=\"dataviews-view-picker-grid__field-name\">\n\t\t\t\t\t\t\t\t\t\t\t{ field.header }\n\t\t\t\t\t\t\t\t\t\t</FlexItem>\n\t\t\t\t\t\t\t\t\t\t<FlexItem\n\t\t\t\t\t\t\t\t\t\t\tclassName=\"dataviews-view-picker-grid__field-value\"\n\t\t\t\t\t\t\t\t\t\t\tstyle={ { maxHeight: 'none' } }\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t<field.render\n\t\t\t\t\t\t\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\t\t\t\t\t\t\tfield={ field }\n\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t</FlexItem>\n\t\t\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t\t\t</Flex>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} ) }\n\t\t\t\t\t</Stack>\n\t\t\t\t) }\n\t\t\t</Stack>\n\t\t</Composite.Item>\n\t);\n}\n\nfunction GridGroup< Item >( {\n\tgroupName,\n\tgroupField,\n\tshowLabel = true,\n\tchildren,\n}: {\n\tgroupName: string;\n\tgroupField: NormalizedField< Item >;\n\tshowLabel?: boolean;\n\tchildren: ReactNode;\n} ) {\n\tconst headerId = useInstanceId(\n\t\tGridGroup,\n\t\t'dataviews-view-picker-grid-group__header'\n\t);\n\treturn (\n\t\t<Stack\n\t\t\tdirection=\"column\"\n\t\t\tkey={ groupName }\n\t\t\tgap=\"xs\"\n\t\t\trole=\"group\"\n\t\t\taria-labelledby={ headerId }\n\t\t>\n\t\t\t<h3\n\t\t\t\tclassName=\"dataviews-view-picker-grid-group__header\"\n\t\t\t\tid={ headerId }\n\t\t\t>\n\t\t\t\t{ showLabel\n\t\t\t\t\t? sprintf(\n\t\t\t\t\t\t\t// translators: 1: The label of the field e.g. \"Date\". 2: The value of the field, e.g.: \"May 2022\".\n\t\t\t\t\t\t\t__( '%1$s: %2$s' ),\n\t\t\t\t\t\t\tgroupField.label,\n\t\t\t\t\t\t\tgroupName\n\t\t\t\t\t )\n\t\t\t\t\t: groupName }\n\t\t\t</h3>\n\t\t\t{ children }\n\t\t</Stack>\n\t);\n}\n\nfunction ViewPickerGrid< Item >( {\n\tactions,\n\tdata,\n\tfields,\n\tgetItemId,\n\tisLoading,\n\tonChangeSelection,\n\tselection,\n\tview,\n\tclassName,\n\tempty,\n}: ViewPickerGridProps< Item > ) {\n\tconst { resizeObserverRef, paginationInfo, itemListLabel } =\n\t\tuseContext( DataViewsContext );\n\tconst titleField = fields.find(\n\t\t( field ) => field.id === view?.titleField\n\t);\n\tconst mediaField = fields.find(\n\t\t( field ) => field.id === view?.mediaField\n\t);\n\tconst descriptionField = fields.find(\n\t\t( field ) => field.id === view?.descriptionField\n\t);\n\tconst otherFields = view.fields ?? [];\n\tconst { regularFields, badgeFields } = otherFields.reduce(\n\t\t(\n\t\t\taccumulator: Record< string, NormalizedField< Item >[] >,\n\t\t\tfieldId\n\t\t) => {\n\t\t\tconst field = fields.find( ( f ) => f.id === fieldId );\n\t\t\tif ( ! field ) {\n\t\t\t\treturn accumulator;\n\t\t\t}\n\t\t\t// If the field is a badge field, add it to the badgeFields array\n\t\t\t// otherwise add it to the rest visibleFields array.\n\t\t\tconst key = view.layout?.badgeFields?.includes( fieldId )\n\t\t\t\t? 'badgeFields'\n\t\t\t\t: 'regularFields';\n\t\t\taccumulator[ key ].push( field );\n\t\t\treturn accumulator;\n\t\t},\n\t\t{ regularFields: [], badgeFields: [] }\n\t);\n\tconst hasData = !! data?.length;\n\tconst usedPreviewSize = view.layout?.previewSize;\n\tconst isMultiselect = useIsMultiselectPicker( actions );\n\n\t/*\n\t * This is the maximum width that an image can achieve in the grid. The reasoning is:\n\t * The biggest min image width available is 430px (see /dataviews-layouts/grid/preview-size-picker.tsx).\n\t * Because the grid is responsive, once there is room for another column, the images shrink to accommodate it.\n\t * So each image will never grow past 2*430px plus a little more to account for the gaps.\n\t */\n\tconst size = '900px';\n\n\tconst groupField = view.groupBy?.field\n\t\t? fields.find( ( f ) => f.id === view.groupBy?.field )\n\t\t: null;\n\tconst dataByGroup = groupField ? getDataByGroup( data, groupField ) : null;\n\n\tconst isInfiniteScroll = view.infiniteScrollEnabled && ! dataByGroup;\n\n\tconst currentPage = view?.page ?? 1;\n\tconst perPage = view?.perPage ?? 0;\n\tconst setSize = isInfiniteScroll ? paginationInfo?.totalItems : undefined;\n\n\treturn (\n\t\t<>\n\t\t\t{\n\t\t\t\t// Render multiple groups.\n\t\t\t\thasData && groupField && dataByGroup && (\n\t\t\t\t\t<Composite\n\t\t\t\t\t\tvirtualFocus\n\t\t\t\t\t\torientation=\"horizontal\"\n\t\t\t\t\t\trole=\"listbox\"\n\t\t\t\t\t\taria-multiselectable={ isMultiselect }\n\t\t\t\t\t\tclassName={ clsx(\n\t\t\t\t\t\t\t'dataviews-view-picker-grid',\n\t\t\t\t\t\t\tclassName\n\t\t\t\t\t\t) }\n\t\t\t\t\t\taria-label={ itemListLabel }\n\t\t\t\t\t\trender={ ( { children, ...props } ) => (\n\t\t\t\t\t\t\t<Stack\n\t\t\t\t\t\t\t\tdirection=\"column\"\n\t\t\t\t\t\t\t\tgap=\"md\"\n\t\t\t\t\t\t\t\tchildren={ children }\n\t\t\t\t\t\t\t\t{ ...props }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ Array.from( dataByGroup.entries() ).map(\n\t\t\t\t\t\t\t( [ groupName, groupItems ] ) => (\n\t\t\t\t\t\t\t\t<GridGroup\n\t\t\t\t\t\t\t\t\tkey={ groupName }\n\t\t\t\t\t\t\t\t\tgroupName={ groupName }\n\t\t\t\t\t\t\t\t\tgroupField={ groupField }\n\t\t\t\t\t\t\t\t\tshowLabel={\n\t\t\t\t\t\t\t\t\t\tview.groupBy?.showLabel !== false\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<GridItems\n\t\t\t\t\t\t\t\t\t\tpreviewSize={ usedPreviewSize }\n\t\t\t\t\t\t\t\t\t\tstyle={ {\n\t\t\t\t\t\t\t\t\t\t\tgridTemplateColumns:\n\t\t\t\t\t\t\t\t\t\t\t\tusedPreviewSize &&\n\t\t\t\t\t\t\t\t\t\t\t\t`repeat(auto-fill, minmax(${ usedPreviewSize }px, 1fr))`,\n\t\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t\taria-busy={ isLoading }\n\t\t\t\t\t\t\t\t\t\tref={\n\t\t\t\t\t\t\t\t\t\t\tresizeObserverRef as React.RefObject< HTMLDivElement >\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{ groupItems.map( ( item ) => {\n\t\t\t\t\t\t\t\t\t\t\tconst posInSet =\n\t\t\t\t\t\t\t\t\t\t\t\t( currentPage - 1 ) * perPage +\n\t\t\t\t\t\t\t\t\t\t\t\tdata.indexOf( item ) +\n\t\t\t\t\t\t\t\t\t\t\t\t1;\n\t\t\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t\t\t<GridItem\n\t\t\t\t\t\t\t\t\t\t\t\t\tkey={ getItemId( item ) }\n\t\t\t\t\t\t\t\t\t\t\t\t\tview={ view }\n\t\t\t\t\t\t\t\t\t\t\t\t\tmultiselect={\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tisMultiselect\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\tselection={ selection }\n\t\t\t\t\t\t\t\t\t\t\t\t\tonChangeSelection={\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tonChangeSelection\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\tgetItemId={ getItemId }\n\t\t\t\t\t\t\t\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\t\t\t\t\t\t\t\tmediaField={ mediaField }\n\t\t\t\t\t\t\t\t\t\t\t\t\ttitleField={ titleField }\n\t\t\t\t\t\t\t\t\t\t\t\t\tdescriptionField={\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tdescriptionField\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\tregularFields={\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tregularFields\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\tbadgeFields={ badgeFields }\n\t\t\t\t\t\t\t\t\t\t\t\t\tconfig={ {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tsizes: size,\n\t\t\t\t\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t\t\t\t\tposinset={ posInSet }\n\t\t\t\t\t\t\t\t\t\t\t\t\tsetsize={ setSize }\n\t\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t} ) }\n\t\t\t\t\t\t\t\t\t</GridItems>\n\t\t\t\t\t\t\t\t</GridGroup>\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t) }\n\t\t\t\t\t</Composite>\n\t\t\t\t)\n\t\t\t}\n\n\t\t\t{\n\t\t\t\t// Render a single grid with all data.\n\t\t\t\thasData && ! dataByGroup && (\n\t\t\t\t\t<Composite\n\t\t\t\t\t\trender={\n\t\t\t\t\t\t\t<GridItems\n\t\t\t\t\t\t\t\tclassName={ clsx(\n\t\t\t\t\t\t\t\t\t'dataviews-view-picker-grid',\n\t\t\t\t\t\t\t\t\tclassName\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\tpreviewSize={ usedPreviewSize }\n\t\t\t\t\t\t\t\taria-busy={ isLoading }\n\t\t\t\t\t\t\t\tref={\n\t\t\t\t\t\t\t\t\tresizeObserverRef as React.RefObject< HTMLDivElement >\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t}\n\t\t\t\t\t\tvirtualFocus\n\t\t\t\t\t\torientation=\"horizontal\"\n\t\t\t\t\t\trole=\"listbox\"\n\t\t\t\t\t\taria-multiselectable={ isMultiselect }\n\t\t\t\t\t\taria-label={ itemListLabel }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ data.map( ( item, index ) => {\n\t\t\t\t\t\t\tlet posinset = isInfiniteScroll\n\t\t\t\t\t\t\t\t? index + 1\n\t\t\t\t\t\t\t\t: undefined;\n\n\t\t\t\t\t\t\tif ( ! isInfiniteScroll ) {\n\t\t\t\t\t\t\t\t// When infinite scroll isn't active, take pagination into account\n\t\t\t\t\t\t\t\t// when calculating the posinset.\n\t\t\t\t\t\t\t\tposinset =\n\t\t\t\t\t\t\t\t\t( currentPage - 1 ) * perPage + index + 1;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<GridItem\n\t\t\t\t\t\t\t\t\tkey={ getItemId( item ) }\n\t\t\t\t\t\t\t\t\tview={ view }\n\t\t\t\t\t\t\t\t\tmultiselect={ isMultiselect }\n\t\t\t\t\t\t\t\t\tselection={ selection }\n\t\t\t\t\t\t\t\t\tonChangeSelection={ onChangeSelection }\n\t\t\t\t\t\t\t\t\tgetItemId={ getItemId }\n\t\t\t\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\t\t\t\tmediaField={ mediaField }\n\t\t\t\t\t\t\t\t\ttitleField={ titleField }\n\t\t\t\t\t\t\t\t\tdescriptionField={ descriptionField }\n\t\t\t\t\t\t\t\t\tregularFields={ regularFields }\n\t\t\t\t\t\t\t\t\tbadgeFields={ badgeFields }\n\t\t\t\t\t\t\t\t\tconfig={ {\n\t\t\t\t\t\t\t\t\t\tsizes: size,\n\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\tposinset={ posinset }\n\t\t\t\t\t\t\t\t\tsetsize={ setSize }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} ) }\n\t\t\t\t\t</Composite>\n\t\t\t\t)\n\t\t\t}\n\t\t\t{\n\t\t\t\t// Render empty state.\n\t\t\t\t! hasData && (\n\t\t\t\t\t<div\n\t\t\t\t\t\tclassName={ clsx( {\n\t\t\t\t\t\t\t'dataviews-loading': isLoading,\n\t\t\t\t\t\t\t'dataviews-no-results': ! isLoading,\n\t\t\t\t\t\t} ) }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ isLoading ? (\n\t\t\t\t\t\t\t<p>\n\t\t\t\t\t\t\t\t<Spinner />\n\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\tempty\n\t\t\t\t\t\t) }\n\t\t\t\t\t</div>\n\t\t\t\t)\n\t\t\t}\n\t\t\t{ hasData && isLoading && (\n\t\t\t\t<p className=\"dataviews-loading-more\">\n\t\t\t\t\t<Spinner />\n\t\t\t\t</p>\n\t\t\t) }\n\t\t</>\n\t);\n}\n\nexport default ViewPickerGrid;\n", "/**\n * WordPress dependencies\n */\nimport { Button, CheckboxControl } from '@wordpress/components';\nimport { useRegistry } from '@wordpress/data';\nimport { useContext, useMemo, useState } from '@wordpress/element';\nimport { __, sprintf, _n } from '@wordpress/i18n';\nimport { Stack } from '@wordpress/ui';\n\n/**\n * Internal dependencies\n */\nimport DataViewsPagination from '../dataviews-pagination';\nimport DataViewsContext from '../dataviews-context';\nimport type { SetSelection } from '../../types/private';\nimport type { Action } from '../../types';\n\nconst EMPTY_ARRAY: [] = [];\n\nexport function useIsMultiselectPicker< Item >(\n\tactions: Action< Item >[] | undefined\n) {\n\treturn useMemo( () => {\n\t\treturn actions?.every( ( action ) => action.supportsBulk );\n\t}, [ actions ] );\n}\n\nfunction BulkSelectionCheckbox< Item >( {\n\tselection,\n\tselectedItems,\n\tonChangeSelection,\n\tdata,\n\tgetItemId,\n}: {\n\tselection: string[];\n\tselectedItems: Item[];\n\tonChangeSelection: SetSelection;\n\tdata: Item[];\n\tgetItemId: ( item: Item ) => string;\n} ) {\n\tconst areAllSelected = selectedItems.length === data.length;\n\n\treturn (\n\t\t<CheckboxControl\n\t\t\tclassName=\"dataviews-view-table-selection-checkbox\"\n\t\t\tchecked={ areAllSelected }\n\t\t\tindeterminate={ ! areAllSelected && !! selectedItems.length }\n\t\t\tonChange={ () => {\n\t\t\t\tif ( areAllSelected ) {\n\t\t\t\t\t// Deselect all - remove the current page from the total selection.\n\t\t\t\t\tonChangeSelection(\n\t\t\t\t\t\tselection.filter(\n\t\t\t\t\t\t\t( id ) =>\n\t\t\t\t\t\t\t\t! data.some(\n\t\t\t\t\t\t\t\t\t( item ) => id === getItemId( item )\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t)\n\t\t\t\t\t);\n\t\t\t\t} else {\n\t\t\t\t\t// Select all - merge the current page into the total selection.\n\t\t\t\t\tconst selectionSet = new Set( [\n\t\t\t\t\t\t...selection,\n\t\t\t\t\t\t...data.map( ( item ) => getItemId( item ) ),\n\t\t\t\t\t] );\n\t\t\t\t\tonChangeSelection( Array.from( selectionSet ) );\n\t\t\t\t}\n\t\t\t} }\n\t\t\taria-label={\n\t\t\t\tareAllSelected ? __( 'Deselect all' ) : __( 'Select all' )\n\t\t\t}\n\t\t/>\n\t);\n}\n\nfunction ActionButtons< Item >( {\n\tactions,\n\titems,\n\tselection,\n}: {\n\tactions: Action< Item >[];\n\titems: Item[];\n\tselection: string[];\n} ) {\n\tconst registry = useRegistry();\n\tconst [ actionInProgress, setActionInProgress ] = useState< string | null >(\n\t\tnull\n\t);\n\n\treturn (\n\t\t<Stack direction=\"row\" gap=\"2xs\">\n\t\t\t{ actions.map( ( action ) => {\n\t\t\t\t// Only support actions with callbacks for DataViewsPicker.\n\t\t\t\t// This is because many use cases of the picker will be already within modals.\n\t\t\t\tif ( ! ( 'callback' in action ) ) {\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\n\t\t\t\tconst { id, label, icon, isPrimary, callback } = action;\n\n\t\t\t\tconst _label =\n\t\t\t\t\ttypeof label === 'string' ? label : label( items );\n\t\t\t\tconst variant = isPrimary ? 'primary' : 'tertiary';\n\t\t\t\tconst isInProgress = id === actionInProgress;\n\n\t\t\t\treturn (\n\t\t\t\t\t<Button\n\t\t\t\t\t\tkey={ id }\n\t\t\t\t\t\taccessibleWhenDisabled\n\t\t\t\t\t\ticon={ icon }\n\t\t\t\t\t\tdisabled={ isInProgress || ! selection?.length }\n\t\t\t\t\t\tisBusy={ isInProgress }\n\t\t\t\t\t\tonClick={ async () => {\n\t\t\t\t\t\t\tsetActionInProgress( id );\n\t\t\t\t\t\t\tawait callback( items, {\n\t\t\t\t\t\t\t\tregistry,\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\tsetActionInProgress( null );\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tsize=\"compact\"\n\t\t\t\t\t\tvariant={ variant }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ _label }\n\t\t\t\t\t</Button>\n\t\t\t\t);\n\t\t\t} ) }\n\t\t</Stack>\n\t);\n}\n\nexport function DataViewsPickerFooter() {\n\tconst {\n\t\tdata,\n\t\tselection,\n\t\tonChangeSelection,\n\t\tgetItemId,\n\t\tactions = EMPTY_ARRAY,\n\t} = useContext( DataViewsContext );\n\n\tconst selectionCount = selection.length;\n\tconst isMultiselect = useIsMultiselectPicker( actions );\n\n\tconst message =\n\t\tselectionCount > 0\n\t\t\t? sprintf(\n\t\t\t\t\t/* translators: %d: number of items. */\n\t\t\t\t\t_n(\n\t\t\t\t\t\t'%d Item selected',\n\t\t\t\t\t\t'%d Items selected',\n\t\t\t\t\t\tselectionCount\n\t\t\t\t\t),\n\t\t\t\t\tselectionCount\n\t\t\t )\n\t\t\t: sprintf(\n\t\t\t\t\t/* translators: %d: number of items. */\n\t\t\t\t\t_n( '%d Item', '%d Items', data.length ),\n\t\t\t\t\tdata.length\n\t\t\t );\n\n\tconst selectedItems = useMemo(\n\t\t() =>\n\t\t\tdata.filter( ( item ) => selection.includes( getItemId( item ) ) ),\n\t\t[ selection, getItemId, data ]\n\t);\n\n\treturn (\n\t\t<Stack\n\t\t\tdirection=\"row\"\n\t\t\tjustify=\"space-between\"\n\t\t\talign=\"center\"\n\t\t\tclassName=\"dataviews-footer\"\n\t\t\tgap=\"xs\"\n\t\t>\n\t\t\t<Stack\n\t\t\t\tdirection=\"row\"\n\t\t\t\tclassName=\"dataviews-picker-footer__bulk-selection\"\n\t\t\t\tgap=\"sm\"\n\t\t\t\talign=\"center\"\n\t\t\t>\n\t\t\t\t{ isMultiselect && (\n\t\t\t\t\t<BulkSelectionCheckbox\n\t\t\t\t\t\tselection={ selection }\n\t\t\t\t\t\tselectedItems={ selectedItems }\n\t\t\t\t\t\tonChangeSelection={ onChangeSelection }\n\t\t\t\t\t\tdata={ data }\n\t\t\t\t\t\tgetItemId={ getItemId }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t\t<span className=\"dataviews-bulk-actions-footer__item-count\">\n\t\t\t\t\t{ message }\n\t\t\t\t</span>\n\t\t\t</Stack>\n\t\t\t<DataViewsPagination />\n\t\t\t{ Boolean( actions?.length ) && (\n\t\t\t\t<div className=\"dataviews-picker-footer__actions\">\n\t\t\t\t\t<ActionButtons\n\t\t\t\t\t\tactions={ actions }\n\t\t\t\t\t\titems={ selectedItems }\n\t\t\t\t\t\tselection={ selection }\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t) }\n\t\t</Stack>\n\t);\n}\n", "/**\n * WordPress dependencies\n */\nimport { Button, SelectControl } from '@wordpress/components';\nimport { createInterpolateElement, memo, useContext } from '@wordpress/element';\nimport { sprintf, __, _x, isRTL } from '@wordpress/i18n';\nimport { next, previous } from '@wordpress/icons';\nimport { Stack } from '@wordpress/ui';\n\n/**\n * Internal dependencies\n */\nimport DataViewsContext from '../dataviews-context';\n\nexport function DataViewsPagination() {\n\tconst {\n\t\tview,\n\t\tonChangeView,\n\t\tpaginationInfo: { totalItems = 0, totalPages },\n\t} = useContext( DataViewsContext );\n\n\tif ( ! totalItems || ! totalPages || view.infiniteScrollEnabled ) {\n\t\treturn null;\n\t}\n\n\tconst currentPage = view.page ?? 1;\n\tconst pageSelectOptions = Array.from( Array( totalPages ) ).map(\n\t\t( _, i ) => {\n\t\t\tconst page = i + 1;\n\t\t\treturn {\n\t\t\t\tvalue: page.toString(),\n\t\t\t\tlabel: page.toString(),\n\t\t\t\t'aria-label':\n\t\t\t\t\tcurrentPage === page\n\t\t\t\t\t\t? sprintf(\n\t\t\t\t\t\t\t\t// translators: 1: current page number. 2: total number of pages.\n\t\t\t\t\t\t\t\t__( 'Page %1$d of %2$d' ),\n\t\t\t\t\t\t\t\tcurrentPage,\n\t\t\t\t\t\t\t\ttotalPages\n\t\t\t\t\t\t )\n\t\t\t\t\t\t: page.toString(),\n\t\t\t};\n\t\t}\n\t);\n\n\treturn (\n\t\t!! totalItems &&\n\t\ttotalPages !== 1 && (\n\t\t\t<Stack\n\t\t\t\tdirection=\"row\"\n\t\t\t\tclassName=\"dataviews-pagination\"\n\t\t\t\tjustify=\"end\"\n\t\t\t\talign=\"center\"\n\t\t\t\tgap=\"lg\"\n\t\t\t>\n\t\t\t\t<Stack\n\t\t\t\t\tdirection=\"row\"\n\t\t\t\t\tjustify=\"flex-start\"\n\t\t\t\t\talign=\"center\"\n\t\t\t\t\tgap=\"2xs\"\n\t\t\t\t\tclassName=\"dataviews-pagination__page-select\"\n\t\t\t\t>\n\t\t\t\t\t{ createInterpolateElement(\n\t\t\t\t\t\tsprintf(\n\t\t\t\t\t\t\t// translators: 1: Current page number, 2: Total number of pages.\n\t\t\t\t\t\t\t_x(\n\t\t\t\t\t\t\t\t'<div>Page</div>%1$s<div>of %2$d</div>',\n\t\t\t\t\t\t\t\t'paging'\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t'<CurrentPage />',\n\t\t\t\t\t\t\ttotalPages\n\t\t\t\t\t\t),\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tdiv: <div aria-hidden />,\n\t\t\t\t\t\t\tCurrentPage: (\n\t\t\t\t\t\t\t\t<SelectControl\n\t\t\t\t\t\t\t\t\taria-label={ __( 'Current page' ) }\n\t\t\t\t\t\t\t\t\tvalue={ currentPage.toString() }\n\t\t\t\t\t\t\t\t\toptions={ pageSelectOptions }\n\t\t\t\t\t\t\t\t\tonChange={ ( newValue ) => {\n\t\t\t\t\t\t\t\t\t\tonChangeView( {\n\t\t\t\t\t\t\t\t\t\t\t...view,\n\t\t\t\t\t\t\t\t\t\t\tpage: +newValue,\n\t\t\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t\t\t\tvariant=\"minimal\"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t}\n\t\t\t\t\t) }\n\t\t\t\t</Stack>\n\t\t\t\t<Stack direction=\"row\" gap=\"2xs\" align=\"center\">\n\t\t\t\t\t<Button\n\t\t\t\t\t\tonClick={ () =>\n\t\t\t\t\t\t\tonChangeView( {\n\t\t\t\t\t\t\t\t...view,\n\t\t\t\t\t\t\t\tpage: currentPage - 1,\n\t\t\t\t\t\t\t} )\n\t\t\t\t\t\t}\n\t\t\t\t\t\tdisabled={ currentPage === 1 }\n\t\t\t\t\t\taccessibleWhenDisabled\n\t\t\t\t\t\tlabel={ __( 'Previous page' ) }\n\t\t\t\t\t\ticon={ isRTL() ? next : previous }\n\t\t\t\t\t\tshowTooltip\n\t\t\t\t\t\tsize=\"compact\"\n\t\t\t\t\t\ttooltipPosition=\"top\"\n\t\t\t\t\t/>\n\t\t\t\t\t<Button\n\t\t\t\t\t\tonClick={ () =>\n\t\t\t\t\t\t\tonChangeView( { ...view, page: currentPage + 1 } )\n\t\t\t\t\t\t}\n\t\t\t\t\t\tdisabled={ currentPage >= totalPages }\n\t\t\t\t\t\taccessibleWhenDisabled\n\t\t\t\t\t\tlabel={ __( 'Next page' ) }\n\t\t\t\t\t\ticon={ isRTL() ? previous : next }\n\t\t\t\t\t\tshowTooltip\n\t\t\t\t\t\tsize=\"compact\"\n\t\t\t\t\t\ttooltipPosition=\"top\"\n\t\t\t\t\t/>\n\t\t\t\t</Stack>\n\t\t\t</Stack>\n\t\t)\n\t);\n}\n\nexport default memo( DataViewsPagination );\n", "/**\n * External dependencies\n */\nimport type { ComponentPropsWithoutRef } from 'react';\n\n/**\n * WordPress dependencies\n */\nimport { forwardRef } from '@wordpress/element';\n\n/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\nexport const GridItems = forwardRef<\n\tHTMLDivElement,\n\t{\n\t\tclassName?: string;\n\t\tpreviewSize: number | undefined;\n\t} & ComponentPropsWithoutRef< 'div' >\n>( ( { className, previewSize, ...props }, ref ) => {\n\treturn (\n\t\t<div\n\t\t\tref={ ref }\n\t\t\tclassName={ clsx( 'dataviews-view-grid-items', className ) }\n\t\t\tstyle={ {\n\t\t\t\tgridTemplateColumns:\n\t\t\t\t\tpreviewSize &&\n\t\t\t\t\t`repeat(auto-fill, minmax(${ previewSize }px, 1fr))`,\n\t\t\t} }\n\t\t\t{ ...props }\n\t\t/>\n\t);\n} );\n", "/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport { __, sprintf } from '@wordpress/i18n';\nimport { Spinner, Composite } from '@wordpress/components';\nimport {\n\tuseContext,\n\tuseEffect,\n\tuseId,\n\tuseRef,\n\tuseState,\n} from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport DataViewsContext from '../../dataviews-context';\nimport DataViewsSelectionCheckbox from '../../dataviews-selection-checkbox';\nimport { useIsMultiselectPicker } from '../../dataviews-picker-footer';\nimport { BulkSelectionCheckbox } from '../../dataviews-bulk-actions';\nimport { sortValues } from '../../../constants';\nimport type {\n\tNormalizedField,\n\tViewPickerTable as ViewPickerTableType,\n\tViewPickerTableProps,\n} from '../../../types';\nimport type { SetSelection } from '../../../types/private';\nimport ColumnHeaderMenu from '../table/column-header-menu';\nimport ColumnPrimary from '../table/column-primary';\nimport getDataByGroup from '../utils/get-data-by-group';\n\ninterface TableColumnFieldProps< Item > {\n\tfields: NormalizedField< Item >[];\n\tcolumn: string;\n\titem: Item;\n\talign?: 'start' | 'center' | 'end';\n}\n\ninterface TableRowProps< Item > {\n\titem: Item;\n\tfields: NormalizedField< Item >[];\n\tid: string;\n\tview: ViewPickerTableType;\n\ttitleField?: NormalizedField< Item >;\n\tmediaField?: NormalizedField< Item >;\n\tdescriptionField?: NormalizedField< Item >;\n\tselection: string[];\n\tgetItemId: ( item: Item ) => string;\n\tonChangeSelection: SetSelection;\n\tmultiselect: boolean;\n\tposinset?: number;\n}\n\nfunction TableColumnField< Item >( {\n\titem,\n\tfields,\n\tcolumn,\n\talign,\n}: TableColumnFieldProps< Item > ) {\n\tconst field = fields.find( ( f ) => f.id === column );\n\n\tif ( ! field ) {\n\t\treturn null;\n\t}\n\n\tconst className = clsx( 'dataviews-view-table__cell-content-wrapper', {\n\t\t'dataviews-view-table__cell-align-end': align === 'end',\n\t\t'dataviews-view-table__cell-align-center': align === 'center',\n\t} );\n\n\treturn (\n\t\t<div className={ className }>\n\t\t\t<field.render item={ item } field={ field } />\n\t\t</div>\n\t);\n}\n\nfunction TableRow< Item >( {\n\titem,\n\tfields,\n\tid,\n\tview,\n\ttitleField,\n\tmediaField,\n\tdescriptionField,\n\tselection,\n\tgetItemId,\n\tonChangeSelection,\n\tmultiselect,\n\tposinset,\n}: TableRowProps< Item > ) {\n\tconst { paginationInfo } = useContext( DataViewsContext );\n\tconst isSelected = selection.includes( id );\n\tconst [ isHovered, setIsHovered ] = useState( false );\n\tconst {\n\t\tshowTitle = true,\n\t\tshowMedia = true,\n\t\tshowDescription = true,\n\t\tinfiniteScrollEnabled,\n\t} = view;\n\tconst handleMouseEnter = () => {\n\t\tsetIsHovered( true );\n\t};\n\tconst handleMouseLeave = () => {\n\t\tsetIsHovered( false );\n\t};\n\n\tconst columns = view.fields ?? [];\n\tconst hasPrimaryColumn =\n\t\t( titleField && showTitle ) ||\n\t\t( mediaField && showMedia ) ||\n\t\t( descriptionField && showDescription );\n\n\treturn (\n\t\t<Composite.Item\n\t\t\tkey={ id }\n\t\t\trender={ ( { children, ...props } ) => (\n\t\t\t\t<tr\n\t\t\t\t\tclassName={ clsx( 'dataviews-view-table__row', {\n\t\t\t\t\t\t'is-selected': isSelected,\n\t\t\t\t\t\t'is-hovered': isHovered,\n\t\t\t\t\t} ) }\n\t\t\t\t\tonMouseEnter={ handleMouseEnter }\n\t\t\t\t\tonMouseLeave={ handleMouseLeave }\n\t\t\t\t\tchildren={ children }\n\t\t\t\t\t{ ...props }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\taria-selected={ isSelected }\n\t\t\taria-setsize={ paginationInfo.totalItems || undefined }\n\t\t\taria-posinset={ posinset }\n\t\t\trole={ infiniteScrollEnabled ? 'article' : 'option' }\n\t\t\tonClick={ () => {\n\t\t\t\tif ( isSelected ) {\n\t\t\t\t\tonChangeSelection(\n\t\t\t\t\t\tselection.filter( ( itemId ) => id !== itemId )\n\t\t\t\t\t);\n\t\t\t\t} else {\n\t\t\t\t\tconst newSelection = multiselect\n\t\t\t\t\t\t? [ ...selection, id ]\n\t\t\t\t\t\t: [ id ];\n\t\t\t\t\tonChangeSelection( newSelection );\n\t\t\t\t}\n\t\t\t} }\n\t\t>\n\t\t\t<td\n\t\t\t\tclassName=\"dataviews-view-table__checkbox-column\"\n\t\t\t\trole=\"presentation\"\n\t\t\t>\n\t\t\t\t<div className=\"dataviews-view-table__cell-content-wrapper\">\n\t\t\t\t\t<DataViewsSelectionCheckbox\n\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\tselection={ selection }\n\t\t\t\t\t\tonChangeSelection={ onChangeSelection }\n\t\t\t\t\t\tgetItemId={ getItemId }\n\t\t\t\t\t\ttitleField={ titleField }\n\t\t\t\t\t\tdisabled={ false }\n\t\t\t\t\t\taria-hidden\n\t\t\t\t\t\ttabIndex={ -1 }\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t</td>\n\n\t\t\t{ hasPrimaryColumn && (\n\t\t\t\t<td role=\"presentation\">\n\t\t\t\t\t<ColumnPrimary\n\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\ttitleField={ showTitle ? titleField : undefined }\n\t\t\t\t\t\tmediaField={ showMedia ? mediaField : undefined }\n\t\t\t\t\t\tdescriptionField={\n\t\t\t\t\t\t\tshowDescription ? descriptionField : undefined\n\t\t\t\t\t\t}\n\t\t\t\t\t\tisItemClickable={ () => false }\n\t\t\t\t\t/>\n\t\t\t\t</td>\n\t\t\t) }\n\t\t\t{ columns.map( ( column: string ) => {\n\t\t\t\t// Explicit picks the supported styles.\n\t\t\t\tconst { width, maxWidth, minWidth, align } =\n\t\t\t\t\tview.layout?.styles?.[ column ] ?? {};\n\n\t\t\t\treturn (\n\t\t\t\t\t<td\n\t\t\t\t\t\tkey={ column }\n\t\t\t\t\t\tstyle={ {\n\t\t\t\t\t\t\twidth,\n\t\t\t\t\t\t\tmaxWidth,\n\t\t\t\t\t\t\tminWidth,\n\t\t\t\t\t\t} }\n\t\t\t\t\t\trole=\"presentation\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<TableColumnField\n\t\t\t\t\t\t\tfields={ fields }\n\t\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\t\tcolumn={ column }\n\t\t\t\t\t\t\talign={ align }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</td>\n\t\t\t\t);\n\t\t\t} ) }\n\t\t</Composite.Item>\n\t);\n}\n\nfunction ViewPickerTable< Item >( {\n\tactions,\n\tdata,\n\tfields,\n\tgetItemId,\n\tisLoading = false,\n\tonChangeView,\n\tonChangeSelection,\n\tselection,\n\tsetOpenedFilter,\n\tview,\n\tclassName,\n\tempty,\n}: ViewPickerTableProps< Item > ) {\n\tconst headerMenuRefs = useRef<\n\t\tMap< string, { node: HTMLButtonElement; fallback: string } >\n\t>( new Map() );\n\tconst headerMenuToFocusRef = useRef< HTMLButtonElement >();\n\tconst [ nextHeaderMenuToFocus, setNextHeaderMenuToFocus ] =\n\t\tuseState< HTMLButtonElement >();\n\tconst isMultiselect = useIsMultiselectPicker( actions ) ?? false;\n\n\tuseEffect( () => {\n\t\tif ( headerMenuToFocusRef.current ) {\n\t\t\theaderMenuToFocusRef.current.focus();\n\t\t\theaderMenuToFocusRef.current = undefined;\n\t\t}\n\t} );\n\n\tconst tableNoticeId = useId();\n\n\tif ( nextHeaderMenuToFocus ) {\n\t\t// If we need to force focus, we short-circuit rendering here\n\t\t// to prevent any additional work while we handle that.\n\t\t// Clearing out the focus directive is necessary to make sure\n\t\t// future renders don't cause unexpected focus jumps.\n\t\theaderMenuToFocusRef.current = nextHeaderMenuToFocus;\n\t\tsetNextHeaderMenuToFocus( undefined );\n\t\treturn;\n\t}\n\n\tconst onHide = ( field: NormalizedField< Item > ) => {\n\t\tconst hidden = headerMenuRefs.current.get( field.id );\n\t\tconst fallback = hidden\n\t\t\t? headerMenuRefs.current.get( hidden.fallback )\n\t\t\t: undefined;\n\t\tsetNextHeaderMenuToFocus( fallback?.node );\n\t};\n\n\tconst hasData = !! data?.length;\n\n\tconst titleField = fields.find( ( field ) => field.id === view.titleField );\n\tconst mediaField = fields.find( ( field ) => field.id === view.mediaField );\n\tconst descriptionField = fields.find(\n\t\t( field ) => field.id === view.descriptionField\n\t);\n\n\tconst groupField = view.groupBy?.field\n\t\t? fields.find( ( f ) => f.id === view.groupBy?.field )\n\t\t: null;\n\tconst dataByGroup = groupField ? getDataByGroup( data, groupField ) : null;\n\tconst { showTitle = true, showMedia = true, showDescription = true } = view;\n\tconst hasPrimaryColumn =\n\t\t( titleField && showTitle ) ||\n\t\t( mediaField && showMedia ) ||\n\t\t( descriptionField && showDescription );\n\tconst columns = view.fields ?? [];\n\tconst headerMenuRef =\n\t\t( column: string, index: number ) => ( node: HTMLButtonElement ) => {\n\t\t\tif ( node ) {\n\t\t\t\theaderMenuRefs.current.set( column, {\n\t\t\t\t\tnode,\n\t\t\t\t\tfallback: columns[ index > 0 ? index - 1 : 1 ],\n\t\t\t\t} );\n\t\t\t} else {\n\t\t\t\theaderMenuRefs.current.delete( column );\n\t\t\t}\n\t\t};\n\tconst isInfiniteScroll = view.infiniteScrollEnabled && ! dataByGroup;\n\n\treturn (\n\t\t<>\n\t\t\t<table\n\t\t\t\tclassName={ clsx(\n\t\t\t\t\t'dataviews-view-table',\n\t\t\t\t\t'dataviews-view-picker-table',\n\t\t\t\t\tclassName,\n\t\t\t\t\t{\n\t\t\t\t\t\t[ `has-${ view.layout?.density }-density` ]:\n\t\t\t\t\t\t\tview.layout?.density &&\n\t\t\t\t\t\t\t[ 'compact', 'comfortable' ].includes(\n\t\t\t\t\t\t\t\tview.layout.density\n\t\t\t\t\t\t\t),\n\t\t\t\t\t}\n\t\t\t\t) }\n\t\t\t\taria-busy={ isLoading }\n\t\t\t\taria-describedby={ tableNoticeId }\n\t\t\t\trole={ isInfiniteScroll ? 'feed' : 'listbox' }\n\t\t\t>\n\t\t\t\t<thead role=\"presentation\">\n\t\t\t\t\t<tr\n\t\t\t\t\t\tclassName=\"dataviews-view-table__row\"\n\t\t\t\t\t\trole=\"presentation\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<th className=\"dataviews-view-table__checkbox-column\">\n\t\t\t\t\t\t\t{ isMultiselect && (\n\t\t\t\t\t\t\t\t<BulkSelectionCheckbox\n\t\t\t\t\t\t\t\t\tselection={ selection }\n\t\t\t\t\t\t\t\t\tonChangeSelection={ onChangeSelection }\n\t\t\t\t\t\t\t\t\tdata={ data }\n\t\t\t\t\t\t\t\t\tactions={ actions }\n\t\t\t\t\t\t\t\t\tgetItemId={ getItemId }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t</th>\n\t\t\t\t\t\t{ hasPrimaryColumn && (\n\t\t\t\t\t\t\t<th>\n\t\t\t\t\t\t\t\t{ titleField && (\n\t\t\t\t\t\t\t\t\t<ColumnHeaderMenu\n\t\t\t\t\t\t\t\t\t\tref={ headerMenuRef(\n\t\t\t\t\t\t\t\t\t\t\ttitleField.id,\n\t\t\t\t\t\t\t\t\t\t\t0\n\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t\tfieldId={ titleField.id }\n\t\t\t\t\t\t\t\t\t\tview={ view }\n\t\t\t\t\t\t\t\t\t\tfields={ fields }\n\t\t\t\t\t\t\t\t\t\tonChangeView={ onChangeView }\n\t\t\t\t\t\t\t\t\t\tonHide={ onHide }\n\t\t\t\t\t\t\t\t\t\tsetOpenedFilter={ setOpenedFilter }\n\t\t\t\t\t\t\t\t\t\tcanMove={ false }\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t</th>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t{ columns.map( ( column, index ) => {\n\t\t\t\t\t\t\t// Explicit picks the supported styles.\n\t\t\t\t\t\t\tconst { width, maxWidth, minWidth, align } =\n\t\t\t\t\t\t\t\tview.layout?.styles?.[ column ] ?? {};\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<th\n\t\t\t\t\t\t\t\t\tkey={ column }\n\t\t\t\t\t\t\t\t\tstyle={ {\n\t\t\t\t\t\t\t\t\t\twidth,\n\t\t\t\t\t\t\t\t\t\tmaxWidth,\n\t\t\t\t\t\t\t\t\t\tminWidth,\n\t\t\t\t\t\t\t\t\t\ttextAlign: align,\n\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\taria-sort={\n\t\t\t\t\t\t\t\t\t\tview.sort?.direction &&\n\t\t\t\t\t\t\t\t\t\tview.sort?.field === column\n\t\t\t\t\t\t\t\t\t\t\t? sortValues[ view.sort.direction ]\n\t\t\t\t\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tscope=\"col\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<ColumnHeaderMenu\n\t\t\t\t\t\t\t\t\t\tref={ headerMenuRef( column, index ) }\n\t\t\t\t\t\t\t\t\t\tfieldId={ column }\n\t\t\t\t\t\t\t\t\t\tview={ view }\n\t\t\t\t\t\t\t\t\t\tfields={ fields }\n\t\t\t\t\t\t\t\t\t\tonChangeView={ onChangeView }\n\t\t\t\t\t\t\t\t\t\tonHide={ onHide }\n\t\t\t\t\t\t\t\t\t\tsetOpenedFilter={ setOpenedFilter }\n\t\t\t\t\t\t\t\t\t\tcanMove={\n\t\t\t\t\t\t\t\t\t\t\tview.layout?.enableMoving ?? true\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</th>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} ) }\n\t\t\t\t\t</tr>\n\t\t\t\t</thead>\n\t\t\t\t{ /* Render grouped data if groupBy is specified */ }\n\t\t\t\t{ hasData && groupField && dataByGroup ? (\n\t\t\t\t\tArray.from( dataByGroup.entries() ).map(\n\t\t\t\t\t\t( [ groupName, groupItems ] ) => (\n\t\t\t\t\t\t\t<Composite\n\t\t\t\t\t\t\t\tkey={ `group-${ groupName }` }\n\t\t\t\t\t\t\t\tvirtualFocus\n\t\t\t\t\t\t\t\torientation=\"vertical\"\n\t\t\t\t\t\t\t\trender={ <tbody role=\"group\" /> }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<tr\n\t\t\t\t\t\t\t\t\tclassName=\"dataviews-view-table__group-header-row\"\n\t\t\t\t\t\t\t\t\trole=\"presentation\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<td\n\t\t\t\t\t\t\t\t\t\tcolSpan={\n\t\t\t\t\t\t\t\t\t\t\tcolumns.length +\n\t\t\t\t\t\t\t\t\t\t\t( hasPrimaryColumn ? 1 : 0 ) +\n\t\t\t\t\t\t\t\t\t\t\t1\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tclassName=\"dataviews-view-table__group-header-cell\"\n\t\t\t\t\t\t\t\t\t\trole=\"presentation\"\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{ view.groupBy?.showLabel === false\n\t\t\t\t\t\t\t\t\t\t\t? groupName\n\t\t\t\t\t\t\t\t\t\t\t: sprintf(\n\t\t\t\t\t\t\t\t\t\t\t\t\t// translators: 1: The label of the field e.g. \"Date\". 2: The value of the field, e.g.: \"May 2022\".\n\t\t\t\t\t\t\t\t\t\t\t\t\t__( '%1$s: %2$s' ),\n\t\t\t\t\t\t\t\t\t\t\t\t\tgroupField.label,\n\t\t\t\t\t\t\t\t\t\t\t\t\tgroupName\n\t\t\t\t\t\t\t\t\t\t\t ) }\n\t\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t\t{ groupItems.map( ( item, index ) => (\n\t\t\t\t\t\t\t\t\t<TableRow\n\t\t\t\t\t\t\t\t\t\tkey={ getItemId( item ) }\n\t\t\t\t\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\t\t\t\t\tfields={ fields }\n\t\t\t\t\t\t\t\t\t\tid={\n\t\t\t\t\t\t\t\t\t\t\tgetItemId( item ) ||\n\t\t\t\t\t\t\t\t\t\t\tindex.toString()\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tview={ view }\n\t\t\t\t\t\t\t\t\t\ttitleField={ titleField }\n\t\t\t\t\t\t\t\t\t\tmediaField={ mediaField }\n\t\t\t\t\t\t\t\t\t\tdescriptionField={ descriptionField }\n\t\t\t\t\t\t\t\t\t\tselection={ selection }\n\t\t\t\t\t\t\t\t\t\tgetItemId={ getItemId }\n\t\t\t\t\t\t\t\t\t\tonChangeSelection={ onChangeSelection }\n\t\t\t\t\t\t\t\t\t\tmultiselect={ isMultiselect }\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t) ) }\n\t\t\t\t\t\t\t</Composite>\n\t\t\t\t\t\t)\n\t\t\t\t\t)\n\t\t\t\t) : (\n\t\t\t\t\t<Composite\n\t\t\t\t\t\trender={ <tbody role=\"presentation\" /> }\n\t\t\t\t\t\tvirtualFocus\n\t\t\t\t\t\torientation=\"vertical\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{ hasData &&\n\t\t\t\t\t\t\tdata.map( ( item, index ) => (\n\t\t\t\t\t\t\t\t<TableRow\n\t\t\t\t\t\t\t\t\tkey={ getItemId( item ) }\n\t\t\t\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\t\t\t\tfields={ fields }\n\t\t\t\t\t\t\t\t\tid={ getItemId( item ) || index.toString() }\n\t\t\t\t\t\t\t\t\tview={ view }\n\t\t\t\t\t\t\t\t\ttitleField={ titleField }\n\t\t\t\t\t\t\t\t\tmediaField={ mediaField }\n\t\t\t\t\t\t\t\t\tdescriptionField={ descriptionField }\n\t\t\t\t\t\t\t\t\tselection={ selection }\n\t\t\t\t\t\t\t\t\tgetItemId={ getItemId }\n\t\t\t\t\t\t\t\t\tonChangeSelection={ onChangeSelection }\n\t\t\t\t\t\t\t\t\tmultiselect={ isMultiselect }\n\t\t\t\t\t\t\t\t\tposinset={ index + 1 }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t) ) }\n\t\t\t\t\t</Composite>\n\t\t\t\t) }\n\t\t\t</table>\n\t\t\t<div\n\t\t\t\tclassName={ clsx( {\n\t\t\t\t\t'dataviews-loading': isLoading,\n\t\t\t\t\t'dataviews-no-results': ! hasData && ! isLoading,\n\t\t\t\t} ) }\n\t\t\t\tid={ tableNoticeId }\n\t\t\t>\n\t\t\t\t{ ! hasData &&\n\t\t\t\t\t( isLoading ? (\n\t\t\t\t\t\t<p>\n\t\t\t\t\t\t\t<Spinner />\n\t\t\t\t\t\t</p>\n\t\t\t\t\t) : (\n\t\t\t\t\t\tempty\n\t\t\t\t\t) ) }\n\t\t\t\t{ hasData && isLoading && (\n\t\t\t\t\t<p className=\"dataviews-loading-more\">\n\t\t\t\t\t\t<Spinner />\n\t\t\t\t\t</p>\n\t\t\t\t) }\n\t\t\t</div>\n\t\t</>\n\t);\n}\n\nexport default ViewPickerTable;\n", "/**\n * WordPress dependencies\n */\nimport { RangeControl } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { useContext } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport DataViewsContext from '../../dataviews-context';\nimport type { ViewGrid } from '../../../types';\n\nconst imageSizes = [\n\t{\n\t\tvalue: 120,\n\t\tbreakpoint: 1,\n\t},\n\t{\n\t\tvalue: 170,\n\t\tbreakpoint: 1,\n\t},\n\t{\n\t\tvalue: 230,\n\t\tbreakpoint: 1,\n\t},\n\t{\n\t\tvalue: 290,\n\t\tbreakpoint: 1112, // at minimum image width, 4 images display at this container size\n\t},\n\t{\n\t\tvalue: 350,\n\t\tbreakpoint: 1636, // at minimum image width, 6 images display at this container size\n\t},\n\t{\n\t\tvalue: 430,\n\t\tbreakpoint: 588, // at minimum image width, 2 images display at this container size\n\t},\n];\n\nexport default function PreviewSizePicker() {\n\tconst context = useContext( DataViewsContext );\n\tconst view = context.view as ViewGrid;\n\n\tconst breakValues = imageSizes.filter( ( size ) => {\n\t\treturn context.containerWidth >= size.breakpoint;\n\t} );\n\n\tconst layoutPreviewSize = view.layout?.previewSize ?? 230; // Default to the third smallest size if no preview size is set.\n\t// If the container has resized and the set preview size is no longer available,\n\t// we reset it to the next smallest size, or the smallest available size.\n\tconst previewSizeToUse =\n\t\tbreakValues\n\t\t\t.map( ( size, index ) => ( { ...size, index } ) )\n\t\t\t.filter( ( size ) => size.value <= layoutPreviewSize )\n\t\t\t.sort( ( a, b ) => b.value - a.value )[ 0 ]?.index ?? 0;\n\n\tconst marks = breakValues.map( ( size, index ) => {\n\t\treturn {\n\t\t\tvalue: index,\n\t\t};\n\t} );\n\n\treturn (\n\t\t<RangeControl\n\t\t\t__next40pxDefaultSize\n\t\t\tshowTooltip={ false }\n\t\t\tlabel={ __( 'Preview size' ) }\n\t\t\tvalue={ previewSizeToUse }\n\t\t\tmin={ 0 }\n\t\t\tmax={ breakValues.length - 1 }\n\t\t\twithInputField={ false }\n\t\t\tonChange={ ( value = 0 ) => {\n\t\t\t\tcontext.onChangeView( {\n\t\t\t\t\t...view,\n\t\t\t\t\tlayout: {\n\t\t\t\t\t\t...view.layout,\n\t\t\t\t\t\tpreviewSize: breakValues[ value ].value,\n\t\t\t\t\t},\n\t\t\t\t} );\n\t\t\t} }\n\t\t\tstep={ 1 }\n\t\t\tmarks={ marks }\n\t\t/>\n\t);\n}\n", "/**\n * WordPress dependencies\n */\nimport {\n\t__experimentalToggleGroupControl as ToggleGroupControl,\n\t__experimentalToggleGroupControlOption as ToggleGroupControlOption,\n} from '@wordpress/components';\nimport { __, _x } from '@wordpress/i18n';\nimport { useContext } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport DataViewsContext from '../../dataviews-context';\nimport type { ViewTable, ViewList, Density } from '../../../types';\n\nexport default function DensityPicker() {\n\tconst context = useContext( DataViewsContext );\n\tconst view = context.view as ViewTable | ViewList;\n\treturn (\n\t\t<ToggleGroupControl\n\t\t\tsize=\"__unstable-large\"\n\t\t\tlabel={ __( 'Density' ) }\n\t\t\tvalue={ view.layout?.density || 'balanced' }\n\t\t\tonChange={ ( value ) => {\n\t\t\t\tcontext.onChangeView( {\n\t\t\t\t\t...view,\n\t\t\t\t\tlayout: {\n\t\t\t\t\t\t...view.layout,\n\t\t\t\t\t\tdensity: value as Density,\n\t\t\t\t\t},\n\t\t\t\t} );\n\t\t\t} }\n\t\t\tisBlock\n\t\t>\n\t\t\t<ToggleGroupControlOption\n\t\t\t\tkey=\"comfortable\"\n\t\t\t\tvalue=\"comfortable\"\n\t\t\t\tlabel={ _x(\n\t\t\t\t\t'Comfortable',\n\t\t\t\t\t'Density option for DataView layout'\n\t\t\t\t) }\n\t\t\t/>\n\t\t\t<ToggleGroupControlOption\n\t\t\t\tkey=\"balanced\"\n\t\t\t\tvalue=\"balanced\"\n\t\t\t\tlabel={ _x( 'Balanced', 'Density option for DataView layout' ) }\n\t\t\t/>\n\t\t\t<ToggleGroupControlOption\n\t\t\t\tkey=\"compact\"\n\t\t\t\tvalue=\"compact\"\n\t\t\t\tlabel={ _x( 'Compact', 'Density option for DataView layout' ) }\n\t\t\t/>\n\t\t</ToggleGroupControl>\n\t);\n}\n", "/**\n * WordPress dependencies\n */\nimport { memo, useContext, useRef } from '@wordpress/element';\nimport { Stack } from '@wordpress/ui';\n\n/**\n * Internal dependencies\n */\nimport Filter from './filter';\nimport { default as AddFilter } from './add-filter';\nimport ResetFilters from './reset-filters';\nimport useFilters from './use-filters';\nimport DataViewsContext from '../dataviews-context';\n\nfunction Filters( { className }: { className?: string } ) {\n\tconst { fields, view, onChangeView, openedFilter, setOpenedFilter } =\n\t\tuseContext( DataViewsContext );\n\tconst addFilterRef = useRef< HTMLButtonElement >( null );\n\tconst filters = useFilters( fields, view );\n\tconst addFilter = (\n\t\t<AddFilter\n\t\t\tkey=\"add-filter\"\n\t\t\tfilters={ filters }\n\t\t\tview={ view }\n\t\t\tonChangeView={ onChangeView }\n\t\t\tref={ addFilterRef }\n\t\t\tsetOpenedFilter={ setOpenedFilter }\n\t\t/>\n\t);\n\tconst visibleFilters = filters.filter( ( filter ) => filter.isVisible );\n\tif ( visibleFilters.length === 0 ) {\n\t\treturn null;\n\t}\n\tconst filterComponents = [\n\t\t...visibleFilters.map( ( filter ) => {\n\t\t\treturn (\n\t\t\t\t<Filter\n\t\t\t\t\tkey={ filter.field }\n\t\t\t\t\tfilter={ filter }\n\t\t\t\t\tview={ view }\n\t\t\t\t\tfields={ fields }\n\t\t\t\t\tonChangeView={ onChangeView }\n\t\t\t\t\taddFilterRef={ addFilterRef }\n\t\t\t\t\topenedFilter={ openedFilter }\n\t\t\t\t/>\n\t\t\t);\n\t\t} ),\n\t\taddFilter,\n\t];\n\n\tfilterComponents.push(\n\t\t<ResetFilters\n\t\t\tkey=\"reset-filters\"\n\t\t\tfilters={ filters }\n\t\t\tview={ view }\n\t\t\tonChangeView={ onChangeView }\n\t\t/>\n\t);\n\n\treturn (\n\t\t<Stack\n\t\t\tdirection=\"row\"\n\t\t\tjustify=\"flex-start\"\n\t\t\tgap=\"xs\"\n\t\t\tstyle={ { width: 'fit-content' } }\n\t\t\twrap=\"wrap\"\n\t\t\tclassName={ className }\n\t\t>\n\t\t\t{ filterComponents }\n\t\t</Stack>\n\t);\n}\n\nexport default memo( Filters );\n", "/**\n * External dependencies\n */\nimport clsx from 'clsx';\nimport type { RefObject } from 'react';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tDropdown,\n\tFlexItem,\n\tSelectControl,\n\tTooltip,\n\tIcon,\n} from '@wordpress/components';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { useMemo, useRef } from '@wordpress/element';\nimport { closeSmall } from '@wordpress/icons';\nimport { Stack } from '@wordpress/ui';\n\n/**\n * Internal dependencies\n */\nimport SearchWidget from './search-widget';\nimport InputWidget from './input-widget';\nimport { getOperatorByName } from '../../utils/operators';\nimport type {\n\tFilter,\n\tNormalizedField,\n\tNormalizedFilter,\n\tOperator,\n\tOption,\n\tView,\n} from '../../types';\nimport useElements from '../../hooks/use-elements';\n\nconst ENTER = 'Enter';\nconst SPACE = ' ';\n\ninterface FilterTextProps {\n\tactiveElements: Option[];\n\tfilterInView?: Filter;\n\tfilter: NormalizedFilter;\n}\n\ninterface OperatorSelectorProps {\n\tfilter: NormalizedFilter;\n\tview: View;\n\tonChangeView: ( view: View ) => void;\n}\n\ninterface FilterProps extends OperatorSelectorProps {\n\taddFilterRef: RefObject< HTMLButtonElement >;\n\topenedFilter: string | null;\n\tfields: NormalizedField< any >[];\n}\n\nconst FilterText = ( {\n\tactiveElements,\n\tfilterInView,\n\tfilter,\n}: FilterTextProps ) => {\n\tif ( activeElements === undefined || activeElements.length === 0 ) {\n\t\treturn filter.name;\n\t}\n\n\tconst operator = getOperatorByName( filterInView?.operator );\n\tif ( operator !== undefined ) {\n\t\treturn operator.filterText( filter, activeElements );\n\t}\n\n\treturn sprintf(\n\t\t/* translators: 1: Filter name e.g.: \"Unknown status for Author\". */\n\t\t__( 'Unknown status for %1$s' ),\n\t\tfilter.name\n\t);\n};\n\nfunction OperatorSelector( {\n\tfilter,\n\tview,\n\tonChangeView,\n}: OperatorSelectorProps ) {\n\tconst operatorOptions = filter.operators?.map( ( operator ) => ( {\n\t\tvalue: operator,\n\t\tlabel: getOperatorByName( operator )?.label || operator,\n\t} ) );\n\tconst currentFilter = view.filters?.find(\n\t\t( _filter ) => _filter.field === filter.field\n\t);\n\tconst value = currentFilter?.operator || filter.operators[ 0 ];\n\treturn (\n\t\toperatorOptions.length > 1 && (\n\t\t\t<Stack\n\t\t\t\tdirection=\"row\"\n\t\t\t\tgap=\"xs\"\n\t\t\t\tjustify=\"flex-start\"\n\t\t\t\tclassName=\"dataviews-filters__summary-operators-container\"\n\t\t\t\talign=\"center\"\n\t\t\t>\n\t\t\t\t<FlexItem className=\"dataviews-filters__summary-operators-filter-name\">\n\t\t\t\t\t{ filter.name }\n\t\t\t\t</FlexItem>\n\n\t\t\t\t<SelectControl\n\t\t\t\t\tclassName=\"dataviews-filters__summary-operators-filter-select\"\n\t\t\t\t\tlabel={ __( 'Conditions' ) }\n\t\t\t\t\tvalue={ value }\n\t\t\t\t\toptions={ operatorOptions }\n\t\t\t\t\tonChange={ ( newValue ) => {\n\t\t\t\t\t\tconst newOperator = newValue as Operator;\n\t\t\t\t\t\tconst currentOperator = currentFilter?.operator;\n\t\t\t\t\t\tconst newFilters = currentFilter\n\t\t\t\t\t\t\t? [\n\t\t\t\t\t\t\t\t\t...( view.filters ?? [] ).map(\n\t\t\t\t\t\t\t\t\t\t( _filter ) => {\n\t\t\t\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t\t\t\t_filter.field === filter.field\n\t\t\t\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\t\t\t\tconst currentOpSelectionModel =\n\t\t\t\t\t\t\t\t\t\t\t\t\tgetOperatorByName(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tcurrentOperator\n\t\t\t\t\t\t\t\t\t\t\t\t\t)?.selection;\n\t\t\t\t\t\t\t\t\t\t\t\tconst newOpSelectionModel =\n\t\t\t\t\t\t\t\t\t\t\t\t\tgetOperatorByName(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tnewOperator\n\t\t\t\t\t\t\t\t\t\t\t\t\t)?.selection;\n\n\t\t\t\t\t\t\t\t\t\t\t\tconst shouldResetValue =\n\t\t\t\t\t\t\t\t\t\t\t\t\tcurrentOpSelectionModel !==\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tnewOpSelectionModel ||\n\t\t\t\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tcurrentOpSelectionModel,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tnewOpSelectionModel,\n\t\t\t\t\t\t\t\t\t\t\t\t\t].includes( 'custom' );\n\n\t\t\t\t\t\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t\t\t\t\t\t..._filter,\n\t\t\t\t\t\t\t\t\t\t\t\t\tvalue: shouldResetValue\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t? undefined\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t: _filter.value,\n\t\t\t\t\t\t\t\t\t\t\t\t\toperator: newOperator,\n\t\t\t\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\treturn _filter;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t ]\n\t\t\t\t\t\t\t: [\n\t\t\t\t\t\t\t\t\t...( view.filters ?? [] ),\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tfield: filter.field,\n\t\t\t\t\t\t\t\t\t\toperator: newOperator,\n\t\t\t\t\t\t\t\t\t\tvalue: undefined,\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t ];\n\t\t\t\t\t\tonChangeView( {\n\t\t\t\t\t\t\t...view,\n\t\t\t\t\t\t\tpage: 1,\n\t\t\t\t\t\t\tfilters: newFilters,\n\t\t\t\t\t\t} );\n\t\t\t\t\t} }\n\t\t\t\t\tsize=\"small\"\n\t\t\t\t\tvariant=\"minimal\"\n\t\t\t\t\thideLabelFromVision\n\t\t\t\t/>\n\t\t\t</Stack>\n\t\t)\n\t);\n}\n\nexport default function Filter( {\n\taddFilterRef,\n\topenedFilter,\n\tfields,\n\t...commonProps\n}: FilterProps ) {\n\tconst toggleRef = useRef< HTMLDivElement >( null );\n\tconst { filter, view, onChangeView } = commonProps;\n\tconst filterInView = view.filters?.find(\n\t\t( f ) => f.field === filter.field\n\t);\n\n\tlet activeElements: Option[] = [];\n\tconst field = useMemo( () => {\n\t\tconst currentField = fields.find( ( f ) => f.id === filter.field );\n\t\tif ( currentField ) {\n\t\t\treturn {\n\t\t\t\t...currentField,\n\t\t\t\t// Configure getValue as if Item was a plain object.\n\t\t\t\t// See related input-widget.tsx\n\t\t\t\tgetValue: ( { item }: { item: any } ) =>\n\t\t\t\t\titem[ currentField.id ],\n\t\t\t};\n\t\t}\n\n\t\treturn currentField;\n\t}, [ fields, filter.field ] );\n\n\tconst { elements } = useElements( {\n\t\telements: filter.elements,\n\t\tgetElements: filter.getElements,\n\t} );\n\n\tif ( elements.length > 0 ) {\n\t\t// When there are elements, we favor those\n\t\tactiveElements = elements.filter( ( element ) => {\n\t\t\tif ( filter.singleSelection ) {\n\t\t\t\treturn element.value === filterInView?.value;\n\t\t\t}\n\t\t\treturn filterInView?.value?.includes( element.value );\n\t\t} );\n\t} else if ( Array.isArray( filterInView?.value ) ) {\n\t\t// or, filterInView.value can also be array\n\t\t// for the between operator, as in [ 1, 2 ]\n\t\tconst label = filterInView.value.map( ( v ) => {\n\t\t\tconst formattedValue = field?.getValueFormatted( {\n\t\t\t\titem: { [ field.id ]: v },\n\t\t\t\tfield,\n\t\t\t} );\n\t\t\treturn formattedValue || String( v );\n\t\t} );\n\n\t\tactiveElements = [\n\t\t\t{\n\t\t\t\tvalue: filterInView.value,\n\t\t\t\t// @ts-ignore\n\t\t\t\tlabel,\n\t\t\t},\n\t\t];\n\t} else if ( typeof filterInView?.value === 'object' ) {\n\t\t// or, it can also be object for the inThePast/over operators,\n\t\t// as in { value: '1', units: 'days' }\n\t\tactiveElements = [\n\t\t\t{ value: filterInView.value, label: filterInView.value },\n\t\t];\n\t} else if ( filterInView?.value !== undefined ) {\n\t\t// otherwise, filterInView.value is a single value\n\t\tconst label =\n\t\t\tfield !== undefined\n\t\t\t\t? field.getValueFormatted( {\n\t\t\t\t\t\titem: { [ field.id ]: filterInView.value },\n\t\t\t\t\t\tfield,\n\t\t\t\t } )\n\t\t\t\t: String( filterInView.value );\n\n\t\tactiveElements = [\n\t\t\t{\n\t\t\t\tvalue: filterInView.value,\n\t\t\t\tlabel,\n\t\t\t},\n\t\t];\n\t}\n\n\tconst isPrimary = filter.isPrimary;\n\tconst isLocked = filterInView?.isLocked;\n\tconst hasValues = ! isLocked && filterInView?.value !== undefined;\n\tconst canResetOrRemove = ! isLocked && ( ! isPrimary || hasValues );\n\treturn (\n\t\t<Dropdown\n\t\t\tdefaultOpen={ openedFilter === filter.field }\n\t\t\tcontentClassName=\"dataviews-filters__summary-popover\"\n\t\t\tpopoverProps={ { placement: 'bottom-start', role: 'dialog' } }\n\t\t\tonClose={ () => {\n\t\t\t\ttoggleRef.current?.focus();\n\t\t\t} }\n\t\t\trenderToggle={ ( { isOpen, onToggle } ) => (\n\t\t\t\t<div className=\"dataviews-filters__summary-chip-container\">\n\t\t\t\t\t<Tooltip\n\t\t\t\t\t\ttext={ sprintf(\n\t\t\t\t\t\t\t/* translators: 1: Filter name. */\n\t\t\t\t\t\t\t__( 'Filter by: %1$s' ),\n\t\t\t\t\t\t\tfilter.name.toLowerCase()\n\t\t\t\t\t\t) }\n\t\t\t\t\t\tplacement=\"top\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclassName={ clsx(\n\t\t\t\t\t\t\t\t'dataviews-filters__summary-chip',\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t'has-reset': canResetOrRemove,\n\t\t\t\t\t\t\t\t\t'has-values': hasValues,\n\t\t\t\t\t\t\t\t\t'is-not-clickable': isLocked,\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\trole=\"button\"\n\t\t\t\t\t\t\ttabIndex={ isLocked ? -1 : 0 }\n\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\tif ( ! isLocked ) {\n\t\t\t\t\t\t\t\t\tonToggle();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\tonKeyDown={ ( event ) => {\n\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t! isLocked &&\n\t\t\t\t\t\t\t\t\t[ ENTER, SPACE ].includes( event.key )\n\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\tonToggle();\n\t\t\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\taria-disabled={ isLocked }\n\t\t\t\t\t\t\taria-pressed={ isOpen }\n\t\t\t\t\t\t\taria-expanded={ isOpen }\n\t\t\t\t\t\t\tref={ toggleRef }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<FilterText\n\t\t\t\t\t\t\t\tactiveElements={ activeElements }\n\t\t\t\t\t\t\t\tfilterInView={ filterInView }\n\t\t\t\t\t\t\t\tfilter={ filter }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</Tooltip>\n\t\t\t\t\t{ canResetOrRemove && (\n\t\t\t\t\t\t<Tooltip\n\t\t\t\t\t\t\ttext={ isPrimary ? __( 'Reset' ) : __( 'Remove' ) }\n\t\t\t\t\t\t\tplacement=\"top\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\tclassName={ clsx(\n\t\t\t\t\t\t\t\t\t'dataviews-filters__summary-chip-remove',\n\t\t\t\t\t\t\t\t\t{ 'has-values': hasValues }\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\t\tonChangeView( {\n\t\t\t\t\t\t\t\t\t\t...view,\n\t\t\t\t\t\t\t\t\t\tpage: 1,\n\t\t\t\t\t\t\t\t\t\tfilters: view.filters?.filter(\n\t\t\t\t\t\t\t\t\t\t\t( _filter ) =>\n\t\t\t\t\t\t\t\t\t\t\t\t_filter.field !== filter.field\n\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t\t\t// If the filter is not primary and can be removed, it will be added\n\t\t\t\t\t\t\t\t\t// back to the available filters from `Add filter` component.\n\t\t\t\t\t\t\t\t\tif ( ! isPrimary ) {\n\t\t\t\t\t\t\t\t\t\taddFilterRef.current?.focus();\n\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t// If is primary, focus the toggle button.\n\t\t\t\t\t\t\t\t\t\ttoggleRef.current?.focus();\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<Icon icon={ closeSmall } />\n\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t</Tooltip>\n\t\t\t\t\t) }\n\t\t\t\t</div>\n\t\t\t) }\n\t\t\trenderContent={ () => {\n\t\t\t\treturn (\n\t\t\t\t\t<Stack direction=\"column\" justify=\"flex-start\">\n\t\t\t\t\t\t<OperatorSelector { ...commonProps } />\n\t\t\t\t\t\t{ commonProps.filter.hasElements ? (\n\t\t\t\t\t\t\t<SearchWidget\n\t\t\t\t\t\t\t\t{ ...commonProps }\n\t\t\t\t\t\t\t\tfilter={ {\n\t\t\t\t\t\t\t\t\t...commonProps.filter,\n\t\t\t\t\t\t\t\t\telements,\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t<InputWidget { ...commonProps } fields={ fields } />\n\t\t\t\t\t\t) }\n\t\t\t\t\t</Stack>\n\t\t\t\t);\n\t\t\t} }\n\t\t/>\n\t);\n}\n", "\"use client\";\nvar __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n if (__getOwnPropSymbols)\n for (var prop of __getOwnPropSymbols(b)) {\n if (__propIsEnum.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\nvar __objRest = (source, exclude) => {\n var target = {};\n for (var prop in source)\n if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)\n target[prop] = source[prop];\n if (source != null && __getOwnPropSymbols)\n for (var prop of __getOwnPropSymbols(source)) {\n if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))\n target[prop] = source[prop];\n }\n return target;\n};\n\nexport {\n __spreadValues,\n __spreadProps,\n __objRest\n};\n", "\"use client\";\nvar __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n if (__getOwnPropSymbols)\n for (var prop of __getOwnPropSymbols(b)) {\n if (__propIsEnum.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\nvar __objRest = (source, exclude) => {\n var target = {};\n for (var prop in source)\n if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)\n target[prop] = source[prop];\n if (source != null && __getOwnPropSymbols)\n for (var prop of __getOwnPropSymbols(source)) {\n if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))\n target[prop] = source[prop];\n }\n return target;\n};\n\nexport {\n __spreadValues,\n __spreadProps,\n __objRest\n};\n", "\"use client\";\nimport {\n __spreadValues\n} from \"./3YLGPPWQ.js\";\n\n// src/utils/misc.ts\nfunction noop(..._) {\n}\nfunction shallowEqual(a, b) {\n if (a === b) return true;\n if (!a) return false;\n if (!b) return false;\n if (typeof a !== \"object\") return false;\n if (typeof b !== \"object\") return false;\n const aKeys = Object.keys(a);\n const bKeys = Object.keys(b);\n const { length } = aKeys;\n if (bKeys.length !== length) return false;\n for (const key of aKeys) {\n if (a[key] !== b[key]) {\n return false;\n }\n }\n return true;\n}\nfunction applyState(argument, currentValue) {\n if (isUpdater(argument)) {\n const value = isLazyValue(currentValue) ? currentValue() : currentValue;\n return argument(value);\n }\n return argument;\n}\nfunction isUpdater(argument) {\n return typeof argument === \"function\";\n}\nfunction isLazyValue(value) {\n return typeof value === \"function\";\n}\nfunction isObject(arg) {\n return typeof arg === \"object\" && arg != null;\n}\nfunction isEmpty(arg) {\n if (Array.isArray(arg)) return !arg.length;\n if (isObject(arg)) return !Object.keys(arg).length;\n if (arg == null) return true;\n if (arg === \"\") return true;\n return false;\n}\nfunction isInteger(arg) {\n if (typeof arg === \"number\") {\n return Math.floor(arg) === arg;\n }\n return String(Math.floor(Number(arg))) === arg;\n}\nfunction hasOwnProperty(object, prop) {\n if (typeof Object.hasOwn === \"function\") {\n return Object.hasOwn(object, prop);\n }\n return Object.prototype.hasOwnProperty.call(object, prop);\n}\nfunction chain(...fns) {\n return (...args) => {\n for (const fn of fns) {\n if (typeof fn === \"function\") {\n fn(...args);\n }\n }\n };\n}\nfunction cx(...args) {\n return args.filter(Boolean).join(\" \") || void 0;\n}\nfunction normalizeString(str) {\n return str.normalize(\"NFD\").replace(/[\\u0300-\\u036f]/g, \"\");\n}\nfunction omit(object, keys) {\n const result = __spreadValues({}, object);\n for (const key of keys) {\n if (hasOwnProperty(result, key)) {\n delete result[key];\n }\n }\n return result;\n}\nfunction pick(object, paths) {\n const result = {};\n for (const key of paths) {\n if (hasOwnProperty(object, key)) {\n result[key] = object[key];\n }\n }\n return result;\n}\nfunction identity(value) {\n return value;\n}\nfunction beforePaint(cb = noop) {\n const raf = requestAnimationFrame(cb);\n return () => cancelAnimationFrame(raf);\n}\nfunction afterPaint(cb = noop) {\n let raf = requestAnimationFrame(() => {\n raf = requestAnimationFrame(cb);\n });\n return () => cancelAnimationFrame(raf);\n}\nfunction invariant(condition, message) {\n if (condition) return;\n if (typeof message !== \"string\") throw new Error(\"Invariant failed\");\n throw new Error(message);\n}\nfunction getKeys(obj) {\n return Object.keys(obj);\n}\nfunction isFalsyBooleanCallback(booleanOrCallback, ...args) {\n const result = typeof booleanOrCallback === \"function\" ? booleanOrCallback(...args) : booleanOrCallback;\n if (result == null) return false;\n return !result;\n}\nfunction disabledFromProps(props) {\n return props.disabled || props[\"aria-disabled\"] === true || props[\"aria-disabled\"] === \"true\";\n}\nfunction removeUndefinedValues(obj) {\n const result = {};\n for (const key in obj) {\n if (obj[key] !== void 0) {\n result[key] = obj[key];\n }\n }\n return result;\n}\nfunction defaultValue(...values) {\n for (const value of values) {\n if (value !== void 0) return value;\n }\n return void 0;\n}\n\nexport {\n noop,\n shallowEqual,\n applyState,\n isObject,\n isEmpty,\n isInteger,\n hasOwnProperty,\n chain,\n cx,\n normalizeString,\n omit,\n pick,\n identity,\n beforePaint,\n afterPaint,\n invariant,\n getKeys,\n isFalsyBooleanCallback,\n disabledFromProps,\n removeUndefinedValues,\n defaultValue\n};\n", "\"use client\";\nimport {\n __spreadValues\n} from \"./3YLGPPWQ.js\";\n\n// src/utils/misc.ts\nimport { hasOwnProperty } from \"@ariakit/core/utils/misc\";\nimport { isValidElement } from \"react\";\nfunction setRef(ref, value) {\n if (typeof ref === \"function\") {\n ref(value);\n } else if (ref) {\n ref.current = value;\n }\n}\nfunction isValidElementWithRef(element) {\n if (!element) return false;\n if (!isValidElement(element)) return false;\n if (\"ref\" in element.props) return true;\n if (\"ref\" in element) return true;\n return false;\n}\nfunction getRefProperty(element) {\n if (!isValidElementWithRef(element)) return null;\n const props = __spreadValues({}, element.props);\n return props.ref || element.ref;\n}\nfunction mergeProps(base, overrides) {\n const props = __spreadValues({}, base);\n for (const key in overrides) {\n if (!hasOwnProperty(overrides, key)) continue;\n if (key === \"className\") {\n const prop = \"className\";\n props[prop] = base[prop] ? `${base[prop]} ${overrides[prop]}` : overrides[prop];\n continue;\n }\n if (key === \"style\") {\n const prop = \"style\";\n props[prop] = base[prop] ? __spreadValues(__spreadValues({}, base[prop]), overrides[prop]) : overrides[prop];\n continue;\n }\n const overrideValue = overrides[key];\n if (typeof overrideValue === \"function\" && key.startsWith(\"on\")) {\n const baseValue = base[key];\n if (typeof baseValue === \"function\") {\n props[key] = (...args) => {\n overrideValue(...args);\n baseValue(...args);\n };\n continue;\n }\n }\n props[key] = overrideValue;\n }\n return props;\n}\n\nexport {\n setRef,\n isValidElementWithRef,\n getRefProperty,\n mergeProps\n};\n", "\"use client\";\n\n// src/utils/dom.ts\nvar canUseDOM = checkIsBrowser();\nfunction checkIsBrowser() {\n var _a;\n return typeof window !== \"undefined\" && !!((_a = window.document) == null ? void 0 : _a.createElement);\n}\nfunction getDocument(node) {\n if (!node) return document;\n if (\"self\" in node) return node.document;\n return node.ownerDocument || document;\n}\nfunction getWindow(node) {\n if (!node) return self;\n if (\"self\" in node) return node.self;\n return getDocument(node).defaultView || window;\n}\nfunction getActiveElement(node, activeDescendant = false) {\n const { activeElement } = getDocument(node);\n if (!(activeElement == null ? void 0 : activeElement.nodeName)) {\n return null;\n }\n if (isFrame(activeElement) && activeElement.contentDocument) {\n return getActiveElement(\n activeElement.contentDocument.body,\n activeDescendant\n );\n }\n if (activeDescendant) {\n const id = activeElement.getAttribute(\"aria-activedescendant\");\n if (id) {\n const element = getDocument(activeElement).getElementById(id);\n if (element) {\n return element;\n }\n }\n }\n return activeElement;\n}\nfunction contains(parent, child) {\n return parent === child || parent.contains(child);\n}\nfunction isFrame(element) {\n return element.tagName === \"IFRAME\";\n}\nfunction isButton(element) {\n const tagName = element.tagName.toLowerCase();\n if (tagName === \"button\") return true;\n if (tagName === \"input\" && element.type) {\n return buttonInputTypes.indexOf(element.type) !== -1;\n }\n return false;\n}\nvar buttonInputTypes = [\n \"button\",\n \"color\",\n \"file\",\n \"image\",\n \"reset\",\n \"submit\"\n];\nfunction isVisible(element) {\n if (typeof element.checkVisibility === \"function\") {\n return element.checkVisibility();\n }\n const htmlElement = element;\n return htmlElement.offsetWidth > 0 || htmlElement.offsetHeight > 0 || element.getClientRects().length > 0;\n}\nfunction isTextField(element) {\n try {\n const isTextInput = element instanceof HTMLInputElement && element.selectionStart !== null;\n const isTextArea = element.tagName === \"TEXTAREA\";\n return isTextInput || isTextArea || false;\n } catch (error) {\n return false;\n }\n}\nfunction isTextbox(element) {\n return element.isContentEditable || isTextField(element);\n}\nfunction getTextboxValue(element) {\n if (isTextField(element)) {\n return element.value;\n }\n if (element.isContentEditable) {\n const range = getDocument(element).createRange();\n range.selectNodeContents(element);\n return range.toString();\n }\n return \"\";\n}\nfunction getTextboxSelection(element) {\n let start = 0;\n let end = 0;\n if (isTextField(element)) {\n start = element.selectionStart || 0;\n end = element.selectionEnd || 0;\n } else if (element.isContentEditable) {\n const selection = getDocument(element).getSelection();\n if ((selection == null ? void 0 : selection.rangeCount) && selection.anchorNode && contains(element, selection.anchorNode) && selection.focusNode && contains(element, selection.focusNode)) {\n const range = selection.getRangeAt(0);\n const nextRange = range.cloneRange();\n nextRange.selectNodeContents(element);\n nextRange.setEnd(range.startContainer, range.startOffset);\n start = nextRange.toString().length;\n nextRange.setEnd(range.endContainer, range.endOffset);\n end = nextRange.toString().length;\n }\n }\n return { start, end };\n}\nfunction getPopupRole(element, fallback) {\n const allowedPopupRoles = [\"dialog\", \"menu\", \"listbox\", \"tree\", \"grid\"];\n const role = element == null ? void 0 : element.getAttribute(\"role\");\n if (role && allowedPopupRoles.indexOf(role) !== -1) {\n return role;\n }\n return fallback;\n}\nfunction getPopupItemRole(element, fallback) {\n var _a;\n const itemRoleByPopupRole = {\n menu: \"menuitem\",\n listbox: \"option\",\n tree: \"treeitem\"\n };\n const popupRole = getPopupRole(element);\n if (!popupRole) return fallback;\n const key = popupRole;\n return (_a = itemRoleByPopupRole[key]) != null ? _a : fallback;\n}\nfunction scrollIntoViewIfNeeded(element, arg) {\n if (isPartiallyHidden(element) && \"scrollIntoView\" in element) {\n element.scrollIntoView(arg);\n }\n}\nfunction getScrollingElement(element) {\n if (!element) return null;\n const isScrollableOverflow = (overflow) => {\n if (overflow === \"auto\") return true;\n if (overflow === \"scroll\") return true;\n return false;\n };\n if (element.clientHeight && element.scrollHeight > element.clientHeight) {\n const { overflowY } = getComputedStyle(element);\n if (isScrollableOverflow(overflowY)) return element;\n } else if (element.clientWidth && element.scrollWidth > element.clientWidth) {\n const { overflowX } = getComputedStyle(element);\n if (isScrollableOverflow(overflowX)) return element;\n }\n return getScrollingElement(element.parentElement) || document.scrollingElement || document.body;\n}\nfunction isPartiallyHidden(element) {\n const elementRect = element.getBoundingClientRect();\n const scroller = getScrollingElement(element);\n if (!scroller) return false;\n const scrollerRect = scroller.getBoundingClientRect();\n const isHTML = scroller.tagName === \"HTML\";\n const scrollerTop = isHTML ? scrollerRect.top + scroller.scrollTop : scrollerRect.top;\n const scrollerBottom = isHTML ? scroller.clientHeight : scrollerRect.bottom;\n const scrollerLeft = isHTML ? scrollerRect.left + scroller.scrollLeft : scrollerRect.left;\n const scrollerRight = isHTML ? scroller.clientWidth : scrollerRect.right;\n const top = elementRect.top < scrollerTop;\n const left = elementRect.left < scrollerLeft;\n const bottom = elementRect.bottom > scrollerBottom;\n const right = elementRect.right > scrollerRight;\n return top || left || bottom || right;\n}\nfunction setSelectionRange(element, ...args) {\n if (/text|search|password|tel|url/i.test(element.type)) {\n element.setSelectionRange(...args);\n }\n}\nfunction sortBasedOnDOMPosition(items, getElement) {\n const pairs = items.map((item, index) => [index, item]);\n let isOrderDifferent = false;\n pairs.sort(([indexA, a], [indexB, b]) => {\n const elementA = getElement(a);\n const elementB = getElement(b);\n if (elementA === elementB) return 0;\n if (!elementA || !elementB) return 0;\n if (isElementPreceding(elementA, elementB)) {\n if (indexA > indexB) {\n isOrderDifferent = true;\n }\n return -1;\n }\n if (indexA < indexB) {\n isOrderDifferent = true;\n }\n return 1;\n });\n if (isOrderDifferent) {\n return pairs.map(([_, item]) => item);\n }\n return items;\n}\nfunction isElementPreceding(a, b) {\n return Boolean(\n b.compareDocumentPosition(a) & Node.DOCUMENT_POSITION_PRECEDING\n );\n}\n\nexport {\n canUseDOM,\n getDocument,\n getWindow,\n getActiveElement,\n contains,\n isFrame,\n isButton,\n isVisible,\n isTextField,\n isTextbox,\n getTextboxValue,\n getTextboxSelection,\n getPopupRole,\n getPopupItemRole,\n scrollIntoViewIfNeeded,\n getScrollingElement,\n isPartiallyHidden,\n setSelectionRange,\n sortBasedOnDOMPosition\n};\n", "\"use client\";\nimport {\n canUseDOM\n} from \"./DTR5TSDJ.js\";\n\n// src/utils/platform.ts\nfunction isTouchDevice() {\n return canUseDOM && !!navigator.maxTouchPoints;\n}\nfunction isApple() {\n if (!canUseDOM) return false;\n return /mac|iphone|ipad|ipod/i.test(navigator.platform);\n}\nfunction isSafari() {\n return canUseDOM && isApple() && /apple/i.test(navigator.vendor);\n}\nfunction isFirefox() {\n return canUseDOM && /firefox\\//i.test(navigator.userAgent);\n}\nfunction isMac() {\n return canUseDOM && navigator.platform.startsWith(\"Mac\") && !isTouchDevice();\n}\n\nexport {\n isTouchDevice,\n isApple,\n isSafari,\n isFirefox,\n isMac\n};\n", "\"use client\";\nimport {\n isApple\n} from \"../__chunks/QAGXQEUG.js\";\nimport {\n contains\n} from \"../__chunks/DTR5TSDJ.js\";\nimport {\n __spreadProps,\n __spreadValues\n} from \"../__chunks/3YLGPPWQ.js\";\n\n// src/utils/events.ts\nfunction isPortalEvent(event) {\n return Boolean(\n event.currentTarget && !contains(event.currentTarget, event.target)\n );\n}\nfunction isSelfTarget(event) {\n return event.target === event.currentTarget;\n}\nfunction isOpeningInNewTab(event) {\n const element = event.currentTarget;\n if (!element) return false;\n const isAppleDevice = isApple();\n if (isAppleDevice && !event.metaKey) return false;\n if (!isAppleDevice && !event.ctrlKey) return false;\n const tagName = element.tagName.toLowerCase();\n if (tagName === \"a\") return true;\n if (tagName === \"button\" && element.type === \"submit\") return true;\n if (tagName === \"input\" && element.type === \"submit\") return true;\n return false;\n}\nfunction isDownloading(event) {\n const element = event.currentTarget;\n if (!element) return false;\n const tagName = element.tagName.toLowerCase();\n if (!event.altKey) return false;\n if (tagName === \"a\") return true;\n if (tagName === \"button\" && element.type === \"submit\") return true;\n if (tagName === \"input\" && element.type === \"submit\") return true;\n return false;\n}\nfunction fireEvent(element, type, eventInit) {\n const event = new Event(type, eventInit);\n return element.dispatchEvent(event);\n}\nfunction fireBlurEvent(element, eventInit) {\n const event = new FocusEvent(\"blur\", eventInit);\n const defaultAllowed = element.dispatchEvent(event);\n const bubbleInit = __spreadProps(__spreadValues({}, eventInit), { bubbles: true });\n element.dispatchEvent(new FocusEvent(\"focusout\", bubbleInit));\n return defaultAllowed;\n}\nfunction fireFocusEvent(element, eventInit) {\n const event = new FocusEvent(\"focus\", eventInit);\n const defaultAllowed = element.dispatchEvent(event);\n const bubbleInit = __spreadProps(__spreadValues({}, eventInit), { bubbles: true });\n element.dispatchEvent(new FocusEvent(\"focusin\", bubbleInit));\n return defaultAllowed;\n}\nfunction fireKeyboardEvent(element, type, eventInit) {\n const event = new KeyboardEvent(type, eventInit);\n return element.dispatchEvent(event);\n}\nfunction fireClickEvent(element, eventInit) {\n const event = new MouseEvent(\"click\", eventInit);\n return element.dispatchEvent(event);\n}\nfunction isFocusEventOutside(event, container) {\n const containerElement = container || event.currentTarget;\n const relatedTarget = event.relatedTarget;\n return !relatedTarget || !contains(containerElement, relatedTarget);\n}\nfunction getInputType(event) {\n const nativeEvent = \"nativeEvent\" in event ? event.nativeEvent : event;\n if (!nativeEvent) return;\n if (!(\"inputType\" in nativeEvent)) return;\n if (typeof nativeEvent.inputType !== \"string\") return;\n return nativeEvent.inputType;\n}\nfunction queueBeforeEvent(element, type, callback, timeout) {\n const createTimer = (callback2) => {\n if (timeout) {\n const timerId2 = setTimeout(callback2, timeout);\n return () => clearTimeout(timerId2);\n }\n const timerId = requestAnimationFrame(callback2);\n return () => cancelAnimationFrame(timerId);\n };\n const cancelTimer = createTimer(() => {\n element.removeEventListener(type, callSync, true);\n callback();\n });\n const callSync = () => {\n cancelTimer();\n callback();\n };\n element.addEventListener(type, callSync, { once: true, capture: true });\n return cancelTimer;\n}\nfunction addGlobalEventListener(type, listener, options, scope = window) {\n const children = [];\n try {\n scope.document.addEventListener(type, listener, options);\n for (const frame of Array.from(scope.frames)) {\n children.push(addGlobalEventListener(type, listener, options, frame));\n }\n } catch (e) {\n }\n const removeEventListener = () => {\n try {\n scope.document.removeEventListener(type, listener, options);\n } catch (e) {\n }\n for (const remove of children) {\n remove();\n }\n };\n return removeEventListener;\n}\nexport {\n addGlobalEventListener,\n fireBlurEvent,\n fireClickEvent,\n fireEvent,\n fireFocusEvent,\n fireKeyboardEvent,\n getInputType,\n isDownloading,\n isFocusEventOutside,\n isOpeningInNewTab,\n isPortalEvent,\n isSelfTarget,\n queueBeforeEvent\n};\n", "\"use client\";\nimport {\n setRef\n} from \"./SK3NAZA3.js\";\nimport {\n __spreadProps,\n __spreadValues\n} from \"./3YLGPPWQ.js\";\n\n// src/utils/hooks.ts\nimport { canUseDOM } from \"@ariakit/core/utils/dom\";\nimport { addGlobalEventListener } from \"@ariakit/core/utils/events\";\nimport {\n useCallback,\n useEffect,\n useLayoutEffect,\n useMemo,\n useReducer,\n useRef,\n useState\n} from \"react\";\nimport * as React from \"react\";\nvar _React = __spreadValues({}, React);\nvar useReactId = _React.useId;\nvar useReactDeferredValue = _React.useDeferredValue;\nvar useReactInsertionEffect = _React.useInsertionEffect;\nvar useSafeLayoutEffect = canUseDOM ? useLayoutEffect : useEffect;\nfunction useInitialValue(value) {\n const [initialValue] = useState(value);\n return initialValue;\n}\nfunction useLazyValue(init) {\n const ref = useRef();\n if (ref.current === void 0) {\n ref.current = init();\n }\n return ref.current;\n}\nfunction useLiveRef(value) {\n const ref = useRef(value);\n useSafeLayoutEffect(() => {\n ref.current = value;\n });\n return ref;\n}\nfunction usePreviousValue(value) {\n const [previousValue, setPreviousValue] = useState(value);\n if (value !== previousValue) {\n setPreviousValue(value);\n }\n return previousValue;\n}\nfunction useEvent(callback) {\n const ref = useRef(() => {\n throw new Error(\"Cannot call an event handler while rendering.\");\n });\n if (useReactInsertionEffect) {\n useReactInsertionEffect(() => {\n ref.current = callback;\n });\n } else {\n ref.current = callback;\n }\n return useCallback((...args) => {\n var _a;\n return (_a = ref.current) == null ? void 0 : _a.call(ref, ...args);\n }, []);\n}\nfunction useTransactionState(callback) {\n const [state, setState] = useState(null);\n useSafeLayoutEffect(() => {\n if (state == null) return;\n if (!callback) return;\n let prevState = null;\n callback((prev) => {\n prevState = prev;\n return state;\n });\n return () => {\n callback(prevState);\n };\n }, [state, callback]);\n return [state, setState];\n}\nfunction useMergeRefs(...refs) {\n return useMemo(() => {\n if (!refs.some(Boolean)) return;\n return (value) => {\n for (const ref of refs) {\n setRef(ref, value);\n }\n };\n }, refs);\n}\nfunction useId(defaultId) {\n if (useReactId) {\n const reactId = useReactId();\n if (defaultId) return defaultId;\n return reactId;\n }\n const [id, setId] = useState(defaultId);\n useSafeLayoutEffect(() => {\n if (defaultId || id) return;\n const random = Math.random().toString(36).slice(2, 8);\n setId(`id-${random}`);\n }, [defaultId, id]);\n return defaultId || id;\n}\nfunction useDeferredValue(value) {\n if (useReactDeferredValue) {\n return useReactDeferredValue(value);\n }\n const [deferredValue, setDeferredValue] = useState(value);\n useEffect(() => {\n const raf = requestAnimationFrame(() => setDeferredValue(value));\n return () => cancelAnimationFrame(raf);\n }, [value]);\n return deferredValue;\n}\nfunction useTagName(refOrElement, type) {\n const stringOrUndefined = (type2) => {\n if (typeof type2 !== \"string\") return;\n return type2;\n };\n const [tagName, setTagName] = useState(() => stringOrUndefined(type));\n useSafeLayoutEffect(() => {\n const element = refOrElement && \"current\" in refOrElement ? refOrElement.current : refOrElement;\n setTagName((element == null ? void 0 : element.tagName.toLowerCase()) || stringOrUndefined(type));\n }, [refOrElement, type]);\n return tagName;\n}\nfunction useAttribute(refOrElement, attributeName, defaultValue) {\n const initialValue = useInitialValue(defaultValue);\n const [attribute, setAttribute] = useState(initialValue);\n useEffect(() => {\n const element = refOrElement && \"current\" in refOrElement ? refOrElement.current : refOrElement;\n if (!element) return;\n const callback = () => {\n const value = element.getAttribute(attributeName);\n setAttribute(value == null ? initialValue : value);\n };\n const observer = new MutationObserver(callback);\n observer.observe(element, { attributeFilter: [attributeName] });\n callback();\n return () => observer.disconnect();\n }, [refOrElement, attributeName, initialValue]);\n return attribute;\n}\nfunction useUpdateEffect(effect, deps) {\n const mounted = useRef(false);\n useEffect(() => {\n if (mounted.current) {\n return effect();\n }\n mounted.current = true;\n }, deps);\n useEffect(\n () => () => {\n mounted.current = false;\n },\n []\n );\n}\nfunction useUpdateLayoutEffect(effect, deps) {\n const mounted = useRef(false);\n useSafeLayoutEffect(() => {\n if (mounted.current) {\n return effect();\n }\n mounted.current = true;\n }, deps);\n useSafeLayoutEffect(\n () => () => {\n mounted.current = false;\n },\n []\n );\n}\nfunction useForceUpdate() {\n return useReducer(() => [], []);\n}\nfunction useBooleanEvent(booleanOrCallback) {\n return useEvent(\n typeof booleanOrCallback === \"function\" ? booleanOrCallback : () => booleanOrCallback\n );\n}\nfunction useWrapElement(props, callback, deps = []) {\n const wrapElement = useCallback(\n (element) => {\n if (props.wrapElement) {\n element = props.wrapElement(element);\n }\n return callback(element);\n },\n [...deps, props.wrapElement]\n );\n return __spreadProps(__spreadValues({}, props), { wrapElement });\n}\nfunction usePortalRef(portalProp = false, portalRefProp) {\n const [portalNode, setPortalNode] = useState(null);\n const portalRef = useMergeRefs(setPortalNode, portalRefProp);\n const domReady = !portalProp || portalNode;\n return { portalRef, portalNode, domReady };\n}\nfunction useMetadataProps(props, key, value) {\n const parent = props.onLoadedMetadataCapture;\n const onLoadedMetadataCapture = useMemo(() => {\n return Object.assign(() => {\n }, __spreadProps(__spreadValues({}, parent), { [key]: value }));\n }, [parent, key, value]);\n return [parent == null ? void 0 : parent[key], { onLoadedMetadataCapture }];\n}\nfunction useIsMouseMoving() {\n useEffect(() => {\n addGlobalEventListener(\"mousemove\", setMouseMoving, true);\n addGlobalEventListener(\"mousedown\", resetMouseMoving, true);\n addGlobalEventListener(\"mouseup\", resetMouseMoving, true);\n addGlobalEventListener(\"keydown\", resetMouseMoving, true);\n addGlobalEventListener(\"scroll\", resetMouseMoving, true);\n }, []);\n const isMouseMoving = useEvent(() => mouseMoving);\n return isMouseMoving;\n}\nvar mouseMoving = false;\nvar previousScreenX = 0;\nvar previousScreenY = 0;\nfunction hasMouseMovement(event) {\n const movementX = event.movementX || event.screenX - previousScreenX;\n const movementY = event.movementY || event.screenY - previousScreenY;\n previousScreenX = event.screenX;\n previousScreenY = event.screenY;\n return movementX || movementY || process.env.NODE_ENV === \"test\";\n}\nfunction setMouseMoving(event) {\n if (!hasMouseMovement(event)) return;\n mouseMoving = true;\n}\nfunction resetMouseMoving() {\n mouseMoving = false;\n}\n\nexport {\n useSafeLayoutEffect,\n useInitialValue,\n useLazyValue,\n useLiveRef,\n usePreviousValue,\n useEvent,\n useTransactionState,\n useMergeRefs,\n useId,\n useDeferredValue,\n useTagName,\n useAttribute,\n useUpdateEffect,\n useUpdateLayoutEffect,\n useForceUpdate,\n useBooleanEvent,\n useWrapElement,\n usePortalRef,\n useMetadataProps,\n useIsMouseMoving\n};\n", "\"use client\";\nimport {\n useMergeRefs\n} from \"./ABQUS43J.js\";\nimport {\n getRefProperty,\n mergeProps\n} from \"./SK3NAZA3.js\";\nimport {\n __objRest,\n __spreadProps,\n __spreadValues\n} from \"./3YLGPPWQ.js\";\n\n// src/utils/system.tsx\nimport * as React from \"react\";\nimport { jsx } from \"react/jsx-runtime\";\nfunction forwardRef2(render) {\n const Role = React.forwardRef((props, ref) => render(__spreadProps(__spreadValues({}, props), { ref })));\n Role.displayName = render.displayName || render.name;\n return Role;\n}\nfunction memo2(Component, propsAreEqual) {\n return React.memo(Component, propsAreEqual);\n}\nfunction createElement(Type, props) {\n const _a = props, { wrapElement, render } = _a, rest = __objRest(_a, [\"wrapElement\", \"render\"]);\n const mergedRef = useMergeRefs(props.ref, getRefProperty(render));\n let element;\n if (React.isValidElement(render)) {\n const renderProps = __spreadProps(__spreadValues({}, render.props), { ref: mergedRef });\n element = React.cloneElement(render, mergeProps(rest, renderProps));\n } else if (render) {\n element = render(rest);\n } else {\n element = /* @__PURE__ */ jsx(Type, __spreadValues({}, rest));\n }\n if (wrapElement) {\n return wrapElement(element);\n }\n return element;\n}\nfunction createHook(useProps) {\n const useRole = (props = {}) => {\n return useProps(props);\n };\n useRole.displayName = useProps.name;\n return useRole;\n}\nfunction createStoreContext(providers = [], scopedProviders = []) {\n const context = React.createContext(void 0);\n const scopedContext = React.createContext(void 0);\n const useContext2 = () => React.useContext(context);\n const useScopedContext = (onlyScoped = false) => {\n const scoped = React.useContext(scopedContext);\n const store = useContext2();\n if (onlyScoped) return scoped;\n return scoped || store;\n };\n const useProviderContext = () => {\n const scoped = React.useContext(scopedContext);\n const store = useContext2();\n if (scoped && scoped === store) return;\n return store;\n };\n const ContextProvider = (props) => {\n return providers.reduceRight(\n (children, Provider) => /* @__PURE__ */ jsx(Provider, __spreadProps(__spreadValues({}, props), { children })),\n /* @__PURE__ */ jsx(context.Provider, __spreadValues({}, props))\n );\n };\n const ScopedContextProvider = (props) => {\n return /* @__PURE__ */ jsx(ContextProvider, __spreadProps(__spreadValues({}, props), { children: scopedProviders.reduceRight(\n (children, Provider) => /* @__PURE__ */ jsx(Provider, __spreadProps(__spreadValues({}, props), { children })),\n /* @__PURE__ */ jsx(scopedContext.Provider, __spreadValues({}, props))\n ) }));\n };\n return {\n context,\n scopedContext,\n useContext: useContext2,\n useScopedContext,\n useProviderContext,\n ContextProvider,\n ScopedContextProvider\n };\n}\n\nexport {\n forwardRef2 as forwardRef,\n memo2 as memo,\n createElement,\n createHook,\n createStoreContext\n};\n", "\"use client\";\nimport {\n createStoreContext\n} from \"./LMDWO4NN.js\";\n\n// src/collection/collection-context.tsx\nvar ctx = createStoreContext();\nvar useCollectionContext = ctx.useContext;\nvar useCollectionScopedContext = ctx.useScopedContext;\nvar useCollectionProviderContext = ctx.useProviderContext;\nvar CollectionContextProvider = ctx.ContextProvider;\nvar CollectionScopedContextProvider = ctx.ScopedContextProvider;\n\nexport {\n useCollectionContext,\n useCollectionScopedContext,\n useCollectionProviderContext,\n CollectionContextProvider,\n CollectionScopedContextProvider\n};\n", "\"use client\";\nimport {\n CollectionContextProvider,\n CollectionScopedContextProvider\n} from \"./VDHZ5F7K.js\";\nimport {\n createStoreContext\n} from \"./LMDWO4NN.js\";\n\n// src/composite/composite-context.tsx\nimport { createContext } from \"react\";\nvar ctx = createStoreContext(\n [CollectionContextProvider],\n [CollectionScopedContextProvider]\n);\nvar useCompositeContext = ctx.useContext;\nvar useCompositeScopedContext = ctx.useScopedContext;\nvar useCompositeProviderContext = ctx.useProviderContext;\nvar CompositeContextProvider = ctx.ContextProvider;\nvar CompositeScopedContextProvider = ctx.ScopedContextProvider;\nvar CompositeItemContext = createContext(\n void 0\n);\nvar CompositeRowContext = createContext(\n void 0\n);\n\nexport {\n useCompositeContext,\n useCompositeScopedContext,\n useCompositeProviderContext,\n CompositeContextProvider,\n CompositeScopedContextProvider,\n CompositeItemContext,\n CompositeRowContext\n};\n", "\"use client\";\nimport {\n CompositeContextProvider,\n CompositeScopedContextProvider\n} from \"./P7GR5CS5.js\";\nimport {\n createStoreContext\n} from \"./LMDWO4NN.js\";\n\n// src/tag/tag-context.tsx\nimport { createContext } from \"react\";\nvar TagValueContext = createContext(null);\nvar TagRemoveIdContext = createContext(\n null\n);\nvar ctx = createStoreContext(\n [CompositeContextProvider],\n [CompositeScopedContextProvider]\n);\nvar useTagContext = ctx.useContext;\nvar useTagScopedContext = ctx.useScopedContext;\nvar useTagProviderContext = ctx.useProviderContext;\nvar TagContextProvider = ctx.ContextProvider;\nvar TagScopedContextProvider = ctx.ScopedContextProvider;\n\nexport {\n TagValueContext,\n TagRemoveIdContext,\n useTagContext,\n useTagScopedContext,\n useTagProviderContext,\n TagContextProvider,\n TagScopedContextProvider\n};\n", "\"use client\";\nimport {\n applyState,\n chain,\n getKeys,\n hasOwnProperty,\n invariant,\n noop,\n omit,\n pick\n} from \"./PBFD2E7P.js\";\nimport {\n __spreadProps,\n __spreadValues\n} from \"./3YLGPPWQ.js\";\n\n// src/utils/store.ts\nfunction getInternal(store, key) {\n const internals = store.__unstableInternals;\n invariant(internals, \"Invalid store\");\n return internals[key];\n}\nfunction createStore(initialState, ...stores) {\n let state = initialState;\n let prevStateBatch = state;\n let lastUpdate = Symbol();\n let destroy = noop;\n const instances = /* @__PURE__ */ new Set();\n const updatedKeys = /* @__PURE__ */ new Set();\n const setups = /* @__PURE__ */ new Set();\n const listeners = /* @__PURE__ */ new Set();\n const batchListeners = /* @__PURE__ */ new Set();\n const disposables = /* @__PURE__ */ new WeakMap();\n const listenerKeys = /* @__PURE__ */ new WeakMap();\n const storeSetup = (callback) => {\n setups.add(callback);\n return () => setups.delete(callback);\n };\n const storeInit = () => {\n const initialized = instances.size;\n const instance = Symbol();\n instances.add(instance);\n const maybeDestroy = () => {\n instances.delete(instance);\n if (instances.size) return;\n destroy();\n };\n if (initialized) return maybeDestroy;\n const desyncs = getKeys(state).map(\n (key) => chain(\n ...stores.map((store) => {\n var _a;\n const storeState = (_a = store == null ? void 0 : store.getState) == null ? void 0 : _a.call(store);\n if (!storeState) return;\n if (!hasOwnProperty(storeState, key)) return;\n return sync(store, [key], (state2) => {\n setState(\n key,\n state2[key],\n // @ts-expect-error - Not public API. This is just to prevent\n // infinite loops.\n true\n );\n });\n })\n )\n );\n const teardowns = [];\n for (const setup2 of setups) {\n teardowns.push(setup2());\n }\n const cleanups = stores.map(init);\n destroy = chain(...desyncs, ...teardowns, ...cleanups);\n return maybeDestroy;\n };\n const sub = (keys, listener, set = listeners) => {\n set.add(listener);\n listenerKeys.set(listener, keys);\n return () => {\n var _a;\n (_a = disposables.get(listener)) == null ? void 0 : _a();\n disposables.delete(listener);\n listenerKeys.delete(listener);\n set.delete(listener);\n };\n };\n const storeSubscribe = (keys, listener) => sub(keys, listener);\n const storeSync = (keys, listener) => {\n disposables.set(listener, listener(state, state));\n return sub(keys, listener);\n };\n const storeBatch = (keys, listener) => {\n disposables.set(listener, listener(state, prevStateBatch));\n return sub(keys, listener, batchListeners);\n };\n const storePick = (keys) => createStore(pick(state, keys), finalStore);\n const storeOmit = (keys) => createStore(omit(state, keys), finalStore);\n const getState = () => state;\n const setState = (key, value, fromStores = false) => {\n var _a;\n if (!hasOwnProperty(state, key)) return;\n const nextValue = applyState(value, state[key]);\n if (nextValue === state[key]) return;\n if (!fromStores) {\n for (const store of stores) {\n (_a = store == null ? void 0 : store.setState) == null ? void 0 : _a.call(store, key, nextValue);\n }\n }\n const prevState = state;\n state = __spreadProps(__spreadValues({}, state), { [key]: nextValue });\n const thisUpdate = Symbol();\n lastUpdate = thisUpdate;\n updatedKeys.add(key);\n const run = (listener, prev, uKeys) => {\n var _a2;\n const keys = listenerKeys.get(listener);\n const updated = (k) => uKeys ? uKeys.has(k) : k === key;\n if (!keys || keys.some(updated)) {\n (_a2 = disposables.get(listener)) == null ? void 0 : _a2();\n disposables.set(listener, listener(state, prev));\n }\n };\n for (const listener of listeners) {\n run(listener, prevState);\n }\n queueMicrotask(() => {\n if (lastUpdate !== thisUpdate) return;\n const snapshot = state;\n for (const listener of batchListeners) {\n run(listener, prevStateBatch, updatedKeys);\n }\n prevStateBatch = snapshot;\n updatedKeys.clear();\n });\n };\n const finalStore = {\n getState,\n setState,\n __unstableInternals: {\n setup: storeSetup,\n init: storeInit,\n subscribe: storeSubscribe,\n sync: storeSync,\n batch: storeBatch,\n pick: storePick,\n omit: storeOmit\n }\n };\n return finalStore;\n}\nfunction setup(store, ...args) {\n if (!store) return;\n return getInternal(store, \"setup\")(...args);\n}\nfunction init(store, ...args) {\n if (!store) return;\n return getInternal(store, \"init\")(...args);\n}\nfunction subscribe(store, ...args) {\n if (!store) return;\n return getInternal(store, \"subscribe\")(...args);\n}\nfunction sync(store, ...args) {\n if (!store) return;\n return getInternal(store, \"sync\")(...args);\n}\nfunction batch(store, ...args) {\n if (!store) return;\n return getInternal(store, \"batch\")(...args);\n}\nfunction omit2(store, ...args) {\n if (!store) return;\n return getInternal(store, \"omit\")(...args);\n}\nfunction pick2(store, ...args) {\n if (!store) return;\n return getInternal(store, \"pick\")(...args);\n}\nfunction mergeStore(...stores) {\n const initialState = stores.reduce((state, store2) => {\n var _a;\n const nextState = (_a = store2 == null ? void 0 : store2.getState) == null ? void 0 : _a.call(store2);\n if (!nextState) return state;\n return Object.assign(state, nextState);\n }, {});\n const store = createStore(initialState, ...stores);\n return Object.assign({}, ...stores, store);\n}\nfunction throwOnConflictingProps(props, store) {\n if (process.env.NODE_ENV === \"production\") return;\n if (!store) return;\n const defaultKeys = Object.entries(props).filter(([key, value]) => key.startsWith(\"default\") && value !== void 0).map(([key]) => {\n var _a;\n const stateKey = key.replace(\"default\", \"\");\n return `${((_a = stateKey[0]) == null ? void 0 : _a.toLowerCase()) || \"\"}${stateKey.slice(1)}`;\n });\n if (!defaultKeys.length) return;\n const storeState = store.getState();\n const conflictingProps = defaultKeys.filter(\n (key) => hasOwnProperty(storeState, key)\n );\n if (!conflictingProps.length) return;\n throw new Error(\n `Passing a store prop in conjunction with a default state is not supported.\n\nconst store = useSelectStore();\n<SelectProvider store={store} defaultValue=\"Apple\" />\n ^ ^\n\nInstead, pass the default state to the topmost store:\n\nconst store = useSelectStore({ defaultValue: \"Apple\" });\n<SelectProvider store={store} />\n\nSee https://github.com/ariakit/ariakit/pull/2745 for more details.\n\nIf there's a particular need for this, please submit a feature request at https://github.com/ariakit/ariakit\n`\n );\n}\n\nexport {\n createStore,\n setup,\n init,\n subscribe,\n sync,\n batch,\n omit2 as omit,\n pick2 as pick,\n mergeStore,\n throwOnConflictingProps\n};\n", "\"use client\";\nimport {\n useEvent,\n useLiveRef,\n useSafeLayoutEffect\n} from \"./ABQUS43J.js\";\nimport {\n __spreadProps,\n __spreadValues\n} from \"./3YLGPPWQ.js\";\n\n// src/utils/store.tsx\nimport { hasOwnProperty, identity } from \"@ariakit/core/utils/misc\";\nimport { batch, init, subscribe, sync } from \"@ariakit/core/utils/store\";\nimport * as React from \"react\";\nimport useSyncExternalStoreExports from \"use-sync-external-store/shim/index.js\";\nvar { useSyncExternalStore } = useSyncExternalStoreExports;\nvar noopSubscribe = () => () => {\n};\nfunction useStoreState(store, keyOrSelector = identity) {\n const storeSubscribe = React.useCallback(\n (callback) => {\n if (!store) return noopSubscribe();\n return subscribe(store, null, callback);\n },\n [store]\n );\n const getSnapshot = () => {\n const key = typeof keyOrSelector === \"string\" ? keyOrSelector : null;\n const selector = typeof keyOrSelector === \"function\" ? keyOrSelector : null;\n const state = store == null ? void 0 : store.getState();\n if (selector) return selector(state);\n if (!state) return;\n if (!key) return;\n if (!hasOwnProperty(state, key)) return;\n return state[key];\n };\n return useSyncExternalStore(storeSubscribe, getSnapshot, getSnapshot);\n}\nfunction useStoreStateObject(store, object) {\n const objRef = React.useRef(\n {}\n );\n const storeSubscribe = React.useCallback(\n (callback) => {\n if (!store) return noopSubscribe();\n return subscribe(store, null, callback);\n },\n [store]\n );\n const getSnapshot = () => {\n const state = store == null ? void 0 : store.getState();\n let updated = false;\n const obj = objRef.current;\n for (const prop in object) {\n const keyOrSelector = object[prop];\n if (typeof keyOrSelector === \"function\") {\n const value = keyOrSelector(state);\n if (value !== obj[prop]) {\n obj[prop] = value;\n updated = true;\n }\n }\n if (typeof keyOrSelector === \"string\") {\n if (!state) continue;\n if (!hasOwnProperty(state, keyOrSelector)) continue;\n const value = state[keyOrSelector];\n if (value !== obj[prop]) {\n obj[prop] = value;\n updated = true;\n }\n }\n }\n if (updated) {\n objRef.current = __spreadValues({}, obj);\n }\n return objRef.current;\n };\n return useSyncExternalStore(storeSubscribe, getSnapshot, getSnapshot);\n}\nfunction useStoreProps(store, props, key, setKey) {\n const value = hasOwnProperty(props, key) ? props[key] : void 0;\n const setValue = setKey ? props[setKey] : void 0;\n const propsRef = useLiveRef({ value, setValue });\n useSafeLayoutEffect(() => {\n return sync(store, [key], (state, prev) => {\n const { value: value2, setValue: setValue2 } = propsRef.current;\n if (!setValue2) return;\n if (state[key] === prev[key]) return;\n if (state[key] === value2) return;\n setValue2(state[key]);\n });\n }, [store, key]);\n useSafeLayoutEffect(() => {\n if (value === void 0) return;\n store.setState(key, value);\n return batch(store, [key], () => {\n if (value === void 0) return;\n store.setState(key, value);\n });\n });\n}\nfunction useStore(createStore, props) {\n const [store, setStore] = React.useState(() => createStore(props));\n useSafeLayoutEffect(() => init(store), [store]);\n const useState2 = React.useCallback(\n (keyOrSelector) => useStoreState(store, keyOrSelector),\n [store]\n );\n const memoizedStore = React.useMemo(\n () => __spreadProps(__spreadValues({}, store), { useState: useState2 }),\n [store, useState2]\n );\n const updateStore = useEvent(() => {\n setStore((store2) => createStore(__spreadValues(__spreadValues({}, props), store2.getState())));\n });\n return [memoizedStore, updateStore];\n}\n\nexport {\n useStoreState,\n useStoreStateObject,\n useStoreProps,\n useStore\n};\n", "\"use client\";\nimport {\n batch,\n createStore,\n init,\n setup,\n throwOnConflictingProps\n} from \"./BCALMBPZ.js\";\nimport {\n chain,\n defaultValue\n} from \"./PBFD2E7P.js\";\nimport {\n getDocument,\n sortBasedOnDOMPosition\n} from \"./DTR5TSDJ.js\";\nimport {\n __spreadProps,\n __spreadValues\n} from \"./3YLGPPWQ.js\";\n\n// src/collection/collection-store.ts\nfunction getCommonParent(items) {\n var _a;\n const firstItem = items.find((item) => !!item.element);\n const lastItem = [...items].reverse().find((item) => !!item.element);\n let parentElement = (_a = firstItem == null ? void 0 : firstItem.element) == null ? void 0 : _a.parentElement;\n while (parentElement && (lastItem == null ? void 0 : lastItem.element)) {\n const parent = parentElement;\n if (lastItem && parent.contains(lastItem.element)) {\n return parentElement;\n }\n parentElement = parentElement.parentElement;\n }\n return getDocument(parentElement).body;\n}\nfunction getPrivateStore(store) {\n return store == null ? void 0 : store.__unstablePrivateStore;\n}\nfunction createCollectionStore(props = {}) {\n var _a;\n throwOnConflictingProps(props, props.store);\n const syncState = (_a = props.store) == null ? void 0 : _a.getState();\n const items = defaultValue(\n props.items,\n syncState == null ? void 0 : syncState.items,\n props.defaultItems,\n []\n );\n const itemsMap = new Map(items.map((item) => [item.id, item]));\n const initialState = {\n items,\n renderedItems: defaultValue(syncState == null ? void 0 : syncState.renderedItems, [])\n };\n const syncPrivateStore = getPrivateStore(props.store);\n const privateStore = createStore(\n { items, renderedItems: initialState.renderedItems },\n syncPrivateStore\n );\n const collection = createStore(initialState, props.store);\n const sortItems = (renderedItems) => {\n const sortedItems = sortBasedOnDOMPosition(renderedItems, (i) => i.element);\n privateStore.setState(\"renderedItems\", sortedItems);\n collection.setState(\"renderedItems\", sortedItems);\n };\n setup(collection, () => init(privateStore));\n setup(privateStore, () => {\n return batch(privateStore, [\"items\"], (state) => {\n collection.setState(\"items\", state.items);\n });\n });\n setup(privateStore, () => {\n return batch(privateStore, [\"renderedItems\"], (state) => {\n let firstRun = true;\n let raf = requestAnimationFrame(() => {\n const { renderedItems } = collection.getState();\n if (state.renderedItems === renderedItems) return;\n sortItems(state.renderedItems);\n });\n if (typeof IntersectionObserver !== \"function\") {\n return () => cancelAnimationFrame(raf);\n }\n const ioCallback = () => {\n if (firstRun) {\n firstRun = false;\n return;\n }\n cancelAnimationFrame(raf);\n raf = requestAnimationFrame(() => sortItems(state.renderedItems));\n };\n const root = getCommonParent(state.renderedItems);\n const observer = new IntersectionObserver(ioCallback, { root });\n for (const item of state.renderedItems) {\n if (!item.element) continue;\n observer.observe(item.element);\n }\n return () => {\n cancelAnimationFrame(raf);\n observer.disconnect();\n };\n });\n });\n const mergeItem = (item, setItems, canDeleteFromMap = false) => {\n let prevItem;\n setItems((items2) => {\n const index = items2.findIndex(({ id }) => id === item.id);\n const nextItems = items2.slice();\n if (index !== -1) {\n prevItem = items2[index];\n const nextItem = __spreadValues(__spreadValues({}, prevItem), item);\n nextItems[index] = nextItem;\n itemsMap.set(item.id, nextItem);\n } else {\n nextItems.push(item);\n itemsMap.set(item.id, item);\n }\n return nextItems;\n });\n const unmergeItem = () => {\n setItems((items2) => {\n if (!prevItem) {\n if (canDeleteFromMap) {\n itemsMap.delete(item.id);\n }\n return items2.filter(({ id }) => id !== item.id);\n }\n const index = items2.findIndex(({ id }) => id === item.id);\n if (index === -1) return items2;\n const nextItems = items2.slice();\n nextItems[index] = prevItem;\n itemsMap.set(item.id, prevItem);\n return nextItems;\n });\n };\n return unmergeItem;\n };\n const registerItem = (item) => mergeItem(\n item,\n (getItems) => privateStore.setState(\"items\", getItems),\n true\n );\n return __spreadProps(__spreadValues({}, collection), {\n registerItem,\n renderItem: (item) => chain(\n registerItem(item),\n mergeItem(\n item,\n (getItems) => privateStore.setState(\"renderedItems\", getItems)\n )\n ),\n item: (id) => {\n if (!id) return null;\n let item = itemsMap.get(id);\n if (!item) {\n const { items: items2 } = privateStore.getState();\n item = items2.find((item2) => item2.id === id);\n if (item) {\n itemsMap.set(id, item);\n }\n }\n return item || null;\n },\n // @ts-expect-error Internal\n __unstablePrivateStore: privateStore\n });\n}\n\nexport {\n createCollectionStore\n};\n", "\"use client\";\nimport {\n useStore,\n useStoreProps\n} from \"./YV4JVR4I.js\";\nimport {\n useUpdateEffect\n} from \"./ABQUS43J.js\";\n\n// src/collection/collection-store.ts\nimport * as Core from \"@ariakit/core/collection/collection-store\";\nfunction useCollectionStoreProps(store, update, props) {\n useUpdateEffect(update, [props.store]);\n useStoreProps(store, props, \"items\", \"setItems\");\n return store;\n}\nfunction useCollectionStore(props = {}) {\n const [store, update] = useStore(Core.createCollectionStore, props);\n return useCollectionStoreProps(store, update, props);\n}\n\nexport {\n useCollectionStoreProps,\n useCollectionStore\n};\n", "\"use client\";\n\n// src/utils/array.ts\nfunction toArray(arg) {\n if (Array.isArray(arg)) {\n return arg;\n }\n return typeof arg !== \"undefined\" ? [arg] : [];\n}\nfunction addItemToArray(array, item, index = -1) {\n if (!(index in array)) {\n return [...array, item];\n }\n return [...array.slice(0, index), item, ...array.slice(index)];\n}\nfunction flatten2DArray(array) {\n const flattened = [];\n for (const row of array) {\n flattened.push(...row);\n }\n return flattened;\n}\nfunction reverseArray(array) {\n return array.slice().reverse();\n}\n\nexport {\n toArray,\n addItemToArray,\n flatten2DArray,\n reverseArray\n};\n", "\"use client\";\nimport {\n createCollectionStore\n} from \"./CYQWQL4J.js\";\nimport {\n flatten2DArray,\n reverseArray\n} from \"./7PRQYBBV.js\";\nimport {\n createStore,\n setup,\n sync\n} from \"./BCALMBPZ.js\";\nimport {\n defaultValue\n} from \"./PBFD2E7P.js\";\nimport {\n __spreadProps,\n __spreadValues\n} from \"./3YLGPPWQ.js\";\n\n// src/composite/composite-store.ts\nvar NULL_ITEM = { id: null };\nfunction findFirstEnabledItem(items, excludeId) {\n return items.find((item) => {\n if (excludeId) {\n return !item.disabled && item.id !== excludeId;\n }\n return !item.disabled;\n });\n}\nfunction getEnabledItems(items, excludeId) {\n return items.filter((item) => {\n if (excludeId) {\n return !item.disabled && item.id !== excludeId;\n }\n return !item.disabled;\n });\n}\nfunction getItemsInRow(items, rowId) {\n return items.filter((item) => item.rowId === rowId);\n}\nfunction flipItems(items, activeId, shouldInsertNullItem = false) {\n const index = items.findIndex((item) => item.id === activeId);\n return [\n ...items.slice(index + 1),\n ...shouldInsertNullItem ? [NULL_ITEM] : [],\n ...items.slice(0, index)\n ];\n}\nfunction groupItemsByRows(items) {\n const rows = [];\n for (const item of items) {\n const row = rows.find((currentRow) => {\n var _a;\n return ((_a = currentRow[0]) == null ? void 0 : _a.rowId) === item.rowId;\n });\n if (row) {\n row.push(item);\n } else {\n rows.push([item]);\n }\n }\n return rows;\n}\nfunction getMaxRowLength(array) {\n let maxLength = 0;\n for (const { length } of array) {\n if (length > maxLength) {\n maxLength = length;\n }\n }\n return maxLength;\n}\nfunction createEmptyItem(rowId) {\n return {\n id: \"__EMPTY_ITEM__\",\n disabled: true,\n rowId\n };\n}\nfunction normalizeRows(rows, activeId, focusShift) {\n const maxLength = getMaxRowLength(rows);\n for (const row of rows) {\n for (let i = 0; i < maxLength; i += 1) {\n const item = row[i];\n if (!item || focusShift && item.disabled) {\n const isFirst = i === 0;\n const previousItem = isFirst && focusShift ? findFirstEnabledItem(row) : row[i - 1];\n row[i] = previousItem && activeId !== previousItem.id && focusShift ? previousItem : createEmptyItem(previousItem == null ? void 0 : previousItem.rowId);\n }\n }\n }\n return rows;\n}\nfunction verticalizeItems(items) {\n const rows = groupItemsByRows(items);\n const maxLength = getMaxRowLength(rows);\n const verticalized = [];\n for (let i = 0; i < maxLength; i += 1) {\n for (const row of rows) {\n const item = row[i];\n if (item) {\n verticalized.push(__spreadProps(__spreadValues({}, item), {\n // If there's no rowId, it means that it's not a grid composite, but\n // a single row instead. So, instead of verticalizing it, that is,\n // assigning a different rowId based on the column index, we keep it\n // undefined so they will be part of the same row. This is useful\n // when using up/down on one-dimensional composites.\n rowId: item.rowId ? `${i}` : void 0\n }));\n }\n }\n }\n return verticalized;\n}\nfunction createCompositeStore(props = {}) {\n var _a;\n const syncState = (_a = props.store) == null ? void 0 : _a.getState();\n const collection = createCollectionStore(props);\n const activeId = defaultValue(\n props.activeId,\n syncState == null ? void 0 : syncState.activeId,\n props.defaultActiveId\n );\n const initialState = __spreadProps(__spreadValues({}, collection.getState()), {\n id: defaultValue(\n props.id,\n syncState == null ? void 0 : syncState.id,\n `id-${Math.random().toString(36).slice(2, 8)}`\n ),\n activeId,\n baseElement: defaultValue(syncState == null ? void 0 : syncState.baseElement, null),\n includesBaseElement: defaultValue(\n props.includesBaseElement,\n syncState == null ? void 0 : syncState.includesBaseElement,\n activeId === null\n ),\n moves: defaultValue(syncState == null ? void 0 : syncState.moves, 0),\n orientation: defaultValue(\n props.orientation,\n syncState == null ? void 0 : syncState.orientation,\n \"both\"\n ),\n rtl: defaultValue(props.rtl, syncState == null ? void 0 : syncState.rtl, false),\n virtualFocus: defaultValue(\n props.virtualFocus,\n syncState == null ? void 0 : syncState.virtualFocus,\n false\n ),\n focusLoop: defaultValue(props.focusLoop, syncState == null ? void 0 : syncState.focusLoop, false),\n focusWrap: defaultValue(props.focusWrap, syncState == null ? void 0 : syncState.focusWrap, false),\n focusShift: defaultValue(props.focusShift, syncState == null ? void 0 : syncState.focusShift, false)\n });\n const composite = createStore(initialState, collection, props.store);\n setup(\n composite,\n () => sync(composite, [\"renderedItems\", \"activeId\"], (state) => {\n composite.setState(\"activeId\", (activeId2) => {\n var _a2;\n if (activeId2 !== void 0) return activeId2;\n return (_a2 = findFirstEnabledItem(state.renderedItems)) == null ? void 0 : _a2.id;\n });\n })\n );\n const getNextId = (direction = \"next\", options = {}) => {\n var _a2, _b;\n const defaultState = composite.getState();\n const {\n skip = 0,\n activeId: activeId2 = defaultState.activeId,\n focusShift = defaultState.focusShift,\n focusLoop = defaultState.focusLoop,\n focusWrap = defaultState.focusWrap,\n includesBaseElement = defaultState.includesBaseElement,\n renderedItems = defaultState.renderedItems,\n rtl = defaultState.rtl\n } = options;\n const isVerticalDirection = direction === \"up\" || direction === \"down\";\n const isNextDirection = direction === \"next\" || direction === \"down\";\n const canReverse = isNextDirection ? rtl && !isVerticalDirection : !rtl || isVerticalDirection;\n const canShift = focusShift && !skip;\n let items = !isVerticalDirection ? renderedItems : flatten2DArray(\n normalizeRows(groupItemsByRows(renderedItems), activeId2, canShift)\n );\n items = canReverse ? reverseArray(items) : items;\n items = isVerticalDirection ? verticalizeItems(items) : items;\n if (activeId2 == null) {\n return (_a2 = findFirstEnabledItem(items)) == null ? void 0 : _a2.id;\n }\n const activeItem = items.find((item) => item.id === activeId2);\n if (!activeItem) {\n return (_b = findFirstEnabledItem(items)) == null ? void 0 : _b.id;\n }\n const isGrid = items.some((item) => item.rowId);\n const activeIndex = items.indexOf(activeItem);\n const nextItems = items.slice(activeIndex + 1);\n const nextItemsInRow = getItemsInRow(nextItems, activeItem.rowId);\n if (skip) {\n const nextEnabledItemsInRow = getEnabledItems(nextItemsInRow, activeId2);\n const nextItem2 = nextEnabledItemsInRow.slice(skip)[0] || // If we can't find an item, just return the last one.\n nextEnabledItemsInRow[nextEnabledItemsInRow.length - 1];\n return nextItem2 == null ? void 0 : nextItem2.id;\n }\n const canLoop = focusLoop && (isVerticalDirection ? focusLoop !== \"horizontal\" : focusLoop !== \"vertical\");\n const canWrap = isGrid && focusWrap && (isVerticalDirection ? focusWrap !== \"horizontal\" : focusWrap !== \"vertical\");\n const hasNullItem = isNextDirection ? (!isGrid || isVerticalDirection) && canLoop && includesBaseElement : isVerticalDirection ? includesBaseElement : false;\n if (canLoop) {\n const loopItems = canWrap && !hasNullItem ? items : getItemsInRow(items, activeItem.rowId);\n const sortedItems = flipItems(loopItems, activeId2, hasNullItem);\n const nextItem2 = findFirstEnabledItem(sortedItems, activeId2);\n return nextItem2 == null ? void 0 : nextItem2.id;\n }\n if (canWrap) {\n const nextItem2 = findFirstEnabledItem(\n // We can use nextItems, which contains all the next items, including\n // items from other rows, to wrap between rows. However, if there is a\n // null item (the composite container), we'll only use the next items in\n // the row. So moving next from the last item will focus on the\n // composite container. On grid composites, horizontal navigation never\n // focuses on the composite container, only vertical.\n hasNullItem ? nextItemsInRow : nextItems,\n activeId2\n );\n const nextId = hasNullItem ? (nextItem2 == null ? void 0 : nextItem2.id) || null : nextItem2 == null ? void 0 : nextItem2.id;\n return nextId;\n }\n const nextItem = findFirstEnabledItem(nextItemsInRow, activeId2);\n if (!nextItem && hasNullItem) {\n return null;\n }\n return nextItem == null ? void 0 : nextItem.id;\n };\n return __spreadProps(__spreadValues(__spreadValues({}, collection), composite), {\n setBaseElement: (element) => composite.setState(\"baseElement\", element),\n setActiveId: (id) => composite.setState(\"activeId\", id),\n move: (id) => {\n if (id === void 0) return;\n composite.setState(\"activeId\", id);\n composite.setState(\"moves\", (moves) => moves + 1);\n },\n first: () => {\n var _a2;\n return (_a2 = findFirstEnabledItem(composite.getState().renderedItems)) == null ? void 0 : _a2.id;\n },\n last: () => {\n var _a2;\n return (_a2 = findFirstEnabledItem(reverseArray(composite.getState().renderedItems))) == null ? void 0 : _a2.id;\n },\n next: (options) => {\n if (options !== void 0 && typeof options === \"number\") {\n options = { skip: options };\n }\n return getNextId(\"next\", options);\n },\n previous: (options) => {\n if (options !== void 0 && typeof options === \"number\") {\n options = { skip: options };\n }\n return getNextId(\"previous\", options);\n },\n down: (options) => {\n if (options !== void 0 && typeof options === \"number\") {\n options = { skip: options };\n }\n return getNextId(\"down\", options);\n },\n up: (options) => {\n if (options !== void 0 && typeof options === \"number\") {\n options = { skip: options };\n }\n return getNextId(\"up\", options);\n }\n });\n}\n\nexport {\n createCompositeStore\n};\n", "\"use client\";\nimport {\n useCollectionStoreProps\n} from \"./C3IKGW5T.js\";\nimport {\n useStore,\n useStoreProps\n} from \"./YV4JVR4I.js\";\nimport {\n useId\n} from \"./ABQUS43J.js\";\nimport {\n __spreadValues\n} from \"./3YLGPPWQ.js\";\n\n// src/composite/composite-store.ts\nimport * as Core from \"@ariakit/core/composite/composite-store\";\nfunction useCompositeStoreOptions(props) {\n const id = useId(props.id);\n return __spreadValues({ id }, props);\n}\nfunction useCompositeStoreProps(store, update, props) {\n store = useCollectionStoreProps(store, update, props);\n useStoreProps(store, props, \"activeId\", \"setActiveId\");\n useStoreProps(store, props, \"includesBaseElement\");\n useStoreProps(store, props, \"virtualFocus\");\n useStoreProps(store, props, \"orientation\");\n useStoreProps(store, props, \"rtl\");\n useStoreProps(store, props, \"focusLoop\");\n useStoreProps(store, props, \"focusWrap\");\n useStoreProps(store, props, \"focusShift\");\n return store;\n}\nfunction useCompositeStore(props = {}) {\n props = useCompositeStoreOptions(props);\n const [store, update] = useStore(Core.createCompositeStore, props);\n return useCompositeStoreProps(store, update, props);\n}\n\nexport {\n useCompositeStoreOptions,\n useCompositeStoreProps,\n useCompositeStore\n};\n", "\"use client\";\nimport {\n createStore,\n mergeStore,\n omit,\n setup,\n subscribe,\n sync,\n throwOnConflictingProps\n} from \"./BCALMBPZ.js\";\nimport {\n defaultValue\n} from \"./PBFD2E7P.js\";\nimport {\n __spreadProps,\n __spreadValues\n} from \"./3YLGPPWQ.js\";\n\n// src/disclosure/disclosure-store.ts\nfunction createDisclosureStore(props = {}) {\n const store = mergeStore(\n props.store,\n omit(props.disclosure, [\"contentElement\", \"disclosureElement\"])\n );\n throwOnConflictingProps(props, store);\n const syncState = store == null ? void 0 : store.getState();\n const open = defaultValue(\n props.open,\n syncState == null ? void 0 : syncState.open,\n props.defaultOpen,\n false\n );\n const animated = defaultValue(props.animated, syncState == null ? void 0 : syncState.animated, false);\n const initialState = {\n open,\n animated,\n animating: !!animated && open,\n mounted: open,\n contentElement: defaultValue(syncState == null ? void 0 : syncState.contentElement, null),\n disclosureElement: defaultValue(syncState == null ? void 0 : syncState.disclosureElement, null)\n };\n const disclosure = createStore(initialState, store);\n setup(\n disclosure,\n () => sync(disclosure, [\"animated\", \"animating\"], (state) => {\n if (state.animated) return;\n disclosure.setState(\"animating\", false);\n })\n );\n setup(\n disclosure,\n () => subscribe(disclosure, [\"open\"], () => {\n if (!disclosure.getState().animated) return;\n disclosure.setState(\"animating\", true);\n })\n );\n setup(\n disclosure,\n () => sync(disclosure, [\"open\", \"animating\"], (state) => {\n disclosure.setState(\"mounted\", state.open || state.animating);\n })\n );\n return __spreadProps(__spreadValues({}, disclosure), {\n disclosure: props.disclosure,\n setOpen: (value) => disclosure.setState(\"open\", value),\n show: () => disclosure.setState(\"open\", true),\n hide: () => disclosure.setState(\"open\", false),\n toggle: () => disclosure.setState(\"open\", (open2) => !open2),\n stopAnimation: () => disclosure.setState(\"animating\", false),\n setContentElement: (value) => disclosure.setState(\"contentElement\", value),\n setDisclosureElement: (value) => disclosure.setState(\"disclosureElement\", value)\n });\n}\n\nexport {\n createDisclosureStore\n};\n", "\"use client\";\nimport {\n useStore,\n useStoreProps\n} from \"./YV4JVR4I.js\";\nimport {\n useUpdateEffect\n} from \"./ABQUS43J.js\";\n\n// src/disclosure/disclosure-store.ts\nimport * as Core from \"@ariakit/core/disclosure/disclosure-store\";\nfunction useDisclosureStoreProps(store, update, props) {\n useUpdateEffect(update, [props.store, props.disclosure]);\n useStoreProps(store, props, \"open\", \"setOpen\");\n useStoreProps(store, props, \"mounted\", \"setMounted\");\n useStoreProps(store, props, \"animated\");\n return Object.assign(store, { disclosure: props.disclosure });\n}\nfunction useDisclosureStore(props = {}) {\n const [store, update] = useStore(Core.createDisclosureStore, props);\n return useDisclosureStoreProps(store, update, props);\n}\n\nexport {\n useDisclosureStoreProps,\n useDisclosureStore\n};\n", "\"use client\";\nimport {\n createDisclosureStore\n} from \"./RCQ5P4YE.js\";\n\n// src/dialog/dialog-store.ts\nfunction createDialogStore(props = {}) {\n return createDisclosureStore(props);\n}\n\nexport {\n createDialogStore\n};\n", "\"use client\";\nimport {\n useDisclosureStoreProps\n} from \"./WYCIER3C.js\";\nimport {\n useStore\n} from \"./YV4JVR4I.js\";\n\n// src/dialog/dialog-store.ts\nimport * as Core from \"@ariakit/core/dialog/dialog-store\";\nfunction useDialogStoreProps(store, update, props) {\n return useDisclosureStoreProps(store, update, props);\n}\nfunction useDialogStore(props = {}) {\n const [store, update] = useStore(Core.createDialogStore, props);\n return useDialogStoreProps(store, update, props);\n}\n\nexport {\n useDialogStoreProps,\n useDialogStore\n};\n", "\"use client\";\nimport {\n createDialogStore\n} from \"./FZZ2AVHF.js\";\nimport {\n createStore,\n mergeStore,\n omit,\n throwOnConflictingProps\n} from \"./BCALMBPZ.js\";\nimport {\n defaultValue\n} from \"./PBFD2E7P.js\";\nimport {\n __objRest,\n __spreadProps,\n __spreadValues\n} from \"./3YLGPPWQ.js\";\n\n// src/popover/popover-store.ts\nfunction createPopoverStore(_a = {}) {\n var _b = _a, {\n popover: otherPopover\n } = _b, props = __objRest(_b, [\n \"popover\"\n ]);\n const store = mergeStore(\n props.store,\n omit(otherPopover, [\n \"arrowElement\",\n \"anchorElement\",\n \"contentElement\",\n \"popoverElement\",\n \"disclosureElement\"\n ])\n );\n throwOnConflictingProps(props, store);\n const syncState = store == null ? void 0 : store.getState();\n const dialog = createDialogStore(__spreadProps(__spreadValues({}, props), { store }));\n const placement = defaultValue(\n props.placement,\n syncState == null ? void 0 : syncState.placement,\n \"bottom\"\n );\n const initialState = __spreadProps(__spreadValues({}, dialog.getState()), {\n placement,\n currentPlacement: placement,\n anchorElement: defaultValue(syncState == null ? void 0 : syncState.anchorElement, null),\n popoverElement: defaultValue(syncState == null ? void 0 : syncState.popoverElement, null),\n arrowElement: defaultValue(syncState == null ? void 0 : syncState.arrowElement, null),\n rendered: Symbol(\"rendered\")\n });\n const popover = createStore(initialState, dialog, store);\n return __spreadProps(__spreadValues(__spreadValues({}, dialog), popover), {\n setAnchorElement: (element) => popover.setState(\"anchorElement\", element),\n setPopoverElement: (element) => popover.setState(\"popoverElement\", element),\n setArrowElement: (element) => popover.setState(\"arrowElement\", element),\n render: () => popover.setState(\"rendered\", Symbol(\"rendered\"))\n });\n}\n\nexport {\n createPopoverStore\n};\n", "\"use client\";\nimport {\n useDialogStoreProps\n} from \"./BM6PGYQY.js\";\nimport {\n useStore,\n useStoreProps\n} from \"./YV4JVR4I.js\";\nimport {\n useUpdateEffect\n} from \"./ABQUS43J.js\";\n\n// src/popover/popover-store.ts\nimport * as Core from \"@ariakit/core/popover/popover-store\";\nfunction usePopoverStoreProps(store, update, props) {\n useUpdateEffect(update, [props.popover]);\n useStoreProps(store, props, \"placement\");\n return useDialogStoreProps(store, update, props);\n}\nfunction usePopoverStore(props = {}) {\n const [store, update] = useStore(Core.createPopoverStore, props);\n return usePopoverStoreProps(store, update, props);\n}\n\nexport {\n usePopoverStoreProps,\n usePopoverStore\n};\n", "\"use client\";\nimport {\n createCompositeStore\n} from \"../__chunks/AJZ4BYF3.js\";\nimport \"../__chunks/CYQWQL4J.js\";\nimport \"../__chunks/7PRQYBBV.js\";\nimport {\n createPopoverStore\n} from \"../__chunks/ME2CUF3F.js\";\nimport \"../__chunks/FZZ2AVHF.js\";\nimport \"../__chunks/RCQ5P4YE.js\";\nimport {\n batch,\n createStore,\n mergeStore,\n pick,\n setup,\n sync,\n throwOnConflictingProps\n} from \"../__chunks/BCALMBPZ.js\";\nimport {\n chain,\n defaultValue\n} from \"../__chunks/PBFD2E7P.js\";\nimport {\n isSafari,\n isTouchDevice\n} from \"../__chunks/QAGXQEUG.js\";\nimport \"../__chunks/DTR5TSDJ.js\";\nimport {\n __objRest,\n __spreadProps,\n __spreadValues\n} from \"../__chunks/3YLGPPWQ.js\";\n\n// src/combobox/combobox-store.ts\nvar isTouchSafari = isSafari() && isTouchDevice();\nfunction createComboboxStore(_a = {}) {\n var _b = _a, {\n tag\n } = _b, props = __objRest(_b, [\n \"tag\"\n ]);\n const store = mergeStore(props.store, pick(tag, [\"value\", \"rtl\"]));\n throwOnConflictingProps(props, store);\n const tagState = tag == null ? void 0 : tag.getState();\n const syncState = store == null ? void 0 : store.getState();\n const activeId = defaultValue(\n props.activeId,\n syncState == null ? void 0 : syncState.activeId,\n props.defaultActiveId,\n null\n );\n const composite = createCompositeStore(__spreadProps(__spreadValues({}, props), {\n activeId,\n includesBaseElement: defaultValue(\n props.includesBaseElement,\n syncState == null ? void 0 : syncState.includesBaseElement,\n true\n ),\n orientation: defaultValue(\n props.orientation,\n syncState == null ? void 0 : syncState.orientation,\n \"vertical\"\n ),\n focusLoop: defaultValue(props.focusLoop, syncState == null ? void 0 : syncState.focusLoop, true),\n focusWrap: defaultValue(props.focusWrap, syncState == null ? void 0 : syncState.focusWrap, true),\n virtualFocus: defaultValue(\n props.virtualFocus,\n syncState == null ? void 0 : syncState.virtualFocus,\n true\n )\n }));\n const popover = createPopoverStore(__spreadProps(__spreadValues({}, props), {\n placement: defaultValue(\n props.placement,\n syncState == null ? void 0 : syncState.placement,\n \"bottom-start\"\n )\n }));\n const value = defaultValue(\n props.value,\n syncState == null ? void 0 : syncState.value,\n props.defaultValue,\n \"\"\n );\n const selectedValue = defaultValue(\n props.selectedValue,\n syncState == null ? void 0 : syncState.selectedValue,\n tagState == null ? void 0 : tagState.values,\n props.defaultSelectedValue,\n \"\"\n );\n const multiSelectable = Array.isArray(selectedValue);\n const initialState = __spreadProps(__spreadValues(__spreadValues({}, composite.getState()), popover.getState()), {\n value,\n selectedValue,\n resetValueOnSelect: defaultValue(\n props.resetValueOnSelect,\n syncState == null ? void 0 : syncState.resetValueOnSelect,\n multiSelectable\n ),\n resetValueOnHide: defaultValue(\n props.resetValueOnHide,\n syncState == null ? void 0 : syncState.resetValueOnHide,\n multiSelectable && !tag\n ),\n activeValue: syncState == null ? void 0 : syncState.activeValue\n });\n const combobox = createStore(initialState, composite, popover, store);\n if (isTouchSafari) {\n setup(\n combobox,\n () => sync(combobox, [\"virtualFocus\"], () => {\n combobox.setState(\"virtualFocus\", false);\n })\n );\n }\n setup(combobox, () => {\n if (!tag) return;\n return chain(\n sync(combobox, [\"selectedValue\"], (state) => {\n if (!Array.isArray(state.selectedValue)) return;\n tag.setValues(state.selectedValue);\n }),\n sync(tag, [\"values\"], (state) => {\n combobox.setState(\"selectedValue\", state.values);\n })\n );\n });\n setup(\n combobox,\n () => sync(combobox, [\"resetValueOnHide\", \"mounted\"], (state) => {\n if (!state.resetValueOnHide) return;\n if (state.mounted) return;\n combobox.setState(\"value\", value);\n })\n );\n setup(\n combobox,\n () => sync(combobox, [\"open\"], (state) => {\n if (state.open) return;\n combobox.setState(\"activeId\", activeId);\n combobox.setState(\"moves\", 0);\n })\n );\n setup(\n combobox,\n () => sync(combobox, [\"moves\", \"activeId\"], (state, prevState) => {\n if (state.moves === prevState.moves) {\n combobox.setState(\"activeValue\", void 0);\n }\n })\n );\n setup(\n combobox,\n () => batch(combobox, [\"moves\", \"renderedItems\"], (state, prev) => {\n if (state.moves === prev.moves) return;\n const { activeId: activeId2 } = combobox.getState();\n const activeItem = composite.item(activeId2);\n combobox.setState(\"activeValue\", activeItem == null ? void 0 : activeItem.value);\n })\n );\n return __spreadProps(__spreadValues(__spreadValues(__spreadValues({}, popover), composite), combobox), {\n tag,\n setValue: (value2) => combobox.setState(\"value\", value2),\n resetValue: () => combobox.setState(\"value\", initialState.value),\n setSelectedValue: (selectedValue2) => combobox.setState(\"selectedValue\", selectedValue2)\n });\n}\nexport {\n createComboboxStore\n};\n", "\"use client\";\nimport {\n useTagContext\n} from \"./3XAVFTCA.js\";\nimport {\n useCompositeStoreOptions,\n useCompositeStoreProps\n} from \"./4CMBR7SL.js\";\nimport {\n usePopoverStoreProps\n} from \"./O2PQ2652.js\";\nimport {\n useStore,\n useStoreProps\n} from \"./YV4JVR4I.js\";\nimport {\n useUpdateEffect\n} from \"./ABQUS43J.js\";\nimport {\n __spreadProps,\n __spreadValues\n} from \"./3YLGPPWQ.js\";\n\n// src/combobox/combobox-store.ts\nimport * as Core from \"@ariakit/core/combobox/combobox-store\";\nfunction useComboboxStoreOptions(props) {\n const tag = useTagContext();\n props = __spreadProps(__spreadValues({}, props), {\n tag: props.tag !== void 0 ? props.tag : tag\n });\n return useCompositeStoreOptions(props);\n}\nfunction useComboboxStoreProps(store, update, props) {\n useUpdateEffect(update, [props.tag]);\n useStoreProps(store, props, \"value\", \"setValue\");\n useStoreProps(store, props, \"selectedValue\", \"setSelectedValue\");\n useStoreProps(store, props, \"resetValueOnHide\");\n useStoreProps(store, props, \"resetValueOnSelect\");\n return Object.assign(\n useCompositeStoreProps(\n usePopoverStoreProps(store, update, props),\n update,\n props\n ),\n { tag: props.tag }\n );\n}\nfunction useComboboxStore(props = {}) {\n props = useComboboxStoreOptions(props);\n const [store, update] = useStore(Core.createComboboxStore, props);\n return useComboboxStoreProps(store, update, props);\n}\n\nexport {\n useComboboxStoreOptions,\n useComboboxStoreProps,\n useComboboxStore\n};\n", "\"use client\";\nimport {\n createStoreContext\n} from \"./LMDWO4NN.js\";\n\n// src/disclosure/disclosure-context.tsx\nvar ctx = createStoreContext();\nvar useDisclosureContext = ctx.useContext;\nvar useDisclosureScopedContext = ctx.useScopedContext;\nvar useDisclosureProviderContext = ctx.useProviderContext;\nvar DisclosureContextProvider = ctx.ContextProvider;\nvar DisclosureScopedContextProvider = ctx.ScopedContextProvider;\n\nexport {\n useDisclosureContext,\n useDisclosureScopedContext,\n useDisclosureProviderContext,\n DisclosureContextProvider,\n DisclosureScopedContextProvider\n};\n", "\"use client\";\nimport {\n DisclosureContextProvider,\n DisclosureScopedContextProvider\n} from \"./S6EF7IVO.js\";\nimport {\n createStoreContext\n} from \"./LMDWO4NN.js\";\n\n// src/dialog/dialog-context.tsx\nimport { createContext } from \"react\";\nvar ctx = createStoreContext(\n [DisclosureContextProvider],\n [DisclosureScopedContextProvider]\n);\nvar useDialogContext = ctx.useContext;\nvar useDialogScopedContext = ctx.useScopedContext;\nvar useDialogProviderContext = ctx.useProviderContext;\nvar DialogContextProvider = ctx.ContextProvider;\nvar DialogScopedContextProvider = ctx.ScopedContextProvider;\nvar DialogHeadingContext = createContext(void 0);\nvar DialogDescriptionContext = createContext(void 0);\n\nexport {\n useDialogContext,\n useDialogScopedContext,\n useDialogProviderContext,\n DialogContextProvider,\n DialogScopedContextProvider,\n DialogHeadingContext,\n DialogDescriptionContext\n};\n", "\"use client\";\nimport {\n DialogContextProvider,\n DialogScopedContextProvider\n} from \"./RS7LB2H4.js\";\nimport {\n createStoreContext\n} from \"./LMDWO4NN.js\";\n\n// src/popover/popover-context.tsx\nvar ctx = createStoreContext(\n [DialogContextProvider],\n [DialogScopedContextProvider]\n);\nvar usePopoverContext = ctx.useContext;\nvar usePopoverScopedContext = ctx.useScopedContext;\nvar usePopoverProviderContext = ctx.useProviderContext;\nvar PopoverContextProvider = ctx.ContextProvider;\nvar PopoverScopedContextProvider = ctx.ScopedContextProvider;\n\nexport {\n usePopoverContext,\n usePopoverScopedContext,\n usePopoverProviderContext,\n PopoverContextProvider,\n PopoverScopedContextProvider\n};\n", "\"use client\";\nimport {\n CompositeContextProvider,\n CompositeScopedContextProvider\n} from \"./P7GR5CS5.js\";\nimport {\n PopoverContextProvider,\n PopoverScopedContextProvider\n} from \"./MTZPJQMC.js\";\nimport {\n createStoreContext\n} from \"./LMDWO4NN.js\";\n\n// src/combobox/combobox-context.tsx\nimport { createContext } from \"react\";\nvar ComboboxListRoleContext = createContext(\n void 0\n);\nvar ctx = createStoreContext(\n [PopoverContextProvider, CompositeContextProvider],\n [PopoverScopedContextProvider, CompositeScopedContextProvider]\n);\nvar useComboboxContext = ctx.useContext;\nvar useComboboxScopedContext = ctx.useScopedContext;\nvar useComboboxProviderContext = ctx.useProviderContext;\nvar ComboboxContextProvider = ctx.ContextProvider;\nvar ComboboxScopedContextProvider = ctx.ScopedContextProvider;\nvar ComboboxItemValueContext = createContext(\n void 0\n);\nvar ComboboxItemCheckedContext = createContext(false);\n\nexport {\n ComboboxListRoleContext,\n useComboboxContext,\n useComboboxScopedContext,\n useComboboxProviderContext,\n ComboboxContextProvider,\n ComboboxScopedContextProvider,\n ComboboxItemValueContext,\n ComboboxItemCheckedContext\n};\n", "\"use client\";\nimport {\n usePopoverProviderContext\n} from \"./MTZPJQMC.js\";\nimport {\n createElement,\n createHook,\n forwardRef\n} from \"./LMDWO4NN.js\";\nimport {\n useMergeRefs\n} from \"./ABQUS43J.js\";\nimport {\n __objRest,\n __spreadProps,\n __spreadValues\n} from \"./3YLGPPWQ.js\";\n\n// src/popover/popover-anchor.tsx\nvar TagName = \"div\";\nvar usePopoverAnchor = createHook(\n function usePopoverAnchor2(_a) {\n var _b = _a, { store } = _b, props = __objRest(_b, [\"store\"]);\n const context = usePopoverProviderContext();\n store = store || context;\n props = __spreadProps(__spreadValues({}, props), {\n ref: useMergeRefs(store == null ? void 0 : store.setAnchorElement, props.ref)\n });\n return props;\n }\n);\nvar PopoverAnchor = forwardRef(function PopoverAnchor2(props) {\n const htmlProps = usePopoverAnchor(props);\n return createElement(TagName, htmlProps);\n});\n\nexport {\n usePopoverAnchor,\n PopoverAnchor\n};\n", "\"use client\";\n\n// src/composite/utils.ts\nimport { getDocument, isTextField } from \"@ariakit/core/utils/dom\";\nvar NULL_ITEM = { id: null };\nfunction flipItems(items, activeId, shouldInsertNullItem = false) {\n const index = items.findIndex((item) => item.id === activeId);\n return [\n ...items.slice(index + 1),\n ...shouldInsertNullItem ? [NULL_ITEM] : [],\n ...items.slice(0, index)\n ];\n}\nfunction findFirstEnabledItem(items, excludeId) {\n return items.find((item) => {\n if (excludeId) {\n return !item.disabled && item.id !== excludeId;\n }\n return !item.disabled;\n });\n}\nfunction getEnabledItem(store, id) {\n if (!id) return null;\n return store.item(id) || null;\n}\nfunction groupItemsByRows(items) {\n const rows = [];\n for (const item of items) {\n const row = rows.find((currentRow) => {\n var _a;\n return ((_a = currentRow[0]) == null ? void 0 : _a.rowId) === item.rowId;\n });\n if (row) {\n row.push(item);\n } else {\n rows.push([item]);\n }\n }\n return rows;\n}\nfunction selectTextField(element, collapseToEnd = false) {\n if (isTextField(element)) {\n element.setSelectionRange(\n collapseToEnd ? element.value.length : 0,\n element.value.length\n );\n } else if (element.isContentEditable) {\n const selection = getDocument(element).getSelection();\n selection == null ? void 0 : selection.selectAllChildren(element);\n if (collapseToEnd) {\n selection == null ? void 0 : selection.collapseToEnd();\n }\n }\n}\nvar FOCUS_SILENTLY = Symbol(\"FOCUS_SILENTLY\");\nfunction focusSilently(element) {\n element[FOCUS_SILENTLY] = true;\n element.focus({ preventScroll: true });\n}\nfunction silentlyFocused(element) {\n const isSilentlyFocused = element[FOCUS_SILENTLY];\n delete element[FOCUS_SILENTLY];\n return isSilentlyFocused;\n}\nfunction isItem(store, element, exclude) {\n if (!element) return false;\n if (element === exclude) return false;\n const item = store.item(element.id);\n if (!item) return false;\n if (exclude && item.element === exclude) return false;\n return true;\n}\n\nexport {\n flipItems,\n findFirstEnabledItem,\n getEnabledItem,\n groupItemsByRows,\n selectTextField,\n focusSilently,\n silentlyFocused,\n isItem\n};\n", "\"use client\";\n\n// src/focusable/focusable-context.tsx\nimport { createContext } from \"react\";\nvar FocusableContext = createContext(true);\n\nexport {\n FocusableContext\n};\n", "\"use client\";\nimport {\n contains,\n getActiveElement,\n isFrame,\n isVisible\n} from \"../__chunks/DTR5TSDJ.js\";\nimport {\n __spreadValues\n} from \"../__chunks/3YLGPPWQ.js\";\n\n// src/utils/focus.ts\nvar selector = \"input:not([type='hidden']):not([disabled]), select:not([disabled]), textarea:not([disabled]), a[href], button:not([disabled]), [tabindex], summary, iframe, object, embed, area[href], audio[controls], video[controls], [contenteditable]:not([contenteditable='false'])\";\nfunction hasNegativeTabIndex(element) {\n const tabIndex = Number.parseInt(element.getAttribute(\"tabindex\") || \"0\", 10);\n return tabIndex < 0;\n}\nfunction isFocusable(element) {\n if (!element.matches(selector)) return false;\n if (!isVisible(element)) return false;\n if (element.closest(\"[inert]\")) return false;\n return true;\n}\nfunction isTabbable(element) {\n if (!isFocusable(element)) return false;\n if (hasNegativeTabIndex(element)) return false;\n if (!(\"form\" in element)) return true;\n if (!element.form) return true;\n if (element.checked) return true;\n if (element.type !== \"radio\") return true;\n const radioGroup = element.form.elements.namedItem(element.name);\n if (!radioGroup) return true;\n if (!(\"length\" in radioGroup)) return true;\n const activeElement = getActiveElement(element);\n if (!activeElement) return true;\n if (activeElement === element) return true;\n if (!(\"form\" in activeElement)) return true;\n if (activeElement.form !== element.form) return true;\n if (activeElement.name !== element.name) return true;\n return false;\n}\nfunction getAllFocusableIn(container, includeContainer) {\n const elements = Array.from(\n container.querySelectorAll(selector)\n );\n if (includeContainer) {\n elements.unshift(container);\n }\n const focusableElements = elements.filter(isFocusable);\n focusableElements.forEach((element, i) => {\n if (isFrame(element) && element.contentDocument) {\n const frameBody = element.contentDocument.body;\n focusableElements.splice(i, 1, ...getAllFocusableIn(frameBody));\n }\n });\n return focusableElements;\n}\nfunction getAllFocusable(includeBody) {\n return getAllFocusableIn(document.body, includeBody);\n}\nfunction getFirstFocusableIn(container, includeContainer) {\n const [first] = getAllFocusableIn(container, includeContainer);\n return first || null;\n}\nfunction getFirstFocusable(includeBody) {\n return getFirstFocusableIn(document.body, includeBody);\n}\nfunction getAllTabbableIn(container, includeContainer, fallbackToFocusable) {\n const elements = Array.from(\n container.querySelectorAll(selector)\n );\n const tabbableElements = elements.filter(isTabbable);\n if (includeContainer && isTabbable(container)) {\n tabbableElements.unshift(container);\n }\n tabbableElements.forEach((element, i) => {\n if (isFrame(element) && element.contentDocument) {\n const frameBody = element.contentDocument.body;\n const allFrameTabbable = getAllTabbableIn(\n frameBody,\n false,\n fallbackToFocusable\n );\n tabbableElements.splice(i, 1, ...allFrameTabbable);\n }\n });\n if (!tabbableElements.length && fallbackToFocusable) {\n return elements;\n }\n return tabbableElements;\n}\nfunction getAllTabbable(fallbackToFocusable) {\n return getAllTabbableIn(document.body, false, fallbackToFocusable);\n}\nfunction getFirstTabbableIn(container, includeContainer, fallbackToFocusable) {\n const [first] = getAllTabbableIn(\n container,\n includeContainer,\n fallbackToFocusable\n );\n return first || null;\n}\nfunction getFirstTabbable(fallbackToFocusable) {\n return getFirstTabbableIn(document.body, false, fallbackToFocusable);\n}\nfunction getLastTabbableIn(container, includeContainer, fallbackToFocusable) {\n const allTabbable = getAllTabbableIn(\n container,\n includeContainer,\n fallbackToFocusable\n );\n return allTabbable[allTabbable.length - 1] || null;\n}\nfunction getLastTabbable(fallbackToFocusable) {\n return getLastTabbableIn(document.body, false, fallbackToFocusable);\n}\nfunction getNextTabbableIn(container, includeContainer, fallbackToFirst, fallbackToFocusable) {\n const activeElement = getActiveElement(container);\n const allFocusable = getAllFocusableIn(container, includeContainer);\n const activeIndex = allFocusable.indexOf(activeElement);\n const nextFocusableElements = allFocusable.slice(activeIndex + 1);\n return nextFocusableElements.find(isTabbable) || (fallbackToFirst ? allFocusable.find(isTabbable) : null) || (fallbackToFocusable ? nextFocusableElements[0] : null) || null;\n}\nfunction getNextTabbable(fallbackToFirst, fallbackToFocusable) {\n return getNextTabbableIn(\n document.body,\n false,\n fallbackToFirst,\n fallbackToFocusable\n );\n}\nfunction getPreviousTabbableIn(container, includeContainer, fallbackToLast, fallbackToFocusable) {\n const activeElement = getActiveElement(container);\n const allFocusable = getAllFocusableIn(container, includeContainer).reverse();\n const activeIndex = allFocusable.indexOf(activeElement);\n const previousFocusableElements = allFocusable.slice(activeIndex + 1);\n return previousFocusableElements.find(isTabbable) || (fallbackToLast ? allFocusable.find(isTabbable) : null) || (fallbackToFocusable ? previousFocusableElements[0] : null) || null;\n}\nfunction getPreviousTabbable(fallbackToFirst, fallbackToFocusable) {\n return getPreviousTabbableIn(\n document.body,\n false,\n fallbackToFirst,\n fallbackToFocusable\n );\n}\nfunction getClosestFocusable(element) {\n while (element && !isFocusable(element)) {\n element = element.closest(selector);\n }\n return element || null;\n}\nfunction hasFocus(element) {\n const activeElement = getActiveElement(element);\n if (!activeElement) return false;\n if (activeElement === element) return true;\n const activeDescendant = activeElement.getAttribute(\"aria-activedescendant\");\n if (!activeDescendant) return false;\n return activeDescendant === element.id;\n}\nfunction hasFocusWithin(element) {\n const activeElement = getActiveElement(element);\n if (!activeElement) return false;\n if (contains(element, activeElement)) return true;\n const activeDescendant = activeElement.getAttribute(\"aria-activedescendant\");\n if (!activeDescendant) return false;\n if (!(\"id\" in element)) return false;\n if (activeDescendant === element.id) return true;\n return !!element.querySelector(`#${CSS.escape(activeDescendant)}`);\n}\nfunction focusIfNeeded(element) {\n if (!hasFocusWithin(element) && isFocusable(element)) {\n element.focus();\n }\n}\nfunction disableFocus(element) {\n var _a;\n const currentTabindex = (_a = element.getAttribute(\"tabindex\")) != null ? _a : \"\";\n element.setAttribute(\"data-tabindex\", currentTabindex);\n element.setAttribute(\"tabindex\", \"-1\");\n}\nfunction disableFocusIn(container, includeContainer) {\n const tabbableElements = getAllTabbableIn(container, includeContainer);\n for (const element of tabbableElements) {\n disableFocus(element);\n }\n}\nfunction restoreFocusIn(container) {\n const elements = container.querySelectorAll(\"[data-tabindex]\");\n const restoreTabIndex = (element) => {\n const tabindex = element.getAttribute(\"data-tabindex\");\n element.removeAttribute(\"data-tabindex\");\n if (tabindex) {\n element.setAttribute(\"tabindex\", tabindex);\n } else {\n element.removeAttribute(\"tabindex\");\n }\n };\n if (container.hasAttribute(\"data-tabindex\")) {\n restoreTabIndex(container);\n }\n for (const element of elements) {\n restoreTabIndex(element);\n }\n}\nfunction focusIntoView(element, options) {\n if (!(\"scrollIntoView\" in element)) {\n element.focus();\n } else {\n element.focus({ preventScroll: true });\n element.scrollIntoView(__spreadValues({ block: \"nearest\", inline: \"nearest\" }, options));\n }\n}\nexport {\n disableFocus,\n disableFocusIn,\n focusIfNeeded,\n focusIntoView,\n getAllFocusable,\n getAllFocusableIn,\n getAllTabbable,\n getAllTabbableIn,\n getClosestFocusable,\n getFirstFocusable,\n getFirstFocusableIn,\n getFirstTabbable,\n getFirstTabbableIn,\n getLastTabbable,\n getLastTabbableIn,\n getNextTabbable,\n getNextTabbableIn,\n getPreviousTabbable,\n getPreviousTabbableIn,\n hasFocus,\n hasFocusWithin,\n isFocusable,\n isTabbable,\n restoreFocusIn\n};\n", "\"use client\";\nimport {\n FocusableContext\n} from \"./SWN3JYXT.js\";\nimport {\n createElement,\n createHook,\n forwardRef\n} from \"./LMDWO4NN.js\";\nimport {\n useEvent,\n useMergeRefs,\n useTagName\n} from \"./ABQUS43J.js\";\nimport {\n __objRest,\n __spreadProps,\n __spreadValues\n} from \"./3YLGPPWQ.js\";\n\n// src/focusable/focusable.tsx\nimport { isButton } from \"@ariakit/core/utils/dom\";\nimport {\n addGlobalEventListener,\n isFocusEventOutside,\n isPortalEvent,\n isSelfTarget,\n queueBeforeEvent\n} from \"@ariakit/core/utils/events\";\nimport {\n focusIfNeeded,\n getClosestFocusable,\n hasFocus,\n isFocusable\n} from \"@ariakit/core/utils/focus\";\nimport {\n disabledFromProps,\n removeUndefinedValues\n} from \"@ariakit/core/utils/misc\";\nimport { isSafari } from \"@ariakit/core/utils/platform\";\nimport { useContext, useEffect, useMemo, useRef, useState } from \"react\";\nvar TagName = \"div\";\nvar isSafariBrowser = isSafari();\nvar alwaysFocusVisibleInputTypes = [\n \"text\",\n \"search\",\n \"url\",\n \"tel\",\n \"email\",\n \"password\",\n \"number\",\n \"date\",\n \"month\",\n \"week\",\n \"time\",\n \"datetime\",\n \"datetime-local\"\n];\nvar safariFocusAncestorSymbol = Symbol(\"safariFocusAncestor\");\nfunction isSafariFocusAncestor(element) {\n if (!element) return false;\n return !!element[safariFocusAncestorSymbol];\n}\nfunction markSafariFocusAncestor(element, value) {\n if (!element) return;\n element[safariFocusAncestorSymbol] = value;\n}\nfunction isAlwaysFocusVisible(element) {\n const { tagName, readOnly, type } = element;\n if (tagName === \"TEXTAREA\" && !readOnly) return true;\n if (tagName === \"SELECT\" && !readOnly) return true;\n if (tagName === \"INPUT\" && !readOnly) {\n return alwaysFocusVisibleInputTypes.includes(type);\n }\n if (element.isContentEditable) return true;\n const role = element.getAttribute(\"role\");\n if (role === \"combobox\" && element.dataset.name) {\n return true;\n }\n return false;\n}\nfunction getLabels(element) {\n if (\"labels\" in element) {\n return element.labels;\n }\n return null;\n}\nfunction isNativeCheckboxOrRadio(element) {\n const tagName = element.tagName.toLowerCase();\n if (tagName === \"input\" && element.type) {\n return element.type === \"radio\" || element.type === \"checkbox\";\n }\n return false;\n}\nfunction isNativeTabbable(tagName) {\n if (!tagName) return true;\n return tagName === \"button\" || tagName === \"summary\" || tagName === \"input\" || tagName === \"select\" || tagName === \"textarea\" || tagName === \"a\";\n}\nfunction supportsDisabledAttribute(tagName) {\n if (!tagName) return true;\n return tagName === \"button\" || tagName === \"input\" || tagName === \"select\" || tagName === \"textarea\";\n}\nfunction getTabIndex(focusable, trulyDisabled, nativeTabbable, supportsDisabled, tabIndexProp) {\n if (!focusable) {\n return tabIndexProp;\n }\n if (trulyDisabled) {\n if (nativeTabbable && !supportsDisabled) {\n return -1;\n }\n return;\n }\n if (nativeTabbable) {\n return tabIndexProp;\n }\n return tabIndexProp || 0;\n}\nfunction useDisableEvent(onEvent, disabled) {\n return useEvent((event) => {\n onEvent == null ? void 0 : onEvent(event);\n if (event.defaultPrevented) return;\n if (disabled) {\n event.stopPropagation();\n event.preventDefault();\n }\n });\n}\nvar isKeyboardModality = true;\nfunction onGlobalMouseDown(event) {\n const target = event.target;\n if (target && \"hasAttribute\" in target) {\n if (!target.hasAttribute(\"data-focus-visible\")) {\n isKeyboardModality = false;\n }\n }\n}\nfunction onGlobalKeyDown(event) {\n if (event.metaKey) return;\n if (event.ctrlKey) return;\n if (event.altKey) return;\n isKeyboardModality = true;\n}\nvar useFocusable = createHook(\n function useFocusable2(_a) {\n var _b = _a, {\n focusable = true,\n accessibleWhenDisabled,\n autoFocus,\n onFocusVisible\n } = _b, props = __objRest(_b, [\n \"focusable\",\n \"accessibleWhenDisabled\",\n \"autoFocus\",\n \"onFocusVisible\"\n ]);\n const ref = useRef(null);\n useEffect(() => {\n if (!focusable) return;\n addGlobalEventListener(\"mousedown\", onGlobalMouseDown, true);\n addGlobalEventListener(\"keydown\", onGlobalKeyDown, true);\n }, [focusable]);\n if (isSafariBrowser) {\n useEffect(() => {\n if (!focusable) return;\n const element = ref.current;\n if (!element) return;\n if (!isNativeCheckboxOrRadio(element)) return;\n const labels = getLabels(element);\n if (!labels) return;\n const onMouseUp = () => queueMicrotask(() => element.focus());\n for (const label of labels) {\n label.addEventListener(\"mouseup\", onMouseUp);\n }\n return () => {\n for (const label of labels) {\n label.removeEventListener(\"mouseup\", onMouseUp);\n }\n };\n }, [focusable]);\n }\n const disabled = focusable && disabledFromProps(props);\n const trulyDisabled = !!disabled && !accessibleWhenDisabled;\n const [focusVisible, setFocusVisible] = useState(false);\n useEffect(() => {\n if (!focusable) return;\n if (trulyDisabled && focusVisible) {\n setFocusVisible(false);\n }\n }, [focusable, trulyDisabled, focusVisible]);\n useEffect(() => {\n if (!focusable) return;\n if (!focusVisible) return;\n const element = ref.current;\n if (!element) return;\n if (typeof IntersectionObserver === \"undefined\") return;\n const observer = new IntersectionObserver(() => {\n if (!isFocusable(element)) {\n setFocusVisible(false);\n }\n });\n observer.observe(element);\n return () => observer.disconnect();\n }, [focusable, focusVisible]);\n const onKeyPressCapture = useDisableEvent(\n props.onKeyPressCapture,\n disabled\n );\n const onMouseDownCapture = useDisableEvent(\n props.onMouseDownCapture,\n disabled\n );\n const onClickCapture = useDisableEvent(props.onClickCapture, disabled);\n const onMouseDownProp = props.onMouseDown;\n const onMouseDown = useEvent((event) => {\n onMouseDownProp == null ? void 0 : onMouseDownProp(event);\n if (event.defaultPrevented) return;\n if (!focusable) return;\n const element = event.currentTarget;\n if (!isSafariBrowser) return;\n if (isPortalEvent(event)) return;\n if (!isButton(element) && !isNativeCheckboxOrRadio(element)) return;\n let receivedFocus = false;\n const onFocus = () => {\n receivedFocus = true;\n };\n const options = { capture: true, once: true };\n element.addEventListener(\"focusin\", onFocus, options);\n const focusableContainer = getClosestFocusable(element.parentElement);\n markSafariFocusAncestor(focusableContainer, true);\n queueBeforeEvent(element, \"mouseup\", () => {\n element.removeEventListener(\"focusin\", onFocus, true);\n markSafariFocusAncestor(focusableContainer, false);\n if (receivedFocus) return;\n focusIfNeeded(element);\n });\n });\n const handleFocusVisible = (event, currentTarget) => {\n if (currentTarget) {\n event.currentTarget = currentTarget;\n }\n if (!focusable) return;\n const element = event.currentTarget;\n if (!element) return;\n if (!hasFocus(element)) return;\n onFocusVisible == null ? void 0 : onFocusVisible(event);\n if (event.defaultPrevented) return;\n element.dataset.focusVisible = \"true\";\n setFocusVisible(true);\n };\n const onKeyDownCaptureProp = props.onKeyDownCapture;\n const onKeyDownCapture = useEvent((event) => {\n onKeyDownCaptureProp == null ? void 0 : onKeyDownCaptureProp(event);\n if (event.defaultPrevented) return;\n if (!focusable) return;\n if (focusVisible) return;\n if (event.metaKey) return;\n if (event.altKey) return;\n if (event.ctrlKey) return;\n if (!isSelfTarget(event)) return;\n const element = event.currentTarget;\n const applyFocusVisible = () => handleFocusVisible(event, element);\n queueBeforeEvent(element, \"focusout\", applyFocusVisible);\n });\n const onFocusCaptureProp = props.onFocusCapture;\n const onFocusCapture = useEvent((event) => {\n onFocusCaptureProp == null ? void 0 : onFocusCaptureProp(event);\n if (event.defaultPrevented) return;\n if (!focusable) return;\n if (!isSelfTarget(event)) {\n setFocusVisible(false);\n return;\n }\n const element = event.currentTarget;\n const applyFocusVisible = () => handleFocusVisible(event, element);\n if (isKeyboardModality || isAlwaysFocusVisible(event.target)) {\n queueBeforeEvent(event.target, \"focusout\", applyFocusVisible);\n } else {\n setFocusVisible(false);\n }\n });\n const onBlurProp = props.onBlur;\n const onBlur = useEvent((event) => {\n onBlurProp == null ? void 0 : onBlurProp(event);\n if (!focusable) return;\n if (!isFocusEventOutside(event)) return;\n setFocusVisible(false);\n });\n const autoFocusOnShow = useContext(FocusableContext);\n const autoFocusRef = useEvent((element) => {\n if (!focusable) return;\n if (!autoFocus) return;\n if (!element) return;\n if (!autoFocusOnShow) return;\n queueMicrotask(() => {\n if (hasFocus(element)) return;\n if (!isFocusable(element)) return;\n element.focus();\n });\n });\n const tagName = useTagName(ref);\n const nativeTabbable = focusable && isNativeTabbable(tagName);\n const supportsDisabled = focusable && supportsDisabledAttribute(tagName);\n const styleProp = props.style;\n const style = useMemo(() => {\n if (trulyDisabled) {\n return __spreadValues({ pointerEvents: \"none\" }, styleProp);\n }\n return styleProp;\n }, [trulyDisabled, styleProp]);\n props = __spreadProps(__spreadValues({\n \"data-focus-visible\": focusable && focusVisible || void 0,\n \"data-autofocus\": autoFocus || void 0,\n \"aria-disabled\": disabled || void 0\n }, props), {\n ref: useMergeRefs(ref, autoFocusRef, props.ref),\n style,\n tabIndex: getTabIndex(\n focusable,\n trulyDisabled,\n nativeTabbable,\n supportsDisabled,\n props.tabIndex\n ),\n disabled: supportsDisabled && trulyDisabled ? true : void 0,\n // TODO: Test Focusable contentEditable.\n contentEditable: disabled ? void 0 : props.contentEditable,\n onKeyPressCapture,\n onClickCapture,\n onMouseDownCapture,\n onMouseDown,\n onKeyDownCapture,\n onFocusCapture,\n onBlur\n });\n return removeUndefinedValues(props);\n }\n);\nvar Focusable = forwardRef(function Focusable2(props) {\n const htmlProps = useFocusable(props);\n return createElement(TagName, htmlProps);\n});\n\nexport {\n isSafariFocusAncestor,\n useFocusable,\n Focusable\n};\n", "\"use client\";\nimport {\n findFirstEnabledItem,\n getEnabledItem,\n groupItemsByRows,\n isItem,\n silentlyFocused\n} from \"./5VQZOHHZ.js\";\nimport {\n CompositeContextProvider,\n useCompositeProviderContext\n} from \"./P7GR5CS5.js\";\nimport {\n useFocusable\n} from \"./LVA2YJMS.js\";\nimport {\n createElement,\n createHook,\n forwardRef\n} from \"./LMDWO4NN.js\";\nimport {\n useBooleanEvent,\n useEvent,\n useMergeRefs,\n useSafeLayoutEffect,\n useTransactionState,\n useWrapElement\n} from \"./ABQUS43J.js\";\nimport {\n __objRest,\n __spreadProps,\n __spreadValues\n} from \"./3YLGPPWQ.js\";\n\n// src/composite/composite.tsx\nimport { flatten2DArray, reverseArray } from \"@ariakit/core/utils/array\";\nimport { getActiveElement, isTextField } from \"@ariakit/core/utils/dom\";\nimport {\n fireBlurEvent,\n fireKeyboardEvent,\n isSelfTarget\n} from \"@ariakit/core/utils/events\";\nimport { focusIntoView, hasFocus } from \"@ariakit/core/utils/focus\";\nimport { invariant } from \"@ariakit/core/utils/misc\";\nimport { useCallback, useEffect, useRef, useState } from \"react\";\nimport { jsx } from \"react/jsx-runtime\";\nvar TagName = \"div\";\nfunction isGrid(items) {\n return items.some((item) => !!item.rowId);\n}\nfunction isPrintableKey(event) {\n const target = event.target;\n if (target && !isTextField(target)) return false;\n return event.key.length === 1 && !event.ctrlKey && !event.metaKey;\n}\nfunction isModifierKey(event) {\n return event.key === \"Shift\" || event.key === \"Control\" || event.key === \"Alt\" || event.key === \"Meta\";\n}\nfunction useKeyboardEventProxy(store, onKeyboardEvent, previousElementRef) {\n return useEvent((event) => {\n var _a;\n onKeyboardEvent == null ? void 0 : onKeyboardEvent(event);\n if (event.defaultPrevented) return;\n if (event.isPropagationStopped()) return;\n if (!isSelfTarget(event)) return;\n if (isModifierKey(event)) return;\n if (isPrintableKey(event)) return;\n const state = store.getState();\n const activeElement = (_a = getEnabledItem(store, state.activeId)) == null ? void 0 : _a.element;\n if (!activeElement) return;\n const _b = event, { view } = _b, eventInit = __objRest(_b, [\"view\"]);\n const previousElement = previousElementRef == null ? void 0 : previousElementRef.current;\n if (activeElement !== previousElement) {\n activeElement.focus();\n }\n if (!fireKeyboardEvent(activeElement, event.type, eventInit)) {\n event.preventDefault();\n }\n if (event.currentTarget.contains(activeElement)) {\n event.stopPropagation();\n }\n });\n}\nfunction findFirstEnabledItemInTheLastRow(items) {\n return findFirstEnabledItem(\n flatten2DArray(reverseArray(groupItemsByRows(items)))\n );\n}\nfunction useScheduleFocus(store) {\n const [scheduled, setScheduled] = useState(false);\n const schedule = useCallback(() => setScheduled(true), []);\n const activeItem = store.useState(\n (state) => getEnabledItem(store, state.activeId)\n );\n useEffect(() => {\n const activeElement = activeItem == null ? void 0 : activeItem.element;\n if (!scheduled) return;\n if (!activeElement) return;\n setScheduled(false);\n activeElement.focus({ preventScroll: true });\n }, [activeItem, scheduled]);\n return schedule;\n}\nvar useComposite = createHook(\n function useComposite2(_a) {\n var _b = _a, {\n store,\n composite = true,\n focusOnMove = composite,\n moveOnKeyPress = true\n } = _b, props = __objRest(_b, [\n \"store\",\n \"composite\",\n \"focusOnMove\",\n \"moveOnKeyPress\"\n ]);\n const context = useCompositeProviderContext();\n store = store || context;\n invariant(\n store,\n process.env.NODE_ENV !== \"production\" && \"Composite must receive a `store` prop or be wrapped in a CompositeProvider component.\"\n );\n const ref = useRef(null);\n const previousElementRef = useRef(null);\n const scheduleFocus = useScheduleFocus(store);\n const moves = store.useState(\"moves\");\n const [, setBaseElement] = useTransactionState(\n composite ? store.setBaseElement : null\n );\n useEffect(() => {\n var _a2;\n if (!store) return;\n if (!moves) return;\n if (!composite) return;\n if (!focusOnMove) return;\n const { activeId: activeId2 } = store.getState();\n const itemElement = (_a2 = getEnabledItem(store, activeId2)) == null ? void 0 : _a2.element;\n if (!itemElement) return;\n focusIntoView(itemElement);\n }, [store, moves, composite, focusOnMove]);\n useSafeLayoutEffect(() => {\n if (!store) return;\n if (!moves) return;\n if (!composite) return;\n const { baseElement, activeId: activeId2 } = store.getState();\n const isSelfAcive = activeId2 === null;\n if (!isSelfAcive) return;\n if (!baseElement) return;\n const previousElement = previousElementRef.current;\n previousElementRef.current = null;\n if (previousElement) {\n fireBlurEvent(previousElement, { relatedTarget: baseElement });\n }\n if (!hasFocus(baseElement)) {\n baseElement.focus();\n }\n }, [store, moves, composite]);\n const activeId = store.useState(\"activeId\");\n const virtualFocus = store.useState(\"virtualFocus\");\n useSafeLayoutEffect(() => {\n var _a2;\n if (!store) return;\n if (!composite) return;\n if (!virtualFocus) return;\n const previousElement = previousElementRef.current;\n previousElementRef.current = null;\n if (!previousElement) return;\n const activeElement = (_a2 = getEnabledItem(store, activeId)) == null ? void 0 : _a2.element;\n const relatedTarget = activeElement || getActiveElement(previousElement);\n if (relatedTarget === previousElement) return;\n fireBlurEvent(previousElement, { relatedTarget });\n }, [store, activeId, virtualFocus, composite]);\n const onKeyDownCapture = useKeyboardEventProxy(\n store,\n props.onKeyDownCapture,\n previousElementRef\n );\n const onKeyUpCapture = useKeyboardEventProxy(\n store,\n props.onKeyUpCapture,\n previousElementRef\n );\n const onFocusCaptureProp = props.onFocusCapture;\n const onFocusCapture = useEvent((event) => {\n onFocusCaptureProp == null ? void 0 : onFocusCaptureProp(event);\n if (event.defaultPrevented) return;\n if (!store) return;\n const { virtualFocus: virtualFocus2 } = store.getState();\n if (!virtualFocus2) return;\n const previousActiveElement = event.relatedTarget;\n const isSilentlyFocused = silentlyFocused(event.currentTarget);\n if (isSelfTarget(event) && isSilentlyFocused) {\n event.stopPropagation();\n previousElementRef.current = previousActiveElement;\n }\n });\n const onFocusProp = props.onFocus;\n const onFocus = useEvent((event) => {\n onFocusProp == null ? void 0 : onFocusProp(event);\n if (event.defaultPrevented) return;\n if (!composite) return;\n if (!store) return;\n const { relatedTarget } = event;\n const { virtualFocus: virtualFocus2 } = store.getState();\n if (virtualFocus2) {\n if (isSelfTarget(event) && !isItem(store, relatedTarget)) {\n queueMicrotask(scheduleFocus);\n }\n } else if (isSelfTarget(event)) {\n store.setActiveId(null);\n }\n });\n const onBlurCaptureProp = props.onBlurCapture;\n const onBlurCapture = useEvent((event) => {\n var _a2;\n onBlurCaptureProp == null ? void 0 : onBlurCaptureProp(event);\n if (event.defaultPrevented) return;\n if (!store) return;\n const { virtualFocus: virtualFocus2, activeId: activeId2 } = store.getState();\n if (!virtualFocus2) return;\n const activeElement = (_a2 = getEnabledItem(store, activeId2)) == null ? void 0 : _a2.element;\n const nextActiveElement = event.relatedTarget;\n const nextActiveElementIsItem = isItem(store, nextActiveElement);\n const previousElement = previousElementRef.current;\n previousElementRef.current = null;\n if (isSelfTarget(event) && nextActiveElementIsItem) {\n if (nextActiveElement === activeElement) {\n if (previousElement && previousElement !== nextActiveElement) {\n fireBlurEvent(previousElement, event);\n }\n } else if (activeElement) {\n fireBlurEvent(activeElement, event);\n } else if (previousElement) {\n fireBlurEvent(previousElement, event);\n }\n event.stopPropagation();\n } else {\n const targetIsItem = isItem(store, event.target);\n if (!targetIsItem && activeElement) {\n fireBlurEvent(activeElement, event);\n }\n }\n });\n const onKeyDownProp = props.onKeyDown;\n const moveOnKeyPressProp = useBooleanEvent(moveOnKeyPress);\n const onKeyDown = useEvent((event) => {\n var _a2;\n onKeyDownProp == null ? void 0 : onKeyDownProp(event);\n if (event.defaultPrevented) return;\n if (!store) return;\n if (!isSelfTarget(event)) return;\n const { orientation, renderedItems, activeId: activeId2 } = store.getState();\n const activeItem = getEnabledItem(store, activeId2);\n if ((_a2 = activeItem == null ? void 0 : activeItem.element) == null ? void 0 : _a2.isConnected) return;\n const isVertical = orientation !== \"horizontal\";\n const isHorizontal = orientation !== \"vertical\";\n const grid = isGrid(renderedItems);\n const isHorizontalKey = event.key === \"ArrowLeft\" || event.key === \"ArrowRight\" || event.key === \"Home\" || event.key === \"End\";\n if (isHorizontalKey && isTextField(event.currentTarget)) return;\n const up = () => {\n if (grid) {\n const item = findFirstEnabledItemInTheLastRow(renderedItems);\n return item == null ? void 0 : item.id;\n }\n return store == null ? void 0 : store.last();\n };\n const keyMap = {\n ArrowUp: (grid || isVertical) && up,\n ArrowRight: (grid || isHorizontal) && store.first,\n ArrowDown: (grid || isVertical) && store.first,\n ArrowLeft: (grid || isHorizontal) && store.last,\n Home: store.first,\n End: store.last,\n PageUp: store.first,\n PageDown: store.last\n };\n const action = keyMap[event.key];\n if (action) {\n const id = action();\n if (id !== void 0) {\n if (!moveOnKeyPressProp(event)) return;\n event.preventDefault();\n store.move(id);\n }\n }\n });\n props = useWrapElement(\n props,\n (element) => /* @__PURE__ */ jsx(CompositeContextProvider, { value: store, children: element }),\n [store]\n );\n const activeDescendant = store.useState((state) => {\n var _a2;\n if (!store) return;\n if (!composite) return;\n if (!state.virtualFocus) return;\n return (_a2 = getEnabledItem(store, state.activeId)) == null ? void 0 : _a2.id;\n });\n props = __spreadProps(__spreadValues({\n \"aria-activedescendant\": activeDescendant\n }, props), {\n ref: useMergeRefs(ref, setBaseElement, props.ref),\n onKeyDownCapture,\n onKeyUpCapture,\n onFocusCapture,\n onFocus,\n onBlurCapture,\n onKeyDown\n });\n const focusable = store.useState(\n (state) => composite && (state.virtualFocus || state.activeId === null)\n );\n props = useFocusable(__spreadValues({ focusable }, props));\n return props;\n }\n);\nvar Composite = forwardRef(function Composite2(props) {\n const htmlProps = useComposite(props);\n return createElement(TagName, htmlProps);\n});\n\nexport {\n useComposite,\n Composite\n};\n", "\"use client\";\nimport {\n useComboboxProviderContext\n} from \"../__chunks/VEVQD5MH.js\";\nimport {\n usePopoverAnchor\n} from \"../__chunks/OMU7RWRV.js\";\nimport {\n useComposite\n} from \"../__chunks/ITI7HKP4.js\";\nimport \"../__chunks/5VQZOHHZ.js\";\nimport \"../__chunks/P7GR5CS5.js\";\nimport \"../__chunks/VDHZ5F7K.js\";\nimport \"../__chunks/MTZPJQMC.js\";\nimport \"../__chunks/RS7LB2H4.js\";\nimport \"../__chunks/S6EF7IVO.js\";\nimport \"../__chunks/LVA2YJMS.js\";\nimport \"../__chunks/SWN3JYXT.js\";\nimport {\n createElement,\n createHook,\n forwardRef\n} from \"../__chunks/LMDWO4NN.js\";\nimport {\n useBooleanEvent,\n useEvent,\n useForceUpdate,\n useId,\n useMergeRefs,\n useSafeLayoutEffect,\n useUpdateEffect,\n useUpdateLayoutEffect\n} from \"../__chunks/ABQUS43J.js\";\nimport \"../__chunks/SK3NAZA3.js\";\nimport {\n __objRest,\n __spreadProps,\n __spreadValues\n} from \"../__chunks/3YLGPPWQ.js\";\n\n// src/combobox/combobox.tsx\nimport {\n getPopupRole,\n getScrollingElement,\n getTextboxSelection,\n setSelectionRange\n} from \"@ariakit/core/utils/dom\";\nimport {\n isFocusEventOutside,\n queueBeforeEvent\n} from \"@ariakit/core/utils/events\";\nimport { hasFocus } from \"@ariakit/core/utils/focus\";\nimport {\n invariant,\n isFalsyBooleanCallback,\n noop,\n normalizeString\n} from \"@ariakit/core/utils/misc\";\nimport { sync } from \"@ariakit/core/utils/store\";\nimport { useEffect, useMemo, useRef, useState } from \"react\";\nvar TagName = \"input\";\nfunction isFirstItemAutoSelected(items, activeValue, autoSelect) {\n if (!autoSelect) return false;\n const firstItem = items.find((item) => !item.disabled && item.value);\n return (firstItem == null ? void 0 : firstItem.value) === activeValue;\n}\nfunction hasCompletionString(value, activeValue) {\n if (!activeValue) return false;\n if (value == null) return false;\n value = normalizeString(value);\n return activeValue.length > value.length && activeValue.toLowerCase().indexOf(value.toLowerCase()) === 0;\n}\nfunction isInputEvent(event) {\n return event.type === \"input\";\n}\nfunction isAriaAutoCompleteValue(value) {\n return value === \"inline\" || value === \"list\" || value === \"both\" || value === \"none\";\n}\nfunction getDefaultAutoSelectId(items) {\n const item = items.find((item2) => {\n var _a;\n if (item2.disabled) return false;\n return ((_a = item2.element) == null ? void 0 : _a.getAttribute(\"role\")) !== \"tab\";\n });\n return item == null ? void 0 : item.id;\n}\nvar useCombobox = createHook(\n function useCombobox2(_a) {\n var _b = _a, {\n store,\n focusable = true,\n autoSelect: autoSelectProp = false,\n getAutoSelectId,\n setValueOnChange,\n showMinLength = 0,\n showOnChange,\n showOnMouseDown,\n showOnClick = showOnMouseDown,\n showOnKeyDown,\n showOnKeyPress = showOnKeyDown,\n blurActiveItemOnClick,\n setValueOnClick = true,\n moveOnKeyPress = true,\n autoComplete = \"list\"\n } = _b, props = __objRest(_b, [\n \"store\",\n \"focusable\",\n \"autoSelect\",\n \"getAutoSelectId\",\n \"setValueOnChange\",\n \"showMinLength\",\n \"showOnChange\",\n \"showOnMouseDown\",\n \"showOnClick\",\n \"showOnKeyDown\",\n \"showOnKeyPress\",\n \"blurActiveItemOnClick\",\n \"setValueOnClick\",\n \"moveOnKeyPress\",\n \"autoComplete\"\n ]);\n const context = useComboboxProviderContext();\n store = store || context;\n invariant(\n store,\n process.env.NODE_ENV !== \"production\" && \"Combobox must receive a `store` prop or be wrapped in a ComboboxProvider component.\"\n );\n const ref = useRef(null);\n const [valueUpdated, forceValueUpdate] = useForceUpdate();\n const canAutoSelectRef = useRef(false);\n const composingRef = useRef(false);\n const autoSelect = store.useState(\n (state) => state.virtualFocus && autoSelectProp\n );\n const inline = autoComplete === \"inline\" || autoComplete === \"both\";\n const [canInline, setCanInline] = useState(inline);\n useUpdateLayoutEffect(() => {\n if (!inline) return;\n setCanInline(true);\n }, [inline]);\n const storeValue = store.useState(\"value\");\n const prevSelectedValueRef = useRef();\n useEffect(() => {\n return sync(store, [\"selectedValue\", \"activeId\"], (_, prev) => {\n prevSelectedValueRef.current = prev.selectedValue;\n });\n }, []);\n const inlineActiveValue = store.useState((state) => {\n var _a2;\n if (!inline) return;\n if (!canInline) return;\n if (state.activeValue && Array.isArray(state.selectedValue)) {\n if (state.selectedValue.includes(state.activeValue)) return;\n if ((_a2 = prevSelectedValueRef.current) == null ? void 0 : _a2.includes(state.activeValue)) return;\n }\n return state.activeValue;\n });\n const items = store.useState(\"renderedItems\");\n const open = store.useState(\"open\");\n const contentElement = store.useState(\"contentElement\");\n const value = useMemo(() => {\n if (!inline) return storeValue;\n if (!canInline) return storeValue;\n const firstItemAutoSelected = isFirstItemAutoSelected(\n items,\n inlineActiveValue,\n autoSelect\n );\n if (firstItemAutoSelected) {\n if (hasCompletionString(storeValue, inlineActiveValue)) {\n const slice = (inlineActiveValue == null ? void 0 : inlineActiveValue.slice(storeValue.length)) || \"\";\n return storeValue + slice;\n }\n return storeValue;\n }\n return inlineActiveValue || storeValue;\n }, [inline, canInline, items, inlineActiveValue, autoSelect, storeValue]);\n useEffect(() => {\n const element = ref.current;\n if (!element) return;\n const onCompositeItemMove = () => setCanInline(true);\n element.addEventListener(\"combobox-item-move\", onCompositeItemMove);\n return () => {\n element.removeEventListener(\"combobox-item-move\", onCompositeItemMove);\n };\n }, []);\n useEffect(() => {\n if (!inline) return;\n if (!canInline) return;\n if (!inlineActiveValue) return;\n const firstItemAutoSelected = isFirstItemAutoSelected(\n items,\n inlineActiveValue,\n autoSelect\n );\n if (!firstItemAutoSelected) return;\n if (!hasCompletionString(storeValue, inlineActiveValue)) return;\n let cleanup = noop;\n queueMicrotask(() => {\n const element = ref.current;\n if (!element) return;\n const { start: prevStart, end: prevEnd } = getTextboxSelection(element);\n const nextStart = storeValue.length;\n const nextEnd = inlineActiveValue.length;\n setSelectionRange(element, nextStart, nextEnd);\n cleanup = () => {\n if (!hasFocus(element)) return;\n const { start, end } = getTextboxSelection(element);\n if (start !== nextStart) return;\n if (end !== nextEnd) return;\n setSelectionRange(element, prevStart, prevEnd);\n };\n });\n return () => cleanup();\n }, [\n valueUpdated,\n inline,\n canInline,\n inlineActiveValue,\n items,\n autoSelect,\n storeValue\n ]);\n const scrollingElementRef = useRef(null);\n const getAutoSelectIdProp = useEvent(getAutoSelectId);\n const autoSelectIdRef = useRef(null);\n useEffect(() => {\n if (!open) return;\n if (!contentElement) return;\n const scrollingElement = getScrollingElement(contentElement);\n if (!scrollingElement) return;\n scrollingElementRef.current = scrollingElement;\n const onUserScroll = () => {\n canAutoSelectRef.current = false;\n };\n const onScroll = () => {\n if (!store) return;\n if (!canAutoSelectRef.current) return;\n const { activeId } = store.getState();\n if (activeId === null) return;\n if (activeId === autoSelectIdRef.current) return;\n canAutoSelectRef.current = false;\n };\n const options = { passive: true, capture: true };\n scrollingElement.addEventListener(\"wheel\", onUserScroll, options);\n scrollingElement.addEventListener(\"touchmove\", onUserScroll, options);\n scrollingElement.addEventListener(\"scroll\", onScroll, options);\n return () => {\n scrollingElement.removeEventListener(\"wheel\", onUserScroll, true);\n scrollingElement.removeEventListener(\"touchmove\", onUserScroll, true);\n scrollingElement.removeEventListener(\"scroll\", onScroll, true);\n };\n }, [open, contentElement, store]);\n useSafeLayoutEffect(() => {\n if (!storeValue) return;\n if (composingRef.current) return;\n canAutoSelectRef.current = true;\n }, [storeValue]);\n useSafeLayoutEffect(() => {\n if (autoSelect !== \"always\" && open) return;\n canAutoSelectRef.current = open;\n }, [autoSelect, open]);\n const resetValueOnSelect = store.useState(\"resetValueOnSelect\");\n useUpdateEffect(() => {\n var _a2, _b2;\n const canAutoSelect = canAutoSelectRef.current;\n if (!store) return;\n if (!open) return;\n if (!canAutoSelect && !resetValueOnSelect) return;\n const { baseElement, contentElement: contentElement2, activeId } = store.getState();\n if (baseElement && !hasFocus(baseElement)) return;\n if (contentElement2 == null ? void 0 : contentElement2.hasAttribute(\"data-placing\")) {\n const observer = new MutationObserver(forceValueUpdate);\n observer.observe(contentElement2, { attributeFilter: [\"data-placing\"] });\n return () => observer.disconnect();\n }\n if (autoSelect && canAutoSelect) {\n const userAutoSelectId = getAutoSelectIdProp(items);\n const autoSelectId = userAutoSelectId !== void 0 ? userAutoSelectId : (_a2 = getDefaultAutoSelectId(items)) != null ? _a2 : store.first();\n autoSelectIdRef.current = autoSelectId;\n store.move(autoSelectId != null ? autoSelectId : null);\n } else {\n const element = (_b2 = store.item(activeId || store.first())) == null ? void 0 : _b2.element;\n if (element && \"scrollIntoView\" in element) {\n element.scrollIntoView({ block: \"nearest\", inline: \"nearest\" });\n }\n }\n return;\n }, [\n store,\n open,\n valueUpdated,\n storeValue,\n autoSelect,\n resetValueOnSelect,\n getAutoSelectIdProp,\n items\n ]);\n useEffect(() => {\n if (!inline) return;\n const combobox = ref.current;\n if (!combobox) return;\n const elements = [combobox, contentElement].filter(\n (value2) => !!value2\n );\n const onBlur2 = (event) => {\n if (elements.every((el) => isFocusEventOutside(event, el))) {\n store == null ? void 0 : store.setValue(value);\n }\n };\n for (const element of elements) {\n element.addEventListener(\"focusout\", onBlur2);\n }\n return () => {\n for (const element of elements) {\n element.removeEventListener(\"focusout\", onBlur2);\n }\n };\n }, [inline, contentElement, store, value]);\n const canShow = (event) => {\n const currentTarget = event.currentTarget;\n return currentTarget.value.length >= showMinLength;\n };\n const onChangeProp = props.onChange;\n const showOnChangeProp = useBooleanEvent(showOnChange != null ? showOnChange : canShow);\n const setValueOnChangeProp = useBooleanEvent(\n // If the combobox is combined with tags, the value will be set by the tag\n // input component.\n setValueOnChange != null ? setValueOnChange : !store.tag\n );\n const onChange = useEvent((event) => {\n onChangeProp == null ? void 0 : onChangeProp(event);\n if (event.defaultPrevented) return;\n if (!store) return;\n const currentTarget = event.currentTarget;\n const { value: value2, selectionStart, selectionEnd } = currentTarget;\n const nativeEvent = event.nativeEvent;\n canAutoSelectRef.current = true;\n if (isInputEvent(nativeEvent)) {\n if (nativeEvent.isComposing) {\n canAutoSelectRef.current = false;\n composingRef.current = true;\n }\n if (inline) {\n const textInserted = nativeEvent.inputType === \"insertText\" || nativeEvent.inputType === \"insertCompositionText\";\n const caretAtEnd = selectionStart === value2.length;\n setCanInline(textInserted && caretAtEnd);\n }\n }\n if (setValueOnChangeProp(event)) {\n const isSameValue = value2 === store.getState().value;\n store.setValue(value2);\n queueMicrotask(() => {\n setSelectionRange(currentTarget, selectionStart, selectionEnd);\n });\n if (inline && autoSelect && isSameValue) {\n forceValueUpdate();\n }\n }\n if (showOnChangeProp(event)) {\n store.show();\n }\n if (!autoSelect || !canAutoSelectRef.current) {\n store.setActiveId(null);\n }\n });\n const onCompositionEndProp = props.onCompositionEnd;\n const onCompositionEnd = useEvent((event) => {\n canAutoSelectRef.current = true;\n composingRef.current = false;\n onCompositionEndProp == null ? void 0 : onCompositionEndProp(event);\n if (event.defaultPrevented) return;\n if (!autoSelect) return;\n forceValueUpdate();\n });\n const onMouseDownProp = props.onMouseDown;\n const blurActiveItemOnClickProp = useBooleanEvent(\n blurActiveItemOnClick != null ? blurActiveItemOnClick : () => !!(store == null ? void 0 : store.getState().includesBaseElement)\n );\n const setValueOnClickProp = useBooleanEvent(setValueOnClick);\n const showOnClickProp = useBooleanEvent(showOnClick != null ? showOnClick : canShow);\n const onMouseDown = useEvent((event) => {\n onMouseDownProp == null ? void 0 : onMouseDownProp(event);\n if (event.defaultPrevented) return;\n if (event.button) return;\n if (event.ctrlKey) return;\n if (!store) return;\n if (blurActiveItemOnClickProp(event)) {\n store.setActiveId(null);\n }\n if (setValueOnClickProp(event)) {\n store.setValue(value);\n }\n if (showOnClickProp(event)) {\n queueBeforeEvent(event.currentTarget, \"mouseup\", store.show);\n }\n });\n const onKeyDownProp = props.onKeyDown;\n const showOnKeyPressProp = useBooleanEvent(showOnKeyPress != null ? showOnKeyPress : canShow);\n const onKeyDown = useEvent((event) => {\n onKeyDownProp == null ? void 0 : onKeyDownProp(event);\n if (!event.repeat) {\n canAutoSelectRef.current = false;\n }\n if (event.defaultPrevented) return;\n if (event.ctrlKey) return;\n if (event.altKey) return;\n if (event.shiftKey) return;\n if (event.metaKey) return;\n if (!store) return;\n const { open: open2 } = store.getState();\n if (open2) return;\n if (event.key === \"ArrowUp\" || event.key === \"ArrowDown\") {\n if (showOnKeyPressProp(event)) {\n event.preventDefault();\n store.show();\n }\n }\n });\n const onBlurProp = props.onBlur;\n const onBlur = useEvent((event) => {\n canAutoSelectRef.current = false;\n onBlurProp == null ? void 0 : onBlurProp(event);\n if (event.defaultPrevented) return;\n });\n const id = useId(props.id);\n const ariaAutoComplete = isAriaAutoCompleteValue(autoComplete) ? autoComplete : void 0;\n const isActiveItem = store.useState((state) => state.activeId === null);\n props = __spreadProps(__spreadValues({\n id,\n role: \"combobox\",\n \"aria-autocomplete\": ariaAutoComplete,\n \"aria-haspopup\": getPopupRole(contentElement, \"listbox\"),\n \"aria-expanded\": open,\n \"aria-controls\": contentElement == null ? void 0 : contentElement.id,\n \"data-active-item\": isActiveItem || void 0,\n value\n }, props), {\n ref: useMergeRefs(ref, props.ref),\n onChange,\n onCompositionEnd,\n onMouseDown,\n onKeyDown,\n onBlur\n });\n props = useComposite(__spreadProps(__spreadValues({\n store,\n focusable\n }, props), {\n // Enable inline autocomplete when the user moves from the combobox input\n // to an item.\n moveOnKeyPress: (event) => {\n if (isFalsyBooleanCallback(moveOnKeyPress, event)) return false;\n if (inline) setCanInline(true);\n return true;\n }\n }));\n props = usePopoverAnchor(__spreadValues({ store }, props));\n return __spreadValues({ autoComplete: \"off\" }, props);\n }\n);\nvar Combobox = forwardRef(function Combobox2(props) {\n const htmlProps = useCombobox(props);\n return createElement(TagName, htmlProps);\n});\nexport {\n Combobox,\n useCombobox\n};\n", "\"use client\";\nimport {\n useComboboxStore\n} from \"../__chunks/FEOFMWBY.js\";\nimport {\n ComboboxContextProvider\n} from \"../__chunks/VEVQD5MH.js\";\nimport \"../__chunks/3XAVFTCA.js\";\nimport \"../__chunks/4CMBR7SL.js\";\nimport \"../__chunks/C3IKGW5T.js\";\nimport \"../__chunks/P7GR5CS5.js\";\nimport \"../__chunks/VDHZ5F7K.js\";\nimport \"../__chunks/MTZPJQMC.js\";\nimport \"../__chunks/RS7LB2H4.js\";\nimport \"../__chunks/S6EF7IVO.js\";\nimport \"../__chunks/LMDWO4NN.js\";\nimport \"../__chunks/O2PQ2652.js\";\nimport \"../__chunks/BM6PGYQY.js\";\nimport \"../__chunks/WYCIER3C.js\";\nimport \"../__chunks/YV4JVR4I.js\";\nimport \"../__chunks/ABQUS43J.js\";\nimport \"../__chunks/SK3NAZA3.js\";\nimport \"../__chunks/3YLGPPWQ.js\";\n\n// src/combobox/combobox-provider.tsx\nimport { jsx } from \"react/jsx-runtime\";\nfunction ComboboxProvider(props = {}) {\n const store = useComboboxStore(props);\n return /* @__PURE__ */ jsx(ComboboxContextProvider, { value: store, children: props.children });\n}\nexport {\n ComboboxProvider\n};\n", "\"use client\";\nimport {\n useFocusable\n} from \"./LVA2YJMS.js\";\nimport {\n createElement,\n createHook,\n forwardRef\n} from \"./LMDWO4NN.js\";\nimport {\n useEvent,\n useMergeRefs,\n useMetadataProps\n} from \"./ABQUS43J.js\";\nimport {\n __objRest,\n __spreadProps,\n __spreadValues\n} from \"./3YLGPPWQ.js\";\n\n// src/command/command.tsx\nimport { isButton, isTextField } from \"@ariakit/core/utils/dom\";\nimport {\n fireClickEvent,\n isSelfTarget,\n queueBeforeEvent\n} from \"@ariakit/core/utils/events\";\nimport { disabledFromProps } from \"@ariakit/core/utils/misc\";\nimport { isFirefox } from \"@ariakit/core/utils/platform\";\nimport { useEffect, useRef, useState } from \"react\";\nvar TagName = \"button\";\nfunction isNativeClick(event) {\n if (!event.isTrusted) return false;\n const element = event.currentTarget;\n if (event.key === \"Enter\") {\n return isButton(element) || element.tagName === \"SUMMARY\" || element.tagName === \"A\";\n }\n if (event.key === \" \") {\n return isButton(element) || element.tagName === \"SUMMARY\" || element.tagName === \"INPUT\" || element.tagName === \"SELECT\";\n }\n return false;\n}\nvar symbol = Symbol(\"command\");\nvar useCommand = createHook(\n function useCommand2(_a) {\n var _b = _a, { clickOnEnter = true, clickOnSpace = true } = _b, props = __objRest(_b, [\"clickOnEnter\", \"clickOnSpace\"]);\n const ref = useRef(null);\n const [isNativeButton, setIsNativeButton] = useState(false);\n useEffect(() => {\n if (!ref.current) return;\n setIsNativeButton(isButton(ref.current));\n }, []);\n const [active, setActive] = useState(false);\n const activeRef = useRef(false);\n const disabled = disabledFromProps(props);\n const [isDuplicate, metadataProps] = useMetadataProps(props, symbol, true);\n const onKeyDownProp = props.onKeyDown;\n const onKeyDown = useEvent((event) => {\n onKeyDownProp == null ? void 0 : onKeyDownProp(event);\n const element = event.currentTarget;\n if (event.defaultPrevented) return;\n if (isDuplicate) return;\n if (disabled) return;\n if (!isSelfTarget(event)) return;\n if (isTextField(element)) return;\n if (element.isContentEditable) return;\n const isEnter = clickOnEnter && event.key === \"Enter\";\n const isSpace = clickOnSpace && event.key === \" \";\n const shouldPreventEnter = event.key === \"Enter\" && !clickOnEnter;\n const shouldPreventSpace = event.key === \" \" && !clickOnSpace;\n if (shouldPreventEnter || shouldPreventSpace) {\n event.preventDefault();\n return;\n }\n if (isEnter || isSpace) {\n const nativeClick = isNativeClick(event);\n if (isEnter) {\n if (!nativeClick) {\n event.preventDefault();\n const _a2 = event, { view } = _a2, eventInit = __objRest(_a2, [\"view\"]);\n const click = () => fireClickEvent(element, eventInit);\n if (isFirefox()) {\n queueBeforeEvent(element, \"keyup\", click);\n } else {\n queueMicrotask(click);\n }\n }\n } else if (isSpace) {\n activeRef.current = true;\n if (!nativeClick) {\n event.preventDefault();\n setActive(true);\n }\n }\n }\n });\n const onKeyUpProp = props.onKeyUp;\n const onKeyUp = useEvent((event) => {\n onKeyUpProp == null ? void 0 : onKeyUpProp(event);\n if (event.defaultPrevented) return;\n if (isDuplicate) return;\n if (disabled) return;\n if (event.metaKey) return;\n const isSpace = clickOnSpace && event.key === \" \";\n if (activeRef.current && isSpace) {\n activeRef.current = false;\n if (!isNativeClick(event)) {\n event.preventDefault();\n setActive(false);\n const element = event.currentTarget;\n const _a2 = event, { view } = _a2, eventInit = __objRest(_a2, [\"view\"]);\n queueMicrotask(() => fireClickEvent(element, eventInit));\n }\n }\n });\n props = __spreadProps(__spreadValues(__spreadValues({\n \"data-active\": active || void 0,\n type: isNativeButton ? \"button\" : void 0\n }, metadataProps), props), {\n ref: useMergeRefs(ref, props.ref),\n onKeyDown,\n onKeyUp\n });\n props = useFocusable(props);\n return props;\n }\n);\nvar Command = forwardRef(function Command2(props) {\n const htmlProps = useCommand(props);\n return createElement(TagName, htmlProps);\n});\n\nexport {\n useCommand,\n Command\n};\n", "\"use client\";\nimport {\n ComboboxItemValueContext,\n useComboboxScopedContext\n} from \"../__chunks/VEVQD5MH.js\";\nimport \"../__chunks/P7GR5CS5.js\";\nimport \"../__chunks/VDHZ5F7K.js\";\nimport \"../__chunks/MTZPJQMC.js\";\nimport \"../__chunks/RS7LB2H4.js\";\nimport \"../__chunks/S6EF7IVO.js\";\nimport {\n createElement,\n createHook,\n forwardRef\n} from \"../__chunks/LMDWO4NN.js\";\nimport {\n useStoreState\n} from \"../__chunks/YV4JVR4I.js\";\nimport \"../__chunks/ABQUS43J.js\";\nimport \"../__chunks/SK3NAZA3.js\";\nimport {\n __objRest,\n __spreadValues\n} from \"../__chunks/3YLGPPWQ.js\";\n\n// src/combobox/combobox-item-value.tsx\nimport { toArray } from \"@ariakit/core/utils/array\";\nimport {\n normalizeString,\n removeUndefinedValues\n} from \"@ariakit/core/utils/misc\";\nimport { useContext, useMemo } from \"react\";\nimport { jsx } from \"react/jsx-runtime\";\nvar TagName = \"span\";\nfunction normalizeValue(value) {\n return normalizeString(value).toLowerCase();\n}\nfunction getOffsets(string, values) {\n const offsets = [];\n for (const value of values) {\n let pos = 0;\n const length = value.length;\n while (string.indexOf(value, pos) !== -1) {\n const index = string.indexOf(value, pos);\n if (index !== -1) {\n offsets.push([index, length]);\n }\n pos = index + 1;\n }\n }\n return offsets;\n}\nfunction filterOverlappingOffsets(offsets) {\n return offsets.filter(([offset, length], i, arr) => {\n return !arr.some(\n ([o, l], j) => j !== i && o <= offset && o + l >= offset + length\n );\n });\n}\nfunction sortOffsets(offsets) {\n return offsets.sort(([a], [b]) => a - b);\n}\nfunction splitValue(itemValue, userValue) {\n if (!itemValue) return itemValue;\n if (!userValue) return itemValue;\n const userValues = toArray(userValue).filter(Boolean).map(normalizeValue);\n const parts = [];\n const span = (value, autocomplete = false) => /* @__PURE__ */ jsx(\n \"span\",\n {\n \"data-autocomplete-value\": autocomplete ? \"\" : void 0,\n \"data-user-value\": autocomplete ? void 0 : \"\",\n children: value\n },\n parts.length\n );\n const offsets = sortOffsets(\n filterOverlappingOffsets(\n // Convert userValues into a set to avoid duplicates\n getOffsets(normalizeValue(itemValue), new Set(userValues))\n )\n );\n if (!offsets.length) {\n parts.push(span(itemValue, true));\n return parts;\n }\n const [firstOffset] = offsets[0];\n const values = [\n itemValue.slice(0, firstOffset),\n ...offsets.flatMap(([offset, length], i) => {\n var _a;\n const value = itemValue.slice(offset, offset + length);\n const nextOffset = (_a = offsets[i + 1]) == null ? void 0 : _a[0];\n const nextValue = itemValue.slice(offset + length, nextOffset);\n return [value, nextValue];\n })\n ];\n values.forEach((value, i) => {\n if (!value) return;\n parts.push(span(value, i % 2 === 0));\n });\n return parts;\n}\nvar useComboboxItemValue = createHook(function useComboboxItemValue2(_a) {\n var _b = _a, { store, value, userValue } = _b, props = __objRest(_b, [\"store\", \"value\", \"userValue\"]);\n const context = useComboboxScopedContext();\n store = store || context;\n const itemContext = useContext(ComboboxItemValueContext);\n const itemValue = value != null ? value : itemContext;\n const inputValue = useStoreState(store, (state) => userValue != null ? userValue : state == null ? void 0 : state.value);\n const children = useMemo(() => {\n if (!itemValue) return;\n if (!inputValue) return itemValue;\n return splitValue(itemValue, inputValue);\n }, [itemValue, inputValue]);\n props = __spreadValues({\n children\n }, props);\n return removeUndefinedValues(props);\n});\nvar ComboboxItemValue = forwardRef(function ComboboxItemValue2(props) {\n const htmlProps = useComboboxItemValue(props);\n return createElement(TagName, htmlProps);\n});\nexport {\n ComboboxItemValue,\n useComboboxItemValue\n};\n", "\"use client\";\nimport {\n useCompositeContext\n} from \"./P7GR5CS5.js\";\nimport {\n createElement,\n createHook,\n forwardRef,\n memo\n} from \"./LMDWO4NN.js\";\nimport {\n useBooleanEvent,\n useEvent,\n useIsMouseMoving,\n useMergeRefs\n} from \"./ABQUS43J.js\";\nimport {\n __objRest,\n __spreadProps,\n __spreadValues\n} from \"./3YLGPPWQ.js\";\n\n// src/composite/composite-hover.tsx\nimport { contains } from \"@ariakit/core/utils/dom\";\nimport { hasFocus, hasFocusWithin } from \"@ariakit/core/utils/focus\";\nimport {\n hasOwnProperty,\n invariant,\n removeUndefinedValues\n} from \"@ariakit/core/utils/misc\";\nimport { useCallback } from \"react\";\nvar TagName = \"div\";\nfunction getMouseDestination(event) {\n const relatedTarget = event.relatedTarget;\n if ((relatedTarget == null ? void 0 : relatedTarget.nodeType) === Node.ELEMENT_NODE) {\n return relatedTarget;\n }\n return null;\n}\nfunction hoveringInside(event) {\n const nextElement = getMouseDestination(event);\n if (!nextElement) return false;\n return contains(event.currentTarget, nextElement);\n}\nvar symbol = Symbol(\"composite-hover\");\nfunction movingToAnotherItem(event) {\n let dest = getMouseDestination(event);\n if (!dest) return false;\n do {\n if (hasOwnProperty(dest, symbol) && dest[symbol]) return true;\n dest = dest.parentElement;\n } while (dest);\n return false;\n}\nvar useCompositeHover = createHook(\n function useCompositeHover2(_a) {\n var _b = _a, {\n store,\n focusOnHover = true,\n blurOnHoverEnd = !!focusOnHover\n } = _b, props = __objRest(_b, [\n \"store\",\n \"focusOnHover\",\n \"blurOnHoverEnd\"\n ]);\n const context = useCompositeContext();\n store = store || context;\n invariant(\n store,\n process.env.NODE_ENV !== \"production\" && \"CompositeHover must be wrapped in a Composite component.\"\n );\n const isMouseMoving = useIsMouseMoving();\n const onMouseMoveProp = props.onMouseMove;\n const focusOnHoverProp = useBooleanEvent(focusOnHover);\n const onMouseMove = useEvent((event) => {\n onMouseMoveProp == null ? void 0 : onMouseMoveProp(event);\n if (event.defaultPrevented) return;\n if (!isMouseMoving()) return;\n if (!focusOnHoverProp(event)) return;\n if (!hasFocusWithin(event.currentTarget)) {\n const baseElement = store == null ? void 0 : store.getState().baseElement;\n if (baseElement && !hasFocus(baseElement)) {\n baseElement.focus();\n }\n }\n store == null ? void 0 : store.setActiveId(event.currentTarget.id);\n });\n const onMouseLeaveProp = props.onMouseLeave;\n const blurOnHoverEndProp = useBooleanEvent(blurOnHoverEnd);\n const onMouseLeave = useEvent((event) => {\n var _a2;\n onMouseLeaveProp == null ? void 0 : onMouseLeaveProp(event);\n if (event.defaultPrevented) return;\n if (!isMouseMoving()) return;\n if (hoveringInside(event)) return;\n if (movingToAnotherItem(event)) return;\n if (!focusOnHoverProp(event)) return;\n if (!blurOnHoverEndProp(event)) return;\n store == null ? void 0 : store.setActiveId(null);\n (_a2 = store == null ? void 0 : store.getState().baseElement) == null ? void 0 : _a2.focus();\n });\n const ref = useCallback((element) => {\n if (!element) return;\n element[symbol] = true;\n }, []);\n props = __spreadProps(__spreadValues({}, props), {\n ref: useMergeRefs(ref, props.ref),\n onMouseMove,\n onMouseLeave\n });\n return removeUndefinedValues(props);\n }\n);\nvar CompositeHover = memo(\n forwardRef(function CompositeHover2(props) {\n const htmlProps = useCompositeHover(props);\n return createElement(TagName, htmlProps);\n })\n);\n\nexport {\n useCompositeHover,\n CompositeHover\n};\n", "\"use client\";\nimport {\n useCollectionContext\n} from \"./VDHZ5F7K.js\";\nimport {\n createElement,\n createHook,\n forwardRef\n} from \"./LMDWO4NN.js\";\nimport {\n useId,\n useMergeRefs\n} from \"./ABQUS43J.js\";\nimport {\n __objRest,\n __spreadProps,\n __spreadValues\n} from \"./3YLGPPWQ.js\";\n\n// src/collection/collection-item.tsx\nimport { identity, removeUndefinedValues } from \"@ariakit/core/utils/misc\";\nimport { useEffect, useRef } from \"react\";\nvar TagName = \"div\";\nvar useCollectionItem = createHook(\n function useCollectionItem2(_a) {\n var _b = _a, {\n store,\n shouldRegisterItem = true,\n getItem = identity,\n element: element\n } = _b, props = __objRest(_b, [\n \"store\",\n \"shouldRegisterItem\",\n \"getItem\",\n // @ts-expect-error This prop may come from a collection renderer.\n \"element\"\n ]);\n const context = useCollectionContext();\n store = store || context;\n const id = useId(props.id);\n const ref = useRef(element);\n useEffect(() => {\n const element2 = ref.current;\n if (!id) return;\n if (!element2) return;\n if (!shouldRegisterItem) return;\n const item = getItem({ id, element: element2 });\n return store == null ? void 0 : store.renderItem(item);\n }, [id, shouldRegisterItem, getItem, store]);\n props = __spreadProps(__spreadValues({}, props), {\n ref: useMergeRefs(ref, props.ref)\n });\n return removeUndefinedValues(props);\n }\n);\nvar CollectionItem = forwardRef(function CollectionItem2(props) {\n const htmlProps = useCollectionItem(props);\n return createElement(TagName, htmlProps);\n});\n\nexport {\n useCollectionItem,\n CollectionItem\n};\n", "\"use client\";\nimport {\n useCollectionItem\n} from \"./RZ4GPYOB.js\";\nimport {\n useCommand\n} from \"./KUU7WJ55.js\";\nimport {\n focusSilently,\n getEnabledItem,\n isItem,\n selectTextField\n} from \"./5VQZOHHZ.js\";\nimport {\n CompositeItemContext,\n CompositeRowContext,\n useCompositeContext\n} from \"./P7GR5CS5.js\";\nimport {\n createElement,\n createHook,\n forwardRef,\n memo\n} from \"./LMDWO4NN.js\";\nimport {\n useStoreStateObject\n} from \"./YV4JVR4I.js\";\nimport {\n useBooleanEvent,\n useEvent,\n useId,\n useMergeRefs,\n useWrapElement\n} from \"./ABQUS43J.js\";\nimport {\n __objRest,\n __spreadProps,\n __spreadValues\n} from \"./3YLGPPWQ.js\";\n\n// src/composite/composite-item.tsx\nimport {\n getScrollingElement,\n getTextboxSelection,\n getTextboxValue,\n isButton,\n isTextField,\n isTextbox\n} from \"@ariakit/core/utils/dom\";\nimport { isPortalEvent, isSelfTarget } from \"@ariakit/core/utils/events\";\nimport {\n disabledFromProps,\n removeUndefinedValues\n} from \"@ariakit/core/utils/misc\";\nimport { isSafari } from \"@ariakit/core/utils/platform\";\nimport { useCallback, useContext, useMemo, useRef } from \"react\";\nimport { jsx } from \"react/jsx-runtime\";\nvar TagName = \"button\";\nfunction isEditableElement(element) {\n if (isTextbox(element)) return true;\n return element.tagName === \"INPUT\" && !isButton(element);\n}\nfunction getNextPageOffset(scrollingElement, pageUp = false) {\n const height = scrollingElement.clientHeight;\n const { top } = scrollingElement.getBoundingClientRect();\n const pageSize = Math.max(height * 0.875, height - 40) * 1.5;\n const pageOffset = pageUp ? height - pageSize + top : pageSize + top;\n if (scrollingElement.tagName === \"HTML\") {\n return pageOffset + scrollingElement.scrollTop;\n }\n return pageOffset;\n}\nfunction getItemOffset(itemElement, pageUp = false) {\n const { top } = itemElement.getBoundingClientRect();\n if (pageUp) {\n return top + itemElement.clientHeight;\n }\n return top;\n}\nfunction findNextPageItemId(element, store, next, pageUp = false) {\n var _a;\n if (!store) return;\n if (!next) return;\n const { renderedItems } = store.getState();\n const scrollingElement = getScrollingElement(element);\n if (!scrollingElement) return;\n const nextPageOffset = getNextPageOffset(scrollingElement, pageUp);\n let id;\n let prevDifference;\n for (let i = 0; i < renderedItems.length; i += 1) {\n const previousId = id;\n id = next(i);\n if (!id) break;\n if (id === previousId) continue;\n const itemElement = (_a = getEnabledItem(store, id)) == null ? void 0 : _a.element;\n if (!itemElement) continue;\n const itemOffset = getItemOffset(itemElement, pageUp);\n const difference = itemOffset - nextPageOffset;\n const absDifference = Math.abs(difference);\n if (pageUp && difference <= 0 || !pageUp && difference >= 0) {\n if (prevDifference !== void 0 && prevDifference < absDifference) {\n id = previousId;\n }\n break;\n }\n prevDifference = absDifference;\n }\n return id;\n}\nfunction targetIsAnotherItem(event, store) {\n if (isSelfTarget(event)) return false;\n return isItem(store, event.target);\n}\nvar useCompositeItem = createHook(\n function useCompositeItem2(_a) {\n var _b = _a, {\n store,\n rowId: rowIdProp,\n preventScrollOnKeyDown = false,\n moveOnKeyPress = true,\n tabbable = false,\n getItem: getItemProp,\n \"aria-setsize\": ariaSetSizeProp,\n \"aria-posinset\": ariaPosInSetProp\n } = _b, props = __objRest(_b, [\n \"store\",\n \"rowId\",\n \"preventScrollOnKeyDown\",\n \"moveOnKeyPress\",\n \"tabbable\",\n \"getItem\",\n \"aria-setsize\",\n \"aria-posinset\"\n ]);\n const context = useCompositeContext();\n store = store || context;\n const id = useId(props.id);\n const ref = useRef(null);\n const row = useContext(CompositeRowContext);\n const disabled = disabledFromProps(props);\n const trulyDisabled = disabled && !props.accessibleWhenDisabled;\n const {\n rowId,\n baseElement,\n isActiveItem,\n ariaSetSize,\n ariaPosInSet,\n isTabbable\n } = useStoreStateObject(store, {\n rowId(state) {\n if (rowIdProp) return rowIdProp;\n if (!state) return;\n if (!(row == null ? void 0 : row.baseElement)) return;\n if (row.baseElement !== state.baseElement) return;\n return row.id;\n },\n baseElement(state) {\n return (state == null ? void 0 : state.baseElement) || void 0;\n },\n isActiveItem(state) {\n return !!state && state.activeId === id;\n },\n ariaSetSize(state) {\n if (ariaSetSizeProp != null) return ariaSetSizeProp;\n if (!state) return;\n if (!(row == null ? void 0 : row.ariaSetSize)) return;\n if (row.baseElement !== state.baseElement) return;\n return row.ariaSetSize;\n },\n ariaPosInSet(state) {\n if (ariaPosInSetProp != null) return ariaPosInSetProp;\n if (!state) return;\n if (!(row == null ? void 0 : row.ariaPosInSet)) return;\n if (row.baseElement !== state.baseElement) return;\n const itemsInRow = state.renderedItems.filter(\n (item) => item.rowId === rowId\n );\n return row.ariaPosInSet + itemsInRow.findIndex((item) => item.id === id);\n },\n isTabbable(state) {\n if (!(state == null ? void 0 : state.renderedItems.length)) return true;\n if (state.virtualFocus) return false;\n if (tabbable) return true;\n if (state.activeId === null) return false;\n const item = store == null ? void 0 : store.item(state.activeId);\n if (item == null ? void 0 : item.disabled) return true;\n if (!(item == null ? void 0 : item.element)) return true;\n return state.activeId === id;\n }\n });\n const getItem = useCallback(\n (item) => {\n var _a2;\n const nextItem = __spreadProps(__spreadValues({}, item), {\n id: id || item.id,\n rowId,\n disabled: !!trulyDisabled,\n children: (_a2 = item.element) == null ? void 0 : _a2.textContent\n });\n if (getItemProp) {\n return getItemProp(nextItem);\n }\n return nextItem;\n },\n [id, rowId, trulyDisabled, getItemProp]\n );\n const onFocusProp = props.onFocus;\n const hasFocusedComposite = useRef(false);\n const onFocus = useEvent((event) => {\n onFocusProp == null ? void 0 : onFocusProp(event);\n if (event.defaultPrevented) return;\n if (isPortalEvent(event)) return;\n if (!id) return;\n if (!store) return;\n if (targetIsAnotherItem(event, store)) return;\n const { virtualFocus, baseElement: baseElement2 } = store.getState();\n store.setActiveId(id);\n if (isTextbox(event.currentTarget)) {\n selectTextField(event.currentTarget);\n }\n if (!virtualFocus) return;\n if (!isSelfTarget(event)) return;\n if (isEditableElement(event.currentTarget)) return;\n if (!(baseElement2 == null ? void 0 : baseElement2.isConnected)) return;\n if (isSafari() && event.currentTarget.hasAttribute(\"data-autofocus\")) {\n event.currentTarget.scrollIntoView({\n block: \"nearest\",\n inline: \"nearest\"\n });\n }\n hasFocusedComposite.current = true;\n const fromComposite = event.relatedTarget === baseElement2 || isItem(store, event.relatedTarget);\n if (fromComposite) {\n focusSilently(baseElement2);\n } else {\n baseElement2.focus();\n }\n });\n const onBlurCaptureProp = props.onBlurCapture;\n const onBlurCapture = useEvent((event) => {\n onBlurCaptureProp == null ? void 0 : onBlurCaptureProp(event);\n if (event.defaultPrevented) return;\n const state = store == null ? void 0 : store.getState();\n if ((state == null ? void 0 : state.virtualFocus) && hasFocusedComposite.current) {\n hasFocusedComposite.current = false;\n event.preventDefault();\n event.stopPropagation();\n }\n });\n const onKeyDownProp = props.onKeyDown;\n const preventScrollOnKeyDownProp = useBooleanEvent(preventScrollOnKeyDown);\n const moveOnKeyPressProp = useBooleanEvent(moveOnKeyPress);\n const onKeyDown = useEvent((event) => {\n onKeyDownProp == null ? void 0 : onKeyDownProp(event);\n if (event.defaultPrevented) return;\n if (!isSelfTarget(event)) return;\n if (!store) return;\n const { currentTarget } = event;\n const state = store.getState();\n const item = store.item(id);\n const isGrid = !!(item == null ? void 0 : item.rowId);\n const isVertical = state.orientation !== \"horizontal\";\n const isHorizontal = state.orientation !== \"vertical\";\n const canHomeEnd = () => {\n if (isGrid) return true;\n if (isHorizontal) return true;\n if (!state.baseElement) return true;\n if (!isTextField(state.baseElement)) return true;\n return false;\n };\n const keyMap = {\n ArrowUp: (isGrid || isVertical) && store.up,\n ArrowRight: (isGrid || isHorizontal) && store.next,\n ArrowDown: (isGrid || isVertical) && store.down,\n ArrowLeft: (isGrid || isHorizontal) && store.previous,\n Home: () => {\n if (!canHomeEnd()) return;\n if (!isGrid || event.ctrlKey) {\n return store == null ? void 0 : store.first();\n }\n return store == null ? void 0 : store.previous(-1);\n },\n End: () => {\n if (!canHomeEnd()) return;\n if (!isGrid || event.ctrlKey) {\n return store == null ? void 0 : store.last();\n }\n return store == null ? void 0 : store.next(-1);\n },\n PageUp: () => {\n return findNextPageItemId(currentTarget, store, store == null ? void 0 : store.up, true);\n },\n PageDown: () => {\n return findNextPageItemId(currentTarget, store, store == null ? void 0 : store.down);\n }\n };\n const action = keyMap[event.key];\n if (action) {\n if (isTextbox(currentTarget)) {\n const selection = getTextboxSelection(currentTarget);\n const isLeft = isHorizontal && event.key === \"ArrowLeft\";\n const isRight = isHorizontal && event.key === \"ArrowRight\";\n const isUp = isVertical && event.key === \"ArrowUp\";\n const isDown = isVertical && event.key === \"ArrowDown\";\n if (isRight || isDown) {\n const { length: valueLength } = getTextboxValue(currentTarget);\n if (selection.end !== valueLength) return;\n } else if ((isLeft || isUp) && selection.start !== 0) return;\n }\n const nextId = action();\n if (preventScrollOnKeyDownProp(event) || nextId !== void 0) {\n if (!moveOnKeyPressProp(event)) return;\n event.preventDefault();\n store.move(nextId);\n }\n }\n });\n const providerValue = useMemo(\n () => ({ id, baseElement }),\n [id, baseElement]\n );\n props = useWrapElement(\n props,\n (element) => /* @__PURE__ */ jsx(CompositeItemContext.Provider, { value: providerValue, children: element }),\n [providerValue]\n );\n props = __spreadProps(__spreadValues({\n id,\n \"data-active-item\": isActiveItem || void 0\n }, props), {\n ref: useMergeRefs(ref, props.ref),\n tabIndex: isTabbable ? props.tabIndex : -1,\n onFocus,\n onBlurCapture,\n onKeyDown\n });\n props = useCommand(props);\n props = useCollectionItem(__spreadProps(__spreadValues({\n store\n }, props), {\n getItem,\n shouldRegisterItem: id ? props.shouldRegisterItem : false\n }));\n return removeUndefinedValues(__spreadProps(__spreadValues({}, props), {\n \"aria-setsize\": ariaSetSize,\n \"aria-posinset\": ariaPosInSet\n }));\n }\n);\nvar CompositeItem = memo(\n forwardRef(function CompositeItem2(props) {\n const htmlProps = useCompositeItem(props);\n return createElement(TagName, htmlProps);\n })\n);\n\nexport {\n useCompositeItem,\n CompositeItem\n};\n", "\"use client\";\nimport {\n useCompositeHover\n} from \"./UQQRIHDV.js\";\nimport {\n ComboboxItemCheckedContext,\n ComboboxItemValueContext,\n ComboboxListRoleContext,\n useComboboxScopedContext\n} from \"./VEVQD5MH.js\";\nimport {\n useCompositeItem\n} from \"./P2CTZE2T.js\";\nimport {\n createElement,\n createHook,\n forwardRef,\n memo\n} from \"./LMDWO4NN.js\";\nimport {\n useStoreStateObject\n} from \"./YV4JVR4I.js\";\nimport {\n useBooleanEvent,\n useEvent,\n useWrapElement\n} from \"./ABQUS43J.js\";\nimport {\n __objRest,\n __spreadProps,\n __spreadValues\n} from \"./3YLGPPWQ.js\";\n\n// src/combobox/combobox-item.tsx\nimport { isTextField } from \"@ariakit/core/utils/dom\";\nimport { isDownloading, isOpeningInNewTab } from \"@ariakit/core/utils/events\";\nimport { hasFocus } from \"@ariakit/core/utils/focus\";\nimport { invariant } from \"@ariakit/core/utils/misc\";\nimport { useCallback, useContext } from \"react\";\nimport { jsx } from \"react/jsx-runtime\";\nvar TagName = \"div\";\nfunction isSelected(storeValue, itemValue) {\n if (itemValue == null) return;\n if (storeValue == null) return false;\n if (Array.isArray(storeValue)) {\n return storeValue.includes(itemValue);\n }\n return storeValue === itemValue;\n}\nfunction getItemRole(popupRole) {\n var _a;\n const itemRoleByPopupRole = {\n menu: \"menuitem\",\n listbox: \"option\",\n tree: \"treeitem\"\n };\n const key = popupRole;\n return (_a = itemRoleByPopupRole[key]) != null ? _a : \"option\";\n}\nvar useComboboxItem = createHook(\n function useComboboxItem2(_a) {\n var _b = _a, {\n store,\n value,\n hideOnClick,\n setValueOnClick,\n selectValueOnClick = true,\n resetValueOnSelect,\n focusOnHover = false,\n moveOnKeyPress = true,\n getItem: getItemProp\n } = _b, props = __objRest(_b, [\n \"store\",\n \"value\",\n \"hideOnClick\",\n \"setValueOnClick\",\n \"selectValueOnClick\",\n \"resetValueOnSelect\",\n \"focusOnHover\",\n \"moveOnKeyPress\",\n \"getItem\"\n ]);\n var _a2;\n const context = useComboboxScopedContext();\n store = store || context;\n invariant(\n store,\n process.env.NODE_ENV !== \"production\" && \"ComboboxItem must be wrapped in a ComboboxList or ComboboxPopover component.\"\n );\n const { resetValueOnSelectState, multiSelectable, selected } = useStoreStateObject(store, {\n resetValueOnSelectState: \"resetValueOnSelect\",\n multiSelectable(state) {\n return Array.isArray(state.selectedValue);\n },\n selected(state) {\n return isSelected(state.selectedValue, value);\n }\n });\n const getItem = useCallback(\n (item) => {\n const nextItem = __spreadProps(__spreadValues({}, item), { value });\n if (getItemProp) {\n return getItemProp(nextItem);\n }\n return nextItem;\n },\n [value, getItemProp]\n );\n setValueOnClick = setValueOnClick != null ? setValueOnClick : !multiSelectable;\n hideOnClick = hideOnClick != null ? hideOnClick : value != null && !multiSelectable;\n const onClickProp = props.onClick;\n const setValueOnClickProp = useBooleanEvent(setValueOnClick);\n const selectValueOnClickProp = useBooleanEvent(selectValueOnClick);\n const resetValueOnSelectProp = useBooleanEvent(\n (_a2 = resetValueOnSelect != null ? resetValueOnSelect : resetValueOnSelectState) != null ? _a2 : multiSelectable\n );\n const hideOnClickProp = useBooleanEvent(hideOnClick);\n const onClick = useEvent((event) => {\n onClickProp == null ? void 0 : onClickProp(event);\n if (event.defaultPrevented) return;\n if (isDownloading(event)) return;\n if (isOpeningInNewTab(event)) return;\n if (value != null) {\n if (selectValueOnClickProp(event)) {\n if (resetValueOnSelectProp(event)) {\n store == null ? void 0 : store.resetValue();\n }\n store == null ? void 0 : store.setSelectedValue((prevValue) => {\n if (!Array.isArray(prevValue)) return value;\n if (prevValue.includes(value)) {\n return prevValue.filter((v) => v !== value);\n }\n return [...prevValue, value];\n });\n }\n if (setValueOnClickProp(event)) {\n store == null ? void 0 : store.setValue(value);\n }\n }\n if (hideOnClickProp(event)) {\n store == null ? void 0 : store.hide();\n }\n });\n const onKeyDownProp = props.onKeyDown;\n const onKeyDown = useEvent((event) => {\n onKeyDownProp == null ? void 0 : onKeyDownProp(event);\n if (event.defaultPrevented) return;\n const baseElement = store == null ? void 0 : store.getState().baseElement;\n if (!baseElement) return;\n if (hasFocus(baseElement)) return;\n const printable = event.key.length === 1;\n if (printable || event.key === \"Backspace\" || event.key === \"Delete\") {\n queueMicrotask(() => baseElement.focus());\n if (isTextField(baseElement)) {\n store == null ? void 0 : store.setValue(baseElement.value);\n }\n }\n });\n if (multiSelectable && selected != null) {\n props = __spreadValues({\n \"aria-selected\": selected\n }, props);\n }\n props = useWrapElement(\n props,\n (element) => /* @__PURE__ */ jsx(ComboboxItemValueContext.Provider, { value, children: /* @__PURE__ */ jsx(ComboboxItemCheckedContext.Provider, { value: selected != null ? selected : false, children: element }) }),\n [value, selected]\n );\n const popupRole = useContext(ComboboxListRoleContext);\n props = __spreadProps(__spreadValues({\n role: getItemRole(popupRole),\n children: value\n }, props), {\n onClick,\n onKeyDown\n });\n const moveOnKeyPressProp = useBooleanEvent(moveOnKeyPress);\n props = useCompositeItem(__spreadProps(__spreadValues({\n store\n }, props), {\n getItem,\n // Dispatch a custom event on the combobox input when moving to an item\n // with the keyboard so the Combobox component can enable inline\n // autocompletion.\n moveOnKeyPress: (event) => {\n if (!moveOnKeyPressProp(event)) return false;\n const moveEvent = new Event(\"combobox-item-move\");\n const baseElement = store == null ? void 0 : store.getState().baseElement;\n baseElement == null ? void 0 : baseElement.dispatchEvent(moveEvent);\n return true;\n }\n }));\n props = useCompositeHover(__spreadValues({ store, focusOnHover }, props));\n return props;\n }\n);\nvar ComboboxItem = memo(\n forwardRef(function ComboboxItem2(props) {\n const htmlProps = useComboboxItem(props);\n return createElement(TagName, htmlProps);\n })\n);\n\nexport {\n useComboboxItem,\n ComboboxItem\n};\n", "\"use client\";\nimport {\n useComboboxProviderContext\n} from \"../__chunks/VEVQD5MH.js\";\nimport \"../__chunks/P7GR5CS5.js\";\nimport \"../__chunks/VDHZ5F7K.js\";\nimport \"../__chunks/MTZPJQMC.js\";\nimport \"../__chunks/RS7LB2H4.js\";\nimport \"../__chunks/S6EF7IVO.js\";\nimport {\n createElement,\n createHook,\n forwardRef,\n memo\n} from \"../__chunks/LMDWO4NN.js\";\nimport \"../__chunks/ABQUS43J.js\";\nimport \"../__chunks/SK3NAZA3.js\";\nimport {\n __objRest,\n __spreadValues\n} from \"../__chunks/3YLGPPWQ.js\";\n\n// src/combobox/combobox-label.tsx\nimport { invariant, removeUndefinedValues } from \"@ariakit/core/utils/misc\";\nvar TagName = \"label\";\nvar useComboboxLabel = createHook(\n function useComboboxLabel2(_a) {\n var _b = _a, { store } = _b, props = __objRest(_b, [\"store\"]);\n const context = useComboboxProviderContext();\n store = store || context;\n invariant(\n store,\n process.env.NODE_ENV !== \"production\" && \"ComboboxLabel must receive a `store` prop or be wrapped in a ComboboxProvider component.\"\n );\n const comboboxId = store.useState((state) => {\n var _a2;\n return (_a2 = state.baseElement) == null ? void 0 : _a2.id;\n });\n props = __spreadValues({\n htmlFor: comboboxId\n }, props);\n return removeUndefinedValues(props);\n }\n);\nvar ComboboxLabel = memo(\n forwardRef(function ComboboxLabel2(props) {\n const htmlProps = useComboboxLabel(props);\n return createElement(TagName, htmlProps);\n })\n);\nexport {\n ComboboxLabel,\n useComboboxLabel\n};\n", "\"use client\";\nimport {\n DialogScopedContextProvider\n} from \"./RS7LB2H4.js\";\nimport {\n useDisclosureProviderContext\n} from \"./S6EF7IVO.js\";\nimport {\n createElement,\n createHook,\n forwardRef\n} from \"./LMDWO4NN.js\";\nimport {\n useStoreState\n} from \"./YV4JVR4I.js\";\nimport {\n useId,\n useMergeRefs,\n useSafeLayoutEffect,\n useWrapElement\n} from \"./ABQUS43J.js\";\nimport {\n __objRest,\n __spreadProps,\n __spreadValues\n} from \"./3YLGPPWQ.js\";\n\n// src/disclosure/disclosure-content.tsx\nimport { invariant, removeUndefinedValues } from \"@ariakit/core/utils/misc\";\nimport { useMemo, useRef, useState } from \"react\";\nimport { flushSync } from \"react-dom\";\nimport { jsx } from \"react/jsx-runtime\";\nvar TagName = \"div\";\nfunction afterTimeout(timeoutMs, cb) {\n const timeoutId = setTimeout(cb, timeoutMs);\n return () => clearTimeout(timeoutId);\n}\nfunction afterPaint(cb) {\n let raf = requestAnimationFrame(() => {\n raf = requestAnimationFrame(cb);\n });\n return () => cancelAnimationFrame(raf);\n}\nfunction parseCSSTime(...times) {\n return times.join(\", \").split(\", \").reduce((longestTime, currentTimeString) => {\n const multiplier = currentTimeString.endsWith(\"ms\") ? 1 : 1e3;\n const currentTime = Number.parseFloat(currentTimeString || \"0s\") * multiplier;\n if (currentTime > longestTime) return currentTime;\n return longestTime;\n }, 0);\n}\nfunction isHidden(mounted, hidden, alwaysVisible) {\n return !alwaysVisible && hidden !== false && (!mounted || !!hidden);\n}\nvar useDisclosureContent = createHook(function useDisclosureContent2(_a) {\n var _b = _a, { store, alwaysVisible } = _b, props = __objRest(_b, [\"store\", \"alwaysVisible\"]);\n const context = useDisclosureProviderContext();\n store = store || context;\n invariant(\n store,\n process.env.NODE_ENV !== \"production\" && \"DisclosureContent must receive a `store` prop or be wrapped in a DisclosureProvider component.\"\n );\n const ref = useRef(null);\n const id = useId(props.id);\n const [transition, setTransition] = useState(null);\n const open = store.useState(\"open\");\n const mounted = store.useState(\"mounted\");\n const animated = store.useState(\"animated\");\n const contentElement = store.useState(\"contentElement\");\n const otherElement = useStoreState(store.disclosure, \"contentElement\");\n useSafeLayoutEffect(() => {\n if (!ref.current) return;\n store == null ? void 0 : store.setContentElement(ref.current);\n }, [store]);\n useSafeLayoutEffect(() => {\n let previousAnimated;\n store == null ? void 0 : store.setState(\"animated\", (animated2) => {\n previousAnimated = animated2;\n return true;\n });\n return () => {\n if (previousAnimated === void 0) return;\n store == null ? void 0 : store.setState(\"animated\", previousAnimated);\n };\n }, [store]);\n useSafeLayoutEffect(() => {\n if (!animated) return;\n if (!(contentElement == null ? void 0 : contentElement.isConnected)) {\n setTransition(null);\n return;\n }\n return afterPaint(() => {\n setTransition(open ? \"enter\" : mounted ? \"leave\" : null);\n });\n }, [animated, contentElement, open, mounted]);\n useSafeLayoutEffect(() => {\n if (!store) return;\n if (!animated) return;\n if (!transition) return;\n if (!contentElement) return;\n const stopAnimation = () => store == null ? void 0 : store.setState(\"animating\", false);\n const stopAnimationSync = () => flushSync(stopAnimation);\n if (transition === \"leave\" && open) return;\n if (transition === \"enter\" && !open) return;\n if (typeof animated === \"number\") {\n const timeout2 = animated;\n return afterTimeout(timeout2, stopAnimationSync);\n }\n const {\n transitionDuration,\n animationDuration,\n transitionDelay,\n animationDelay\n } = getComputedStyle(contentElement);\n const {\n transitionDuration: transitionDuration2 = \"0\",\n animationDuration: animationDuration2 = \"0\",\n transitionDelay: transitionDelay2 = \"0\",\n animationDelay: animationDelay2 = \"0\"\n } = otherElement ? getComputedStyle(otherElement) : {};\n const delay = parseCSSTime(\n transitionDelay,\n animationDelay,\n transitionDelay2,\n animationDelay2\n );\n const duration = parseCSSTime(\n transitionDuration,\n animationDuration,\n transitionDuration2,\n animationDuration2\n );\n const timeout = delay + duration;\n if (!timeout) {\n if (transition === \"enter\") {\n store.setState(\"animated\", false);\n }\n stopAnimation();\n return;\n }\n const frameRate = 1e3 / 60;\n const maxTimeout = Math.max(timeout - frameRate, 0);\n return afterTimeout(maxTimeout, stopAnimationSync);\n }, [store, animated, contentElement, otherElement, open, transition]);\n props = useWrapElement(\n props,\n (element) => /* @__PURE__ */ jsx(DialogScopedContextProvider, { value: store, children: element }),\n [store]\n );\n const hidden = isHidden(mounted, props.hidden, alwaysVisible);\n const styleProp = props.style;\n const style = useMemo(() => {\n if (hidden) {\n return __spreadProps(__spreadValues({}, styleProp), { display: \"none\" });\n }\n return styleProp;\n }, [hidden, styleProp]);\n props = __spreadProps(__spreadValues({\n id,\n \"data-open\": open || void 0,\n \"data-enter\": transition === \"enter\" || void 0,\n \"data-leave\": transition === \"leave\" || void 0,\n hidden\n }, props), {\n ref: useMergeRefs(id ? store.setContentElement : null, ref, props.ref),\n style\n });\n return removeUndefinedValues(props);\n});\nvar DisclosureContentImpl = forwardRef(function DisclosureContentImpl2(props) {\n const htmlProps = useDisclosureContent(props);\n return createElement(TagName, htmlProps);\n});\nvar DisclosureContent = forwardRef(function DisclosureContent2(_a) {\n var _b = _a, {\n unmountOnHide\n } = _b, props = __objRest(_b, [\n \"unmountOnHide\"\n ]);\n const context = useDisclosureProviderContext();\n const store = props.store || context;\n const mounted = useStoreState(\n store,\n (state) => !unmountOnHide || (state == null ? void 0 : state.mounted)\n );\n if (mounted === false) return null;\n return /* @__PURE__ */ jsx(DisclosureContentImpl, __spreadValues({}, props));\n});\n\nexport {\n isHidden,\n useDisclosureContent,\n DisclosureContent\n};\n", "\"use client\";\nimport {\n ComboboxListRoleContext,\n ComboboxScopedContextProvider,\n useComboboxContext,\n useComboboxScopedContext\n} from \"./VEVQD5MH.js\";\nimport {\n isHidden\n} from \"./VGCJ63VH.js\";\nimport {\n createElement,\n createHook,\n forwardRef\n} from \"./LMDWO4NN.js\";\nimport {\n useAttribute,\n useId,\n useMergeRefs,\n useSafeLayoutEffect,\n useWrapElement\n} from \"./ABQUS43J.js\";\nimport {\n __objRest,\n __spreadProps,\n __spreadValues\n} from \"./3YLGPPWQ.js\";\n\n// src/combobox/combobox-list.tsx\nimport { invariant, removeUndefinedValues } from \"@ariakit/core/utils/misc\";\nimport { useRef, useState } from \"react\";\nimport { jsx } from \"react/jsx-runtime\";\nvar TagName = \"div\";\nvar useComboboxList = createHook(\n function useComboboxList2(_a) {\n var _b = _a, { store, alwaysVisible } = _b, props = __objRest(_b, [\"store\", \"alwaysVisible\"]);\n const scopedContext = useComboboxScopedContext(true);\n const context = useComboboxContext();\n store = store || context;\n const scopedContextSameStore = !!store && store === scopedContext;\n invariant(\n store,\n process.env.NODE_ENV !== \"production\" && \"ComboboxList must receive a `store` prop or be wrapped in a ComboboxProvider component.\"\n );\n const ref = useRef(null);\n const id = useId(props.id);\n const mounted = store.useState(\"mounted\");\n const hidden = isHidden(mounted, props.hidden, alwaysVisible);\n const style = hidden ? __spreadProps(__spreadValues({}, props.style), { display: \"none\" }) : props.style;\n const multiSelectable = store.useState(\n (state) => Array.isArray(state.selectedValue)\n );\n const role = useAttribute(ref, \"role\", props.role);\n const isCompositeRole = role === \"listbox\" || role === \"tree\" || role === \"grid\";\n const ariaMultiSelectable = isCompositeRole ? multiSelectable || void 0 : void 0;\n const [hasListboxInside, setHasListboxInside] = useState(false);\n const contentElement = store.useState(\"contentElement\");\n useSafeLayoutEffect(() => {\n if (!mounted) return;\n const element = ref.current;\n if (!element) return;\n if (contentElement !== element) return;\n const callback = () => {\n setHasListboxInside(!!element.querySelector(\"[role='listbox']\"));\n };\n const observer = new MutationObserver(callback);\n observer.observe(element, {\n subtree: true,\n childList: true,\n attributeFilter: [\"role\"]\n });\n callback();\n return () => observer.disconnect();\n }, [mounted, contentElement]);\n if (!hasListboxInside) {\n props = __spreadValues({\n role: \"listbox\",\n \"aria-multiselectable\": ariaMultiSelectable\n }, props);\n }\n props = useWrapElement(\n props,\n (element) => /* @__PURE__ */ jsx(ComboboxScopedContextProvider, { value: store, children: /* @__PURE__ */ jsx(ComboboxListRoleContext.Provider, { value: role, children: element }) }),\n [store, role]\n );\n const setContentElement = id && (!scopedContext || !scopedContextSameStore) ? store.setContentElement : null;\n props = __spreadProps(__spreadValues({\n id,\n hidden\n }, props), {\n ref: useMergeRefs(setContentElement, ref, props.ref),\n style\n });\n return removeUndefinedValues(props);\n }\n);\nvar ComboboxList = forwardRef(function ComboboxList2(props) {\n const htmlProps = useComboboxList(props);\n return createElement(TagName, htmlProps);\n});\n\nexport {\n useComboboxList,\n ComboboxList\n};\n", "/**\n * External dependencies\n */\n// eslint-disable-next-line no-restricted-imports\nimport * as Ariakit from '@ariakit/react';\nimport removeAccents from 'remove-accents';\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport { useInstanceId } from '@wordpress/compose';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { useState, useMemo, useDeferredValue } from '@wordpress/element';\nimport {\n\tVisuallyHidden,\n\tIcon,\n\tComposite,\n\tSpinner,\n} from '@wordpress/components';\nimport { search, check } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport { getCurrentValue } from './utils';\nimport type { Filter, NormalizedFilter, View, Option } from '../../types';\nimport useElements from '../../hooks/use-elements';\n\ninterface SearchWidgetProps {\n\tview: View;\n\tfilter: NormalizedFilter & {\n\t\telements: Option[];\n\t};\n\tonChangeView: ( view: View ) => void;\n}\n\nfunction normalizeSearchInput( input = '' ) {\n\treturn removeAccents( input.trim().toLowerCase() );\n}\n\nconst getNewValue = (\n\tfilterDefinition: NormalizedFilter,\n\tcurrentFilter: Filter | undefined,\n\tvalue: any\n) => {\n\tif ( filterDefinition.singleSelection ) {\n\t\treturn value;\n\t}\n\n\tif ( Array.isArray( currentFilter?.value ) ) {\n\t\treturn currentFilter.value.includes( value )\n\t\t\t? currentFilter.value.filter( ( v ) => v !== value )\n\t\t\t: [ ...currentFilter.value, value ];\n\t}\n\n\treturn [ value ];\n};\n\nfunction generateFilterElementCompositeItemId(\n\tprefix: string,\n\tfilterElementValue: string\n) {\n\treturn `${ prefix }-${ filterElementValue }`;\n}\n\nconst MultiSelectionOption = ( { selected }: { selected: boolean } ) => {\n\treturn (\n\t\t<span\n\t\t\tclassName={ clsx(\n\t\t\t\t'dataviews-filters__search-widget-listitem-multi-selection',\n\t\t\t\t{ 'is-selected': selected }\n\t\t\t) }\n\t\t>\n\t\t\t{ selected && <Icon icon={ check } /> }\n\t\t</span>\n\t);\n};\n\nconst SingleSelectionOption = ( { selected }: { selected: boolean } ) => {\n\treturn (\n\t\t<span\n\t\t\tclassName={ clsx(\n\t\t\t\t'dataviews-filters__search-widget-listitem-single-selection',\n\t\t\t\t{ 'is-selected': selected }\n\t\t\t) }\n\t\t/>\n\t);\n};\n\nfunction ListBox( { view, filter, onChangeView }: SearchWidgetProps ) {\n\tconst baseId = useInstanceId( ListBox, 'dataviews-filter-list-box' );\n\n\tconst [ activeCompositeId, setActiveCompositeId ] = useState<\n\t\tstring | null | undefined\n\t>(\n\t\t// When there are one or less operators, the first item is set as active\n\t\t// (by setting the initial `activeId` to `undefined`).\n\t\t// With 2 or more operators, the focus is moved on the operators control\n\t\t// (by setting the initial `activeId` to `null`), meaning that there won't\n\t\t// be an active item initially. Focus is then managed via the\n\t\t// `onFocusVisible` callback.\n\t\tfilter.operators?.length === 1 ? undefined : null\n\t);\n\tconst currentFilter = view.filters?.find(\n\t\t( f ) => f.field === filter.field\n\t);\n\tconst currentValue = getCurrentValue( filter, currentFilter );\n\treturn (\n\t\t<Composite\n\t\t\tvirtualFocus\n\t\t\tfocusLoop\n\t\t\tactiveId={ activeCompositeId }\n\t\t\tsetActiveId={ setActiveCompositeId }\n\t\t\trole=\"listbox\"\n\t\t\tclassName=\"dataviews-filters__search-widget-listbox\"\n\t\t\taria-label={ sprintf(\n\t\t\t\t/* translators: List of items for a filter. 1: Filter name. e.g.: \"List of: Author\". */\n\t\t\t\t__( 'List of: %1$s' ),\n\t\t\t\tfilter.name\n\t\t\t) }\n\t\t\tonFocusVisible={ () => {\n\t\t\t\t// `onFocusVisible` needs the `Composite` component to be focusable,\n\t\t\t\t// which is implicitly achieved via the `virtualFocus` prop.\n\t\t\t\tif ( ! activeCompositeId && filter.elements.length ) {\n\t\t\t\t\tsetActiveCompositeId(\n\t\t\t\t\t\tgenerateFilterElementCompositeItemId(\n\t\t\t\t\t\t\tbaseId,\n\t\t\t\t\t\t\tfilter.elements[ 0 ].value\n\t\t\t\t\t\t)\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t} }\n\t\t\trender={ <Composite.Typeahead /> }\n\t\t>\n\t\t\t{ filter.elements.map( ( element ) => (\n\t\t\t\t<Composite.Hover\n\t\t\t\t\tkey={ element.value }\n\t\t\t\t\trender={\n\t\t\t\t\t\t<Composite.Item\n\t\t\t\t\t\t\tid={ generateFilterElementCompositeItemId(\n\t\t\t\t\t\t\t\tbaseId,\n\t\t\t\t\t\t\t\telement.value\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\trender={\n\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\taria-label={ element.label }\n\t\t\t\t\t\t\t\t\trole=\"option\"\n\t\t\t\t\t\t\t\t\tclassName=\"dataviews-filters__search-widget-listitem\"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\tconst newFilters = currentFilter\n\t\t\t\t\t\t\t\t\t? [\n\t\t\t\t\t\t\t\t\t\t\t...( view.filters ?? [] ).map(\n\t\t\t\t\t\t\t\t\t\t\t\t( _filter ) => {\n\t\t\t\t\t\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t_filter.field ===\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tfilter.field\n\t\t\t\t\t\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t..._filter,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\toperator:\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcurrentFilter.operator ||\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfilter\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t.operators[ 0 ],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tvalue: getNewValue(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfilter,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcurrentFilter,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\telement.value\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\treturn _filter;\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t ]\n\t\t\t\t\t\t\t\t\t: [\n\t\t\t\t\t\t\t\t\t\t\t...( view.filters ?? [] ),\n\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\tfield: filter.field,\n\t\t\t\t\t\t\t\t\t\t\t\toperator: filter.operators[ 0 ],\n\t\t\t\t\t\t\t\t\t\t\t\tvalue: getNewValue(\n\t\t\t\t\t\t\t\t\t\t\t\t\tfilter,\n\t\t\t\t\t\t\t\t\t\t\t\t\tcurrentFilter,\n\t\t\t\t\t\t\t\t\t\t\t\t\telement.value\n\t\t\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t ];\n\t\t\t\t\t\t\t\tonChangeView( {\n\t\t\t\t\t\t\t\t\t...view,\n\t\t\t\t\t\t\t\t\tpage: 1,\n\t\t\t\t\t\t\t\t\tfilters: newFilters,\n\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t/>\n\t\t\t\t\t}\n\t\t\t\t>\n\t\t\t\t\t{ filter.singleSelection && (\n\t\t\t\t\t\t<SingleSelectionOption\n\t\t\t\t\t\t\tselected={ currentValue === element.value }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t\t{ ! filter.singleSelection && (\n\t\t\t\t\t\t<MultiSelectionOption\n\t\t\t\t\t\t\tselected={ currentValue.includes( element.value ) }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t\t<span>{ element.label }</span>\n\t\t\t\t</Composite.Hover>\n\t\t\t) ) }\n\t\t</Composite>\n\t);\n}\n\nfunction ComboboxList( { view, filter, onChangeView }: SearchWidgetProps ) {\n\tconst [ searchValue, setSearchValue ] = useState( '' );\n\tconst deferredSearchValue = useDeferredValue( searchValue );\n\tconst currentFilter = view.filters?.find(\n\t\t( _filter ) => _filter.field === filter.field\n\t);\n\tconst currentValue = getCurrentValue( filter, currentFilter );\n\tconst matches = useMemo( () => {\n\t\tconst normalizedSearch = normalizeSearchInput( deferredSearchValue );\n\t\treturn filter.elements.filter( ( item ) =>\n\t\t\tnormalizeSearchInput( item.label ).includes( normalizedSearch )\n\t\t);\n\t}, [ filter.elements, deferredSearchValue ] );\n\treturn (\n\t\t<Ariakit.ComboboxProvider\n\t\t\tselectedValue={ currentValue }\n\t\t\tsetSelectedValue={ ( value ) => {\n\t\t\t\tconst newFilters = currentFilter\n\t\t\t\t\t? [\n\t\t\t\t\t\t\t...( view.filters ?? [] ).map( ( _filter ) => {\n\t\t\t\t\t\t\t\tif ( _filter.field === filter.field ) {\n\t\t\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t\t\t..._filter,\n\t\t\t\t\t\t\t\t\t\toperator:\n\t\t\t\t\t\t\t\t\t\t\tcurrentFilter.operator ||\n\t\t\t\t\t\t\t\t\t\t\tfilter.operators[ 0 ],\n\t\t\t\t\t\t\t\t\t\tvalue,\n\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\treturn _filter;\n\t\t\t\t\t\t\t} ),\n\t\t\t\t\t ]\n\t\t\t\t\t: [\n\t\t\t\t\t\t\t...( view.filters ?? [] ),\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tfield: filter.field,\n\t\t\t\t\t\t\t\toperator: filter.operators[ 0 ],\n\t\t\t\t\t\t\t\tvalue,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t ];\n\t\t\t\tonChangeView( {\n\t\t\t\t\t...view,\n\t\t\t\t\tpage: 1,\n\t\t\t\t\tfilters: newFilters,\n\t\t\t\t} );\n\t\t\t} }\n\t\t\tsetValue={ setSearchValue }\n\t\t>\n\t\t\t<div className=\"dataviews-filters__search-widget-filter-combobox__wrapper\">\n\t\t\t\t<Ariakit.ComboboxLabel\n\t\t\t\t\trender={\n\t\t\t\t\t\t<VisuallyHidden>\n\t\t\t\t\t\t\t{ __( 'Search items' ) }\n\t\t\t\t\t\t</VisuallyHidden>\n\t\t\t\t\t}\n\t\t\t\t>\n\t\t\t\t\t{ __( 'Search items' ) }\n\t\t\t\t</Ariakit.ComboboxLabel>\n\t\t\t\t<Ariakit.Combobox\n\t\t\t\t\tautoSelect=\"always\"\n\t\t\t\t\tplaceholder={ __( 'Search' ) }\n\t\t\t\t\tclassName=\"dataviews-filters__search-widget-filter-combobox__input\"\n\t\t\t\t/>\n\t\t\t\t<div className=\"dataviews-filters__search-widget-filter-combobox__icon\">\n\t\t\t\t\t<Icon icon={ search } />\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<Ariakit.ComboboxList\n\t\t\t\tclassName=\"dataviews-filters__search-widget-filter-combobox-list\"\n\t\t\t\talwaysVisible\n\t\t\t>\n\t\t\t\t{ matches.map( ( element ) => {\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<Ariakit.ComboboxItem\n\t\t\t\t\t\t\tresetValueOnSelect={ false }\n\t\t\t\t\t\t\tkey={ element.value }\n\t\t\t\t\t\t\tvalue={ element.value }\n\t\t\t\t\t\t\tclassName=\"dataviews-filters__search-widget-listitem\"\n\t\t\t\t\t\t\thideOnClick={ false }\n\t\t\t\t\t\t\tsetValueOnClick={ false }\n\t\t\t\t\t\t\tfocusOnHover\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ filter.singleSelection && (\n\t\t\t\t\t\t\t\t<SingleSelectionOption\n\t\t\t\t\t\t\t\t\tselected={ currentValue === element.value }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t{ ! filter.singleSelection && (\n\t\t\t\t\t\t\t\t<MultiSelectionOption\n\t\t\t\t\t\t\t\t\tselected={ currentValue.includes(\n\t\t\t\t\t\t\t\t\t\telement.value\n\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t<span>\n\t\t\t\t\t\t\t\t<Ariakit.ComboboxItemValue\n\t\t\t\t\t\t\t\t\tclassName=\"dataviews-filters__search-widget-filter-combobox-item-value\"\n\t\t\t\t\t\t\t\t\tvalue={ element.label }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t{ !! element.description && (\n\t\t\t\t\t\t\t\t\t<span className=\"dataviews-filters__search-widget-listitem-description\">\n\t\t\t\t\t\t\t\t\t\t{ element.description }\n\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t</Ariakit.ComboboxItem>\n\t\t\t\t\t);\n\t\t\t\t} ) }\n\t\t\t\t{ ! matches.length && <p>{ __( 'No results found' ) }</p> }\n\t\t\t</Ariakit.ComboboxList>\n\t\t</Ariakit.ComboboxProvider>\n\t);\n}\n\nexport default function SearchWidget( props: SearchWidgetProps ) {\n\tconst { elements, isLoading } = useElements( {\n\t\telements: props.filter.elements,\n\t\tgetElements: props.filter.getElements,\n\t} );\n\n\tif ( isLoading ) {\n\t\treturn (\n\t\t\t<div className=\"dataviews-filters__search-widget-no-elements\">\n\t\t\t\t<Spinner />\n\t\t\t</div>\n\t\t);\n\t}\n\n\tif ( elements.length === 0 ) {\n\t\treturn (\n\t\t\t<div className=\"dataviews-filters__search-widget-no-elements\">\n\t\t\t\t{ __( 'No elements found' ) }\n\t\t\t</div>\n\t\t);\n\t}\n\n\tconst Widget = elements.length > 10 ? ComboboxList : ListBox;\n\treturn <Widget { ...props } filter={ { ...props.filter, elements } } />;\n}\n", "/**\n * Internal dependencies\n */\nimport type { NormalizedFilter, Filter } from '../../types';\n\nconst EMPTY_ARRAY: [] = [];\n\nexport const getCurrentValue = (\n\tfilterDefinition: NormalizedFilter,\n\tcurrentFilter?: Filter\n) => {\n\tif ( filterDefinition.singleSelection ) {\n\t\treturn currentFilter?.value;\n\t}\n\n\tif ( Array.isArray( currentFilter?.value ) ) {\n\t\treturn currentFilter.value;\n\t}\n\n\tif ( ! Array.isArray( currentFilter?.value ) && !! currentFilter?.value ) {\n\t\treturn [ currentFilter.value ];\n\t}\n\n\treturn EMPTY_ARRAY;\n};\n", "/**\n * WordPress dependencies\n */\nimport { useEffect, useState } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport type { Option } from '../types';\n\nconst EMPTY_ARRAY: Option[] = [];\n\nexport default function useElements( {\n\telements,\n\tgetElements,\n}: {\n\telements?: Option[];\n\tgetElements?: () => Promise< Option[] >;\n} ) {\n\tconst staticElements =\n\t\tArray.isArray( elements ) && elements.length > 0\n\t\t\t? elements\n\t\t\t: EMPTY_ARRAY;\n\tconst [ records, setRecords ] = useState< Option[] >( staticElements );\n\tconst [ isLoading, setIsLoading ] = useState( false );\n\n\tuseEffect( () => {\n\t\tif ( ! getElements ) {\n\t\t\tsetRecords( staticElements );\n\t\t\treturn;\n\t\t}\n\n\t\tlet cancelled = false;\n\t\tsetIsLoading( true );\n\t\tgetElements()\n\t\t\t.then( ( fetchedElements ) => {\n\t\t\t\tif ( ! cancelled ) {\n\t\t\t\t\tconst dynamicElements =\n\t\t\t\t\t\tArray.isArray( fetchedElements ) &&\n\t\t\t\t\t\tfetchedElements.length > 0\n\t\t\t\t\t\t\t? fetchedElements\n\t\t\t\t\t\t\t: staticElements;\n\t\t\t\t\tsetRecords( dynamicElements );\n\t\t\t\t}\n\t\t\t} )\n\t\t\t.catch( () => {\n\t\t\t\tif ( ! cancelled ) {\n\t\t\t\t\tsetRecords( staticElements );\n\t\t\t\t}\n\t\t\t} )\n\t\t\t.finally( () => {\n\t\t\t\tif ( ! cancelled ) {\n\t\t\t\t\tsetIsLoading( false );\n\t\t\t\t}\n\t\t\t} );\n\n\t\treturn () => {\n\t\t\tcancelled = true;\n\t\t};\n\t}, [ getElements, staticElements ] );\n\n\treturn {\n\t\telements: records,\n\t\tisLoading,\n\t};\n}\n", "/**\n * External dependencies\n */\nimport fastDeepEqual from 'fast-deep-equal/es6/index.js';\n\n/**\n * WordPress dependencies\n */\nimport { useEvent } from '@wordpress/compose';\nimport { useMemo } from '@wordpress/element';\nimport { Flex } from '@wordpress/components';\n\n/**\n * Internal dependencies\n */\nimport type {\n\tView,\n\tNormalizedFilter,\n\tNormalizedField,\n\tNormalizedRules,\n} from '../../types';\nimport { getCurrentValue } from './utils';\n\ninterface UserInputWidgetProps {\n\tview: View;\n\tfilter: NormalizedFilter;\n\tonChangeView: ( view: View ) => void;\n\tfields: NormalizedField< any >[];\n}\n\nexport default function InputWidget( {\n\tfilter,\n\tview,\n\tonChangeView,\n\tfields,\n}: UserInputWidgetProps ) {\n\tconst currentFilter = view.filters?.find(\n\t\t( f ) => f.field === filter.field\n\t);\n\tconst currentValue = getCurrentValue( filter, currentFilter );\n\n\t/*\n\t * We are reusing the field.Edit component for filters. By doing so,\n\t * we get for free a filter control specific to the field type\n\t * and other aspects of the field API (Edit control configuration, etc.).\n\t *\n\t * This approach comes with an issue: the field.Edit controls work with getValue\n\t * and setValue methods, which take an item (Item) as parameter. But, at this point,\n\t * we don't have an item and we don't know how to create one, either.\n\t *\n\t * So, what we do is to prepare the data and the relevant field configuration\n\t * as if Item was a plain object whose keys are the field ids:\n\t *\n\t * {\n\t * [ fieldOne.id ]: value,\n\t * [ fieldTwo.id ]: value,\n\t * }\n\t *\n\t */\n\tconst field = useMemo( () => {\n\t\tconst currentField = fields.find( ( f ) => f.id === filter.field );\n\t\tif ( currentField ) {\n\t\t\treturn {\n\t\t\t\t...currentField,\n\t\t\t\t// Deactivate validation for filters.\n\t\t\t\tisValid: {} satisfies NormalizedRules< any >,\n\t\t\t\t// Configure getValue/setValue as if Item was a plain object.\n\t\t\t\tgetValue: ( { item }: { item: any } ) =>\n\t\t\t\t\titem[ currentField.id ],\n\t\t\t\tsetValue: ( { value }: { value: any } ) => ( {\n\t\t\t\t\t[ currentField.id ]: value,\n\t\t\t\t} ),\n\t\t\t};\n\t\t}\n\t\treturn currentField;\n\t}, [ fields, filter.field ] );\n\n\tconst data = useMemo( () => {\n\t\treturn ( view.filters ?? [] ).reduce(\n\t\t\t( acc, activeFilter ) => {\n\t\t\t\t// We can now assume the field is stored as a Item prop.\n\t\t\t\tacc[ activeFilter.field ] = activeFilter.value;\n\t\t\t\treturn acc;\n\t\t\t},\n\t\t\t{} as Record< string, any >\n\t\t);\n\t}, [ view.filters ] );\n\n\tconst handleChange = useEvent( ( updatedData: Record< string, any > ) => {\n\t\tif ( ! field || ! currentFilter ) {\n\t\t\treturn;\n\t\t}\n\t\tconst nextValue = field.getValue( { item: updatedData } );\n\t\tif ( fastDeepEqual( nextValue, currentValue ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tonChangeView( {\n\t\t\t...view,\n\t\t\tfilters: ( view.filters ?? [] ).map( ( _filter ) =>\n\t\t\t\t_filter.field === filter.field\n\t\t\t\t\t? {\n\t\t\t\t\t\t\t..._filter,\n\t\t\t\t\t\t\toperator:\n\t\t\t\t\t\t\t\tcurrentFilter.operator || filter.operators[ 0 ],\n\t\t\t\t\t\t\t// Consider empty strings as undefined:\n\t\t\t\t\t\t\t//\n\t\t\t\t\t\t\t// - undefined as value means the filter is unset: the filter widget displays no value and the search returns all records\n\t\t\t\t\t\t\t// - empty string as value means \"search empty string\": returns only the records that have an empty string as value\n\t\t\t\t\t\t\t//\n\t\t\t\t\t\t\t// In practice, this means the filter will not be able to find an empty string as the value.\n\t\t\t\t\t\t\tvalue: nextValue === '' ? undefined : nextValue,\n\t\t\t\t\t }\n\t\t\t\t\t: _filter\n\t\t\t),\n\t\t} );\n\t} );\n\n\tif ( ! field || ! field.Edit || ! currentFilter ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<Flex\n\t\t\tclassName=\"dataviews-filters__user-input-widget\"\n\t\t\tgap={ 2.5 }\n\t\t\tdirection=\"column\"\n\t\t>\n\t\t\t<field.Edit\n\t\t\t\thideLabelFromVision\n\t\t\t\tdata={ data }\n\t\t\t\tfield={ field }\n\t\t\t\toperator={ currentFilter.operator }\n\t\t\t\tonChange={ handleChange }\n\t\t\t/>\n\t\t</Flex>\n\t);\n}\n", "/**\n * WordPress dependencies\n */\nimport { __, sprintf } from '@wordpress/i18n';\nimport { createInterpolateElement } from '@wordpress/element';\nimport type { ReactElement } from 'react';\n\n/**\n * Internal dependencies\n */\nimport type { NormalizedFilter, Operator, Option } from '../types';\nimport {\n\tOPERATOR_AFTER,\n\tOPERATOR_AFTER_INC,\n\tOPERATOR_BEFORE,\n\tOPERATOR_BEFORE_INC,\n\tOPERATOR_BETWEEN,\n\tOPERATOR_CONTAINS,\n\tOPERATOR_GREATER_THAN,\n\tOPERATOR_GREATER_THAN_OR_EQUAL,\n\tOPERATOR_IN_THE_PAST,\n\tOPERATOR_IS,\n\tOPERATOR_IS_ALL,\n\tOPERATOR_IS_ANY,\n\tOPERATOR_IS_NONE,\n\tOPERATOR_IS_NOT,\n\tOPERATOR_IS_NOT_ALL,\n\tOPERATOR_LESS_THAN,\n\tOPERATOR_LESS_THAN_OR_EQUAL,\n\tOPERATOR_NOT_CONTAINS,\n\tOPERATOR_NOT_ON,\n\tOPERATOR_ON,\n\tOPERATOR_OVER,\n\tOPERATOR_STARTS_WITH,\n} from '../constants';\n\nconst filterTextWrappers = {\n\tName: <span className=\"dataviews-filters__summary-filter-text-name\" />,\n\tValue: <span className=\"dataviews-filters__summary-filter-text-value\" />,\n};\n\nconst OPERATORS: {\n\tname: Operator;\n\tlabel: string;\n\tfilterText: (\n\t\tfilter: NormalizedFilter,\n\t\tactiveElements: Option[]\n\t) => ReactElement;\n\tselection: 'single' | 'multi' | 'custom';\n}[] = [\n\t{\n\t\tname: OPERATOR_IS_ANY,\n\t\t/* translators: DataViews operator name */\n\t\tlabel: __( 'Includes' ),\n\t\tfilterText: ( filter: NormalizedFilter, activeElements: Option[] ) =>\n\t\t\tcreateInterpolateElement(\n\t\t\t\tsprintf(\n\t\t\t\t\t/* translators: 1: Filter name (e.g. \"Author\"). 2: Filter value (e.g. \"Admin\"): \"Author is any: Admin, Editor\". */\n\t\t\t\t\t__( '<Name>%1$s includes: </Name><Value>%2$s</Value>' ),\n\t\t\t\t\tfilter.name,\n\t\t\t\t\tactiveElements\n\t\t\t\t\t\t.map( ( element ) => element.label )\n\t\t\t\t\t\t.join( ', ' )\n\t\t\t\t),\n\t\t\t\tfilterTextWrappers\n\t\t\t),\n\t\tselection: 'multi',\n\t},\n\t{\n\t\tname: OPERATOR_IS_NONE,\n\t\t/* translators: DataViews operator name */\n\t\tlabel: __( 'Is none of' ),\n\t\tfilterText: ( filter: NormalizedFilter, activeElements: Option[] ) =>\n\t\t\tcreateInterpolateElement(\n\t\t\t\tsprintf(\n\t\t\t\t\t/* translators: 1: Filter name (e.g. \"Author\"). 2: Filter value (e.g. \"Admin\"): \"Author is none of: Admin, Editor\". */\n\t\t\t\t\t__( '<Name>%1$s is none of: </Name><Value>%2$s</Value>' ),\n\t\t\t\t\tfilter.name,\n\t\t\t\t\tactiveElements\n\t\t\t\t\t\t.map( ( element ) => element.label )\n\t\t\t\t\t\t.join( ', ' )\n\t\t\t\t),\n\t\t\t\tfilterTextWrappers\n\t\t\t),\n\t\tselection: 'multi',\n\t},\n\t{\n\t\tname: OPERATOR_IS_ALL,\n\t\t/* translators: DataViews operator name */\n\t\tlabel: __( 'Includes all' ),\n\t\tfilterText: ( filter: NormalizedFilter, activeElements: Option[] ) =>\n\t\t\tcreateInterpolateElement(\n\t\t\t\tsprintf(\n\t\t\t\t\t/* translators: 1: Filter name (e.g. \"Author\"). 2: Filter value (e.g. \"Admin\"): \"Author includes all: Admin, Editor\". */\n\t\t\t\t\t__( '<Name>%1$s includes all: </Name><Value>%2$s</Value>' ),\n\t\t\t\t\tfilter.name,\n\t\t\t\t\tactiveElements\n\t\t\t\t\t\t.map( ( element ) => element.label )\n\t\t\t\t\t\t.join( ', ' )\n\t\t\t\t),\n\t\t\t\tfilterTextWrappers\n\t\t\t),\n\t\tselection: 'multi',\n\t},\n\t{\n\t\tname: OPERATOR_IS_NOT_ALL,\n\t\t/* translators: DataViews operator name */\n\t\tlabel: __( 'Is none of' ),\n\t\tfilterText: ( filter: NormalizedFilter, activeElements: Option[] ) =>\n\t\t\tcreateInterpolateElement(\n\t\t\t\tsprintf(\n\t\t\t\t\t/* translators: 1: Filter name (e.g. \"Author\"). 2: Filter value (e.g. \"Admin\"): \"Author is none of: Admin, Editor\". */\n\t\t\t\t\t__( '<Name>%1$s is none of: </Name><Value>%2$s</Value>' ),\n\t\t\t\t\tfilter.name,\n\t\t\t\t\tactiveElements\n\t\t\t\t\t\t.map( ( element ) => element.label )\n\t\t\t\t\t\t.join( ', ' )\n\t\t\t\t),\n\t\t\t\tfilterTextWrappers\n\t\t\t),\n\t\tselection: 'multi',\n\t},\n\t{\n\t\tname: OPERATOR_BETWEEN,\n\t\t/* translators: DataViews operator name */\n\t\tlabel: __( 'Between (inc)' ),\n\t\tfilterText: ( filter: NormalizedFilter, activeElements: Option[] ) =>\n\t\t\tcreateInterpolateElement(\n\t\t\t\tsprintf(\n\t\t\t\t\t/* translators: 1: Filter name (e.g. \"Item count\"). 2: Filter value min. 3: Filter value max. e.g.: \"Item count between (inc): 10 and 180\". */\n\t\t\t\t\t__(\n\t\t\t\t\t\t'<Name>%1$s between (inc): </Name><Value>%2$s and %3$s</Value>'\n\t\t\t\t\t),\n\t\t\t\t\tfilter.name,\n\t\t\t\t\tactiveElements[ 0 ].label[ 0 ],\n\t\t\t\t\tactiveElements[ 0 ].label[ 1 ]\n\t\t\t\t),\n\t\t\t\tfilterTextWrappers\n\t\t\t),\n\t\tselection: 'custom',\n\t},\n\t{\n\t\tname: OPERATOR_IN_THE_PAST,\n\t\t/* translators: DataViews operator name */\n\t\tlabel: __( 'In the past' ),\n\t\tfilterText: ( filter: NormalizedFilter, activeElements: Option[] ) =>\n\t\t\tcreateInterpolateElement(\n\t\t\t\tsprintf(\n\t\t\t\t\t/* translators: 1: Filter name (e.g. \"Date\"). 2: Filter value (e.g. \"7 days\"): \"Date is in the past: 7 days\". */\n\t\t\t\t\t__(\n\t\t\t\t\t\t'<Name>%1$s is in the past: </Name><Value>%2$s</Value>'\n\t\t\t\t\t),\n\t\t\t\t\tfilter.name,\n\t\t\t\t\t`${ activeElements[ 0 ].value.value } ${ activeElements[ 0 ].value.unit }`\n\t\t\t\t),\n\t\t\t\tfilterTextWrappers\n\t\t\t),\n\t\tselection: 'custom',\n\t},\n\t{\n\t\tname: OPERATOR_OVER,\n\t\t/* translators: DataViews operator name */\n\t\tlabel: __( 'Over' ),\n\t\tfilterText: ( filter: NormalizedFilter, activeElements: Option[] ) =>\n\t\t\tcreateInterpolateElement(\n\t\t\t\tsprintf(\n\t\t\t\t\t/* translators: 1: Filter name (e.g. \"Date\"). 2: Filter value (e.g. \"7 days\"): \"Date is over: 7 days\". */\n\t\t\t\t\t__( '<Name>%1$s is over: </Name><Value>%2$s</Value>' ),\n\t\t\t\t\tfilter.name,\n\t\t\t\t\t`${ activeElements[ 0 ].value.value } ${ activeElements[ 0 ].value.unit }`\n\t\t\t\t),\n\t\t\t\tfilterTextWrappers\n\t\t\t),\n\t\tselection: 'custom',\n\t},\n\t{\n\t\tname: OPERATOR_IS,\n\t\t/* translators: DataViews operator name */\n\t\tlabel: __( 'Is' ),\n\t\tfilterText: ( filter: NormalizedFilter, activeElements: Option[] ) =>\n\t\t\tcreateInterpolateElement(\n\t\t\t\tsprintf(\n\t\t\t\t\t/* translators: 1: Filter name (e.g. \"Author\"). 2: Filter value (e.g. \"Admin\"): \"Author is: Admin\". */\n\t\t\t\t\t__( '<Name>%1$s is: </Name><Value>%2$s</Value>' ),\n\t\t\t\t\tfilter.name,\n\t\t\t\t\tactiveElements[ 0 ].label\n\t\t\t\t),\n\t\t\t\tfilterTextWrappers\n\t\t\t),\n\t\tselection: 'single',\n\t},\n\t{\n\t\tname: OPERATOR_IS_NOT,\n\t\t/* translators: DataViews operator name */\n\t\tlabel: __( 'Is not' ),\n\t\tfilterText: ( filter: NormalizedFilter, activeElements: Option[] ) =>\n\t\t\tcreateInterpolateElement(\n\t\t\t\tsprintf(\n\t\t\t\t\t/* translators: 1: Filter name (e.g. \"Author\"). 2: Filter value (e.g. \"Admin\"): \"Author is not: Admin\". */\n\t\t\t\t\t__( '<Name>%1$s is not: </Name><Value>%2$s</Value>' ),\n\t\t\t\t\tfilter.name,\n\t\t\t\t\tactiveElements[ 0 ].label\n\t\t\t\t),\n\t\t\t\tfilterTextWrappers\n\t\t\t),\n\t\tselection: 'single',\n\t},\n\t{\n\t\tname: OPERATOR_LESS_THAN,\n\t\t/* translators: DataViews operator name */\n\t\tlabel: __( 'Less than' ),\n\t\tfilterText: ( filter: NormalizedFilter, activeElements: Option[] ) =>\n\t\t\tcreateInterpolateElement(\n\t\t\t\tsprintf(\n\t\t\t\t\t/* translators: 1: Filter name (e.g. \"Count\"). 2: Filter value (e.g. \"10\"): \"Count is less than: 10\". */\n\t\t\t\t\t__( '<Name>%1$s is less than: </Name><Value>%2$s</Value>' ),\n\t\t\t\t\tfilter.name,\n\t\t\t\t\tactiveElements[ 0 ].label\n\t\t\t\t),\n\t\t\t\tfilterTextWrappers\n\t\t\t),\n\t\tselection: 'single',\n\t},\n\t{\n\t\tname: OPERATOR_GREATER_THAN,\n\t\t/* translators: DataViews operator name */\n\t\tlabel: __( 'Greater than' ),\n\t\tfilterText: ( filter: NormalizedFilter, activeElements: Option[] ) =>\n\t\t\tcreateInterpolateElement(\n\t\t\t\tsprintf(\n\t\t\t\t\t/* translators: 1: Filter name (e.g. \"Count\"). 2: Filter value (e.g. \"10\"): \"Count is greater than: 10\". */\n\t\t\t\t\t__(\n\t\t\t\t\t\t'<Name>%1$s is greater than: </Name><Value>%2$s</Value>'\n\t\t\t\t\t),\n\t\t\t\t\tfilter.name,\n\t\t\t\t\tactiveElements[ 0 ].label\n\t\t\t\t),\n\t\t\t\tfilterTextWrappers\n\t\t\t),\n\t\tselection: 'single',\n\t},\n\t{\n\t\tname: OPERATOR_LESS_THAN_OR_EQUAL,\n\t\t/* translators: DataViews operator name */\n\t\tlabel: __( 'Less than or equal' ),\n\t\tfilterText: ( filter: NormalizedFilter, activeElements: Option[] ) =>\n\t\t\tcreateInterpolateElement(\n\t\t\t\tsprintf(\n\t\t\t\t\t/* translators: 1: Filter name (e.g. \"Count\"). 2: Filter value (e.g. \"10\"): \"Count is less than or equal to: 10\". */\n\t\t\t\t\t__(\n\t\t\t\t\t\t'<Name>%1$s is less than or equal to: </Name><Value>%2$s</Value>'\n\t\t\t\t\t),\n\t\t\t\t\tfilter.name,\n\t\t\t\t\tactiveElements[ 0 ].label\n\t\t\t\t),\n\t\t\t\tfilterTextWrappers\n\t\t\t),\n\t\tselection: 'single',\n\t},\n\t{\n\t\tname: OPERATOR_GREATER_THAN_OR_EQUAL,\n\t\t/* translators: DataViews operator name */\n\t\tlabel: __( 'Greater than or equal' ),\n\t\tfilterText: ( filter: NormalizedFilter, activeElements: Option[] ) =>\n\t\t\tcreateInterpolateElement(\n\t\t\t\tsprintf(\n\t\t\t\t\t/* translators: 1: Filter name (e.g. \"Count\"). 2: Filter value (e.g. \"10\"): \"Count is greater than or equal to: 10\". */\n\t\t\t\t\t__(\n\t\t\t\t\t\t'<Name>%1$s is greater than or equal to: </Name><Value>%2$s</Value>'\n\t\t\t\t\t),\n\t\t\t\t\tfilter.name,\n\t\t\t\t\tactiveElements[ 0 ].label\n\t\t\t\t),\n\t\t\t\tfilterTextWrappers\n\t\t\t),\n\t\tselection: 'single',\n\t},\n\t{\n\t\tname: OPERATOR_BEFORE,\n\t\t/* translators: DataViews operator name */\n\t\tlabel: __( 'Before' ),\n\t\tfilterText: ( filter: NormalizedFilter, activeElements: Option[] ) =>\n\t\t\tcreateInterpolateElement(\n\t\t\t\tsprintf(\n\t\t\t\t\t/* translators: 1: Filter name (e.g. \"Date\"). 2: Filter value (e.g. \"2024-01-01\"): \"Date is before: 2024-01-01\". */\n\t\t\t\t\t__( '<Name>%1$s is before: </Name><Value>%2$s</Value>' ),\n\t\t\t\t\tfilter.name,\n\t\t\t\t\tactiveElements[ 0 ].label\n\t\t\t\t),\n\t\t\t\tfilterTextWrappers\n\t\t\t),\n\t\tselection: 'single',\n\t},\n\t{\n\t\tname: OPERATOR_AFTER,\n\t\t/* translators: DataViews operator name */\n\t\tlabel: __( 'After' ),\n\t\tfilterText: ( filter: NormalizedFilter, activeElements: Option[] ) =>\n\t\t\tcreateInterpolateElement(\n\t\t\t\tsprintf(\n\t\t\t\t\t/* translators: 1: Filter name (e.g. \"Date\"). 2: Filter value (e.g. \"2024-01-01\"): \"Date is after: 2024-01-01\". */\n\t\t\t\t\t__( '<Name>%1$s is after: </Name><Value>%2$s</Value>' ),\n\t\t\t\t\tfilter.name,\n\t\t\t\t\tactiveElements[ 0 ].label\n\t\t\t\t),\n\t\t\t\tfilterTextWrappers\n\t\t\t),\n\t\tselection: 'single',\n\t},\n\t{\n\t\tname: OPERATOR_BEFORE_INC,\n\t\t/* translators: DataViews operator name */\n\t\tlabel: __( 'Before (inc)' ),\n\t\tfilterText: ( filter: NormalizedFilter, activeElements: Option[] ) =>\n\t\t\tcreateInterpolateElement(\n\t\t\t\tsprintf(\n\t\t\t\t\t/* translators: 1: Filter name (e.g. \"Date\"). 2: Filter value (e.g. \"2024-01-01\"): \"Date is on or before: 2024-01-01\". */\n\t\t\t\t\t__(\n\t\t\t\t\t\t'<Name>%1$s is on or before: </Name><Value>%2$s</Value>'\n\t\t\t\t\t),\n\t\t\t\t\tfilter.name,\n\t\t\t\t\tactiveElements[ 0 ].label\n\t\t\t\t),\n\t\t\t\tfilterTextWrappers\n\t\t\t),\n\t\tselection: 'single',\n\t},\n\t{\n\t\tname: OPERATOR_AFTER_INC,\n\t\t/* translators: DataViews operator name */\n\t\tlabel: __( 'After (inc)' ),\n\t\tfilterText: ( filter: NormalizedFilter, activeElements: Option[] ) =>\n\t\t\tcreateInterpolateElement(\n\t\t\t\tsprintf(\n\t\t\t\t\t/* translators: 1: Filter name (e.g. \"Date\"). 2: Filter value (e.g. \"2024-01-01\"): \"Date is on or after: 2024-01-01\". */\n\t\t\t\t\t__(\n\t\t\t\t\t\t'<Name>%1$s is on or after: </Name><Value>%2$s</Value>'\n\t\t\t\t\t),\n\t\t\t\t\tfilter.name,\n\t\t\t\t\tactiveElements[ 0 ].label\n\t\t\t\t),\n\t\t\t\tfilterTextWrappers\n\t\t\t),\n\t\tselection: 'single',\n\t},\n\t{\n\t\tname: OPERATOR_CONTAINS,\n\t\t/* translators: DataViews operator name */\n\t\tlabel: __( 'Contains' ),\n\t\tfilterText: ( filter: NormalizedFilter, activeElements: Option[] ) =>\n\t\t\tcreateInterpolateElement(\n\t\t\t\tsprintf(\n\t\t\t\t\t/* translators: 1: Filter name (e.g. \"Title\"). 2: Filter value (e.g. \"Hello\"): \"Title contains: Hello\". */\n\t\t\t\t\t__( '<Name>%1$s contains: </Name><Value>%2$s</Value>' ),\n\t\t\t\t\tfilter.name,\n\t\t\t\t\tactiveElements[ 0 ].label\n\t\t\t\t),\n\t\t\t\tfilterTextWrappers\n\t\t\t),\n\t\tselection: 'single',\n\t},\n\t{\n\t\tname: OPERATOR_NOT_CONTAINS,\n\t\t/* translators: DataViews operator name */\n\t\tlabel: __( \"Doesn't contain\" ),\n\t\tfilterText: ( filter: NormalizedFilter, activeElements: Option[] ) =>\n\t\t\tcreateInterpolateElement(\n\t\t\t\tsprintf(\n\t\t\t\t\t/* translators: 1: Filter name (e.g. \"Title\"). 2: Filter value (e.g. \"Hello\"): \"Title doesn't contain: Hello\". */\n\t\t\t\t\t__(\n\t\t\t\t\t\t\"<Name>%1$s doesn't contain: </Name><Value>%2$s</Value>\"\n\t\t\t\t\t),\n\t\t\t\t\tfilter.name,\n\t\t\t\t\tactiveElements[ 0 ].label\n\t\t\t\t),\n\t\t\t\tfilterTextWrappers\n\t\t\t),\n\t\tselection: 'single',\n\t},\n\t{\n\t\tname: OPERATOR_STARTS_WITH,\n\t\t/* translators: DataViews operator name */\n\t\tlabel: __( 'Starts with' ),\n\t\tfilterText: ( filter: NormalizedFilter, activeElements: Option[] ) =>\n\t\t\tcreateInterpolateElement(\n\t\t\t\tsprintf(\n\t\t\t\t\t/* translators: 1: Filter name (e.g. \"Title\"). 2: Filter value (e.g. \"Hello\"): \"Title starts with: Hello\". */\n\t\t\t\t\t__( '<Name>%1$s starts with: </Name><Value>%2$s</Value>' ),\n\t\t\t\t\tfilter.name,\n\t\t\t\t\tactiveElements[ 0 ].label\n\t\t\t\t),\n\t\t\t\tfilterTextWrappers\n\t\t\t),\n\t\tselection: 'single',\n\t},\n\t{\n\t\tname: OPERATOR_ON,\n\t\t/* translators: DataViews operator name */\n\t\tlabel: __( 'On' ),\n\t\tfilterText: ( filter: NormalizedFilter, activeElements: Option[] ) =>\n\t\t\tcreateInterpolateElement(\n\t\t\t\tsprintf(\n\t\t\t\t\t/* translators: 1: Filter name (e.g. \"Date\"). 2: Filter value (e.g. \"2024-01-01\"): \"Date is: 2024-01-01\". */\n\t\t\t\t\t__( '<Name>%1$s is: </Name><Value>%2$s</Value>' ),\n\t\t\t\t\tfilter.name,\n\t\t\t\t\tactiveElements[ 0 ].label\n\t\t\t\t),\n\t\t\t\tfilterTextWrappers\n\t\t\t),\n\t\tselection: 'single',\n\t},\n\t{\n\t\tname: OPERATOR_NOT_ON,\n\t\t/* translators: DataViews operator name */\n\t\tlabel: __( 'Not on' ),\n\t\tfilterText: ( filter: NormalizedFilter, activeElements: Option[] ) =>\n\t\t\tcreateInterpolateElement(\n\t\t\t\tsprintf(\n\t\t\t\t\t/* translators: 1: Filter name (e.g. \"Date\"). 2: Filter value (e.g. \"2024-01-01\"): \"Date is not: 2024-01-01\". */\n\t\t\t\t\t__( '<Name>%1$s is not: </Name><Value>%2$s</Value>' ),\n\t\t\t\t\tfilter.name,\n\t\t\t\t\tactiveElements[ 0 ].label\n\t\t\t\t),\n\t\t\t\tfilterTextWrappers\n\t\t\t),\n\t\tselection: 'single',\n\t},\n];\n\nconst getOperatorByName = ( name: string | undefined ) =>\n\tOPERATORS.find( ( op ) => op.name === name );\n\nconst getAllOperatorNames = () => OPERATORS.map( ( op ) => op.name );\n\nconst isSingleSelectionOperator = ( name: string ) =>\n\tOPERATORS.filter( ( op ) => op.selection === 'single' ).some(\n\t\t( op ) => op.name === name\n\t);\n\nconst isRegisteredOperator = ( name: string ) =>\n\tOPERATORS.some( ( op ) => op.name === name );\n\nexport {\n\tgetOperatorByName,\n\tgetAllOperatorNames,\n\tisSingleSelectionOperator,\n\tisRegisteredOperator,\n};\n", "/**\n * External dependencies\n */\nimport type { Ref } from 'react';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tprivateApis as componentsPrivateApis,\n\tButton,\n} from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { forwardRef } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { unlock } from '../../lock-unlock';\nimport type { NormalizedFilter, View } from '../../types';\n\nconst { Menu } = unlock( componentsPrivateApis );\n\ninterface AddFilterProps {\n\tfilters: NormalizedFilter[];\n\tview: View;\n\tonChangeView: ( view: View ) => void;\n\tsetOpenedFilter: ( filter: string | null ) => void;\n}\n\nexport function AddFilterMenu( {\n\tfilters,\n\tview,\n\tonChangeView,\n\tsetOpenedFilter,\n\ttriggerProps,\n}: AddFilterProps & {\n\ttriggerProps: React.ComponentProps< typeof Menu.TriggerButton >;\n} ) {\n\tconst inactiveFilters = filters.filter( ( filter ) => ! filter.isVisible );\n\treturn (\n\t\t<Menu>\n\t\t\t<Menu.TriggerButton { ...triggerProps } />\n\t\t\t<Menu.Popover>\n\t\t\t\t{ inactiveFilters.map( ( filter ) => {\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<Menu.Item\n\t\t\t\t\t\t\tkey={ filter.field }\n\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\tsetOpenedFilter( filter.field );\n\t\t\t\t\t\t\t\tonChangeView( {\n\t\t\t\t\t\t\t\t\t...view,\n\t\t\t\t\t\t\t\t\tpage: 1,\n\t\t\t\t\t\t\t\t\tfilters: [\n\t\t\t\t\t\t\t\t\t\t...( view.filters || [] ),\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\tfield: filter.field,\n\t\t\t\t\t\t\t\t\t\t\tvalue: undefined,\n\t\t\t\t\t\t\t\t\t\t\toperator: filter.operators[ 0 ],\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<Menu.ItemLabel>{ filter.name }</Menu.ItemLabel>\n\t\t\t\t\t\t</Menu.Item>\n\t\t\t\t\t);\n\t\t\t\t} ) }\n\t\t\t</Menu.Popover>\n\t\t</Menu>\n\t);\n}\n\nfunction AddFilter(\n\t{ filters, view, onChangeView, setOpenedFilter }: AddFilterProps,\n\tref: Ref< HTMLButtonElement >\n) {\n\tif ( ! filters.length || filters.every( ( { isPrimary } ) => isPrimary ) ) {\n\t\treturn null;\n\t}\n\tconst inactiveFilters = filters.filter( ( filter ) => ! filter.isVisible );\n\treturn (\n\t\t<AddFilterMenu\n\t\t\ttriggerProps={ {\n\t\t\t\trender: (\n\t\t\t\t\t<Button\n\t\t\t\t\t\taccessibleWhenDisabled\n\t\t\t\t\t\tsize=\"compact\"\n\t\t\t\t\t\tclassName=\"dataviews-filters-button\"\n\t\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\t\tdisabled={ ! inactiveFilters.length }\n\t\t\t\t\t\tref={ ref }\n\t\t\t\t\t/>\n\t\t\t\t),\n\t\t\t\tchildren: __( 'Add filter' ),\n\t\t\t} }\n\t\t\t{ ...{ filters, view, onChangeView, setOpenedFilter } }\n\t\t/>\n\t);\n}\n\nexport default forwardRef( AddFilter );\n", "/**\n * WordPress dependencies\n */\nimport { Button } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport type { NormalizedFilter, View } from '../../types';\n\ninterface ResetFilterProps {\n\tfilters: NormalizedFilter[];\n\tview: View;\n\tonChangeView: ( view: View ) => void;\n}\n\nexport default function ResetFilter( {\n\tfilters,\n\tview,\n\tonChangeView,\n}: ResetFilterProps ) {\n\tconst isPrimary = ( field: string ) =>\n\t\tfilters.some(\n\t\t\t( _filter ) => _filter.field === field && _filter.isPrimary\n\t\t);\n\tconst isDisabled =\n\t\t! view.search &&\n\t\t! view.filters?.some(\n\t\t\t( _filter ) =>\n\t\t\t\t! _filter.isLocked &&\n\t\t\t\t( _filter.value !== undefined || ! isPrimary( _filter.field ) )\n\t\t);\n\treturn (\n\t\t<Button\n\t\t\tdisabled={ isDisabled }\n\t\t\taccessibleWhenDisabled\n\t\t\tsize=\"compact\"\n\t\t\tvariant=\"tertiary\"\n\t\t\tclassName=\"dataviews-filters__reset-button\"\n\t\t\tonClick={ () => {\n\t\t\t\tonChangeView( {\n\t\t\t\t\t...view,\n\t\t\t\t\tpage: 1,\n\t\t\t\t\tsearch: '',\n\t\t\t\t\tfilters:\n\t\t\t\t\t\tview.filters?.filter( ( f ) => !! f.isLocked ) || [],\n\t\t\t\t} );\n\t\t\t} }\n\t\t>\n\t\t\t{ __( 'Reset' ) }\n\t\t</Button>\n\t);\n}\n", "/**\n * WordPress dependencies\n */\nimport { useMemo } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport {\n\tisRegisteredOperator,\n\tisSingleSelectionOperator,\n} from '../../utils/operators';\nimport type { NormalizedFilter, NormalizedField, View } from '../../types';\n\nfunction useFilters( fields: NormalizedField< any >[], view: View ) {\n\treturn useMemo( () => {\n\t\tconst filters: NormalizedFilter[] = [];\n\t\tfields.forEach( ( field ) => {\n\t\t\tif (\n\t\t\t\tfield.filterBy === false ||\n\t\t\t\t( ! field.hasElements && ! field.Edit )\n\t\t\t) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst operators = field.filterBy.operators;\n\t\t\tconst isPrimary = !! field.filterBy?.isPrimary;\n\t\t\tconst isLocked =\n\t\t\t\tview.filters?.some(\n\t\t\t\t\t( f ) => f.field === field.id && !! f.isLocked\n\t\t\t\t) ?? false;\n\t\t\tfilters.push( {\n\t\t\t\tfield: field.id,\n\t\t\t\tname: field.label,\n\t\t\t\telements: field.elements,\n\t\t\t\tgetElements: field.getElements,\n\t\t\t\thasElements: field.hasElements,\n\t\t\t\tsingleSelection: operators.some( ( op ) =>\n\t\t\t\t\tisSingleSelectionOperator( op )\n\t\t\t\t),\n\t\t\t\toperators,\n\t\t\t\tisVisible:\n\t\t\t\t\tisLocked ||\n\t\t\t\t\tisPrimary ||\n\t\t\t\t\t!! view.filters?.some(\n\t\t\t\t\t\t( f ) =>\n\t\t\t\t\t\t\tf.field === field.id &&\n\t\t\t\t\t\t\tisRegisteredOperator( f.operator )\n\t\t\t\t\t),\n\t\t\t\tisPrimary,\n\t\t\t\tisLocked,\n\t\t\t} );\n\t\t} );\n\n\t\t// Sort filters by:\n\t\t// - locked filters go first\n\t\t// - primary filters go next\n\t\t// - then, sort by name\n\t\tfilters.sort( ( a, b ) => {\n\t\t\tif ( a.isLocked && ! b.isLocked ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t\tif ( ! a.isLocked && b.isLocked ) {\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t\tif ( a.isPrimary && ! b.isPrimary ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t\tif ( ! a.isPrimary && b.isPrimary ) {\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t\treturn a.name.localeCompare( b.name );\n\t\t} );\n\t\treturn filters;\n\t}, [ fields, view ] );\n}\n\nexport default useFilters;\n", "/**\n * WordPress dependencies\n */\nimport { useContext, useRef, useCallback, useEffect } from '@wordpress/element';\nimport { Button } from '@wordpress/components';\nimport { funnel } from '@wordpress/icons';\nimport { __, _x } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport { AddFilterMenu } from './add-filter';\nimport DataViewsContext from '../dataviews-context';\nimport type { View } from '../../types';\n\nfunction FiltersToggle() {\n\tconst {\n\t\tfilters,\n\t\tview,\n\t\tonChangeView,\n\t\tsetOpenedFilter,\n\t\tisShowingFilter,\n\t\tsetIsShowingFilter,\n\t} = useContext( DataViewsContext );\n\n\tconst buttonRef = useRef< HTMLButtonElement >( null );\n\tconst onChangeViewWithFilterVisibility = useCallback(\n\t\t( _view: View ) => {\n\t\t\tonChangeView( _view );\n\t\t\tsetIsShowingFilter( true );\n\t\t},\n\t\t[ onChangeView, setIsShowingFilter ]\n\t);\n\tconst visibleFilters = filters.filter( ( filter ) => filter.isVisible );\n\n\tconst hasVisibleFilters = !! visibleFilters.length;\n\tif ( filters.length === 0 ) {\n\t\treturn null;\n\t}\n\n\tconst addFilterButtonProps = {\n\t\tlabel: __( 'Add filter' ),\n\t\t'aria-expanded': false,\n\t\tisPressed: false,\n\t};\n\tconst toggleFiltersButtonProps = {\n\t\tlabel: _x( 'Filter', 'verb' ),\n\t\t'aria-expanded': isShowingFilter,\n\t\tisPressed: isShowingFilter,\n\t\tonClick: () => {\n\t\t\tif ( ! isShowingFilter ) {\n\t\t\t\tsetOpenedFilter( null );\n\t\t\t}\n\t\t\tsetIsShowingFilter( ! isShowingFilter );\n\t\t},\n\t};\n\tconst buttonComponent = (\n\t\t<Button\n\t\t\tref={ buttonRef }\n\t\t\tclassName=\"dataviews-filters__visibility-toggle\"\n\t\t\tsize=\"compact\"\n\t\t\ticon={ funnel }\n\t\t\t{ ...( hasVisibleFilters\n\t\t\t\t? toggleFiltersButtonProps\n\t\t\t\t: addFilterButtonProps ) }\n\t\t/>\n\t);\n\treturn (\n\t\t<div className=\"dataviews-filters__container-visibility-toggle\">\n\t\t\t{ ! hasVisibleFilters ? (\n\t\t\t\t<AddFilterMenu\n\t\t\t\t\tfilters={ filters }\n\t\t\t\t\tview={ view }\n\t\t\t\t\tonChangeView={ onChangeViewWithFilterVisibility }\n\t\t\t\t\tsetOpenedFilter={ setOpenedFilter }\n\t\t\t\t\ttriggerProps={ { render: buttonComponent } }\n\t\t\t\t/>\n\t\t\t) : (\n\t\t\t\t<FilterVisibilityToggle\n\t\t\t\t\tbuttonRef={ buttonRef }\n\t\t\t\t\tfiltersCount={ view.filters?.length }\n\t\t\t\t>\n\t\t\t\t\t{ buttonComponent }\n\t\t\t\t</FilterVisibilityToggle>\n\t\t\t) }\n\t\t</div>\n\t);\n}\n\nfunction FilterVisibilityToggle( {\n\tbuttonRef,\n\tfiltersCount,\n\tchildren,\n}: {\n\tbuttonRef: React.RefObject< HTMLButtonElement >;\n\tfiltersCount?: number;\n\tchildren: React.ReactNode;\n} ) {\n\t// Focus the `add filter` button when unmounts.\n\tuseEffect(\n\t\t() => () => {\n\t\t\tbuttonRef.current?.focus();\n\t\t},\n\t\t[ buttonRef ]\n\t);\n\treturn (\n\t\t<>\n\t\t\t{ children }\n\t\t\t{ !! filtersCount && (\n\t\t\t\t<span className=\"dataviews-filters-toggle__count\">\n\t\t\t\t\t{ filtersCount }\n\t\t\t\t</span>\n\t\t\t) }\n\t\t</>\n\t);\n}\n\nexport default FiltersToggle;\n", "/**\n * WordPress dependencies\n */\nimport { useContext } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport DataViewsContext from '../dataviews-context';\nimport Filters from './filters';\n\nfunction FiltersToggled( props: { className?: string } ) {\n\tconst { isShowingFilter } = useContext( DataViewsContext );\n\tif ( ! isShowingFilter ) {\n\t\treturn null;\n\t}\n\treturn <Filters { ...props } />;\n}\n\nexport default FiltersToggled;\n", "/**\n * External dependencies\n */\nimport type { ComponentType } from 'react';\n\n/**\n * WordPress dependencies\n */\nimport { useContext } from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport DataViewsContext from '../dataviews-context';\nimport { VIEW_LAYOUTS } from '../dataviews-layouts';\nimport type { ViewBaseProps } from '../../types';\n\ntype DataViewsLayoutProps = {\n\tclassName?: string;\n};\n\nexport default function DataViewsLayout( { className }: DataViewsLayoutProps ) {\n\tconst {\n\t\tactions = [],\n\t\tdata,\n\t\tfields,\n\t\tgetItemId,\n\t\tgetItemLevel,\n\t\tisLoading,\n\t\tview,\n\t\tonChangeView,\n\t\tselection,\n\t\tonChangeSelection,\n\t\tsetOpenedFilter,\n\t\tonClickItem,\n\t\tisItemClickable,\n\t\trenderItemLink,\n\t\tdefaultLayouts,\n\t\tempty = <p>{ __( 'No results' ) }</p>,\n\t} = useContext( DataViewsContext );\n\n\tconst ViewComponent = VIEW_LAYOUTS.find(\n\t\t( v ) => v.type === view.type && defaultLayouts[ v.type ]\n\t)?.component as ComponentType< ViewBaseProps< any > >;\n\n\treturn (\n\t\t<ViewComponent\n\t\t\tclassName={ className }\n\t\t\tactions={ actions }\n\t\t\tdata={ data }\n\t\t\tfields={ fields }\n\t\t\tgetItemId={ getItemId }\n\t\t\tgetItemLevel={ getItemLevel }\n\t\t\tisLoading={ isLoading }\n\t\t\tonChangeView={ onChangeView }\n\t\t\tonChangeSelection={ onChangeSelection }\n\t\t\tselection={ selection }\n\t\t\tsetOpenedFilter={ setOpenedFilter }\n\t\t\tonClickItem={ onClickItem }\n\t\t\trenderItemLink={ renderItemLink }\n\t\t\tisItemClickable={ isItemClickable }\n\t\t\tview={ view }\n\t\t\tempty={ empty }\n\t\t/>\n\t);\n}\n", "/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { useEffect, useRef, memo, useContext } from '@wordpress/element';\nimport { SearchControl } from '@wordpress/components';\nimport { useDebouncedInput } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport DataViewsContext from '../dataviews-context';\n\ninterface SearchProps {\n\tlabel?: string;\n}\n\nconst DataViewsSearch = memo( function Search( { label }: SearchProps ) {\n\tconst { view, onChangeView } = useContext( DataViewsContext );\n\tconst [ search, setSearch, debouncedSearch ] = useDebouncedInput(\n\t\tview.search\n\t);\n\tuseEffect( () => {\n\t\tsetSearch( view.search ?? '' );\n\t}, [ view.search, setSearch ] );\n\tconst onChangeViewRef = useRef( onChangeView );\n\tconst viewRef = useRef( view );\n\tuseEffect( () => {\n\t\tonChangeViewRef.current = onChangeView;\n\t\tviewRef.current = view;\n\t}, [ onChangeView, view ] );\n\tuseEffect( () => {\n\t\tif ( debouncedSearch !== viewRef.current?.search ) {\n\t\t\tonChangeViewRef.current( {\n\t\t\t\t...viewRef.current,\n\t\t\t\tpage: 1,\n\t\t\t\tsearch: debouncedSearch,\n\t\t\t} );\n\t\t}\n\t}, [ debouncedSearch ] );\n\tconst searchLabel = label || __( 'Search' );\n\treturn (\n\t\t<SearchControl\n\t\t\tclassName=\"dataviews-search\"\n\t\t\tonChange={ setSearch }\n\t\t\tvalue={ search }\n\t\t\tlabel={ searchLabel }\n\t\t\tplaceholder={ searchLabel }\n\t\t\tsize=\"compact\"\n\t\t/>\n\t);\n} );\n\nexport default DataViewsSearch;\n", "/**\n * External dependencies\n */\nimport type { ChangeEvent } from 'react';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tButton,\n\t__experimentalDropdownContentWrapper as DropdownContentWrapper,\n\tDropdown,\n\t__experimentalToggleGroupControl as ToggleGroupControl,\n\t__experimentalToggleGroupControlOption as ToggleGroupControlOption,\n\t__experimentalToggleGroupControlOptionIcon as ToggleGroupControlOptionIcon,\n\tSelectControl,\n\t__experimentalGrid as Grid,\n\t__experimentalHeading as Heading,\n\t__experimentalText as Text,\n\tprivateApis as componentsPrivateApis,\n} from '@wordpress/components';\nimport { __, _x } from '@wordpress/i18n';\nimport { memo, useContext, useMemo } from '@wordpress/element';\nimport { cog } from '@wordpress/icons';\nimport warning from '@wordpress/warning';\nimport { useInstanceId } from '@wordpress/compose';\nimport { Stack } from '@wordpress/ui';\n\n/**\n * Internal dependencies\n */\nimport { SORTING_DIRECTIONS, sortIcons, sortLabels } from '../../constants';\nimport { VIEW_LAYOUTS } from '../dataviews-layouts';\nimport type { View } from '../../types';\nimport DataViewsContext from '../dataviews-context';\nimport InfiniteScrollToggle from './infinite-scroll-toggle';\nimport { PropertiesSection } from './properties-section';\nimport { unlock } from '../../lock-unlock';\n\nconst { Menu } = unlock( componentsPrivateApis );\n\nconst DATAVIEWS_CONFIG_POPOVER_PROPS = {\n\tclassName: 'dataviews-config__popover',\n\tplacement: 'bottom-end',\n\toffset: 9,\n};\n\nexport function ViewTypeMenu() {\n\tconst { view, onChangeView, defaultLayouts } =\n\t\tuseContext( DataViewsContext );\n\tconst availableLayouts = Object.keys( defaultLayouts );\n\tif ( availableLayouts.length <= 1 ) {\n\t\treturn null;\n\t}\n\tconst activeView = VIEW_LAYOUTS.find( ( v ) => view.type === v.type );\n\treturn (\n\t\t<Menu>\n\t\t\t<Menu.TriggerButton\n\t\t\t\trender={\n\t\t\t\t\t<Button\n\t\t\t\t\t\tsize=\"compact\"\n\t\t\t\t\t\ticon={ activeView?.icon }\n\t\t\t\t\t\tlabel={ __( 'Layout' ) }\n\t\t\t\t\t/>\n\t\t\t\t}\n\t\t\t/>\n\t\t\t<Menu.Popover>\n\t\t\t\t{ availableLayouts.map( ( layout ) => {\n\t\t\t\t\tconst config = VIEW_LAYOUTS.find(\n\t\t\t\t\t\t( v ) => v.type === layout\n\t\t\t\t\t);\n\t\t\t\t\tif ( ! config ) {\n\t\t\t\t\t\treturn null;\n\t\t\t\t\t}\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<Menu.RadioItem\n\t\t\t\t\t\t\tkey={ layout }\n\t\t\t\t\t\t\tvalue={ layout }\n\t\t\t\t\t\t\tname=\"view-actions-available-view\"\n\t\t\t\t\t\t\tchecked={ layout === view.type }\n\t\t\t\t\t\t\thideOnClick\n\t\t\t\t\t\t\tonChange={ (\n\t\t\t\t\t\t\t\te: ChangeEvent< HTMLInputElement >\n\t\t\t\t\t\t\t) => {\n\t\t\t\t\t\t\t\tswitch ( e.target.value ) {\n\t\t\t\t\t\t\t\t\tcase 'list':\n\t\t\t\t\t\t\t\t\tcase 'grid':\n\t\t\t\t\t\t\t\t\tcase 'table':\n\t\t\t\t\t\t\t\t\tcase 'pickerGrid':\n\t\t\t\t\t\t\t\t\tcase 'pickerTable':\n\t\t\t\t\t\t\t\t\tcase 'activity':\n\t\t\t\t\t\t\t\t\t\tconst viewWithoutLayout = { ...view };\n\t\t\t\t\t\t\t\t\t\tif ( 'layout' in viewWithoutLayout ) {\n\t\t\t\t\t\t\t\t\t\t\tdelete viewWithoutLayout.layout;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\treturn onChangeView( {\n\t\t\t\t\t\t\t\t\t\t\t...viewWithoutLayout,\n\t\t\t\t\t\t\t\t\t\t\ttype: e.target.value,\n\t\t\t\t\t\t\t\t\t\t\t...defaultLayouts[ e.target.value ],\n\t\t\t\t\t\t\t\t\t\t} as View );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\twarning( 'Invalid dataview' );\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<Menu.ItemLabel>{ config.label }</Menu.ItemLabel>\n\t\t\t\t\t\t</Menu.RadioItem>\n\t\t\t\t\t);\n\t\t\t\t} ) }\n\t\t\t</Menu.Popover>\n\t\t</Menu>\n\t);\n}\n\nfunction SortFieldControl() {\n\tconst { view, fields, onChangeView } = useContext( DataViewsContext );\n\tconst orderOptions = useMemo( () => {\n\t\tconst sortableFields = fields.filter(\n\t\t\t( field ) => field.enableSorting !== false\n\t\t);\n\t\treturn sortableFields.map( ( field ) => {\n\t\t\treturn {\n\t\t\t\tlabel: field.label,\n\t\t\t\tvalue: field.id,\n\t\t\t};\n\t\t} );\n\t}, [ fields ] );\n\n\treturn (\n\t\t<SelectControl\n\t\t\t__next40pxDefaultSize\n\t\t\tlabel={ __( 'Sort by' ) }\n\t\t\tvalue={ view.sort?.field }\n\t\t\toptions={ orderOptions }\n\t\t\tonChange={ ( value: string ) => {\n\t\t\t\tonChangeView( {\n\t\t\t\t\t...view,\n\t\t\t\t\tsort: {\n\t\t\t\t\t\tdirection: view?.sort?.direction || 'desc',\n\t\t\t\t\t\tfield: value,\n\t\t\t\t\t},\n\t\t\t\t\tshowLevels: false,\n\t\t\t\t} );\n\t\t\t} }\n\t\t/>\n\t);\n}\n\nfunction SortDirectionControl() {\n\tconst { view, fields, onChangeView } = useContext( DataViewsContext );\n\n\tconst sortableFields = fields.filter(\n\t\t( field ) => field.enableSorting !== false\n\t);\n\tif ( sortableFields.length === 0 ) {\n\t\treturn null;\n\t}\n\n\tlet value = view.sort?.direction;\n\tif ( ! value && view.sort?.field ) {\n\t\tvalue = 'desc';\n\t}\n\treturn (\n\t\t<ToggleGroupControl\n\t\t\tclassName=\"dataviews-view-config__sort-direction\"\n\t\t\t__next40pxDefaultSize\n\t\t\tisBlock\n\t\t\tlabel={ __( 'Order' ) }\n\t\t\tvalue={ value }\n\t\t\tonChange={ ( newDirection ) => {\n\t\t\t\tif ( newDirection === 'asc' || newDirection === 'desc' ) {\n\t\t\t\t\tonChangeView( {\n\t\t\t\t\t\t...view,\n\t\t\t\t\t\tsort: {\n\t\t\t\t\t\t\tdirection: newDirection,\n\t\t\t\t\t\t\tfield:\n\t\t\t\t\t\t\t\tview.sort?.field ||\n\t\t\t\t\t\t\t\t// If there is no field assigned as the sorting field assign the first sortable field.\n\t\t\t\t\t\t\t\tfields.find(\n\t\t\t\t\t\t\t\t\t( field ) => field.enableSorting !== false\n\t\t\t\t\t\t\t\t)?.id ||\n\t\t\t\t\t\t\t\t'',\n\t\t\t\t\t\t},\n\t\t\t\t\t\tshowLevels: false,\n\t\t\t\t\t} );\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\twarning( 'Invalid direction' );\n\t\t\t} }\n\t\t>\n\t\t\t{ SORTING_DIRECTIONS.map( ( direction ) => {\n\t\t\t\treturn (\n\t\t\t\t\t<ToggleGroupControlOptionIcon\n\t\t\t\t\t\tkey={ direction }\n\t\t\t\t\t\tvalue={ direction }\n\t\t\t\t\t\ticon={ sortIcons[ direction ] }\n\t\t\t\t\t\tlabel={ sortLabels[ direction ] }\n\t\t\t\t\t/>\n\t\t\t\t);\n\t\t\t} ) }\n\t\t</ToggleGroupControl>\n\t);\n}\n\nfunction ItemsPerPageControl() {\n\tconst { view, config, onChangeView } = useContext( DataViewsContext );\n\tconst { infiniteScrollEnabled } = view;\n\tif (\n\t\t! config ||\n\t\t! config.perPageSizes ||\n\t\tconfig.perPageSizes.length < 2 ||\n\t\tconfig.perPageSizes.length > 6 ||\n\t\tinfiniteScrollEnabled\n\t) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<ToggleGroupControl\n\t\t\t__next40pxDefaultSize\n\t\t\tisBlock\n\t\t\tlabel={ __( 'Items per page' ) }\n\t\t\tvalue={ view.perPage || 10 }\n\t\t\tdisabled={ ! view?.sort?.field }\n\t\t\tonChange={ ( newItemsPerPage ) => {\n\t\t\t\tconst newItemsPerPageNumber =\n\t\t\t\t\ttypeof newItemsPerPage === 'number' ||\n\t\t\t\t\tnewItemsPerPage === undefined\n\t\t\t\t\t\t? newItemsPerPage\n\t\t\t\t\t\t: parseInt( newItemsPerPage, 10 );\n\t\t\t\tonChangeView( {\n\t\t\t\t\t...view,\n\t\t\t\t\tperPage: newItemsPerPageNumber,\n\t\t\t\t\tpage: 1,\n\t\t\t\t} );\n\t\t\t} }\n\t\t>\n\t\t\t{ config.perPageSizes.map( ( value ) => {\n\t\t\t\treturn (\n\t\t\t\t\t<ToggleGroupControlOption\n\t\t\t\t\t\tkey={ value }\n\t\t\t\t\t\tvalue={ value }\n\t\t\t\t\t\tlabel={ value.toString() }\n\t\t\t\t\t/>\n\t\t\t\t);\n\t\t\t} ) }\n\t\t</ToggleGroupControl>\n\t);\n}\n\nfunction SettingsSection( {\n\ttitle,\n\tdescription,\n\tchildren,\n}: {\n\ttitle: string;\n\tdescription?: string;\n\tchildren: React.ReactNode;\n} ) {\n\treturn (\n\t\t<Grid columns={ 12 } className=\"dataviews-settings-section\" gap={ 4 }>\n\t\t\t<div className=\"dataviews-settings-section__sidebar\">\n\t\t\t\t<Heading\n\t\t\t\t\tlevel={ 2 }\n\t\t\t\t\tclassName=\"dataviews-settings-section__title\"\n\t\t\t\t>\n\t\t\t\t\t{ title }\n\t\t\t\t</Heading>\n\t\t\t\t{ description && (\n\t\t\t\t\t<Text\n\t\t\t\t\t\tvariant=\"muted\"\n\t\t\t\t\t\tclassName=\"dataviews-settings-section__description\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{ description }\n\t\t\t\t\t</Text>\n\t\t\t\t) }\n\t\t\t</div>\n\t\t\t<Grid\n\t\t\t\tcolumns={ 8 }\n\t\t\t\tgap={ 4 }\n\t\t\t\tclassName=\"dataviews-settings-section__content\"\n\t\t\t>\n\t\t\t\t{ children }\n\t\t\t</Grid>\n\t\t</Grid>\n\t);\n}\n\nexport function DataviewsViewConfigDropdown() {\n\tconst { view } = useContext( DataViewsContext );\n\tconst popoverId = useInstanceId(\n\t\t_DataViewsViewConfig,\n\t\t'dataviews-view-config-dropdown'\n\t);\n\tconst activeLayout = VIEW_LAYOUTS.find(\n\t\t( layout ) => layout.type === view.type\n\t);\n\treturn (\n\t\t<Dropdown\n\t\t\texpandOnMobile\n\t\t\tpopoverProps={ {\n\t\t\t\t...DATAVIEWS_CONFIG_POPOVER_PROPS,\n\t\t\t\tid: popoverId,\n\t\t\t} }\n\t\t\trenderToggle={ ( { onToggle, isOpen } ) => {\n\t\t\t\treturn (\n\t\t\t\t\t<Button\n\t\t\t\t\t\tsize=\"compact\"\n\t\t\t\t\t\ticon={ cog }\n\t\t\t\t\t\tlabel={ _x( 'View options', 'View is used as a noun' ) }\n\t\t\t\t\t\tonClick={ onToggle }\n\t\t\t\t\t\taria-expanded={ isOpen ? 'true' : 'false' }\n\t\t\t\t\t\taria-controls={ popoverId }\n\t\t\t\t\t/>\n\t\t\t\t);\n\t\t\t} }\n\t\t\trenderContent={ () => (\n\t\t\t\t<DropdownContentWrapper\n\t\t\t\t\tpaddingSize=\"medium\"\n\t\t\t\t\tclassName=\"dataviews-config__popover-content-wrapper\"\n\t\t\t\t>\n\t\t\t\t\t<Stack\n\t\t\t\t\t\tdirection=\"column\"\n\t\t\t\t\t\tclassName=\"dataviews-view-config\"\n\t\t\t\t\t\tgap=\"lg\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<SettingsSection title={ __( 'Appearance' ) }>\n\t\t\t\t\t\t\t<Stack\n\t\t\t\t\t\t\t\tdirection=\"row\"\n\t\t\t\t\t\t\t\tgap=\"xs\"\n\t\t\t\t\t\t\t\tclassName=\"is-divided-in-two\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<SortFieldControl />\n\t\t\t\t\t\t\t\t<SortDirectionControl />\n\t\t\t\t\t\t\t</Stack>\n\t\t\t\t\t\t\t{ !! activeLayout?.viewConfigOptions && (\n\t\t\t\t\t\t\t\t<activeLayout.viewConfigOptions />\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t<InfiniteScrollToggle />\n\t\t\t\t\t\t\t<ItemsPerPageControl />\n\t\t\t\t\t\t\t<PropertiesSection />\n\t\t\t\t\t\t</SettingsSection>\n\t\t\t\t\t</Stack>\n\t\t\t\t</DropdownContentWrapper>\n\t\t\t) }\n\t\t/>\n\t);\n}\n\nfunction _DataViewsViewConfig() {\n\treturn (\n\t\t<>\n\t\t\t<ViewTypeMenu />\n\t\t\t<DataviewsViewConfigDropdown />\n\t\t</>\n\t);\n}\n\nconst DataViewsViewConfig = memo( _DataViewsViewConfig );\n\nexport default DataViewsViewConfig;\n", "/**\n * WordPress dependencies\n */\nimport { ToggleControl } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { useContext } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport DataViewsContext from '../dataviews-context';\n\nexport default function InfiniteScrollToggle() {\n\tconst context = useContext( DataViewsContext );\n\tconst { view, onChangeView } = context;\n\tconst infiniteScrollEnabled = view.infiniteScrollEnabled ?? false;\n\n\t// Only render the toggle if an infinite scroll handler is available\n\tif ( ! context.hasInfiniteScrollHandler ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<ToggleControl\n\t\t\tlabel={ __( 'Enable infinite scroll' ) }\n\t\t\thelp={ __(\n\t\t\t\t'Automatically load more content as you scroll, instead of showing pagination links.'\n\t\t\t) }\n\t\t\tchecked={ infiniteScrollEnabled }\n\t\t\tonChange={ ( newValue ) => {\n\t\t\t\tonChangeView( {\n\t\t\t\t\t...view,\n\t\t\t\t\tinfiniteScrollEnabled: newValue,\n\t\t\t\t} );\n\t\t\t} }\n\t\t/>\n\t);\n}\n", "/**\n * WordPress dependencies\n */\nimport { privateApis } from '@wordpress/components';\nimport { useCallback } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport type { DataFormControlProps } from '../../types';\nimport { unlock } from '../../lock-unlock';\nimport getCustomValidity from './utils/get-custom-validity';\n\nconst { ValidatedCheckboxControl } = unlock( privateApis );\n\nexport default function Checkbox< Item >( {\n\tfield,\n\tonChange,\n\tdata,\n\thideLabelFromVision,\n\tvalidity,\n}: DataFormControlProps< Item > ) {\n\tconst { getValue, setValue, label, description, isValid } = field;\n\n\tconst onChangeControl = useCallback( () => {\n\t\tonChange(\n\t\t\tsetValue( { item: data, value: ! getValue( { item: data } ) } )\n\t\t);\n\t}, [ data, getValue, onChange, setValue ] );\n\n\treturn (\n\t\t<ValidatedCheckboxControl\n\t\t\trequired={ !! field.isValid?.required }\n\t\t\tcustomValidity={ getCustomValidity( isValid, validity ) }\n\t\t\thidden={ hideLabelFromVision }\n\t\t\tlabel={ label }\n\t\t\thelp={ description }\n\t\t\tchecked={ getValue( { item: data } ) }\n\t\t\tonChange={ onChangeControl }\n\t\t/>\n\t);\n}\n", "/**\n * Internal dependencies\n */\nimport type { NormalizedRules, FieldValidity } from '../../../types';\n\nexport default function getCustomValidity< Item >(\n\tisValid: NormalizedRules< Item >,\n\tvalidity: FieldValidity | undefined\n) {\n\tlet customValidity;\n\tif ( isValid?.required && validity?.required ) {\n\t\t// If the consumer provides a message for required,\n\t\t// use it instead of the native built-in message.\n\t\tcustomValidity = validity?.required?.message\n\t\t\t? validity.required\n\t\t\t: undefined;\n\t} else if ( isValid?.pattern && validity?.pattern ) {\n\t\tcustomValidity = validity.pattern;\n\t} else if ( isValid?.min && validity?.min ) {\n\t\tcustomValidity = validity.min;\n\t} else if ( isValid?.max && validity?.max ) {\n\t\tcustomValidity = validity.max;\n\t} else if ( isValid?.minLength && validity?.minLength ) {\n\t\tcustomValidity = validity.minLength;\n\t} else if ( isValid?.maxLength && validity?.maxLength ) {\n\t\tcustomValidity = validity.maxLength;\n\t} else if ( isValid?.elements && validity?.elements ) {\n\t\tcustomValidity = validity.elements;\n\t} else if ( validity?.custom ) {\n\t\tcustomValidity = validity.custom;\n\t}\n\n\treturn customValidity;\n}\n", "/**\n * @module constants\n * @summary Useful constants\n * @description\n * Collection of useful date constants.\n *\n * The constants could be imported from `date-fns/constants`:\n *\n * ```ts\n * import { maxTime, minTime } from \"./constants/date-fns/constants\";\n *\n * function isAllowedTime(time) {\n * return time <= maxTime && time >= minTime;\n * }\n * ```\n */\n\n/**\n * @constant\n * @name daysInWeek\n * @summary Days in 1 week.\n */\nexport const daysInWeek = 7;\n\n/**\n * @constant\n * @name daysInYear\n * @summary Days in 1 year.\n *\n * @description\n * How many days in a year.\n *\n * One years equals 365.2425 days according to the formula:\n *\n * > Leap year occurs every 4 years, except for years that are divisible by 100 and not divisible by 400.\n * > 1 mean year = (365+1/4-1/100+1/400) days = 365.2425 days\n */\nexport const daysInYear = 365.2425;\n\n/**\n * @constant\n * @name maxTime\n * @summary Maximum allowed time.\n *\n * @example\n * import { maxTime } from \"./constants/date-fns/constants\";\n *\n * const isValid = 8640000000000001 <= maxTime;\n * //=> false\n *\n * new Date(8640000000000001);\n * //=> Invalid Date\n */\nexport const maxTime = Math.pow(10, 8) * 24 * 60 * 60 * 1000;\n\n/**\n * @constant\n * @name minTime\n * @summary Minimum allowed time.\n *\n * @example\n * import { minTime } from \"./constants/date-fns/constants\";\n *\n * const isValid = -8640000000000001 >= minTime;\n * //=> false\n *\n * new Date(-8640000000000001)\n * //=> Invalid Date\n */\nexport const minTime = -maxTime;\n\n/**\n * @constant\n * @name millisecondsInWeek\n * @summary Milliseconds in 1 week.\n */\nexport const millisecondsInWeek = 604800000;\n\n/**\n * @constant\n * @name millisecondsInDay\n * @summary Milliseconds in 1 day.\n */\nexport const millisecondsInDay = 86400000;\n\n/**\n * @constant\n * @name millisecondsInMinute\n * @summary Milliseconds in 1 minute\n */\nexport const millisecondsInMinute = 60000;\n\n/**\n * @constant\n * @name millisecondsInHour\n * @summary Milliseconds in 1 hour\n */\nexport const millisecondsInHour = 3600000;\n\n/**\n * @constant\n * @name millisecondsInSecond\n * @summary Milliseconds in 1 second\n */\nexport const millisecondsInSecond = 1000;\n\n/**\n * @constant\n * @name minutesInYear\n * @summary Minutes in 1 year.\n */\nexport const minutesInYear = 525600;\n\n/**\n * @constant\n * @name minutesInMonth\n * @summary Minutes in 1 month.\n */\nexport const minutesInMonth = 43200;\n\n/**\n * @constant\n * @name minutesInDay\n * @summary Minutes in 1 day.\n */\nexport const minutesInDay = 1440;\n\n/**\n * @constant\n * @name minutesInHour\n * @summary Minutes in 1 hour.\n */\nexport const minutesInHour = 60;\n\n/**\n * @constant\n * @name monthsInQuarter\n * @summary Months in 1 quarter.\n */\nexport const monthsInQuarter = 3;\n\n/**\n * @constant\n * @name monthsInYear\n * @summary Months in 1 year.\n */\nexport const monthsInYear = 12;\n\n/**\n * @constant\n * @name quartersInYear\n * @summary Quarters in 1 year\n */\nexport const quartersInYear = 4;\n\n/**\n * @constant\n * @name secondsInHour\n * @summary Seconds in 1 hour.\n */\nexport const secondsInHour = 3600;\n\n/**\n * @constant\n * @name secondsInMinute\n * @summary Seconds in 1 minute.\n */\nexport const secondsInMinute = 60;\n\n/**\n * @constant\n * @name secondsInDay\n * @summary Seconds in 1 day.\n */\nexport const secondsInDay = secondsInHour * 24;\n\n/**\n * @constant\n * @name secondsInWeek\n * @summary Seconds in 1 week.\n */\nexport const secondsInWeek = secondsInDay * 7;\n\n/**\n * @constant\n * @name secondsInYear\n * @summary Seconds in 1 year.\n */\nexport const secondsInYear = secondsInDay * daysInYear;\n\n/**\n * @constant\n * @name secondsInMonth\n * @summary Seconds in 1 month\n */\nexport const secondsInMonth = secondsInYear / 12;\n\n/**\n * @constant\n * @name secondsInQuarter\n * @summary Seconds in 1 quarter.\n */\nexport const secondsInQuarter = secondsInMonth * 3;\n\n/**\n * @constant\n * @name constructFromSymbol\n * @summary Symbol enabling Date extensions to inherit properties from the reference date.\n *\n * The symbol is used to enable the `constructFrom` function to construct a date\n * using a reference date and a value. It allows to transfer extra properties\n * from the reference date to the new date. It's useful for extensions like\n * [`TZDate`](https://github.com/date-fns/tz) that accept a time zone as\n * a constructor argument.\n */\nexport const constructFromSymbol = Symbol.for(\"constructDateFrom\");\n", "import { constructFromSymbol } from \"./constants.js\";\n\n/**\n * @name constructFrom\n * @category Generic Helpers\n * @summary Constructs a date using the reference date and the value\n *\n * @description\n * The function constructs a new date using the constructor from the reference\n * date and the given value. It helps to build generic functions that accept\n * date extensions.\n *\n * It defaults to `Date` if the passed reference date is a number or a string.\n *\n * Starting from v3.7.0, it allows to construct a date using `[Symbol.for(\"constructDateFrom\")]`\n * enabling to transfer extra properties from the reference date to the new date.\n * It's useful for extensions like [`TZDate`](https://github.com/date-fns/tz)\n * that accept a time zone as a constructor argument.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The reference date to take constructor from\n * @param value - The value to create the date\n *\n * @returns Date initialized using the given date and value\n *\n * @example\n * import { constructFrom } from \"./constructFrom/date-fns\";\n *\n * // A function that clones a date preserving the original type\n * function cloneDate<DateType extends Date>(date: DateType): DateType {\n * return constructFrom(\n * date, // Use constructor from the given date\n * date.getTime() // Use the date value to create a new date\n * );\n * }\n */\nexport function constructFrom(date, value) {\n if (typeof date === \"function\") return date(value);\n\n if (date && typeof date === \"object\" && constructFromSymbol in date)\n return date[constructFromSymbol](value);\n\n if (date instanceof Date) return new date.constructor(value);\n\n return new Date(value);\n}\n\n// Fallback for modularized imports:\nexport default constructFrom;\n", "import { constructFrom } from \"./constructFrom.js\";\n\n/**\n * @name toDate\n * @category Common Helpers\n * @summary Convert the given argument to an instance of Date.\n *\n * @description\n * Convert the given argument to an instance of Date.\n *\n * If the argument is an instance of Date, the function returns its clone.\n *\n * If the argument is a number, it is treated as a timestamp.\n *\n * If the argument is none of the above, the function returns Invalid Date.\n *\n * Starting from v3.7.0, it clones a date using `[Symbol.for(\"constructDateFrom\")]`\n * enabling to transfer extra properties from the reference date to the new date.\n * It's useful for extensions like [`TZDate`](https://github.com/date-fns/tz)\n * that accept a time zone as a constructor argument.\n *\n * **Note**: *all* Date arguments passed to any *date-fns* function is processed by `toDate`.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param argument - The value to convert\n *\n * @returns The parsed date in the local time zone\n *\n * @example\n * // Clone the date:\n * const result = toDate(new Date(2014, 1, 11, 11, 30, 30))\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert the timestamp to date:\n * const result = toDate(1392098430000)\n * //=> Tue Feb 11 2014 11:30:30\n */\nexport function toDate(argument, context) {\n // [TODO] Get rid of `toDate` or `constructFrom`?\n return constructFrom(context || argument, argument);\n}\n\n// Fallback for modularized imports:\nexport default toDate;\n", "import { constructFrom } from \"./constructFrom.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link addDays} function options.\n */\n\n/**\n * @name addDays\n * @category Day Helpers\n * @summary Add the specified number of days to the given date.\n *\n * @description\n * Add the specified number of days to the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param amount - The amount of days to be added.\n * @param options - An object with options\n *\n * @returns The new date with the days added\n *\n * @example\n * // Add 10 days to 1 September 2014:\n * const result = addDays(new Date(2014, 8, 1), 10)\n * //=> Thu Sep 11 2014 00:00:00\n */\nexport function addDays(date, amount, options) {\n const _date = toDate(date, options?.in);\n if (isNaN(amount)) return constructFrom(options?.in || date, NaN);\n\n // If 0 days, no-op to avoid changing times in the hour before end of DST\n if (!amount) return _date;\n\n _date.setDate(_date.getDate() + amount);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default addDays;\n", "import { constructFrom } from \"./constructFrom.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link addMonths} function options.\n */\n\n/**\n * @name addMonths\n * @category Month Helpers\n * @summary Add the specified number of months to the given date.\n *\n * @description\n * Add the specified number of months to the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param amount - The amount of months to be added.\n * @param options - The options object\n *\n * @returns The new date with the months added\n *\n * @example\n * // Add 5 months to 1 September 2014:\n * const result = addMonths(new Date(2014, 8, 1), 5)\n * //=> Sun Feb 01 2015 00:00:00\n *\n * // Add one month to 30 January 2023:\n * const result = addMonths(new Date(2023, 0, 30), 1)\n * //=> Tue Feb 28 2023 00:00:00\n */\nexport function addMonths(date, amount, options) {\n const _date = toDate(date, options?.in);\n if (isNaN(amount)) return constructFrom(options?.in || date, NaN);\n if (!amount) {\n // If 0 months, no-op to avoid changing times in the hour before end of DST\n return _date;\n }\n const dayOfMonth = _date.getDate();\n\n // The JS Date object supports date math by accepting out-of-bounds values for\n // month, day, etc. For example, new Date(2020, 0, 0) returns 31 Dec 2019 and\n // new Date(2020, 13, 1) returns 1 Feb 2021. This is *almost* the behavior we\n // want except that dates will wrap around the end of a month, meaning that\n // new Date(2020, 13, 31) will return 3 Mar 2021 not 28 Feb 2021 as desired. So\n // we'll default to the end of the desired month by adding 1 to the desired\n // month and using a date of 0 to back up one day to the end of the desired\n // month.\n const endOfDesiredMonth = constructFrom(options?.in || date, _date.getTime());\n endOfDesiredMonth.setMonth(_date.getMonth() + amount + 1, 0);\n const daysInMonth = endOfDesiredMonth.getDate();\n if (dayOfMonth >= daysInMonth) {\n // If we're already at the end of the month, then this is the correct date\n // and we're done.\n return endOfDesiredMonth;\n } else {\n // Otherwise, we now know that setting the original day-of-month value won't\n // cause an overflow, so set the desired day-of-month. Note that we can't\n // just set the date of `endOfDesiredMonth` because that object may have had\n // its time changed in the unusual case where where a DST transition was on\n // the last day of the month and its local time was in the hour skipped or\n // repeated next to a DST transition. So we use `date` instead which is\n // guaranteed to still have the original time.\n _date.setFullYear(\n endOfDesiredMonth.getFullYear(),\n endOfDesiredMonth.getMonth(),\n dayOfMonth,\n );\n return _date;\n }\n}\n\n// Fallback for modularized imports:\nexport default addMonths;\n", "let defaultOptions = {};\n\nexport function getDefaultOptions() {\n return defaultOptions;\n}\n\nexport function setDefaultOptions(newOptions) {\n defaultOptions = newOptions;\n}\n", "import { getDefaultOptions } from \"./_lib/defaultOptions.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link startOfWeek} function options.\n */\n\n/**\n * @name startOfWeek\n * @category Week Helpers\n * @summary Return the start of a week for the given date.\n *\n * @description\n * Return the start of a week for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The start of a week\n *\n * @example\n * // The start of a week for 2 September 2014 11:55:00:\n * const result = startOfWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Sun Aug 31 2014 00:00:00\n *\n * @example\n * // If the week starts on Monday, the start of the week for 2 September 2014 11:55:00:\n * const result = startOfWeek(new Date(2014, 8, 2, 11, 55, 0), { weekStartsOn: 1 })\n * //=> Mon Sep 01 2014 00:00:00\n */\nexport function startOfWeek(date, options) {\n const defaultOptions = getDefaultOptions();\n const weekStartsOn =\n options?.weekStartsOn ??\n options?.locale?.options?.weekStartsOn ??\n defaultOptions.weekStartsOn ??\n defaultOptions.locale?.options?.weekStartsOn ??\n 0;\n\n const _date = toDate(date, options?.in);\n const day = _date.getDay();\n const diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n\n _date.setDate(_date.getDate() - diff);\n _date.setHours(0, 0, 0, 0);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default startOfWeek;\n", "import { startOfWeek } from \"./startOfWeek.js\";\n\n/**\n * The {@link startOfISOWeek} function options.\n */\n\n/**\n * @name startOfISOWeek\n * @category ISO Week Helpers\n * @summary Return the start of an ISO week for the given date.\n *\n * @description\n * Return the start of an ISO week for the given date.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The start of an ISO week\n *\n * @example\n * // The start of an ISO week for 2 September 2014 11:55:00:\n * const result = startOfISOWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Mon Sep 01 2014 00:00:00\n */\nexport function startOfISOWeek(date, options) {\n return startOfWeek(date, { ...options, weekStartsOn: 1 });\n}\n\n// Fallback for modularized imports:\nexport default startOfISOWeek;\n", "import { constructFrom } from \"./constructFrom.js\";\nimport { startOfISOWeek } from \"./startOfISOWeek.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link getISOWeekYear} function options.\n */\n\n/**\n * @name getISOWeekYear\n * @category ISO Week-Numbering Year Helpers\n * @summary Get the ISO week-numbering year of the given date.\n *\n * @description\n * Get the ISO week-numbering year of the given date,\n * which always starts 3 days before the year's first Thursday.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param date - The given date\n *\n * @returns The ISO week-numbering year\n *\n * @example\n * // Which ISO-week numbering year is 2 January 2005?\n * const result = getISOWeekYear(new Date(2005, 0, 2))\n * //=> 2004\n */\nexport function getISOWeekYear(date, options) {\n const _date = toDate(date, options?.in);\n const year = _date.getFullYear();\n\n const fourthOfJanuaryOfNextYear = constructFrom(_date, 0);\n fourthOfJanuaryOfNextYear.setFullYear(year + 1, 0, 4);\n fourthOfJanuaryOfNextYear.setHours(0, 0, 0, 0);\n const startOfNextYear = startOfISOWeek(fourthOfJanuaryOfNextYear);\n\n const fourthOfJanuaryOfThisYear = constructFrom(_date, 0);\n fourthOfJanuaryOfThisYear.setFullYear(year, 0, 4);\n fourthOfJanuaryOfThisYear.setHours(0, 0, 0, 0);\n const startOfThisYear = startOfISOWeek(fourthOfJanuaryOfThisYear);\n\n if (_date.getTime() >= startOfNextYear.getTime()) {\n return year + 1;\n } else if (_date.getTime() >= startOfThisYear.getTime()) {\n return year;\n } else {\n return year - 1;\n }\n}\n\n// Fallback for modularized imports:\nexport default getISOWeekYear;\n", "import { toDate } from \"../toDate.js\";\n\n/**\n * Google Chrome as of 67.0.3396.87 introduced timezones with offset that includes seconds.\n * They usually appear for dates that denote time before the timezones were introduced\n * (e.g. for 'Europe/Prague' timezone the offset is GMT+00:57:44 before 1 October 1891\n * and GMT+01:00:00 after that date)\n *\n * Date#getTimezoneOffset returns the offset in minutes and would return 57 for the example above,\n * which would lead to incorrect calculations.\n *\n * This function returns the timezone offset in milliseconds that takes seconds in account.\n */\nexport function getTimezoneOffsetInMilliseconds(date) {\n const _date = toDate(date);\n const utcDate = new Date(\n Date.UTC(\n _date.getFullYear(),\n _date.getMonth(),\n _date.getDate(),\n _date.getHours(),\n _date.getMinutes(),\n _date.getSeconds(),\n _date.getMilliseconds(),\n ),\n );\n utcDate.setUTCFullYear(_date.getFullYear());\n return +date - +utcDate;\n}\n", "import { constructFrom } from \"../constructFrom.js\";\n\nexport function normalizeDates(context, ...dates) {\n const normalize = constructFrom.bind(\n null,\n context || dates.find((date) => typeof date === \"object\"),\n );\n return dates.map(normalize);\n}\n", "import { toDate } from \"./toDate.js\";\n\n/**\n * The {@link startOfDay} function options.\n */\n\n/**\n * @name startOfDay\n * @category Day Helpers\n * @summary Return the start of a day for the given date.\n *\n * @description\n * Return the start of a day for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - The options\n *\n * @returns The start of a day\n *\n * @example\n * // The start of a day for 2 September 2014 11:55:00:\n * const result = startOfDay(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 02 2014 00:00:00\n */\nexport function startOfDay(date, options) {\n const _date = toDate(date, options?.in);\n _date.setHours(0, 0, 0, 0);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default startOfDay;\n", "import { getTimezoneOffsetInMilliseconds } from \"./_lib/getTimezoneOffsetInMilliseconds.js\";\nimport { normalizeDates } from \"./_lib/normalizeDates.js\";\nimport { millisecondsInDay } from \"./constants.js\";\nimport { startOfDay } from \"./startOfDay.js\";\n\n/**\n * The {@link differenceInCalendarDays} function options.\n */\n\n/**\n * @name differenceInCalendarDays\n * @category Day Helpers\n * @summary Get the number of calendar days between the given dates.\n *\n * @description\n * Get the number of calendar days between the given dates. This means that the times are removed\n * from the dates and then the difference in days is calculated.\n *\n * @param laterDate - The later date\n * @param earlierDate - The earlier date\n * @param options - The options object\n *\n * @returns The number of calendar days\n *\n * @example\n * // How many calendar days are between\n * // 2 July 2011 23:00:00 and 2 July 2012 00:00:00?\n * const result = differenceInCalendarDays(\n * new Date(2012, 6, 2, 0, 0),\n * new Date(2011, 6, 2, 23, 0)\n * )\n * //=> 366\n * // How many calendar days are between\n * // 2 July 2011 23:59:00 and 3 July 2011 00:01:00?\n * const result = differenceInCalendarDays(\n * new Date(2011, 6, 3, 0, 1),\n * new Date(2011, 6, 2, 23, 59)\n * )\n * //=> 1\n */\nexport function differenceInCalendarDays(laterDate, earlierDate, options) {\n const [laterDate_, earlierDate_] = normalizeDates(\n options?.in,\n laterDate,\n earlierDate,\n );\n\n const laterStartOfDay = startOfDay(laterDate_);\n const earlierStartOfDay = startOfDay(earlierDate_);\n\n const laterTimestamp =\n +laterStartOfDay - getTimezoneOffsetInMilliseconds(laterStartOfDay);\n const earlierTimestamp =\n +earlierStartOfDay - getTimezoneOffsetInMilliseconds(earlierStartOfDay);\n\n // Round the number of days to the nearest integer because the number of\n // milliseconds in a day is not constant (e.g. it's different in the week of\n // the daylight saving time clock shift).\n return Math.round((laterTimestamp - earlierTimestamp) / millisecondsInDay);\n}\n\n// Fallback for modularized imports:\nexport default differenceInCalendarDays;\n", "import { constructFrom } from \"./constructFrom.js\";\nimport { getISOWeekYear } from \"./getISOWeekYear.js\";\nimport { startOfISOWeek } from \"./startOfISOWeek.js\";\n\n/**\n * The {@link startOfISOWeekYear} function options.\n */\n\n/**\n * @name startOfISOWeekYear\n * @category ISO Week-Numbering Year Helpers\n * @summary Return the start of an ISO week-numbering year for the given date.\n *\n * @description\n * Return the start of an ISO week-numbering year,\n * which always starts 3 days before the year's first Thursday.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The start of an ISO week-numbering year\n *\n * @example\n * // The start of an ISO week-numbering year for 2 July 2005:\n * const result = startOfISOWeekYear(new Date(2005, 6, 2))\n * //=> Mon Jan 03 2005 00:00:00\n */\nexport function startOfISOWeekYear(date, options) {\n const year = getISOWeekYear(date, options);\n const fourthOfJanuary = constructFrom(options?.in || date, 0);\n fourthOfJanuary.setFullYear(year, 0, 4);\n fourthOfJanuary.setHours(0, 0, 0, 0);\n return startOfISOWeek(fourthOfJanuary);\n}\n\n// Fallback for modularized imports:\nexport default startOfISOWeekYear;\n", "import { addMonths } from \"./addMonths.js\";\n\n/**\n * The {@link addYears} function options.\n */\n\n/**\n * @name addYears\n * @category Year Helpers\n * @summary Add the specified number of years to the given date.\n *\n * @description\n * Add the specified number of years to the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type.\n *\n * @param date - The date to be changed\n * @param amount - The amount of years to be added.\n * @param options - The options\n *\n * @returns The new date with the years added\n *\n * @example\n * // Add 5 years to 1 September 2014:\n * const result = addYears(new Date(2014, 8, 1), 5)\n * //=> Sun Sep 01 2019 00:00:00\n */\nexport function addYears(date, amount, options) {\n return addMonths(date, amount * 12, options);\n}\n\n// Fallback for modularized imports:\nexport default addYears;\n", "/**\n * @name isDate\n * @category Common Helpers\n * @summary Is the given value a date?\n *\n * @description\n * Returns true if the given value is an instance of Date. The function works for dates transferred across iframes.\n *\n * @param value - The value to check\n *\n * @returns True if the given value is a date\n *\n * @example\n * // For a valid date:\n * const result = isDate(new Date())\n * //=> true\n *\n * @example\n * // For an invalid date:\n * const result = isDate(new Date(NaN))\n * //=> true\n *\n * @example\n * // For some value:\n * const result = isDate('2014-02-31')\n * //=> false\n *\n * @example\n * // For an object:\n * const result = isDate({})\n * //=> false\n */\nexport function isDate(value) {\n return (\n value instanceof Date ||\n (typeof value === \"object\" &&\n Object.prototype.toString.call(value) === \"[object Date]\")\n );\n}\n\n// Fallback for modularized imports:\nexport default isDate;\n", "import { isDate } from \"./isDate.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * @name isValid\n * @category Common Helpers\n * @summary Is the given date valid?\n *\n * @description\n * Returns false if argument is Invalid Date and true otherwise.\n * Argument is converted to Date using `toDate`. See [toDate](https://date-fns.org/docs/toDate)\n * Invalid Date is a Date, whose time value is NaN.\n *\n * Time value of Date: http://es5.github.io/#x15.9.1.1\n *\n * @param date - The date to check\n *\n * @returns The date is valid\n *\n * @example\n * // For the valid date:\n * const result = isValid(new Date(2014, 1, 31))\n * //=> true\n *\n * @example\n * // For the value, convertible into a date:\n * const result = isValid(1393804800000)\n * //=> true\n *\n * @example\n * // For the invalid date:\n * const result = isValid(new Date(''))\n * //=> false\n */\nexport function isValid(date) {\n return !((!isDate(date) && typeof date !== \"number\") || isNaN(+toDate(date)));\n}\n\n// Fallback for modularized imports:\nexport default isValid;\n", "import { toDate } from \"./toDate.js\";\n\n/**\n * The {@link startOfMonth} function options.\n */\n\n/**\n * @name startOfMonth\n * @category Month Helpers\n * @summary Return the start of a month for the given date.\n *\n * @description\n * Return the start of a month for the given date. The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments.\n * Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed,\n * or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The start of a month\n *\n * @example\n * // The start of a month for 2 September 2014 11:55:00:\n * const result = startOfMonth(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Mon Sep 01 2014 00:00:00\n */\nexport function startOfMonth(date, options) {\n const _date = toDate(date, options?.in);\n _date.setDate(1);\n _date.setHours(0, 0, 0, 0);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default startOfMonth;\n", "import { toDate } from \"./toDate.js\";\n\n/**\n * The {@link startOfYear} function options.\n */\n\n/**\n * @name startOfYear\n * @category Year Helpers\n * @summary Return the start of a year for the given date.\n *\n * @description\n * Return the start of a year for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - The options\n *\n * @returns The start of a year\n *\n * @example\n * // The start of a year for 2 September 2014 11:55:00:\n * const result = startOfYear(new Date(2014, 8, 2, 11, 55, 00))\n * //=> Wed Jan 01 2014 00:00:00\n */\nexport function startOfYear(date, options) {\n const date_ = toDate(date, options?.in);\n date_.setFullYear(date_.getFullYear(), 0, 1);\n date_.setHours(0, 0, 0, 0);\n return date_;\n}\n\n// Fallback for modularized imports:\nexport default startOfYear;\n", "const formatDistanceLocale = {\n lessThanXSeconds: {\n one: \"less than a second\",\n other: \"less than {{count}} seconds\",\n },\n\n xSeconds: {\n one: \"1 second\",\n other: \"{{count}} seconds\",\n },\n\n halfAMinute: \"half a minute\",\n\n lessThanXMinutes: {\n one: \"less than a minute\",\n other: \"less than {{count}} minutes\",\n },\n\n xMinutes: {\n one: \"1 minute\",\n other: \"{{count}} minutes\",\n },\n\n aboutXHours: {\n one: \"about 1 hour\",\n other: \"about {{count}} hours\",\n },\n\n xHours: {\n one: \"1 hour\",\n other: \"{{count}} hours\",\n },\n\n xDays: {\n one: \"1 day\",\n other: \"{{count}} days\",\n },\n\n aboutXWeeks: {\n one: \"about 1 week\",\n other: \"about {{count}} weeks\",\n },\n\n xWeeks: {\n one: \"1 week\",\n other: \"{{count}} weeks\",\n },\n\n aboutXMonths: {\n one: \"about 1 month\",\n other: \"about {{count}} months\",\n },\n\n xMonths: {\n one: \"1 month\",\n other: \"{{count}} months\",\n },\n\n aboutXYears: {\n one: \"about 1 year\",\n other: \"about {{count}} years\",\n },\n\n xYears: {\n one: \"1 year\",\n other: \"{{count}} years\",\n },\n\n overXYears: {\n one: \"over 1 year\",\n other: \"over {{count}} years\",\n },\n\n almostXYears: {\n one: \"almost 1 year\",\n other: \"almost {{count}} years\",\n },\n};\n\nexport const formatDistance = (token, count, options) => {\n let result;\n\n const tokenValue = formatDistanceLocale[token];\n if (typeof tokenValue === \"string\") {\n result = tokenValue;\n } else if (count === 1) {\n result = tokenValue.one;\n } else {\n result = tokenValue.other.replace(\"{{count}}\", count.toString());\n }\n\n if (options?.addSuffix) {\n if (options.comparison && options.comparison > 0) {\n return \"in \" + result;\n } else {\n return result + \" ago\";\n }\n }\n\n return result;\n};\n", "export function buildFormatLongFn(args) {\n return (options = {}) => {\n // TODO: Remove String()\n const width = options.width ? String(options.width) : args.defaultWidth;\n const format = args.formats[width] || args.formats[args.defaultWidth];\n return format;\n };\n}\n", "import { buildFormatLongFn } from \"../../_lib/buildFormatLongFn.js\";\n\nconst dateFormats = {\n full: \"EEEE, MMMM do, y\",\n long: \"MMMM do, y\",\n medium: \"MMM d, y\",\n short: \"MM/dd/yyyy\",\n};\n\nconst timeFormats = {\n full: \"h:mm:ss a zzzz\",\n long: \"h:mm:ss a z\",\n medium: \"h:mm:ss a\",\n short: \"h:mm a\",\n};\n\nconst dateTimeFormats = {\n full: \"{{date}} 'at' {{time}}\",\n long: \"{{date}} 'at' {{time}}\",\n medium: \"{{date}}, {{time}}\",\n short: \"{{date}}, {{time}}\",\n};\n\nexport const formatLong = {\n date: buildFormatLongFn({\n formats: dateFormats,\n defaultWidth: \"full\",\n }),\n\n time: buildFormatLongFn({\n formats: timeFormats,\n defaultWidth: \"full\",\n }),\n\n dateTime: buildFormatLongFn({\n formats: dateTimeFormats,\n defaultWidth: \"full\",\n }),\n};\n", "const formatRelativeLocale = {\n lastWeek: \"'last' eeee 'at' p\",\n yesterday: \"'yesterday at' p\",\n today: \"'today at' p\",\n tomorrow: \"'tomorrow at' p\",\n nextWeek: \"eeee 'at' p\",\n other: \"P\",\n};\n\nexport const formatRelative = (token, _date, _baseDate, _options) =>\n formatRelativeLocale[token];\n", "/**\n * The localize function argument callback which allows to convert raw value to\n * the actual type.\n *\n * @param value - The value to convert\n *\n * @returns The converted value\n */\n\n/**\n * The map of localized values for each width.\n */\n\n/**\n * The index type of the locale unit value. It types conversion of units of\n * values that don't start at 0 (i.e. quarters).\n */\n\n/**\n * Converts the unit value to the tuple of values.\n */\n\n/**\n * The tuple of localized era values. The first element represents BC,\n * the second element represents AD.\n */\n\n/**\n * The tuple of localized quarter values. The first element represents Q1.\n */\n\n/**\n * The tuple of localized day values. The first element represents Sunday.\n */\n\n/**\n * The tuple of localized month values. The first element represents January.\n */\n\nexport function buildLocalizeFn(args) {\n return (value, options) => {\n const context = options?.context ? String(options.context) : \"standalone\";\n\n let valuesArray;\n if (context === \"formatting\" && args.formattingValues) {\n const defaultWidth = args.defaultFormattingWidth || args.defaultWidth;\n const width = options?.width ? String(options.width) : defaultWidth;\n\n valuesArray =\n args.formattingValues[width] || args.formattingValues[defaultWidth];\n } else {\n const defaultWidth = args.defaultWidth;\n const width = options?.width ? String(options.width) : args.defaultWidth;\n\n valuesArray = args.values[width] || args.values[defaultWidth];\n }\n const index = args.argumentCallback ? args.argumentCallback(value) : value;\n\n // @ts-expect-error - For some reason TypeScript just don't want to match it, no matter how hard we try. I challenge you to try to remove it!\n return valuesArray[index];\n };\n}\n", "import { buildLocalizeFn } from \"../../_lib/buildLocalizeFn.js\";\n\nconst eraValues = {\n narrow: [\"B\", \"A\"],\n abbreviated: [\"BC\", \"AD\"],\n wide: [\"Before Christ\", \"Anno Domini\"],\n};\n\nconst quarterValues = {\n narrow: [\"1\", \"2\", \"3\", \"4\"],\n abbreviated: [\"Q1\", \"Q2\", \"Q3\", \"Q4\"],\n wide: [\"1st quarter\", \"2nd quarter\", \"3rd quarter\", \"4th quarter\"],\n};\n\n// Note: in English, the names of days of the week and months are capitalized.\n// If you are making a new locale based on this one, check if the same is true for the language you're working on.\n// Generally, formatted dates should look like they are in the middle of a sentence,\n// e.g. in Spanish language the weekdays and months should be in the lowercase.\nconst monthValues = {\n narrow: [\"J\", \"F\", \"M\", \"A\", \"M\", \"J\", \"J\", \"A\", \"S\", \"O\", \"N\", \"D\"],\n abbreviated: [\n \"Jan\",\n \"Feb\",\n \"Mar\",\n \"Apr\",\n \"May\",\n \"Jun\",\n \"Jul\",\n \"Aug\",\n \"Sep\",\n \"Oct\",\n \"Nov\",\n \"Dec\",\n ],\n\n wide: [\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"July\",\n \"August\",\n \"September\",\n \"October\",\n \"November\",\n \"December\",\n ],\n};\n\nconst dayValues = {\n narrow: [\"S\", \"M\", \"T\", \"W\", \"T\", \"F\", \"S\"],\n short: [\"Su\", \"Mo\", \"Tu\", \"We\", \"Th\", \"Fr\", \"Sa\"],\n abbreviated: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n wide: [\n \"Sunday\",\n \"Monday\",\n \"Tuesday\",\n \"Wednesday\",\n \"Thursday\",\n \"Friday\",\n \"Saturday\",\n ],\n};\n\nconst dayPeriodValues = {\n narrow: {\n am: \"a\",\n pm: \"p\",\n midnight: \"mi\",\n noon: \"n\",\n morning: \"morning\",\n afternoon: \"afternoon\",\n evening: \"evening\",\n night: \"night\",\n },\n abbreviated: {\n am: \"AM\",\n pm: \"PM\",\n midnight: \"midnight\",\n noon: \"noon\",\n morning: \"morning\",\n afternoon: \"afternoon\",\n evening: \"evening\",\n night: \"night\",\n },\n wide: {\n am: \"a.m.\",\n pm: \"p.m.\",\n midnight: \"midnight\",\n noon: \"noon\",\n morning: \"morning\",\n afternoon: \"afternoon\",\n evening: \"evening\",\n night: \"night\",\n },\n};\n\nconst formattingDayPeriodValues = {\n narrow: {\n am: \"a\",\n pm: \"p\",\n midnight: \"mi\",\n noon: \"n\",\n morning: \"in the morning\",\n afternoon: \"in the afternoon\",\n evening: \"in the evening\",\n night: \"at night\",\n },\n abbreviated: {\n am: \"AM\",\n pm: \"PM\",\n midnight: \"midnight\",\n noon: \"noon\",\n morning: \"in the morning\",\n afternoon: \"in the afternoon\",\n evening: \"in the evening\",\n night: \"at night\",\n },\n wide: {\n am: \"a.m.\",\n pm: \"p.m.\",\n midnight: \"midnight\",\n noon: \"noon\",\n morning: \"in the morning\",\n afternoon: \"in the afternoon\",\n evening: \"in the evening\",\n night: \"at night\",\n },\n};\n\nconst ordinalNumber = (dirtyNumber, _options) => {\n const number = Number(dirtyNumber);\n\n // If ordinal numbers depend on context, for example,\n // if they are different for different grammatical genders,\n // use `options.unit`.\n //\n // `unit` can be 'year', 'quarter', 'month', 'week', 'date', 'dayOfYear',\n // 'day', 'hour', 'minute', 'second'.\n\n const rem100 = number % 100;\n if (rem100 > 20 || rem100 < 10) {\n switch (rem100 % 10) {\n case 1:\n return number + \"st\";\n case 2:\n return number + \"nd\";\n case 3:\n return number + \"rd\";\n }\n }\n return number + \"th\";\n};\n\nexport const localize = {\n ordinalNumber,\n\n era: buildLocalizeFn({\n values: eraValues,\n defaultWidth: \"wide\",\n }),\n\n quarter: buildLocalizeFn({\n values: quarterValues,\n defaultWidth: \"wide\",\n argumentCallback: (quarter) => quarter - 1,\n }),\n\n month: buildLocalizeFn({\n values: monthValues,\n defaultWidth: \"wide\",\n }),\n\n day: buildLocalizeFn({\n values: dayValues,\n defaultWidth: \"wide\",\n }),\n\n dayPeriod: buildLocalizeFn({\n values: dayPeriodValues,\n defaultWidth: \"wide\",\n formattingValues: formattingDayPeriodValues,\n defaultFormattingWidth: \"wide\",\n }),\n};\n", "export function buildMatchFn(args) {\n return (string, options = {}) => {\n const width = options.width;\n\n const matchPattern =\n (width && args.matchPatterns[width]) ||\n args.matchPatterns[args.defaultMatchWidth];\n const matchResult = string.match(matchPattern);\n\n if (!matchResult) {\n return null;\n }\n const matchedString = matchResult[0];\n\n const parsePatterns =\n (width && args.parsePatterns[width]) ||\n args.parsePatterns[args.defaultParseWidth];\n\n const key = Array.isArray(parsePatterns)\n ? findIndex(parsePatterns, (pattern) => pattern.test(matchedString))\n : // [TODO] -- I challenge you to fix the type\n findKey(parsePatterns, (pattern) => pattern.test(matchedString));\n\n let value;\n\n value = args.valueCallback ? args.valueCallback(key) : key;\n value = options.valueCallback\n ? // [TODO] -- I challenge you to fix the type\n options.valueCallback(value)\n : value;\n\n const rest = string.slice(matchedString.length);\n\n return { value, rest };\n };\n}\n\nfunction findKey(object, predicate) {\n for (const key in object) {\n if (\n Object.prototype.hasOwnProperty.call(object, key) &&\n predicate(object[key])\n ) {\n return key;\n }\n }\n return undefined;\n}\n\nfunction findIndex(array, predicate) {\n for (let key = 0; key < array.length; key++) {\n if (predicate(array[key])) {\n return key;\n }\n }\n return undefined;\n}\n", "export function buildMatchPatternFn(args) {\n return (string, options = {}) => {\n const matchResult = string.match(args.matchPattern);\n if (!matchResult) return null;\n const matchedString = matchResult[0];\n\n const parseResult = string.match(args.parsePattern);\n if (!parseResult) return null;\n let value = args.valueCallback\n ? args.valueCallback(parseResult[0])\n : parseResult[0];\n\n // [TODO] I challenge you to fix the type\n value = options.valueCallback ? options.valueCallback(value) : value;\n\n const rest = string.slice(matchedString.length);\n\n return { value, rest };\n };\n}\n", "import { buildMatchFn } from \"../../_lib/buildMatchFn.js\";\nimport { buildMatchPatternFn } from \"../../_lib/buildMatchPatternFn.js\";\n\nconst matchOrdinalNumberPattern = /^(\\d+)(th|st|nd|rd)?/i;\nconst parseOrdinalNumberPattern = /\\d+/i;\n\nconst matchEraPatterns = {\n narrow: /^(b|a)/i,\n abbreviated: /^(b\\.?\\s?c\\.?|b\\.?\\s?c\\.?\\s?e\\.?|a\\.?\\s?d\\.?|c\\.?\\s?e\\.?)/i,\n wide: /^(before christ|before common era|anno domini|common era)/i,\n};\nconst parseEraPatterns = {\n any: [/^b/i, /^(a|c)/i],\n};\n\nconst matchQuarterPatterns = {\n narrow: /^[1234]/i,\n abbreviated: /^q[1234]/i,\n wide: /^[1234](th|st|nd|rd)? quarter/i,\n};\nconst parseQuarterPatterns = {\n any: [/1/i, /2/i, /3/i, /4/i],\n};\n\nconst matchMonthPatterns = {\n narrow: /^[jfmasond]/i,\n abbreviated: /^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,\n wide: /^(january|february|march|april|may|june|july|august|september|october|november|december)/i,\n};\nconst parseMonthPatterns = {\n narrow: [\n /^j/i,\n /^f/i,\n /^m/i,\n /^a/i,\n /^m/i,\n /^j/i,\n /^j/i,\n /^a/i,\n /^s/i,\n /^o/i,\n /^n/i,\n /^d/i,\n ],\n\n any: [\n /^ja/i,\n /^f/i,\n /^mar/i,\n /^ap/i,\n /^may/i,\n /^jun/i,\n /^jul/i,\n /^au/i,\n /^s/i,\n /^o/i,\n /^n/i,\n /^d/i,\n ],\n};\n\nconst matchDayPatterns = {\n narrow: /^[smtwf]/i,\n short: /^(su|mo|tu|we|th|fr|sa)/i,\n abbreviated: /^(sun|mon|tue|wed|thu|fri|sat)/i,\n wide: /^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i,\n};\nconst parseDayPatterns = {\n narrow: [/^s/i, /^m/i, /^t/i, /^w/i, /^t/i, /^f/i, /^s/i],\n any: [/^su/i, /^m/i, /^tu/i, /^w/i, /^th/i, /^f/i, /^sa/i],\n};\n\nconst matchDayPeriodPatterns = {\n narrow: /^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,\n any: /^([ap]\\.?\\s?m\\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i,\n};\nconst parseDayPeriodPatterns = {\n any: {\n am: /^a/i,\n pm: /^p/i,\n midnight: /^mi/i,\n noon: /^no/i,\n morning: /morning/i,\n afternoon: /afternoon/i,\n evening: /evening/i,\n night: /night/i,\n },\n};\n\nexport const match = {\n ordinalNumber: buildMatchPatternFn({\n matchPattern: matchOrdinalNumberPattern,\n parsePattern: parseOrdinalNumberPattern,\n valueCallback: (value) => parseInt(value, 10),\n }),\n\n era: buildMatchFn({\n matchPatterns: matchEraPatterns,\n defaultMatchWidth: \"wide\",\n parsePatterns: parseEraPatterns,\n defaultParseWidth: \"any\",\n }),\n\n quarter: buildMatchFn({\n matchPatterns: matchQuarterPatterns,\n defaultMatchWidth: \"wide\",\n parsePatterns: parseQuarterPatterns,\n defaultParseWidth: \"any\",\n valueCallback: (index) => index + 1,\n }),\n\n month: buildMatchFn({\n matchPatterns: matchMonthPatterns,\n defaultMatchWidth: \"wide\",\n parsePatterns: parseMonthPatterns,\n defaultParseWidth: \"any\",\n }),\n\n day: buildMatchFn({\n matchPatterns: matchDayPatterns,\n defaultMatchWidth: \"wide\",\n parsePatterns: parseDayPatterns,\n defaultParseWidth: \"any\",\n }),\n\n dayPeriod: buildMatchFn({\n matchPatterns: matchDayPeriodPatterns,\n defaultMatchWidth: \"any\",\n parsePatterns: parseDayPeriodPatterns,\n defaultParseWidth: \"any\",\n }),\n};\n", "import { formatDistance } from \"./en-US/_lib/formatDistance.js\";\nimport { formatLong } from \"./en-US/_lib/formatLong.js\";\nimport { formatRelative } from \"./en-US/_lib/formatRelative.js\";\nimport { localize } from \"./en-US/_lib/localize.js\";\nimport { match } from \"./en-US/_lib/match.js\";\n\n/**\n * @category Locales\n * @summary English locale (United States).\n * @language English\n * @iso-639-2 eng\n * @author Sasha Koss [@kossnocorp](https://github.com/kossnocorp)\n * @author Lesha Koss [@leshakoss](https://github.com/leshakoss)\n */\nexport const enUS = {\n code: \"en-US\",\n formatDistance: formatDistance,\n formatLong: formatLong,\n formatRelative: formatRelative,\n localize: localize,\n match: match,\n options: {\n weekStartsOn: 0 /* Sunday */,\n firstWeekContainsDate: 1,\n },\n};\n\n// Fallback for modularized imports:\nexport default enUS;\n", "import { differenceInCalendarDays } from \"./differenceInCalendarDays.js\";\nimport { startOfYear } from \"./startOfYear.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link getDayOfYear} function options.\n */\n\n/**\n * @name getDayOfYear\n * @category Day Helpers\n * @summary Get the day of the year of the given date.\n *\n * @description\n * Get the day of the year of the given date.\n *\n * @param date - The given date\n * @param options - The options\n *\n * @returns The day of year\n *\n * @example\n * // Which day of the year is 2 July 2014?\n * const result = getDayOfYear(new Date(2014, 6, 2))\n * //=> 183\n */\nexport function getDayOfYear(date, options) {\n const _date = toDate(date, options?.in);\n const diff = differenceInCalendarDays(_date, startOfYear(_date));\n const dayOfYear = diff + 1;\n return dayOfYear;\n}\n\n// Fallback for modularized imports:\nexport default getDayOfYear;\n", "import { millisecondsInWeek } from \"./constants.js\";\nimport { startOfISOWeek } from \"./startOfISOWeek.js\";\nimport { startOfISOWeekYear } from \"./startOfISOWeekYear.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link getISOWeek} function options.\n */\n\n/**\n * @name getISOWeek\n * @category ISO Week Helpers\n * @summary Get the ISO week of the given date.\n *\n * @description\n * Get the ISO week of the given date.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param date - The given date\n * @param options - The options\n *\n * @returns The ISO week\n *\n * @example\n * // Which week of the ISO-week numbering year is 2 January 2005?\n * const result = getISOWeek(new Date(2005, 0, 2))\n * //=> 53\n */\nexport function getISOWeek(date, options) {\n const _date = toDate(date, options?.in);\n const diff = +startOfISOWeek(_date) - +startOfISOWeekYear(_date);\n\n // Round the number of weeks to the nearest integer because the number of\n // milliseconds in a week is not constant (e.g. it's different in the week of\n // the daylight saving time clock shift).\n return Math.round(diff / millisecondsInWeek) + 1;\n}\n\n// Fallback for modularized imports:\nexport default getISOWeek;\n", "import { getDefaultOptions } from \"./_lib/defaultOptions.js\";\nimport { constructFrom } from \"./constructFrom.js\";\nimport { startOfWeek } from \"./startOfWeek.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link getWeekYear} function options.\n */\n\n/**\n * @name getWeekYear\n * @category Week-Numbering Year Helpers\n * @summary Get the local week-numbering year of the given date.\n *\n * @description\n * Get the local week-numbering year of the given date.\n * The exact calculation depends on the values of\n * `options.weekStartsOn` (which is the index of the first day of the week)\n * and `options.firstWeekContainsDate` (which is the day of January, which is always in\n * the first week of the week-numbering year)\n *\n * Week numbering: https://en.wikipedia.org/wiki/Week#The_ISO_week_date_system\n *\n * @param date - The given date\n * @param options - An object with options.\n *\n * @returns The local week-numbering year\n *\n * @example\n * // Which week numbering year is 26 December 2004 with the default settings?\n * const result = getWeekYear(new Date(2004, 11, 26))\n * //=> 2005\n *\n * @example\n * // Which week numbering year is 26 December 2004 if week starts on Saturday?\n * const result = getWeekYear(new Date(2004, 11, 26), { weekStartsOn: 6 })\n * //=> 2004\n *\n * @example\n * // Which week numbering year is 26 December 2004 if the first week contains 4 January?\n * const result = getWeekYear(new Date(2004, 11, 26), { firstWeekContainsDate: 4 })\n * //=> 2004\n */\nexport function getWeekYear(date, options) {\n const _date = toDate(date, options?.in);\n const year = _date.getFullYear();\n\n const defaultOptions = getDefaultOptions();\n const firstWeekContainsDate =\n options?.firstWeekContainsDate ??\n options?.locale?.options?.firstWeekContainsDate ??\n defaultOptions.firstWeekContainsDate ??\n defaultOptions.locale?.options?.firstWeekContainsDate ??\n 1;\n\n const firstWeekOfNextYear = constructFrom(options?.in || date, 0);\n firstWeekOfNextYear.setFullYear(year + 1, 0, firstWeekContainsDate);\n firstWeekOfNextYear.setHours(0, 0, 0, 0);\n const startOfNextYear = startOfWeek(firstWeekOfNextYear, options);\n\n const firstWeekOfThisYear = constructFrom(options?.in || date, 0);\n firstWeekOfThisYear.setFullYear(year, 0, firstWeekContainsDate);\n firstWeekOfThisYear.setHours(0, 0, 0, 0);\n const startOfThisYear = startOfWeek(firstWeekOfThisYear, options);\n\n if (+_date >= +startOfNextYear) {\n return year + 1;\n } else if (+_date >= +startOfThisYear) {\n return year;\n } else {\n return year - 1;\n }\n}\n\n// Fallback for modularized imports:\nexport default getWeekYear;\n", "import { getDefaultOptions } from \"./_lib/defaultOptions.js\";\nimport { constructFrom } from \"./constructFrom.js\";\nimport { getWeekYear } from \"./getWeekYear.js\";\nimport { startOfWeek } from \"./startOfWeek.js\";\n\n/**\n * The {@link startOfWeekYear} function options.\n */\n\n/**\n * @name startOfWeekYear\n * @category Week-Numbering Year Helpers\n * @summary Return the start of a local week-numbering year for the given date.\n *\n * @description\n * Return the start of a local week-numbering year.\n * The exact calculation depends on the values of\n * `options.weekStartsOn` (which is the index of the first day of the week)\n * and `options.firstWeekContainsDate` (which is the day of January, which is always in\n * the first week of the week-numbering year)\n *\n * Week numbering: https://en.wikipedia.org/wiki/Week#The_ISO_week_date_system\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type.\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The start of a week-numbering year\n *\n * @example\n * // The start of an a week-numbering year for 2 July 2005 with default settings:\n * const result = startOfWeekYear(new Date(2005, 6, 2))\n * //=> Sun Dec 26 2004 00:00:00\n *\n * @example\n * // The start of a week-numbering year for 2 July 2005\n * // if Monday is the first day of week\n * // and 4 January is always in the first week of the year:\n * const result = startOfWeekYear(new Date(2005, 6, 2), {\n * weekStartsOn: 1,\n * firstWeekContainsDate: 4\n * })\n * //=> Mon Jan 03 2005 00:00:00\n */\nexport function startOfWeekYear(date, options) {\n const defaultOptions = getDefaultOptions();\n const firstWeekContainsDate =\n options?.firstWeekContainsDate ??\n options?.locale?.options?.firstWeekContainsDate ??\n defaultOptions.firstWeekContainsDate ??\n defaultOptions.locale?.options?.firstWeekContainsDate ??\n 1;\n\n const year = getWeekYear(date, options);\n const firstWeek = constructFrom(options?.in || date, 0);\n firstWeek.setFullYear(year, 0, firstWeekContainsDate);\n firstWeek.setHours(0, 0, 0, 0);\n const _date = startOfWeek(firstWeek, options);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default startOfWeekYear;\n", "import { millisecondsInWeek } from \"./constants.js\";\nimport { startOfWeek } from \"./startOfWeek.js\";\nimport { startOfWeekYear } from \"./startOfWeekYear.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link getWeek} function options.\n */\n\n/**\n * @name getWeek\n * @category Week Helpers\n * @summary Get the local week index of the given date.\n *\n * @description\n * Get the local week index of the given date.\n * The exact calculation depends on the values of\n * `options.weekStartsOn` (which is the index of the first day of the week)\n * and `options.firstWeekContainsDate` (which is the day of January, which is always in\n * the first week of the week-numbering year)\n *\n * Week numbering: https://en.wikipedia.org/wiki/Week#The_ISO_week_date_system\n *\n * @param date - The given date\n * @param options - An object with options\n *\n * @returns The week\n *\n * @example\n * // Which week of the local week numbering year is 2 January 2005 with default options?\n * const result = getWeek(new Date(2005, 0, 2))\n * //=> 2\n *\n * @example\n * // Which week of the local week numbering year is 2 January 2005,\n * // if Monday is the first day of the week,\n * // and the first week of the year always contains 4 January?\n * const result = getWeek(new Date(2005, 0, 2), {\n * weekStartsOn: 1,\n * firstWeekContainsDate: 4\n * })\n * //=> 53\n */\nexport function getWeek(date, options) {\n const _date = toDate(date, options?.in);\n const diff = +startOfWeek(_date, options) - +startOfWeekYear(_date, options);\n\n // Round the number of weeks to the nearest integer because the number of\n // milliseconds in a week is not constant (e.g. it's different in the week of\n // the daylight saving time clock shift).\n return Math.round(diff / millisecondsInWeek) + 1;\n}\n\n// Fallback for modularized imports:\nexport default getWeek;\n", "export function addLeadingZeros(number, targetLength) {\n const sign = number < 0 ? \"-\" : \"\";\n const output = Math.abs(number).toString().padStart(targetLength, \"0\");\n return sign + output;\n}\n", "import { addLeadingZeros } from \"../addLeadingZeros.js\";\n\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | |\n * | d | Day of month | D | |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | m | Minute | M | Month |\n * | s | Second | S | Fraction of second |\n * | y | Year (abs) | Y | |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n */\n\nexport const lightFormatters = {\n // Year\n y(date, token) {\n // From http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_tokens\n // | Year | y | yy | yyy | yyyy | yyyyy |\n // |----------|-------|----|-------|-------|-------|\n // | AD 1 | 1 | 01 | 001 | 0001 | 00001 |\n // | AD 12 | 12 | 12 | 012 | 0012 | 00012 |\n // | AD 123 | 123 | 23 | 123 | 0123 | 00123 |\n // | AD 1234 | 1234 | 34 | 1234 | 1234 | 01234 |\n // | AD 12345 | 12345 | 45 | 12345 | 12345 | 12345 |\n\n const signedYear = date.getFullYear();\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n const year = signedYear > 0 ? signedYear : 1 - signedYear;\n return addLeadingZeros(token === \"yy\" ? year % 100 : year, token.length);\n },\n\n // Month\n M(date, token) {\n const month = date.getMonth();\n return token === \"M\" ? String(month + 1) : addLeadingZeros(month + 1, 2);\n },\n\n // Day of the month\n d(date, token) {\n return addLeadingZeros(date.getDate(), token.length);\n },\n\n // AM or PM\n a(date, token) {\n const dayPeriodEnumValue = date.getHours() / 12 >= 1 ? \"pm\" : \"am\";\n\n switch (token) {\n case \"a\":\n case \"aa\":\n return dayPeriodEnumValue.toUpperCase();\n case \"aaa\":\n return dayPeriodEnumValue;\n case \"aaaaa\":\n return dayPeriodEnumValue[0];\n case \"aaaa\":\n default:\n return dayPeriodEnumValue === \"am\" ? \"a.m.\" : \"p.m.\";\n }\n },\n\n // Hour [1-12]\n h(date, token) {\n return addLeadingZeros(date.getHours() % 12 || 12, token.length);\n },\n\n // Hour [0-23]\n H(date, token) {\n return addLeadingZeros(date.getHours(), token.length);\n },\n\n // Minute\n m(date, token) {\n return addLeadingZeros(date.getMinutes(), token.length);\n },\n\n // Second\n s(date, token) {\n return addLeadingZeros(date.getSeconds(), token.length);\n },\n\n // Fraction of second\n S(date, token) {\n const numberOfDigits = token.length;\n const milliseconds = date.getMilliseconds();\n const fractionalSeconds = Math.trunc(\n milliseconds * Math.pow(10, numberOfDigits - 3),\n );\n return addLeadingZeros(fractionalSeconds, token.length);\n },\n};\n", "import { getDayOfYear } from \"../../getDayOfYear.js\";\nimport { getISOWeek } from \"../../getISOWeek.js\";\nimport { getISOWeekYear } from \"../../getISOWeekYear.js\";\nimport { getWeek } from \"../../getWeek.js\";\nimport { getWeekYear } from \"../../getWeekYear.js\";\n\nimport { addLeadingZeros } from \"../addLeadingZeros.js\";\nimport { lightFormatters } from \"./lightFormatters.js\";\n\nconst dayPeriodEnum = {\n am: \"am\",\n pm: \"pm\",\n midnight: \"midnight\",\n noon: \"noon\",\n morning: \"morning\",\n afternoon: \"afternoon\",\n evening: \"evening\",\n night: \"night\",\n};\n\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | Milliseconds in day |\n * | b | AM, PM, noon, midnight | B | Flexible day period |\n * | c | Stand-alone local day of week | C* | Localized hour w/ day period |\n * | d | Day of month | D | Day of year |\n * | e | Local day of week | E | Day of week |\n * | f | | F* | Day of week in month |\n * | g* | Modified Julian day | G | Era |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | i! | ISO day of week | I! | ISO week of year |\n * | j* | Localized hour w/ day period | J* | Localized hour w/o day period |\n * | k | Hour [1-24] | K | Hour [0-11] |\n * | l* | (deprecated) | L | Stand-alone month |\n * | m | Minute | M | Month |\n * | n | | N | |\n * | o! | Ordinal number modifier | O | Timezone (GMT) |\n * | p! | Long localized time | P! | Long localized date |\n * | q | Stand-alone quarter | Q | Quarter |\n * | r* | Related Gregorian year | R! | ISO week-numbering year |\n * | s | Second | S | Fraction of second |\n * | t! | Seconds timestamp | T! | Milliseconds timestamp |\n * | u | Extended year | U* | Cyclic year |\n * | v* | Timezone (generic non-locat.) | V* | Timezone (location) |\n * | w | Local week of year | W* | Week of month |\n * | x | Timezone (ISO-8601 w/o Z) | X | Timezone (ISO-8601) |\n * | y | Year (abs) | Y | Local week-numbering year |\n * | z | Timezone (specific non-locat.) | Z* | Timezone (aliases) |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n *\n * Letters marked by ! are non-standard, but implemented by date-fns:\n * - `o` modifies the previous token to turn it into an ordinal (see `format` docs)\n * - `i` is ISO day of week. For `i` and `ii` is returns numeric ISO week days,\n * i.e. 7 for Sunday, 1 for Monday, etc.\n * - `I` is ISO week of year, as opposed to `w` which is local week of year.\n * - `R` is ISO week-numbering year, as opposed to `Y` which is local week-numbering year.\n * `R` is supposed to be used in conjunction with `I` and `i`\n * for universal ISO week-numbering date, whereas\n * `Y` is supposed to be used in conjunction with `w` and `e`\n * for week-numbering date specific to the locale.\n * - `P` is long localized date format\n * - `p` is long localized time format\n */\n\nexport const formatters = {\n // Era\n G: function (date, token, localize) {\n const era = date.getFullYear() > 0 ? 1 : 0;\n switch (token) {\n // AD, BC\n case \"G\":\n case \"GG\":\n case \"GGG\":\n return localize.era(era, { width: \"abbreviated\" });\n // A, B\n case \"GGGGG\":\n return localize.era(era, { width: \"narrow\" });\n // Anno Domini, Before Christ\n case \"GGGG\":\n default:\n return localize.era(era, { width: \"wide\" });\n }\n },\n\n // Year\n y: function (date, token, localize) {\n // Ordinal number\n if (token === \"yo\") {\n const signedYear = date.getFullYear();\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n const year = signedYear > 0 ? signedYear : 1 - signedYear;\n return localize.ordinalNumber(year, { unit: \"year\" });\n }\n\n return lightFormatters.y(date, token);\n },\n\n // Local week-numbering year\n Y: function (date, token, localize, options) {\n const signedWeekYear = getWeekYear(date, options);\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n const weekYear = signedWeekYear > 0 ? signedWeekYear : 1 - signedWeekYear;\n\n // Two digit year\n if (token === \"YY\") {\n const twoDigitYear = weekYear % 100;\n return addLeadingZeros(twoDigitYear, 2);\n }\n\n // Ordinal number\n if (token === \"Yo\") {\n return localize.ordinalNumber(weekYear, { unit: \"year\" });\n }\n\n // Padding\n return addLeadingZeros(weekYear, token.length);\n },\n\n // ISO week-numbering year\n R: function (date, token) {\n const isoWeekYear = getISOWeekYear(date);\n\n // Padding\n return addLeadingZeros(isoWeekYear, token.length);\n },\n\n // Extended year. This is a single number designating the year of this calendar system.\n // The main difference between `y` and `u` localizers are B.C. years:\n // | Year | `y` | `u` |\n // |------|-----|-----|\n // | AC 1 | 1 | 1 |\n // | BC 1 | 1 | 0 |\n // | BC 2 | 2 | -1 |\n // Also `yy` always returns the last two digits of a year,\n // while `uu` pads single digit years to 2 characters and returns other years unchanged.\n u: function (date, token) {\n const year = date.getFullYear();\n return addLeadingZeros(year, token.length);\n },\n\n // Quarter\n Q: function (date, token, localize) {\n const quarter = Math.ceil((date.getMonth() + 1) / 3);\n switch (token) {\n // 1, 2, 3, 4\n case \"Q\":\n return String(quarter);\n // 01, 02, 03, 04\n case \"QQ\":\n return addLeadingZeros(quarter, 2);\n // 1st, 2nd, 3rd, 4th\n case \"Qo\":\n return localize.ordinalNumber(quarter, { unit: \"quarter\" });\n // Q1, Q2, Q3, Q4\n case \"QQQ\":\n return localize.quarter(quarter, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case \"QQQQQ\":\n return localize.quarter(quarter, {\n width: \"narrow\",\n context: \"formatting\",\n });\n // 1st quarter, 2nd quarter, ...\n case \"QQQQ\":\n default:\n return localize.quarter(quarter, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // Stand-alone quarter\n q: function (date, token, localize) {\n const quarter = Math.ceil((date.getMonth() + 1) / 3);\n switch (token) {\n // 1, 2, 3, 4\n case \"q\":\n return String(quarter);\n // 01, 02, 03, 04\n case \"qq\":\n return addLeadingZeros(quarter, 2);\n // 1st, 2nd, 3rd, 4th\n case \"qo\":\n return localize.ordinalNumber(quarter, { unit: \"quarter\" });\n // Q1, Q2, Q3, Q4\n case \"qqq\":\n return localize.quarter(quarter, {\n width: \"abbreviated\",\n context: \"standalone\",\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case \"qqqqq\":\n return localize.quarter(quarter, {\n width: \"narrow\",\n context: \"standalone\",\n });\n // 1st quarter, 2nd quarter, ...\n case \"qqqq\":\n default:\n return localize.quarter(quarter, {\n width: \"wide\",\n context: \"standalone\",\n });\n }\n },\n\n // Month\n M: function (date, token, localize) {\n const month = date.getMonth();\n switch (token) {\n case \"M\":\n case \"MM\":\n return lightFormatters.M(date, token);\n // 1st, 2nd, ..., 12th\n case \"Mo\":\n return localize.ordinalNumber(month + 1, { unit: \"month\" });\n // Jan, Feb, ..., Dec\n case \"MMM\":\n return localize.month(month, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n // J, F, ..., D\n case \"MMMMM\":\n return localize.month(month, {\n width: \"narrow\",\n context: \"formatting\",\n });\n // January, February, ..., December\n case \"MMMM\":\n default:\n return localize.month(month, { width: \"wide\", context: \"formatting\" });\n }\n },\n\n // Stand-alone month\n L: function (date, token, localize) {\n const month = date.getMonth();\n switch (token) {\n // 1, 2, ..., 12\n case \"L\":\n return String(month + 1);\n // 01, 02, ..., 12\n case \"LL\":\n return addLeadingZeros(month + 1, 2);\n // 1st, 2nd, ..., 12th\n case \"Lo\":\n return localize.ordinalNumber(month + 1, { unit: \"month\" });\n // Jan, Feb, ..., Dec\n case \"LLL\":\n return localize.month(month, {\n width: \"abbreviated\",\n context: \"standalone\",\n });\n // J, F, ..., D\n case \"LLLLL\":\n return localize.month(month, {\n width: \"narrow\",\n context: \"standalone\",\n });\n // January, February, ..., December\n case \"LLLL\":\n default:\n return localize.month(month, { width: \"wide\", context: \"standalone\" });\n }\n },\n\n // Local week of year\n w: function (date, token, localize, options) {\n const week = getWeek(date, options);\n\n if (token === \"wo\") {\n return localize.ordinalNumber(week, { unit: \"week\" });\n }\n\n return addLeadingZeros(week, token.length);\n },\n\n // ISO week of year\n I: function (date, token, localize) {\n const isoWeek = getISOWeek(date);\n\n if (token === \"Io\") {\n return localize.ordinalNumber(isoWeek, { unit: \"week\" });\n }\n\n return addLeadingZeros(isoWeek, token.length);\n },\n\n // Day of the month\n d: function (date, token, localize) {\n if (token === \"do\") {\n return localize.ordinalNumber(date.getDate(), { unit: \"date\" });\n }\n\n return lightFormatters.d(date, token);\n },\n\n // Day of year\n D: function (date, token, localize) {\n const dayOfYear = getDayOfYear(date);\n\n if (token === \"Do\") {\n return localize.ordinalNumber(dayOfYear, { unit: \"dayOfYear\" });\n }\n\n return addLeadingZeros(dayOfYear, token.length);\n },\n\n // Day of week\n E: function (date, token, localize) {\n const dayOfWeek = date.getDay();\n switch (token) {\n // Tue\n case \"E\":\n case \"EE\":\n case \"EEE\":\n return localize.day(dayOfWeek, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n // T\n case \"EEEEE\":\n return localize.day(dayOfWeek, {\n width: \"narrow\",\n context: \"formatting\",\n });\n // Tu\n case \"EEEEEE\":\n return localize.day(dayOfWeek, {\n width: \"short\",\n context: \"formatting\",\n });\n // Tuesday\n case \"EEEE\":\n default:\n return localize.day(dayOfWeek, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // Local day of week\n e: function (date, token, localize, options) {\n const dayOfWeek = date.getDay();\n const localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n switch (token) {\n // Numerical value (Nth day of week with current locale or weekStartsOn)\n case \"e\":\n return String(localDayOfWeek);\n // Padded numerical value\n case \"ee\":\n return addLeadingZeros(localDayOfWeek, 2);\n // 1st, 2nd, ..., 7th\n case \"eo\":\n return localize.ordinalNumber(localDayOfWeek, { unit: \"day\" });\n case \"eee\":\n return localize.day(dayOfWeek, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n // T\n case \"eeeee\":\n return localize.day(dayOfWeek, {\n width: \"narrow\",\n context: \"formatting\",\n });\n // Tu\n case \"eeeeee\":\n return localize.day(dayOfWeek, {\n width: \"short\",\n context: \"formatting\",\n });\n // Tuesday\n case \"eeee\":\n default:\n return localize.day(dayOfWeek, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // Stand-alone local day of week\n c: function (date, token, localize, options) {\n const dayOfWeek = date.getDay();\n const localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n switch (token) {\n // Numerical value (same as in `e`)\n case \"c\":\n return String(localDayOfWeek);\n // Padded numerical value\n case \"cc\":\n return addLeadingZeros(localDayOfWeek, token.length);\n // 1st, 2nd, ..., 7th\n case \"co\":\n return localize.ordinalNumber(localDayOfWeek, { unit: \"day\" });\n case \"ccc\":\n return localize.day(dayOfWeek, {\n width: \"abbreviated\",\n context: \"standalone\",\n });\n // T\n case \"ccccc\":\n return localize.day(dayOfWeek, {\n width: \"narrow\",\n context: \"standalone\",\n });\n // Tu\n case \"cccccc\":\n return localize.day(dayOfWeek, {\n width: \"short\",\n context: \"standalone\",\n });\n // Tuesday\n case \"cccc\":\n default:\n return localize.day(dayOfWeek, {\n width: \"wide\",\n context: \"standalone\",\n });\n }\n },\n\n // ISO day of week\n i: function (date, token, localize) {\n const dayOfWeek = date.getDay();\n const isoDayOfWeek = dayOfWeek === 0 ? 7 : dayOfWeek;\n switch (token) {\n // 2\n case \"i\":\n return String(isoDayOfWeek);\n // 02\n case \"ii\":\n return addLeadingZeros(isoDayOfWeek, token.length);\n // 2nd\n case \"io\":\n return localize.ordinalNumber(isoDayOfWeek, { unit: \"day\" });\n // Tue\n case \"iii\":\n return localize.day(dayOfWeek, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n // T\n case \"iiiii\":\n return localize.day(dayOfWeek, {\n width: \"narrow\",\n context: \"formatting\",\n });\n // Tu\n case \"iiiiii\":\n return localize.day(dayOfWeek, {\n width: \"short\",\n context: \"formatting\",\n });\n // Tuesday\n case \"iiii\":\n default:\n return localize.day(dayOfWeek, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // AM or PM\n a: function (date, token, localize) {\n const hours = date.getHours();\n const dayPeriodEnumValue = hours / 12 >= 1 ? \"pm\" : \"am\";\n\n switch (token) {\n case \"a\":\n case \"aa\":\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n case \"aaa\":\n return localize\n .dayPeriod(dayPeriodEnumValue, {\n width: \"abbreviated\",\n context: \"formatting\",\n })\n .toLowerCase();\n case \"aaaaa\":\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"narrow\",\n context: \"formatting\",\n });\n case \"aaaa\":\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // AM, PM, midnight, noon\n b: function (date, token, localize) {\n const hours = date.getHours();\n let dayPeriodEnumValue;\n if (hours === 12) {\n dayPeriodEnumValue = dayPeriodEnum.noon;\n } else if (hours === 0) {\n dayPeriodEnumValue = dayPeriodEnum.midnight;\n } else {\n dayPeriodEnumValue = hours / 12 >= 1 ? \"pm\" : \"am\";\n }\n\n switch (token) {\n case \"b\":\n case \"bb\":\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n case \"bbb\":\n return localize\n .dayPeriod(dayPeriodEnumValue, {\n width: \"abbreviated\",\n context: \"formatting\",\n })\n .toLowerCase();\n case \"bbbbb\":\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"narrow\",\n context: \"formatting\",\n });\n case \"bbbb\":\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // in the morning, in the afternoon, in the evening, at night\n B: function (date, token, localize) {\n const hours = date.getHours();\n let dayPeriodEnumValue;\n if (hours >= 17) {\n dayPeriodEnumValue = dayPeriodEnum.evening;\n } else if (hours >= 12) {\n dayPeriodEnumValue = dayPeriodEnum.afternoon;\n } else if (hours >= 4) {\n dayPeriodEnumValue = dayPeriodEnum.morning;\n } else {\n dayPeriodEnumValue = dayPeriodEnum.night;\n }\n\n switch (token) {\n case \"B\":\n case \"BB\":\n case \"BBB\":\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n case \"BBBBB\":\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"narrow\",\n context: \"formatting\",\n });\n case \"BBBB\":\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // Hour [1-12]\n h: function (date, token, localize) {\n if (token === \"ho\") {\n let hours = date.getHours() % 12;\n if (hours === 0) hours = 12;\n return localize.ordinalNumber(hours, { unit: \"hour\" });\n }\n\n return lightFormatters.h(date, token);\n },\n\n // Hour [0-23]\n H: function (date, token, localize) {\n if (token === \"Ho\") {\n return localize.ordinalNumber(date.getHours(), { unit: \"hour\" });\n }\n\n return lightFormatters.H(date, token);\n },\n\n // Hour [0-11]\n K: function (date, token, localize) {\n const hours = date.getHours() % 12;\n\n if (token === \"Ko\") {\n return localize.ordinalNumber(hours, { unit: \"hour\" });\n }\n\n return addLeadingZeros(hours, token.length);\n },\n\n // Hour [1-24]\n k: function (date, token, localize) {\n let hours = date.getHours();\n if (hours === 0) hours = 24;\n\n if (token === \"ko\") {\n return localize.ordinalNumber(hours, { unit: \"hour\" });\n }\n\n return addLeadingZeros(hours, token.length);\n },\n\n // Minute\n m: function (date, token, localize) {\n if (token === \"mo\") {\n return localize.ordinalNumber(date.getMinutes(), { unit: \"minute\" });\n }\n\n return lightFormatters.m(date, token);\n },\n\n // Second\n s: function (date, token, localize) {\n if (token === \"so\") {\n return localize.ordinalNumber(date.getSeconds(), { unit: \"second\" });\n }\n\n return lightFormatters.s(date, token);\n },\n\n // Fraction of second\n S: function (date, token) {\n return lightFormatters.S(date, token);\n },\n\n // Timezone (ISO-8601. If offset is 0, output is always `'Z'`)\n X: function (date, token, _localize) {\n const timezoneOffset = date.getTimezoneOffset();\n\n if (timezoneOffset === 0) {\n return \"Z\";\n }\n\n switch (token) {\n // Hours and optional minutes\n case \"X\":\n return formatTimezoneWithOptionalMinutes(timezoneOffset);\n\n // Hours, minutes and optional seconds without `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XX`\n case \"XXXX\":\n case \"XX\": // Hours and minutes without `:` delimiter\n return formatTimezone(timezoneOffset);\n\n // Hours, minutes and optional seconds with `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XXX`\n case \"XXXXX\":\n case \"XXX\": // Hours and minutes with `:` delimiter\n default:\n return formatTimezone(timezoneOffset, \":\");\n }\n },\n\n // Timezone (ISO-8601. If offset is 0, output is `'+00:00'` or equivalent)\n x: function (date, token, _localize) {\n const timezoneOffset = date.getTimezoneOffset();\n\n switch (token) {\n // Hours and optional minutes\n case \"x\":\n return formatTimezoneWithOptionalMinutes(timezoneOffset);\n\n // Hours, minutes and optional seconds without `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xx`\n case \"xxxx\":\n case \"xx\": // Hours and minutes without `:` delimiter\n return formatTimezone(timezoneOffset);\n\n // Hours, minutes and optional seconds with `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xxx`\n case \"xxxxx\":\n case \"xxx\": // Hours and minutes with `:` delimiter\n default:\n return formatTimezone(timezoneOffset, \":\");\n }\n },\n\n // Timezone (GMT)\n O: function (date, token, _localize) {\n const timezoneOffset = date.getTimezoneOffset();\n\n switch (token) {\n // Short\n case \"O\":\n case \"OO\":\n case \"OOO\":\n return \"GMT\" + formatTimezoneShort(timezoneOffset, \":\");\n // Long\n case \"OOOO\":\n default:\n return \"GMT\" + formatTimezone(timezoneOffset, \":\");\n }\n },\n\n // Timezone (specific non-location)\n z: function (date, token, _localize) {\n const timezoneOffset = date.getTimezoneOffset();\n\n switch (token) {\n // Short\n case \"z\":\n case \"zz\":\n case \"zzz\":\n return \"GMT\" + formatTimezoneShort(timezoneOffset, \":\");\n // Long\n case \"zzzz\":\n default:\n return \"GMT\" + formatTimezone(timezoneOffset, \":\");\n }\n },\n\n // Seconds timestamp\n t: function (date, token, _localize) {\n const timestamp = Math.trunc(+date / 1000);\n return addLeadingZeros(timestamp, token.length);\n },\n\n // Milliseconds timestamp\n T: function (date, token, _localize) {\n return addLeadingZeros(+date, token.length);\n },\n};\n\nfunction formatTimezoneShort(offset, delimiter = \"\") {\n const sign = offset > 0 ? \"-\" : \"+\";\n const absOffset = Math.abs(offset);\n const hours = Math.trunc(absOffset / 60);\n const minutes = absOffset % 60;\n if (minutes === 0) {\n return sign + String(hours);\n }\n return sign + String(hours) + delimiter + addLeadingZeros(minutes, 2);\n}\n\nfunction formatTimezoneWithOptionalMinutes(offset, delimiter) {\n if (offset % 60 === 0) {\n const sign = offset > 0 ? \"-\" : \"+\";\n return sign + addLeadingZeros(Math.abs(offset) / 60, 2);\n }\n return formatTimezone(offset, delimiter);\n}\n\nfunction formatTimezone(offset, delimiter = \"\") {\n const sign = offset > 0 ? \"-\" : \"+\";\n const absOffset = Math.abs(offset);\n const hours = addLeadingZeros(Math.trunc(absOffset / 60), 2);\n const minutes = addLeadingZeros(absOffset % 60, 2);\n return sign + hours + delimiter + minutes;\n}\n", "const dateLongFormatter = (pattern, formatLong) => {\n switch (pattern) {\n case \"P\":\n return formatLong.date({ width: \"short\" });\n case \"PP\":\n return formatLong.date({ width: \"medium\" });\n case \"PPP\":\n return formatLong.date({ width: \"long\" });\n case \"PPPP\":\n default:\n return formatLong.date({ width: \"full\" });\n }\n};\n\nconst timeLongFormatter = (pattern, formatLong) => {\n switch (pattern) {\n case \"p\":\n return formatLong.time({ width: \"short\" });\n case \"pp\":\n return formatLong.time({ width: \"medium\" });\n case \"ppp\":\n return formatLong.time({ width: \"long\" });\n case \"pppp\":\n default:\n return formatLong.time({ width: \"full\" });\n }\n};\n\nconst dateTimeLongFormatter = (pattern, formatLong) => {\n const matchResult = pattern.match(/(P+)(p+)?/) || [];\n const datePattern = matchResult[1];\n const timePattern = matchResult[2];\n\n if (!timePattern) {\n return dateLongFormatter(pattern, formatLong);\n }\n\n let dateTimeFormat;\n\n switch (datePattern) {\n case \"P\":\n dateTimeFormat = formatLong.dateTime({ width: \"short\" });\n break;\n case \"PP\":\n dateTimeFormat = formatLong.dateTime({ width: \"medium\" });\n break;\n case \"PPP\":\n dateTimeFormat = formatLong.dateTime({ width: \"long\" });\n break;\n case \"PPPP\":\n default:\n dateTimeFormat = formatLong.dateTime({ width: \"full\" });\n break;\n }\n\n return dateTimeFormat\n .replace(\"{{date}}\", dateLongFormatter(datePattern, formatLong))\n .replace(\"{{time}}\", timeLongFormatter(timePattern, formatLong));\n};\n\nexport const longFormatters = {\n p: timeLongFormatter,\n P: dateTimeLongFormatter,\n};\n", "const dayOfYearTokenRE = /^D+$/;\nconst weekYearTokenRE = /^Y+$/;\n\nconst throwTokens = [\"D\", \"DD\", \"YY\", \"YYYY\"];\n\nexport function isProtectedDayOfYearToken(token) {\n return dayOfYearTokenRE.test(token);\n}\n\nexport function isProtectedWeekYearToken(token) {\n return weekYearTokenRE.test(token);\n}\n\nexport function warnOrThrowProtectedError(token, format, input) {\n const _message = message(token, format, input);\n console.warn(_message);\n if (throwTokens.includes(token)) throw new RangeError(_message);\n}\n\nfunction message(token, format, input) {\n const subject = token[0] === \"Y\" ? \"years\" : \"days of the month\";\n return `Use \\`${token.toLowerCase()}\\` instead of \\`${token}\\` (in \\`${format}\\`) for formatting ${subject} to the input \\`${input}\\`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md`;\n}\n", "import { defaultLocale } from \"./_lib/defaultLocale.js\";\nimport { getDefaultOptions } from \"./_lib/defaultOptions.js\";\nimport { formatters } from \"./_lib/format/formatters.js\";\nimport { longFormatters } from \"./_lib/format/longFormatters.js\";\nimport {\n isProtectedDayOfYearToken,\n isProtectedWeekYearToken,\n warnOrThrowProtectedError,\n} from \"./_lib/protectedTokens.js\";\nimport { isValid } from \"./isValid.js\";\nimport { toDate } from \"./toDate.js\";\n\n// Rexports of internal for libraries to use.\n// See: https://github.com/date-fns/date-fns/issues/3638#issuecomment-1877082874\nexport { formatters, longFormatters };\n\n// This RegExp consists of three parts separated by `|`:\n// - [yYQqMLwIdDecihHKkms]o matches any available ordinal number token\n// (one of the certain letters followed by `o`)\n// - (\\w)\\1* matches any sequences of the same letter\n// - '' matches two quote characters in a row\n// - '(''|[^'])+('|$) matches anything surrounded by two quote characters ('),\n// except a single quote symbol, which ends the sequence.\n// Two quote characters do not end the sequence.\n// If there is no matching single quote\n// then the sequence will continue until the end of the string.\n// - . matches any single character unmatched by previous parts of the RegExps\nconst formattingTokensRegExp =\n /[yYQqMLwIdDecihHKkms]o|(\\w)\\1*|''|'(''|[^'])+('|$)|./g;\n\n// This RegExp catches symbols escaped by quotes, and also\n// sequences of symbols P, p, and the combinations like `PPPPPPPppppp`\nconst longFormattingTokensRegExp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g;\n\nconst escapedStringRegExp = /^'([^]*?)'?$/;\nconst doubleQuoteRegExp = /''/g;\nconst unescapedLatinCharacterRegExp = /[a-zA-Z]/;\n\nexport { format as formatDate };\n\n/**\n * The {@link format} function options.\n */\n\n/**\n * @name format\n * @alias formatDate\n * @category Common Helpers\n * @summary Format the date.\n *\n * @description\n * Return the formatted date string in the given format. The result may vary by locale.\n *\n * > \u26A0\uFE0F Please note that the `format` tokens differ from Moment.js and other libraries.\n * > See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * The characters wrapped between two single quotes characters (') are escaped.\n * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote.\n * (see the last example)\n *\n * Format of the string is based on Unicode Technical Standard #35:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * with a few additions (see note 7 below the table).\n *\n * Accepted patterns:\n * | Unit | Pattern | Result examples | Notes |\n * |---------------------------------|---------|-----------------------------------|-------|\n * | Era | G..GGG | AD, BC | |\n * | | GGGG | Anno Domini, Before Christ | 2 |\n * | | GGGGG | A, B | |\n * | Calendar year | y | 44, 1, 1900, 2017 | 5 |\n * | | yo | 44th, 1st, 0th, 17th | 5,7 |\n * | | yy | 44, 01, 00, 17 | 5 |\n * | | yyy | 044, 001, 1900, 2017 | 5 |\n * | | yyyy | 0044, 0001, 1900, 2017 | 5 |\n * | | yyyyy | ... | 3,5 |\n * | Local week-numbering year | Y | 44, 1, 1900, 2017 | 5 |\n * | | Yo | 44th, 1st, 1900th, 2017th | 5,7 |\n * | | YY | 44, 01, 00, 17 | 5,8 |\n * | | YYY | 044, 001, 1900, 2017 | 5 |\n * | | YYYY | 0044, 0001, 1900, 2017 | 5,8 |\n * | | YYYYY | ... | 3,5 |\n * | ISO week-numbering year | R | -43, 0, 1, 1900, 2017 | 5,7 |\n * | | RR | -43, 00, 01, 1900, 2017 | 5,7 |\n * | | RRR | -043, 000, 001, 1900, 2017 | 5,7 |\n * | | RRRR | -0043, 0000, 0001, 1900, 2017 | 5,7 |\n * | | RRRRR | ... | 3,5,7 |\n * | Extended year | u | -43, 0, 1, 1900, 2017 | 5 |\n * | | uu | -43, 01, 1900, 2017 | 5 |\n * | | uuu | -043, 001, 1900, 2017 | 5 |\n * | | uuuu | -0043, 0001, 1900, 2017 | 5 |\n * | | uuuuu | ... | 3,5 |\n * | Quarter (formatting) | Q | 1, 2, 3, 4 | |\n * | | Qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | QQ | 01, 02, 03, 04 | |\n * | | QQQ | Q1, Q2, Q3, Q4 | |\n * | | QQQQ | 1st quarter, 2nd quarter, ... | 2 |\n * | | QQQQQ | 1, 2, 3, 4 | 4 |\n * | Quarter (stand-alone) | q | 1, 2, 3, 4 | |\n * | | qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | qq | 01, 02, 03, 04 | |\n * | | qqq | Q1, Q2, Q3, Q4 | |\n * | | qqqq | 1st quarter, 2nd quarter, ... | 2 |\n * | | qqqqq | 1, 2, 3, 4 | 4 |\n * | Month (formatting) | M | 1, 2, ..., 12 | |\n * | | Mo | 1st, 2nd, ..., 12th | 7 |\n * | | MM | 01, 02, ..., 12 | |\n * | | MMM | Jan, Feb, ..., Dec | |\n * | | MMMM | January, February, ..., December | 2 |\n * | | MMMMM | J, F, ..., D | |\n * | Month (stand-alone) | L | 1, 2, ..., 12 | |\n * | | Lo | 1st, 2nd, ..., 12th | 7 |\n * | | LL | 01, 02, ..., 12 | |\n * | | LLL | Jan, Feb, ..., Dec | |\n * | | LLLL | January, February, ..., December | 2 |\n * | | LLLLL | J, F, ..., D | |\n * | Local week of year | w | 1, 2, ..., 53 | |\n * | | wo | 1st, 2nd, ..., 53th | 7 |\n * | | ww | 01, 02, ..., 53 | |\n * | ISO week of year | I | 1, 2, ..., 53 | 7 |\n * | | Io | 1st, 2nd, ..., 53th | 7 |\n * | | II | 01, 02, ..., 53 | 7 |\n * | Day of month | d | 1, 2, ..., 31 | |\n * | | do | 1st, 2nd, ..., 31st | 7 |\n * | | dd | 01, 02, ..., 31 | |\n * | Day of year | D | 1, 2, ..., 365, 366 | 9 |\n * | | Do | 1st, 2nd, ..., 365th, 366th | 7 |\n * | | DD | 01, 02, ..., 365, 366 | 9 |\n * | | DDD | 001, 002, ..., 365, 366 | |\n * | | DDDD | ... | 3 |\n * | Day of week (formatting) | E..EEE | Mon, Tue, Wed, ..., Sun | |\n * | | EEEE | Monday, Tuesday, ..., Sunday | 2 |\n * | | EEEEE | M, T, W, T, F, S, S | |\n * | | EEEEEE | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | ISO day of week (formatting) | i | 1, 2, 3, ..., 7 | 7 |\n * | | io | 1st, 2nd, ..., 7th | 7 |\n * | | ii | 01, 02, ..., 07 | 7 |\n * | | iii | Mon, Tue, Wed, ..., Sun | 7 |\n * | | iiii | Monday, Tuesday, ..., Sunday | 2,7 |\n * | | iiiii | M, T, W, T, F, S, S | 7 |\n * | | iiiiii | Mo, Tu, We, Th, Fr, Sa, Su | 7 |\n * | Local day of week (formatting) | e | 2, 3, 4, ..., 1 | |\n * | | eo | 2nd, 3rd, ..., 1st | 7 |\n * | | ee | 02, 03, ..., 01 | |\n * | | eee | Mon, Tue, Wed, ..., Sun | |\n * | | eeee | Monday, Tuesday, ..., Sunday | 2 |\n * | | eeeee | M, T, W, T, F, S, S | |\n * | | eeeeee | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | Local day of week (stand-alone) | c | 2, 3, 4, ..., 1 | |\n * | | co | 2nd, 3rd, ..., 1st | 7 |\n * | | cc | 02, 03, ..., 01 | |\n * | | ccc | Mon, Tue, Wed, ..., Sun | |\n * | | cccc | Monday, Tuesday, ..., Sunday | 2 |\n * | | ccccc | M, T, W, T, F, S, S | |\n * | | cccccc | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | AM, PM | a..aa | AM, PM | |\n * | | aaa | am, pm | |\n * | | aaaa | a.m., p.m. | 2 |\n * | | aaaaa | a, p | |\n * | AM, PM, noon, midnight | b..bb | AM, PM, noon, midnight | |\n * | | bbb | am, pm, noon, midnight | |\n * | | bbbb | a.m., p.m., noon, midnight | 2 |\n * | | bbbbb | a, p, n, mi | |\n * | Flexible day period | B..BBB | at night, in the morning, ... | |\n * | | BBBB | at night, in the morning, ... | 2 |\n * | | BBBBB | at night, in the morning, ... | |\n * | Hour [1-12] | h | 1, 2, ..., 11, 12 | |\n * | | ho | 1st, 2nd, ..., 11th, 12th | 7 |\n * | | hh | 01, 02, ..., 11, 12 | |\n * | Hour [0-23] | H | 0, 1, 2, ..., 23 | |\n * | | Ho | 0th, 1st, 2nd, ..., 23rd | 7 |\n * | | HH | 00, 01, 02, ..., 23 | |\n * | Hour [0-11] | K | 1, 2, ..., 11, 0 | |\n * | | Ko | 1st, 2nd, ..., 11th, 0th | 7 |\n * | | KK | 01, 02, ..., 11, 00 | |\n * | Hour [1-24] | k | 24, 1, 2, ..., 23 | |\n * | | ko | 24th, 1st, 2nd, ..., 23rd | 7 |\n * | | kk | 24, 01, 02, ..., 23 | |\n * | Minute | m | 0, 1, ..., 59 | |\n * | | mo | 0th, 1st, ..., 59th | 7 |\n * | | mm | 00, 01, ..., 59 | |\n * | Second | s | 0, 1, ..., 59 | |\n * | | so | 0th, 1st, ..., 59th | 7 |\n * | | ss | 00, 01, ..., 59 | |\n * | Fraction of second | S | 0, 1, ..., 9 | |\n * | | SS | 00, 01, ..., 99 | |\n * | | SSS | 000, 001, ..., 999 | |\n * | | SSSS | ... | 3 |\n * | Timezone (ISO-8601 w/ Z) | X | -08, +0530, Z | |\n * | | XX | -0800, +0530, Z | |\n * | | XXX | -08:00, +05:30, Z | |\n * | | XXXX | -0800, +0530, Z, +123456 | 2 |\n * | | XXXXX | -08:00, +05:30, Z, +12:34:56 | |\n * | Timezone (ISO-8601 w/o Z) | x | -08, +0530, +00 | |\n * | | xx | -0800, +0530, +0000 | |\n * | | xxx | -08:00, +05:30, +00:00 | 2 |\n * | | xxxx | -0800, +0530, +0000, +123456 | |\n * | | xxxxx | -08:00, +05:30, +00:00, +12:34:56 | |\n * | Timezone (GMT) | O...OOO | GMT-8, GMT+5:30, GMT+0 | |\n * | | OOOO | GMT-08:00, GMT+05:30, GMT+00:00 | 2 |\n * | Timezone (specific non-locat.) | z...zzz | GMT-8, GMT+5:30, GMT+0 | 6 |\n * | | zzzz | GMT-08:00, GMT+05:30, GMT+00:00 | 2,6 |\n * | Seconds timestamp | t | 512969520 | 7 |\n * | | tt | ... | 3,7 |\n * | Milliseconds timestamp | T | 512969520900 | 7 |\n * | | TT | ... | 3,7 |\n * | Long localized date | P | 04/29/1453 | 7 |\n * | | PP | Apr 29, 1453 | 7 |\n * | | PPP | April 29th, 1453 | 7 |\n * | | PPPP | Friday, April 29th, 1453 | 2,7 |\n * | Long localized time | p | 12:00 AM | 7 |\n * | | pp | 12:00:00 AM | 7 |\n * | | ppp | 12:00:00 AM GMT+2 | 7 |\n * | | pppp | 12:00:00 AM GMT+02:00 | 2,7 |\n * | Combination of date and time | Pp | 04/29/1453, 12:00 AM | 7 |\n * | | PPpp | Apr 29, 1453, 12:00:00 AM | 7 |\n * | | PPPppp | April 29th, 1453 at ... | 7 |\n * | | PPPPpppp| Friday, April 29th, 1453 at ... | 2,7 |\n * Notes:\n * 1. \"Formatting\" units (e.g. formatting quarter) in the default en-US locale\n * are the same as \"stand-alone\" units, but are different in some languages.\n * \"Formatting\" units are declined according to the rules of the language\n * in the context of a date. \"Stand-alone\" units are always nominative singular:\n *\n * `format(new Date(2017, 10, 6), 'do LLLL', {locale: cs}) //=> '6. listopad'`\n *\n * `format(new Date(2017, 10, 6), 'do MMMM', {locale: cs}) //=> '6. listopadu'`\n *\n * 2. Any sequence of the identical letters is a pattern, unless it is escaped by\n * the single quote characters (see below).\n * If the sequence is longer than listed in table (e.g. `EEEEEEEEEEE`)\n * the output will be the same as default pattern for this unit, usually\n * the longest one (in case of ISO weekdays, `EEEE`). Default patterns for units\n * are marked with \"2\" in the last column of the table.\n *\n * `format(new Date(2017, 10, 6), 'MMM') //=> 'Nov'`\n *\n * `format(new Date(2017, 10, 6), 'MMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMM') //=> 'N'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMMM') //=> 'November'`\n *\n * 3. Some patterns could be unlimited length (such as `yyyyyyyy`).\n * The output will be padded with zeros to match the length of the pattern.\n *\n * `format(new Date(2017, 10, 6), 'yyyyyyyy') //=> '00002017'`\n *\n * 4. `QQQQQ` and `qqqqq` could be not strictly numerical in some locales.\n * These tokens represent the shortest form of the quarter.\n *\n * 5. The main difference between `y` and `u` patterns are B.C. years:\n *\n * | Year | `y` | `u` |\n * |------|-----|-----|\n * | AC 1 | 1 | 1 |\n * | BC 1 | 1 | 0 |\n * | BC 2 | 2 | -1 |\n *\n * Also `yy` always returns the last two digits of a year,\n * while `uu` pads single digit years to 2 characters and returns other years unchanged:\n *\n * | Year | `yy` | `uu` |\n * |------|------|------|\n * | 1 | 01 | 01 |\n * | 14 | 14 | 14 |\n * | 376 | 76 | 376 |\n * | 1453 | 53 | 1453 |\n *\n * The same difference is true for local and ISO week-numbering years (`Y` and `R`),\n * except local week-numbering years are dependent on `options.weekStartsOn`\n * and `options.firstWeekContainsDate` (compare [getISOWeekYear](https://date-fns.org/docs/getISOWeekYear)\n * and [getWeekYear](https://date-fns.org/docs/getWeekYear)).\n *\n * 6. Specific non-location timezones are currently unavailable in `date-fns`,\n * so right now these tokens fall back to GMT timezones.\n *\n * 7. These patterns are not in the Unicode Technical Standard #35:\n * - `i`: ISO day of week\n * - `I`: ISO week of year\n * - `R`: ISO week-numbering year\n * - `t`: seconds timestamp\n * - `T`: milliseconds timestamp\n * - `o`: ordinal number modifier\n * - `P`: long localized date\n * - `p`: long localized time\n *\n * 8. `YY` and `YYYY` tokens represent week-numbering years but they are often confused with years.\n * You should enable `options.useAdditionalWeekYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * 9. `D` and `DD` tokens represent days of the year but they are often confused with days of the month.\n * You should enable `options.useAdditionalDayOfYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * @param date - The original date\n * @param format - The string of tokens\n * @param options - An object with options\n *\n * @returns The formatted date string\n *\n * @throws `date` must not be Invalid Date\n * @throws `options.locale` must contain `localize` property\n * @throws `options.locale` must contain `formatLong` property\n * @throws use `yyyy` instead of `YYYY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws use `yy` instead of `YY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws use `d` instead of `D` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws use `dd` instead of `DD` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws format string contains an unescaped latin alphabet character\n *\n * @example\n * // Represent 11 February 2014 in middle-endian format:\n * const result = format(new Date(2014, 1, 11), 'MM/dd/yyyy')\n * //=> '02/11/2014'\n *\n * @example\n * // Represent 2 July 2014 in Esperanto:\n * import { eoLocale } from 'date-fns/locale/eo'\n * const result = format(new Date(2014, 6, 2), \"do 'de' MMMM yyyy\", {\n * locale: eoLocale\n * })\n * //=> '2-a de julio 2014'\n *\n * @example\n * // Escape string by single quote characters:\n * const result = format(new Date(2014, 6, 2, 15), \"h 'o''clock'\")\n * //=> \"3 o'clock\"\n */\nexport function format(date, formatStr, options) {\n const defaultOptions = getDefaultOptions();\n const locale = options?.locale ?? defaultOptions.locale ?? defaultLocale;\n\n const firstWeekContainsDate =\n options?.firstWeekContainsDate ??\n options?.locale?.options?.firstWeekContainsDate ??\n defaultOptions.firstWeekContainsDate ??\n defaultOptions.locale?.options?.firstWeekContainsDate ??\n 1;\n\n const weekStartsOn =\n options?.weekStartsOn ??\n options?.locale?.options?.weekStartsOn ??\n defaultOptions.weekStartsOn ??\n defaultOptions.locale?.options?.weekStartsOn ??\n 0;\n\n const originalDate = toDate(date, options?.in);\n\n if (!isValid(originalDate)) {\n throw new RangeError(\"Invalid time value\");\n }\n\n let parts = formatStr\n .match(longFormattingTokensRegExp)\n .map((substring) => {\n const firstCharacter = substring[0];\n if (firstCharacter === \"p\" || firstCharacter === \"P\") {\n const longFormatter = longFormatters[firstCharacter];\n return longFormatter(substring, locale.formatLong);\n }\n return substring;\n })\n .join(\"\")\n .match(formattingTokensRegExp)\n .map((substring) => {\n // Replace two single quote characters with one single quote character\n if (substring === \"''\") {\n return { isToken: false, value: \"'\" };\n }\n\n const firstCharacter = substring[0];\n if (firstCharacter === \"'\") {\n return { isToken: false, value: cleanEscapedString(substring) };\n }\n\n if (formatters[firstCharacter]) {\n return { isToken: true, value: substring };\n }\n\n if (firstCharacter.match(unescapedLatinCharacterRegExp)) {\n throw new RangeError(\n \"Format string contains an unescaped latin alphabet character `\" +\n firstCharacter +\n \"`\",\n );\n }\n\n return { isToken: false, value: substring };\n });\n\n // invoke localize preprocessor (only for french locales at the moment)\n if (locale.localize.preprocessor) {\n parts = locale.localize.preprocessor(originalDate, parts);\n }\n\n const formatterOptions = {\n firstWeekContainsDate,\n weekStartsOn,\n locale,\n };\n\n return parts\n .map((part) => {\n if (!part.isToken) return part.value;\n\n const token = part.value;\n\n if (\n (!options?.useAdditionalWeekYearTokens &&\n isProtectedWeekYearToken(token)) ||\n (!options?.useAdditionalDayOfYearTokens &&\n isProtectedDayOfYearToken(token))\n ) {\n warnOrThrowProtectedError(token, formatStr, String(date));\n }\n\n const formatter = formatters[token[0]];\n return formatter(originalDate, token, locale.localize, formatterOptions);\n })\n .join(\"\");\n}\n\nfunction cleanEscapedString(input) {\n const matched = input.match(escapedStringRegExp);\n\n if (!matched) {\n return input;\n }\n\n return matched[1].replace(doubleQuoteRegExp, \"'\");\n}\n\n// Fallback for modularized imports:\nexport default format;\n", "import { addDays } from \"./addDays.js\";\n\n/**\n * The {@link subDays} function options.\n */\n\n/**\n * @name subDays\n * @category Day Helpers\n * @summary Subtract the specified number of days from the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param amount - The amount of days to be subtracted.\n * @param options - An object with options\n *\n * @returns The new date with the days subtracted\n *\n * @example\n * // Subtract 10 days from 1 September 2014:\n * const result = subDays(new Date(2014, 8, 1), 10)\n * //=> Fri Aug 22 2014 00:00:00\n */\nexport function subDays(date, amount, options) {\n return addDays(date, -amount, options);\n}\n\n// Fallback for modularized imports:\nexport default subDays;\n", "import { addMonths } from \"./addMonths.js\";\n\n/**\n * The subMonths function options.\n */\n\n/**\n * @name subMonths\n * @category Month Helpers\n * @summary Subtract the specified number of months from the given date.\n *\n * @description\n * Subtract the specified number of months from the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param amount - The amount of months to be subtracted.\n * @param options - An object with options\n *\n * @returns The new date with the months subtracted\n *\n * @example\n * // Subtract 5 months from 1 February 2015:\n * const result = subMonths(new Date(2015, 1, 1), 5)\n * //=> Mon Sep 01 2014 00:00:00\n */\nexport function subMonths(date, amount, options) {\n return addMonths(date, -amount, options);\n}\n\n// Fallback for modularized imports:\nexport default subMonths;\n", "import { addYears } from \"./addYears.js\";\n\n/**\n * The {@link subYears} function options.\n */\n\n/**\n * @name subYears\n * @category Year Helpers\n * @summary Subtract the specified number of years from the given date.\n *\n * @description\n * Subtract the specified number of years from the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param amount - The amount of years to be subtracted.\n * @param options - An object with options\n *\n * @returns The new date with the years subtracted\n *\n * @example\n * // Subtract 5 years from 1 September 2014:\n * const result = subYears(new Date(2014, 8, 1), 5)\n * //=> Tue Sep 01 2009 00:00:00\n */\nexport function subYears(date, amount, options) {\n return addYears(date, -amount, options);\n}\n\n// Fallback for modularized imports:\nexport default subYears;\n", "/**\n * External dependencies\n */\nimport { format } from 'date-fns';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tBaseControl,\n\tprivateApis as componentsPrivateApis,\n} from '@wordpress/components';\nimport { useCallback, useEffect, useRef, useState } from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\nimport { getSettings } from '@wordpress/date';\nimport { Stack } from '@wordpress/ui';\n\n/**\n * Internal dependencies\n */\nimport type { DataFormControlProps, FormatDatetime } from '../../types';\nimport { OPERATOR_IN_THE_PAST, OPERATOR_OVER } from '../../constants';\nimport RelativeDateControl from './utils/relative-date-control';\nimport getCustomValidity from './utils/get-custom-validity';\nimport parseDateTime from '../../field-types/utils/parse-date-time';\nimport { unlock } from '../../lock-unlock';\n\nconst { DateCalendar, ValidatedInputControl } = unlock( componentsPrivateApis );\n\nconst formatDateTime = ( date?: Date | string ): string => {\n\tif ( ! date ) {\n\t\treturn '';\n\t}\n\tif ( typeof date === 'string' ) {\n\t\treturn date;\n\t}\n\t// Format as datetime-local input expects: YYYY-MM-DDTHH:mm\n\treturn format( date, \"yyyy-MM-dd'T'HH:mm\" );\n};\n\nfunction CalendarDateTimeControl< Item >( {\n\tdata,\n\tfield,\n\tonChange,\n\thideLabelFromVision,\n\tvalidity,\n}: DataFormControlProps< Item > ) {\n\tconst { id, label, description, setValue, getValue, isValid } = field;\n\tconst fieldValue = getValue( { item: data } );\n\tconst value = typeof fieldValue === 'string' ? fieldValue : undefined;\n\n\tconst [ calendarMonth, setCalendarMonth ] = useState< Date >( () => {\n\t\tconst parsedDate = parseDateTime( value );\n\t\treturn parsedDate || new Date(); // Default to current month\n\t} );\n\n\tconst inputControlRef = useRef< HTMLInputElement >( null );\n\tconst validationTimeoutRef = useRef< ReturnType< typeof setTimeout > >();\n\tconst previousFocusRef = useRef< Element | null >( null );\n\n\tconst onChangeCallback = useCallback(\n\t\t( newValue: string | undefined ) =>\n\t\t\tonChange( setValue( { item: data, value: newValue } ) ),\n\t\t[ data, onChange, setValue ]\n\t);\n\n\t// Cleanup timeout on unmount\n\tuseEffect( () => {\n\t\treturn () => {\n\t\t\tif ( validationTimeoutRef.current ) {\n\t\t\t\tclearTimeout( validationTimeoutRef.current );\n\t\t\t}\n\t\t};\n\t}, [] );\n\n\tconst onSelectDate = useCallback(\n\t\t( newDate: Date | undefined | null ) => {\n\t\t\tlet dateTimeValue: string | undefined;\n\t\t\tif ( newDate ) {\n\t\t\t\t// Preserve time if it exists in current value, otherwise use current time\n\t\t\t\tlet finalDateTime = newDate;\n\n\t\t\t\tif ( value ) {\n\t\t\t\t\tconst currentDateTime = parseDateTime( value );\n\t\t\t\t\tif ( currentDateTime ) {\n\t\t\t\t\t\t// Preserve the time part\n\t\t\t\t\t\tfinalDateTime = new Date( newDate );\n\t\t\t\t\t\tfinalDateTime.setHours( currentDateTime.getHours() );\n\t\t\t\t\t\tfinalDateTime.setMinutes(\n\t\t\t\t\t\t\tcurrentDateTime.getMinutes()\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tdateTimeValue = finalDateTime.toISOString();\n\t\t\t\tonChangeCallback( dateTimeValue );\n\n\t\t\t\t// Clear any existing timeout\n\t\t\t\tif ( validationTimeoutRef.current ) {\n\t\t\t\t\tclearTimeout( validationTimeoutRef.current );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tonChangeCallback( undefined );\n\t\t\t}\n\t\t\t// Save the currently focused element\n\t\t\tpreviousFocusRef.current =\n\t\t\t\tinputControlRef.current &&\n\t\t\t\tinputControlRef.current.ownerDocument.activeElement;\n\n\t\t\t// Trigger validation display by simulating focus, blur, and changes.\n\t\t\t// Use a timeout to ensure it runs after the value update.\n\t\t\tvalidationTimeoutRef.current = setTimeout( () => {\n\t\t\t\tif ( inputControlRef.current ) {\n\t\t\t\t\tinputControlRef.current.focus();\n\t\t\t\t\tinputControlRef.current.blur();\n\t\t\t\t\tonChangeCallback( dateTimeValue );\n\n\t\t\t\t\t// Restore focus to the previously focused element\n\t\t\t\t\tif (\n\t\t\t\t\t\tpreviousFocusRef.current &&\n\t\t\t\t\t\tpreviousFocusRef.current instanceof HTMLElement\n\t\t\t\t\t) {\n\t\t\t\t\t\tpreviousFocusRef.current.focus();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}, 0 );\n\t\t},\n\t\t[ onChangeCallback, value ]\n\t);\n\n\tconst handleManualDateTimeChange = useCallback(\n\t\t( newValue?: string ) => {\n\t\t\tif ( newValue ) {\n\t\t\t\t// Convert from datetime-local format to ISO string\n\t\t\t\tconst dateTime = new Date( newValue );\n\t\t\t\tonChangeCallback( dateTime.toISOString() );\n\n\t\t\t\t// Update calendar month to match\n\t\t\t\tconst parsedDate = parseDateTime( dateTime.toISOString() );\n\t\t\t\tif ( parsedDate ) {\n\t\t\t\t\tsetCalendarMonth( parsedDate );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tonChangeCallback( undefined );\n\t\t\t}\n\t\t},\n\t\t[ onChangeCallback ]\n\t);\n\n\tconst { format: fieldFormat } = field;\n\tconst weekStartsOn =\n\t\t( fieldFormat as FormatDatetime ).weekStartsOn ??\n\t\tgetSettings().l10n.startOfWeek;\n\tconst {\n\t\ttimezone: { string: timezoneString },\n\t} = getSettings();\n\n\tconst displayLabel =\n\t\tisValid?.required && ! hideLabelFromVision\n\t\t\t? `${ label } (${ __( 'Required' ) })`\n\t\t\t: label;\n\n\treturn (\n\t\t<BaseControl\n\t\t\tid={ id }\n\t\t\tlabel={ displayLabel }\n\t\t\thelp={ description }\n\t\t\thideLabelFromVision={ hideLabelFromVision }\n\t\t>\n\t\t\t<Stack direction=\"column\" gap=\"md\">\n\t\t\t\t{ /* Calendar widget */ }\n\t\t\t\t<DateCalendar\n\t\t\t\t\tstyle={ { width: '100%' } }\n\t\t\t\t\tselected={\n\t\t\t\t\t\tvalue ? parseDateTime( value ) || undefined : undefined\n\t\t\t\t\t}\n\t\t\t\t\tonSelect={ onSelectDate }\n\t\t\t\t\tmonth={ calendarMonth }\n\t\t\t\t\tonMonthChange={ setCalendarMonth }\n\t\t\t\t\ttimeZone={ timezoneString || undefined }\n\t\t\t\t\tweekStartsOn={ weekStartsOn }\n\t\t\t\t/>\n\t\t\t\t{ /* Manual datetime input */ }\n\t\t\t\t<ValidatedInputControl\n\t\t\t\t\tref={ inputControlRef }\n\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\trequired={ !! isValid?.required }\n\t\t\t\t\tcustomValidity={ getCustomValidity( isValid, validity ) }\n\t\t\t\t\ttype=\"datetime-local\"\n\t\t\t\t\tlabel={ __( 'Date time' ) }\n\t\t\t\t\thideLabelFromVision\n\t\t\t\t\tvalue={\n\t\t\t\t\t\tvalue\n\t\t\t\t\t\t\t? formatDateTime(\n\t\t\t\t\t\t\t\t\tparseDateTime( value ) || undefined\n\t\t\t\t\t\t\t )\n\t\t\t\t\t\t\t: ''\n\t\t\t\t\t}\n\t\t\t\t\tonChange={ handleManualDateTimeChange }\n\t\t\t\t/>\n\t\t\t</Stack>\n\t\t</BaseControl>\n\t);\n}\n\nexport default function DateTime< Item >( {\n\tdata,\n\tfield,\n\tonChange,\n\thideLabelFromVision,\n\toperator,\n\tvalidity,\n}: DataFormControlProps< Item > ) {\n\tif ( operator === OPERATOR_IN_THE_PAST || operator === OPERATOR_OVER ) {\n\t\treturn (\n\t\t\t<RelativeDateControl\n\t\t\t\tclassName=\"dataviews-controls__datetime\"\n\t\t\t\tdata={ data }\n\t\t\t\tfield={ field }\n\t\t\t\tonChange={ onChange }\n\t\t\t\thideLabelFromVision={ hideLabelFromVision }\n\t\t\t\toperator={ operator }\n\t\t\t/>\n\t\t);\n\t}\n\n\treturn (\n\t\t<CalendarDateTimeControl\n\t\t\tdata={ data }\n\t\t\tfield={ field }\n\t\t\tonChange={ onChange }\n\t\t\thideLabelFromVision={ hideLabelFromVision }\n\t\t\tvalidity={ validity }\n\t\t/>\n\t);\n}\n", "/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tBaseControl,\n\tSelectControl,\n\t__experimentalNumberControl as NumberControl,\n} from '@wordpress/components';\nimport { useCallback } from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\nimport { Stack } from '@wordpress/ui';\n\n/**\n * Internal dependencies\n */\nimport { OPERATOR_IN_THE_PAST, OPERATOR_OVER } from '../../../constants';\nimport type { DataFormControlProps } from '../../../types';\n\ntype VALID_OPERATORS = 'inThePast' | 'over';\n\ninterface TimeUnitOption {\n\tvalue: string;\n\tlabel: string;\n}\n\nconst TIME_UNITS_OPTIONS: Record< VALID_OPERATORS, TimeUnitOption[] > = {\n\t[ OPERATOR_IN_THE_PAST ]: [\n\t\t{ value: 'days', label: __( 'Days' ) },\n\t\t{ value: 'weeks', label: __( 'Weeks' ) },\n\t\t{ value: 'months', label: __( 'Months' ) },\n\t\t{ value: 'years', label: __( 'Years' ) },\n\t],\n\t[ OPERATOR_OVER ]: [\n\t\t{ value: 'days', label: __( 'Days ago' ) },\n\t\t{ value: 'weeks', label: __( 'Weeks ago' ) },\n\t\t{ value: 'months', label: __( 'Months ago' ) },\n\t\t{ value: 'years', label: __( 'Years ago' ) },\n\t],\n};\n\nexport default function RelativeDateControl< Item >( {\n\tclassName,\n\tdata,\n\tfield,\n\tonChange,\n\thideLabelFromVision,\n\toperator,\n}: DataFormControlProps< Item > & {\n\tclassName: string;\n} ) {\n\tconst options: TimeUnitOption[] =\n\t\tTIME_UNITS_OPTIONS[\n\t\t\toperator === OPERATOR_IN_THE_PAST ? 'inThePast' : 'over'\n\t\t];\n\n\tconst { id, label, getValue, setValue } = field;\n\tconst fieldValue = getValue( { item: data } );\n\tconst { value: relValue = '', unit = options[ 0 ].value } =\n\t\tfieldValue && typeof fieldValue === 'object' ? fieldValue : {};\n\n\tconst onChangeValue = useCallback(\n\t\t( newValue: string | undefined ) =>\n\t\t\tonChange(\n\t\t\t\tsetValue( {\n\t\t\t\t\titem: data,\n\t\t\t\t\tvalue: { value: Number( newValue ), unit },\n\t\t\t\t} )\n\t\t\t),\n\t\t[ onChange, setValue, data, unit ]\n\t);\n\n\tconst onChangeUnit = useCallback(\n\t\t( newUnit: string | undefined ) =>\n\t\t\tonChange(\n\t\t\t\tsetValue( {\n\t\t\t\t\titem: data,\n\t\t\t\t\tvalue: { value: relValue, unit: newUnit },\n\t\t\t\t} )\n\t\t\t),\n\t\t[ onChange, setValue, data, relValue ]\n\t);\n\n\treturn (\n\t\t<BaseControl\n\t\t\tid={ id }\n\t\t\tclassName={ clsx( className, 'dataviews-controls__relative-date' ) }\n\t\t\tlabel={ label }\n\t\t\thideLabelFromVision={ hideLabelFromVision }\n\t\t>\n\t\t\t<Stack direction=\"row\" gap=\"xs\">\n\t\t\t\t<NumberControl\n\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\tclassName=\"dataviews-controls__relative-date-number\"\n\t\t\t\t\tspinControls=\"none\"\n\t\t\t\t\tmin={ 1 }\n\t\t\t\t\tstep={ 1 }\n\t\t\t\t\tvalue={ relValue }\n\t\t\t\t\tonChange={ onChangeValue }\n\t\t\t\t/>\n\t\t\t\t<SelectControl\n\t\t\t\t\tclassName=\"dataviews-controls__relative-date-unit\"\n\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\tlabel={ __( 'Unit' ) }\n\t\t\t\t\tvalue={ unit }\n\t\t\t\t\toptions={ options }\n\t\t\t\t\tonChange={ onChangeUnit }\n\t\t\t\t\thideLabelFromVision\n\t\t\t\t/>\n\t\t\t</Stack>\n\t\t</BaseControl>\n\t);\n}\n", "/**\n * External dependencies\n */\nimport { isValid as isValidDate } from 'date-fns';\n\n/**\n * WordPress dependencies\n */\nimport { getDate } from '@wordpress/date';\n\nexport default function parseDateTime( dateTimeString?: string ): Date | null {\n\tif ( ! dateTimeString ) {\n\t\treturn null;\n\t}\n\tconst parsed = getDate( dateTimeString );\n\treturn parsed && isValidDate( parsed ) ? parsed : null;\n}\n", "/**\n * External dependencies\n */\nimport clsx from 'clsx';\nimport {\n\tformat,\n\tisValid as isValidDate,\n\tsubMonths,\n\tsubDays,\n\tsubYears,\n\tstartOfMonth,\n\tstartOfYear,\n} from 'date-fns';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tBaseControl,\n\tButton,\n\tIcon,\n\tprivateApis as componentsPrivateApis,\n\t__experimentalInputControl as InputControl,\n} from '@wordpress/components';\nimport {\n\tuseCallback,\n\tuseEffect,\n\tuseMemo,\n\tuseRef,\n\tuseState,\n} from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\nimport { getDate, getSettings } from '@wordpress/date';\nimport { error as errorIcon } from '@wordpress/icons';\nimport { Stack } from '@wordpress/ui';\n\n/**\n * Internal dependencies\n */\nimport RelativeDateControl from './utils/relative-date-control';\nimport {\n\tOPERATOR_IN_THE_PAST,\n\tOPERATOR_OVER,\n\tOPERATOR_BETWEEN,\n} from '../../constants';\nimport { unlock } from '../../lock-unlock';\nimport type {\n\tDataFormControlProps,\n\tFieldValidity,\n\tFormatDate,\n\tNormalizedField,\n} from '../../types';\nimport getCustomValidity from './utils/get-custom-validity';\n\nconst { DateCalendar, DateRangeCalendar } = unlock( componentsPrivateApis );\n\ntype DateRange = [ string, string ] | undefined;\n\nconst DATE_PRESETS: {\n\tid: string;\n\tlabel: string;\n\tgetValue: () => Date;\n}[] = [\n\t{\n\t\tid: 'today',\n\t\tlabel: __( 'Today' ),\n\t\tgetValue: () => getDate( null ),\n\t},\n\t{\n\t\tid: 'yesterday',\n\t\tlabel: __( 'Yesterday' ),\n\t\tgetValue: () => {\n\t\t\tconst today = getDate( null );\n\t\t\treturn subDays( today, 1 );\n\t\t},\n\t},\n\t{\n\t\tid: 'past-week',\n\t\tlabel: __( 'Past week' ),\n\t\tgetValue: () => {\n\t\t\tconst today = getDate( null );\n\t\t\treturn subDays( today, 7 );\n\t\t},\n\t},\n\t{\n\t\tid: 'past-month',\n\t\tlabel: __( 'Past month' ),\n\t\tgetValue: () => {\n\t\t\tconst today = getDate( null );\n\t\t\treturn subMonths( today, 1 );\n\t\t},\n\t},\n];\n\nconst DATE_RANGE_PRESETS = [\n\t{\n\t\tid: 'last-7-days',\n\t\tlabel: __( 'Last 7 days' ),\n\t\tgetValue: () => {\n\t\t\tconst today = getDate( null );\n\t\t\treturn [ subDays( today, 7 ), today ];\n\t\t},\n\t},\n\t{\n\t\tid: 'last-30-days',\n\t\tlabel: __( 'Last 30 days' ),\n\t\tgetValue: () => {\n\t\t\tconst today = getDate( null );\n\t\t\treturn [ subDays( today, 30 ), today ];\n\t\t},\n\t},\n\t{\n\t\tid: 'month-to-date',\n\t\tlabel: __( 'Month to date' ),\n\t\tgetValue: () => {\n\t\t\tconst today = getDate( null );\n\t\t\treturn [ startOfMonth( today ), today ];\n\t\t},\n\t},\n\t{\n\t\tid: 'last-year',\n\t\tlabel: __( 'Last year' ),\n\t\tgetValue: () => {\n\t\t\tconst today = getDate( null );\n\t\t\treturn [ subYears( today, 1 ), today ];\n\t\t},\n\t},\n\t{\n\t\tid: 'year-to-date',\n\t\tlabel: __( 'Year to date' ),\n\t\tgetValue: () => {\n\t\t\tconst today = getDate( null );\n\t\t\treturn [ startOfYear( today ), today ];\n\t\t},\n\t},\n];\n\nconst parseDate = ( dateString?: string ): Date | null => {\n\tif ( ! dateString ) {\n\t\treturn null;\n\t}\n\tconst parsed = getDate( dateString );\n\treturn parsed && isValidDate( parsed ) ? parsed : null;\n};\n\nconst formatDate = ( date?: Date | string ): string => {\n\tif ( ! date ) {\n\t\treturn '';\n\t}\n\treturn typeof date === 'string' ? date : format( date, 'yyyy-MM-dd' );\n};\n\nfunction ValidatedDateControl< Item >( {\n\tfield,\n\tvalidity,\n\tinputRefs,\n\tisTouched,\n\tsetIsTouched,\n\tchildren,\n}: {\n\tfield: NormalizedField< Item >;\n\tvalidity?: FieldValidity;\n\tinputRefs:\n\t\t| React.RefObject< HTMLInputElement >\n\t\t| React.RefObject< HTMLInputElement >[];\n\tisTouched: boolean;\n\tsetIsTouched: ( touched: boolean ) => void;\n\tchildren: React.ReactNode;\n} ) {\n\tconst { isValid } = field;\n\tconst [ customValidity, setCustomValidity ] = useState<\n\t\t| { type: 'valid' | 'validating' | 'invalid'; message?: string }\n\t\t| undefined\n\t>( undefined );\n\n\tconst validateRefs = useCallback( () => {\n\t\t// Check HTML5 validity on all refs\n\t\tconst refs = Array.isArray( inputRefs ) ? inputRefs : [ inputRefs ];\n\t\tfor ( const ref of refs ) {\n\t\t\tconst input = ref.current;\n\t\t\tif ( input && ! input.validity.valid ) {\n\t\t\t\tsetCustomValidity( {\n\t\t\t\t\ttype: 'invalid',\n\t\t\t\t\tmessage: input.validationMessage,\n\t\t\t\t} );\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\t// No errors\n\t\tsetCustomValidity( undefined );\n\t}, [ inputRefs ] );\n\n\tuseEffect( () => {\n\t\tif ( isTouched ) {\n\t\t\tconst timeoutId = setTimeout( () => {\n\t\t\t\tif ( validity ) {\n\t\t\t\t\tsetCustomValidity( getCustomValidity( isValid, validity ) );\n\t\t\t\t} else {\n\t\t\t\t\tvalidateRefs();\n\t\t\t\t}\n\t\t\t}, 0 );\n\t\t\treturn () => clearTimeout( timeoutId );\n\t\t}\n\t\treturn undefined;\n\t}, [ isTouched, isValid, validity, validateRefs ] );\n\n\tconst onBlur = ( event: React.FocusEvent< HTMLDivElement > ) => {\n\t\tif ( isTouched ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Only consider \"blurred from the component\" if focus has fully left the wrapping div.\n\t\t// This prevents unnecessary blurs from components with multiple focusable elements.\n\t\tif (\n\t\t\t! event.relatedTarget ||\n\t\t\t! event.currentTarget.contains( event.relatedTarget )\n\t\t) {\n\t\t\tsetIsTouched( true );\n\t\t}\n\t};\n\n\treturn (\n\t\t<div onBlur={ onBlur }>\n\t\t\t{ children }\n\t\t\t<div aria-live=\"polite\">\n\t\t\t\t{ customValidity && (\n\t\t\t\t\t<p\n\t\t\t\t\t\tclassName={ clsx(\n\t\t\t\t\t\t\t'components-validated-control__indicator',\n\t\t\t\t\t\t\tcustomValidity.type === 'invalid'\n\t\t\t\t\t\t\t\t? 'is-invalid'\n\t\t\t\t\t\t\t\t: undefined,\n\t\t\t\t\t\t\tcustomValidity.type === 'valid'\n\t\t\t\t\t\t\t\t? 'is-valid'\n\t\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t\t) }\n\t\t\t\t\t>\n\t\t\t\t\t\t<Icon\n\t\t\t\t\t\t\tclassName=\"components-validated-control__indicator-icon\"\n\t\t\t\t\t\t\ticon={ errorIcon }\n\t\t\t\t\t\t\tsize={ 16 }\n\t\t\t\t\t\t\tfill=\"currentColor\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t{ customValidity.message }\n\t\t\t\t\t</p>\n\t\t\t\t) }\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n\nfunction CalendarDateControl< Item >( {\n\tdata,\n\tfield,\n\tonChange,\n\thideLabelFromVision,\n\tvalidity,\n}: DataFormControlProps< Item > ) {\n\tconst {\n\t\tid,\n\t\tlabel,\n\t\tsetValue,\n\t\tgetValue,\n\t\tisValid,\n\t\tformat: fieldFormat,\n\t} = field;\n\tconst [ selectedPresetId, setSelectedPresetId ] = useState< string | null >(\n\t\tnull\n\t);\n\n\tconst weekStartsOn =\n\t\t( fieldFormat as FormatDate ).weekStartsOn ??\n\t\tgetSettings().l10n.startOfWeek;\n\n\tconst fieldValue = getValue( { item: data } );\n\tconst value = typeof fieldValue === 'string' ? fieldValue : undefined;\n\tconst [ calendarMonth, setCalendarMonth ] = useState< Date >( () => {\n\t\tconst parsedDate = parseDate( value );\n\t\treturn parsedDate || new Date(); // Default to current month\n\t} );\n\n\tconst [ isTouched, setIsTouched ] = useState( false );\n\tconst validityTargetRef = useRef< HTMLInputElement >( null );\n\n\tconst onChangeCallback = useCallback(\n\t\t( newValue: string | undefined ) =>\n\t\t\tonChange( setValue( { item: data, value: newValue } ) ),\n\t\t[ data, onChange, setValue ]\n\t);\n\n\tconst onSelectDate = useCallback(\n\t\t( newDate: Date | undefined | null ) => {\n\t\t\tconst dateValue = newDate\n\t\t\t\t? format( newDate, 'yyyy-MM-dd' )\n\t\t\t\t: undefined;\n\t\t\tonChangeCallback( dateValue );\n\t\t\tsetSelectedPresetId( null );\n\t\t\tsetIsTouched( true );\n\t\t},\n\t\t[ onChangeCallback ]\n\t);\n\n\tconst handlePresetClick = useCallback(\n\t\t( preset: ( typeof DATE_PRESETS )[ 0 ] ) => {\n\t\t\tconst presetDate = preset.getValue();\n\t\t\tconst dateValue = formatDate( presetDate );\n\n\t\t\tsetCalendarMonth( presetDate );\n\t\t\tonChangeCallback( dateValue );\n\t\t\tsetSelectedPresetId( preset.id );\n\t\t\tsetIsTouched( true );\n\t\t},\n\t\t[ onChangeCallback ]\n\t);\n\n\tconst handleManualDateChange = useCallback(\n\t\t( newValue?: string ) => {\n\t\t\tonChangeCallback( newValue );\n\t\t\tif ( newValue ) {\n\t\t\t\tconst parsedDate = parseDate( newValue );\n\t\t\t\tif ( parsedDate ) {\n\t\t\t\t\tsetCalendarMonth( parsedDate );\n\t\t\t\t}\n\t\t\t}\n\t\t\tsetSelectedPresetId( null );\n\t\t\tsetIsTouched( true );\n\t\t},\n\t\t[ onChangeCallback ]\n\t);\n\n\tconst {\n\t\ttimezone: { string: timezoneString },\n\t} = getSettings();\n\n\tconst displayLabel = isValid?.required\n\t\t? `${ label } (${ __( 'Required' ) })`\n\t\t: label;\n\n\treturn (\n\t\t<ValidatedDateControl\n\t\t\tfield={ field }\n\t\t\tvalidity={ validity }\n\t\t\tinputRefs={ validityTargetRef }\n\t\t\tisTouched={ isTouched }\n\t\t\tsetIsTouched={ setIsTouched }\n\t\t>\n\t\t\t<BaseControl\n\t\t\t\tid={ id }\n\t\t\t\tclassName=\"dataviews-controls__date\"\n\t\t\t\tlabel={ displayLabel }\n\t\t\t\thideLabelFromVision={ hideLabelFromVision }\n\t\t\t>\n\t\t\t\t<Stack direction=\"column\" gap=\"md\">\n\t\t\t\t\t{ /* Preset buttons */ }\n\t\t\t\t\t<Stack\n\t\t\t\t\t\tdirection=\"row\"\n\t\t\t\t\t\tgap=\"xs\"\n\t\t\t\t\t\twrap=\"wrap\"\n\t\t\t\t\t\tjustify=\"flex-start\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{ DATE_PRESETS.map( ( preset ) => {\n\t\t\t\t\t\t\tconst isSelected = selectedPresetId === preset.id;\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\tclassName=\"dataviews-controls__date-preset\"\n\t\t\t\t\t\t\t\t\tkey={ preset.id }\n\t\t\t\t\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\t\t\t\t\tisPressed={ isSelected }\n\t\t\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t\t\t\tonClick={ () =>\n\t\t\t\t\t\t\t\t\t\thandlePresetClick( preset )\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{ preset.label }\n\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} ) }\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\tclassName=\"dataviews-controls__date-preset\"\n\t\t\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\t\t\tisPressed={ ! selectedPresetId }\n\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t\tdisabled={ !! selectedPresetId }\n\t\t\t\t\t\t\taccessibleWhenDisabled={ false }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __( 'Custom' ) }\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t</Stack>\n\n\t\t\t\t\t{ /* Manual date input */ }\n\t\t\t\t\t<InputControl\n\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\tref={ validityTargetRef }\n\t\t\t\t\t\ttype=\"date\"\n\t\t\t\t\t\tlabel={ __( 'Date' ) }\n\t\t\t\t\t\thideLabelFromVision\n\t\t\t\t\t\tvalue={ value }\n\t\t\t\t\t\tonChange={ handleManualDateChange }\n\t\t\t\t\t\trequired={ !! field.isValid?.required }\n\t\t\t\t\t/>\n\n\t\t\t\t\t{ /* Calendar widget */ }\n\t\t\t\t\t<DateCalendar\n\t\t\t\t\t\tstyle={ { width: '100%' } }\n\t\t\t\t\t\tselected={\n\t\t\t\t\t\t\tvalue ? parseDate( value ) || undefined : undefined\n\t\t\t\t\t\t}\n\t\t\t\t\t\tonSelect={ onSelectDate }\n\t\t\t\t\t\tmonth={ calendarMonth }\n\t\t\t\t\t\tonMonthChange={ setCalendarMonth }\n\t\t\t\t\t\ttimeZone={ timezoneString || undefined }\n\t\t\t\t\t\tweekStartsOn={ weekStartsOn }\n\t\t\t\t\t/>\n\t\t\t\t</Stack>\n\t\t\t</BaseControl>\n\t\t</ValidatedDateControl>\n\t);\n}\n\nfunction CalendarDateRangeControl< Item >( {\n\tdata,\n\tfield,\n\tonChange,\n\thideLabelFromVision,\n\tvalidity,\n}: DataFormControlProps< Item > ) {\n\tconst { id, label, getValue, setValue, format: fieldFormat } = field;\n\tlet value: DateRange;\n\tconst fieldValue = getValue( { item: data } );\n\tif (\n\t\tArray.isArray( fieldValue ) &&\n\t\tfieldValue.length === 2 &&\n\t\tfieldValue.every( ( date ) => typeof date === 'string' )\n\t) {\n\t\tvalue = fieldValue as DateRange;\n\t}\n\n\tconst weekStartsOn =\n\t\t( fieldFormat as FormatDate ).weekStartsOn ??\n\t\tgetSettings().l10n.startOfWeek;\n\n\tconst onChangeCallback = useCallback(\n\t\t( newValue: DateRange ) => {\n\t\t\tonChange(\n\t\t\t\tsetValue( {\n\t\t\t\t\titem: data,\n\t\t\t\t\tvalue: newValue,\n\t\t\t\t} )\n\t\t\t);\n\t\t},\n\t\t[ data, onChange, setValue ]\n\t);\n\n\tconst [ selectedPresetId, setSelectedPresetId ] = useState< string | null >(\n\t\tnull\n\t);\n\n\tconst selectedRange = useMemo( () => {\n\t\tif ( ! value ) {\n\t\t\treturn { from: undefined, to: undefined };\n\t\t}\n\n\t\tconst [ from, to ] = value;\n\t\treturn {\n\t\t\tfrom: parseDate( from ) || undefined,\n\t\t\tto: parseDate( to ) || undefined,\n\t\t};\n\t}, [ value ] );\n\n\tconst [ calendarMonth, setCalendarMonth ] = useState< Date >( () => {\n\t\treturn selectedRange.from || new Date();\n\t} );\n\n\tconst [ isTouched, setIsTouched ] = useState( false );\n\tconst fromInputRef = useRef< HTMLInputElement >( null );\n\tconst toInputRef = useRef< HTMLInputElement >( null );\n\n\tconst updateDateRange = useCallback(\n\t\t( fromDate?: Date | string, toDate?: Date | string ) => {\n\t\t\tif ( fromDate && toDate ) {\n\t\t\t\tonChangeCallback( [\n\t\t\t\t\tformatDate( fromDate ),\n\t\t\t\t\tformatDate( toDate ),\n\t\t\t\t] );\n\t\t\t} else if ( ! fromDate && ! toDate ) {\n\t\t\t\tonChangeCallback( undefined );\n\t\t\t}\n\t\t\t// Do nothing if only one date is set - wait for both\n\t\t},\n\t\t[ onChangeCallback ]\n\t);\n\n\tconst onSelectCalendarRange = useCallback(\n\t\t(\n\t\t\tnewRange:\n\t\t\t\t| { from: Date | undefined; to?: Date | undefined }\n\t\t\t\t| undefined\n\t\t) => {\n\t\t\tupdateDateRange( newRange?.from, newRange?.to );\n\t\t\tsetSelectedPresetId( null );\n\t\t\tsetIsTouched( true );\n\t\t},\n\t\t[ updateDateRange ]\n\t);\n\n\tconst handlePresetClick = useCallback(\n\t\t( preset: ( typeof DATE_RANGE_PRESETS )[ 0 ] ) => {\n\t\t\tconst [ startDate, endDate ] = preset.getValue();\n\t\t\tsetCalendarMonth( startDate );\n\t\t\tupdateDateRange( startDate, endDate );\n\t\t\tsetSelectedPresetId( preset.id );\n\t\t\tsetIsTouched( true );\n\t\t},\n\t\t[ updateDateRange ]\n\t);\n\n\tconst handleManualDateChange = useCallback(\n\t\t( fromOrTo: 'from' | 'to', newValue?: string ) => {\n\t\t\tconst [ currentFrom, currentTo ] = value || [\n\t\t\t\tundefined,\n\t\t\t\tundefined,\n\t\t\t];\n\t\t\tconst updatedFrom = fromOrTo === 'from' ? newValue : currentFrom;\n\t\t\tconst updatedTo = fromOrTo === 'to' ? newValue : currentTo;\n\n\t\t\tupdateDateRange( updatedFrom, updatedTo );\n\n\t\t\tif ( newValue ) {\n\t\t\t\tconst parsedDate = parseDate( newValue );\n\t\t\t\tif ( parsedDate ) {\n\t\t\t\t\tsetCalendarMonth( parsedDate );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tsetSelectedPresetId( null );\n\t\t\tsetIsTouched( true );\n\t\t},\n\t\t[ value, updateDateRange ]\n\t);\n\n\tconst { timezone } = getSettings();\n\n\tconst displayLabel = field.isValid?.required\n\t\t? `${ label } (${ __( 'Required' ) })`\n\t\t: label;\n\n\treturn (\n\t\t<ValidatedDateControl\n\t\t\tfield={ field }\n\t\t\tvalidity={ validity }\n\t\t\tinputRefs={ [ fromInputRef, toInputRef ] }\n\t\t\tisTouched={ isTouched }\n\t\t\tsetIsTouched={ setIsTouched }\n\t\t>\n\t\t\t<BaseControl\n\t\t\t\tid={ id }\n\t\t\t\tclassName=\"dataviews-controls__date\"\n\t\t\t\tlabel={ displayLabel }\n\t\t\t\thideLabelFromVision={ hideLabelFromVision }\n\t\t\t>\n\t\t\t\t<Stack direction=\"column\" gap=\"md\">\n\t\t\t\t\t{ /* Preset buttons */ }\n\t\t\t\t\t<Stack\n\t\t\t\t\t\tdirection=\"row\"\n\t\t\t\t\t\tgap=\"xs\"\n\t\t\t\t\t\twrap=\"wrap\"\n\t\t\t\t\t\tjustify=\"flex-start\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{ DATE_RANGE_PRESETS.map( ( preset ) => {\n\t\t\t\t\t\t\tconst isSelected = selectedPresetId === preset.id;\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\tclassName=\"dataviews-controls__date-preset\"\n\t\t\t\t\t\t\t\t\tkey={ preset.id }\n\t\t\t\t\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\t\t\t\t\tisPressed={ isSelected }\n\t\t\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t\t\t\tonClick={ () =>\n\t\t\t\t\t\t\t\t\t\thandlePresetClick( preset )\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{ preset.label }\n\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} ) }\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\tclassName=\"dataviews-controls__date-preset\"\n\t\t\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\t\t\tisPressed={ ! selectedPresetId }\n\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t\taccessibleWhenDisabled={ false }\n\t\t\t\t\t\t\tdisabled={ !! selectedPresetId }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __( 'Custom' ) }\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t</Stack>\n\n\t\t\t\t\t{ /* Manual date range inputs */ }\n\t\t\t\t\t<Stack\n\t\t\t\t\t\tdirection=\"row\"\n\t\t\t\t\t\tgap=\"xs\"\n\t\t\t\t\t\tjustify=\"space-between\"\n\t\t\t\t\t\tclassName=\"dataviews-controls__date-range-inputs\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<InputControl\n\t\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t\tref={ fromInputRef }\n\t\t\t\t\t\t\ttype=\"date\"\n\t\t\t\t\t\t\tlabel={ __( 'From' ) }\n\t\t\t\t\t\t\thideLabelFromVision\n\t\t\t\t\t\t\tvalue={ value?.[ 0 ] }\n\t\t\t\t\t\t\tonChange={ ( newValue ) =>\n\t\t\t\t\t\t\t\thandleManualDateChange( 'from', newValue )\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\trequired={ !! field.isValid?.required }\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<InputControl\n\t\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t\tref={ toInputRef }\n\t\t\t\t\t\t\ttype=\"date\"\n\t\t\t\t\t\t\tlabel={ __( 'To' ) }\n\t\t\t\t\t\t\thideLabelFromVision\n\t\t\t\t\t\t\tvalue={ value?.[ 1 ] }\n\t\t\t\t\t\t\tonChange={ ( newValue ) =>\n\t\t\t\t\t\t\t\thandleManualDateChange( 'to', newValue )\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\trequired={ !! field.isValid?.required }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</Stack>\n\n\t\t\t\t\t<DateRangeCalendar\n\t\t\t\t\t\tstyle={ { width: '100%' } }\n\t\t\t\t\t\tselected={ selectedRange }\n\t\t\t\t\t\tonSelect={ onSelectCalendarRange }\n\t\t\t\t\t\tmonth={ calendarMonth }\n\t\t\t\t\t\tonMonthChange={ setCalendarMonth }\n\t\t\t\t\t\ttimeZone={ timezone.string || undefined }\n\t\t\t\t\t\tweekStartsOn={ weekStartsOn }\n\t\t\t\t\t/>\n\t\t\t\t</Stack>\n\t\t\t</BaseControl>\n\t\t</ValidatedDateControl>\n\t);\n}\n\nexport default function DateControl< Item >( {\n\tdata,\n\tfield,\n\tonChange,\n\thideLabelFromVision,\n\toperator,\n\tvalidity,\n}: DataFormControlProps< Item > ) {\n\tif ( operator === OPERATOR_IN_THE_PAST || operator === OPERATOR_OVER ) {\n\t\treturn (\n\t\t\t<RelativeDateControl\n\t\t\t\tclassName=\"dataviews-controls__date\"\n\t\t\t\tdata={ data }\n\t\t\t\tfield={ field }\n\t\t\t\tonChange={ onChange }\n\t\t\t\thideLabelFromVision={ hideLabelFromVision }\n\t\t\t\toperator={ operator }\n\t\t\t/>\n\t\t);\n\t}\n\n\tif ( operator === OPERATOR_BETWEEN ) {\n\t\treturn (\n\t\t\t<CalendarDateRangeControl\n\t\t\t\tdata={ data }\n\t\t\t\tfield={ field }\n\t\t\t\tonChange={ onChange }\n\t\t\t\thideLabelFromVision={ hideLabelFromVision }\n\t\t\t\tvalidity={ validity }\n\t\t\t/>\n\t\t);\n\t}\n\n\treturn (\n\t\t<CalendarDateControl\n\t\t\tdata={ data }\n\t\t\tfield={ field }\n\t\t\tonChange={ onChange }\n\t\t\thideLabelFromVision={ hideLabelFromVision }\n\t\t\tvalidity={ validity }\n\t\t/>\n\t);\n}\n", "/**\n * WordPress dependencies\n */\nimport {\n\tIcon,\n\t__experimentalInputControlPrefixWrapper as InputControlPrefixWrapper,\n} from '@wordpress/components';\nimport { envelope } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport type { DataFormControlProps } from '../../types';\nimport ValidatedText from './utils/validated-input';\n\nexport default function Email< Item >( {\n\tdata,\n\tfield,\n\tonChange,\n\thideLabelFromVision,\n\tvalidity,\n}: DataFormControlProps< Item > ) {\n\treturn (\n\t\t<ValidatedText\n\t\t\t{ ...{\n\t\t\t\tdata,\n\t\t\t\tfield,\n\t\t\t\tonChange,\n\t\t\t\thideLabelFromVision,\n\t\t\t\tvalidity,\n\t\t\t\ttype: 'email',\n\t\t\t\tprefix: (\n\t\t\t\t\t<InputControlPrefixWrapper variant=\"icon\">\n\t\t\t\t\t\t<Icon icon={ envelope } />\n\t\t\t\t\t</InputControlPrefixWrapper>\n\t\t\t\t),\n\t\t\t} }\n\t\t/>\n\t);\n}\n", "/**\n * WordPress dependencies\n */\nimport { privateApis } from '@wordpress/components';\nimport { useCallback } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport type { DataFormControlProps } from '../../../types';\nimport { unlock } from '../../../lock-unlock';\nimport getCustomValidity from './get-custom-validity';\n\nconst { ValidatedInputControl } = unlock( privateApis );\n\nexport type DataFormValidatedTextControlProps< Item > =\n\tDataFormControlProps< Item > & {\n\t\t/**\n\t\t * The input type of the control.\n\t\t */\n\t\ttype?: 'text' | 'email' | 'tel' | 'url' | 'password';\n\t\t/**\n\t\t * Optional prefix element to display before the input.\n\t\t */\n\t\tprefix?: React.ReactElement;\n\t\t/**\n\t\t * Optional suffix element to display after the input.\n\t\t */\n\t\tsuffix?: React.ReactElement;\n\t};\n\nexport default function ValidatedText< Item >( {\n\tdata,\n\tfield,\n\tonChange,\n\thideLabelFromVision,\n\ttype,\n\tprefix,\n\tsuffix,\n\tvalidity,\n}: DataFormValidatedTextControlProps< Item > ) {\n\tconst { label, placeholder, description, getValue, setValue, isValid } =\n\t\tfield;\n\tconst value = getValue( { item: data } );\n\n\tconst onChangeControl = useCallback(\n\t\t( newValue: string ) =>\n\t\t\tonChange(\n\t\t\t\tsetValue( {\n\t\t\t\t\titem: data,\n\t\t\t\t\tvalue: newValue,\n\t\t\t\t} )\n\t\t\t),\n\t\t[ data, setValue, onChange ]\n\t);\n\n\treturn (\n\t\t<ValidatedInputControl\n\t\t\trequired={ !! isValid.required }\n\t\t\tcustomValidity={ getCustomValidity( isValid, validity ) }\n\t\t\tlabel={ label }\n\t\t\tplaceholder={ placeholder }\n\t\t\tvalue={ value ?? '' }\n\t\t\thelp={ description }\n\t\t\tonChange={ onChangeControl }\n\t\t\thideLabelFromVision={ hideLabelFromVision }\n\t\t\ttype={ type }\n\t\t\tprefix={ prefix }\n\t\t\tsuffix={ suffix }\n\t\t\tpattern={ isValid.pattern ? isValid.pattern.constraint : undefined }\n\t\t\tminLength={\n\t\t\t\tisValid.minLength ? isValid.minLength.constraint : undefined\n\t\t\t}\n\t\t\tmaxLength={\n\t\t\t\tisValid.maxLength ? isValid.maxLength.constraint : undefined\n\t\t\t}\n\t\t\t__next40pxDefaultSize\n\t\t/>\n\t);\n}\n", "/**\n * WordPress dependencies\n */\nimport {\n\tIcon,\n\t__experimentalInputControlPrefixWrapper as InputControlPrefixWrapper,\n} from '@wordpress/components';\nimport { mobile } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport type { DataFormControlProps } from '../../types';\nimport ValidatedText from './utils/validated-input';\n\nexport default function Telephone< Item >( {\n\tdata,\n\tfield,\n\tonChange,\n\thideLabelFromVision,\n\tvalidity,\n}: DataFormControlProps< Item > ) {\n\treturn (\n\t\t<ValidatedText\n\t\t\t{ ...{\n\t\t\t\tdata,\n\t\t\t\tfield,\n\t\t\t\tonChange,\n\t\t\t\thideLabelFromVision,\n\t\t\t\tvalidity,\n\t\t\t\ttype: 'tel',\n\t\t\t\tprefix: (\n\t\t\t\t\t<InputControlPrefixWrapper variant=\"icon\">\n\t\t\t\t\t\t<Icon icon={ mobile } />\n\t\t\t\t\t</InputControlPrefixWrapper>\n\t\t\t\t),\n\t\t\t} }\n\t\t/>\n\t);\n}\n", "/**\n * WordPress dependencies\n */\nimport {\n\tIcon,\n\t__experimentalInputControlPrefixWrapper as InputControlPrefixWrapper,\n} from '@wordpress/components';\nimport { link } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport type { DataFormControlProps } from '../../types';\nimport ValidatedText from './utils/validated-input';\n\nexport default function Url< Item >( {\n\tdata,\n\tfield,\n\tonChange,\n\thideLabelFromVision,\n\tvalidity,\n}: DataFormControlProps< Item > ) {\n\treturn (\n\t\t<ValidatedText\n\t\t\t{ ...{\n\t\t\t\tdata,\n\t\t\t\tfield,\n\t\t\t\tonChange,\n\t\t\t\thideLabelFromVision,\n\t\t\t\tvalidity,\n\t\t\t\ttype: 'url',\n\t\t\t\tprefix: (\n\t\t\t\t\t<InputControlPrefixWrapper variant=\"icon\">\n\t\t\t\t\t\t<Icon icon={ link } />\n\t\t\t\t\t</InputControlPrefixWrapper>\n\t\t\t\t),\n\t\t\t} }\n\t\t/>\n\t);\n}\n", "/**\n * WordPress dependencies\n */\nimport {\n\tFlex,\n\tBaseControl,\n\t__experimentalNumberControl as NumberControl,\n\tprivateApis,\n} from '@wordpress/components';\nimport { useCallback } from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport { OPERATOR_BETWEEN } from '../../../constants';\nimport type { DataFormControlProps, FormatNumber } from '../../../types';\nimport { unlock } from '../../../lock-unlock';\nimport getCustomValidity from './get-custom-validity';\n\nconst { ValidatedNumberControl } = unlock( privateApis );\n\ntype NumberBetween = [ number | string, number | string ];\n\nfunction toNumberOrEmpty( value?: string ) {\n\tif ( value === '' || value === undefined ) {\n\t\treturn '';\n\t}\n\tconst number = Number( value );\n\treturn Number.isFinite( number ) ? number : '';\n}\n\nfunction BetweenControls( {\n\tvalue,\n\tonChange,\n\thideLabelFromVision,\n\tstep,\n}: {\n\tvalue: NumberBetween;\n\tonChange: ( [ min, max ]: NumberBetween ) => void;\n\thideLabelFromVision?: boolean;\n\tstep: number;\n} ) {\n\tconst [ min = '', max = '' ] = value;\n\n\tconst onChangeMin = useCallback(\n\t\t( newValue: string | undefined ) =>\n\t\t\tonChange( [ toNumberOrEmpty( newValue ), max ] ),\n\t\t[ onChange, max ]\n\t);\n\n\tconst onChangeMax = useCallback(\n\t\t( newValue: string | undefined ) =>\n\t\t\tonChange( [ min, toNumberOrEmpty( newValue ) ] ),\n\t\t[ onChange, min ]\n\t);\n\n\treturn (\n\t\t<BaseControl\n\t\t\thelp={ __( 'The max. value must be greater than the min. value.' ) }\n\t\t>\n\t\t\t<Flex direction=\"row\" gap={ 4 }>\n\t\t\t\t<NumberControl\n\t\t\t\t\tlabel={ __( 'Min.' ) }\n\t\t\t\t\tvalue={ min }\n\t\t\t\t\tmax={ max ? Number( max ) - step : undefined }\n\t\t\t\t\tonChange={ onChangeMin }\n\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\thideLabelFromVision={ hideLabelFromVision }\n\t\t\t\t\tstep={ step }\n\t\t\t\t/>\n\t\t\t\t<NumberControl\n\t\t\t\t\tlabel={ __( 'Max.' ) }\n\t\t\t\t\tvalue={ max }\n\t\t\t\t\tmin={ min ? Number( min ) + step : undefined }\n\t\t\t\t\tonChange={ onChangeMax }\n\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\thideLabelFromVision={ hideLabelFromVision }\n\t\t\t\t\tstep={ step }\n\t\t\t\t/>\n\t\t\t</Flex>\n\t\t</BaseControl>\n\t);\n}\n\nexport default function ValidatedNumber< Item >( {\n\tdata,\n\tfield,\n\tonChange,\n\thideLabelFromVision,\n\toperator,\n\tvalidity,\n}: DataFormControlProps< Item > ) {\n\tconst decimals = ( field.format as FormatNumber )?.decimals ?? 0;\n\tconst step = Math.pow( 10, Math.abs( decimals ) * -1 );\n\tconst { label, description, getValue, setValue, isValid } = field;\n\tconst value = getValue( { item: data } ) ?? '';\n\n\tconst onChangeControl = useCallback(\n\t\t( newValue: string | undefined ) => {\n\t\t\tonChange(\n\t\t\t\tsetValue( {\n\t\t\t\t\titem: data,\n\t\t\t\t\t// Do not convert an empty string or undefined to a number,\n\t\t\t\t\t// otherwise there's a mismatch between the UI control (empty)\n\t\t\t\t\t// and the data relied by onChange (0).\n\t\t\t\t\tvalue: [ '', undefined ].includes( newValue )\n\t\t\t\t\t\t? undefined\n\t\t\t\t\t\t: Number( newValue ),\n\t\t\t\t} )\n\t\t\t);\n\t\t},\n\t\t[ data, onChange, setValue ]\n\t);\n\n\tconst onChangeBetweenControls = useCallback(\n\t\t( newValue: NumberBetween ) => {\n\t\t\tonChange(\n\t\t\t\tsetValue( {\n\t\t\t\t\titem: data,\n\t\t\t\t\tvalue: newValue,\n\t\t\t\t} )\n\t\t\t);\n\t\t},\n\t\t[ data, onChange, setValue ]\n\t);\n\n\tif ( operator === OPERATOR_BETWEEN ) {\n\t\tlet valueBetween: NumberBetween = [ '', '' ];\n\t\tif (\n\t\t\tArray.isArray( value ) &&\n\t\t\tvalue.length === 2 &&\n\t\t\tvalue.every(\n\t\t\t\t( element ) => typeof element === 'number' || element === ''\n\t\t\t)\n\t\t) {\n\t\t\tvalueBetween = value as NumberBetween;\n\t\t}\n\t\treturn (\n\t\t\t<BetweenControls\n\t\t\t\tvalue={ valueBetween }\n\t\t\t\tonChange={ onChangeBetweenControls }\n\t\t\t\thideLabelFromVision={ hideLabelFromVision }\n\t\t\t\tstep={ step }\n\t\t\t/>\n\t\t);\n\t}\n\n\treturn (\n\t\t<ValidatedNumberControl\n\t\t\trequired={ !! isValid.required }\n\t\t\tcustomValidity={ getCustomValidity( isValid, validity ) }\n\t\t\tlabel={ label }\n\t\t\thelp={ description }\n\t\t\tvalue={ value }\n\t\t\tonChange={ onChangeControl }\n\t\t\t__next40pxDefaultSize\n\t\t\thideLabelFromVision={ hideLabelFromVision }\n\t\t\tstep={ step }\n\t\t\tmin={ isValid.min ? isValid.min.constraint : undefined }\n\t\t\tmax={ isValid.max ? isValid.max.constraint : undefined }\n\t\t/>\n\t);\n}\n", "/**\n * Internal dependencies\n */\nimport type { DataFormControlProps } from '../../types';\nimport ValidatedNumber from './utils/validated-number';\n\nexport default function Integer< Item >( props: DataFormControlProps< Item > ) {\n\treturn <ValidatedNumber { ...props } />;\n}\n", "/**\n * Internal dependencies\n */\nimport type { DataFormControlProps } from '../../types';\nimport ValidatedNumber from './utils/validated-number';\n\nexport default function Number< Item >( props: DataFormControlProps< Item > ) {\n\treturn <ValidatedNumber { ...props } />;\n}\n", "/**\n * WordPress dependencies\n */\nimport { privateApis, Spinner } from '@wordpress/components';\nimport { useCallback } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport type { DataFormControlProps } from '../../types';\nimport { unlock } from '../../lock-unlock';\nimport getCustomValidity from './utils/get-custom-validity';\nimport useElements from '../../hooks/use-elements';\n\nconst { ValidatedRadioControl } = unlock( privateApis );\n\nexport default function Radio< Item >( {\n\tdata,\n\tfield,\n\tonChange,\n\thideLabelFromVision,\n\tvalidity,\n}: DataFormControlProps< Item > ) {\n\tconst { label, description, getValue, setValue, isValid } = field;\n\tconst { elements, isLoading } = useElements( {\n\t\telements: field.elements,\n\t\tgetElements: field.getElements,\n\t} );\n\tconst value = getValue( { item: data } );\n\n\tconst onChangeControl = useCallback(\n\t\t( newValue: string ) =>\n\t\t\tonChange( setValue( { item: data, value: newValue } ) ),\n\t\t[ data, onChange, setValue ]\n\t);\n\n\tif ( isLoading ) {\n\t\treturn <Spinner />;\n\t}\n\n\treturn (\n\t\t<ValidatedRadioControl\n\t\t\trequired={ !! field.isValid?.required }\n\t\t\tcustomValidity={ getCustomValidity( isValid, validity ) }\n\t\t\tlabel={ label }\n\t\t\thelp={ description }\n\t\t\tonChange={ onChangeControl }\n\t\t\toptions={ elements }\n\t\t\tselected={ value }\n\t\t\thideLabelFromVision={ hideLabelFromVision }\n\t\t/>\n\t);\n}\n", "/**\n * WordPress dependencies\n */\nimport { privateApis, Spinner } from '@wordpress/components';\nimport { useCallback } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport type { DataFormControlProps } from '../../types';\nimport useElements from '../../hooks/use-elements';\nimport { unlock } from '../../lock-unlock';\nimport getCustomValidity from './utils/get-custom-validity';\n\nconst { ValidatedSelectControl } = unlock( privateApis );\n\nexport default function Select< Item >( {\n\tdata,\n\tfield,\n\tonChange,\n\thideLabelFromVision,\n\tvalidity,\n}: DataFormControlProps< Item > ) {\n\tconst { type, label, description, getValue, setValue, isValid } = field;\n\n\tconst isMultiple = type === 'array';\n\tconst value = getValue( { item: data } ) ?? ( isMultiple ? [] : '' );\n\n\tconst onChangeControl = useCallback(\n\t\t( newValue: any ) =>\n\t\t\tonChange( setValue( { item: data, value: newValue } ) ),\n\t\t[ data, onChange, setValue ]\n\t);\n\n\tconst { elements, isLoading } = useElements( {\n\t\telements: field.elements,\n\t\tgetElements: field.getElements,\n\t} );\n\n\tif ( isLoading ) {\n\t\treturn <Spinner />;\n\t}\n\n\treturn (\n\t\t<ValidatedSelectControl\n\t\t\trequired={ !! field.isValid?.required }\n\t\t\tcustomValidity={ getCustomValidity( isValid, validity ) }\n\t\t\tlabel={ label }\n\t\t\tvalue={ value }\n\t\t\thelp={ description }\n\t\t\toptions={ elements }\n\t\t\tonChange={ onChangeControl }\n\t\t\t__next40pxDefaultSize\n\t\t\thideLabelFromVision={ hideLabelFromVision }\n\t\t\tmultiple={ isMultiple }\n\t\t/>\n\t);\n}\n", "/**\n * WordPress dependencies\n */\nimport { createElement } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport type { DataFormControlProps } from '../../types';\nimport ValidatedText from './utils/validated-input';\n\nexport default function Text< Item >( {\n\tdata,\n\tfield,\n\tonChange,\n\thideLabelFromVision,\n\tconfig,\n\tvalidity,\n}: DataFormControlProps< Item > ) {\n\tconst { prefix, suffix } = config || {};\n\n\treturn (\n\t\t<ValidatedText\n\t\t\t{ ...{\n\t\t\t\tdata,\n\t\t\t\tfield,\n\t\t\t\tonChange,\n\t\t\t\thideLabelFromVision,\n\t\t\t\tvalidity,\n\t\t\t\tprefix: prefix ? createElement( prefix ) : undefined,\n\t\t\t\tsuffix: suffix ? createElement( suffix ) : undefined,\n\t\t\t} }\n\t\t/>\n\t);\n}\n", "/**\n * WordPress dependencies\n */\nimport { privateApis } from '@wordpress/components';\nimport { useCallback } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport type { DataFormControlProps } from '../../types';\nimport { unlock } from '../../lock-unlock';\nimport getCustomValidity from './utils/get-custom-validity';\n\nconst { ValidatedToggleControl } = unlock( privateApis );\n\nexport default function Toggle< Item >( {\n\tfield,\n\tonChange,\n\tdata,\n\thideLabelFromVision,\n\tvalidity,\n}: DataFormControlProps< Item > ) {\n\tconst { label, description, getValue, setValue, isValid } = field;\n\n\tconst onChangeControl = useCallback( () => {\n\t\tonChange(\n\t\t\tsetValue( { item: data, value: ! getValue( { item: data } ) } )\n\t\t);\n\t}, [ onChange, setValue, data, getValue ] );\n\n\treturn (\n\t\t<ValidatedToggleControl\n\t\t\trequired={ !! isValid.required }\n\t\t\tcustomValidity={ getCustomValidity( isValid, validity ) }\n\t\t\thidden={ hideLabelFromVision }\n\t\t\tlabel={ label }\n\t\t\thelp={ description }\n\t\t\tchecked={ getValue( { item: data } ) }\n\t\t\tonChange={ onChangeControl }\n\t\t/>\n\t);\n}\n", "/**\n * WordPress dependencies\n */\nimport { privateApis } from '@wordpress/components';\nimport { useCallback } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport type { DataFormControlProps } from '../../types';\nimport { unlock } from '../../lock-unlock';\nimport getCustomValidity from './utils/get-custom-validity';\n\nconst { ValidatedTextareaControl } = unlock( privateApis );\n\nexport default function Textarea< Item >( {\n\tdata,\n\tfield,\n\tonChange,\n\thideLabelFromVision,\n\tconfig,\n\tvalidity,\n}: DataFormControlProps< Item > ) {\n\tconst { rows = 4 } = config || {};\n\tconst { label, placeholder, description, setValue, isValid } = field;\n\tconst value = field.getValue( { item: data } );\n\n\tconst onChangeControl = useCallback(\n\t\t( newValue: string ) =>\n\t\t\tonChange( setValue( { item: data, value: newValue } ) ),\n\t\t[ data, onChange, setValue ]\n\t);\n\n\treturn (\n\t\t<ValidatedTextareaControl\n\t\t\trequired={ !! isValid.required }\n\t\t\tcustomValidity={ getCustomValidity( isValid, validity ) }\n\t\t\tlabel={ label }\n\t\t\tplaceholder={ placeholder }\n\t\t\tvalue={ value ?? '' }\n\t\t\thelp={ description }\n\t\t\tonChange={ onChangeControl }\n\t\t\trows={ rows }\n\t\t\tminLength={\n\t\t\t\tisValid.minLength ? isValid.minLength.constraint : undefined\n\t\t\t}\n\t\t\tmaxLength={\n\t\t\t\tisValid.maxLength ? isValid.maxLength.constraint : undefined\n\t\t\t}\n\t\t\t__next40pxDefaultSize\n\t\t\thideLabelFromVision={ hideLabelFromVision }\n\t\t/>\n\t);\n}\n", "/**\n * WordPress dependencies\n */\nimport {\n\tprivateApis,\n\t__experimentalToggleGroupControlOption as ToggleGroupControlOption,\n\tSpinner,\n} from '@wordpress/components';\nimport { useCallback } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport type { DataFormControlProps } from '../../types';\nimport { unlock } from '../../lock-unlock';\nimport getCustomValidity from './utils/get-custom-validity';\nimport useElements from '../../hooks/use-elements';\n\nconst { ValidatedToggleGroupControl } = unlock( privateApis );\n\nexport default function ToggleGroup< Item >( {\n\tdata,\n\tfield,\n\tonChange,\n\thideLabelFromVision,\n\tvalidity,\n}: DataFormControlProps< Item > ) {\n\tconst { getValue, setValue, isValid } = field;\n\tconst value = getValue( { item: data } );\n\n\tconst onChangeControl = useCallback(\n\t\t( newValue: string | number | undefined ) =>\n\t\t\tonChange( setValue( { item: data, value: newValue } ) ),\n\t\t[ data, onChange, setValue ]\n\t);\n\n\tconst { elements, isLoading } = useElements( {\n\t\telements: field.elements,\n\t\tgetElements: field.getElements,\n\t} );\n\n\tif ( isLoading ) {\n\t\treturn <Spinner />;\n\t}\n\n\tif ( elements.length === 0 ) {\n\t\treturn null;\n\t}\n\n\tconst selectedOption = elements.find( ( el ) => el.value === value );\n\treturn (\n\t\t<ValidatedToggleGroupControl\n\t\t\trequired={ !! field.isValid?.required }\n\t\t\tcustomValidity={ getCustomValidity( isValid, validity ) }\n\t\t\t__next40pxDefaultSize\n\t\t\tisBlock\n\t\t\tlabel={ field.label }\n\t\t\thelp={ selectedOption?.description || field.description }\n\t\t\tonChange={ onChangeControl }\n\t\t\tvalue={ value }\n\t\t\thideLabelFromVision={ hideLabelFromVision }\n\t\t>\n\t\t\t{ elements.map( ( el ) => (\n\t\t\t\t<ToggleGroupControlOption\n\t\t\t\t\tkey={ el.value }\n\t\t\t\t\tlabel={ el.label }\n\t\t\t\t\tvalue={ el.value }\n\t\t\t\t/>\n\t\t\t) ) }\n\t\t</ValidatedToggleGroupControl>\n\t);\n}\n", "/**\n * WordPress dependencies\n */\nimport { privateApis, Spinner } from '@wordpress/components';\nimport { useCallback, useMemo } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport type { DataFormControlProps } from '../../types';\nimport { unlock } from '../../lock-unlock';\nimport getCustomValidity from './utils/get-custom-validity';\nimport useElements from '../../hooks/use-elements';\n\nconst { ValidatedFormTokenField } = unlock( privateApis );\n\nexport default function ArrayControl< Item >( {\n\tdata,\n\tfield,\n\tonChange,\n\thideLabelFromVision,\n\tvalidity,\n}: DataFormControlProps< Item > ) {\n\tconst { label, placeholder, getValue, setValue, isValid } = field;\n\tconst value = getValue( { item: data } );\n\n\tconst { elements, isLoading } = useElements( {\n\t\telements: field.elements,\n\t\tgetElements: field.getElements,\n\t} );\n\n\t// Convert stored values to element objects for the token field\n\tconst arrayValueAsElements = useMemo(\n\t\t() =>\n\t\t\tArray.isArray( value )\n\t\t\t\t? value.map( ( token ) => {\n\t\t\t\t\t\tconst element = elements?.find(\n\t\t\t\t\t\t\t( suggestion ) => suggestion.value === token\n\t\t\t\t\t\t);\n\t\t\t\t\t\treturn element || { value: token, label: token };\n\t\t\t\t } )\n\t\t\t\t: [],\n\t\t[ value, elements ]\n\t);\n\n\tconst onChangeControl = useCallback(\n\t\t( tokens: ( string | { value: string; label?: string } )[] ) => {\n\t\t\tconst valueTokens = tokens.map( ( token ) => {\n\t\t\t\tif ( typeof token === 'object' && 'value' in token ) {\n\t\t\t\t\treturn token.value;\n\t\t\t\t}\n\t\t\t\t// If it's a string, it's either a new suggestion value or user input\n\t\t\t\treturn token;\n\t\t\t} );\n\n\t\t\tonChange( setValue( { item: data, value: valueTokens } ) );\n\t\t},\n\t\t[ onChange, setValue, data ]\n\t);\n\n\tif ( isLoading ) {\n\t\treturn <Spinner />;\n\t}\n\n\treturn (\n\t\t<ValidatedFormTokenField\n\t\t\trequired={ !! isValid?.required }\n\t\t\tcustomValidity={ getCustomValidity( isValid, validity ) }\n\t\t\tlabel={ hideLabelFromVision ? undefined : label }\n\t\t\tvalue={ arrayValueAsElements }\n\t\t\tonChange={ onChangeControl }\n\t\t\tplaceholder={ placeholder }\n\t\t\tsuggestions={ elements?.map( ( element ) => element.value ) }\n\t\t\t__experimentalValidateInput={ ( token: string ) => {\n\t\t\t\t// If elements validation is required, check if token is valid\n\t\t\t\tif ( field.isValid?.elements && elements ) {\n\t\t\t\t\treturn elements.some(\n\t\t\t\t\t\t( element ) =>\n\t\t\t\t\t\t\telement.value === token || element.label === token\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\t// For non-elements validation, allow all tokens\n\t\t\t\treturn true;\n\t\t\t} }\n\t\t\t__experimentalExpandOnFocus={ elements && elements.length > 0 }\n\t\t\t__experimentalShowHowTo={ ! field.isValid?.elements }\n\t\t\tdisplayTransform={ ( token: any ) => {\n\t\t\t\t// For existing tokens (element objects), display their label\n\t\t\t\tif ( typeof token === 'object' && 'label' in token ) {\n\t\t\t\t\treturn token.label;\n\t\t\t\t}\n\t\t\t\t// For suggestions (value strings), find the corresponding element and show its label\n\t\t\t\tif ( typeof token === 'string' && elements ) {\n\t\t\t\t\tconst element = elements.find(\n\t\t\t\t\t\t( el ) => el.value === token\n\t\t\t\t\t);\n\t\t\t\t\treturn element?.label || token;\n\t\t\t\t}\n\t\t\t\treturn token;\n\t\t\t} }\n\t\t\t__experimentalRenderItem={ ( { item }: { item: any } ) => {\n\t\t\t\t// Custom rendering for suggestion items (item is a value string)\n\t\t\t\tif ( typeof item === 'string' && elements ) {\n\t\t\t\t\tconst element = elements.find(\n\t\t\t\t\t\t( el ) => el.value === item\n\t\t\t\t\t);\n\t\t\t\t\treturn <span>{ element?.label || item }</span>;\n\t\t\t\t}\n\t\t\t\treturn <span>{ item }</span>;\n\t\t\t} }\n\t\t/>\n\t);\n}\n", "var r={grad:.9,turn:360,rad:360/(2*Math.PI)},t=function(r){return\"string\"==typeof r?r.length>0:\"number\"==typeof r},n=function(r,t,n){return void 0===t&&(t=0),void 0===n&&(n=Math.pow(10,t)),Math.round(n*r)/n+0},e=function(r,t,n){return void 0===t&&(t=0),void 0===n&&(n=1),r>n?n:r>t?r:t},u=function(r){return(r=isFinite(r)?r%360:0)>0?r:r+360},a=function(r){return{r:e(r.r,0,255),g:e(r.g,0,255),b:e(r.b,0,255),a:e(r.a)}},o=function(r){return{r:n(r.r),g:n(r.g),b:n(r.b),a:n(r.a,3)}},i=/^#([0-9a-f]{3,8})$/i,s=function(r){var t=r.toString(16);return t.length<2?\"0\"+t:t},h=function(r){var t=r.r,n=r.g,e=r.b,u=r.a,a=Math.max(t,n,e),o=a-Math.min(t,n,e),i=o?a===t?(n-e)/o:a===n?2+(e-t)/o:4+(t-n)/o:0;return{h:60*(i<0?i+6:i),s:a?o/a*100:0,v:a/255*100,a:u}},b=function(r){var t=r.h,n=r.s,e=r.v,u=r.a;t=t/360*6,n/=100,e/=100;var a=Math.floor(t),o=e*(1-n),i=e*(1-(t-a)*n),s=e*(1-(1-t+a)*n),h=a%6;return{r:255*[e,i,o,o,s,e][h],g:255*[s,e,e,i,o,o][h],b:255*[o,o,s,e,e,i][h],a:u}},g=function(r){return{h:u(r.h),s:e(r.s,0,100),l:e(r.l,0,100),a:e(r.a)}},d=function(r){return{h:n(r.h),s:n(r.s),l:n(r.l),a:n(r.a,3)}},f=function(r){return b((n=(t=r).s,{h:t.h,s:(n*=((e=t.l)<50?e:100-e)/100)>0?2*n/(e+n)*100:0,v:e+n,a:t.a}));var t,n,e},c=function(r){return{h:(t=h(r)).h,s:(u=(200-(n=t.s))*(e=t.v)/100)>0&&u<200?n*e/100/(u<=100?u:200-u)*100:0,l:u/2,a:t.a};var t,n,e,u},l=/^hsla?\\(\\s*([+-]?\\d*\\.?\\d+)(deg|rad|grad|turn)?\\s*,\\s*([+-]?\\d*\\.?\\d+)%\\s*,\\s*([+-]?\\d*\\.?\\d+)%\\s*(?:,\\s*([+-]?\\d*\\.?\\d+)(%)?\\s*)?\\)$/i,p=/^hsla?\\(\\s*([+-]?\\d*\\.?\\d+)(deg|rad|grad|turn)?\\s+([+-]?\\d*\\.?\\d+)%\\s+([+-]?\\d*\\.?\\d+)%\\s*(?:\\/\\s*([+-]?\\d*\\.?\\d+)(%)?\\s*)?\\)$/i,v=/^rgba?\\(\\s*([+-]?\\d*\\.?\\d+)(%)?\\s*,\\s*([+-]?\\d*\\.?\\d+)(%)?\\s*,\\s*([+-]?\\d*\\.?\\d+)(%)?\\s*(?:,\\s*([+-]?\\d*\\.?\\d+)(%)?\\s*)?\\)$/i,m=/^rgba?\\(\\s*([+-]?\\d*\\.?\\d+)(%)?\\s+([+-]?\\d*\\.?\\d+)(%)?\\s+([+-]?\\d*\\.?\\d+)(%)?\\s*(?:\\/\\s*([+-]?\\d*\\.?\\d+)(%)?\\s*)?\\)$/i,y={string:[[function(r){var t=i.exec(r);return t?(r=t[1]).length<=4?{r:parseInt(r[0]+r[0],16),g:parseInt(r[1]+r[1],16),b:parseInt(r[2]+r[2],16),a:4===r.length?n(parseInt(r[3]+r[3],16)/255,2):1}:6===r.length||8===r.length?{r:parseInt(r.substr(0,2),16),g:parseInt(r.substr(2,2),16),b:parseInt(r.substr(4,2),16),a:8===r.length?n(parseInt(r.substr(6,2),16)/255,2):1}:null:null},\"hex\"],[function(r){var t=v.exec(r)||m.exec(r);return t?t[2]!==t[4]||t[4]!==t[6]?null:a({r:Number(t[1])/(t[2]?100/255:1),g:Number(t[3])/(t[4]?100/255:1),b:Number(t[5])/(t[6]?100/255:1),a:void 0===t[7]?1:Number(t[7])/(t[8]?100:1)}):null},\"rgb\"],[function(t){var n=l.exec(t)||p.exec(t);if(!n)return null;var e,u,a=g({h:(e=n[1],u=n[2],void 0===u&&(u=\"deg\"),Number(e)*(r[u]||1)),s:Number(n[3]),l:Number(n[4]),a:void 0===n[5]?1:Number(n[5])/(n[6]?100:1)});return f(a)},\"hsl\"]],object:[[function(r){var n=r.r,e=r.g,u=r.b,o=r.a,i=void 0===o?1:o;return t(n)&&t(e)&&t(u)?a({r:Number(n),g:Number(e),b:Number(u),a:Number(i)}):null},\"rgb\"],[function(r){var n=r.h,e=r.s,u=r.l,a=r.a,o=void 0===a?1:a;if(!t(n)||!t(e)||!t(u))return null;var i=g({h:Number(n),s:Number(e),l:Number(u),a:Number(o)});return f(i)},\"hsl\"],[function(r){var n=r.h,a=r.s,o=r.v,i=r.a,s=void 0===i?1:i;if(!t(n)||!t(a)||!t(o))return null;var h=function(r){return{h:u(r.h),s:e(r.s,0,100),v:e(r.v,0,100),a:e(r.a)}}({h:Number(n),s:Number(a),v:Number(o),a:Number(s)});return b(h)},\"hsv\"]]},N=function(r,t){for(var n=0;n<t.length;n++){var e=t[n][0](r);if(e)return[e,t[n][1]]}return[null,void 0]},x=function(r){return\"string\"==typeof r?N(r.trim(),y.string):\"object\"==typeof r&&null!==r?N(r,y.object):[null,void 0]},I=function(r){return x(r)[1]},M=function(r,t){var n=c(r);return{h:n.h,s:e(n.s+100*t,0,100),l:n.l,a:n.a}},H=function(r){return(299*r.r+587*r.g+114*r.b)/1e3/255},$=function(r,t){var n=c(r);return{h:n.h,s:n.s,l:e(n.l+100*t,0,100),a:n.a}},j=function(){function r(r){this.parsed=x(r)[0],this.rgba=this.parsed||{r:0,g:0,b:0,a:1}}return r.prototype.isValid=function(){return null!==this.parsed},r.prototype.brightness=function(){return n(H(this.rgba),2)},r.prototype.isDark=function(){return H(this.rgba)<.5},r.prototype.isLight=function(){return H(this.rgba)>=.5},r.prototype.toHex=function(){return r=o(this.rgba),t=r.r,e=r.g,u=r.b,i=(a=r.a)<1?s(n(255*a)):\"\",\"#\"+s(t)+s(e)+s(u)+i;var r,t,e,u,a,i},r.prototype.toRgb=function(){return o(this.rgba)},r.prototype.toRgbString=function(){return r=o(this.rgba),t=r.r,n=r.g,e=r.b,(u=r.a)<1?\"rgba(\"+t+\", \"+n+\", \"+e+\", \"+u+\")\":\"rgb(\"+t+\", \"+n+\", \"+e+\")\";var r,t,n,e,u},r.prototype.toHsl=function(){return d(c(this.rgba))},r.prototype.toHslString=function(){return r=d(c(this.rgba)),t=r.h,n=r.s,e=r.l,(u=r.a)<1?\"hsla(\"+t+\", \"+n+\"%, \"+e+\"%, \"+u+\")\":\"hsl(\"+t+\", \"+n+\"%, \"+e+\"%)\";var r,t,n,e,u},r.prototype.toHsv=function(){return r=h(this.rgba),{h:n(r.h),s:n(r.s),v:n(r.v),a:n(r.a,3)};var r},r.prototype.invert=function(){return w({r:255-(r=this.rgba).r,g:255-r.g,b:255-r.b,a:r.a});var r},r.prototype.saturate=function(r){return void 0===r&&(r=.1),w(M(this.rgba,r))},r.prototype.desaturate=function(r){return void 0===r&&(r=.1),w(M(this.rgba,-r))},r.prototype.grayscale=function(){return w(M(this.rgba,-1))},r.prototype.lighten=function(r){return void 0===r&&(r=.1),w($(this.rgba,r))},r.prototype.darken=function(r){return void 0===r&&(r=.1),w($(this.rgba,-r))},r.prototype.rotate=function(r){return void 0===r&&(r=15),this.hue(this.hue()+r)},r.prototype.alpha=function(r){return\"number\"==typeof r?w({r:(t=this.rgba).r,g:t.g,b:t.b,a:r}):n(this.rgba.a,3);var t},r.prototype.hue=function(r){var t=c(this.rgba);return\"number\"==typeof r?w({h:r,s:t.s,l:t.l,a:t.a}):n(t.h)},r.prototype.isEqual=function(r){return this.toHex()===w(r).toHex()},r}(),w=function(r){return r instanceof j?r:new j(r)},S=[],k=function(r){r.forEach(function(r){S.indexOf(r)<0&&(r(j,y),S.push(r))})},E=function(){return new j({r:255*Math.random(),g:255*Math.random(),b:255*Math.random()})};export{j as Colord,w as colord,k as extend,I as getFormat,E as random};\n", "/**\n * External dependencies\n */\nimport { colord } from 'colord';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tDropdown,\n\tprivateApis,\n\t__experimentalInputControlPrefixWrapper as InputControlPrefixWrapper,\n} from '@wordpress/components';\nimport { useCallback } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport type { DataFormControlProps } from '../../types';\nimport { unlock } from '../../lock-unlock';\nimport getCustomValidity from './utils/get-custom-validity';\n\nconst { ValidatedInputControl, Picker } = unlock( privateApis );\n\nconst ColorPicker = ( {\n\tcolor,\n\tonColorChange,\n}: {\n\tcolor: string;\n\tonColorChange: ( colorObject: any ) => void;\n} ) => {\n\tconst validColor = color && colord( color ).isValid() ? color : '#ffffff';\n\n\treturn (\n\t\t<Dropdown\n\t\t\trenderToggle={ ( { onToggle, isOpen } ) => (\n\t\t\t\t<InputControlPrefixWrapper variant=\"icon\">\n\t\t\t\t\t<button\n\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\tonClick={ onToggle }\n\t\t\t\t\t\tstyle={ {\n\t\t\t\t\t\t\twidth: '24px',\n\t\t\t\t\t\t\theight: '24px',\n\t\t\t\t\t\t\tborderRadius: '50%',\n\t\t\t\t\t\t\tbackgroundColor: validColor,\n\t\t\t\t\t\t\tborder: '1px solid #ddd',\n\t\t\t\t\t\t\tcursor: 'pointer',\n\t\t\t\t\t\t\toutline: isOpen ? '2px solid #007cba' : 'none',\n\t\t\t\t\t\t\toutlineOffset: '2px',\n\t\t\t\t\t\t\tdisplay: 'flex',\n\t\t\t\t\t\t\talignItems: 'center',\n\t\t\t\t\t\t\tjustifyContent: 'center',\n\t\t\t\t\t\t\tpadding: 0,\n\t\t\t\t\t\t\tmargin: 0,\n\t\t\t\t\t\t} }\n\t\t\t\t\t\taria-label=\"Open color picker\"\n\t\t\t\t\t/>\n\t\t\t\t</InputControlPrefixWrapper>\n\t\t\t) }\n\t\t\trenderContent={ () => (\n\t\t\t\t<div style={ { padding: '16px' } }>\n\t\t\t\t\t<Picker\n\t\t\t\t\t\tcolor={ colord( validColor ) }\n\t\t\t\t\t\tonChange={ onColorChange }\n\t\t\t\t\t\tenableAlpha\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t) }\n\t\t/>\n\t);\n};\n\nexport default function Color< Item >( {\n\tdata,\n\tfield,\n\tonChange,\n\thideLabelFromVision,\n\tvalidity,\n}: DataFormControlProps< Item > ) {\n\tconst { label, placeholder, description, setValue, isValid } = field;\n\tconst value = field.getValue( { item: data } ) || '';\n\n\tconst handleColorChange = useCallback(\n\t\t( colorObject: any ) => {\n\t\t\tonChange( setValue( { item: data, value: colorObject.toHex() } ) );\n\t\t},\n\t\t[ data, onChange, setValue ]\n\t);\n\n\tconst handleInputChange = useCallback(\n\t\t( newValue: string | undefined ) => {\n\t\t\tonChange( setValue( { item: data, value: newValue || '' } ) );\n\t\t},\n\t\t[ data, onChange, setValue ]\n\t);\n\n\treturn (\n\t\t<ValidatedInputControl\n\t\t\trequired={ !! field.isValid?.required }\n\t\t\tcustomValidity={ getCustomValidity( isValid, validity ) }\n\t\t\tlabel={ label }\n\t\t\tplaceholder={ placeholder }\n\t\t\tvalue={ value }\n\t\t\thelp={ description }\n\t\t\tonChange={ handleInputChange }\n\t\t\thideLabelFromVision={ hideLabelFromVision }\n\t\t\ttype=\"text\"\n\t\t\tprefix={\n\t\t\t\t<ColorPicker\n\t\t\t\t\tcolor={ value }\n\t\t\t\t\tonColorChange={ handleColorChange }\n\t\t\t\t/>\n\t\t\t}\n\t\t/>\n\t);\n}\n", "/**\n * WordPress dependencies\n */\nimport {\n\t__experimentalInputControlSuffixWrapper as InputControlSuffixWrapper,\n\tButton,\n} from '@wordpress/components';\nimport { useCallback, useState } from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\nimport { seen, unseen } from '@wordpress/icons';\n/**\n * Internal dependencies\n */\nimport ValidatedText from './utils/validated-input';\nimport type { DataFormControlProps } from '../../types';\n\nexport default function Password< Item >( {\n\tdata,\n\tfield,\n\tonChange,\n\thideLabelFromVision,\n\tvalidity,\n}: DataFormControlProps< Item > ) {\n\tconst [ isVisible, setIsVisible ] = useState( false );\n\n\tconst toggleVisibility = useCallback( () => {\n\t\tsetIsVisible( ( prev ) => ! prev );\n\t}, [] );\n\n\treturn (\n\t\t<ValidatedText\n\t\t\t{ ...{\n\t\t\t\tdata,\n\t\t\t\tfield,\n\t\t\t\tonChange,\n\t\t\t\thideLabelFromVision,\n\t\t\t\tvalidity,\n\t\t\t\ttype: isVisible ? 'text' : 'password',\n\t\t\t\tsuffix: (\n\t\t\t\t\t<InputControlSuffixWrapper variant=\"control\">\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\ticon={ isVisible ? unseen : seen }\n\t\t\t\t\t\t\tonClick={ toggleVisibility }\n\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t\tlabel={\n\t\t\t\t\t\t\t\tisVisible\n\t\t\t\t\t\t\t\t\t? __( 'Hide password' )\n\t\t\t\t\t\t\t\t\t: __( 'Show password' )\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</InputControlSuffixWrapper>\n\t\t\t\t),\n\t\t\t} }\n\t\t/>\n\t);\n}\n", "/**\n * Internal dependencies\n */\nimport type { Field } from '../../types/field-api';\n\nexport default function hasElements< Item >( field: Field< Item > ): boolean {\n\treturn (\n\t\t( Array.isArray( field.elements ) && field.elements.length > 0 ) ||\n\t\ttypeof field.getElements === 'function'\n\t);\n}\n", "/**\n * External dependencies\n */\nimport type { ComponentType } from 'react';\n\n/**\n * Internal dependencies\n */\nimport type { DataFormControlProps, Field, EditConfig } from '../../types';\nimport checkbox from './checkbox';\nimport datetime from './datetime';\nimport date from './date';\nimport email from './email';\nimport telephone from './telephone';\nimport url from './url';\nimport integer from './integer';\nimport number from './number';\nimport radio from './radio';\nimport select from './select';\nimport text from './text';\nimport toggle from './toggle';\nimport textarea from './textarea';\nimport toggleGroup from './toggle-group';\nimport array from './array';\nimport color from './color';\nimport password from './password';\nimport hasElements from '../../field-types/utils/has-elements';\n\ninterface FormControls {\n\t[ key: string ]: ComponentType< DataFormControlProps< any > >;\n}\n\nconst FORM_CONTROLS: FormControls = {\n\tarray,\n\tcheckbox,\n\tcolor,\n\tdatetime,\n\tdate,\n\temail,\n\ttelephone,\n\turl,\n\tinteger,\n\tnumber,\n\tpassword,\n\tradio,\n\tselect,\n\ttext,\n\ttoggle,\n\ttextarea,\n\ttoggleGroup,\n};\n\nfunction isEditConfig( value: any ): value is EditConfig {\n\treturn (\n\t\tvalue && typeof value === 'object' && typeof value.control === 'string'\n\t);\n}\n\nfunction createConfiguredControl( config: EditConfig ) {\n\tconst { control, ...controlConfig } = config;\n\tconst BaseControlType = getControlByType( control );\n\tif ( BaseControlType === null ) {\n\t\treturn null;\n\t}\n\n\treturn function ConfiguredControl< Item >(\n\t\tprops: DataFormControlProps< Item >\n\t) {\n\t\treturn <BaseControlType { ...props } config={ controlConfig } />;\n\t};\n}\n\nexport function getControl< Item >(\n\tfield: Field< Item >,\n\tfallback: string | null\n): ComponentType< DataFormControlProps< Item > > | null {\n\tif ( typeof field.Edit === 'function' ) {\n\t\treturn field.Edit;\n\t}\n\n\tif ( typeof field.Edit === 'string' ) {\n\t\treturn getControlByType( field.Edit );\n\t}\n\n\tif ( isEditConfig( field.Edit ) ) {\n\t\treturn createConfiguredControl( field.Edit );\n\t}\n\n\tif ( hasElements( field ) && field.type !== 'array' ) {\n\t\treturn getControlByType( 'select' );\n\t}\n\n\tif ( fallback === null ) {\n\t\treturn null;\n\t}\n\n\treturn getControlByType( fallback );\n}\n\nexport function getControlByType( type: string ) {\n\tif ( Object.keys( FORM_CONTROLS ).includes( type ) ) {\n\t\treturn FORM_CONTROLS[ type ];\n\t}\n\n\treturn null;\n}\n", "/**\n * Internal dependencies\n */\nimport type { Field, FilterByConfig, Operator } from '../../types';\n\nfunction getFilterBy< Item >(\n\tfield: Field< Item >,\n\tdefaultOperators: Operator[],\n\tvalidOperators: Operator[]\n): Required< FilterByConfig > | false {\n\tif ( field.filterBy === false ) {\n\t\treturn false;\n\t}\n\n\tconst operators =\n\t\tfield.filterBy?.operators?.filter( ( op ) =>\n\t\t\tvalidOperators.includes( op )\n\t\t) ?? defaultOperators;\n\n\t// If no operators are left at this point,\n\t// the filters should be disabled.\n\tif ( operators.length === 0 ) {\n\t\treturn false;\n\t}\n\n\treturn {\n\t\tisPrimary: !! field.filterBy?.isPrimary,\n\t\toperators,\n\t};\n}\n\nexport default getFilterBy;\n", "const getValueFromId =\n\t( id: string ) =>\n\t( { item }: { item: any } ) => {\n\t\tconst path = id.split( '.' );\n\t\tlet value = item;\n\t\tfor ( const segment of path ) {\n\t\t\tif ( value.hasOwnProperty( segment ) ) {\n\t\t\t\tvalue = value[ segment ];\n\t\t\t} else {\n\t\t\t\tvalue = undefined;\n\t\t\t}\n\t\t}\n\n\t\treturn value;\n\t};\n\nexport default getValueFromId;\n", "const setValueFromId =\n\t( id: string ) =>\n\t( { value }: { value: any } ) => {\n\t\tconst path = id.split( '.' );\n\t\tconst result: any = {};\n\t\tlet current = result;\n\n\t\tfor ( const segment of path.slice( 0, -1 ) ) {\n\t\t\tcurrent[ segment ] = {};\n\t\t\tcurrent = current[ segment ];\n\t\t}\n\n\t\tcurrent[ path.at( -1 )! ] = value;\n\t\treturn result;\n\t};\n\nexport default setValueFromId;\n", "/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport type { NormalizedField } from '../types';\nimport type { FieldType } from '../types/private';\nimport {\n\tOPERATOR_IS,\n\tOPERATOR_IS_ALL,\n\tOPERATOR_IS_NOT_ALL,\n\tOPERATOR_IS_ANY,\n\tOPERATOR_IS_NONE,\n\tOPERATOR_IS_NOT,\n\tOPERATOR_CONTAINS,\n\tOPERATOR_NOT_CONTAINS,\n\tOPERATOR_STARTS_WITH,\n} from '../constants';\nimport render from './utils/render-default';\nimport sort from './utils/sort-text';\nimport isValidRequired from './utils/is-valid-required';\nimport isValidMinLength from './utils/is-valid-min-length';\nimport isValidMaxLength from './utils/is-valid-max-length';\nimport isValidPattern from './utils/is-valid-pattern';\nimport isValidElements from './utils/is-valid-elements';\nimport getValueFormatted from './utils/get-value-formatted-default';\n\n// Email validation regex based on HTML5 spec\n// https://html.spec.whatwg.org/multipage/input.html#valid-e-mail-address\nconst emailRegex =\n\t/^[a-zA-Z0-9.!#$%&'*+\\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;\n\nfunction isValidCustom< Item >( item: Item, field: NormalizedField< Item > ) {\n\tconst value = field.getValue( { item } );\n\n\tif (\n\t\t! [ undefined, '', null ].includes( value ) &&\n\t\t! emailRegex.test( value )\n\t) {\n\t\treturn __( 'Value must be a valid email address.' );\n\t}\n\n\treturn null;\n}\n\nexport default {\n\ttype: 'email',\n\trender,\n\tEdit: 'email',\n\tsort,\n\tenableSorting: true,\n\tenableGlobalSearch: false,\n\tdefaultOperators: [ OPERATOR_IS_ANY, OPERATOR_IS_NONE ],\n\tvalidOperators: [\n\t\tOPERATOR_IS,\n\t\tOPERATOR_IS_NOT,\n\t\tOPERATOR_CONTAINS,\n\t\tOPERATOR_NOT_CONTAINS,\n\t\tOPERATOR_STARTS_WITH,\n\t\t// Multiple selection\n\t\tOPERATOR_IS_ANY,\n\t\tOPERATOR_IS_NONE,\n\t\tOPERATOR_IS_ALL,\n\t\tOPERATOR_IS_NOT_ALL,\n\t],\n\tformat: {},\n\tgetValueFormatted,\n\tvalidate: {\n\t\trequired: isValidRequired,\n\t\tpattern: isValidPattern,\n\t\tminLength: isValidMinLength,\n\t\tmaxLength: isValidMaxLength,\n\t\telements: isValidElements,\n\t\tcustom: isValidCustom,\n\t},\n} satisfies FieldType< any >;\n", "/**\n * Internal dependencies\n */\nimport type { DataViewRenderFieldProps } from '../../types';\nimport useElements from '../../hooks/use-elements';\n\nexport default function RenderFromElements< Item >( {\n\titem,\n\tfield,\n}: DataViewRenderFieldProps< Item > ) {\n\tconst { elements, isLoading } = useElements( {\n\t\telements: field.elements,\n\t\tgetElements: field.getElements,\n\t} );\n\n\tconst value = field.getValue( { item } );\n\tif ( isLoading ) {\n\t\treturn value;\n\t}\n\n\tif ( elements.length === 0 ) {\n\t\treturn value;\n\t}\n\n\treturn (\n\t\telements?.find( ( element ) => element.value === value )?.label ||\n\t\tfield.getValue( { item } )\n\t);\n}\n", "/**\n * Internal dependencies\n */\nimport type { DataViewRenderFieldProps } from '../../types';\nimport RenderFromElements from './render-from-elements';\n\nexport default function render( {\n\titem,\n\tfield,\n}: DataViewRenderFieldProps< any > ) {\n\tif ( field.hasElements ) {\n\t\treturn <RenderFromElements item={ item } field={ field } />;\n\t}\n\n\treturn field.getValueFormatted( { item, field } );\n}\n", "/**\n * Internal dependencies\n */\nimport type { SortDirection } from '../../types';\n\nexport default ( a: any, b: any, direction: SortDirection ) => {\n\treturn direction === 'asc' ? a.localeCompare( b ) : b.localeCompare( a );\n};\n", "/**\n * Internal dependencies\n */\nimport type { NormalizedField } from '../../types';\n\nexport default function isValidRequired< Item >(\n\titem: Item,\n\tfield: NormalizedField< Item >\n) {\n\tconst value = field.getValue( { item } );\n\n\treturn ! [ undefined, '', null ].includes( value );\n}\n", "/**\n * Internal dependencies\n */\nimport type { NormalizedField } from '../../types';\n\nexport default function isValidMinLength< Item >(\n\titem: Item,\n\tfield: NormalizedField< Item >\n): boolean {\n\tif ( typeof field.isValid.minLength?.constraint !== 'number' ) {\n\t\treturn false;\n\t}\n\n\tconst value = field.getValue( { item } );\n\n\t// Empty values are considered valid for minLength validation\n\t// (use required validation to enforce non-empty values)\n\tif ( [ undefined, '', null ].includes( value ) ) {\n\t\treturn true;\n\t}\n\n\treturn String( value ).length >= field.isValid.minLength.constraint;\n}\n", "/**\n * Internal dependencies\n */\nimport type { NormalizedField } from '../../types';\n\nexport default function isValidMaxLength< Item >(\n\titem: Item,\n\tfield: NormalizedField< Item >\n): boolean {\n\tif ( typeof field.isValid.maxLength?.constraint !== 'number' ) {\n\t\treturn false;\n\t}\n\n\tconst value = field.getValue( { item } );\n\n\t// Empty values are considered valid for maxLength validation\n\t// (use required validation to enforce non-empty values)\n\tif ( [ undefined, '', null ].includes( value ) ) {\n\t\treturn true;\n\t}\n\n\treturn String( value ).length <= field.isValid.maxLength.constraint;\n}\n", "/**\n * Internal dependencies\n */\nimport type { NormalizedField } from '../../types';\n\nexport default function isValidPattern< Item >(\n\titem: Item,\n\tfield: NormalizedField< Item >\n): boolean {\n\tif ( field.isValid.pattern?.constraint === undefined ) {\n\t\treturn true;\n\t}\n\n\ttry {\n\t\tconst regexp = new RegExp( field.isValid.pattern.constraint );\n\n\t\tconst value = field.getValue( { item } );\n\n\t\t// Empty values are considered valid for pattern validation\n\t\t// (use required validation to enforce non-empty values)\n\t\tif ( [ undefined, '', null ].includes( value ) ) {\n\t\t\treturn true;\n\t\t}\n\n\t\treturn regexp.test( String( value ) );\n\t} catch {\n\t\treturn false;\n\t}\n}\n", "/**\n * Internal dependencies\n */\nimport type { NormalizedField } from '../../types';\n\nexport default function isValidElements< Item >(\n\titem: Item,\n\tfield: NormalizedField< Item >\n): boolean {\n\tconst elements = field.elements ?? [];\n\tconst validValues = elements.map( ( el ) => el.value );\n\tif ( validValues.length === 0 ) {\n\t\treturn true;\n\t}\n\n\tconst value = field.getValue( { item } );\n\n\t// Covers both array and non-array values.\n\treturn [].concat( value ).every( ( v ) => validValues.includes( v ) );\n}\n", "import type { NormalizedField } from '../../types';\n\nfunction getValueFormatted< Item >( {\n\titem,\n\tfield,\n}: {\n\titem: Item;\n\tfield: NormalizedField< Item >;\n} ): string {\n\treturn field.getValue( { item } );\n}\n\nexport default getValueFormatted;\n", "/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport type { FormatInteger, NormalizedField } from '../types';\nimport type { FieldType } from '../types/private';\nimport {\n\tOPERATOR_IS,\n\tOPERATOR_IS_NOT,\n\tOPERATOR_LESS_THAN,\n\tOPERATOR_GREATER_THAN,\n\tOPERATOR_LESS_THAN_OR_EQUAL,\n\tOPERATOR_GREATER_THAN_OR_EQUAL,\n\tOPERATOR_IS_ANY,\n\tOPERATOR_IS_NONE,\n\tOPERATOR_IS_ALL,\n\tOPERATOR_IS_NOT_ALL,\n\tOPERATOR_BETWEEN,\n} from '../constants';\nimport sort from './utils/sort-number';\nimport isValidRequired from './utils/is-valid-required';\nimport isValidMin from './utils/is-valid-min';\nimport isValidMax from './utils/is-valid-max';\nimport isValidElements from './utils/is-valid-elements';\nimport render from './utils/render-default';\n\nconst format = {\n\tseparatorThousand: ',',\n};\n\nfunction getValueFormatted< Item >( {\n\titem,\n\tfield,\n}: {\n\titem: Item;\n\tfield: NormalizedField< Item >;\n} ): string {\n\tlet value = field.getValue( { item } );\n\tif ( value === null || value === undefined ) {\n\t\treturn '';\n\t}\n\n\tvalue = Number( value );\n\tif ( ! Number.isFinite( value ) ) {\n\t\treturn String( value );\n\t}\n\n\tlet formatInteger: Required< FormatInteger >;\n\tif ( field.type !== 'integer' ) {\n\t\tformatInteger = format;\n\t} else {\n\t\tformatInteger = field.format as Required< FormatInteger >;\n\t}\n\n\tconst { separatorThousand } = formatInteger;\n\tconst integerValue = Math.trunc( value );\n\tif ( ! separatorThousand ) {\n\t\treturn String( integerValue );\n\t}\n\n\treturn String( integerValue ).replace(\n\t\t/\\B(?=(\\d{3})+(?!\\d))/g,\n\t\tseparatorThousand\n\t);\n}\n\nfunction isValidCustom< Item >( item: Item, field: NormalizedField< Item > ) {\n\tconst value = field.getValue( { item } );\n\tif (\n\t\t! [ undefined, '', null ].includes( value ) &&\n\t\t! Number.isInteger( value )\n\t) {\n\t\treturn __( 'Value must be an integer.' );\n\t}\n\treturn null;\n}\n\nexport default {\n\ttype: 'integer',\n\trender,\n\tEdit: 'integer',\n\tsort,\n\tenableSorting: true,\n\tenableGlobalSearch: false,\n\tdefaultOperators: [\n\t\tOPERATOR_IS,\n\t\tOPERATOR_IS_NOT,\n\t\tOPERATOR_LESS_THAN,\n\t\tOPERATOR_GREATER_THAN,\n\t\tOPERATOR_LESS_THAN_OR_EQUAL,\n\t\tOPERATOR_GREATER_THAN_OR_EQUAL,\n\t\tOPERATOR_BETWEEN,\n\t],\n\tvalidOperators: [\n\t\t// Single-selection\n\t\tOPERATOR_IS,\n\t\tOPERATOR_IS_NOT,\n\t\tOPERATOR_LESS_THAN,\n\t\tOPERATOR_GREATER_THAN,\n\t\tOPERATOR_LESS_THAN_OR_EQUAL,\n\t\tOPERATOR_GREATER_THAN_OR_EQUAL,\n\t\tOPERATOR_BETWEEN,\n\t\t// Multiple-selection\n\t\tOPERATOR_IS_ANY,\n\t\tOPERATOR_IS_NONE,\n\t\tOPERATOR_IS_ALL,\n\t\tOPERATOR_IS_NOT_ALL,\n\t],\n\tformat,\n\tgetValueFormatted,\n\tvalidate: {\n\t\trequired: isValidRequired,\n\t\tmin: isValidMin,\n\t\tmax: isValidMax,\n\t\telements: isValidElements,\n\t\tcustom: isValidCustom,\n\t},\n} satisfies FieldType< any >;\n", "/**\n * Internal dependencies\n */\nimport type { SortDirection } from '../../types';\n\nexport default ( a: any, b: any, direction: SortDirection ) => {\n\treturn direction === 'asc' ? a - b : b - a;\n};\n", "/**\n * Internal dependencies\n */\nimport type { NormalizedField } from '../../types';\n\nexport default function isValidMin< Item >(\n\titem: Item,\n\tfield: NormalizedField< Item >\n): boolean {\n\tif ( typeof field.isValid.min?.constraint !== 'number' ) {\n\t\treturn false;\n\t}\n\n\tconst value = field.getValue( { item } );\n\n\t// Empty values are considered valid for min validation\n\t// (use required validation to enforce non-empty values)\n\tif ( [ undefined, '', null ].includes( value ) ) {\n\t\treturn true;\n\t}\n\n\treturn Number( value ) >= field.isValid.min.constraint;\n}\n", "/**\n * Internal dependencies\n */\nimport type { NormalizedField } from '../../types';\n\nexport default function isValidMax< Item >(\n\titem: Item,\n\tfield: NormalizedField< Item >\n): boolean {\n\tif ( typeof field.isValid.max?.constraint !== 'number' ) {\n\t\treturn false;\n\t}\n\n\tconst value = field.getValue( { item } );\n\n\t// Empty values are considered valid for max validation\n\t// (use required validation to enforce non-empty values)\n\tif ( [ undefined, '', null ].includes( value ) ) {\n\t\treturn true;\n\t}\n\n\treturn Number( value ) <= field.isValid.max.constraint;\n}\n", "/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport type { FormatNumber, NormalizedField } from '../types';\nimport type { FieldType } from '../types/private';\nimport {\n\tOPERATOR_IS,\n\tOPERATOR_IS_NOT,\n\tOPERATOR_LESS_THAN,\n\tOPERATOR_GREATER_THAN,\n\tOPERATOR_LESS_THAN_OR_EQUAL,\n\tOPERATOR_GREATER_THAN_OR_EQUAL,\n\tOPERATOR_IS_ANY,\n\tOPERATOR_IS_NONE,\n\tOPERATOR_IS_ALL,\n\tOPERATOR_IS_NOT_ALL,\n\tOPERATOR_BETWEEN,\n} from '../constants';\nimport sort from './utils/sort-number';\nimport isValidRequired from './utils/is-valid-required';\nimport isValidMin from './utils/is-valid-min';\nimport isValidMax from './utils/is-valid-max';\nimport isValidElements from './utils/is-valid-elements';\nimport render from './utils/render-default';\n\nconst format = {\n\tseparatorThousand: ',',\n\tseparatorDecimal: '.',\n\tdecimals: 2,\n};\n\nfunction getValueFormatted< Item >( {\n\titem,\n\tfield,\n}: {\n\titem: Item;\n\tfield: NormalizedField< Item >;\n} ): string {\n\tlet value = field.getValue( { item } );\n\tif ( value === null || value === undefined ) {\n\t\treturn '';\n\t}\n\n\tvalue = Number( value );\n\tif ( ! Number.isFinite( value ) ) {\n\t\treturn String( value );\n\t}\n\n\tlet formatNumber: Required< FormatNumber >;\n\tif ( field.type !== 'number' ) {\n\t\tformatNumber = format;\n\t} else {\n\t\tformatNumber = field.format as Required< FormatNumber >;\n\t}\n\n\tconst { separatorThousand, separatorDecimal, decimals } = formatNumber;\n\tconst fixedValue = value.toFixed( decimals );\n\tconst [ integerPart, decimalPart ] = fixedValue.split( '.' );\n\tconst formattedInteger = separatorThousand\n\t\t? integerPart.replace( /\\B(?=(\\d{3})+(?!\\d))/g, separatorThousand )\n\t\t: integerPart;\n\treturn decimals === 0\n\t\t? formattedInteger\n\t\t: formattedInteger + separatorDecimal + decimalPart;\n}\n\nfunction isEmpty( value: unknown ): value is '' | undefined | null {\n\treturn value === '' || value === undefined || value === null;\n}\n\nfunction isValidCustom< Item >( item: Item, field: NormalizedField< Item > ) {\n\tconst value = field.getValue( { item } );\n\n\tif ( ! isEmpty( value ) && ! Number.isFinite( value ) ) {\n\t\treturn __( 'Value must be a number.' );\n\t}\n\n\treturn null;\n}\n\nexport default {\n\ttype: 'number',\n\trender,\n\tEdit: 'number',\n\tsort,\n\tenableSorting: true,\n\tenableGlobalSearch: false,\n\tdefaultOperators: [\n\t\tOPERATOR_IS,\n\t\tOPERATOR_IS_NOT,\n\t\tOPERATOR_LESS_THAN,\n\t\tOPERATOR_GREATER_THAN,\n\t\tOPERATOR_LESS_THAN_OR_EQUAL,\n\t\tOPERATOR_GREATER_THAN_OR_EQUAL,\n\t\tOPERATOR_BETWEEN,\n\t],\n\tvalidOperators: [\n\t\t// Single-selection\n\t\tOPERATOR_IS,\n\t\tOPERATOR_IS_NOT,\n\t\tOPERATOR_LESS_THAN,\n\t\tOPERATOR_GREATER_THAN,\n\t\tOPERATOR_LESS_THAN_OR_EQUAL,\n\t\tOPERATOR_GREATER_THAN_OR_EQUAL,\n\t\tOPERATOR_BETWEEN,\n\t\t// Multiple-selection\n\t\tOPERATOR_IS_ANY,\n\t\tOPERATOR_IS_NONE,\n\t\tOPERATOR_IS_ALL,\n\t\tOPERATOR_IS_NOT_ALL,\n\t],\n\tformat,\n\tgetValueFormatted,\n\tvalidate: {\n\t\trequired: isValidRequired,\n\t\tmin: isValidMin,\n\t\tmax: isValidMax,\n\t\telements: isValidElements,\n\t\tcustom: isValidCustom,\n\t},\n} satisfies FieldType< any >;\n", "/**\n * Internal dependencies\n */\nimport type { FieldType } from '../types/private';\nimport {\n\tOPERATOR_CONTAINS,\n\tOPERATOR_IS,\n\tOPERATOR_IS_ALL,\n\tOPERATOR_IS_ANY,\n\tOPERATOR_IS_NONE,\n\tOPERATOR_IS_NOT,\n\tOPERATOR_IS_NOT_ALL,\n\tOPERATOR_NOT_CONTAINS,\n\tOPERATOR_STARTS_WITH,\n} from '../constants';\nimport render from './utils/render-default';\nimport sort from './utils/sort-text';\nimport isValidRequired from './utils/is-valid-required';\nimport isValidMinLength from './utils/is-valid-min-length';\nimport isValidMaxLength from './utils/is-valid-max-length';\nimport isValidPattern from './utils/is-valid-pattern';\nimport isValidElements from './utils/is-valid-elements';\nimport getValueFormatted from './utils/get-value-formatted-default';\n\nexport default {\n\ttype: 'text',\n\trender,\n\tEdit: 'text',\n\tsort,\n\tenableSorting: true,\n\tenableGlobalSearch: false,\n\tdefaultOperators: [ OPERATOR_IS_ANY, OPERATOR_IS_NONE ],\n\tvalidOperators: [\n\t\t// Single selection\n\t\tOPERATOR_IS,\n\t\tOPERATOR_IS_NOT,\n\t\tOPERATOR_CONTAINS,\n\t\tOPERATOR_NOT_CONTAINS,\n\t\tOPERATOR_STARTS_WITH,\n\t\t// Multiple selection\n\t\tOPERATOR_IS_ANY,\n\t\tOPERATOR_IS_NONE,\n\t\tOPERATOR_IS_ALL,\n\t\tOPERATOR_IS_NOT_ALL,\n\t],\n\tformat: {},\n\tgetValueFormatted,\n\tvalidate: {\n\t\trequired: isValidRequired,\n\t\tpattern: isValidPattern,\n\t\tminLength: isValidMinLength,\n\t\tmaxLength: isValidMaxLength,\n\t\telements: isValidElements,\n\t},\n} satisfies FieldType< any >;\n", "/**\n * WordPress dependencies\n */\nimport { dateI18n, getDate, getSettings } from '@wordpress/date';\n\n/**\n * Internal dependencies\n */\nimport type { FormatDatetime, NormalizedField, SortDirection } from '../types';\nimport type { FieldType } from '../types/private';\nimport isValidElements from './utils/is-valid-elements';\nimport {\n\tOPERATOR_ON,\n\tOPERATOR_NOT_ON,\n\tOPERATOR_BEFORE,\n\tOPERATOR_AFTER,\n\tOPERATOR_BEFORE_INC,\n\tOPERATOR_AFTER_INC,\n\tOPERATOR_IN_THE_PAST,\n\tOPERATOR_OVER,\n} from '../constants';\nimport isValidRequired from './utils/is-valid-required';\nimport render from './utils/render-default';\n\nconst format = {\n\tdatetime: getSettings().formats.datetime,\n\tweekStartsOn: getSettings().l10n.startOfWeek,\n};\n\nfunction getValueFormatted< Item >( {\n\titem,\n\tfield,\n}: {\n\titem: Item;\n\tfield: NormalizedField< Item >;\n} ): string {\n\tconst value = field.getValue( { item } );\n\tif ( [ '', undefined, null ].includes( value ) ) {\n\t\treturn '';\n\t}\n\n\tlet formatDatetime: Required< FormatDatetime >;\n\tif ( field.type !== 'datetime' ) {\n\t\tformatDatetime = format;\n\t} else {\n\t\tformatDatetime = field.format as Required< FormatDatetime >;\n\t}\n\n\treturn dateI18n( formatDatetime.datetime, getDate( value ) );\n}\n\nconst sort = ( a: any, b: any, direction: SortDirection ) => {\n\tconst timeA = new Date( a ).getTime();\n\tconst timeB = new Date( b ).getTime();\n\n\treturn direction === 'asc' ? timeA - timeB : timeB - timeA;\n};\n\nexport default {\n\ttype: 'datetime',\n\trender,\n\tEdit: 'datetime',\n\tsort,\n\tenableSorting: true,\n\tenableGlobalSearch: false,\n\tdefaultOperators: [\n\t\tOPERATOR_ON,\n\t\tOPERATOR_NOT_ON,\n\t\tOPERATOR_BEFORE,\n\t\tOPERATOR_AFTER,\n\t\tOPERATOR_BEFORE_INC,\n\t\tOPERATOR_AFTER_INC,\n\t\tOPERATOR_IN_THE_PAST,\n\t\tOPERATOR_OVER,\n\t],\n\tvalidOperators: [\n\t\tOPERATOR_ON,\n\t\tOPERATOR_NOT_ON,\n\t\tOPERATOR_BEFORE,\n\t\tOPERATOR_AFTER,\n\t\tOPERATOR_BEFORE_INC,\n\t\tOPERATOR_AFTER_INC,\n\t\tOPERATOR_IN_THE_PAST,\n\t\tOPERATOR_OVER,\n\t],\n\tformat,\n\tgetValueFormatted,\n\tvalidate: {\n\t\trequired: isValidRequired,\n\t\telements: isValidElements,\n\t},\n} satisfies FieldType< any >;\n", "/**\n * WordPress dependencies\n */\nimport { dateI18n, getDate, getSettings } from '@wordpress/date';\n\n/**\n * Internal dependencies\n */\nimport type { FormatDate, NormalizedField, SortDirection } from '../types';\nimport type { FieldType } from '../types/private';\nimport isValidElements from './utils/is-valid-elements';\nimport {\n\tOPERATOR_ON,\n\tOPERATOR_NOT_ON,\n\tOPERATOR_BEFORE,\n\tOPERATOR_AFTER,\n\tOPERATOR_BEFORE_INC,\n\tOPERATOR_AFTER_INC,\n\tOPERATOR_IN_THE_PAST,\n\tOPERATOR_OVER,\n\tOPERATOR_BETWEEN,\n} from '../constants';\nimport isValidRequired from './utils/is-valid-required';\nimport render from './utils/render-default';\n\nconst format = {\n\tdate: getSettings().formats.date,\n\tweekStartsOn: getSettings().l10n.startOfWeek,\n};\n\nfunction getValueFormatted< Item >( {\n\titem,\n\tfield,\n}: {\n\titem: Item;\n\tfield: NormalizedField< Item >;\n} ): string {\n\tconst value = field.getValue( { item } );\n\tif ( [ '', undefined, null ].includes( value ) ) {\n\t\treturn '';\n\t}\n\n\tlet formatDate: Required< FormatDate >;\n\tif ( field.type !== 'date' ) {\n\t\tformatDate = format;\n\t} else {\n\t\tformatDate = field.format as Required< FormatDate >;\n\t}\n\n\treturn dateI18n( formatDate.date, getDate( value ) );\n}\n\nconst sort = ( a: any, b: any, direction: SortDirection ) => {\n\tconst timeA = new Date( a ).getTime();\n\tconst timeB = new Date( b ).getTime();\n\n\treturn direction === 'asc' ? timeA - timeB : timeB - timeA;\n};\n\nexport default {\n\ttype: 'date',\n\trender,\n\tEdit: 'date',\n\tsort,\n\tenableSorting: true,\n\tenableGlobalSearch: false,\n\tdefaultOperators: [\n\t\tOPERATOR_ON,\n\t\tOPERATOR_NOT_ON,\n\t\tOPERATOR_BEFORE,\n\t\tOPERATOR_AFTER,\n\t\tOPERATOR_BEFORE_INC,\n\t\tOPERATOR_AFTER_INC,\n\t\tOPERATOR_IN_THE_PAST,\n\t\tOPERATOR_OVER,\n\t\tOPERATOR_BETWEEN,\n\t],\n\tvalidOperators: [\n\t\tOPERATOR_ON,\n\t\tOPERATOR_NOT_ON,\n\t\tOPERATOR_BEFORE,\n\t\tOPERATOR_AFTER,\n\t\tOPERATOR_BEFORE_INC,\n\t\tOPERATOR_AFTER_INC,\n\t\tOPERATOR_IN_THE_PAST,\n\t\tOPERATOR_OVER,\n\t\tOPERATOR_BETWEEN,\n\t],\n\tformat,\n\tgetValueFormatted,\n\tvalidate: {\n\t\trequired: isValidRequired,\n\t\telements: isValidElements,\n\t},\n} satisfies FieldType< any >;\n", "/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport type { NormalizedField, SortDirection } from '../types';\nimport type { FieldType } from '../types/private';\nimport { OPERATOR_IS, OPERATOR_IS_NOT } from '../constants';\nimport isValidElements from './utils/is-valid-elements';\nimport isValidRequiredForBool from './utils/is-valid-required-for-bool';\nimport render from './utils/render-default';\n\nfunction getValueFormatted< Item >( {\n\titem,\n\tfield,\n}: {\n\titem: Item;\n\tfield: NormalizedField< Item >;\n} ): string {\n\tconst value = field.getValue( { item } );\n\n\tif ( value === true ) {\n\t\treturn __( 'True' );\n\t}\n\n\tif ( value === false ) {\n\t\treturn __( 'False' );\n\t}\n\n\treturn '';\n}\n\nfunction isValidCustom< Item >( item: Item, field: NormalizedField< Item > ) {\n\tconst value = field.getValue( { item } );\n\n\tif (\n\t\t! [ undefined, '', null ].includes( value ) &&\n\t\t! [ true, false ].includes( value )\n\t) {\n\t\treturn __( 'Value must be true, false, or undefined' );\n\t}\n\n\treturn null;\n}\n\nconst sort = ( a: any, b: any, direction: SortDirection ) => {\n\tconst boolA = Boolean( a );\n\tconst boolB = Boolean( b );\n\n\tif ( boolA === boolB ) {\n\t\treturn 0;\n\t}\n\n\t// In ascending order, false comes before true\n\tif ( direction === 'asc' ) {\n\t\treturn boolA ? 1 : -1;\n\t}\n\n\t// In descending order, true comes before false\n\treturn boolA ? -1 : 1;\n};\n\nexport default {\n\ttype: 'boolean',\n\trender,\n\tEdit: 'checkbox',\n\tsort,\n\tvalidate: {\n\t\trequired: isValidRequiredForBool,\n\t\telements: isValidElements,\n\t\tcustom: isValidCustom,\n\t},\n\tenableSorting: true,\n\tenableGlobalSearch: false,\n\tdefaultOperators: [ OPERATOR_IS, OPERATOR_IS_NOT ],\n\tvalidOperators: [ OPERATOR_IS, OPERATOR_IS_NOT ],\n\tformat: {},\n\tgetValueFormatted,\n} satisfies FieldType< any >;\n", "/**\n * Internal dependencies\n */\nimport type { NormalizedField } from '../../types';\n\nexport default function isValidRequiredForBool< Item >(\n\titem: Item,\n\tfield: NormalizedField< Item >\n) {\n\tconst value = field.getValue( { item } );\n\n\treturn value === true;\n}\n", "/**\n * Internal dependencies\n */\nimport type { FieldType } from '../types/private';\nimport getValueFormatted from './utils/get-value-formatted-default';\n\nexport default {\n\ttype: 'media',\n\trender: () => null,\n\tEdit: null,\n\tsort: () => 0,\n\tenableSorting: false,\n\tenableGlobalSearch: false,\n\tdefaultOperators: [],\n\tvalidOperators: [],\n\tformat: {},\n\tgetValueFormatted,\n\t// cannot validate any constraint, so\n\t// the only available validation for the field author\n\t// would be providing a custom validator.\n\tvalidate: {},\n} satisfies FieldType< any >;\n", "/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport type {\n\tDataViewRenderFieldProps,\n\tNormalizedField,\n\tSortDirection,\n} from '../types';\nimport type { FieldType } from '../types/private';\nimport {\n\tOPERATOR_IS_ALL,\n\tOPERATOR_IS_ANY,\n\tOPERATOR_IS_NONE,\n\tOPERATOR_IS_NOT_ALL,\n} from '../constants';\nimport isValidRequiredForArray from './utils/is-valid-required-for-array';\nimport isValidElements from './utils/is-valid-elements';\n\nfunction getValueFormatted< Item >( {\n\titem,\n\tfield,\n}: {\n\titem: Item;\n\tfield: NormalizedField< Item >;\n} ): string {\n\tconst value = field.getValue( { item } );\n\tconst arr = Array.isArray( value ) ? value : [];\n\treturn arr.join( ', ' );\n}\n\nfunction render( { item, field }: DataViewRenderFieldProps< any > ) {\n\treturn getValueFormatted( { item, field } );\n}\n\nfunction isValidCustom< Item >( item: Item, field: NormalizedField< Item > ) {\n\tconst value = field.getValue( { item } );\n\n\tif (\n\t\t! [ undefined, '', null ].includes( value ) &&\n\t\t! Array.isArray( value )\n\t) {\n\t\treturn __( 'Value must be an array.' );\n\t}\n\n\t// Only allow strings for now. Can be extended to other types in the future.\n\tif ( ! value.every( ( v: any ) => typeof v === 'string' ) ) {\n\t\treturn __( 'Every value must be a string.' );\n\t}\n\n\treturn null;\n}\n\nconst sort = ( a: any, b: any, direction: SortDirection ) => {\n\t// Sort arrays by length, then alphabetically by joined string\n\tconst arrA = Array.isArray( a ) ? a : [];\n\tconst arrB = Array.isArray( b ) ? b : [];\n\tif ( arrA.length !== arrB.length ) {\n\t\treturn direction === 'asc'\n\t\t\t? arrA.length - arrB.length\n\t\t\t: arrB.length - arrA.length;\n\t}\n\n\tconst joinedA = arrA.join( ',' );\n\tconst joinedB = arrB.join( ',' );\n\treturn direction === 'asc'\n\t\t? joinedA.localeCompare( joinedB )\n\t\t: joinedB.localeCompare( joinedA );\n};\n\nexport default {\n\ttype: 'array',\n\trender,\n\tEdit: 'array',\n\tsort,\n\tenableSorting: true,\n\tenableGlobalSearch: false,\n\tdefaultOperators: [ OPERATOR_IS_ANY, OPERATOR_IS_NONE ],\n\tvalidOperators: [\n\t\tOPERATOR_IS_ANY,\n\t\tOPERATOR_IS_NONE,\n\t\tOPERATOR_IS_ALL,\n\t\tOPERATOR_IS_NOT_ALL,\n\t],\n\tformat: {},\n\tgetValueFormatted,\n\tvalidate: {\n\t\trequired: isValidRequiredForArray,\n\t\telements: isValidElements,\n\t\tcustom: isValidCustom,\n\t},\n} satisfies FieldType< any >;\n", "/**\n * Internal dependencies\n */\nimport type { NormalizedField } from '../../types';\n\nexport default function isValidRequiredForArray< Item >(\n\titem: Item,\n\tfield: NormalizedField< Item >\n) {\n\tconst value = field.getValue( { item } );\n\treturn (\n\t\tArray.isArray( value ) &&\n\t\tvalue.length > 0 &&\n\t\tvalue.every(\n\t\t\t( element: any ) => ! [ undefined, '', null ].includes( element )\n\t\t)\n\t);\n}\n", "/**\n * Internal dependencies\n */\nimport type { NormalizedField } from '../types';\nimport type { FieldType } from '../types/private';\nimport isValidRequired from './utils/is-valid-required';\nimport isValidMinLength from './utils/is-valid-min-length';\nimport isValidMaxLength from './utils/is-valid-max-length';\nimport isValidPattern from './utils/is-valid-pattern';\nimport isValidElements from './utils/is-valid-elements';\nimport render from './utils/render-default';\n\nfunction getValueFormatted< Item >( {\n\titem,\n\tfield,\n}: {\n\titem: Item;\n\tfield: NormalizedField< Item >;\n} ): string {\n\treturn field.getValue( { item } ) ? '\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022' : '';\n}\n\nexport default {\n\ttype: 'password',\n\trender,\n\tEdit: 'password',\n\tsort: () => 0, // Passwords should not be sortable for security reasons\n\tenableSorting: false,\n\tenableGlobalSearch: false,\n\tdefaultOperators: [],\n\tvalidOperators: [],\n\tformat: {},\n\tgetValueFormatted,\n\tvalidate: {\n\t\trequired: isValidRequired,\n\t\tpattern: isValidPattern,\n\t\tminLength: isValidMinLength,\n\t\tmaxLength: isValidMaxLength,\n\t\telements: isValidElements,\n\t},\n} satisfies FieldType< any >;\n", "/**\n * Internal dependencies\n */\nimport type { FieldType } from '../types/private';\nimport {\n\tOPERATOR_IS,\n\tOPERATOR_IS_ALL,\n\tOPERATOR_IS_NOT_ALL,\n\tOPERATOR_IS_ANY,\n\tOPERATOR_IS_NONE,\n\tOPERATOR_IS_NOT,\n\tOPERATOR_CONTAINS,\n\tOPERATOR_NOT_CONTAINS,\n\tOPERATOR_STARTS_WITH,\n} from '../constants';\nimport render from './utils/render-default';\nimport sort from './utils/sort-text';\nimport isValidRequired from './utils/is-valid-required';\nimport isValidMinLength from './utils/is-valid-min-length';\nimport isValidMaxLength from './utils/is-valid-max-length';\nimport isValidPattern from './utils/is-valid-pattern';\nimport isValidElements from './utils/is-valid-elements';\nimport getValueFormatted from './utils/get-value-formatted-default';\n\nexport default {\n\ttype: 'telephone',\n\trender,\n\tEdit: 'telephone',\n\tsort,\n\tenableSorting: true,\n\tenableGlobalSearch: false,\n\tdefaultOperators: [ OPERATOR_IS_ANY, OPERATOR_IS_NONE ],\n\tvalidOperators: [\n\t\tOPERATOR_IS,\n\t\tOPERATOR_IS_NOT,\n\t\tOPERATOR_CONTAINS,\n\t\tOPERATOR_NOT_CONTAINS,\n\t\tOPERATOR_STARTS_WITH,\n\t\t// Multiple selection\n\t\tOPERATOR_IS_ANY,\n\t\tOPERATOR_IS_NONE,\n\t\tOPERATOR_IS_ALL,\n\t\tOPERATOR_IS_NOT_ALL,\n\t],\n\tformat: {},\n\tgetValueFormatted,\n\tvalidate: {\n\t\trequired: isValidRequired,\n\t\tpattern: isValidPattern,\n\t\tminLength: isValidMinLength,\n\t\tmaxLength: isValidMaxLength,\n\t\telements: isValidElements,\n\t},\n} satisfies FieldType< any >;\n", "/**\n * External dependencies\n */\nimport { colord } from 'colord';\n\n/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport type {\n\tDataViewRenderFieldProps,\n\tNormalizedField,\n\tSortDirection,\n} from '../types';\nimport type { FieldType } from '../types/private';\nimport RenderFromElements from './utils/render-from-elements';\nimport {\n\tOPERATOR_IS,\n\tOPERATOR_IS_ANY,\n\tOPERATOR_IS_NONE,\n\tOPERATOR_IS_NOT,\n} from '../constants';\nimport isValidElements from './utils/is-valid-elements';\nimport isValidRequired from './utils/is-valid-required';\nimport getValueFormatted from './utils/get-value-formatted-default';\n\nfunction render( { item, field }: DataViewRenderFieldProps< any > ) {\n\tif ( field.hasElements ) {\n\t\treturn <RenderFromElements item={ item } field={ field } />;\n\t}\n\n\tconst value = getValueFormatted( { item, field } );\n\tif ( ! value || ! colord( value ).isValid() ) {\n\t\treturn value;\n\t}\n\n\t// Render color with visual preview\n\treturn (\n\t\t<div style={ { display: 'flex', alignItems: 'center', gap: '8px' } }>\n\t\t\t<div\n\t\t\t\tstyle={ {\n\t\t\t\t\twidth: '16px',\n\t\t\t\t\theight: '16px',\n\t\t\t\t\tborderRadius: '50%',\n\t\t\t\t\tbackgroundColor: value,\n\t\t\t\t\tborder: '1px solid #ddd',\n\t\t\t\t\tflexShrink: 0,\n\t\t\t\t} }\n\t\t\t/>\n\t\t\t<span>{ value }</span>\n\t\t</div>\n\t);\n}\n\nfunction isValidCustom< Item >( item: Item, field: NormalizedField< Item > ) {\n\tconst value = field.getValue( { item } );\n\n\tif (\n\t\t! [ undefined, '', null ].includes( value ) &&\n\t\t! colord( value ).isValid()\n\t) {\n\t\treturn __( 'Value must be a valid color.' );\n\t}\n\n\treturn null;\n}\n\nconst sort = ( a: any, b: any, direction: SortDirection ) => {\n\t// Convert colors to HSL for better sorting\n\tconst colorA = colord( a );\n\tconst colorB = colord( b );\n\n\tif ( ! colorA.isValid() && ! colorB.isValid() ) {\n\t\treturn 0;\n\t}\n\tif ( ! colorA.isValid() ) {\n\t\treturn direction === 'asc' ? 1 : -1;\n\t}\n\tif ( ! colorB.isValid() ) {\n\t\treturn direction === 'asc' ? -1 : 1;\n\t}\n\n\t// Sort by hue, then saturation, then lightness\n\tconst hslA = colorA.toHsl();\n\tconst hslB = colorB.toHsl();\n\n\tif ( hslA.h !== hslB.h ) {\n\t\treturn direction === 'asc' ? hslA.h - hslB.h : hslB.h - hslA.h;\n\t}\n\tif ( hslA.s !== hslB.s ) {\n\t\treturn direction === 'asc' ? hslA.s - hslB.s : hslB.s - hslA.s;\n\t}\n\treturn direction === 'asc' ? hslA.l - hslB.l : hslB.l - hslA.l;\n};\n\nexport default {\n\ttype: 'color',\n\trender,\n\tEdit: 'color',\n\tsort,\n\tenableSorting: true,\n\tenableGlobalSearch: false,\n\tdefaultOperators: [ OPERATOR_IS_ANY, OPERATOR_IS_NONE ],\n\tvalidOperators: [\n\t\tOPERATOR_IS,\n\t\tOPERATOR_IS_NOT,\n\t\tOPERATOR_IS_ANY,\n\t\tOPERATOR_IS_NONE,\n\t],\n\tformat: {},\n\tgetValueFormatted,\n\tvalidate: {\n\t\trequired: isValidRequired,\n\t\telements: isValidElements,\n\t\tcustom: isValidCustom,\n\t},\n} satisfies FieldType< any >;\n", "/**\n * Internal dependencies\n */\nimport type { FieldType } from '../types/private';\nimport {\n\tOPERATOR_IS,\n\tOPERATOR_IS_ALL,\n\tOPERATOR_IS_NOT_ALL,\n\tOPERATOR_IS_ANY,\n\tOPERATOR_IS_NONE,\n\tOPERATOR_IS_NOT,\n\tOPERATOR_CONTAINS,\n\tOPERATOR_NOT_CONTAINS,\n\tOPERATOR_STARTS_WITH,\n} from '../constants';\nimport render from './utils/render-default';\nimport sort from './utils/sort-text';\nimport isValidRequired from './utils/is-valid-required';\nimport isValidMinLength from './utils/is-valid-min-length';\nimport isValidMaxLength from './utils/is-valid-max-length';\nimport isValidPattern from './utils/is-valid-pattern';\nimport isValidElements from './utils/is-valid-elements';\nimport getValueFormatted from './utils/get-value-formatted-default';\n\nexport default {\n\ttype: 'url',\n\trender,\n\tEdit: 'url',\n\tsort,\n\tenableSorting: true,\n\tenableGlobalSearch: false,\n\tdefaultOperators: [ OPERATOR_IS_ANY, OPERATOR_IS_NONE ],\n\tvalidOperators: [\n\t\tOPERATOR_IS,\n\t\tOPERATOR_IS_NOT,\n\t\tOPERATOR_CONTAINS,\n\t\tOPERATOR_NOT_CONTAINS,\n\t\tOPERATOR_STARTS_WITH,\n\t\t// Multiple selection\n\t\tOPERATOR_IS_ANY,\n\t\tOPERATOR_IS_NONE,\n\t\tOPERATOR_IS_ALL,\n\t\tOPERATOR_IS_NOT_ALL,\n\t],\n\tformat: {},\n\tgetValueFormatted,\n\tvalidate: {\n\t\trequired: isValidRequired,\n\t\tpattern: isValidPattern,\n\t\tminLength: isValidMinLength,\n\t\tmaxLength: isValidMaxLength,\n\t\telements: isValidElements,\n\t},\n} satisfies FieldType< any >;\n", "/**\n * Internal dependencies\n */\nimport type { SortDirection } from '../types';\nimport type { FieldType } from '../types/private';\nimport { OPERATOR_IS, OPERATOR_IS_NOT } from '../constants';\nimport { getAllOperatorNames } from '../utils/operators';\nimport render from './utils/render-default';\nimport sortText from './utils/sort-text';\nimport sortNumber from './utils/sort-number';\nimport isValidRequired from './utils/is-valid-required';\nimport isValidElements from './utils/is-valid-elements';\nimport getValueFormatted from './utils/get-value-formatted-default';\n\nconst sort = ( a: any, b: any, direction: SortDirection ) => {\n\tif ( typeof a === 'number' && typeof b === 'number' ) {\n\t\treturn sortNumber( a, b, direction );\n\t}\n\n\treturn sortText( a, b, direction );\n};\n\nexport default {\n\t// type: no type for this one\n\trender,\n\tEdit: null,\n\tsort,\n\tenableSorting: true,\n\tenableGlobalSearch: false,\n\tdefaultOperators: [ OPERATOR_IS, OPERATOR_IS_NOT ],\n\tvalidOperators: getAllOperatorNames(),\n\tformat: {},\n\tgetValueFormatted,\n\tvalidate: {\n\t\trequired: isValidRequired,\n\t\telements: isValidElements,\n\t},\n} satisfies FieldType< any >;\n", "/**\n * Internal dependencies\n */\nimport type { Field, NormalizedRules } from '../../types';\nimport type { FieldType } from '../../types/private';\n\nexport default function getIsValid< Item >(\n\tfield: Field< Item >,\n\tfieldType: FieldType< Item >\n): NormalizedRules< Item > {\n\tlet required;\n\tif (\n\t\tfield.isValid?.required === true &&\n\t\tfieldType.validate.required !== undefined\n\t) {\n\t\trequired = {\n\t\t\tconstraint: true,\n\t\t\tvalidate: fieldType.validate.required,\n\t\t};\n\t}\n\n\tlet elements;\n\tif (\n\t\t( field.isValid?.elements === true ||\n\t\t\t// elements is enabled unless the field opts-out\n\t\t\t( field.isValid?.elements === undefined &&\n\t\t\t\t( !! field.elements || !! field.getElements ) ) ) &&\n\t\tfieldType.validate.elements !== undefined\n\t) {\n\t\telements = {\n\t\t\tconstraint: true,\n\t\t\tvalidate: fieldType.validate.elements,\n\t\t};\n\t}\n\n\tlet min;\n\tif (\n\t\ttypeof field.isValid?.min === 'number' &&\n\t\tfieldType.validate.min !== undefined\n\t) {\n\t\tmin = {\n\t\t\tconstraint: field.isValid.min,\n\t\t\tvalidate: fieldType.validate.min,\n\t\t};\n\t}\n\n\tlet max;\n\tif (\n\t\ttypeof field.isValid?.max === 'number' &&\n\t\tfieldType.validate.max !== undefined\n\t) {\n\t\tmax = {\n\t\t\tconstraint: field.isValid.max,\n\t\t\tvalidate: fieldType.validate.max,\n\t\t};\n\t}\n\n\tlet minLength;\n\tif (\n\t\ttypeof field.isValid?.minLength === 'number' &&\n\t\tfieldType.validate.minLength !== undefined\n\t) {\n\t\tminLength = {\n\t\t\tconstraint: field.isValid.minLength,\n\t\t\tvalidate: fieldType.validate.minLength,\n\t\t};\n\t}\n\n\tlet maxLength;\n\tif (\n\t\ttypeof field.isValid?.maxLength === 'number' &&\n\t\tfieldType.validate.maxLength !== undefined\n\t) {\n\t\tmaxLength = {\n\t\t\tconstraint: field.isValid.maxLength,\n\t\t\tvalidate: fieldType.validate.maxLength,\n\t\t};\n\t}\n\n\tlet pattern;\n\tif (\n\t\tfield.isValid?.pattern !== undefined &&\n\t\tfieldType.validate.pattern !== undefined\n\t) {\n\t\tpattern = {\n\t\t\tconstraint: field.isValid?.pattern,\n\t\t\tvalidate: fieldType.validate.pattern,\n\t\t};\n\t}\n\n\tconst custom = field.isValid?.custom ?? fieldType.validate.custom;\n\n\treturn {\n\t\trequired,\n\t\telements,\n\t\tmin,\n\t\tmax,\n\t\tminLength,\n\t\tmaxLength,\n\t\tpattern,\n\t\tcustom,\n\t};\n}\n", "import type { Field } from '../../types';\nimport type { FieldType } from '../../types/private';\n\nfunction getFormat< Item >(\n\tfield: Field< Item >,\n\tfieldType: FieldType< Item >\n) {\n\treturn {\n\t\t...fieldType.format,\n\t\t...field.format,\n\t};\n}\n\nexport default getFormat;\n", "/**\n * Internal dependencies\n */\nimport type {\n\tField,\n\tFieldTypeName,\n\tNormalizedField,\n\tSortDirection,\n} from '../types';\nimport type { FieldType } from '../types/private';\nimport { getControl } from '../components/dataform-controls';\nimport getFilterBy from './utils/get-filter-by';\nimport getValueFromId from './utils/get-value-from-id';\nimport hasElements from './utils/has-elements';\nimport setValueFromId from './utils/set-value-from-id';\nimport { default as email } from './email';\nimport { default as integer } from './integer';\nimport { default as number } from './number';\nimport { default as text } from './text';\nimport { default as datetime } from './datetime';\nimport { default as date } from './date';\nimport { default as boolean } from './boolean';\nimport { default as media } from './media';\nimport { default as array } from './array';\nimport { default as password } from './password';\nimport { default as telephone } from './telephone';\nimport { default as color } from './color';\nimport { default as url } from './url';\nimport { default as noType } from './no-type';\nimport getIsValid from './utils/get-is-valid';\nimport getFormat from './utils/get-format';\n\n/**\n *\n * @param {FieldTypeName} type The field type definition to get.\n *\n * @return A field type definition.\n */\nfunction getFieldTypeByName< Item >( type?: FieldTypeName ): FieldType< Item > {\n\tconst found = [\n\t\temail,\n\t\tinteger,\n\t\tnumber,\n\t\ttext,\n\t\tdatetime,\n\t\tdate,\n\t\tboolean,\n\t\tmedia,\n\t\tarray,\n\t\tpassword,\n\t\ttelephone,\n\t\tcolor,\n\t\turl,\n\t].find( ( fieldType ) => fieldType?.type === type );\n\n\tif ( !! found ) {\n\t\treturn found;\n\t}\n\n\t// This is a fallback for fields that don't provide a type.\n\t// It can be removed when/if the field.type becomes mandatory.\n\treturn noType;\n}\n\n/**\n * Apply default values and normalize the fields config.\n *\n * @param fields Fields config.\n * @return Normalized fields config.\n */\nexport default function normalizeFields< Item >(\n\tfields: Field< Item >[]\n): NormalizedField< Item >[] {\n\treturn fields.map( ( field ) => {\n\t\tconst fieldType = getFieldTypeByName< Item >( field.type );\n\n\t\tconst getValue = field.getValue || getValueFromId( field.id );\n\t\tconst sort = function ( a: any, b: any, direction: SortDirection ) {\n\t\t\tconst aValue = getValue( { item: a } );\n\t\t\tconst bValue = getValue( { item: b } );\n\t\t\treturn field.sort\n\t\t\t\t? field.sort( aValue, bValue, direction )\n\t\t\t\t: fieldType.sort( aValue, bValue, direction );\n\t\t};\n\n\t\treturn {\n\t\t\tid: field.id,\n\t\t\tlabel: field.label || field.id,\n\t\t\theader: field.header || field.label || field.id,\n\t\t\tdescription: field.description,\n\t\t\tplaceholder: field.placeholder,\n\t\t\tgetValue,\n\t\t\tsetValue: field.setValue || setValueFromId( field.id ),\n\t\t\telements: field.elements,\n\t\t\tgetElements: field.getElements,\n\t\t\thasElements: hasElements( field ),\n\t\t\tisVisible: field.isVisible,\n\t\t\tenableHiding: field.enableHiding ?? true,\n\t\t\treadOnly: field.readOnly ?? false,\n\t\t\t// The type provides defaults for the following props\n\t\t\ttype: fieldType.type,\n\t\t\trender: field.render ?? fieldType.render,\n\t\t\tEdit: getControl( field, fieldType.Edit ),\n\t\t\tsort,\n\t\t\tenableSorting: field.enableSorting ?? fieldType.enableSorting,\n\t\t\tenableGlobalSearch:\n\t\t\t\tfield.enableGlobalSearch ?? fieldType.enableGlobalSearch,\n\t\t\tisValid: getIsValid( field, fieldType ),\n\t\t\tfilterBy: getFilterBy(\n\t\t\t\tfield,\n\t\t\t\tfieldType.defaultOperators,\n\t\t\t\tfieldType.validOperators\n\t\t\t),\n\t\t\tformat: getFormat( field, fieldType ),\n\t\t\tgetValueFormatted:\n\t\t\t\tfield.getValueFormatted ?? fieldType.getValueFormatted,\n\t\t};\n\t} );\n}\n", "/**\n * External dependencies\n */\nimport type { ReactNode } from 'react';\n\n/**\n * WordPress dependencies\n */\nimport { useEffect, useMemo, useRef, useState } from '@wordpress/element';\nimport { useResizeObserver, throttle } from '@wordpress/compose';\nimport { Stack } from '@wordpress/ui';\n\n/**\n * Internal dependencies\n */\nimport DataViewsContext from '../components/dataviews-context';\nimport { VIEW_LAYOUTS } from '../components/dataviews-layouts';\nimport {\n\tFilters,\n\tFiltersToggled,\n\tuseFilters,\n\tFiltersToggle,\n} from '../components/dataviews-filters';\nimport DataViewsLayout from '../components/dataviews-layout';\nimport { DataViewsPickerFooter } from '../components/dataviews-picker-footer';\nimport DataViewsSearch from '../components/dataviews-search';\nimport { DataViewsPagination } from '../components/dataviews-pagination';\nimport DataViewsViewConfig, {\n\tDataviewsViewConfigDropdown,\n\tViewTypeMenu,\n} from '../components/dataviews-view-config';\nimport normalizeFields from '../field-types';\nimport type { ActionButton, Field, View, SupportedLayouts } from '../types';\nimport type { SelectionOrUpdater } from '../types/private';\ntype ItemWithId = { id: string };\n\nconst isItemClickable = () => false;\n\nconst dataViewsPickerLayouts = VIEW_LAYOUTS.filter(\n\t( viewLayout ) => viewLayout.isPicker\n);\n\ntype DataViewsPickerProps< Item > = {\n\tview: View;\n\tonChangeView: ( view: View ) => void;\n\tfields: Field< Item >[];\n\tactions?: ActionButton< Item >[];\n\tsearch?: boolean;\n\tsearchLabel?: string;\n\tdata: Item[];\n\tisLoading?: boolean;\n\tpaginationInfo: {\n\t\ttotalItems: number;\n\t\ttotalPages: number;\n\t\tinfiniteScrollHandler?: () => void;\n\t};\n\tdefaultLayouts: SupportedLayouts;\n\tselection: string[];\n\tonChangeSelection: ( items: string[] ) => void;\n\tchildren?: ReactNode;\n\tconfig?: {\n\t\tperPageSizes: number[];\n\t};\n\titemListLabel?: string;\n\tempty?: ReactNode;\n} & ( Item extends ItemWithId\n\t? { getItemId?: ( item: Item ) => string }\n\t: { getItemId: ( item: Item ) => string } );\n\nconst defaultGetItemId = ( item: ItemWithId ) => item.id;\nconst EMPTY_ARRAY: any[] = [];\n\ntype DefaultUIProps = Pick<\n\tDataViewsPickerProps< any >,\n\t'search' | 'searchLabel'\n>;\n\nfunction DefaultUI( {\n\tsearch = true,\n\tsearchLabel = undefined,\n}: DefaultUIProps ) {\n\treturn (\n\t\t<>\n\t\t\t<Stack\n\t\t\t\tdirection=\"row\"\n\t\t\t\talign=\"top\"\n\t\t\t\tjustify=\"space-between\"\n\t\t\t\tclassName=\"dataviews__view-actions\"\n\t\t\t\tgap=\"2xs\"\n\t\t\t>\n\t\t\t\t<Stack\n\t\t\t\t\tdirection=\"row\"\n\t\t\t\t\tgap=\"xs\"\n\t\t\t\t\tjustify=\"start\"\n\t\t\t\t\tclassName=\"dataviews__search\"\n\t\t\t\t>\n\t\t\t\t\t{ search && <DataViewsSearch label={ searchLabel } /> }\n\t\t\t\t\t<FiltersToggle />\n\t\t\t\t</Stack>\n\t\t\t\t<Stack direction=\"row\" gap=\"2xs\" style={ { flexShrink: 0 } }>\n\t\t\t\t\t<DataViewsViewConfig />\n\t\t\t\t</Stack>\n\t\t\t</Stack>\n\t\t\t<FiltersToggled className=\"dataviews-filters__container\" />\n\t\t\t<DataViewsLayout />\n\t\t\t<DataViewsPickerFooter />\n\t\t</>\n\t);\n}\n\nfunction DataViewsPicker< Item >( {\n\tview,\n\tonChangeView,\n\tfields,\n\tsearch = true,\n\tsearchLabel = undefined,\n\tactions = EMPTY_ARRAY,\n\tdata,\n\tgetItemId = defaultGetItemId,\n\tisLoading = false,\n\tpaginationInfo,\n\tdefaultLayouts: defaultLayoutsProperty,\n\tselection,\n\tonChangeSelection,\n\tchildren,\n\tconfig = { perPageSizes: [ 10, 20, 50, 100 ] },\n\titemListLabel,\n\tempty,\n}: DataViewsPickerProps< Item > ) {\n\tconst { infiniteScrollHandler } = paginationInfo;\n\tconst containerRef = useRef< HTMLDivElement | null >( null );\n\tconst [ containerWidth, setContainerWidth ] = useState( 0 );\n\tconst resizeObserverRef = useResizeObserver(\n\t\t( resizeObserverEntries: any ) => {\n\t\t\tsetContainerWidth(\n\t\t\t\tresizeObserverEntries[ 0 ].borderBoxSize[ 0 ].inlineSize\n\t\t\t);\n\t\t},\n\t\t{ box: 'border-box' }\n\t);\n\tconst [ openedFilter, setOpenedFilter ] = useState< string | null >( null );\n\tfunction setSelectionWithChange( value: SelectionOrUpdater ) {\n\t\tconst newValue =\n\t\t\ttypeof value === 'function' ? value( selection ) : value;\n\t\tif ( onChangeSelection ) {\n\t\t\tonChangeSelection( newValue );\n\t\t}\n\t}\n\tconst _fields = useMemo( () => normalizeFields( fields ), [ fields ] );\n\tconst filters = useFilters( _fields, view );\n\tconst hasPrimaryOrLockedFilters = useMemo(\n\t\t() =>\n\t\t\t( filters || [] ).some(\n\t\t\t\t( filter ) => filter.isPrimary || filter.isLocked\n\t\t\t),\n\t\t[ filters ]\n\t);\n\tconst [ isShowingFilter, setIsShowingFilter ] = useState< boolean >(\n\t\thasPrimaryOrLockedFilters\n\t);\n\n\tuseEffect( () => {\n\t\tif ( hasPrimaryOrLockedFilters && ! isShowingFilter ) {\n\t\t\tsetIsShowingFilter( true );\n\t\t}\n\t}, [ hasPrimaryOrLockedFilters, isShowingFilter ] );\n\n\t// Attach scroll event listener for infinite scroll\n\tuseEffect( () => {\n\t\tif ( ! view.infiniteScrollEnabled || ! containerRef.current ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst handleScroll = throttle( ( event: unknown ) => {\n\t\t\tconst target = ( event as Event ).target as HTMLElement;\n\t\t\tconst scrollTop = target.scrollTop;\n\t\t\tconst scrollHeight = target.scrollHeight;\n\t\t\tconst clientHeight = target.clientHeight;\n\n\t\t\t// Check if user has scrolled near the bottom\n\t\t\tif ( scrollTop + clientHeight >= scrollHeight - 100 ) {\n\t\t\t\tinfiniteScrollHandler?.();\n\t\t\t}\n\t\t}, 100 ); // Throttle to 100ms\n\n\t\tconst container = containerRef.current;\n\t\tcontainer.addEventListener( 'scroll', handleScroll );\n\n\t\treturn () => {\n\t\t\tcontainer.removeEventListener( 'scroll', handleScroll );\n\t\t\thandleScroll.cancel(); // Cancel any pending throttled calls\n\t\t};\n\t}, [ infiniteScrollHandler, view.infiniteScrollEnabled ] );\n\n\t// Filter out DataViewsPicker layouts.\n\tconst defaultLayouts = useMemo(\n\t\t() =>\n\t\t\tObject.fromEntries(\n\t\t\t\tObject.entries( defaultLayoutsProperty ).filter(\n\t\t\t\t\t( [ layoutType ] ) => {\n\t\t\t\t\t\treturn dataViewsPickerLayouts.some(\n\t\t\t\t\t\t\t( viewLayout ) => viewLayout.type === layoutType\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t)\n\t\t\t),\n\t\t[ defaultLayoutsProperty ]\n\t);\n\n\tif ( ! defaultLayouts[ view.type ] ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<DataViewsContext.Provider\n\t\t\tvalue={ {\n\t\t\t\tview,\n\t\t\t\tonChangeView,\n\t\t\t\tfields: _fields,\n\t\t\t\tactions,\n\t\t\t\tdata,\n\t\t\t\tisLoading,\n\t\t\t\tpaginationInfo,\n\t\t\t\tisItemClickable,\n\t\t\t\tselection,\n\t\t\t\tonChangeSelection: setSelectionWithChange,\n\t\t\t\topenedFilter,\n\t\t\t\tsetOpenedFilter,\n\t\t\t\tgetItemId,\n\t\t\t\tcontainerWidth,\n\t\t\t\tcontainerRef,\n\t\t\t\tresizeObserverRef,\n\t\t\t\tdefaultLayouts,\n\t\t\t\tfilters,\n\t\t\t\tisShowingFilter,\n\t\t\t\tsetIsShowingFilter,\n\t\t\t\tconfig,\n\t\t\t\titemListLabel,\n\t\t\t\tempty,\n\t\t\t\thasInfiniteScrollHandler: !! infiniteScrollHandler,\n\t\t\t} }\n\t\t>\n\t\t\t<div className=\"dataviews-picker-wrapper\" ref={ containerRef }>\n\t\t\t\t{ children ?? (\n\t\t\t\t\t<DefaultUI search={ search } searchLabel={ searchLabel } />\n\t\t\t\t) }\n\t\t\t</div>\n\t\t</DataViewsContext.Provider>\n\t);\n}\n\n// Populate the DataViews sub components\nconst DataViewsPickerSubComponents =\n\tDataViewsPicker as typeof DataViewsPicker & {\n\t\tBulkActionToolbar: typeof DataViewsPickerFooter;\n\t\tFilters: typeof Filters;\n\t\tFiltersToggled: typeof FiltersToggled;\n\t\tFiltersToggle: typeof FiltersToggle;\n\t\tLayout: typeof DataViewsLayout;\n\t\tLayoutSwitcher: typeof ViewTypeMenu;\n\t\tPagination: typeof DataViewsPagination;\n\t\tSearch: typeof DataViewsSearch;\n\t\tViewConfig: typeof DataviewsViewConfigDropdown;\n\t};\n\nDataViewsPickerSubComponents.BulkActionToolbar = DataViewsPickerFooter;\nDataViewsPickerSubComponents.Filters = Filters;\nDataViewsPickerSubComponents.FiltersToggled = FiltersToggled;\nDataViewsPickerSubComponents.FiltersToggle = FiltersToggle;\nDataViewsPickerSubComponents.Layout = DataViewsLayout;\nDataViewsPickerSubComponents.LayoutSwitcher = ViewTypeMenu;\nDataViewsPickerSubComponents.Pagination = DataViewsPagination;\nDataViewsPickerSubComponents.Search = DataViewsSearch;\nDataViewsPickerSubComponents.ViewConfig = DataviewsViewConfigDropdown;\n\nexport default DataViewsPickerSubComponents;\n", "/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { TextareaControl } from '@wordpress/components';\nimport type { Field } from '@wordpress/dataviews';\nimport type { Attachment, Updatable } from '@wordpress/core-data';\n\nconst altTextField: Partial< Field< Updatable< Attachment > > > = {\n\tid: 'alt_text',\n\ttype: 'text',\n\tlabel: __( 'Alt text' ),\n\tisVisible: ( item ) => item?.media_type === 'image',\n\trender: ( { item } ) => item?.alt_text || '-',\n\tEdit: ( { field, onChange, data } ) => {\n\t\treturn (\n\t\t\t<TextareaControl\n\t\t\t\tlabel={ field.label }\n\t\t\t\tvalue={ data.alt_text || '' }\n\t\t\t\tonChange={ ( value ) => onChange( { alt_text: value } ) }\n\t\t\t\trows={ 2 }\n\t\t\t/>\n\t\t);\n\t},\n\tenableSorting: false,\n\tfilterBy: false,\n};\n\nexport default altTextField;\n", "/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport type { Field } from '@wordpress/dataviews';\n\n/**\n * Internal dependencies\n */\nimport type { MediaItem } from '../types';\nimport MediaAttachedToView from './view';\nimport MediaAttachedToEdit from './edit';\n\nconst attachedToField: Partial< Field< MediaItem > > = {\n\tid: 'attached_to',\n\ttype: 'text',\n\tlabel: __( 'Attached to' ),\n\tEdit: MediaAttachedToEdit,\n\trender: MediaAttachedToView,\n\tenableSorting: false,\n\tfilterBy: false,\n};\n\nexport default attachedToField;\n", "/**\n * WordPress dependencies\n */\nimport { useState, useEffect } from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\nimport type { DataViewRenderFieldProps } from '@wordpress/dataviews';\n/**\n * Internal dependencies\n */\nimport type { MediaItem } from '../types';\nimport { getRenderedContent } from '../utils/get-rendered-content';\n\nexport default function MediaAttachedToView( {\n\titem,\n}: DataViewRenderFieldProps< MediaItem > ) {\n\t// Store the displayed title in state, as the embedded post may be loaded\n\t// asynchronously. This ensures that the title remains stable after it\n\t// is updated by the user, and while it is re-fetched from the server.\n\tconst [ attachedPostTitle, setAttachedPostTitle ] = useState<\n\t\tstring | null\n\t>( null );\n\n\tconst parentId = item.post;\n\tconst embeddedPostId = item._embedded?.[ 'wp:attached-to' ]?.[ 0 ]?.id;\n\tconst embeddedPostTitle =\n\t\titem._embedded?.[ 'wp:attached-to' ]?.[ 0 ]?.title;\n\n\tuseEffect( () => {\n\t\tif ( !! parentId && parentId === embeddedPostId ) {\n\t\t\tsetAttachedPostTitle(\n\t\t\t\tgetRenderedContent( embeddedPostTitle ) ||\n\t\t\t\t\tembeddedPostId?.toString() ||\n\t\t\t\t\t''\n\t\t\t);\n\t\t}\n\n\t\tif ( ! parentId ) {\n\t\t\tsetAttachedPostTitle( __( '(Unattached)' ) );\n\t\t}\n\t}, [ parentId, embeddedPostId, embeddedPostTitle ] );\n\n\treturn <>{ attachedPostTitle }</>;\n}\n", "/**\n * Utility function to extract rendered content from either a string or an object\n * containing raw and rendered properties.\n *\n * This handles the inconsistency in WordPress REST API responses where\n * some fields like caption and description can be either:\n * - A simple string\n * - An object with { raw: string, rendered: string }\n *\n * @param content - The content to extract raw value from\n * @return The rendered content string, falling back to raw or empty string if content is falsy\n */\nexport function getRenderedContent(\n\tcontent: string | { raw: string; rendered: string } | undefined | null\n): string {\n\tif ( ! content ) {\n\t\treturn '';\n\t}\n\n\t// If it's a string, return it directly\n\tif ( typeof content === 'string' ) {\n\t\treturn content;\n\t}\n\n\t// If it's an object with raw property, return the raw value\n\tif ( typeof content === 'object' ) {\n\t\treturn content.rendered || content.raw || '';\n\t}\n\n\t// Fallback to empty string\n\treturn '';\n}\n", "/**\n * WordPress dependencies\n */\nimport {\n\t__experimentalFetchLinkSuggestions as fetchLinkSuggestions,\n\tstore as coreStore,\n} from '@wordpress/core-data';\nimport { Button, ComboboxControl } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { useState, createInterpolateElement } from '@wordpress/element';\nimport { debounce } from '@wordpress/compose';\nimport { useSelect } from '@wordpress/data';\nimport type { DataFormControlProps } from '@wordpress/dataviews';\n\n/**\n * Internal dependencies\n */\nimport type { MediaItem } from '../types';\nimport { getRenderedContent } from '../utils/get-rendered-content';\n\nexport type SearchResult = {\n\t/**\n\t * Post or term id.\n\t */\n\tid: number;\n\t/**\n\t * Link url.\n\t */\n\turl: string;\n\t/**\n\t * Title of the link.\n\t */\n\ttitle: string;\n\t/**\n\t * The taxonomy or post type slug or type URL.\n\t */\n\ttype: string;\n\t/**\n\t * Link kind of post-type or taxonomy\n\t */\n\tkind?: string;\n};\n\nexport default function MediaAttachedToEdit( {\n\tdata,\n\tonChange,\n}: DataFormControlProps< MediaItem > ) {\n\tconst defaultPost =\n\t\t!! data.post && !! data?._embedded?.[ 'wp:attached-to' ]?.[ 0 ]\n\t\t\t? [\n\t\t\t\t\t{\n\t\t\t\t\t\tlabel: getRenderedContent(\n\t\t\t\t\t\t\tdata._embedded?.[ 'wp:attached-to' ]?.[ 0 ]?.title\n\t\t\t\t\t\t),\n\t\t\t\t\t\tvalue: data.post.toString(),\n\t\t\t\t\t},\n\t\t\t ]\n\t\t\t: [];\n\tconst [ options, setOptions ] =\n\t\tuseState< { label: string; value: string }[] >( defaultPost );\n\tconst [ searchResults, setSearchResults ] = useState< SearchResult[] >(\n\t\t[]\n\t);\n\tconst [ isLoading, setIsLoading ] = useState( false );\n\tconst [ value, setValue ] = useState< string | null >(\n\t\tdata?.post?.toString() ?? null\n\t);\n\n\tconst postTypes = useSelect(\n\t\t( select ) => select( coreStore ).getPostTypes(),\n\t\t[]\n\t);\n\tconst handleDetach = () => {\n\t\tonChange( {\n\t\t\tpost: 0,\n\t\t\t_embedded: { ...data?._embedded, 'wp:attached-to': undefined },\n\t\t} );\n\t\tsetOptions( [] );\n\t};\n\n\tconst onValueChange = async ( filterValue: string ) => {\n\t\tsetIsLoading( true );\n\t\tconst results = await fetchLinkSuggestions(\n\t\t\tfilterValue,\n\t\t\t/*\n\t\t\t * @TODO `fetchLinkSuggestions()` should accept `perPage` as an option argument.\n\t\t\t * `isInitialSuggestions` limits the result to 3, otherwise it's hardcoded to 20.\n\t\t\t */\n\t\t\t{ type: 'post', isInitialSuggestions: true },\n\t\t\t{}\n\t\t);\n\t\tsetSearchResults( results );\n\t\tconst mappedSuggestions = results.map( ( result ) => {\n\t\t\treturn {\n\t\t\t\tlabel: result.title,\n\t\t\t\tvalue: result.id.toString(),\n\t\t\t};\n\t\t} );\n\t\tsetOptions( mappedSuggestions );\n\t\tsetIsLoading( false );\n\t};\n\n\t/**\n\t * Handle selection.\n\t *\n\t * @param {Object} selectedPostId The selected post id.\n\t */\n\tconst handleSelectOption = (\n\t\tselectedPostId: string | null | undefined\n\t) => {\n\t\tif ( ! selectedPostId ) {\n\t\t\thandleDetach();\n\t\t\treturn;\n\t\t}\n\t\tsetValue( selectedPostId );\n\t\tif ( selectedPostId ) {\n\t\t\tconst selectedPost = searchResults.find(\n\t\t\t\t( result ) => result.id === Number( selectedPostId )\n\t\t\t);\n\t\t\t// Although unlikely, it's technically possible for selectedPost to not be found.\n\t\t\t// E.g. if the user selects an option just as new search results are loaded.\n\t\t\t// TODO: Add error handling for when selectedPost is not found.\n\t\t\tif ( selectedPost && postTypes ) {\n\t\t\t\tconst postType = postTypes.find(\n\t\t\t\t\t( _postType: { slug: string } ) =>\n\t\t\t\t\t\t_postType.slug === selectedPost?.type\n\t\t\t\t);\n\n\t\t\t\tconst attachedTo = {\n\t\t\t\t\t...( postType && { type: postType.slug } ),\n\t\t\t\t\tid: Number( selectedPostId ),\n\t\t\t\t\ttitle: {\n\t\t\t\t\t\traw: selectedPost.title,\n\t\t\t\t\t\trendered: selectedPost.title,\n\t\t\t\t\t},\n\t\t\t\t};\n\n\t\t\t\tonChange( {\n\t\t\t\t\tpost: Number( selectedPostId ),\n\t\t\t\t\t_embedded: {\n\t\t\t\t\t\t...data?._embedded,\n\t\t\t\t\t\t'wp:attached-to': [ attachedTo ],\n\t\t\t\t\t},\n\t\t\t\t} );\n\t\t\t}\n\t\t}\n\t};\n\n\tconst help = !! data.post\n\t\t? createInterpolateElement(\n\t\t\t\t__(\n\t\t\t\t\t'Search for a post or page to attach this media to or <button>detach current</button>.'\n\t\t\t\t),\n\t\t\t\t{\n\t\t\t\t\tbutton: (\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t\tonClick={ handleDetach }\n\t\t\t\t\t\t\tvariant=\"link\"\n\t\t\t\t\t\t\taccessibleWhenDisabled\n\t\t\t\t\t\t/>\n\t\t\t\t\t),\n\t\t\t\t}\n\t\t )\n\t\t: __( 'Search for a post or page to attach this media to.' );\n\n\treturn (\n\t\t<ComboboxControl\n\t\t\tclassName=\"dataviews-media-field__attached-to\"\n\t\t\t__next40pxDefaultSize\n\t\t\tisLoading={ isLoading }\n\t\t\tlabel={ __( 'Attached to' ) }\n\t\t\thelp={ help }\n\t\t\tvalue={ value }\n\t\t\toptions={ options }\n\t\t\tonFilterValueChange={ debounce(\n\t\t\t\t( filterValue: unknown ) =>\n\t\t\t\t\tonValueChange( filterValue as string ),\n\t\t\t\t300\n\t\t\t) }\n\t\t\tonChange={ handleSelectOption }\n\t\t\thideLabelFromVision\n\t\t/>\n\t);\n}\n", "/**\n * WordPress dependencies\n */\nimport type { Field } from '@wordpress/dataviews';\nimport { __ } from '@wordpress/i18n';\nimport { resolveSelect } from '@wordpress/data';\nimport { store as coreDataStore } from '@wordpress/core-data';\n\n/**\n * Internal dependencies\n */\nimport type { MediaItem } from '../types';\nimport AuthorView from './view';\n\ninterface Author {\n\tid: number;\n\tname: string;\n}\n\nconst authorField: Partial< Field< MediaItem > > = {\n\tlabel: __( 'Author' ),\n\tid: 'author',\n\ttype: 'integer',\n\tgetElements: async () => {\n\t\tconst authors: Author[] =\n\t\t\t( await resolveSelect( coreDataStore ).getEntityRecords(\n\t\t\t\t'root',\n\t\t\t\t'user',\n\t\t\t\t{\n\t\t\t\t\tper_page: -1,\n\t\t\t\t}\n\t\t\t) ) ?? [];\n\t\treturn authors.map( ( { id, name } ) => ( {\n\t\t\tvalue: id,\n\t\t\tlabel: name,\n\t\t} ) );\n\t},\n\trender: AuthorView,\n\tsort: ( a, b, direction ) => {\n\t\tconst nameA = a._embedded?.author?.[ 0 ]?.name || '';\n\t\tconst nameB = b._embedded?.author?.[ 0 ]?.name || '';\n\n\t\treturn direction === 'asc'\n\t\t\t? nameA.localeCompare( nameB )\n\t\t\t: nameB.localeCompare( nameA );\n\t},\n\tfilterBy: {\n\t\toperators: [ 'isAny', 'isNone' ],\n\t},\n\treadOnly: true,\n};\n\nexport default authorField;\n", "/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { useState, useCallback, useEffect } from '@wordpress/element';\nimport { commentAuthorAvatar as authorIcon } from '@wordpress/icons';\nimport { __experimentalHStack as HStack, Icon } from '@wordpress/components';\nimport type { DataViewRenderFieldProps } from '@wordpress/dataviews';\n\n/**\n * Internal dependencies\n */\nimport type { MediaItem } from '../types';\n\nexport default function AuthorView( {\n\titem,\n}: DataViewRenderFieldProps< MediaItem > ) {\n\tconst author = item?._embedded?.author?.[ 0 ];\n\tconst text = author?.name;\n\tconst imageUrl = author?.avatar_urls?.[ 48 ];\n\n\t/*\n\t * Use three states to avoid fade-in animation for cached images:\n\t * 'instant' = image already cached, 'loading' = waiting, 'loaded' = just finished.\n\t */\n\tconst [ loadingState, setLoadingState ] = useState<\n\t\t'instant' | 'loading' | 'loaded'\n\t>( 'loading' );\n\n\tuseEffect( () => {\n\t\tsetLoadingState( 'loading' );\n\t}, [ imageUrl ] );\n\n\tconst imgRef = useCallback( ( img: HTMLImageElement | null ) => {\n\t\tif ( img?.complete ) {\n\t\t\tsetLoadingState( 'instant' );\n\t\t}\n\t}, [] );\n\n\tconst handleLoad = () => {\n\t\tif ( loadingState === 'loading' ) {\n\t\t\tsetLoadingState( 'loaded' );\n\t\t}\n\t};\n\n\treturn (\n\t\t<HStack alignment=\"left\" spacing={ 0 }>\n\t\t\t{ !! imageUrl && (\n\t\t\t\t<div\n\t\t\t\t\tclassName={ clsx( 'media-author-field__avatar', {\n\t\t\t\t\t\t'is-loading': loadingState === 'loading',\n\t\t\t\t\t\t'is-loaded': loadingState === 'loaded',\n\t\t\t\t\t} ) }\n\t\t\t\t>\n\t\t\t\t\t<img\n\t\t\t\t\t\tref={ imgRef }\n\t\t\t\t\t\tonLoad={ handleLoad }\n\t\t\t\t\t\talt={ __( 'Author avatar' ) }\n\t\t\t\t\t\tsrc={ imageUrl }\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t) }\n\t\t\t{ ! imageUrl && (\n\t\t\t\t<div className=\"media-author-field__icon\">\n\t\t\t\t\t<Icon icon={ authorIcon } />\n\t\t\t\t</div>\n\t\t\t) }\n\t\t\t<span className=\"media-author-field__name\">{ text }</span>\n\t\t</HStack>\n\t);\n}\n", "/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { TextareaControl } from '@wordpress/components';\nimport type { Attachment, Updatable } from '@wordpress/core-data';\nimport type { Field } from '@wordpress/dataviews';\n\n/**\n * Internal dependencies\n */\nimport { getRawContent } from '../utils/get-raw-content';\n\nconst captionField: Partial< Field< Updatable< Attachment > > > = {\n\tid: 'caption',\n\ttype: 'text',\n\tlabel: __( 'Caption' ),\n\tgetValue: ( { item } ) => getRawContent( item?.caption ),\n\trender: ( { item } ) => getRawContent( item?.caption ) || '-',\n\tEdit: ( { field, onChange, data } ) => {\n\t\treturn (\n\t\t\t<TextareaControl\n\t\t\t\tlabel={ field.label }\n\t\t\t\tvalue={ getRawContent( data.caption ) || '' }\n\t\t\t\tonChange={ ( value ) => onChange( { caption: value } ) }\n\t\t\t\trows={ 2 }\n\t\t\t/>\n\t\t);\n\t},\n\tenableSorting: false,\n\tfilterBy: false,\n};\n\nexport default captionField;\n", "/**\n * Utility function to extract raw content from either a string or an object\n * containing raw and rendered properties.\n *\n * This handles the inconsistency in WordPress REST API responses where\n * some fields like caption and description can be either:\n * - A simple string\n * - An object with { raw: string, rendered: string }\n *\n * @param content - The content to extract raw value from\n * @return The raw content string, or empty string if content is falsy\n */\nexport function getRawContent(\n\tcontent: string | { raw: string; rendered: string } | undefined | null\n): string {\n\tif ( ! content ) {\n\t\treturn '';\n\t}\n\n\t// If it's a string, return it directly\n\tif ( typeof content === 'string' ) {\n\t\treturn content;\n\t}\n\n\t// If it's an object with raw property, return the raw value\n\tif ( typeof content === 'object' && 'raw' in content ) {\n\t\treturn content.raw || '';\n\t}\n\n\t// Fallback to empty string\n\treturn '';\n}\n", "/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { getSettings } from '@wordpress/date';\nimport type { Field } from '@wordpress/dataviews';\n\n/**\n * Internal dependencies\n */\nimport type { MediaItem } from '../types';\n\nconst dateAddedField: Partial< Field< MediaItem > > = {\n\tid: 'date',\n\ttype: 'datetime',\n\tlabel: __( 'Date added' ),\n\tfilterBy: {\n\t\toperators: [ 'before', 'after' ],\n\t},\n\tformat: {\n\t\tdatetime: getSettings().formats.datetimeAbbreviated,\n\t},\n\treadOnly: true,\n};\n\nexport default dateAddedField;\n", "/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { getSettings } from '@wordpress/date';\nimport type { Field } from '@wordpress/dataviews';\n\n/**\n * Internal dependencies\n */\nimport type { MediaItem } from '../types';\n\nconst dateModifiedField: Partial< Field< MediaItem > > = {\n\tid: 'modified',\n\ttype: 'datetime',\n\tlabel: __( 'Date modified' ),\n\tfilterBy: {\n\t\toperators: [ 'before', 'after' ],\n\t},\n\tformat: {\n\t\tdatetime: getSettings().formats.datetimeAbbreviated,\n\t},\n\treadOnly: true,\n};\n\nexport default dateModifiedField;\n", "/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { TextareaControl } from '@wordpress/components';\nimport type { Attachment, Updatable } from '@wordpress/core-data';\nimport type { Field } from '@wordpress/dataviews';\n\n/**\n * Internal dependencies\n */\nimport { getRawContent } from '../utils/get-raw-content';\n\nconst descriptionField: Partial< Field< Updatable< Attachment > > > = {\n\tid: 'description',\n\ttype: 'text',\n\tlabel: __( 'Description' ),\n\tgetValue: ( { item } ) => getRawContent( item?.description ),\n\trender: ( { item } ) => (\n\t\t<div>{ getRawContent( item?.description ) || '-' }</div>\n\t),\n\tEdit: ( { field, onChange, data } ) => {\n\t\treturn (\n\t\t\t<TextareaControl\n\t\t\t\tlabel={ field.label }\n\t\t\t\tvalue={ getRawContent( data.description ) || '' }\n\t\t\t\tonChange={ ( value ) => onChange( { description: value } ) }\n\t\t\t\trows={ 5 }\n\t\t\t/>\n\t\t);\n\t},\n\tenableSorting: false,\n\tfilterBy: false,\n};\n\nexport default descriptionField;\n", "/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { getFilename } from '@wordpress/url';\nimport type { Field } from '@wordpress/dataviews';\n\n/**\n * Internal dependencies\n */\nimport type { MediaItem } from '../types';\nimport FileNameView from './view';\n\nconst filenameField: Partial< Field< MediaItem > > = {\n\tid: 'filename',\n\ttype: 'text',\n\tlabel: __( 'File name' ),\n\tgetValue: ( { item }: { item: MediaItem } ) =>\n\t\tgetFilename( item?.source_url || '' ),\n\trender: FileNameView,\n\tenableSorting: false,\n\tfilterBy: false,\n\treadOnly: true,\n};\n\nexport default filenameField;\n", "/**\n * WordPress dependencies\n */\nimport {\n\tTooltip,\n\t__experimentalTruncate as Truncate,\n} from '@wordpress/components';\nimport { useMemo } from '@wordpress/element';\nimport { getFilename } from '@wordpress/url';\nimport type { DataViewRenderFieldProps } from '@wordpress/dataviews';\n/**\n * Internal dependencies\n */\nimport type { MediaItem } from '../types';\n\n// Hard-coded truncate length to match the available area in the media sidebar.\n// Longer file names will be truncated and wrapped in a tooltip showing the full name.\nconst TRUNCATE_LENGTH = 15;\n\nexport default function FileNameView( {\n\titem,\n}: DataViewRenderFieldProps< MediaItem > ) {\n\tconst fileName = useMemo(\n\t\t() => ( item?.source_url ? getFilename( item.source_url ) : null ),\n\t\t[ item?.source_url ]\n\t);\n\n\tif ( ! fileName ) {\n\t\treturn '';\n\t}\n\n\treturn fileName.length > TRUNCATE_LENGTH ? (\n\t\t<Tooltip text={ fileName }>\n\t\t\t<Truncate>{ fileName }</Truncate>\n\t\t</Tooltip>\n\t) : (\n\t\t<>{ fileName }</>\n\t);\n}\n", "/**\n * WordPress dependencies\n */\nimport { __, sprintf, _x } from '@wordpress/i18n';\nimport type { Field } from '@wordpress/dataviews';\n\n/**\n * Internal dependencies\n */\nimport type { MediaItem } from '../types';\n\nconst KB_IN_BYTES = 1024;\nconst MB_IN_BYTES = 1024 * KB_IN_BYTES;\nconst GB_IN_BYTES = 1024 * MB_IN_BYTES;\nconst TB_IN_BYTES = 1024 * GB_IN_BYTES;\nconst PB_IN_BYTES = 1024 * TB_IN_BYTES;\nconst EB_IN_BYTES = 1024 * PB_IN_BYTES;\nconst ZB_IN_BYTES = 1024 * EB_IN_BYTES;\nconst YB_IN_BYTES = 1024 * ZB_IN_BYTES;\n\nfunction getBytesString(\n\tbytes: number,\n\tunitSymbol: string,\n\tdecimals = 2\n): string {\n\treturn sprintf(\n\t\t// translators: 1: Actual bytes of a file. 2: The unit symbol (e.g. MB).\n\t\t_x( '%1$s %2$s', 'file size' ),\n\t\tbytes.toLocaleString( undefined, {\n\t\t\tminimumFractionDigits: 0,\n\t\t\tmaximumFractionDigits: decimals,\n\t\t} ),\n\t\tunitSymbol\n\t);\n}\n\n/**\n * Converts bytes to a human-readable file size string with a specified number of decimal places.\n *\n * This logic is comparable to core's `size_format()` function.\n *\n * @param bytes The size in bytes.\n * @param decimals The number of decimal places to include in the result.\n * @return The human-readable file size string.\n */\nfunction formatFileSize( bytes: number, decimals = 2 ): string {\n\tif ( bytes === 0 ) {\n\t\treturn getBytesString( 0, _x( 'B', 'unit symbol' ), decimals );\n\t}\n\tconst quant = {\n\t\t/* translators: Unit symbol for yottabyte. */\n\t\t[ _x( 'YB', 'unit symbol' ) ]: YB_IN_BYTES,\n\t\t/* translators: Unit symbol for zettabyte. */\n\t\t[ _x( 'ZB', 'unit symbol' ) ]: ZB_IN_BYTES,\n\t\t/* translators: Unit symbol for exabyte. */\n\t\t[ _x( 'EB', 'unit symbol' ) ]: EB_IN_BYTES,\n\t\t/* translators: Unit symbol for petabyte. */\n\t\t[ _x( 'PB', 'unit symbol' ) ]: PB_IN_BYTES,\n\t\t/* translators: Unit symbol for terabyte. */\n\t\t[ _x( 'TB', 'unit symbol' ) ]: TB_IN_BYTES,\n\t\t/* translators: Unit symbol for gigabyte. */\n\t\t[ _x( 'GB', 'unit symbol' ) ]: GB_IN_BYTES,\n\t\t/* translators: Unit symbol for megabyte. */\n\t\t[ _x( 'MB', 'unit symbol' ) ]: MB_IN_BYTES,\n\t\t/* translators: Unit symbol for kilobyte. */\n\t\t[ _x( 'KB', 'unit symbol' ) ]: KB_IN_BYTES,\n\t\t/* translators: Unit symbol for byte. */\n\t\t[ _x( 'B', 'unit symbol' ) ]: 1,\n\t};\n\n\tfor ( const [ unit, mag ] of Object.entries( quant ) ) {\n\t\tif ( bytes >= mag ) {\n\t\t\treturn getBytesString( bytes / mag, unit, decimals );\n\t\t}\n\t}\n\n\treturn ''; // Fallback in case no unit matches, though this should not happen.\n}\n\nconst filesizeField: Partial< Field< MediaItem > > = {\n\tid: 'filesize',\n\ttype: 'text',\n\tlabel: __( 'File size' ),\n\tgetValue: ( { item }: { item: MediaItem } ) =>\n\t\titem?.media_details?.filesize\n\t\t\t? formatFileSize( item?.media_details?.filesize )\n\t\t\t: '',\n\tisVisible: ( item: MediaItem ) => {\n\t\treturn !! item?.media_details?.filesize;\n\t},\n\tenableSorting: false,\n\tfilterBy: false,\n\treadOnly: true,\n};\n\nexport default filesizeField;\n", "/**\n * WordPress dependencies\n */\nimport { __, _x, sprintf } from '@wordpress/i18n';\nimport type { Attachment, Updatable } from '@wordpress/core-data';\nimport type { Field } from '@wordpress/dataviews';\n\nconst mediaDimensionsField: Partial< Field< Updatable< Attachment > > > = {\n\tid: 'media_dimensions',\n\ttype: 'text',\n\tlabel: __( 'Dimensions' ),\n\tgetValue: ( { item } ) =>\n\t\titem?.media_details?.width && item?.media_details?.height\n\t\t\t? sprintf(\n\t\t\t\t\t// translators: 1: Width. 2: Height.\n\t\t\t\t\t_x( '%1$s \u00D7 %2$s', 'image dimensions' ),\n\t\t\t\t\titem?.media_details?.width?.toString(),\n\t\t\t\t\titem?.media_details?.height?.toString()\n\t\t\t )\n\t\t\t: '',\n\tisVisible: ( item ) => {\n\t\treturn !! ( item?.media_details?.width && item?.media_details?.height );\n\t},\n\tenableSorting: false,\n\tfilterBy: false,\n\treadOnly: true,\n};\n\nexport default mediaDimensionsField;\n", "/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport type { Field } from '@wordpress/dataviews';\n\n/**\n * Internal dependencies\n */\nimport type { MediaItem } from '../types';\nimport MediaThumbnailView from './view';\n\nconst mediaThumbnailField: Partial< Field< MediaItem > > = {\n\tid: 'media_thumbnail',\n\ttype: 'media',\n\tlabel: __( 'Thumbnail' ),\n\trender: MediaThumbnailView,\n\tenableSorting: false,\n\tfilterBy: false,\n};\n\nexport default mediaThumbnailField;\n", "/**\n * WordPress dependencies\n */\nimport { useSelect } from '@wordpress/data';\nimport { store as coreStore } from '@wordpress/core-data';\nimport {\n\t__experimentalTruncate as Truncate,\n\t__experimentalVStack as VStack,\n\tIcon,\n} from '@wordpress/components';\nimport { useState } from '@wordpress/element';\nimport type { Attachment } from '@wordpress/core-data';\nimport { getFilename } from '@wordpress/url';\nimport type { DataViewRenderFieldProps } from '@wordpress/dataviews';\n/**\n * Internal dependencies\n */\nimport { getMediaTypeFromMimeType } from '../utils/get-media-type-from-mime-type';\nimport type { MediaItem } from '../types';\n\nfunction FallbackView( {\n\titem,\n\tfilename,\n}: {\n\titem: MediaItem;\n\tfilename: string;\n} ) {\n\treturn (\n\t\t<div className=\"dataviews-media-field__media-thumbnail\">\n\t\t\t<VStack\n\t\t\t\tjustify=\"center\"\n\t\t\t\talignment=\"center\"\n\t\t\t\tclassName=\"dataviews-media-field__media-thumbnail__stack\"\n\t\t\t\tspacing={ 0 }\n\t\t\t>\n\t\t\t\t<Icon\n\t\t\t\t\tclassName=\"dataviews-media-field__media-thumbnail--icon\"\n\t\t\t\t\ticon={ getMediaTypeFromMimeType( item.mime_type ).icon }\n\t\t\t\t\tsize={ 24 }\n\t\t\t\t/>\n\t\t\t\t{ !! filename && (\n\t\t\t\t\t<div className=\"dataviews-media-field__media-thumbnail__filename\">\n\t\t\t\t\t\t<Truncate className=\"dataviews-media-field__media-thumbnail__filename__truncate\">\n\t\t\t\t\t\t\t{ filename }\n\t\t\t\t\t\t</Truncate>\n\t\t\t\t\t</div>\n\t\t\t\t) }\n\t\t\t</VStack>\n\t\t</div>\n\t);\n}\n\nexport default function MediaThumbnailView( {\n\titem,\n\tconfig,\n}: DataViewRenderFieldProps< MediaItem > ) {\n\tconst [ imageError, setImageError ] = useState( false );\n\n\tconst _featuredMedia = useSelect(\n\t\t( select ) => {\n\t\t\t// Avoid the network request if it's not needed. `featured_media` is\n\t\t\t// 0 for images and media without featured media.\n\t\t\tif ( ! item.featured_media ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\treturn select( coreStore ).getEntityRecord< Attachment >(\n\t\t\t\t'postType',\n\t\t\t\t'attachment',\n\t\t\t\titem.featured_media\n\t\t\t);\n\t\t},\n\t\t[ item.featured_media ]\n\t);\n\tconst featuredMedia = item.featured_media ? _featuredMedia : item;\n\n\t// Fetching.\n\tif ( ! featuredMedia ) {\n\t\treturn null;\n\t}\n\n\tconst filename = getFilename( featuredMedia.source_url || '' );\n\n\t// Show fallback if image failed to load or if not an image type.\n\tif (\n\t\timageError ||\n\t\tgetMediaTypeFromMimeType( featuredMedia.mime_type ).type !== 'image'\n\t) {\n\t\treturn (\n\t\t\t<FallbackView item={ featuredMedia } filename={ filename || '' } />\n\t\t);\n\t}\n\n\treturn (\n\t\t<div className=\"dataviews-media-field__media-thumbnail\">\n\t\t\t<img\n\t\t\t\tclassName=\"dataviews-media-field__media-thumbnail--image\"\n\t\t\t\tsrc={ featuredMedia.source_url }\n\t\t\t\tsrcSet={\n\t\t\t\t\tfeaturedMedia?.media_details?.sizes\n\t\t\t\t\t\t? (\n\t\t\t\t\t\t\t\tObject.values(\n\t\t\t\t\t\t\t\t\tfeaturedMedia.media_details.sizes\n\t\t\t\t\t\t\t\t) as Array< {\n\t\t\t\t\t\t\t\t\tsource_url: string;\n\t\t\t\t\t\t\t\t\twidth: number;\n\t\t\t\t\t\t\t\t} >\n\t\t\t\t\t\t )\n\t\t\t\t\t\t\t\t.map(\n\t\t\t\t\t\t\t\t\t( size ) =>\n\t\t\t\t\t\t\t\t\t\t`${ size.source_url } ${ size.width }w`\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t.join( ', ' )\n\t\t\t\t\t\t: undefined\n\t\t\t\t}\n\t\t\t\tsizes={ config?.sizes || '100vw' }\n\t\t\t\talt={ featuredMedia.alt_text || featuredMedia.title.raw }\n\t\t\t\tonError={ () => setImageError( true ) }\n\t\t\t/>\n\t\t</div>\n\t);\n}\n", "/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { audio, video, image, file } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport type { MediaType } from '../types';\n\n/**\n * Get the media type from a mime type, including an icon.\n * TODO - media types should be formalized somewhere.\n *\n * References:\n * https://developer.wordpress.org/reference/functions/wp_mime_type_icon/\n * https://developer.wordpress.org/reference/hooks/mime_types/\n * https://developer.wordpress.org/reference/functions/wp_get_mime_types/\n *\n * @param mimeType - The mime type to get the media type from.\n * @return The media type.\n */\nexport function getMediaTypeFromMimeType( mimeType: string ): MediaType {\n\tif ( mimeType.startsWith( 'image/' ) ) {\n\t\treturn {\n\t\t\ttype: 'image',\n\t\t\tlabel: __( 'Image' ),\n\t\t\ticon: image,\n\t\t};\n\t}\n\n\tif ( mimeType.startsWith( 'video/' ) ) {\n\t\treturn {\n\t\t\ttype: 'video',\n\t\t\tlabel: __( 'Video' ),\n\t\t\ticon: video,\n\t\t};\n\t}\n\n\tif ( mimeType.startsWith( 'audio/' ) ) {\n\t\treturn {\n\t\t\ttype: 'audio',\n\t\t\tlabel: __( 'Audio' ),\n\t\t\ticon: audio,\n\t\t};\n\t}\n\n\treturn {\n\t\ttype: 'application',\n\t\tlabel: __( 'Application' ),\n\t\ticon: file,\n\t};\n}\n", "/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport type { Attachment, Updatable } from '@wordpress/core-data';\nimport type { Field } from '@wordpress/dataviews';\n\nconst mimeTypeField: Partial< Field< Updatable< Attachment > > > = {\n\tid: 'mime_type',\n\ttype: 'text',\n\tlabel: __( 'File type' ),\n\tgetValue: ( { item } ) => item?.mime_type || '',\n\trender: ( { item } ) => item?.mime_type || '-',\n\t// Disable sorting until REST API support for ordering my `mime_type` is added.\n\t// See: https://core.trac.wordpress.org/ticket/64073\n\tenableSorting: false,\n\tfilterBy: false,\n\treadOnly: true,\n};\n\nexport default mimeTypeField;\n", "/**\n * WordPress dependencies\n */\nimport { __dangerousOptInToUnstableAPIsOnlyForCoreModules } from '@wordpress/private-apis';\n\nexport const { lock, unlock } =\n\t__dangerousOptInToUnstableAPIsOnlyForCoreModules(\n\t\t'I acknowledge private features are not for use in themes or plugins and doing so will break in the next version of WordPress.',\n\t\t'@wordpress/media-utils'\n\t);\n", "/**\n * Internal dependencies\n */\nimport { sideloadMedia } from './utils/sideload-media';\nimport { MediaUploadModal } from './components/media-upload-modal';\nimport { lock } from './lock-unlock';\n\n/**\n * Private @wordpress/media-utils APIs.\n */\nexport const privateApis = {};\n\nlock( privateApis, {\n\tsideloadMedia,\n\tMediaUploadModal,\n} );\n"],
"mappings": "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,eAAe;AAAA,QAClB,QAAK;AAAA,QACL,QAAK;AAAA,QACL,QAAK;AAAA,QACL,QAAK;AAAA,QACL,QAAK;AAAA,QACL,QAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,QAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,QAAK;AAAA,QACL,UAAK;AAAA,QACL,QAAK;AAAA,QACL,QAAK;AAAA,QACL,QAAK;AAAA,QACL,QAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,QAAK;AAAA,QACL,QAAK;AAAA,QACL,QAAK;AAAA,QACL,QAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,QAAK;AAAA,QACL,QAAK;AAAA,QACL,QAAK;AAAA,QACL,QAAK;AAAA,QACL,QAAK;AAAA,QACL,QAAK;AAAA,QACL,QAAK;AAAA,QACL,QAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,QAAK;AAAA,QACL,QAAK;AAAA,QACL,QAAK;AAAA,QACL,QAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,QAAK;AAAA,QACL,QAAK;AAAA,QACL,QAAK;AAAA,QACL,QAAK;AAAA,QACL,QAAK;AAAA,QACL,QAAK;AAAA,QACL,QAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,QAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,QAAK;AAAA,QACL,UAAK;AAAA,QACL,QAAK;AAAA,QACL,QAAK;AAAA,QACL,QAAK;AAAA,QACL,QAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,QAAK;AAAA,QACL,QAAK;AAAA,QACL,QAAK;AAAA,QACL,QAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,QAAK;AAAA,QACL,QAAK;AAAA,QACL,QAAK;AAAA,QACL,QAAK;AAAA,QACL,QAAK;AAAA,QACL,QAAK;AAAA,QACL,QAAK;AAAA,QACL,QAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,QAAK;AAAA,QACL,QAAK;AAAA,QACL,QAAK;AAAA,QACL,QAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,QAAK;AAAA,QACL,QAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,WAAM;AAAA,QACN,WAAM;AAAA,QACN,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,WAAM;AAAA,QACN,WAAM;AAAA,QACN,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,WAAM;AAAA,QACN,WAAM;AAAA,QACN,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,WAAM;AAAA,QACN,WAAM;AAAA,QACN,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,WAAM;AAAA,QACN,WAAM;AAAA,QACN,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,WAAM;AAAA,QACN,WAAM;AAAA,QACN,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,WAAM;AAAA,QACN,WAAM;AAAA,QACN,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,WAAM;AAAA,QACN,WAAM;AAAA,QACN,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,WAAM;AAAA,QACN,WAAM;AAAA,QACN,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,WAAM;AAAA,QACN,WAAM;AAAA,QACN,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,QAAK;AAAA,QACL,QAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,WAAM;AAAA,QACN,WAAM;AAAA,QACN,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,WAAM;AAAA,QACN,WAAM;AAAA,QACN,WAAM;AAAA,QACN,WAAM;AAAA,QACN,WAAM;AAAA,QACN,WAAM;AAAA,QACN,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,WAAM;AAAA,QACN,WAAM;AAAA,QACN,gBAAM;AAAA,QACN,gBAAM;AAAA,QACN,cAAM;AAAA,QACN,cAAM;AAAA,Q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",
"names": ["x", "y", "subscribe", "React", "useState", "useLayoutEffect", "useEffect", "match", "removeAccents", "a", "b", "i", "import_i18n", "apiFetch", "import_i18n", "message", "import_i18n", "import_i18n", "message", "import_i18n", "import_api_fetch", "apiFetch", "message", "import_element", "import_i18n", "import_core_data", "import_data", "import_components", "import_primitives", "import_jsx_runtime", "import_primitives", "import_jsx_runtime", "import_primitives", "import_jsx_runtime", "import_primitives", "import_jsx_runtime", "import_primitives", "import_jsx_runtime", "import_primitives", "import_jsx_runtime", "import_primitives", "import_jsx_runtime", "import_primitives", "import_jsx_runtime", "import_primitives", "import_jsx_runtime", "import_primitives", "import_jsx_runtime", "import_primitives", "import_jsx_runtime", "import_primitives", "import_jsx_runtime", "import_primitives", "import_jsx_runtime", "import_primitives", "import_jsx_runtime", "import_primitives", "import_jsx_runtime", "import_primitives", "import_jsx_runtime", "import_primitives", "import_jsx_runtime", "import_primitives", "import_jsx_runtime", "import_primitives", "import_jsx_runtime", "import_primitives", "import_jsx_runtime", "import_primitives", "import_jsx_runtime", "import_primitives", "import_jsx_runtime", "import_primitives", "import_jsx_runtime", "import_primitives", "import_jsx_runtime", "import_primitives", "import_jsx_runtime", "import_primitives", "import_jsx_runtime", "import_primitives", "import_jsx_runtime", "import_primitives", "import_jsx_runtime", "init", "React", "a", "b", "c", "d", "i", "React", "React", "a", "b", "a", "b", "c", "d", "e", "i", "result", "render", "_createElement", "e", "t", "f", "n", "o", "import_element", "Stack", "render", "import_element", "import_i18n", "import_i18n", "import_i18n", "import_components", "import_element", "import_i18n", "import_jsx_runtime", "import_components", "import_i18n", "import_element", "import_jsx_runtime", "componentsPrivateApis", "import_components", "import_i18n", "import_element", "import_data", "import_compose", "import_jsx_runtime", "import_i18n", "import_components", "import_element", "f", "import_jsx_runtime", "Menu", "componentsPrivateApis", "i", "f", "import_element", "import_jsx_runtime", "isItemClickable", "import_jsx_runtime", "descriptionField", "isItemClickable", "import_compose", "import_element", "import_i18n", "import_components", "import_i18n", "import_element", "import_jsx_runtime", "isVisible", "Item", "f", "descriptionField", "ItemGroup", "import_jsx_runtime", "f", "descriptionField", "isItemClickable", "isSelected", "e", "import_components", "import_i18n", "import_components", "import_i18n", "import_compose", "import_keycodes", "import_element", "import_components", "import_i18n", "import_element", "import_jsx_runtime", "import_jsx_runtime", "componentsPrivateApis", "i", "j", "GridItem", "isItemClickable", "descriptionField", "isSelected", "f", "import_jsx_runtime", "isItemClickable", "f", "import_compose", "import_components", "import_element", "import_i18n", "import_data", "import_jsx_runtime", "Menu", "componentsPrivateApis", "isSelected", "descriptionField", "isDefined", "f", "import_components", "import_i18n", "import_element", "import_jsx_runtime", "import_components", "import_element", "import_data", "import_jsx_runtime", "descriptionField", "isItemClickable", "import_react", "isDefined", "descriptionField", "f", "import_jsx_runtime", "import_components", "import_i18n", "import_compose", "import_element", "import_components", "import_data", "import_element", "import_i18n", "import_components", "import_element", "import_i18n", "import_jsx_runtime", "i", "import_jsx_runtime", "EMPTY_ARRAY", "BulkSelectionCheckbox", "message", "import_element", "import_jsx_runtime", "import_jsx_runtime", "Badge", "componentsPrivateApis", "GridItem", "descriptionField", "isSelected", "f", "import_i18n", "import_components", "import_element", "import_jsx_runtime", "TableColumnField", "f", "TableRow", "descriptionField", "isSelected", "import_components", "import_i18n", "import_element", "import_jsx_runtime", "imageSizes", "a", "b", "import_components", "import_i18n", "import_element", "import_jsx_runtime", "ToggleGroupControl", "ToggleGroupControlOption", "import_element", "import_components", "import_i18n", "import_element", "__defProp", "__hasOwnProp", "a", "b", "__defProp", "__defProps", "__getOwnPropDescs", "__getOwnPropSymbols", "__hasOwnProp", "__propIsEnum", "__defNormalProp", "__spreadValues", "a", "b", "__spreadProps", "__objRest", "noop", "__spreadValues", "message", "import_react", "mergeProps", "a", "b", "__spreadProps", "__spreadValues", "e", "import_react", "React", "useId", "defaultValue", "React", "import_jsx_runtime", "forwardRef2", "render", "memo2", "Component", "createElement", "mergeProps", "useContext2", "import_react", "ctx", "import_react", "ctx", "noop", "__spreadProps", "__spreadValues", "React", "useSyncExternalStoreExports", "selector", "createStore", "useState2", "i", "__spreadValues", "__spreadProps", "update", "i", "__spreadProps", "__spreadValues", "isGrid", "useId", "update", "__spreadProps", "__spreadValues", "update", "update", "__objRest", "__spreadProps", "__spreadValues", "update", "__objRest", "__spreadProps", "__spreadValues", "update", "ctx", "import_react", "ctx", "ctx", "import_react", "ctx", "forwardRef2", "createElement", "findFirstEnabledItem", "groupItemsByRows", "import_react", "__spreadValues", "import_react", "TagName", "forwardRef2", "createElement", "TagName", "import_react", "import_jsx_runtime", "TagName", "findFirstEnabledItem", "groupItemsByRows", "Composite", "forwardRef2", "Composite2", "createElement", "import_react", "TagName", "noop", "useId", "forwardRef2", "createElement", "import_jsx_runtime", "import_react", "TagName", "forwardRef2", "createElement", "import_react", "import_jsx_runtime", "TagName", "i", "o", "l", "j", "a", "b", "forwardRef2", "createElement", "import_react", "TagName", "symbol", "memo2", "forwardRef2", "createElement", "import_react", "TagName", "useId", "forwardRef2", "createElement", "import_react", "import_jsx_runtime", "TagName", "i", "useId", "isGrid", "memo2", "forwardRef2", "createElement", "import_react", "import_jsx_runtime", "TagName", "v", "memo2", "forwardRef2", "createElement", "TagName", "memo2", "forwardRef2", "createElement", "import_react", "import_jsx_runtime", "TagName", "afterPaint", "useId", "forwardRef2", "createElement", "import_react", "import_jsx_runtime", "TagName", "useId", "forwardRef2", "createElement", "import_compose", "import_i18n", "import_element", "import_components", "EMPTY_ARRAY", "import_element", "EMPTY_ARRAY", "import_jsx_runtime", "removeAccents", "v", "f", "ComboboxList", "import_compose", "import_element", "import_components", "import_jsx_runtime", "f", "fastDeepEqual", "import_i18n", "import_element", "import_jsx_runtime", "import_jsx_runtime", "f", "v", "import_components", "import_i18n", "import_element", "import_jsx_runtime", "Menu", "componentsPrivateApis", "import_components", "import_i18n", "import_jsx_runtime", "f", "import_element", "f", "a", "b", "import_jsx_runtime", "import_element", "import_components", "import_i18n", "import_jsx_runtime", "import_element", "import_jsx_runtime", "import_element", "import_i18n", "import_jsx_runtime", "isItemClickable", "v", "import_i18n", "import_element", "import_components", "import_compose", "import_jsx_runtime", "import_components", "import_i18n", "import_element", "import_compose", "import_components", "import_i18n", "import_element", "import_jsx_runtime", "import_jsx_runtime", "Menu", "componentsPrivateApis", "v", "e", "warning", "ToggleGroupControl", "ToggleGroupControlOptionIcon", "ToggleGroupControlOption", "Grid", "Heading", "Text", "DropdownContentWrapper", "import_components", "import_element", "isValid", "import_jsx_runtime", "isValid", "defaultOptions", "format", "defaultOptions", "defaultOptions", "localize", "formatLong", "format", "defaultOptions", "import_components", "import_element", "import_i18n", "import_date", "import_components", "import_element", "import_i18n", "import_jsx_runtime", "NumberControl", "import_jsx_runtime", "componentsPrivateApis", "isValid", "import_components", "import_element", "import_i18n", "import_date", "import_jsx_runtime", "DateCalendar", "componentsPrivateApis", "isValid", "isSelected", "InputControl", "toDate", "import_components", "import_components", "import_element", "import_jsx_runtime", "ValidatedInputControl", "isValid", "import_jsx_runtime", "InputControlPrefixWrapper", "import_components", "import_jsx_runtime", "InputControlPrefixWrapper", "import_components", "import_jsx_runtime", "InputControlPrefixWrapper", "import_components", "import_element", "import_i18n", "import_jsx_runtime", "NumberControl", "isValid", "import_jsx_runtime", "import_jsx_runtime", "Number", "import_components", "import_element", "import_jsx_runtime", "isValid", "import_components", "import_element", "import_jsx_runtime", "isValid", "import_element", "import_jsx_runtime", "Text", "import_components", "import_element", "import_jsx_runtime", "isValid", "import_components", "import_element", "import_jsx_runtime", "isValid", "import_components", "import_element", "import_jsx_runtime", "isValid", "ToggleGroupControlOption", "import_components", "import_element", "import_jsx_runtime", "isValid", "r", "t", "n", "e", "u", "a", "o", "i", "s", "h", "r", "t", "n", "e", "u", "i", "a", "import_components", "import_element", "import_jsx_runtime", "ValidatedInputControl", "InputControlPrefixWrapper", "isValid", "import_components", "import_element", "import_i18n", "import_jsx_runtime", "isVisible", "InputControlSuffixWrapper", "import_jsx_runtime", "Number", "Text", "import_i18n", "import_jsx_runtime", "a", "b", "v", "import_i18n", "a", "b", "format", "getValueFormatted", "isValidCustom", "import_i18n", "format", "getValueFormatted", "isEmpty", "isValidCustom", "import_date", "format", "getValueFormatted", "a", "b", "import_date", "format", "getValueFormatted", "formatDate", "sort", "a", "b", "import_i18n", "getValueFormatted", "isValidCustom", "sort", "a", "b", "import_i18n", "getValueFormatted", "render", "isValidCustom", "v", "sort", "a", "b", "getValueFormatted", "import_i18n", "import_jsx_runtime", "render", "isValidCustom", "sort", "a", "b", "sort", "a", "b", "sort", "a", "b", "import_element", "import_compose", "import_jsx_runtime", "EMPTY_ARRAY", "import_i18n", "import_components", "import_jsx_runtime", "import_i18n", "import_element", "import_i18n", "import_jsx_runtime", "import_components", "import_i18n", "import_element", "import_compose", "import_data", "import_jsx_runtime", "coreStore", "fetchLinkSuggestions", "import_i18n", "import_data", "import_core_data", "import_i18n", "import_element", "import_components", "import_jsx_runtime", "HStack", "coreDataStore", "a", "b", "import_i18n", "import_components", "import_jsx_runtime", "import_i18n", "import_date", "import_i18n", "import_date", "import_i18n", "import_components", "import_jsx_runtime", "import_i18n", "import_url", "import_components", "import_element", "import_url", "import_jsx_runtime", "Truncate", "import_i18n", "import_i18n", "import_i18n", "import_data", "import_core_data", "import_components", "import_element", "import_url", "import_i18n", "import_jsx_runtime", "VStack", "Truncate", "coreStore", "import_i18n", "import_private_apis", "lock", "unlock", "import_jsx_runtime", "unlock", "coreDataPrivateApis", "LAYOUT_PICKER_GRID", "LAYOUT_PICKER_TABLE", "coreStore", "privateApis", "lock"]
}