Files
klz-cables.com/.pnpm-store/v10/files/90/88795b4cf994de2766d38003e8d1dd00c6a2d0d23ee79d9401a9954c2422c13c9f7f02553fd7e535ca60d1365b8b5ba48525a75390e2a3d2fc8e8d0c9aeedb
Marc Mintel 5397309103
Some checks failed
Build & Deploy / 🔍 Prepare (push) Successful in 20s
Build & Deploy / 🧪 QA (push) Failing after 34s
Build & Deploy / 🏗️ Build (push) Has started running
Build & Deploy / 🚀 Deploy (push) Has been cancelled
Build & Deploy / 🧪 Smoke Test (push) Has been cancelled
Build & Deploy / ⚡ Lighthouse (push) Has been cancelled
Build & Deploy / 🔔 Notify (push) Has been cancelled
fix(products): fix breadcrumbs and product filtering (backport from main)
2026-02-24 16:04:21 +01:00

8 lines
3.3 MiB
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{
"version": 3,
"sources": ["../../../../../node_modules/.pnpm/scheduler@0.25.0/node_modules/scheduler/cjs/scheduler.production.js", "../../../../../node_modules/.pnpm/scheduler@0.25.0/node_modules/scheduler/index.js", "../../../../../node_modules/.pnpm/react-is@16.13.1/node_modules/react-is/cjs/react-is.production.min.js", "../../../../../node_modules/.pnpm/react-is@16.13.1/node_modules/react-is/index.js", "../../../../../node_modules/.pnpm/hoist-non-react-statics@3.3.2/node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js", "../../../../../node_modules/.pnpm/bson-objectid@2.0.4/node_modules/bson-objectid/objectid.js", "../../../../../node_modules/.pnpm/object-to-formdata@4.5.1/node_modules/object-to-formdata/src/index.js", "../../../../../node_modules/.pnpm/crypt@0.0.2/node_modules/crypt/crypt.js", "../../../../../node_modules/.pnpm/charenc@0.0.2/node_modules/charenc/charenc.js", "../../../../../node_modules/.pnpm/is-buffer@1.1.6/node_modules/is-buffer/index.js", "../../../../../node_modules/.pnpm/md5@2.3.0/node_modules/md5/md5.js", "../../../src/forms/RowLabel/index.tsx", "../../../src/elements/RenderCustomComponent/index.tsx", "../../../src/forms/RowLabel/Context/index.tsx", "../../../src/forms/Form/context.ts", "../../../../../node_modules/.pnpm/use-context-selector@2.0.0_react@19.2.4_scheduler@0.25.0/node_modules/use-context-selector/dist/index.js", "../../../src/fields/Array/index.tsx", "../../../../../node_modules/.pnpm/sonner@1.7.4_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/sonner/src/index.tsx", "../../../../../node_modules/.pnpm/sonner@1.7.4_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/sonner/src/assets.tsx", "../../../../../node_modules/.pnpm/sonner@1.7.4_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/sonner/src/hooks.tsx", "../../../../../node_modules/.pnpm/sonner@1.7.4_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/sonner/src/state.ts", "../../../../../node_modules/.pnpm/sonner@1.7.4_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/sonner/dist/index.mjs.map", "../../../../../node_modules/.pnpm/sonner@1.7.4_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/sonner/src/styles.css", "../../../../../node_modules/.pnpm/sonner@1.7.4_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/sonner/src/types.ts", "../../../src/elements/Banner/index.tsx", "../../../src/elements/Link/index.tsx", "../../../src/providers/RouteTransition/index.tsx", "../../../src/elements/Link/formatUrl.ts", "../../../src/elements/Button/index.tsx", "../../../src/icons/Chevron/index.tsx", "../../../src/icons/Edit/index.tsx", "../../../src/icons/Link/index.tsx", "../../../src/icons/Plus/index.tsx", "../../../src/icons/Swap/index.tsx", "../../../src/elements/Popup/PopupButtonList/index.tsx", "../../../src/elements/Popup/PopupDivider/index.tsx", "../../../src/elements/Popup/PopupGroupLabel/index.tsx", "../../../src/elements/Popup/index.tsx", "../../../src/hooks/useEffectEvent.ts", "../../../src/elements/Popup/PopupTrigger/index.tsx", "../../../src/elements/Tooltip/index.tsx", "../../../src/hooks/useIntersect.ts", "../../../src/elements/ClipboardAction/isClipboardDataValid.ts", "../../../src/elements/ClipboardAction/clipboardUtilities.ts", "../../../src/elements/ClipboardAction/index.tsx", "../../../src/icons/More/index.tsx", "../../../src/elements/ClipboardAction/ClipboardActionLabel.tsx", "../../../src/icons/Copy/index.tsx", "../../../src/elements/ClipboardAction/mergeFormStateFromClipboard.ts", "../../../src/elements/DraggableSortable/DraggableSortableItem/index.tsx", "../../../src/elements/DraggableSortable/useDraggableSortable/index.tsx", "../../../../../node_modules/.pnpm/@dnd-kit+utilities@3.2.2_react@19.2.4/node_modules/@dnd-kit/utilities/src/hooks/useCombinedRefs.ts", "../../../../../node_modules/.pnpm/@dnd-kit+utilities@3.2.2_react@19.2.4/node_modules/@dnd-kit/utilities/src/execution-context/canUseDOM.ts", "../../../../../node_modules/.pnpm/@dnd-kit+utilities@3.2.2_react@19.2.4/node_modules/@dnd-kit/utilities/src/type-guards/isWindow.ts", "../../../../../node_modules/.pnpm/@dnd-kit+utilities@3.2.2_react@19.2.4/node_modules/@dnd-kit/utilities/src/type-guards/isNode.ts", "../../../../../node_modules/.pnpm/@dnd-kit+utilities@3.2.2_react@19.2.4/node_modules/@dnd-kit/utilities/src/execution-context/getWindow.ts", "../../../../../node_modules/.pnpm/@dnd-kit+utilities@3.2.2_react@19.2.4/node_modules/@dnd-kit/utilities/src/type-guards/isDocument.ts", "../../../../../node_modules/.pnpm/@dnd-kit+utilities@3.2.2_react@19.2.4/node_modules/@dnd-kit/utilities/src/type-guards/isHTMLElement.ts", "../../../../../node_modules/.pnpm/@dnd-kit+utilities@3.2.2_react@19.2.4/node_modules/@dnd-kit/utilities/src/type-guards/isSVGElement.ts", "../../../../../node_modules/.pnpm/@dnd-kit+utilities@3.2.2_react@19.2.4/node_modules/@dnd-kit/utilities/src/execution-context/getOwnerDocument.ts", "../../../../../node_modules/.pnpm/@dnd-kit+utilities@3.2.2_react@19.2.4/node_modules/@dnd-kit/utilities/src/hooks/useIsomorphicLayoutEffect.ts", "../../../../../node_modules/.pnpm/@dnd-kit+utilities@3.2.2_react@19.2.4/node_modules/@dnd-kit/utilities/src/hooks/useEvent.ts", "../../../../../node_modules/.pnpm/@dnd-kit+utilities@3.2.2_react@19.2.4/node_modules/@dnd-kit/utilities/src/hooks/useInterval.ts", "../../../../../node_modules/.pnpm/@dnd-kit+utilities@3.2.2_react@19.2.4/node_modules/@dnd-kit/utilities/src/hooks/useLatestValue.ts", "../../../../../node_modules/.pnpm/@dnd-kit+utilities@3.2.2_react@19.2.4/node_modules/@dnd-kit/utilities/src/hooks/useLazyMemo.ts", "../../../../../node_modules/.pnpm/@dnd-kit+utilities@3.2.2_react@19.2.4/node_modules/@dnd-kit/utilities/src/hooks/useNodeRef.ts", "../../../../../node_modules/.pnpm/@dnd-kit+utilities@3.2.2_react@19.2.4/node_modules/@dnd-kit/utilities/src/hooks/usePrevious.ts", "../../../../../node_modules/.pnpm/@dnd-kit+utilities@3.2.2_react@19.2.4/node_modules/@dnd-kit/utilities/src/hooks/useUniqueId.ts", "../../../../../node_modules/.pnpm/@dnd-kit+utilities@3.2.2_react@19.2.4/node_modules/@dnd-kit/utilities/src/adjustment.ts", "../../../../../node_modules/.pnpm/@dnd-kit+utilities@3.2.2_react@19.2.4/node_modules/@dnd-kit/utilities/src/event/hasViewportRelativeCoordinates.ts", "../../../../../node_modules/.pnpm/@dnd-kit+utilities@3.2.2_react@19.2.4/node_modules/@dnd-kit/utilities/src/event/isKeyboardEvent.ts", "../../../../../node_modules/.pnpm/@dnd-kit+utilities@3.2.2_react@19.2.4/node_modules/@dnd-kit/utilities/src/event/isTouchEvent.ts", "../../../../../node_modules/.pnpm/@dnd-kit+utilities@3.2.2_react@19.2.4/node_modules/@dnd-kit/utilities/src/coordinates/getEventCoordinates.ts", "../../../../../node_modules/.pnpm/@dnd-kit+utilities@3.2.2_react@19.2.4/node_modules/@dnd-kit/utilities/src/css.ts", "../../../../../node_modules/.pnpm/@dnd-kit+utilities@3.2.2_react@19.2.4/node_modules/@dnd-kit/utilities/src/focus/findFirstFocusableNode.ts", "../../../../../node_modules/.pnpm/@dnd-kit+sortable@10.0.0_@dnd-kit+core@6.3.1_react-dom@19.2.4_react@19.2.4__react@19.2.4__react@19.2.4/node_modules/@dnd-kit/sortable/src/utilities/arrayMove.ts", "../../../../../node_modules/.pnpm/@dnd-kit+sortable@10.0.0_@dnd-kit+core@6.3.1_react-dom@19.2.4_react@19.2.4__react@19.2.4__react@19.2.4/node_modules/@dnd-kit/sortable/src/utilities/arraySwap.ts", "../../../../../node_modules/.pnpm/@dnd-kit+sortable@10.0.0_@dnd-kit+core@6.3.1_react-dom@19.2.4_react@19.2.4__react@19.2.4__react@19.2.4/node_modules/@dnd-kit/sortable/src/utilities/getSortedRects.ts", "../../../../../node_modules/.pnpm/@dnd-kit+sortable@10.0.0_@dnd-kit+core@6.3.1_react-dom@19.2.4_react@19.2.4__react@19.2.4__react@19.2.4/node_modules/@dnd-kit/sortable/src/utilities/isValidIndex.ts", "../../../../../node_modules/.pnpm/@dnd-kit+sortable@10.0.0_@dnd-kit+core@6.3.1_react-dom@19.2.4_react@19.2.4__react@19.2.4__react@19.2.4/node_modules/@dnd-kit/sortable/src/utilities/itemsEqual.ts", "../../../../../node_modules/.pnpm/@dnd-kit+sortable@10.0.0_@dnd-kit+core@6.3.1_react-dom@19.2.4_react@19.2.4__react@19.2.4__react@19.2.4/node_modules/@dnd-kit/sortable/src/utilities/normalizeDisabled.ts", "../../../../../node_modules/.pnpm/@dnd-kit+sortable@10.0.0_@dnd-kit+core@6.3.1_react-dom@19.2.4_react@19.2.4__react@19.2.4__react@19.2.4/node_modules/@dnd-kit/sortable/src/strategies/horizontalListSorting.ts", "../../../../../node_modules/.pnpm/@dnd-kit+sortable@10.0.0_@dnd-kit+core@6.3.1_react-dom@19.2.4_react@19.2.4__react@19.2.4__react@19.2.4/node_modules/@dnd-kit/sortable/src/strategies/rectSorting.ts", "../../../../../node_modules/.pnpm/@dnd-kit+sortable@10.0.0_@dnd-kit+core@6.3.1_react-dom@19.2.4_react@19.2.4__react@19.2.4__react@19.2.4/node_modules/@dnd-kit/sortable/src/strategies/rectSwapping.ts", "../../../../../node_modules/.pnpm/@dnd-kit+sortable@10.0.0_@dnd-kit+core@6.3.1_react-dom@19.2.4_react@19.2.4__react@19.2.4__react@19.2.4/node_modules/@dnd-kit/sortable/src/strategies/verticalListSorting.ts", "../../../../../node_modules/.pnpm/@dnd-kit+sortable@10.0.0_@dnd-kit+core@6.3.1_react-dom@19.2.4_react@19.2.4__react@19.2.4__react@19.2.4/node_modules/@dnd-kit/sortable/src/components/SortableContext.tsx", "../../../../../node_modules/.pnpm/@dnd-kit+sortable@10.0.0_@dnd-kit+core@6.3.1_react-dom@19.2.4_react@19.2.4__react@19.2.4__react@19.2.4/node_modules/@dnd-kit/sortable/src/hooks/defaults.ts", "../../../../../node_modules/.pnpm/@dnd-kit+sortable@10.0.0_@dnd-kit+core@6.3.1_react-dom@19.2.4_react@19.2.4__react@19.2.4__react@19.2.4/node_modules/@dnd-kit/sortable/src/hooks/utilities/useDerivedTransform.ts", "../../../../../node_modules/.pnpm/@dnd-kit+sortable@10.0.0_@dnd-kit+core@6.3.1_react-dom@19.2.4_react@19.2.4__react@19.2.4__react@19.2.4/node_modules/@dnd-kit/sortable/src/hooks/useSortable.ts", "../../../../../node_modules/.pnpm/@dnd-kit+sortable@10.0.0_@dnd-kit+core@6.3.1_react-dom@19.2.4_react@19.2.4__react@19.2.4__react@19.2.4/node_modules/@dnd-kit/sortable/src/types/type-guard.ts", "../../../../../node_modules/.pnpm/@dnd-kit+sortable@10.0.0_@dnd-kit+core@6.3.1_react-dom@19.2.4_react@19.2.4__react@19.2.4__react@19.2.4/node_modules/@dnd-kit/sortable/src/sensors/keyboard/sortableKeyboardCoordinates.ts", "../../../src/elements/DraggableSortable/index.tsx", "../../../src/elements/ErrorPill/index.tsx", "../../../src/fields/FieldDescription/index.tsx", "../../../src/fields/FieldError/index.tsx", "../../../src/fields/FieldLabel/index.tsx", "../../../src/providers/EditDepth/index.tsx", "../../../src/providers/Locale/index.tsx", "../../../src/utilities/findLocaleFromCode.ts", "../../../../../node_modules/.pnpm/@faceless-ui+modal@3.0.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@faceless-ui/modal/src/asModal/index.tsx", "../../../../../node_modules/.pnpm/@babel+runtime@7.28.6/node_modules/@babel/runtime/helpers/esm/extends.js", "../../../../../node_modules/.pnpm/@babel+runtime@7.28.6/node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js", "../../../../../node_modules/.pnpm/@babel+runtime@7.28.6/node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js", "../../../../../node_modules/.pnpm/@babel+runtime@7.28.6/node_modules/@babel/runtime/helpers/esm/inheritsLoose.js", "../../../../../node_modules/.pnpm/dom-helpers@5.2.1/node_modules/dom-helpers/esm/hasClass.js", "../../../../../node_modules/.pnpm/dom-helpers@5.2.1/node_modules/dom-helpers/esm/addClass.js", "../../../../../node_modules/.pnpm/dom-helpers@5.2.1/node_modules/dom-helpers/esm/removeClass.js", "../../../../../node_modules/.pnpm/react-transition-group@4.4.5_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/react-transition-group/esm/CSSTransition.js", "../../../../../node_modules/.pnpm/react-transition-group@4.4.5_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/react-transition-group/esm/Transition.js", "../../../../../node_modules/.pnpm/react-transition-group@4.4.5_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/react-transition-group/esm/config.js", "../../../../../node_modules/.pnpm/react-transition-group@4.4.5_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/react-transition-group/esm/TransitionGroupContext.js", "../../../../../node_modules/.pnpm/react-transition-group@4.4.5_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/react-transition-group/esm/utils/reflow.js", "../../../../../node_modules/.pnpm/@babel+runtime@7.28.6/node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js", "../../../../../node_modules/.pnpm/@faceless-ui+modal@3.0.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@faceless-ui/modal/src/useModal/index.tsx", "../../../../../node_modules/.pnpm/@faceless-ui+modal@3.0.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@faceless-ui/modal/src/ModalProvider/context.tsx", "../../../../../node_modules/.pnpm/@faceless-ui+modal@3.0.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@faceless-ui/modal/src/ModalProvider/generateTransitionClasses.ts", "../../../../../node_modules/.pnpm/focus-trap@7.5.4/node_modules/focus-trap/index.js", "../../../../../node_modules/.pnpm/@faceless-ui+modal@3.0.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@faceless-ui/modal/src/Modal/index.tsx", "../../../../../node_modules/.pnpm/@faceless-ui+modal@3.0.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@faceless-ui/modal/src/ModalContainer/index.tsx", "../../../../../node_modules/.pnpm/@faceless-ui+modal@3.0.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@faceless-ui/modal/src/ModalProvider/index.tsx", "../../../../../node_modules/.pnpm/body-scroll-lock@4.0.0-beta.0/node_modules/body-scroll-lock/lib/bodyScrollLock.esm.js", "../../../../../node_modules/.pnpm/@faceless-ui+modal@3.0.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@faceless-ui/modal/src/ModalProvider/generateCSS.tsx", "../../../../../node_modules/.pnpm/@faceless-ui+modal@3.0.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@faceless-ui/modal/src/ModalProvider/reducer.ts", "../../../src/providers/Auth/index.tsx", "../../../src/elements/StayLoggedIn/index.tsx", "../../../src/elements/ConfirmationModal/index.tsx", "../../../src/elements/Drawer/index.tsx", "../../../src/elements/Gutter/index.tsx", "../../../src/elements/Drawer/useDrawerSlug.tsx", "../../../src/utilities/api.ts", "../../../src/utilities/generateFieldID.ts", "../../../src/forms/Form/rowHelpers.ts", "../../../src/forms/NullifyField/index.tsx", "../../../src/fields/Checkbox/index.tsx", "../../../src/forms/useField/index.tsx", "../../../src/hooks/useThrottledEffect.ts", "../../../src/providers/DocumentInfo/index.tsx", "../../../src/utilities/formatDocTitle/index.ts", "../../../../../node_modules/.pnpm/@date-fns+tz@1.2.0/node_modules/@date-fns/tz/tzOffset/index.js", "../../../../../node_modules/.pnpm/@date-fns+tz@1.2.0/node_modules/@date-fns/tz/date/mini.js", "../../../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/constants.js", "../../../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/constructFrom.js", "../../../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/toDate.js", "../../../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/_lib/defaultOptions.js", "../../../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/startOfWeek.js", "../../../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/startOfISOWeek.js", "../../../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/getISOWeekYear.js", "../../../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/_lib/getTimezoneOffsetInMilliseconds.js", "../../../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/_lib/normalizeDates.js", "../../../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/startOfDay.js", "../../../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/differenceInCalendarDays.js", "../../../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/startOfISOWeekYear.js", "../../../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/compareAsc.js", "../../../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/constructNow.js", "../../../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/isSameDay.js", "../../../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/isDate.js", "../../../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/isValid.js", "../../../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/differenceInCalendarMonths.js", "../../../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/_lib/getRoundingMethod.js", "../../../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/differenceInMilliseconds.js", "../../../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/endOfDay.js", "../../../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/endOfMonth.js", "../../../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/isLastDayOfMonth.js", "../../../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/differenceInMonths.js", "../../../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/differenceInSeconds.js", "../../../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/startOfYear.js", "../../../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/endOfToday.js", "../../../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/getDayOfYear.js", "../../../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/getISOWeek.js", "../../../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/getWeekYear.js", "../../../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/startOfWeekYear.js", "../../../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/getWeek.js", "../../../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/_lib/addLeadingZeros.js", "../../../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/_lib/format/lightFormatters.js", "../../../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/_lib/format/formatters.js", "../../../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/_lib/format/longFormatters.js", "../../../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/_lib/protectedTokens.js", "../../../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/format.js", "../../../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/formatDistance.js", "../../../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/formatDistanceToNow.js", "../../../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/transpose.js", "../../../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/isToday.js", "../../../src/utilities/formatDocTitle/formatDateTitle.ts", "../../../src/utilities/formatDocTitle/formatLexicalDocTitle.ts", "../../../src/utilities/formatDocTitle/formatRelationshipTitle.ts", "../../../src/providers/DocumentTitle/index.tsx", "../../../src/providers/Preferences/index.tsx", "../../../src/utilities/deepMerge.ts", "../../../src/providers/UploadEdits/index.tsx", "../../../src/providers/DocumentInfo/useGetDocPermissions.tsx", "../../../src/utilities/hasSavePermission.ts", "../../../src/utilities/isEditing.ts", "../../../src/providers/Operation/index.tsx", "../../../src/forms/RenderFields/context.ts", "../../../src/forms/withCondition/index.tsx", "../../../src/forms/withCondition/WatchCondition.tsx", "../../../src/fields/mergeFieldStyles.ts", "../../../src/fields/shared/index.tsx", "../../../src/fields/Checkbox/Input.tsx", "../../../src/icons/Check/index.tsx", "../../../src/icons/Line/index.tsx", "../../../src/utilities/scrollToID.ts", "../../../src/fields/Array/ArrayRow.tsx", "../../../src/elements/ArrayAction/index.tsx", "../../../src/elements/Collapsible/index.tsx", "../../../src/icons/DragHandle/index.tsx", "../../../src/elements/AnimateHeight/index.tsx", "../../../src/elements/AnimateHeight/usePatchAnimateHeight.ts", "../../../src/elements/Collapsible/provider.tsx", "../../../src/forms/RenderFields/index.tsx", "../../../src/elements/RenderIfInViewport/index.tsx", "../../../src/forms/RenderFields/RenderField.tsx", "../../../src/fields/Blocks/index.tsx", "../../../src/fields/Blocks/BlockRow.tsx", "../../../src/elements/Pill/index.tsx", "../../../src/hooks/useThrottledValue.ts", "../../../src/fields/Blocks/RowActions.tsx", "../../../src/fields/Blocks/BlocksDrawer/index.tsx", "../../../src/fields/Blocks/BlockSelector/index.tsx", "../../../src/elements/ThumbnailCard/index.tsx", "../../../src/graphics/DefaultBlockImage/index.tsx", "../../../../../node_modules/.pnpm/uuid@10.0.0/node_modules/uuid/dist/esm-browser/stringify.js", "../../../../../node_modules/.pnpm/uuid@10.0.0/node_modules/uuid/dist/esm-browser/rng.js", "../../../../../node_modules/.pnpm/uuid@10.0.0/node_modules/uuid/dist/esm-browser/native.js", "../../../../../node_modules/.pnpm/uuid@10.0.0/node_modules/uuid/dist/esm-browser/v4.js", "../../../src/fields/Blocks/BlockSelector/BlockSearch/index.tsx", "../../../src/icons/Search/index.tsx", "../../../src/fields/Blocks/SectionTitle/index.tsx", "../../../src/fields/Code/index.tsx", "../../../src/elements/CodeEditor/index.tsx", "../../../src/fields/Collapsible/index.tsx", "../../../src/forms/WatchChildErrors/index.tsx", "../../../src/forms/WatchChildErrors/buildPathSegments.ts", "../../../src/fields/DateTime/index.tsx", "../../../src/elements/DatePicker/index.tsx", "../../../src/elements/TimezonePicker/index.tsx", "../../../src/elements/ReactSelect/index.tsx", "../../../../../node_modules/.pnpm/@babel+runtime@7.28.6/node_modules/@babel/runtime/helpers/esm/typeof.js", "../../../../../node_modules/.pnpm/@babel+runtime@7.28.6/node_modules/@babel/runtime/helpers/esm/toPrimitive.js", "../../../../../node_modules/.pnpm/@babel+runtime@7.28.6/node_modules/@babel/runtime/helpers/esm/toPropertyKey.js", "../../../../../node_modules/.pnpm/@babel+runtime@7.28.6/node_modules/@babel/runtime/helpers/esm/defineProperty.js", "../../../../../node_modules/.pnpm/@babel+runtime@7.28.6/node_modules/@babel/runtime/helpers/esm/objectSpread2.js", "../../../../../node_modules/.pnpm/@babel+runtime@7.28.6/node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js", "../../../../../node_modules/.pnpm/@babel+runtime@7.28.6/node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js", "../../../../../node_modules/.pnpm/@babel+runtime@7.28.6/node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js", "../../../../../node_modules/.pnpm/@babel+runtime@7.28.6/node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js", "../../../../../node_modules/.pnpm/@babel+runtime@7.28.6/node_modules/@babel/runtime/helpers/esm/nonIterableRest.js", "../../../../../node_modules/.pnpm/@babel+runtime@7.28.6/node_modules/@babel/runtime/helpers/esm/slicedToArray.js", "../../../../../node_modules/.pnpm/@babel+runtime@7.28.6/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js", "../../../../../node_modules/.pnpm/react-select@5.9.0_@types+react@19.2.9_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/react-select/dist/useStateManager-7e1e8489.esm.js", "../../../../../node_modules/.pnpm/react-select@5.9.0_@types+react@19.2.9_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/react-select/dist/react-select.esm.js", "../../../../../node_modules/.pnpm/@babel+runtime@7.28.6/node_modules/@babel/runtime/helpers/esm/classCallCheck.js", "../../../../../node_modules/.pnpm/@babel+runtime@7.28.6/node_modules/@babel/runtime/helpers/esm/createClass.js", "../../../../../node_modules/.pnpm/@babel+runtime@7.28.6/node_modules/@babel/runtime/helpers/esm/inherits.js", "../../../../../node_modules/.pnpm/@babel+runtime@7.28.6/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js", "../../../../../node_modules/.pnpm/@babel+runtime@7.28.6/node_modules/@babel/runtime/helpers/esm/isNativeReflectConstruct.js", "../../../../../node_modules/.pnpm/@babel+runtime@7.28.6/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js", "../../../../../node_modules/.pnpm/@babel+runtime@7.28.6/node_modules/@babel/runtime/helpers/esm/createSuper.js", "../../../../../node_modules/.pnpm/@babel+runtime@7.28.6/node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js", "../../../../../node_modules/.pnpm/@babel+runtime@7.28.6/node_modules/@babel/runtime/helpers/esm/iterableToArray.js", "../../../../../node_modules/.pnpm/@babel+runtime@7.28.6/node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js", "../../../../../node_modules/.pnpm/@babel+runtime@7.28.6/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js", "../../../../../node_modules/.pnpm/react-select@5.9.0_@types+react@19.2.9_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/react-select/dist/Select-aab027f3.esm.js", "../../../../../node_modules/.pnpm/@emotion+react@11.14.0_@types+react@19.2.9_react@19.2.4/node_modules/@emotion/react/dist/emotion-element-f0de968e.browser.esm.js", "../../../../../node_modules/.pnpm/@emotion+sheet@1.4.0/node_modules/@emotion/sheet/dist/emotion-sheet.esm.js", "../../../../../node_modules/.pnpm/stylis@4.2.0/node_modules/stylis/src/Enum.js", "../../../../../node_modules/.pnpm/stylis@4.2.0/node_modules/stylis/src/Utility.js", "../../../../../node_modules/.pnpm/stylis@4.2.0/node_modules/stylis/src/Tokenizer.js", "../../../../../node_modules/.pnpm/stylis@4.2.0/node_modules/stylis/src/Parser.js", "../../../../../node_modules/.pnpm/stylis@4.2.0/node_modules/stylis/src/Serializer.js", "../../../../../node_modules/.pnpm/stylis@4.2.0/node_modules/stylis/src/Middleware.js", "../../../../../node_modules/.pnpm/@emotion+memoize@0.9.0/node_modules/@emotion/memoize/dist/emotion-memoize.esm.js", "../../../../../node_modules/.pnpm/@emotion+cache@11.14.0/node_modules/@emotion/cache/dist/emotion-cache.browser.esm.js", "../../../../../node_modules/.pnpm/@emotion+utils@1.4.2/node_modules/@emotion/utils/dist/emotion-utils.browser.esm.js", "../../../../../node_modules/.pnpm/@emotion+hash@0.9.2/node_modules/@emotion/hash/dist/emotion-hash.esm.js", "../../../../../node_modules/.pnpm/@emotion+unitless@0.10.0/node_modules/@emotion/unitless/dist/emotion-unitless.esm.js", "../../../../../node_modules/.pnpm/@emotion+serialize@1.3.3/node_modules/@emotion/serialize/dist/emotion-serialize.esm.js", "../../../../../node_modules/.pnpm/@emotion+use-insertion-effect-with-fallbacks@1.2.0_react@19.2.4/node_modules/@emotion/use-insertion-effect-with-fallbacks/dist/emotion-use-insertion-effect-with-fallbacks.browser.esm.js", "../../../../../node_modules/.pnpm/@emotion+react@11.14.0_@types+react@19.2.9_react@19.2.4/node_modules/@emotion/react/dist/emotion-react.browser.esm.js", "../../../../../node_modules/.pnpm/@babel+runtime@7.28.6/node_modules/@babel/runtime/helpers/esm/taggedTemplateLiteral.js", "../../../../../node_modules/.pnpm/react-select@5.9.0_@types+react@19.2.9_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/react-select/dist/index-641ee5b8.esm.js", "../../../../../node_modules/.pnpm/use-isomorphic-layout-effect@1.2.1_@types+react@19.2.9_react@19.2.4/node_modules/use-isomorphic-layout-effect/dist/use-isomorphic-layout-effect.browser.esm.js", "../../../../../node_modules/.pnpm/memoize-one@6.0.0/node_modules/memoize-one/dist/memoize-one.esm.js", "../../../../../node_modules/.pnpm/react-select@5.9.0_@types+react@19.2.9_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/react-select/creatable/dist/react-select-creatable.esm.js", "../../../../../node_modules/.pnpm/react-select@5.9.0_@types+react@19.2.9_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/react-select/dist/useCreatable-84008237.esm.js", "../../../src/elements/ReactSelect/ClearIndicator/index.tsx", "../../../src/elements/ReactSelect/Control/index.tsx", "../../../src/elements/ReactSelect/DropdownIndicator/index.tsx", "../../../src/elements/ReactSelect/Input/index.tsx", "../../../src/elements/ReactSelect/MultiValue/index.tsx", "../../../src/elements/ReactSelect/MultiValueLabel/index.tsx", "../../../src/elements/ReactSelect/MultiValueRemove/index.tsx", "../../../src/elements/ReactSelect/SingleValue/index.tsx", "../../../src/elements/ReactSelect/ValueContainer/index.tsx", "../../../src/elements/WhereBuilder/Condition/Select/formatOptions.ts", "../../../src/fields/Email/index.tsx", "../../../src/fields/Group/index.tsx", "../../../src/fields/Row/provider.tsx", "../../../src/fields/Tabs/provider.tsx", "../../../src/fields/Group/provider.tsx", "../../../src/fields/Hidden/index.tsx", "../../../src/fields/Join/index.tsx", "../../../src/elements/RelationshipTable/index.tsx", "../../../src/providers/ListQuery/index.tsx", "../../../src/elements/ListDrawer/Provider.tsx", "../../../src/utilities/parseSearchParams.ts", "../../../src/providers/ListQuery/context.ts", "../../../src/providers/ListQuery/mergeQuery.ts", "../../../src/providers/ListQuery/sanitizeQuery.ts", "../../../src/providers/ServerFunctions/index.tsx", "../../../src/providers/TableColumns/index.tsx", "../../../src/providers/TableColumns/context.ts", "../../../src/elements/ColumnSelector/index.tsx", "../../../src/elements/PillSelector/index.tsx", "../../../src/elements/DocumentDrawer/index.tsx", "../../../src/hooks/useRelatedCollections.ts", "../../../src/elements/DocumentDrawer/DrawerContent.tsx", "../../../src/elements/Loading/index.tsx", "../../../src/elements/LoadingOverlay/index.tsx", "../../../src/hooks/useDelayedRender.ts", "../../../src/elements/LoadingOverlay/reducer.ts", "../../../src/utilities/abortAndIgnore.ts", "../../../src/elements/DocumentDrawer/Provider.tsx", "../../../src/elements/Table/RelationshipProvider/index.tsx", "../../../src/hooks/useDebounce.ts", "../../../src/elements/Table/RelationshipProvider/reducer.ts", "../../../src/elements/RelationshipTable/AddNewButton.tsx", "../../../src/elements/RelationshipTable/cells/DrawerLink/index.tsx", "../../../src/providers/TableColumns/RenderDefaultCell/index.tsx", "../../../src/elements/Table/DefaultCell/index.tsx", "../../../src/utilities/formatAdminURL.ts", "../../../src/utilities/getDisplayedFieldValue.ts", "../../../src/utilities/isValidReactElement.ts", "../../../src/elements/Table/DefaultCell/fields/Code/index.tsx", "../../../src/elements/Table/DefaultCell/fields/Array/index.tsx", "../../../src/elements/Table/DefaultCell/fields/Blocks/index.tsx", "../../../src/elements/Table/DefaultCell/fields/Checkbox/index.tsx", "../../../src/elements/Table/DefaultCell/fields/Date/index.tsx", "../../../src/elements/Table/DefaultCell/fields/File/index.tsx", "../../../src/elements/Thumbnail/index.tsx", "../../../src/graphics/File/index.tsx", "../../../src/elements/Table/DefaultCell/fields/JSON/index.tsx", "../../../src/utilities/stringifyTruncated.ts", "../../../src/elements/Table/DefaultCell/fields/Relationship/index.tsx", "../../../src/utilities/canUseDOM.ts", "../../../src/elements/Table/DefaultCell/fields/Select/index.tsx", "../../../src/elements/Table/DefaultCell/fields/Textarea/index.tsx", "../../../src/elements/Table/DefaultCell/fields/index.tsx", "../../../src/elements/RelationshipTable/Pagination.tsx", "../../../src/elements/Pagination/index.tsx", "../../../src/elements/Pagination/ClickableArrow/index.tsx", "../../../src/elements/Pagination/Page/index.tsx", "../../../src/elements/Pagination/Separator/index.tsx", "../../../src/fields/JSON/index.tsx", "../../../src/fields/Number/index.tsx", "../../../src/fields/Point/index.tsx", "../../../src/fields/RadioGroup/index.tsx", "../../../src/fields/RadioGroup/Radio/index.tsx", "../../../src/fields/Relationship/index.tsx", "../../../src/fields/Relationship/Input.tsx", "../../../src/elements/AddNewRelation/index.tsx", "../../../src/elements/ListDrawer/index.tsx", "../../../src/elements/ListDrawer/DrawerContent.tsx", "../../../src/hooks/useDebouncedCallback.ts", "../../../src/hooks/useQueue.ts", "../../../src/providers/DocumentEvents/index.tsx", "../../../src/utilities/sanitizeFilterOptionsQuery.ts", "../../../src/fields/Relationship/createRelationMap.ts", "../../../src/fields/Relationship/findOptionsByValue.ts", "../../../src/fields/Relationship/optionsReducer.ts", "../../../src/fields/Relationship/select-components/MultiValueLabel/index.tsx", "../../../src/fields/Relationship/select-components/SingleValue/index.tsx", "../../../src/fields/RichText/index.tsx", "../../../src/fields/Row/index.tsx", "../../../src/fields/Select/index.tsx", "../../../src/fields/Select/Input.tsx", "../../../src/fields/Tabs/index.tsx", "../../../src/forms/Form/index.tsx", "../../../src/elements/Toasts/fieldErrors.tsx", "../../../src/hooks/useDebouncedEffect.ts", "../../../src/providers/UploadHandlers/index.tsx", "../../../src/forms/Form/errorMessages.ts", "../../../src/forms/Form/fieldReducer.ts", "../../../src/forms/Form/mergeServerFormState.ts", "../../../src/forms/Form/rows.ts", "../../../src/forms/Form/initContextState.ts", "../../../src/fields/Tabs/Tab/index.tsx", "../../../src/fields/Text/index.tsx", "../../../src/fields/Text/Input.tsx", "../../../src/fields/Textarea/index.tsx", "../../../src/fields/Textarea/Input.tsx", "../../../src/fields/UI/index.tsx", "../../../src/fields/Upload/index.tsx", "../../../src/elements/BulkUpload/index.tsx", "../../../src/providers/UploadControls/index.tsx", "../../../src/elements/BulkUpload/AddFilesView/index.tsx", "../../../src/elements/Dropzone/index.tsx", "../../../src/elements/BulkUpload/Header/index.tsx", "../../../src/elements/BulkUpload/DrawerCloseButton/index.tsx", "../../../src/elements/BulkUpload/AddingFilesView/index.tsx", "../../../src/elements/BulkUpload/ActionsBar/index.tsx", "../../../src/elements/BulkUpload/EditMany/index.tsx", "../../../src/elements/BulkUpload/FormsManager/index.tsx", "../../../src/elements/BulkUpload/FormsManager/createFormData.ts", "../../../src/elements/BulkUpload/FormsManager/reducer.ts", "../../../src/elements/BulkUpload/EditMany/DrawerContent.tsx", "../../../src/elements/FieldSelect/index.tsx", "../../../src/utilities/filterOutUploadFields.ts", "../../../src/elements/FieldSelect/reduceFieldOptions.ts", "../../../src/forms/Form/createNestedClientFieldPath.ts", "../../../src/utilities/combineFieldLabel.tsx", "../../../src/elements/BulkUpload/DiscardWithoutSaving/index.tsx", "../../../src/elements/BulkUpload/EditForm/index.tsx", "../../../src/elements/DocumentFields/index.tsx", "../../../src/elements/TrashBanner/index.tsx", "../../../src/icons/Trash/index.tsx", "../../../src/elements/FolderView/MoveDocToFolder/index.tsx", "../../../src/icons/Folder/index.tsx", "../../../src/elements/FolderView/Drawers/MoveToFolder/index.tsx", "../../../src/providers/Folders/index.tsx", "../../../src/providers/Folders/groupItemIDsByRelation.ts", "../../../src/providers/RouteCache/index.tsx", "../../../src/elements/DrawerActionHeader/index.tsx", "../../../src/forms/Submit/index.tsx", "../../../src/elements/DrawerContentContainer/index.tsx", "../../../src/elements/ListHeader/TitleActions/ListCreateNewDocInFolderButton.tsx", "../../../src/elements/NoListResults/index.tsx", "../../../src/elements/Translation/index.tsx", "../../../src/elements/FolderView/Breadcrumbs/index.tsx", "../../../src/elements/FolderView/ColoredFolderIcon/index.tsx", "../../../src/elements/Upload/index.tsx", "../../../src/elements/EditUpload/index.tsx", "../../../../../node_modules/.pnpm/react-image-crop@10.1.8_react@19.2.4/node_modules/react-image-crop/dist/index.js", "../../../src/elements/FileDetails/index.tsx", "../../../src/elements/FileDetails/DraggableFileDetails/index.tsx", "../../../src/elements/FileDetails/StaticFileDetails/index.tsx", "../../../src/elements/FileDetails/FileMeta/index.tsx", "../../../src/elements/CopyToClipboard/index.tsx", "../../../src/elements/PreviewSizes/index.tsx", "../../../src/elements/BulkUpload/FileSidebar/index.tsx", "../../../../../node_modules/.pnpm/@faceless-ui+window-info@3.0.1_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@faceless-ui/window-info/src/index.ts", "../../../../../node_modules/.pnpm/@faceless-ui+window-info@3.0.1_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@faceless-ui/window-info/src/useWindowInfo/index.tsx", "../../../../../node_modules/.pnpm/@faceless-ui+window-info@3.0.1_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@faceless-ui/window-info/src/WindowInfoProvider/context.tsx", "../../../../../node_modules/.pnpm/@faceless-ui+window-info@3.0.1_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@faceless-ui/window-info/src/WindowInfo/index.tsx", "../../../../../node_modules/.pnpm/@faceless-ui+window-info@3.0.1_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@faceless-ui/window-info/src/WindowInfoProvider/index.tsx", "../../../../../node_modules/.pnpm/@faceless-ui+window-info@3.0.1_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@faceless-ui/window-info/src/withWindowInfo/index.tsx", "../../../src/elements/Thumbnail/createThumbnail.ts", "../../../src/fields/Upload/Input.tsx", "../../../src/utilities/normalizeRelationshipValue.ts", "../../../src/fields/Upload/HasMany/index.tsx", "../../../src/fields/Upload/RelationshipContent/index.tsx", "../../../src/fields/Upload/UploadCard/index.tsx", "../../../src/fields/Upload/HasOne/index.tsx", "../../../src/fields/ConfirmPassword/index.tsx", "../../../src/fields/Password/index.tsx", "../../../src/fields/Password/input.tsx", "../../../src/fields/index.tsx", "../../../src/hooks/useHotkey.ts", "../../../src/hooks/usePayloadAPI.ts", "../../../src/hooks/useResize.ts", "../../../src/hooks/useUseAsTitle.ts", "../../../src/elements/SortHeader/index.tsx", "../../../src/icons/Sort/index.tsx", "../../../src/elements/SortRow/index.tsx", "../../../src/elements/Table/OrderableTable.tsx", "../../../src/elements/Table/OrderableRow.tsx", "../../../src/elements/Table/OrderableRowDragPreview.tsx", "../../../src/elements/QueryPresets/cells/ColumnsCell/index.tsx", "../../../src/elements/QueryPresets/cells/WhereCell/index.tsx", "../../../src/elements/QueryPresets/cells/AccessCell/index.tsx", "../../../src/elements/QueryPresets/cells/GroupByCell/index.tsx", "../../../src/utilities/reduceFieldsToOptions.tsx", "../../../src/elements/WhereBuilder/field-types.tsx", "../../../src/elements/QueryPresets/fields/ColumnsField/index.tsx", "../../../src/elements/QueryPresets/fields/WhereField/index.tsx", "../../../src/elements/QueryPresets/fields/GroupByField/index.tsx", "../../../src/elements/LeaveWithoutSaving/index.tsx", "../../../src/elements/LeaveWithoutSaving/usePreventLeave.tsx", "../../../src/elements/DocumentTakeOver/index.tsx", "../../../src/elements/DocumentLocked/index.tsx", "../../../src/utilities/isClientUserObject.ts", "../../../src/elements/ViewDescription/index.tsx", "../../../src/elements/AppHeader/index.tsx", "../../../src/graphics/Account/index.tsx", "../../../src/graphics/Account/Default/index.tsx", "../../../src/graphics/Account/Gravatar/index.tsx", "../../../src/providers/Actions/index.tsx", "../../../src/elements/Hamburger/index.tsx", "../../../src/icons/CloseMenu/index.tsx", "../../../src/icons/Menu/index.tsx", "../../../src/elements/Localizer/index.tsx", "../../../src/elements/Localizer/LocalizerLabel/index.tsx", "../../../src/elements/Nav/context.tsx", "../../../src/elements/Nav/NavToggler/index.tsx", "../../../src/elements/StepNav/index.tsx", "../../../src/graphics/Icon/index.tsx", "../../../src/elements/StepNav/context.tsx", "../../../src/elements/StepNav/SetStepNav.tsx", "../../../src/elements/Card/index.tsx", "../../../src/elements/CopyLocaleData/index.tsx", "../../../src/elements/DeleteMany/index.tsx", "../../../src/providers/Selection/index.tsx", "../../../src/elements/ListSelection/index.tsx", "../../../src/elements/DocumentControls/index.tsx", "../../../src/providers/LivePreview/context.ts", "../../../src/elements/Autosave/index.tsx", "../../../src/utilities/reduceFieldsToValuesWithValidation.ts", "../../../src/elements/DeleteDocument/index.tsx", "../../../src/elements/DuplicateDocument/index.tsx", "../../../src/utilities/traverseForLocalizedFields.ts", "../../../src/elements/DuplicateDocument/SelectLocalesDrawer/index.tsx", "../../../src/elements/LivePreview/Toggler/index.tsx", "../../../src/icons/Eye/index.tsx", "../../../src/elements/Locked/index.tsx", "../../../src/icons/Lock/index.tsx", "../../../src/elements/PermanentlyDeleteButton/index.tsx", "../../../src/elements/PreviewButton/index.tsx", "../../../src/icons/ExternalLink/index.tsx", "../../../src/elements/PublishButton/index.tsx", "../../../src/elements/PublishButton/ScheduleDrawer/index.tsx", "../../../src/elements/Table/index.tsx", "../../../src/elements/PublishButton/ScheduleDrawer/buildUpcomingColumns.tsx", "../../../src/elements/RestoreButton/index.tsx", "../../../src/elements/SaveButton/index.tsx", "../../../src/elements/SaveDraftButton/index.tsx", "../../../src/elements/Status/index.tsx", "../../../src/elements/UnpublishButton/index.tsx", "../../../src/elements/HTMLDiff/index.tsx", "../../../src/elements/HTMLDiff/diff/index.ts", "../../../src/hooks/useClickOutside.ts", "../../../src/providers/ClickOutside/index.tsx", "../../../src/elements/EditMany/index.tsx", "../../../src/elements/EditMany/DrawerContent.tsx", "../../../src/elements/FullscreenModal/index.tsx", "../../../src/elements/GenerateConfirmation/index.tsx", "../../../src/elements/HydrateAuthProvider/index.tsx", "../../../src/elements/ListControls/index.tsx", "../../../src/icons/Dots/index.tsx", "../../../src/elements/GroupByBuilder/index.tsx", "../../../src/elements/QueryPresets/QueryPresetBar/index.tsx", "../../../src/elements/QueryPresets/QueryPresetToggler/index.tsx", "../../../src/icons/People/index.tsx", "../../../src/elements/SearchFilter/index.tsx", "../../../src/elements/SearchBar/index.tsx", "../../../src/elements/WhereBuilder/index.tsx", "../../../src/elements/WhereBuilder/Condition/index.tsx", "../../../src/elements/WhereBuilder/Condition/DefaultFilter/index.tsx", "../../../src/elements/WhereBuilder/Condition/Date/index.tsx", "../../../src/elements/WhereBuilder/Condition/Number/index.tsx", "../../../src/elements/WhereBuilder/Condition/Relationship/index.tsx", "../../../src/elements/WhereBuilder/Condition/Relationship/optionsReducer.ts", "../../../src/elements/WhereBuilder/Condition/Select/index.tsx", "../../../src/elements/WhereBuilder/Condition/Text/index.tsx", "../../../src/elements/WhereBuilder/Condition/validOperators.ts", "../../../src/elements/ListControls/getTextFieldsToBeSearched.ts", "../../../src/views/List/ListSelection/index.tsx", "../../../src/elements/PublishMany/index.tsx", "../../../src/elements/PublishMany/DrawerContent.tsx", "../../../src/elements/RestoreMany/index.tsx", "../../../src/elements/UnpublishMany/index.tsx", "../../../src/elements/UnpublishMany/DrawerContent.tsx", "../../../src/views/List/ListHeader/index.tsx", "../../../src/elements/CloseModalButton/index.tsx", "../../../src/elements/DefaultListViewTabs/index.tsx", "../../../src/elements/ListHeader/DrawerRelationshipSelect/index.tsx", "../../../src/elements/ListHeader/index.tsx", "../../../src/elements/ListHeader/DrawerTitleActions/ListDrawerCreateNewDocButton.tsx", "../../../src/elements/ListHeader/TitleActions/ListBulkUploadButton.tsx", "../../../src/elements/ListHeader/TitleActions/ListCreateNewDocButton.tsx", "../../../src/elements/ListHeader/TitleActions/ListEmptyTrashButton.tsx", "../../../src/views/List/GroupByHeader/index.tsx", "../../../src/elements/PageControls/index.tsx", "../../../src/elements/PerPage/index.tsx", "../../../src/elements/StickyToolbar/index.tsx", "../../../src/elements/PageControls/GroupByPageControls.tsx", "../../../src/elements/Logout/index.tsx", "../../../src/icons/LogOut/index.tsx", "../../../src/elements/NavGroup/index.tsx", "../../../src/elements/Combobox/index.tsx", "../../../src/elements/FolderView/BrowseByFolderButton/index.tsx", "../../../src/elements/FolderView/FolderTypeField/index.tsx", "../../../src/elements/FolderView/FolderFileTable/index.tsx", "../../../src/icons/Document/index.tsx", "../../../src/elements/FolderView/DraggableTableRow/index.tsx", "../../../src/elements/FolderView/DraggableWithClick/index.tsx", "../../../src/elements/FolderView/SimpleTable/index.tsx", "../../../src/elements/FolderView/ItemCardGrid/index.tsx", "../../../src/elements/FolderView/FolderFileCard/index.tsx", "../../../src/icons/ThreeDots/index.tsx", "../../../src/elements/RenderTitle/index.tsx", "../../../src/elements/IDLabel/index.tsx", "../../../src/utilities/sanitizeID.ts", "../../../src/elements/SortColumn/index.tsx", "../../../src/elements/ItemsDrawer/index.tsx", "../../../src/elements/ItemsDrawer/ItemSearch/index.tsx", "../../../src/fields/Slug/index.tsx", "../../../src/icons/CodeBlock/index.tsx", "../../../src/icons/MinimizeMaximize/index.tsx", "../../../src/icons/Gear/index.tsx", "../../../src/icons/MoveFolder/index.tsx", "../../../src/icons/GridView/index.tsx", "../../../src/icons/ListView/index.tsx", "../../../src/providers/ToastContainer/icons/Error.tsx", "../../../src/providers/ToastContainer/icons/Info.tsx", "../../../src/providers/ToastContainer/icons/Success.tsx", "../../../src/providers/ToastContainer/icons/Warning.tsx", "../../../src/providers/ClientFunction/index.tsx", "../../../src/providers/LivePreview/index.tsx", "../../../src/hooks/usePopupWindow.ts", "../../../src/utilities/formatAbsoluteURL.ts", "../../../src/providers/LivePreview/collisionDetection.ts", "../../../src/providers/LivePreview/sizeReducer.ts", "../../../src/providers/RouteTransition/ProgressBar/index.tsx", "../../../src/providers/EntityVisibility/index.tsx", "../../../src/providers/Params/index.tsx", "../../../src/providers/Root/index.tsx", "../../../../../node_modules/.pnpm/@faceless-ui+scroll-info@2.0.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@faceless-ui/scroll-info/src/ScrollInfo/index.tsx", "../../../../../node_modules/.pnpm/@faceless-ui+scroll-info@2.0.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@faceless-ui/scroll-info/src/useScrollInfo/index.tsx", "../../../../../node_modules/.pnpm/@faceless-ui+scroll-info@2.0.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@faceless-ui/scroll-info/src/ScrollInfoProvider/context.tsx", "../../../../../node_modules/.pnpm/@faceless-ui+scroll-info@2.0.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@faceless-ui/scroll-info/src/ScrollInfoProvider/index.tsx", "../../../../../node_modules/.pnpm/@faceless-ui+scroll-info@2.0.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@faceless-ui/scroll-info/src/withScrollInfo/index.tsx", "../../../src/elements/CloseModalOnRouteChange/index.tsx", "../../../src/providers/WindowInfo/index.tsx", "../../../src/providers/SearchParams/index.tsx", "../../../src/providers/ToastContainer/index.tsx", "../../../src/elements/EmailAndUsername/index.tsx", "../../../src/elements/SelectAll/index.tsx", "../../../src/elements/SelectRow/index.tsx", "../../../src/elements/SelectMany/index.tsx", "../../../src/views/List/index.tsx", "../../../src/views/CollectionFolder/index.tsx", "../../../src/elements/FolderView/CurrentFolderActions/index.tsx", "../../../src/elements/FolderView/DragOverlaySelection/index.tsx", "../../../src/elements/FolderView/SortByPill/index.tsx", "../../../src/elements/FolderView/ToggleViewButtons/index.tsx", "../../../src/views/CollectionFolder/ListSelection/index.tsx", "../../../src/elements/FolderView/Drawers/EditFolderAction/index.tsx", "../../../src/views/BrowseByFolder/index.tsx", "../../../src/elements/FolderView/FilterFolderTypePill/index.tsx", "../../../src/elements/CheckboxPopup/index.tsx", "../../../src/views/Edit/index.tsx", "../../../src/elements/DocumentDrawer/DrawerHeader/index.tsx", "../../../src/elements/LivePreview/Window/index.tsx", "../../../src/elements/LivePreview/Device/index.tsx", "../../../src/elements/LivePreview/IFrame/index.tsx", "../../../src/elements/LivePreview/Toolbar/index.tsx", "../../../src/elements/LivePreview/Toolbar/Controls/index.tsx", "../../../src/elements/LivePreview/Toolbar/SizeInput/index.tsx", "../../../src/utilities/handleBackToDashboard.tsx", "../../../src/utilities/handleGoBack.tsx", "../../../src/utilities/handleTakeOver.tsx", "../../../src/views/Edit/Auth/index.tsx", "../../../src/views/Edit/Auth/APIKey.tsx", "../../../src/views/Edit/SetDocumentStepNav/index.tsx", "../../../src/views/Edit/SetDocumentTitle/index.tsx", "../../../src/elements/FieldDiffLabel/index.tsx", "../../../src/elements/FieldDiffContainer/index.tsx"],
"sourcesContent": ["/**\n * @license React\n * scheduler.production.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\";\nfunction push(heap, node) {\n var index = heap.length;\n heap.push(node);\n a: for (; 0 < index; ) {\n var parentIndex = (index - 1) >>> 1,\n parent = heap[parentIndex];\n if (0 < compare(parent, node))\n (heap[parentIndex] = node), (heap[index] = parent), (index = parentIndex);\n else break a;\n }\n}\nfunction peek(heap) {\n return 0 === heap.length ? null : heap[0];\n}\nfunction pop(heap) {\n if (0 === heap.length) return null;\n var first = heap[0],\n last = heap.pop();\n if (last !== first) {\n heap[0] = last;\n a: for (\n var index = 0, length = heap.length, halfLength = length >>> 1;\n index < halfLength;\n\n ) {\n var leftIndex = 2 * (index + 1) - 1,\n left = heap[leftIndex],\n rightIndex = leftIndex + 1,\n right = heap[rightIndex];\n if (0 > compare(left, last))\n rightIndex < length && 0 > compare(right, left)\n ? ((heap[index] = right),\n (heap[rightIndex] = last),\n (index = rightIndex))\n : ((heap[index] = left),\n (heap[leftIndex] = last),\n (index = leftIndex));\n else if (rightIndex < length && 0 > compare(right, last))\n (heap[index] = right), (heap[rightIndex] = last), (index = rightIndex);\n else break a;\n }\n }\n return first;\n}\nfunction compare(a, b) {\n var diff = a.sortIndex - b.sortIndex;\n return 0 !== diff ? diff : a.id - b.id;\n}\nexports.unstable_now = void 0;\nif (\"object\" === typeof performance && \"function\" === typeof performance.now) {\n var localPerformance = performance;\n exports.unstable_now = function () {\n return localPerformance.now();\n };\n} else {\n var localDate = Date,\n initialTime = localDate.now();\n exports.unstable_now = function () {\n return localDate.now() - initialTime;\n };\n}\nvar taskQueue = [],\n timerQueue = [],\n taskIdCounter = 1,\n currentTask = null,\n currentPriorityLevel = 3,\n isPerformingWork = !1,\n isHostCallbackScheduled = !1,\n isHostTimeoutScheduled = !1,\n localSetTimeout = \"function\" === typeof setTimeout ? setTimeout : null,\n localClearTimeout = \"function\" === typeof clearTimeout ? clearTimeout : null,\n localSetImmediate = \"undefined\" !== typeof setImmediate ? setImmediate : null;\nfunction advanceTimers(currentTime) {\n for (var timer = peek(timerQueue); null !== timer; ) {\n if (null === timer.callback) pop(timerQueue);\n else if (timer.startTime <= currentTime)\n pop(timerQueue),\n (timer.sortIndex = timer.expirationTime),\n push(taskQueue, timer);\n else break;\n timer = peek(timerQueue);\n }\n}\nfunction handleTimeout(currentTime) {\n isHostTimeoutScheduled = !1;\n advanceTimers(currentTime);\n if (!isHostCallbackScheduled)\n if (null !== peek(taskQueue))\n (isHostCallbackScheduled = !0), requestHostCallback();\n else {\n var firstTimer = peek(timerQueue);\n null !== firstTimer &&\n requestHostTimeout(handleTimeout, firstTimer.startTime - currentTime);\n }\n}\nvar isMessageLoopRunning = !1,\n taskTimeoutID = -1,\n frameInterval = 5,\n startTime = -1;\nfunction shouldYieldToHost() {\n return exports.unstable_now() - startTime < frameInterval ? !1 : !0;\n}\nfunction performWorkUntilDeadline() {\n if (isMessageLoopRunning) {\n var currentTime = exports.unstable_now();\n startTime = currentTime;\n var hasMoreWork = !0;\n try {\n a: {\n isHostCallbackScheduled = !1;\n isHostTimeoutScheduled &&\n ((isHostTimeoutScheduled = !1),\n localClearTimeout(taskTimeoutID),\n (taskTimeoutID = -1));\n isPerformingWork = !0;\n var previousPriorityLevel = currentPriorityLevel;\n try {\n b: {\n advanceTimers(currentTime);\n for (\n currentTask = peek(taskQueue);\n null !== currentTask &&\n !(\n currentTask.expirationTime > currentTime && shouldYieldToHost()\n );\n\n ) {\n var callback = currentTask.callback;\n if (\"function\" === typeof callback) {\n currentTask.callback = null;\n currentPriorityLevel = currentTask.priorityLevel;\n var continuationCallback = callback(\n currentTask.expirationTime <= currentTime\n );\n currentTime = exports.unstable_now();\n if (\"function\" === typeof continuationCallback) {\n currentTask.callback = continuationCallback;\n advanceTimers(currentTime);\n hasMoreWork = !0;\n break b;\n }\n currentTask === peek(taskQueue) && pop(taskQueue);\n advanceTimers(currentTime);\n } else pop(taskQueue);\n currentTask = peek(taskQueue);\n }\n if (null !== currentTask) hasMoreWork = !0;\n else {\n var firstTimer = peek(timerQueue);\n null !== firstTimer &&\n requestHostTimeout(\n handleTimeout,\n firstTimer.startTime - currentTime\n );\n hasMoreWork = !1;\n }\n }\n break a;\n } finally {\n (currentTask = null),\n (currentPriorityLevel = previousPriorityLevel),\n (isPerformingWork = !1);\n }\n hasMoreWork = void 0;\n }\n } finally {\n hasMoreWork\n ? schedulePerformWorkUntilDeadline()\n : (isMessageLoopRunning = !1);\n }\n }\n}\nvar schedulePerformWorkUntilDeadline;\nif (\"function\" === typeof localSetImmediate)\n schedulePerformWorkUntilDeadline = function () {\n localSetImmediate(performWorkUntilDeadline);\n };\nelse if (\"undefined\" !== typeof MessageChannel) {\n var channel = new MessageChannel(),\n port = channel.port2;\n channel.port1.onmessage = performWorkUntilDeadline;\n schedulePerformWorkUntilDeadline = function () {\n port.postMessage(null);\n };\n} else\n schedulePerformWorkUntilDeadline = function () {\n localSetTimeout(performWorkUntilDeadline, 0);\n };\nfunction requestHostCallback() {\n isMessageLoopRunning ||\n ((isMessageLoopRunning = !0), schedulePerformWorkUntilDeadline());\n}\nfunction requestHostTimeout(callback, ms) {\n taskTimeoutID = localSetTimeout(function () {\n callback(exports.unstable_now());\n }, ms);\n}\nexports.unstable_IdlePriority = 5;\nexports.unstable_ImmediatePriority = 1;\nexports.unstable_LowPriority = 4;\nexports.unstable_NormalPriority = 3;\nexports.unstable_Profiling = null;\nexports.unstable_UserBlockingPriority = 2;\nexports.unstable_cancelCallback = function (task) {\n task.callback = null;\n};\nexports.unstable_continueExecution = function () {\n isHostCallbackScheduled ||\n isPerformingWork ||\n ((isHostCallbackScheduled = !0), requestHostCallback());\n};\nexports.unstable_forceFrameRate = function (fps) {\n 0 > fps || 125 < fps\n ? console.error(\n \"forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported\"\n )\n : (frameInterval = 0 < fps ? Math.floor(1e3 / fps) : 5);\n};\nexports.unstable_getCurrentPriorityLevel = function () {\n return currentPriorityLevel;\n};\nexports.unstable_getFirstCallbackNode = function () {\n return peek(taskQueue);\n};\nexports.unstable_next = function (eventHandler) {\n switch (currentPriorityLevel) {\n case 1:\n case 2:\n case 3:\n var priorityLevel = 3;\n break;\n default:\n priorityLevel = currentPriorityLevel;\n }\n var previousPriorityLevel = currentPriorityLevel;\n currentPriorityLevel = priorityLevel;\n try {\n return eventHandler();\n } finally {\n currentPriorityLevel = previousPriorityLevel;\n }\n};\nexports.unstable_pauseExecution = function () {};\nexports.unstable_requestPaint = function () {};\nexports.unstable_runWithPriority = function (priorityLevel, eventHandler) {\n switch (priorityLevel) {\n case 1:\n case 2:\n case 3:\n case 4:\n case 5:\n break;\n default:\n priorityLevel = 3;\n }\n var previousPriorityLevel = currentPriorityLevel;\n currentPriorityLevel = priorityLevel;\n try {\n return eventHandler();\n } finally {\n currentPriorityLevel = previousPriorityLevel;\n }\n};\nexports.unstable_scheduleCallback = function (\n priorityLevel,\n callback,\n options\n) {\n var currentTime = exports.unstable_now();\n \"object\" === typeof options && null !== options\n ? ((options = options.delay),\n (options =\n \"number\" === typeof options && 0 < options\n ? currentTime + options\n : currentTime))\n : (options = currentTime);\n switch (priorityLevel) {\n case 1:\n var timeout = -1;\n break;\n case 2:\n timeout = 250;\n break;\n case 5:\n timeout = 1073741823;\n break;\n case 4:\n timeout = 1e4;\n break;\n default:\n timeout = 5e3;\n }\n timeout = options + timeout;\n priorityLevel = {\n id: taskIdCounter++,\n callback: callback,\n priorityLevel: priorityLevel,\n startTime: options,\n expirationTime: timeout,\n sortIndex: -1\n };\n options > currentTime\n ? ((priorityLevel.sortIndex = options),\n push(timerQueue, priorityLevel),\n null === peek(taskQueue) &&\n priorityLevel === peek(timerQueue) &&\n (isHostTimeoutScheduled\n ? (localClearTimeout(taskTimeoutID), (taskTimeoutID = -1))\n : (isHostTimeoutScheduled = !0),\n requestHostTimeout(handleTimeout, options - currentTime)))\n : ((priorityLevel.sortIndex = timeout),\n push(taskQueue, priorityLevel),\n isHostCallbackScheduled ||\n isPerformingWork ||\n ((isHostCallbackScheduled = !0), requestHostCallback()));\n return priorityLevel;\n};\nexports.unstable_shouldYield = shouldYieldToHost;\nexports.unstable_wrapCallback = function (callback) {\n var parentPriorityLevel = currentPriorityLevel;\n return function () {\n var previousPriorityLevel = currentPriorityLevel;\n currentPriorityLevel = parentPriorityLevel;\n try {\n return callback.apply(this, arguments);\n } finally {\n currentPriorityLevel = previousPriorityLevel;\n }\n };\n};\n", "'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/scheduler.production.js');\n} else {\n module.exports = require('./cjs/scheduler.development.js');\n}\n", "/** @license React v16.13.1\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its 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';var b=\"function\"===typeof Symbol&&Symbol.for,c=b?Symbol.for(\"react.element\"):60103,d=b?Symbol.for(\"react.portal\"):60106,e=b?Symbol.for(\"react.fragment\"):60107,f=b?Symbol.for(\"react.strict_mode\"):60108,g=b?Symbol.for(\"react.profiler\"):60114,h=b?Symbol.for(\"react.provider\"):60109,k=b?Symbol.for(\"react.context\"):60110,l=b?Symbol.for(\"react.async_mode\"):60111,m=b?Symbol.for(\"react.concurrent_mode\"):60111,n=b?Symbol.for(\"react.forward_ref\"):60112,p=b?Symbol.for(\"react.suspense\"):60113,q=b?\nSymbol.for(\"react.suspense_list\"):60120,r=b?Symbol.for(\"react.memo\"):60115,t=b?Symbol.for(\"react.lazy\"):60116,v=b?Symbol.for(\"react.block\"):60121,w=b?Symbol.for(\"react.fundamental\"):60117,x=b?Symbol.for(\"react.responder\"):60118,y=b?Symbol.for(\"react.scope\"):60119;\nfunction z(a){if(\"object\"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case t:case r:case h:return a;default:return u}}case d:return u}}}function A(a){return z(a)===m}exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;exports.Fragment=e;exports.Lazy=t;exports.Memo=r;exports.Portal=d;\nexports.Profiler=g;exports.StrictMode=f;exports.Suspense=p;exports.isAsyncMode=function(a){return A(a)||z(a)===l};exports.isConcurrentMode=A;exports.isContextConsumer=function(a){return z(a)===k};exports.isContextProvider=function(a){return z(a)===h};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return z(a)===n};exports.isFragment=function(a){return z(a)===e};exports.isLazy=function(a){return z(a)===t};\nexports.isMemo=function(a){return z(a)===r};exports.isPortal=function(a){return z(a)===d};exports.isProfiler=function(a){return z(a)===g};exports.isStrictMode=function(a){return z(a)===f};exports.isSuspense=function(a){return z(a)===p};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===e||a===m||a===g||a===f||a===p||a===q||\"object\"===typeof a&&null!==a&&(a.$$typeof===t||a.$$typeof===r||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n||a.$$typeof===w||a.$$typeof===x||a.$$typeof===y||a.$$typeof===v)};exports.typeOf=z;\n", "'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n", "'use strict';\n\nvar reactIs = require('react-is');\n\n/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\nvar REACT_STATICS = {\n childContextTypes: true,\n contextType: true,\n contextTypes: true,\n defaultProps: true,\n displayName: true,\n getDefaultProps: true,\n getDerivedStateFromError: true,\n getDerivedStateFromProps: true,\n mixins: true,\n propTypes: true,\n type: true\n};\nvar KNOWN_STATICS = {\n name: true,\n length: true,\n prototype: true,\n caller: true,\n callee: true,\n arguments: true,\n arity: true\n};\nvar FORWARD_REF_STATICS = {\n '$$typeof': true,\n render: true,\n defaultProps: true,\n displayName: true,\n propTypes: true\n};\nvar MEMO_STATICS = {\n '$$typeof': true,\n compare: true,\n defaultProps: true,\n displayName: true,\n propTypes: true,\n type: true\n};\nvar TYPE_STATICS = {};\nTYPE_STATICS[reactIs.ForwardRef] = FORWARD_REF_STATICS;\nTYPE_STATICS[reactIs.Memo] = MEMO_STATICS;\n\nfunction getStatics(component) {\n // React v16.11 and below\n if (reactIs.isMemo(component)) {\n return MEMO_STATICS;\n } // React v16.12 and above\n\n\n return TYPE_STATICS[component['$$typeof']] || REACT_STATICS;\n}\n\nvar defineProperty = Object.defineProperty;\nvar getOwnPropertyNames = Object.getOwnPropertyNames;\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar getPrototypeOf = Object.getPrototypeOf;\nvar objectPrototype = Object.prototype;\nfunction hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n if (typeof sourceComponent !== 'string') {\n // don't hoist over string (html) components\n if (objectPrototype) {\n var inheritedComponent = getPrototypeOf(sourceComponent);\n\n if (inheritedComponent && inheritedComponent !== objectPrototype) {\n hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n }\n }\n\n var keys = getOwnPropertyNames(sourceComponent);\n\n if (getOwnPropertySymbols) {\n keys = keys.concat(getOwnPropertySymbols(sourceComponent));\n }\n\n var targetStatics = getStatics(targetComponent);\n var sourceStatics = getStatics(sourceComponent);\n\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n\n if (!KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) && !(targetStatics && targetStatics[key])) {\n var descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n\n try {\n // Avoid failures from read-only properties\n defineProperty(targetComponent, key, descriptor);\n } catch (e) {}\n }\n }\n }\n\n return targetComponent;\n}\n\nmodule.exports = hoistNonReactStatics;\n", "\nvar MACHINE_ID = Math.floor(Math.random() * 0xFFFFFF);\nvar index = ObjectID.index = parseInt(Math.random() * 0xFFFFFF, 10);\nvar pid = (typeof process === 'undefined' || typeof process.pid !== 'number' ? Math.floor(Math.random() * 100000) : process.pid) % 0xFFFF;\n// <https://github.com/williamkapke/bson-objectid/pull/51>\n// Attempt to fallback Buffer if _Buffer is undefined (e.g. for Node.js).\n// Worst case fallback to null and handle with null checking before using.\nvar BufferCtr = (() => { try { return _Buffer; }catch(_){ try{ return Buffer; }catch(_){ return null; } } })();\n\n/**\n * Determine if an object is Buffer\n *\n * Author: Feross Aboukhadijeh <feross@feross.org> <http://feross.org>\n * License: MIT\n *\n */\nvar isBuffer = function (obj) {\n return !!(\n obj != null &&\n obj.constructor &&\n typeof obj.constructor.isBuffer === 'function' &&\n obj.constructor.isBuffer(obj)\n )\n};\n\n// Precomputed hex table enables speedy hex string conversion\nvar hexTable = [];\nfor (var i = 0; i < 256; i++) {\n hexTable[i] = (i <= 15 ? '0' : '') + i.toString(16);\n}\n\n// Regular expression that checks for hex value\nvar checkForHexRegExp = new RegExp('^[0-9a-fA-F]{24}$');\n\n// Lookup tables\nvar decodeLookup = [];\ni = 0;\nwhile (i < 10) decodeLookup[0x30 + i] = i++;\nwhile (i < 16) decodeLookup[0x41 - 10 + i] = decodeLookup[0x61 - 10 + i] = i++;\n\n/**\n * Create a new immutable ObjectID instance\n *\n * @class Represents the BSON ObjectID type\n * @param {String|Number} id Can be a 24 byte hex string, 12 byte binary string or a Number.\n * @return {Object} instance of ObjectID.\n */\nfunction ObjectID(id) {\n if(!(this instanceof ObjectID)) return new ObjectID(id);\n if(id && ((id instanceof ObjectID) || id._bsontype===\"ObjectID\"))\n return id;\n\n this._bsontype = 'ObjectID';\n\n // The most common usecase (blank id, new objectId instance)\n if (id == null || typeof id === 'number') {\n // Generate a new id\n this.id = this.generate(id);\n // Return the object\n return;\n }\n\n // Check if the passed in id is valid\n var valid = ObjectID.isValid(id);\n\n // Throw an error if it's not a valid setup\n if (!valid && id != null) {\n throw new Error(\n 'Argument passed in must be a single String of 12 bytes or a string of 24 hex characters'\n );\n } else if (valid && typeof id === 'string' && id.length === 24) {\n return ObjectID.createFromHexString(id);\n } else if (id != null && id.length === 12) {\n // assume 12 byte string\n this.id = id;\n } else if (id != null && typeof id.toHexString === 'function') {\n // Duck-typing to support ObjectId from different npm packages\n return id;\n } else {\n throw new Error(\n 'Argument passed in must be a single String of 12 bytes or a string of 24 hex characters'\n );\n }\n}\nmodule.exports = ObjectID;\nObjectID.default = ObjectID;\n\n/**\n * Creates an ObjectID from a second based number, with the rest of the ObjectID zeroed out. Used for comparisons or sorting the ObjectID.\n *\n * @param {Number} time an integer number representing a number of seconds.\n * @return {ObjectID} return the created ObjectID\n * @api public\n */\nObjectID.createFromTime = function(time){\n time = parseInt(time, 10) % 0xFFFFFFFF;\n return new ObjectID(hex(8,time)+\"0000000000000000\");\n};\n\n/**\n * Creates an ObjectID from a hex string representation of an ObjectID.\n *\n * @param {String} hexString create a ObjectID from a passed in 24 byte hexstring.\n * @return {ObjectID} return the created ObjectID\n * @api public\n */\nObjectID.createFromHexString = function(hexString) {\n // Throw an error if it's not a valid setup\n if (typeof hexString === 'undefined' || (hexString != null && hexString.length !== 24)) {\n throw new Error(\n 'Argument passed in must be a single String of 12 bytes or a string of 24 hex characters'\n );\n }\n\n // Calculate lengths\n var data = '';\n var i = 0;\n\n while (i < 24) {\n data += String.fromCharCode((decodeLookup[hexString.charCodeAt(i++)] << 4) | decodeLookup[hexString.charCodeAt(i++)]);\n }\n\n return new ObjectID(data);\n};\n\n/**\n * Checks if a value is a valid bson ObjectId\n *\n * @param {String} objectid Can be a 24 byte hex string or an instance of ObjectID.\n * @return {Boolean} return true if the value is a valid bson ObjectID, return false otherwise.\n * @api public\n *\n * THE NATIVE DOCUMENTATION ISN'T CLEAR ON THIS GUY!\n * http://mongodb.github.io/node-mongodb-native/api-bson-generated/objectid.html#objectid-isvalid\n */\nObjectID.isValid = function(id) {\n if (id == null) return false;\n\n if (typeof id === 'number') {\n return true;\n }\n\n if (typeof id === 'string') {\n return id.length === 12 || (id.length === 24 && checkForHexRegExp.test(id));\n }\n\n if (id instanceof ObjectID) {\n return true;\n }\n\n // <https://github.com/williamkapke/bson-objectid/issues/53>\n if (isBuffer(id)) {\n return ObjectID.isValid(id.toString('hex'));\n }\n\n // Duck-Typing detection of ObjectId like objects\n // <https://github.com/williamkapke/bson-objectid/pull/51>\n if (typeof id.toHexString === 'function') {\n if(\n BufferCtr &&\n (id.id instanceof BufferCtr || typeof id.id === 'string')\n ) {\n return id.id.length === 12 || (id.id.length === 24 && checkForHexRegExp.test(id.id));\n }\n }\n\n return false;\n};\n\nObjectID.prototype = {\n constructor: ObjectID,\n\n /**\n * Return the ObjectID id as a 24 byte hex string representation\n *\n * @return {String} return the 24 byte hex string representation.\n * @api public\n */\n toHexString: function() {\n if (!this.id || !this.id.length) {\n throw new Error(\n 'invalid ObjectId, ObjectId.id must be either a string or a Buffer, but is [' +\n JSON.stringify(this.id) +\n ']'\n );\n }\n\n if (this.id.length === 24) {\n return this.id;\n }\n\n if (isBuffer(this.id)) {\n return this.id.toString('hex')\n }\n\n var hexString = '';\n for (var i = 0; i < this.id.length; i++) {\n hexString += hexTable[this.id.charCodeAt(i)];\n }\n\n return hexString;\n },\n\n /**\n * Compares the equality of this ObjectID with `otherID`.\n *\n * @param {Object} otherId ObjectID instance to compare against.\n * @return {Boolean} the result of comparing two ObjectID's\n * @api public\n */\n equals: function (otherId){\n if (otherId instanceof ObjectID) {\n return this.toString() === otherId.toString();\n } else if (\n typeof otherId === 'string' &&\n ObjectID.isValid(otherId) &&\n otherId.length === 12 &&\n isBuffer(this.id)\n ) {\n return otherId === this.id.toString('binary');\n } else if (typeof otherId === 'string' && ObjectID.isValid(otherId) && otherId.length === 24) {\n return otherId.toLowerCase() === this.toHexString();\n } else if (typeof otherId === 'string' && ObjectID.isValid(otherId) && otherId.length === 12) {\n return otherId === this.id;\n } else if (otherId != null && (otherId instanceof ObjectID || otherId.toHexString)) {\n return otherId.toHexString() === this.toHexString();\n } else {\n return false;\n }\n },\n\n /**\n * Returns the generation date (accurate up to the second) that this ID was generated.\n *\n * @return {Date} the generation date\n * @api public\n */\n getTimestamp: function(){\n var timestamp = new Date();\n var time;\n if (isBuffer(this.id)) {\n time = this.id[3] | (this.id[2] << 8) | (this.id[1] << 16) | (this.id[0] << 24);\n } else {\n time = this.id.charCodeAt(3) | (this.id.charCodeAt(2) << 8) | (this.id.charCodeAt(1) << 16) | (this.id.charCodeAt(0) << 24);\n }\n timestamp.setTime(Math.floor(time) * 1000);\n return timestamp;\n },\n\n /**\n * Generate a 12 byte id buffer used in ObjectID's\n *\n * @method\n * @param {number} [time] optional parameter allowing to pass in a second based timestamp.\n * @return {string} return the 12 byte id buffer string.\n */\n generate: function (time) {\n if ('number' !== typeof time) {\n time = ~~(Date.now() / 1000);\n }\n\n //keep it in the ring!\n time = parseInt(time, 10) % 0xFFFFFFFF;\n\n var inc = next();\n\n return String.fromCharCode(\n ((time >> 24) & 0xFF),\n ((time >> 16) & 0xFF),\n ((time >> 8) & 0xFF),\n (time & 0xFF),\n ((MACHINE_ID >> 16) & 0xFF),\n ((MACHINE_ID >> 8) & 0xFF),\n (MACHINE_ID & 0xFF),\n ((pid >> 8) & 0xFF),\n (pid & 0xFF),\n ((inc >> 16) & 0xFF),\n ((inc >> 8) & 0xFF),\n (inc & 0xFF)\n )\n },\n};\n\nfunction next() {\n return index = (index+1) % 0xFFFFFF;\n}\n\nfunction hex(length, n) {\n n = n.toString(16);\n return (n.length===length)? n : \"00000000\".substring(n.length, length) + n;\n}\n\nfunction buffer(str) {\n var i=0,out=[];\n\n if(str.length===24)\n for(;i<24; out.push(parseInt(str[i]+str[i+1], 16)),i+=2);\n\n else if(str.length===12)\n for(;i<12; out.push(str.charCodeAt(i)),i++);\n\n return out;\n}\n\nvar inspect = (Symbol && Symbol.for && Symbol.for('nodejs.util.inspect.custom')) || 'inspect';\n\n/**\n * Converts to a string representation of this Id.\n *\n * @return {String} return the 24 byte hex string representation.\n * @api private\n */\nObjectID.prototype[inspect] = function() { return \"ObjectID(\"+this+\")\" };\nObjectID.prototype.toJSON = ObjectID.prototype.toHexString;\nObjectID.prototype.toString = ObjectID.prototype.toHexString;\n", "function isUndefined(value) {\n return value === undefined;\n}\n\nfunction isNull(value) {\n return value === null;\n}\n\nfunction isBoolean(value) {\n return typeof value === 'boolean';\n}\n\nfunction isObject(value) {\n return value === Object(value);\n}\n\nfunction isArray(value) {\n return Array.isArray(value);\n}\n\nfunction isDate(value) {\n return value instanceof Date;\n}\n\nfunction isBlob(value, isReactNative) {\n return isReactNative\n ? isObject(value) && !isUndefined(value.uri)\n : isObject(value) &&\n typeof value.size === 'number' &&\n typeof value.type === 'string' &&\n typeof value.slice === 'function';\n}\n\nfunction isFile(value, isReactNative) {\n return (\n isBlob(value, isReactNative) &&\n typeof value.name === 'string' &&\n (isObject(value.lastModifiedDate) || typeof value.lastModified === 'number')\n );\n}\n\nfunction initCfg(value) {\n return isUndefined(value) ? false : value;\n}\n\nfunction serialize(obj, cfg, fd, pre) {\n cfg = cfg || {};\n fd = fd || new FormData();\n\n cfg.indices = initCfg(cfg.indices);\n cfg.nullsAsUndefineds = initCfg(cfg.nullsAsUndefineds);\n cfg.booleansAsIntegers = initCfg(cfg.booleansAsIntegers);\n cfg.allowEmptyArrays = initCfg(cfg.allowEmptyArrays);\n cfg.noAttributesWithArrayNotation = initCfg(\n cfg.noAttributesWithArrayNotation,\n );\n cfg.noFilesWithArrayNotation = initCfg(cfg.noFilesWithArrayNotation);\n cfg.dotsForObjectNotation = initCfg(cfg.dotsForObjectNotation);\n\n const isReactNative = typeof fd.getParts === 'function';\n\n if (isUndefined(obj)) {\n return fd;\n } else if (isNull(obj)) {\n if (!cfg.nullsAsUndefineds) {\n fd.append(pre, '');\n }\n } else if (isBoolean(obj)) {\n if (cfg.booleansAsIntegers) {\n fd.append(pre, obj ? 1 : 0);\n } else {\n fd.append(pre, obj);\n }\n } else if (isArray(obj)) {\n if (obj.length) {\n obj.forEach((value, index) => {\n let key = pre + '[' + (cfg.indices ? index : '') + ']';\n\n if (\n cfg.noAttributesWithArrayNotation ||\n (cfg.noFilesWithArrayNotation && isFile(value, isReactNative))\n ) {\n key = pre;\n }\n\n serialize(value, cfg, fd, key);\n });\n } else if (cfg.allowEmptyArrays) {\n fd.append(cfg.noAttributesWithArrayNotation ? pre : pre + '[]', '');\n }\n } else if (isDate(obj)) {\n fd.append(pre, obj.toISOString());\n } else if (isObject(obj) && !isBlob(obj, isReactNative)) {\n Object.keys(obj).forEach((prop) => {\n const value = obj[prop];\n\n if (isArray(value)) {\n while (prop.length > 2 && prop.lastIndexOf('[]') === prop.length - 2) {\n prop = prop.substring(0, prop.length - 2);\n }\n }\n\n const key = pre\n ? cfg.dotsForObjectNotation\n ? pre + '.' + prop\n : pre + '[' + prop + ']'\n : prop;\n\n serialize(value, cfg, fd, key);\n });\n } else {\n fd.append(pre, obj);\n }\n\n return fd;\n}\n\nmodule.exports = {\n serialize,\n};\n", "(function() {\n var base64map\n = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/',\n\n crypt = {\n // Bit-wise rotation left\n rotl: function(n, b) {\n return (n << b) | (n >>> (32 - b));\n },\n\n // Bit-wise rotation right\n rotr: function(n, b) {\n return (n << (32 - b)) | (n >>> b);\n },\n\n // Swap big-endian to little-endian and vice versa\n endian: function(n) {\n // If number given, swap endian\n if (n.constructor == Number) {\n return crypt.rotl(n, 8) & 0x00FF00FF | crypt.rotl(n, 24) & 0xFF00FF00;\n }\n\n // Else, assume array and swap all items\n for (var i = 0; i < n.length; i++)\n n[i] = crypt.endian(n[i]);\n return n;\n },\n\n // Generate an array of any length of random bytes\n randomBytes: function(n) {\n for (var bytes = []; n > 0; n--)\n bytes.push(Math.floor(Math.random() * 256));\n return bytes;\n },\n\n // Convert a byte array to big-endian 32-bit words\n bytesToWords: function(bytes) {\n for (var words = [], i = 0, b = 0; i < bytes.length; i++, b += 8)\n words[b >>> 5] |= bytes[i] << (24 - b % 32);\n return words;\n },\n\n // Convert big-endian 32-bit words to a byte array\n wordsToBytes: function(words) {\n for (var bytes = [], b = 0; b < words.length * 32; b += 8)\n bytes.push((words[b >>> 5] >>> (24 - b % 32)) & 0xFF);\n return bytes;\n },\n\n // Convert a byte array to a hex string\n bytesToHex: function(bytes) {\n for (var hex = [], i = 0; i < bytes.length; i++) {\n hex.push((bytes[i] >>> 4).toString(16));\n hex.push((bytes[i] & 0xF).toString(16));\n }\n return hex.join('');\n },\n\n // Convert a hex string to a byte array\n hexToBytes: function(hex) {\n for (var bytes = [], c = 0; c < hex.length; c += 2)\n bytes.push(parseInt(hex.substr(c, 2), 16));\n return bytes;\n },\n\n // Convert a byte array to a base-64 string\n bytesToBase64: function(bytes) {\n for (var base64 = [], i = 0; i < bytes.length; i += 3) {\n var triplet = (bytes[i] << 16) | (bytes[i + 1] << 8) | bytes[i + 2];\n for (var j = 0; j < 4; j++)\n if (i * 8 + j * 6 <= bytes.length * 8)\n base64.push(base64map.charAt((triplet >>> 6 * (3 - j)) & 0x3F));\n else\n base64.push('=');\n }\n return base64.join('');\n },\n\n // Convert a base-64 string to a byte array\n base64ToBytes: function(base64) {\n // Remove non-base-64 characters\n base64 = base64.replace(/[^A-Z0-9+\\/]/ig, '');\n\n for (var bytes = [], i = 0, imod4 = 0; i < base64.length;\n imod4 = ++i % 4) {\n if (imod4 == 0) continue;\n bytes.push(((base64map.indexOf(base64.charAt(i - 1))\n & (Math.pow(2, -2 * imod4 + 8) - 1)) << (imod4 * 2))\n | (base64map.indexOf(base64.charAt(i)) >>> (6 - imod4 * 2)));\n }\n return bytes;\n }\n };\n\n module.exports = crypt;\n})();\n", "var charenc = {\n // UTF-8 encoding\n utf8: {\n // Convert a string to a byte array\n stringToBytes: function(str) {\n return charenc.bin.stringToBytes(unescape(encodeURIComponent(str)));\n },\n\n // Convert a byte array to a string\n bytesToString: function(bytes) {\n return decodeURIComponent(escape(charenc.bin.bytesToString(bytes)));\n }\n },\n\n // Binary encoding\n bin: {\n // Convert a string to a byte array\n stringToBytes: function(str) {\n for (var bytes = [], i = 0; i < str.length; i++)\n bytes.push(str.charCodeAt(i) & 0xFF);\n return bytes;\n },\n\n // Convert a byte array to a string\n bytesToString: function(bytes) {\n for (var str = [], i = 0; i < bytes.length; i++)\n str.push(String.fromCharCode(bytes[i]));\n return str.join('');\n }\n }\n};\n\nmodule.exports = charenc;\n", "/*!\n * Determine if an object is a Buffer\n *\n * @author Feross Aboukhadijeh <https://feross.org>\n * @license MIT\n */\n\n// The _isBuffer check is for Safari 5-7 support, because it's missing\n// Object.prototype.constructor. Remove this eventually\nmodule.exports = function (obj) {\n return obj != null && (isBuffer(obj) || isSlowBuffer(obj) || !!obj._isBuffer)\n}\n\nfunction isBuffer (obj) {\n return !!obj.constructor && typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj)\n}\n\n// For Node v0.10 support. Remove this eventually.\nfunction isSlowBuffer (obj) {\n return typeof obj.readFloatLE === 'function' && typeof obj.slice === 'function' && isBuffer(obj.slice(0, 0))\n}\n", "(function(){\r\n var crypt = require('crypt'),\r\n utf8 = require('charenc').utf8,\r\n isBuffer = require('is-buffer'),\r\n bin = require('charenc').bin,\r\n\r\n // The core\r\n md5 = function (message, options) {\r\n // Convert to byte array\r\n if (message.constructor == String)\r\n if (options && options.encoding === 'binary')\r\n message = bin.stringToBytes(message);\r\n else\r\n message = utf8.stringToBytes(message);\r\n else if (isBuffer(message))\r\n message = Array.prototype.slice.call(message, 0);\r\n else if (!Array.isArray(message) && message.constructor !== Uint8Array)\r\n message = message.toString();\r\n // else, assume byte array already\r\n\r\n var m = crypt.bytesToWords(message),\r\n l = message.length * 8,\r\n a = 1732584193,\r\n b = -271733879,\r\n c = -1732584194,\r\n d = 271733878;\r\n\r\n // Swap endian\r\n for (var i = 0; i < m.length; i++) {\r\n m[i] = ((m[i] << 8) | (m[i] >>> 24)) & 0x00FF00FF |\r\n ((m[i] << 24) | (m[i] >>> 8)) & 0xFF00FF00;\r\n }\r\n\r\n // Padding\r\n m[l >>> 5] |= 0x80 << (l % 32);\r\n m[(((l + 64) >>> 9) << 4) + 14] = l;\r\n\r\n // Method shortcuts\r\n var FF = md5._ff,\r\n GG = md5._gg,\r\n HH = md5._hh,\r\n II = md5._ii;\r\n\r\n for (var i = 0; i < m.length; i += 16) {\r\n\r\n var aa = a,\r\n bb = b,\r\n cc = c,\r\n dd = d;\r\n\r\n a = FF(a, b, c, d, m[i+ 0], 7, -680876936);\r\n d = FF(d, a, b, c, m[i+ 1], 12, -389564586);\r\n c = FF(c, d, a, b, m[i+ 2], 17, 606105819);\r\n b = FF(b, c, d, a, m[i+ 3], 22, -1044525330);\r\n a = FF(a, b, c, d, m[i+ 4], 7, -176418897);\r\n d = FF(d, a, b, c, m[i+ 5], 12, 1200080426);\r\n c = FF(c, d, a, b, m[i+ 6], 17, -1473231341);\r\n b = FF(b, c, d, a, m[i+ 7], 22, -45705983);\r\n a = FF(a, b, c, d, m[i+ 8], 7, 1770035416);\r\n d = FF(d, a, b, c, m[i+ 9], 12, -1958414417);\r\n c = FF(c, d, a, b, m[i+10], 17, -42063);\r\n b = FF(b, c, d, a, m[i+11], 22, -1990404162);\r\n a = FF(a, b, c, d, m[i+12], 7, 1804603682);\r\n d = FF(d, a, b, c, m[i+13], 12, -40341101);\r\n c = FF(c, d, a, b, m[i+14], 17, -1502002290);\r\n b = FF(b, c, d, a, m[i+15], 22, 1236535329);\r\n\r\n a = GG(a, b, c, d, m[i+ 1], 5, -165796510);\r\n d = GG(d, a, b, c, m[i+ 6], 9, -1069501632);\r\n c = GG(c, d, a, b, m[i+11], 14, 643717713);\r\n b = GG(b, c, d, a, m[i+ 0], 20, -373897302);\r\n a = GG(a, b, c, d, m[i+ 5], 5, -701558691);\r\n d = GG(d, a, b, c, m[i+10], 9, 38016083);\r\n c = GG(c, d, a, b, m[i+15], 14, -660478335);\r\n b = GG(b, c, d, a, m[i+ 4], 20, -405537848);\r\n a = GG(a, b, c, d, m[i+ 9], 5, 568446438);\r\n d = GG(d, a, b, c, m[i+14], 9, -1019803690);\r\n c = GG(c, d, a, b, m[i+ 3], 14, -187363961);\r\n b = GG(b, c, d, a, m[i+ 8], 20, 1163531501);\r\n a = GG(a, b, c, d, m[i+13], 5, -1444681467);\r\n d = GG(d, a, b, c, m[i+ 2], 9, -51403784);\r\n c = GG(c, d, a, b, m[i+ 7], 14, 1735328473);\r\n b = GG(b, c, d, a, m[i+12], 20, -1926607734);\r\n\r\n a = HH(a, b, c, d, m[i+ 5], 4, -378558);\r\n d = HH(d, a, b, c, m[i+ 8], 11, -2022574463);\r\n c = HH(c, d, a, b, m[i+11], 16, 1839030562);\r\n b = HH(b, c, d, a, m[i+14], 23, -35309556);\r\n a = HH(a, b, c, d, m[i+ 1], 4, -1530992060);\r\n d = HH(d, a, b, c, m[i+ 4], 11, 1272893353);\r\n c = HH(c, d, a, b, m[i+ 7], 16, -155497632);\r\n b = HH(b, c, d, a, m[i+10], 23, -1094730640);\r\n a = HH(a, b, c, d, m[i+13], 4, 681279174);\r\n d = HH(d, a, b, c, m[i+ 0], 11, -358537222);\r\n c = HH(c, d, a, b, m[i+ 3], 16, -722521979);\r\n b = HH(b, c, d, a, m[i+ 6], 23, 76029189);\r\n a = HH(a, b, c, d, m[i+ 9], 4, -640364487);\r\n d = HH(d, a, b, c, m[i+12], 11, -421815835);\r\n c = HH(c, d, a, b, m[i+15], 16, 530742520);\r\n b = HH(b, c, d, a, m[i+ 2], 23, -995338651);\r\n\r\n a = II(a, b, c, d, m[i+ 0], 6, -198630844);\r\n d = II(d, a, b, c, m[i+ 7], 10, 1126891415);\r\n c = II(c, d, a, b, m[i+14], 15, -1416354905);\r\n b = II(b, c, d, a, m[i+ 5], 21, -57434055);\r\n a = II(a, b, c, d, m[i+12], 6, 1700485571);\r\n d = II(d, a, b, c, m[i+ 3], 10, -1894986606);\r\n c = II(c, d, a, b, m[i+10], 15, -1051523);\r\n b = II(b, c, d, a, m[i+ 1], 21, -2054922799);\r\n a = II(a, b, c, d, m[i+ 8], 6, 1873313359);\r\n d = II(d, a, b, c, m[i+15], 10, -30611744);\r\n c = II(c, d, a, b, m[i+ 6], 15, -1560198380);\r\n b = II(b, c, d, a, m[i+13], 21, 1309151649);\r\n a = II(a, b, c, d, m[i+ 4], 6, -145523070);\r\n d = II(d, a, b, c, m[i+11], 10, -1120210379);\r\n c = II(c, d, a, b, m[i+ 2], 15, 718787259);\r\n b = II(b, c, d, a, m[i+ 9], 21, -343485551);\r\n\r\n a = (a + aa) >>> 0;\r\n b = (b + bb) >>> 0;\r\n c = (c + cc) >>> 0;\r\n d = (d + dd) >>> 0;\r\n }\r\n\r\n return crypt.endian([a, b, c, d]);\r\n };\r\n\r\n // Auxiliary functions\r\n md5._ff = function (a, b, c, d, x, s, t) {\r\n var n = a + (b & c | ~b & d) + (x >>> 0) + t;\r\n return ((n << s) | (n >>> (32 - s))) + b;\r\n };\r\n md5._gg = function (a, b, c, d, x, s, t) {\r\n var n = a + (b & d | c & ~d) + (x >>> 0) + t;\r\n return ((n << s) | (n >>> (32 - s))) + b;\r\n };\r\n md5._hh = function (a, b, c, d, x, s, t) {\r\n var n = a + (b ^ c ^ d) + (x >>> 0) + t;\r\n return ((n << s) | (n >>> (32 - s))) + b;\r\n };\r\n md5._ii = function (a, b, c, d, x, s, t) {\r\n var n = a + (c ^ (b | ~d)) + (x >>> 0) + t;\r\n return ((n << s) | (n >>> (32 - s))) + b;\r\n };\r\n\r\n // Package private blocksize\r\n md5._blocksize = 16;\r\n md5._digestsize = 16;\r\n\r\n module.exports = function (message, options) {\r\n if (message === undefined || message === null)\r\n throw new Error('Illegal argument ' + message);\r\n\r\n var digestbytes = crypt.wordsToBytes(md5(message, options));\r\n return options && options.asBytes ? digestbytes :\r\n options && options.asString ? bin.bytesToString(digestbytes) :\r\n crypt.bytesToHex(digestbytes);\r\n };\r\n\r\n})();\r\n", "'use client'\nimport React from 'react'\n\nimport type { RowLabelProps } from './types.js'\n\nimport { RenderCustomComponent } from '../../elements/RenderCustomComponent/index.js'\nimport { RowLabelProvider } from './Context/index.js'\nexport type { RowLabelProps }\n\nconst baseClass = 'row-label'\n\nexport const RowLabel: React.FC<RowLabelProps> = (props) => {\n const { className, CustomComponent, label, path, rowNumber } = props\n\n return (\n <RowLabelProvider path={path} rowNumber={rowNumber}>\n <RenderCustomComponent\n CustomComponent={CustomComponent}\n Fallback={\n typeof label === 'string' ? (\n <span\n className={[baseClass, className].filter(Boolean).join(' ')}\n style={{\n pointerEvents: 'none',\n }}\n >\n {label}\n </span>\n ) : (\n label\n )\n }\n />\n </RowLabelProvider>\n )\n}\n", "type Args = {\n CustomComponent?: React.ReactNode\n Fallback: React.ReactNode\n}\n\n/**\n * Renders a CustomComponent or a Fallback component.\n * Only fallback if the Custom Component is undefined.\n *\n * If the CustomComponent is null, render null.\n *\n * @param {Object} args - Arguments object.\n * @param {React.ReactNode} [args.CustomComponent] - Optional custom component to render.\n * @param {React.ReactNode} args.Fallback - Fallback component to render if CustomComponent is undefined.\n * @returns {React.ReactNode} Rendered component.\n */\nexport function RenderCustomComponent({ CustomComponent, Fallback }: Args): React.ReactNode {\n return CustomComponent !== undefined ? CustomComponent : Fallback\n}\n", "'use client'\n\nimport React from 'react'\n\nimport { useWatchForm } from '../../Form/context.js'\n\ntype RowLabelType<T = unknown> = {\n readonly data: T\n readonly path: string\n readonly rowNumber?: number\n}\n\nconst RowLabel = React.createContext<RowLabelType>({\n data: {},\n path: '',\n rowNumber: undefined,\n})\n\ntype Props<T> = {\n readonly children: React.ReactNode\n} & Omit<RowLabelType<T>, 'data'>\n\nexport const RowLabelProvider: React.FC<Props<unknown>> = ({ children, path, rowNumber }) => {\n const { getDataByPath, getSiblingData } = useWatchForm()\n const collapsibleData = getSiblingData(path)\n const arrayData = getDataByPath(path)\n\n const data = arrayData || collapsibleData\n\n const contextValue = React.useMemo(() => ({ data, path, rowNumber }), [data, path, rowNumber])\n\n return <RowLabel value={contextValue}>{children}</RowLabel>\n}\n\nexport const useRowLabel = <T,>() => {\n return React.use(RowLabel) as RowLabelType<T>\n}\n", "'use client'\nimport type { RenderedField } from 'payload'\n\nimport { createContext, use } from 'react'\nimport {\n createContext as createSelectorContext,\n useContextSelector,\n useContext as useFullContext,\n} from 'use-context-selector'\n\nimport type { Context, FormFieldsContext as FormFieldsContextType } from './types.js'\n\nconst FormContext = createContext({} as Context)\nconst DocumentFormContext = createContext({} as Context)\nconst FormWatchContext = createContext({} as Context)\nconst SubmittedContext = createContext(false)\nconst ProcessingContext = createContext(false)\n/**\n * If the form has started processing in the background (e.g.\n * if autosave is running), this will be true.\n */\nconst BackgroundProcessingContext = createContext(false)\nconst ModifiedContext = createContext(false)\nconst InitializingContext = createContext(false)\nconst FormFieldsContext = createSelectorContext<FormFieldsContextType>([{}, () => null])\n\nexport type RenderedFieldSlots = Map<string, RenderedField>\n\n/**\n * Get the state of the form, can be used to submit & validate the form.\n *\n * @see https://payloadcms.com/docs/admin/react-hooks#useform\n */\nconst useForm = (): Context => use(FormContext)\n/**\n * Get the state of the document-level form. This is useful if you need to access the document-level Form from within a child Form.\n * This is the case withing lexical Blocks, as each lexical blocks renders their own Form.\n */\nconst useDocumentForm = (): Context => use(DocumentFormContext)\n\nconst useWatchForm = (): Context => use(FormWatchContext)\nconst useFormSubmitted = (): boolean => use(SubmittedContext)\nconst useFormProcessing = (): boolean => use(ProcessingContext)\n/**\n * If the form has started processing in the background (e.g.\n * if autosave is running), this will be true.\n */\nconst useFormBackgroundProcessing = (): boolean => use(BackgroundProcessingContext)\nconst useFormModified = (): boolean => use(ModifiedContext)\nconst useFormInitializing = (): boolean => use(InitializingContext)\n\n/**\n * Get and set the value of a form field based on a selector\n *\n * @see https://payloadcms.com/docs/admin/react-hooks#useformfields\n */\nconst useFormFields = <Value = unknown>(\n selector: (context: FormFieldsContextType) => Value,\n): Value => useContextSelector(FormFieldsContext, selector)\n\n/**\n * Get the state of all form fields.\n *\n * @see https://payloadcms.com/docs/admin/react-hooks#useallformfields\n */\nconst useAllFormFields = (): FormFieldsContextType => useFullContext(FormFieldsContext)\n\nexport {\n BackgroundProcessingContext,\n DocumentFormContext,\n FormContext,\n FormFieldsContext,\n FormWatchContext,\n InitializingContext,\n ModifiedContext,\n ProcessingContext,\n SubmittedContext,\n useAllFormFields,\n useDocumentForm,\n useForm,\n useFormBackgroundProcessing,\n useFormFields,\n useFormInitializing,\n useFormModified,\n useFormProcessing,\n useFormSubmitted,\n useWatchForm,\n}\n", "import { createElement, createContext as createContextOrig, useContext as useContextOrig, useEffect, useLayoutEffect, useReducer, useRef, useState, } from 'react';\nimport { unstable_NormalPriority as NormalPriority, unstable_runWithPriority as runWithPriority, } from 'scheduler';\nconst CONTEXT_VALUE = Symbol();\nconst ORIGINAL_PROVIDER = Symbol();\nconst isSSR = typeof window === 'undefined' ||\n /ServerSideRendering/.test(window.navigator && window.navigator.userAgent);\nconst useIsomorphicLayoutEffect = isSSR ? useEffect : useLayoutEffect;\n// for preact that doesn't have runWithPriority\nconst runWithNormalPriority = runWithPriority\n ? (fn) => {\n try {\n runWithPriority(NormalPriority, fn);\n }\n catch (e) {\n if (e.message === 'Not implemented.') {\n fn();\n }\n else {\n throw e;\n }\n }\n }\n : (fn) => fn();\nconst createProvider = (ProviderOrig) => {\n const ContextProvider = ({ value, children, }) => {\n const valueRef = useRef(value);\n const versionRef = useRef(0);\n const [resolve, setResolve] = useState(null);\n if (resolve) {\n resolve(value);\n setResolve(null);\n }\n const contextValue = useRef();\n if (!contextValue.current) {\n const listeners = new Set();\n const update = (fn, options) => {\n versionRef.current += 1;\n const action = {\n n: versionRef.current,\n };\n if (options === null || options === void 0 ? void 0 : options.suspense) {\n action.n *= -1; // this is intentional to make it temporary version\n action.p = new Promise((r) => {\n setResolve(() => (v) => {\n action.v = v;\n delete action.p;\n r(v);\n });\n });\n }\n listeners.forEach((listener) => listener(action));\n fn();\n };\n contextValue.current = {\n [CONTEXT_VALUE]: {\n /* \"v\"alue */ v: valueRef,\n /* versio\"n\" */ n: versionRef,\n /* \"l\"isteners */ l: listeners,\n /* \"u\"pdate */ u: update,\n },\n };\n }\n useIsomorphicLayoutEffect(() => {\n valueRef.current = value;\n versionRef.current += 1;\n runWithNormalPriority(() => {\n contextValue.current[CONTEXT_VALUE].l.forEach((listener) => {\n listener({ n: versionRef.current, v: value });\n });\n });\n }, [value]);\n return createElement(ProviderOrig, { value: contextValue.current }, children);\n };\n return ContextProvider;\n};\nconst identity = (x) => x;\n/**\n * This creates a special context for `useContextSelector`.\n *\n * @example\n * import { createContext } from 'use-context-selector';\n *\n * const PersonContext = createContext({ firstName: '', familyName: '' });\n */\nexport function createContext(defaultValue) {\n const context = createContextOrig({\n [CONTEXT_VALUE]: {\n /* \"v\"alue */ v: { current: defaultValue },\n /* versio\"n\" */ n: { current: -1 },\n /* \"l\"isteners */ l: new Set(),\n /* \"u\"pdate */ u: (f) => f(),\n },\n });\n context[ORIGINAL_PROVIDER] = context.Provider;\n context.Provider = createProvider(context.Provider);\n delete context.Consumer; // no support for Consumer\n return context;\n}\n/**\n * This hook returns context selected value by selector.\n *\n * It will only accept context created by `createContext`.\n * It will trigger re-render if only the selected value is referentially changed.\n *\n * The selector should return referentially equal result for same input for better performance.\n *\n * @example\n * import { useContextSelector } from 'use-context-selector';\n *\n * const firstName = useContextSelector(PersonContext, (state) => state.firstName);\n */\nexport function useContextSelector(context, selector) {\n const contextValue = useContextOrig(context)[CONTEXT_VALUE];\n if (typeof process === 'object' && process.env.NODE_ENV !== 'production') {\n if (!contextValue) {\n throw new Error('useContextSelector requires special context');\n }\n }\n const { \n /* \"v\"alue */ v: { current: value }, \n /* versio\"n\" */ n: { current: version }, \n /* \"l\"isteners */ l: listeners, } = contextValue;\n const selected = selector(value);\n const [state, dispatch] = useReducer((prev, action) => {\n if (!action) {\n // case for `dispatch()` below\n return [value, selected];\n }\n if ('p' in action) {\n throw action.p;\n }\n if (action.n === version) {\n if (Object.is(prev[1], selected)) {\n return prev; // bail out\n }\n return [value, selected];\n }\n try {\n if ('v' in action) {\n if (Object.is(prev[0], action.v)) {\n return prev; // do not update\n }\n const nextSelected = selector(action.v);\n if (Object.is(prev[1], nextSelected)) {\n return prev; // do not update\n }\n return [action.v, nextSelected];\n }\n }\n catch (_e) {\n // ignored (stale props or some other reason)\n }\n return [...prev]; // schedule update\n }, [value, selected]);\n if (!Object.is(state[1], selected)) {\n // schedule re-render\n // this is safe because it's self contained\n dispatch();\n }\n useIsomorphicLayoutEffect(() => {\n listeners.add(dispatch);\n return () => {\n listeners.delete(dispatch);\n };\n }, [listeners]);\n return state[1];\n}\n/**\n * This hook returns the entire context value.\n * Use this instead of React.useContext for consistent behavior.\n *\n * @example\n * import { useContext } from 'use-context-selector';\n *\n * const person = useContext(PersonContext);\n */\nexport function useContext(context) {\n return useContextSelector(context, identity);\n}\n/**\n * This hook returns an update function to wrap an updating function\n *\n * Use this for a function that will change a value in\n * concurrent rendering in React 18.\n * Otherwise, there's no need to use this hook.\n *\n * @example\n * import { useContextUpdate } from 'use-context-selector';\n *\n * const update = useContextUpdate();\n *\n * // Wrap set state function\n * update(() => setState(...));\n *\n * // Experimental suspense mode\n * update(() => setState(...), { suspense: true });\n */\nexport function useContextUpdate(context) {\n const contextValue = useContextOrig(context)[CONTEXT_VALUE];\n if (typeof process === 'object' && process.env.NODE_ENV !== 'production') {\n if (!contextValue) {\n throw new Error('useContextUpdate requires special context');\n }\n }\n const { u: update } = contextValue;\n return update;\n}\n/* eslint-disable @typescript-eslint/no-explicit-any */\n/**\n * This is a Provider component for bridging multiple react roots\n *\n * @example\n * const valueToBridge = useBridgeValue(PersonContext);\n * return (\n * <Renderer>\n * <BridgeProvider context={PersonContext} value={valueToBridge}>\n * {children}\n * </BridgeProvider>\n * </Renderer>\n * );\n */\nexport const BridgeProvider = ({ context, value, children, }) => {\n const { [ORIGINAL_PROVIDER]: ProviderOrig } = context;\n if (typeof process === 'object' && process.env.NODE_ENV !== 'production') {\n if (!ProviderOrig) {\n throw new Error('BridgeProvider requires special context');\n }\n }\n return createElement(ProviderOrig, { value }, children);\n};\n/**\n * This hook return a value for BridgeProvider\n */\nexport const useBridgeValue = (context) => {\n const bridgeValue = useContextOrig(context);\n if (typeof process === 'object' && process.env.NODE_ENV !== 'production') {\n if (!bridgeValue[CONTEXT_VALUE]) {\n throw new Error('useBridgeValue requires special context');\n }\n }\n return bridgeValue;\n};\n", "'use client'\nimport type {\n ArrayFieldClientComponent,\n ArrayFieldClientProps,\n ArrayField as ArrayFieldType,\n} from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport React, { Fragment, useCallback, useId, useMemo } from 'react'\nimport { toast } from 'sonner'\n\nimport type { ClipboardPasteData } from '../../elements/ClipboardAction/types.js'\n\nimport { Banner } from '../../elements/Banner/index.js'\nimport { Button } from '../../elements/Button/index.js'\nimport { clipboardCopy, clipboardPaste } from '../../elements/ClipboardAction/clipboardUtilities.js'\nimport { ClipboardAction } from '../../elements/ClipboardAction/index.js'\nimport {\n mergeFormStateFromClipboard,\n reduceFormStateByPath,\n} from '../../elements/ClipboardAction/mergeFormStateFromClipboard.js'\nimport { DraggableSortableItem } from '../../elements/DraggableSortable/DraggableSortableItem/index.js'\nimport { DraggableSortable } from '../../elements/DraggableSortable/index.js'\nimport { ErrorPill } from '../../elements/ErrorPill/index.js'\nimport { RenderCustomComponent } from '../../elements/RenderCustomComponent/index.js'\nimport { FieldDescription } from '../../fields/FieldDescription/index.js'\nimport { FieldError } from '../../fields/FieldError/index.js'\nimport { FieldLabel } from '../../fields/FieldLabel/index.js'\nimport { useForm, useFormSubmitted } from '../../forms/Form/context.js'\nimport { extractRowsAndCollapsedIDs, toggleAllRows } from '../../forms/Form/rowHelpers.js'\nimport { NullifyLocaleField } from '../../forms/NullifyField/index.js'\nimport { useField } from '../../forms/useField/index.js'\nimport { withCondition } from '../../forms/withCondition/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useDocumentInfo } from '../../providers/DocumentInfo/index.js'\nimport { useLocale } from '../../providers/Locale/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { scrollToID } from '../../utilities/scrollToID.js'\nimport { mergeFieldStyles } from '../mergeFieldStyles.js'\nimport { fieldBaseClass } from '../shared/index.js'\nimport { ArrayRow } from './ArrayRow.js'\nimport './index.scss'\n\nconst baseClass = 'array-field'\n\nexport const ArrayFieldComponent: ArrayFieldClientComponent = (props) => {\n const {\n field,\n field: {\n name,\n type,\n admin: { className, description, isSortable = true } = {},\n fields,\n label,\n localized,\n maxRows,\n minRows: minRowsProp,\n required,\n },\n forceRender = false,\n path: pathFromProps,\n permissions,\n readOnly,\n schemaPath: schemaPathFromProps,\n validate,\n } = props\n\n const schemaPath = schemaPathFromProps ?? name\n\n const minRows = minRowsProp ?? (required ? 1 : 0)\n\n const { setDocFieldPreferences } = useDocumentInfo()\n const {\n addFieldRow,\n dispatchFields,\n getFields,\n moveFieldRow,\n removeFieldRow,\n replaceState,\n setModified,\n } = useForm()\n const submitted = useFormSubmitted()\n const { code: locale } = useLocale()\n const { i18n, t } = useTranslation()\n\n const {\n config: { localization },\n } = useConfig()\n\n const editingDefaultLocale = (() => {\n if (localization && localization.fallback) {\n const defaultLocale = localization.defaultLocale\n return locale === defaultLocale\n }\n\n return true\n })()\n\n // Handle labeling for Arrays, Global Arrays, and Blocks\n const getLabels = (p: ArrayFieldClientProps): Partial<ArrayFieldType['labels']> => {\n if ('labels' in p && p?.labels) {\n return p.labels\n }\n\n if ('labels' in p.field && p.field.labels) {\n return { plural: p.field.labels?.plural, singular: p.field.labels?.singular }\n }\n\n if ('label' in p.field && p.field.label) {\n return { plural: undefined, singular: p.field.label }\n }\n\n return { plural: t('general:rows'), singular: t('general:row') }\n }\n\n const labels = getLabels(props)\n\n const memoizedValidate = useCallback(\n (value, options) => {\n // alternative locales can be null\n if (!editingDefaultLocale && value === null) {\n return true\n }\n\n if (typeof validate === 'function') {\n return validate(value, { ...options, maxRows, minRows, required })\n }\n },\n [maxRows, minRows, required, validate, editingDefaultLocale],\n )\n\n const {\n customComponents: { AfterInput, BeforeInput, Description, Error, Label } = {},\n disabled,\n errorPaths,\n path,\n rows = [],\n showError,\n valid,\n value,\n } = useField<number>({\n hasRows: true,\n potentiallyStalePath: pathFromProps,\n validate: memoizedValidate,\n })\n\n const componentId = useId()\n const scrollIdPrefix = useMemo(() => `scroll-${componentId}`, [componentId])\n\n const addRow = useCallback(\n (rowIndex: number) => {\n addFieldRow({\n path,\n rowIndex,\n schemaPath,\n })\n\n setTimeout(() => {\n scrollToID(`${scrollIdPrefix}-row-${rowIndex}`)\n }, 0)\n },\n [addFieldRow, path, schemaPath, scrollIdPrefix],\n )\n\n const duplicateRow = useCallback(\n (rowIndex: number) => {\n dispatchFields({ type: 'DUPLICATE_ROW', path, rowIndex })\n\n setModified(true)\n\n setTimeout(() => {\n scrollToID(`${scrollIdPrefix}-row-${rowIndex}`)\n }, 0)\n },\n [dispatchFields, path, scrollIdPrefix, setModified],\n )\n\n const removeRow = useCallback(\n (rowIndex: number) => {\n removeFieldRow({ path, rowIndex })\n },\n [removeFieldRow, path],\n )\n\n const moveRow = useCallback(\n (moveFromIndex: number, moveToIndex: number) => {\n moveFieldRow({\n moveFromIndex,\n moveToIndex,\n path,\n })\n },\n [path, moveFieldRow],\n )\n\n const toggleCollapseAll = useCallback(\n (collapsed: boolean) => {\n const { collapsedIDs, updatedRows } = toggleAllRows({\n collapsed,\n rows,\n })\n setDocFieldPreferences(path, { collapsed: collapsedIDs })\n dispatchFields({ type: 'SET_ALL_ROWS_COLLAPSED', path, updatedRows })\n },\n [dispatchFields, path, rows, setDocFieldPreferences],\n )\n\n const setCollapse = useCallback(\n (rowID: string, collapsed: boolean) => {\n const { collapsedIDs, updatedRows } = extractRowsAndCollapsedIDs({\n collapsed,\n rowID,\n rows,\n })\n\n dispatchFields({ type: 'SET_ROW_COLLAPSED', path, updatedRows })\n setDocFieldPreferences(path, { collapsed: collapsedIDs })\n },\n [dispatchFields, path, rows, setDocFieldPreferences],\n )\n\n const copyRow = useCallback(\n (rowIndex: number) => {\n const formState = { ...getFields() }\n const clipboardResult = clipboardCopy({\n type,\n fields,\n getDataToCopy: () =>\n reduceFormStateByPath({\n formState,\n path,\n rowIndex,\n }),\n path,\n rowIndex,\n t,\n })\n\n if (typeof clipboardResult === 'string') {\n toast.error(clipboardResult)\n } else {\n toast.success(t('general:copied'))\n }\n },\n [fields, getFields, path, t, type],\n )\n\n const pasteRow = useCallback(\n (rowIndex: number) => {\n const formState = { ...getFields() }\n const pasteArgs = {\n onPaste: (dataFromClipboard: ClipboardPasteData) => {\n const newState = mergeFormStateFromClipboard({\n dataFromClipboard,\n formState,\n path,\n rowIndex,\n })\n replaceState(newState)\n setModified(true)\n },\n path,\n schemaFields: fields,\n t,\n }\n\n const clipboardResult = clipboardPaste(pasteArgs)\n\n if (typeof clipboardResult === 'string') {\n toast.error(clipboardResult)\n }\n },\n [fields, getFields, path, replaceState, setModified, t],\n )\n\n const pasteField = useCallback(\n (dataFromClipboard: ClipboardPasteData) => {\n const formState = { ...getFields() }\n const newState = mergeFormStateFromClipboard({\n dataFromClipboard,\n formState,\n path,\n })\n replaceState(newState)\n setModified(true)\n },\n [getFields, path, replaceState, setModified],\n )\n\n const getDataToCopy = useCallback(\n () =>\n reduceFormStateByPath({\n formState: { ...getFields() },\n path,\n }),\n [getFields, path],\n )\n\n const hasMaxRows = maxRows && rows.length >= maxRows\n\n const fieldErrorCount = errorPaths.length\n const fieldHasErrors = submitted && errorPaths.length > 0\n\n const showRequired = (readOnly || disabled) && rows.length === 0\n const showMinRows = (rows.length && rows.length < minRows) || (required && rows.length === 0)\n\n const styles = useMemo(() => mergeFieldStyles(field), [field])\n\n return (\n <div\n className={[\n fieldBaseClass,\n baseClass,\n className,\n fieldHasErrors ? `${baseClass}--has-error` : `${baseClass}--has-no-error`,\n ]\n .filter(Boolean)\n .join(' ')}\n id={`field-${path.replace(/\\./g, '__')}`}\n style={styles}\n >\n {showError && (\n <RenderCustomComponent\n CustomComponent={Error}\n Fallback={<FieldError path={path} showError={showError} />}\n />\n )}\n <header className={`${baseClass}__header`}>\n <div className={`${baseClass}__header-wrap`}>\n <div className={`${baseClass}__header-content`}>\n <h3 className={`${baseClass}__title`}>\n <RenderCustomComponent\n CustomComponent={Label}\n Fallback={\n <FieldLabel\n as=\"span\"\n label={label}\n localized={localized}\n path={path}\n required={required}\n />\n }\n />\n </h3>\n {fieldHasErrors && fieldErrorCount > 0 && (\n <ErrorPill count={fieldErrorCount} i18n={i18n} withMessage />\n )}\n </div>\n <ul className={`${baseClass}__header-actions`}>\n {rows?.length > 0 && (\n <Fragment>\n <li>\n <button\n className={`${baseClass}__header-action`}\n onClick={() => toggleCollapseAll(true)}\n type=\"button\"\n >\n {t('fields:collapseAll')}\n </button>\n </li>\n <li>\n <button\n className={`${baseClass}__header-action`}\n onClick={() => toggleCollapseAll(false)}\n type=\"button\"\n >\n {t('fields:showAll')}\n </button>\n </li>\n </Fragment>\n )}\n <li>\n <ClipboardAction\n allowCopy={rows?.length > 0}\n allowPaste={!readOnly}\n className={`${baseClass}__header-action`}\n disabled={disabled}\n fields={fields}\n getDataToCopy={getDataToCopy}\n onPaste={pasteField}\n path={path}\n type={type}\n />\n </li>\n </ul>\n </div>\n <RenderCustomComponent\n CustomComponent={Description}\n Fallback={<FieldDescription description={description} path={path} />}\n />\n </header>\n <NullifyLocaleField\n fieldValue={value}\n localized={localized}\n path={path}\n readOnly={readOnly}\n />\n {BeforeInput}\n {(rows?.length > 0 || (!valid && (showRequired || showMinRows))) && (\n <DraggableSortable\n className={`${baseClass}__draggable-rows`}\n ids={rows.map((row) => row.id)}\n onDragEnd={({ moveFromIndex, moveToIndex }) => moveRow(moveFromIndex, moveToIndex)}\n >\n {rows.map((rowData, i) => {\n const { id: rowID, isLoading } = rowData\n\n const rowPath = `${path}.${i}`\n\n const rowErrorCount = errorPaths?.filter((errorPath) =>\n errorPath.startsWith(rowPath + '.'),\n ).length\n\n return (\n <DraggableSortableItem\n disabled={readOnly || disabled || !isSortable}\n id={rowID}\n key={rowID}\n >\n {(draggableSortableItemProps) => (\n <ArrayRow\n {...draggableSortableItemProps}\n addRow={addRow}\n copyRow={copyRow}\n CustomRowLabel={rows?.[i]?.customComponents?.RowLabel}\n duplicateRow={duplicateRow}\n errorCount={rowErrorCount}\n fields={fields}\n forceRender={forceRender}\n hasMaxRows={hasMaxRows}\n isLoading={isLoading}\n isSortable={isSortable}\n labels={labels}\n moveRow={moveRow}\n parentPath={path}\n pasteRow={pasteRow}\n path={rowPath}\n permissions={permissions}\n readOnly={readOnly || disabled}\n removeRow={removeRow}\n row={rowData}\n rowCount={rows?.length}\n rowIndex={i}\n schemaPath={schemaPath}\n scrollIdPrefix={scrollIdPrefix}\n setCollapse={setCollapse}\n />\n )}\n </DraggableSortableItem>\n )\n })}\n {!valid && (\n <React.Fragment>\n {showRequired && (\n <Banner>\n {t('validation:fieldHasNo', { label: getTranslation(labels.plural, i18n) })}\n </Banner>\n )}\n {showMinRows && (\n <Banner type=\"error\">\n {t('validation:requiresAtLeast', {\n count: minRows,\n label:\n getTranslation(minRows > 1 ? labels.plural : labels.singular, i18n) ||\n t(minRows > 1 ? 'general:rows' : 'general:row'),\n })}\n </Banner>\n )}\n </React.Fragment>\n )}\n </DraggableSortable>\n )}\n {!hasMaxRows && !readOnly && (\n <Button\n buttonStyle=\"icon-label\"\n className={`${baseClass}__add-row`}\n disabled={disabled}\n icon=\"plus\"\n iconPosition=\"left\"\n iconStyle=\"with-border\"\n onClick={() => {\n void addRow(value || 0)\n }}\n >\n {t('fields:addLabel', { label: getTranslation(labels.singular, i18n) })}\n </Button>\n )}\n {AfterInput}\n </div>\n )\n}\n\nexport const ArrayField = withCondition(ArrayFieldComponent)\n", "'use client';\n\nimport React, { forwardRef, isValidElement } from 'react';\nimport ReactDOM from 'react-dom';\n\nimport { CloseIcon, getAsset, Loader } from './assets';\nimport { useIsDocumentHidden } from './hooks';\nimport { toast, ToastState } from './state';\nimport './styles.css';\nimport {\n isAction,\n SwipeDirection,\n type ExternalToast,\n type HeightT,\n type ToasterProps,\n type ToastProps,\n type ToastT,\n type ToastToDismiss,\n} from './types';\n\n// Visible toasts amount\nconst VISIBLE_TOASTS_AMOUNT = 3;\n\n// Viewport padding\nconst VIEWPORT_OFFSET = '32px';\n\n// Mobile viewport padding\nconst MOBILE_VIEWPORT_OFFSET = '16px';\n\n// Default lifetime of a toasts (in ms)\nconst TOAST_LIFETIME = 4000;\n\n// Default toast width\nconst TOAST_WIDTH = 356;\n\n// Default gap between toasts\nconst GAP = 14;\n\n// Threshold to dismiss a toast\nconst SWIPE_THRESHOLD = 20;\n\n// Equal to exit animation duration\nconst TIME_BEFORE_UNMOUNT = 200;\n\nfunction cn(...classes: (string | undefined)[]) {\n return classes.filter(Boolean).join(' ');\n}\n\nfunction getDefaultSwipeDirections(position: string): Array<SwipeDirection> {\n const [y, x] = position.split('-');\n const directions: Array<SwipeDirection> = [];\n\n if (y) {\n directions.push(y as SwipeDirection);\n }\n\n if (x) {\n directions.push(x as SwipeDirection);\n }\n\n return directions;\n}\n\nconst Toast = (props: ToastProps) => {\n const {\n invert: ToasterInvert,\n toast,\n unstyled,\n interacting,\n setHeights,\n visibleToasts,\n heights,\n index,\n toasts,\n expanded,\n removeToast,\n defaultRichColors,\n closeButton: closeButtonFromToaster,\n style,\n cancelButtonStyle,\n actionButtonStyle,\n className = '',\n descriptionClassName = '',\n duration: durationFromToaster,\n position,\n gap,\n loadingIcon: loadingIconProp,\n expandByDefault,\n classNames,\n icons,\n closeButtonAriaLabel = 'Close toast',\n pauseWhenPageIsHidden,\n } = props;\n const [swipeDirection, setSwipeDirection] = React.useState<'x' | 'y' | null>(null);\n const [swipeOutDirection, setSwipeOutDirection] = React.useState<'left' | 'right' | 'up' | 'down' | null>(null);\n const [mounted, setMounted] = React.useState(false);\n const [removed, setRemoved] = React.useState(false);\n const [swiping, setSwiping] = React.useState(false);\n const [swipeOut, setSwipeOut] = React.useState(false);\n const [isSwiped, setIsSwiped] = React.useState(false);\n const [offsetBeforeRemove, setOffsetBeforeRemove] = React.useState(0);\n const [initialHeight, setInitialHeight] = React.useState(0);\n const remainingTime = React.useRef(toast.duration || durationFromToaster || TOAST_LIFETIME);\n const dragStartTime = React.useRef<Date | null>(null);\n const toastRef = React.useRef<HTMLLIElement>(null);\n const isFront = index === 0;\n const isVisible = index + 1 <= visibleToasts;\n const toastType = toast.type;\n const dismissible = toast.dismissible !== false;\n const toastClassname = toast.className || '';\n const toastDescriptionClassname = toast.descriptionClassName || '';\n // Height index is used to calculate the offset as it gets updated before the toast array, which means we can calculate the new layout faster.\n const heightIndex = React.useMemo(\n () => heights.findIndex((height) => height.toastId === toast.id) || 0,\n [heights, toast.id],\n );\n const closeButton = React.useMemo(\n () => toast.closeButton ?? closeButtonFromToaster,\n [toast.closeButton, closeButtonFromToaster],\n );\n const duration = React.useMemo(\n () => toast.duration || durationFromToaster || TOAST_LIFETIME,\n [toast.duration, durationFromToaster],\n );\n const closeTimerStartTimeRef = React.useRef(0);\n const offset = React.useRef(0);\n const lastCloseTimerStartTimeRef = React.useRef(0);\n const pointerStartRef = React.useRef<{ x: number; y: number } | null>(null);\n const [y, x] = position.split('-');\n const toastsHeightBefore = React.useMemo(() => {\n return heights.reduce((prev, curr, reducerIndex) => {\n // Calculate offset up until current toast\n if (reducerIndex >= heightIndex) {\n return prev;\n }\n\n return prev + curr.height;\n }, 0);\n }, [heights, heightIndex]);\n const isDocumentHidden = useIsDocumentHidden();\n\n const invert = toast.invert || ToasterInvert;\n const disabled = toastType === 'loading';\n\n offset.current = React.useMemo(() => heightIndex * gap + toastsHeightBefore, [heightIndex, toastsHeightBefore]);\n\n React.useEffect(() => {\n remainingTime.current = duration;\n }, [duration]);\n\n React.useEffect(() => {\n // Trigger enter animation without using CSS animation\n setMounted(true);\n }, []);\n\n React.useEffect(() => {\n const toastNode = toastRef.current;\n if (toastNode) {\n const height = toastNode.getBoundingClientRect().height;\n // Add toast height to heights array after the toast is mounted\n setInitialHeight(height);\n setHeights((h) => [{ toastId: toast.id, height, position: toast.position }, ...h]);\n return () => setHeights((h) => h.filter((height) => height.toastId !== toast.id));\n }\n }, [setHeights, toast.id]);\n\n React.useLayoutEffect(() => {\n if (!mounted) return;\n const toastNode = toastRef.current;\n const originalHeight = toastNode.style.height;\n toastNode.style.height = 'auto';\n const newHeight = toastNode.getBoundingClientRect().height;\n toastNode.style.height = originalHeight;\n\n setInitialHeight(newHeight);\n\n setHeights((heights) => {\n const alreadyExists = heights.find((height) => height.toastId === toast.id);\n if (!alreadyExists) {\n return [{ toastId: toast.id, height: newHeight, position: toast.position }, ...heights];\n } else {\n return heights.map((height) => (height.toastId === toast.id ? { ...height, height: newHeight } : height));\n }\n });\n }, [mounted, toast.title, toast.description, setHeights, toast.id]);\n\n const deleteToast = React.useCallback(() => {\n // Save the offset for the exit swipe animation\n setRemoved(true);\n setOffsetBeforeRemove(offset.current);\n setHeights((h) => h.filter((height) => height.toastId !== toast.id));\n\n setTimeout(() => {\n removeToast(toast);\n }, TIME_BEFORE_UNMOUNT);\n }, [toast, removeToast, setHeights, offset]);\n\n React.useEffect(() => {\n if ((toast.promise && toastType === 'loading') || toast.duration === Infinity || toast.type === 'loading') return;\n let timeoutId: NodeJS.Timeout;\n\n // Pause the timer on each hover\n const pauseTimer = () => {\n if (lastCloseTimerStartTimeRef.current < closeTimerStartTimeRef.current) {\n // Get the elapsed time since the timer started\n const elapsedTime = new Date().getTime() - closeTimerStartTimeRef.current;\n\n remainingTime.current = remainingTime.current - elapsedTime;\n }\n\n lastCloseTimerStartTimeRef.current = new Date().getTime();\n };\n\n const startTimer = () => {\n // setTimeout(, Infinity) behaves as if the delay is 0.\n // As a result, the toast would be closed immediately, giving the appearance that it was never rendered.\n // See: https://github.com/denysdovhan/wtfjs?tab=readme-ov-file#an-infinite-timeout\n if (remainingTime.current === Infinity) return;\n\n closeTimerStartTimeRef.current = new Date().getTime();\n\n // Let the toast know it has started\n timeoutId = setTimeout(() => {\n toast.onAutoClose?.(toast);\n deleteToast();\n }, remainingTime.current);\n };\n\n if (expanded || interacting || (pauseWhenPageIsHidden && isDocumentHidden)) {\n pauseTimer();\n } else {\n startTimer();\n }\n\n return () => clearTimeout(timeoutId);\n }, [expanded, interacting, toast, toastType, pauseWhenPageIsHidden, isDocumentHidden, deleteToast]);\n\n React.useEffect(() => {\n if (toast.delete) {\n deleteToast();\n }\n }, [deleteToast, toast.delete]);\n\n function getLoadingIcon() {\n if (icons?.loading) {\n return (\n <div\n className={cn(classNames?.loader, toast?.classNames?.loader, 'sonner-loader')}\n data-visible={toastType === 'loading'}\n >\n {icons.loading}\n </div>\n );\n }\n\n if (loadingIconProp) {\n return (\n <div\n className={cn(classNames?.loader, toast?.classNames?.loader, 'sonner-loader')}\n data-visible={toastType === 'loading'}\n >\n {loadingIconProp}\n </div>\n );\n }\n return <Loader className={cn(classNames?.loader, toast?.classNames?.loader)} visible={toastType === 'loading'} />;\n }\n\n return (\n <li\n tabIndex={0}\n ref={toastRef}\n className={cn(\n className,\n toastClassname,\n classNames?.toast,\n toast?.classNames?.toast,\n classNames?.default,\n classNames?.[toastType],\n toast?.classNames?.[toastType],\n )}\n data-sonner-toast=\"\"\n data-rich-colors={toast.richColors ?? defaultRichColors}\n data-styled={!Boolean(toast.jsx || toast.unstyled || unstyled)}\n data-mounted={mounted}\n data-promise={Boolean(toast.promise)}\n data-swiped={isSwiped}\n data-removed={removed}\n data-visible={isVisible}\n data-y-position={y}\n data-x-position={x}\n data-index={index}\n data-front={isFront}\n data-swiping={swiping}\n data-dismissible={dismissible}\n data-type={toastType}\n data-invert={invert}\n data-swipe-out={swipeOut}\n data-swipe-direction={swipeOutDirection}\n data-expanded={Boolean(expanded || (expandByDefault && mounted))}\n style={\n {\n '--index': index,\n '--toasts-before': index,\n '--z-index': toasts.length - index,\n '--offset': `${removed ? offsetBeforeRemove : offset.current}px`,\n '--initial-height': expandByDefault ? 'auto' : `${initialHeight}px`,\n ...style,\n ...toast.style,\n } as React.CSSProperties\n }\n onDragEnd={() => {\n setSwiping(false);\n setSwipeDirection(null);\n pointerStartRef.current = null;\n }}\n onPointerDown={(event) => {\n if (disabled || !dismissible) return;\n dragStartTime.current = new Date();\n setOffsetBeforeRemove(offset.current);\n // Ensure we maintain correct pointer capture even when going outside of the toast (e.g. when swiping)\n (event.target as HTMLElement).setPointerCapture(event.pointerId);\n if ((event.target as HTMLElement).tagName === 'BUTTON') return;\n setSwiping(true);\n pointerStartRef.current = { x: event.clientX, y: event.clientY };\n }}\n onPointerUp={() => {\n if (swipeOut || !dismissible) return;\n\n pointerStartRef.current = null;\n const swipeAmountX = Number(\n toastRef.current?.style.getPropertyValue('--swipe-amount-x').replace('px', '') || 0,\n );\n const swipeAmountY = Number(\n toastRef.current?.style.getPropertyValue('--swipe-amount-y').replace('px', '') || 0,\n );\n const timeTaken = new Date().getTime() - dragStartTime.current?.getTime();\n\n const swipeAmount = swipeDirection === 'x' ? swipeAmountX : swipeAmountY;\n const velocity = Math.abs(swipeAmount) / timeTaken;\n\n if (Math.abs(swipeAmount) >= SWIPE_THRESHOLD || velocity > 0.11) {\n setOffsetBeforeRemove(offset.current);\n toast.onDismiss?.(toast);\n\n if (swipeDirection === 'x') {\n setSwipeOutDirection(swipeAmountX > 0 ? 'right' : 'left');\n } else {\n setSwipeOutDirection(swipeAmountY > 0 ? 'down' : 'up');\n }\n\n deleteToast();\n setSwipeOut(true);\n setIsSwiped(false);\n return;\n }\n\n setSwiping(false);\n setSwipeDirection(null);\n }}\n onPointerMove={(event) => {\n if (!pointerStartRef.current || !dismissible) return;\n\n const isHighlighted = window.getSelection()?.toString().length > 0;\n if (isHighlighted) return;\n\n const yDelta = event.clientY - pointerStartRef.current.y;\n const xDelta = event.clientX - pointerStartRef.current.x;\n\n const swipeDirections = props.swipeDirections ?? getDefaultSwipeDirections(position);\n\n // Determine swipe direction if not already locked\n if (!swipeDirection && (Math.abs(xDelta) > 1 || Math.abs(yDelta) > 1)) {\n setSwipeDirection(Math.abs(xDelta) > Math.abs(yDelta) ? 'x' : 'y');\n }\n\n let swipeAmount = { x: 0, y: 0 };\n\n // Only apply swipe in the locked direction\n if (swipeDirection === 'y') {\n // Handle vertical swipes\n if (swipeDirections.includes('top') || swipeDirections.includes('bottom')) {\n if (swipeDirections.includes('top') && yDelta < 0) {\n swipeAmount.y = yDelta;\n } else if (swipeDirections.includes('bottom') && yDelta > 0) {\n swipeAmount.y = yDelta;\n }\n }\n } else if (swipeDirection === 'x') {\n // Handle horizontal swipes\n if (swipeDirections.includes('left') || swipeDirections.includes('right')) {\n if (swipeDirections.includes('left') && xDelta < 0) {\n swipeAmount.x = xDelta;\n } else if (swipeDirections.includes('right') && xDelta > 0) {\n swipeAmount.x = xDelta;\n }\n }\n }\n\n if (Math.abs(swipeAmount.x) > 0 || Math.abs(swipeAmount.y) > 0) {\n setIsSwiped(true);\n }\n\n // Apply transform using both x and y values\n toastRef.current?.style.setProperty('--swipe-amount-x', `${swipeAmount.x}px`);\n toastRef.current?.style.setProperty('--swipe-amount-y', `${swipeAmount.y}px`);\n }}\n >\n {closeButton && !toast.jsx ? (\n <button\n aria-label={closeButtonAriaLabel}\n data-disabled={disabled}\n data-close-button\n onClick={\n disabled || !dismissible\n ? () => {}\n : () => {\n deleteToast();\n toast.onDismiss?.(toast);\n }\n }\n className={cn(classNames?.closeButton, toast?.classNames?.closeButton)}\n >\n {icons?.close ?? CloseIcon}\n </button>\n ) : null}\n {/* TODO: This can be cleaner */}\n {toast.jsx || isValidElement(toast.title) ? (\n toast.jsx ? (\n toast.jsx\n ) : typeof toast.title === 'function' ? (\n toast.title()\n ) : (\n toast.title\n )\n ) : (\n <>\n {toastType || toast.icon || toast.promise ? (\n <div data-icon=\"\" className={cn(classNames?.icon, toast?.classNames?.icon)}>\n {toast.promise || (toast.type === 'loading' && !toast.icon) ? toast.icon || getLoadingIcon() : null}\n {toast.type !== 'loading' ? toast.icon || icons?.[toastType] || getAsset(toastType) : null}\n </div>\n ) : null}\n\n <div data-content=\"\" className={cn(classNames?.content, toast?.classNames?.content)}>\n <div data-title=\"\" className={cn(classNames?.title, toast?.classNames?.title)}>\n {typeof toast.title === 'function' ? toast.title() : toast.title}\n </div>\n {toast.description ? (\n <div\n data-description=\"\"\n className={cn(\n descriptionClassName,\n toastDescriptionClassname,\n classNames?.description,\n toast?.classNames?.description,\n )}\n >\n {typeof toast.description === 'function' ? toast.description() : toast.description}\n </div>\n ) : null}\n </div>\n {isValidElement(toast.cancel) ? (\n toast.cancel\n ) : toast.cancel && isAction(toast.cancel) ? (\n <button\n data-button\n data-cancel\n style={toast.cancelButtonStyle || cancelButtonStyle}\n onClick={(event) => {\n // We need to check twice because typescript\n if (!isAction(toast.cancel)) return;\n if (!dismissible) return;\n toast.cancel.onClick?.(event);\n deleteToast();\n }}\n className={cn(classNames?.cancelButton, toast?.classNames?.cancelButton)}\n >\n {toast.cancel.label}\n </button>\n ) : null}\n {isValidElement(toast.action) ? (\n toast.action\n ) : toast.action && isAction(toast.action) ? (\n <button\n data-button\n data-action\n style={toast.actionButtonStyle || actionButtonStyle}\n onClick={(event) => {\n // We need to check twice because typescript\n if (!isAction(toast.action)) return;\n toast.action.onClick?.(event);\n if (event.defaultPrevented) return;\n deleteToast();\n }}\n className={cn(classNames?.actionButton, toast?.classNames?.actionButton)}\n >\n {toast.action.label}\n </button>\n ) : null}\n </>\n )}\n </li>\n );\n};\n\nfunction getDocumentDirection(): ToasterProps['dir'] {\n if (typeof window === 'undefined') return 'ltr';\n if (typeof document === 'undefined') return 'ltr'; // For Fresh purpose\n\n const dirAttribute = document.documentElement.getAttribute('dir');\n\n if (dirAttribute === 'auto' || !dirAttribute) {\n return window.getComputedStyle(document.documentElement).direction as ToasterProps['dir'];\n }\n\n return dirAttribute as ToasterProps['dir'];\n}\n\nfunction assignOffset(defaultOffset: ToasterProps['offset'], mobileOffset: ToasterProps['mobileOffset']) {\n const styles = {} as React.CSSProperties;\n\n [defaultOffset, mobileOffset].forEach((offset, index) => {\n const isMobile = index === 1;\n const prefix = isMobile ? '--mobile-offset' : '--offset';\n const defaultValue = isMobile ? MOBILE_VIEWPORT_OFFSET : VIEWPORT_OFFSET;\n\n function assignAll(offset: string | number) {\n ['top', 'right', 'bottom', 'left'].forEach((key) => {\n styles[`${prefix}-${key}`] = typeof offset === 'number' ? `${offset}px` : offset;\n });\n }\n\n if (typeof offset === 'number' || typeof offset === 'string') {\n assignAll(offset);\n } else if (typeof offset === 'object') {\n ['top', 'right', 'bottom', 'left'].forEach((key) => {\n if (offset[key] === undefined) {\n styles[`${prefix}-${key}`] = defaultValue;\n } else {\n styles[`${prefix}-${key}`] = typeof offset[key] === 'number' ? `${offset[key]}px` : offset[key];\n }\n });\n } else {\n assignAll(defaultValue);\n }\n });\n\n return styles;\n}\n\nfunction useSonner() {\n const [activeToasts, setActiveToasts] = React.useState<ToastT[]>([]);\n\n React.useEffect(() => {\n return ToastState.subscribe((toast) => {\n if ((toast as ToastToDismiss).dismiss) {\n setTimeout(() => {\n ReactDOM.flushSync(() => {\n setActiveToasts((toasts) => toasts.filter((t) => t.id !== toast.id));\n });\n });\n return;\n }\n\n // Prevent batching, temp solution.\n setTimeout(() => {\n ReactDOM.flushSync(() => {\n setActiveToasts((toasts) => {\n const indexOfExistingToast = toasts.findIndex((t) => t.id === toast.id);\n\n // Update the toast if it already exists\n if (indexOfExistingToast !== -1) {\n return [\n ...toasts.slice(0, indexOfExistingToast),\n { ...toasts[indexOfExistingToast], ...toast },\n ...toasts.slice(indexOfExistingToast + 1),\n ];\n }\n\n return [toast, ...toasts];\n });\n });\n });\n });\n }, []);\n\n return {\n toasts: activeToasts,\n };\n}\n\nconst Toaster = forwardRef<HTMLElement, ToasterProps>(function Toaster(props, ref) {\n const {\n invert,\n position = 'bottom-right',\n hotkey = ['altKey', 'KeyT'],\n expand,\n closeButton,\n className,\n offset,\n mobileOffset,\n theme = 'light',\n richColors,\n duration,\n style,\n visibleToasts = VISIBLE_TOASTS_AMOUNT,\n toastOptions,\n dir = getDocumentDirection(),\n gap = GAP,\n loadingIcon,\n icons,\n containerAriaLabel = 'Notifications',\n pauseWhenPageIsHidden,\n } = props;\n const [toasts, setToasts] = React.useState<ToastT[]>([]);\n const possiblePositions = React.useMemo(() => {\n return Array.from(\n new Set([position].concat(toasts.filter((toast) => toast.position).map((toast) => toast.position))),\n );\n }, [toasts, position]);\n const [heights, setHeights] = React.useState<HeightT[]>([]);\n const [expanded, setExpanded] = React.useState(false);\n const [interacting, setInteracting] = React.useState(false);\n const [actualTheme, setActualTheme] = React.useState(\n theme !== 'system'\n ? theme\n : typeof window !== 'undefined'\n ? window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches\n ? 'dark'\n : 'light'\n : 'light',\n );\n\n const listRef = React.useRef<HTMLOListElement>(null);\n const hotkeyLabel = hotkey.join('+').replace(/Key/g, '').replace(/Digit/g, '');\n const lastFocusedElementRef = React.useRef<HTMLElement>(null);\n const isFocusWithinRef = React.useRef(false);\n\n const removeToast = React.useCallback((toastToRemove: ToastT) => {\n setToasts((toasts) => {\n if (!toasts.find((toast) => toast.id === toastToRemove.id)?.delete) {\n ToastState.dismiss(toastToRemove.id);\n }\n\n return toasts.filter(({ id }) => id !== toastToRemove.id);\n });\n }, []);\n\n React.useEffect(() => {\n return ToastState.subscribe((toast) => {\n if ((toast as ToastToDismiss).dismiss) {\n setToasts((toasts) => toasts.map((t) => (t.id === toast.id ? { ...t, delete: true } : t)));\n return;\n }\n\n // Prevent batching, temp solution.\n setTimeout(() => {\n ReactDOM.flushSync(() => {\n setToasts((toasts) => {\n const indexOfExistingToast = toasts.findIndex((t) => t.id === toast.id);\n\n // Update the toast if it already exists\n if (indexOfExistingToast !== -1) {\n return [\n ...toasts.slice(0, indexOfExistingToast),\n { ...toasts[indexOfExistingToast], ...toast },\n ...toasts.slice(indexOfExistingToast + 1),\n ];\n }\n\n return [toast, ...toasts];\n });\n });\n });\n });\n }, []);\n\n React.useEffect(() => {\n if (theme !== 'system') {\n setActualTheme(theme);\n return;\n }\n\n if (theme === 'system') {\n // check if current preference is dark\n if (window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches) {\n // it's currently dark\n setActualTheme('dark');\n } else {\n // it's not dark\n setActualTheme('light');\n }\n }\n\n if (typeof window === 'undefined') return;\n const darkMediaQuery = window.matchMedia('(prefers-color-scheme: dark)');\n\n try {\n // Chrome & Firefox\n darkMediaQuery.addEventListener('change', ({ matches }) => {\n if (matches) {\n setActualTheme('dark');\n } else {\n setActualTheme('light');\n }\n });\n } catch (error) {\n // Safari < 14\n darkMediaQuery.addListener(({ matches }) => {\n try {\n if (matches) {\n setActualTheme('dark');\n } else {\n setActualTheme('light');\n }\n } catch (e) {\n console.error(e);\n }\n });\n }\n }, [theme]);\n\n React.useEffect(() => {\n // Ensure expanded is always false when no toasts are present / only one left\n if (toasts.length <= 1) {\n setExpanded(false);\n }\n }, [toasts]);\n\n React.useEffect(() => {\n const handleKeyDown = (event: KeyboardEvent) => {\n const isHotkeyPressed = hotkey.every((key) => (event as any)[key] || event.code === key);\n\n if (isHotkeyPressed) {\n setExpanded(true);\n listRef.current?.focus();\n }\n\n if (\n event.code === 'Escape' &&\n (document.activeElement === listRef.current || listRef.current?.contains(document.activeElement))\n ) {\n setExpanded(false);\n }\n };\n document.addEventListener('keydown', handleKeyDown);\n\n return () => document.removeEventListener('keydown', handleKeyDown);\n }, [hotkey]);\n\n React.useEffect(() => {\n if (listRef.current) {\n return () => {\n if (lastFocusedElementRef.current) {\n lastFocusedElementRef.current.focus({ preventScroll: true });\n lastFocusedElementRef.current = null;\n isFocusWithinRef.current = false;\n }\n };\n }\n }, [listRef.current]);\n\n return (\n // Remove item from normal navigation flow, only available via hotkey\n <section\n ref={ref}\n aria-label={`${containerAriaLabel} ${hotkeyLabel}`}\n tabIndex={-1}\n aria-live=\"polite\"\n aria-relevant=\"additions text\"\n aria-atomic=\"false\"\n suppressHydrationWarning\n >\n {possiblePositions.map((position, index) => {\n const [y, x] = position.split('-');\n\n if (!toasts.length) return null;\n\n return (\n <ol\n key={position}\n dir={dir === 'auto' ? getDocumentDirection() : dir}\n tabIndex={-1}\n ref={listRef}\n className={className}\n data-sonner-toaster\n data-theme={actualTheme}\n data-y-position={y}\n data-lifted={expanded && toasts.length > 1 && !expand}\n data-x-position={x}\n style={\n {\n '--front-toast-height': `${heights[0]?.height || 0}px`,\n '--width': `${TOAST_WIDTH}px`,\n '--gap': `${gap}px`,\n ...style,\n ...assignOffset(offset, mobileOffset),\n } as React.CSSProperties\n }\n onBlur={(event) => {\n if (isFocusWithinRef.current && !event.currentTarget.contains(event.relatedTarget)) {\n isFocusWithinRef.current = false;\n if (lastFocusedElementRef.current) {\n lastFocusedElementRef.current.focus({ preventScroll: true });\n lastFocusedElementRef.current = null;\n }\n }\n }}\n onFocus={(event) => {\n const isNotDismissible =\n event.target instanceof HTMLElement && event.target.dataset.dismissible === 'false';\n\n if (isNotDismissible) return;\n\n if (!isFocusWithinRef.current) {\n isFocusWithinRef.current = true;\n lastFocusedElementRef.current = event.relatedTarget as HTMLElement;\n }\n }}\n onMouseEnter={() => setExpanded(true)}\n onMouseMove={() => setExpanded(true)}\n onMouseLeave={() => {\n // Avoid setting expanded to false when interacting with a toast, e.g. swiping\n if (!interacting) {\n setExpanded(false);\n }\n }}\n onDragEnd={() => setExpanded(false)}\n onPointerDown={(event) => {\n const isNotDismissible =\n event.target instanceof HTMLElement && event.target.dataset.dismissible === 'false';\n\n if (isNotDismissible) return;\n setInteracting(true);\n }}\n onPointerUp={() => setInteracting(false)}\n >\n {toasts\n .filter((toast) => (!toast.position && index === 0) || toast.position === position)\n .map((toast, index) => (\n <Toast\n key={toast.id}\n icons={icons}\n index={index}\n toast={toast}\n defaultRichColors={richColors}\n duration={toastOptions?.duration ?? duration}\n className={toastOptions?.className}\n descriptionClassName={toastOptions?.descriptionClassName}\n invert={invert}\n visibleToasts={visibleToasts}\n closeButton={toastOptions?.closeButton ?? closeButton}\n interacting={interacting}\n position={position}\n style={toastOptions?.style}\n unstyled={toastOptions?.unstyled}\n classNames={toastOptions?.classNames}\n cancelButtonStyle={toastOptions?.cancelButtonStyle}\n actionButtonStyle={toastOptions?.actionButtonStyle}\n removeToast={removeToast}\n toasts={toasts.filter((t) => t.position == toast.position)}\n heights={heights.filter((h) => h.position == toast.position)}\n setHeights={setHeights}\n expandByDefault={expand}\n gap={gap}\n loadingIcon={loadingIcon}\n expanded={expanded}\n pauseWhenPageIsHidden={pauseWhenPageIsHidden}\n swipeDirections={props.swipeDirections}\n />\n ))}\n </ol>\n );\n })}\n </section>\n );\n});\nexport { toast, Toaster, type ExternalToast, type ToastT, type ToasterProps, useSonner };\nexport { type ToastClassnames, type ToastToDismiss, type Action } from './types';\n", "'use client';\nimport React from 'react';\nimport type { ToastTypes } from './types';\n\nexport const getAsset = (type: ToastTypes): JSX.Element | null => {\n switch (type) {\n case 'success':\n return SuccessIcon;\n\n case 'info':\n return InfoIcon;\n\n case 'warning':\n return WarningIcon;\n\n case 'error':\n return ErrorIcon;\n\n default:\n return null;\n }\n};\n\nconst bars = Array(12).fill(0);\n\nexport const Loader = ({ visible, className }: { visible: boolean, className?: string }) => {\n return (\n <div className={['sonner-loading-wrapper', className].filter(Boolean).join(' ')} data-visible={visible}>\n <div className=\"sonner-spinner\">\n {bars.map((_, i) => (\n <div className=\"sonner-loading-bar\" key={`spinner-bar-${i}`} />\n ))}\n </div>\n </div>\n );\n};\n\nconst SuccessIcon = (\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 20 20\" fill=\"currentColor\" height=\"20\" width=\"20\">\n <path\n fillRule=\"evenodd\"\n d=\"M10 18a8 8 0 100-16 8 8 0 000 16zm3.857-9.809a.75.75 0 00-1.214-.882l-3.483 4.79-1.88-1.88a.75.75 0 10-1.06 1.061l2.5 2.5a.75.75 0 001.137-.089l4-5.5z\"\n clipRule=\"evenodd\"\n />\n </svg>\n);\n\nconst WarningIcon = (\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\" height=\"20\" width=\"20\">\n <path\n fillRule=\"evenodd\"\n d=\"M9.401 3.003c1.155-2 4.043-2 5.197 0l7.355 12.748c1.154 2-.29 4.5-2.599 4.5H4.645c-2.309 0-3.752-2.5-2.598-4.5L9.4 3.003zM12 8.25a.75.75 0 01.75.75v3.75a.75.75 0 01-1.5 0V9a.75.75 0 01.75-.75zm0 8.25a.75.75 0 100-1.5.75.75 0 000 1.5z\"\n clipRule=\"evenodd\"\n />\n </svg>\n);\n\nconst InfoIcon = (\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 20 20\" fill=\"currentColor\" height=\"20\" width=\"20\">\n <path\n fillRule=\"evenodd\"\n d=\"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7-4a1 1 0 11-2 0 1 1 0 012 0zM9 9a.75.75 0 000 1.5h.253a.25.25 0 01.244.304l-.459 2.066A1.75 1.75 0 0010.747 15H11a.75.75 0 000-1.5h-.253a.25.25 0 01-.244-.304l.459-2.066A1.75 1.75 0 009.253 9H9z\"\n clipRule=\"evenodd\"\n />\n </svg>\n);\n\nconst ErrorIcon = (\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 20 20\" fill=\"currentColor\" height=\"20\" width=\"20\">\n <path\n fillRule=\"evenodd\"\n d=\"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-8-5a.75.75 0 01.75.75v4.5a.75.75 0 01-1.5 0v-4.5A.75.75 0 0110 5zm0 10a1 1 0 100-2 1 1 0 000 2z\"\n clipRule=\"evenodd\"\n />\n </svg>\n);\n\nexport const CloseIcon = (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"12\"\n height=\"12\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\"></line>\n <line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\"></line>\n </svg>\n);\n", "import React from 'react';\n\nexport const useIsDocumentHidden = () => {\n const [isDocumentHidden, setIsDocumentHidden] = React.useState(document.hidden);\n\n React.useEffect(() => {\n const callback = () => {\n setIsDocumentHidden(document.hidden);\n };\n document.addEventListener('visibilitychange', callback);\n return () => window.removeEventListener('visibilitychange', callback);\n }, []);\n\n return isDocumentHidden;\n};\n", "import type { ExternalToast, PromiseData, PromiseT, ToastT, ToastToDismiss, ToastTypes } from './types';\n\nimport React from 'react';\n\nlet toastsCounter = 1;\n\ntype titleT = (() => React.ReactNode) | React.ReactNode;\n\nclass Observer {\n subscribers: Array<(toast: ExternalToast | ToastToDismiss) => void>;\n toasts: Array<ToastT | ToastToDismiss>;\n dismissedToasts: Set<string | number>;\n\n constructor() {\n this.subscribers = [];\n this.toasts = [];\n this.dismissedToasts = new Set();\n }\n\n // We use arrow functions to maintain the correct `this` reference\n subscribe = (subscriber: (toast: ToastT | ToastToDismiss) => void) => {\n this.subscribers.push(subscriber);\n\n return () => {\n const index = this.subscribers.indexOf(subscriber);\n this.subscribers.splice(index, 1);\n };\n };\n\n publish = (data: ToastT) => {\n this.subscribers.forEach((subscriber) => subscriber(data));\n };\n\n addToast = (data: ToastT) => {\n this.publish(data);\n this.toasts = [...this.toasts, data];\n };\n\n create = (\n data: ExternalToast & {\n message?: titleT;\n type?: ToastTypes;\n promise?: PromiseT;\n jsx?: React.ReactElement;\n },\n ) => {\n const { message, ...rest } = data;\n const id = typeof data?.id === 'number' || data.id?.length > 0 ? data.id : toastsCounter++;\n const alreadyExists = this.toasts.find((toast) => {\n return toast.id === id;\n });\n const dismissible = data.dismissible === undefined ? true : data.dismissible;\n\n if (this.dismissedToasts.has(id)) {\n this.dismissedToasts.delete(id);\n }\n\n if (alreadyExists) {\n this.toasts = this.toasts.map((toast) => {\n if (toast.id === id) {\n this.publish({ ...toast, ...data, id, title: message });\n return {\n ...toast,\n ...data,\n id,\n dismissible,\n title: message,\n };\n }\n\n return toast;\n });\n } else {\n this.addToast({ title: message, ...rest, dismissible, id });\n }\n\n return id;\n };\n\n dismiss = (id?: number | string) => {\n this.dismissedToasts.add(id);\n\n if (!id) {\n this.toasts.forEach((toast) => {\n this.subscribers.forEach((subscriber) => subscriber({ id: toast.id, dismiss: true }));\n });\n }\n this.subscribers.forEach((subscriber) => subscriber({ id, dismiss: true }));\n return id;\n };\n\n message = (message: titleT | React.ReactNode, data?: ExternalToast) => {\n return this.create({ ...data, message });\n };\n\n error = (message: titleT | React.ReactNode, data?: ExternalToast) => {\n return this.create({ ...data, message, type: 'error' });\n };\n\n success = (message: titleT | React.ReactNode, data?: ExternalToast) => {\n return this.create({ ...data, type: 'success', message });\n };\n\n info = (message: titleT | React.ReactNode, data?: ExternalToast) => {\n return this.create({ ...data, type: 'info', message });\n };\n\n warning = (message: titleT | React.ReactNode, data?: ExternalToast) => {\n return this.create({ ...data, type: 'warning', message });\n };\n\n loading = (message: titleT | React.ReactNode, data?: ExternalToast) => {\n return this.create({ ...data, type: 'loading', message });\n };\n\n promise = <ToastData>(promise: PromiseT<ToastData>, data?: PromiseData<ToastData>) => {\n if (!data) {\n // Nothing to show\n return;\n }\n\n let id: string | number | undefined = undefined;\n if (data.loading !== undefined) {\n id = this.create({\n ...data,\n promise,\n type: 'loading',\n message: data.loading,\n description: typeof data.description !== 'function' ? data.description : undefined,\n });\n }\n\n const p = promise instanceof Promise ? promise : promise();\n\n let shouldDismiss = id !== undefined;\n let result: ['resolve', ToastData] | ['reject', unknown];\n\n const originalPromise = p\n .then(async (response) => {\n result = ['resolve', response];\n const isReactElementResponse = React.isValidElement(response);\n if (isReactElementResponse) {\n shouldDismiss = false;\n this.create({ id, type: 'default', message: response });\n } else if (isHttpResponse(response) && !response.ok) {\n shouldDismiss = false;\n const message =\n typeof data.error === 'function' ? await data.error(`HTTP error! status: ${response.status}`) : data.error;\n const description =\n typeof data.description === 'function'\n ? await data.description(`HTTP error! status: ${response.status}`)\n : data.description;\n this.create({ id, type: 'error', message, description });\n } else if (data.success !== undefined) {\n shouldDismiss = false;\n const message = typeof data.success === 'function' ? await data.success(response) : data.success;\n const description =\n typeof data.description === 'function' ? await data.description(response) : data.description;\n this.create({ id, type: 'success', message, description });\n }\n })\n .catch(async (error) => {\n result = ['reject', error];\n if (data.error !== undefined) {\n shouldDismiss = false;\n const message = typeof data.error === 'function' ? await data.error(error) : data.error;\n const description = typeof data.description === 'function' ? await data.description(error) : data.description;\n this.create({ id, type: 'error', message, description });\n }\n })\n .finally(() => {\n if (shouldDismiss) {\n // Toast is still in load state (and will be indefinitely — dismiss it)\n this.dismiss(id);\n id = undefined;\n }\n\n data.finally?.();\n });\n\n const unwrap = () =>\n new Promise<ToastData>((resolve, reject) =>\n originalPromise.then(() => (result[0] === 'reject' ? reject(result[1]) : resolve(result[1]))).catch(reject),\n );\n\n if (typeof id !== 'string' && typeof id !== 'number') {\n // cannot Object.assign on undefined\n return { unwrap };\n } else {\n return Object.assign(id, { unwrap });\n }\n };\n\n custom = (jsx: (id: number | string) => React.ReactElement, data?: ExternalToast) => {\n const id = data?.id || toastsCounter++;\n this.create({ jsx: jsx(id), id, ...data });\n return id;\n };\n\n getActiveToasts = () => {\n return this.toasts.filter((toast) => !this.dismissedToasts.has(toast.id));\n };\n}\n\nexport const ToastState = new Observer();\n\n// bind this to the toast function\nconst toastFunction = (message: titleT, data?: ExternalToast) => {\n const id = data?.id || toastsCounter++;\n\n ToastState.addToast({\n title: message,\n ...data,\n id,\n });\n return id;\n};\n\nconst isHttpResponse = (data: any): data is Response => {\n return (\n data &&\n typeof data === 'object' &&\n 'ok' in data &&\n typeof data.ok === 'boolean' &&\n 'status' in data &&\n typeof data.status === 'number'\n );\n};\n\nconst basicToast = toastFunction;\n\nconst getHistory = () => ToastState.toasts;\nconst getToasts = () => ToastState.getActiveToasts();\n\n// We use `Object.assign` to maintain the correct types as we would lose them otherwise\nexport const toast = Object.assign(\n basicToast,\n {\n success: ToastState.success,\n info: ToastState.info,\n warning: ToastState.warning,\n error: ToastState.error,\n custom: ToastState.custom,\n message: ToastState.message,\n promise: ToastState.promise,\n dismiss: ToastState.dismiss,\n loading: ToastState.loading,\n },\n { getHistory, getToasts },\n);\n", "\n export default function styleInject(css, { insertAt } = {}) {\n if (!css || typeof document === 'undefined') return\n \n const head = document.head || document.getElementsByTagName('head')[0]\n const style = document.createElement('style')\n style.type = 'text/css'\n \n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild)\n } else {\n head.appendChild(style)\n }\n } else {\n head.appendChild(style)\n }\n \n if (style.styleSheet) {\n style.styleSheet.cssText = css\n } else {\n style.appendChild(document.createTextNode(css))\n }\n }\n ", "import styleInject from '#style-inject';styleInject(\":where(html[dir=\\\"ltr\\\"]),:where([data-sonner-toaster][dir=\\\"ltr\\\"]){--toast-icon-margin-start: -3px;--toast-icon-margin-end: 4px;--toast-svg-margin-start: -1px;--toast-svg-margin-end: 0px;--toast-button-margin-start: auto;--toast-button-margin-end: 0;--toast-close-button-start: 0;--toast-close-button-end: unset;--toast-close-button-transform: translate(-35%, -35%)}:where(html[dir=\\\"rtl\\\"]),:where([data-sonner-toaster][dir=\\\"rtl\\\"]){--toast-icon-margin-start: 4px;--toast-icon-margin-end: -3px;--toast-svg-margin-start: 0px;--toast-svg-margin-end: -1px;--toast-button-margin-start: 0;--toast-button-margin-end: auto;--toast-close-button-start: unset;--toast-close-button-end: 0;--toast-close-button-transform: translate(35%, -35%)}:where([data-sonner-toaster]){position:fixed;width:var(--width);font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;--gray1: hsl(0, 0%, 99%);--gray2: hsl(0, 0%, 97.3%);--gray3: hsl(0, 0%, 95.1%);--gray4: hsl(0, 0%, 93%);--gray5: hsl(0, 0%, 90.9%);--gray6: hsl(0, 0%, 88.7%);--gray7: hsl(0, 0%, 85.8%);--gray8: hsl(0, 0%, 78%);--gray9: hsl(0, 0%, 56.1%);--gray10: hsl(0, 0%, 52.3%);--gray11: hsl(0, 0%, 43.5%);--gray12: hsl(0, 0%, 9%);--border-radius: 8px;box-sizing:border-box;padding:0;margin:0;list-style:none;outline:none;z-index:999999999;transition:transform .4s ease}:where([data-sonner-toaster][data-lifted=\\\"true\\\"]){transform:translateY(-10px)}@media (hover: none) and (pointer: coarse){:where([data-sonner-toaster][data-lifted=\\\"true\\\"]){transform:none}}:where([data-sonner-toaster][data-x-position=\\\"right\\\"]){right:var(--offset-right)}:where([data-sonner-toaster][data-x-position=\\\"left\\\"]){left:var(--offset-left)}:where([data-sonner-toaster][data-x-position=\\\"center\\\"]){left:50%;transform:translate(-50%)}:where([data-sonner-toaster][data-y-position=\\\"top\\\"]){top:var(--offset-top)}:where([data-sonner-toaster][data-y-position=\\\"bottom\\\"]){bottom:var(--offset-bottom)}:where([data-sonner-toast]){--y: translateY(100%);--lift-amount: calc(var(--lift) * var(--gap));z-index:var(--z-index);position:absolute;opacity:0;transform:var(--y);filter:blur(0);touch-action:none;transition:transform .4s,opacity .4s,height .4s,box-shadow .2s;box-sizing:border-box;outline:none;overflow-wrap:anywhere}:where([data-sonner-toast][data-styled=\\\"true\\\"]){padding:16px;background:var(--normal-bg);border:1px solid var(--normal-border);color:var(--normal-text);border-radius:var(--border-radius);box-shadow:0 4px 12px #0000001a;width:var(--width);font-size:13px;display:flex;align-items:center;gap:6px}:where([data-sonner-toast]:focus-visible){box-shadow:0 4px 12px #0000001a,0 0 0 2px #0003}:where([data-sonner-toast][data-y-position=\\\"top\\\"]){top:0;--y: translateY(-100%);--lift: 1;--lift-amount: calc(1 * var(--gap))}:where([data-sonner-toast][data-y-position=\\\"bottom\\\"]){bottom:0;--y: translateY(100%);--lift: -1;--lift-amount: calc(var(--lift) * var(--gap))}:where([data-sonner-toast]) :where([data-description]){font-weight:400;line-height:1.4;color:inherit}:where([data-sonner-toast]) :where([data-title]){font-weight:500;line-height:1.5;color:inherit}:where([data-sonner-toast]) :where([data-icon]){display:flex;height:16px;width:16px;position:relative;justify-content:flex-start;align-items:center;flex-shrink:0;margin-left:var(--toast-icon-margin-start);margin-right:var(--toast-icon-margin-end)}:where([data-sonner-toast][data-promise=\\\"true\\\"]) :where([data-icon])>svg{opacity:0;transform:scale(.8);transform-origin:center;animation:sonner-fade-in .3s ease forwards}:where([data-sonner-toast]) :where([data-icon])>*{flex-shrink:0}:where([data-sonner-toast]) :where([data-icon]) svg{margin-left:var(--toast-svg-margin-start);margin-right:var(--toast-svg-margin-end)}:where([data-sonner-toast]) :where([data-content]){display:flex;flex-direction:column;gap:2px}[data-sonner-toast][data-styled=true] [data-button]{border-radius:4px;padding-left:8px;padding-right:8px;height:24px;font-size:12px;color:var(--normal-bg);background:var(--normal-text);margin-left:var(--toast-button-margin-start);margin-right:var(--toast-button-margin-end);border:none;cursor:pointer;outline:none;display:flex;align-items:center;flex-shrink:0;transition:opacity .4s,box-shadow .2s}:where([data-sonner-toast]) :where([data-button]):focus-visible{box-shadow:0 0 0 2px #0006}:where([data-sonner-toast]) :where([data-button]):first-of-type{margin-left:var(--toast-button-margin-start);margin-right:var(--toast-button-margin-end)}:where([data-sonner-toast]) :where([data-cancel]){color:var(--normal-text);background:rgba(0,0,0,.08)}:where([data-sonner-toast][data-theme=\\\"dark\\\"]) :where([data-cancel]){background:rgba(255,255,255,.3)}:where([data-sonner-toast]) :where([data-close-button]){position:absolute;left:var(--toast-close-button-start);right:var(--toast-close-button-end);top:0;height:20px;width:20px;display:flex;justify-content:center;align-items:center;padding:0;color:var(--gray12);border:1px solid var(--gray4);transform:var(--toast-close-button-transform);border-radius:50%;cursor:pointer;z-index:1;transition:opacity .1s,background .2s,border-color .2s}[data-sonner-toast] [data-close-button]{background:var(--gray1)}:where([data-sonner-toast]) :where([data-close-button]):focus-visible{box-shadow:0 4px 12px #0000001a,0 0 0 2px #0003}:where([data-sonner-toast]) :where([data-disabled=\\\"true\\\"]){cursor:not-allowed}:where([data-sonner-toast]):hover :where([data-close-button]):hover{background:var(--gray2);border-color:var(--gray5)}:where([data-sonner-toast][data-swiping=\\\"true\\\"]):before{content:\\\"\\\";position:absolute;left:-50%;right:-50%;height:100%;z-index:-1}:where([data-sonner-toast][data-y-position=\\\"top\\\"][data-swiping=\\\"true\\\"]):before{bottom:50%;transform:scaleY(3) translateY(50%)}:where([data-sonner-toast][data-y-position=\\\"bottom\\\"][data-swiping=\\\"true\\\"]):before{top:50%;transform:scaleY(3) translateY(-50%)}:where([data-sonner-toast][data-swiping=\\\"false\\\"][data-removed=\\\"true\\\"]):before{content:\\\"\\\";position:absolute;inset:0;transform:scaleY(2)}:where([data-sonner-toast]):after{content:\\\"\\\";position:absolute;left:0;height:calc(var(--gap) + 1px);bottom:100%;width:100%}:where([data-sonner-toast][data-mounted=\\\"true\\\"]){--y: translateY(0);opacity:1}:where([data-sonner-toast][data-expanded=\\\"false\\\"][data-front=\\\"false\\\"]){--scale: var(--toasts-before) * .05 + 1;--y: translateY(calc(var(--lift-amount) * var(--toasts-before))) scale(calc(-1 * var(--scale)));height:var(--front-toast-height)}:where([data-sonner-toast])>*{transition:opacity .4s}:where([data-sonner-toast][data-expanded=\\\"false\\\"][data-front=\\\"false\\\"][data-styled=\\\"true\\\"])>*{opacity:0}:where([data-sonner-toast][data-visible=\\\"false\\\"]){opacity:0;pointer-events:none}:where([data-sonner-toast][data-mounted=\\\"true\\\"][data-expanded=\\\"true\\\"]){--y: translateY(calc(var(--lift) * var(--offset)));height:var(--initial-height)}:where([data-sonner-toast][data-removed=\\\"true\\\"][data-front=\\\"true\\\"][data-swipe-out=\\\"false\\\"]){--y: translateY(calc(var(--lift) * -100%));opacity:0}:where([data-sonner-toast][data-removed=\\\"true\\\"][data-front=\\\"false\\\"][data-swipe-out=\\\"false\\\"][data-expanded=\\\"true\\\"]){--y: translateY(calc(var(--lift) * var(--offset) + var(--lift) * -100%));opacity:0}:where([data-sonner-toast][data-removed=\\\"true\\\"][data-front=\\\"false\\\"][data-swipe-out=\\\"false\\\"][data-expanded=\\\"false\\\"]){--y: translateY(40%);opacity:0;transition:transform .5s,opacity .2s}:where([data-sonner-toast][data-removed=\\\"true\\\"][data-front=\\\"false\\\"]):before{height:calc(var(--initial-height) + 20%)}[data-sonner-toast][data-swiping=true]{transform:var(--y) translateY(var(--swipe-amount-y, 0px)) translate(var(--swipe-amount-x, 0px));transition:none}[data-sonner-toast][data-swiped=true]{user-select:none}[data-sonner-toast][data-swipe-out=true][data-y-position=bottom],[data-sonner-toast][data-swipe-out=true][data-y-position=top]{animation-duration:.2s;animation-timing-function:ease-out;animation-fill-mode:forwards}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=left]{animation-name:swipe-out-left}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=right]{animation-name:swipe-out-right}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=up]{animation-name:swipe-out-up}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=down]{animation-name:swipe-out-down}@keyframes swipe-out-left{0%{transform:var(--y) translate(var(--swipe-amount-x));opacity:1}to{transform:var(--y) translate(calc(var(--swipe-amount-x) - 100%));opacity:0}}@keyframes swipe-out-right{0%{transform:var(--y) translate(var(--swipe-amount-x));opacity:1}to{transform:var(--y) translate(calc(var(--swipe-amount-x) + 100%));opacity:0}}@keyframes swipe-out-up{0%{transform:var(--y) translateY(var(--swipe-amount-y));opacity:1}to{transform:var(--y) translateY(calc(var(--swipe-amount-y) - 100%));opacity:0}}@keyframes swipe-out-down{0%{transform:var(--y) translateY(var(--swipe-amount-y));opacity:1}to{transform:var(--y) translateY(calc(var(--swipe-amount-y) + 100%));opacity:0}}@media (max-width: 600px){[data-sonner-toaster]{position:fixed;right:var(--mobile-offset-right);left:var(--mobile-offset-left);width:100%}[data-sonner-toaster][dir=rtl]{left:calc(var(--mobile-offset-left) * -1)}[data-sonner-toaster] [data-sonner-toast]{left:0;right:0;width:calc(100% - var(--mobile-offset-left) * 2)}[data-sonner-toaster][data-x-position=left]{left:var(--mobile-offset-left)}[data-sonner-toaster][data-y-position=bottom]{bottom:var(--mobile-offset-bottom)}[data-sonner-toaster][data-y-position=top]{top:var(--mobile-offset-top)}[data-sonner-toaster][data-x-position=center]{left:var(--mobile-offset-left);right:var(--mobile-offset-right);transform:none}}[data-sonner-toaster][data-theme=light]{--normal-bg: #fff;--normal-border: var(--gray4);--normal-text: var(--gray12);--success-bg: hsl(143, 85%, 96%);--success-border: hsl(145, 92%, 91%);--success-text: hsl(140, 100%, 27%);--info-bg: hsl(208, 100%, 97%);--info-border: hsl(221, 91%, 91%);--info-text: hsl(210, 92%, 45%);--warning-bg: hsl(49, 100%, 97%);--warning-border: hsl(49, 91%, 91%);--warning-text: hsl(31, 92%, 45%);--error-bg: hsl(359, 100%, 97%);--error-border: hsl(359, 100%, 94%);--error-text: hsl(360, 100%, 45%)}[data-sonner-toaster][data-theme=light] [data-sonner-toast][data-invert=true]{--normal-bg: #000;--normal-border: hsl(0, 0%, 20%);--normal-text: var(--gray1)}[data-sonner-toaster][data-theme=dark] [data-sonner-toast][data-invert=true]{--normal-bg: #fff;--normal-border: var(--gray3);--normal-text: var(--gray12)}[data-sonner-toaster][data-theme=dark]{--normal-bg: #000;--normal-bg-hover: hsl(0, 0%, 12%);--normal-border: hsl(0, 0%, 20%);--normal-border-hover: hsl(0, 0%, 25%);--normal-text: var(--gray1);--success-bg: hsl(150, 100%, 6%);--success-border: hsl(147, 100%, 12%);--success-text: hsl(150, 86%, 65%);--info-bg: hsl(215, 100%, 6%);--info-border: hsl(223, 100%, 12%);--info-text: hsl(216, 87%, 65%);--warning-bg: hsl(64, 100%, 6%);--warning-border: hsl(60, 100%, 12%);--warning-text: hsl(46, 87%, 65%);--error-bg: hsl(358, 76%, 10%);--error-border: hsl(357, 89%, 16%);--error-text: hsl(358, 100%, 81%)}[data-sonner-toaster][data-theme=dark] [data-sonner-toast] [data-close-button]{background:var(--normal-bg);border-color:var(--normal-border);color:var(--normal-text)}[data-sonner-toaster][data-theme=dark] [data-sonner-toast] [data-close-button]:hover{background:var(--normal-bg-hover);border-color:var(--normal-border-hover)}[data-rich-colors=true][data-sonner-toast][data-type=success],[data-rich-colors=true][data-sonner-toast][data-type=success] [data-close-button]{background:var(--success-bg);border-color:var(--success-border);color:var(--success-text)}[data-rich-colors=true][data-sonner-toast][data-type=info],[data-rich-colors=true][data-sonner-toast][data-type=info] [data-close-button]{background:var(--info-bg);border-color:var(--info-border);color:var(--info-text)}[data-rich-colors=true][data-sonner-toast][data-type=warning],[data-rich-colors=true][data-sonner-toast][data-type=warning] [data-close-button]{background:var(--warning-bg);border-color:var(--warning-border);color:var(--warning-text)}[data-rich-colors=true][data-sonner-toast][data-type=error],[data-rich-colors=true][data-sonner-toast][data-type=error] [data-close-button]{background:var(--error-bg);border-color:var(--error-border);color:var(--error-text)}.sonner-loading-wrapper{--size: 16px;height:var(--size);width:var(--size);position:absolute;inset:0;z-index:10}.sonner-loading-wrapper[data-visible=false]{transform-origin:center;animation:sonner-fade-out .2s ease forwards}.sonner-spinner{position:relative;top:50%;left:50%;height:var(--size);width:var(--size)}.sonner-loading-bar{animation:sonner-spin 1.2s linear infinite;background:var(--gray11);border-radius:6px;height:8%;left:-10%;position:absolute;top:-3.9%;width:24%}.sonner-loading-bar:nth-child(1){animation-delay:-1.2s;transform:rotate(.0001deg) translate(146%)}.sonner-loading-bar:nth-child(2){animation-delay:-1.1s;transform:rotate(30deg) translate(146%)}.sonner-loading-bar:nth-child(3){animation-delay:-1s;transform:rotate(60deg) translate(146%)}.sonner-loading-bar:nth-child(4){animation-delay:-.9s;transform:rotate(90deg) translate(146%)}.sonner-loading-bar:nth-child(5){animation-delay:-.8s;transform:rotate(120deg) translate(146%)}.sonner-loading-bar:nth-child(6){animation-delay:-.7s;transform:rotate(150deg) translate(146%)}.sonner-loading-bar:nth-child(7){animation-delay:-.6s;transform:rotate(180deg) translate(146%)}.sonner-loading-bar:nth-child(8){animation-delay:-.5s;transform:rotate(210deg) translate(146%)}.sonner-loading-bar:nth-child(9){animation-delay:-.4s;transform:rotate(240deg) translate(146%)}.sonner-loading-bar:nth-child(10){animation-delay:-.3s;transform:rotate(270deg) translate(146%)}.sonner-loading-bar:nth-child(11){animation-delay:-.2s;transform:rotate(300deg) translate(146%)}.sonner-loading-bar:nth-child(12){animation-delay:-.1s;transform:rotate(330deg) translate(146%)}@keyframes sonner-fade-in{0%{opacity:0;transform:scale(.8)}to{opacity:1;transform:scale(1)}}@keyframes sonner-fade-out{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.8)}}@keyframes sonner-spin{0%{opacity:1}to{opacity:.15}}@media (prefers-reduced-motion){[data-sonner-toast],[data-sonner-toast]>*,.sonner-loading-bar{transition:none!important;animation:none!important}}.sonner-loader{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);transform-origin:center;transition:opacity .2s,transform .2s}.sonner-loader[data-visible=false]{opacity:0;transform:scale(.8) translate(-50%,-50%)}\\n\")", "import React from 'react';\n\nexport type ToastTypes = 'normal' | 'action' | 'success' | 'info' | 'warning' | 'error' | 'loading' | 'default';\n\nexport type PromiseT<Data = any> = Promise<Data> | (() => Promise<Data>);\n\nexport type PromiseTResult<Data = any> =\n | string\n | React.ReactNode\n | ((data: Data) => React.ReactNode | string | Promise<React.ReactNode | string>);\n\nexport type PromiseExternalToast = Omit<ExternalToast, 'description'>;\n\nexport type PromiseData<ToastData = any> = PromiseExternalToast & {\n loading?: string | React.ReactNode;\n success?: PromiseTResult<ToastData>;\n error?: PromiseTResult;\n description?: PromiseTResult;\n finally?: () => void | Promise<void>;\n};\n\nexport interface ToastClassnames {\n toast?: string;\n title?: string;\n description?: string;\n loader?: string;\n closeButton?: string;\n cancelButton?: string;\n actionButton?: string;\n success?: string;\n error?: string;\n info?: string;\n warning?: string;\n loading?: string;\n default?: string;\n content?: string;\n icon?: string;\n}\n\nexport interface ToastIcons {\n success?: React.ReactNode;\n info?: React.ReactNode;\n warning?: React.ReactNode;\n error?: React.ReactNode;\n loading?: React.ReactNode;\n close?: React.ReactNode;\n}\n\nexport interface Action {\n label: React.ReactNode;\n onClick: (event: React.MouseEvent<HTMLButtonElement, MouseEvent>) => void;\n actionButtonStyle?: React.CSSProperties;\n}\n\nexport interface ToastT {\n id: number | string;\n title?: (() => React.ReactNode) | React.ReactNode;\n type?: ToastTypes;\n icon?: React.ReactNode;\n jsx?: React.ReactNode;\n richColors?: boolean;\n invert?: boolean;\n closeButton?: boolean;\n dismissible?: boolean;\n description?: (() => React.ReactNode) | React.ReactNode;\n duration?: number;\n delete?: boolean;\n action?: Action | React.ReactNode;\n cancel?: Action | React.ReactNode;\n onDismiss?: (toast: ToastT) => void;\n onAutoClose?: (toast: ToastT) => void;\n promise?: PromiseT;\n cancelButtonStyle?: React.CSSProperties;\n actionButtonStyle?: React.CSSProperties;\n style?: React.CSSProperties;\n unstyled?: boolean;\n className?: string;\n classNames?: ToastClassnames;\n descriptionClassName?: string;\n position?: Position;\n}\n\nexport function isAction(action: Action | React.ReactNode): action is Action {\n return (action as Action).label !== undefined;\n}\n\nexport type Position = 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right' | 'top-center' | 'bottom-center';\nexport interface HeightT {\n height: number;\n toastId: number | string;\n position: Position;\n}\n\ninterface ToastOptions {\n className?: string;\n closeButton?: boolean;\n descriptionClassName?: string;\n style?: React.CSSProperties;\n cancelButtonStyle?: React.CSSProperties;\n actionButtonStyle?: React.CSSProperties;\n duration?: number;\n unstyled?: boolean;\n classNames?: ToastClassnames;\n}\n\ntype Offset =\n | {\n top?: string | number;\n right?: string | number;\n bottom?: string | number;\n left?: string | number;\n }\n | string\n | number;\n\nexport interface ToasterProps {\n invert?: boolean;\n theme?: 'light' | 'dark' | 'system';\n position?: Position;\n hotkey?: string[];\n richColors?: boolean;\n expand?: boolean;\n duration?: number;\n gap?: number;\n visibleToasts?: number;\n closeButton?: boolean;\n toastOptions?: ToastOptions;\n className?: string;\n style?: React.CSSProperties;\n offset?: Offset;\n mobileOffset?: Offset;\n dir?: 'rtl' | 'ltr' | 'auto';\n swipeDirections?: SwipeDirection[];\n /**\n * @deprecated Please use the `icons` prop instead:\n * ```jsx\n * <Toaster\n * icons={{ loading: <LoadingIcon /> }}\n * />\n * ```\n */\n loadingIcon?: React.ReactNode;\n icons?: ToastIcons;\n containerAriaLabel?: string;\n pauseWhenPageIsHidden?: boolean;\n}\n\nexport type SwipeDirection = 'top' | 'right' | 'bottom' | 'left';\n\nexport interface ToastProps {\n toast: ToastT;\n toasts: ToastT[];\n index: number;\n swipeDirections?: SwipeDirection[];\n expanded: boolean;\n invert: boolean;\n heights: HeightT[];\n setHeights: React.Dispatch<React.SetStateAction<HeightT[]>>;\n removeToast: (toast: ToastT) => void;\n gap?: number;\n position: Position;\n visibleToasts: number;\n expandByDefault: boolean;\n closeButton: boolean;\n interacting: boolean;\n style?: React.CSSProperties;\n cancelButtonStyle?: React.CSSProperties;\n actionButtonStyle?: React.CSSProperties;\n duration?: number;\n className?: string;\n unstyled?: boolean;\n descriptionClassName?: string;\n loadingIcon?: React.ReactNode;\n classNames?: ToastClassnames;\n icons?: ToastIcons;\n closeButtonAriaLabel?: string;\n pauseWhenPageIsHidden: boolean;\n defaultRichColors?: boolean;\n}\n\nexport enum SwipeStateTypes {\n SwipedOut = 'SwipedOut',\n SwipedBack = 'SwipedBack',\n NotSwiped = 'NotSwiped',\n}\n\nexport type Theme = 'light' | 'dark';\n\nexport interface ToastToDismiss {\n id: number | string;\n dismiss: boolean;\n}\n\nexport type ExternalToast = Omit<ToastT, 'id' | 'type' | 'title' | 'jsx' | 'delete' | 'promise'> & {\n id?: number | string;\n};\n", "'use client'\nimport type { MouseEvent } from 'react'\n\nimport React from 'react'\n\nimport './index.scss'\nimport { Link } from '../Link/index.js'\n\nconst baseClass = 'banner'\n\ntype onClick = (event: MouseEvent) => void\n\nexport type Props = Readonly<{\n alignIcon?: 'left' | 'right'\n children?: React.ReactNode\n className?: string\n icon?: React.ReactNode\n onClick?: onClick\n to?: string\n type?: 'default' | 'error' | 'info' | 'success'\n}>\n\nexport type RenderedTypeProps = {\n children?: React.ReactNode\n className?: string\n onClick?: onClick\n to: string\n}\n\nexport const Banner: React.FC<Props> = ({\n type = 'default',\n alignIcon = 'right',\n children,\n className,\n icon,\n onClick,\n to,\n}) => {\n const classes = [\n baseClass,\n `${baseClass}--type-${type}`,\n className && className,\n to && `${baseClass}--has-link`,\n (to || onClick) && `${baseClass}--has-action`,\n icon && `${baseClass}--has-icon`,\n icon && `${baseClass}--align-icon-${alignIcon}`,\n ]\n .filter(Boolean)\n .join(' ')\n\n let RenderedType: React.ComponentType<RenderedTypeProps> | React.ElementType = 'div'\n\n if (onClick && !to) {\n RenderedType = 'button'\n }\n if (to) {\n RenderedType = Link\n }\n\n return (\n <RenderedType className={classes} href={to || null} onClick={onClick}>\n {icon && alignIcon === 'left' && <React.Fragment>{icon}</React.Fragment>}\n <span className={`${baseClass}__content`}>{children}</span>\n {icon && alignIcon === 'right' && <React.Fragment>{icon}</React.Fragment>}\n </RenderedType>\n )\n}\n", "'use client'\nimport NextLinkImport from 'next/link.js'\nimport { useRouter } from 'next/navigation.js'\nimport React from 'react'\n\nimport { useRouteTransition } from '../../providers/RouteTransition/index.js'\nimport { formatUrl } from './formatUrl.js'\n\nconst NextLink = 'default' in NextLinkImport ? NextLinkImport.default : NextLinkImport\n\n// Copied from https://github.com/vercel/next.js/blob/canary/packages/next/src/client/link.tsx#L180-L191\nfunction isModifiedEvent(event: React.MouseEvent): boolean {\n const eventTarget = event.currentTarget as HTMLAnchorElement | SVGAElement\n const target = eventTarget.getAttribute('target')\n return (\n (target && target !== '_self') ||\n event.metaKey ||\n event.ctrlKey ||\n event.shiftKey ||\n event.altKey || // triggers resource download\n (event.nativeEvent && event.nativeEvent.which === 2)\n )\n}\n\ntype Props = {\n /**\n * Disable the e.preventDefault() call on click if you want to handle it yourself via onClick\n *\n * @default true\n */\n preventDefault?: boolean\n} & Parameters<typeof NextLink>[0]\n\nexport const Link: React.FC<Props> = ({\n children,\n href,\n onClick,\n preventDefault = true,\n ref,\n replace,\n scroll,\n ...rest\n}) => {\n const router = useRouter()\n const { startRouteTransition } = useRouteTransition()\n\n return (\n <NextLink\n href={href}\n onClick={(e) => {\n if (isModifiedEvent(e)) {\n return\n }\n\n if (onClick) {\n onClick(e)\n }\n\n // We need a preventDefault here so that a clicked link doesn't trigger twice,\n // once for default browser navigation and once for startRouteTransition\n if (preventDefault) {\n e.preventDefault()\n }\n\n const url = typeof href === 'string' ? href : formatUrl(href)\n\n const navigate = () => {\n if (replace) {\n void router.replace(url, { scroll })\n } else {\n void router.push(url, { scroll })\n }\n }\n\n // Call startRouteTransition if available, otherwise navigate directly\n startRouteTransition(navigate)\n }}\n ref={ref}\n {...rest}\n >\n {children}\n </NextLink>\n )\n}\n", "'use client'\nimport React, { startTransition, useCallback, useEffect, useOptimistic, useRef } from 'react'\n\n/**\n * Route transitions are useful in showing immediate visual feedback to the user when navigating between pages. This is especially useful on slow networks when navigating to data heavy or process intensive pages.\n * To use route transitions, place the `RouteTransitionProvider` at the root of your application, outside of the `ProgressBar` component.\n * To trigger a route transition, use the `Link` component from `@payloadcms/ui`,\n * or wrap a callback function with the `startRouteTransition` method.\n * To gain access to the `RouteTransitionContext`, call the `useRouteTransition` hook in your component.\n * @returns A context provider with methods and state for transitioning between routes, including `isTransitioning`, `startRouteTransition`, and `transitionProgress`.\n * @example\n * import { RouteTransitionProvider, ProgressBar, Link } from '@payloadcms/ui'\n * const App = () => (\n * <RouteTransitionProvider>\n * <ProgressBar />\n * <Link href=\"/somewhere\">Go Somewhere</Link>\n * </RouteTransitionProvider>\n * )\n */\nexport const RouteTransitionProvider: React.FC<RouteTransitionProps> = ({ children }) => {\n const [isTransitioning, setIsTransitioning] = useOptimistic(false)\n const [transitionProgress, setTransitionProgress] = React.useState<number>(0)\n\n const transitionProgressRef = useRef(transitionProgress)\n\n const timerID = useRef(null)\n\n const initiateProgress = useCallback(() => {\n timerID.current = setInterval(() => {\n // randomly update progress using an exponential curve\n // cap the progress to ensure it never fully reaches completion\n // accelerate quickly then decelerate slowly\n const maxProgress = 0.93\n const jumpFactor = 0.2 // lower to reduce jumps in progress\n const growthFactor = 0.75 // adjust to control acceleration\n const slowdownFactor = 0.75 // adjust to control deceleration\n\n const newProgress =\n transitionProgressRef.current +\n (maxProgress - transitionProgressRef.current) *\n Math.random() *\n jumpFactor *\n Math.pow(Math.log(1 + (1 - transitionProgressRef.current) * growthFactor), slowdownFactor)\n\n setTransitionProgress(newProgress)\n transitionProgressRef.current = newProgress\n }, 250) // every n ms, update progress\n }, [])\n\n useEffect(() => {\n setTransitionProgress(0)\n transitionProgressRef.current = 0\n\n if (isTransitioning) {\n initiateProgress()\n } else {\n if (timerID.current) {\n clearInterval(timerID.current)\n }\n }\n }, [isTransitioning, initiateProgress])\n\n const startRouteTransition: StartRouteTransition = useCallback(\n (callback?: () => void) => {\n startTransition(() => {\n setIsTransitioning(true)\n\n if (typeof callback === 'function') {\n callback()\n }\n })\n },\n [setIsTransitioning],\n )\n\n return (\n <RouteTransitionContext value={{ isTransitioning, startRouteTransition, transitionProgress }}>\n {children}\n </RouteTransitionContext>\n )\n}\n\ntype RouteTransitionProps = {\n children: React.ReactNode\n}\n\ntype StartRouteTransition = (callback?: () => void) => void\n\ntype RouteTransitionContextValue = {\n isTransitioning: boolean\n startRouteTransition: StartRouteTransition\n transitionProgress: number\n}\n\nconst RouteTransitionContext = React.createContext<RouteTransitionContextValue>({\n isTransitioning: false,\n // Default implementation: just call the callback directly (no transition animation)\n startRouteTransition: (callback) => {\n if (typeof callback === 'function') {\n callback()\n }\n },\n transitionProgress: 0,\n})\n\n/**\n * Use this hook to access the `RouteTransitionContext` provided by the `RouteTransitionProvider`.\n * To start a transition, fire the `startRouteTransition` method with a provided callback to run while the transition takes place.\n * @returns The `RouteTransitionContext` needed for transitioning between routes, including `isTransitioning`, `startRouteTransition`, and `transitionProgress`.\n * @example\n * 'use client'\n * import React, { useCallback } from 'react'\n * import { useTransition } from '@payloadcms/ui'\n * import { useRouter } from 'next/navigation'\n *\n * const MyComponent: React.FC = () => {\n * const router = useRouter()\n * const { startRouteTransition } = useRouteTransition()\n *\n * const redirectSomewhere = useCallback(() => {\n * startRouteTransition(() => router.push('/somewhere'))\n * }, [startRouteTransition, router])\n *\n * // ...\n * }\n */\nexport const useRouteTransition = () => React.use(RouteTransitionContext)\n", "// Format function modified from nodejs\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nimport type { UrlObject } from 'url'\n\nconst slashedProtocols = /https?|ftp|gopher|file/\n\nfunction stringifyUrlQueryParam(param: unknown): string {\n if (\n typeof param === 'string' ||\n (typeof param === 'number' && !isNaN(param)) ||\n typeof param === 'boolean'\n ) {\n return String(param)\n } else {\n return ''\n }\n}\n\nexport function urlQueryToSearchParams(urlQuery: UrlObject['query']): URLSearchParams {\n const result = new URLSearchParams()\n Object.entries(urlQuery).forEach(([key, value]) => {\n if (Array.isArray(value)) {\n value.forEach((item) => result.append(key, stringifyUrlQueryParam(item)))\n } else {\n result.set(key, stringifyUrlQueryParam(value))\n }\n })\n return result\n}\n\nexport function formatUrl(urlObj: UrlObject) {\n let { auth } = urlObj\n const { hostname } = urlObj\n let protocol = urlObj.protocol || ''\n let pathname = urlObj.pathname || ''\n let hash = urlObj.hash || ''\n let query = urlObj.query || ''\n let host: false | string = false\n\n auth = auth ? encodeURIComponent(auth).replace(/%3A/i, ':') + '@' : ''\n\n if (urlObj.host) {\n host = auth + urlObj.host\n } else if (hostname) {\n host = auth + (~hostname.indexOf(':') ? `[${hostname}]` : hostname)\n if (urlObj.port) {\n host += ':' + urlObj.port\n }\n }\n\n if (query && typeof query === 'object') {\n query = String(urlQueryToSearchParams(query))\n }\n\n let search = urlObj.search || (query && `?${query}`) || ''\n\n if (protocol && !protocol.endsWith(':')) {\n protocol += ':'\n }\n\n if (urlObj.slashes || ((!protocol || slashedProtocols.test(protocol)) && host !== false)) {\n host = '//' + (host || '')\n if (pathname && pathname[0] !== '/') {\n pathname = '/' + pathname\n }\n } else if (!host) {\n host = ''\n }\n\n if (hash && hash[0] !== '#') {\n hash = '#' + hash\n }\n if (search && search[0] !== '?') {\n search = '?' + search\n }\n\n pathname = pathname.replace(/[?#]/g, encodeURIComponent)\n search = search.replace('#', '%23')\n\n return `${protocol}${host}${pathname}${search}${hash}`\n}\n", "'use client'\nimport React, { Fragment, isValidElement } from 'react'\n\nimport type { Props } from './types.js'\n\nimport { ChevronIcon } from '../../icons/Chevron/index.js'\nimport { EditIcon } from '../../icons/Edit/index.js'\nimport { LinkIcon } from '../../icons/Link/index.js'\nimport { PlusIcon } from '../../icons/Plus/index.js'\nimport { SwapIcon } from '../../icons/Swap/index.js'\nimport { XIcon } from '../../icons/X/index.js'\nimport { Link } from '../Link/index.js'\nimport { Popup } from '../Popup/index.js'\nimport './index.scss'\nimport { Tooltip } from '../Tooltip/index.js'\n\nconst icons = {\n chevron: ChevronIcon,\n edit: EditIcon,\n link: LinkIcon,\n plus: PlusIcon,\n swap: SwapIcon,\n x: XIcon,\n}\n\nconst baseClass = 'btn'\n\nexport const ButtonContents = ({ children, icon, showTooltip, tooltip }) => {\n const BuiltInIcon = icons[icon]\n\n return (\n <Fragment>\n {tooltip && (\n <Tooltip className={`${baseClass}__tooltip`} show={showTooltip}>\n {tooltip}\n </Tooltip>\n )}\n <span className={`${baseClass}__content`}>\n {children && <span className={`${baseClass}__label`}>{children}</span>}\n {icon && (\n <span className={`${baseClass}__icon`}>\n {isValidElement(icon) && icon}\n {BuiltInIcon && <BuiltInIcon />}\n </span>\n )}\n </span>\n </Fragment>\n )\n}\n\nexport const Button: React.FC<Props> = (props) => {\n const {\n id,\n type = 'button',\n 'aria-label': ariaLabel,\n buttonStyle = 'primary',\n children,\n className,\n disabled,\n el = 'button',\n enableSubMenu,\n extraButtonProps = {},\n icon,\n iconPosition = 'right',\n iconStyle = 'without-border',\n margin = true,\n newTab,\n onClick,\n onMouseDown,\n ref,\n round,\n size = 'medium',\n SubMenuPopupContent,\n to,\n tooltip,\n url,\n } = props\n\n const [showTooltip, setShowTooltip] = React.useState(false)\n\n const classes = [\n baseClass,\n className && className,\n icon && `${baseClass}--icon`,\n iconStyle && `${baseClass}--icon-style-${iconStyle}`,\n icon && !children && `${baseClass}--icon-only`,\n size && `${baseClass}--size-${size}`,\n icon && iconPosition && `${baseClass}--icon-position-${iconPosition}`,\n tooltip && `${baseClass}--has-tooltip`,\n !SubMenuPopupContent && `${baseClass}--withoutPopup`,\n !margin && `${baseClass}--no-margin`,\n ]\n .filter(Boolean)\n .join(' ')\n\n function handleClick(event) {\n setShowTooltip(false)\n if (type !== 'submit' && onClick) {\n event.preventDefault()\n }\n if (onClick) {\n onClick(event)\n }\n }\n\n const styleClasses = [\n buttonStyle && `${baseClass}--style-${buttonStyle}`,\n disabled && `${baseClass}--disabled`,\n round && `${baseClass}--round`,\n SubMenuPopupContent ? `${baseClass}--withPopup` : `${baseClass}--withoutPopup`,\n ]\n .filter(Boolean)\n .join(' ')\n\n const buttonProps = {\n id,\n type,\n 'aria-disabled': disabled,\n 'aria-label': ariaLabel,\n className: !SubMenuPopupContent ? [classes, styleClasses].join(' ') : classes,\n disabled,\n onClick: !disabled ? handleClick : undefined,\n onMouseDown: !disabled ? onMouseDown : undefined,\n onPointerEnter: tooltip ? () => setShowTooltip(true) : undefined,\n onPointerLeave: tooltip ? () => setShowTooltip(false) : undefined,\n rel: newTab ? 'noopener noreferrer' : undefined,\n target: newTab ? '_blank' : undefined,\n title: ariaLabel,\n ...extraButtonProps,\n }\n\n let buttonElement\n\n switch (el) {\n case 'anchor':\n buttonElement = (\n <a\n {...buttonProps}\n href={!disabled ? url : undefined}\n ref={ref as React.RefObject<HTMLAnchorElement>}\n >\n <ButtonContents icon={icon} showTooltip={showTooltip} tooltip={tooltip}>\n {children}\n </ButtonContents>\n </a>\n )\n break\n\n case 'link':\n if (disabled) {\n buttonElement = (\n <div {...buttonProps}>\n <ButtonContents icon={icon} showTooltip={showTooltip} tooltip={tooltip}>\n {children}\n </ButtonContents>\n </div>\n )\n }\n\n buttonElement = (\n <Link {...buttonProps} href={to || url} prefetch={false}>\n <ButtonContents icon={icon} showTooltip={showTooltip} tooltip={tooltip}>\n {children}\n </ButtonContents>\n </Link>\n )\n\n break\n\n default:\n const Tag = el // eslint-disable-line no-case-declarations\n\n buttonElement = (\n <Tag ref={ref} {...buttonProps}>\n <ButtonContents icon={icon} showTooltip={showTooltip} tooltip={tooltip}>\n {children}\n </ButtonContents>\n </Tag>\n )\n break\n }\n if (SubMenuPopupContent) {\n return (\n <div className={styleClasses}>\n {buttonElement}\n <Popup\n button={<ChevronIcon />}\n buttonSize={size}\n className={disabled && !enableSubMenu ? `${baseClass}--popup-disabled` : ''}\n disabled={disabled && !enableSubMenu}\n horizontalAlign=\"right\"\n id={`${id}-popup`}\n noBackground\n render={({ close }) => SubMenuPopupContent({ close: () => close() })}\n size=\"large\"\n verticalAlign=\"bottom\"\n />\n </div>\n )\n }\n\n return buttonElement\n}\n", "import React from 'react'\n\nimport './index.scss'\n\nexport const ChevronIcon: React.FC<{\n readonly ariaLabel?: string\n readonly className?: string\n readonly direction?: 'down' | 'left' | 'right' | 'up'\n readonly size?: 'large' | 'small'\n}> = ({ ariaLabel, className, direction, size }) => (\n <svg\n aria-label={ariaLabel}\n className={['icon icon--chevron', className, size && `icon--size-${size}`]\n .filter(Boolean)\n .join(' ')}\n height=\"100%\"\n style={{\n transform:\n direction === 'left'\n ? 'rotate(90deg)'\n : direction === 'right'\n ? 'rotate(-90deg)'\n : direction === 'up'\n ? 'rotate(180deg)'\n : undefined,\n }}\n viewBox=\"0 0 20 20\"\n width=\"100%\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path className=\"stroke\" d=\"M14 8L10 12L6 8\" strokeLinecap=\"square\" />\n </svg>\n)\n", "import React from 'react'\n\nimport './index.scss'\n\nexport const EditIcon: React.FC<{ className?: string }> = ({ className }) => (\n <svg\n className={[className, 'icon icon--edit'].filter(Boolean).join(' ')}\n viewBox=\"0 0 20 20\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n className=\"stroke\"\n d=\"M9.68531 4.62938H5.2634C4.92833 4.62938 4.60698 4.76248 4.37004 4.99942C4.13311 5.23635 4 5.5577 4 5.89278V14.7366C4 15.0717 4.13311 15.393 4.37004 15.63C4.60698 15.8669 4.92833 16 5.2634 16H14.1072C14.4423 16 14.7636 15.8669 15.0006 15.63C15.2375 15.393 15.3706 15.0717 15.3706 14.7366V10.3147M13.7124 4.39249C13.9637 4.14118 14.3046 4 14.66 4C15.0154 4 15.3562 4.14118 15.6075 4.39249C15.8588 4.6438 16 4.98464 16 5.34004C16 5.69544 15.8588 6.03629 15.6075 6.28759L9.91399 11.9817C9.76399 12.1316 9.57868 12.2413 9.37515 12.3008L7.56027 12.8314C7.50591 12.8472 7.44829 12.8482 7.39344 12.8341C7.33859 12.8201 7.28853 12.7915 7.24849 12.7515C7.20845 12.7115 7.17991 12.6614 7.16586 12.6066C7.15181 12.5517 7.15276 12.4941 7.16861 12.4397L7.69924 10.6249C7.75896 10.4215 7.86888 10.2364 8.01888 10.0866L13.7124 4.39249Z\"\n strokeLinecap=\"square\"\n />\n </svg>\n)\n", "import React from 'react'\n\nimport './index.scss'\n\nexport const LinkIcon: React.FC = () => (\n <svg\n aria-hidden=\"true\"\n className=\"graphic link icon icon--link\"\n fill=\"none\"\n focusable=\"false\"\n height=\"20\"\n viewBox=\"0 0 20 20\"\n width=\"20\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n className=\"stroke\"\n d=\"M7.99999 13.3333H6.66666C5.78261 13.3333 4.93476 12.9821 4.30964 12.357C3.68452 11.7319 3.33333 10.884 3.33333 9.99999C3.33333 9.11593 3.68452 8.26809 4.30964 7.64297C4.93476 7.01785 5.78261 6.66666 6.66666 6.66666H7.99999M12 6.66666H13.3333C14.2174 6.66666 15.0652 7.01785 15.6904 7.64297C16.3155 8.26809 16.6667 9.11593 16.6667 9.99999C16.6667 10.884 16.3155 11.7319 15.6904 12.357C15.0652 12.9821 14.2174 13.3333 13.3333 13.3333H12M7.33333 9.99999H12.6667\"\n strokeLinecap=\"square\"\n />\n </svg>\n)\n", "import React from 'react'\n\nimport './index.scss'\n\nexport const PlusIcon: React.FC = () => (\n <svg\n className=\"icon icon--plus\"\n height=\"20\"\n viewBox=\"0 0 20 20\"\n width=\"20\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n className=\"stroke\"\n d=\"M5.33333 9.99998H14.6667M9.99999 5.33331V14.6666\"\n strokeLinecap=\"square\"\n />\n </svg>\n)\n", "import React from 'react'\n\nimport './index.scss'\n\nexport const SwapIcon: React.FC = () => (\n <svg className=\"icon icon--swap\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n className=\"stroke\"\n d=\"M7.33334 4L4.66667 6.66667M4.66667 6.66667L7.33334 9.33333M4.66667 6.66667H15.3333M12.6667 16L15.3333 13.3333M15.3333 13.3333L12.6667 10.6667M15.3333 13.3333H4.66667\"\n strokeLinecap=\"square\"\n />\n </svg>\n)\n", "'use client'\nimport type { LinkProps } from 'next/link.js'\n\nimport * as React from 'react'\n\nimport { Link } from '../../Link/index.js'\nimport './index.scss'\n\nconst baseClass = 'popup-button-list'\n\nexport { PopupListDivider as Divider } from '../PopupDivider/index.js'\nexport { PopupListGroupLabel as GroupLabel } from '../PopupGroupLabel/index.js'\n\nexport const ButtonGroup: React.FC<{\n buttonSize?: 'default' | 'small'\n children: React.ReactNode\n className?: string\n textAlign?: 'center' | 'left' | 'right'\n}> = ({ buttonSize = 'default', children, className, textAlign = 'left' }) => {\n const classes = [\n baseClass,\n className,\n `${baseClass}__text-align--${textAlign}`,\n `${baseClass}__button-size--${buttonSize}`,\n ]\n .filter(Boolean)\n .join(' ')\n return <div className={classes}>{children}</div>\n}\n\ntype MenuButtonProps = {\n active?: boolean\n children: React.ReactNode\n className?: string\n disabled?: boolean\n href?: LinkProps['href']\n id?: string\n onClick?: (e?: React.MouseEvent) => void\n}\n\nexport const Button: React.FC<MenuButtonProps> = ({\n id,\n active,\n children,\n className,\n disabled,\n href,\n onClick,\n}) => {\n const classes = [\n `${baseClass}__button`,\n disabled && `${baseClass}__disabled`,\n active && `${baseClass}__button--selected`,\n className,\n ]\n .filter(Boolean)\n .join(' ')\n\n if (!disabled) {\n if (href) {\n return (\n <Link\n className={classes}\n href={href}\n id={id}\n onClick={(e) => {\n if (onClick) {\n onClick(e)\n }\n }}\n prefetch={false}\n >\n {children}\n </Link>\n )\n }\n\n if (onClick) {\n return (\n <button\n className={classes}\n id={id}\n onClick={(e) => {\n if (onClick) {\n onClick(e)\n }\n }}\n type=\"button\"\n >\n {children}\n </button>\n )\n }\n }\n\n return (\n <div className={classes} id={id}>\n {children}\n </div>\n )\n}\n", "import React from 'react'\n\nimport './index.scss'\n\nconst baseClass = 'popup-divider'\n\nexport const PopupListDivider: React.FC = () => {\n return <hr className={baseClass} />\n}\n", "import React from 'react'\n\nimport './index.scss'\n\nconst baseClass = 'popup-list-group-label'\n\nexport const PopupListGroupLabel: React.FC<{\n label: string\n}> = ({ label }) => {\n return <p className={baseClass}>{label}</p>\n}\n", "'use client'\nimport type { CSSProperties } from 'react'\n\nexport * as PopupList from './PopupButtonList/index.js'\n\nimport React, { useCallback, useEffect, useRef, useState } from 'react'\nimport { createPortal } from 'react-dom'\n\nimport { useEffectEvent } from '../../hooks/useEffectEvent.js'\nimport './index.scss'\nimport { PopupTrigger } from './PopupTrigger/index.js'\n\nconst baseClass = 'popup'\n\n/**\n * Selector for all elements the browser considers tabbable.\n */\nconst TABBABLE_SELECTOR = [\n 'a[href]',\n 'button:not(:disabled)',\n 'input:not(:disabled):not([type=\"hidden\"])',\n 'select:not(:disabled)',\n 'textarea:not(:disabled)',\n '[tabindex]',\n '[contenteditable]:not([contenteditable=\"false\"])',\n 'audio[controls]',\n 'video[controls]',\n 'summary',\n]\n .map((s) => `${s}:not([tabindex=\"-1\"])`)\n .join(', ')\n\nexport type PopupProps = {\n backgroundColor?: CSSProperties['backgroundColor']\n boundingRef?: React.RefObject<HTMLElement>\n button?: React.ReactNode\n /**\n * The class name to apply to the button that triggers the popup.\n */\n buttonClassName?: string\n buttonSize?: 'large' | 'medium' | 'small' | 'xsmall'\n buttonType?: 'custom' | 'default' | 'none'\n caret?: boolean\n children?: React.ReactNode\n /**\n * The class name to apply to the popup container containing the trigger.\n * This does not wrap the actual popup content, which is rendered in a portal.\n */\n className?: string\n disabled?: boolean\n /**\n * Force control the open state of the popup, regardless of the trigger.\n */\n forceOpen?: boolean\n /**\n * Preferred horizontal alignment of the popup, if there is enough space available.\n *\n * @default 'left'\n */\n horizontalAlign?: 'center' | 'left' | 'right'\n id?: string\n initActive?: boolean\n noBackground?: boolean\n onToggleClose?: () => void\n onToggleOpen?: (active: boolean) => void\n /**\n * Class name to apply to the portal container.\n */\n portalClassName?: string\n render?: (args: { close: () => void }) => React.ReactNode\n showOnHover?: boolean\n /**\n * By default, the scrollbar is hidden. If you want to show it, set this to true.\n * In both cases, the container is still scrollable.\n *\n * @default false\n */\n showScrollbar?: boolean\n size?: 'fit-content' | 'large' | 'medium' | 'small'\n /**\n * Preferred vertical alignment of the popup (position below or above the trigger),\n * if there is enough space available.\n *\n * If the popup is too close to the edge of the viewport, it will flip to the opposite side\n * regardless of the preferred vertical alignment.\n *\n * @default 'bottom'\n */\n verticalAlign?: 'bottom' | 'top'\n}\n\n/**\n * Component that renders a popup, as well as a button that triggers the popup.\n *\n * The popup is rendered in a portal, and is automatically positioned above / below the trigger,\n * depending on the verticalAlign prop and the space available.\n */\nexport const Popup: React.FC<PopupProps> = (props) => {\n const {\n id,\n button,\n buttonClassName,\n buttonSize,\n buttonType = 'default',\n caret = true,\n children,\n className,\n disabled,\n forceOpen,\n horizontalAlign = 'left',\n initActive = false,\n noBackground,\n onToggleClose,\n onToggleOpen,\n portalClassName,\n render,\n showOnHover = false,\n showScrollbar = false,\n size = 'medium',\n verticalAlign = 'bottom',\n } = props\n\n const popupRef = useRef<HTMLDivElement>(null)\n const triggerRef = useRef<HTMLDivElement>(null)\n\n /**\n * Keeps track of whether the popup was opened via keyboard.\n * This is used to determine whether to autofocus the first element in the popup.\n * If the popup was opened via mouse, we do not want to autofocus the first element.\n */\n const openedViaKeyboardRef = useRef(false)\n\n const [mounted, setMounted] = useState(false)\n const [active, setActiveInternal] = useState(initActive)\n const [isOnTop, setIsOnTop] = useState(verticalAlign === 'top')\n\n // Track when component is mounted to avoid SSR/client hydration mismatch\n useEffect(() => {\n setMounted(true)\n }, [])\n\n const setActive = useCallback(\n (isActive: boolean, viaKeyboard = false) => {\n if (isActive) {\n openedViaKeyboardRef.current = viaKeyboard\n onToggleOpen?.(true)\n } else {\n onToggleClose?.()\n }\n setActiveInternal(isActive)\n },\n [onToggleClose, onToggleOpen],\n )\n\n // /////////////////////////////////////\n // Position Calculation\n //\n // Calculates and applies popup position relative to trigger.\n // Always checks viewport bounds (for flipping), but only updates\n // styles if the calculated position differs from current position.\n // /////////////////////////////////////\n\n const updatePosition = useEffectEvent(() => {\n const trigger = triggerRef.current\n const popup = popupRef.current\n if (!trigger || !popup) {\n return\n }\n\n const triggerRect = trigger.getBoundingClientRect()\n const popupRect = popup.getBoundingClientRect()\n\n // Gap between the popup and the trigger/viewport edges (in pixels)\n const offset = 10\n\n // /////////////////////////////////////\n // Vertical Positioning\n // Calculates the `top` position in absolute page coordinates.\n // Uses `verticalAlign` prop as the preferred direction, but flips\n // to the opposite side if there's not enough viewport space.\n // /////////////////////////////////////\n\n let top: number\n let onTop = verticalAlign === 'top'\n\n if (verticalAlign === 'bottom') {\n top = triggerRect.bottom + window.scrollY + offset\n\n if (triggerRect.bottom + popupRect.height + offset > window.innerHeight) {\n top = triggerRect.top + window.scrollY - popupRect.height - offset\n onTop = true\n }\n } else {\n top = triggerRect.top + window.scrollY - popupRect.height - offset\n\n if (triggerRect.top - popupRect.height - offset < 0) {\n top = triggerRect.bottom + window.scrollY + offset\n onTop = false\n }\n }\n\n setIsOnTop(onTop)\n\n // /////////////////////////////////////\n // Horizontal Positioning\n // Calculates the `left` position based on `horizontalAlign` prop:\n // - 'left': aligns popup's left edge with trigger's left edge\n // - 'right': aligns popup's right edge with trigger's right edge\n // - 'center': centers popup horizontally relative to trigger\n // Then clamps to keep the popup within viewport bounds.\n // /////////////////////////////////////\n\n let left =\n horizontalAlign === 'right'\n ? triggerRect.right - popupRect.width\n : horizontalAlign === 'center'\n ? triggerRect.left + triggerRect.width / 2 - popupRect.width / 2\n : triggerRect.left\n\n left = Math.max(offset, Math.min(left, window.innerWidth - popupRect.width - offset))\n\n // /////////////////////////////////////\n // Caret Positioning\n // Positions the caret arrow to point at the trigger's horizontal center.\n // Clamps between 12px from edges to prevent caret from overflowing the popup.\n // /////////////////////////////////////\n\n const triggerCenter = triggerRect.left + triggerRect.width / 2\n const caretLeft = Math.max(12, Math.min(triggerCenter - left, popupRect.width - 12))\n\n // /////////////////////////////////////\n // Apply Styles (only if changed)\n // Compares calculated position with current styles to avoid unnecessary\n // DOM updates during scroll. This prevents visual lag by relying on the absolute\n // positioning where possible (popup slightly lags behind when scrolling really fast),\n // while still allowing position changes when needed (e.g., sticky parent, viewport flip).\n // Values are rounded to match browser's CSS precision and avoid false updates.\n // /////////////////////////////////////\n\n const newTop = `${Math.round(top)}px`\n const newLeft = `${Math.round(left + window.scrollX)}px`\n const newCaretLeft = `${Math.round(caretLeft)}px`\n\n if (popup.style.top !== newTop) {\n popup.style.top = newTop\n }\n if (popup.style.left !== newLeft) {\n popup.style.left = newLeft\n }\n if (popup.style.getPropertyValue('--caret-left') !== newCaretLeft) {\n popup.style.setProperty('--caret-left', newCaretLeft)\n }\n })\n\n // /////////////////////////////////////\n // Click Outside Handler\n // Closes popup when clicking outside both the popup and trigger.\n // /////////////////////////////////////\n\n const handleClickOutside = useEffectEvent((e: MouseEvent) => {\n const isOutsidePopup = !popupRef.current?.contains(e.target as Node)\n const isOutsideTrigger = !triggerRef.current?.contains(e.target as Node)\n\n if (isOutsidePopup && isOutsideTrigger) {\n setActive(false)\n }\n })\n\n // /////////////////////////////////////\n // Keyboard Navigation\n // Handles keyboard interactions when popup is open:\n // - Escape: closes popup and returns focus to trigger\n // - Tab/Shift+Tab: cycles through focusable items with wrapping\n // - ArrowUp/ArrowDown: same as Shift+Tab/Tab for menu-style navigation\n // Focus is managed manually to support elements the browser might skip.\n // /////////////////////////////////////\n\n const handleKeyDown = useEffectEvent((e: KeyboardEvent) => {\n const popup = popupRef.current\n if (!popup || !active) {\n return\n }\n\n if (e.key === 'Escape') {\n e.preventDefault()\n setActive(false)\n triggerRef.current?.querySelector<HTMLElement>('button, [tabindex=\"0\"]')?.focus()\n return\n }\n\n if (e.key === 'Tab' || e.key === 'ArrowDown' || e.key === 'ArrowUp') {\n const focusable = Array.from(popup.querySelectorAll<HTMLElement>(TABBABLE_SELECTOR))\n if (focusable.length === 0) {\n return\n }\n\n e.preventDefault()\n\n const currentIndex = focusable.findIndex((el) => el === document.activeElement)\n const goBackward = e.key === 'ArrowUp' || (e.key === 'Tab' && e.shiftKey)\n\n let nextIndex: number\n if (currentIndex === -1) {\n nextIndex = goBackward ? focusable.length - 1 : 0\n } else if (goBackward) {\n nextIndex = currentIndex === 0 ? focusable.length - 1 : currentIndex - 1\n } else {\n nextIndex = currentIndex === focusable.length - 1 ? 0 : currentIndex + 1\n }\n\n focusable[nextIndex].focus()\n }\n })\n\n // /////////////////////////////////////\n // Click Handler for Actionable Elements\n // Closes popup when buttons/links inside are clicked (includes Enter/Space activation).\n // /////////////////////////////////////\n\n const handleActionableClick = useEffectEvent((e: MouseEvent) => {\n const target = e.target as HTMLElement\n\n // Allow opting out with data-popup-prevent-close attribute on element or ancestor\n if (target.closest('[data-popup-prevent-close]')) {\n return\n }\n\n // Check if the clicked element or any ancestor is an actionable element\n const actionable = target.closest('button, a[href], [role=\"button\"], [role=\"menuitem\"]')\n if (actionable && popupRef.current?.contains(actionable)) {\n setActive(false)\n }\n })\n\n // /////////////////////////////////////\n // Effect: Setup/Teardown position and focus management\n // /////////////////////////////////////\n\n useEffect(() => {\n if (!active) {\n return\n }\n\n const popup = popupRef.current\n if (!popup) {\n return\n }\n\n // /////////////////////////////////////\n // Initial Position\n // Calculate and apply popup position immediately on open.\n // /////////////////////////////////////\n\n updatePosition()\n\n // /////////////////////////////////////\n // Focus Management\n // When opened via keyboard, autofocus the first focusable button.\n // When opened via mouse, skip autofocus to avoid unwanted highlights.\n // /////////////////////////////////////\n\n if (openedViaKeyboardRef.current) {\n // Use requestAnimationFrame to ensure DOM is ready.\n requestAnimationFrame(() => {\n const firstFocusable = popup.querySelector<HTMLElement>(TABBABLE_SELECTOR)\n firstFocusable?.focus()\n })\n }\n\n // /////////////////////////////////////\n // Event Listeners\n // - resize/scroll: recalculate position (only applies styles if changed)\n // - mousedown: detect clicks outside to close\n // - keydown: handle keyboard navigation\n // /////////////////////////////////////\n\n window.addEventListener('resize', updatePosition)\n window.addEventListener('scroll', updatePosition, { capture: true, passive: true })\n document.addEventListener('mousedown', handleClickOutside)\n document.addEventListener('keydown', handleKeyDown)\n popup.addEventListener('click', handleActionableClick)\n\n return () => {\n window.removeEventListener('resize', updatePosition)\n window.removeEventListener('scroll', updatePosition, { capture: true })\n document.removeEventListener('mousedown', handleClickOutside)\n document.removeEventListener('keydown', handleKeyDown)\n popup.removeEventListener('click', handleActionableClick)\n }\n }, [active])\n\n useEffect(() => {\n if (forceOpen !== undefined) {\n setActive(forceOpen)\n }\n }, [forceOpen, setActive])\n\n const Trigger = (\n <PopupTrigger\n active={active}\n button={button}\n buttonType={buttonType}\n className={buttonClassName}\n disabled={disabled}\n noBackground={noBackground}\n setActive={setActive}\n size={buttonSize}\n />\n )\n\n return (\n <div className={[baseClass, className].filter(Boolean).join(' ')} id={id}>\n <div className={`${baseClass}__trigger-wrap`} ref={triggerRef}>\n {showOnHover ? (\n <div\n className={`${baseClass}__on-hover-watch`}\n onMouseEnter={() => setActive(true)}\n onMouseLeave={() => setActive(false)}\n role=\"button\"\n tabIndex={0}\n >\n {Trigger}\n </div>\n ) : (\n Trigger\n )}\n </div>\n\n {mounted\n ? // We need to make sure the popup is part of the DOM (although invisible), even if it's not active.\n // This ensures that components within the popup, like modals, do not unmount when the popup closes.\n // Otherwise, modals opened from the popup will close unexpectedly when clicking within the modal, since\n // that closes the popup due to the click outside handler.\n createPortal(\n <div\n className={\n active\n ? [\n `${baseClass}__content`,\n `${baseClass}--size-${size}`,\n isOnTop ? `${baseClass}--v-top` : `${baseClass}--v-bottom`,\n portalClassName,\n ]\n .filter(Boolean)\n .join(' ')\n : // Do not share any class names between active and disabled popups, to make sure\n // tests do not accidentally target inactive popups.\n `${baseClass}__hidden-content`\n }\n data-popup-id={id || undefined}\n ref={popupRef}\n >\n <div\n className={`${baseClass}__scroll-container${showScrollbar ? ` ${baseClass}__scroll-container--show-scrollbar` : ''}`}\n >\n {render?.({ close: () => setActive(false) })}\n {children}\n </div>\n {caret && <div className={`${baseClass}__caret`} />}\n </div>,\n document.body,\n )\n : null}\n </div>\n )\n}\n", "'use client'\n\n/**\n\nPolyfill taken and modified from https://github.com/bluesky-social/social-app/blob/ce0bf867ff3b50a495d8db242a7f55371bffeadc/src/lib/hooks/useNonReactiveCallback.ts\n\nCopyright 20232025 Bluesky PBC\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n */\n\nimport React, { useCallback, useInsertionEffect, useRef } from 'react'\n\n// This should be used sparingly. It erases reactivity, i.e. when the inputs\n// change, the function itself will remain the same. This means that if you\n// use this at a higher level of your tree, and then some state you read in it\n// changes, there is no mechanism for anything below in the tree to \"react\"\n// to this change (e.g. by knowing to call your function again).\n//\n// Also, you should avoid calling the returned function during rendering\n// since the values captured by it are going to lag behind.\n\nexport const useEffectEvent =\n 'useEffectEvent' in React && typeof React.useEffectEvent === 'function'\n ? // useEffectEvent is available in Next.js 16 / newer versions of React\n React.useEffectEvent\n : // eslint-disable-next-line @typescript-eslint/no-unsafe-function-type\n <T extends Function>(fn: T): T => {\n // useEffectEvent is not available in older versions of React, so we need to polyfill it\n const ref = useRef(fn)\n useInsertionEffect(() => {\n ref.current = fn\n }, [fn])\n return useCallback((...args: any) => {\n const latestFn = ref.current\n return latestFn(...args)\n }, []) as unknown as T\n }\n", "'use client'\nimport React from 'react'\n\nimport './index.scss'\n\nconst baseClass = 'popup-button'\n\nexport type PopupTriggerProps = {\n active: boolean\n button: React.ReactNode\n buttonType: 'custom' | 'default' | 'none'\n className?: string\n disabled?: boolean\n noBackground?: boolean\n setActive: (active: boolean, viaKeyboard?: boolean) => void\n size?: 'large' | 'medium' | 'small' | 'xsmall'\n}\n\nexport const PopupTrigger: React.FC<PopupTriggerProps> = (props) => {\n const { active, button, buttonType, className, disabled, noBackground, setActive, size } = props\n\n const classes = [\n baseClass,\n className,\n `${baseClass}--${buttonType}`,\n !noBackground && `${baseClass}--background`,\n size && `${baseClass}--size-${size}`,\n disabled && `${baseClass}--disabled`,\n ]\n .filter(Boolean)\n .join(' ')\n\n const handleClick = () => {\n setActive(!active, false)\n }\n\n const handleKeyDown = (e: React.KeyboardEvent) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault()\n setActive(!active, true)\n }\n }\n\n if (buttonType === 'none') {\n return null\n }\n\n if (buttonType === 'custom') {\n return (\n <div\n className={classes}\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n role=\"button\"\n tabIndex={0}\n >\n {button}\n </div>\n )\n }\n\n return (\n <button\n className={classes}\n disabled={disabled}\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n tabIndex={0}\n type=\"button\"\n >\n {button}\n </button>\n )\n}\n", "'use client'\nimport React, { useEffect } from 'react'\n\nimport { useIntersect } from '../../hooks/useIntersect.js'\nimport './index.scss'\n\nexport type Props = {\n alignCaret?: 'center' | 'left' | 'right'\n boundingRef?: React.RefObject<HTMLElement | null>\n children: React.ReactNode\n className?: string\n delay?: number\n position?: 'bottom' | 'top'\n show?: boolean\n /**\n * If the tooltip position should not change depending on if the toolbar is outside the boundingRef. @default false\n */\n staticPositioning?: boolean\n}\n\nexport const Tooltip: React.FC<Props> = (props) => {\n const {\n alignCaret = 'center',\n boundingRef,\n children,\n className,\n delay = 350,\n position: positionFromProps,\n show: showFromProps = true,\n staticPositioning = false,\n } = props\n\n const [show, setShow] = React.useState(showFromProps)\n const [position, setPosition] = React.useState<'bottom' | 'top'>('top')\n\n const getTitleAttribute = (content) => (typeof content === 'string' ? content : '')\n\n const [ref, intersectionEntry] = useIntersect(\n {\n root: boundingRef?.current || null,\n rootMargin: '-145px 0px 0px 100px',\n threshold: 0,\n },\n staticPositioning,\n )\n\n useEffect(() => {\n let timerID: NodeJS.Timeout\n\n // do not use the delay on transition-out\n if (delay && showFromProps) {\n timerID = setTimeout(() => {\n setShow(showFromProps)\n }, delay)\n } else {\n setShow(showFromProps)\n }\n\n return () => {\n if (timerID) {\n clearTimeout(timerID)\n }\n }\n }, [showFromProps, delay])\n\n useEffect(() => {\n if (staticPositioning) {\n return\n }\n setPosition(intersectionEntry?.isIntersecting ? 'top' : 'bottom')\n }, [intersectionEntry, staticPositioning])\n\n // The first aside is always on top. The purpose of that is that it can reliably be used for the interaction observer (as it's not moving around), to calculate the position of the actual tooltip.\n return (\n <React.Fragment>\n {!staticPositioning && (\n <aside\n aria-hidden=\"true\"\n className={['tooltip', className, `tooltip--caret-${alignCaret}`, 'tooltip--position-top']\n .filter(Boolean)\n .join(' ')}\n ref={ref}\n style={{ opacity: '0' }}\n >\n <div className=\"tooltip-content\">{children}</div>\n </aside>\n )}\n <aside\n className={[\n 'tooltip',\n className,\n show && 'tooltip--show',\n `tooltip--caret-${alignCaret}`,\n `tooltip--position-${positionFromProps || position}`,\n ]\n .filter(Boolean)\n .join(' ')}\n title={getTitleAttribute(children)}\n >\n <div className=\"tooltip-content\">{children}</div>\n </aside>\n </React.Fragment>\n )\n}\n", "'use client'\n\nimport type React from 'react'\n\nimport { useEffect, useRef, useState } from 'react'\n\ntype Intersect = [\n setNode: React.Dispatch<HTMLElement>,\n entry: IntersectionObserverEntry,\n node: HTMLElement,\n]\n\nexport const useIntersect = (\n { root = null, rootMargin = '0px', threshold = 0 } = {},\n disable?: boolean,\n): Intersect => {\n const [entry, updateEntry] = useState<IntersectionObserverEntry>()\n const [node, setNode] = useState(null)\n\n const observer = useRef(\n typeof window !== 'undefined' && 'IntersectionObserver' in window && !disable\n ? new window.IntersectionObserver(([ent]) => updateEntry(ent), {\n root,\n rootMargin,\n threshold,\n })\n : null,\n )\n\n useEffect(() => {\n if (disable) {\n return\n }\n const { current: currentObserver } = observer\n currentObserver.disconnect()\n\n if (node) {\n currentObserver.observe(node)\n }\n\n return () => currentObserver.disconnect()\n }, [node, disable])\n\n return [setNode, entry, node]\n}\n", "import type { ClientBlock, ClientField } from 'payload'\n\nimport { fieldAffectsData, fieldHasSubFields } from 'payload/shared'\n\nimport type { ClipboardPasteActionValidateArgs } from './types.js'\n\n/**\n * Validates whether clipboard data is compatible with the target schema.\n * For this to be true, the copied field and the target to be pasted must\n * be structurally equivalent (same schema)\n *\n * @returns True if the clipboard data is valid and can be pasted, false otherwise\n */\nexport function isClipboardDataValid({ data, path, ...args }: ClipboardPasteActionValidateArgs) {\n if (typeof data === 'undefined' || !path || !args.type) {\n return false\n }\n\n if (args.type === 'blocks') {\n return isClipboardBlocksValid({\n blocksFromClipboard: args.blocks,\n blocksFromConfig: args.schemaBlocks,\n })\n } else {\n return isClipboardFieldsValid({\n fieldsFromClipboard: args.fields,\n fieldsFromConfig: args.schemaFields,\n })\n }\n}\n\nfunction isClipboardFieldsValid({\n fieldsFromClipboard,\n fieldsFromConfig,\n}: {\n fieldsFromClipboard: ClientField[]\n fieldsFromConfig?: ClientField[]\n}): boolean {\n if (!fieldsFromConfig || fieldsFromClipboard.length !== fieldsFromConfig?.length) {\n return false\n }\n\n return fieldsFromClipboard.every((clipboardField, i) => {\n const configField = fieldsFromConfig[i]\n\n if (clipboardField.type !== configField.type) {\n return false\n }\n\n const affectsData = fieldAffectsData(clipboardField) && fieldAffectsData(configField)\n if (affectsData && clipboardField.name !== configField.name) {\n return false\n }\n\n const hasNestedFieldsConfig = fieldHasSubFields(configField)\n const hasNestedFieldsClipboard = fieldHasSubFields(clipboardField)\n if (hasNestedFieldsClipboard !== hasNestedFieldsConfig) {\n return false\n }\n\n if (hasNestedFieldsClipboard && hasNestedFieldsConfig) {\n return isClipboardFieldsValid({\n fieldsFromClipboard: clipboardField.fields,\n fieldsFromConfig: configField.fields,\n })\n }\n\n return true\n })\n}\n\nfunction isClipboardBlocksValid({\n blocksFromClipboard,\n blocksFromConfig,\n}: {\n blocksFromClipboard: ClientBlock[]\n blocksFromConfig?: ClientBlock[]\n}) {\n const configBlockMap = new Map(blocksFromConfig?.map((block) => [block.slug, block]))\n\n if (!configBlockMap.size) {\n return false\n }\n\n const checkedSlugs = new Set<string>()\n\n for (const currBlock of blocksFromClipboard) {\n const currSlug = currBlock.slug\n\n if (!checkedSlugs.has(currSlug)) {\n const configBlock = configBlockMap.get(currSlug)\n if (!configBlock) {\n return false\n }\n\n if (\n !isClipboardFieldsValid({\n fieldsFromClipboard: currBlock.fields,\n fieldsFromConfig: configBlock.fields,\n })\n ) {\n return false\n }\n\n checkedSlugs.add(currSlug)\n }\n }\n return true\n}\n", "import type {\n ClipboardCopyActionArgs,\n ClipboardPasteActionArgs,\n ClipboardPasteActionValidateArgs,\n ClipboardPasteData,\n} from './types.js'\n\nimport { isClipboardDataValid } from './isClipboardDataValid.js'\n\nconst localStorageClipboardKey = '_payloadClipboard'\n\n/**\n * @note This function doesn't use the Clipboard API, but localStorage. See rationale in #11513\n */\nexport function clipboardCopy(args: ClipboardCopyActionArgs): string | true {\n const { getDataToCopy, t, ...rest } = args\n\n const dataToWrite = {\n data: getDataToCopy(),\n ...rest,\n }\n\n try {\n localStorage.setItem(localStorageClipboardKey, JSON.stringify(dataToWrite))\n return true\n } catch (_err) {\n return t('error:unableToCopy')\n }\n}\n\n/**\n * @note This function doesn't use the Clipboard API, but localStorage. See rationale in #11513\n */\nexport function clipboardPaste({\n onPaste,\n path: fieldPath,\n t,\n ...args\n}: ClipboardPasteActionArgs): string | true {\n let dataToPaste: ClipboardPasteData\n\n try {\n const jsonFromClipboard = localStorage.getItem(localStorageClipboardKey)\n\n if (!jsonFromClipboard) {\n return t('error:invalidClipboardData')\n }\n\n dataToPaste = JSON.parse(jsonFromClipboard)\n } catch (_err) {\n return t('error:invalidClipboardData')\n }\n\n const dataToValidate = {\n ...dataToPaste,\n ...args,\n fieldPath,\n } as ClipboardPasteActionValidateArgs\n\n if (!isClipboardDataValid(dataToValidate)) {\n return t('error:invalidClipboardData')\n }\n\n onPaste(dataToPaste)\n\n return true\n}\n", "'use client'\n\nimport type { FormStateWithoutComponents } from 'payload'\n\nimport { type FC, useCallback } from 'react'\nimport { toast } from 'sonner'\n\nimport type { ClipboardCopyData, OnPasteFn } from './types.js'\n\nimport { MoreIcon } from '../../icons/More/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { Popup, PopupList } from '../Popup/index.js'\nimport { ClipboardActionLabel } from './ClipboardActionLabel.js'\nimport { clipboardCopy, clipboardPaste } from './clipboardUtilities.js'\n\nconst baseClass = 'clipboard-action'\n\ntype Props = {\n allowCopy?: boolean\n allowPaste?: boolean\n className?: string\n copyClassName?: string\n disabled?: boolean\n getDataToCopy: () => FormStateWithoutComponents\n isRow?: boolean\n onPaste: OnPasteFn\n pasteClassName?: string\n} & ClipboardCopyData\n\n/**\n * Menu actions for copying and pasting fields. Currently, this is only used in Arrays and Blocks.\n * @note This component doesn't use the Clipboard API, but localStorage. See rationale in #11513\n */\nexport const ClipboardAction: FC<Props> = ({\n allowCopy,\n allowPaste,\n className,\n copyClassName,\n disabled,\n isRow,\n onPaste,\n pasteClassName,\n path,\n ...rest\n}) => {\n const { t } = useTranslation()\n\n const classes = [`${baseClass}__popup`, className].filter(Boolean).join(' ')\n\n const handleCopy = useCallback(() => {\n const clipboardResult = clipboardCopy({\n path,\n t,\n ...rest,\n })\n\n if (typeof clipboardResult === 'string') {\n toast.error(clipboardResult)\n } else {\n toast.success(t('general:copied'))\n }\n }, [t, rest, path])\n\n const handlePaste = useCallback(() => {\n const clipboardResult = clipboardPaste(\n rest.type === 'array'\n ? {\n onPaste,\n path,\n schemaFields: rest.fields,\n t,\n }\n : {\n onPaste,\n path,\n schemaBlocks: rest.blocks,\n t,\n },\n )\n\n if (typeof clipboardResult === 'string') {\n toast.error(clipboardResult)\n }\n }, [onPaste, rest, path, t])\n\n if (!allowPaste && !allowCopy) {\n return null\n }\n\n return (\n <Popup\n button={<MoreIcon />}\n className={classes}\n disabled={disabled}\n horizontalAlign=\"center\"\n render={({ close }) => (\n <PopupList.ButtonGroup>\n <PopupList.Button\n className={copyClassName}\n disabled={!allowCopy}\n onClick={() => {\n void handleCopy()\n close()\n }}\n >\n <ClipboardActionLabel isRow={isRow} />\n </PopupList.Button>\n <PopupList.Button\n className={pasteClassName}\n disabled={!allowPaste}\n onClick={() => {\n void handlePaste()\n close()\n }}\n >\n <ClipboardActionLabel isPaste isRow={isRow} />\n </PopupList.Button>\n </PopupList.ButtonGroup>\n )}\n size=\"large\"\n verticalAlign=\"bottom\"\n />\n )\n}\n", "import React from 'react'\n\nimport './index.scss'\n\nexport const MoreIcon: React.FC<{ className?: string }> = ({ className }) => (\n <svg\n className={['icon icon--more', className].filter(Boolean).join(' ')}\n viewBox=\"0 0 20 20\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n className=\"fill\"\n d=\"M10 10.6666C10.3682 10.6666 10.6667 10.3682 10.6667 9.99998C10.6667 9.63179 10.3682 9.33331 10 9.33331C9.63182 9.33331 9.33334 9.63179 9.33334 9.99998C9.33334 10.3682 9.63182 10.6666 10 10.6666Z\"\n strokeLinecap=\"square\"\n />\n <path\n className=\"fill\"\n d=\"M14.6667 10.6666C15.0349 10.6666 15.3333 10.3682 15.3333 9.99998C15.3333 9.63179 15.0349 9.33331 14.6667 9.33331C14.2985 9.33331 14 9.63179 14 9.99998C14 10.3682 14.2985 10.6666 14.6667 10.6666Z\"\n strokeLinecap=\"square\"\n />\n <path\n className=\"fill\"\n d=\"M5.33334 10.6666C5.70153 10.6666 6.00001 10.3682 6.00001 9.99998C6.00001 9.63179 5.70153 9.33331 5.33334 9.33331C4.96515 9.33331 4.66667 9.63179 4.66667 9.99998C4.66667 10.3682 4.96515 10.6666 5.33334 10.6666Z\"\n strokeLinecap=\"square\"\n />\n </svg>\n)\n", "'use client'\n\nimport { Fragment } from 'react'\n\nimport { CopyIcon } from '../../icons/Copy/index.js'\nimport { EditIcon } from '../../icons/Edit/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\n\nexport const ClipboardActionLabel = ({\n isPaste,\n isRow,\n}: {\n isPaste?: boolean\n isRow?: boolean\n}) => {\n const { t } = useTranslation()\n\n let label = t('general:copyField')\n if (!isRow && isPaste) {\n label = t('general:pasteField')\n } else if (isRow && !isPaste) {\n label = t('general:copyRow')\n } else if (isRow && isPaste) {\n label = t('general:pasteRow')\n }\n\n return (\n <Fragment>\n {isPaste ? <EditIcon /> : <CopyIcon />} {label}\n </Fragment>\n )\n}\n", "import React from 'react'\n\nimport './index.scss'\n\nexport const CopyIcon: React.FC = () => (\n // <svg className=\"icon icon--copy\" viewBox=\"0 0 25 25\" xmlns=\"http://www.w3.org/2000/svg\">\n // <rect className=\"stroke\" height=\"8\" width=\"8\" x=\"6.5\" y=\"10\" />\n // <path className=\"stroke\" d=\"M10 9.98438V6.5H18V14.5H14\" />\n // </svg>\n <svg className=\"icon icon--copy\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n className=\"stroke\"\n d=\"M4.66666 12.6667C3.93333 12.6667 3.33333 12.0667 3.33333 11.3333V4.66668C3.33333 3.93334 3.93333 3.33334 4.66666 3.33334H11.3333C12.0667 3.33334 12.6667 3.93334 12.6667 4.66668M8.66666 7.33334H15.3333C16.0697 7.33334 16.6667 7.9303 16.6667 8.66668V15.3333C16.6667 16.0697 16.0697 16.6667 15.3333 16.6667H8.66666C7.93028 16.6667 7.33333 16.0697 7.33333 15.3333V8.66668C7.33333 7.9303 7.93028 7.33334 8.66666 7.33334Z\"\n strokeLinecap=\"square\"\n />\n </svg>\n)\n", "import type { FieldState, FormState } from 'payload'\n\nimport type { ClipboardPasteData } from './types.js'\n\nexport function reduceFormStateByPath({\n formState,\n path,\n rowIndex,\n}: {\n formState: FormState\n path: string\n rowIndex?: number\n}) {\n const filteredState: Record<string, FieldState> = {}\n const prefix = typeof rowIndex !== 'number' ? path : `${path}.${rowIndex}`\n\n for (const key in formState) {\n if (!key.startsWith(prefix)) {\n continue\n }\n\n const { customComponents: _, validate: __, ...field } = formState[key]\n\n if (Array.isArray(field.rows)) {\n field.rows = field.rows.map((row) => {\n if (!row || typeof row !== 'object') {\n return row\n }\n const { customComponents: _, ...serializableRow } = row\n return serializableRow\n })\n }\n\n filteredState[key] = field\n }\n\n return filteredState\n}\n\nexport function mergeFormStateFromClipboard({\n dataFromClipboard: clipboardData,\n formState,\n path,\n rowIndex,\n}: {\n dataFromClipboard: ClipboardPasteData\n formState: FormState\n path: string\n rowIndex?: number\n}) {\n const {\n type: typeFromClipboard,\n data: dataFromClipboard,\n path: pathFromClipboard,\n rowIndex: rowIndexFromClipboard,\n } = clipboardData\n\n const copyFromField = typeof rowIndexFromClipboard !== 'number'\n const pasteIntoField = typeof rowIndex !== 'number'\n const fromRowToField = !copyFromField && pasteIntoField\n const isArray = typeFromClipboard === 'array'\n\n let pathToReplace: string\n if (copyFromField && pasteIntoField) {\n pathToReplace = pathFromClipboard\n } else if (copyFromField) {\n pathToReplace = `${pathFromClipboard}.${rowIndex}`\n } else {\n pathToReplace = `${pathFromClipboard}.${rowIndexFromClipboard}`\n }\n\n let targetSegment: string\n if (!pasteIntoField) {\n targetSegment = `${path}.${rowIndex}`\n } else if (fromRowToField) {\n targetSegment = `${path}.0`\n } else {\n targetSegment = path\n }\n\n if (fromRowToField) {\n const lastRenderedPath = `${path}.0`\n const rowIDFromClipboard = dataFromClipboard[`${pathToReplace}.id`].value as string\n const hasRows = formState[path].rows?.length\n\n formState[path].rows = [\n {\n ...(hasRows && isArray ? formState[path].rows[0] : {}),\n id: rowIDFromClipboard,\n isLoading: false,\n lastRenderedPath,\n },\n ]\n formState[path].value = 1\n formState[path].initialValue = 1\n formState[path].disableFormData = true\n\n for (const fieldPath in formState) {\n if (\n fieldPath !== path &&\n !fieldPath.startsWith(lastRenderedPath) &&\n fieldPath.startsWith(path)\n ) {\n delete formState[fieldPath]\n }\n }\n }\n\n for (const clipboardPath in dataFromClipboard) {\n // Pasting a row id, skip overwriting\n if (\n (!pasteIntoField && clipboardPath.endsWith('.id')) ||\n !clipboardPath.startsWith(pathToReplace)\n ) {\n continue\n }\n\n const newPath = clipboardPath.replace(pathToReplace, targetSegment)\n\n const customComponents = isArray ? formState[newPath]?.customComponents : undefined\n const validate = isArray ? formState[newPath]?.validate : undefined\n\n formState[newPath] = {\n customComponents,\n validate,\n ...dataFromClipboard[clipboardPath],\n }\n }\n\n return formState\n}\n", "'use client'\nimport type { UseDraggableArguments } from '@dnd-kit/core'\n\nimport React, { Fragment } from 'react'\n\nimport type { ChildFunction } from './types.js'\n\nimport { useDraggableSortable } from '../useDraggableSortable/index.js'\n\nexport const DraggableSortableItem: React.FC<\n {\n children: ChildFunction\n } & UseDraggableArguments\n> = (props) => {\n const { id, children, disabled } = props\n\n const { attributes, isDragging, listeners, setNodeRef, transform, transition } =\n useDraggableSortable({\n id,\n disabled,\n })\n\n return (\n <Fragment>\n {children({\n attributes: {\n ...attributes,\n style: {\n cursor: isDragging ? 'grabbing' : 'grab',\n },\n },\n isDragging,\n listeners,\n setNodeRef,\n transform,\n transition,\n })}\n </Fragment>\n )\n}\n", "'use client'\nimport type { UseDraggableArguments } from '@dnd-kit/core'\n\nimport { useSortable } from '@dnd-kit/sortable'\n\nimport type { UseDraggableSortableReturn } from './types.js'\n\nexport const useDraggableSortable = (props: UseDraggableArguments): UseDraggableSortableReturn => {\n const { id, disabled } = props\n\n const { attributes, isDragging, listeners, setNodeRef, transform, transition } = useSortable({\n id,\n disabled,\n transition: {\n duration: 250,\n easing: 'cubic-bezier(0, 0.2, 0.2, 1)',\n },\n })\n\n return {\n attributes: {\n ...attributes,\n style: {\n cursor: isDragging ? 'grabbing' : 'grab',\n transition,\n },\n },\n isDragging,\n listeners,\n setNodeRef,\n transform: transform && `translate3d(${transform.x}px, ${transform.y}px, 0)`, // translate3d is faster than translate in most browsers\n transition,\n }\n}\n", "import {useMemo} from 'react';\n\nexport function useCombinedRefs<T>(\n ...refs: ((node: T) => void)[]\n): (node: T) => void {\n return useMemo(\n () => (node: T) => {\n refs.forEach((ref) => ref(node));\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n refs\n );\n}\n", "// https://github.com/facebook/react/blob/master/packages/shared/ExecutionEnvironment.js\nexport const canUseDOM =\n typeof window !== 'undefined' &&\n typeof window.document !== 'undefined' &&\n typeof window.document.createElement !== 'undefined';\n", "export function isWindow(element: Object): element is typeof window {\n const elementString = Object.prototype.toString.call(element);\n return (\n elementString === '[object Window]' ||\n // In Electron context the Window object serializes to [object global]\n elementString === '[object global]'\n );\n}\n", "export function isNode(node: Object): node is Node {\n return 'nodeType' in node;\n}\n", "import {isWindow} from '../type-guards/isWindow';\nimport {isNode} from '../type-guards/isNode';\n\nexport function getWindow(target: Event['target']): typeof window {\n if (!target) {\n return window;\n }\n\n if (isWindow(target)) {\n return target;\n }\n\n if (!isNode(target)) {\n return window;\n }\n\n return target.ownerDocument?.defaultView ?? window;\n}\n", "import {getWindow} from '../execution-context/getWindow';\n\nexport function isDocument(node: Node): node is Document {\n const {Document} = getWindow(node);\n\n return node instanceof Document;\n}\n", "import {getWindow} from '../execution-context/getWindow';\n\nimport {isWindow} from './isWindow';\n\nexport function isHTMLElement(node: Node | Window): node is HTMLElement {\n if (isWindow(node)) {\n return false;\n }\n\n return node instanceof getWindow(node).HTMLElement;\n}\n", "import {getWindow} from '../execution-context/getWindow';\n\nexport function isSVGElement(node: Node): node is SVGElement {\n return node instanceof getWindow(node).SVGElement;\n}\n", "import {\n isWindow,\n isHTMLElement,\n isDocument,\n isNode,\n isSVGElement,\n} from '../type-guards';\n\nexport function getOwnerDocument(target: Event['target']): Document {\n if (!target) {\n return document;\n }\n\n if (isWindow(target)) {\n return target.document;\n }\n\n if (!isNode(target)) {\n return document;\n }\n\n if (isDocument(target)) {\n return target;\n }\n\n if (isHTMLElement(target) || isSVGElement(target)) {\n return target.ownerDocument;\n }\n\n return document;\n}\n", "import {useEffect, useLayoutEffect} from 'react';\n\nimport {canUseDOM} from '../execution-context';\n\n/**\n * A hook that resolves to useEffect on the server and useLayoutEffect on the client\n * @param callback {function} Callback function that is invoked when the dependencies of the hook change\n */\nexport const useIsomorphicLayoutEffect = canUseDOM\n ? useLayoutEffect\n : useEffect;\n", "import {useCallback, useRef} from 'react';\n\nimport {useIsomorphicLayoutEffect} from './useIsomorphicLayoutEffect';\n\nexport function useEvent<T extends Function>(handler: T | undefined) {\n const handlerRef = useRef<T | undefined>(handler);\n\n useIsomorphicLayoutEffect(() => {\n handlerRef.current = handler;\n });\n\n return useCallback(function (...args: any) {\n return handlerRef.current?.(...args);\n }, []);\n}\n", "import {useCallback, useRef} from 'react';\n\nexport function useInterval() {\n const intervalRef = useRef<number | null>(null);\n\n const set = useCallback((listener: Function, duration: number) => {\n intervalRef.current = setInterval(listener, duration);\n }, []);\n\n const clear = useCallback(() => {\n if (intervalRef.current !== null) {\n clearInterval(intervalRef.current);\n intervalRef.current = null;\n }\n }, []);\n\n return [set, clear] as const;\n}\n", "import {useRef} from 'react';\nimport type {DependencyList} from 'react';\n\nimport {useIsomorphicLayoutEffect} from './useIsomorphicLayoutEffect';\n\nexport function useLatestValue<T extends any>(\n value: T,\n dependencies: DependencyList = [value]\n) {\n const valueRef = useRef<T>(value);\n\n useIsomorphicLayoutEffect(() => {\n if (valueRef.current !== value) {\n valueRef.current = value;\n }\n }, dependencies);\n\n return valueRef;\n}\n", "import {useMemo, useRef} from 'react';\n\nexport function useLazyMemo<T>(\n callback: (prevValue: T | undefined) => T,\n dependencies: any[]\n) {\n const valueRef = useRef<T>();\n\n return useMemo(\n () => {\n const newValue = callback(valueRef.current);\n valueRef.current = newValue;\n\n return newValue;\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [...dependencies]\n );\n}\n", "import {useRef, useCallback} from 'react';\n\nimport {useEvent} from './useEvent';\n\nexport function useNodeRef(\n onChange?: (\n newElement: HTMLElement | null,\n previousElement: HTMLElement | null\n ) => void\n) {\n const onChangeHandler = useEvent(onChange);\n const node = useRef<HTMLElement | null>(null);\n const setNodeRef = useCallback(\n (element: HTMLElement | null) => {\n if (element !== node.current) {\n onChangeHandler?.(element, node.current);\n }\n\n node.current = element;\n },\n //eslint-disable-next-line\n []\n );\n\n return [node, setNodeRef] as const;\n}\n", "import {useRef, useEffect} from 'react';\n\nexport function usePrevious<T>(value: T) {\n const ref = useRef<T>();\n\n useEffect(() => {\n ref.current = value;\n }, [value]);\n\n return ref.current;\n}\n", "import {useMemo} from 'react';\n\nlet ids: Record<string, number> = {};\n\nexport function useUniqueId(prefix: string, value?: string) {\n return useMemo(() => {\n if (value) {\n return value;\n }\n\n const id = ids[prefix] == null ? 0 : ids[prefix] + 1;\n ids[prefix] = id;\n\n return `${prefix}-${id}`;\n }, [prefix, value]);\n}\n", "function createAdjustmentFn(modifier: number) {\n return <T extends Record<U, number>, U extends string>(\n object: T,\n ...adjustments: Partial<T>[]\n ): T => {\n return adjustments.reduce<T>(\n (accumulator, adjustment) => {\n const entries = Object.entries(adjustment) as [U, number][];\n\n for (const [key, valueAdjustment] of entries) {\n const value = accumulator[key];\n\n if (value != null) {\n accumulator[key] = (value + modifier * valueAdjustment) as T[U];\n }\n }\n\n return accumulator;\n },\n {\n ...object,\n }\n );\n };\n}\n\nexport const add = createAdjustmentFn(1);\nexport const subtract = createAdjustmentFn(-1);\n", "export function hasViewportRelativeCoordinates(\n event: Event\n): event is Event & Pick<PointerEvent, 'clientX' | 'clientY'> {\n return 'clientX' in event && 'clientY' in event;\n}\n", "import {getWindow} from '../execution-context';\n\nexport function isKeyboardEvent(\n event: Event | undefined | null\n): event is KeyboardEvent {\n if (!event) {\n return false;\n }\n\n const {KeyboardEvent} = getWindow(event.target);\n\n return KeyboardEvent && event instanceof KeyboardEvent;\n}\n", "import {getWindow} from '../execution-context';\n\nexport function isTouchEvent(\n event: Event | undefined | null\n): event is TouchEvent {\n if (!event) {\n return false;\n }\n\n const {TouchEvent} = getWindow(event.target);\n\n return TouchEvent && event instanceof TouchEvent;\n}\n", "import type {Coordinates} from './types';\nimport {isTouchEvent, hasViewportRelativeCoordinates} from '../event';\n\n/**\n * Returns the normalized x and y coordinates for mouse and touch events.\n */\nexport function getEventCoordinates(event: Event): Coordinates | null {\n if (isTouchEvent(event)) {\n if (event.touches && event.touches.length) {\n const {clientX: x, clientY: y} = event.touches[0];\n\n return {\n x,\n y,\n };\n } else if (event.changedTouches && event.changedTouches.length) {\n const {clientX: x, clientY: y} = event.changedTouches[0];\n\n return {\n x,\n y,\n };\n }\n }\n\n if (hasViewportRelativeCoordinates(event)) {\n return {\n x: event.clientX,\n y: event.clientY,\n };\n }\n\n return null;\n}\n", "export type Transform = {\n x: number;\n y: number;\n scaleX: number;\n scaleY: number;\n};\n\nexport interface Transition {\n property: string;\n easing: string;\n duration: number;\n}\n\nexport const CSS = Object.freeze({\n Translate: {\n toString(transform: Transform | null) {\n if (!transform) {\n return;\n }\n\n const {x, y} = transform;\n\n return `translate3d(${x ? Math.round(x) : 0}px, ${\n y ? Math.round(y) : 0\n }px, 0)`;\n },\n },\n Scale: {\n toString(transform: Transform | null) {\n if (!transform) {\n return;\n }\n\n const {scaleX, scaleY} = transform;\n\n return `scaleX(${scaleX}) scaleY(${scaleY})`;\n },\n },\n Transform: {\n toString(transform: Transform | null) {\n if (!transform) {\n return;\n }\n\n return [\n CSS.Translate.toString(transform),\n CSS.Scale.toString(transform),\n ].join(' ');\n },\n },\n Transition: {\n toString({property, duration, easing}: Transition) {\n return `${property} ${duration}ms ${easing}`;\n },\n },\n});\n", "const SELECTOR =\n 'a,frame,iframe,input:not([type=hidden]):not(:disabled),select:not(:disabled),textarea:not(:disabled),button:not(:disabled),*[tabindex]';\n\nexport function findFirstFocusableNode(\n element: HTMLElement\n): HTMLElement | null {\n if (element.matches(SELECTOR)) {\n return element;\n }\n\n return element.querySelector(SELECTOR);\n}\n", "/**\n * Move an array item to a different position. Returns a new array with the item moved to the new position.\n */\nexport function arrayMove<T>(array: T[], from: number, to: number): T[] {\n const newArray = array.slice();\n newArray.splice(\n to < 0 ? newArray.length + to : to,\n 0,\n newArray.splice(from, 1)[0]\n );\n\n return newArray;\n}\n", "/**\n * Swap an array item to a different position. Returns a new array with the item swapped to the new position.\n */\nexport function arraySwap<T>(array: T[], from: number, to: number): T[] {\n const newArray = array.slice();\n\n newArray[from] = array[to];\n newArray[to] = array[from];\n\n return newArray;\n}\n", "import type {\n ClientRect,\n UniqueIdentifier,\n UseDndContextReturnValue,\n} from '@dnd-kit/core';\n\nexport function getSortedRects(\n items: UniqueIdentifier[],\n rects: UseDndContextReturnValue['droppableRects']\n) {\n return items.reduce<ClientRect[]>((accumulator, id, index) => {\n const rect = rects.get(id);\n\n if (rect) {\n accumulator[index] = rect;\n }\n\n return accumulator;\n }, Array(items.length));\n}\n", "export function isValidIndex(index: number | null): index is number {\n return index !== null && index >= 0;\n}\n", "import type {UniqueIdentifier} from '@dnd-kit/core';\n\nexport function itemsEqual(a: UniqueIdentifier[], b: UniqueIdentifier[]) {\n if (a === b) {\n return true;\n }\n\n if (a.length !== b.length) {\n return false;\n }\n\n for (let i = 0; i < a.length; i++) {\n if (a[i] !== b[i]) {\n return false;\n }\n }\n\n return true;\n}\n", "import type {Disabled} from '../types';\n\nexport function normalizeDisabled(disabled: boolean | Disabled): Disabled {\n if (typeof disabled === 'boolean') {\n return {\n draggable: disabled,\n droppable: disabled,\n };\n }\n\n return disabled;\n}\n", "import type {ClientRect} from '@dnd-kit/core';\nimport type {SortingStrategy} from '../types';\n\n// To-do: We should be calculating scale transformation\nconst defaultScale = {\n scaleX: 1,\n scaleY: 1,\n};\n\nexport const horizontalListSortingStrategy: SortingStrategy = ({\n rects,\n activeNodeRect: fallbackActiveRect,\n activeIndex,\n overIndex,\n index,\n}) => {\n const activeNodeRect = rects[activeIndex] ?? fallbackActiveRect;\n\n if (!activeNodeRect) {\n return null;\n }\n\n const itemGap = getItemGap(rects, index, activeIndex);\n\n if (index === activeIndex) {\n const newIndexRect = rects[overIndex];\n\n if (!newIndexRect) {\n return null;\n }\n\n return {\n x:\n activeIndex < overIndex\n ? newIndexRect.left +\n newIndexRect.width -\n (activeNodeRect.left + activeNodeRect.width)\n : newIndexRect.left - activeNodeRect.left,\n y: 0,\n ...defaultScale,\n };\n }\n\n if (index > activeIndex && index <= overIndex) {\n return {\n x: -activeNodeRect.width - itemGap,\n y: 0,\n ...defaultScale,\n };\n }\n\n if (index < activeIndex && index >= overIndex) {\n return {\n x: activeNodeRect.width + itemGap,\n y: 0,\n ...defaultScale,\n };\n }\n\n return {\n x: 0,\n y: 0,\n ...defaultScale,\n };\n};\n\nfunction getItemGap(rects: ClientRect[], index: number, activeIndex: number) {\n const currentRect: ClientRect | undefined = rects[index];\n const previousRect: ClientRect | undefined = rects[index - 1];\n const nextRect: ClientRect | undefined = rects[index + 1];\n\n if (!currentRect || (!previousRect && !nextRect)) {\n return 0;\n }\n\n if (activeIndex < index) {\n return previousRect\n ? currentRect.left - (previousRect.left + previousRect.width)\n : nextRect.left - (currentRect.left + currentRect.width);\n }\n\n return nextRect\n ? nextRect.left - (currentRect.left + currentRect.width)\n : currentRect.left - (previousRect.left + previousRect.width);\n}\n", "import {arrayMove} from '../utilities';\nimport type {SortingStrategy} from '../types';\n\nexport const rectSortingStrategy: SortingStrategy = ({\n rects,\n activeIndex,\n overIndex,\n index,\n}) => {\n const newRects = arrayMove(rects, overIndex, activeIndex);\n\n const oldRect = rects[index];\n const newRect = newRects[index];\n\n if (!newRect || !oldRect) {\n return null;\n }\n\n return {\n x: newRect.left - oldRect.left,\n y: newRect.top - oldRect.top,\n scaleX: newRect.width / oldRect.width,\n scaleY: newRect.height / oldRect.height,\n };\n};\n", "import type {SortingStrategy} from '../types';\n\nexport const rectSwappingStrategy: SortingStrategy = ({\n activeIndex,\n index,\n rects,\n overIndex,\n}) => {\n let oldRect;\n let newRect;\n\n if (index === activeIndex) {\n oldRect = rects[index];\n newRect = rects[overIndex];\n }\n\n if (index === overIndex) {\n oldRect = rects[index];\n newRect = rects[activeIndex];\n }\n\n if (!newRect || !oldRect) {\n return null;\n }\n\n return {\n x: newRect.left - oldRect.left,\n y: newRect.top - oldRect.top,\n scaleX: newRect.width / oldRect.width,\n scaleY: newRect.height / oldRect.height,\n };\n};\n", "import type {ClientRect} from '@dnd-kit/core';\nimport type {SortingStrategy} from '../types';\n\n// To-do: We should be calculating scale transformation\nconst defaultScale = {\n scaleX: 1,\n scaleY: 1,\n};\n\nexport const verticalListSortingStrategy: SortingStrategy = ({\n activeIndex,\n activeNodeRect: fallbackActiveRect,\n index,\n rects,\n overIndex,\n}) => {\n const activeNodeRect = rects[activeIndex] ?? fallbackActiveRect;\n\n if (!activeNodeRect) {\n return null;\n }\n\n if (index === activeIndex) {\n const overIndexRect = rects[overIndex];\n\n if (!overIndexRect) {\n return null;\n }\n\n return {\n x: 0,\n y:\n activeIndex < overIndex\n ? overIndexRect.top +\n overIndexRect.height -\n (activeNodeRect.top + activeNodeRect.height)\n : overIndexRect.top - activeNodeRect.top,\n ...defaultScale,\n };\n }\n\n const itemGap = getItemGap(rects, index, activeIndex);\n\n if (index > activeIndex && index <= overIndex) {\n return {\n x: 0,\n y: -activeNodeRect.height - itemGap,\n ...defaultScale,\n };\n }\n\n if (index < activeIndex && index >= overIndex) {\n return {\n x: 0,\n y: activeNodeRect.height + itemGap,\n ...defaultScale,\n };\n }\n\n return {\n x: 0,\n y: 0,\n ...defaultScale,\n };\n};\n\nfunction getItemGap(\n clientRects: ClientRect[],\n index: number,\n activeIndex: number\n) {\n const currentRect: ClientRect | undefined = clientRects[index];\n const previousRect: ClientRect | undefined = clientRects[index - 1];\n const nextRect: ClientRect | undefined = clientRects[index + 1];\n\n if (!currentRect) {\n return 0;\n }\n\n if (activeIndex < index) {\n return previousRect\n ? currentRect.top - (previousRect.top + previousRect.height)\n : nextRect\n ? nextRect.top - (currentRect.top + currentRect.height)\n : 0;\n }\n\n return nextRect\n ? nextRect.top - (currentRect.top + currentRect.height)\n : previousRect\n ? currentRect.top - (previousRect.top + previousRect.height)\n : 0;\n}\n", "import React, {useEffect, useMemo, useRef} from 'react';\nimport {useDndContext, ClientRect, UniqueIdentifier} from '@dnd-kit/core';\nimport {useIsomorphicLayoutEffect, useUniqueId} from '@dnd-kit/utilities';\n\nimport type {Disabled, SortingStrategy} from '../types';\nimport {getSortedRects, itemsEqual, normalizeDisabled} from '../utilities';\nimport {rectSortingStrategy} from '../strategies';\n\nexport interface Props {\n children: React.ReactNode;\n items: (UniqueIdentifier | {id: UniqueIdentifier})[];\n strategy?: SortingStrategy;\n id?: string;\n disabled?: boolean | Disabled;\n}\n\nconst ID_PREFIX = 'Sortable';\n\ninterface ContextDescriptor {\n activeIndex: number;\n containerId: string;\n disabled: Disabled;\n disableTransforms: boolean;\n items: UniqueIdentifier[];\n overIndex: number;\n useDragOverlay: boolean;\n sortedRects: ClientRect[];\n strategy: SortingStrategy;\n}\n\nexport const Context = React.createContext<ContextDescriptor>({\n activeIndex: -1,\n containerId: ID_PREFIX,\n disableTransforms: false,\n items: [],\n overIndex: -1,\n useDragOverlay: false,\n sortedRects: [],\n strategy: rectSortingStrategy,\n disabled: {\n draggable: false,\n droppable: false,\n },\n});\n\nexport function SortableContext({\n children,\n id,\n items: userDefinedItems,\n strategy = rectSortingStrategy,\n disabled: disabledProp = false,\n}: Props) {\n const {\n active,\n dragOverlay,\n droppableRects,\n over,\n measureDroppableContainers,\n } = useDndContext();\n const containerId = useUniqueId(ID_PREFIX, id);\n const useDragOverlay = Boolean(dragOverlay.rect !== null);\n const items = useMemo<UniqueIdentifier[]>(\n () =>\n userDefinedItems.map((item) =>\n typeof item === 'object' && 'id' in item ? item.id : item\n ),\n [userDefinedItems]\n );\n const isDragging = active != null;\n const activeIndex = active ? items.indexOf(active.id) : -1;\n const overIndex = over ? items.indexOf(over.id) : -1;\n const previousItemsRef = useRef(items);\n const itemsHaveChanged = !itemsEqual(items, previousItemsRef.current);\n const disableTransforms =\n (overIndex !== -1 && activeIndex === -1) || itemsHaveChanged;\n const disabled = normalizeDisabled(disabledProp);\n\n useIsomorphicLayoutEffect(() => {\n if (itemsHaveChanged && isDragging) {\n measureDroppableContainers(items);\n }\n }, [itemsHaveChanged, items, isDragging, measureDroppableContainers]);\n\n useEffect(() => {\n previousItemsRef.current = items;\n }, [items]);\n\n const contextValue = useMemo(\n (): ContextDescriptor => ({\n activeIndex,\n containerId,\n disabled,\n disableTransforms,\n items,\n overIndex,\n useDragOverlay,\n sortedRects: getSortedRects(items, droppableRects),\n strategy,\n }),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [\n activeIndex,\n containerId,\n disabled.draggable,\n disabled.droppable,\n disableTransforms,\n items,\n overIndex,\n droppableRects,\n useDragOverlay,\n strategy,\n ]\n );\n\n return <Context.Provider value={contextValue}>{children}</Context.Provider>;\n}\n", "import {CSS} from '@dnd-kit/utilities';\n\nimport {arrayMove} from '../utilities';\n\nimport type {\n AnimateLayoutChanges,\n NewIndexGetter,\n SortableTransition,\n} from './types';\n\nexport const defaultNewIndexGetter: NewIndexGetter = ({\n id,\n items,\n activeIndex,\n overIndex,\n}) => arrayMove(items, activeIndex, overIndex).indexOf(id);\n\nexport const defaultAnimateLayoutChanges: AnimateLayoutChanges = ({\n containerId,\n isSorting,\n wasDragging,\n index,\n items,\n newIndex,\n previousItems,\n previousContainerId,\n transition,\n}) => {\n if (!transition || !wasDragging) {\n return false;\n }\n\n if (previousItems !== items && index === newIndex) {\n return false;\n }\n\n if (isSorting) {\n return true;\n }\n\n return newIndex !== index && containerId === previousContainerId;\n};\n\nexport const defaultTransition: SortableTransition = {\n duration: 200,\n easing: 'ease',\n};\n\nexport const transitionProperty = 'transform';\n\nexport const disabledTransition = CSS.Transition.toString({\n property: transitionProperty,\n duration: 0,\n easing: 'linear',\n});\n\nexport const defaultAttributes = {\n roleDescription: 'sortable',\n};\n", "import {useEffect, useRef, useState} from 'react';\nimport {getClientRect, ClientRect} from '@dnd-kit/core';\nimport {Transform, useIsomorphicLayoutEffect} from '@dnd-kit/utilities';\n\ninterface Arguments {\n rect: React.MutableRefObject<ClientRect | null>;\n disabled: boolean;\n index: number;\n node: React.MutableRefObject<HTMLElement | null>;\n}\n\n/*\n * When the index of an item changes while sorting,\n * we need to temporarily disable the transforms\n */\nexport function useDerivedTransform({disabled, index, node, rect}: Arguments) {\n const [derivedTransform, setDerivedtransform] = useState<Transform | null>(\n null\n );\n const previousIndex = useRef(index);\n\n useIsomorphicLayoutEffect(() => {\n if (!disabled && index !== previousIndex.current && node.current) {\n const initial = rect.current;\n\n if (initial) {\n const current = getClientRect(node.current, {\n ignoreTransform: true,\n });\n\n const delta = {\n x: initial.left - current.left,\n y: initial.top - current.top,\n scaleX: initial.width / current.width,\n scaleY: initial.height / current.height,\n };\n\n if (delta.x || delta.y) {\n setDerivedtransform(delta);\n }\n }\n }\n\n if (index !== previousIndex.current) {\n previousIndex.current = index;\n }\n }, [disabled, index, node, rect]);\n\n useEffect(() => {\n if (derivedTransform) {\n setDerivedtransform(null);\n }\n }, [derivedTransform]);\n\n return derivedTransform;\n}\n", "import {useContext, useEffect, useMemo, useRef} from 'react';\nimport {\n useDraggable,\n useDroppable,\n UseDraggableArguments,\n UseDroppableArguments,\n} from '@dnd-kit/core';\nimport type {Data} from '@dnd-kit/core';\nimport {CSS, isKeyboardEvent, useCombinedRefs} from '@dnd-kit/utilities';\n\nimport {Context} from '../components';\nimport type {Disabled, SortableData, SortingStrategy} from '../types';\nimport {isValidIndex} from '../utilities';\nimport {\n defaultAnimateLayoutChanges,\n defaultAttributes,\n defaultNewIndexGetter,\n defaultTransition,\n disabledTransition,\n transitionProperty,\n} from './defaults';\nimport type {\n AnimateLayoutChanges,\n NewIndexGetter,\n SortableTransition,\n} from './types';\nimport {useDerivedTransform} from './utilities';\n\nexport interface Arguments\n extends Omit<UseDraggableArguments, 'disabled'>,\n Pick<UseDroppableArguments, 'resizeObserverConfig'> {\n animateLayoutChanges?: AnimateLayoutChanges;\n disabled?: boolean | Disabled;\n getNewIndex?: NewIndexGetter;\n strategy?: SortingStrategy;\n transition?: SortableTransition | null;\n}\n\nexport function useSortable({\n animateLayoutChanges = defaultAnimateLayoutChanges,\n attributes: userDefinedAttributes,\n disabled: localDisabled,\n data: customData,\n getNewIndex = defaultNewIndexGetter,\n id,\n strategy: localStrategy,\n resizeObserverConfig,\n transition = defaultTransition,\n}: Arguments) {\n const {\n items,\n containerId,\n activeIndex,\n disabled: globalDisabled,\n disableTransforms,\n sortedRects,\n overIndex,\n useDragOverlay,\n strategy: globalStrategy,\n } = useContext(Context);\n const disabled: Disabled = normalizeLocalDisabled(\n localDisabled,\n globalDisabled\n );\n const index = items.indexOf(id);\n const data = useMemo<SortableData & Data>(\n () => ({sortable: {containerId, index, items}, ...customData}),\n [containerId, customData, index, items]\n );\n const itemsAfterCurrentSortable = useMemo(\n () => items.slice(items.indexOf(id)),\n [items, id]\n );\n const {\n rect,\n node,\n isOver,\n setNodeRef: setDroppableNodeRef,\n } = useDroppable({\n id,\n data,\n disabled: disabled.droppable,\n resizeObserverConfig: {\n updateMeasurementsFor: itemsAfterCurrentSortable,\n ...resizeObserverConfig,\n },\n });\n const {\n active,\n activatorEvent,\n activeNodeRect,\n attributes,\n setNodeRef: setDraggableNodeRef,\n listeners,\n isDragging,\n over,\n setActivatorNodeRef,\n transform,\n } = useDraggable({\n id,\n data,\n attributes: {\n ...defaultAttributes,\n ...userDefinedAttributes,\n },\n disabled: disabled.draggable,\n });\n const setNodeRef = useCombinedRefs(setDroppableNodeRef, setDraggableNodeRef);\n const isSorting = Boolean(active);\n const displaceItem =\n isSorting &&\n !disableTransforms &&\n isValidIndex(activeIndex) &&\n isValidIndex(overIndex);\n const shouldDisplaceDragSource = !useDragOverlay && isDragging;\n const dragSourceDisplacement =\n shouldDisplaceDragSource && displaceItem ? transform : null;\n const strategy = localStrategy ?? globalStrategy;\n const finalTransform = displaceItem\n ? dragSourceDisplacement ??\n strategy({\n rects: sortedRects,\n activeNodeRect,\n activeIndex,\n overIndex,\n index,\n })\n : null;\n const newIndex =\n isValidIndex(activeIndex) && isValidIndex(overIndex)\n ? getNewIndex({id, items, activeIndex, overIndex})\n : index;\n const activeId = active?.id;\n const previous = useRef({\n activeId,\n items,\n newIndex,\n containerId,\n });\n const itemsHaveChanged = items !== previous.current.items;\n const shouldAnimateLayoutChanges = animateLayoutChanges({\n active,\n containerId,\n isDragging,\n isSorting,\n id,\n index,\n items,\n newIndex: previous.current.newIndex,\n previousItems: previous.current.items,\n previousContainerId: previous.current.containerId,\n transition,\n wasDragging: previous.current.activeId != null,\n });\n\n const derivedTransform = useDerivedTransform({\n disabled: !shouldAnimateLayoutChanges,\n index,\n node,\n rect,\n });\n\n useEffect(() => {\n if (isSorting && previous.current.newIndex !== newIndex) {\n previous.current.newIndex = newIndex;\n }\n\n if (containerId !== previous.current.containerId) {\n previous.current.containerId = containerId;\n }\n\n if (items !== previous.current.items) {\n previous.current.items = items;\n }\n }, [isSorting, newIndex, containerId, items]);\n\n useEffect(() => {\n if (activeId === previous.current.activeId) {\n return;\n }\n\n if (activeId != null && previous.current.activeId == null) {\n previous.current.activeId = activeId;\n return;\n }\n\n const timeoutId = setTimeout(() => {\n previous.current.activeId = activeId;\n }, 50);\n\n return () => clearTimeout(timeoutId);\n }, [activeId]);\n\n return {\n active,\n activeIndex,\n attributes,\n data,\n rect,\n index,\n newIndex,\n items,\n isOver,\n isSorting,\n isDragging,\n listeners,\n node,\n overIndex,\n over,\n setNodeRef,\n setActivatorNodeRef,\n setDroppableNodeRef,\n setDraggableNodeRef,\n transform: derivedTransform ?? finalTransform,\n transition: getTransition(),\n };\n\n function getTransition() {\n if (\n // Temporarily disable transitions for a single frame to set up derived transforms\n derivedTransform ||\n // Or to prevent items jumping to back to their \"new\" position when items change\n (itemsHaveChanged && previous.current.newIndex === index)\n ) {\n return disabledTransition;\n }\n\n if (\n (shouldDisplaceDragSource && !isKeyboardEvent(activatorEvent)) ||\n !transition\n ) {\n return undefined;\n }\n\n if (isSorting || shouldAnimateLayoutChanges) {\n return CSS.Transition.toString({\n ...transition,\n property: transitionProperty,\n });\n }\n\n return undefined;\n }\n}\n\nfunction normalizeLocalDisabled(\n localDisabled: Arguments['disabled'],\n globalDisabled: Disabled\n) {\n if (typeof localDisabled === 'boolean') {\n return {\n draggable: localDisabled,\n // Backwards compatibility\n droppable: false,\n };\n }\n\n return {\n draggable: localDisabled?.draggable ?? globalDisabled.draggable,\n droppable: localDisabled?.droppable ?? globalDisabled.droppable,\n };\n}\n", "import type {\n Active,\n Data,\n DroppableContainer,\n DraggableNode,\n Over,\n} from '@dnd-kit/core';\n\nimport type {SortableData} from './data';\n\nexport function hasSortableData<\n T extends Active | Over | DraggableNode | DroppableContainer\n>(\n entry: T | null | undefined\n): entry is T & {data: {current: Data<SortableData>}} {\n if (!entry) {\n return false;\n }\n\n const data = entry.data.current;\n\n if (\n data &&\n 'sortable' in data &&\n typeof data.sortable === 'object' &&\n 'containerId' in data.sortable &&\n 'items' in data.sortable &&\n 'index' in data.sortable\n ) {\n return true;\n }\n\n return false;\n}\n", "import {\n closestCorners,\n getScrollableAncestors,\n getFirstCollision,\n KeyboardCode,\n DroppableContainer,\n KeyboardCoordinateGetter,\n} from '@dnd-kit/core';\nimport {subtract} from '@dnd-kit/utilities';\n\nimport {hasSortableData} from '../../types';\n\nconst directions: string[] = [\n KeyboardCode.Down,\n KeyboardCode.Right,\n KeyboardCode.Up,\n KeyboardCode.Left,\n];\n\nexport const sortableKeyboardCoordinates: KeyboardCoordinateGetter = (\n event,\n {\n context: {\n active,\n collisionRect,\n droppableRects,\n droppableContainers,\n over,\n scrollableAncestors,\n },\n }\n) => {\n if (directions.includes(event.code)) {\n event.preventDefault();\n\n if (!active || !collisionRect) {\n return;\n }\n\n const filteredContainers: DroppableContainer[] = [];\n\n droppableContainers.getEnabled().forEach((entry) => {\n if (!entry || entry?.disabled) {\n return;\n }\n\n const rect = droppableRects.get(entry.id);\n\n if (!rect) {\n return;\n }\n\n switch (event.code) {\n case KeyboardCode.Down:\n if (collisionRect.top < rect.top) {\n filteredContainers.push(entry);\n }\n break;\n case KeyboardCode.Up:\n if (collisionRect.top > rect.top) {\n filteredContainers.push(entry);\n }\n break;\n case KeyboardCode.Left:\n if (collisionRect.left > rect.left) {\n filteredContainers.push(entry);\n }\n break;\n case KeyboardCode.Right:\n if (collisionRect.left < rect.left) {\n filteredContainers.push(entry);\n }\n break;\n }\n });\n\n const collisions = closestCorners({\n active,\n collisionRect: collisionRect,\n droppableRects,\n droppableContainers: filteredContainers,\n pointerCoordinates: null,\n });\n let closestId = getFirstCollision(collisions, 'id');\n\n if (closestId === over?.id && collisions.length > 1) {\n closestId = collisions[1].id;\n }\n\n if (closestId != null) {\n const activeDroppable = droppableContainers.get(active.id);\n const newDroppable = droppableContainers.get(closestId);\n const newRect = newDroppable ? droppableRects.get(newDroppable.id) : null;\n const newNode = newDroppable?.node.current;\n\n if (newNode && newRect && activeDroppable && newDroppable) {\n const newScrollAncestors = getScrollableAncestors(newNode);\n const hasDifferentScrollAncestors = newScrollAncestors.some(\n (element, index) => scrollableAncestors[index] !== element\n );\n const hasSameContainer = isSameContainer(activeDroppable, newDroppable);\n const isAfterActive = isAfter(activeDroppable, newDroppable);\n const offset =\n hasDifferentScrollAncestors || !hasSameContainer\n ? {\n x: 0,\n y: 0,\n }\n : {\n x: isAfterActive ? collisionRect.width - newRect.width : 0,\n y: isAfterActive ? collisionRect.height - newRect.height : 0,\n };\n const rectCoordinates = {\n x: newRect.left,\n y: newRect.top,\n };\n\n const newCoordinates =\n offset.x && offset.y\n ? rectCoordinates\n : subtract(rectCoordinates, offset);\n\n return newCoordinates;\n }\n }\n }\n\n return undefined;\n};\n\nfunction isSameContainer(a: DroppableContainer, b: DroppableContainer) {\n if (!hasSortableData(a) || !hasSortableData(b)) {\n return false;\n }\n\n return (\n a.data.current.sortable.containerId === b.data.current.sortable.containerId\n );\n}\n\nfunction isAfter(a: DroppableContainer, b: DroppableContainer) {\n if (!hasSortableData(a) || !hasSortableData(b)) {\n return false;\n }\n\n if (!isSameContainer(a, b)) {\n return false;\n }\n\n return a.data.current.sortable.index < b.data.current.sortable.index;\n}\n", "'use client'\nimport type { DragEndEvent, DragStartEvent } from '@dnd-kit/core'\n\nimport {\n closestCenter,\n DndContext,\n KeyboardSensor,\n PointerSensor,\n useDroppable,\n useSensor,\n useSensors,\n} from '@dnd-kit/core'\nimport { SortableContext, sortableKeyboardCoordinates } from '@dnd-kit/sortable'\nimport React, { useCallback, useId } from 'react'\n\nimport type { Props } from './types.js'\n\nexport { Props }\n\nexport const DraggableSortable: React.FC<Props> = (props) => {\n const { children, className, ids, onDragEnd, onDragStart } = props\n\n const dndContextID = useId()\n const sortableContextID = useId()\n\n const { setNodeRef } = useDroppable({\n id: dndContextID,\n })\n\n const sensors = useSensors(\n useSensor(PointerSensor, {\n activationConstraint: {\n distance: 5,\n },\n }),\n useSensor(KeyboardSensor, {\n coordinateGetter: sortableKeyboardCoordinates,\n }),\n )\n\n const handleDragEnd = useCallback(\n (event: DragEndEvent) => {\n const { active, over } = event\n\n event.activatorEvent.stopPropagation()\n\n if (!active || !over) {\n return\n }\n\n if (typeof onDragEnd === 'function') {\n onDragEnd({\n event,\n moveFromIndex: ids.findIndex((_id) => _id === active.id),\n moveToIndex: ids.findIndex((_id) => _id === over.id),\n })\n }\n },\n [onDragEnd, ids],\n )\n\n const handleDragStart = useCallback(\n (event: DragStartEvent) => {\n const { active } = event\n\n if (!active) {\n return\n }\n\n if (typeof onDragStart === 'function') {\n onDragStart({ id: active.id, event })\n }\n },\n [onDragStart],\n )\n\n return (\n <DndContext\n collisionDetection={closestCenter}\n // Provide stable ID to fix hydration issues: https://github.com/clauderic/dnd-kit/issues/926\n id={dndContextID}\n onDragEnd={handleDragEnd}\n onDragStart={handleDragStart}\n sensors={sensors}\n >\n <SortableContext\n // Provide stable ID to fix hydration issues: https://github.com/clauderic/dnd-kit/issues/926\n id={sortableContextID}\n items={ids}\n >\n <div className={className} ref={setNodeRef}>\n {children}\n </div>\n </SortableContext>\n </DndContext>\n )\n}\n", "'use client'\nimport type { I18nClient } from '@payloadcms/translations'\n\nimport React from 'react'\n\nimport './index.scss'\n\nconst baseClass = 'error-pill'\n\nexport type ErrorPillProps = {\n className?: string\n count: number\n i18n: I18nClient\n withMessage?: boolean\n}\n\nexport const ErrorPill: React.FC<ErrorPillProps> = (props) => {\n const { className, count, i18n, withMessage } = props\n const lessThan3Chars = !withMessage && count < 99\n\n const classes = [baseClass, lessThan3Chars && `${baseClass}--fixed-width`, className && className]\n .filter(Boolean)\n .join(' ')\n\n if (count === 0) {\n return null\n }\n\n return (\n <div className={classes}>\n <div className={`${baseClass}__content`}>\n <span className={`${baseClass}__count`}>{count}</span>\n {withMessage && ` ${count > 1 ? i18n.t('general:errors') : i18n.t('general:error')}`}\n </div>\n </div>\n )\n}\n", "'use client'\nimport type { GenericDescriptionProps } from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport React from 'react'\n\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport './index.scss'\n\nconst baseClass = 'field-description'\n\nexport const FieldDescription: React.FC<GenericDescriptionProps> = (props) => {\n const { className, description, marginPlacement, path } = props\n\n const { i18n } = useTranslation()\n\n if (description) {\n return (\n <div\n className={[\n baseClass,\n className,\n `field-description-${path?.replace(/\\./g, '__')}`,\n marginPlacement && `${baseClass}--margin-${marginPlacement}`,\n ]\n .filter(Boolean)\n .join(' ')}\n >\n {getTranslation(description, i18n)}\n </div>\n )\n }\n\n return null\n}\n", "'use client'\n\nimport type { GenericErrorProps } from 'payload'\n\nimport React from 'react'\n\nimport { Tooltip } from '../../elements/Tooltip/index.js'\nimport { useFormFields, useFormSubmitted } from '../../forms/Form/context.js'\nimport './index.scss'\n\nconst baseClass = 'field-error'\n\nexport const FieldError: React.FC<GenericErrorProps> = (props) => {\n const {\n alignCaret = 'right',\n message: messageFromProps,\n path,\n showError: showErrorFromProps,\n } = props\n\n const hasSubmitted = useFormSubmitted()\n const field = useFormFields(([fields]) => (fields && fields?.[path]) || null)\n\n const { errorMessage, valid } = field || {}\n\n const message = messageFromProps || errorMessage\n const showMessage = showErrorFromProps || (hasSubmitted && valid === false)\n\n if (showMessage && message?.length) {\n return (\n <Tooltip alignCaret={alignCaret} className={baseClass} delay={0} staticPositioning>\n {message}\n </Tooltip>\n )\n }\n\n return null\n}\n", "'use client'\n\nimport type { GenericLabelProps } from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport React from 'react'\n\nimport { useForm } from '../../forms/Form/context.js'\nimport { useEditDepth } from '../../providers/EditDepth/index.js'\nimport { useLocale } from '../../providers/Locale/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { generateFieldID } from '../../utilities/generateFieldID.js'\nimport './index.scss'\n\nexport const FieldLabel: React.FC<GenericLabelProps> = (props) => {\n const {\n as: ElementFromProps = 'label',\n hideLocale = false,\n htmlFor: htmlForFromProps,\n label,\n localized = false,\n path,\n required = false,\n unstyled = false,\n } = props\n\n const { uuid } = useForm()\n const editDepth = useEditDepth()\n\n const htmlFor = htmlForFromProps || generateFieldID(path, editDepth, uuid)\n\n const { i18n } = useTranslation()\n const { code, label: localLabel } = useLocale()\n\n const Element =\n ElementFromProps === 'label' ? (htmlFor ? 'label' : 'span') : ElementFromProps || 'span'\n\n if (label) {\n return (\n <Element className={`field-label${unstyled ? ' unstyled' : ''}`} htmlFor={htmlFor}>\n {getTranslation(label, i18n)}\n {required && !unstyled && <span className=\"required\">*</span>}\n {localized && !hideLocale && (\n <span className=\"localized\">\n &mdash; {typeof localLabel === 'string' ? localLabel : code}\n </span>\n )}\n </Element>\n )\n }\n\n return null\n}\n", "'use client'\nimport React, { createContext, use } from 'react'\n\nexport const EditDepthContext = createContext(0)\n\nexport const EditDepthProvider: React.FC<{ children: React.ReactNode }> = ({ children }) => {\n const parentDepth = useEditDepth()\n const depth = parentDepth + 1\n\n return <EditDepthContext value={depth}>{children}</EditDepthContext>\n}\n\nexport const useEditDepth = (): number => use(EditDepthContext)\n", "'use client'\n\nimport type { Locale } from 'payload'\n\nimport { useSearchParams } from 'next/navigation.js'\nimport { formatAdminURL } from 'payload/shared'\nimport React, { createContext, use, useEffect, useRef, useState } from 'react'\n\nimport { findLocaleFromCode } from '../../utilities/findLocaleFromCode.js'\nimport { useAuth } from '../Auth/index.js'\nimport { useConfig } from '../Config/index.js'\n\nconst LocaleContext = createContext({} as Locale)\n\nexport const LocaleLoadingContext = createContext({\n localeIsLoading: false,\n setLocaleIsLoading: (_: boolean) => undefined,\n})\n\nconst fetchPreferences = async <T extends Record<string, unknown> | string>(\n key: string,\n baseURL: string,\n): Promise<{ id: string; value: T }> =>\n await fetch(`${baseURL}/payload-preferences/${key}`, {\n credentials: 'include',\n headers: {\n 'Content-Type': 'application/json',\n },\n method: 'GET',\n })?.then((res) => res.json() as Promise<{ id: string; value: T }>)\n\nexport const LocaleProvider: React.FC<{ children?: React.ReactNode; locale?: Locale['code'] }> = ({\n children,\n /**\n The `locale` prop originates from the root layout, which does not have access to search params\n This component uses the `useSearchParams` hook to get the locale from the URL as precedence over this prop\n This prop does not update as the user navigates the site, because the root layout does not re-render\n */\n locale: initialLocaleFromPrefs,\n}) => {\n const {\n config: {\n localization = false,\n routes: { api: apiRoute },\n },\n } = useConfig()\n\n const { user } = useAuth()\n\n const defaultLocale = localization ? localization.defaultLocale : 'en'\n\n const localeFromParams = useSearchParams().get('locale')\n\n const [locale, setLocale] = React.useState<Locale>(() => {\n if (!localization || (localization && !localization.locales.length)) {\n // TODO: return null V4\n return {} as Locale\n }\n\n return (\n findLocaleFromCode(localization, localeFromParams) ||\n findLocaleFromCode(localization, initialLocaleFromPrefs) ||\n findLocaleFromCode(localization, defaultLocale) ||\n findLocaleFromCode(localization, localization.locales[0].code)\n )\n })\n\n const [isLoading, setLocaleIsLoading] = useState(false)\n\n const prevLocale = useRef<Locale>(locale)\n\n useEffect(() => {\n /**\n * We need to set `isLoading` back to false once the locale is detected to be different\n * This happens when the user clicks an anchor link which appends the `?locale=` query param\n * This triggers a client-side navigation, which re-renders the page with the new locale\n * In Next.js, local state is persisted during this type of navigation because components are not unmounted\n */\n if (locale.code !== prevLocale.current.code) {\n setLocaleIsLoading(false)\n }\n\n prevLocale.current = locale\n }, [locale])\n\n const fetchURL = formatAdminURL({\n apiRoute,\n path: '',\n })\n\n useEffect(() => {\n /**\n * This effect should only run when `localeFromParams` changes, i.e. when the user clicks an anchor link\n * The root layout, which sends the initial locale from prefs, will not re-render as the user navigates the site\n * For this reason, we need to fetch the locale from prefs if the search params clears the `locale` query param\n */\n async function resetLocale() {\n if (localization && user?.id) {\n const localeToUse =\n localeFromParams ||\n (await fetchPreferences<Locale['code']>('locale', fetchURL)?.then((res) => res.value))\n\n const newLocale =\n findLocaleFromCode(localization, localeToUse) ||\n findLocaleFromCode(localization, defaultLocale) ||\n findLocaleFromCode(localization, localization?.locales?.[0]?.code)\n\n if (newLocale) {\n setLocale(newLocale)\n }\n }\n }\n\n void resetLocale()\n }, [defaultLocale, localization, fetchURL, localeFromParams, user?.id])\n\n return (\n <LocaleContext value={locale}>\n <LocaleLoadingContext value={{ localeIsLoading: isLoading, setLocaleIsLoading }}>\n {children}\n </LocaleLoadingContext>\n </LocaleContext>\n )\n}\n\nexport const useLocaleLoading = () => use(LocaleLoadingContext)\n\n/**\n * TODO: V4\n * The return type of the `useLocale` hook will change in v4. It will return `null | Locale` instead of `false | {} | Locale`.\n */\nexport const useLocale = (): Locale => use(LocaleContext)\n", "import type { Locale, SanitizedLocalizationConfig } from 'payload'\n/*\n return the Locale for given locale code, else return null\n*/\nexport const findLocaleFromCode = (\n localizationConfig: SanitizedLocalizationConfig,\n locale: string,\n): Locale | null => {\n if (!localizationConfig?.locales || localizationConfig.locales.length === 0) {\n return null\n }\n\n return localizationConfig.locales.find((el) => el?.code === locale)\n}\n", null, "function _extends() {\n return _extends = Object.assign ? Object.assign.bind() : function (n) {\n for (var e = 1; e < arguments.length; e++) {\n var t = arguments[e];\n for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]);\n }\n return n;\n }, _extends.apply(null, arguments);\n}\nexport { _extends as default };", "function _objectWithoutPropertiesLoose(r, e) {\n if (null == r) return {};\n var t = {};\n for (var n in r) if ({}.hasOwnProperty.call(r, n)) {\n if (-1 !== e.indexOf(n)) continue;\n t[n] = r[n];\n }\n return t;\n}\nexport { _objectWithoutPropertiesLoose as default };", "function _setPrototypeOf(t, e) {\n return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) {\n return t.__proto__ = e, t;\n }, _setPrototypeOf(t, e);\n}\nexport { _setPrototypeOf as default };", "import setPrototypeOf from \"./setPrototypeOf.js\";\nfunction _inheritsLoose(t, o) {\n t.prototype = Object.create(o.prototype), t.prototype.constructor = t, setPrototypeOf(t, o);\n}\nexport { _inheritsLoose as default };", "/**\n * Checks if a given element has a CSS class.\n * \n * @param element the element\n * @param className the CSS class name\n */\nexport default function hasClass(element, className) {\n if (element.classList) return !!className && element.classList.contains(className);\n return (\" \" + (element.className.baseVal || element.className) + \" \").indexOf(\" \" + className + \" \") !== -1;\n}", "import hasClass from './hasClass';\n/**\n * Adds a CSS class to a given element.\n * \n * @param element the element\n * @param className the CSS class name\n */\n\nexport default function addClass(element, className) {\n if (element.classList) element.classList.add(className);else if (!hasClass(element, className)) if (typeof element.className === 'string') element.className = element.className + \" \" + className;else element.setAttribute('class', (element.className && element.className.baseVal || '') + \" \" + className);\n}", "function replaceClassName(origClass, classToRemove) {\n return origClass.replace(new RegExp(\"(^|\\\\s)\" + classToRemove + \"(?:\\\\s|$)\", 'g'), '$1').replace(/\\s+/g, ' ').replace(/^\\s*|\\s*$/g, '');\n}\n/**\n * Removes a CSS class from a given element.\n * \n * @param element the element\n * @param className the CSS class name\n */\n\n\nexport default function removeClass(element, className) {\n if (element.classList) {\n element.classList.remove(className);\n } else if (typeof element.className === 'string') {\n element.className = replaceClassName(element.className, className);\n } else {\n element.setAttribute('class', replaceClassName(element.className && element.className.baseVal || '', className));\n }\n}", "import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport PropTypes from 'prop-types';\nimport addOneClass from 'dom-helpers/addClass';\nimport removeOneClass from 'dom-helpers/removeClass';\nimport React from 'react';\nimport Transition from './Transition';\nimport { classNamesShape } from './utils/PropTypes';\nimport { forceReflow } from './utils/reflow';\n\nvar _addClass = function addClass(node, classes) {\n return node && classes && classes.split(' ').forEach(function (c) {\n return addOneClass(node, c);\n });\n};\n\nvar removeClass = function removeClass(node, classes) {\n return node && classes && classes.split(' ').forEach(function (c) {\n return removeOneClass(node, c);\n });\n};\n/**\n * A transition component inspired by the excellent\n * [ng-animate](https://docs.angularjs.org/api/ngAnimate) library, you should\n * use it if you're using CSS transitions or animations. It's built upon the\n * [`Transition`](https://reactcommunity.org/react-transition-group/transition)\n * component, so it inherits all of its props.\n *\n * `CSSTransition` applies a pair of class names during the `appear`, `enter`,\n * and `exit` states of the transition. The first class is applied and then a\n * second `*-active` class in order to activate the CSS transition. After the\n * transition, matching `*-done` class names are applied to persist the\n * transition state.\n *\n * ```jsx\n * function App() {\n * const [inProp, setInProp] = useState(false);\n * return (\n * <div>\n * <CSSTransition in={inProp} timeout={200} classNames=\"my-node\">\n * <div>\n * {\"I'll receive my-node-* classes\"}\n * </div>\n * </CSSTransition>\n * <button type=\"button\" onClick={() => setInProp(true)}>\n * Click to Enter\n * </button>\n * </div>\n * );\n * }\n * ```\n *\n * When the `in` prop is set to `true`, the child component will first receive\n * the class `example-enter`, then the `example-enter-active` will be added in\n * the next tick. `CSSTransition` [forces a\n * reflow](https://github.com/reactjs/react-transition-group/blob/5007303e729a74be66a21c3e2205e4916821524b/src/CSSTransition.js#L208-L215)\n * between before adding the `example-enter-active`. This is an important trick\n * because it allows us to transition between `example-enter` and\n * `example-enter-active` even though they were added immediately one after\n * another. Most notably, this is what makes it possible for us to animate\n * _appearance_.\n *\n * ```css\n * .my-node-enter {\n * opacity: 0;\n * }\n * .my-node-enter-active {\n * opacity: 1;\n * transition: opacity 200ms;\n * }\n * .my-node-exit {\n * opacity: 1;\n * }\n * .my-node-exit-active {\n * opacity: 0;\n * transition: opacity 200ms;\n * }\n * ```\n *\n * `*-active` classes represent which styles you want to animate **to**, so it's\n * important to add `transition` declaration only to them, otherwise transitions\n * might not behave as intended! This might not be obvious when the transitions\n * are symmetrical, i.e. when `*-enter-active` is the same as `*-exit`, like in\n * the example above (minus `transition`), but it becomes apparent in more\n * complex transitions.\n *\n * **Note**: If you're using the\n * [`appear`](http://reactcommunity.org/react-transition-group/transition#Transition-prop-appear)\n * prop, make sure to define styles for `.appear-*` classes as well.\n */\n\n\nvar CSSTransition = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(CSSTransition, _React$Component);\n\n function CSSTransition() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n _this.appliedClasses = {\n appear: {},\n enter: {},\n exit: {}\n };\n\n _this.onEnter = function (maybeNode, maybeAppearing) {\n var _this$resolveArgument = _this.resolveArguments(maybeNode, maybeAppearing),\n node = _this$resolveArgument[0],\n appearing = _this$resolveArgument[1];\n\n _this.removeClasses(node, 'exit');\n\n _this.addClass(node, appearing ? 'appear' : 'enter', 'base');\n\n if (_this.props.onEnter) {\n _this.props.onEnter(maybeNode, maybeAppearing);\n }\n };\n\n _this.onEntering = function (maybeNode, maybeAppearing) {\n var _this$resolveArgument2 = _this.resolveArguments(maybeNode, maybeAppearing),\n node = _this$resolveArgument2[0],\n appearing = _this$resolveArgument2[1];\n\n var type = appearing ? 'appear' : 'enter';\n\n _this.addClass(node, type, 'active');\n\n if (_this.props.onEntering) {\n _this.props.onEntering(maybeNode, maybeAppearing);\n }\n };\n\n _this.onEntered = function (maybeNode, maybeAppearing) {\n var _this$resolveArgument3 = _this.resolveArguments(maybeNode, maybeAppearing),\n node = _this$resolveArgument3[0],\n appearing = _this$resolveArgument3[1];\n\n var type = appearing ? 'appear' : 'enter';\n\n _this.removeClasses(node, type);\n\n _this.addClass(node, type, 'done');\n\n if (_this.props.onEntered) {\n _this.props.onEntered(maybeNode, maybeAppearing);\n }\n };\n\n _this.onExit = function (maybeNode) {\n var _this$resolveArgument4 = _this.resolveArguments(maybeNode),\n node = _this$resolveArgument4[0];\n\n _this.removeClasses(node, 'appear');\n\n _this.removeClasses(node, 'enter');\n\n _this.addClass(node, 'exit', 'base');\n\n if (_this.props.onExit) {\n _this.props.onExit(maybeNode);\n }\n };\n\n _this.onExiting = function (maybeNode) {\n var _this$resolveArgument5 = _this.resolveArguments(maybeNode),\n node = _this$resolveArgument5[0];\n\n _this.addClass(node, 'exit', 'active');\n\n if (_this.props.onExiting) {\n _this.props.onExiting(maybeNode);\n }\n };\n\n _this.onExited = function (maybeNode) {\n var _this$resolveArgument6 = _this.resolveArguments(maybeNode),\n node = _this$resolveArgument6[0];\n\n _this.removeClasses(node, 'exit');\n\n _this.addClass(node, 'exit', 'done');\n\n if (_this.props.onExited) {\n _this.props.onExited(maybeNode);\n }\n };\n\n _this.resolveArguments = function (maybeNode, maybeAppearing) {\n return _this.props.nodeRef ? [_this.props.nodeRef.current, maybeNode] // here `maybeNode` is actually `appearing`\n : [maybeNode, maybeAppearing];\n };\n\n _this.getClassNames = function (type) {\n var classNames = _this.props.classNames;\n var isStringClassNames = typeof classNames === 'string';\n var prefix = isStringClassNames && classNames ? classNames + \"-\" : '';\n var baseClassName = isStringClassNames ? \"\" + prefix + type : classNames[type];\n var activeClassName = isStringClassNames ? baseClassName + \"-active\" : classNames[type + \"Active\"];\n var doneClassName = isStringClassNames ? baseClassName + \"-done\" : classNames[type + \"Done\"];\n return {\n baseClassName: baseClassName,\n activeClassName: activeClassName,\n doneClassName: doneClassName\n };\n };\n\n return _this;\n }\n\n var _proto = CSSTransition.prototype;\n\n _proto.addClass = function addClass(node, type, phase) {\n var className = this.getClassNames(type)[phase + \"ClassName\"];\n\n var _this$getClassNames = this.getClassNames('enter'),\n doneClassName = _this$getClassNames.doneClassName;\n\n if (type === 'appear' && phase === 'done' && doneClassName) {\n className += \" \" + doneClassName;\n } // This is to force a repaint,\n // which is necessary in order to transition styles when adding a class name.\n\n\n if (phase === 'active') {\n if (node) forceReflow(node);\n }\n\n if (className) {\n this.appliedClasses[type][phase] = className;\n\n _addClass(node, className);\n }\n };\n\n _proto.removeClasses = function removeClasses(node, type) {\n var _this$appliedClasses$ = this.appliedClasses[type],\n baseClassName = _this$appliedClasses$.base,\n activeClassName = _this$appliedClasses$.active,\n doneClassName = _this$appliedClasses$.done;\n this.appliedClasses[type] = {};\n\n if (baseClassName) {\n removeClass(node, baseClassName);\n }\n\n if (activeClassName) {\n removeClass(node, activeClassName);\n }\n\n if (doneClassName) {\n removeClass(node, doneClassName);\n }\n };\n\n _proto.render = function render() {\n var _this$props = this.props,\n _ = _this$props.classNames,\n props = _objectWithoutPropertiesLoose(_this$props, [\"classNames\"]);\n\n return /*#__PURE__*/React.createElement(Transition, _extends({}, props, {\n onEnter: this.onEnter,\n onEntered: this.onEntered,\n onEntering: this.onEntering,\n onExit: this.onExit,\n onExiting: this.onExiting,\n onExited: this.onExited\n }));\n };\n\n return CSSTransition;\n}(React.Component);\n\nCSSTransition.defaultProps = {\n classNames: ''\n};\nCSSTransition.propTypes = process.env.NODE_ENV !== \"production\" ? _extends({}, Transition.propTypes, {\n /**\n * The animation classNames applied to the component as it appears, enters,\n * exits or has finished the transition. A single name can be provided, which\n * will be suffixed for each stage, e.g. `classNames=\"fade\"` applies:\n *\n * - `fade-appear`, `fade-appear-active`, `fade-appear-done`\n * - `fade-enter`, `fade-enter-active`, `fade-enter-done`\n * - `fade-exit`, `fade-exit-active`, `fade-exit-done`\n *\n * A few details to note about how these classes are applied:\n *\n * 1. They are _joined_ with the ones that are already defined on the child\n * component, so if you want to add some base styles, you can use\n * `className` without worrying that it will be overridden.\n *\n * 2. If the transition component mounts with `in={false}`, no classes are\n * applied yet. You might be expecting `*-exit-done`, but if you think\n * about it, a component cannot finish exiting if it hasn't entered yet.\n *\n * 2. `fade-appear-done` and `fade-enter-done` will _both_ be applied. This\n * allows you to define different behavior for when appearing is done and\n * when regular entering is done, using selectors like\n * `.fade-enter-done:not(.fade-appear-done)`. For example, you could apply\n * an epic entrance animation when element first appears in the DOM using\n * [Animate.css](https://daneden.github.io/animate.css/). Otherwise you can\n * simply use `fade-enter-done` for defining both cases.\n *\n * Each individual classNames can also be specified independently like:\n *\n * ```js\n * classNames={{\n * appear: 'my-appear',\n * appearActive: 'my-active-appear',\n * appearDone: 'my-done-appear',\n * enter: 'my-enter',\n * enterActive: 'my-active-enter',\n * enterDone: 'my-done-enter',\n * exit: 'my-exit',\n * exitActive: 'my-active-exit',\n * exitDone: 'my-done-exit',\n * }}\n * ```\n *\n * If you want to set these classes using CSS Modules:\n *\n * ```js\n * import styles from './styles.css';\n * ```\n *\n * you might want to use camelCase in your CSS file, that way could simply\n * spread them instead of listing them one by one:\n *\n * ```js\n * classNames={{ ...styles }}\n * ```\n *\n * @type {string | {\n * appear?: string,\n * appearActive?: string,\n * appearDone?: string,\n * enter?: string,\n * enterActive?: string,\n * enterDone?: string,\n * exit?: string,\n * exitActive?: string,\n * exitDone?: string,\n * }}\n */\n classNames: classNamesShape,\n\n /**\n * A `<Transition>` callback fired immediately after the 'enter' or 'appear' class is\n * applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool)\n */\n onEnter: PropTypes.func,\n\n /**\n * A `<Transition>` callback fired immediately after the 'enter-active' or\n * 'appear-active' class is applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool)\n */\n onEntering: PropTypes.func,\n\n /**\n * A `<Transition>` callback fired immediately after the 'enter' or\n * 'appear' classes are **removed** and the `done` class is added to the DOM node.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool)\n */\n onEntered: PropTypes.func,\n\n /**\n * A `<Transition>` callback fired immediately after the 'exit' class is\n * applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed\n *\n * @type Function(node: HtmlElement)\n */\n onExit: PropTypes.func,\n\n /**\n * A `<Transition>` callback fired immediately after the 'exit-active' is applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed\n *\n * @type Function(node: HtmlElement)\n */\n onExiting: PropTypes.func,\n\n /**\n * A `<Transition>` callback fired immediately after the 'exit' classes\n * are **removed** and the `exit-done` class is added to the DOM node.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed\n *\n * @type Function(node: HtmlElement)\n */\n onExited: PropTypes.func\n}) : {};\nexport default CSSTransition;", "import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport config from './config';\nimport { timeoutsShape } from './utils/PropTypes';\nimport TransitionGroupContext from './TransitionGroupContext';\nimport { forceReflow } from './utils/reflow';\nexport var UNMOUNTED = 'unmounted';\nexport var EXITED = 'exited';\nexport var ENTERING = 'entering';\nexport var ENTERED = 'entered';\nexport var EXITING = 'exiting';\n/**\n * The Transition component lets you describe a transition from one component\n * state to another _over time_ with a simple declarative API. Most commonly\n * it's used to animate the mounting and unmounting of a component, but can also\n * be used to describe in-place transition states as well.\n *\n * ---\n *\n * **Note**: `Transition` is a platform-agnostic base component. If you're using\n * transitions in CSS, you'll probably want to use\n * [`CSSTransition`](https://reactcommunity.org/react-transition-group/css-transition)\n * instead. It inherits all the features of `Transition`, but contains\n * additional features necessary to play nice with CSS transitions (hence the\n * name of the component).\n *\n * ---\n *\n * By default the `Transition` component does not alter the behavior of the\n * component it renders, it only tracks \"enter\" and \"exit\" states for the\n * components. It's up to you to give meaning and effect to those states. For\n * example we can add styles to a component when it enters or exits:\n *\n * ```jsx\n * import { Transition } from 'react-transition-group';\n *\n * const duration = 300;\n *\n * const defaultStyle = {\n * transition: `opacity ${duration}ms ease-in-out`,\n * opacity: 0,\n * }\n *\n * const transitionStyles = {\n * entering: { opacity: 1 },\n * entered: { opacity: 1 },\n * exiting: { opacity: 0 },\n * exited: { opacity: 0 },\n * };\n *\n * const Fade = ({ in: inProp }) => (\n * <Transition in={inProp} timeout={duration}>\n * {state => (\n * <div style={{\n * ...defaultStyle,\n * ...transitionStyles[state]\n * }}>\n * I'm a fade Transition!\n * </div>\n * )}\n * </Transition>\n * );\n * ```\n *\n * There are 4 main states a Transition can be in:\n * - `'entering'`\n * - `'entered'`\n * - `'exiting'`\n * - `'exited'`\n *\n * Transition state is toggled via the `in` prop. When `true` the component\n * begins the \"Enter\" stage. During this stage, the component will shift from\n * its current transition state, to `'entering'` for the duration of the\n * transition and then to the `'entered'` stage once it's complete. Let's take\n * the following example (we'll use the\n * [useState](https://reactjs.org/docs/hooks-reference.html#usestate) hook):\n *\n * ```jsx\n * function App() {\n * const [inProp, setInProp] = useState(false);\n * return (\n * <div>\n * <Transition in={inProp} timeout={500}>\n * {state => (\n * // ...\n * )}\n * </Transition>\n * <button onClick={() => setInProp(true)}>\n * Click to Enter\n * </button>\n * </div>\n * );\n * }\n * ```\n *\n * When the button is clicked the component will shift to the `'entering'` state\n * and stay there for 500ms (the value of `timeout`) before it finally switches\n * to `'entered'`.\n *\n * When `in` is `false` the same thing happens except the state moves from\n * `'exiting'` to `'exited'`.\n */\n\nvar Transition = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(Transition, _React$Component);\n\n function Transition(props, context) {\n var _this;\n\n _this = _React$Component.call(this, props, context) || this;\n var parentGroup = context; // In the context of a TransitionGroup all enters are really appears\n\n var appear = parentGroup && !parentGroup.isMounting ? props.enter : props.appear;\n var initialStatus;\n _this.appearStatus = null;\n\n if (props.in) {\n if (appear) {\n initialStatus = EXITED;\n _this.appearStatus = ENTERING;\n } else {\n initialStatus = ENTERED;\n }\n } else {\n if (props.unmountOnExit || props.mountOnEnter) {\n initialStatus = UNMOUNTED;\n } else {\n initialStatus = EXITED;\n }\n }\n\n _this.state = {\n status: initialStatus\n };\n _this.nextCallback = null;\n return _this;\n }\n\n Transition.getDerivedStateFromProps = function getDerivedStateFromProps(_ref, prevState) {\n var nextIn = _ref.in;\n\n if (nextIn && prevState.status === UNMOUNTED) {\n return {\n status: EXITED\n };\n }\n\n return null;\n } // getSnapshotBeforeUpdate(prevProps) {\n // let nextStatus = null\n // if (prevProps !== this.props) {\n // const { status } = this.state\n // if (this.props.in) {\n // if (status !== ENTERING && status !== ENTERED) {\n // nextStatus = ENTERING\n // }\n // } else {\n // if (status === ENTERING || status === ENTERED) {\n // nextStatus = EXITING\n // }\n // }\n // }\n // return { nextStatus }\n // }\n ;\n\n var _proto = Transition.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n this.updateStatus(true, this.appearStatus);\n };\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n var nextStatus = null;\n\n if (prevProps !== this.props) {\n var status = this.state.status;\n\n if (this.props.in) {\n if (status !== ENTERING && status !== ENTERED) {\n nextStatus = ENTERING;\n }\n } else {\n if (status === ENTERING || status === ENTERED) {\n nextStatus = EXITING;\n }\n }\n }\n\n this.updateStatus(false, nextStatus);\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.cancelNextCallback();\n };\n\n _proto.getTimeouts = function getTimeouts() {\n var timeout = this.props.timeout;\n var exit, enter, appear;\n exit = enter = appear = timeout;\n\n if (timeout != null && typeof timeout !== 'number') {\n exit = timeout.exit;\n enter = timeout.enter; // TODO: remove fallback for next major\n\n appear = timeout.appear !== undefined ? timeout.appear : enter;\n }\n\n return {\n exit: exit,\n enter: enter,\n appear: appear\n };\n };\n\n _proto.updateStatus = function updateStatus(mounting, nextStatus) {\n if (mounting === void 0) {\n mounting = false;\n }\n\n if (nextStatus !== null) {\n // nextStatus will always be ENTERING or EXITING.\n this.cancelNextCallback();\n\n if (nextStatus === ENTERING) {\n if (this.props.unmountOnExit || this.props.mountOnEnter) {\n var node = this.props.nodeRef ? this.props.nodeRef.current : ReactDOM.findDOMNode(this); // https://github.com/reactjs/react-transition-group/pull/749\n // With unmountOnExit or mountOnEnter, the enter animation should happen at the transition between `exited` and `entering`.\n // To make the animation happen, we have to separate each rendering and avoid being processed as batched.\n\n if (node) forceReflow(node);\n }\n\n this.performEnter(mounting);\n } else {\n this.performExit();\n }\n } else if (this.props.unmountOnExit && this.state.status === EXITED) {\n this.setState({\n status: UNMOUNTED\n });\n }\n };\n\n _proto.performEnter = function performEnter(mounting) {\n var _this2 = this;\n\n var enter = this.props.enter;\n var appearing = this.context ? this.context.isMounting : mounting;\n\n var _ref2 = this.props.nodeRef ? [appearing] : [ReactDOM.findDOMNode(this), appearing],\n maybeNode = _ref2[0],\n maybeAppearing = _ref2[1];\n\n var timeouts = this.getTimeouts();\n var enterTimeout = appearing ? timeouts.appear : timeouts.enter; // no enter animation skip right to ENTERED\n // if we are mounting and running this it means appear _must_ be set\n\n if (!mounting && !enter || config.disabled) {\n this.safeSetState({\n status: ENTERED\n }, function () {\n _this2.props.onEntered(maybeNode);\n });\n return;\n }\n\n this.props.onEnter(maybeNode, maybeAppearing);\n this.safeSetState({\n status: ENTERING\n }, function () {\n _this2.props.onEntering(maybeNode, maybeAppearing);\n\n _this2.onTransitionEnd(enterTimeout, function () {\n _this2.safeSetState({\n status: ENTERED\n }, function () {\n _this2.props.onEntered(maybeNode, maybeAppearing);\n });\n });\n });\n };\n\n _proto.performExit = function performExit() {\n var _this3 = this;\n\n var exit = this.props.exit;\n var timeouts = this.getTimeouts();\n var maybeNode = this.props.nodeRef ? undefined : ReactDOM.findDOMNode(this); // no exit animation skip right to EXITED\n\n if (!exit || config.disabled) {\n this.safeSetState({\n status: EXITED\n }, function () {\n _this3.props.onExited(maybeNode);\n });\n return;\n }\n\n this.props.onExit(maybeNode);\n this.safeSetState({\n status: EXITING\n }, function () {\n _this3.props.onExiting(maybeNode);\n\n _this3.onTransitionEnd(timeouts.exit, function () {\n _this3.safeSetState({\n status: EXITED\n }, function () {\n _this3.props.onExited(maybeNode);\n });\n });\n });\n };\n\n _proto.cancelNextCallback = function cancelNextCallback() {\n if (this.nextCallback !== null) {\n this.nextCallback.cancel();\n this.nextCallback = null;\n }\n };\n\n _proto.safeSetState = function safeSetState(nextState, callback) {\n // This shouldn't be necessary, but there are weird race conditions with\n // setState callbacks and unmounting in testing, so always make sure that\n // we can cancel any pending setState callbacks after we unmount.\n callback = this.setNextCallback(callback);\n this.setState(nextState, callback);\n };\n\n _proto.setNextCallback = function setNextCallback(callback) {\n var _this4 = this;\n\n var active = true;\n\n this.nextCallback = function (event) {\n if (active) {\n active = false;\n _this4.nextCallback = null;\n callback(event);\n }\n };\n\n this.nextCallback.cancel = function () {\n active = false;\n };\n\n return this.nextCallback;\n };\n\n _proto.onTransitionEnd = function onTransitionEnd(timeout, handler) {\n this.setNextCallback(handler);\n var node = this.props.nodeRef ? this.props.nodeRef.current : ReactDOM.findDOMNode(this);\n var doesNotHaveTimeoutOrListener = timeout == null && !this.props.addEndListener;\n\n if (!node || doesNotHaveTimeoutOrListener) {\n setTimeout(this.nextCallback, 0);\n return;\n }\n\n if (this.props.addEndListener) {\n var _ref3 = this.props.nodeRef ? [this.nextCallback] : [node, this.nextCallback],\n maybeNode = _ref3[0],\n maybeNextCallback = _ref3[1];\n\n this.props.addEndListener(maybeNode, maybeNextCallback);\n }\n\n if (timeout != null) {\n setTimeout(this.nextCallback, timeout);\n }\n };\n\n _proto.render = function render() {\n var status = this.state.status;\n\n if (status === UNMOUNTED) {\n return null;\n }\n\n var _this$props = this.props,\n children = _this$props.children,\n _in = _this$props.in,\n _mountOnEnter = _this$props.mountOnEnter,\n _unmountOnExit = _this$props.unmountOnExit,\n _appear = _this$props.appear,\n _enter = _this$props.enter,\n _exit = _this$props.exit,\n _timeout = _this$props.timeout,\n _addEndListener = _this$props.addEndListener,\n _onEnter = _this$props.onEnter,\n _onEntering = _this$props.onEntering,\n _onEntered = _this$props.onEntered,\n _onExit = _this$props.onExit,\n _onExiting = _this$props.onExiting,\n _onExited = _this$props.onExited,\n _nodeRef = _this$props.nodeRef,\n childProps = _objectWithoutPropertiesLoose(_this$props, [\"children\", \"in\", \"mountOnEnter\", \"unmountOnExit\", \"appear\", \"enter\", \"exit\", \"timeout\", \"addEndListener\", \"onEnter\", \"onEntering\", \"onEntered\", \"onExit\", \"onExiting\", \"onExited\", \"nodeRef\"]);\n\n return (\n /*#__PURE__*/\n // allows for nested Transitions\n React.createElement(TransitionGroupContext.Provider, {\n value: null\n }, typeof children === 'function' ? children(status, childProps) : React.cloneElement(React.Children.only(children), childProps))\n );\n };\n\n return Transition;\n}(React.Component);\n\nTransition.contextType = TransitionGroupContext;\nTransition.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /**\n * A React reference to DOM element that need to transition:\n * https://stackoverflow.com/a/51127130/4671932\n *\n * - When `nodeRef` prop is used, `node` is not passed to callback functions\n * (e.g. `onEnter`) because user already has direct access to the node.\n * - When changing `key` prop of `Transition` in a `TransitionGroup` a new\n * `nodeRef` need to be provided to `Transition` with changed `key` prop\n * (see\n * [test/CSSTransition-test.js](https://github.com/reactjs/react-transition-group/blob/13435f897b3ab71f6e19d724f145596f5910581c/test/CSSTransition-test.js#L362-L437)).\n */\n nodeRef: PropTypes.shape({\n current: typeof Element === 'undefined' ? PropTypes.any : function (propValue, key, componentName, location, propFullName, secret) {\n var value = propValue[key];\n return PropTypes.instanceOf(value && 'ownerDocument' in value ? value.ownerDocument.defaultView.Element : Element)(propValue, key, componentName, location, propFullName, secret);\n }\n }),\n\n /**\n * A `function` child can be used instead of a React element. This function is\n * called with the current transition status (`'entering'`, `'entered'`,\n * `'exiting'`, `'exited'`), which can be used to apply context\n * specific props to a component.\n *\n * ```jsx\n * <Transition in={this.state.in} timeout={150}>\n * {state => (\n * <MyComponent className={`fade fade-${state}`} />\n * )}\n * </Transition>\n * ```\n */\n children: PropTypes.oneOfType([PropTypes.func.isRequired, PropTypes.element.isRequired]).isRequired,\n\n /**\n * Show the component; triggers the enter or exit states\n */\n in: PropTypes.bool,\n\n /**\n * By default the child component is mounted immediately along with\n * the parent `Transition` component. If you want to \"lazy mount\" the component on the\n * first `in={true}` you can set `mountOnEnter`. After the first enter transition the component will stay\n * mounted, even on \"exited\", unless you also specify `unmountOnExit`.\n */\n mountOnEnter: PropTypes.bool,\n\n /**\n * By default the child component stays mounted after it reaches the `'exited'` state.\n * Set `unmountOnExit` if you'd prefer to unmount the component after it finishes exiting.\n */\n unmountOnExit: PropTypes.bool,\n\n /**\n * By default the child component does not perform the enter transition when\n * it first mounts, regardless of the value of `in`. If you want this\n * behavior, set both `appear` and `in` to `true`.\n *\n * > **Note**: there are no special appear states like `appearing`/`appeared`, this prop\n * > only adds an additional enter transition. However, in the\n * > `<CSSTransition>` component that first enter transition does result in\n * > additional `.appear-*` classes, that way you can choose to style it\n * > differently.\n */\n appear: PropTypes.bool,\n\n /**\n * Enable or disable enter transitions.\n */\n enter: PropTypes.bool,\n\n /**\n * Enable or disable exit transitions.\n */\n exit: PropTypes.bool,\n\n /**\n * The duration of the transition, in milliseconds.\n * Required unless `addEndListener` is provided.\n *\n * You may specify a single timeout for all transitions:\n *\n * ```jsx\n * timeout={500}\n * ```\n *\n * or individually:\n *\n * ```jsx\n * timeout={{\n * appear: 500,\n * enter: 300,\n * exit: 500,\n * }}\n * ```\n *\n * - `appear` defaults to the value of `enter`\n * - `enter` defaults to `0`\n * - `exit` defaults to `0`\n *\n * @type {number | { enter?: number, exit?: number, appear?: number }}\n */\n timeout: function timeout(props) {\n var pt = timeoutsShape;\n if (!props.addEndListener) pt = pt.isRequired;\n\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n return pt.apply(void 0, [props].concat(args));\n },\n\n /**\n * Add a custom transition end trigger. Called with the transitioning\n * DOM node and a `done` callback. Allows for more fine grained transition end\n * logic. Timeouts are still used as a fallback if provided.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * ```jsx\n * addEndListener={(node, done) => {\n * // use the css transitionend event to mark the finish of a transition\n * node.addEventListener('transitionend', done, false);\n * }}\n * ```\n */\n addEndListener: PropTypes.func,\n\n /**\n * Callback fired before the \"entering\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool) -> void\n */\n onEnter: PropTypes.func,\n\n /**\n * Callback fired after the \"entering\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool)\n */\n onEntering: PropTypes.func,\n\n /**\n * Callback fired after the \"entered\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool) -> void\n */\n onEntered: PropTypes.func,\n\n /**\n * Callback fired before the \"exiting\" status is applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExit: PropTypes.func,\n\n /**\n * Callback fired after the \"exiting\" status is applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExiting: PropTypes.func,\n\n /**\n * Callback fired after the \"exited\" status is applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExited: PropTypes.func\n} : {}; // Name the function so it is clearer in the documentation\n\nfunction noop() {}\n\nTransition.defaultProps = {\n in: false,\n mountOnEnter: false,\n unmountOnExit: false,\n appear: false,\n enter: true,\n exit: true,\n onEnter: noop,\n onEntering: noop,\n onEntered: noop,\n onExit: noop,\n onExiting: noop,\n onExited: noop\n};\nTransition.UNMOUNTED = UNMOUNTED;\nTransition.EXITED = EXITED;\nTransition.ENTERING = ENTERING;\nTransition.ENTERED = ENTERED;\nTransition.EXITING = EXITING;\nexport default Transition;", "export default {\n disabled: false\n};", "import React from 'react';\nexport default React.createContext(null);", "export var forceReflow = function forceReflow(node) {\n return node.scrollTop;\n};", "function _assertThisInitialized(e) {\n if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n return e;\n}\nexport { _assertThisInitialized as default };", null, null, null, "import {\n tabbable,\n focusable,\n isFocusable,\n isTabbable,\n getTabIndex,\n} from 'tabbable';\n\nconst activeFocusTraps = {\n activateTrap(trapStack, trap) {\n if (trapStack.length > 0) {\n const activeTrap = trapStack[trapStack.length - 1];\n if (activeTrap !== trap) {\n activeTrap.pause();\n }\n }\n\n const trapIndex = trapStack.indexOf(trap);\n if (trapIndex === -1) {\n trapStack.push(trap);\n } else {\n // move this existing trap to the front of the queue\n trapStack.splice(trapIndex, 1);\n trapStack.push(trap);\n }\n },\n\n deactivateTrap(trapStack, trap) {\n const trapIndex = trapStack.indexOf(trap);\n if (trapIndex !== -1) {\n trapStack.splice(trapIndex, 1);\n }\n\n if (trapStack.length > 0) {\n trapStack[trapStack.length - 1].unpause();\n }\n },\n};\n\nconst isSelectableInput = function (node) {\n return (\n node.tagName &&\n node.tagName.toLowerCase() === 'input' &&\n typeof node.select === 'function'\n );\n};\n\nconst isEscapeEvent = function (e) {\n return e?.key === 'Escape' || e?.key === 'Esc' || e?.keyCode === 27;\n};\n\nconst isTabEvent = function (e) {\n return e?.key === 'Tab' || e?.keyCode === 9;\n};\n\n// checks for TAB by default\nconst isKeyForward = function (e) {\n return isTabEvent(e) && !e.shiftKey;\n};\n\n// checks for SHIFT+TAB by default\nconst isKeyBackward = function (e) {\n return isTabEvent(e) && e.shiftKey;\n};\n\nconst delay = function (fn) {\n return setTimeout(fn, 0);\n};\n\n// Array.find/findIndex() are not supported on IE; this replicates enough\n// of Array.findIndex() for our needs\nconst findIndex = function (arr, fn) {\n let idx = -1;\n\n arr.every(function (value, i) {\n if (fn(value)) {\n idx = i;\n return false; // break\n }\n\n return true; // next\n });\n\n return idx;\n};\n\n/**\n * Get an option's value when it could be a plain value, or a handler that provides\n * the value.\n * @param {*} value Option's value to check.\n * @param {...*} [params] Any parameters to pass to the handler, if `value` is a function.\n * @returns {*} The `value`, or the handler's returned value.\n */\nconst valueOrHandler = function (value, ...params) {\n return typeof value === 'function' ? value(...params) : value;\n};\n\nconst getActualTarget = function (event) {\n // NOTE: If the trap is _inside_ a shadow DOM, event.target will always be the\n // shadow host. However, event.target.composedPath() will be an array of\n // nodes \"clicked\" from inner-most (the actual element inside the shadow) to\n // outer-most (the host HTML document). If we have access to composedPath(),\n // then use its first element; otherwise, fall back to event.target (and\n // this only works for an _open_ shadow DOM; otherwise,\n // composedPath()[0] === event.target always).\n return event.target.shadowRoot && typeof event.composedPath === 'function'\n ? event.composedPath()[0]\n : event.target;\n};\n\n// NOTE: this must be _outside_ `createFocusTrap()` to make sure all traps in this\n// current instance use the same stack if `userOptions.trapStack` isn't specified\nconst internalTrapStack = [];\n\nconst createFocusTrap = function (elements, userOptions) {\n // SSR: a live trap shouldn't be created in this type of environment so this\n // should be safe code to execute if the `document` option isn't specified\n const doc = userOptions?.document || document;\n\n const trapStack = userOptions?.trapStack || internalTrapStack;\n\n const config = {\n returnFocusOnDeactivate: true,\n escapeDeactivates: true,\n delayInitialFocus: true,\n isKeyForward,\n isKeyBackward,\n ...userOptions,\n };\n\n const state = {\n // containers given to createFocusTrap()\n // @type {Array<HTMLElement>}\n containers: [],\n\n // list of objects identifying tabbable nodes in `containers` in the trap\n // NOTE: it's possible that a group has no tabbable nodes if nodes get removed while the trap\n // is active, but the trap should never get to a state where there isn't at least one group\n // with at least one tabbable node in it (that would lead to an error condition that would\n // result in an error being thrown)\n // @type {Array<{\n // container: HTMLElement,\n // tabbableNodes: Array<HTMLElement>, // empty if none\n // focusableNodes: Array<HTMLElement>, // empty if none\n // posTabIndexesFound: boolean,\n // firstTabbableNode: HTMLElement|undefined,\n // lastTabbableNode: HTMLElement|undefined,\n // firstDomTabbableNode: HTMLElement|undefined,\n // lastDomTabbableNode: HTMLElement|undefined,\n // nextTabbableNode: (node: HTMLElement, forward: boolean) => HTMLElement|undefined\n // }>}\n containerGroups: [], // same order/length as `containers` list\n\n // references to objects in `containerGroups`, but only those that actually have\n // tabbable nodes in them\n // NOTE: same order as `containers` and `containerGroups`, but __not necessarily__\n // the same length\n tabbableGroups: [],\n\n nodeFocusedBeforeActivation: null,\n mostRecentlyFocusedNode: null,\n active: false,\n paused: false,\n\n // timer ID for when delayInitialFocus is true and initial focus in this trap\n // has been delayed during activation\n delayInitialFocusTimer: undefined,\n\n // the most recent KeyboardEvent for the configured nav key (typically [SHIFT+]TAB), if any\n recentNavEvent: undefined,\n };\n\n let trap; // eslint-disable-line prefer-const -- some private functions reference it, and its methods reference private functions, so we must declare here and define later\n\n /**\n * Gets a configuration option value.\n * @param {Object|undefined} configOverrideOptions If true, and option is defined in this set,\n * value will be taken from this object. Otherwise, value will be taken from base configuration.\n * @param {string} optionName Name of the option whose value is sought.\n * @param {string|undefined} [configOptionName] Name of option to use __instead of__ `optionName`\n * IIF `configOverrideOptions` is not defined. Otherwise, `optionName` is used.\n */\n const getOption = (configOverrideOptions, optionName, configOptionName) => {\n return configOverrideOptions &&\n configOverrideOptions[optionName] !== undefined\n ? configOverrideOptions[optionName]\n : config[configOptionName || optionName];\n };\n\n /**\n * Finds the index of the container that contains the element.\n * @param {HTMLElement} element\n * @param {Event} [event] If available, and `element` isn't directly found in any container,\n * the event's composed path is used to see if includes any known trap containers in the\n * case where the element is inside a Shadow DOM.\n * @returns {number} Index of the container in either `state.containers` or\n * `state.containerGroups` (the order/length of these lists are the same); -1\n * if the element isn't found.\n */\n const findContainerIndex = function (element, event) {\n const composedPath =\n typeof event?.composedPath === 'function'\n ? event.composedPath()\n : undefined;\n // NOTE: search `containerGroups` because it's possible a group contains no tabbable\n // nodes, but still contains focusable nodes (e.g. if they all have `tabindex=-1`)\n // and we still need to find the element in there\n return state.containerGroups.findIndex(\n ({ container, tabbableNodes }) =>\n container.contains(element) ||\n // fall back to explicit tabbable search which will take into consideration any\n // web components if the `tabbableOptions.getShadowRoot` option was used for\n // the trap, enabling shadow DOM support in tabbable (`Node.contains()` doesn't\n // look inside web components even if open)\n composedPath?.includes(container) ||\n tabbableNodes.find((node) => node === element)\n );\n };\n\n /**\n * Gets the node for the given option, which is expected to be an option that\n * can be either a DOM node, a string that is a selector to get a node, `false`\n * (if a node is explicitly NOT given), or a function that returns any of these\n * values.\n * @param {string} optionName\n * @returns {undefined | false | HTMLElement | SVGElement} Returns\n * `undefined` if the option is not specified; `false` if the option\n * resolved to `false` (node explicitly not given); otherwise, the resolved\n * DOM node.\n * @throws {Error} If the option is set, not `false`, and is not, or does not\n * resolve to a node.\n */\n const getNodeForOption = function (optionName, ...params) {\n let optionValue = config[optionName];\n\n if (typeof optionValue === 'function') {\n optionValue = optionValue(...params);\n }\n\n if (optionValue === true) {\n optionValue = undefined; // use default value\n }\n\n if (!optionValue) {\n if (optionValue === undefined || optionValue === false) {\n return optionValue;\n }\n // else, empty string (invalid), null (invalid), 0 (invalid)\n\n throw new Error(\n `\\`${optionName}\\` was specified but was not a node, or did not return a node`\n );\n }\n\n let node = optionValue; // could be HTMLElement, SVGElement, or non-empty string at this point\n\n if (typeof optionValue === 'string') {\n node = doc.querySelector(optionValue); // resolve to node, or null if fails\n if (!node) {\n throw new Error(\n `\\`${optionName}\\` as selector refers to no known node`\n );\n }\n }\n\n return node;\n };\n\n const getInitialFocusNode = function () {\n let node = getNodeForOption('initialFocus');\n\n // false explicitly indicates we want no initialFocus at all\n if (node === false) {\n return false;\n }\n\n if (node === undefined || !isFocusable(node, config.tabbableOptions)) {\n // option not specified nor focusable: use fallback options\n if (findContainerIndex(doc.activeElement) >= 0) {\n node = doc.activeElement;\n } else {\n const firstTabbableGroup = state.tabbableGroups[0];\n const firstTabbableNode =\n firstTabbableGroup && firstTabbableGroup.firstTabbableNode;\n\n // NOTE: `fallbackFocus` option function cannot return `false` (not supported)\n node = firstTabbableNode || getNodeForOption('fallbackFocus');\n }\n }\n\n if (!node) {\n throw new Error(\n 'Your focus-trap needs to have at least one focusable element'\n );\n }\n\n return node;\n };\n\n const updateTabbableNodes = function () {\n state.containerGroups = state.containers.map((container) => {\n const tabbableNodes = tabbable(container, config.tabbableOptions);\n\n // NOTE: if we have tabbable nodes, we must have focusable nodes; focusable nodes\n // are a superset of tabbable nodes since nodes with negative `tabindex` attributes\n // are focusable but not tabbable\n const focusableNodes = focusable(container, config.tabbableOptions);\n\n const firstTabbableNode =\n tabbableNodes.length > 0 ? tabbableNodes[0] : undefined;\n const lastTabbableNode =\n tabbableNodes.length > 0\n ? tabbableNodes[tabbableNodes.length - 1]\n : undefined;\n\n const firstDomTabbableNode = focusableNodes.find((node) =>\n isTabbable(node)\n );\n const lastDomTabbableNode = focusableNodes\n .slice()\n .reverse()\n .find((node) => isTabbable(node));\n\n const posTabIndexesFound = !!tabbableNodes.find(\n (node) => getTabIndex(node) > 0\n );\n\n return {\n container,\n tabbableNodes,\n focusableNodes,\n\n /** True if at least one node with positive `tabindex` was found in this container. */\n posTabIndexesFound,\n\n /** First tabbable node in container, __tabindex__ order; `undefined` if none. */\n firstTabbableNode,\n /** Last tabbable node in container, __tabindex__ order; `undefined` if none. */\n lastTabbableNode,\n\n // NOTE: DOM order is NOT NECESSARILY \"document position\" order, but figuring that out\n // would require more than just https://developer.mozilla.org/en-US/docs/Web/API/Node/compareDocumentPosition\n // because that API doesn't work with Shadow DOM as well as it should (@see\n // https://github.com/whatwg/dom/issues/320) and since this first/last is only needed, so far,\n // to address an edge case related to positive tabindex support, this seems like a much easier,\n // \"close enough most of the time\" alternative for positive tabindexes which should generally\n // be avoided anyway...\n /** First tabbable node in container, __DOM__ order; `undefined` if none. */\n firstDomTabbableNode,\n /** Last tabbable node in container, __DOM__ order; `undefined` if none. */\n lastDomTabbableNode,\n\n /**\n * Finds the __tabbable__ node that follows the given node in the specified direction,\n * in this container, if any.\n * @param {HTMLElement} node\n * @param {boolean} [forward] True if going in forward tab order; false if going\n * in reverse.\n * @returns {HTMLElement|undefined} The next tabbable node, if any.\n */\n nextTabbableNode(node, forward = true) {\n const nodeIdx = tabbableNodes.indexOf(node);\n if (nodeIdx < 0) {\n // either not tabbable nor focusable, or was focused but not tabbable (negative tabindex):\n // since `node` should at least have been focusable, we assume that's the case and mimic\n // what browsers do, which is set focus to the next node in __document position order__,\n // regardless of positive tabindexes, if any -- and for reasons explained in the NOTE\n // above related to `firstDomTabbable` and `lastDomTabbable` properties, we fall back to\n // basic DOM order\n if (forward) {\n return focusableNodes\n .slice(focusableNodes.indexOf(node) + 1)\n .find((el) => isTabbable(el));\n }\n\n return focusableNodes\n .slice(0, focusableNodes.indexOf(node))\n .reverse()\n .find((el) => isTabbable(el));\n }\n\n return tabbableNodes[nodeIdx + (forward ? 1 : -1)];\n },\n };\n });\n\n state.tabbableGroups = state.containerGroups.filter(\n (group) => group.tabbableNodes.length > 0\n );\n\n // throw if no groups have tabbable nodes and we don't have a fallback focus node either\n if (\n state.tabbableGroups.length <= 0 &&\n !getNodeForOption('fallbackFocus') // returning false not supported for this option\n ) {\n throw new Error(\n 'Your focus-trap must have at least one container with at least one tabbable node in it at all times'\n );\n }\n\n // NOTE: Positive tabindexes are only properly supported in single-container traps because\n // doing it across multiple containers where tabindexes could be all over the place\n // would require Tabbable to support multiple containers, would require additional\n // specialized Shadow DOM support, and would require Tabbable's multi-container support\n // to look at those containers in document position order rather than user-provided\n // order (as they are treated in Focus-trap, for legacy reasons). See discussion on\n // https://github.com/focus-trap/focus-trap/issues/375 for more details.\n if (\n state.containerGroups.find((g) => g.posTabIndexesFound) &&\n state.containerGroups.length > 1\n ) {\n throw new Error(\n \"At least one node with a positive tabindex was found in one of your focus-trap's multiple containers. Positive tabindexes are only supported in single-container focus-traps.\"\n );\n }\n };\n\n /**\n * Gets the current activeElement. If it's a web-component and has open shadow-root\n * it will recursively search inside shadow roots for the \"true\" activeElement.\n *\n * @param {Document | ShadowRoot} el\n *\n * @returns {HTMLElement} The element that currently has the focus\n **/\n const getActiveElement = function (el) {\n const activeElement = el.activeElement;\n\n if (!activeElement) {\n return;\n }\n\n if (\n activeElement.shadowRoot &&\n activeElement.shadowRoot.activeElement !== null\n ) {\n return getActiveElement(activeElement.shadowRoot);\n }\n\n return activeElement;\n };\n\n const tryFocus = function (node) {\n if (node === false) {\n return;\n }\n\n if (node === getActiveElement(document)) {\n return;\n }\n\n if (!node || !node.focus) {\n tryFocus(getInitialFocusNode());\n return;\n }\n\n node.focus({ preventScroll: !!config.preventScroll });\n // NOTE: focus() API does not trigger focusIn event so set MRU node manually\n state.mostRecentlyFocusedNode = node;\n\n if (isSelectableInput(node)) {\n node.select();\n }\n };\n\n const getReturnFocusNode = function (previousActiveElement) {\n const node = getNodeForOption('setReturnFocus', previousActiveElement);\n return node ? node : node === false ? false : previousActiveElement;\n };\n\n /**\n * Finds the next node (in either direction) where focus should move according to a\n * keyboard focus-in event.\n * @param {Object} params\n * @param {Node} [params.target] Known target __from which__ to navigate, if any.\n * @param {KeyboardEvent|FocusEvent} [params.event] Event to use if `target` isn't known (event\n * will be used to determine the `target`). Ignored if `target` is specified.\n * @param {boolean} [params.isBackward] True if focus should move backward.\n * @returns {Node|undefined} The next node, or `undefined` if a next node couldn't be\n * determined given the current state of the trap.\n */\n const findNextNavNode = function ({ target, event, isBackward = false }) {\n target = target || getActualTarget(event);\n updateTabbableNodes();\n\n let destinationNode = null;\n\n if (state.tabbableGroups.length > 0) {\n // make sure the target is actually contained in a group\n // NOTE: the target may also be the container itself if it's focusable\n // with tabIndex='-1' and was given initial focus\n const containerIndex = findContainerIndex(target, event);\n const containerGroup =\n containerIndex >= 0 ? state.containerGroups[containerIndex] : undefined;\n\n if (containerIndex < 0) {\n // target not found in any group: quite possible focus has escaped the trap,\n // so bring it back into...\n if (isBackward) {\n // ...the last node in the last group\n destinationNode =\n state.tabbableGroups[state.tabbableGroups.length - 1]\n .lastTabbableNode;\n } else {\n // ...the first node in the first group\n destinationNode = state.tabbableGroups[0].firstTabbableNode;\n }\n } else if (isBackward) {\n // REVERSE\n\n // is the target the first tabbable node in a group?\n let startOfGroupIndex = findIndex(\n state.tabbableGroups,\n ({ firstTabbableNode }) => target === firstTabbableNode\n );\n\n if (\n startOfGroupIndex < 0 &&\n (containerGroup.container === target ||\n (isFocusable(target, config.tabbableOptions) &&\n !isTabbable(target, config.tabbableOptions) &&\n !containerGroup.nextTabbableNode(target, false)))\n ) {\n // an exception case where the target is either the container itself, or\n // a non-tabbable node that was given focus (i.e. tabindex is negative\n // and user clicked on it or node was programmatically given focus)\n // and is not followed by any other tabbable node, in which\n // case, we should handle shift+tab as if focus were on the container's\n // first tabbable node, and go to the last tabbable node of the LAST group\n startOfGroupIndex = containerIndex;\n }\n\n if (startOfGroupIndex >= 0) {\n // YES: then shift+tab should go to the last tabbable node in the\n // previous group (and wrap around to the last tabbable node of\n // the LAST group if it's the first tabbable node of the FIRST group)\n const destinationGroupIndex =\n startOfGroupIndex === 0\n ? state.tabbableGroups.length - 1\n : startOfGroupIndex - 1;\n\n const destinationGroup = state.tabbableGroups[destinationGroupIndex];\n\n destinationNode =\n getTabIndex(target) >= 0\n ? destinationGroup.lastTabbableNode\n : destinationGroup.lastDomTabbableNode;\n } else if (!isTabEvent(event)) {\n // user must have customized the nav keys so we have to move focus manually _within_\n // the active group: do this based on the order determined by tabbable()\n destinationNode = containerGroup.nextTabbableNode(target, false);\n }\n } else {\n // FORWARD\n\n // is the target the last tabbable node in a group?\n let lastOfGroupIndex = findIndex(\n state.tabbableGroups,\n ({ lastTabbableNode }) => target === lastTabbableNode\n );\n\n if (\n lastOfGroupIndex < 0 &&\n (containerGroup.container === target ||\n (isFocusable(target, config.tabbableOptions) &&\n !isTabbable(target, config.tabbableOptions) &&\n !containerGroup.nextTabbableNode(target)))\n ) {\n // an exception case where the target is the container itself, or\n // a non-tabbable node that was given focus (i.e. tabindex is negative\n // and user clicked on it or node was programmatically given focus)\n // and is not followed by any other tabbable node, in which\n // case, we should handle tab as if focus were on the container's\n // last tabbable node, and go to the first tabbable node of the FIRST group\n lastOfGroupIndex = containerIndex;\n }\n\n if (lastOfGroupIndex >= 0) {\n // YES: then tab should go to the first tabbable node in the next\n // group (and wrap around to the first tabbable node of the FIRST\n // group if it's the last tabbable node of the LAST group)\n const destinationGroupIndex =\n lastOfGroupIndex === state.tabbableGroups.length - 1\n ? 0\n : lastOfGroupIndex + 1;\n\n const destinationGroup = state.tabbableGroups[destinationGroupIndex];\n\n destinationNode =\n getTabIndex(target) >= 0\n ? destinationGroup.firstTabbableNode\n : destinationGroup.firstDomTabbableNode;\n } else if (!isTabEvent(event)) {\n // user must have customized the nav keys so we have to move focus manually _within_\n // the active group: do this based on the order determined by tabbable()\n destinationNode = containerGroup.nextTabbableNode(target);\n }\n }\n } else {\n // no groups available\n // NOTE: the fallbackFocus option does not support returning false to opt-out\n destinationNode = getNodeForOption('fallbackFocus');\n }\n\n return destinationNode;\n };\n\n // This needs to be done on mousedown and touchstart instead of click\n // so that it precedes the focus event.\n const checkPointerDown = function (e) {\n const target = getActualTarget(e);\n\n if (findContainerIndex(target, e) >= 0) {\n // allow the click since it ocurred inside the trap\n return;\n }\n\n if (valueOrHandler(config.clickOutsideDeactivates, e)) {\n // immediately deactivate the trap\n trap.deactivate({\n // NOTE: by setting `returnFocus: false`, deactivate() will do nothing,\n // which will result in the outside click setting focus to the node\n // that was clicked (and if not focusable, to \"nothing\"); by setting\n // `returnFocus: true`, we'll attempt to re-focus the node originally-focused\n // on activation (or the configured `setReturnFocus` node), whether the\n // outside click was on a focusable node or not\n returnFocus: config.returnFocusOnDeactivate,\n });\n return;\n }\n\n // This is needed for mobile devices.\n // (If we'll only let `click` events through,\n // then on mobile they will be blocked anyways if `touchstart` is blocked.)\n if (valueOrHandler(config.allowOutsideClick, e)) {\n // allow the click outside the trap to take place\n return;\n }\n\n // otherwise, prevent the click\n e.preventDefault();\n };\n\n // In case focus escapes the trap for some strange reason, pull it back in.\n // NOTE: the focusIn event is NOT cancelable, so if focus escapes, it may cause unexpected\n // scrolling if the node that got focused was out of view; there's nothing we can do to\n // prevent that from happening by the time we discover that focus escaped\n const checkFocusIn = function (event) {\n const target = getActualTarget(event);\n const targetContained = findContainerIndex(target, event) >= 0;\n\n // In Firefox when you Tab out of an iframe the Document is briefly focused.\n if (targetContained || target instanceof Document) {\n if (targetContained) {\n state.mostRecentlyFocusedNode = target;\n }\n } else {\n // escaped! pull it back in to where it just left\n event.stopImmediatePropagation();\n\n // focus will escape if the MRU node had a positive tab index and user tried to nav forward;\n // it will also escape if the MRU node had a 0 tab index and user tried to nav backward\n // toward a node with a positive tab index\n let nextNode; // next node to focus, if we find one\n let navAcrossContainers = true;\n if (state.mostRecentlyFocusedNode) {\n if (getTabIndex(state.mostRecentlyFocusedNode) > 0) {\n // MRU container index must be >=0 otherwise we wouldn't have it as an MRU node...\n const mruContainerIdx = findContainerIndex(\n state.mostRecentlyFocusedNode\n );\n // there MAY not be any tabbable nodes in the container if there are at least 2 containers\n // and the MRU node is focusable but not tabbable (focus-trap requires at least 1 container\n // with at least one tabbable node in order to function, so this could be the other container\n // with nothing tabbable in it)\n const { tabbableNodes } = state.containerGroups[mruContainerIdx];\n if (tabbableNodes.length > 0) {\n // MRU tab index MAY not be found if the MRU node is focusable but not tabbable\n const mruTabIdx = tabbableNodes.findIndex(\n (node) => node === state.mostRecentlyFocusedNode\n );\n if (mruTabIdx >= 0) {\n if (config.isKeyForward(state.recentNavEvent)) {\n if (mruTabIdx + 1 < tabbableNodes.length) {\n nextNode = tabbableNodes[mruTabIdx + 1];\n navAcrossContainers = false;\n }\n // else, don't wrap within the container as focus should move to next/previous\n // container\n } else {\n if (mruTabIdx - 1 >= 0) {\n nextNode = tabbableNodes[mruTabIdx - 1];\n navAcrossContainers = false;\n }\n // else, don't wrap within the container as focus should move to next/previous\n // container\n }\n // else, don't find in container order without considering direction too\n }\n }\n // else, no tabbable nodes in that container (which means we must have at least one other\n // container with at least one tabbable node in it, otherwise focus-trap would've thrown\n // an error the last time updateTabbableNodes() was run): find next node among all known\n // containers\n } else {\n // check to see if there's at least one tabbable node with a positive tab index inside\n // the trap because focus seems to escape when navigating backward from a tabbable node\n // with tabindex=0 when this is the case (instead of wrapping to the tabbable node with\n // the greatest positive tab index like it should)\n if (\n !state.containerGroups.some((g) =>\n g.tabbableNodes.some((n) => getTabIndex(n) > 0)\n )\n ) {\n // no containers with tabbable nodes with positive tab indexes which means the focus\n // escaped for some other reason and we should just execute the fallback to the\n // MRU node or initial focus node, if any\n navAcrossContainers = false;\n }\n }\n } else {\n // no MRU node means we're likely in some initial condition when the trap has just\n // been activated and initial focus hasn't been given yet, in which case we should\n // fall through to trying to focus the initial focus node, which is what should\n // happen below at this point in the logic\n navAcrossContainers = false;\n }\n\n if (navAcrossContainers) {\n nextNode = findNextNavNode({\n // move FROM the MRU node, not event-related node (which will be the node that is\n // outside the trap causing the focus escape we're trying to fix)\n target: state.mostRecentlyFocusedNode,\n isBackward: config.isKeyBackward(state.recentNavEvent),\n });\n }\n\n if (nextNode) {\n tryFocus(nextNode);\n } else {\n tryFocus(state.mostRecentlyFocusedNode || getInitialFocusNode());\n }\n }\n\n state.recentNavEvent = undefined; // clear\n };\n\n // Hijack key nav events on the first and last focusable nodes of the trap,\n // in order to prevent focus from escaping. If it escapes for even a\n // moment it can end up scrolling the page and causing confusion so we\n // kind of need to capture the action at the keydown phase.\n const checkKeyNav = function (event, isBackward = false) {\n state.recentNavEvent = event;\n\n const destinationNode = findNextNavNode({ event, isBackward });\n if (destinationNode) {\n if (isTabEvent(event)) {\n // since tab natively moves focus, we wouldn't have a destination node unless we\n // were on the edge of a container and had to move to the next/previous edge, in\n // which case we want to prevent default to keep the browser from moving focus\n // to where it normally would\n event.preventDefault();\n }\n tryFocus(destinationNode);\n }\n // else, let the browser take care of [shift+]tab and move the focus\n };\n\n const checkKey = function (event) {\n if (\n isEscapeEvent(event) &&\n valueOrHandler(config.escapeDeactivates, event) !== false\n ) {\n event.preventDefault();\n trap.deactivate();\n return;\n }\n\n if (config.isKeyForward(event) || config.isKeyBackward(event)) {\n checkKeyNav(event, config.isKeyBackward(event));\n }\n };\n\n const checkClick = function (e) {\n const target = getActualTarget(e);\n\n if (findContainerIndex(target, e) >= 0) {\n return;\n }\n\n if (valueOrHandler(config.clickOutsideDeactivates, e)) {\n return;\n }\n\n if (valueOrHandler(config.allowOutsideClick, e)) {\n return;\n }\n\n e.preventDefault();\n e.stopImmediatePropagation();\n };\n\n //\n // EVENT LISTENERS\n //\n\n const addListeners = function () {\n if (!state.active) {\n return;\n }\n\n // There can be only one listening focus trap at a time\n activeFocusTraps.activateTrap(trapStack, trap);\n\n // Delay ensures that the focused element doesn't capture the event\n // that caused the focus trap activation.\n state.delayInitialFocusTimer = config.delayInitialFocus\n ? delay(function () {\n tryFocus(getInitialFocusNode());\n })\n : tryFocus(getInitialFocusNode());\n\n doc.addEventListener('focusin', checkFocusIn, true);\n doc.addEventListener('mousedown', checkPointerDown, {\n capture: true,\n passive: false,\n });\n doc.addEventListener('touchstart', checkPointerDown, {\n capture: true,\n passive: false,\n });\n doc.addEventListener('click', checkClick, {\n capture: true,\n passive: false,\n });\n doc.addEventListener('keydown', checkKey, {\n capture: true,\n passive: false,\n });\n\n return trap;\n };\n\n const removeListeners = function () {\n if (!state.active) {\n return;\n }\n\n doc.removeEventListener('focusin', checkFocusIn, true);\n doc.removeEventListener('mousedown', checkPointerDown, true);\n doc.removeEventListener('touchstart', checkPointerDown, true);\n doc.removeEventListener('click', checkClick, true);\n doc.removeEventListener('keydown', checkKey, true);\n\n return trap;\n };\n\n //\n // MUTATION OBSERVER\n //\n\n const checkDomRemoval = function (mutations) {\n const isFocusedNodeRemoved = mutations.some(function (mutation) {\n const removedNodes = Array.from(mutation.removedNodes);\n return removedNodes.some(function (node) {\n return node === state.mostRecentlyFocusedNode;\n });\n });\n\n // If the currently focused is removed then browsers will move focus to the\n // <body> element. If this happens, try to move focus back into the trap.\n if (isFocusedNodeRemoved) {\n tryFocus(getInitialFocusNode());\n }\n };\n\n // Use MutationObserver - if supported - to detect if focused node is removed\n // from the DOM.\n const mutationObserver =\n typeof window !== 'undefined' && 'MutationObserver' in window\n ? new MutationObserver(checkDomRemoval)\n : undefined;\n\n const updateObservedNodes = function () {\n if (!mutationObserver) {\n return;\n }\n\n mutationObserver.disconnect();\n if (state.active && !state.paused) {\n state.containers.map(function (container) {\n mutationObserver.observe(container, {\n subtree: true,\n childList: true,\n });\n });\n }\n };\n\n //\n // TRAP DEFINITION\n //\n\n trap = {\n get active() {\n return state.active;\n },\n\n get paused() {\n return state.paused;\n },\n\n activate(activateOptions) {\n if (state.active) {\n return this;\n }\n\n const onActivate = getOption(activateOptions, 'onActivate');\n const onPostActivate = getOption(activateOptions, 'onPostActivate');\n const checkCanFocusTrap = getOption(activateOptions, 'checkCanFocusTrap');\n\n if (!checkCanFocusTrap) {\n updateTabbableNodes();\n }\n\n state.active = true;\n state.paused = false;\n state.nodeFocusedBeforeActivation = doc.activeElement;\n\n onActivate?.();\n\n const finishActivation = () => {\n if (checkCanFocusTrap) {\n updateTabbableNodes();\n }\n addListeners();\n updateObservedNodes();\n onPostActivate?.();\n };\n\n if (checkCanFocusTrap) {\n checkCanFocusTrap(state.containers.concat()).then(\n finishActivation,\n finishActivation\n );\n return this;\n }\n\n finishActivation();\n return this;\n },\n\n deactivate(deactivateOptions) {\n if (!state.active) {\n return this;\n }\n\n const options = {\n onDeactivate: config.onDeactivate,\n onPostDeactivate: config.onPostDeactivate,\n checkCanReturnFocus: config.checkCanReturnFocus,\n ...deactivateOptions,\n };\n\n clearTimeout(state.delayInitialFocusTimer); // noop if undefined\n state.delayInitialFocusTimer = undefined;\n\n removeListeners();\n state.active = false;\n state.paused = false;\n updateObservedNodes();\n\n activeFocusTraps.deactivateTrap(trapStack, trap);\n\n const onDeactivate = getOption(options, 'onDeactivate');\n const onPostDeactivate = getOption(options, 'onPostDeactivate');\n const checkCanReturnFocus = getOption(options, 'checkCanReturnFocus');\n const returnFocus = getOption(\n options,\n 'returnFocus',\n 'returnFocusOnDeactivate'\n );\n\n onDeactivate?.();\n\n const finishDeactivation = () => {\n delay(() => {\n if (returnFocus) {\n tryFocus(getReturnFocusNode(state.nodeFocusedBeforeActivation));\n }\n onPostDeactivate?.();\n });\n };\n\n if (returnFocus && checkCanReturnFocus) {\n checkCanReturnFocus(\n getReturnFocusNode(state.nodeFocusedBeforeActivation)\n ).then(finishDeactivation, finishDeactivation);\n return this;\n }\n\n finishDeactivation();\n return this;\n },\n\n pause(pauseOptions) {\n if (state.paused || !state.active) {\n return this;\n }\n\n const onPause = getOption(pauseOptions, 'onPause');\n const onPostPause = getOption(pauseOptions, 'onPostPause');\n\n state.paused = true;\n onPause?.();\n\n removeListeners();\n updateObservedNodes();\n\n onPostPause?.();\n return this;\n },\n\n unpause(unpauseOptions) {\n if (!state.paused || !state.active) {\n return this;\n }\n\n const onUnpause = getOption(unpauseOptions, 'onUnpause');\n const onPostUnpause = getOption(unpauseOptions, 'onPostUnpause');\n\n state.paused = false;\n onUnpause?.();\n\n updateTabbableNodes();\n addListeners();\n updateObservedNodes();\n\n onPostUnpause?.();\n return this;\n },\n\n updateContainerElements(containerElements) {\n const elementsAsArray = [].concat(containerElements).filter(Boolean);\n\n state.containers = elementsAsArray.map((element) =>\n typeof element === 'string' ? doc.querySelector(element) : element\n );\n\n if (state.active) {\n updateTabbableNodes();\n }\n\n updateObservedNodes();\n\n return this;\n },\n };\n\n // initialize container elements\n trap.updateContainerElements(elements);\n\n return trap;\n};\n\nexport { createFocusTrap };\n", null, null, null, "function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\n// Older browsers don't support event options, feature detect it.\n\n// Adopted and modified solution from Bohdan Didukh (2017)\n// https://stackoverflow.com/questions/41594997/ios-10-safari-prevent-scrolling-behind-a-fixed-overlay-and-maintain-scroll-posi\n\nvar hasPassiveEvents = false;\nif (typeof window !== 'undefined') {\n var passiveTestOptions = {\n get passive() {\n hasPassiveEvents = true;\n return undefined;\n }\n };\n window.addEventListener('testPassive', null, passiveTestOptions);\n window.removeEventListener('testPassive', null, passiveTestOptions);\n}\n\nvar isIosDevice = typeof window !== 'undefined' && window.navigator && window.navigator.platform && (/iP(ad|hone|od)/.test(window.navigator.platform) || window.navigator.platform === 'MacIntel' && window.navigator.maxTouchPoints > 1);\n\n\nvar locks = [];\nvar documentListenerAdded = false;\nvar initialClientY = -1;\nvar previousBodyOverflowSetting = void 0;\nvar previousBodyPosition = void 0;\nvar previousBodyPaddingRight = void 0;\n\n// returns true if `el` should be allowed to receive touchmove events.\nvar allowTouchMove = function allowTouchMove(el) {\n return locks.some(function (lock) {\n if (lock.options.allowTouchMove && lock.options.allowTouchMove(el)) {\n return true;\n }\n\n return false;\n });\n};\n\nvar preventDefault = function preventDefault(rawEvent) {\n var e = rawEvent || window.event;\n\n // For the case whereby consumers adds a touchmove event listener to document.\n // Recall that we do document.addEventListener('touchmove', preventDefault, { passive: false })\n // in disableBodyScroll - so if we provide this opportunity to allowTouchMove, then\n // the touchmove event on document will break.\n if (allowTouchMove(e.target)) {\n return true;\n }\n\n // Do not prevent if the event has more than one touch (usually meaning this is a multi touch gesture like pinch to zoom).\n if (e.touches.length > 1) return true;\n\n if (e.preventDefault) e.preventDefault();\n\n return false;\n};\n\nvar setOverflowHidden = function setOverflowHidden(options) {\n // If previousBodyPaddingRight is already set, don't set it again.\n if (previousBodyPaddingRight === undefined) {\n var _reserveScrollBarGap = !!options && options.reserveScrollBarGap === true;\n var scrollBarGap = window.innerWidth - document.documentElement.clientWidth;\n\n if (_reserveScrollBarGap && scrollBarGap > 0) {\n var computedBodyPaddingRight = parseInt(window.getComputedStyle(document.body).getPropertyValue('padding-right'), 10);\n previousBodyPaddingRight = document.body.style.paddingRight;\n document.body.style.paddingRight = computedBodyPaddingRight + scrollBarGap + 'px';\n }\n }\n\n // If previousBodyOverflowSetting is already set, don't set it again.\n if (previousBodyOverflowSetting === undefined) {\n previousBodyOverflowSetting = document.body.style.overflow;\n document.body.style.overflow = 'hidden';\n }\n};\n\nvar restoreOverflowSetting = function restoreOverflowSetting() {\n if (previousBodyPaddingRight !== undefined) {\n document.body.style.paddingRight = previousBodyPaddingRight;\n\n // Restore previousBodyPaddingRight to undefined so setOverflowHidden knows it\n // can be set again.\n previousBodyPaddingRight = undefined;\n }\n\n if (previousBodyOverflowSetting !== undefined) {\n document.body.style.overflow = previousBodyOverflowSetting;\n\n // Restore previousBodyOverflowSetting to undefined\n // so setOverflowHidden knows it can be set again.\n previousBodyOverflowSetting = undefined;\n }\n};\n\nvar setPositionFixed = function setPositionFixed() {\n return window.requestAnimationFrame(function () {\n // If previousBodyPosition is already set, don't set it again.\n if (previousBodyPosition === undefined) {\n previousBodyPosition = {\n position: document.body.style.position,\n top: document.body.style.top,\n left: document.body.style.left\n };\n\n // Update the dom inside an animation frame \n var _window = window,\n scrollY = _window.scrollY,\n scrollX = _window.scrollX,\n innerHeight = _window.innerHeight;\n\n document.body.style.position = 'fixed';\n document.body.style.top = -scrollY;\n document.body.style.left = -scrollX;\n\n setTimeout(function () {\n return window.requestAnimationFrame(function () {\n // Attempt to check if the bottom bar appeared due to the position change\n var bottomBarHeight = innerHeight - window.innerHeight;\n if (bottomBarHeight && scrollY >= innerHeight) {\n // Move the content further up so that the bottom bar doesn't hide it\n document.body.style.top = -(scrollY + bottomBarHeight);\n }\n });\n }, 300);\n }\n });\n};\n\nvar restorePositionSetting = function restorePositionSetting() {\n if (previousBodyPosition !== undefined) {\n // Convert the position from \"px\" to Int\n var y = -parseInt(document.body.style.top, 10);\n var x = -parseInt(document.body.style.left, 10);\n\n // Restore styles\n document.body.style.position = previousBodyPosition.position;\n document.body.style.top = previousBodyPosition.top;\n document.body.style.left = previousBodyPosition.left;\n\n // Restore scroll\n window.scrollTo(x, y);\n\n previousBodyPosition = undefined;\n }\n};\n\n// https://developer.mozilla.org/en-US/docs/Web/API/Element/scrollHeight#Problems_and_solutions\nvar isTargetElementTotallyScrolled = function isTargetElementTotallyScrolled(targetElement) {\n return targetElement ? targetElement.scrollHeight - targetElement.scrollTop <= targetElement.clientHeight : false;\n};\n\nvar handleScroll = function handleScroll(event, targetElement) {\n var clientY = event.targetTouches[0].clientY - initialClientY;\n\n if (allowTouchMove(event.target)) {\n return false;\n }\n\n if (targetElement && targetElement.scrollTop === 0 && clientY > 0) {\n // element is at the top of its scroll.\n return preventDefault(event);\n }\n\n if (isTargetElementTotallyScrolled(targetElement) && clientY < 0) {\n // element is at the bottom of its scroll.\n return preventDefault(event);\n }\n\n event.stopPropagation();\n return true;\n};\n\nexport var disableBodyScroll = function disableBodyScroll(targetElement, options) {\n // targetElement must be provided\n if (!targetElement) {\n // eslint-disable-next-line no-console\n console.error('disableBodyScroll unsuccessful - targetElement must be provided when calling disableBodyScroll on IOS devices.');\n return;\n }\n\n // disableBodyScroll must not have been called on this targetElement before\n if (locks.some(function (lock) {\n return lock.targetElement === targetElement;\n })) {\n return;\n }\n\n var lock = {\n targetElement: targetElement,\n options: options || {}\n };\n\n locks = [].concat(_toConsumableArray(locks), [lock]);\n\n if (isIosDevice) {\n setPositionFixed();\n } else {\n setOverflowHidden(options);\n }\n\n if (isIosDevice) {\n targetElement.ontouchstart = function (event) {\n if (event.targetTouches.length === 1) {\n // detect single touch.\n initialClientY = event.targetTouches[0].clientY;\n }\n };\n targetElement.ontouchmove = function (event) {\n if (event.targetTouches.length === 1) {\n // detect single touch.\n handleScroll(event, targetElement);\n }\n };\n\n if (!documentListenerAdded) {\n document.addEventListener('touchmove', preventDefault, hasPassiveEvents ? { passive: false } : undefined);\n documentListenerAdded = true;\n }\n }\n};\n\nexport var clearAllBodyScrollLocks = function clearAllBodyScrollLocks() {\n if (isIosDevice) {\n // Clear all locks ontouchstart/ontouchmove handlers, and the references.\n locks.forEach(function (lock) {\n lock.targetElement.ontouchstart = null;\n lock.targetElement.ontouchmove = null;\n });\n\n if (documentListenerAdded) {\n document.removeEventListener('touchmove', preventDefault, hasPassiveEvents ? { passive: false } : undefined);\n documentListenerAdded = false;\n }\n\n // Reset initial clientY.\n initialClientY = -1;\n }\n\n if (isIosDevice) {\n restorePositionSetting();\n } else {\n restoreOverflowSetting();\n }\n\n locks = [];\n};\n\nexport var enableBodyScroll = function enableBodyScroll(targetElement) {\n if (!targetElement) {\n // eslint-disable-next-line no-console\n console.error('enableBodyScroll unsuccessful - targetElement must be provided when calling enableBodyScroll on IOS devices.');\n return;\n }\n\n locks = locks.filter(function (lock) {\n return lock.targetElement !== targetElement;\n });\n\n if (isIosDevice) {\n targetElement.ontouchstart = null;\n targetElement.ontouchmove = null;\n\n if (documentListenerAdded && locks.length === 0) {\n document.removeEventListener('touchmove', preventDefault, hasPassiveEvents ? { passive: false } : undefined);\n documentListenerAdded = false;\n }\n }\n\n if (isIosDevice) {\n restorePositionSetting();\n } else {\n restoreOverflowSetting();\n }\n};\n\n", null, null, "'use client'\nimport type { ClientUser, SanitizedPermissions, TypedUser } from 'payload'\n\nimport { useModal } from '@faceless-ui/modal'\nimport { usePathname, useRouter } from 'next/navigation.js'\nimport { formatAdminURL } from 'payload/shared'\nimport * as qs from 'qs-esm'\nimport React, { createContext, use, useCallback, useEffect, useState } from 'react'\nimport { toast } from 'sonner'\n\nimport { stayLoggedInModalSlug } from '../../elements/StayLoggedIn/index.js'\nimport { useEffectEvent } from '../../hooks/useEffectEvent.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { requests } from '../../utilities/api.js'\nimport { useConfig } from '../Config/index.js'\nimport { useRouteTransition } from '../RouteTransition/index.js'\n\nexport type UserWithToken<T = ClientUser> = {\n /** seconds until expiration */\n exp: number\n token: string\n user: T\n}\n\nexport type AuthContext<T = ClientUser> = {\n fetchFullUser: () => Promise<null | TypedUser>\n logOut: () => Promise<boolean>\n /**\n * These are the permissions for the current user from a global scope.\n *\n * When checking for permissions on document specific level, use the `useDocumentInfo` hook instead.\n *\n * @example\n *\n * ```tsx\n * import { useAuth } from 'payload/ui'\n *\n * const MyComponent: React.FC = () => {\n * const { permissions } = useAuth()\n *\n * if (permissions?.collections?.myCollection?.create) {\n * // user can create documents in 'myCollection'\n * }\n *\n * return null\n * }\n * ```\n *\n * with useDocumentInfo:\n *\n * ```tsx\n * import { useDocumentInfo } from 'payload/ui'\n *\n * const MyComponent: React.FC = () => {\n * const { docPermissions } = useDocumentInfo()\n * if (docPermissions?.create) {\n * // user can create this document\n * }\n * return null\n * } ```\n */\n permissions?: SanitizedPermissions\n refreshCookie: (forceRefresh?: boolean) => void\n refreshCookieAsync: () => Promise<ClientUser>\n refreshPermissions: () => Promise<void>\n setPermissions: (permissions: SanitizedPermissions) => void\n setUser: (user: null | UserWithToken<T>) => void\n strategy?: string\n token?: string\n tokenExpirationMs?: number\n user?: null | T\n}\n\nconst Context = createContext({} as AuthContext)\n\nconst maxTimeoutMs = 2147483647\n\ntype Props = {\n children: React.ReactNode\n permissions?: SanitizedPermissions\n user?: ClientUser | null\n}\n\nexport function AuthProvider({\n children,\n permissions: initialPermissions,\n user: initialUser,\n}: Props) {\n const pathname = usePathname()\n const router = useRouter()\n\n const { config } = useConfig()\n\n const {\n admin: {\n autoLogin,\n autoRefresh,\n routes: { inactivity: logoutInactivityRoute },\n user: userSlug,\n },\n routes: { admin: adminRoute, api: apiRoute },\n } = config\n\n const { i18n } = useTranslation()\n const { closeAllModals, openModal } = useModal()\n const { startRouteTransition } = useRouteTransition()\n\n const [user, setUserInMemory] = useState<ClientUser | null>(initialUser)\n const [tokenInMemory, setTokenInMemory] = useState<string>()\n const [tokenExpirationMs, setTokenExpirationMs] = useState<number>()\n const [permissions, setPermissions] = useState<SanitizedPermissions>(initialPermissions)\n const [forceLogoutBufferMs, setForceLogoutBufferMs] = useState<number>(120_000)\n const [fetchedUserOnMount, setFetchedUserOnMount] = useState(false)\n\n const refreshTokenTimeoutRef = React.useRef<ReturnType<typeof setTimeout>>(null)\n const reminderTimeoutRef = React.useRef<ReturnType<typeof setTimeout>>(null)\n const forceLogOutTimeoutRef = React.useRef<ReturnType<typeof setTimeout>>(null)\n\n const id = user?.id\n\n const redirectToInactivityRoute = useCallback(() => {\n const baseAdminRoute = formatAdminURL({ adminRoute, path: '' })\n startRouteTransition(() =>\n router.replace(\n formatAdminURL({\n adminRoute,\n path: `${logoutInactivityRoute}${window.location.pathname.startsWith(baseAdminRoute) ? `?redirect=${encodeURIComponent(window.location.pathname)}` : ''}`,\n }),\n ),\n )\n\n closeAllModals()\n }, [router, adminRoute, logoutInactivityRoute, closeAllModals, startRouteTransition])\n\n const revokeTokenAndExpire = useCallback(() => {\n setUserInMemory(null)\n setTokenInMemory(undefined)\n setTokenExpirationMs(undefined)\n clearTimeout(refreshTokenTimeoutRef.current)\n }, [])\n\n // Handler for reminder timeout - uses useEffectEvent to capture latest autoRefresh value\n const handleReminderTimeout = useEffectEvent(() => {\n if (autoRefresh) {\n refreshCookieEvent()\n } else {\n openModal(stayLoggedInModalSlug)\n }\n })\n\n const setNewUser = useCallback(\n (userResponse: null | UserWithToken) => {\n clearTimeout(reminderTimeoutRef.current)\n clearTimeout(forceLogOutTimeoutRef.current)\n\n if (userResponse?.user) {\n setUserInMemory(userResponse.user)\n setTokenInMemory(userResponse.token)\n setTokenExpirationMs(userResponse.exp * 1000)\n\n const expiresInMs = Math.max(\n 0,\n Math.min((userResponse.exp ?? 0) * 1000 - Date.now(), maxTimeoutMs),\n )\n\n if (expiresInMs) {\n const nextForceLogoutBufferMs = Math.min(60_000, expiresInMs / 2)\n setForceLogoutBufferMs(nextForceLogoutBufferMs)\n\n reminderTimeoutRef.current = setTimeout(\n handleReminderTimeout,\n Math.max(expiresInMs - nextForceLogoutBufferMs, 0),\n )\n\n forceLogOutTimeoutRef.current = setTimeout(() => {\n revokeTokenAndExpire()\n redirectToInactivityRoute()\n }, expiresInMs)\n }\n } else {\n revokeTokenAndExpire()\n }\n },\n [redirectToInactivityRoute, revokeTokenAndExpire],\n )\n\n const refreshCookie = useCallback(\n (forceRefresh?: boolean) => {\n if (!id) {\n return\n }\n\n const expiresInMs = Math.max(0, (tokenExpirationMs ?? 0) - Date.now())\n\n if (forceRefresh || (tokenExpirationMs && expiresInMs < forceLogoutBufferMs * 2)) {\n clearTimeout(refreshTokenTimeoutRef.current)\n refreshTokenTimeoutRef.current = setTimeout(async () => {\n try {\n const request = await requests.post(\n formatAdminURL({\n apiRoute,\n path: `/${userSlug}/refresh-token?refresh`,\n }),\n {\n headers: {\n 'Accept-Language': i18n.language,\n },\n },\n )\n\n if (request.status === 200) {\n const json: UserWithToken = await request.json()\n setNewUser(json)\n } else {\n setNewUser(null)\n redirectToInactivityRoute()\n }\n } catch (e) {\n toast.error(e.message)\n }\n }, 1000)\n }\n },\n [\n apiRoute,\n i18n.language,\n redirectToInactivityRoute,\n setNewUser,\n tokenExpirationMs,\n userSlug,\n forceLogoutBufferMs,\n id,\n ],\n )\n\n const refreshCookieAsync = useCallback(\n async (skipSetUser?: boolean): Promise<ClientUser> => {\n try {\n const request = await requests.post(\n formatAdminURL({\n apiRoute,\n path: `/${userSlug}/refresh-token`,\n }),\n {\n headers: {\n 'Accept-Language': i18n.language,\n },\n },\n )\n\n if (request.status === 200) {\n const json: UserWithToken = await request.json()\n if (!skipSetUser) {\n setNewUser(json)\n }\n return json.user\n }\n\n if (user) {\n setNewUser(null)\n redirectToInactivityRoute()\n }\n } catch (e) {\n toast.error(`Refreshing token failed: ${e.message}`)\n }\n return null\n },\n [apiRoute, i18n.language, redirectToInactivityRoute, setNewUser, userSlug, user],\n )\n\n const logOut = useCallback(async () => {\n try {\n if (user && user.collection) {\n setNewUser(null)\n await requests.post(\n formatAdminURL({\n apiRoute,\n path: `/${user.collection}/logout`,\n }),\n )\n }\n } catch (_) {\n // fail silently and log the user out in state\n }\n\n return true\n }, [apiRoute, setNewUser, user])\n\n const refreshPermissions = useCallback(\n async ({ locale }: { locale?: string } = {}) => {\n const params = qs.stringify(\n {\n locale,\n },\n {\n addQueryPrefix: true,\n },\n )\n\n try {\n const request = await requests.get(\n formatAdminURL({\n apiRoute,\n path: `/access${params}`,\n }),\n {\n headers: {\n 'Accept-Language': i18n.language,\n },\n },\n )\n\n if (request.status === 200) {\n const json: SanitizedPermissions = await request.json()\n setPermissions(json)\n } else {\n throw new Error(`Fetching permissions failed with status code ${request.status}`)\n }\n } catch (e) {\n toast.error(`Refreshing permissions failed: ${e.message}`)\n }\n },\n [apiRoute, i18n],\n )\n\n const fetchFullUser = React.useCallback(async () => {\n try {\n const request = await requests.get(\n formatAdminURL({\n apiRoute,\n path: `/${userSlug}/me`,\n }),\n {\n credentials: 'include',\n headers: {\n 'Accept-Language': i18n.language,\n },\n },\n )\n\n if (request.status === 200) {\n const json: UserWithToken = await request.json()\n setNewUser(json)\n return json?.user || null\n }\n } catch (e) {\n toast.error(`Fetching user failed: ${e.message}`)\n }\n\n return null\n }, [apiRoute, userSlug, i18n.language, setNewUser])\n\n const refreshCookieEvent = useEffectEvent(refreshCookie)\n useEffect(() => {\n // when location changes, refresh cookie\n refreshCookieEvent()\n }, [pathname])\n\n const fetchFullUserEvent = useEffectEvent(fetchFullUser)\n useEffect(() => {\n async function fetchUserOnMount() {\n await fetchFullUserEvent()\n setFetchedUserOnMount(true)\n }\n\n void fetchUserOnMount()\n }, [])\n\n useEffect(() => {\n if (!user && autoLogin && !autoLogin.prefillOnly) {\n void fetchFullUserEvent()\n }\n }, [user, autoLogin])\n\n useEffect(\n () => () => {\n // remove all timeouts on unmount\n clearTimeout(refreshTokenTimeoutRef.current)\n clearTimeout(reminderTimeoutRef.current)\n clearTimeout(forceLogOutTimeoutRef.current)\n },\n [],\n )\n\n if (!user && !fetchedUserOnMount) {\n return null\n }\n\n return (\n <Context\n value={{\n fetchFullUser,\n logOut,\n permissions,\n refreshCookie,\n refreshCookieAsync,\n refreshPermissions,\n setPermissions,\n setUser: setNewUser,\n token: tokenInMemory,\n tokenExpirationMs,\n user,\n }}\n >\n {children}\n </Context>\n )\n}\n\nexport const useAuth = <T = ClientUser,>(): AuthContext<T> => use(Context) as AuthContext<T>\n", "'use client'\nimport { useRouter } from 'next/navigation.js'\nimport { formatAdminURL } from 'payload/shared'\nimport React, { useCallback } from 'react'\n\nimport type { OnCancel } from '../ConfirmationModal/index.js'\n\nimport { useAuth } from '../../providers/Auth/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useRouteTransition } from '../../providers/RouteTransition/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { ConfirmationModal } from '../ConfirmationModal/index.js'\n\nexport const stayLoggedInModalSlug = 'stay-logged-in'\n\nexport const StayLoggedInModal: React.FC = () => {\n const { refreshCookie } = useAuth()\n\n const router = useRouter()\n const { config } = useConfig()\n\n const {\n admin: {\n routes: { logout: logoutRoute },\n },\n routes: { admin: adminRoute },\n } = config\n\n const { t } = useTranslation()\n const { startRouteTransition } = useRouteTransition()\n\n const onConfirm = useCallback(() => {\n return startRouteTransition(() =>\n router.push(\n formatAdminURL({\n adminRoute,\n path: logoutRoute,\n }),\n ),\n )\n }, [router, startRouteTransition, adminRoute, logoutRoute])\n\n const onCancel: OnCancel = useCallback(() => {\n refreshCookie()\n }, [refreshCookie])\n\n return (\n <ConfirmationModal\n body={t('authentication:youAreInactive')}\n cancelLabel={t('authentication:stayLoggedIn')}\n confirmLabel={t('authentication:logOut')}\n heading={t('authentication:stayLoggedIn')}\n modalSlug={stayLoggedInModalSlug}\n onCancel={onCancel}\n onConfirm={onConfirm}\n />\n )\n}\n", "'use client'\nimport { Modal, useModal } from '@faceless-ui/modal'\nimport React, { useCallback } from 'react'\n\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { Button } from '../Button/index.js'\nimport { drawerZBase, useDrawerDepth } from '../Drawer/index.js'\nimport './index.scss'\n\nconst baseClass = 'confirmation-modal'\n\nexport type OnCancel = () => void\n\nexport type ConfirmationModalProps = {\n body: React.ReactNode\n cancelLabel?: string\n className?: string\n confirmingLabel?: string\n confirmLabel?: string\n heading: React.ReactNode\n modalSlug: string\n onCancel?: OnCancel\n onConfirm: () => Promise<void> | void\n}\n\nexport function ConfirmationModal(props: ConfirmationModalProps) {\n const {\n body,\n cancelLabel,\n className,\n confirmingLabel,\n confirmLabel,\n heading,\n modalSlug,\n onCancel: onCancelFromProps,\n onConfirm: onConfirmFromProps,\n } = props\n\n const editDepth = useDrawerDepth()\n\n const [confirming, setConfirming] = React.useState(false)\n\n const { closeModal, isModalOpen } = useModal()\n const { t } = useTranslation()\n\n const onConfirm = useCallback(async () => {\n if (!confirming) {\n setConfirming(true)\n\n if (typeof onConfirmFromProps === 'function') {\n await onConfirmFromProps()\n }\n\n setConfirming(false)\n closeModal(modalSlug)\n }\n }, [confirming, onConfirmFromProps, closeModal, modalSlug])\n\n const onCancel = useCallback(() => {\n if (!confirming) {\n closeModal(modalSlug)\n\n if (typeof onCancelFromProps === 'function') {\n onCancelFromProps()\n }\n }\n }, [confirming, onCancelFromProps, closeModal, modalSlug])\n\n if (!isModalOpen(modalSlug)) {\n return null\n }\n\n return (\n <Modal\n className={[baseClass, className].filter(Boolean).join(' ')}\n // Fixes https://github.com/payloadcms/payload/issues/13778\n closeOnBlur={false}\n slug={modalSlug}\n style={{\n zIndex: drawerZBase + editDepth,\n }}\n >\n <div className={`${baseClass}__wrapper`}>\n <div className={`${baseClass}__content`}>\n {typeof heading === 'string' ? <h1>{heading}</h1> : heading}\n {typeof body === 'string' ? <p>{body}</p> : body}\n </div>\n <div className={`${baseClass}__controls`}>\n <Button\n buttonStyle=\"secondary\"\n disabled={confirming}\n id=\"confirm-cancel\"\n onClick={onCancel}\n size=\"large\"\n type=\"button\"\n >\n {cancelLabel || t('general:cancel')}\n </Button>\n <Button id=\"confirm-action\" onClick={onConfirm} size=\"large\">\n {confirming\n ? confirmingLabel || `${t('general:loading')}...`\n : confirmLabel || t('general:confirm')}\n </Button>\n </div>\n </div>\n </Modal>\n )\n}\n", "'use client'\nimport { Modal, useModal } from '@faceless-ui/modal'\nimport React, { createContext, use, useCallback, useLayoutEffect, useState } from 'react'\n\nimport type { Props, TogglerProps } from './types.js'\n\nimport { XIcon } from '../../icons/X/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { Gutter } from '../Gutter/index.js'\nimport './index.scss'\n\nconst baseClass = 'drawer'\n\nexport const drawerZBase = 100\n\nexport const formatDrawerSlug = ({ slug, depth }: { depth: number; slug: string }): string =>\n `drawer_${depth}_${slug}`\n\nexport { useDrawerSlug } from './useDrawerSlug.js'\n\nexport const DrawerToggler: React.FC<TogglerProps> = ({\n slug,\n children,\n className,\n disabled,\n onClick,\n ...rest\n}) => {\n const { openModal } = useModal()\n\n const handleClick = useCallback(\n (e) => {\n openModal(slug)\n if (typeof onClick === 'function') {\n onClick(e)\n }\n },\n [openModal, slug, onClick],\n )\n\n return (\n <button className={className} disabled={disabled} onClick={handleClick} type=\"button\" {...rest}>\n {children}\n </button>\n )\n}\n\nexport const Drawer: React.FC<Props> = ({\n slug,\n children,\n className,\n gutter = true,\n Header,\n hoverTitle,\n title,\n}) => {\n const { t } = useTranslation()\n const { closeModal, modalState } = useModal()\n const drawerDepth = useDrawerDepth()\n\n const isOpen = !!modalState[slug]?.isOpen\n\n const [animateIn, setAnimateIn] = useState(isOpen)\n\n useLayoutEffect(() => {\n setAnimateIn(isOpen)\n }, [isOpen])\n\n if (isOpen) {\n // IMPORTANT: do not render the drawer until it is explicitly open, this is to avoid large html trees especially when nesting drawers\n return (\n <DrawerDepthProvider>\n <Modal\n className={[\n className,\n baseClass,\n animateIn && `${baseClass}--is-open`,\n drawerDepth > 1 && `${baseClass}--nested`,\n ]\n .filter(Boolean)\n .join(' ')}\n // Fixes https://github.com/payloadcms/payload/issues/13778\n closeOnBlur={false}\n slug={slug}\n style={{\n zIndex: drawerZBase + drawerDepth,\n }}\n >\n {(!drawerDepth || drawerDepth === 1) && <div className={`${baseClass}__blur-bg`} />}\n <button\n aria-label={t('general:close')}\n className={`${baseClass}__close`}\n id={`close-drawer__${slug}`}\n onClick={() => closeModal(slug)}\n type=\"button\"\n />\n <div\n className={`${baseClass}__content`}\n style={{\n width: `calc(100% - (${drawerDepth} * var(--gutter-h)))`,\n }}\n >\n <div className={`${baseClass}__blur-bg-content`} />\n <Gutter className={`${baseClass}__content-children`} left={gutter} right={gutter}>\n {Header}\n {Header === undefined && (\n <div className={`${baseClass}__header`}>\n <h2 className={`${baseClass}__header__title`} title={hoverTitle ? title : null}>\n {title}\n </h2>\n {/* TODO: the `button` HTML element breaks CSS transitions on the drawer for some reason...\n i.e. changing to a `div` element will fix the animation issue but will break accessibility\n */}\n <button\n aria-label={t('general:close')}\n className={`${baseClass}__header__close`}\n id={`close-drawer__${slug}`}\n onClick={() => closeModal(slug)}\n type=\"button\"\n >\n <XIcon />\n </button>\n </div>\n )}\n {children}\n </Gutter>\n </div>\n </Modal>\n </DrawerDepthProvider>\n )\n }\n\n return null\n}\n\nexport const DrawerDepthContext = createContext(1)\n\nexport const DrawerDepthProvider: React.FC<{ children: React.ReactNode }> = ({ children }) => {\n const parentDepth = useDrawerDepth()\n const depth = parentDepth + 1\n\n return <DrawerDepthContext value={depth}>{children}</DrawerDepthContext>\n}\n\nexport const useDrawerDepth = (): number => use(DrawerDepthContext)\n", "'use client'\nimport React from 'react'\n\nimport './index.scss'\n\nexport type GutterProps = {\n children: React.ReactNode\n className?: string\n left?: boolean\n negativeLeft?: boolean\n negativeRight?: boolean\n ref?: React.RefObject<HTMLDivElement>\n right?: boolean\n}\n\nconst baseClass = 'gutter'\n\nexport const Gutter: React.FC<GutterProps> = (props) => {\n const {\n children,\n className,\n left = true,\n negativeLeft = false,\n negativeRight = false,\n ref,\n right = true,\n } = props\n\n const shouldPadLeft = left && !negativeLeft\n const shouldPadRight = right && !negativeRight\n\n return (\n <div\n className={[\n baseClass,\n shouldPadLeft && `${baseClass}--left`,\n shouldPadRight && `${baseClass}--right`,\n negativeLeft && `${baseClass}--negative-left`,\n negativeRight && `${baseClass}--negative-right`,\n className,\n ]\n .filter(Boolean)\n .join(' ')}\n ref={ref}\n >\n {children}\n </div>\n )\n}\n", "'use client'\nimport { useId } from 'react'\n\nimport { useEditDepth } from '../../providers/EditDepth/index.js'\nimport { formatDrawerSlug } from './index.js'\n\nexport const useDrawerSlug = (slug: string): string => {\n const uuid = useId()\n const editDepth = useEditDepth()\n return formatDrawerSlug({\n slug: `${slug}-${uuid}`,\n depth: editDepth,\n })\n}\n", "import * as qs from 'qs-esm'\n\ntype GetOptions = {\n params?: Record<string, unknown>\n} & RequestInit\n\nexport const requests = {\n delete: (url: string, options: RequestInit = { headers: {} }): Promise<Response> => {\n const headers = options && options.headers ? { ...options.headers } : {}\n\n const formattedOptions: RequestInit = {\n ...options,\n credentials: 'include',\n headers: {\n ...headers,\n },\n method: 'delete',\n }\n\n return fetch(url, formattedOptions)\n },\n\n get: (url: string, options: GetOptions = { headers: {} }): Promise<Response> => {\n let query = ''\n if (options.params) {\n query = qs.stringify(options.params, { addQueryPrefix: true })\n }\n return fetch(`${url}${query}`, {\n credentials: 'include',\n ...options,\n })\n },\n\n patch: (url: string, options: RequestInit = { headers: {} }): Promise<Response> => {\n const headers = options && options.headers ? { ...options.headers } : {}\n\n const formattedOptions: RequestInit = {\n ...options,\n credentials: 'include',\n headers: {\n ...headers,\n },\n method: 'PATCH',\n }\n\n return fetch(url, formattedOptions)\n },\n\n post: (url: string, options: RequestInit = { headers: {} }): Promise<Response> => {\n const headers = options && options.headers ? { ...options.headers } : {}\n\n const formattedOptions: RequestInit = {\n ...options,\n credentials: 'include',\n headers: {\n ...headers,\n },\n method: 'post',\n }\n\n return fetch(`${url}`, formattedOptions)\n },\n\n put: (url: string, options: RequestInit = { headers: {} }): Promise<Response> => {\n const headers = options && options.headers ? { ...options.headers } : {}\n\n const formattedOptions: RequestInit = {\n ...options,\n credentials: 'include',\n headers: {\n ...headers,\n },\n method: 'put',\n }\n\n return fetch(url, formattedOptions)\n },\n}\n", "export const generateFieldID = (path: string, editDepth: number, uuid: string) => {\n if (!path) {\n return undefined\n }\n return `field-${path.replace(/\\./g, '__')}${editDepth > 1 ? `-${editDepth}` : ''}${uuid ? `-${uuid}` : ''}`\n}\n", "'use client'\nimport type { Row } from 'payload'\n\nexport const extractRowsAndCollapsedIDs = ({\n collapsed,\n rowID,\n rows,\n}: {\n collapsed: boolean\n rowID: string\n rows: Row[]\n}): {\n collapsedIDs: string[]\n updatedRows: Row[]\n} => {\n return rows.reduce(\n (acc, row) => {\n if (rowID === row.id) {\n row.collapsed = collapsed\n }\n if (row.collapsed) {\n acc.collapsedIDs.push(row.id)\n }\n acc.updatedRows.push(row)\n return acc\n },\n {\n collapsedIDs: [],\n updatedRows: [],\n },\n )\n}\n\nexport const toggleAllRows = ({\n collapsed,\n rows,\n}): {\n collapsedIDs: string[]\n updatedRows: Row[]\n} => {\n return rows.reduce(\n (acc, row) => {\n row.collapsed = collapsed\n if (collapsed) {\n acc.collapsedIDs.push(row.id)\n }\n acc.updatedRows.push(row)\n return acc\n },\n {\n collapsedIDs: [],\n updatedRows: [],\n },\n )\n}\n", "'use client'\n\nimport * as React from 'react'\n\nimport { Banner } from '../../elements/Banner/index.js'\nimport { CheckboxField } from '../../fields/Checkbox/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useLocale } from '../../providers/Locale/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { useForm } from '../Form/context.js'\nimport './index.scss'\n\nconst baseClass = 'nullify-locale-field'\n\ntype NullifyLocaleFieldProps = {\n readonly fieldValue?: [] | null | number\n readonly localized: boolean\n readonly path: string\n readonly readOnly?: boolean\n}\n\nexport const NullifyLocaleField: React.FC<NullifyLocaleFieldProps> = ({\n fieldValue,\n localized,\n path,\n readOnly = false,\n}) => {\n const { code: currentLocale } = useLocale()\n const {\n config: { localization },\n } = useConfig()\n const [checked, setChecked] = React.useState<boolean>(typeof fieldValue !== 'number')\n const { t } = useTranslation()\n const { dispatchFields, setModified } = useForm()\n\n if (!localized || !localization) {\n // hide when field is not localized or localization is not enabled\n return null\n }\n\n if (localization.defaultLocale === currentLocale || !localization.fallback) {\n // if editing default locale or when fallback is disabled\n return null\n }\n\n const onChange = () => {\n const useFallback = !checked\n\n dispatchFields({\n type: 'UPDATE',\n path,\n value: useFallback ? null : fieldValue || 0,\n })\n setModified(true)\n setChecked(useFallback)\n }\n\n if (fieldValue) {\n let hideCheckbox = false\n if (typeof fieldValue === 'number' && fieldValue > 0) {\n hideCheckbox = true\n }\n if (Array.isArray(fieldValue) && fieldValue.length > 0) {\n hideCheckbox = true\n }\n\n if (hideCheckbox) {\n if (checked) {\n setChecked(false)\n } // uncheck when field has value\n return null\n }\n }\n\n return (\n <Banner className={baseClass}>\n {!fieldValue && readOnly ? (\n t('general:fallbackToDefaultLocale')\n ) : (\n <CheckboxField\n checked={checked}\n field={{\n name: '',\n label: t('general:fallbackToDefaultLocale'),\n }}\n id={`field-${path.replace(/\\./g, '__')}`}\n onChange={onChange}\n path={path}\n schemaPath=\"\"\n />\n )}\n </Banner>\n )\n}\n", "'use client'\nimport type {\n CheckboxFieldClientComponent,\n CheckboxFieldClientProps,\n CheckboxFieldValidation,\n} from 'payload'\n\nimport { rtlLanguages } from '@payloadcms/translations'\nimport React, { useCallback, useMemo } from 'react'\n\nimport type { CheckboxInputProps } from './Input.js'\n\nimport { RenderCustomComponent } from '../../elements/RenderCustomComponent/index.js'\nimport { FieldDescription } from '../../fields/FieldDescription/index.js'\nimport { FieldError } from '../../fields/FieldError/index.js'\nimport { useForm } from '../../forms/Form/context.js'\nimport { useField } from '../../forms/useField/index.js'\nimport { withCondition } from '../../forms/withCondition/index.js'\nimport { useEditDepth } from '../../providers/EditDepth/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { generateFieldID } from '../../utilities/generateFieldID.js'\nimport { mergeFieldStyles } from '../mergeFieldStyles.js'\nimport { fieldBaseClass } from '../shared/index.js'\nimport { CheckboxInput } from './Input.js'\nimport './index.scss'\n\nconst baseClass = 'checkbox'\n\nexport { CheckboxFieldClientProps, CheckboxInput, type CheckboxInputProps }\n\nconst CheckboxFieldComponent: CheckboxFieldClientComponent = (props) => {\n const {\n id,\n checked: checkedFromProps,\n disableFormData,\n field,\n field: {\n admin: { className, description } = {} as CheckboxFieldClientProps['field']['admin'],\n label,\n required,\n } = {} as CheckboxFieldClientProps['field'],\n onChange: onChangeFromProps,\n partialChecked,\n path: pathFromProps,\n readOnly,\n validate,\n } = props\n\n const { uuid } = useForm()\n\n const editDepth = useEditDepth()\n\n const {\n i18n: { language },\n } = useTranslation()\n const isRTL = (rtlLanguages as readonly string[]).includes(language)\n\n const memoizedValidate: CheckboxFieldValidation = useCallback(\n (value, options) => {\n if (typeof validate === 'function') {\n return validate(value, { ...options, required })\n }\n },\n [validate, required],\n )\n\n const {\n customComponents: { AfterInput, BeforeInput, Description, Error, Label } = {},\n disabled,\n path,\n setValue,\n showError,\n value,\n } = useField({\n disableFormData,\n potentiallyStalePath: pathFromProps,\n validate: memoizedValidate,\n })\n\n const onToggle = useCallback(() => {\n if (!readOnly) {\n setValue(!value)\n if (typeof onChangeFromProps === 'function') {\n onChangeFromProps(!value)\n }\n }\n }, [onChangeFromProps, readOnly, setValue, value])\n\n const checked = checkedFromProps || Boolean(value)\n\n const fieldID = id || generateFieldID(path, editDepth, uuid)\n\n const styles = useMemo(() => mergeFieldStyles(field), [field])\n\n return (\n <div\n className={[\n fieldBaseClass,\n baseClass,\n showError && 'error',\n className,\n value && `${baseClass}--checked`,\n (readOnly || disabled) && `${baseClass}--read-only`,\n ]\n .filter(Boolean)\n .join(' ')}\n style={styles}\n >\n <RenderCustomComponent\n CustomComponent={Error}\n Fallback={\n <FieldError alignCaret={isRTL ? 'right' : 'left'} path={path} showError={showError} />\n }\n />\n <CheckboxInput\n AfterInput={AfterInput}\n BeforeInput={BeforeInput}\n checked={checked}\n id={fieldID}\n inputRef={null}\n Label={Label}\n label={label}\n name={path}\n onToggle={onToggle}\n partialChecked={partialChecked}\n readOnly={readOnly || disabled}\n required={required}\n />\n <RenderCustomComponent\n CustomComponent={Description}\n Fallback={<FieldDescription description={description} path={path} />}\n />\n </div>\n )\n}\n\nexport const CheckboxField = withCondition(CheckboxFieldComponent)\n", "'use client'\nimport type { PayloadRequest } from 'payload'\n\nimport React, { useCallback, useMemo, useRef } from 'react'\n\nimport type { UPDATE } from '../Form/types.js'\nimport type { FieldType, Options } from './types.js'\n\nexport type { FieldType, Options }\n\nimport { useThrottledEffect } from '../../hooks/useThrottledEffect.js'\nimport { useAuth } from '../../providers/Auth/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useDocumentInfo } from '../../providers/DocumentInfo/index.js'\nimport { useOperation } from '../../providers/Operation/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport {\n useDocumentForm,\n useForm,\n useFormFields,\n useFormInitializing,\n useFormProcessing,\n useFormSubmitted,\n} from '../Form/context.js'\nimport { useFieldPath } from '../RenderFields/context.js'\n\nconst useFieldInForm = <TValue,>(options?: Options): FieldType<TValue> => {\n const {\n disableFormData = false,\n hasRows,\n path: pathFromOptions,\n potentiallyStalePath,\n validate,\n } = options || {}\n\n const pathFromContext = useFieldPath()\n\n // This is a workaround for stale props given to server rendered components.\n // See the notes in the `potentiallyStalePath` type definition for more details.\n const path = pathFromOptions || pathFromContext || potentiallyStalePath\n\n const submitted = useFormSubmitted()\n const processing = useFormProcessing()\n const initializing = useFormInitializing()\n const { user } = useAuth()\n const { id, collectionSlug } = useDocumentInfo()\n const operation = useOperation()\n\n const dispatchField = useFormFields(([_, dispatch]) => dispatch)\n const field = useFormFields(([fields]) => (fields && fields?.[path]) || null)\n\n const { t } = useTranslation()\n const { config } = useConfig()\n\n const { getData, getDataByPath, getSiblingData, setModified } = useForm()\n const documentForm = useDocumentForm()\n\n const filterOptions = field?.filterOptions\n const value = field?.value as TValue\n const initialValue = field?.initialValue as TValue\n const valid = typeof field?.valid === 'boolean' ? field.valid : true\n const showError = valid === false && submitted\n\n const prevValid = useRef(valid)\n const prevErrorMessage = useRef(field?.errorMessage)\n\n const pathSegments = path ? path.split('.') : []\n\n // Method to return from `useField`, used to\n // update field values from field component(s)\n const setValue = useCallback(\n (e, disableModifyingForm = false) => {\n // TODO:\n // There are no built-in fields that pass events into `e`.\n // Remove this check in the next major version.\n const isEvent =\n e &&\n typeof e === 'object' &&\n typeof e.preventDefault === 'function' &&\n typeof e.stopPropagation === 'function'\n\n const val = isEvent ? e.target.value : e\n\n dispatchField({\n type: 'UPDATE',\n disableFormData: disableFormData || (hasRows && val > 0),\n path,\n value: val,\n })\n\n if (!disableModifyingForm) {\n setModified(true)\n }\n },\n [setModified, path, dispatchField, disableFormData, hasRows],\n )\n\n // Store result from hook as ref\n // to prevent unnecessary rerenders\n const result: FieldType<TValue> = useMemo(\n () => ({\n blocksFilterOptions: field?.blocksFilterOptions,\n customComponents: field?.customComponents,\n disabled: processing || initializing,\n errorMessage: field?.errorMessage,\n errorPaths: field?.errorPaths || [],\n filterOptions,\n formInitializing: initializing,\n formProcessing: processing,\n formSubmitted: submitted,\n initialValue,\n path,\n rows: field?.rows,\n selectFilterOptions: field?.selectFilterOptions,\n setValue,\n showError,\n valid: field?.valid,\n value,\n }),\n [\n field,\n processing,\n setValue,\n showError,\n submitted,\n value,\n initialValue,\n path,\n filterOptions,\n initializing,\n ],\n )\n\n // Throttle the validate function\n useThrottledEffect(\n () => {\n const validateField = async () => {\n let valueToValidate = value\n\n if (field?.rows && Array.isArray(field.rows)) {\n valueToValidate = getDataByPath(path)\n }\n\n let errorMessage: string | undefined = prevErrorMessage.current\n let valid: boolean | string = prevValid.current\n\n const data = getData()\n const isValid =\n typeof validate === 'function'\n ? await validate(valueToValidate, {\n id,\n blockData: undefined, // Will be expensive to get - not worth to pass to client-side validation, as this can be obtained by the user using `useFormFields()`\n collectionSlug,\n data: documentForm?.getData ? documentForm.getData() : data,\n event: 'onChange',\n operation,\n path: pathSegments,\n preferences: {} as any,\n req: {\n payload: {\n config,\n },\n t,\n user,\n } as unknown as PayloadRequest,\n siblingData: getSiblingData(path),\n })\n : typeof prevErrorMessage.current === 'string'\n ? prevErrorMessage.current\n : prevValid.current\n\n if (typeof isValid === 'string') {\n valid = false\n errorMessage = isValid\n } else if (typeof isValid === 'boolean') {\n valid = isValid\n errorMessage = undefined\n }\n\n // Only dispatch if the validation result has changed\n // This will prevent unnecessary rerenders\n if (valid !== prevValid.current || errorMessage !== prevErrorMessage.current) {\n prevValid.current = valid\n prevErrorMessage.current = errorMessage\n\n const update: UPDATE = {\n type: 'UPDATE',\n errorMessage,\n path,\n rows: field?.rows,\n valid,\n validate,\n value,\n }\n\n if (disableFormData || (hasRows ? typeof value === 'number' && value > 0 : false)) {\n update.disableFormData = true\n }\n\n if (typeof dispatchField === 'function') {\n dispatchField(update)\n }\n }\n }\n\n void validateField()\n },\n 150,\n [\n value,\n disableFormData,\n dispatchField,\n getData,\n getSiblingData,\n getDataByPath,\n id,\n operation,\n path,\n user,\n validate,\n field?.rows,\n collectionSlug,\n ],\n )\n\n return result\n}\n\n/**\n * Context to allow providing useField value for fields directly, if managed outside the Form\n *\n * @experimental\n */\nexport const FieldContext = React.createContext<FieldType<unknown> | undefined>(undefined)\n\n/**\n * Get and set the value of a form field.\n *\n * @see https://payloadcms.com/docs/admin/react-hooks#usefield\n */\nexport const useField = <TValue,>(options?: Options): FieldType<TValue> => {\n const pathFromContext = useFieldPath()\n\n const fieldContext = React.use(FieldContext) as FieldType<TValue> | undefined\n\n // Lock the mode on first render so hook order is stable forever. This ensures\n // that hooks are called in the same order each time a component renders => should\n // not break the rule of hooks.\n const hasFieldContext = React.useRef<false | null | true>(null)\n if (hasFieldContext.current === null) {\n // Use field context, if a field context exists **and** the path matches. If the path\n // does not match, this could be the field context of a parent field => there likely is\n // a nested <Form /> we should use instead => 'form'\n const currentPath = options?.path || pathFromContext || options?.potentiallyStalePath\n\n hasFieldContext.current =\n fieldContext && currentPath && fieldContext.path === currentPath ? true : false\n }\n\n if (hasFieldContext.current === true) {\n if (!fieldContext) {\n // Provider was removed after mount. That violates hook guarantees.\n throw new Error('FieldContext was removed after mount. This breaks hook ordering.')\n }\n return fieldContext\n }\n\n // We intentionally guard this hook call with a mode that is fixed on first render.\n // The order is consistent across renders. Silence the linters false positive.\n\n // eslint-disable-next-line react-compiler/react-compiler\n // eslint-disable-next-line react-hooks/rules-of-hooks\n return useFieldInForm<TValue>(options)\n}\n", "'use client'\nimport type React from 'react'\n\nimport { useEffect, useRef } from 'react'\n\ntype useThrottledEffect = (\n callback: React.EffectCallback,\n delay: number,\n deps: React.DependencyList,\n) => void\n\n/**\n * A hook that will throttle the execution of a callback function inside a useEffect.\n * This is useful for things like throttling loading states or other UI updates.\n * @param callback The callback function to be executed.\n * @param delay The delay in milliseconds to throttle the callback.\n * @param deps The dependencies to watch for changes.\n */\nexport const useThrottledEffect: useThrottledEffect = (callback, delay, deps = []) => {\n const lastRan = useRef(Date.now())\n\n useEffect(() => {\n const handler = setTimeout(\n () => {\n if (Date.now() - lastRan.current >= delay) {\n callback()\n lastRan.current = Date.now()\n }\n },\n delay - (Date.now() - lastRan.current),\n )\n\n return () => {\n clearTimeout(handler)\n }\n }, [delay, ...deps])\n}\n", "'use client'\nimport type { ClientUser, DocumentPreferences } from 'payload'\n\nimport { formatAdminURL } from 'payload/shared'\nimport * as qs from 'qs-esm'\nimport React, { createContext, use, useCallback, useEffect, useMemo, useRef, useState } from 'react'\n\nimport type { DocumentInfoContext, DocumentInfoProps } from './types.js'\n\nimport { useControllableState } from '../../hooks/useControllableState.js'\nimport { useAuth } from '../../providers/Auth/index.js'\nimport { requests } from '../../utilities/api.js'\nimport { formatDocTitle } from '../../utilities/formatDocTitle/index.js'\nimport { useConfig } from '../Config/index.js'\nimport { DocumentTitleProvider } from '../DocumentTitle/index.js'\nimport { useLocale, useLocaleLoading } from '../Locale/index.js'\nimport { usePreferences } from '../Preferences/index.js'\nimport { useTranslation } from '../Translation/index.js'\nimport { UploadEditsProvider, useUploadEdits } from '../UploadEdits/index.js'\nimport { useGetDocPermissions } from './useGetDocPermissions.js'\n\nconst Context = createContext({} as DocumentInfoContext)\n\nexport type * from './types.js'\n\nexport const useDocumentInfo = (): DocumentInfoContext => use(Context)\n\nconst DocumentInfo: React.FC<\n {\n readonly children: React.ReactNode\n } & DocumentInfoProps\n> = ({ children, ...props }) => {\n const {\n id,\n collectionSlug,\n currentEditor: currentEditorFromProps,\n docPermissions: docPermissionsFromProps,\n globalSlug,\n hasPublishedDoc: hasPublishedDocFromProps,\n hasPublishPermission: hasPublishPermissionFromProps,\n hasSavePermission: hasSavePermissionFromProps,\n initialData,\n initialState,\n isLocked: isLockedFromProps,\n lastUpdateTime: lastUpdateTimeFromProps,\n mostRecentVersionIsAutosaved: mostRecentVersionIsAutosavedFromProps,\n unpublishedVersionCount: unpublishedVersionCountFromProps,\n versionCount: versionCountFromProps,\n } = props\n\n const [docPermissions, setDocPermissions] = useControllableState(docPermissionsFromProps)\n\n const [hasSavePermission, setHasSavePermission] = useControllableState(hasSavePermissionFromProps)\n\n const [hasPublishPermission, setHasPublishPermission] = useControllableState(\n hasPublishPermissionFromProps,\n )\n\n const { permissions } = useAuth()\n\n const {\n config: {\n admin: { dateFormat },\n collections,\n routes: { api },\n },\n getEntityConfig,\n } = useConfig()\n\n const collectionConfig = getEntityConfig({ collectionSlug })\n const globalConfig = getEntityConfig({ globalSlug })\n\n // Check if the locked-documents collection exists in the config\n const hasLockedDocumentsCollection = collections.some(\n (collection) => collection.slug === 'payload-locked-documents',\n )\n\n const abortControllerRef = useRef(new AbortController())\n const docConfig = collectionConfig || globalConfig\n\n const { i18n } = useTranslation()\n\n const { uploadEdits } = useUploadEdits()\n\n /**\n * @deprecated This state will be removed in v4.\n * This is for performance reasons. Use the `DocumentTitleContext` instead.\n */\n const [title, setDocumentTitle] = useState(() =>\n formatDocTitle({\n collectionConfig,\n data: { ...(initialData || {}), id },\n dateFormat,\n fallback: id?.toString(),\n globalConfig,\n i18n,\n }),\n )\n\n const [mostRecentVersionIsAutosaved, setMostRecentVersionIsAutosaved] = useState(\n mostRecentVersionIsAutosavedFromProps,\n )\n\n const [versionCount, setVersionCount] = useState(versionCountFromProps)\n\n const [hasPublishedDoc, setHasPublishedDoc] = useState(hasPublishedDocFromProps)\n\n const [unpublishedVersionCount, setUnpublishedVersionCount] = useState(\n unpublishedVersionCountFromProps,\n )\n\n const [documentIsLocked, setDocumentIsLocked] = useControllableState<boolean | undefined>(\n isLockedFromProps,\n )\n\n const [currentEditor, setCurrentEditor] = useControllableState<ClientUser | null>(\n currentEditorFromProps,\n )\n const [lastUpdateTime, setLastUpdateTime] = useControllableState<number>(lastUpdateTimeFromProps)\n\n const [data, setData] = useControllableState(initialData)\n\n const [uploadStatus, setUploadStatus] = useControllableState<'failed' | 'idle' | 'uploading'>(\n 'idle',\n )\n\n const documentLockState = useRef<{\n hasShownLockedModal: boolean\n isLocked: boolean\n user: ClientUser | number | string\n } | null>({\n hasShownLockedModal: false,\n isLocked: false,\n user: null,\n })\n\n const updateUploadStatus = useCallback(\n (status: 'failed' | 'idle' | 'uploading') => {\n setUploadStatus(status)\n },\n [setUploadStatus],\n )\n\n const { getPreference, setPreference } = usePreferences()\n const { code: locale } = useLocale()\n const { localeIsLoading } = useLocaleLoading()\n\n const isInitializing = useMemo(\n () => initialState === undefined || initialData === undefined || localeIsLoading,\n [initialData, initialState, localeIsLoading],\n )\n\n const baseAPIPath = formatAdminURL({\n apiRoute: api,\n path: '',\n })\n\n let slug: string\n let pluralType: 'collections' | 'globals'\n let preferencesKey: string\n\n if (globalSlug) {\n slug = globalSlug\n pluralType = 'globals'\n preferencesKey = `global-${slug}`\n }\n\n if (collectionSlug) {\n slug = collectionSlug\n pluralType = 'collections'\n\n if (id) {\n preferencesKey = `collection-${slug}-${id}`\n }\n }\n\n const unlockDocument = useCallback(\n async (docID: number | string, slug: string) => {\n // Check if the locked-documents collection exists before making API calls\n if (!hasLockedDocumentsCollection) {\n return\n }\n\n try {\n const isGlobal = slug === globalSlug\n\n const request = await requests.get(`${baseAPIPath}/payload-locked-documents`, {\n credentials: 'include',\n params: isGlobal\n ? {\n 'where[globalSlug][equals]': slug,\n }\n : {\n 'where[document.relationTo][equals]': slug,\n 'where[document.value][equals]': docID,\n },\n })\n\n const { docs } = await request.json()\n\n if (docs?.length > 0) {\n const lockID = docs[0].id\n await requests.delete(`${baseAPIPath}/payload-locked-documents/${lockID}`, {\n credentials: 'include',\n headers: {\n 'Content-Type': 'application/json',\n },\n })\n setDocumentIsLocked(false)\n }\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error('Failed to unlock the document', error)\n }\n },\n [baseAPIPath, globalSlug, setDocumentIsLocked, hasLockedDocumentsCollection],\n )\n\n const updateDocumentEditor = useCallback(\n async (docID: number | string, slug: string, user: ClientUser | number | string) => {\n // Check if the locked-documents collection exists before making API calls\n if (!hasLockedDocumentsCollection) {\n return\n }\n\n try {\n const isGlobal = slug === globalSlug\n\n // Check if the document is already locked\n const request = await requests.get(`${baseAPIPath}/payload-locked-documents`, {\n credentials: 'include',\n params: isGlobal\n ? {\n 'where[globalSlug][equals]': slug,\n }\n : {\n 'where[document.relationTo][equals]': slug,\n 'where[document.value][equals]': docID,\n },\n })\n\n const { docs } = await request.json()\n\n if (docs?.length > 0) {\n const lockID = docs[0].id\n\n const userData =\n typeof user === 'object'\n ? { relationTo: user.collection, value: user.id }\n : { relationTo: 'users', value: user }\n\n // Send a patch request to update the _lastEdited info\n await requests.patch(`${baseAPIPath}/payload-locked-documents/${lockID}`, {\n body: JSON.stringify({\n user: userData,\n }),\n credentials: 'include',\n headers: {\n 'Content-Type': 'application/json',\n },\n })\n }\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error('Failed to update the document editor', error)\n }\n },\n [baseAPIPath, globalSlug, hasLockedDocumentsCollection],\n )\n\n const getDocPermissions = useGetDocPermissions({\n id: id as string,\n api,\n collectionSlug,\n globalSlug,\n i18n,\n locale,\n permissions,\n setDocPermissions,\n setHasPublishPermission,\n setHasSavePermission,\n })\n\n const getDocPreferences = useCallback(() => {\n return getPreference<DocumentPreferences>(preferencesKey)\n }, [getPreference, preferencesKey])\n\n const setDocFieldPreferences = useCallback<DocumentInfoContext['setDocFieldPreferences']>(\n async (path, fieldPreferences) => {\n const allPreferences = await getDocPreferences()\n\n if (preferencesKey) {\n try {\n await setPreference(preferencesKey, {\n ...allPreferences,\n fields: {\n ...(allPreferences?.fields || {}),\n [path]: {\n ...allPreferences?.fields?.[path],\n ...fieldPreferences,\n },\n },\n })\n } catch (e) {\n console.error(e) // eslint-disable-line no-console\n }\n }\n },\n [setPreference, preferencesKey, getDocPreferences],\n )\n\n const incrementVersionCount = useCallback(() => {\n const newCount = versionCount + 1\n if (collectionConfig && collectionConfig.versions) {\n if (collectionConfig.versions.maxPerDoc > 0) {\n setVersionCount(Math.min(newCount, collectionConfig.versions.maxPerDoc))\n } else {\n setVersionCount(newCount)\n }\n } else if (globalConfig && globalConfig.versions) {\n if (globalConfig.versions.max > 0) {\n setVersionCount(Math.min(newCount, globalConfig.versions.max))\n } else {\n setVersionCount(newCount)\n }\n }\n }, [collectionConfig, globalConfig, versionCount])\n\n /**\n * @todo: Remove this in v4\n * Users should use the `DocumentTitleContext` instead.\n */\n useEffect(() => {\n setDocumentTitle(\n formatDocTitle({\n collectionConfig,\n data: { ...data, id },\n dateFormat,\n fallback: id?.toString(),\n globalConfig,\n i18n,\n }),\n )\n }, [collectionConfig, globalConfig, data, dateFormat, i18n, id])\n\n // clean on unmount\n useEffect(() => {\n const re1 = abortControllerRef.current\n\n return () => {\n if (re1) {\n try {\n re1.abort()\n } catch (_err) {\n // swallow error\n }\n }\n }\n }, [])\n\n const action: string = React.useMemo(() => {\n const docPath = `${pluralType === 'globals' ? `/globals` : ''}/${slug}${id ? `/${id}` : ''}`\n\n return `${baseAPIPath}${docPath}${qs.stringify(\n {\n depth: 0,\n 'fallback-locale': 'null',\n locale,\n uploadEdits: uploadEdits || undefined,\n },\n {\n addQueryPrefix: true,\n },\n )}`\n }, [baseAPIPath, locale, pluralType, id, slug, uploadEdits])\n\n const value: DocumentInfoContext = {\n ...props,\n action,\n currentEditor,\n data,\n docConfig,\n docPermissions,\n documentIsLocked,\n documentLockState,\n getDocPermissions,\n getDocPreferences,\n hasPublishedDoc,\n hasPublishPermission,\n hasSavePermission,\n incrementVersionCount,\n initialData,\n initialState,\n isInitializing,\n lastUpdateTime,\n mostRecentVersionIsAutosaved,\n preferencesKey,\n savedDocumentData: data,\n setCurrentEditor,\n setData,\n setDocFieldPreferences,\n setDocumentIsLocked,\n setDocumentTitle,\n setHasPublishedDoc,\n setLastUpdateTime,\n setMostRecentVersionIsAutosaved,\n setUnpublishedVersionCount,\n setUploadStatus: updateUploadStatus,\n title,\n unlockDocument,\n unpublishedVersionCount,\n updateDocumentEditor,\n updateSavedDocumentData: setData,\n uploadStatus,\n versionCount,\n }\n\n return (\n <Context value={value}>\n <DocumentTitleProvider>{children}</DocumentTitleProvider>\n </Context>\n )\n}\n\nexport const DocumentInfoProvider: React.FC<\n {\n readonly children: React.ReactNode\n } & DocumentInfoProps\n> = (props) => {\n return (\n <UploadEditsProvider>\n <DocumentInfo {...props} />\n </UploadEditsProvider>\n )\n}\n", "import type { I18n } from '@payloadcms/translations'\nimport type {\n ClientCollectionConfig,\n ClientGlobalConfig,\n SanitizedConfig,\n TypeWithID,\n} from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\n\nimport { formatDate } from './formatDateTitle.js'\nimport { formatLexicalDocTitle, isSerializedLexicalEditor } from './formatLexicalDocTitle.js'\nimport { formatRelationshipTitle } from './formatRelationshipTitle.js'\n\nexport const formatDocTitle = ({\n collectionConfig,\n data,\n dateFormat: dateFormatFromConfig,\n fallback,\n globalConfig,\n i18n,\n}: {\n collectionConfig?: ClientCollectionConfig\n data: TypeWithID\n dateFormat: SanitizedConfig['admin']['dateFormat']\n fallback?: object | string\n globalConfig?: ClientGlobalConfig\n i18n: I18n<any, any>\n}): string => {\n let title: string\n\n if (collectionConfig) {\n const useAsTitle = collectionConfig?.admin?.useAsTitle\n\n if (useAsTitle) {\n title = data?.[useAsTitle] as string\n\n if (title) {\n const fieldConfig = collectionConfig.fields.find(\n (f) => 'name' in f && f.name === useAsTitle,\n )\n\n const isDate = fieldConfig?.type === 'date'\n const isRelationship = fieldConfig?.type === 'relationship'\n\n if (isDate) {\n const dateFormat =\n ('date' in fieldConfig.admin && fieldConfig?.admin?.date?.displayFormat) ||\n dateFormatFromConfig\n\n title = formatDate({ date: title, i18n, pattern: dateFormat }) || title\n }\n\n if (isRelationship) {\n const formattedRelationshipTitle = formatRelationshipTitle(data[useAsTitle])\n title = formattedRelationshipTitle\n }\n }\n }\n }\n\n if (globalConfig) {\n title = getTranslation(globalConfig?.label, i18n) || globalConfig?.slug\n }\n\n // richtext lexical case. We convert the first child of root to plain text\n if (title && isSerializedLexicalEditor(title)) {\n title = formatLexicalDocTitle(title.root.children?.[0]?.children || [], '')\n }\n\n if (!title && isSerializedLexicalEditor(fallback)) {\n title = formatLexicalDocTitle(fallback.root.children?.[0]?.children || [], '')\n }\n\n if (!title) {\n title = typeof fallback === 'string' ? fallback : `[${i18n.t('general:untitled')}]`\n }\n\n return title\n}\n", "const offsetFormatCache = {};\nconst offsetCache = {};\n\n/**\n * The function extracts UTC offset in minutes from the given date in specified\n * time zone.\n *\n * Unlike `Date.prototype.getTimezoneOffset`, this function returns the value\n * mirrored to the sign of the offset in the time zone. For Asia/Singapore\n * (UTC+8), `tzOffset` returns 480, while `getTimezoneOffset` returns -480.\n *\n * @param timeZone - Time zone name (IANA or UTC offset)\n * @param date - Date to check the offset for\n *\n * @returns UTC offset in minutes\n */\nexport function tzOffset(timeZone, date) {\n try {\n const format = offsetFormatCache[timeZone] ||= new Intl.DateTimeFormat(\"en-GB\", {\n timeZone,\n hour: \"numeric\",\n timeZoneName: \"longOffset\"\n }).format;\n const offsetStr = format(date).split('GMT')[1] || '';\n if (offsetStr in offsetCache) return offsetCache[offsetStr];\n return calcOffset(offsetStr, offsetStr.split(\":\"));\n } catch {\n // Fallback to manual parsing if the runtime doesn't support \u00B1HH:MM/\u00B1HHMM/\u00B1HH\n // See: https://github.com/nodejs/node/issues/53419\n if (timeZone in offsetCache) return offsetCache[timeZone];\n const captures = timeZone?.match(offsetRe);\n if (captures) return calcOffset(timeZone, captures.slice(1));\n return NaN;\n }\n}\nconst offsetRe = /([+-]\\d\\d):?(\\d\\d)?/;\nfunction calcOffset(cacheStr, values) {\n const hours = +values[0];\n const minutes = +(values[1] || 0);\n return offsetCache[cacheStr] = hours > 0 ? hours * 60 + minutes : hours * 60 - minutes;\n}", "import { tzOffset } from \"../tzOffset/index.js\";\nexport class TZDateMini extends Date {\n //#region static\n\n constructor(...args) {\n super();\n if (args.length > 1 && typeof args[args.length - 1] === \"string\") {\n this.timeZone = args.pop();\n }\n this.internal = new Date();\n if (isNaN(tzOffset(this.timeZone, this))) {\n this.setTime(NaN);\n } else {\n if (!args.length) {\n this.setTime(Date.now());\n } else if (typeof args[0] === \"number\" && (args.length === 1 || args.length === 2 && typeof args[1] !== \"number\")) {\n this.setTime(args[0]);\n } else if (typeof args[0] === \"string\") {\n this.setTime(+new Date(args[0]));\n } else if (args[0] instanceof Date) {\n this.setTime(+args[0]);\n } else {\n this.setTime(+new Date(...args));\n adjustToSystemTZ(this, NaN);\n syncToInternal(this);\n }\n }\n }\n static tz(tz, ...args) {\n return args.length ? new TZDateMini(...args, tz) : new TZDateMini(Date.now(), tz);\n }\n\n //#endregion\n\n //#region time zone\n\n withTimeZone(timeZone) {\n return new TZDateMini(+this, timeZone);\n }\n getTimezoneOffset() {\n return -tzOffset(this.timeZone, this);\n }\n\n //#endregion\n\n //#region time\n\n setTime(time) {\n Date.prototype.setTime.apply(this, arguments);\n syncToInternal(this);\n return +this;\n }\n\n //#endregion\n\n //#region date-fns integration\n\n [Symbol.for(\"constructDateFrom\")](date) {\n return new TZDateMini(+new Date(date), this.timeZone);\n }\n\n //#endregion\n}\n\n// Assign getters and setters\nconst re = /^(get|set)(?!UTC)/;\nObject.getOwnPropertyNames(Date.prototype).forEach(method => {\n if (!re.test(method)) return;\n const utcMethod = method.replace(re, \"$1UTC\");\n // Filter out methods without UTC counterparts\n if (!TZDateMini.prototype[utcMethod]) return;\n if (method.startsWith(\"get\")) {\n // Delegate to internal date's UTC method\n TZDateMini.prototype[method] = function () {\n return this.internal[utcMethod]();\n };\n } else {\n // Assign regular setter\n TZDateMini.prototype[method] = function () {\n Date.prototype[utcMethod].apply(this.internal, arguments);\n syncFromInternal(this);\n return +this;\n };\n\n // Assign UTC setter\n TZDateMini.prototype[utcMethod] = function () {\n Date.prototype[utcMethod].apply(this, arguments);\n syncToInternal(this);\n return +this;\n };\n }\n});\n\n/**\n * Function syncs time to internal date, applying the time zone offset.\n *\n * @param {Date} date - Date to sync\n */\nfunction syncToInternal(date) {\n date.internal.setTime(+date);\n date.internal.setUTCMinutes(date.internal.getUTCMinutes() - date.getTimezoneOffset());\n}\n\n/**\n * Function syncs the internal date UTC values to the date. It allows to get\n * accurate timestamp value.\n *\n * @param {Date} date - The date to sync\n */\nfunction syncFromInternal(date) {\n // First we transpose the internal values\n Date.prototype.setFullYear.call(date, date.internal.getUTCFullYear(), date.internal.getUTCMonth(), date.internal.getUTCDate());\n Date.prototype.setHours.call(date, date.internal.getUTCHours(), date.internal.getUTCMinutes(), date.internal.getUTCSeconds(), date.internal.getUTCMilliseconds());\n\n // Now we have to adjust the date to the system time zone\n adjustToSystemTZ(date);\n}\n\n/**\n * Function adjusts the date to the system time zone. It uses the time zone\n * differences to calculate the offset and adjust the date.\n *\n * @param {Date} date - Date to adjust\n */\nfunction adjustToSystemTZ(date) {\n // Save the time zone offset before all the adjustments\n const offset = tzOffset(date.timeZone, date);\n\n //#region System DST adjustment\n\n // The biggest problem with using the system time zone is that when we create\n // a date from internal values stored in UTC, the system time zone might end\n // up on the DST hour:\n //\n // $ TZ=America/New_York node\n // > new Date(2020, 2, 8, 1).toString()\n // 'Sun Mar 08 2020 01:00:00 GMT-0500 (Eastern Standard Time)'\n // > new Date(2020, 2, 8, 2).toString()\n // 'Sun Mar 08 2020 03:00:00 GMT-0400 (Eastern Daylight Time)'\n // > new Date(2020, 2, 8, 3).toString()\n // 'Sun Mar 08 2020 03:00:00 GMT-0400 (Eastern Daylight Time)'\n // > new Date(2020, 2, 8, 4).toString()\n // 'Sun Mar 08 2020 04:00:00 GMT-0400 (Eastern Daylight Time)'\n //\n // Here we get the same hour for both 2 and 3, because the system time zone\n // has DST beginning at 8 March 2020, 2 a.m. and jumps to 3 a.m. So we have\n // to adjust the internal date to reflect that.\n //\n // However we want to adjust only if that's the DST hour the change happenes,\n // not the hour where DST moves to.\n\n // We calculate the previous hour to see if the time zone offset has changed\n // and we have landed on the DST hour.\n const prevHour = new Date(+date);\n // We use UTC methods here as we don't want to land on the same hour again\n // in case of DST.\n prevHour.setUTCHours(prevHour.getUTCHours() - 1);\n\n // Calculate if we are on the system DST hour.\n const systemOffset = -new Date(+date).getTimezoneOffset();\n const prevHourSystemOffset = -new Date(+prevHour).getTimezoneOffset();\n const systemDSTChange = systemOffset - prevHourSystemOffset;\n // Detect the DST shift. System DST change will occur both on\n const dstShift = Date.prototype.getHours.apply(date) !== date.internal.getUTCHours();\n\n // Move the internal date when we are on the system DST hour.\n if (systemDSTChange && dstShift) date.internal.setUTCMinutes(date.internal.getUTCMinutes() + systemDSTChange);\n\n //#endregion\n\n //#region System diff adjustment\n\n // Now we need to adjust the date, since we just applied internal values.\n // We need to calculate the difference between the system and date time zones\n // and apply it to the date.\n\n const offsetDiff = systemOffset - offset;\n if (offsetDiff) Date.prototype.setUTCMinutes.call(date, Date.prototype.getUTCMinutes.call(date) + offsetDiff);\n\n //#endregion\n\n //#region Post-adjustment DST fix\n\n const postOffset = tzOffset(date.timeZone, date);\n const postSystemOffset = -new Date(+date).getTimezoneOffset();\n const postOffsetDiff = postSystemOffset - postOffset;\n const offsetChanged = postOffset !== offset;\n const postDiff = postOffsetDiff - offsetDiff;\n if (offsetChanged && postDiff) {\n Date.prototype.setUTCMinutes.call(date, Date.prototype.getUTCMinutes.call(date) + postDiff);\n\n // Now we need to check if got offset change during the post-adjustment.\n // If so, we also need both dates to reflect that.\n\n const newOffset = tzOffset(date.timeZone, date);\n const offsetChange = postOffset - newOffset;\n if (offsetChange) {\n date.internal.setUTCMinutes(date.internal.getUTCMinutes() + offsetChange);\n Date.prototype.setUTCMinutes.call(date, Date.prototype.getUTCMinutes.call(date) + offsetChange);\n }\n }\n\n //#endregion\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", "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 { toDate } from \"./toDate.js\";\n\n/**\n * @name compareAsc\n * @category Common Helpers\n * @summary Compare the two dates and return -1, 0 or 1.\n *\n * @description\n * Compare the two dates and return 1 if the first date is after the second,\n * -1 if the first date is before the second or 0 if dates are equal.\n *\n * @param dateLeft - The first date to compare\n * @param dateRight - The second date to compare\n *\n * @returns The result of the comparison\n *\n * @example\n * // Compare 11 February 1987 and 10 July 1989:\n * const result = compareAsc(new Date(1987, 1, 11), new Date(1989, 6, 10))\n * //=> -1\n *\n * @example\n * // Sort the array of dates:\n * const result = [\n * new Date(1995, 6, 2),\n * new Date(1987, 1, 11),\n * new Date(1989, 6, 10)\n * ].sort(compareAsc)\n * //=> [\n * // Wed Feb 11 1987 00:00:00,\n * // Mon Jul 10 1989 00:00:00,\n * // Sun Jul 02 1995 00:00:00\n * // ]\n */\nexport function compareAsc(dateLeft, dateRight) {\n const diff = +toDate(dateLeft) - +toDate(dateRight);\n\n if (diff < 0) return -1;\n else if (diff > 0) return 1;\n\n // Return 0 if diff is 0; return NaN if diff is NaN\n return diff;\n}\n\n// Fallback for modularized imports:\nexport default compareAsc;\n", "import { constructFrom } from \"./constructFrom.js\";\n\n/**\n * @name constructNow\n * @category Generic Helpers\n * @summary Constructs a new current date using the passed value constructor.\n * @pure false\n *\n * @description\n * The function constructs a new current date using the constructor from\n * the reference date. It helps to build generic functions that accept date\n * extensions and use the current date.\n *\n * It defaults to `Date` if the passed reference date is a number or a string.\n *\n * @param date - The reference date to take constructor from\n *\n * @returns Current date initialized using the given date constructor\n *\n * @example\n * import { constructNow, isSameDay } from 'date-fns'\n *\n * function isToday<DateType extends Date>(\n * date: DateArg<DateType>,\n * ): boolean {\n * // If we were to use `new Date()` directly, the function would behave\n * // differently in different timezones and return false for the same date.\n * return isSameDay(date, constructNow(date));\n * }\n */\nexport function constructNow(date) {\n return constructFrom(date, Date.now());\n}\n\n// Fallback for modularized imports:\nexport default constructNow;\n", "import { normalizeDates } from \"./_lib/normalizeDates.js\";\nimport { startOfDay } from \"./startOfDay.js\";\n\n/**\n * The {@link isSameDay} function options.\n */\n\n/**\n * @name isSameDay\n * @category Day Helpers\n * @summary Are the given dates in the same day (and year and month)?\n *\n * @description\n * Are the given dates in the same day (and year and month)?\n *\n * @param laterDate - The first date to check\n * @param earlierDate - The second date to check\n * @param options - An object with options\n *\n * @returns The dates are in the same day (and year and month)\n *\n * @example\n * // Are 4 September 06:00:00 and 4 September 18:00:00 in the same day?\n * const result = isSameDay(new Date(2014, 8, 4, 6, 0), new Date(2014, 8, 4, 18, 0))\n * //=> true\n *\n * @example\n * // Are 4 September and 4 October in the same day?\n * const result = isSameDay(new Date(2014, 8, 4), new Date(2014, 9, 4))\n * //=> false\n *\n * @example\n * // Are 4 September, 2014 and 4 September, 2015 in the same day?\n * const result = isSameDay(new Date(2014, 8, 4), new Date(2015, 8, 4))\n * //=> false\n */\nexport function isSameDay(laterDate, earlierDate, options) {\n const [dateLeft_, dateRight_] = normalizeDates(\n options?.in,\n laterDate,\n earlierDate,\n );\n return +startOfDay(dateLeft_) === +startOfDay(dateRight_);\n}\n\n// Fallback for modularized imports:\nexport default isSameDay;\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 { normalizeDates } from \"./_lib/normalizeDates.js\";\n\n/**\n * The {@link differenceInCalendarMonths} function options.\n */\n\n/**\n * @name differenceInCalendarMonths\n * @category Month Helpers\n * @summary Get the number of calendar months between the given dates.\n *\n * @description\n * Get the number of calendar months between the given dates.\n *\n * @param laterDate - The later date\n * @param earlierDate - The earlier date\n * @param options - An object with options\n *\n * @returns The number of calendar months\n *\n * @example\n * // How many calendar months are between 31 January 2014 and 1 September 2014?\n * const result = differenceInCalendarMonths(\n * new Date(2014, 8, 1),\n * new Date(2014, 0, 31)\n * )\n * //=> 8\n */\nexport function differenceInCalendarMonths(laterDate, earlierDate, options) {\n const [laterDate_, earlierDate_] = normalizeDates(\n options?.in,\n laterDate,\n earlierDate,\n );\n\n const yearsDiff = laterDate_.getFullYear() - earlierDate_.getFullYear();\n const monthsDiff = laterDate_.getMonth() - earlierDate_.getMonth();\n\n return yearsDiff * 12 + monthsDiff;\n}\n\n// Fallback for modularized imports:\nexport default differenceInCalendarMonths;\n", "export function getRoundingMethod(method) {\n return (number) => {\n const round = method ? Math[method] : Math.trunc;\n const result = round(number);\n // Prevent negative zero\n return result === 0 ? 0 : result;\n };\n}\n", "import { toDate } from \"./toDate.js\";\n\n/**\n * @name differenceInMilliseconds\n * @category Millisecond Helpers\n * @summary Get the number of milliseconds between the given dates.\n *\n * @description\n * Get the number of milliseconds between the given dates.\n *\n * @param laterDate - The later date\n * @param earlierDate - The earlier date\n *\n * @returns The number of milliseconds\n *\n * @example\n * // How many milliseconds are between\n * // 2 July 2014 12:30:20.600 and 2 July 2014 12:30:21.700?\n * const result = differenceInMilliseconds(\n * new Date(2014, 6, 2, 12, 30, 21, 700),\n * new Date(2014, 6, 2, 12, 30, 20, 600)\n * )\n * //=> 1100\n */\nexport function differenceInMilliseconds(laterDate, earlierDate) {\n return +toDate(laterDate) - +toDate(earlierDate);\n}\n\n// Fallback for modularized imports:\nexport default differenceInMilliseconds;\n", "import { toDate } from \"./toDate.js\";\n\n/**\n * The {@link endOfDay} function options.\n */\n\n/**\n * @name endOfDay\n * @category Day Helpers\n * @summary Return the end of a day for the given date.\n *\n * @description\n * Return the end 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 - An object with options\n *\n * @returns The end of a day\n *\n * @example\n * // The end of a day for 2 September 2014 11:55:00:\n * const result = endOfDay(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 02 2014 23:59:59.999\n */\nexport function endOfDay(date, options) {\n const _date = toDate(date, options?.in);\n _date.setHours(23, 59, 59, 999);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default endOfDay;\n", "import { toDate } from \"./toDate.js\";\n\n/**\n * The {@link endOfMonth} function options.\n */\n\n/**\n * @name endOfMonth\n * @category Month Helpers\n * @summary Return the end of a month for the given date.\n *\n * @description\n * Return the end of a month 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 end of a month\n *\n * @example\n * // The end of a month for 2 September 2014 11:55:00:\n * const result = endOfMonth(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 30 2014 23:59:59.999\n */\nexport function endOfMonth(date, options) {\n const _date = toDate(date, options?.in);\n const month = _date.getMonth();\n _date.setFullYear(_date.getFullYear(), month + 1, 0);\n _date.setHours(23, 59, 59, 999);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default endOfMonth;\n", "import { endOfDay } from \"./endOfDay.js\";\nimport { endOfMonth } from \"./endOfMonth.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * @name isLastDayOfMonth\n * @category Month Helpers\n * @summary Is the given date the last day of a month?\n *\n * @description\n * Is the given date the last day of a month?\n *\n * @param date - The date to check\n * @param options - An object with options\n *\n * @returns The date is the last day of a month\n *\n * @example\n * // Is 28 February 2014 the last day of a month?\n * const result = isLastDayOfMonth(new Date(2014, 1, 28))\n * //=> true\n */\nexport function isLastDayOfMonth(date, options) {\n const _date = toDate(date, options?.in);\n return +endOfDay(_date, options) === +endOfMonth(_date, options);\n}\n\n// Fallback for modularized imports:\nexport default isLastDayOfMonth;\n", "import { normalizeDates } from \"./_lib/normalizeDates.js\";\nimport { compareAsc } from \"./compareAsc.js\";\nimport { differenceInCalendarMonths } from \"./differenceInCalendarMonths.js\";\nimport { isLastDayOfMonth } from \"./isLastDayOfMonth.js\";\n\n/**\n * The {@link differenceInMonths} function options.\n */\n\n/**\n * @name differenceInMonths\n * @category Month Helpers\n * @summary Get the number of full months between the given dates.\n *\n * @param laterDate - The later date\n * @param earlierDate - The earlier date\n * @param options - An object with options\n *\n * @returns The number of full months\n *\n * @example\n * // How many full months are between 31 January 2014 and 1 September 2014?\n * const result = differenceInMonths(new Date(2014, 8, 1), new Date(2014, 0, 31))\n * //=> 7\n */\nexport function differenceInMonths(laterDate, earlierDate, options) {\n const [laterDate_, workingLaterDate, earlierDate_] = normalizeDates(\n options?.in,\n laterDate,\n laterDate,\n earlierDate,\n );\n\n const sign = compareAsc(workingLaterDate, earlierDate_);\n const difference = Math.abs(\n differenceInCalendarMonths(workingLaterDate, earlierDate_),\n );\n\n if (difference < 1) return 0;\n\n if (workingLaterDate.getMonth() === 1 && workingLaterDate.getDate() > 27)\n workingLaterDate.setDate(30);\n\n workingLaterDate.setMonth(workingLaterDate.getMonth() - sign * difference);\n\n let isLastMonthNotFull = compareAsc(workingLaterDate, earlierDate_) === -sign;\n\n if (\n isLastDayOfMonth(laterDate_) &&\n difference === 1 &&\n compareAsc(laterDate_, earlierDate_) === 1\n ) {\n isLastMonthNotFull = false;\n }\n\n const result = sign * (difference - +isLastMonthNotFull);\n return result === 0 ? 0 : result;\n}\n\n// Fallback for modularized imports:\nexport default differenceInMonths;\n", "import { getRoundingMethod } from \"./_lib/getRoundingMethod.js\";\nimport { differenceInMilliseconds } from \"./differenceInMilliseconds.js\";\n\n/**\n * The {@link differenceInSeconds} function options.\n */\n\n/**\n * @name differenceInSeconds\n * @category Second Helpers\n * @summary Get the number of seconds between the given dates.\n *\n * @description\n * Get the number of seconds between the given dates.\n *\n * @param laterDate - The later date\n * @param earlierDate - The earlier date\n * @param options - An object with options.\n *\n * @returns The number of seconds\n *\n * @example\n * // How many seconds are between\n * // 2 July 2014 12:30:07.999 and 2 July 2014 12:30:20.000?\n * const result = differenceInSeconds(\n * new Date(2014, 6, 2, 12, 30, 20, 0),\n * new Date(2014, 6, 2, 12, 30, 7, 999)\n * )\n * //=> 12\n */\nexport function differenceInSeconds(laterDate, earlierDate, options) {\n const diff = differenceInMilliseconds(laterDate, earlierDate) / 1000;\n return getRoundingMethod(options?.roundingMethod)(diff);\n}\n\n// Fallback for modularized imports:\nexport default differenceInSeconds;\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", "import { endOfDay } from \"./endOfDay.js\";\n\n/**\n * The {@link endOfToday} function options.\n */\n\n/**\n * @name endOfToday\n * @category Day Helpers\n * @summary Return the end of today.\n * @pure false\n *\n * @description\n * Return the end of today.\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 options - The options\n *\n * @returns The end of today\n *\n * @example\n * // If today is 6 October 2014:\n * const result = endOfToday()\n * //=> Mon Oct 6 2014 23:59:59.999\n */\nexport function endOfToday(options) {\n return endOfDay(Date.now(), options);\n}\n\n// Fallback for modularized imports:\nexport default endOfToday;\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 { defaultLocale } from \"./_lib/defaultLocale.js\";\nimport { getDefaultOptions } from \"./_lib/defaultOptions.js\";\nimport { getTimezoneOffsetInMilliseconds } from \"./_lib/getTimezoneOffsetInMilliseconds.js\";\nimport { normalizeDates } from \"./_lib/normalizeDates.js\";\nimport { compareAsc } from \"./compareAsc.js\";\nimport { minutesInDay, minutesInMonth } from \"./constants.js\";\nimport { differenceInMonths } from \"./differenceInMonths.js\";\nimport { differenceInSeconds } from \"./differenceInSeconds.js\";\n\n/**\n * The {@link formatDistance} function options.\n */\n\n/**\n * @name formatDistance\n * @category Common Helpers\n * @summary Return the distance between the given dates in words.\n *\n * @description\n * Return the distance between the given dates in words.\n *\n * | Distance between dates | Result |\n * |-------------------------------------------------------------------|---------------------|\n * | 0 ... 30 secs | less than a minute |\n * | 30 secs ... 1 min 30 secs | 1 minute |\n * | 1 min 30 secs ... 44 mins 30 secs | [2..44] minutes |\n * | 44 mins ... 30 secs ... 89 mins 30 secs | about 1 hour |\n * | 89 mins 30 secs ... 23 hrs 59 mins 30 secs | about [2..24] hours |\n * | 23 hrs 59 mins 30 secs ... 41 hrs 59 mins 30 secs | 1 day |\n * | 41 hrs 59 mins 30 secs ... 29 days 23 hrs 59 mins 30 secs | [2..30] days |\n * | 29 days 23 hrs 59 mins 30 secs ... 44 days 23 hrs 59 mins 30 secs | about 1 month |\n * | 44 days 23 hrs 59 mins 30 secs ... 59 days 23 hrs 59 mins 30 secs | about 2 months |\n * | 59 days 23 hrs 59 mins 30 secs ... 1 yr | [2..12] months |\n * | 1 yr ... 1 yr 3 months | about 1 year |\n * | 1 yr 3 months ... 1 yr 9 month s | over 1 year |\n * | 1 yr 9 months ... 2 yrs | almost 2 years |\n * | N yrs ... N yrs 3 months | about N years |\n * | N yrs 3 months ... N yrs 9 months | over N years |\n * | N yrs 9 months ... N+1 yrs | almost N+1 years |\n *\n * With `options.includeSeconds == true`:\n * | Distance between dates | Result |\n * |------------------------|----------------------|\n * | 0 secs ... 5 secs | less than 5 seconds |\n * | 5 secs ... 10 secs | less than 10 seconds |\n * | 10 secs ... 20 secs | less than 20 seconds |\n * | 20 secs ... 40 secs | half a minute |\n * | 40 secs ... 60 secs | less than a minute |\n * | 60 secs ... 90 secs | 1 minute |\n *\n * @param laterDate - The date\n * @param earlierDate - The date to compare with\n * @param options - An object with options\n *\n * @returns The distance in words\n *\n * @throws `date` must not be Invalid Date\n * @throws `baseDate` must not be Invalid Date\n * @throws `options.locale` must contain `formatDistance` property\n *\n * @example\n * // What is the distance between 2 July 2014 and 1 January 2015?\n * const result = formatDistance(new Date(2014, 6, 2), new Date(2015, 0, 1))\n * //=> '6 months'\n *\n * @example\n * // What is the distance between 1 January 2015 00:00:15\n * // and 1 January 2015 00:00:00, including seconds?\n * const result = formatDistance(\n * new Date(2015, 0, 1, 0, 0, 15),\n * new Date(2015, 0, 1, 0, 0, 0),\n * { includeSeconds: true }\n * )\n * //=> 'less than 20 seconds'\n *\n * @example\n * // What is the distance from 1 January 2016\n * // to 1 January 2015, with a suffix?\n * const result = formatDistance(new Date(2015, 0, 1), new Date(2016, 0, 1), {\n * addSuffix: true\n * })\n * //=> 'about 1 year ago'\n *\n * @example\n * // What is the distance between 1 August 2016 and 1 January 2015 in Esperanto?\n * import { eoLocale } from 'date-fns/locale/eo'\n * const result = formatDistance(new Date(2016, 7, 1), new Date(2015, 0, 1), {\n * locale: eoLocale\n * })\n * //=> 'pli ol 1 jaro'\n */\nexport function formatDistance(laterDate, earlierDate, options) {\n const defaultOptions = getDefaultOptions();\n const locale = options?.locale ?? defaultOptions.locale ?? defaultLocale;\n const minutesInAlmostTwoDays = 2520;\n\n const comparison = compareAsc(laterDate, earlierDate);\n\n if (isNaN(comparison)) throw new RangeError(\"Invalid time value\");\n\n const localizeOptions = Object.assign({}, options, {\n addSuffix: options?.addSuffix,\n comparison: comparison,\n });\n\n const [laterDate_, earlierDate_] = normalizeDates(\n options?.in,\n ...(comparison > 0 ? [earlierDate, laterDate] : [laterDate, earlierDate]),\n );\n\n const seconds = differenceInSeconds(earlierDate_, laterDate_);\n const offsetInSeconds =\n (getTimezoneOffsetInMilliseconds(earlierDate_) -\n getTimezoneOffsetInMilliseconds(laterDate_)) /\n 1000;\n const minutes = Math.round((seconds - offsetInSeconds) / 60);\n let months;\n\n // 0 up to 2 mins\n if (minutes < 2) {\n if (options?.includeSeconds) {\n if (seconds < 5) {\n return locale.formatDistance(\"lessThanXSeconds\", 5, localizeOptions);\n } else if (seconds < 10) {\n return locale.formatDistance(\"lessThanXSeconds\", 10, localizeOptions);\n } else if (seconds < 20) {\n return locale.formatDistance(\"lessThanXSeconds\", 20, localizeOptions);\n } else if (seconds < 40) {\n return locale.formatDistance(\"halfAMinute\", 0, localizeOptions);\n } else if (seconds < 60) {\n return locale.formatDistance(\"lessThanXMinutes\", 1, localizeOptions);\n } else {\n return locale.formatDistance(\"xMinutes\", 1, localizeOptions);\n }\n } else {\n if (minutes === 0) {\n return locale.formatDistance(\"lessThanXMinutes\", 1, localizeOptions);\n } else {\n return locale.formatDistance(\"xMinutes\", minutes, localizeOptions);\n }\n }\n\n // 2 mins up to 0.75 hrs\n } else if (minutes < 45) {\n return locale.formatDistance(\"xMinutes\", minutes, localizeOptions);\n\n // 0.75 hrs up to 1.5 hrs\n } else if (minutes < 90) {\n return locale.formatDistance(\"aboutXHours\", 1, localizeOptions);\n\n // 1.5 hrs up to 24 hrs\n } else if (minutes < minutesInDay) {\n const hours = Math.round(minutes / 60);\n return locale.formatDistance(\"aboutXHours\", hours, localizeOptions);\n\n // 1 day up to 1.75 days\n } else if (minutes < minutesInAlmostTwoDays) {\n return locale.formatDistance(\"xDays\", 1, localizeOptions);\n\n // 1.75 days up to 30 days\n } else if (minutes < minutesInMonth) {\n const days = Math.round(minutes / minutesInDay);\n return locale.formatDistance(\"xDays\", days, localizeOptions);\n\n // 1 month up to 2 months\n } else if (minutes < minutesInMonth * 2) {\n months = Math.round(minutes / minutesInMonth);\n return locale.formatDistance(\"aboutXMonths\", months, localizeOptions);\n }\n\n months = differenceInMonths(earlierDate_, laterDate_);\n\n // 2 months up to 12 months\n if (months < 12) {\n const nearestMonth = Math.round(minutes / minutesInMonth);\n return locale.formatDistance(\"xMonths\", nearestMonth, localizeOptions);\n\n // 1 year up to max Date\n } else {\n const monthsSinceStartOfYear = months % 12;\n const years = Math.trunc(months / 12);\n\n // N years up to 1 years 3 months\n if (monthsSinceStartOfYear < 3) {\n return locale.formatDistance(\"aboutXYears\", years, localizeOptions);\n\n // N years 3 months up to N years 9 months\n } else if (monthsSinceStartOfYear < 9) {\n return locale.formatDistance(\"overXYears\", years, localizeOptions);\n\n // N years 9 months up to N year 12 months\n } else {\n return locale.formatDistance(\"almostXYears\", years + 1, localizeOptions);\n }\n }\n}\n\n// Fallback for modularized imports:\nexport default formatDistance;\n", "import { constructNow } from \"./constructNow.js\";\n\nimport { formatDistance } from \"./formatDistance.js\";\n\n/**\n * The {@link formatDistanceToNow} function options.\n */\n\n/**\n * @name formatDistanceToNow\n * @category Common Helpers\n * @summary Return the distance between the given date and now in words.\n * @pure false\n *\n * @description\n * Return the distance between the given date and now in words.\n *\n * | Distance to now | Result |\n * |-------------------------------------------------------------------|---------------------|\n * | 0 ... 30 secs | less than a minute |\n * | 30 secs ... 1 min 30 secs | 1 minute |\n * | 1 min 30 secs ... 44 mins 30 secs | [2..44] minutes |\n * | 44 mins ... 30 secs ... 89 mins 30 secs | about 1 hour |\n * | 89 mins 30 secs ... 23 hrs 59 mins 30 secs | about [2..24] hours |\n * | 23 hrs 59 mins 30 secs ... 41 hrs 59 mins 30 secs | 1 day |\n * | 41 hrs 59 mins 30 secs ... 29 days 23 hrs 59 mins 30 secs | [2..30] days |\n * | 29 days 23 hrs 59 mins 30 secs ... 44 days 23 hrs 59 mins 30 secs | about 1 month |\n * | 44 days 23 hrs 59 mins 30 secs ... 59 days 23 hrs 59 mins 30 secs | about 2 months |\n * | 59 days 23 hrs 59 mins 30 secs ... 1 yr | [2..12] months |\n * | 1 yr ... 1 yr 3 months | about 1 year |\n * | 1 yr 3 months ... 1 yr 9 month s | over 1 year |\n * | 1 yr 9 months ... 2 yrs | almost 2 years |\n * | N yrs ... N yrs 3 months | about N years |\n * | N yrs 3 months ... N yrs 9 months | over N years |\n * | N yrs 9 months ... N+1 yrs | almost N+1 years |\n *\n * With `options.includeSeconds == true`:\n * | Distance to now | Result |\n * |---------------------|----------------------|\n * | 0 secs ... 5 secs | less than 5 seconds |\n * | 5 secs ... 10 secs | less than 10 seconds |\n * | 10 secs ... 20 secs | less than 20 seconds |\n * | 20 secs ... 40 secs | half a minute |\n * | 40 secs ... 60 secs | less than a minute |\n * | 60 secs ... 90 secs | 1 minute |\n *\n * @param date - The given date\n * @param options - The object with options\n *\n * @returns The distance in words\n *\n * @throws `date` must not be Invalid Date\n * @throws `options.locale` must contain `formatDistance` property\n *\n * @example\n * // If today is 1 January 2015, what is the distance to 2 July 2014?\n * const result = formatDistanceToNow(\n * new Date(2014, 6, 2)\n * )\n * //=> '6 months'\n *\n * @example\n * // If now is 1 January 2015 00:00:00,\n * // what is the distance to 1 January 2015 00:00:15, including seconds?\n * const result = formatDistanceToNow(\n * new Date(2015, 0, 1, 0, 0, 15),\n * {includeSeconds: true}\n * )\n * //=> 'less than 20 seconds'\n *\n * @example\n * // If today is 1 January 2015,\n * // what is the distance to 1 January 2016, with a suffix?\n * const result = formatDistanceToNow(\n * new Date(2016, 0, 1),\n * {addSuffix: true}\n * )\n * //=> 'in about 1 year'\n *\n * @example\n * // If today is 1 January 2015,\n * // what is the distance to 1 August 2016 in Esperanto?\n * const eoLocale = require('date-fns/locale/eo')\n * const result = formatDistanceToNow(\n * new Date(2016, 7, 1),\n * {locale: eoLocale}\n * )\n * //=> 'pli ol 1 jaro'\n */\nexport function formatDistanceToNow(date, options) {\n return formatDistance(date, constructNow(date), options);\n}\n\n// Fallback for modularized imports:\nexport default formatDistanceToNow;\n", "import { constructFrom } from \"./constructFrom.js\";\n\n/**\n * @name transpose\n * @category Generic Helpers\n * @summary Transpose the date to the given constructor.\n *\n * @description\n * The function transposes the date to the given constructor. It helps you\n * to transpose the date in the system time zone to say `UTCDate` or any other\n * date extension.\n *\n * @typeParam InputDate - The input `Date` type derived from the passed argument.\n * @typeParam ResultDate - The result `Date` type derived from the passed constructor.\n *\n * @param date - The date to use values from\n * @param constructor - The date constructor to use\n *\n * @returns Date transposed to the given constructor\n *\n * @example\n * // Create July 10, 2022 00:00 in locale time zone\n * const date = new Date(2022, 6, 10)\n * //=> 'Sun Jul 10 2022 00:00:00 GMT+0800 (Singapore Standard Time)'\n *\n * @example\n * // Transpose the date to July 10, 2022 00:00 in UTC\n * transpose(date, UTCDate)\n * //=> 'Sun Jul 10 2022 00:00:00 GMT+0000 (Coordinated Universal Time)'\n */\nexport function transpose(date, constructor) {\n const date_ = isConstructor(constructor)\n ? new constructor(0)\n : constructFrom(constructor, 0);\n date_.setFullYear(date.getFullYear(), date.getMonth(), date.getDate());\n date_.setHours(\n date.getHours(),\n date.getMinutes(),\n date.getSeconds(),\n date.getMilliseconds(),\n );\n return date_;\n}\n\nfunction isConstructor(constructor) {\n return (\n typeof constructor === \"function\" &&\n constructor.prototype?.constructor === constructor\n );\n}\n\n// Fallback for modularized imports:\nexport default transpose;\n", "import { constructFrom } from \"./constructFrom.js\";\nimport { constructNow } from \"./constructNow.js\";\nimport { isSameDay } from \"./isSameDay.js\";\n\n/**\n * The {@link isToday} function options.\n */\n\n/**\n * @name isToday\n * @category Day Helpers\n * @summary Is the given date today?\n * @pure false\n *\n * @description\n * Is the given date today?\n *\n * @param date - The date to check\n * @param options - An object with options\n *\n * @returns The date is today\n *\n * @example\n * // If today is 6 October 2014, is 6 October 14:00:00 today?\n * const result = isToday(new Date(2014, 9, 6, 14, 0))\n * //=> true\n */\nexport function isToday(date, options) {\n return isSameDay(\n constructFrom(options?.in || date, date),\n constructNow(options?.in || date),\n );\n}\n\n// Fallback for modularized imports:\nexport default isToday;\n", "import type { I18n, I18nClient } from '@payloadcms/translations'\n\nimport { TZDateMini as TZDate } from '@date-fns/tz/date/mini'\nimport { format, formatDistanceToNow, transpose } from 'date-fns'\n\nexport type FormatDateArgs = {\n date: Date | number | string | undefined\n i18n: I18n<unknown, unknown> | I18nClient<unknown>\n pattern: string\n timezone?: string\n}\n\nexport const formatDate = ({ date, i18n, pattern, timezone }: FormatDateArgs): string => {\n const theDate = new TZDate(new Date(date))\n\n if (timezone) {\n const DateWithOriginalTz = TZDate.tz(timezone)\n\n const modifiedDate = theDate.withTimeZone(timezone)\n\n // Transpose the date to the selected timezone\n const dateWithTimezone = transpose(modifiedDate, DateWithOriginalTz)\n\n // Transpose the date to the user's timezone - this is necessary because the react-datepicker component insists on displaying the date in the user's timezone\n return i18n.dateFNS\n ? format(dateWithTimezone, pattern, { locale: i18n.dateFNS })\n : `${i18n.t('general:loading')}...`\n }\n\n return i18n.dateFNS\n ? format(theDate, pattern, { locale: i18n.dateFNS })\n : `${i18n.t('general:loading')}...`\n}\n\ntype FormatTimeToNowArgs = {\n date: Date | number | string | undefined\n i18n: I18n<unknown, unknown> | I18nClient<unknown>\n}\n\nexport const formatTimeToNow = ({ date, i18n }: FormatTimeToNowArgs): string => {\n const theDate = typeof date === 'string' ? new Date(date) : date\n return i18n?.dateFNS\n ? formatDistanceToNow(theDate, { locale: i18n.dateFNS })\n : `${i18n.t('general:loading')}...`\n}\n", "type SerializedLexicalEditor = {\n root: {\n children: Array<{ children?: Array<{ type: string }>; type: string }>\n }\n}\n\nexport function isSerializedLexicalEditor(value: unknown): value is SerializedLexicalEditor {\n return typeof value === 'object' && 'root' in value\n}\n\nexport function formatLexicalDocTitle(\n editorState: Array<{ children?: Array<{ type: string }>; type: string }>,\n textContent: string,\n): string {\n for (const node of editorState) {\n if ('text' in node && node.text) {\n textContent += node.text as string\n } else {\n if (!('children' in node)) {\n textContent += `[${node.type}]`\n }\n }\n if ('children' in node && node.children) {\n textContent += formatLexicalDocTitle(node.children as Array<{ type: string }>, textContent)\n }\n }\n return textContent\n}\n", "export const formatRelationshipTitle = (data): string => {\n if (Array.isArray(data)) {\n return data\n .map((item) => {\n if (typeof item === 'object' && item !== null) {\n return item.id\n }\n return String(item)\n })\n .filter(Boolean)\n .join(', ')\n }\n\n if (typeof data === 'object' && data !== null) {\n return data.id || ''\n }\n\n return String(data)\n}\n", "import type { ClientCollectionConfig, ClientGlobalConfig } from 'payload'\n\nimport { createContext, use, useEffect, useState } from 'react'\n\nimport { formatDocTitle } from '../../utilities/formatDocTitle/index.js'\nimport { useConfig } from '../Config/index.js'\nimport { useDocumentInfo } from '../DocumentInfo/index.js'\nimport { useTranslation } from '../Translation/index.js'\n\ntype IDocumentTitleContext = {\n setDocumentTitle: (title: string) => void\n title: string\n}\n\nconst DocumentTitleContext = createContext({} as IDocumentTitleContext)\n\nexport const useDocumentTitle = (): IDocumentTitleContext => use(DocumentTitleContext)\n\nexport const DocumentTitleProvider: React.FC<{\n children: React.ReactNode\n}> = ({ children }) => {\n const { id, collectionSlug, data, docConfig, globalSlug, initialData } = useDocumentInfo()\n\n const {\n config: {\n admin: { dateFormat },\n },\n } = useConfig()\n\n const { i18n } = useTranslation()\n\n const [title, setDocumentTitle] = useState(() =>\n formatDocTitle({\n collectionConfig: collectionSlug ? (docConfig as ClientCollectionConfig) : undefined,\n data: { ...(initialData || {}), id },\n dateFormat,\n fallback: id?.toString(),\n globalConfig: globalSlug ? (docConfig as ClientGlobalConfig) : undefined,\n i18n,\n }),\n )\n\n useEffect(() => {\n setDocumentTitle(\n formatDocTitle({\n collectionConfig: collectionSlug ? (docConfig as ClientCollectionConfig) : undefined,\n data: { ...data, id },\n dateFormat,\n fallback: id?.toString(),\n globalConfig: globalSlug ? (docConfig as ClientGlobalConfig) : undefined,\n i18n,\n }),\n )\n }, [data, dateFormat, i18n, id, collectionSlug, docConfig, globalSlug])\n\n return <DocumentTitleContext value={{ setDocumentTitle, title }}>{children}</DocumentTitleContext>\n}\n", "'use client'\nimport { dequal } from 'dequal/lite' // lite: no need for Map and Set support\nimport { formatAdminURL } from 'payload/shared'\nimport React, { createContext, use, useCallback, useEffect, useRef } from 'react'\n\nimport type { Preferences } from '../../forms/Form/types.js'\n\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { requests } from '../../utilities/api.js'\nimport { deepMergeSimple } from '../../utilities/deepMerge.js'\nimport { useAuth } from '../Auth/index.js'\nimport { useConfig } from '../Config/index.js'\n\ntype PreferencesContext = {\n getPreference: <T = Preferences>(key: string) => Promise<T>\n /**\n * @param key - a string identifier for the property being set\n * @param value - preference data to store\n * @param merge - when true will combine the existing preference object batch the change into one request for objects, default = false\n */\n setPreference: <T = Preferences>(key: string, value: T, merge?: boolean) => Promise<void>\n}\n\nconst Context = createContext({} as PreferencesContext)\n\nconst requestOptions = (value, language) => ({\n body: JSON.stringify({ value }),\n headers: {\n 'Accept-Language': language,\n 'Content-Type': 'application/json',\n },\n})\n\nexport const PreferencesProvider: React.FC<{ children?: React.ReactNode }> = ({ children }) => {\n const contextRef = useRef({} as PreferencesContext)\n const preferencesRef = useRef({})\n const pendingUpdate = useRef({})\n const { config } = useConfig()\n const { user } = useAuth()\n const { i18n } = useTranslation()\n\n const {\n routes: { api },\n } = config\n\n useEffect(() => {\n if (!user) {\n // clear preferences between users\n preferencesRef.current = {}\n }\n }, [user])\n\n const getPreference = useCallback(\n async <T = unknown,>(key: string): Promise<T> => {\n const prefs = preferencesRef.current\n\n if (typeof prefs[key] !== 'undefined') {\n return prefs[key]\n }\n\n const promise = new Promise((resolve: (value: T) => void) => {\n void (async () => {\n const request = await requests.get(\n formatAdminURL({\n apiRoute: api,\n path: `/payload-preferences/${key}`,\n }),\n {\n credentials: 'include',\n headers: {\n 'Accept-Language': i18n.language,\n },\n },\n )\n\n let value = null\n\n if (request.status === 200) {\n const preference = await request.json()\n value = preference.value\n }\n\n preferencesRef.current[key] = value\n\n resolve(value)\n })()\n })\n\n prefs[key] = promise\n\n return promise\n },\n [i18n.language, api, preferencesRef],\n )\n\n const setPreference = useCallback(\n async (key: string, value: unknown, merge = false): Promise<void> => {\n if (merge === false) {\n preferencesRef.current[key] = value\n\n await requests.post(\n formatAdminURL({\n apiRoute: api,\n path: `/payload-preferences/${key}`,\n }),\n requestOptions(value, i18n.language),\n )\n\n return\n }\n\n let newValue = value\n const currentPreference = await getPreference(key)\n\n // handle value objects where multiple values can be set under one key\n if (\n typeof value === 'object' &&\n typeof currentPreference === 'object' &&\n typeof newValue === 'object'\n ) {\n // merge the value with any existing preference for the key\n if (currentPreference) {\n newValue = deepMergeSimple(currentPreference, newValue)\n }\n\n if (dequal(newValue, currentPreference)) {\n return\n }\n\n // add the requested changes to a pendingUpdate batch for the key\n pendingUpdate.current[key] = {\n ...pendingUpdate.current[key],\n ...(newValue as Record<string, unknown>),\n }\n } else {\n if (newValue === currentPreference) {\n return\n }\n\n pendingUpdate.current[key] = newValue\n }\n\n const updatePreference = async () => {\n // compare the value stored in context before sending to eliminate duplicate requests\n if (dequal(pendingUpdate.current[key], preferencesRef.current[key])) {\n return\n }\n\n // preference set in context here to prevent other updatePreference at the same time\n preferencesRef.current[key] = pendingUpdate.current[key]\n\n await requests.post(\n formatAdminURL({\n apiRoute: api,\n path: `/payload-preferences/${key}`,\n }),\n requestOptions(preferencesRef.current[key], i18n.language),\n )\n\n // reset any changes for this key after sending the request\n delete pendingUpdate.current[key]\n }\n\n // use timeout to allow multiple changes of different values using the same key in one request\n setTimeout(() => {\n void updatePreference()\n })\n },\n [api, getPreference, i18n.language, pendingUpdate],\n )\n\n contextRef.current.getPreference = getPreference\n contextRef.current.setPreference = setPreference\n return <Context value={contextRef.current}>{children}</Context>\n}\n\nexport const usePreferences = (): PreferencesContext => use(Context)\n", "/**\n * Very simple, but fast deepMerge implementation. Only deepMerges objects, not arrays and clones everything.\n * Do not use this if your object contains any complex objects like React Components, or if you would like to combine Arrays.\n * If you only have simple objects and need a fast deepMerge, this is the function for you.\n *\n * obj2 takes precedence over obj1 - thus if obj2 has a key that obj1 also has, obj2's value will be used.\n *\n * @param obj1 base object\n * @param obj2 object to merge \"into\" obj1\n */\nexport function deepMergeSimple<T = object>(obj1: object, obj2: object): T {\n const output = { ...obj1 }\n\n for (const key in obj2) {\n if (Object.prototype.hasOwnProperty.call(obj2, key)) {\n if (typeof obj2[key] === 'object' && !Array.isArray(obj2[key]) && obj1[key]) {\n output[key] = deepMergeSimple(obj1[key], obj2[key])\n } else {\n output[key] = obj2[key]\n }\n }\n }\n\n return output as T\n}\n", "'use client'\nimport type { UploadEdits } from 'payload'\n\nimport React from 'react'\n\nexport type UploadEditsProviderProps = {\n children: React.ReactNode\n initialUploadEdits?: UploadEdits\n}\nexport type UploadEditsContext = {\n getUploadEdits: () => UploadEdits\n resetUploadEdits: () => void\n updateUploadEdits: (edits: UploadEdits) => void\n uploadEdits: UploadEdits\n}\n\nconst Context = React.createContext<UploadEditsContext>({\n getUploadEdits: () => undefined,\n resetUploadEdits: undefined,\n updateUploadEdits: undefined,\n uploadEdits: undefined,\n})\n\nexport const UploadEditsProvider = ({ children, initialUploadEdits }: UploadEditsProviderProps) => {\n const [uploadEdits, setUploadEdits] = React.useState<UploadEdits>(initialUploadEdits || {})\n\n const resetUploadEdits = () => {\n setUploadEdits({})\n }\n\n const updateUploadEdits = (edits: UploadEdits) => {\n setUploadEdits((prevEdits) => ({\n ...(prevEdits || {}),\n ...(edits || {}),\n }))\n }\n\n const getUploadEdits = () => uploadEdits\n\n return (\n <Context value={{ getUploadEdits, resetUploadEdits, updateUploadEdits, uploadEdits }}>\n {children}\n </Context>\n )\n}\n\nexport const useUploadEdits = (): UploadEditsContext => React.use(Context)\n", "import type { Data, SanitizedDocumentPermissions, SanitizedPermissions } from 'payload'\n\nimport { formatAdminURL } from 'payload/shared'\nimport * as qs from 'qs-esm'\nimport React from 'react'\n\nimport { hasSavePermission as getHasSavePermission } from '../../utilities/hasSavePermission.js'\nimport { isEditing as getIsEditing } from '../../utilities/isEditing.js'\n\nexport type GetDocPermissions = (data?: Data) => Promise<void>\n\nexport const useGetDocPermissions = ({\n id,\n api,\n collectionSlug,\n globalSlug,\n i18n,\n locale,\n permissions,\n setDocPermissions,\n setHasPublishPermission,\n setHasSavePermission,\n}: {\n api: string\n collectionSlug: string\n globalSlug: string\n i18n: any\n id: string\n locale: string\n permissions: SanitizedPermissions\n setDocPermissions: React.Dispatch<React.SetStateAction<SanitizedDocumentPermissions>>\n setHasPublishPermission: React.Dispatch<React.SetStateAction<boolean>>\n setHasSavePermission: React.Dispatch<React.SetStateAction<boolean>>\n}): GetDocPermissions =>\n React.useCallback(\n async (data: Data) => {\n const params = {\n locale: locale || undefined,\n }\n\n const idToUse = data?.id || id\n const newIsEditing = getIsEditing({ id: idToUse, collectionSlug, globalSlug })\n\n if (newIsEditing) {\n const docAccessPath: `/${string}` = collectionSlug\n ? `/${collectionSlug}/access/${idToUse}`\n : globalSlug\n ? `/globals/${globalSlug}/access`\n : null\n\n if (docAccessPath) {\n const res = await fetch(\n formatAdminURL({\n apiRoute: api,\n path: `${docAccessPath}${qs.stringify(params, { addQueryPrefix: true })}`,\n }),\n {\n body: JSON.stringify({\n ...(data?.doc || data || {}),\n _status: 'draft',\n }),\n credentials: 'include',\n headers: {\n 'Accept-Language': i18n.language,\n 'Content-Type': 'application/json',\n },\n method: 'post',\n },\n )\n\n const json: SanitizedDocumentPermissions = await res.json()\n\n const publishedAccessJSON = await fetch(\n formatAdminURL({\n apiRoute: api,\n path: `${docAccessPath}${qs.stringify(params, { addQueryPrefix: true })}`,\n }),\n {\n body: JSON.stringify({\n ...(data?.doc || data || {}),\n _status: 'published',\n }),\n credentials: 'include',\n headers: {\n 'Accept-Language': i18n.language,\n 'Content-Type': 'application/json',\n },\n method: 'POST',\n },\n ).then((res) => res.json())\n\n setDocPermissions(json)\n\n setHasSavePermission(\n getHasSavePermission({\n collectionSlug,\n docPermissions: json,\n globalSlug,\n isEditing: newIsEditing,\n }),\n )\n\n setHasPublishPermission(publishedAccessJSON?.update)\n }\n } else {\n // when creating new documents, there is no permissions saved for this document yet\n // use the generic entity permissions instead\n const newDocPermissions = collectionSlug\n ? permissions?.collections?.[collectionSlug]\n : permissions?.globals?.[globalSlug]\n\n setDocPermissions(newDocPermissions)\n\n setHasSavePermission(\n getHasSavePermission({\n collectionSlug,\n docPermissions: newDocPermissions,\n globalSlug,\n isEditing: newIsEditing,\n }),\n )\n }\n },\n [\n locale,\n id,\n collectionSlug,\n globalSlug,\n api,\n i18n.language,\n setDocPermissions,\n setHasSavePermission,\n setHasPublishPermission,\n permissions?.collections,\n permissions?.globals,\n ],\n )\n", "import type {\n SanitizedCollectionPermission,\n SanitizedDocumentPermissions,\n SanitizedGlobalPermission,\n} from 'payload'\n\nexport const hasSavePermission = (args: {\n /*\n * Pass either `collectionSlug` or `globalSlug`\n */\n collectionSlug?: string\n docPermissions: SanitizedDocumentPermissions\n /*\n * Pass either `collectionSlug` or `globalSlug`\n */\n globalSlug?: string\n isEditing: boolean\n}) => {\n const { collectionSlug, docPermissions, globalSlug, isEditing } = args\n\n if (collectionSlug) {\n return Boolean(\n (isEditing && docPermissions?.update) ||\n (!isEditing && (docPermissions as SanitizedCollectionPermission)?.create),\n )\n }\n\n if (globalSlug) {\n return Boolean((docPermissions as SanitizedGlobalPermission)?.update)\n }\n\n return false\n}\n", "export const isEditing = ({\n id,\n collectionSlug,\n globalSlug,\n}: {\n collectionSlug?: string\n globalSlug?: string\n id?: number | string\n}): boolean => Boolean(globalSlug || (collectionSlug && !!id))\n", "'use client'\nimport React, { createContext, use } from 'react'\n\nexport const OperationContext = createContext('' as Operation)\n\nexport const OperationProvider: React.FC<{ children: React.ReactNode; operation: Operation }> = ({\n children,\n operation,\n}) => <OperationContext value={operation}>{children}</OperationContext>\n\nexport type Operation = 'create' | 'update'\n\nexport const useOperation = (): Operation | undefined => use(OperationContext)\n", "import React from 'react'\n\n/**\n * All fields are wrapped in a `FieldPathContext` provider by default.\n * The `useFieldPath` hook will return this value if it exists, not the path the field was explicitly given.\n * This means if you render a field directly, you will need to wrap it with a new `FieldPathContext` provider.\n * Otherwise, it will return the parent's path, not the path it was explicitly given.\n * @example\n * ```tsx\n * 'use client'\n * import React from 'react'\n * import { TextField, FieldPathContext } from '@payloadcms/ui'\n * import type { TextFieldClientComponent } from 'payload'\n *\n * export const MyCustomField: TextFieldClientComponent = (props) => {\n * return (\n * <FieldPathContext value=\"path.to.some.other.field\">\n * <TextField {...props} />\n * </FieldPathContext>\n * )\n * }\n * ```\n *\n * @experimental This is an experimental API and may change at any time. Use at your own risk.\n */\nexport const FieldPathContext = React.createContext<string>(undefined)\n\n/**\n * Gets the current field path from the nearest `FieldPathContext` provider.\n * All fields are wrapped in this context by default.\n *\n * @experimental This is an experimental API and may change at any time. Use at your own risk.\n */\nexport const useFieldPath = () => {\n const context = React.useContext(FieldPathContext)\n\n if (!context) {\n // swallow the error, not all fields are wrapped in a FieldPathContext\n return undefined\n }\n\n return context\n}\n", "'use client'\nimport type { FieldPaths } from 'payload'\nimport type { MarkOptional } from 'ts-essentials'\n\nimport React from 'react'\n\nimport { WatchCondition } from './WatchCondition.js'\n\nexport const withCondition = <P extends MarkOptional<FieldPaths, 'indexPath' | 'path'>>(\n Field: React.ComponentType<P>,\n): React.FC<P> => {\n const CheckForCondition: React.FC<P> = (props) => {\n const { path } = props\n\n return (\n <WatchCondition path={path}>\n <Field {...props} />\n </WatchCondition>\n )\n }\n\n return CheckForCondition\n}\n", "'use client'\n\nimport type React from 'react'\n\nimport { useFormFields } from '../Form/context.js'\n\nexport const WatchCondition: React.FC<{\n children: React.ReactNode\n path: string\n}> = (props) => {\n const { children, path } = props\n\n const field = useFormFields(([fields]) => (fields && fields?.[path]) || null)\n\n const { passesCondition } = field || {}\n\n if (passesCondition === false) {\n return null\n }\n\n return children\n}\n", "import type { ClientField } from 'payload'\n\nexport const mergeFieldStyles = (\n field: ClientField | Omit<ClientField, 'type'>,\n): React.CSSProperties => ({\n ...(field?.admin?.style || {}),\n ...(field?.admin?.width\n ? {\n '--field-width': field.admin.width,\n }\n : {\n flex: '1 1 auto',\n }),\n // allow flex overrides to still take precedence over the fallback\n ...(field?.admin?.style?.flex\n ? {\n flex: field.admin.style.flex,\n }\n : {}),\n})\n", "'use client'\nimport type { Locale, SanitizedLocalizationConfig } from 'payload'\n\nexport const fieldBaseClass = 'field-type'\n\n/**\n * Determines whether a field should be displayed as right-to-left (RTL) based on its configuration, payload's localization configuration and the adming user's currently enabled locale.\n\n * @returns Whether the field should be displayed as RTL.\n */\nexport function isFieldRTL({\n fieldLocalized,\n fieldRTL,\n locale,\n localizationConfig,\n}: {\n fieldLocalized: boolean\n fieldRTL: boolean\n locale: Locale\n localizationConfig?: SanitizedLocalizationConfig\n}) {\n const hasMultipleLocales =\n locale &&\n localizationConfig &&\n localizationConfig.locales &&\n localizationConfig.locales.length > 1\n\n const isCurrentLocaleDefaultLocale = locale?.code === localizationConfig?.defaultLocale\n\n return (\n (fieldRTL !== false &&\n locale?.rtl === true &&\n (fieldLocalized ||\n (!fieldLocalized && !hasMultipleLocales) || // If there is only one locale which is also rtl, that field is rtl too\n (!fieldLocalized && isCurrentLocaleDefaultLocale))) || // If the current locale is the default locale, but the field is not localized, that field is rtl too\n fieldRTL === true\n ) // If fieldRTL is true. This should be useful for when no localization is set at all in the payload config, but you still want fields to be rtl.\n}\n", "'use client'\nimport type { StaticLabel } from 'payload'\n\nimport React, { useEffect, useId, useState } from 'react'\n\nimport { RenderCustomComponent } from '../../elements/RenderCustomComponent/index.js'\nimport { FieldLabel } from '../../fields/FieldLabel/index.js'\nimport { CheckIcon } from '../../icons/Check/index.js'\nimport { LineIcon } from '../../icons/Line/index.js'\n\nexport type CheckboxInputProps = {\n readonly AfterInput?: React.ReactNode\n readonly BeforeInput?: React.ReactNode\n readonly checked?: boolean\n readonly className?: string\n readonly id?: string\n readonly inputRef?: React.RefObject<HTMLInputElement | null>\n readonly Label?: React.ReactNode\n readonly label?: StaticLabel\n readonly localized?: boolean\n readonly name?: string\n readonly onToggle: (event: React.ChangeEvent<HTMLInputElement>) => void\n readonly partialChecked?: boolean\n readonly readOnly?: boolean\n readonly required?: boolean\n}\n\nexport const inputBaseClass = 'checkbox-input'\n\nexport const CheckboxInput: React.FC<CheckboxInputProps> = ({\n id: idFromProps,\n name,\n AfterInput,\n BeforeInput,\n checked,\n className,\n inputRef,\n Label,\n label,\n localized,\n onToggle,\n partialChecked,\n readOnly: readOnlyFromProps,\n required,\n}) => {\n const [isHydrated, setIsHydrated] = useState(false)\n const fallbackID = useId()\n const id = idFromProps || fallbackID\n\n useEffect(() => {\n setIsHydrated(true)\n }, [])\n\n const readOnly = readOnlyFromProps || !isHydrated\n\n return (\n <div\n className={[\n className,\n inputBaseClass,\n checked && `${inputBaseClass}--checked`,\n readOnly && `${inputBaseClass}--read-only`,\n ]\n .filter(Boolean)\n .join(' ')}\n >\n <div className={`${inputBaseClass}__input`}>\n {BeforeInput}\n <input\n aria-label=\"\"\n aria-labelledby={name}\n checked={Boolean(checked)}\n disabled={readOnly}\n id={id}\n name={name}\n onChange={onToggle}\n ref={inputRef}\n required={required}\n title={name}\n type=\"checkbox\"\n />\n <span\n className={[`${inputBaseClass}__icon`, !checked && partialChecked ? 'partial' : 'check']\n .filter(Boolean)\n .join(' ')}\n >\n {checked && <CheckIcon />}\n {!checked && partialChecked && <LineIcon />}\n </span>\n {AfterInput}\n </div>\n <RenderCustomComponent\n CustomComponent={Label}\n Fallback={\n <FieldLabel htmlFor={id} label={label} localized={localized} required={required} />\n }\n />\n </div>\n )\n}\n", "import React from 'react'\n\nimport './index.scss'\n\nexport const CheckIcon: React.FC = () => (\n <svg className=\"icon icon--check\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n className=\"stroke\"\n d=\"M15.3333 6.00001L8.00001 13.3333L4.66667 10\"\n strokeLinecap=\"square\"\n />\n </svg>\n)\n", "import React from 'react'\n\nimport './index.scss'\n\nexport const LineIcon: React.FC = () => (\n <svg\n className=\"icon icon--line\"\n fill=\"none\"\n height=\"20\"\n viewBox=\"0 0 20 20\"\n width=\"20\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path className=\"stroke\" d=\"M5.33333 10H14.6667\" strokeLinecap=\"square\" />\n </svg>\n)\n", "export const scrollToID = (id: string): void => {\n const element = document.getElementById(id)\n\n if (element) {\n const bounds = element.getBoundingClientRect()\n window.scrollBy({\n behavior: 'smooth',\n top: bounds.top - 100,\n })\n }\n}\n", "'use client'\nimport type {\n ArrayField,\n ClientComponentProps,\n ClientField,\n Row,\n SanitizedFieldPermissions,\n} from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport React from 'react'\n\nimport type { UseDraggableSortableReturn } from '../../elements/DraggableSortable/useDraggableSortable/types.js'\n\nimport { ArrayAction } from '../../elements/ArrayAction/index.js'\nimport { Collapsible } from '../../elements/Collapsible/index.js'\nimport { ErrorPill } from '../../elements/ErrorPill/index.js'\nimport { ShimmerEffect } from '../../elements/ShimmerEffect/index.js'\nimport { useFormSubmitted } from '../../forms/Form/context.js'\nimport { RenderFields } from '../../forms/RenderFields/index.js'\nimport { RowLabel } from '../../forms/RowLabel/index.js'\nimport { useThrottledValue } from '../../hooks/useThrottledValue.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport './index.scss'\n\nconst baseClass = 'array-field'\n\ntype ArrayRowProps = {\n readonly addRow: (rowIndex: number) => Promise<void> | void\n readonly copyRow: (rowIndex: number) => void\n readonly CustomRowLabel?: React.ReactNode\n readonly duplicateRow: (rowIndex: number) => void\n readonly errorCount: number\n readonly fields: ClientField[]\n readonly hasMaxRows?: boolean\n readonly isLoading?: boolean\n readonly isSortable?: boolean\n readonly labels: Partial<ArrayField['labels']>\n readonly moveRow: (fromIndex: number, toIndex: number) => void\n readonly parentPath: string\n readonly pasteRow: (rowIndex: number) => void\n readonly path: string\n readonly permissions: SanitizedFieldPermissions\n readonly readOnly?: boolean\n readonly removeRow: (rowIndex: number) => void\n readonly row: Row\n readonly rowCount: number\n readonly rowIndex: number\n readonly schemaPath: string\n readonly scrollIdPrefix: string\n readonly setCollapse: (rowID: string, collapsed: boolean) => void\n} & Pick<ClientComponentProps, 'forceRender'> &\n UseDraggableSortableReturn\n\nexport const ArrayRow: React.FC<ArrayRowProps> = ({\n addRow,\n attributes,\n copyRow,\n CustomRowLabel,\n duplicateRow,\n errorCount,\n fields,\n forceRender = false,\n hasMaxRows,\n isDragging,\n isLoading: isLoadingFromProps,\n isSortable,\n labels,\n listeners,\n moveRow,\n parentPath,\n pasteRow,\n path,\n permissions,\n readOnly,\n removeRow,\n row,\n rowCount,\n rowIndex,\n schemaPath,\n scrollIdPrefix,\n setCollapse,\n setNodeRef,\n transform,\n transition,\n}) => {\n const isLoading = useThrottledValue(isLoadingFromProps, 500)\n\n const { i18n } = useTranslation()\n const hasSubmitted = useFormSubmitted()\n\n const fallbackLabel = `${getTranslation(labels.singular, i18n)} ${String(rowIndex + 1).padStart(\n 2,\n '0',\n )}`\n\n const fieldHasErrors = errorCount > 0 && hasSubmitted\n\n const classNames = [\n `${baseClass}__row`,\n fieldHasErrors ? `${baseClass}__row--has-errors` : `${baseClass}__row--no-errors`,\n ]\n .filter(Boolean)\n .join(' ')\n\n return (\n <div\n id={`${parentPath.split('.').join('-')}-row-${rowIndex}`}\n key={`${parentPath}-row-${row.id}`}\n ref={setNodeRef}\n style={{\n transform,\n transition,\n zIndex: isDragging ? 1 : undefined,\n }}\n >\n <Collapsible\n actions={\n !readOnly ? (\n <ArrayAction\n addRow={addRow}\n copyRow={copyRow}\n duplicateRow={duplicateRow}\n hasMaxRows={hasMaxRows}\n index={rowIndex}\n isSortable={isSortable}\n moveRow={moveRow}\n pasteRow={pasteRow}\n removeRow={removeRow}\n rowCount={rowCount}\n />\n ) : undefined\n }\n className={classNames}\n collapsibleStyle={fieldHasErrors ? 'error' : 'default'}\n dragHandleProps={\n isSortable\n ? {\n id: row.id,\n attributes,\n listeners,\n }\n : undefined\n }\n header={\n <div\n className={`${baseClass}__row-header`}\n id={`${scrollIdPrefix}-row-${rowIndex}`}\n >\n {isLoading ? (\n <ShimmerEffect height=\"1rem\" width=\"8rem\" />\n ) : (\n <RowLabel\n CustomComponent={CustomRowLabel}\n label={fallbackLabel}\n path={path}\n rowNumber={rowIndex}\n />\n )}\n {fieldHasErrors && <ErrorPill count={errorCount} i18n={i18n} withMessage />}\n </div>\n }\n isCollapsed={row.collapsed}\n onToggle={(collapsed) => setCollapse(row.id, collapsed)}\n >\n {isLoading ? (\n <ShimmerEffect />\n ) : (\n <RenderFields\n className={`${baseClass}__fields`}\n fields={fields}\n forceRender={forceRender}\n margins=\"small\"\n parentIndexPath=\"\"\n parentPath={path}\n parentSchemaPath={schemaPath}\n permissions={permissions === true ? permissions : permissions?.fields}\n readOnly={readOnly}\n />\n )}\n </Collapsible>\n </div>\n )\n}\n", "'use client'\nimport React from 'react'\n\nimport { ChevronIcon } from '../../icons/Chevron/index.js'\nimport { CopyIcon } from '../../icons/Copy/index.js'\nimport { MoreIcon } from '../../icons/More/index.js'\nimport { PlusIcon } from '../../icons/Plus/index.js'\nimport { XIcon } from '../../icons/X/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { ClipboardActionLabel } from '../ClipboardAction/ClipboardActionLabel.js'\nimport './index.scss'\nimport { Popup, PopupList } from '../Popup/index.js'\n\nconst baseClass = 'array-actions'\n\nexport type Props = {\n addRow: (current: number, blockType?: string) => Promise<void> | void\n copyRow: (index: number) => void\n duplicateRow: (current: number) => void\n hasMaxRows: boolean\n index: number\n isSortable?: boolean\n moveRow: (from: number, to: number) => void\n pasteRow: (index: number) => void\n removeRow: (index: number) => void\n rowCount: number\n}\n\nexport const ArrayAction: React.FC<Props> = ({\n addRow,\n copyRow,\n duplicateRow,\n hasMaxRows,\n index,\n isSortable,\n moveRow,\n pasteRow,\n removeRow,\n rowCount,\n}) => {\n const { t } = useTranslation()\n\n return (\n <Popup\n button={<MoreIcon />}\n buttonClassName={`${baseClass}__button`}\n className={baseClass}\n horizontalAlign=\"center\"\n render={({ close }) => {\n return (\n <PopupList.ButtonGroup buttonSize=\"small\">\n {isSortable && index !== 0 && (\n <PopupList.Button\n className={`${baseClass}__action ${baseClass}__move-up`}\n onClick={() => {\n moveRow(index, index - 1)\n close()\n }}\n >\n <div className={`${baseClass}__action-chevron`}>\n <ChevronIcon direction=\"up\" />\n </div>\n {t('general:moveUp')}\n </PopupList.Button>\n )}\n {isSortable && index < rowCount - 1 && (\n <PopupList.Button\n className={`${baseClass}__action`}\n onClick={() => {\n moveRow(index, index + 1)\n close()\n }}\n >\n <div className={`${baseClass}__action-chevron`}>\n <ChevronIcon />\n </div>\n {t('general:moveDown')}\n </PopupList.Button>\n )}\n {!hasMaxRows && (\n <React.Fragment>\n <PopupList.Button\n className={`${baseClass}__action ${baseClass}__add`}\n onClick={() => {\n void addRow(index + 1)\n close()\n }}\n >\n <PlusIcon />\n {t('general:addBelow')}\n </PopupList.Button>\n <PopupList.Button\n className={`${baseClass}__action ${baseClass}__duplicate`}\n onClick={() => {\n duplicateRow(index)\n close()\n }}\n >\n <CopyIcon />\n {t('general:duplicate')}\n </PopupList.Button>\n </React.Fragment>\n )}\n <PopupList.Button\n className={`${baseClass}__action ${baseClass}__copy`}\n onClick={() => {\n copyRow(index)\n close()\n }}\n >\n <ClipboardActionLabel isRow />\n </PopupList.Button>\n <PopupList.Button\n className={`${baseClass}__action ${baseClass}__paste`}\n onClick={() => {\n pasteRow(index)\n close()\n }}\n >\n <ClipboardActionLabel isPaste isRow />\n </PopupList.Button>\n <PopupList.Button\n className={`${baseClass}__action ${baseClass}__remove`}\n onClick={() => {\n removeRow(index)\n close()\n }}\n >\n <XIcon />\n {t('general:remove')}\n </PopupList.Button>\n </PopupList.ButtonGroup>\n )\n }}\n size=\"medium\"\n />\n )\n}\n", "'use client'\nimport React, { useState } from 'react'\n\nimport type { DragHandleProps } from '../DraggableSortable/DraggableSortableItem/types.js'\n\nimport { ChevronIcon } from '../../icons/Chevron/index.js'\nimport { DragHandleIcon } from '../../icons/DragHandle/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport './index.scss'\nimport { AnimateHeight } from '../AnimateHeight/index.js'\nimport { CollapsibleProvider, useCollapsible } from './provider.js'\n\nconst baseClass = 'collapsible'\n\nexport { CollapsibleProvider, useCollapsible }\n\nexport type CollapsibleProps = {\n actions?: React.ReactNode\n /**\n * Components that will be rendered within the collapsible provider but after the wrapper.\n */\n AfterCollapsible?: React.ReactNode\n children: React.ReactNode\n className?: string\n collapsibleStyle?: 'default' | 'error'\n /**\n * If set to true, clicking on the collapsible header will not toggle the collapsible state.\n * This is useful if the collapsible state is controlled externally (e.g. from a parent component or custom button).\n */\n disableHeaderToggle?: boolean\n /**\n * If set to true, the toggle indicator (chevron) on the right side of the header will be hidden.\n */\n disableToggleIndicator?: boolean\n dragHandleProps?: DragHandleProps\n header?: React.ReactNode\n initCollapsed?: boolean\n isCollapsed?: boolean\n onToggle?: (collapsed: boolean) => Promise<void> | void\n}\n\nexport const Collapsible: React.FC<CollapsibleProps> = ({\n actions,\n AfterCollapsible,\n children,\n className,\n collapsibleStyle = 'default',\n disableHeaderToggle = false,\n disableToggleIndicator = false,\n dragHandleProps,\n header,\n initCollapsed,\n isCollapsed: collapsedFromProps,\n onToggle,\n}) => {\n const [collapsedLocal, setCollapsedLocal] = useState(Boolean(initCollapsed))\n const [hoveringToggle, setHoveringToggle] = useState(false)\n const { isWithinCollapsible } = useCollapsible()\n const { t } = useTranslation()\n\n const isCollapsed = typeof collapsedFromProps === 'boolean' ? collapsedFromProps : collapsedLocal\n\n const toggleCollapsible = React.useCallback(() => {\n if (typeof onToggle === 'function') {\n void onToggle(!isCollapsed)\n }\n setCollapsedLocal(!isCollapsed)\n }, [onToggle, isCollapsed])\n\n return (\n <div\n className={[\n baseClass,\n className,\n dragHandleProps && `${baseClass}--has-drag-handle`,\n isCollapsed && `${baseClass}--collapsed`,\n isWithinCollapsible && `${baseClass}--nested`,\n hoveringToggle && !disableHeaderToggle && `${baseClass}--hovered`,\n `${baseClass}--style-${collapsibleStyle}`,\n ]\n .filter(Boolean)\n .join(' ')}\n >\n <CollapsibleProvider isCollapsed={isCollapsed} toggle={toggleCollapsible}>\n <div\n className={`${baseClass}__toggle-wrap${disableHeaderToggle ? ' toggle-disabled' : ''}`}\n onMouseEnter={() => setHoveringToggle(true)}\n onMouseLeave={() => setHoveringToggle(false)}\n >\n {!disableHeaderToggle && (\n <button\n className={[\n `${baseClass}__toggle`,\n `${baseClass}__toggle--${isCollapsed ? 'collapsed' : 'open'}`,\n ]\n .filter(Boolean)\n .join(' ')}\n onClick={toggleCollapsible}\n type=\"button\"\n >\n <span>{t('fields:toggleBlock')}</span>\n </button>\n )}\n\n {dragHandleProps && (\n <div\n className={`${baseClass}__drag`}\n {...dragHandleProps.attributes}\n {...dragHandleProps.listeners}\n >\n <DragHandleIcon />\n </div>\n )}\n {header ? (\n <div\n className={[\n `${baseClass}__header-wrap`,\n dragHandleProps && `${baseClass}__header-wrap--has-drag-handle`,\n ]\n .filter(Boolean)\n .join(' ')}\n >\n {header}\n </div>\n ) : null}\n <div className={`${baseClass}__actions-wrap`}>\n {actions ? <div className={`${baseClass}__actions`}>{actions}</div> : null}\n {!disableToggleIndicator && (\n <div className={`${baseClass}__indicator`}>\n <ChevronIcon direction={!isCollapsed ? 'up' : undefined} />\n </div>\n )}\n </div>\n </div>\n <AnimateHeight height={isCollapsed ? 0 : 'auto'}>\n <div className={`${baseClass}__content`}>{children}</div>\n </AnimateHeight>\n {AfterCollapsible}\n </CollapsibleProvider>\n </div>\n )\n}\n", "import React from 'react'\n\nimport './index.scss'\n\nexport const DragHandleIcon: React.FC<{ className?: string }> = ({ className }) => (\n <svg\n className={['icon icon--drag-handle', className].filter(Boolean).join(' ')}\n viewBox=\"0 0 20 20\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n className=\"fill\"\n d=\"M7.99999 10.6667C8.36818 10.6667 8.66666 10.3682 8.66666 9.99999C8.66666 9.6318 8.36818 9.33332 7.99999 9.33332C7.63181 9.33332 7.33333 9.6318 7.33333 9.99999C7.33333 10.3682 7.63181 10.6667 7.99999 10.6667Z\"\n strokeLinecap=\"square\"\n />\n <path\n className=\"fill\"\n d=\"M7.99999 5.99999C8.36818 5.99999 8.66666 5.70151 8.66666 5.33332C8.66666 4.96513 8.36818 4.66666 7.99999 4.66666C7.63181 4.66666 7.33333 4.96513 7.33333 5.33332C7.33333 5.70151 7.63181 5.99999 7.99999 5.99999Z\"\n strokeLinecap=\"square\"\n />\n <path\n className=\"fill\"\n d=\"M7.99999 15.3333C8.36818 15.3333 8.66666 15.0348 8.66666 14.6667C8.66666 14.2985 8.36818 14 7.99999 14C7.63181 14 7.33333 14.2985 7.33333 14.6667C7.33333 15.0348 7.63181 15.3333 7.99999 15.3333Z\"\n strokeLinecap=\"square\"\n />\n <path\n className=\"fill\"\n d=\"M12 10.6667C12.3682 10.6667 12.6667 10.3682 12.6667 9.99999C12.6667 9.6318 12.3682 9.33332 12 9.33332C11.6318 9.33332 11.3333 9.6318 11.3333 9.99999C11.3333 10.3682 11.6318 10.6667 12 10.6667Z\"\n strokeLinecap=\"square\"\n />\n <path\n className=\"fill\"\n d=\"M12 5.99999C12.3682 5.99999 12.6667 5.70151 12.6667 5.33332C12.6667 4.96513 12.3682 4.66666 12 4.66666C11.6318 4.66666 11.3333 4.96513 11.3333 5.33332C11.3333 5.70151 11.6318 5.99999 12 5.99999Z\"\n strokeLinecap=\"square\"\n />\n <path\n className=\"fill\"\n d=\"M12 15.3333C12.3682 15.3333 12.6667 15.0348 12.6667 14.6667C12.6667 14.2985 12.3682 14 12 14C11.6318 14 11.3333 14.2985 11.3333 14.6667C11.3333 15.0348 11.6318 15.3333 12 15.3333Z\"\n strokeLinecap=\"square\"\n />\n </svg>\n)\n", "'use client'\nimport React, { useEffect, useRef } from 'react'\n\nimport { usePatchAnimateHeight } from './usePatchAnimateHeight.js'\nimport './index.scss'\n\nexport const AnimateHeight: React.FC<{\n children: React.ReactNode\n className?: string\n duration?: number\n height?: 'auto' | number\n id?: string\n}> = ({ id, children, className, duration = 300, height }) => {\n const [open, setOpen] = React.useState(() => Boolean(height))\n\n const prevIsOpen = useRef(open)\n\n const [childrenDisplay, setChildrenDisplay] = React.useState<CSSStyleDeclaration['display']>(\n () => (open ? '' : 'none'),\n )\n\n const [parentOverflow, setParentOverflow] = React.useState<CSSStyleDeclaration['overflow']>(() =>\n open ? '' : 'hidden',\n )\n\n const [isAnimating, setIsAnimating] = React.useState(false)\n\n const containerRef = useRef<HTMLDivElement>(null)\n const contentRef = useRef<HTMLDivElement>(null)\n\n useEffect(() => {\n let displayTimer: number\n let overflowTimer: number\n\n const newIsOpen = Boolean(height)\n const hasChanged = prevIsOpen.current !== newIsOpen\n prevIsOpen.current = newIsOpen\n\n if (hasChanged) {\n setIsAnimating(true)\n setParentOverflow('hidden')\n\n if (newIsOpen) {\n setChildrenDisplay('')\n } else {\n // `display: none` once closed\n displayTimer = window.setTimeout(() => {\n setChildrenDisplay('none')\n }, duration)\n }\n\n setOpen(newIsOpen)\n\n // reset overflow once open\n overflowTimer = window.setTimeout(() => {\n setParentOverflow('')\n setIsAnimating(false)\n }, duration)\n }\n\n return () => {\n if (displayTimer) {\n clearTimeout(displayTimer)\n }\n\n if (overflowTimer) {\n clearTimeout(overflowTimer)\n }\n }\n }, [height, duration])\n\n usePatchAnimateHeight({\n containerRef,\n contentRef,\n duration,\n open,\n })\n\n return (\n <div\n aria-hidden={!open}\n className={[\n className,\n 'rah-static',\n open && height === 'auto' && 'rah-static--height-auto',\n isAnimating && `rah-animating--${open ? 'down' : 'up'}`,\n isAnimating && height === 'auto' && `rah-animating--to-height-auto`,\n ]\n .filter(Boolean)\n .join(' ')}\n id={id}\n ref={containerRef}\n style={{\n overflow: parentOverflow,\n transition: `height ${duration}ms ease`,\n }}\n >\n <div ref={contentRef} {...(childrenDisplay ? { style: { display: childrenDisplay } } : {})}>\n {children}\n </div>\n </div>\n )\n}\n", "import { useEffect, useMemo, useRef, useState } from 'react'\n\nexport const usePatchAnimateHeight = ({\n containerRef,\n contentRef,\n duration,\n open,\n}: {\n containerRef: React.RefObject<HTMLDivElement>\n contentRef: React.RefObject<HTMLDivElement>\n duration: number\n open: boolean\n}): { browserSupportsKeywordAnimation: boolean } => {\n const browserSupportsKeywordAnimation = useMemo(\n () =>\n typeof CSS !== 'undefined' && CSS && CSS.supports\n ? CSS.supports('interpolate-size', 'allow-keywords')\n : false,\n [],\n )\n\n const hasInitialized = useRef(false)\n const previousOpenState = useRef(open)\n const [isAnimating, setIsAnimating] = useState(false)\n const resizeObserverRef = useRef<null | ResizeObserver>(null)\n\n useEffect(() => {\n const container = containerRef.current\n const content = contentRef.current\n\n if (!container || !content || browserSupportsKeywordAnimation) {\n return\n }\n\n const setContainerHeight = (height: string) => {\n container.style.height = height\n }\n\n const handleTransitionEnd = () => {\n if (container) {\n container.style.transition = ''\n container.style.height = open ? 'auto' : '0px'\n setIsAnimating(false)\n }\n }\n\n const animate = () => {\n if (!hasInitialized.current && open) {\n // Skip animation on first render\n setContainerHeight('auto')\n setIsAnimating(false)\n return\n }\n\n hasInitialized.current = true\n\n if (previousOpenState.current !== open) {\n setContainerHeight(open ? '0px' : `${content.scrollHeight}px`)\n }\n\n // Trigger reflow\n container.offsetHeight // eslint-disable-line @typescript-eslint/no-unused-expressions\n\n setIsAnimating(true)\n container.style.transition = `height ${duration}ms ease`\n setContainerHeight(open ? `${content.scrollHeight}px` : '0px')\n\n const onTransitionEnd = () => {\n handleTransitionEnd()\n container.removeEventListener('transitionend', onTransitionEnd)\n }\n\n container.addEventListener('transitionend', onTransitionEnd)\n }\n\n animate()\n previousOpenState.current = open\n\n // Setup ResizeObserver\n resizeObserverRef.current = new ResizeObserver(() => {\n if (isAnimating) {\n container.style.height = open ? `${content.scrollHeight}px` : '0px'\n }\n })\n resizeObserverRef.current.observe(content)\n\n return () => {\n if (container) {\n container.style.transition = ''\n container.style.height = ''\n }\n resizeObserverRef.current?.disconnect()\n }\n }, [open, duration, containerRef, contentRef, browserSupportsKeywordAnimation])\n\n return { browserSupportsKeywordAnimation }\n}\n", "'use client'\nimport React, { createContext, use } from 'react'\n\ntype ContextType = {\n isCollapsed: boolean\n isVisible: boolean\n isWithinCollapsible: boolean\n toggle: () => void\n}\n\nconst Context = createContext({\n isCollapsed: undefined,\n isVisible: undefined,\n isWithinCollapsible: undefined,\n toggle: () => {},\n} as ContextType)\n\nexport const CollapsibleProvider: React.FC<{\n children?: React.ReactNode\n isCollapsed?: boolean\n isWithinCollapsible?: boolean\n toggle: () => void\n}> = ({ children, isCollapsed, isWithinCollapsible = true, toggle }) => {\n const { isCollapsed: parentIsCollapsed, isVisible } = useCollapsible()\n\n const contextValue = React.useMemo((): ContextType => {\n return {\n isCollapsed,\n isVisible: isVisible && !parentIsCollapsed,\n isWithinCollapsible,\n toggle,\n }\n }, [isCollapsed, isWithinCollapsible, toggle, parentIsCollapsed, isVisible])\n\n return <Context value={contextValue}>{children}</Context>\n}\n\nexport const useCollapsible = (): ContextType => use(Context)\n", "'use client'\n\nimport type { SanitizedFieldPermissions } from 'payload'\n\nimport { fieldIsHiddenOrDisabled, getFieldPaths, getFieldPermissions } from 'payload/shared'\nimport React from 'react'\n\nimport type { RenderFieldsProps } from './types.js'\n\nimport { RenderIfInViewport } from '../../elements/RenderIfInViewport/index.js'\nimport { useOperation } from '../../providers/Operation/index.js'\nimport './index.scss'\nimport { FieldPathContext } from './context.js'\nimport { RenderField } from './RenderField.js'\n\nconst baseClass = 'render-fields'\n\nexport { RenderFieldsProps as Props }\n\nexport const RenderFields: React.FC<RenderFieldsProps> = (props) => {\n const {\n className,\n fields,\n forceRender,\n margins,\n parentIndexPath,\n parentPath,\n parentSchemaPath,\n permissions,\n readOnly: readOnlyFromParent,\n } = props\n\n const operation = useOperation()\n\n if (fields && fields.length > 0) {\n return (\n <RenderIfInViewport\n className={[\n baseClass,\n className,\n margins && `${baseClass}--margins-${margins}`,\n margins === false && `${baseClass}--margins-none`,\n ]\n .filter(Boolean)\n .join(' ')}\n forceRender={forceRender}\n >\n {fields.map((field, i) => {\n // For sidebar fields in the main fields array, `field` will be `null`, and visa versa\n // This is to keep the order of the fields consistent and maintain the correct index paths for the main fields (i)\n if (!field || fieldIsHiddenOrDisabled(field)) {\n return null\n }\n\n const {\n operation: hasOperationPermission,\n permissions: fieldPermissions,\n read: hasReadPermission,\n } = getFieldPermissions({\n field,\n operation,\n parentName: parentPath?.includes('.')\n ? parentPath.split('.')[parentPath.split('.').length - 1]\n : parentPath,\n permissions,\n })\n\n // If the user cannot read the field, then filter it out\n // This is different from `admin.readOnly` which is executed based on `operation`\n if ('name' in field && !hasReadPermission) {\n return null\n }\n\n // `admin.readOnly` displays the value but prevents the field from being edited\n let isReadOnly = readOnlyFromParent || field?.admin?.readOnly\n\n // If parent field is `readOnly: true`, but this field is `readOnly: false`, the field should still be editable\n if (isReadOnly && field.admin?.readOnly === false) {\n isReadOnly = false\n }\n\n // If the user does not have access at the operation level, to begin with, force it to be read-only\n if ('name' in field && !hasOperationPermission) {\n isReadOnly = true\n }\n\n const { indexPath, path, schemaPath } = getFieldPaths({\n field,\n index: i,\n parentIndexPath,\n parentPath,\n parentSchemaPath,\n })\n\n return (\n <FieldPathContext key={`${path}-${i}`} value={path}>\n <RenderField\n clientFieldConfig={field}\n forceRender={forceRender}\n indexPath={indexPath}\n parentPath={parentPath}\n parentSchemaPath={parentSchemaPath}\n path={path}\n permissions={fieldPermissions as SanitizedFieldPermissions}\n readOnly={isReadOnly}\n schemaPath={schemaPath}\n />\n </FieldPathContext>\n )\n })}\n </RenderIfInViewport>\n )\n }\n\n return null\n}\n", "'use client'\nimport type { ClientComponentProps } from 'payload'\n\nimport React from 'react'\n\nimport { useIntersect } from '../../hooks/useIntersect.js'\n\nexport const RenderIfInViewport: React.FC<\n {\n children: React.ReactNode\n className?: string\n } & Pick<ClientComponentProps, 'forceRender'>\n> = ({ children, className, forceRender }) => {\n const [hasRendered, setHasRendered] = React.useState(Boolean(forceRender))\n const [intersectionRef, entry] = useIntersect(\n {\n rootMargin: '1000px',\n },\n Boolean(forceRender),\n )\n\n const isIntersecting = Boolean(entry?.isIntersecting)\n const isAboveViewport = entry?.boundingClientRect?.top < 0\n const shouldRender = forceRender || isIntersecting || isAboveViewport\n\n React.useEffect(() => {\n if (shouldRender && !hasRendered) {\n setHasRendered(true)\n }\n }, [shouldRender, hasRendered])\n\n return (\n <div className={className} ref={intersectionRef}>\n {hasRendered ? children : null}\n </div>\n )\n}\n", "'use client'\n\nimport type {\n ClientComponentProps,\n ClientField,\n FieldPaths,\n SanitizedFieldPermissions,\n} from 'payload'\n\nimport React from 'react'\n\nimport { ArrayField } from '../../fields/Array/index.js'\nimport { BlocksField } from '../../fields/Blocks/index.js'\nimport { CheckboxField } from '../../fields/Checkbox/index.js'\nimport { CodeField } from '../../fields/Code/index.js'\nimport { CollapsibleField } from '../../fields/Collapsible/index.js'\nimport { DateTimeField } from '../../fields/DateTime/index.js'\nimport { EmailField } from '../../fields/Email/index.js'\nimport { GroupField } from '../../fields/Group/index.js'\nimport { HiddenField } from '../../fields/Hidden/index.js'\nimport { JoinField } from '../../fields/Join/index.js'\nimport { JSONField } from '../../fields/JSON/index.js'\nimport { NumberField } from '../../fields/Number/index.js'\nimport { PointField } from '../../fields/Point/index.js'\nimport { RadioGroupField } from '../../fields/RadioGroup/index.js'\nimport { RelationshipField } from '../../fields/Relationship/index.js'\nimport { RichTextField } from '../../fields/RichText/index.js'\nimport { RowField } from '../../fields/Row/index.js'\nimport { SelectField } from '../../fields/Select/index.js'\nimport { TabsField } from '../../fields/Tabs/index.js'\nimport { TextField } from '../../fields/Text/index.js'\nimport { TextareaField } from '../../fields/Textarea/index.js'\nimport { UIField } from '../../fields/UI/index.js'\nimport { UploadField } from '../../fields/Upload/index.js'\nimport { useFormFields } from '../../forms/Form/index.js'\n\ntype RenderFieldProps = {\n clientFieldConfig: ClientField\n permissions: SanitizedFieldPermissions\n} & FieldPaths &\n Pick<ClientComponentProps, 'forceRender' | 'readOnly' | 'schemaPath'>\n\nexport function RenderField({\n clientFieldConfig,\n forceRender,\n indexPath,\n parentPath,\n parentSchemaPath,\n path,\n permissions,\n readOnly,\n schemaPath,\n}: RenderFieldProps) {\n const CustomField = useFormFields(([fields]) => fields && fields?.[path]?.customComponents?.Field)\n\n const baseFieldProps: Pick<\n ClientComponentProps,\n 'forceRender' | 'permissions' | 'readOnly' | 'schemaPath'\n > = {\n forceRender,\n permissions,\n readOnly,\n schemaPath,\n }\n\n if (clientFieldConfig.admin?.hidden) {\n return <HiddenField {...baseFieldProps} path={path} />\n }\n\n if (CustomField !== undefined) {\n return CustomField || null\n }\n\n const iterableFieldProps = {\n ...baseFieldProps,\n indexPath,\n parentPath,\n parentSchemaPath,\n }\n\n switch (clientFieldConfig.type) {\n case 'array':\n return <ArrayField {...iterableFieldProps} field={clientFieldConfig} path={path} />\n\n case 'blocks':\n return <BlocksField {...iterableFieldProps} field={clientFieldConfig} path={path} />\n\n case 'checkbox':\n return <CheckboxField {...baseFieldProps} field={clientFieldConfig} path={path} />\n\n case 'code':\n return <CodeField {...baseFieldProps} field={clientFieldConfig} path={path} />\n\n case 'collapsible':\n return <CollapsibleField {...iterableFieldProps} field={clientFieldConfig} path={path} />\n\n case 'date':\n return <DateTimeField {...baseFieldProps} field={clientFieldConfig} path={path} />\n\n case 'email':\n return <EmailField {...baseFieldProps} field={clientFieldConfig} path={path} />\n\n case 'group':\n return <GroupField {...iterableFieldProps} field={clientFieldConfig} path={path} />\n\n case 'join':\n return <JoinField {...baseFieldProps} field={clientFieldConfig} path={path} />\n\n case 'json':\n return <JSONField {...baseFieldProps} field={clientFieldConfig} path={path} />\n\n case 'number':\n return <NumberField {...baseFieldProps} field={clientFieldConfig} path={path} />\n\n case 'point':\n return <PointField {...baseFieldProps} field={clientFieldConfig} path={path} />\n\n case 'radio':\n return <RadioGroupField {...baseFieldProps} field={clientFieldConfig} path={path} />\n\n case 'relationship':\n return <RelationshipField {...baseFieldProps} field={clientFieldConfig} path={path} />\n\n case 'richText':\n return <RichTextField {...baseFieldProps} field={clientFieldConfig} path={path} />\n\n case 'row':\n return <RowField {...iterableFieldProps} field={clientFieldConfig} />\n\n case 'select':\n return <SelectField {...baseFieldProps} field={clientFieldConfig} path={path} />\n\n case 'tabs':\n return <TabsField {...iterableFieldProps} field={clientFieldConfig} path={path} />\n\n case 'text':\n return <TextField {...baseFieldProps} field={clientFieldConfig} path={path} />\n\n case 'textarea':\n return <TextareaField {...baseFieldProps} field={clientFieldConfig} path={path} />\n\n case 'ui':\n return <UIField />\n\n case 'upload':\n return <UploadField {...baseFieldProps} field={clientFieldConfig} path={path} />\n }\n}\n", "'use client'\nimport type { BlocksFieldClientComponent, ClientBlock } from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport React, { Fragment, useCallback, useMemo } from 'react'\nimport { toast } from 'sonner'\n\nimport type { ClipboardPasteData } from '../../elements/ClipboardAction/types.js'\n\nimport { Banner } from '../../elements/Banner/index.js'\nimport { Button } from '../../elements/Button/index.js'\nimport { clipboardCopy, clipboardPaste } from '../../elements/ClipboardAction/clipboardUtilities.js'\nimport { ClipboardAction } from '../../elements/ClipboardAction/index.js'\nimport {\n mergeFormStateFromClipboard,\n reduceFormStateByPath,\n} from '../../elements/ClipboardAction/mergeFormStateFromClipboard.js'\nimport { DraggableSortableItem } from '../../elements/DraggableSortable/DraggableSortableItem/index.js'\nimport { DraggableSortable } from '../../elements/DraggableSortable/index.js'\nimport { DrawerToggler } from '../../elements/Drawer/index.js'\nimport { useDrawerSlug } from '../../elements/Drawer/useDrawerSlug.js'\nimport { ErrorPill } from '../../elements/ErrorPill/index.js'\nimport { RenderCustomComponent } from '../../elements/RenderCustomComponent/index.js'\nimport { useForm, useFormSubmitted } from '../../forms/Form/context.js'\nimport { extractRowsAndCollapsedIDs, toggleAllRows } from '../../forms/Form/rowHelpers.js'\nimport { NullifyLocaleField } from '../../forms/NullifyField/index.js'\nimport { useField } from '../../forms/useField/index.js'\nimport { withCondition } from '../../forms/withCondition/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useDocumentInfo } from '../../providers/DocumentInfo/index.js'\nimport { useLocale } from '../../providers/Locale/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { scrollToID } from '../../utilities/scrollToID.js'\nimport './index.scss'\nimport { FieldDescription } from '../FieldDescription/index.js'\nimport { FieldError } from '../FieldError/index.js'\nimport { FieldLabel } from '../FieldLabel/index.js'\nimport { mergeFieldStyles } from '../mergeFieldStyles.js'\nimport { fieldBaseClass } from '../shared/index.js'\nimport { BlockRow } from './BlockRow.js'\nimport { BlocksDrawer } from './BlocksDrawer/index.js'\n\nconst baseClass = 'blocks-field'\n\nconst BlocksFieldComponent: BlocksFieldClientComponent = (props) => {\n const { i18n, t } = useTranslation()\n\n const {\n field,\n field: {\n name,\n type,\n admin: { className, description, isSortable = true } = {},\n blockReferences,\n blocks,\n label,\n labels: labelsFromProps,\n localized,\n maxRows,\n minRows: minRowsProp,\n required,\n },\n path: pathFromProps,\n permissions,\n readOnly,\n schemaPath: schemaPathFromProps,\n validate,\n } = props\n\n const schemaPath = schemaPathFromProps ?? name\n\n const minRows = (minRowsProp ?? required) ? 1 : 0\n\n const { setDocFieldPreferences } = useDocumentInfo()\n const {\n addFieldRow,\n dispatchFields,\n getFields,\n moveFieldRow,\n removeFieldRow,\n replaceState,\n setModified,\n } = useForm()\n const { code: locale } = useLocale()\n const {\n config: { localization },\n config,\n } = useConfig()\n const drawerSlug = useDrawerSlug('blocks-drawer')\n const submitted = useFormSubmitted()\n\n const labels = {\n plural: t('fields:blocks'),\n singular: t('fields:block'),\n ...labelsFromProps,\n }\n\n const editingDefaultLocale = (() => {\n if (localization && localization.fallback) {\n const defaultLocale = localization.defaultLocale\n return locale === defaultLocale\n }\n\n return true\n })()\n\n const memoizedValidate = useCallback(\n (value, options) => {\n // alternative locales can be null\n if (!editingDefaultLocale && value === null) {\n return true\n }\n if (typeof validate === 'function') {\n return validate(value, { ...options, maxRows, minRows, required })\n }\n },\n [maxRows, minRows, required, validate, editingDefaultLocale],\n )\n\n const {\n blocksFilterOptions,\n customComponents: { AfterInput, BeforeInput, Description, Error, Label } = {},\n disabled,\n errorPaths,\n path,\n rows = [],\n showError,\n valid,\n value,\n } = useField<number>({\n hasRows: true,\n potentiallyStalePath: pathFromProps,\n validate: memoizedValidate,\n })\n\n const { clientBlocks, clientBlocksAfterFilter } = useMemo(() => {\n let resolvedBlocks: ClientBlock[] = []\n\n if (!blockReferences) {\n resolvedBlocks = blocks\n } else {\n for (const blockReference of blockReferences) {\n const block =\n typeof blockReference === 'string' ? config.blocksMap[blockReference] : blockReference\n if (block) {\n resolvedBlocks.push(block)\n }\n }\n }\n\n if (Array.isArray(blocksFilterOptions)) {\n const clientBlocksAfterFilter = resolvedBlocks.filter((block) => {\n const blockSlug = typeof block === 'string' ? block : block.slug\n return blocksFilterOptions.includes(blockSlug)\n })\n\n return {\n clientBlocks: resolvedBlocks,\n clientBlocksAfterFilter,\n }\n }\n return {\n clientBlocks: resolvedBlocks,\n clientBlocksAfterFilter: resolvedBlocks,\n }\n }, [blockReferences, blocks, blocksFilterOptions, config.blocksMap])\n\n const addRow = useCallback(\n (rowIndex: number, blockType: string) => {\n addFieldRow({\n blockType,\n path,\n rowIndex,\n schemaPath,\n })\n\n setTimeout(() => {\n scrollToID(`${path}-row-${rowIndex + 1}`)\n }, 0)\n },\n [addFieldRow, path, schemaPath],\n )\n\n const duplicateRow = useCallback(\n (rowIndex: number) => {\n dispatchFields({ type: 'DUPLICATE_ROW', path, rowIndex })\n setModified(true)\n\n setTimeout(() => {\n scrollToID(`${path}-row-${rowIndex + 1}`)\n }, 0)\n },\n [dispatchFields, path, setModified],\n )\n\n const removeRow = useCallback(\n (rowIndex: number) => {\n removeFieldRow({\n path,\n rowIndex,\n })\n },\n [path, removeFieldRow],\n )\n\n const moveRow = useCallback(\n (moveFromIndex: number, moveToIndex: number) => {\n moveFieldRow({ moveFromIndex, moveToIndex, path })\n },\n [moveFieldRow, path],\n )\n\n const toggleCollapseAll = useCallback(\n (collapsed: boolean) => {\n const { collapsedIDs, updatedRows } = toggleAllRows({\n collapsed,\n rows,\n })\n\n dispatchFields({ type: 'SET_ALL_ROWS_COLLAPSED', path, updatedRows })\n setDocFieldPreferences(path, { collapsed: collapsedIDs })\n },\n [dispatchFields, path, rows, setDocFieldPreferences],\n )\n\n const setCollapse = useCallback(\n (rowID: string, collapsed: boolean) => {\n const { collapsedIDs, updatedRows } = extractRowsAndCollapsedIDs({\n collapsed,\n rowID,\n rows,\n })\n\n dispatchFields({ type: 'SET_ROW_COLLAPSED', path, updatedRows })\n setDocFieldPreferences(path, { collapsed: collapsedIDs })\n },\n [dispatchFields, path, rows, setDocFieldPreferences],\n )\n\n const copyRow = useCallback(\n (rowIndex: number) => {\n const clipboardResult = clipboardCopy({\n type,\n blocks: clientBlocks,\n getDataToCopy: () =>\n reduceFormStateByPath({\n formState: { ...getFields() },\n path,\n rowIndex,\n }),\n path,\n rowIndex,\n t,\n })\n\n if (typeof clipboardResult === 'string') {\n toast.error(clipboardResult)\n } else {\n toast.success(t('general:copied'))\n }\n },\n [clientBlocks, path, t, type, getFields],\n )\n\n const pasteRow = useCallback(\n (rowIndex: number) => {\n const pasteArgs = {\n onPaste: (dataFromClipboard: ClipboardPasteData) => {\n const formState = { ...getFields() }\n const newState = mergeFormStateFromClipboard({\n dataFromClipboard,\n formState,\n path,\n rowIndex,\n })\n replaceState(newState)\n setModified(true)\n },\n path,\n schemaBlocks: clientBlocks,\n t,\n }\n\n const clipboardResult = clipboardPaste(pasteArgs)\n\n if (typeof clipboardResult === 'string') {\n toast.error(clipboardResult)\n }\n },\n [clientBlocks, getFields, path, replaceState, setModified, t],\n )\n\n const pasteBlocks = useCallback(\n (dataFromClipboard: ClipboardPasteData) => {\n const formState = { ...getFields() }\n const newState = mergeFormStateFromClipboard({\n dataFromClipboard,\n formState,\n path,\n })\n replaceState(newState)\n setModified(true)\n },\n [getFields, path, replaceState, setModified],\n )\n\n const hasMaxRows = maxRows && rows.length >= maxRows\n\n const fieldErrorCount = errorPaths.length\n const fieldHasErrors = submitted && fieldErrorCount + (valid ? 0 : 1) > 0\n\n const showMinRows = rows.length < minRows || (required && rows.length === 0)\n const showRequired = readOnly && rows.length === 0\n\n const styles = useMemo(() => mergeFieldStyles(field), [field])\n\n return (\n <div\n className={[\n fieldBaseClass,\n baseClass,\n className,\n fieldHasErrors ? `${baseClass}--has-error` : `${baseClass}--has-no-error`,\n ]\n .filter(Boolean)\n .join(' ')}\n id={`field-${path?.replace(/\\./g, '__')}`}\n style={styles}\n >\n {showError && (\n <RenderCustomComponent\n CustomComponent={Error}\n Fallback={<FieldError path={path} showError={showError} />}\n />\n )}\n <header className={`${baseClass}__header`}>\n <div className={`${baseClass}__header-wrap`}>\n <div className={`${baseClass}__heading-with-error`}>\n <h3>\n <RenderCustomComponent\n CustomComponent={Label}\n Fallback={\n <FieldLabel\n as=\"span\"\n label={label}\n localized={localized}\n path={path}\n required={required}\n />\n }\n />\n </h3>\n {fieldHasErrors && fieldErrorCount > 0 && (\n <ErrorPill count={fieldErrorCount} i18n={i18n} withMessage />\n )}\n </div>\n <ul className={`${baseClass}__header-actions`}>\n {rows.length > 0 && (\n <Fragment>\n <li>\n <button\n className={`${baseClass}__header-action`}\n onClick={() => toggleCollapseAll(true)}\n type=\"button\"\n >\n {t('fields:collapseAll')}\n </button>\n </li>\n <li>\n <button\n className={`${baseClass}__header-action`}\n onClick={() => toggleCollapseAll(false)}\n type=\"button\"\n >\n {t('fields:showAll')}\n </button>\n </li>\n </Fragment>\n )}\n <li>\n <ClipboardAction\n allowCopy={rows?.length > 0}\n allowPaste={!readOnly}\n blocks={clientBlocks}\n className={`${baseClass}__header-action`}\n disabled={disabled}\n getDataToCopy={() =>\n reduceFormStateByPath({\n formState: { ...getFields() },\n path,\n })\n }\n onPaste={pasteBlocks}\n path={path}\n type={type}\n />\n </li>\n </ul>\n </div>\n <RenderCustomComponent\n CustomComponent={Description}\n Fallback={<FieldDescription description={description} path={path} />}\n />\n </header>\n {BeforeInput}\n <NullifyLocaleField\n fieldValue={value}\n localized={localized}\n path={path}\n readOnly={readOnly}\n />\n {(rows.length > 0 || (!valid && (showRequired || showMinRows))) && (\n <DraggableSortable\n className={`${baseClass}__rows`}\n ids={rows.map((row) => row.id)}\n onDragEnd={({ moveFromIndex, moveToIndex }) => moveRow(moveFromIndex, moveToIndex)}\n >\n {rows.map((row, i) => {\n const { blockType, isLoading } = row\n\n const blockConfig: ClientBlock =\n config.blocksMap[blockType] ?? clientBlocks.find((block) => block.slug === blockType)\n\n if (blockConfig) {\n const rowPath = `${path}.${i}`\n\n const rowErrorCount = errorPaths.filter((errorPath) =>\n errorPath.startsWith(rowPath + '.'),\n ).length\n\n return (\n <DraggableSortableItem\n disabled={readOnly || disabled || !isSortable}\n id={row.id}\n key={row.id}\n >\n {(draggableSortableItemProps) => (\n <BlockRow\n {...draggableSortableItemProps}\n addRow={addRow}\n block={blockConfig}\n // Pass all blocks, not just clientBlocksAfterFilter, as existing blocks should still be displayed even if they don't match the new filter\n blocks={clientBlocks}\n copyRow={copyRow}\n duplicateRow={duplicateRow}\n errorCount={rowErrorCount}\n fields={blockConfig.fields}\n hasMaxRows={hasMaxRows}\n isLoading={isLoading}\n isSortable={isSortable}\n Label={rows?.[i]?.customComponents?.RowLabel}\n labels={labels}\n moveRow={moveRow}\n parentPath={path}\n pasteRow={pasteRow}\n path={rowPath}\n permissions={permissions}\n readOnly={readOnly || disabled}\n removeRow={removeRow}\n row={row}\n rowCount={rows.length}\n rowIndex={i}\n schemaPath={schemaPath + blockConfig.slug}\n setCollapse={setCollapse}\n />\n )}\n </DraggableSortableItem>\n )\n }\n\n return null\n })}\n {!editingDefaultLocale && (\n <React.Fragment>\n {showMinRows && (\n <Banner type=\"error\">\n {t('validation:requiresAtLeast', {\n count: minRows,\n label:\n getTranslation(minRows > 1 ? labels.plural : labels.singular, i18n) ||\n t(minRows > 1 ? 'general:row' : 'general:rows'),\n })}\n </Banner>\n )}\n {showRequired && (\n <Banner>\n {t('validation:fieldHasNo', { label: getTranslation(labels.plural, i18n) })}\n </Banner>\n )}\n </React.Fragment>\n )}\n </DraggableSortable>\n )}\n {!hasMaxRows && (\n <Fragment>\n <DrawerToggler\n className={`${baseClass}__drawer-toggler`}\n disabled={readOnly || disabled}\n slug={drawerSlug}\n >\n <Button\n buttonStyle=\"icon-label\"\n disabled={readOnly || disabled}\n el=\"span\"\n icon=\"plus\"\n iconPosition=\"left\"\n iconStyle=\"with-border\"\n >\n {t('fields:addLabel', { label: getTranslation(labels.singular, i18n) })}\n </Button>\n </DrawerToggler>\n <BlocksDrawer\n addRow={addRow}\n addRowIndex={rows?.length || 0}\n // Only allow choosing filtered blocks\n blocks={clientBlocksAfterFilter}\n drawerSlug={drawerSlug}\n labels={labels}\n />\n </Fragment>\n )}\n {AfterInput}\n </div>\n )\n}\n\nexport const BlocksField = withCondition(BlocksFieldComponent)\n", "'use client'\nimport type { ClientBlock, ClientField, Labels, Row, SanitizedFieldPermissions } from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport React from 'react'\n\nimport type { UseDraggableSortableReturn } from '../../elements/DraggableSortable/useDraggableSortable/types.js'\nimport type { RenderFieldsProps } from '../../forms/RenderFields/types.js'\n\nimport { Collapsible } from '../../elements/Collapsible/index.js'\nimport { ErrorPill } from '../../elements/ErrorPill/index.js'\nimport { Pill } from '../../elements/Pill/index.js'\nimport { ShimmerEffect } from '../../elements/ShimmerEffect/index.js'\nimport { useFormSubmitted } from '../../forms/Form/context.js'\nimport { RenderFields } from '../../forms/RenderFields/index.js'\nimport { RowLabel } from '../../forms/RowLabel/index.js'\nimport { useThrottledValue } from '../../hooks/useThrottledValue.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { RowActions } from './RowActions.js'\nimport { SectionTitle } from './SectionTitle/index.js'\n\nconst baseClass = 'blocks-field'\n\ntype BlocksFieldProps = {\n addRow: (rowIndex: number, blockType: string) => Promise<void> | void\n block: ClientBlock\n blocks: (ClientBlock | string)[] | ClientBlock[]\n copyRow: (rowIndex: number) => void\n duplicateRow: (rowIndex: number) => void\n errorCount: number\n fields: ClientField[]\n hasMaxRows?: boolean\n isLoading?: boolean\n isSortable?: boolean\n Label?: React.ReactNode\n labels: Labels\n moveRow: (fromIndex: number, toIndex: number) => void\n parentPath: string\n pasteRow: (rowIndex: number) => void\n path: string\n permissions: SanitizedFieldPermissions\n readOnly: boolean\n removeRow: (rowIndex: number) => void\n row: Row\n rowCount: number\n rowIndex: number\n schemaPath: string\n setCollapse: (id: string, collapsed: boolean) => void\n} & UseDraggableSortableReturn\n\nexport const BlockRow: React.FC<BlocksFieldProps> = ({\n addRow,\n attributes,\n block,\n blocks,\n copyRow,\n duplicateRow,\n errorCount,\n fields,\n hasMaxRows,\n isLoading: isLoadingFromProps,\n isSortable,\n Label,\n labels,\n listeners,\n moveRow,\n parentPath,\n pasteRow,\n path,\n permissions,\n readOnly,\n removeRow,\n row,\n rowCount,\n rowIndex,\n schemaPath,\n setCollapse,\n setNodeRef,\n transform,\n}) => {\n const isLoading = useThrottledValue(isLoadingFromProps, 500)\n\n const { i18n } = useTranslation()\n const hasSubmitted = useFormSubmitted()\n\n const fieldHasErrors = hasSubmitted && errorCount > 0\n\n const showBlockName = !block.admin?.disableBlockName\n\n const classNames = [\n `${baseClass}__row`,\n fieldHasErrors ? `${baseClass}__row--has-errors` : `${baseClass}__row--no-errors`,\n ]\n .filter(Boolean)\n .join(' ')\n\n let blockPermissions: RenderFieldsProps['permissions'] = true\n\n if (permissions === true) {\n blockPermissions = true\n } else {\n const permissionsBlockSpecific = permissions?.blocks?.[block.slug] || permissions?.blocks\n if (permissionsBlockSpecific === true) {\n blockPermissions = true\n } else if (permissionsBlockSpecific?.fields) {\n blockPermissions = permissionsBlockSpecific.fields\n } else {\n // Check if we should fall back to read-only mode based on permission structure\n // This handles cases where field-level access control exists but block permissions were sanitized\n if (typeof permissions === 'object' && permissions && !permissionsBlockSpecific) {\n // If permissions object exists but has no block-specific permissions,\n // check if it has any restrictive characteristics\n const hasReadPermission = permissions.read === true\n const missingCreateOrUpdate = !permissions.create || !permissions.update\n const hasRestrictiveStructure =\n hasReadPermission &&\n (missingCreateOrUpdate ||\n (typeof permissions === 'object' &&\n Object.keys(permissions).length === 1 &&\n permissions.read))\n\n if (hasRestrictiveStructure) {\n blockPermissions = { read: true }\n } else {\n blockPermissions = permissionsBlockSpecific?.fields\n }\n } else {\n blockPermissions = permissionsBlockSpecific?.fields\n }\n }\n }\n\n return (\n <div\n id={`${parentPath?.split('.').join('-')}-row-${rowIndex}`}\n key={`${parentPath}-row-${rowIndex}`}\n ref={setNodeRef}\n style={{\n transform,\n }}\n >\n <Collapsible\n actions={\n !readOnly ? (\n <RowActions\n addRow={addRow}\n blocks={blocks}\n blockType={row.blockType}\n copyRow={copyRow}\n duplicateRow={duplicateRow}\n fields={block.fields}\n hasMaxRows={hasMaxRows}\n isSortable={isSortable}\n labels={labels}\n moveRow={moveRow}\n pasteRow={pasteRow}\n removeRow={removeRow}\n rowCount={rowCount}\n rowIndex={rowIndex}\n />\n ) : undefined\n }\n className={classNames}\n collapsibleStyle={fieldHasErrors ? 'error' : 'default'}\n dragHandleProps={\n isSortable\n ? {\n id: row.id,\n attributes,\n listeners,\n }\n : undefined\n }\n header={\n isLoading ? (\n <ShimmerEffect height=\"1rem\" width=\"8rem\" />\n ) : (\n <div className={`${baseClass}__block-header`}>\n <RowLabel\n CustomComponent={Label}\n label={\n <>\n <span className={`${baseClass}__block-number`}>\n {String(rowIndex + 1).padStart(2, '0')}\n </span>\n <Pill\n className={`${baseClass}__block-pill ${baseClass}__block-pill-${row.blockType}`}\n pillStyle=\"white\"\n size=\"small\"\n >\n {getTranslation(block.labels.singular, i18n)}\n </Pill>\n {showBlockName && (\n <SectionTitle path={`${path}.blockName`} readOnly={readOnly} />\n )}\n </>\n }\n path={path}\n rowNumber={rowIndex}\n />\n {fieldHasErrors && <ErrorPill count={errorCount} i18n={i18n} withMessage />}\n </div>\n )\n }\n isCollapsed={row.collapsed}\n key={row.id}\n onToggle={(collapsed) => setCollapse(row.id, collapsed)}\n >\n {isLoading ? (\n <ShimmerEffect />\n ) : (\n <RenderFields\n className={`${baseClass}__fields`}\n fields={fields}\n margins=\"small\"\n parentIndexPath=\"\"\n parentPath={path}\n parentSchemaPath={schemaPath}\n permissions={blockPermissions}\n readOnly={readOnly}\n />\n )}\n </Collapsible>\n </div>\n )\n}\n", "'use client'\nimport type { ElementType, HTMLAttributes } from 'react'\n\nimport React, { useEffect, useState } from 'react' // TODO: abstract this out to support all routers\n\nimport { Link } from '../Link/index.js'\n\nexport type PillStyle =\n | 'always-white'\n | 'dark'\n | 'error'\n | 'light'\n | 'light-gray'\n | 'success'\n | 'warning'\n | 'white'\n\nexport type PillProps = {\n alignIcon?: 'left' | 'right'\n 'aria-checked'?: boolean\n 'aria-controls'?: string\n 'aria-expanded'?: boolean\n 'aria-label'?: string\n children?: React.ReactNode\n className?: string\n draggable?: boolean\n elementProps?: {\n ref: React.RefCallback<HTMLElement>\n } & HTMLAttributes<HTMLElement>\n icon?: React.ReactNode\n id?: string\n onClick?: () => void\n /**\n * @default 'light'\n */\n pillStyle?: PillStyle\n rounded?: boolean\n size?: 'medium' | 'small'\n to?: string\n}\n\nexport type RenderedTypeProps = {\n children: React.ReactNode\n className?: string\n onClick?: () => void\n to: string\n type?: 'button'\n}\n\nimport { useDraggableSortable } from '../DraggableSortable/useDraggableSortable/index.js'\nimport './index.scss'\n\nconst baseClass = 'pill'\n\nconst DraggablePill: React.FC<PillProps> = (props) => {\n const { id, className } = props\n\n const { attributes, isDragging, listeners, setNodeRef, transform } = useDraggableSortable({\n id,\n })\n\n return (\n <StaticPill\n {...props}\n className={[isDragging && `${baseClass}--is-dragging`, className].filter(Boolean).join(' ')}\n elementProps={{\n ...listeners,\n ...attributes,\n ref: setNodeRef,\n style: {\n transform,\n },\n }}\n />\n )\n}\n\nconst StaticPill: React.FC<PillProps> = (props) => {\n const {\n id,\n alignIcon = 'right',\n 'aria-checked': ariaChecked,\n 'aria-controls': ariaControls,\n 'aria-expanded': ariaExpanded,\n 'aria-label': ariaLabel,\n children,\n className,\n draggable,\n elementProps,\n icon,\n onClick,\n pillStyle = 'light',\n rounded,\n size = 'medium',\n to,\n } = props\n\n const [isHydrated, setIsHydrated] = useState(false)\n\n useEffect(() => {\n setIsHydrated(true)\n }, [])\n\n const isButton = onClick && !to\n\n const classes = [\n baseClass,\n `${baseClass}--style-${pillStyle}`,\n `${baseClass}--size-${size}`,\n className && className,\n to && `${baseClass}--has-link`,\n (to || onClick) && `${baseClass}--has-action`,\n icon && `${baseClass}--has-icon`,\n icon && `${baseClass}--align-icon-${alignIcon}`,\n draggable && `${baseClass}--draggable`,\n rounded && `${baseClass}--rounded`,\n ]\n .filter(Boolean)\n .join(' ')\n\n let Element: ElementType | React.FC<RenderedTypeProps> = 'div'\n\n if (isButton) {\n Element = 'button'\n }\n\n if (to) {\n Element = Link\n }\n\n return (\n <Element\n {...elementProps}\n aria-checked={ariaChecked}\n aria-controls={ariaControls}\n aria-expanded={ariaExpanded}\n aria-label={ariaLabel}\n className={classes}\n disabled={isButton ? !isHydrated : undefined}\n href={to || null}\n id={id}\n onClick={onClick}\n type={isButton ? 'button' : undefined}\n >\n <span className={`${baseClass}__label`}>{children}</span>\n {Boolean(icon) && <span className={`${baseClass}__icon`}>{icon}</span>}\n </Element>\n )\n}\n\nexport const Pill: React.FC<PillProps> = (props) => {\n const { draggable } = props\n\n if (draggable) {\n return <DraggablePill {...props} />\n }\n return <StaticPill {...props} />\n}\n", "import { useEffect, useState } from 'react'\n\n/**\n * A custom React hook to throttle a value so that it updates no more than once every `delay` milliseconds.\n * @param {any} value - The value to be throttled.\n * @param {number} delay - The minimum delay (in milliseconds) between updates.\n * @returns {any} - The throttled value.\n */\nexport function useThrottledValue(value, delay) {\n const [throttledValue, setThrottledValue] = useState(value)\n\n useEffect(() => {\n const handler = setTimeout(() => {\n setThrottledValue(value)\n }, delay)\n\n // Cleanup the timeout if the value changes before the delay is completed\n return () => {\n clearTimeout(handler)\n }\n }, [value, delay])\n\n return throttledValue\n}\n", "'use client'\nimport type { ClientBlock, ClientField, Labels } from 'payload'\n\nimport { useModal } from '@faceless-ui/modal'\nimport React from 'react'\n\nimport { ArrayAction } from '../../elements/ArrayAction/index.js'\nimport { useDrawerSlug } from '../../elements/Drawer/useDrawerSlug.js'\nimport { BlocksDrawer } from './BlocksDrawer/index.js'\n\nexport const RowActions: React.FC<{\n readonly addRow: (rowIndex: number, blockType: string) => Promise<void> | void\n readonly blocks: (ClientBlock | string)[]\n readonly blockType: string\n readonly copyRow: (rowIndex: number) => void\n readonly duplicateRow: (rowIndex: number, blockType: string) => void\n readonly fields: ClientField[]\n readonly hasMaxRows?: boolean\n readonly isSortable?: boolean\n readonly labels: Labels\n readonly moveRow: (fromIndex: number, toIndex: number) => void\n readonly pasteRow: (rowIndex: number) => void\n readonly removeRow: (rowIndex: number) => void\n readonly rowCount: number\n readonly rowIndex: number\n}> = (props) => {\n const {\n addRow,\n blocks,\n blockType,\n copyRow,\n duplicateRow,\n hasMaxRows,\n isSortable,\n labels,\n moveRow,\n pasteRow,\n removeRow,\n rowCount,\n rowIndex,\n } = props\n\n const { closeModal, openModal } = useModal()\n const drawerSlug = useDrawerSlug('blocks-drawer')\n\n const [indexToAdd, setIndexToAdd] = React.useState<null | number>(null)\n\n return (\n <React.Fragment>\n <BlocksDrawer\n addRow={(_, rowBlockType) => {\n if (typeof addRow === 'function') {\n void addRow(indexToAdd, rowBlockType)\n }\n closeModal(drawerSlug)\n }}\n addRowIndex={rowIndex}\n blocks={blocks}\n drawerSlug={drawerSlug}\n labels={labels}\n />\n <ArrayAction\n addRow={(index) => {\n setIndexToAdd(index)\n openModal(drawerSlug)\n }}\n copyRow={copyRow}\n duplicateRow={() => duplicateRow(rowIndex, blockType)}\n hasMaxRows={hasMaxRows}\n index={rowIndex}\n isSortable={isSortable}\n moveRow={moveRow}\n pasteRow={pasteRow}\n removeRow={removeRow}\n rowCount={rowCount}\n />\n </React.Fragment>\n )\n}\n", "'use client'\nimport type { ClientBlock, Labels } from 'payload'\n\nimport { useModal } from '@faceless-ui/modal'\nimport { getTranslation } from '@payloadcms/translations'\nimport React, { useEffect } from 'react'\n\nimport { Drawer } from '../../../elements/Drawer/index.js'\nimport { useTranslation } from '../../../providers/Translation/index.js'\nimport { BlockSelector } from '../BlockSelector/index.js'\n\nexport type Props = {\n readonly addRow: (index: number, blockType?: string) => Promise<void> | void\n readonly addRowIndex: number\n readonly blocks: (ClientBlock | string)[]\n readonly drawerSlug: string\n readonly labels: Labels\n}\n\nexport const BlocksDrawer: React.FC<Props> = (props) => {\n const { addRow, addRowIndex, blocks, drawerSlug, labels } = props\n\n const { closeModal, isModalOpen } = useModal()\n const { i18n, t } = useTranslation()\n const [searchTermOverride, setSearchTermOverride] = React.useState('')\n\n useEffect(() => {\n if (!isModalOpen(drawerSlug)) {\n setSearchTermOverride('')\n }\n }, [isModalOpen, drawerSlug])\n\n return (\n <Drawer\n slug={drawerSlug}\n title={t('fields:addLabel', { label: getTranslation(labels.singular, i18n) })}\n >\n <BlockSelector\n blocks={blocks}\n onSelect={(slug) => {\n void addRow(addRowIndex, slug)\n closeModal(drawerSlug)\n }}\n searchTerm={searchTermOverride}\n />\n </Drawer>\n )\n}\n", "'use client'\nimport type { I18nClient } from '@payloadcms/translations'\nimport type { ClientBlock } from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport React, { Fragment, useEffect, useMemo, useState } from 'react'\n\nimport { ThumbnailCard } from '../../../elements/ThumbnailCard/index.js'\nimport { DefaultBlockImage } from '../../../graphics/DefaultBlockImage/index.js'\nimport { useControllableState } from '../../../hooks/useControllableState.js'\nimport { useConfig } from '../../../providers/Config/index.js'\nimport { useTranslation } from '../../../providers/Translation/index.js'\nimport { BlockSearch } from './BlockSearch/index.js'\nimport './index.scss'\n\nexport type Props = {\n readonly blocks: (ClientBlock | string)[]\n readonly onSelect?: (blockType: string) => void\n /**\n * Control the search term state externally\n */\n searchTerm?: string\n}\n\nconst baseClass = 'blocks-drawer'\n\nconst getBlockLabel = (block: ClientBlock, i18n: I18nClient) => {\n if (typeof block.labels.singular === 'string') {\n return block.labels.singular.toLowerCase()\n }\n if (typeof block.labels.singular === 'object') {\n return getTranslation(block.labels.singular, i18n).toLowerCase()\n }\n return ''\n}\n\nexport const BlockSelector: React.FC<Props> = (props) => {\n const { blocks, onSelect, searchTerm: searchTermFromProps } = props\n\n const [searchTerm, setSearchTerm] = useControllableState(searchTermFromProps ?? '')\n\n const [filteredBlocks, setFilteredBlocks] = useState(blocks)\n const { i18n } = useTranslation()\n const { config } = useConfig()\n\n const blockGroups = useMemo(() => {\n const groups: Record<string, (ClientBlock | string)[]> = {\n _none: [],\n }\n\n filteredBlocks.forEach((block) => {\n if (typeof block === 'object' && block.admin?.group) {\n const group = block.admin.group\n const label = typeof group === 'string' ? group : getTranslation(group, i18n)\n\n if (Object.hasOwn(groups, label)) {\n groups[label].push(block)\n } else {\n groups[label] = [block]\n }\n } else {\n groups._none.push(block)\n }\n })\n\n return groups\n }, [filteredBlocks, i18n])\n\n useEffect(() => {\n const searchTermToUse = searchTerm.toLowerCase()\n\n const matchingBlocks = blocks?.reduce((matchedBlocks, _block) => {\n const block = typeof _block === 'string' ? config.blocksMap[_block] : _block\n const blockLabel = getBlockLabel(block, i18n)\n if (blockLabel.includes(searchTermToUse)) {\n matchedBlocks.push(block)\n }\n return matchedBlocks\n }, [])\n\n setFilteredBlocks(matchingBlocks)\n }, [searchTerm, blocks, i18n, config.blocksMap])\n\n return (\n <Fragment>\n <BlockSearch setSearchTerm={setSearchTerm} />\n <div className={`${baseClass}__blocks-wrapper`}>\n <ul className={`${baseClass}__block-groups`}>\n {Object.entries(blockGroups).map(([groupLabel, groupBlocks]) =>\n !groupBlocks.length ? null : (\n <li\n className={[\n `${baseClass}__block-group`,\n groupLabel === '_none' && `${baseClass}__block-group-none`,\n ]\n .filter(Boolean)\n .join(' ')}\n key={groupLabel}\n >\n {groupLabel !== '_none' && (\n <h3 className={`${baseClass}__block-group-label`}>{groupLabel}</h3>\n )}\n <ul className={`${baseClass}__blocks`}>\n {groupBlocks.map((_block, index) => {\n const block = typeof _block === 'string' ? config.blocksMap[_block] : _block\n\n const { slug, imageAltText, imageURL, labels: blockLabels } = block\n\n return (\n <li className={`${baseClass}__block`} key={index}>\n <ThumbnailCard\n alignLabel=\"center\"\n label={getTranslation(blockLabels?.singular, i18n)}\n onClick={() => {\n if (typeof onSelect === 'function') {\n onSelect(slug)\n }\n }}\n thumbnail={\n <div className={`${baseClass}__default-image`}>\n {imageURL ? (\n <img alt={imageAltText} src={imageURL} />\n ) : (\n <DefaultBlockImage />\n )}\n </div>\n }\n />\n </li>\n )\n })}\n </ul>\n </li>\n ),\n )}\n </ul>\n </div>\n </Fragment>\n )\n}\n", "'use client'\nimport type { ClientCollectionConfig, TypeWithID } from 'payload'\n\nimport React from 'react'\n\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { formatDocTitle } from '../../utilities/formatDocTitle/index.js'\nimport './index.scss'\n\nexport type ThumbnailCardProps = {\n alignLabel?: 'center' | 'left'\n className?: string\n collection?: ClientCollectionConfig\n doc?: { filename?: string } & TypeWithID\n label?: string\n onClick?: () => void\n onKeyDown?: () => void\n thumbnail: React.ReactNode\n}\n\nconst baseClass = 'thumbnail-card'\n\nexport const ThumbnailCard: React.FC<ThumbnailCardProps> = (props) => {\n const {\n alignLabel,\n className,\n collection,\n doc,\n label: labelFromProps,\n onClick,\n thumbnail,\n } = props\n\n const { config } = useConfig()\n\n const { i18n } = useTranslation()\n\n const classes = [\n baseClass,\n className,\n typeof onClick === 'function' && `${baseClass}--has-on-click`,\n alignLabel && `${baseClass}--align-label-${alignLabel}`,\n ]\n .filter(Boolean)\n .join(' ')\n\n let title = labelFromProps\n\n if (!title) {\n title = formatDocTitle({\n collectionConfig: collection,\n data: doc,\n dateFormat: config.admin.dateFormat,\n fallback: doc?.filename,\n i18n,\n })\n }\n\n return (\n <button className={classes} onClick={onClick} title={title} type=\"button\">\n <div className={`${baseClass}__thumbnail`}>{thumbnail}</div>\n <div className={`${baseClass}__label`}>{title}</div>\n </button>\n )\n}\n", "import React, { useState } from 'react'\nimport { v4 as uuid } from 'uuid'\n\nexport const DefaultBlockImage: React.FC = () => {\n const [patternID] = useState(() => `pattern${uuid()}`)\n\n return (\n <svg\n fill=\"none\"\n height=\"151\"\n preserveAspectRatio=\"xMidYMid slice\"\n viewBox=\"0 0 231 151\"\n width=\"231\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <g clipPath={`url(#${patternID})`}>\n <rect fill=\"#D9D9D9\" height=\"100%\" rx=\"2\" width=\"100%\" />\n <rect\n fill=\"#BCBCBC\"\n height=\"116.063\"\n transform=\"rotate(52.0687 33.7051 79.3051)\"\n width=\"85.8593\"\n x=\"33.7051\"\n y=\"79.3051\"\n />\n <rect\n fill=\"#BCBCBC\"\n height=\"116.063\"\n transform=\"rotate(52.0687 86.1219 92.6272)\"\n width=\"85.8593\"\n x=\"86.1219\"\n y=\"92.6272\"\n />\n <circle cx=\"189\" cy=\"45\" fill=\"#BCBCBC\" r=\"19\" />\n <rect fill=\"#B8B8B8\" height=\"5\" rx=\"2.5\" width=\"98\" x=\"66\" y=\"70\" />\n <rect fill=\"#B8B8B8\" height=\"5\" rx=\"2.5\" width=\"76\" x=\"77\" y=\"82\" />\n </g>\n <defs>\n <clipPath id={`${patternID}`}>\n <rect fill=\"white\" height=\"151\" width=\"231\" />\n </clipPath>\n </defs>\n </svg>\n )\n}\n", "import validate from './validate.js';\n\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\nvar byteToHex = [];\nfor (var i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).slice(1));\n}\nexport function unsafeStringify(arr, offset = 0) {\n // Note: Be careful editing this code! It's been tuned for performance\n // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434\n //\n // Note to future-self: No, you can't remove the `toLowerCase()` call.\n // REF: https://github.com/uuidjs/uuid/pull/677#issuecomment-1757351351\n return (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase();\n}\nfunction stringify(arr, offset = 0) {\n var uuid = unsafeStringify(arr, offset);\n // Consistency check for valid UUID. If this throws, it's likely due to one\n // of the following:\n // - One or more input array values don't map to a hex octet (leading to\n // \"undefined\" in the uuid)\n // - Invalid input values for the RFC `version` or `variant` fields\n if (!validate(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n return uuid;\n}\nexport default stringify;", "// Unique ID creation requires a high quality random # generator. In the browser we therefore\n// require the crypto API and do not support built-in fallback to lower quality random number\n// generators (like Math.random()).\n\nvar getRandomValues;\nvar rnds8 = new Uint8Array(16);\nexport default function rng() {\n // lazy load so that environments that need to polyfill have a chance to do so\n if (!getRandomValues) {\n // getRandomValues needs to be invoked in a context where \"this\" is a Crypto implementation.\n getRandomValues = typeof crypto !== 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto);\n if (!getRandomValues) {\n throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n }\n }\n return getRandomValues(rnds8);\n}", "var randomUUID = typeof crypto !== 'undefined' && crypto.randomUUID && crypto.randomUUID.bind(crypto);\nexport default {\n randomUUID\n};", "import native from './native.js';\nimport rng from './rng.js';\nimport { unsafeStringify } from './stringify.js';\nfunction v4(options, buf, offset) {\n if (native.randomUUID && !buf && !options) {\n return native.randomUUID();\n }\n options = options || {};\n var rnds = options.random || (options.rng || rng)();\n\n // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n rnds[6] = rnds[6] & 0x0f | 0x40;\n rnds[8] = rnds[8] & 0x3f | 0x80;\n\n // Copy bytes to buffer, if provided\n if (buf) {\n offset = offset || 0;\n for (var i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n return buf;\n }\n return unsafeStringify(rnds);\n}\nexport default v4;", "'use client'\nimport React from 'react'\n\nimport { SearchIcon } from '../../../../icons/Search/index.js'\nimport { useTranslation } from '../../../../providers/Translation/index.js'\nimport './index.scss'\n\nconst baseClass = 'block-search'\n\nexport const BlockSearch: React.FC<{ setSearchTerm: (term: string) => void }> = (props) => {\n const { setSearchTerm } = props\n const { t } = useTranslation()\n\n const handleChange = (e) => {\n setSearchTerm(e.target.value)\n }\n\n return (\n <div className={baseClass}>\n <input\n className={`${baseClass}__input`}\n onChange={handleChange}\n placeholder={t('fields:searchForBlock')}\n />\n <SearchIcon />\n </div>\n )\n}\n", "import React from 'react'\n\nimport './index.scss'\n\nexport const SearchIcon: React.FC = () => (\n <svg\n className=\"icon icon--search\"\n fill=\"none\"\n viewBox=\"0 0 20 20\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n className=\"stroke\"\n d=\"M16 16L13.1333 13.1333M14.6667 9.33333C14.6667 12.2789 12.2789 14.6667 9.33333 14.6667C6.38781 14.6667 4 12.2789 4 9.33333C4 6.38781 6.38781 4 9.33333 4C12.2789 4 14.6667 6.38781 14.6667 9.33333Z\"\n strokeLinecap=\"square\"\n />\n </svg>\n)\n", "'use client'\nimport React from 'react'\n\nimport { useField } from '../../../forms/useField/index.js'\nimport { useTranslation } from '../../../providers/Translation/index.js'\nimport './index.scss'\n\nconst baseClass = 'section-title'\n\nexport type Props = {\n customOnChange?: (e: React.ChangeEvent<HTMLInputElement>) => void\n customValue?: string\n path: string\n readOnly: boolean\n}\n\n/**\n * An input field representing the block's `blockName` property - responsible for reading and saving the `blockName`\n * property from/into the provided path.\n */\nexport const SectionTitle: React.FC<Props> = (props) => {\n const { customOnChange, customValue, path, readOnly } = props\n\n const { setValue, value } = useField({ path })\n const { t } = useTranslation()\n\n const classes = [baseClass].filter(Boolean).join(' ')\n\n const onChange =\n customOnChange ||\n ((e) => {\n e.stopPropagation()\n e.preventDefault()\n setValue(e.target.value)\n })\n\n return (\n <div className={classes} data-value={customValue || value}>\n <input\n className={`${baseClass}__input`}\n id={path}\n name={path}\n onChange={onChange}\n placeholder={t('general:untitled')}\n readOnly={readOnly}\n type=\"text\"\n value={customValue || (value as string) || ''}\n />\n </div>\n )\n}\n", "'use client'\nimport type { CodeFieldClientComponent } from 'payload'\n\nimport React, { useCallback, useEffect, useMemo, useState } from 'react'\n\nimport { CodeEditor } from '../../elements/CodeEditor/index.js'\nimport { RenderCustomComponent } from '../../elements/RenderCustomComponent/index.js'\nimport { FieldDescription } from '../../fields/FieldDescription/index.js'\nimport { FieldError } from '../../fields/FieldError/index.js'\nimport { FieldLabel } from '../../fields/FieldLabel/index.js'\nimport { useField } from '../../forms/useField/index.js'\nimport { withCondition } from '../../forms/withCondition/index.js'\nimport { mergeFieldStyles } from '../mergeFieldStyles.js'\nimport { fieldBaseClass } from '../shared/index.js'\nimport './index.scss'\n\nconst prismToMonacoLanguageMap = {\n js: 'javascript',\n ts: 'typescript',\n tsx: 'typescript',\n}\n\nconst baseClass = 'code-field'\n\nconst CodeFieldComponent: CodeFieldClientComponent = (props) => {\n const {\n field,\n field: {\n admin: { className, description, editorOptions, editorProps, language = 'javascript' } = {},\n label,\n localized,\n required,\n },\n onMount,\n path: pathFromProps,\n readOnly,\n validate,\n } = props\n\n const inputChangeFromRef = React.useRef<'formState' | 'internalEditor'>('formState')\n const [recalculatedHeightAt, setRecalculatedHeightAt] = useState<number | undefined>(Date.now())\n\n const memoizedValidate = useCallback(\n (value, options) => {\n if (typeof validate === 'function') {\n return validate(value, { ...options, required })\n }\n },\n [validate, required],\n )\n\n const {\n customComponents: { AfterInput, BeforeInput, Description, Error, Label } = {},\n disabled,\n initialValue,\n path,\n setValue,\n showError,\n value,\n } = useField<string>({\n potentiallyStalePath: pathFromProps,\n validate: memoizedValidate,\n })\n\n const stringValueRef = React.useRef<string>(\n (value || initialValue) !== undefined ? (value ?? initialValue) : undefined,\n )\n\n const handleChange = useCallback(\n (val: string) => {\n if (readOnly || disabled) {\n return\n }\n inputChangeFromRef.current = 'internalEditor'\n\n try {\n setValue(val ? val : null)\n stringValueRef.current = val\n } catch (e) {\n setValue(val ? val : null)\n stringValueRef.current = val\n }\n },\n [readOnly, disabled, setValue],\n )\n\n useEffect(() => {\n if (inputChangeFromRef.current === 'formState') {\n stringValueRef.current =\n (value || initialValue) !== undefined ? (value ?? initialValue) : undefined\n setRecalculatedHeightAt(Date.now())\n }\n\n inputChangeFromRef.current = 'formState'\n }, [initialValue, path, value])\n\n const styles = useMemo(() => mergeFieldStyles(field), [field])\n\n return (\n <div\n className={[\n fieldBaseClass,\n baseClass,\n className,\n showError && 'error',\n (readOnly || disabled) && 'read-only',\n ]\n .filter(Boolean)\n .join(' ')}\n style={styles}\n >\n <RenderCustomComponent\n CustomComponent={Label}\n Fallback={\n <FieldLabel label={label} localized={localized} path={path} required={required} />\n }\n />\n <div className={`${fieldBaseClass}__wrap`}>\n <RenderCustomComponent\n CustomComponent={Error}\n Fallback={<FieldError path={path} showError={showError} />}\n />\n {BeforeInput}\n <CodeEditor\n defaultLanguage={prismToMonacoLanguageMap[language] || language}\n onChange={handleChange}\n onMount={onMount}\n options={editorOptions}\n readOnly={readOnly || disabled}\n recalculatedHeightAt={recalculatedHeightAt}\n value={stringValueRef.current}\n wrapperProps={{\n id: `field-${path?.replace(/\\./g, '__')}`,\n }}\n {...(editorProps || {})}\n />\n {AfterInput}\n </div>\n <RenderCustomComponent\n CustomComponent={Description}\n Fallback={<FieldDescription description={description} path={path} />}\n />\n </div>\n )\n}\n\nexport const CodeField = withCondition(CodeFieldComponent)\n", "'use client'\nimport React, { lazy, Suspense } from 'react'\n\nimport type { Props } from './types.js'\n\nimport { ShimmerEffect } from '../ShimmerEffect/index.js'\n\nconst LazyEditor = lazy(() => import('./CodeEditor.js'))\n\nexport type { Props }\n\nexport const CodeEditor: React.FC<Props> = (props) => {\n return (\n <Suspense fallback={<ShimmerEffect />}>\n <LazyEditor {...props} />\n </Suspense>\n )\n}\n", "'use client'\nimport type { CollapsibleFieldClientComponent, DocumentPreferences } from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport React, { Fragment, useCallback, useEffect, useMemo, useState } from 'react'\n\nimport { Collapsible as CollapsibleElement } from '../../elements/Collapsible/index.js'\nimport { ErrorPill } from '../../elements/ErrorPill/index.js'\nimport { RenderCustomComponent } from '../../elements/RenderCustomComponent/index.js'\nimport { FieldDescription } from '../../fields/FieldDescription/index.js'\nimport { RenderFields } from '../../forms/RenderFields/index.js'\nimport { RowLabel } from '../../forms/RowLabel/index.js'\nimport { useField } from '../../forms/useField/index.js'\nimport { WatchChildErrors } from '../../forms/WatchChildErrors/index.js'\nimport { withCondition } from '../../forms/withCondition/index.js'\nimport { useDocumentInfo } from '../../providers/DocumentInfo/index.js'\nimport { usePreferences } from '../../providers/Preferences/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { mergeFieldStyles } from '../mergeFieldStyles.js'\nimport './index.scss'\nimport { fieldBaseClass } from '../shared/index.js'\n\nconst baseClass = 'collapsible-field'\n\nconst CollapsibleFieldComponent: CollapsibleFieldClientComponent = (props) => {\n const {\n field,\n field: { admin: { className, description, initCollapsed = false } = {}, fields, label } = {},\n indexPath,\n parentPath,\n parentSchemaPath,\n path,\n permissions,\n readOnly,\n } = props\n\n const { i18n } = useTranslation()\n const { getPreference, setPreference } = usePreferences()\n const { preferencesKey } = useDocumentInfo()\n const [collapsedOnMount, setCollapsedOnMount] = useState<boolean>()\n const fieldPreferencesKey = `collapsible-${path?.replace(/\\./g, '__')}`\n const [errorCount, setErrorCount] = useState(0)\n const fieldHasErrors = errorCount > 0\n\n const { customComponents: { AfterInput, BeforeInput, Description, Label } = {}, disabled } =\n useField({\n path,\n })\n\n const onToggle = useCallback(\n async (newCollapsedState: boolean): Promise<void> => {\n const existingPreferences: DocumentPreferences = await getPreference(preferencesKey)\n\n if (preferencesKey) {\n void setPreference(preferencesKey, {\n ...existingPreferences,\n ...(path\n ? {\n fields: {\n ...(existingPreferences?.fields || {}),\n [path]: {\n ...existingPreferences?.fields?.[path],\n collapsed: newCollapsedState,\n },\n },\n }\n : {\n fields: {\n ...(existingPreferences?.fields || {}),\n [fieldPreferencesKey]: {\n ...existingPreferences?.fields?.[fieldPreferencesKey],\n collapsed: newCollapsedState,\n },\n },\n }),\n })\n }\n },\n [preferencesKey, fieldPreferencesKey, getPreference, setPreference, path],\n )\n\n useEffect(() => {\n const fetchInitialState = async () => {\n if (preferencesKey) {\n const preferences = await getPreference(preferencesKey)\n const specificPreference = path\n ? preferences?.fields?.[path]?.collapsed\n : preferences?.fields?.[fieldPreferencesKey]?.collapsed\n\n if (specificPreference !== undefined) {\n setCollapsedOnMount(Boolean(specificPreference))\n } else {\n setCollapsedOnMount(typeof initCollapsed === 'boolean' ? initCollapsed : false)\n }\n } else {\n setCollapsedOnMount(typeof initCollapsed === 'boolean' ? initCollapsed : false)\n }\n }\n\n void fetchInitialState()\n }, [getPreference, preferencesKey, fieldPreferencesKey, initCollapsed, path])\n\n const styles = useMemo(() => mergeFieldStyles(field), [field])\n\n if (typeof collapsedOnMount !== 'boolean') {\n return null\n }\n\n return (\n <Fragment>\n <WatchChildErrors\n fields={fields}\n // removes the 'collapsible' path segment, i.e. `_index-0`\n path={path.split('.').slice(0, -1)}\n setErrorCount={setErrorCount}\n />\n <div\n className={[\n fieldBaseClass,\n baseClass,\n className,\n fieldHasErrors ? `${baseClass}--has-error` : `${baseClass}--has-no-error`,\n ]\n .filter(Boolean)\n .join(' ')}\n id={`field-${fieldPreferencesKey}`}\n style={styles}\n >\n {BeforeInput}\n <CollapsibleElement\n className={`${baseClass}__collapsible`}\n collapsibleStyle={fieldHasErrors ? 'error' : 'default'}\n header={\n <div className={`${baseClass}__row-label-wrap`}>\n <RowLabel CustomComponent={Label} label={getTranslation(label, i18n)} path={path} />\n {fieldHasErrors && <ErrorPill count={errorCount} i18n={i18n} withMessage />}\n </div>\n }\n initCollapsed={collapsedOnMount}\n onToggle={onToggle}\n >\n <RenderFields\n fields={fields}\n margins=\"small\"\n parentIndexPath={indexPath}\n parentPath={parentPath}\n parentSchemaPath={parentSchemaPath}\n permissions={permissions}\n readOnly={readOnly || disabled}\n />\n </CollapsibleElement>\n {AfterInput}\n <RenderCustomComponent\n CustomComponent={Description}\n Fallback={<FieldDescription description={description} path={path} />}\n />\n </div>\n </Fragment>\n )\n}\n\nexport const CollapsibleField = withCondition(CollapsibleFieldComponent)\n", "'use client'\nimport type { ClientField } from 'payload'\nimport type React from 'react'\n\nimport { useThrottledEffect } from '../../hooks/useThrottledEffect.js'\nimport { useAllFormFields, useFormSubmitted } from '../Form/context.js'\nimport { buildPathSegments } from './buildPathSegments.js'\n\ntype TrackSubSchemaErrorCountProps = {\n fields?: ClientField[]\n /**\n * This path should only include path segments that affect data\n * i.e. it should not include _index-0 type segments\n *\n * For collapsibles and tabs you can simply pass their parent path\n */\n path: (number | string)[]\n setErrorCount: (count: number) => void\n}\nexport const WatchChildErrors: React.FC<TrackSubSchemaErrorCountProps> = ({\n fields,\n path: parentPath,\n setErrorCount,\n}) => {\n const [formState] = useAllFormFields()\n const hasSubmitted = useFormSubmitted()\n\n const segmentsToMatch = buildPathSegments(fields)\n\n useThrottledEffect(\n () => {\n if (hasSubmitted) {\n let errorCount = 0\n Object.entries(formState).forEach(([key]) => {\n const matchingSegment = segmentsToMatch?.some((segment) => {\n const segmentToMatch = [...parentPath, segment].join('.')\n // match fields with same parent path\n if (segmentToMatch.endsWith('.')) {\n // Match both nested fields (key starts with segmentToMatch)\n // and the field itself (key equals segmentToMatch without trailing dot)\n const pathWithoutDot = segmentToMatch.slice(0, -1)\n return key.startsWith(segmentToMatch) || key === pathWithoutDot\n }\n // match fields with same path\n return key === segmentToMatch\n })\n\n if (matchingSegment) {\n const pathState = formState[key]\n if ('valid' in pathState && !pathState.valid) {\n errorCount += 1\n }\n }\n })\n setErrorCount(errorCount)\n }\n },\n 250,\n [formState, hasSubmitted, fields],\n )\n\n return null\n}\n", "'use client'\nimport type { ClientField } from 'payload'\n\nimport { fieldAffectsData } from 'payload/shared'\n\nexport const buildPathSegments = (fields: ClientField[]): (`${string}.` | string)[] => {\n return fields.reduce((acc: (`${string}.` | string)[], field) => {\n const fields: ClientField[] = 'fields' in field ? field.fields : undefined\n\n if (fields) {\n if (fieldAffectsData(field)) {\n // group, block, array\n acc.push(`${field.name}.`)\n } else {\n // rows, collapsibles, unnamed-tab\n acc.push(...buildPathSegments(fields))\n }\n } else if (field.type === 'tabs') {\n // tabs\n if ('tabs' in field) {\n field.tabs?.forEach((tab) => {\n if ('name' in tab) {\n acc.push(`${tab.name}.`)\n } else {\n acc.push(...buildPathSegments(tab.fields))\n }\n })\n }\n } else if (fieldAffectsData(field)) {\n // text, number, date, etc.\n acc.push(field.name)\n }\n\n return acc\n }, [])\n}\n", "'use client'\nimport type { DateFieldClientComponent, DateFieldValidation } from 'payload'\n\nimport { TZDateMini as TZDate } from '@date-fns/tz/date/mini'\nimport { getTranslation } from '@payloadcms/translations'\nimport { transpose } from 'date-fns'\nimport { useCallback, useMemo } from 'react'\n\nimport { DatePickerField } from '../../elements/DatePicker/index.js'\nimport { RenderCustomComponent } from '../../elements/RenderCustomComponent/index.js'\nimport { TimezonePicker } from '../../elements/TimezonePicker/index.js'\nimport { FieldDescription } from '../../fields/FieldDescription/index.js'\nimport { FieldError } from '../../fields/FieldError/index.js'\nimport { FieldLabel } from '../../fields/FieldLabel/index.js'\nimport { useForm, useFormFields } from '../../forms/Form/context.js'\nimport { useField } from '../../forms/useField/index.js'\nimport './index.scss'\nimport { withCondition } from '../../forms/withCondition/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { mergeFieldStyles } from '../mergeFieldStyles.js'\nimport { fieldBaseClass } from '../shared/index.js'\n\nconst baseClass = 'date-time-field'\n\nconst DateTimeFieldComponent: DateFieldClientComponent = (props) => {\n const {\n field,\n field: {\n admin: { className, date: datePickerProps, description, placeholder } = {},\n label,\n localized,\n required,\n timezone,\n },\n path: pathFromProps,\n readOnly,\n validate,\n } = props\n\n const pickerAppearance = datePickerProps?.pickerAppearance || 'default'\n\n // Get the user timezone so we can adjust the displayed value against it\n const userTimezone = Intl.DateTimeFormat().resolvedOptions().timeZone\n\n const { config } = useConfig()\n const { i18n } = useTranslation()\n const { dispatchFields, setModified } = useForm()\n\n const memoizedValidate: DateFieldValidation = useCallback(\n (value, options) => {\n if (typeof validate === 'function') {\n return validate(value, { ...options, required })\n }\n },\n [validate, required],\n )\n\n const {\n customComponents: { AfterInput, BeforeInput, Description, Error, Label } = {},\n disabled,\n path,\n setValue,\n showError,\n value,\n } = useField<string>({\n potentiallyStalePath: pathFromProps,\n validate: memoizedValidate,\n })\n\n const timezonePath = path + '_tz'\n const timezoneField = useFormFields(([fields, _]) => fields?.[timezonePath])\n\n const supportedTimezones = useMemo(() => {\n if (timezone && typeof timezone === 'object' && timezone.supportedTimezones) {\n return timezone.supportedTimezones\n }\n\n return config.admin.timezones.supportedTimezones\n }, [config.admin.timezones.supportedTimezones, timezone])\n\n /**\n * Date appearance doesn't include timestamps,\n * which means we need to pin the time to always 12:00 for the selected date\n */\n const isDateOnly = ['dayOnly', 'default', 'monthOnly'].includes(pickerAppearance)\n const selectedTimezone = timezoneField?.value as string\n const timezoneRequired =\n required || (timezone && typeof timezone === 'object' && timezone.required)\n\n // The displayed value should be the original value, adjusted to the user's timezone\n const displayedValue = useMemo(() => {\n if (timezone && selectedTimezone && userTimezone && value) {\n // Create TZDate instances for the selected timezone and the user's timezone\n // These instances allow us to transpose the date between timezones while keeping the same time value\n const DateWithOriginalTz = TZDate.tz(selectedTimezone)\n const DateWithUserTz = TZDate.tz(userTimezone)\n\n const modifiedDate = new TZDate(value).withTimeZone(selectedTimezone)\n\n // Transpose the date to the selected timezone\n const dateWithTimezone = transpose(modifiedDate, DateWithOriginalTz)\n\n // Transpose the date to the user's timezone - this is necessary because the react-datepicker component insists on displaying the date in the user's timezone\n const dateWithUserTimezone = transpose(dateWithTimezone, DateWithUserTz)\n\n return dateWithUserTimezone.toISOString()\n }\n\n return value\n }, [timezone, selectedTimezone, value, userTimezone])\n\n const styles = useMemo(() => mergeFieldStyles(field), [field])\n\n const onChange = useCallback(\n (incomingDate: Date) => {\n if (!(readOnly || disabled)) {\n if (timezone && selectedTimezone && incomingDate) {\n // Create TZDate instances for the selected timezone\n const TZDateWithSelectedTz = TZDate.tz(selectedTimezone)\n\n if (isDateOnly) {\n // We need to offset this hardcoded hour offset from the DatePicker elemenent\n // this can be removed in 4.0 when we remove the hardcoded offset as it is a breaking change\n // const tzOffset = incomingDate.getTimezoneOffset() / 60\n const incomingOffset = incomingDate.getTimezoneOffset() / 60\n const originalHour = incomingDate.getHours() + incomingOffset\n incomingDate.setHours(originalHour)\n\n // Convert the original date as picked into the desired timezone.\n const dateToSelectedTz = transpose(incomingDate, TZDateWithSelectedTz)\n\n setValue(dateToSelectedTz.toISOString() || null)\n } else {\n // Creates a TZDate instance for the user's timezone — this is default behaviour of TZDate as it wraps the Date constructor\n const dateToUserTz = new TZDate(incomingDate)\n // Transpose the date to the selected timezone\n const dateWithTimezone = transpose(dateToUserTz, TZDateWithSelectedTz)\n\n setValue(dateWithTimezone.toISOString() || null)\n }\n } else {\n setValue(incomingDate?.toISOString() || null)\n }\n }\n },\n [readOnly, disabled, timezone, selectedTimezone, isDateOnly, setValue],\n )\n\n const onChangeTimezone = useCallback(\n (timezone: string) => {\n if (timezonePath) {\n dispatchFields({\n type: 'UPDATE',\n path: timezonePath,\n value: timezone,\n })\n\n setModified(true)\n }\n },\n [dispatchFields, setModified, timezonePath],\n )\n\n return (\n <div\n className={[\n fieldBaseClass,\n baseClass,\n className,\n showError && `${baseClass}--has-error`,\n (readOnly || disabled) && 'read-only',\n ]\n .filter(Boolean)\n .join(' ')}\n style={styles}\n >\n <RenderCustomComponent\n CustomComponent={Label}\n Fallback={\n <FieldLabel label={label} localized={localized} path={path} required={required} />\n }\n />\n <div className={`${fieldBaseClass}__wrap`} id={`field-${path.replace(/\\./g, '__')}`}>\n <RenderCustomComponent\n CustomComponent={Error}\n Fallback={<FieldError path={path} showError={showError} />}\n />\n {BeforeInput}\n <DatePickerField\n {...datePickerProps}\n onChange={onChange}\n overrides={{\n ...datePickerProps?.overrides,\n }}\n placeholder={getTranslation(placeholder, i18n)}\n readOnly={readOnly || disabled}\n value={displayedValue}\n />\n {timezone && supportedTimezones.length > 0 && (\n <TimezonePicker\n id={`${path}-timezone-picker`}\n onChange={onChangeTimezone}\n options={supportedTimezones}\n readOnly={readOnly || disabled}\n required={timezoneRequired}\n selectedTimezone={selectedTimezone}\n />\n )}\n {AfterInput}\n </div>\n <RenderCustomComponent\n CustomComponent={Description}\n Fallback={<FieldDescription description={description} path={path} />}\n />\n </div>\n )\n}\n\nexport const DateTimeField = withCondition(DateTimeFieldComponent)\n", "'use client'\nimport React, { lazy, Suspense } from 'react'\n\nimport type { Props } from './types.js'\n\nimport { ShimmerEffect } from '../ShimmerEffect/index.js'\n\nconst DatePicker = lazy(() => import('./DatePicker.js'))\n\nexport const DatePickerField: React.FC<Props> = (props) => (\n <Suspense fallback={<ShimmerEffect height={50} />}>\n <DatePicker {...props} />\n </Suspense>\n)\n", "'use client'\n\nimport type { OptionObject } from 'payload'\nimport type React from 'react'\n\nimport { useMemo } from 'react'\n\nimport type { Props } from './types.js'\n\nimport { FieldLabel } from '../../fields/FieldLabel/index.js'\nimport './index.scss'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { ReactSelect } from '../ReactSelect/index.js'\nimport { formatOptions } from '../WhereBuilder/Condition/Select/formatOptions.js'\n\nexport const TimezonePicker: React.FC<Props> = (props) => {\n const {\n id,\n onChange: onChangeFromProps,\n options: optionsFromProps,\n readOnly: readOnlyFromProps,\n required,\n selectedTimezone: selectedTimezoneFromProps,\n } = props\n\n const { t } = useTranslation()\n\n const options = formatOptions(optionsFromProps)\n\n const selectedTimezone = useMemo(() => {\n return options.find((t) => {\n const value = typeof t === 'string' ? t : t.value\n return value === (selectedTimezoneFromProps || 'UTC')\n })\n }, [options, selectedTimezoneFromProps])\n\n const readOnly = Boolean(readOnlyFromProps) || options.length === 1\n\n return (\n <div className=\"timezone-picker-wrapper\">\n <FieldLabel\n htmlFor={id}\n label={`${t('general:timezone')} ${required ? '*' : ''}`}\n required={required}\n unstyled\n />\n <ReactSelect\n className=\"timezone-picker\"\n disabled={readOnly}\n inputId={id}\n isClearable={!required}\n isCreatable={false}\n onChange={(val: OptionObject) => {\n if (onChangeFromProps) {\n onChangeFromProps(val?.value || '')\n }\n }}\n options={options}\n value={selectedTimezone}\n />\n </div>\n )\n}\n", "'use client'\nimport type { KeyboardEventHandler } from 'react'\n\nimport { arrayMove } from '@dnd-kit/sortable'\nimport { getTranslation } from '@payloadcms/translations'\nimport React, { useEffect, useId } from 'react'\nimport Select, { type StylesConfig } from 'react-select'\nimport CreatableSelect from 'react-select/creatable'\n\nimport type { Option, ReactSelectAdapterProps } from './types.js'\nexport type { Option } from './types.js'\n\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { DraggableSortable } from '../DraggableSortable/index.js'\nimport { ShimmerEffect } from '../ShimmerEffect/index.js'\nimport { ClearIndicator } from './ClearIndicator/index.js'\nimport { Control } from './Control/index.js'\nimport { DropdownIndicator } from './DropdownIndicator/index.js'\nimport './index.scss'\nimport { Input } from './Input/index.js'\nimport { generateMultiValueDraggableID, MultiValue } from './MultiValue/index.js'\nimport { MultiValueLabel } from './MultiValueLabel/index.js'\nimport { MultiValueRemove } from './MultiValueRemove/index.js'\nimport { SingleValue } from './SingleValue/index.js'\nimport { ValueContainer } from './ValueContainer/index.js'\n\nconst createOption = (label: string) => ({\n label,\n value: label,\n})\n\nconst SelectAdapter: React.FC<ReactSelectAdapterProps> = (props) => {\n const { i18n, t } = useTranslation()\n const [inputValue, setInputValue] = React.useState('') // for creatable select\n const uuid = useId()\n const [hasMounted, setHasMounted] = React.useState(false)\n\n useEffect(() => {\n setHasMounted(true)\n }, [])\n\n const {\n className,\n components,\n customProps,\n disabled = false,\n filterOption = undefined,\n getOptionValue,\n isClearable = true,\n isCreatable,\n isLoading,\n isSearchable = true,\n noOptionsMessage = () => t('general:noOptions'),\n numberOnly = false,\n onChange,\n onMenuClose,\n onMenuOpen,\n options,\n placeholder = t('general:selectValue'),\n showError,\n value,\n } = props\n\n const loadingMessage = () => t('general:loading') + '...'\n\n const classes = [className, 'react-select', showError && 'react-select--error']\n .filter(Boolean)\n .join(' ')\n\n const styles: StylesConfig<Option> = {\n // Remove the default react-select z-index from the menu so that our custom\n // z-index in the \"payload-default\" css layer can take effect, in such a way\n // that end users can easily override it as with other styles.\n menu: (rsStyles) => ({ ...rsStyles, zIndex: undefined }),\n }\n\n if (!hasMounted) {\n return <ShimmerEffect height=\"calc(var(--base) * 2 + 2px)\" />\n }\n\n if (!isCreatable) {\n return (\n <Select\n captureMenuScroll\n customProps={customProps}\n isLoading={isLoading}\n {...props}\n className={classes}\n classNamePrefix=\"rs\"\n components={{\n ClearIndicator,\n Control,\n DropdownIndicator,\n Input,\n MultiValue,\n MultiValueLabel,\n MultiValueRemove,\n SingleValue,\n ValueContainer,\n ...components,\n }}\n filterOption={filterOption}\n getOptionValue={getOptionValue}\n instanceId={uuid}\n isClearable={isClearable}\n isDisabled={disabled}\n isSearchable={isSearchable}\n loadingMessage={loadingMessage}\n menuPlacement=\"auto\"\n noOptionsMessage={noOptionsMessage}\n onChange={onChange}\n onMenuClose={onMenuClose}\n onMenuOpen={onMenuOpen}\n options={options}\n placeholder={getTranslation(placeholder, i18n)}\n styles={styles}\n unstyled={true}\n value={value}\n />\n )\n }\n const handleKeyDown: KeyboardEventHandler = (event) => {\n if (numberOnly === true) {\n const acceptableKeys = [\n 'Tab',\n 'Escape',\n 'Backspace',\n 'Enter',\n 'ArrowRight',\n 'ArrowLeft',\n 'ArrowUp',\n 'ArrowDown',\n ]\n const isNumber = !/\\D/.test(event.key)\n const isActionKey = acceptableKeys.includes(event.key)\n if (!isNumber && !isActionKey) {\n event.preventDefault()\n return\n }\n }\n if (!value || !inputValue || inputValue.trim() === '') {\n return\n }\n if (filterOption && !filterOption(null, inputValue)) {\n return\n }\n if (event.nativeEvent.isComposing) {\n return\n }\n switch (event.key) {\n case 'Enter':\n case 'Tab':\n onChange([...(value as Option[]), createOption(inputValue)])\n setInputValue('')\n event.preventDefault()\n break\n default:\n break\n }\n }\n\n return (\n <CreatableSelect\n captureMenuScroll\n isLoading={isLoading}\n {...props}\n className={classes}\n classNamePrefix=\"rs\"\n components={{\n ClearIndicator,\n Control,\n DropdownIndicator,\n Input,\n MultiValue,\n MultiValueLabel,\n MultiValueRemove,\n SingleValue,\n ValueContainer,\n ...components,\n }}\n filterOption={filterOption}\n inputValue={inputValue}\n instanceId={uuid}\n isClearable={isClearable}\n isDisabled={disabled}\n isSearchable={isSearchable}\n loadingMessage={loadingMessage}\n menuPlacement=\"auto\"\n noOptionsMessage={noOptionsMessage}\n onChange={onChange}\n onInputChange={(newValue) => setInputValue(newValue)}\n onKeyDown={handleKeyDown}\n onMenuClose={onMenuClose}\n onMenuOpen={onMenuOpen}\n options={options}\n placeholder={getTranslation(placeholder, i18n)}\n styles={styles}\n unstyled={true}\n value={value}\n />\n )\n}\n\nconst SortableSelect: React.FC<ReactSelectAdapterProps> = (props) => {\n const { getOptionValue, onChange, value } = props\n\n let draggableIDs: string[] = []\n if (value) {\n draggableIDs = (Array.isArray(value) ? value : [value]).map((optionValue) => {\n return generateMultiValueDraggableID(optionValue, getOptionValue)\n })\n }\n\n return (\n <DraggableSortable\n className=\"react-select-container\"\n ids={draggableIDs}\n onDragEnd={({ moveFromIndex, moveToIndex }) => {\n let sorted = value\n if (value && Array.isArray(value)) {\n sorted = arrayMove(value, moveFromIndex, moveToIndex)\n }\n onChange(sorted)\n }}\n >\n <SelectAdapter {...props} />\n </DraggableSortable>\n )\n}\n\nexport const ReactSelect: React.FC<ReactSelectAdapterProps> = (props) => {\n const { isMulti, isSortable } = props\n\n if (isMulti && isSortable) {\n return <SortableSelect {...props} />\n }\n\n return <SelectAdapter {...props} />\n}\n", "function _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}\nexport { _typeof as default };", "import _typeof from \"./typeof.js\";\nfunction toPrimitive(t, r) {\n if (\"object\" != _typeof(t) || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != _typeof(i)) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\nexport { toPrimitive as default };", "import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nfunction toPropertyKey(t) {\n var i = toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : i + \"\";\n}\nexport { toPropertyKey as default };", "import toPropertyKey from \"./toPropertyKey.js\";\nfunction _defineProperty(e, r, t) {\n return (r = toPropertyKey(r)) in e ? Object.defineProperty(e, r, {\n value: t,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }) : e[r] = t, e;\n}\nexport { _defineProperty as default };", "import defineProperty from \"./defineProperty.js\";\nfunction ownKeys(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread2(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys(Object(t), !0).forEach(function (r) {\n defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nexport { _objectSpread2 as default };", "function _arrayWithHoles(r) {\n if (Array.isArray(r)) return r;\n}\nexport { _arrayWithHoles as default };", "function _iterableToArrayLimit(r, l) {\n var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"];\n if (null != t) {\n var e,\n n,\n i,\n u,\n a = [],\n f = !0,\n o = !1;\n try {\n if (i = (t = t.call(r)).next, 0 === l) {\n if (Object(t) !== t) return;\n f = !1;\n } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0);\n } catch (r) {\n o = !0, n = r;\n } finally {\n try {\n if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return;\n } finally {\n if (o) throw n;\n }\n }\n return a;\n }\n}\nexport { _iterableToArrayLimit as default };", "function _arrayLikeToArray(r, a) {\n (null == a || a > r.length) && (a = r.length);\n for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e];\n return n;\n}\nexport { _arrayLikeToArray as default };", "import arrayLikeToArray from \"./arrayLikeToArray.js\";\nfunction _unsupportedIterableToArray(r, a) {\n if (r) {\n if (\"string\" == typeof r) return arrayLikeToArray(r, a);\n var t = {}.toString.call(r).slice(8, -1);\n return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? arrayLikeToArray(r, a) : void 0;\n }\n}\nexport { _unsupportedIterableToArray as default };", "function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nexport { _nonIterableRest as default };", "import arrayWithHoles from \"./arrayWithHoles.js\";\nimport iterableToArrayLimit from \"./iterableToArrayLimit.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableRest from \"./nonIterableRest.js\";\nfunction _slicedToArray(r, e) {\n return arrayWithHoles(r) || iterableToArrayLimit(r, e) || unsupportedIterableToArray(r, e) || nonIterableRest();\n}\nexport { _slicedToArray as default };", "import objectWithoutPropertiesLoose from \"./objectWithoutPropertiesLoose.js\";\nfunction _objectWithoutProperties(e, t) {\n if (null == e) return {};\n var o,\n r,\n i = objectWithoutPropertiesLoose(e, t);\n if (Object.getOwnPropertySymbols) {\n var n = Object.getOwnPropertySymbols(e);\n for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]);\n }\n return i;\n}\nexport { _objectWithoutProperties as default };", "import _objectSpread from '@babel/runtime/helpers/esm/objectSpread2';\nimport _slicedToArray from '@babel/runtime/helpers/esm/slicedToArray';\nimport _objectWithoutProperties from '@babel/runtime/helpers/esm/objectWithoutProperties';\nimport { useState, useCallback } from 'react';\n\nvar _excluded = [\"defaultInputValue\", \"defaultMenuIsOpen\", \"defaultValue\", \"inputValue\", \"menuIsOpen\", \"onChange\", \"onInputChange\", \"onMenuClose\", \"onMenuOpen\", \"value\"];\nfunction useStateManager(_ref) {\n var _ref$defaultInputValu = _ref.defaultInputValue,\n defaultInputValue = _ref$defaultInputValu === void 0 ? '' : _ref$defaultInputValu,\n _ref$defaultMenuIsOpe = _ref.defaultMenuIsOpen,\n defaultMenuIsOpen = _ref$defaultMenuIsOpe === void 0 ? false : _ref$defaultMenuIsOpe,\n _ref$defaultValue = _ref.defaultValue,\n defaultValue = _ref$defaultValue === void 0 ? null : _ref$defaultValue,\n propsInputValue = _ref.inputValue,\n propsMenuIsOpen = _ref.menuIsOpen,\n propsOnChange = _ref.onChange,\n propsOnInputChange = _ref.onInputChange,\n propsOnMenuClose = _ref.onMenuClose,\n propsOnMenuOpen = _ref.onMenuOpen,\n propsValue = _ref.value,\n restSelectProps = _objectWithoutProperties(_ref, _excluded);\n var _useState = useState(propsInputValue !== undefined ? propsInputValue : defaultInputValue),\n _useState2 = _slicedToArray(_useState, 2),\n stateInputValue = _useState2[0],\n setStateInputValue = _useState2[1];\n var _useState3 = useState(propsMenuIsOpen !== undefined ? propsMenuIsOpen : defaultMenuIsOpen),\n _useState4 = _slicedToArray(_useState3, 2),\n stateMenuIsOpen = _useState4[0],\n setStateMenuIsOpen = _useState4[1];\n var _useState5 = useState(propsValue !== undefined ? propsValue : defaultValue),\n _useState6 = _slicedToArray(_useState5, 2),\n stateValue = _useState6[0],\n setStateValue = _useState6[1];\n var onChange = useCallback(function (value, actionMeta) {\n if (typeof propsOnChange === 'function') {\n propsOnChange(value, actionMeta);\n }\n setStateValue(value);\n }, [propsOnChange]);\n var onInputChange = useCallback(function (value, actionMeta) {\n var newValue;\n if (typeof propsOnInputChange === 'function') {\n newValue = propsOnInputChange(value, actionMeta);\n }\n setStateInputValue(newValue !== undefined ? newValue : value);\n }, [propsOnInputChange]);\n var onMenuOpen = useCallback(function () {\n if (typeof propsOnMenuOpen === 'function') {\n propsOnMenuOpen();\n }\n setStateMenuIsOpen(true);\n }, [propsOnMenuOpen]);\n var onMenuClose = useCallback(function () {\n if (typeof propsOnMenuClose === 'function') {\n propsOnMenuClose();\n }\n setStateMenuIsOpen(false);\n }, [propsOnMenuClose]);\n var inputValue = propsInputValue !== undefined ? propsInputValue : stateInputValue;\n var menuIsOpen = propsMenuIsOpen !== undefined ? propsMenuIsOpen : stateMenuIsOpen;\n var value = propsValue !== undefined ? propsValue : stateValue;\n return _objectSpread(_objectSpread({}, restSelectProps), {}, {\n inputValue: inputValue,\n menuIsOpen: menuIsOpen,\n onChange: onChange,\n onInputChange: onInputChange,\n onMenuClose: onMenuClose,\n onMenuOpen: onMenuOpen,\n value: value\n });\n}\n\nexport { useStateManager as u };\n", "import { u as useStateManager } from './useStateManager-7e1e8489.esm.js';\nexport { u as useStateManager } from './useStateManager-7e1e8489.esm.js';\nimport _extends from '@babel/runtime/helpers/esm/extends';\nimport * as React from 'react';\nimport { forwardRef, useMemo } from 'react';\nimport { S as Select } from './Select-aab027f3.esm.js';\nexport { c as createFilter, d as defaultTheme, m as mergeStyles } from './Select-aab027f3.esm.js';\nimport { CacheProvider } from '@emotion/react';\nimport createCache from '@emotion/cache';\nexport { c as components } from './index-641ee5b8.esm.js';\nimport '@babel/runtime/helpers/objectSpread2';\nimport '@babel/runtime/helpers/slicedToArray';\nimport '@babel/runtime/helpers/objectWithoutProperties';\nimport '@babel/runtime/helpers/classCallCheck';\nimport '@babel/runtime/helpers/createClass';\nimport '@babel/runtime/helpers/inherits';\nimport '@babel/runtime/helpers/createSuper';\nimport '@babel/runtime/helpers/toConsumableArray';\nimport 'memoize-one';\nimport '@babel/runtime/helpers/typeof';\nimport '@babel/runtime/helpers/taggedTemplateLiteral';\nimport '@babel/runtime/helpers/defineProperty';\nimport 'react-dom';\nimport '@floating-ui/dom';\nimport 'use-isomorphic-layout-effect';\n\nvar StateManagedSelect = /*#__PURE__*/forwardRef(function (props, ref) {\n var baseSelectProps = useStateManager(props);\n return /*#__PURE__*/React.createElement(Select, _extends({\n ref: ref\n }, baseSelectProps));\n});\nvar StateManagedSelect$1 = StateManagedSelect;\n\nvar NonceProvider = (function (_ref) {\n var nonce = _ref.nonce,\n children = _ref.children,\n cacheKey = _ref.cacheKey;\n var emotionCache = useMemo(function () {\n return createCache({\n key: cacheKey,\n nonce: nonce\n });\n }, [cacheKey, nonce]);\n return /*#__PURE__*/React.createElement(CacheProvider, {\n value: emotionCache\n }, children);\n});\n\nexport { NonceProvider, StateManagedSelect$1 as default };\n", "function _classCallCheck(a, n) {\n if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\");\n}\nexport { _classCallCheck as default };", "import toPropertyKey from \"./toPropertyKey.js\";\nfunction _defineProperties(e, r) {\n for (var t = 0; t < r.length; t++) {\n var o = r[t];\n o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, toPropertyKey(o.key), o);\n }\n}\nfunction _createClass(e, r, t) {\n return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", {\n writable: !1\n }), e;\n}\nexport { _createClass as default };", "import setPrototypeOf from \"./setPrototypeOf.js\";\nfunction _inherits(t, e) {\n if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\");\n t.prototype = Object.create(e && e.prototype, {\n constructor: {\n value: t,\n writable: !0,\n configurable: !0\n }\n }), Object.defineProperty(t, \"prototype\", {\n writable: !1\n }), e && setPrototypeOf(t, e);\n}\nexport { _inherits as default };", "function _getPrototypeOf(t) {\n return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) {\n return t.__proto__ || Object.getPrototypeOf(t);\n }, _getPrototypeOf(t);\n}\nexport { _getPrototypeOf as default };", "function _isNativeReflectConstruct() {\n try {\n var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n } catch (t) {}\n return (_isNativeReflectConstruct = function _isNativeReflectConstruct() {\n return !!t;\n })();\n}\nexport { _isNativeReflectConstruct as default };", "import _typeof from \"./typeof.js\";\nimport assertThisInitialized from \"./assertThisInitialized.js\";\nfunction _possibleConstructorReturn(t, e) {\n if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e;\n if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\");\n return assertThisInitialized(t);\n}\nexport { _possibleConstructorReturn as default };", "import getPrototypeOf from \"./getPrototypeOf.js\";\nimport isNativeReflectConstruct from \"./isNativeReflectConstruct.js\";\nimport possibleConstructorReturn from \"./possibleConstructorReturn.js\";\nfunction _createSuper(t) {\n var r = isNativeReflectConstruct();\n return function () {\n var e,\n o = getPrototypeOf(t);\n if (r) {\n var s = getPrototypeOf(this).constructor;\n e = Reflect.construct(o, arguments, s);\n } else e = o.apply(this, arguments);\n return possibleConstructorReturn(this, e);\n };\n}\nexport { _createSuper as default };", "import arrayLikeToArray from \"./arrayLikeToArray.js\";\nfunction _arrayWithoutHoles(r) {\n if (Array.isArray(r)) return arrayLikeToArray(r);\n}\nexport { _arrayWithoutHoles as default };", "function _iterableToArray(r) {\n if (\"undefined\" != typeof Symbol && null != r[Symbol.iterator] || null != r[\"@@iterator\"]) return Array.from(r);\n}\nexport { _iterableToArray as default };", "function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nexport { _nonIterableSpread as default };", "import arrayWithoutHoles from \"./arrayWithoutHoles.js\";\nimport iterableToArray from \"./iterableToArray.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableSpread from \"./nonIterableSpread.js\";\nfunction _toConsumableArray(r) {\n return arrayWithoutHoles(r) || iterableToArray(r) || unsupportedIterableToArray(r) || nonIterableSpread();\n}\nexport { _toConsumableArray as default };", "import _extends from '@babel/runtime/helpers/esm/extends';\nimport _objectSpread from '@babel/runtime/helpers/esm/objectSpread2';\nimport _classCallCheck from '@babel/runtime/helpers/esm/classCallCheck';\nimport _createClass from '@babel/runtime/helpers/esm/createClass';\nimport _inherits from '@babel/runtime/helpers/esm/inherits';\nimport _createSuper from '@babel/runtime/helpers/esm/createSuper';\nimport _toConsumableArray from '@babel/runtime/helpers/esm/toConsumableArray';\nimport * as React from 'react';\nimport { useMemo, Fragment, useRef, useCallback, useEffect, Component } from 'react';\nimport { r as removeProps, s as supportsPassiveEvents, a as clearIndicatorCSS, b as containerCSS, d as css$1, e as dropdownIndicatorCSS, g as groupCSS, f as groupHeadingCSS, i as indicatorsContainerCSS, h as indicatorSeparatorCSS, j as inputCSS, l as loadingIndicatorCSS, k as loadingMessageCSS, m as menuCSS, n as menuListCSS, o as menuPortalCSS, p as multiValueCSS, q as multiValueLabelCSS, t as multiValueRemoveCSS, u as noOptionsMessageCSS, v as optionCSS, w as placeholderCSS, x as css$2, y as valueContainerCSS, z as isTouchCapable, A as isMobileDevice, B as multiValueAsValue, C as singleValueAsValue, D as valueTernary, E as classNames, F as defaultComponents, G as isDocumentElement, H as cleanValue, I as scrollIntoView, J as noop, M as MenuPlacer, K as notNullish } from './index-641ee5b8.esm.js';\nimport { jsx, css } from '@emotion/react';\nimport memoizeOne from 'memoize-one';\nimport _objectWithoutProperties from '@babel/runtime/helpers/esm/objectWithoutProperties';\n\nfunction _EMOTION_STRINGIFIED_CSS_ERROR__$2() { return \"You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop).\"; }\n\n// Assistive text to describe visual elements. Hidden for sighted users.\nvar _ref = process.env.NODE_ENV === \"production\" ? {\n name: \"7pg0cj-a11yText\",\n styles: \"label:a11yText;z-index:9999;border:0;clip:rect(1px, 1px, 1px, 1px);height:1px;width:1px;position:absolute;overflow:hidden;padding:0;white-space:nowrap\"\n} : {\n name: \"1f43avz-a11yText-A11yText\",\n styles: \"label:a11yText;z-index:9999;border:0;clip:rect(1px, 1px, 1px, 1px);height:1px;width:1px;position:absolute;overflow:hidden;padding:0;white-space:nowrap;label:A11yText;\",\n map: \"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkExMXlUZXh0LnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFPSSIsImZpbGUiOiJBMTF5VGV4dC50c3giLCJzb3VyY2VzQ29udGVudCI6WyIvKiogQGpzeCBqc3ggKi9cbmltcG9ydCB7IEpTWCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IGpzeCB9IGZyb20gJ0BlbW90aW9uL3JlYWN0JztcblxuLy8gQXNzaXN0aXZlIHRleHQgdG8gZGVzY3JpYmUgdmlzdWFsIGVsZW1lbnRzLiBIaWRkZW4gZm9yIHNpZ2h0ZWQgdXNlcnMuXG5jb25zdCBBMTF5VGV4dCA9IChwcm9wczogSlNYLkludHJpbnNpY0VsZW1lbnRzWydzcGFuJ10pID0+IChcbiAgPHNwYW5cbiAgICBjc3M9e3tcbiAgICAgIGxhYmVsOiAnYTExeVRleHQnLFxuICAgICAgekluZGV4OiA5OTk5LFxuICAgICAgYm9yZGVyOiAwLFxuICAgICAgY2xpcDogJ3JlY3QoMXB4LCAxcHgsIDFweCwgMXB4KScsXG4gICAgICBoZWlnaHQ6IDEsXG4gICAgICB3aWR0aDogMSxcbiAgICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxuICAgICAgb3ZlcmZsb3c6ICdoaWRkZW4nLFxuICAgICAgcGFkZGluZzogMCxcbiAgICAgIHdoaXRlU3BhY2U6ICdub3dyYXAnLFxuICAgIH19XG4gICAgey4uLnByb3BzfVxuICAvPlxuKTtcblxuZXhwb3J0IGRlZmF1bHQgQTExeVRleHQ7XG4iXX0= */\",\n toString: _EMOTION_STRINGIFIED_CSS_ERROR__$2\n};\nvar A11yText = function A11yText(props) {\n return jsx(\"span\", _extends({\n css: _ref\n }, props));\n};\nvar A11yText$1 = A11yText;\n\nvar defaultAriaLiveMessages = {\n guidance: function guidance(props) {\n var isSearchable = props.isSearchable,\n isMulti = props.isMulti,\n tabSelectsValue = props.tabSelectsValue,\n context = props.context,\n isInitialFocus = props.isInitialFocus;\n switch (context) {\n case 'menu':\n return \"Use Up and Down to choose options, press Enter to select the currently focused option, press Escape to exit the menu\".concat(tabSelectsValue ? ', press Tab to select the option and exit the menu' : '', \".\");\n case 'input':\n return isInitialFocus ? \"\".concat(props['aria-label'] || 'Select', \" is focused \").concat(isSearchable ? ',type to refine list' : '', \", press Down to open the menu, \").concat(isMulti ? ' press left to focus selected values' : '') : '';\n case 'value':\n return 'Use left and right to toggle between focused values, press Backspace to remove the currently focused value';\n default:\n return '';\n }\n },\n onChange: function onChange(props) {\n var action = props.action,\n _props$label = props.label,\n label = _props$label === void 0 ? '' : _props$label,\n labels = props.labels,\n isDisabled = props.isDisabled;\n switch (action) {\n case 'deselect-option':\n case 'pop-value':\n case 'remove-value':\n return \"option \".concat(label, \", deselected.\");\n case 'clear':\n return 'All selected options have been cleared.';\n case 'initial-input-focus':\n return \"option\".concat(labels.length > 1 ? 's' : '', \" \").concat(labels.join(','), \", selected.\");\n case 'select-option':\n return isDisabled ? \"option \".concat(label, \" is disabled. Select another option.\") : \"option \".concat(label, \", selected.\");\n default:\n return '';\n }\n },\n onFocus: function onFocus(props) {\n var context = props.context,\n focused = props.focused,\n options = props.options,\n _props$label2 = props.label,\n label = _props$label2 === void 0 ? '' : _props$label2,\n selectValue = props.selectValue,\n isDisabled = props.isDisabled,\n isSelected = props.isSelected,\n isAppleDevice = props.isAppleDevice;\n var getArrayIndex = function getArrayIndex(arr, item) {\n return arr && arr.length ? \"\".concat(arr.indexOf(item) + 1, \" of \").concat(arr.length) : '';\n };\n if (context === 'value' && selectValue) {\n return \"value \".concat(label, \" focused, \").concat(getArrayIndex(selectValue, focused), \".\");\n }\n if (context === 'menu' && isAppleDevice) {\n var disabled = isDisabled ? ' disabled' : '';\n var status = \"\".concat(isSelected ? ' selected' : '').concat(disabled);\n return \"\".concat(label).concat(status, \", \").concat(getArrayIndex(options, focused), \".\");\n }\n return '';\n },\n onFilter: function onFilter(props) {\n var inputValue = props.inputValue,\n resultsMessage = props.resultsMessage;\n return \"\".concat(resultsMessage).concat(inputValue ? ' for search term ' + inputValue : '', \".\");\n }\n};\n\nvar LiveRegion = function LiveRegion(props) {\n var ariaSelection = props.ariaSelection,\n focusedOption = props.focusedOption,\n focusedValue = props.focusedValue,\n focusableOptions = props.focusableOptions,\n isFocused = props.isFocused,\n selectValue = props.selectValue,\n selectProps = props.selectProps,\n id = props.id,\n isAppleDevice = props.isAppleDevice;\n var ariaLiveMessages = selectProps.ariaLiveMessages,\n getOptionLabel = selectProps.getOptionLabel,\n inputValue = selectProps.inputValue,\n isMulti = selectProps.isMulti,\n isOptionDisabled = selectProps.isOptionDisabled,\n isSearchable = selectProps.isSearchable,\n menuIsOpen = selectProps.menuIsOpen,\n options = selectProps.options,\n screenReaderStatus = selectProps.screenReaderStatus,\n tabSelectsValue = selectProps.tabSelectsValue,\n isLoading = selectProps.isLoading;\n var ariaLabel = selectProps['aria-label'];\n var ariaLive = selectProps['aria-live'];\n\n // Update aria live message configuration when prop changes\n var messages = useMemo(function () {\n return _objectSpread(_objectSpread({}, defaultAriaLiveMessages), ariaLiveMessages || {});\n }, [ariaLiveMessages]);\n\n // Update aria live selected option when prop changes\n var ariaSelected = useMemo(function () {\n var message = '';\n if (ariaSelection && messages.onChange) {\n var option = ariaSelection.option,\n selectedOptions = ariaSelection.options,\n removedValue = ariaSelection.removedValue,\n removedValues = ariaSelection.removedValues,\n value = ariaSelection.value;\n // select-option when !isMulti does not return option so we assume selected option is value\n var asOption = function asOption(val) {\n return !Array.isArray(val) ? val : null;\n };\n\n // If there is just one item from the action then get its label\n var selected = removedValue || option || asOption(value);\n var label = selected ? getOptionLabel(selected) : '';\n\n // If there are multiple items from the action then return an array of labels\n var multiSelected = selectedOptions || removedValues || undefined;\n var labels = multiSelected ? multiSelected.map(getOptionLabel) : [];\n var onChangeProps = _objectSpread({\n // multiSelected items are usually items that have already been selected\n // or set by the user as a default value so we assume they are not disabled\n isDisabled: selected && isOptionDisabled(selected, selectValue),\n label: label,\n labels: labels\n }, ariaSelection);\n message = messages.onChange(onChangeProps);\n }\n return message;\n }, [ariaSelection, messages, isOptionDisabled, selectValue, getOptionLabel]);\n var ariaFocused = useMemo(function () {\n var focusMsg = '';\n var focused = focusedOption || focusedValue;\n var isSelected = !!(focusedOption && selectValue && selectValue.includes(focusedOption));\n if (focused && messages.onFocus) {\n var onFocusProps = {\n focused: focused,\n label: getOptionLabel(focused),\n isDisabled: isOptionDisabled(focused, selectValue),\n isSelected: isSelected,\n options: focusableOptions,\n context: focused === focusedOption ? 'menu' : 'value',\n selectValue: selectValue,\n isAppleDevice: isAppleDevice\n };\n focusMsg = messages.onFocus(onFocusProps);\n }\n return focusMsg;\n }, [focusedOption, focusedValue, getOptionLabel, isOptionDisabled, messages, focusableOptions, selectValue, isAppleDevice]);\n var ariaResults = useMemo(function () {\n var resultsMsg = '';\n if (menuIsOpen && options.length && !isLoading && messages.onFilter) {\n var resultsMessage = screenReaderStatus({\n count: focusableOptions.length\n });\n resultsMsg = messages.onFilter({\n inputValue: inputValue,\n resultsMessage: resultsMessage\n });\n }\n return resultsMsg;\n }, [focusableOptions, inputValue, menuIsOpen, messages, options, screenReaderStatus, isLoading]);\n var isInitialFocus = (ariaSelection === null || ariaSelection === void 0 ? void 0 : ariaSelection.action) === 'initial-input-focus';\n var ariaGuidance = useMemo(function () {\n var guidanceMsg = '';\n if (messages.guidance) {\n var context = focusedValue ? 'value' : menuIsOpen ? 'menu' : 'input';\n guidanceMsg = messages.guidance({\n 'aria-label': ariaLabel,\n context: context,\n isDisabled: focusedOption && isOptionDisabled(focusedOption, selectValue),\n isMulti: isMulti,\n isSearchable: isSearchable,\n tabSelectsValue: tabSelectsValue,\n isInitialFocus: isInitialFocus\n });\n }\n return guidanceMsg;\n }, [ariaLabel, focusedOption, focusedValue, isMulti, isOptionDisabled, isSearchable, menuIsOpen, messages, selectValue, tabSelectsValue, isInitialFocus]);\n var ScreenReaderText = jsx(Fragment, null, jsx(\"span\", {\n id: \"aria-selection\"\n }, ariaSelected), jsx(\"span\", {\n id: \"aria-focused\"\n }, ariaFocused), jsx(\"span\", {\n id: \"aria-results\"\n }, ariaResults), jsx(\"span\", {\n id: \"aria-guidance\"\n }, ariaGuidance));\n return jsx(Fragment, null, jsx(A11yText$1, {\n id: id\n }, isInitialFocus && ScreenReaderText), jsx(A11yText$1, {\n \"aria-live\": ariaLive,\n \"aria-atomic\": \"false\",\n \"aria-relevant\": \"additions text\",\n role: \"log\"\n }, isFocused && !isInitialFocus && ScreenReaderText));\n};\nvar LiveRegion$1 = LiveRegion;\n\nvar diacritics = [{\n base: 'A',\n letters: \"A\\u24B6\\uFF21\\xC0\\xC1\\xC2\\u1EA6\\u1EA4\\u1EAA\\u1EA8\\xC3\\u0100\\u0102\\u1EB0\\u1EAE\\u1EB4\\u1EB2\\u0226\\u01E0\\xC4\\u01DE\\u1EA2\\xC5\\u01FA\\u01CD\\u0200\\u0202\\u1EA0\\u1EAC\\u1EB6\\u1E00\\u0104\\u023A\\u2C6F\"\n}, {\n base: 'AA',\n letters: \"\\uA732\"\n}, {\n base: 'AE',\n letters: \"\\xC6\\u01FC\\u01E2\"\n}, {\n base: 'AO',\n letters: \"\\uA734\"\n}, {\n base: 'AU',\n letters: \"\\uA736\"\n}, {\n base: 'AV',\n letters: \"\\uA738\\uA73A\"\n}, {\n base: 'AY',\n letters: \"\\uA73C\"\n}, {\n base: 'B',\n letters: \"B\\u24B7\\uFF22\\u1E02\\u1E04\\u1E06\\u0243\\u0182\\u0181\"\n}, {\n base: 'C',\n letters: \"C\\u24B8\\uFF23\\u0106\\u0108\\u010A\\u010C\\xC7\\u1E08\\u0187\\u023B\\uA73E\"\n}, {\n base: 'D',\n letters: \"D\\u24B9\\uFF24\\u1E0A\\u010E\\u1E0C\\u1E10\\u1E12\\u1E0E\\u0110\\u018B\\u018A\\u0189\\uA779\"\n}, {\n base: 'DZ',\n letters: \"\\u01F1\\u01C4\"\n}, {\n base: 'Dz',\n letters: \"\\u01F2\\u01C5\"\n}, {\n base: 'E',\n letters: \"E\\u24BA\\uFF25\\xC8\\xC9\\xCA\\u1EC0\\u1EBE\\u1EC4\\u1EC2\\u1EBC\\u0112\\u1E14\\u1E16\\u0114\\u0116\\xCB\\u1EBA\\u011A\\u0204\\u0206\\u1EB8\\u1EC6\\u0228\\u1E1C\\u0118\\u1E18\\u1E1A\\u0190\\u018E\"\n}, {\n base: 'F',\n letters: \"F\\u24BB\\uFF26\\u1E1E\\u0191\\uA77B\"\n}, {\n base: 'G',\n letters: \"G\\u24BC\\uFF27\\u01F4\\u011C\\u1E20\\u011E\\u0120\\u01E6\\u0122\\u01E4\\u0193\\uA7A0\\uA77D\\uA77E\"\n}, {\n base: 'H',\n letters: \"H\\u24BD\\uFF28\\u0124\\u1E22\\u1E26\\u021E\\u1E24\\u1E28\\u1E2A\\u0126\\u2C67\\u2C75\\uA78D\"\n}, {\n base: 'I',\n letters: \"I\\u24BE\\uFF29\\xCC\\xCD\\xCE\\u0128\\u012A\\u012C\\u0130\\xCF\\u1E2E\\u1EC8\\u01CF\\u0208\\u020A\\u1ECA\\u012E\\u1E2C\\u0197\"\n}, {\n base: 'J',\n letters: \"J\\u24BF\\uFF2A\\u0134\\u0248\"\n}, {\n base: 'K',\n letters: \"K\\u24C0\\uFF2B\\u1E30\\u01E8\\u1E32\\u0136\\u1E34\\u0198\\u2C69\\uA740\\uA742\\uA744\\uA7A2\"\n}, {\n base: 'L',\n letters: \"L\\u24C1\\uFF2C\\u013F\\u0139\\u013D\\u1E36\\u1E38\\u013B\\u1E3C\\u1E3A\\u0141\\u023D\\u2C62\\u2C60\\uA748\\uA746\\uA780\"\n}, {\n base: 'LJ',\n letters: \"\\u01C7\"\n}, {\n base: 'Lj',\n letters: \"\\u01C8\"\n}, {\n base: 'M',\n letters: \"M\\u24C2\\uFF2D\\u1E3E\\u1E40\\u1E42\\u2C6E\\u019C\"\n}, {\n base: 'N',\n letters: \"N\\u24C3\\uFF2E\\u01F8\\u0143\\xD1\\u1E44\\u0147\\u1E46\\u0145\\u1E4A\\u1E48\\u0220\\u019D\\uA790\\uA7A4\"\n}, {\n base: 'NJ',\n letters: \"\\u01CA\"\n}, {\n base: 'Nj',\n letters: \"\\u01CB\"\n}, {\n base: 'O',\n letters: \"O\\u24C4\\uFF2F\\xD2\\xD3\\xD4\\u1ED2\\u1ED0\\u1ED6\\u1ED4\\xD5\\u1E4C\\u022C\\u1E4E\\u014C\\u1E50\\u1E52\\u014E\\u022E\\u0230\\xD6\\u022A\\u1ECE\\u0150\\u01D1\\u020C\\u020E\\u01A0\\u1EDC\\u1EDA\\u1EE0\\u1EDE\\u1EE2\\u1ECC\\u1ED8\\u01EA\\u01EC\\xD8\\u01FE\\u0186\\u019F\\uA74A\\uA74C\"\n}, {\n base: 'OI',\n letters: \"\\u01A2\"\n}, {\n base: 'OO',\n letters: \"\\uA74E\"\n}, {\n base: 'OU',\n letters: \"\\u0222\"\n}, {\n base: 'P',\n letters: \"P\\u24C5\\uFF30\\u1E54\\u1E56\\u01A4\\u2C63\\uA750\\uA752\\uA754\"\n}, {\n base: 'Q',\n letters: \"Q\\u24C6\\uFF31\\uA756\\uA758\\u024A\"\n}, {\n base: 'R',\n letters: \"R\\u24C7\\uFF32\\u0154\\u1E58\\u0158\\u0210\\u0212\\u1E5A\\u1E5C\\u0156\\u1E5E\\u024C\\u2C64\\uA75A\\uA7A6\\uA782\"\n}, {\n base: 'S',\n letters: \"S\\u24C8\\uFF33\\u1E9E\\u015A\\u1E64\\u015C\\u1E60\\u0160\\u1E66\\u1E62\\u1E68\\u0218\\u015E\\u2C7E\\uA7A8\\uA784\"\n}, {\n base: 'T',\n letters: \"T\\u24C9\\uFF34\\u1E6A\\u0164\\u1E6C\\u021A\\u0162\\u1E70\\u1E6E\\u0166\\u01AC\\u01AE\\u023E\\uA786\"\n}, {\n base: 'TZ',\n letters: \"\\uA728\"\n}, {\n base: 'U',\n letters: \"U\\u24CA\\uFF35\\xD9\\xDA\\xDB\\u0168\\u1E78\\u016A\\u1E7A\\u016C\\xDC\\u01DB\\u01D7\\u01D5\\u01D9\\u1EE6\\u016E\\u0170\\u01D3\\u0214\\u0216\\u01AF\\u1EEA\\u1EE8\\u1EEE\\u1EEC\\u1EF0\\u1EE4\\u1E72\\u0172\\u1E76\\u1E74\\u0244\"\n}, {\n base: 'V',\n letters: \"V\\u24CB\\uFF36\\u1E7C\\u1E7E\\u01B2\\uA75E\\u0245\"\n}, {\n base: 'VY',\n letters: \"\\uA760\"\n}, {\n base: 'W',\n letters: \"W\\u24CC\\uFF37\\u1E80\\u1E82\\u0174\\u1E86\\u1E84\\u1E88\\u2C72\"\n}, {\n base: 'X',\n letters: \"X\\u24CD\\uFF38\\u1E8A\\u1E8C\"\n}, {\n base: 'Y',\n letters: \"Y\\u24CE\\uFF39\\u1EF2\\xDD\\u0176\\u1EF8\\u0232\\u1E8E\\u0178\\u1EF6\\u1EF4\\u01B3\\u024E\\u1EFE\"\n}, {\n base: 'Z',\n letters: \"Z\\u24CF\\uFF3A\\u0179\\u1E90\\u017B\\u017D\\u1E92\\u1E94\\u01B5\\u0224\\u2C7F\\u2C6B\\uA762\"\n}, {\n base: 'a',\n letters: \"a\\u24D0\\uFF41\\u1E9A\\xE0\\xE1\\xE2\\u1EA7\\u1EA5\\u1EAB\\u1EA9\\xE3\\u0101\\u0103\\u1EB1\\u1EAF\\u1EB5\\u1EB3\\u0227\\u01E1\\xE4\\u01DF\\u1EA3\\xE5\\u01FB\\u01CE\\u0201\\u0203\\u1EA1\\u1EAD\\u1EB7\\u1E01\\u0105\\u2C65\\u0250\"\n}, {\n base: 'aa',\n letters: \"\\uA733\"\n}, {\n base: 'ae',\n letters: \"\\xE6\\u01FD\\u01E3\"\n}, {\n base: 'ao',\n letters: \"\\uA735\"\n}, {\n base: 'au',\n letters: \"\\uA737\"\n}, {\n base: 'av',\n letters: \"\\uA739\\uA73B\"\n}, {\n base: 'ay',\n letters: \"\\uA73D\"\n}, {\n base: 'b',\n letters: \"b\\u24D1\\uFF42\\u1E03\\u1E05\\u1E07\\u0180\\u0183\\u0253\"\n}, {\n base: 'c',\n letters: \"c\\u24D2\\uFF43\\u0107\\u0109\\u010B\\u010D\\xE7\\u1E09\\u0188\\u023C\\uA73F\\u2184\"\n}, {\n base: 'd',\n letters: \"d\\u24D3\\uFF44\\u1E0B\\u010F\\u1E0D\\u1E11\\u1E13\\u1E0F\\u0111\\u018C\\u0256\\u0257\\uA77A\"\n}, {\n base: 'dz',\n letters: \"\\u01F3\\u01C6\"\n}, {\n base: 'e',\n letters: \"e\\u24D4\\uFF45\\xE8\\xE9\\xEA\\u1EC1\\u1EBF\\u1EC5\\u1EC3\\u1EBD\\u0113\\u1E15\\u1E17\\u0115\\u0117\\xEB\\u1EBB\\u011B\\u0205\\u0207\\u1EB9\\u1EC7\\u0229\\u1E1D\\u0119\\u1E19\\u1E1B\\u0247\\u025B\\u01DD\"\n}, {\n base: 'f',\n letters: \"f\\u24D5\\uFF46\\u1E1F\\u0192\\uA77C\"\n}, {\n base: 'g',\n letters: \"g\\u24D6\\uFF47\\u01F5\\u011D\\u1E21\\u011F\\u0121\\u01E7\\u0123\\u01E5\\u0260\\uA7A1\\u1D79\\uA77F\"\n}, {\n base: 'h',\n letters: \"h\\u24D7\\uFF48\\u0125\\u1E23\\u1E27\\u021F\\u1E25\\u1E29\\u1E2B\\u1E96\\u0127\\u2C68\\u2C76\\u0265\"\n}, {\n base: 'hv',\n letters: \"\\u0195\"\n}, {\n base: 'i',\n letters: \"i\\u24D8\\uFF49\\xEC\\xED\\xEE\\u0129\\u012B\\u012D\\xEF\\u1E2F\\u1EC9\\u01D0\\u0209\\u020B\\u1ECB\\u012F\\u1E2D\\u0268\\u0131\"\n}, {\n base: 'j',\n letters: \"j\\u24D9\\uFF4A\\u0135\\u01F0\\u0249\"\n}, {\n base: 'k',\n letters: \"k\\u24DA\\uFF4B\\u1E31\\u01E9\\u1E33\\u0137\\u1E35\\u0199\\u2C6A\\uA741\\uA743\\uA745\\uA7A3\"\n}, {\n base: 'l',\n letters: \"l\\u24DB\\uFF4C\\u0140\\u013A\\u013E\\u1E37\\u1E39\\u013C\\u1E3D\\u1E3B\\u017F\\u0142\\u019A\\u026B\\u2C61\\uA749\\uA781\\uA747\"\n}, {\n base: 'lj',\n letters: \"\\u01C9\"\n}, {\n base: 'm',\n letters: \"m\\u24DC\\uFF4D\\u1E3F\\u1E41\\u1E43\\u0271\\u026F\"\n}, {\n base: 'n',\n letters: \"n\\u24DD\\uFF4E\\u01F9\\u0144\\xF1\\u1E45\\u0148\\u1E47\\u0146\\u1E4B\\u1E49\\u019E\\u0272\\u0149\\uA791\\uA7A5\"\n}, {\n base: 'nj',\n letters: \"\\u01CC\"\n}, {\n base: 'o',\n letters: \"o\\u24DE\\uFF4F\\xF2\\xF3\\xF4\\u1ED3\\u1ED1\\u1ED7\\u1ED5\\xF5\\u1E4D\\u022D\\u1E4F\\u014D\\u1E51\\u1E53\\u014F\\u022F\\u0231\\xF6\\u022B\\u1ECF\\u0151\\u01D2\\u020D\\u020F\\u01A1\\u1EDD\\u1EDB\\u1EE1\\u1EDF\\u1EE3\\u1ECD\\u1ED9\\u01EB\\u01ED\\xF8\\u01FF\\u0254\\uA74B\\uA74D\\u0275\"\n}, {\n base: 'oi',\n letters: \"\\u01A3\"\n}, {\n base: 'ou',\n letters: \"\\u0223\"\n}, {\n base: 'oo',\n letters: \"\\uA74F\"\n}, {\n base: 'p',\n letters: \"p\\u24DF\\uFF50\\u1E55\\u1E57\\u01A5\\u1D7D\\uA751\\uA753\\uA755\"\n}, {\n base: 'q',\n letters: \"q\\u24E0\\uFF51\\u024B\\uA757\\uA759\"\n}, {\n base: 'r',\n letters: \"r\\u24E1\\uFF52\\u0155\\u1E59\\u0159\\u0211\\u0213\\u1E5B\\u1E5D\\u0157\\u1E5F\\u024D\\u027D\\uA75B\\uA7A7\\uA783\"\n}, {\n base: 's',\n letters: \"s\\u24E2\\uFF53\\xDF\\u015B\\u1E65\\u015D\\u1E61\\u0161\\u1E67\\u1E63\\u1E69\\u0219\\u015F\\u023F\\uA7A9\\uA785\\u1E9B\"\n}, {\n base: 't',\n letters: \"t\\u24E3\\uFF54\\u1E6B\\u1E97\\u0165\\u1E6D\\u021B\\u0163\\u1E71\\u1E6F\\u0167\\u01AD\\u0288\\u2C66\\uA787\"\n}, {\n base: 'tz',\n letters: \"\\uA729\"\n}, {\n base: 'u',\n letters: \"u\\u24E4\\uFF55\\xF9\\xFA\\xFB\\u0169\\u1E79\\u016B\\u1E7B\\u016D\\xFC\\u01DC\\u01D8\\u01D6\\u01DA\\u1EE7\\u016F\\u0171\\u01D4\\u0215\\u0217\\u01B0\\u1EEB\\u1EE9\\u1EEF\\u1EED\\u1EF1\\u1EE5\\u1E73\\u0173\\u1E77\\u1E75\\u0289\"\n}, {\n base: 'v',\n letters: \"v\\u24E5\\uFF56\\u1E7D\\u1E7F\\u028B\\uA75F\\u028C\"\n}, {\n base: 'vy',\n letters: \"\\uA761\"\n}, {\n base: 'w',\n letters: \"w\\u24E6\\uFF57\\u1E81\\u1E83\\u0175\\u1E87\\u1E85\\u1E98\\u1E89\\u2C73\"\n}, {\n base: 'x',\n letters: \"x\\u24E7\\uFF58\\u1E8B\\u1E8D\"\n}, {\n base: 'y',\n letters: \"y\\u24E8\\uFF59\\u1EF3\\xFD\\u0177\\u1EF9\\u0233\\u1E8F\\xFF\\u1EF7\\u1E99\\u1EF5\\u01B4\\u024F\\u1EFF\"\n}, {\n base: 'z',\n letters: \"z\\u24E9\\uFF5A\\u017A\\u1E91\\u017C\\u017E\\u1E93\\u1E95\\u01B6\\u0225\\u0240\\u2C6C\\uA763\"\n}];\nvar anyDiacritic = new RegExp('[' + diacritics.map(function (d) {\n return d.letters;\n}).join('') + ']', 'g');\nvar diacriticToBase = {};\nfor (var i = 0; i < diacritics.length; i++) {\n var diacritic = diacritics[i];\n for (var j = 0; j < diacritic.letters.length; j++) {\n diacriticToBase[diacritic.letters[j]] = diacritic.base;\n }\n}\nvar stripDiacritics = function stripDiacritics(str) {\n return str.replace(anyDiacritic, function (match) {\n return diacriticToBase[match];\n });\n};\n\nvar memoizedStripDiacriticsForInput = memoizeOne(stripDiacritics);\nvar trimString = function trimString(str) {\n return str.replace(/^\\s+|\\s+$/g, '');\n};\nvar defaultStringify = function defaultStringify(option) {\n return \"\".concat(option.label, \" \").concat(option.value);\n};\nvar createFilter = function createFilter(config) {\n return function (option, rawInput) {\n // eslint-disable-next-line no-underscore-dangle\n if (option.data.__isNew__) return true;\n var _ignoreCase$ignoreAcc = _objectSpread({\n ignoreCase: true,\n ignoreAccents: true,\n stringify: defaultStringify,\n trim: true,\n matchFrom: 'any'\n }, config),\n ignoreCase = _ignoreCase$ignoreAcc.ignoreCase,\n ignoreAccents = _ignoreCase$ignoreAcc.ignoreAccents,\n stringify = _ignoreCase$ignoreAcc.stringify,\n trim = _ignoreCase$ignoreAcc.trim,\n matchFrom = _ignoreCase$ignoreAcc.matchFrom;\n var input = trim ? trimString(rawInput) : rawInput;\n var candidate = trim ? trimString(stringify(option)) : stringify(option);\n if (ignoreCase) {\n input = input.toLowerCase();\n candidate = candidate.toLowerCase();\n }\n if (ignoreAccents) {\n input = memoizedStripDiacriticsForInput(input);\n candidate = stripDiacritics(candidate);\n }\n return matchFrom === 'start' ? candidate.substr(0, input.length) === input : candidate.indexOf(input) > -1;\n };\n};\n\nvar _excluded = [\"innerRef\"];\nfunction DummyInput(_ref) {\n var innerRef = _ref.innerRef,\n props = _objectWithoutProperties(_ref, _excluded);\n // Remove animation props not meant for HTML elements\n var filteredProps = removeProps(props, 'onExited', 'in', 'enter', 'exit', 'appear');\n return jsx(\"input\", _extends({\n ref: innerRef\n }, filteredProps, {\n css: /*#__PURE__*/css({\n label: 'dummyInput',\n // get rid of any default styles\n background: 0,\n border: 0,\n // important! this hides the flashing cursor\n caretColor: 'transparent',\n fontSize: 'inherit',\n gridArea: '1 / 1 / 2 / 3',\n outline: 0,\n padding: 0,\n // important! without `width` browsers won't allow focus\n width: 1,\n // remove cursor on desktop\n color: 'transparent',\n // remove cursor on mobile whilst maintaining \"scroll into view\" behaviour\n left: -100,\n opacity: 0,\n position: 'relative',\n transform: 'scale(.01)'\n }, process.env.NODE_ENV === \"production\" ? \"\" : \";label:DummyInput;\", process.env.NODE_ENV === \"production\" ? \"\" : \"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkR1bW15SW5wdXQudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQXlCTSIsImZpbGUiOiJEdW1teUlucHV0LnRzeCIsInNvdXJjZXNDb250ZW50IjpbIi8qKiBAanN4IGpzeCAqL1xuaW1wb3J0IHsgSlNYLCBSZWYgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBqc3ggfSBmcm9tICdAZW1vdGlvbi9yZWFjdCc7XG5pbXBvcnQgeyByZW1vdmVQcm9wcyB9IGZyb20gJy4uL3V0aWxzJztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gRHVtbXlJbnB1dCh7XG4gIGlubmVyUmVmLFxuICAuLi5wcm9wc1xufTogSlNYLkludHJpbnNpY0VsZW1lbnRzWydpbnB1dCddICYge1xuICByZWFkb25seSBpbm5lclJlZjogUmVmPEhUTUxJbnB1dEVsZW1lbnQ+O1xufSkge1xuICAvLyBSZW1vdmUgYW5pbWF0aW9uIHByb3BzIG5vdCBtZWFudCBmb3IgSFRNTCBlbGVtZW50c1xuICBjb25zdCBmaWx0ZXJlZFByb3BzID0gcmVtb3ZlUHJvcHMoXG4gICAgcHJvcHMsXG4gICAgJ29uRXhpdGVkJyxcbiAgICAnaW4nLFxuICAgICdlbnRlcicsXG4gICAgJ2V4aXQnLFxuICAgICdhcHBlYXInXG4gICk7XG5cbiAgcmV0dXJuIChcbiAgICA8aW5wdXRcbiAgICAgIHJlZj17aW5uZXJSZWZ9XG4gICAgICB7Li4uZmlsdGVyZWRQcm9wc31cbiAgICAgIGNzcz17e1xuICAgICAgICBsYWJlbDogJ2R1bW15SW5wdXQnLFxuICAgICAgICAvLyBnZXQgcmlkIG9mIGFueSBkZWZhdWx0IHN0eWxlc1xuICAgICAgICBiYWNrZ3JvdW5kOiAwLFxuICAgICAgICBib3JkZXI6IDAsXG4gICAgICAgIC8vIGltcG9ydGFudCEgdGhpcyBoaWRlcyB0aGUgZmxhc2hpbmcgY3Vyc29yXG4gICAgICAgIGNhcmV0Q29sb3I6ICd0cmFuc3BhcmVudCcsXG4gICAgICAgIGZvbnRTaXplOiAnaW5oZXJpdCcsXG4gICAgICAgIGdyaWRBcmVhOiAnMSAvIDEgLyAyIC8gMycsXG4gICAgICAgIG91dGxpbmU6IDAsXG4gICAgICAgIHBhZGRpbmc6IDAsXG4gICAgICAgIC8vIGltcG9ydGFudCEgd2l0aG91dCBgd2lkdGhgIGJyb3dzZXJzIHdvbid0IGFsbG93IGZvY3VzXG4gICAgICAgIHdpZHRoOiAxLFxuXG4gICAgICAgIC8vIHJlbW92ZSBjdXJzb3Igb24gZGVza3RvcFxuICAgICAgICBjb2xvcjogJ3RyYW5zcGFyZW50JyxcblxuICAgICAgICAvLyByZW1vdmUgY3Vyc29yIG9uIG1vYmlsZSB3aGlsc3QgbWFpbnRhaW5pbmcgXCJzY3JvbGwgaW50byB2aWV3XCIgYmVoYXZpb3VyXG4gICAgICAgIGxlZnQ6IC0xMDAsXG4gICAgICAgIG9wYWNpdHk6IDAsXG4gICAgICAgIHBvc2l0aW9uOiAncmVsYXRpdmUnLFxuICAgICAgICB0cmFuc2Zvcm06ICdzY2FsZSguMDEpJyxcbiAgICAgIH19XG4gICAgLz5cbiAgKTtcbn1cbiJdfQ== */\")\n }));\n}\n\nvar cancelScroll = function cancelScroll(event) {\n if (event.cancelable) event.preventDefault();\n event.stopPropagation();\n};\nfunction useScrollCapture(_ref) {\n var isEnabled = _ref.isEnabled,\n onBottomArrive = _ref.onBottomArrive,\n onBottomLeave = _ref.onBottomLeave,\n onTopArrive = _ref.onTopArrive,\n onTopLeave = _ref.onTopLeave;\n var isBottom = useRef(false);\n var isTop = useRef(false);\n var touchStart = useRef(0);\n var scrollTarget = useRef(null);\n var handleEventDelta = useCallback(function (event, delta) {\n if (scrollTarget.current === null) return;\n var _scrollTarget$current = scrollTarget.current,\n scrollTop = _scrollTarget$current.scrollTop,\n scrollHeight = _scrollTarget$current.scrollHeight,\n clientHeight = _scrollTarget$current.clientHeight;\n var target = scrollTarget.current;\n var isDeltaPositive = delta > 0;\n var availableScroll = scrollHeight - clientHeight - scrollTop;\n var shouldCancelScroll = false;\n\n // reset bottom/top flags\n if (availableScroll > delta && isBottom.current) {\n if (onBottomLeave) onBottomLeave(event);\n isBottom.current = false;\n }\n if (isDeltaPositive && isTop.current) {\n if (onTopLeave) onTopLeave(event);\n isTop.current = false;\n }\n\n // bottom limit\n if (isDeltaPositive && delta > availableScroll) {\n if (onBottomArrive && !isBottom.current) {\n onBottomArrive(event);\n }\n target.scrollTop = scrollHeight;\n shouldCancelScroll = true;\n isBottom.current = true;\n\n // top limit\n } else if (!isDeltaPositive && -delta > scrollTop) {\n if (onTopArrive && !isTop.current) {\n onTopArrive(event);\n }\n target.scrollTop = 0;\n shouldCancelScroll = true;\n isTop.current = true;\n }\n\n // cancel scroll\n if (shouldCancelScroll) {\n cancelScroll(event);\n }\n }, [onBottomArrive, onBottomLeave, onTopArrive, onTopLeave]);\n var onWheel = useCallback(function (event) {\n handleEventDelta(event, event.deltaY);\n }, [handleEventDelta]);\n var onTouchStart = useCallback(function (event) {\n // set touch start so we can calculate touchmove delta\n touchStart.current = event.changedTouches[0].clientY;\n }, []);\n var onTouchMove = useCallback(function (event) {\n var deltaY = touchStart.current - event.changedTouches[0].clientY;\n handleEventDelta(event, deltaY);\n }, [handleEventDelta]);\n var startListening = useCallback(function (el) {\n // bail early if no element is available to attach to\n if (!el) return;\n var notPassive = supportsPassiveEvents ? {\n passive: false\n } : false;\n el.addEventListener('wheel', onWheel, notPassive);\n el.addEventListener('touchstart', onTouchStart, notPassive);\n el.addEventListener('touchmove', onTouchMove, notPassive);\n }, [onTouchMove, onTouchStart, onWheel]);\n var stopListening = useCallback(function (el) {\n // bail early if no element is available to detach from\n if (!el) return;\n el.removeEventListener('wheel', onWheel, false);\n el.removeEventListener('touchstart', onTouchStart, false);\n el.removeEventListener('touchmove', onTouchMove, false);\n }, [onTouchMove, onTouchStart, onWheel]);\n useEffect(function () {\n if (!isEnabled) return;\n var element = scrollTarget.current;\n startListening(element);\n return function () {\n stopListening(element);\n };\n }, [isEnabled, startListening, stopListening]);\n return function (element) {\n scrollTarget.current = element;\n };\n}\n\nvar STYLE_KEYS = ['boxSizing', 'height', 'overflow', 'paddingRight', 'position'];\nvar LOCK_STYLES = {\n boxSizing: 'border-box',\n // account for possible declaration `width: 100%;` on body\n overflow: 'hidden',\n position: 'relative',\n height: '100%'\n};\nfunction preventTouchMove(e) {\n if (e.cancelable) e.preventDefault();\n}\nfunction allowTouchMove(e) {\n e.stopPropagation();\n}\nfunction preventInertiaScroll() {\n var top = this.scrollTop;\n var totalScroll = this.scrollHeight;\n var currentScroll = top + this.offsetHeight;\n if (top === 0) {\n this.scrollTop = 1;\n } else if (currentScroll === totalScroll) {\n this.scrollTop = top - 1;\n }\n}\n\n// `ontouchstart` check works on most browsers\n// `maxTouchPoints` works on IE10/11 and Surface\nfunction isTouchDevice() {\n return 'ontouchstart' in window || navigator.maxTouchPoints;\n}\nvar canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\nvar activeScrollLocks = 0;\nvar listenerOptions = {\n capture: false,\n passive: false\n};\nfunction useScrollLock(_ref) {\n var isEnabled = _ref.isEnabled,\n _ref$accountForScroll = _ref.accountForScrollbars,\n accountForScrollbars = _ref$accountForScroll === void 0 ? true : _ref$accountForScroll;\n var originalStyles = useRef({});\n var scrollTarget = useRef(null);\n var addScrollLock = useCallback(function (touchScrollTarget) {\n if (!canUseDOM) return;\n var target = document.body;\n var targetStyle = target && target.style;\n if (accountForScrollbars) {\n // store any styles already applied to the body\n STYLE_KEYS.forEach(function (key) {\n var val = targetStyle && targetStyle[key];\n originalStyles.current[key] = val;\n });\n }\n\n // apply the lock styles and padding if this is the first scroll lock\n if (accountForScrollbars && activeScrollLocks < 1) {\n var currentPadding = parseInt(originalStyles.current.paddingRight, 10) || 0;\n var clientWidth = document.body ? document.body.clientWidth : 0;\n var adjustedPadding = window.innerWidth - clientWidth + currentPadding || 0;\n Object.keys(LOCK_STYLES).forEach(function (key) {\n var val = LOCK_STYLES[key];\n if (targetStyle) {\n targetStyle[key] = val;\n }\n });\n if (targetStyle) {\n targetStyle.paddingRight = \"\".concat(adjustedPadding, \"px\");\n }\n }\n\n // account for touch devices\n if (target && isTouchDevice()) {\n // Mobile Safari ignores { overflow: hidden } declaration on the body.\n target.addEventListener('touchmove', preventTouchMove, listenerOptions);\n\n // Allow scroll on provided target\n if (touchScrollTarget) {\n touchScrollTarget.addEventListener('touchstart', preventInertiaScroll, listenerOptions);\n touchScrollTarget.addEventListener('touchmove', allowTouchMove, listenerOptions);\n }\n }\n\n // increment active scroll locks\n activeScrollLocks += 1;\n }, [accountForScrollbars]);\n var removeScrollLock = useCallback(function (touchScrollTarget) {\n if (!canUseDOM) return;\n var target = document.body;\n var targetStyle = target && target.style;\n\n // safely decrement active scroll locks\n activeScrollLocks = Math.max(activeScrollLocks - 1, 0);\n\n // reapply original body styles, if any\n if (accountForScrollbars && activeScrollLocks < 1) {\n STYLE_KEYS.forEach(function (key) {\n var val = originalStyles.current[key];\n if (targetStyle) {\n targetStyle[key] = val;\n }\n });\n }\n\n // remove touch listeners\n if (target && isTouchDevice()) {\n target.removeEventListener('touchmove', preventTouchMove, listenerOptions);\n if (touchScrollTarget) {\n touchScrollTarget.removeEventListener('touchstart', preventInertiaScroll, listenerOptions);\n touchScrollTarget.removeEventListener('touchmove', allowTouchMove, listenerOptions);\n }\n }\n }, [accountForScrollbars]);\n useEffect(function () {\n if (!isEnabled) return;\n var element = scrollTarget.current;\n addScrollLock(element);\n return function () {\n removeScrollLock(element);\n };\n }, [isEnabled, addScrollLock, removeScrollLock]);\n return function (element) {\n scrollTarget.current = element;\n };\n}\n\nfunction _EMOTION_STRINGIFIED_CSS_ERROR__$1() { return \"You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop).\"; }\nvar blurSelectInput = function blurSelectInput(event) {\n var element = event.target;\n return element.ownerDocument.activeElement && element.ownerDocument.activeElement.blur();\n};\nvar _ref2$1 = process.env.NODE_ENV === \"production\" ? {\n name: \"1kfdb0e\",\n styles: \"position:fixed;left:0;bottom:0;right:0;top:0\"\n} : {\n name: \"bp8cua-ScrollManager\",\n styles: \"position:fixed;left:0;bottom:0;right:0;top:0;label:ScrollManager;\",\n map: \"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlNjcm9sbE1hbmFnZXIudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQW9EVSIsImZpbGUiOiJTY3JvbGxNYW5hZ2VyLnRzeCIsInNvdXJjZXNDb250ZW50IjpbIi8qKiBAanN4IGpzeCAqL1xuaW1wb3J0IHsganN4IH0gZnJvbSAnQGVtb3Rpb24vcmVhY3QnO1xuaW1wb3J0IHsgRnJhZ21lbnQsIFJlYWN0RWxlbWVudCwgUmVmQ2FsbGJhY2ssIE1vdXNlRXZlbnQgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgdXNlU2Nyb2xsQ2FwdHVyZSBmcm9tICcuL3VzZVNjcm9sbENhcHR1cmUnO1xuaW1wb3J0IHVzZVNjcm9sbExvY2sgZnJvbSAnLi91c2VTY3JvbGxMb2NrJztcblxuaW50ZXJmYWNlIFByb3BzIHtcbiAgcmVhZG9ubHkgY2hpbGRyZW46IChyZWY6IFJlZkNhbGxiYWNrPEhUTUxFbGVtZW50PikgPT4gUmVhY3RFbGVtZW50O1xuICByZWFkb25seSBsb2NrRW5hYmxlZDogYm9vbGVhbjtcbiAgcmVhZG9ubHkgY2FwdHVyZUVuYWJsZWQ6IGJvb2xlYW47XG4gIHJlYWRvbmx5IG9uQm90dG9tQXJyaXZlPzogKGV2ZW50OiBXaGVlbEV2ZW50IHwgVG91Y2hFdmVudCkgPT4gdm9pZDtcbiAgcmVhZG9ubHkgb25Cb3R0b21MZWF2ZT86IChldmVudDogV2hlZWxFdmVudCB8IFRvdWNoRXZlbnQpID0+IHZvaWQ7XG4gIHJlYWRvbmx5IG9uVG9wQXJyaXZlPzogKGV2ZW50OiBXaGVlbEV2ZW50IHwgVG91Y2hFdmVudCkgPT4gdm9pZDtcbiAgcmVhZG9ubHkgb25Ub3BMZWF2ZT86IChldmVudDogV2hlZWxFdmVudCB8IFRvdWNoRXZlbnQpID0+IHZvaWQ7XG59XG5cbmNvbnN0IGJsdXJTZWxlY3RJbnB1dCA9IChldmVudDogTW91c2VFdmVudDxIVE1MRGl2RWxlbWVudD4pID0+IHtcbiAgY29uc3QgZWxlbWVudCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MRGl2RWxlbWVudDtcbiAgcmV0dXJuIChcbiAgICBlbGVtZW50Lm93bmVyRG9jdW1lbnQuYWN0aXZlRWxlbWVudCAmJlxuICAgIChlbGVtZW50Lm93bmVyRG9jdW1lbnQuYWN0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudCkuYmx1cigpXG4gICk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBTY3JvbGxNYW5hZ2VyKHtcbiAgY2hpbGRyZW4sXG4gIGxvY2tFbmFibGVkLFxuICBjYXB0dXJlRW5hYmxlZCA9IHRydWUsXG4gIG9uQm90dG9tQXJyaXZlLFxuICBvbkJvdHRvbUxlYXZlLFxuICBvblRvcEFycml2ZSxcbiAgb25Ub3BMZWF2ZSxcbn06IFByb3BzKSB7XG4gIGNvbnN0IHNldFNjcm9sbENhcHR1cmVUYXJnZXQgPSB1c2VTY3JvbGxDYXB0dXJlKHtcbiAgICBpc0VuYWJsZWQ6IGNhcHR1cmVFbmFibGVkLFxuICAgIG9uQm90dG9tQXJyaXZlLFxuICAgIG9uQm90dG9tTGVhdmUsXG4gICAgb25Ub3BBcnJpdmUsXG4gICAgb25Ub3BMZWF2ZSxcbiAgfSk7XG4gIGNvbnN0IHNldFNjcm9sbExvY2tUYXJnZXQgPSB1c2VTY3JvbGxMb2NrKHsgaXNFbmFibGVkOiBsb2NrRW5hYmxlZCB9KTtcblxuICBjb25zdCB0YXJnZXRSZWY6IFJlZkNhbGxiYWNrPEhUTUxFbGVtZW50PiA9IChlbGVtZW50KSA9PiB7XG4gICAgc2V0U2Nyb2xsQ2FwdHVyZVRhcmdldChlbGVtZW50KTtcbiAgICBzZXRTY3JvbGxMb2NrVGFyZ2V0KGVsZW1lbnQpO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPEZyYWdtZW50PlxuICAgICAge2xvY2tFbmFibGVkICYmIChcbiAgICAgICAgPGRpdlxuICAgICAgICAgIG9uQ2xpY2s9e2JsdXJTZWxlY3RJbnB1dH1cbiAgICAgICAgICBjc3M9e3sgcG9zaXRpb246ICdmaXhlZCcsIGxlZnQ6IDAsIGJvdHRvbTogMCwgcmlnaHQ6IDAsIHRvcDogMCB9fVxuICAgICAgICAvPlxuICAgICAgKX1cbiAgICAgIHtjaGlsZHJlbih0YXJnZXRSZWYpfVxuICAgIDwvRnJhZ21lbnQ+XG4gICk7XG59XG4iXX0= */\",\n toString: _EMOTION_STRINGIFIED_CSS_ERROR__$1\n};\nfunction ScrollManager(_ref) {\n var children = _ref.children,\n lockEnabled = _ref.lockEnabled,\n _ref$captureEnabled = _ref.captureEnabled,\n captureEnabled = _ref$captureEnabled === void 0 ? true : _ref$captureEnabled,\n onBottomArrive = _ref.onBottomArrive,\n onBottomLeave = _ref.onBottomLeave,\n onTopArrive = _ref.onTopArrive,\n onTopLeave = _ref.onTopLeave;\n var setScrollCaptureTarget = useScrollCapture({\n isEnabled: captureEnabled,\n onBottomArrive: onBottomArrive,\n onBottomLeave: onBottomLeave,\n onTopArrive: onTopArrive,\n onTopLeave: onTopLeave\n });\n var setScrollLockTarget = useScrollLock({\n isEnabled: lockEnabled\n });\n var targetRef = function targetRef(element) {\n setScrollCaptureTarget(element);\n setScrollLockTarget(element);\n };\n return jsx(Fragment, null, lockEnabled && jsx(\"div\", {\n onClick: blurSelectInput,\n css: _ref2$1\n }), children(targetRef));\n}\n\nfunction _EMOTION_STRINGIFIED_CSS_ERROR__() { return \"You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop).\"; }\nvar _ref2 = process.env.NODE_ENV === \"production\" ? {\n name: \"1a0ro4n-requiredInput\",\n styles: \"label:requiredInput;opacity:0;pointer-events:none;position:absolute;bottom:0;left:0;right:0;width:100%\"\n} : {\n name: \"5kkxb2-requiredInput-RequiredInput\",\n styles: \"label:requiredInput;opacity:0;pointer-events:none;position:absolute;bottom:0;left:0;right:0;width:100%;label:RequiredInput;\",\n map: \"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlJlcXVpcmVkSW5wdXQudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWNJIiwiZmlsZSI6IlJlcXVpcmVkSW5wdXQudHN4Iiwic291cmNlc0NvbnRlbnQiOlsiLyoqIEBqc3gganN4ICovXG5pbXBvcnQgeyBGb2N1c0V2ZW50SGFuZGxlciwgRnVuY3Rpb25Db21wb25lbnQgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBqc3ggfSBmcm9tICdAZW1vdGlvbi9yZWFjdCc7XG5cbmNvbnN0IFJlcXVpcmVkSW5wdXQ6IEZ1bmN0aW9uQ29tcG9uZW50PHtcbiAgcmVhZG9ubHkgbmFtZT86IHN0cmluZztcbiAgcmVhZG9ubHkgb25Gb2N1czogRm9jdXNFdmVudEhhbmRsZXI8SFRNTElucHV0RWxlbWVudD47XG59PiA9ICh7IG5hbWUsIG9uRm9jdXMgfSkgPT4gKFxuICA8aW5wdXRcbiAgICByZXF1aXJlZFxuICAgIG5hbWU9e25hbWV9XG4gICAgdGFiSW5kZXg9ey0xfVxuICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgb25Gb2N1cz17b25Gb2N1c31cbiAgICBjc3M9e3tcbiAgICAgIGxhYmVsOiAncmVxdWlyZWRJbnB1dCcsXG4gICAgICBvcGFjaXR5OiAwLFxuICAgICAgcG9pbnRlckV2ZW50czogJ25vbmUnLFxuICAgICAgcG9zaXRpb246ICdhYnNvbHV0ZScsXG4gICAgICBib3R0b206IDAsXG4gICAgICBsZWZ0OiAwLFxuICAgICAgcmlnaHQ6IDAsXG4gICAgICB3aWR0aDogJzEwMCUnLFxuICAgIH19XG4gICAgLy8gUHJldmVudCBgU3dpdGNoaW5nIGZyb20gdW5jb250cm9sbGVkIHRvIGNvbnRyb2xsZWRgIGVycm9yXG4gICAgdmFsdWU9XCJcIlxuICAgIG9uQ2hhbmdlPXsoKSA9PiB7fX1cbiAgLz5cbik7XG5cbmV4cG9ydCBkZWZhdWx0IFJlcXVpcmVkSW5wdXQ7XG4iXX0= */\",\n toString: _EMOTION_STRINGIFIED_CSS_ERROR__\n};\nvar RequiredInput = function RequiredInput(_ref) {\n var name = _ref.name,\n onFocus = _ref.onFocus;\n return jsx(\"input\", {\n required: true,\n name: name,\n tabIndex: -1,\n \"aria-hidden\": \"true\",\n onFocus: onFocus,\n css: _ref2\n // Prevent `Switching from uncontrolled to controlled` error\n ,\n value: \"\",\n onChange: function onChange() {}\n });\n};\nvar RequiredInput$1 = RequiredInput;\n\n/// <reference types=\"user-agent-data-types\" />\n\nfunction testPlatform(re) {\n var _window$navigator$use;\n return typeof window !== 'undefined' && window.navigator != null ? re.test(((_window$navigator$use = window.navigator['userAgentData']) === null || _window$navigator$use === void 0 ? void 0 : _window$navigator$use.platform) || window.navigator.platform) : false;\n}\nfunction isIPhone() {\n return testPlatform(/^iPhone/i);\n}\nfunction isMac() {\n return testPlatform(/^Mac/i);\n}\nfunction isIPad() {\n return testPlatform(/^iPad/i) ||\n // iPadOS 13 lies and says it's a Mac, but we can distinguish by detecting touch support.\n isMac() && navigator.maxTouchPoints > 1;\n}\nfunction isIOS() {\n return isIPhone() || isIPad();\n}\nfunction isAppleDevice() {\n return isMac() || isIOS();\n}\n\nvar formatGroupLabel = function formatGroupLabel(group) {\n return group.label;\n};\nvar getOptionLabel$1 = function getOptionLabel(option) {\n return option.label;\n};\nvar getOptionValue$1 = function getOptionValue(option) {\n return option.value;\n};\nvar isOptionDisabled = function isOptionDisabled(option) {\n return !!option.isDisabled;\n};\n\nvar defaultStyles = {\n clearIndicator: clearIndicatorCSS,\n container: containerCSS,\n control: css$1,\n dropdownIndicator: dropdownIndicatorCSS,\n group: groupCSS,\n groupHeading: groupHeadingCSS,\n indicatorsContainer: indicatorsContainerCSS,\n indicatorSeparator: indicatorSeparatorCSS,\n input: inputCSS,\n loadingIndicator: loadingIndicatorCSS,\n loadingMessage: loadingMessageCSS,\n menu: menuCSS,\n menuList: menuListCSS,\n menuPortal: menuPortalCSS,\n multiValue: multiValueCSS,\n multiValueLabel: multiValueLabelCSS,\n multiValueRemove: multiValueRemoveCSS,\n noOptionsMessage: noOptionsMessageCSS,\n option: optionCSS,\n placeholder: placeholderCSS,\n singleValue: css$2,\n valueContainer: valueContainerCSS\n};\n// Merge Utility\n// Allows consumers to extend a base Select with additional styles\n\nfunction mergeStyles(source) {\n var target = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n // initialize with source styles\n var styles = _objectSpread({}, source);\n\n // massage in target styles\n Object.keys(target).forEach(function (keyAsString) {\n var key = keyAsString;\n if (source[key]) {\n styles[key] = function (rsCss, props) {\n return target[key](source[key](rsCss, props), props);\n };\n } else {\n styles[key] = target[key];\n }\n });\n return styles;\n}\n\nvar colors = {\n primary: '#2684FF',\n primary75: '#4C9AFF',\n primary50: '#B2D4FF',\n primary25: '#DEEBFF',\n danger: '#DE350B',\n dangerLight: '#FFBDAD',\n neutral0: 'hsl(0, 0%, 100%)',\n neutral5: 'hsl(0, 0%, 95%)',\n neutral10: 'hsl(0, 0%, 90%)',\n neutral20: 'hsl(0, 0%, 80%)',\n neutral30: 'hsl(0, 0%, 70%)',\n neutral40: 'hsl(0, 0%, 60%)',\n neutral50: 'hsl(0, 0%, 50%)',\n neutral60: 'hsl(0, 0%, 40%)',\n neutral70: 'hsl(0, 0%, 30%)',\n neutral80: 'hsl(0, 0%, 20%)',\n neutral90: 'hsl(0, 0%, 10%)'\n};\nvar borderRadius = 4;\n// Used to calculate consistent margin/padding on elements\nvar baseUnit = 4;\n// The minimum height of the control\nvar controlHeight = 38;\n// The amount of space between the control and menu */\nvar menuGutter = baseUnit * 2;\nvar spacing = {\n baseUnit: baseUnit,\n controlHeight: controlHeight,\n menuGutter: menuGutter\n};\nvar defaultTheme = {\n borderRadius: borderRadius,\n colors: colors,\n spacing: spacing\n};\n\nvar defaultProps = {\n 'aria-live': 'polite',\n backspaceRemovesValue: true,\n blurInputOnSelect: isTouchCapable(),\n captureMenuScroll: !isTouchCapable(),\n classNames: {},\n closeMenuOnSelect: true,\n closeMenuOnScroll: false,\n components: {},\n controlShouldRenderValue: true,\n escapeClearsValue: false,\n filterOption: createFilter(),\n formatGroupLabel: formatGroupLabel,\n getOptionLabel: getOptionLabel$1,\n getOptionValue: getOptionValue$1,\n isDisabled: false,\n isLoading: false,\n isMulti: false,\n isRtl: false,\n isSearchable: true,\n isOptionDisabled: isOptionDisabled,\n loadingMessage: function loadingMessage() {\n return 'Loading...';\n },\n maxMenuHeight: 300,\n minMenuHeight: 140,\n menuIsOpen: false,\n menuPlacement: 'bottom',\n menuPosition: 'absolute',\n menuShouldBlockScroll: false,\n menuShouldScrollIntoView: !isMobileDevice(),\n noOptionsMessage: function noOptionsMessage() {\n return 'No options';\n },\n openMenuOnFocus: false,\n openMenuOnClick: true,\n options: [],\n pageSize: 5,\n placeholder: 'Select...',\n screenReaderStatus: function screenReaderStatus(_ref) {\n var count = _ref.count;\n return \"\".concat(count, \" result\").concat(count !== 1 ? 's' : '', \" available\");\n },\n styles: {},\n tabIndex: 0,\n tabSelectsValue: true,\n unstyled: false\n};\nfunction toCategorizedOption(props, option, selectValue, index) {\n var isDisabled = _isOptionDisabled(props, option, selectValue);\n var isSelected = _isOptionSelected(props, option, selectValue);\n var label = getOptionLabel(props, option);\n var value = getOptionValue(props, option);\n return {\n type: 'option',\n data: option,\n isDisabled: isDisabled,\n isSelected: isSelected,\n label: label,\n value: value,\n index: index\n };\n}\nfunction buildCategorizedOptions(props, selectValue) {\n return props.options.map(function (groupOrOption, groupOrOptionIndex) {\n if ('options' in groupOrOption) {\n var categorizedOptions = groupOrOption.options.map(function (option, optionIndex) {\n return toCategorizedOption(props, option, selectValue, optionIndex);\n }).filter(function (categorizedOption) {\n return isFocusable(props, categorizedOption);\n });\n return categorizedOptions.length > 0 ? {\n type: 'group',\n data: groupOrOption,\n options: categorizedOptions,\n index: groupOrOptionIndex\n } : undefined;\n }\n var categorizedOption = toCategorizedOption(props, groupOrOption, selectValue, groupOrOptionIndex);\n return isFocusable(props, categorizedOption) ? categorizedOption : undefined;\n }).filter(notNullish);\n}\nfunction buildFocusableOptionsFromCategorizedOptions(categorizedOptions) {\n return categorizedOptions.reduce(function (optionsAccumulator, categorizedOption) {\n if (categorizedOption.type === 'group') {\n optionsAccumulator.push.apply(optionsAccumulator, _toConsumableArray(categorizedOption.options.map(function (option) {\n return option.data;\n })));\n } else {\n optionsAccumulator.push(categorizedOption.data);\n }\n return optionsAccumulator;\n }, []);\n}\nfunction buildFocusableOptionsWithIds(categorizedOptions, optionId) {\n return categorizedOptions.reduce(function (optionsAccumulator, categorizedOption) {\n if (categorizedOption.type === 'group') {\n optionsAccumulator.push.apply(optionsAccumulator, _toConsumableArray(categorizedOption.options.map(function (option) {\n return {\n data: option.data,\n id: \"\".concat(optionId, \"-\").concat(categorizedOption.index, \"-\").concat(option.index)\n };\n })));\n } else {\n optionsAccumulator.push({\n data: categorizedOption.data,\n id: \"\".concat(optionId, \"-\").concat(categorizedOption.index)\n });\n }\n return optionsAccumulator;\n }, []);\n}\nfunction buildFocusableOptions(props, selectValue) {\n return buildFocusableOptionsFromCategorizedOptions(buildCategorizedOptions(props, selectValue));\n}\nfunction isFocusable(props, categorizedOption) {\n var _props$inputValue = props.inputValue,\n inputValue = _props$inputValue === void 0 ? '' : _props$inputValue;\n var data = categorizedOption.data,\n isSelected = categorizedOption.isSelected,\n label = categorizedOption.label,\n value = categorizedOption.value;\n return (!shouldHideSelectedOptions(props) || !isSelected) && _filterOption(props, {\n label: label,\n value: value,\n data: data\n }, inputValue);\n}\nfunction getNextFocusedValue(state, nextSelectValue) {\n var focusedValue = state.focusedValue,\n lastSelectValue = state.selectValue;\n var lastFocusedIndex = lastSelectValue.indexOf(focusedValue);\n if (lastFocusedIndex > -1) {\n var nextFocusedIndex = nextSelectValue.indexOf(focusedValue);\n if (nextFocusedIndex > -1) {\n // the focused value is still in the selectValue, return it\n return focusedValue;\n } else if (lastFocusedIndex < nextSelectValue.length) {\n // the focusedValue is not present in the next selectValue array by\n // reference, so return the new value at the same index\n return nextSelectValue[lastFocusedIndex];\n }\n }\n return null;\n}\nfunction getNextFocusedOption(state, options) {\n var lastFocusedOption = state.focusedOption;\n return lastFocusedOption && options.indexOf(lastFocusedOption) > -1 ? lastFocusedOption : options[0];\n}\nvar getFocusedOptionId = function getFocusedOptionId(focusableOptionsWithIds, focusedOption) {\n var _focusableOptionsWith;\n var focusedOptionId = (_focusableOptionsWith = focusableOptionsWithIds.find(function (option) {\n return option.data === focusedOption;\n })) === null || _focusableOptionsWith === void 0 ? void 0 : _focusableOptionsWith.id;\n return focusedOptionId || null;\n};\nvar getOptionLabel = function getOptionLabel(props, data) {\n return props.getOptionLabel(data);\n};\nvar getOptionValue = function getOptionValue(props, data) {\n return props.getOptionValue(data);\n};\nfunction _isOptionDisabled(props, option, selectValue) {\n return typeof props.isOptionDisabled === 'function' ? props.isOptionDisabled(option, selectValue) : false;\n}\nfunction _isOptionSelected(props, option, selectValue) {\n if (selectValue.indexOf(option) > -1) return true;\n if (typeof props.isOptionSelected === 'function') {\n return props.isOptionSelected(option, selectValue);\n }\n var candidate = getOptionValue(props, option);\n return selectValue.some(function (i) {\n return getOptionValue(props, i) === candidate;\n });\n}\nfunction _filterOption(props, option, inputValue) {\n return props.filterOption ? props.filterOption(option, inputValue) : true;\n}\nvar shouldHideSelectedOptions = function shouldHideSelectedOptions(props) {\n var hideSelectedOptions = props.hideSelectedOptions,\n isMulti = props.isMulti;\n if (hideSelectedOptions === undefined) return isMulti;\n return hideSelectedOptions;\n};\nvar instanceId = 1;\nvar Select = /*#__PURE__*/function (_Component) {\n _inherits(Select, _Component);\n var _super = _createSuper(Select);\n // Misc. Instance Properties\n // ------------------------------\n\n // TODO\n\n // Refs\n // ------------------------------\n\n // Lifecycle\n // ------------------------------\n\n function Select(_props) {\n var _this;\n _classCallCheck(this, Select);\n _this = _super.call(this, _props);\n _this.state = {\n ariaSelection: null,\n focusedOption: null,\n focusedOptionId: null,\n focusableOptionsWithIds: [],\n focusedValue: null,\n inputIsHidden: false,\n isFocused: false,\n selectValue: [],\n clearFocusValueOnUpdate: false,\n prevWasFocused: false,\n inputIsHiddenAfterUpdate: undefined,\n prevProps: undefined,\n instancePrefix: ''\n };\n _this.blockOptionHover = false;\n _this.isComposing = false;\n _this.commonProps = void 0;\n _this.initialTouchX = 0;\n _this.initialTouchY = 0;\n _this.openAfterFocus = false;\n _this.scrollToFocusedOptionOnUpdate = false;\n _this.userIsDragging = void 0;\n _this.isAppleDevice = isAppleDevice();\n _this.controlRef = null;\n _this.getControlRef = function (ref) {\n _this.controlRef = ref;\n };\n _this.focusedOptionRef = null;\n _this.getFocusedOptionRef = function (ref) {\n _this.focusedOptionRef = ref;\n };\n _this.menuListRef = null;\n _this.getMenuListRef = function (ref) {\n _this.menuListRef = ref;\n };\n _this.inputRef = null;\n _this.getInputRef = function (ref) {\n _this.inputRef = ref;\n };\n _this.focus = _this.focusInput;\n _this.blur = _this.blurInput;\n _this.onChange = function (newValue, actionMeta) {\n var _this$props = _this.props,\n onChange = _this$props.onChange,\n name = _this$props.name;\n actionMeta.name = name;\n _this.ariaOnChange(newValue, actionMeta);\n onChange(newValue, actionMeta);\n };\n _this.setValue = function (newValue, action, option) {\n var _this$props2 = _this.props,\n closeMenuOnSelect = _this$props2.closeMenuOnSelect,\n isMulti = _this$props2.isMulti,\n inputValue = _this$props2.inputValue;\n _this.onInputChange('', {\n action: 'set-value',\n prevInputValue: inputValue\n });\n if (closeMenuOnSelect) {\n _this.setState({\n inputIsHiddenAfterUpdate: !isMulti\n });\n _this.onMenuClose();\n }\n // when the select value should change, we should reset focusedValue\n _this.setState({\n clearFocusValueOnUpdate: true\n });\n _this.onChange(newValue, {\n action: action,\n option: option\n });\n };\n _this.selectOption = function (newValue) {\n var _this$props3 = _this.props,\n blurInputOnSelect = _this$props3.blurInputOnSelect,\n isMulti = _this$props3.isMulti,\n name = _this$props3.name;\n var selectValue = _this.state.selectValue;\n var deselected = isMulti && _this.isOptionSelected(newValue, selectValue);\n var isDisabled = _this.isOptionDisabled(newValue, selectValue);\n if (deselected) {\n var candidate = _this.getOptionValue(newValue);\n _this.setValue(multiValueAsValue(selectValue.filter(function (i) {\n return _this.getOptionValue(i) !== candidate;\n })), 'deselect-option', newValue);\n } else if (!isDisabled) {\n // Select option if option is not disabled\n if (isMulti) {\n _this.setValue(multiValueAsValue([].concat(_toConsumableArray(selectValue), [newValue])), 'select-option', newValue);\n } else {\n _this.setValue(singleValueAsValue(newValue), 'select-option');\n }\n } else {\n _this.ariaOnChange(singleValueAsValue(newValue), {\n action: 'select-option',\n option: newValue,\n name: name\n });\n return;\n }\n if (blurInputOnSelect) {\n _this.blurInput();\n }\n };\n _this.removeValue = function (removedValue) {\n var isMulti = _this.props.isMulti;\n var selectValue = _this.state.selectValue;\n var candidate = _this.getOptionValue(removedValue);\n var newValueArray = selectValue.filter(function (i) {\n return _this.getOptionValue(i) !== candidate;\n });\n var newValue = valueTernary(isMulti, newValueArray, newValueArray[0] || null);\n _this.onChange(newValue, {\n action: 'remove-value',\n removedValue: removedValue\n });\n _this.focusInput();\n };\n _this.clearValue = function () {\n var selectValue = _this.state.selectValue;\n _this.onChange(valueTernary(_this.props.isMulti, [], null), {\n action: 'clear',\n removedValues: selectValue\n });\n };\n _this.popValue = function () {\n var isMulti = _this.props.isMulti;\n var selectValue = _this.state.selectValue;\n var lastSelectedValue = selectValue[selectValue.length - 1];\n var newValueArray = selectValue.slice(0, selectValue.length - 1);\n var newValue = valueTernary(isMulti, newValueArray, newValueArray[0] || null);\n if (lastSelectedValue) {\n _this.onChange(newValue, {\n action: 'pop-value',\n removedValue: lastSelectedValue\n });\n }\n };\n _this.getFocusedOptionId = function (focusedOption) {\n return getFocusedOptionId(_this.state.focusableOptionsWithIds, focusedOption);\n };\n _this.getFocusableOptionsWithIds = function () {\n return buildFocusableOptionsWithIds(buildCategorizedOptions(_this.props, _this.state.selectValue), _this.getElementId('option'));\n };\n _this.getValue = function () {\n return _this.state.selectValue;\n };\n _this.cx = function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n return classNames.apply(void 0, [_this.props.classNamePrefix].concat(args));\n };\n _this.getOptionLabel = function (data) {\n return getOptionLabel(_this.props, data);\n };\n _this.getOptionValue = function (data) {\n return getOptionValue(_this.props, data);\n };\n _this.getStyles = function (key, props) {\n var unstyled = _this.props.unstyled;\n var base = defaultStyles[key](props, unstyled);\n base.boxSizing = 'border-box';\n var custom = _this.props.styles[key];\n return custom ? custom(base, props) : base;\n };\n _this.getClassNames = function (key, props) {\n var _this$props$className, _this$props$className2;\n return (_this$props$className = (_this$props$className2 = _this.props.classNames)[key]) === null || _this$props$className === void 0 ? void 0 : _this$props$className.call(_this$props$className2, props);\n };\n _this.getElementId = function (element) {\n return \"\".concat(_this.state.instancePrefix, \"-\").concat(element);\n };\n _this.getComponents = function () {\n return defaultComponents(_this.props);\n };\n _this.buildCategorizedOptions = function () {\n return buildCategorizedOptions(_this.props, _this.state.selectValue);\n };\n _this.getCategorizedOptions = function () {\n return _this.props.menuIsOpen ? _this.buildCategorizedOptions() : [];\n };\n _this.buildFocusableOptions = function () {\n return buildFocusableOptionsFromCategorizedOptions(_this.buildCategorizedOptions());\n };\n _this.getFocusableOptions = function () {\n return _this.props.menuIsOpen ? _this.buildFocusableOptions() : [];\n };\n _this.ariaOnChange = function (value, actionMeta) {\n _this.setState({\n ariaSelection: _objectSpread({\n value: value\n }, actionMeta)\n });\n };\n _this.onMenuMouseDown = function (event) {\n if (event.button !== 0) {\n return;\n }\n event.stopPropagation();\n event.preventDefault();\n _this.focusInput();\n };\n _this.onMenuMouseMove = function (event) {\n _this.blockOptionHover = false;\n };\n _this.onControlMouseDown = function (event) {\n // Event captured by dropdown indicator\n if (event.defaultPrevented) {\n return;\n }\n var openMenuOnClick = _this.props.openMenuOnClick;\n if (!_this.state.isFocused) {\n if (openMenuOnClick) {\n _this.openAfterFocus = true;\n }\n _this.focusInput();\n } else if (!_this.props.menuIsOpen) {\n if (openMenuOnClick) {\n _this.openMenu('first');\n }\n } else {\n if (event.target.tagName !== 'INPUT' && event.target.tagName !== 'TEXTAREA') {\n _this.onMenuClose();\n }\n }\n if (event.target.tagName !== 'INPUT' && event.target.tagName !== 'TEXTAREA') {\n event.preventDefault();\n }\n };\n _this.onDropdownIndicatorMouseDown = function (event) {\n // ignore mouse events that weren't triggered by the primary button\n if (event && event.type === 'mousedown' && event.button !== 0) {\n return;\n }\n if (_this.props.isDisabled) return;\n var _this$props4 = _this.props,\n isMulti = _this$props4.isMulti,\n menuIsOpen = _this$props4.menuIsOpen;\n _this.focusInput();\n if (menuIsOpen) {\n _this.setState({\n inputIsHiddenAfterUpdate: !isMulti\n });\n _this.onMenuClose();\n } else {\n _this.openMenu('first');\n }\n event.preventDefault();\n };\n _this.onClearIndicatorMouseDown = function (event) {\n // ignore mouse events that weren't triggered by the primary button\n if (event && event.type === 'mousedown' && event.button !== 0) {\n return;\n }\n _this.clearValue();\n event.preventDefault();\n _this.openAfterFocus = false;\n if (event.type === 'touchend') {\n _this.focusInput();\n } else {\n setTimeout(function () {\n return _this.focusInput();\n });\n }\n };\n _this.onScroll = function (event) {\n if (typeof _this.props.closeMenuOnScroll === 'boolean') {\n if (event.target instanceof HTMLElement && isDocumentElement(event.target)) {\n _this.props.onMenuClose();\n }\n } else if (typeof _this.props.closeMenuOnScroll === 'function') {\n if (_this.props.closeMenuOnScroll(event)) {\n _this.props.onMenuClose();\n }\n }\n };\n _this.onCompositionStart = function () {\n _this.isComposing = true;\n };\n _this.onCompositionEnd = function () {\n _this.isComposing = false;\n };\n _this.onTouchStart = function (_ref2) {\n var touches = _ref2.touches;\n var touch = touches && touches.item(0);\n if (!touch) {\n return;\n }\n _this.initialTouchX = touch.clientX;\n _this.initialTouchY = touch.clientY;\n _this.userIsDragging = false;\n };\n _this.onTouchMove = function (_ref3) {\n var touches = _ref3.touches;\n var touch = touches && touches.item(0);\n if (!touch) {\n return;\n }\n var deltaX = Math.abs(touch.clientX - _this.initialTouchX);\n var deltaY = Math.abs(touch.clientY - _this.initialTouchY);\n var moveThreshold = 5;\n _this.userIsDragging = deltaX > moveThreshold || deltaY > moveThreshold;\n };\n _this.onTouchEnd = function (event) {\n if (_this.userIsDragging) return;\n\n // close the menu if the user taps outside\n // we're checking on event.target here instead of event.currentTarget, because we want to assert information\n // on events on child elements, not the document (which we've attached this handler to).\n if (_this.controlRef && !_this.controlRef.contains(event.target) && _this.menuListRef && !_this.menuListRef.contains(event.target)) {\n _this.blurInput();\n }\n\n // reset move vars\n _this.initialTouchX = 0;\n _this.initialTouchY = 0;\n };\n _this.onControlTouchEnd = function (event) {\n if (_this.userIsDragging) return;\n _this.onControlMouseDown(event);\n };\n _this.onClearIndicatorTouchEnd = function (event) {\n if (_this.userIsDragging) return;\n _this.onClearIndicatorMouseDown(event);\n };\n _this.onDropdownIndicatorTouchEnd = function (event) {\n if (_this.userIsDragging) return;\n _this.onDropdownIndicatorMouseDown(event);\n };\n _this.handleInputChange = function (event) {\n var prevInputValue = _this.props.inputValue;\n var inputValue = event.currentTarget.value;\n _this.setState({\n inputIsHiddenAfterUpdate: false\n });\n _this.onInputChange(inputValue, {\n action: 'input-change',\n prevInputValue: prevInputValue\n });\n if (!_this.props.menuIsOpen) {\n _this.onMenuOpen();\n }\n };\n _this.onInputFocus = function (event) {\n if (_this.props.onFocus) {\n _this.props.onFocus(event);\n }\n _this.setState({\n inputIsHiddenAfterUpdate: false,\n isFocused: true\n });\n if (_this.openAfterFocus || _this.props.openMenuOnFocus) {\n _this.openMenu('first');\n }\n _this.openAfterFocus = false;\n };\n _this.onInputBlur = function (event) {\n var prevInputValue = _this.props.inputValue;\n if (_this.menuListRef && _this.menuListRef.contains(document.activeElement)) {\n _this.inputRef.focus();\n return;\n }\n if (_this.props.onBlur) {\n _this.props.onBlur(event);\n }\n _this.onInputChange('', {\n action: 'input-blur',\n prevInputValue: prevInputValue\n });\n _this.onMenuClose();\n _this.setState({\n focusedValue: null,\n isFocused: false\n });\n };\n _this.onOptionHover = function (focusedOption) {\n if (_this.blockOptionHover || _this.state.focusedOption === focusedOption) {\n return;\n }\n var options = _this.getFocusableOptions();\n var focusedOptionIndex = options.indexOf(focusedOption);\n _this.setState({\n focusedOption: focusedOption,\n focusedOptionId: focusedOptionIndex > -1 ? _this.getFocusedOptionId(focusedOption) : null\n });\n };\n _this.shouldHideSelectedOptions = function () {\n return shouldHideSelectedOptions(_this.props);\n };\n _this.onValueInputFocus = function (e) {\n e.preventDefault();\n e.stopPropagation();\n _this.focus();\n };\n _this.onKeyDown = function (event) {\n var _this$props5 = _this.props,\n isMulti = _this$props5.isMulti,\n backspaceRemovesValue = _this$props5.backspaceRemovesValue,\n escapeClearsValue = _this$props5.escapeClearsValue,\n inputValue = _this$props5.inputValue,\n isClearable = _this$props5.isClearable,\n isDisabled = _this$props5.isDisabled,\n menuIsOpen = _this$props5.menuIsOpen,\n onKeyDown = _this$props5.onKeyDown,\n tabSelectsValue = _this$props5.tabSelectsValue,\n openMenuOnFocus = _this$props5.openMenuOnFocus;\n var _this$state = _this.state,\n focusedOption = _this$state.focusedOption,\n focusedValue = _this$state.focusedValue,\n selectValue = _this$state.selectValue;\n if (isDisabled) return;\n if (typeof onKeyDown === 'function') {\n onKeyDown(event);\n if (event.defaultPrevented) {\n return;\n }\n }\n\n // Block option hover events when the user has just pressed a key\n _this.blockOptionHover = true;\n switch (event.key) {\n case 'ArrowLeft':\n if (!isMulti || inputValue) return;\n _this.focusValue('previous');\n break;\n case 'ArrowRight':\n if (!isMulti || inputValue) return;\n _this.focusValue('next');\n break;\n case 'Delete':\n case 'Backspace':\n if (inputValue) return;\n if (focusedValue) {\n _this.removeValue(focusedValue);\n } else {\n if (!backspaceRemovesValue) return;\n if (isMulti) {\n _this.popValue();\n } else if (isClearable) {\n _this.clearValue();\n }\n }\n break;\n case 'Tab':\n if (_this.isComposing) return;\n if (event.shiftKey || !menuIsOpen || !tabSelectsValue || !focusedOption ||\n // don't capture the event if the menu opens on focus and the focused\n // option is already selected; it breaks the flow of navigation\n openMenuOnFocus && _this.isOptionSelected(focusedOption, selectValue)) {\n return;\n }\n _this.selectOption(focusedOption);\n break;\n case 'Enter':\n if (event.keyCode === 229) {\n // ignore the keydown event from an Input Method Editor(IME)\n // ref. https://www.w3.org/TR/uievents/#determine-keydown-keyup-keyCode\n break;\n }\n if (menuIsOpen) {\n if (!focusedOption) return;\n if (_this.isComposing) return;\n _this.selectOption(focusedOption);\n break;\n }\n return;\n case 'Escape':\n if (menuIsOpen) {\n _this.setState({\n inputIsHiddenAfterUpdate: false\n });\n _this.onInputChange('', {\n action: 'menu-close',\n prevInputValue: inputValue\n });\n _this.onMenuClose();\n } else if (isClearable && escapeClearsValue) {\n _this.clearValue();\n }\n break;\n case ' ':\n // space\n if (inputValue) {\n return;\n }\n if (!menuIsOpen) {\n _this.openMenu('first');\n break;\n }\n if (!focusedOption) return;\n _this.selectOption(focusedOption);\n break;\n case 'ArrowUp':\n if (menuIsOpen) {\n _this.focusOption('up');\n } else {\n _this.openMenu('last');\n }\n break;\n case 'ArrowDown':\n if (menuIsOpen) {\n _this.focusOption('down');\n } else {\n _this.openMenu('first');\n }\n break;\n case 'PageUp':\n if (!menuIsOpen) return;\n _this.focusOption('pageup');\n break;\n case 'PageDown':\n if (!menuIsOpen) return;\n _this.focusOption('pagedown');\n break;\n case 'Home':\n if (!menuIsOpen) return;\n _this.focusOption('first');\n break;\n case 'End':\n if (!menuIsOpen) return;\n _this.focusOption('last');\n break;\n default:\n return;\n }\n event.preventDefault();\n };\n _this.state.instancePrefix = 'react-select-' + (_this.props.instanceId || ++instanceId);\n _this.state.selectValue = cleanValue(_props.value);\n // Set focusedOption if menuIsOpen is set on init (e.g. defaultMenuIsOpen)\n if (_props.menuIsOpen && _this.state.selectValue.length) {\n var focusableOptionsWithIds = _this.getFocusableOptionsWithIds();\n var focusableOptions = _this.buildFocusableOptions();\n var optionIndex = focusableOptions.indexOf(_this.state.selectValue[0]);\n _this.state.focusableOptionsWithIds = focusableOptionsWithIds;\n _this.state.focusedOption = focusableOptions[optionIndex];\n _this.state.focusedOptionId = getFocusedOptionId(focusableOptionsWithIds, focusableOptions[optionIndex]);\n }\n return _this;\n }\n _createClass(Select, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this.startListeningComposition();\n this.startListeningToTouch();\n if (this.props.closeMenuOnScroll && document && document.addEventListener) {\n // Listen to all scroll events, and filter them out inside of 'onScroll'\n document.addEventListener('scroll', this.onScroll, true);\n }\n if (this.props.autoFocus) {\n this.focusInput();\n }\n\n // Scroll focusedOption into view if menuIsOpen is set on mount (e.g. defaultMenuIsOpen)\n if (this.props.menuIsOpen && this.state.focusedOption && this.menuListRef && this.focusedOptionRef) {\n scrollIntoView(this.menuListRef, this.focusedOptionRef);\n }\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps) {\n var _this$props6 = this.props,\n isDisabled = _this$props6.isDisabled,\n menuIsOpen = _this$props6.menuIsOpen;\n var isFocused = this.state.isFocused;\n if (\n // ensure focus is restored correctly when the control becomes enabled\n isFocused && !isDisabled && prevProps.isDisabled ||\n // ensure focus is on the Input when the menu opens\n isFocused && menuIsOpen && !prevProps.menuIsOpen) {\n this.focusInput();\n }\n if (isFocused && isDisabled && !prevProps.isDisabled) {\n // ensure select state gets blurred in case Select is programmatically disabled while focused\n // eslint-disable-next-line react/no-did-update-set-state\n this.setState({\n isFocused: false\n }, this.onMenuClose);\n } else if (!isFocused && !isDisabled && prevProps.isDisabled && this.inputRef === document.activeElement) {\n // ensure select state gets focused in case Select is programatically re-enabled while focused (Firefox)\n // eslint-disable-next-line react/no-did-update-set-state\n this.setState({\n isFocused: true\n });\n }\n\n // scroll the focused option into view if necessary\n if (this.menuListRef && this.focusedOptionRef && this.scrollToFocusedOptionOnUpdate) {\n scrollIntoView(this.menuListRef, this.focusedOptionRef);\n this.scrollToFocusedOptionOnUpdate = false;\n }\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n this.stopListeningComposition();\n this.stopListeningToTouch();\n document.removeEventListener('scroll', this.onScroll, true);\n }\n\n // ==============================\n // Consumer Handlers\n // ==============================\n }, {\n key: \"onMenuOpen\",\n value: function onMenuOpen() {\n this.props.onMenuOpen();\n }\n }, {\n key: \"onMenuClose\",\n value: function onMenuClose() {\n this.onInputChange('', {\n action: 'menu-close',\n prevInputValue: this.props.inputValue\n });\n this.props.onMenuClose();\n }\n }, {\n key: \"onInputChange\",\n value: function onInputChange(newValue, actionMeta) {\n this.props.onInputChange(newValue, actionMeta);\n }\n\n // ==============================\n // Methods\n // ==============================\n }, {\n key: \"focusInput\",\n value: function focusInput() {\n if (!this.inputRef) return;\n this.inputRef.focus();\n }\n }, {\n key: \"blurInput\",\n value: function blurInput() {\n if (!this.inputRef) return;\n this.inputRef.blur();\n }\n\n // aliased for consumers\n }, {\n key: \"openMenu\",\n value: function openMenu(focusOption) {\n var _this2 = this;\n var _this$state2 = this.state,\n selectValue = _this$state2.selectValue,\n isFocused = _this$state2.isFocused;\n var focusableOptions = this.buildFocusableOptions();\n var openAtIndex = focusOption === 'first' ? 0 : focusableOptions.length - 1;\n if (!this.props.isMulti) {\n var selectedIndex = focusableOptions.indexOf(selectValue[0]);\n if (selectedIndex > -1) {\n openAtIndex = selectedIndex;\n }\n }\n\n // only scroll if the menu isn't already open\n this.scrollToFocusedOptionOnUpdate = !(isFocused && this.menuListRef);\n this.setState({\n inputIsHiddenAfterUpdate: false,\n focusedValue: null,\n focusedOption: focusableOptions[openAtIndex],\n focusedOptionId: this.getFocusedOptionId(focusableOptions[openAtIndex])\n }, function () {\n return _this2.onMenuOpen();\n });\n }\n }, {\n key: \"focusValue\",\n value: function focusValue(direction) {\n var _this$state3 = this.state,\n selectValue = _this$state3.selectValue,\n focusedValue = _this$state3.focusedValue;\n\n // Only multiselects support value focusing\n if (!this.props.isMulti) return;\n this.setState({\n focusedOption: null\n });\n var focusedIndex = selectValue.indexOf(focusedValue);\n if (!focusedValue) {\n focusedIndex = -1;\n }\n var lastIndex = selectValue.length - 1;\n var nextFocus = -1;\n if (!selectValue.length) return;\n switch (direction) {\n case 'previous':\n if (focusedIndex === 0) {\n // don't cycle from the start to the end\n nextFocus = 0;\n } else if (focusedIndex === -1) {\n // if nothing is focused, focus the last value first\n nextFocus = lastIndex;\n } else {\n nextFocus = focusedIndex - 1;\n }\n break;\n case 'next':\n if (focusedIndex > -1 && focusedIndex < lastIndex) {\n nextFocus = focusedIndex + 1;\n }\n break;\n }\n this.setState({\n inputIsHidden: nextFocus !== -1,\n focusedValue: selectValue[nextFocus]\n });\n }\n }, {\n key: \"focusOption\",\n value: function focusOption() {\n var direction = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'first';\n var pageSize = this.props.pageSize;\n var focusedOption = this.state.focusedOption;\n var options = this.getFocusableOptions();\n if (!options.length) return;\n var nextFocus = 0; // handles 'first'\n var focusedIndex = options.indexOf(focusedOption);\n if (!focusedOption) {\n focusedIndex = -1;\n }\n if (direction === 'up') {\n nextFocus = focusedIndex > 0 ? focusedIndex - 1 : options.length - 1;\n } else if (direction === 'down') {\n nextFocus = (focusedIndex + 1) % options.length;\n } else if (direction === 'pageup') {\n nextFocus = focusedIndex - pageSize;\n if (nextFocus < 0) nextFocus = 0;\n } else if (direction === 'pagedown') {\n nextFocus = focusedIndex + pageSize;\n if (nextFocus > options.length - 1) nextFocus = options.length - 1;\n } else if (direction === 'last') {\n nextFocus = options.length - 1;\n }\n this.scrollToFocusedOptionOnUpdate = true;\n this.setState({\n focusedOption: options[nextFocus],\n focusedValue: null,\n focusedOptionId: this.getFocusedOptionId(options[nextFocus])\n });\n }\n }, {\n key: \"getTheme\",\n value:\n // ==============================\n // Getters\n // ==============================\n\n function getTheme() {\n // Use the default theme if there are no customisations.\n if (!this.props.theme) {\n return defaultTheme;\n }\n // If the theme prop is a function, assume the function\n // knows how to merge the passed-in default theme with\n // its own modifications.\n if (typeof this.props.theme === 'function') {\n return this.props.theme(defaultTheme);\n }\n // Otherwise, if a plain theme object was passed in,\n // overlay it with the default theme.\n return _objectSpread(_objectSpread({}, defaultTheme), this.props.theme);\n }\n }, {\n key: \"getCommonProps\",\n value: function getCommonProps() {\n var clearValue = this.clearValue,\n cx = this.cx,\n getStyles = this.getStyles,\n getClassNames = this.getClassNames,\n getValue = this.getValue,\n selectOption = this.selectOption,\n setValue = this.setValue,\n props = this.props;\n var isMulti = props.isMulti,\n isRtl = props.isRtl,\n options = props.options;\n var hasValue = this.hasValue();\n return {\n clearValue: clearValue,\n cx: cx,\n getStyles: getStyles,\n getClassNames: getClassNames,\n getValue: getValue,\n hasValue: hasValue,\n isMulti: isMulti,\n isRtl: isRtl,\n options: options,\n selectOption: selectOption,\n selectProps: props,\n setValue: setValue,\n theme: this.getTheme()\n };\n }\n }, {\n key: \"hasValue\",\n value: function hasValue() {\n var selectValue = this.state.selectValue;\n return selectValue.length > 0;\n }\n }, {\n key: \"hasOptions\",\n value: function hasOptions() {\n return !!this.getFocusableOptions().length;\n }\n }, {\n key: \"isClearable\",\n value: function isClearable() {\n var _this$props7 = this.props,\n isClearable = _this$props7.isClearable,\n isMulti = _this$props7.isMulti;\n\n // single select, by default, IS NOT clearable\n // multi select, by default, IS clearable\n if (isClearable === undefined) return isMulti;\n return isClearable;\n }\n }, {\n key: \"isOptionDisabled\",\n value: function isOptionDisabled(option, selectValue) {\n return _isOptionDisabled(this.props, option, selectValue);\n }\n }, {\n key: \"isOptionSelected\",\n value: function isOptionSelected(option, selectValue) {\n return _isOptionSelected(this.props, option, selectValue);\n }\n }, {\n key: \"filterOption\",\n value: function filterOption(option, inputValue) {\n return _filterOption(this.props, option, inputValue);\n }\n }, {\n key: \"formatOptionLabel\",\n value: function formatOptionLabel(data, context) {\n if (typeof this.props.formatOptionLabel === 'function') {\n var _inputValue = this.props.inputValue;\n var _selectValue = this.state.selectValue;\n return this.props.formatOptionLabel(data, {\n context: context,\n inputValue: _inputValue,\n selectValue: _selectValue\n });\n } else {\n return this.getOptionLabel(data);\n }\n }\n }, {\n key: \"formatGroupLabel\",\n value: function formatGroupLabel(data) {\n return this.props.formatGroupLabel(data);\n }\n\n // ==============================\n // Mouse Handlers\n // ==============================\n }, {\n key: \"startListeningComposition\",\n value:\n // ==============================\n // Composition Handlers\n // ==============================\n\n function startListeningComposition() {\n if (document && document.addEventListener) {\n document.addEventListener('compositionstart', this.onCompositionStart, false);\n document.addEventListener('compositionend', this.onCompositionEnd, false);\n }\n }\n }, {\n key: \"stopListeningComposition\",\n value: function stopListeningComposition() {\n if (document && document.removeEventListener) {\n document.removeEventListener('compositionstart', this.onCompositionStart);\n document.removeEventListener('compositionend', this.onCompositionEnd);\n }\n }\n }, {\n key: \"startListeningToTouch\",\n value:\n // ==============================\n // Touch Handlers\n // ==============================\n\n function startListeningToTouch() {\n if (document && document.addEventListener) {\n document.addEventListener('touchstart', this.onTouchStart, false);\n document.addEventListener('touchmove', this.onTouchMove, false);\n document.addEventListener('touchend', this.onTouchEnd, false);\n }\n }\n }, {\n key: \"stopListeningToTouch\",\n value: function stopListeningToTouch() {\n if (document && document.removeEventListener) {\n document.removeEventListener('touchstart', this.onTouchStart);\n document.removeEventListener('touchmove', this.onTouchMove);\n document.removeEventListener('touchend', this.onTouchEnd);\n }\n }\n }, {\n key: \"renderInput\",\n value:\n // ==============================\n // Renderers\n // ==============================\n function renderInput() {\n var _this$props8 = this.props,\n isDisabled = _this$props8.isDisabled,\n isSearchable = _this$props8.isSearchable,\n inputId = _this$props8.inputId,\n inputValue = _this$props8.inputValue,\n tabIndex = _this$props8.tabIndex,\n form = _this$props8.form,\n menuIsOpen = _this$props8.menuIsOpen,\n required = _this$props8.required;\n var _this$getComponents = this.getComponents(),\n Input = _this$getComponents.Input;\n var _this$state4 = this.state,\n inputIsHidden = _this$state4.inputIsHidden,\n ariaSelection = _this$state4.ariaSelection;\n var commonProps = this.commonProps;\n var id = inputId || this.getElementId('input');\n\n // aria attributes makes the JSX \"noisy\", separated for clarity\n var ariaAttributes = _objectSpread(_objectSpread(_objectSpread({\n 'aria-autocomplete': 'list',\n 'aria-expanded': menuIsOpen,\n 'aria-haspopup': true,\n 'aria-errormessage': this.props['aria-errormessage'],\n 'aria-invalid': this.props['aria-invalid'],\n 'aria-label': this.props['aria-label'],\n 'aria-labelledby': this.props['aria-labelledby'],\n 'aria-required': required,\n role: 'combobox',\n 'aria-activedescendant': this.isAppleDevice ? undefined : this.state.focusedOptionId || ''\n }, menuIsOpen && {\n 'aria-controls': this.getElementId('listbox')\n }), !isSearchable && {\n 'aria-readonly': true\n }), this.hasValue() ? (ariaSelection === null || ariaSelection === void 0 ? void 0 : ariaSelection.action) === 'initial-input-focus' && {\n 'aria-describedby': this.getElementId('live-region')\n } : {\n 'aria-describedby': this.getElementId('placeholder')\n });\n if (!isSearchable) {\n // use a dummy input to maintain focus/blur functionality\n return /*#__PURE__*/React.createElement(DummyInput, _extends({\n id: id,\n innerRef: this.getInputRef,\n onBlur: this.onInputBlur,\n onChange: noop,\n onFocus: this.onInputFocus,\n disabled: isDisabled,\n tabIndex: tabIndex,\n inputMode: \"none\",\n form: form,\n value: \"\"\n }, ariaAttributes));\n }\n return /*#__PURE__*/React.createElement(Input, _extends({}, commonProps, {\n autoCapitalize: \"none\",\n autoComplete: \"off\",\n autoCorrect: \"off\",\n id: id,\n innerRef: this.getInputRef,\n isDisabled: isDisabled,\n isHidden: inputIsHidden,\n onBlur: this.onInputBlur,\n onChange: this.handleInputChange,\n onFocus: this.onInputFocus,\n spellCheck: \"false\",\n tabIndex: tabIndex,\n form: form,\n type: \"text\",\n value: inputValue\n }, ariaAttributes));\n }\n }, {\n key: \"renderPlaceholderOrValue\",\n value: function renderPlaceholderOrValue() {\n var _this3 = this;\n var _this$getComponents2 = this.getComponents(),\n MultiValue = _this$getComponents2.MultiValue,\n MultiValueContainer = _this$getComponents2.MultiValueContainer,\n MultiValueLabel = _this$getComponents2.MultiValueLabel,\n MultiValueRemove = _this$getComponents2.MultiValueRemove,\n SingleValue = _this$getComponents2.SingleValue,\n Placeholder = _this$getComponents2.Placeholder;\n var commonProps = this.commonProps;\n var _this$props9 = this.props,\n controlShouldRenderValue = _this$props9.controlShouldRenderValue,\n isDisabled = _this$props9.isDisabled,\n isMulti = _this$props9.isMulti,\n inputValue = _this$props9.inputValue,\n placeholder = _this$props9.placeholder;\n var _this$state5 = this.state,\n selectValue = _this$state5.selectValue,\n focusedValue = _this$state5.focusedValue,\n isFocused = _this$state5.isFocused;\n if (!this.hasValue() || !controlShouldRenderValue) {\n return inputValue ? null : /*#__PURE__*/React.createElement(Placeholder, _extends({}, commonProps, {\n key: \"placeholder\",\n isDisabled: isDisabled,\n isFocused: isFocused,\n innerProps: {\n id: this.getElementId('placeholder')\n }\n }), placeholder);\n }\n if (isMulti) {\n return selectValue.map(function (opt, index) {\n var isOptionFocused = opt === focusedValue;\n var key = \"\".concat(_this3.getOptionLabel(opt), \"-\").concat(_this3.getOptionValue(opt));\n return /*#__PURE__*/React.createElement(MultiValue, _extends({}, commonProps, {\n components: {\n Container: MultiValueContainer,\n Label: MultiValueLabel,\n Remove: MultiValueRemove\n },\n isFocused: isOptionFocused,\n isDisabled: isDisabled,\n key: key,\n index: index,\n removeProps: {\n onClick: function onClick() {\n return _this3.removeValue(opt);\n },\n onTouchEnd: function onTouchEnd() {\n return _this3.removeValue(opt);\n },\n onMouseDown: function onMouseDown(e) {\n e.preventDefault();\n }\n },\n data: opt\n }), _this3.formatOptionLabel(opt, 'value'));\n });\n }\n if (inputValue) {\n return null;\n }\n var singleValue = selectValue[0];\n return /*#__PURE__*/React.createElement(SingleValue, _extends({}, commonProps, {\n data: singleValue,\n isDisabled: isDisabled\n }), this.formatOptionLabel(singleValue, 'value'));\n }\n }, {\n key: \"renderClearIndicator\",\n value: function renderClearIndicator() {\n var _this$getComponents3 = this.getComponents(),\n ClearIndicator = _this$getComponents3.ClearIndicator;\n var commonProps = this.commonProps;\n var _this$props10 = this.props,\n isDisabled = _this$props10.isDisabled,\n isLoading = _this$props10.isLoading;\n var isFocused = this.state.isFocused;\n if (!this.isClearable() || !ClearIndicator || isDisabled || !this.hasValue() || isLoading) {\n return null;\n }\n var innerProps = {\n onMouseDown: this.onClearIndicatorMouseDown,\n onTouchEnd: this.onClearIndicatorTouchEnd,\n 'aria-hidden': 'true'\n };\n return /*#__PURE__*/React.createElement(ClearIndicator, _extends({}, commonProps, {\n innerProps: innerProps,\n isFocused: isFocused\n }));\n }\n }, {\n key: \"renderLoadingIndicator\",\n value: function renderLoadingIndicator() {\n var _this$getComponents4 = this.getComponents(),\n LoadingIndicator = _this$getComponents4.LoadingIndicator;\n var commonProps = this.commonProps;\n var _this$props11 = this.props,\n isDisabled = _this$props11.isDisabled,\n isLoading = _this$props11.isLoading;\n var isFocused = this.state.isFocused;\n if (!LoadingIndicator || !isLoading) return null;\n var innerProps = {\n 'aria-hidden': 'true'\n };\n return /*#__PURE__*/React.createElement(LoadingIndicator, _extends({}, commonProps, {\n innerProps: innerProps,\n isDisabled: isDisabled,\n isFocused: isFocused\n }));\n }\n }, {\n key: \"renderIndicatorSeparator\",\n value: function renderIndicatorSeparator() {\n var _this$getComponents5 = this.getComponents(),\n DropdownIndicator = _this$getComponents5.DropdownIndicator,\n IndicatorSeparator = _this$getComponents5.IndicatorSeparator;\n\n // separator doesn't make sense without the dropdown indicator\n if (!DropdownIndicator || !IndicatorSeparator) return null;\n var commonProps = this.commonProps;\n var isDisabled = this.props.isDisabled;\n var isFocused = this.state.isFocused;\n return /*#__PURE__*/React.createElement(IndicatorSeparator, _extends({}, commonProps, {\n isDisabled: isDisabled,\n isFocused: isFocused\n }));\n }\n }, {\n key: \"renderDropdownIndicator\",\n value: function renderDropdownIndicator() {\n var _this$getComponents6 = this.getComponents(),\n DropdownIndicator = _this$getComponents6.DropdownIndicator;\n if (!DropdownIndicator) return null;\n var commonProps = this.commonProps;\n var isDisabled = this.props.isDisabled;\n var isFocused = this.state.isFocused;\n var innerProps = {\n onMouseDown: this.onDropdownIndicatorMouseDown,\n onTouchEnd: this.onDropdownIndicatorTouchEnd,\n 'aria-hidden': 'true'\n };\n return /*#__PURE__*/React.createElement(DropdownIndicator, _extends({}, commonProps, {\n innerProps: innerProps,\n isDisabled: isDisabled,\n isFocused: isFocused\n }));\n }\n }, {\n key: \"renderMenu\",\n value: function renderMenu() {\n var _this4 = this;\n var _this$getComponents7 = this.getComponents(),\n Group = _this$getComponents7.Group,\n GroupHeading = _this$getComponents7.GroupHeading,\n Menu = _this$getComponents7.Menu,\n MenuList = _this$getComponents7.MenuList,\n MenuPortal = _this$getComponents7.MenuPortal,\n LoadingMessage = _this$getComponents7.LoadingMessage,\n NoOptionsMessage = _this$getComponents7.NoOptionsMessage,\n Option = _this$getComponents7.Option;\n var commonProps = this.commonProps;\n var focusedOption = this.state.focusedOption;\n var _this$props12 = this.props,\n captureMenuScroll = _this$props12.captureMenuScroll,\n inputValue = _this$props12.inputValue,\n isLoading = _this$props12.isLoading,\n loadingMessage = _this$props12.loadingMessage,\n minMenuHeight = _this$props12.minMenuHeight,\n maxMenuHeight = _this$props12.maxMenuHeight,\n menuIsOpen = _this$props12.menuIsOpen,\n menuPlacement = _this$props12.menuPlacement,\n menuPosition = _this$props12.menuPosition,\n menuPortalTarget = _this$props12.menuPortalTarget,\n menuShouldBlockScroll = _this$props12.menuShouldBlockScroll,\n menuShouldScrollIntoView = _this$props12.menuShouldScrollIntoView,\n noOptionsMessage = _this$props12.noOptionsMessage,\n onMenuScrollToTop = _this$props12.onMenuScrollToTop,\n onMenuScrollToBottom = _this$props12.onMenuScrollToBottom;\n if (!menuIsOpen) return null;\n\n // TODO: Internal Option Type here\n var render = function render(props, id) {\n var type = props.type,\n data = props.data,\n isDisabled = props.isDisabled,\n isSelected = props.isSelected,\n label = props.label,\n value = props.value;\n var isFocused = focusedOption === data;\n var onHover = isDisabled ? undefined : function () {\n return _this4.onOptionHover(data);\n };\n var onSelect = isDisabled ? undefined : function () {\n return _this4.selectOption(data);\n };\n var optionId = \"\".concat(_this4.getElementId('option'), \"-\").concat(id);\n var innerProps = {\n id: optionId,\n onClick: onSelect,\n onMouseMove: onHover,\n onMouseOver: onHover,\n tabIndex: -1,\n role: 'option',\n 'aria-selected': _this4.isAppleDevice ? undefined : isSelected // is not supported on Apple devices\n };\n\n return /*#__PURE__*/React.createElement(Option, _extends({}, commonProps, {\n innerProps: innerProps,\n data: data,\n isDisabled: isDisabled,\n isSelected: isSelected,\n key: optionId,\n label: label,\n type: type,\n value: value,\n isFocused: isFocused,\n innerRef: isFocused ? _this4.getFocusedOptionRef : undefined\n }), _this4.formatOptionLabel(props.data, 'menu'));\n };\n var menuUI;\n if (this.hasOptions()) {\n menuUI = this.getCategorizedOptions().map(function (item) {\n if (item.type === 'group') {\n var _data = item.data,\n options = item.options,\n groupIndex = item.index;\n var groupId = \"\".concat(_this4.getElementId('group'), \"-\").concat(groupIndex);\n var headingId = \"\".concat(groupId, \"-heading\");\n return /*#__PURE__*/React.createElement(Group, _extends({}, commonProps, {\n key: groupId,\n data: _data,\n options: options,\n Heading: GroupHeading,\n headingProps: {\n id: headingId,\n data: item.data\n },\n label: _this4.formatGroupLabel(item.data)\n }), item.options.map(function (option) {\n return render(option, \"\".concat(groupIndex, \"-\").concat(option.index));\n }));\n } else if (item.type === 'option') {\n return render(item, \"\".concat(item.index));\n }\n });\n } else if (isLoading) {\n var message = loadingMessage({\n inputValue: inputValue\n });\n if (message === null) return null;\n menuUI = /*#__PURE__*/React.createElement(LoadingMessage, commonProps, message);\n } else {\n var _message = noOptionsMessage({\n inputValue: inputValue\n });\n if (_message === null) return null;\n menuUI = /*#__PURE__*/React.createElement(NoOptionsMessage, commonProps, _message);\n }\n var menuPlacementProps = {\n minMenuHeight: minMenuHeight,\n maxMenuHeight: maxMenuHeight,\n menuPlacement: menuPlacement,\n menuPosition: menuPosition,\n menuShouldScrollIntoView: menuShouldScrollIntoView\n };\n var menuElement = /*#__PURE__*/React.createElement(MenuPlacer, _extends({}, commonProps, menuPlacementProps), function (_ref4) {\n var ref = _ref4.ref,\n _ref4$placerProps = _ref4.placerProps,\n placement = _ref4$placerProps.placement,\n maxHeight = _ref4$placerProps.maxHeight;\n return /*#__PURE__*/React.createElement(Menu, _extends({}, commonProps, menuPlacementProps, {\n innerRef: ref,\n innerProps: {\n onMouseDown: _this4.onMenuMouseDown,\n onMouseMove: _this4.onMenuMouseMove\n },\n isLoading: isLoading,\n placement: placement\n }), /*#__PURE__*/React.createElement(ScrollManager, {\n captureEnabled: captureMenuScroll,\n onTopArrive: onMenuScrollToTop,\n onBottomArrive: onMenuScrollToBottom,\n lockEnabled: menuShouldBlockScroll\n }, function (scrollTargetRef) {\n return /*#__PURE__*/React.createElement(MenuList, _extends({}, commonProps, {\n innerRef: function innerRef(instance) {\n _this4.getMenuListRef(instance);\n scrollTargetRef(instance);\n },\n innerProps: {\n role: 'listbox',\n 'aria-multiselectable': commonProps.isMulti,\n id: _this4.getElementId('listbox')\n },\n isLoading: isLoading,\n maxHeight: maxHeight,\n focusedOption: focusedOption\n }), menuUI);\n }));\n });\n\n // positioning behaviour is almost identical for portalled and fixed,\n // so we use the same component. the actual portalling logic is forked\n // within the component based on `menuPosition`\n return menuPortalTarget || menuPosition === 'fixed' ? /*#__PURE__*/React.createElement(MenuPortal, _extends({}, commonProps, {\n appendTo: menuPortalTarget,\n controlElement: this.controlRef,\n menuPlacement: menuPlacement,\n menuPosition: menuPosition\n }), menuElement) : menuElement;\n }\n }, {\n key: \"renderFormField\",\n value: function renderFormField() {\n var _this5 = this;\n var _this$props13 = this.props,\n delimiter = _this$props13.delimiter,\n isDisabled = _this$props13.isDisabled,\n isMulti = _this$props13.isMulti,\n name = _this$props13.name,\n required = _this$props13.required;\n var selectValue = this.state.selectValue;\n if (required && !this.hasValue() && !isDisabled) {\n return /*#__PURE__*/React.createElement(RequiredInput$1, {\n name: name,\n onFocus: this.onValueInputFocus\n });\n }\n if (!name || isDisabled) return;\n if (isMulti) {\n if (delimiter) {\n var value = selectValue.map(function (opt) {\n return _this5.getOptionValue(opt);\n }).join(delimiter);\n return /*#__PURE__*/React.createElement(\"input\", {\n name: name,\n type: \"hidden\",\n value: value\n });\n } else {\n var input = selectValue.length > 0 ? selectValue.map(function (opt, i) {\n return /*#__PURE__*/React.createElement(\"input\", {\n key: \"i-\".concat(i),\n name: name,\n type: \"hidden\",\n value: _this5.getOptionValue(opt)\n });\n }) : /*#__PURE__*/React.createElement(\"input\", {\n name: name,\n type: \"hidden\",\n value: \"\"\n });\n return /*#__PURE__*/React.createElement(\"div\", null, input);\n }\n } else {\n var _value = selectValue[0] ? this.getOptionValue(selectValue[0]) : '';\n return /*#__PURE__*/React.createElement(\"input\", {\n name: name,\n type: \"hidden\",\n value: _value\n });\n }\n }\n }, {\n key: \"renderLiveRegion\",\n value: function renderLiveRegion() {\n var commonProps = this.commonProps;\n var _this$state6 = this.state,\n ariaSelection = _this$state6.ariaSelection,\n focusedOption = _this$state6.focusedOption,\n focusedValue = _this$state6.focusedValue,\n isFocused = _this$state6.isFocused,\n selectValue = _this$state6.selectValue;\n var focusableOptions = this.getFocusableOptions();\n return /*#__PURE__*/React.createElement(LiveRegion$1, _extends({}, commonProps, {\n id: this.getElementId('live-region'),\n ariaSelection: ariaSelection,\n focusedOption: focusedOption,\n focusedValue: focusedValue,\n isFocused: isFocused,\n selectValue: selectValue,\n focusableOptions: focusableOptions,\n isAppleDevice: this.isAppleDevice\n }));\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$getComponents8 = this.getComponents(),\n Control = _this$getComponents8.Control,\n IndicatorsContainer = _this$getComponents8.IndicatorsContainer,\n SelectContainer = _this$getComponents8.SelectContainer,\n ValueContainer = _this$getComponents8.ValueContainer;\n var _this$props14 = this.props,\n className = _this$props14.className,\n id = _this$props14.id,\n isDisabled = _this$props14.isDisabled,\n menuIsOpen = _this$props14.menuIsOpen;\n var isFocused = this.state.isFocused;\n var commonProps = this.commonProps = this.getCommonProps();\n return /*#__PURE__*/React.createElement(SelectContainer, _extends({}, commonProps, {\n className: className,\n innerProps: {\n id: id,\n onKeyDown: this.onKeyDown\n },\n isDisabled: isDisabled,\n isFocused: isFocused\n }), this.renderLiveRegion(), /*#__PURE__*/React.createElement(Control, _extends({}, commonProps, {\n innerRef: this.getControlRef,\n innerProps: {\n onMouseDown: this.onControlMouseDown,\n onTouchEnd: this.onControlTouchEnd\n },\n isDisabled: isDisabled,\n isFocused: isFocused,\n menuIsOpen: menuIsOpen\n }), /*#__PURE__*/React.createElement(ValueContainer, _extends({}, commonProps, {\n isDisabled: isDisabled\n }), this.renderPlaceholderOrValue(), this.renderInput()), /*#__PURE__*/React.createElement(IndicatorsContainer, _extends({}, commonProps, {\n isDisabled: isDisabled\n }), this.renderClearIndicator(), this.renderLoadingIndicator(), this.renderIndicatorSeparator(), this.renderDropdownIndicator())), this.renderMenu(), this.renderFormField());\n }\n }], [{\n key: \"getDerivedStateFromProps\",\n value: function getDerivedStateFromProps(props, state) {\n var prevProps = state.prevProps,\n clearFocusValueOnUpdate = state.clearFocusValueOnUpdate,\n inputIsHiddenAfterUpdate = state.inputIsHiddenAfterUpdate,\n ariaSelection = state.ariaSelection,\n isFocused = state.isFocused,\n prevWasFocused = state.prevWasFocused,\n instancePrefix = state.instancePrefix;\n var options = props.options,\n value = props.value,\n menuIsOpen = props.menuIsOpen,\n inputValue = props.inputValue,\n isMulti = props.isMulti;\n var selectValue = cleanValue(value);\n var newMenuOptionsState = {};\n if (prevProps && (value !== prevProps.value || options !== prevProps.options || menuIsOpen !== prevProps.menuIsOpen || inputValue !== prevProps.inputValue)) {\n var focusableOptions = menuIsOpen ? buildFocusableOptions(props, selectValue) : [];\n var focusableOptionsWithIds = menuIsOpen ? buildFocusableOptionsWithIds(buildCategorizedOptions(props, selectValue), \"\".concat(instancePrefix, \"-option\")) : [];\n var focusedValue = clearFocusValueOnUpdate ? getNextFocusedValue(state, selectValue) : null;\n var focusedOption = getNextFocusedOption(state, focusableOptions);\n var focusedOptionId = getFocusedOptionId(focusableOptionsWithIds, focusedOption);\n newMenuOptionsState = {\n selectValue: selectValue,\n focusedOption: focusedOption,\n focusedOptionId: focusedOptionId,\n focusableOptionsWithIds: focusableOptionsWithIds,\n focusedValue: focusedValue,\n clearFocusValueOnUpdate: false\n };\n }\n // some updates should toggle the state of the input visibility\n var newInputIsHiddenState = inputIsHiddenAfterUpdate != null && props !== prevProps ? {\n inputIsHidden: inputIsHiddenAfterUpdate,\n inputIsHiddenAfterUpdate: undefined\n } : {};\n var newAriaSelection = ariaSelection;\n var hasKeptFocus = isFocused && prevWasFocused;\n if (isFocused && !hasKeptFocus) {\n // If `value` or `defaultValue` props are not empty then announce them\n // when the Select is initially focused\n newAriaSelection = {\n value: valueTernary(isMulti, selectValue, selectValue[0] || null),\n options: selectValue,\n action: 'initial-input-focus'\n };\n hasKeptFocus = !prevWasFocused;\n }\n\n // If the 'initial-input-focus' action has been set already\n // then reset the ariaSelection to null\n if ((ariaSelection === null || ariaSelection === void 0 ? void 0 : ariaSelection.action) === 'initial-input-focus') {\n newAriaSelection = null;\n }\n return _objectSpread(_objectSpread(_objectSpread({}, newMenuOptionsState), newInputIsHiddenState), {}, {\n prevProps: props,\n ariaSelection: newAriaSelection,\n prevWasFocused: hasKeptFocus\n });\n }\n }]);\n return Select;\n}(Component);\nSelect.defaultProps = defaultProps;\n\nexport { Select as S, defaultProps as a, getOptionLabel$1 as b, createFilter as c, defaultTheme as d, getOptionValue$1 as g, mergeStyles as m };\n", "import * as React from 'react';\nimport { useContext, forwardRef } from 'react';\nimport createCache from '@emotion/cache';\nimport _extends from '@babel/runtime/helpers/esm/extends';\nimport weakMemoize from '@emotion/weak-memoize';\nimport hoistNonReactStatics from '../_isolated-hnrs/dist/emotion-react-_isolated-hnrs.browser.esm.js';\nimport { getRegisteredStyles, registerStyles, insertStyles } from '@emotion/utils';\nimport { serializeStyles } from '@emotion/serialize';\nimport { useInsertionEffectAlwaysWithSyncFallback } from '@emotion/use-insertion-effect-with-fallbacks';\n\nvar isDevelopment = false;\n\nvar EmotionCacheContext = /* #__PURE__ */React.createContext( // we're doing this to avoid preconstruct's dead code elimination in this one case\n// because this module is primarily intended for the browser and node\n// but it's also required in react native and similar environments sometimes\n// and we could have a special build just for that\n// but this is much easier and the native packages\n// might use a different theme context in the future anyway\ntypeof HTMLElement !== 'undefined' ? /* #__PURE__ */createCache({\n key: 'css'\n}) : null);\n\nvar CacheProvider = EmotionCacheContext.Provider;\nvar __unsafe_useEmotionCache = function useEmotionCache() {\n return useContext(EmotionCacheContext);\n};\n\nvar withEmotionCache = function withEmotionCache(func) {\n return /*#__PURE__*/forwardRef(function (props, ref) {\n // the cache will never be null in the browser\n var cache = useContext(EmotionCacheContext);\n return func(props, cache, ref);\n });\n};\n\nvar ThemeContext = /* #__PURE__ */React.createContext({});\n\nvar useTheme = function useTheme() {\n return React.useContext(ThemeContext);\n};\n\nvar getTheme = function getTheme(outerTheme, theme) {\n if (typeof theme === 'function') {\n var mergedTheme = theme(outerTheme);\n\n return mergedTheme;\n }\n\n return _extends({}, outerTheme, theme);\n};\n\nvar createCacheWithTheme = /* #__PURE__ */weakMemoize(function (outerTheme) {\n return weakMemoize(function (theme) {\n return getTheme(outerTheme, theme);\n });\n});\nvar ThemeProvider = function ThemeProvider(props) {\n var theme = React.useContext(ThemeContext);\n\n if (props.theme !== theme) {\n theme = createCacheWithTheme(theme)(props.theme);\n }\n\n return /*#__PURE__*/React.createElement(ThemeContext.Provider, {\n value: theme\n }, props.children);\n};\nfunction withTheme(Component) {\n var componentName = Component.displayName || Component.name || 'Component';\n var WithTheme = /*#__PURE__*/React.forwardRef(function render(props, ref) {\n var theme = React.useContext(ThemeContext);\n return /*#__PURE__*/React.createElement(Component, _extends({\n theme: theme,\n ref: ref\n }, props));\n });\n WithTheme.displayName = \"WithTheme(\" + componentName + \")\";\n return hoistNonReactStatics(WithTheme, Component);\n}\n\nvar hasOwn = {}.hasOwnProperty;\n\nvar typePropName = '__EMOTION_TYPE_PLEASE_DO_NOT_USE__';\nvar createEmotionProps = function createEmotionProps(type, props) {\n\n var newProps = {};\n\n for (var _key in props) {\n if (hasOwn.call(props, _key)) {\n newProps[_key] = props[_key];\n }\n }\n\n newProps[typePropName] = type; // Runtime labeling is an opt-in feature because:\n\n return newProps;\n};\n\nvar Insertion = function Insertion(_ref) {\n var cache = _ref.cache,\n serialized = _ref.serialized,\n isStringTag = _ref.isStringTag;\n registerStyles(cache, serialized, isStringTag);\n useInsertionEffectAlwaysWithSyncFallback(function () {\n return insertStyles(cache, serialized, isStringTag);\n });\n\n return null;\n};\n\nvar Emotion = /* #__PURE__ */withEmotionCache(function (props, cache, ref) {\n var cssProp = props.css; // so that using `css` from `emotion` and passing the result to the css prop works\n // not passing the registered cache to serializeStyles because it would\n // make certain babel optimisations not possible\n\n if (typeof cssProp === 'string' && cache.registered[cssProp] !== undefined) {\n cssProp = cache.registered[cssProp];\n }\n\n var WrappedComponent = props[typePropName];\n var registeredStyles = [cssProp];\n var className = '';\n\n if (typeof props.className === 'string') {\n className = getRegisteredStyles(cache.registered, registeredStyles, props.className);\n } else if (props.className != null) {\n className = props.className + \" \";\n }\n\n var serialized = serializeStyles(registeredStyles, undefined, React.useContext(ThemeContext));\n\n className += cache.key + \"-\" + serialized.name;\n var newProps = {};\n\n for (var _key2 in props) {\n if (hasOwn.call(props, _key2) && _key2 !== 'css' && _key2 !== typePropName && (!isDevelopment )) {\n newProps[_key2] = props[_key2];\n }\n }\n\n newProps.className = className;\n\n if (ref) {\n newProps.ref = ref;\n }\n\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Insertion, {\n cache: cache,\n serialized: serialized,\n isStringTag: typeof WrappedComponent === 'string'\n }), /*#__PURE__*/React.createElement(WrappedComponent, newProps));\n});\n\nvar Emotion$1 = Emotion;\n\nexport { CacheProvider as C, Emotion$1 as E, ThemeContext as T, __unsafe_useEmotionCache as _, ThemeProvider as a, withTheme as b, createEmotionProps as c, hasOwn as h, isDevelopment as i, useTheme as u, withEmotionCache as w };\n", "var isDevelopment = false;\n\n/*\n\nBased off glamor's StyleSheet, thanks Sunil \u2764\uFE0F\n\nhigh performance StyleSheet for css-in-js systems\n\n- uses multiple style tags behind the scenes for millions of rules\n- uses `insertRule` for appending in production for *much* faster performance\n\n// usage\n\nimport { StyleSheet } from '@emotion/sheet'\n\nlet styleSheet = new StyleSheet({ key: '', container: document.head })\n\nstyleSheet.insert('#box { border: 1px solid red; }')\n- appends a css rule into the stylesheet\n\nstyleSheet.flush()\n- empties the stylesheet of all its contents\n\n*/\n\nfunction sheetForTag(tag) {\n if (tag.sheet) {\n return tag.sheet;\n } // this weirdness brought to you by firefox\n\n /* istanbul ignore next */\n\n\n for (var i = 0; i < document.styleSheets.length; i++) {\n if (document.styleSheets[i].ownerNode === tag) {\n return document.styleSheets[i];\n }\n } // this function should always return with a value\n // TS can't understand it though so we make it stop complaining here\n\n\n return undefined;\n}\n\nfunction createStyleElement(options) {\n var tag = document.createElement('style');\n tag.setAttribute('data-emotion', options.key);\n\n if (options.nonce !== undefined) {\n tag.setAttribute('nonce', options.nonce);\n }\n\n tag.appendChild(document.createTextNode(''));\n tag.setAttribute('data-s', '');\n return tag;\n}\n\nvar StyleSheet = /*#__PURE__*/function () {\n // Using Node instead of HTMLElement since container may be a ShadowRoot\n function StyleSheet(options) {\n var _this = this;\n\n this._insertTag = function (tag) {\n var before;\n\n if (_this.tags.length === 0) {\n if (_this.insertionPoint) {\n before = _this.insertionPoint.nextSibling;\n } else if (_this.prepend) {\n before = _this.container.firstChild;\n } else {\n before = _this.before;\n }\n } else {\n before = _this.tags[_this.tags.length - 1].nextSibling;\n }\n\n _this.container.insertBefore(tag, before);\n\n _this.tags.push(tag);\n };\n\n this.isSpeedy = options.speedy === undefined ? !isDevelopment : options.speedy;\n this.tags = [];\n this.ctr = 0;\n this.nonce = options.nonce; // key is the value of the data-emotion attribute, it's used to identify different sheets\n\n this.key = options.key;\n this.container = options.container;\n this.prepend = options.prepend;\n this.insertionPoint = options.insertionPoint;\n this.before = null;\n }\n\n var _proto = StyleSheet.prototype;\n\n _proto.hydrate = function hydrate(nodes) {\n nodes.forEach(this._insertTag);\n };\n\n _proto.insert = function insert(rule) {\n // the max length is how many rules we have per style tag, it's 65000 in speedy mode\n // it's 1 in dev because we insert source maps that map a single rule to a location\n // and you can only have one source map per style tag\n if (this.ctr % (this.isSpeedy ? 65000 : 1) === 0) {\n this._insertTag(createStyleElement(this));\n }\n\n var tag = this.tags[this.tags.length - 1];\n\n if (this.isSpeedy) {\n var sheet = sheetForTag(tag);\n\n try {\n // this is the ultrafast version, works across browsers\n // the big drawback is that the css won't be editable in devtools\n sheet.insertRule(rule, sheet.cssRules.length);\n } catch (e) {\n }\n } else {\n tag.appendChild(document.createTextNode(rule));\n }\n\n this.ctr++;\n };\n\n _proto.flush = function flush() {\n this.tags.forEach(function (tag) {\n var _tag$parentNode;\n\n return (_tag$parentNode = tag.parentNode) == null ? void 0 : _tag$parentNode.removeChild(tag);\n });\n this.tags = [];\n this.ctr = 0;\n };\n\n return StyleSheet;\n}();\n\nexport { StyleSheet };\n", "export var MS = '-ms-'\nexport var MOZ = '-moz-'\nexport var WEBKIT = '-webkit-'\n\nexport var COMMENT = 'comm'\nexport var RULESET = 'rule'\nexport var DECLARATION = 'decl'\n\nexport var PAGE = '@page'\nexport var MEDIA = '@media'\nexport var IMPORT = '@import'\nexport var CHARSET = '@charset'\nexport var VIEWPORT = '@viewport'\nexport var SUPPORTS = '@supports'\nexport var DOCUMENT = '@document'\nexport var NAMESPACE = '@namespace'\nexport var KEYFRAMES = '@keyframes'\nexport var FONT_FACE = '@font-face'\nexport var COUNTER_STYLE = '@counter-style'\nexport var FONT_FEATURE_VALUES = '@font-feature-values'\nexport var LAYER = '@layer'\n", "/**\n * @param {number}\n * @return {number}\n */\nexport var abs = Math.abs\n\n/**\n * @param {number}\n * @return {string}\n */\nexport var from = String.fromCharCode\n\n/**\n * @param {object}\n * @return {object}\n */\nexport var assign = Object.assign\n\n/**\n * @param {string} value\n * @param {number} length\n * @return {number}\n */\nexport function hash (value, length) {\n\treturn charat(value, 0) ^ 45 ? (((((((length << 2) ^ charat(value, 0)) << 2) ^ charat(value, 1)) << 2) ^ charat(value, 2)) << 2) ^ charat(value, 3) : 0\n}\n\n/**\n * @param {string} value\n * @return {string}\n */\nexport function trim (value) {\n\treturn value.trim()\n}\n\n/**\n * @param {string} value\n * @param {RegExp} pattern\n * @return {string?}\n */\nexport function match (value, pattern) {\n\treturn (value = pattern.exec(value)) ? value[0] : value\n}\n\n/**\n * @param {string} value\n * @param {(string|RegExp)} pattern\n * @param {string} replacement\n * @return {string}\n */\nexport function replace (value, pattern, replacement) {\n\treturn value.replace(pattern, replacement)\n}\n\n/**\n * @param {string} value\n * @param {string} search\n * @return {number}\n */\nexport function indexof (value, search) {\n\treturn value.indexOf(search)\n}\n\n/**\n * @param {string} value\n * @param {number} index\n * @return {number}\n */\nexport function charat (value, index) {\n\treturn value.charCodeAt(index) | 0\n}\n\n/**\n * @param {string} value\n * @param {number} begin\n * @param {number} end\n * @return {string}\n */\nexport function substr (value, begin, end) {\n\treturn value.slice(begin, end)\n}\n\n/**\n * @param {string} value\n * @return {number}\n */\nexport function strlen (value) {\n\treturn value.length\n}\n\n/**\n * @param {any[]} value\n * @return {number}\n */\nexport function sizeof (value) {\n\treturn value.length\n}\n\n/**\n * @param {any} value\n * @param {any[]} array\n * @return {any}\n */\nexport function append (value, array) {\n\treturn array.push(value), value\n}\n\n/**\n * @param {string[]} array\n * @param {function} callback\n * @return {string}\n */\nexport function combine (array, callback) {\n\treturn array.map(callback).join('')\n}\n", "import {from, trim, charat, strlen, substr, append, assign} from './Utility.js'\n\nexport var line = 1\nexport var column = 1\nexport var length = 0\nexport var position = 0\nexport var character = 0\nexport var characters = ''\n\n/**\n * @param {string} value\n * @param {object | null} root\n * @param {object | null} parent\n * @param {string} type\n * @param {string[] | string} props\n * @param {object[] | string} children\n * @param {number} length\n */\nexport function node (value, root, parent, type, props, children, length) {\n\treturn {value: value, root: root, parent: parent, type: type, props: props, children: children, line: line, column: column, length: length, return: ''}\n}\n\n/**\n * @param {object} root\n * @param {object} props\n * @return {object}\n */\nexport function copy (root, props) {\n\treturn assign(node('', null, null, '', null, null, 0), root, {length: -root.length}, props)\n}\n\n/**\n * @return {number}\n */\nexport function char () {\n\treturn character\n}\n\n/**\n * @return {number}\n */\nexport function prev () {\n\tcharacter = position > 0 ? charat(characters, --position) : 0\n\n\tif (column--, character === 10)\n\t\tcolumn = 1, line--\n\n\treturn character\n}\n\n/**\n * @return {number}\n */\nexport function next () {\n\tcharacter = position < length ? charat(characters, position++) : 0\n\n\tif (column++, character === 10)\n\t\tcolumn = 1, line++\n\n\treturn character\n}\n\n/**\n * @return {number}\n */\nexport function peek () {\n\treturn charat(characters, position)\n}\n\n/**\n * @return {number}\n */\nexport function caret () {\n\treturn position\n}\n\n/**\n * @param {number} begin\n * @param {number} end\n * @return {string}\n */\nexport function slice (begin, end) {\n\treturn substr(characters, begin, end)\n}\n\n/**\n * @param {number} type\n * @return {number}\n */\nexport function token (type) {\n\tswitch (type) {\n\t\t// \\0 \\t \\n \\r \\s whitespace token\n\t\tcase 0: case 9: case 10: case 13: case 32:\n\t\t\treturn 5\n\t\t// ! + , / > @ ~ isolate token\n\t\tcase 33: case 43: case 44: case 47: case 62: case 64: case 126:\n\t\t// ; { } breakpoint token\n\t\tcase 59: case 123: case 125:\n\t\t\treturn 4\n\t\t// : accompanied token\n\t\tcase 58:\n\t\t\treturn 3\n\t\t// \" ' ( [ opening delimit token\n\t\tcase 34: case 39: case 40: case 91:\n\t\t\treturn 2\n\t\t// ) ] closing delimit token\n\t\tcase 41: case 93:\n\t\t\treturn 1\n\t}\n\n\treturn 0\n}\n\n/**\n * @param {string} value\n * @return {any[]}\n */\nexport function alloc (value) {\n\treturn line = column = 1, length = strlen(characters = value), position = 0, []\n}\n\n/**\n * @param {any} value\n * @return {any}\n */\nexport function dealloc (value) {\n\treturn characters = '', value\n}\n\n/**\n * @param {number} type\n * @return {string}\n */\nexport function delimit (type) {\n\treturn trim(slice(position - 1, delimiter(type === 91 ? type + 2 : type === 40 ? type + 1 : type)))\n}\n\n/**\n * @param {string} value\n * @return {string[]}\n */\nexport function tokenize (value) {\n\treturn dealloc(tokenizer(alloc(value)))\n}\n\n/**\n * @param {number} type\n * @return {string}\n */\nexport function whitespace (type) {\n\twhile (character = peek())\n\t\tif (character < 33)\n\t\t\tnext()\n\t\telse\n\t\t\tbreak\n\n\treturn token(type) > 2 || token(character) > 3 ? '' : ' '\n}\n\n/**\n * @param {string[]} children\n * @return {string[]}\n */\nexport function tokenizer (children) {\n\twhile (next())\n\t\tswitch (token(character)) {\n\t\t\tcase 0: append(identifier(position - 1), children)\n\t\t\t\tbreak\n\t\t\tcase 2: append(delimit(character), children)\n\t\t\t\tbreak\n\t\t\tdefault: append(from(character), children)\n\t\t}\n\n\treturn children\n}\n\n/**\n * @param {number} index\n * @param {number} count\n * @return {string}\n */\nexport function escaping (index, count) {\n\twhile (--count && next())\n\t\t// not 0-9 A-F a-f\n\t\tif (character < 48 || character > 102 || (character > 57 && character < 65) || (character > 70 && character < 97))\n\t\t\tbreak\n\n\treturn slice(index, caret() + (count < 6 && peek() == 32 && next() == 32))\n}\n\n/**\n * @param {number} type\n * @return {number}\n */\nexport function delimiter (type) {\n\twhile (next())\n\t\tswitch (character) {\n\t\t\t// ] ) \" '\n\t\t\tcase type:\n\t\t\t\treturn position\n\t\t\t// \" '\n\t\t\tcase 34: case 39:\n\t\t\t\tif (type !== 34 && type !== 39)\n\t\t\t\t\tdelimiter(character)\n\t\t\t\tbreak\n\t\t\t// (\n\t\t\tcase 40:\n\t\t\t\tif (type === 41)\n\t\t\t\t\tdelimiter(type)\n\t\t\t\tbreak\n\t\t\t// \\\n\t\t\tcase 92:\n\t\t\t\tnext()\n\t\t\t\tbreak\n\t\t}\n\n\treturn position\n}\n\n/**\n * @param {number} type\n * @param {number} index\n * @return {number}\n */\nexport function commenter (type, index) {\n\twhile (next())\n\t\t// //\n\t\tif (type + character === 47 + 10)\n\t\t\tbreak\n\t\t// /*\n\t\telse if (type + character === 42 + 42 && peek() === 47)\n\t\t\tbreak\n\n\treturn '/*' + slice(index, position - 1) + '*' + from(type === 47 ? type : next())\n}\n\n/**\n * @param {number} index\n * @return {string}\n */\nexport function identifier (index) {\n\twhile (!token(peek()))\n\t\tnext()\n\n\treturn slice(index, position)\n}\n", "import {COMMENT, RULESET, DECLARATION} from './Enum.js'\nimport {abs, charat, trim, from, sizeof, strlen, substr, append, replace, indexof} from './Utility.js'\nimport {node, char, prev, next, peek, caret, alloc, dealloc, delimit, whitespace, escaping, identifier, commenter} from './Tokenizer.js'\n\n/**\n * @param {string} value\n * @return {object[]}\n */\nexport function compile (value) {\n\treturn dealloc(parse('', null, null, null, [''], value = alloc(value), 0, [0], value))\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {string[]} rule\n * @param {string[]} rules\n * @param {string[]} rulesets\n * @param {number[]} pseudo\n * @param {number[]} points\n * @param {string[]} declarations\n * @return {object}\n */\nexport function parse (value, root, parent, rule, rules, rulesets, pseudo, points, declarations) {\n\tvar index = 0\n\tvar offset = 0\n\tvar length = pseudo\n\tvar atrule = 0\n\tvar property = 0\n\tvar previous = 0\n\tvar variable = 1\n\tvar scanning = 1\n\tvar ampersand = 1\n\tvar character = 0\n\tvar type = ''\n\tvar props = rules\n\tvar children = rulesets\n\tvar reference = rule\n\tvar characters = type\n\n\twhile (scanning)\n\t\tswitch (previous = character, character = next()) {\n\t\t\t// (\n\t\t\tcase 40:\n\t\t\t\tif (previous != 108 && charat(characters, length - 1) == 58) {\n\t\t\t\t\tif (indexof(characters += replace(delimit(character), '&', '&\\f'), '&\\f') != -1)\n\t\t\t\t\t\tampersand = -1\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t// \" ' [\n\t\t\tcase 34: case 39: case 91:\n\t\t\t\tcharacters += delimit(character)\n\t\t\t\tbreak\n\t\t\t// \\t \\n \\r \\s\n\t\t\tcase 9: case 10: case 13: case 32:\n\t\t\t\tcharacters += whitespace(previous)\n\t\t\t\tbreak\n\t\t\t// \\\n\t\t\tcase 92:\n\t\t\t\tcharacters += escaping(caret() - 1, 7)\n\t\t\t\tcontinue\n\t\t\t// /\n\t\t\tcase 47:\n\t\t\t\tswitch (peek()) {\n\t\t\t\t\tcase 42: case 47:\n\t\t\t\t\t\tappend(comment(commenter(next(), caret()), root, parent), declarations)\n\t\t\t\t\t\tbreak\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tcharacters += '/'\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\t// {\n\t\t\tcase 123 * variable:\n\t\t\t\tpoints[index++] = strlen(characters) * ampersand\n\t\t\t// } ; \\0\n\t\t\tcase 125 * variable: case 59: case 0:\n\t\t\t\tswitch (character) {\n\t\t\t\t\t// \\0 }\n\t\t\t\t\tcase 0: case 125: scanning = 0\n\t\t\t\t\t// ;\n\t\t\t\t\tcase 59 + offset: if (ampersand == -1) characters = replace(characters, /\\f/g, '')\n\t\t\t\t\t\tif (property > 0 && (strlen(characters) - length))\n\t\t\t\t\t\t\tappend(property > 32 ? declaration(characters + ';', rule, parent, length - 1) : declaration(replace(characters, ' ', '') + ';', rule, parent, length - 2), declarations)\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// @ ;\n\t\t\t\t\tcase 59: characters += ';'\n\t\t\t\t\t// { rule/at-rule\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tappend(reference = ruleset(characters, root, parent, index, offset, rules, points, type, props = [], children = [], length), rulesets)\n\n\t\t\t\t\t\tif (character === 123)\n\t\t\t\t\t\t\tif (offset === 0)\n\t\t\t\t\t\t\t\tparse(characters, root, reference, reference, props, rulesets, length, points, children)\n\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\tswitch (atrule === 99 && charat(characters, 3) === 110 ? 100 : atrule) {\n\t\t\t\t\t\t\t\t\t// d l m s\n\t\t\t\t\t\t\t\t\tcase 100: case 108: case 109: case 115:\n\t\t\t\t\t\t\t\t\t\tparse(value, reference, reference, rule && append(ruleset(value, reference, reference, 0, 0, rules, points, type, rules, props = [], length), children), rules, children, length, points, rule ? props : children)\n\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\t\tparse(characters, reference, reference, reference, [''], children, 0, points, children)\n\t\t\t\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tindex = offset = property = 0, variable = ampersand = 1, type = characters = '', length = pseudo\n\t\t\t\tbreak\n\t\t\t// :\n\t\t\tcase 58:\n\t\t\t\tlength = 1 + strlen(characters), property = previous\n\t\t\tdefault:\n\t\t\t\tif (variable < 1)\n\t\t\t\t\tif (character == 123)\n\t\t\t\t\t\t--variable\n\t\t\t\t\telse if (character == 125 && variable++ == 0 && prev() == 125)\n\t\t\t\t\t\tcontinue\n\n\t\t\t\tswitch (characters += from(character), character * variable) {\n\t\t\t\t\t// &\n\t\t\t\t\tcase 38:\n\t\t\t\t\t\tampersand = offset > 0 ? 1 : (characters += '\\f', -1)\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// ,\n\t\t\t\t\tcase 44:\n\t\t\t\t\t\tpoints[index++] = (strlen(characters) - 1) * ampersand, ampersand = 1\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// @\n\t\t\t\t\tcase 64:\n\t\t\t\t\t\t// -\n\t\t\t\t\t\tif (peek() === 45)\n\t\t\t\t\t\t\tcharacters += delimit(next())\n\n\t\t\t\t\t\tatrule = peek(), offset = length = strlen(type = characters += identifier(caret())), character++\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// -\n\t\t\t\t\tcase 45:\n\t\t\t\t\t\tif (previous === 45 && strlen(characters) == 2)\n\t\t\t\t\t\t\tvariable = 0\n\t\t\t\t}\n\t\t}\n\n\treturn rulesets\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {number} index\n * @param {number} offset\n * @param {string[]} rules\n * @param {number[]} points\n * @param {string} type\n * @param {string[]} props\n * @param {string[]} children\n * @param {number} length\n * @return {object}\n */\nexport function ruleset (value, root, parent, index, offset, rules, points, type, props, children, length) {\n\tvar post = offset - 1\n\tvar rule = offset === 0 ? rules : ['']\n\tvar size = sizeof(rule)\n\n\tfor (var i = 0, j = 0, k = 0; i < index; ++i)\n\t\tfor (var x = 0, y = substr(value, post + 1, post = abs(j = points[i])), z = value; x < size; ++x)\n\t\t\tif (z = trim(j > 0 ? rule[x] + ' ' + y : replace(y, /&\\f/g, rule[x])))\n\t\t\t\tprops[k++] = z\n\n\treturn node(value, root, parent, offset === 0 ? RULESET : type, props, children, length)\n}\n\n/**\n * @param {number} value\n * @param {object} root\n * @param {object?} parent\n * @return {object}\n */\nexport function comment (value, root, parent) {\n\treturn node(value, root, parent, COMMENT, from(char()), substr(value, 2, -2), 0)\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {number} length\n * @return {object}\n */\nexport function declaration (value, root, parent, length) {\n\treturn node(value, root, parent, DECLARATION, substr(value, 0, length), substr(value, length + 1, -1), length)\n}\n", "import {IMPORT, LAYER, COMMENT, RULESET, DECLARATION, KEYFRAMES} from './Enum.js'\nimport {strlen, sizeof} from './Utility.js'\n\n/**\n * @param {object[]} children\n * @param {function} callback\n * @return {string}\n */\nexport function serialize (children, callback) {\n\tvar output = ''\n\tvar length = sizeof(children)\n\n\tfor (var i = 0; i < length; i++)\n\t\toutput += callback(children[i], i, children, callback) || ''\n\n\treturn output\n}\n\n/**\n * @param {object} element\n * @param {number} index\n * @param {object[]} children\n * @param {function} callback\n * @return {string}\n */\nexport function stringify (element, index, children, callback) {\n\tswitch (element.type) {\n\t\tcase LAYER: if (element.children.length) break\n\t\tcase IMPORT: case DECLARATION: return element.return = element.return || element.value\n\t\tcase COMMENT: return ''\n\t\tcase KEYFRAMES: return element.return = element.value + '{' + serialize(element.children, callback) + '}'\n\t\tcase RULESET: element.value = element.props.join(',')\n\t}\n\n\treturn strlen(children = serialize(element.children, callback)) ? element.return = element.value + '{' + children + '}' : ''\n}\n", "import {MS, MOZ, WEBKIT, RULESET, KEYFRAMES, DECLARATION} from './Enum.js'\nimport {match, charat, substr, strlen, sizeof, replace, combine} from './Utility.js'\nimport {copy, tokenize} from './Tokenizer.js'\nimport {serialize} from './Serializer.js'\nimport {prefix} from './Prefixer.js'\n\n/**\n * @param {function[]} collection\n * @return {function}\n */\nexport function middleware (collection) {\n\tvar length = sizeof(collection)\n\n\treturn function (element, index, children, callback) {\n\t\tvar output = ''\n\n\t\tfor (var i = 0; i < length; i++)\n\t\t\toutput += collection[i](element, index, children, callback) || ''\n\n\t\treturn output\n\t}\n}\n\n/**\n * @param {function} callback\n * @return {function}\n */\nexport function rulesheet (callback) {\n\treturn function (element) {\n\t\tif (!element.root)\n\t\t\tif (element = element.return)\n\t\t\t\tcallback(element)\n\t}\n}\n\n/**\n * @param {object} element\n * @param {number} index\n * @param {object[]} children\n * @param {function} callback\n */\nexport function prefixer (element, index, children, callback) {\n\tif (element.length > -1)\n\t\tif (!element.return)\n\t\t\tswitch (element.type) {\n\t\t\t\tcase DECLARATION: element.return = prefix(element.value, element.length, children)\n\t\t\t\t\treturn\n\t\t\t\tcase KEYFRAMES:\n\t\t\t\t\treturn serialize([copy(element, {value: replace(element.value, '@', '@' + WEBKIT)})], callback)\n\t\t\t\tcase RULESET:\n\t\t\t\t\tif (element.length)\n\t\t\t\t\t\treturn combine(element.props, function (value) {\n\t\t\t\t\t\t\tswitch (match(value, /(::plac\\w+|:read-\\w+)/)) {\n\t\t\t\t\t\t\t\t// :read-(only|write)\n\t\t\t\t\t\t\t\tcase ':read-only': case ':read-write':\n\t\t\t\t\t\t\t\t\treturn serialize([copy(element, {props: [replace(value, /:(read-\\w+)/, ':' + MOZ + '$1')]})], callback)\n\t\t\t\t\t\t\t\t// :placeholder\n\t\t\t\t\t\t\t\tcase '::placeholder':\n\t\t\t\t\t\t\t\t\treturn serialize([\n\t\t\t\t\t\t\t\t\t\tcopy(element, {props: [replace(value, /:(plac\\w+)/, ':' + WEBKIT + 'input-$1')]}),\n\t\t\t\t\t\t\t\t\t\tcopy(element, {props: [replace(value, /:(plac\\w+)/, ':' + MOZ + '$1')]}),\n\t\t\t\t\t\t\t\t\t\tcopy(element, {props: [replace(value, /:(plac\\w+)/, MS + 'input-$1')]})\n\t\t\t\t\t\t\t\t\t], callback)\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\treturn ''\n\t\t\t\t\t\t})\n\t\t\t}\n}\n\n/**\n * @param {object} element\n * @param {number} index\n * @param {object[]} children\n */\nexport function namespace (element) {\n\tswitch (element.type) {\n\t\tcase RULESET:\n\t\t\telement.props = element.props.map(function (value) {\n\t\t\t\treturn combine(tokenize(value), function (value, index, children) {\n\t\t\t\t\tswitch (charat(value, 0)) {\n\t\t\t\t\t\t// \\f\n\t\t\t\t\t\tcase 12:\n\t\t\t\t\t\t\treturn substr(value, 1, strlen(value))\n\t\t\t\t\t\t// \\0 ( + > ~\n\t\t\t\t\t\tcase 0: case 40: case 43: case 62: case 126:\n\t\t\t\t\t\t\treturn value\n\t\t\t\t\t\t// :\n\t\t\t\t\t\tcase 58:\n\t\t\t\t\t\t\tif (children[++index] === 'global')\n\t\t\t\t\t\t\t\tchildren[index] = '', children[++index] = '\\f' + substr(children[index], index = 1, -1)\n\t\t\t\t\t\t// \\s\n\t\t\t\t\t\tcase 32:\n\t\t\t\t\t\t\treturn index === 1 ? '' : value\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tswitch (index) {\n\t\t\t\t\t\t\t\tcase 0: element = value\n\t\t\t\t\t\t\t\t\treturn sizeof(children) > 1 ? '' : value\n\t\t\t\t\t\t\t\tcase index = sizeof(children) - 1: case 2:\n\t\t\t\t\t\t\t\t\treturn index === 2 ? value + element + element : value + element\n\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\treturn value\n\t\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t})\n\t}\n}\n", "function memoize(fn) {\n var cache = Object.create(null);\n return function (arg) {\n if (cache[arg] === undefined) cache[arg] = fn(arg);\n return cache[arg];\n };\n}\n\nexport { memoize as default };\n", "import { StyleSheet } from '@emotion/sheet';\nimport { dealloc, alloc, next, token, from, peek, delimit, slice, position, RULESET, combine, match, serialize, copy, replace, WEBKIT, MOZ, MS, KEYFRAMES, DECLARATION, hash, charat, strlen, indexof, stringify, rulesheet, middleware, compile } from 'stylis';\nimport '@emotion/weak-memoize';\nimport '@emotion/memoize';\n\nvar identifierWithPointTracking = function identifierWithPointTracking(begin, points, index) {\n var previous = 0;\n var character = 0;\n\n while (true) {\n previous = character;\n character = peek(); // &\\f\n\n if (previous === 38 && character === 12) {\n points[index] = 1;\n }\n\n if (token(character)) {\n break;\n }\n\n next();\n }\n\n return slice(begin, position);\n};\n\nvar toRules = function toRules(parsed, points) {\n // pretend we've started with a comma\n var index = -1;\n var character = 44;\n\n do {\n switch (token(character)) {\n case 0:\n // &\\f\n if (character === 38 && peek() === 12) {\n // this is not 100% correct, we don't account for literal sequences here - like for example quoted strings\n // stylis inserts \\f after & to know when & where it should replace this sequence with the context selector\n // and when it should just concatenate the outer and inner selectors\n // it's very unlikely for this sequence to actually appear in a different context, so we just leverage this fact here\n points[index] = 1;\n }\n\n parsed[index] += identifierWithPointTracking(position - 1, points, index);\n break;\n\n case 2:\n parsed[index] += delimit(character);\n break;\n\n case 4:\n // comma\n if (character === 44) {\n // colon\n parsed[++index] = peek() === 58 ? '&\\f' : '';\n points[index] = parsed[index].length;\n break;\n }\n\n // fallthrough\n\n default:\n parsed[index] += from(character);\n }\n } while (character = next());\n\n return parsed;\n};\n\nvar getRules = function getRules(value, points) {\n return dealloc(toRules(alloc(value), points));\n}; // WeakSet would be more appropriate, but only WeakMap is supported in IE11\n\n\nvar fixedElements = /* #__PURE__ */new WeakMap();\nvar compat = function compat(element) {\n if (element.type !== 'rule' || !element.parent || // positive .length indicates that this rule contains pseudo\n // negative .length indicates that this rule has been already prefixed\n element.length < 1) {\n return;\n }\n\n var value = element.value;\n var parent = element.parent;\n var isImplicitRule = element.column === parent.column && element.line === parent.line;\n\n while (parent.type !== 'rule') {\n parent = parent.parent;\n if (!parent) return;\n } // short-circuit for the simplest case\n\n\n if (element.props.length === 1 && value.charCodeAt(0) !== 58\n /* colon */\n && !fixedElements.get(parent)) {\n return;\n } // if this is an implicitly inserted rule (the one eagerly inserted at the each new nested level)\n // then the props has already been manipulated beforehand as they that array is shared between it and its \"rule parent\"\n\n\n if (isImplicitRule) {\n return;\n }\n\n fixedElements.set(element, true);\n var points = [];\n var rules = getRules(value, points);\n var parentRules = parent.props;\n\n for (var i = 0, k = 0; i < rules.length; i++) {\n for (var j = 0; j < parentRules.length; j++, k++) {\n element.props[k] = points[i] ? rules[i].replace(/&\\f/g, parentRules[j]) : parentRules[j] + \" \" + rules[i];\n }\n }\n};\nvar removeLabel = function removeLabel(element) {\n if (element.type === 'decl') {\n var value = element.value;\n\n if ( // charcode for l\n value.charCodeAt(0) === 108 && // charcode for b\n value.charCodeAt(2) === 98) {\n // this ignores label\n element[\"return\"] = '';\n element.value = '';\n }\n }\n};\n\n/* eslint-disable no-fallthrough */\n\nfunction prefix(value, length) {\n switch (hash(value, length)) {\n // color-adjust\n case 5103:\n return WEBKIT + 'print-' + value + value;\n // animation, animation-(delay|direction|duration|fill-mode|iteration-count|name|play-state|timing-function)\n\n case 5737:\n case 4201:\n case 3177:\n case 3433:\n case 1641:\n case 4457:\n case 2921: // text-decoration, filter, clip-path, backface-visibility, column, box-decoration-break\n\n case 5572:\n case 6356:\n case 5844:\n case 3191:\n case 6645:\n case 3005: // mask, mask-image, mask-(mode|clip|size), mask-(repeat|origin), mask-position, mask-composite,\n\n case 6391:\n case 5879:\n case 5623:\n case 6135:\n case 4599:\n case 4855: // background-clip, columns, column-(count|fill|gap|rule|rule-color|rule-style|rule-width|span|width)\n\n case 4215:\n case 6389:\n case 5109:\n case 5365:\n case 5621:\n case 3829:\n return WEBKIT + value + value;\n // appearance, user-select, transform, hyphens, text-size-adjust\n\n case 5349:\n case 4246:\n case 4810:\n case 6968:\n case 2756:\n return WEBKIT + value + MOZ + value + MS + value + value;\n // flex, flex-direction\n\n case 6828:\n case 4268:\n return WEBKIT + value + MS + value + value;\n // order\n\n case 6165:\n return WEBKIT + value + MS + 'flex-' + value + value;\n // align-items\n\n case 5187:\n return WEBKIT + value + replace(value, /(\\w+).+(:[^]+)/, WEBKIT + 'box-$1$2' + MS + 'flex-$1$2') + value;\n // align-self\n\n case 5443:\n return WEBKIT + value + MS + 'flex-item-' + replace(value, /flex-|-self/, '') + value;\n // align-content\n\n case 4675:\n return WEBKIT + value + MS + 'flex-line-pack' + replace(value, /align-content|flex-|-self/, '') + value;\n // flex-shrink\n\n case 5548:\n return WEBKIT + value + MS + replace(value, 'shrink', 'negative') + value;\n // flex-basis\n\n case 5292:\n return WEBKIT + value + MS + replace(value, 'basis', 'preferred-size') + value;\n // flex-grow\n\n case 6060:\n return WEBKIT + 'box-' + replace(value, '-grow', '') + WEBKIT + value + MS + replace(value, 'grow', 'positive') + value;\n // transition\n\n case 4554:\n return WEBKIT + replace(value, /([^-])(transform)/g, '$1' + WEBKIT + '$2') + value;\n // cursor\n\n case 6187:\n return replace(replace(replace(value, /(zoom-|grab)/, WEBKIT + '$1'), /(image-set)/, WEBKIT + '$1'), value, '') + value;\n // background, background-image\n\n case 5495:\n case 3959:\n return replace(value, /(image-set\\([^]*)/, WEBKIT + '$1' + '$`$1');\n // justify-content\n\n case 4968:\n return replace(replace(value, /(.+:)(flex-)?(.*)/, WEBKIT + 'box-pack:$3' + MS + 'flex-pack:$3'), /s.+-b[^;]+/, 'justify') + WEBKIT + value + value;\n // (margin|padding)-inline-(start|end)\n\n case 4095:\n case 3583:\n case 4068:\n case 2532:\n return replace(value, /(.+)-inline(.+)/, WEBKIT + '$1$2') + value;\n // (min|max)?(width|height|inline-size|block-size)\n\n case 8116:\n case 7059:\n case 5753:\n case 5535:\n case 5445:\n case 5701:\n case 4933:\n case 4677:\n case 5533:\n case 5789:\n case 5021:\n case 4765:\n // stretch, max-content, min-content, fill-available\n if (strlen(value) - 1 - length > 6) switch (charat(value, length + 1)) {\n // (m)ax-content, (m)in-content\n case 109:\n // -\n if (charat(value, length + 4) !== 45) break;\n // (f)ill-available, (f)it-content\n\n case 102:\n return replace(value, /(.+:)(.+)-([^]+)/, '$1' + WEBKIT + '$2-$3' + '$1' + MOZ + (charat(value, length + 3) == 108 ? '$3' : '$2-$3')) + value;\n // (s)tretch\n\n case 115:\n return ~indexof(value, 'stretch') ? prefix(replace(value, 'stretch', 'fill-available'), length) + value : value;\n }\n break;\n // position: sticky\n\n case 4949:\n // (s)ticky?\n if (charat(value, length + 1) !== 115) break;\n // display: (flex|inline-flex)\n\n case 6444:\n switch (charat(value, strlen(value) - 3 - (~indexof(value, '!important') && 10))) {\n // stic(k)y\n case 107:\n return replace(value, ':', ':' + WEBKIT) + value;\n // (inline-)?fl(e)x\n\n case 101:\n return replace(value, /(.+:)([^;!]+)(;|!.+)?/, '$1' + WEBKIT + (charat(value, 14) === 45 ? 'inline-' : '') + 'box$3' + '$1' + WEBKIT + '$2$3' + '$1' + MS + '$2box$3') + value;\n }\n\n break;\n // writing-mode\n\n case 5936:\n switch (charat(value, length + 11)) {\n // vertical-l(r)\n case 114:\n return WEBKIT + value + MS + replace(value, /[svh]\\w+-[tblr]{2}/, 'tb') + value;\n // vertical-r(l)\n\n case 108:\n return WEBKIT + value + MS + replace(value, /[svh]\\w+-[tblr]{2}/, 'tb-rl') + value;\n // horizontal(-)tb\n\n case 45:\n return WEBKIT + value + MS + replace(value, /[svh]\\w+-[tblr]{2}/, 'lr') + value;\n }\n\n return WEBKIT + value + MS + value + value;\n }\n\n return value;\n}\n\nvar prefixer = function prefixer(element, index, children, callback) {\n if (element.length > -1) if (!element[\"return\"]) switch (element.type) {\n case DECLARATION:\n element[\"return\"] = prefix(element.value, element.length);\n break;\n\n case KEYFRAMES:\n return serialize([copy(element, {\n value: replace(element.value, '@', '@' + WEBKIT)\n })], callback);\n\n case RULESET:\n if (element.length) return combine(element.props, function (value) {\n switch (match(value, /(::plac\\w+|:read-\\w+)/)) {\n // :read-(only|write)\n case ':read-only':\n case ':read-write':\n return serialize([copy(element, {\n props: [replace(value, /:(read-\\w+)/, ':' + MOZ + '$1')]\n })], callback);\n // :placeholder\n\n case '::placeholder':\n return serialize([copy(element, {\n props: [replace(value, /:(plac\\w+)/, ':' + WEBKIT + 'input-$1')]\n }), copy(element, {\n props: [replace(value, /:(plac\\w+)/, ':' + MOZ + '$1')]\n }), copy(element, {\n props: [replace(value, /:(plac\\w+)/, MS + 'input-$1')]\n })], callback);\n }\n\n return '';\n });\n }\n};\n\nvar defaultStylisPlugins = [prefixer];\n\nvar createCache = function createCache(options) {\n var key = options.key;\n\n if (key === 'css') {\n var ssrStyles = document.querySelectorAll(\"style[data-emotion]:not([data-s])\"); // get SSRed styles out of the way of React's hydration\n // document.head is a safe place to move them to(though note document.head is not necessarily the last place they will be)\n // note this very very intentionally targets all style elements regardless of the key to ensure\n // that creating a cache works inside of render of a React component\n\n Array.prototype.forEach.call(ssrStyles, function (node) {\n // we want to only move elements which have a space in the data-emotion attribute value\n // because that indicates that it is an Emotion 11 server-side rendered style elements\n // while we will already ignore Emotion 11 client-side inserted styles because of the :not([data-s]) part in the selector\n // Emotion 10 client-side inserted styles did not have data-s (but importantly did not have a space in their data-emotion attributes)\n // so checking for the space ensures that loading Emotion 11 after Emotion 10 has inserted some styles\n // will not result in the Emotion 10 styles being destroyed\n var dataEmotionAttribute = node.getAttribute('data-emotion');\n\n if (dataEmotionAttribute.indexOf(' ') === -1) {\n return;\n }\n\n document.head.appendChild(node);\n node.setAttribute('data-s', '');\n });\n }\n\n var stylisPlugins = options.stylisPlugins || defaultStylisPlugins;\n\n var inserted = {};\n var container;\n var nodesToHydrate = [];\n\n {\n container = options.container || document.head;\n Array.prototype.forEach.call( // this means we will ignore elements which don't have a space in them which\n // means that the style elements we're looking at are only Emotion 11 server-rendered style elements\n document.querySelectorAll(\"style[data-emotion^=\\\"\" + key + \" \\\"]\"), function (node) {\n var attrib = node.getAttribute(\"data-emotion\").split(' ');\n\n for (var i = 1; i < attrib.length; i++) {\n inserted[attrib[i]] = true;\n }\n\n nodesToHydrate.push(node);\n });\n }\n\n var _insert;\n\n var omnipresentPlugins = [compat, removeLabel];\n\n {\n var currentSheet;\n var finalizingPlugins = [stringify, rulesheet(function (rule) {\n currentSheet.insert(rule);\n })];\n var serializer = middleware(omnipresentPlugins.concat(stylisPlugins, finalizingPlugins));\n\n var stylis = function stylis(styles) {\n return serialize(compile(styles), serializer);\n };\n\n _insert = function insert(selector, serialized, sheet, shouldCache) {\n currentSheet = sheet;\n\n stylis(selector ? selector + \"{\" + serialized.styles + \"}\" : serialized.styles);\n\n if (shouldCache) {\n cache.inserted[serialized.name] = true;\n }\n };\n }\n\n var cache = {\n key: key,\n sheet: new StyleSheet({\n key: key,\n container: container,\n nonce: options.nonce,\n speedy: options.speedy,\n prepend: options.prepend,\n insertionPoint: options.insertionPoint\n }),\n nonce: options.nonce,\n inserted: inserted,\n registered: {},\n insert: _insert\n };\n cache.sheet.hydrate(nodesToHydrate);\n return cache;\n};\n\nexport { createCache as default };\n", "var isBrowser = true;\n\nfunction getRegisteredStyles(registered, registeredStyles, classNames) {\n var rawClassName = '';\n classNames.split(' ').forEach(function (className) {\n if (registered[className] !== undefined) {\n registeredStyles.push(registered[className] + \";\");\n } else if (className) {\n rawClassName += className + \" \";\n }\n });\n return rawClassName;\n}\nvar registerStyles = function registerStyles(cache, serialized, isStringTag) {\n var className = cache.key + \"-\" + serialized.name;\n\n if ( // we only need to add the styles to the registered cache if the\n // class name could be used further down\n // the tree but if it's a string tag, we know it won't\n // so we don't have to add it to registered cache.\n // this improves memory usage since we can avoid storing the whole style string\n (isStringTag === false || // we need to always store it if we're in compat mode and\n // in node since emotion-server relies on whether a style is in\n // the registered cache to know whether a style is global or not\n // also, note that this check will be dead code eliminated in the browser\n isBrowser === false ) && cache.registered[className] === undefined) {\n cache.registered[className] = serialized.styles;\n }\n};\nvar insertStyles = function insertStyles(cache, serialized, isStringTag) {\n registerStyles(cache, serialized, isStringTag);\n var className = cache.key + \"-\" + serialized.name;\n\n if (cache.inserted[serialized.name] === undefined) {\n var current = serialized;\n\n do {\n cache.insert(serialized === current ? \".\" + className : '', current, cache.sheet, true);\n\n current = current.next;\n } while (current !== undefined);\n }\n};\n\nexport { getRegisteredStyles, insertStyles, registerStyles };\n", "/* eslint-disable */\n// Inspired by https://github.com/garycourt/murmurhash-js\n// Ported from https://github.com/aappleby/smhasher/blob/61a0530f28277f2e850bfc39600ce61d02b518de/src/MurmurHash2.cpp#L37-L86\nfunction murmur2(str) {\n // 'm' and 'r' are mixing constants generated offline.\n // They're not really 'magic', they just happen to work well.\n // const m = 0x5bd1e995;\n // const r = 24;\n // Initialize the hash\n var h = 0; // Mix 4 bytes at a time into the hash\n\n var k,\n i = 0,\n len = str.length;\n\n for (; len >= 4; ++i, len -= 4) {\n k = str.charCodeAt(i) & 0xff | (str.charCodeAt(++i) & 0xff) << 8 | (str.charCodeAt(++i) & 0xff) << 16 | (str.charCodeAt(++i) & 0xff) << 24;\n k =\n /* Math.imul(k, m): */\n (k & 0xffff) * 0x5bd1e995 + ((k >>> 16) * 0xe995 << 16);\n k ^=\n /* k >>> r: */\n k >>> 24;\n h =\n /* Math.imul(k, m): */\n (k & 0xffff) * 0x5bd1e995 + ((k >>> 16) * 0xe995 << 16) ^\n /* Math.imul(h, m): */\n (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n } // Handle the last few bytes of the input array\n\n\n switch (len) {\n case 3:\n h ^= (str.charCodeAt(i + 2) & 0xff) << 16;\n\n case 2:\n h ^= (str.charCodeAt(i + 1) & 0xff) << 8;\n\n case 1:\n h ^= str.charCodeAt(i) & 0xff;\n h =\n /* Math.imul(h, m): */\n (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n } // Do a few final mixes of the hash to ensure the last few\n // bytes are well-incorporated.\n\n\n h ^= h >>> 13;\n h =\n /* Math.imul(h, m): */\n (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n return ((h ^ h >>> 15) >>> 0).toString(36);\n}\n\nexport { murmur2 as default };\n", "var unitlessKeys = {\n animationIterationCount: 1,\n aspectRatio: 1,\n borderImageOutset: 1,\n borderImageSlice: 1,\n borderImageWidth: 1,\n boxFlex: 1,\n boxFlexGroup: 1,\n boxOrdinalGroup: 1,\n columnCount: 1,\n columns: 1,\n flex: 1,\n flexGrow: 1,\n flexPositive: 1,\n flexShrink: 1,\n flexNegative: 1,\n flexOrder: 1,\n gridRow: 1,\n gridRowEnd: 1,\n gridRowSpan: 1,\n gridRowStart: 1,\n gridColumn: 1,\n gridColumnEnd: 1,\n gridColumnSpan: 1,\n gridColumnStart: 1,\n msGridRow: 1,\n msGridRowSpan: 1,\n msGridColumn: 1,\n msGridColumnSpan: 1,\n fontWeight: 1,\n lineHeight: 1,\n opacity: 1,\n order: 1,\n orphans: 1,\n scale: 1,\n tabSize: 1,\n widows: 1,\n zIndex: 1,\n zoom: 1,\n WebkitLineClamp: 1,\n // SVG-related properties\n fillOpacity: 1,\n floodOpacity: 1,\n stopOpacity: 1,\n strokeDasharray: 1,\n strokeDashoffset: 1,\n strokeMiterlimit: 1,\n strokeOpacity: 1,\n strokeWidth: 1\n};\n\nexport { unitlessKeys as default };\n", "import hashString from '@emotion/hash';\nimport unitless from '@emotion/unitless';\nimport memoize from '@emotion/memoize';\n\nvar isDevelopment = false;\n\nvar hyphenateRegex = /[A-Z]|^ms/g;\nvar animationRegex = /_EMO_([^_]+?)_([^]*?)_EMO_/g;\n\nvar isCustomProperty = function isCustomProperty(property) {\n return property.charCodeAt(1) === 45;\n};\n\nvar isProcessableValue = function isProcessableValue(value) {\n return value != null && typeof value !== 'boolean';\n};\n\nvar processStyleName = /* #__PURE__ */memoize(function (styleName) {\n return isCustomProperty(styleName) ? styleName : styleName.replace(hyphenateRegex, '-$&').toLowerCase();\n});\n\nvar processStyleValue = function processStyleValue(key, value) {\n switch (key) {\n case 'animation':\n case 'animationName':\n {\n if (typeof value === 'string') {\n return value.replace(animationRegex, function (match, p1, p2) {\n cursor = {\n name: p1,\n styles: p2,\n next: cursor\n };\n return p1;\n });\n }\n }\n }\n\n if (unitless[key] !== 1 && !isCustomProperty(key) && typeof value === 'number' && value !== 0) {\n return value + 'px';\n }\n\n return value;\n};\n\nvar noComponentSelectorMessage = 'Component selectors can only be used in conjunction with ' + '@emotion/babel-plugin, the swc Emotion plugin, or another Emotion-aware ' + 'compiler transform.';\n\nfunction handleInterpolation(mergedProps, registered, interpolation) {\n if (interpolation == null) {\n return '';\n }\n\n var componentSelector = interpolation;\n\n if (componentSelector.__emotion_styles !== undefined) {\n\n return componentSelector;\n }\n\n switch (typeof interpolation) {\n case 'boolean':\n {\n return '';\n }\n\n case 'object':\n {\n var keyframes = interpolation;\n\n if (keyframes.anim === 1) {\n cursor = {\n name: keyframes.name,\n styles: keyframes.styles,\n next: cursor\n };\n return keyframes.name;\n }\n\n var serializedStyles = interpolation;\n\n if (serializedStyles.styles !== undefined) {\n var next = serializedStyles.next;\n\n if (next !== undefined) {\n // not the most efficient thing ever but this is a pretty rare case\n // and there will be very few iterations of this generally\n while (next !== undefined) {\n cursor = {\n name: next.name,\n styles: next.styles,\n next: cursor\n };\n next = next.next;\n }\n }\n\n var styles = serializedStyles.styles + \";\";\n return styles;\n }\n\n return createStringFromObject(mergedProps, registered, interpolation);\n }\n\n case 'function':\n {\n if (mergedProps !== undefined) {\n var previousCursor = cursor;\n var result = interpolation(mergedProps);\n cursor = previousCursor;\n return handleInterpolation(mergedProps, registered, result);\n }\n\n break;\n }\n } // finalize string values (regular strings and functions interpolated into css calls)\n\n\n var asString = interpolation;\n\n if (registered == null) {\n return asString;\n }\n\n var cached = registered[asString];\n return cached !== undefined ? cached : asString;\n}\n\nfunction createStringFromObject(mergedProps, registered, obj) {\n var string = '';\n\n if (Array.isArray(obj)) {\n for (var i = 0; i < obj.length; i++) {\n string += handleInterpolation(mergedProps, registered, obj[i]) + \";\";\n }\n } else {\n for (var key in obj) {\n var value = obj[key];\n\n if (typeof value !== 'object') {\n var asString = value;\n\n if (registered != null && registered[asString] !== undefined) {\n string += key + \"{\" + registered[asString] + \"}\";\n } else if (isProcessableValue(asString)) {\n string += processStyleName(key) + \":\" + processStyleValue(key, asString) + \";\";\n }\n } else {\n if (key === 'NO_COMPONENT_SELECTOR' && isDevelopment) {\n throw new Error(noComponentSelectorMessage);\n }\n\n if (Array.isArray(value) && typeof value[0] === 'string' && (registered == null || registered[value[0]] === undefined)) {\n for (var _i = 0; _i < value.length; _i++) {\n if (isProcessableValue(value[_i])) {\n string += processStyleName(key) + \":\" + processStyleValue(key, value[_i]) + \";\";\n }\n }\n } else {\n var interpolated = handleInterpolation(mergedProps, registered, value);\n\n switch (key) {\n case 'animation':\n case 'animationName':\n {\n string += processStyleName(key) + \":\" + interpolated + \";\";\n break;\n }\n\n default:\n {\n\n string += key + \"{\" + interpolated + \"}\";\n }\n }\n }\n }\n }\n }\n\n return string;\n}\n\nvar labelPattern = /label:\\s*([^\\s;{]+)\\s*(;|$)/g; // this is the cursor for keyframes\n// keyframes are stored on the SerializedStyles object as a linked list\n\nvar cursor;\nfunction serializeStyles(args, registered, mergedProps) {\n if (args.length === 1 && typeof args[0] === 'object' && args[0] !== null && args[0].styles !== undefined) {\n return args[0];\n }\n\n var stringMode = true;\n var styles = '';\n cursor = undefined;\n var strings = args[0];\n\n if (strings == null || strings.raw === undefined) {\n stringMode = false;\n styles += handleInterpolation(mergedProps, registered, strings);\n } else {\n var asTemplateStringsArr = strings;\n\n styles += asTemplateStringsArr[0];\n } // we start at 1 since we've already handled the first arg\n\n\n for (var i = 1; i < args.length; i++) {\n styles += handleInterpolation(mergedProps, registered, args[i]);\n\n if (stringMode) {\n var templateStringsArr = strings;\n\n styles += templateStringsArr[i];\n }\n } // using a global regex with .exec is stateful so lastIndex has to be reset each time\n\n\n labelPattern.lastIndex = 0;\n var identifierName = '';\n var match; // https://esbench.com/bench/5b809c2cf2949800a0f61fb5\n\n while ((match = labelPattern.exec(styles)) !== null) {\n identifierName += '-' + match[1];\n }\n\n var name = hashString(styles) + identifierName;\n\n return {\n name: name,\n styles: styles,\n next: cursor\n };\n}\n\nexport { serializeStyles };\n", "import * as React from 'react';\n\nvar syncFallback = function syncFallback(create) {\n return create();\n};\n\nvar useInsertionEffect = React['useInsertion' + 'Effect'] ? React['useInsertion' + 'Effect'] : false;\nvar useInsertionEffectAlwaysWithSyncFallback = useInsertionEffect || syncFallback;\nvar useInsertionEffectWithLayoutFallback = useInsertionEffect || React.useLayoutEffect;\n\nexport { useInsertionEffectAlwaysWithSyncFallback, useInsertionEffectWithLayoutFallback };\n", "import { h as hasOwn, E as Emotion, c as createEmotionProps, w as withEmotionCache, T as ThemeContext, i as isDevelopment } from './emotion-element-f0de968e.browser.esm.js';\nexport { C as CacheProvider, T as ThemeContext, a as ThemeProvider, _ as __unsafe_useEmotionCache, u as useTheme, w as withEmotionCache, b as withTheme } from './emotion-element-f0de968e.browser.esm.js';\nimport * as React from 'react';\nimport { insertStyles, registerStyles, getRegisteredStyles } from '@emotion/utils';\nimport { useInsertionEffectWithLayoutFallback, useInsertionEffectAlwaysWithSyncFallback } from '@emotion/use-insertion-effect-with-fallbacks';\nimport { serializeStyles } from '@emotion/serialize';\nimport '@emotion/cache';\nimport '@babel/runtime/helpers/extends';\nimport '@emotion/weak-memoize';\nimport '../_isolated-hnrs/dist/emotion-react-_isolated-hnrs.browser.esm.js';\nimport 'hoist-non-react-statics';\n\nvar jsx = function jsx(type, props) {\n // eslint-disable-next-line prefer-rest-params\n var args = arguments;\n\n if (props == null || !hasOwn.call(props, 'css')) {\n return React.createElement.apply(undefined, args);\n }\n\n var argsLength = args.length;\n var createElementArgArray = new Array(argsLength);\n createElementArgArray[0] = Emotion;\n createElementArgArray[1] = createEmotionProps(type, props);\n\n for (var i = 2; i < argsLength; i++) {\n createElementArgArray[i] = args[i];\n }\n\n return React.createElement.apply(null, createElementArgArray);\n};\n\n(function (_jsx) {\n var JSX;\n\n (function (_JSX) {})(JSX || (JSX = _jsx.JSX || (_jsx.JSX = {})));\n})(jsx || (jsx = {}));\n\n// initial render from browser, insertBefore context.sheet.tags[0] or if a style hasn't been inserted there yet, appendChild\n// initial client-side render from SSR, use place of hydrating tag\n\nvar Global = /* #__PURE__ */withEmotionCache(function (props, cache) {\n\n var styles = props.styles;\n var serialized = serializeStyles([styles], undefined, React.useContext(ThemeContext));\n // but it is based on a constant that will never change at runtime\n // it's effectively like having two implementations and switching them out\n // so it's not actually breaking anything\n\n\n var sheetRef = React.useRef();\n useInsertionEffectWithLayoutFallback(function () {\n var key = cache.key + \"-global\"; // use case of https://github.com/emotion-js/emotion/issues/2675\n\n var sheet = new cache.sheet.constructor({\n key: key,\n nonce: cache.sheet.nonce,\n container: cache.sheet.container,\n speedy: cache.sheet.isSpeedy\n });\n var rehydrating = false;\n var node = document.querySelector(\"style[data-emotion=\\\"\" + key + \" \" + serialized.name + \"\\\"]\");\n\n if (cache.sheet.tags.length) {\n sheet.before = cache.sheet.tags[0];\n }\n\n if (node !== null) {\n rehydrating = true; // clear the hash so this node won't be recognizable as rehydratable by other <Global/>s\n\n node.setAttribute('data-emotion', key);\n sheet.hydrate([node]);\n }\n\n sheetRef.current = [sheet, rehydrating];\n return function () {\n sheet.flush();\n };\n }, [cache]);\n useInsertionEffectWithLayoutFallback(function () {\n var sheetRefCurrent = sheetRef.current;\n var sheet = sheetRefCurrent[0],\n rehydrating = sheetRefCurrent[1];\n\n if (rehydrating) {\n sheetRefCurrent[1] = false;\n return;\n }\n\n if (serialized.next !== undefined) {\n // insert keyframes\n insertStyles(cache, serialized.next, true);\n }\n\n if (sheet.tags.length) {\n // if this doesn't exist then it will be null so the style element will be appended\n var element = sheet.tags[sheet.tags.length - 1].nextElementSibling;\n sheet.before = element;\n sheet.flush();\n }\n\n cache.insert(\"\", serialized, sheet, false);\n }, [cache, serialized.name]);\n return null;\n});\n\nfunction css() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return serializeStyles(args);\n}\n\nfunction keyframes() {\n var insertable = css.apply(void 0, arguments);\n var name = \"animation-\" + insertable.name;\n return {\n name: name,\n styles: \"@keyframes \" + name + \"{\" + insertable.styles + \"}\",\n anim: 1,\n toString: function toString() {\n return \"_EMO_\" + this.name + \"_\" + this.styles + \"_EMO_\";\n }\n };\n}\n\nvar classnames = function classnames(args) {\n var len = args.length;\n var i = 0;\n var cls = '';\n\n for (; i < len; i++) {\n var arg = args[i];\n if (arg == null) continue;\n var toAdd = void 0;\n\n switch (typeof arg) {\n case 'boolean':\n break;\n\n case 'object':\n {\n if (Array.isArray(arg)) {\n toAdd = classnames(arg);\n } else {\n\n toAdd = '';\n\n for (var k in arg) {\n if (arg[k] && k) {\n toAdd && (toAdd += ' ');\n toAdd += k;\n }\n }\n }\n\n break;\n }\n\n default:\n {\n toAdd = arg;\n }\n }\n\n if (toAdd) {\n cls && (cls += ' ');\n cls += toAdd;\n }\n }\n\n return cls;\n};\n\nfunction merge(registered, css, className) {\n var registeredStyles = [];\n var rawClassName = getRegisteredStyles(registered, registeredStyles, className);\n\n if (registeredStyles.length < 2) {\n return className;\n }\n\n return rawClassName + css(registeredStyles);\n}\n\nvar Insertion = function Insertion(_ref) {\n var cache = _ref.cache,\n serializedArr = _ref.serializedArr;\n useInsertionEffectAlwaysWithSyncFallback(function () {\n\n for (var i = 0; i < serializedArr.length; i++) {\n insertStyles(cache, serializedArr[i], false);\n }\n });\n\n return null;\n};\n\nvar ClassNames = /* #__PURE__ */withEmotionCache(function (props, cache) {\n var hasRendered = false;\n var serializedArr = [];\n\n var css = function css() {\n if (hasRendered && isDevelopment) {\n throw new Error('css can only be used during render');\n }\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n var serialized = serializeStyles(args, cache.registered);\n serializedArr.push(serialized); // registration has to happen here as the result of this might get consumed by `cx`\n\n registerStyles(cache, serialized, false);\n return cache.key + \"-\" + serialized.name;\n };\n\n var cx = function cx() {\n if (hasRendered && isDevelopment) {\n throw new Error('cx can only be used during render');\n }\n\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n return merge(cache.registered, css, classnames(args));\n };\n\n var content = {\n css: css,\n cx: cx,\n theme: React.useContext(ThemeContext)\n };\n var ele = props.children(content);\n hasRendered = true;\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Insertion, {\n cache: cache,\n serializedArr: serializedArr\n }), ele);\n});\n\nexport { ClassNames, Global, jsx as createElement, css, jsx, keyframes };\n", "function _taggedTemplateLiteral(e, t) {\n return t || (t = e.slice(0)), Object.freeze(Object.defineProperties(e, {\n raw: {\n value: Object.freeze(t)\n }\n }));\n}\nexport { _taggedTemplateLiteral as default };", "import _objectSpread from '@babel/runtime/helpers/esm/objectSpread2';\nimport _extends from '@babel/runtime/helpers/esm/extends';\nimport { jsx, keyframes, css as css$2 } from '@emotion/react';\nimport _slicedToArray from '@babel/runtime/helpers/esm/slicedToArray';\nimport _objectWithoutProperties from '@babel/runtime/helpers/esm/objectWithoutProperties';\nimport _typeof from '@babel/runtime/helpers/esm/typeof';\nimport _taggedTemplateLiteral from '@babel/runtime/helpers/esm/taggedTemplateLiteral';\nimport _defineProperty from '@babel/runtime/helpers/esm/defineProperty';\nimport { useContext, useRef, useState, useMemo, useCallback, createContext } from 'react';\nimport { createPortal } from 'react-dom';\nimport { autoUpdate } from '@floating-ui/dom';\nimport useLayoutEffect from 'use-isomorphic-layout-effect';\n\nvar _excluded$4 = [\"className\", \"clearValue\", \"cx\", \"getStyles\", \"getClassNames\", \"getValue\", \"hasValue\", \"isMulti\", \"isRtl\", \"options\", \"selectOption\", \"selectProps\", \"setValue\", \"theme\"];\n// ==============================\n// NO OP\n// ==============================\n\nvar noop = function noop() {};\n\n// ==============================\n// Class Name Prefixer\n// ==============================\n\n/**\n String representation of component state for styling with class names.\n\n Expects an array of strings OR a string/object pair:\n - className(['comp', 'comp-arg', 'comp-arg-2'])\n @returns 'react-select__comp react-select__comp-arg react-select__comp-arg-2'\n - className('comp', { some: true, state: false })\n @returns 'react-select__comp react-select__comp--some'\n*/\nfunction applyPrefixToName(prefix, name) {\n if (!name) {\n return prefix;\n } else if (name[0] === '-') {\n return prefix + name;\n } else {\n return prefix + '__' + name;\n }\n}\nfunction classNames(prefix, state) {\n for (var _len = arguments.length, classNameList = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n classNameList[_key - 2] = arguments[_key];\n }\n var arr = [].concat(classNameList);\n if (state && prefix) {\n for (var key in state) {\n if (state.hasOwnProperty(key) && state[key]) {\n arr.push(\"\".concat(applyPrefixToName(prefix, key)));\n }\n }\n }\n return arr.filter(function (i) {\n return i;\n }).map(function (i) {\n return String(i).trim();\n }).join(' ');\n}\n// ==============================\n// Clean Value\n// ==============================\n\nvar cleanValue = function cleanValue(value) {\n if (isArray(value)) return value.filter(Boolean);\n if (_typeof(value) === 'object' && value !== null) return [value];\n return [];\n};\n\n// ==============================\n// Clean Common Props\n// ==============================\n\nvar cleanCommonProps = function cleanCommonProps(props) {\n //className\n props.className;\n props.clearValue;\n props.cx;\n props.getStyles;\n props.getClassNames;\n props.getValue;\n props.hasValue;\n props.isMulti;\n props.isRtl;\n props.options;\n props.selectOption;\n props.selectProps;\n props.setValue;\n props.theme;\n var innerProps = _objectWithoutProperties(props, _excluded$4);\n return _objectSpread({}, innerProps);\n};\n\n// ==============================\n// Get Style Props\n// ==============================\n\nvar getStyleProps = function getStyleProps(props, name, classNamesState) {\n var cx = props.cx,\n getStyles = props.getStyles,\n getClassNames = props.getClassNames,\n className = props.className;\n return {\n css: getStyles(name, props),\n className: cx(classNamesState !== null && classNamesState !== void 0 ? classNamesState : {}, getClassNames(name, props), className)\n };\n};\n\n// ==============================\n// Handle Input Change\n// ==============================\n\nfunction handleInputChange(inputValue, actionMeta, onInputChange) {\n if (onInputChange) {\n var _newValue = onInputChange(inputValue, actionMeta);\n if (typeof _newValue === 'string') return _newValue;\n }\n return inputValue;\n}\n\n// ==============================\n// Scroll Helpers\n// ==============================\n\nfunction isDocumentElement(el) {\n return [document.documentElement, document.body, window].indexOf(el) > -1;\n}\n\n// Normalized Scroll Top\n// ------------------------------\n\nfunction normalizedHeight(el) {\n if (isDocumentElement(el)) {\n return window.innerHeight;\n }\n return el.clientHeight;\n}\n\n// Normalized scrollTo & scrollTop\n// ------------------------------\n\nfunction getScrollTop(el) {\n if (isDocumentElement(el)) {\n return window.pageYOffset;\n }\n return el.scrollTop;\n}\nfunction scrollTo(el, top) {\n // with a scroll distance, we perform scroll on the element\n if (isDocumentElement(el)) {\n window.scrollTo(0, top);\n return;\n }\n el.scrollTop = top;\n}\n\n// Get Scroll Parent\n// ------------------------------\n\nfunction getScrollParent(element) {\n var style = getComputedStyle(element);\n var excludeStaticParent = style.position === 'absolute';\n var overflowRx = /(auto|scroll)/;\n if (style.position === 'fixed') return document.documentElement;\n for (var parent = element; parent = parent.parentElement;) {\n style = getComputedStyle(parent);\n if (excludeStaticParent && style.position === 'static') {\n continue;\n }\n if (overflowRx.test(style.overflow + style.overflowY + style.overflowX)) {\n return parent;\n }\n }\n return document.documentElement;\n}\n\n// Animated Scroll To\n// ------------------------------\n\n/**\n @param t: time (elapsed)\n @param b: initial value\n @param c: amount of change\n @param d: duration\n*/\nfunction easeOutCubic(t, b, c, d) {\n return c * ((t = t / d - 1) * t * t + 1) + b;\n}\nfunction animatedScrollTo(element, to) {\n var duration = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 200;\n var callback = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : noop;\n var start = getScrollTop(element);\n var change = to - start;\n var increment = 10;\n var currentTime = 0;\n function animateScroll() {\n currentTime += increment;\n var val = easeOutCubic(currentTime, start, change, duration);\n scrollTo(element, val);\n if (currentTime < duration) {\n window.requestAnimationFrame(animateScroll);\n } else {\n callback(element);\n }\n }\n animateScroll();\n}\n\n// Scroll Into View\n// ------------------------------\n\nfunction scrollIntoView(menuEl, focusedEl) {\n var menuRect = menuEl.getBoundingClientRect();\n var focusedRect = focusedEl.getBoundingClientRect();\n var overScroll = focusedEl.offsetHeight / 3;\n if (focusedRect.bottom + overScroll > menuRect.bottom) {\n scrollTo(menuEl, Math.min(focusedEl.offsetTop + focusedEl.clientHeight - menuEl.offsetHeight + overScroll, menuEl.scrollHeight));\n } else if (focusedRect.top - overScroll < menuRect.top) {\n scrollTo(menuEl, Math.max(focusedEl.offsetTop - overScroll, 0));\n }\n}\n\n// ==============================\n// Get bounding client object\n// ==============================\n\n// cannot get keys using array notation with DOMRect\nfunction getBoundingClientObj(element) {\n var rect = element.getBoundingClientRect();\n return {\n bottom: rect.bottom,\n height: rect.height,\n left: rect.left,\n right: rect.right,\n top: rect.top,\n width: rect.width\n };\n}\n\n// ==============================\n// Touch Capability Detector\n// ==============================\n\nfunction isTouchCapable() {\n try {\n document.createEvent('TouchEvent');\n return true;\n } catch (e) {\n return false;\n }\n}\n\n// ==============================\n// Mobile Device Detector\n// ==============================\n\nfunction isMobileDevice() {\n try {\n return /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);\n } catch (e) {\n return false;\n }\n}\n\n// ==============================\n// Passive Event Detector\n// ==============================\n\n// https://github.com/rafgraph/detect-it/blob/main/src/index.ts#L19-L36\nvar passiveOptionAccessed = false;\nvar options = {\n get passive() {\n return passiveOptionAccessed = true;\n }\n};\n// check for SSR\nvar w = typeof window !== 'undefined' ? window : {};\nif (w.addEventListener && w.removeEventListener) {\n w.addEventListener('p', noop, options);\n w.removeEventListener('p', noop, false);\n}\nvar supportsPassiveEvents = passiveOptionAccessed;\nfunction notNullish(item) {\n return item != null;\n}\nfunction isArray(arg) {\n return Array.isArray(arg);\n}\nfunction valueTernary(isMulti, multiValue, singleValue) {\n return isMulti ? multiValue : singleValue;\n}\nfunction singleValueAsValue(singleValue) {\n return singleValue;\n}\nfunction multiValueAsValue(multiValue) {\n return multiValue;\n}\nvar removeProps = function removeProps(propsObj) {\n for (var _len2 = arguments.length, properties = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n properties[_key2 - 1] = arguments[_key2];\n }\n var propsMap = Object.entries(propsObj).filter(function (_ref) {\n var _ref2 = _slicedToArray(_ref, 1),\n key = _ref2[0];\n return !properties.includes(key);\n });\n return propsMap.reduce(function (newProps, _ref3) {\n var _ref4 = _slicedToArray(_ref3, 2),\n key = _ref4[0],\n val = _ref4[1];\n newProps[key] = val;\n return newProps;\n }, {});\n};\n\nvar _excluded$3 = [\"children\", \"innerProps\"],\n _excluded2$1 = [\"children\", \"innerProps\"];\nfunction getMenuPlacement(_ref) {\n var preferredMaxHeight = _ref.maxHeight,\n menuEl = _ref.menuEl,\n minHeight = _ref.minHeight,\n preferredPlacement = _ref.placement,\n shouldScroll = _ref.shouldScroll,\n isFixedPosition = _ref.isFixedPosition,\n controlHeight = _ref.controlHeight;\n var scrollParent = getScrollParent(menuEl);\n var defaultState = {\n placement: 'bottom',\n maxHeight: preferredMaxHeight\n };\n\n // something went wrong, return default state\n if (!menuEl || !menuEl.offsetParent) return defaultState;\n\n // we can't trust `scrollParent.scrollHeight` --> it may increase when\n // the menu is rendered\n var _scrollParent$getBoun = scrollParent.getBoundingClientRect(),\n scrollHeight = _scrollParent$getBoun.height;\n var _menuEl$getBoundingCl = menuEl.getBoundingClientRect(),\n menuBottom = _menuEl$getBoundingCl.bottom,\n menuHeight = _menuEl$getBoundingCl.height,\n menuTop = _menuEl$getBoundingCl.top;\n var _menuEl$offsetParent$ = menuEl.offsetParent.getBoundingClientRect(),\n containerTop = _menuEl$offsetParent$.top;\n var viewHeight = isFixedPosition ? window.innerHeight : normalizedHeight(scrollParent);\n var scrollTop = getScrollTop(scrollParent);\n var marginBottom = parseInt(getComputedStyle(menuEl).marginBottom, 10);\n var marginTop = parseInt(getComputedStyle(menuEl).marginTop, 10);\n var viewSpaceAbove = containerTop - marginTop;\n var viewSpaceBelow = viewHeight - menuTop;\n var scrollSpaceAbove = viewSpaceAbove + scrollTop;\n var scrollSpaceBelow = scrollHeight - scrollTop - menuTop;\n var scrollDown = menuBottom - viewHeight + scrollTop + marginBottom;\n var scrollUp = scrollTop + menuTop - marginTop;\n var scrollDuration = 160;\n switch (preferredPlacement) {\n case 'auto':\n case 'bottom':\n // 1: the menu will fit, do nothing\n if (viewSpaceBelow >= menuHeight) {\n return {\n placement: 'bottom',\n maxHeight: preferredMaxHeight\n };\n }\n\n // 2: the menu will fit, if scrolled\n if (scrollSpaceBelow >= menuHeight && !isFixedPosition) {\n if (shouldScroll) {\n animatedScrollTo(scrollParent, scrollDown, scrollDuration);\n }\n return {\n placement: 'bottom',\n maxHeight: preferredMaxHeight\n };\n }\n\n // 3: the menu will fit, if constrained\n if (!isFixedPosition && scrollSpaceBelow >= minHeight || isFixedPosition && viewSpaceBelow >= minHeight) {\n if (shouldScroll) {\n animatedScrollTo(scrollParent, scrollDown, scrollDuration);\n }\n\n // we want to provide as much of the menu as possible to the user,\n // so give them whatever is available below rather than the minHeight.\n var constrainedHeight = isFixedPosition ? viewSpaceBelow - marginBottom : scrollSpaceBelow - marginBottom;\n return {\n placement: 'bottom',\n maxHeight: constrainedHeight\n };\n }\n\n // 4. Forked beviour when there isn't enough space below\n\n // AUTO: flip the menu, render above\n if (preferredPlacement === 'auto' || isFixedPosition) {\n // may need to be constrained after flipping\n var _constrainedHeight = preferredMaxHeight;\n var spaceAbove = isFixedPosition ? viewSpaceAbove : scrollSpaceAbove;\n if (spaceAbove >= minHeight) {\n _constrainedHeight = Math.min(spaceAbove - marginBottom - controlHeight, preferredMaxHeight);\n }\n return {\n placement: 'top',\n maxHeight: _constrainedHeight\n };\n }\n\n // BOTTOM: allow browser to increase scrollable area and immediately set scroll\n if (preferredPlacement === 'bottom') {\n if (shouldScroll) {\n scrollTo(scrollParent, scrollDown);\n }\n return {\n placement: 'bottom',\n maxHeight: preferredMaxHeight\n };\n }\n break;\n case 'top':\n // 1: the menu will fit, do nothing\n if (viewSpaceAbove >= menuHeight) {\n return {\n placement: 'top',\n maxHeight: preferredMaxHeight\n };\n }\n\n // 2: the menu will fit, if scrolled\n if (scrollSpaceAbove >= menuHeight && !isFixedPosition) {\n if (shouldScroll) {\n animatedScrollTo(scrollParent, scrollUp, scrollDuration);\n }\n return {\n placement: 'top',\n maxHeight: preferredMaxHeight\n };\n }\n\n // 3: the menu will fit, if constrained\n if (!isFixedPosition && scrollSpaceAbove >= minHeight || isFixedPosition && viewSpaceAbove >= minHeight) {\n var _constrainedHeight2 = preferredMaxHeight;\n\n // we want to provide as much of the menu as possible to the user,\n // so give them whatever is available below rather than the minHeight.\n if (!isFixedPosition && scrollSpaceAbove >= minHeight || isFixedPosition && viewSpaceAbove >= minHeight) {\n _constrainedHeight2 = isFixedPosition ? viewSpaceAbove - marginTop : scrollSpaceAbove - marginTop;\n }\n if (shouldScroll) {\n animatedScrollTo(scrollParent, scrollUp, scrollDuration);\n }\n return {\n placement: 'top',\n maxHeight: _constrainedHeight2\n };\n }\n\n // 4. not enough space, the browser WILL NOT increase scrollable area when\n // absolutely positioned element rendered above the viewport (only below).\n // Flip the menu, render below\n return {\n placement: 'bottom',\n maxHeight: preferredMaxHeight\n };\n default:\n throw new Error(\"Invalid placement provided \\\"\".concat(preferredPlacement, \"\\\".\"));\n }\n return defaultState;\n}\n\n// Menu Component\n// ------------------------------\n\nfunction alignToControl(placement) {\n var placementToCSSProp = {\n bottom: 'top',\n top: 'bottom'\n };\n return placement ? placementToCSSProp[placement] : 'bottom';\n}\nvar coercePlacement = function coercePlacement(p) {\n return p === 'auto' ? 'bottom' : p;\n};\nvar menuCSS = function menuCSS(_ref2, unstyled) {\n var _objectSpread2;\n var placement = _ref2.placement,\n _ref2$theme = _ref2.theme,\n borderRadius = _ref2$theme.borderRadius,\n spacing = _ref2$theme.spacing,\n colors = _ref2$theme.colors;\n return _objectSpread((_objectSpread2 = {\n label: 'menu'\n }, _defineProperty(_objectSpread2, alignToControl(placement), '100%'), _defineProperty(_objectSpread2, \"position\", 'absolute'), _defineProperty(_objectSpread2, \"width\", '100%'), _defineProperty(_objectSpread2, \"zIndex\", 1), _objectSpread2), unstyled ? {} : {\n backgroundColor: colors.neutral0,\n borderRadius: borderRadius,\n boxShadow: '0 0 0 1px hsla(0, 0%, 0%, 0.1), 0 4px 11px hsla(0, 0%, 0%, 0.1)',\n marginBottom: spacing.menuGutter,\n marginTop: spacing.menuGutter\n });\n};\nvar PortalPlacementContext = /*#__PURE__*/createContext(null);\n\n// NOTE: internal only\nvar MenuPlacer = function MenuPlacer(props) {\n var children = props.children,\n minMenuHeight = props.minMenuHeight,\n maxMenuHeight = props.maxMenuHeight,\n menuPlacement = props.menuPlacement,\n menuPosition = props.menuPosition,\n menuShouldScrollIntoView = props.menuShouldScrollIntoView,\n theme = props.theme;\n var _ref3 = useContext(PortalPlacementContext) || {},\n setPortalPlacement = _ref3.setPortalPlacement;\n var ref = useRef(null);\n var _useState = useState(maxMenuHeight),\n _useState2 = _slicedToArray(_useState, 2),\n maxHeight = _useState2[0],\n setMaxHeight = _useState2[1];\n var _useState3 = useState(null),\n _useState4 = _slicedToArray(_useState3, 2),\n placement = _useState4[0],\n setPlacement = _useState4[1];\n var controlHeight = theme.spacing.controlHeight;\n useLayoutEffect(function () {\n var menuEl = ref.current;\n if (!menuEl) return;\n\n // DO NOT scroll if position is fixed\n var isFixedPosition = menuPosition === 'fixed';\n var shouldScroll = menuShouldScrollIntoView && !isFixedPosition;\n var state = getMenuPlacement({\n maxHeight: maxMenuHeight,\n menuEl: menuEl,\n minHeight: minMenuHeight,\n placement: menuPlacement,\n shouldScroll: shouldScroll,\n isFixedPosition: isFixedPosition,\n controlHeight: controlHeight\n });\n setMaxHeight(state.maxHeight);\n setPlacement(state.placement);\n setPortalPlacement === null || setPortalPlacement === void 0 ? void 0 : setPortalPlacement(state.placement);\n }, [maxMenuHeight, menuPlacement, menuPosition, menuShouldScrollIntoView, minMenuHeight, setPortalPlacement, controlHeight]);\n return children({\n ref: ref,\n placerProps: _objectSpread(_objectSpread({}, props), {}, {\n placement: placement || coercePlacement(menuPlacement),\n maxHeight: maxHeight\n })\n });\n};\nvar Menu = function Menu(props) {\n var children = props.children,\n innerRef = props.innerRef,\n innerProps = props.innerProps;\n return jsx(\"div\", _extends({}, getStyleProps(props, 'menu', {\n menu: true\n }), {\n ref: innerRef\n }, innerProps), children);\n};\nvar Menu$1 = Menu;\n\n// ==============================\n// Menu List\n// ==============================\n\nvar menuListCSS = function menuListCSS(_ref4, unstyled) {\n var maxHeight = _ref4.maxHeight,\n baseUnit = _ref4.theme.spacing.baseUnit;\n return _objectSpread({\n maxHeight: maxHeight,\n overflowY: 'auto',\n position: 'relative',\n // required for offset[Height, Top] > keyboard scroll\n WebkitOverflowScrolling: 'touch'\n }, unstyled ? {} : {\n paddingBottom: baseUnit,\n paddingTop: baseUnit\n });\n};\nvar MenuList = function MenuList(props) {\n var children = props.children,\n innerProps = props.innerProps,\n innerRef = props.innerRef,\n isMulti = props.isMulti;\n return jsx(\"div\", _extends({}, getStyleProps(props, 'menuList', {\n 'menu-list': true,\n 'menu-list--is-multi': isMulti\n }), {\n ref: innerRef\n }, innerProps), children);\n};\n\n// ==============================\n// Menu Notices\n// ==============================\n\nvar noticeCSS = function noticeCSS(_ref5, unstyled) {\n var _ref5$theme = _ref5.theme,\n baseUnit = _ref5$theme.spacing.baseUnit,\n colors = _ref5$theme.colors;\n return _objectSpread({\n textAlign: 'center'\n }, unstyled ? {} : {\n color: colors.neutral40,\n padding: \"\".concat(baseUnit * 2, \"px \").concat(baseUnit * 3, \"px\")\n });\n};\nvar noOptionsMessageCSS = noticeCSS;\nvar loadingMessageCSS = noticeCSS;\nvar NoOptionsMessage = function NoOptionsMessage(_ref6) {\n var _ref6$children = _ref6.children,\n children = _ref6$children === void 0 ? 'No options' : _ref6$children,\n innerProps = _ref6.innerProps,\n restProps = _objectWithoutProperties(_ref6, _excluded$3);\n return jsx(\"div\", _extends({}, getStyleProps(_objectSpread(_objectSpread({}, restProps), {}, {\n children: children,\n innerProps: innerProps\n }), 'noOptionsMessage', {\n 'menu-notice': true,\n 'menu-notice--no-options': true\n }), innerProps), children);\n};\nvar LoadingMessage = function LoadingMessage(_ref7) {\n var _ref7$children = _ref7.children,\n children = _ref7$children === void 0 ? 'Loading...' : _ref7$children,\n innerProps = _ref7.innerProps,\n restProps = _objectWithoutProperties(_ref7, _excluded2$1);\n return jsx(\"div\", _extends({}, getStyleProps(_objectSpread(_objectSpread({}, restProps), {}, {\n children: children,\n innerProps: innerProps\n }), 'loadingMessage', {\n 'menu-notice': true,\n 'menu-notice--loading': true\n }), innerProps), children);\n};\n\n// ==============================\n// Menu Portal\n// ==============================\n\nvar menuPortalCSS = function menuPortalCSS(_ref8) {\n var rect = _ref8.rect,\n offset = _ref8.offset,\n position = _ref8.position;\n return {\n left: rect.left,\n position: position,\n top: offset,\n width: rect.width,\n zIndex: 1\n };\n};\nvar MenuPortal = function MenuPortal(props) {\n var appendTo = props.appendTo,\n children = props.children,\n controlElement = props.controlElement,\n innerProps = props.innerProps,\n menuPlacement = props.menuPlacement,\n menuPosition = props.menuPosition;\n var menuPortalRef = useRef(null);\n var cleanupRef = useRef(null);\n var _useState5 = useState(coercePlacement(menuPlacement)),\n _useState6 = _slicedToArray(_useState5, 2),\n placement = _useState6[0],\n setPortalPlacement = _useState6[1];\n var portalPlacementContext = useMemo(function () {\n return {\n setPortalPlacement: setPortalPlacement\n };\n }, []);\n var _useState7 = useState(null),\n _useState8 = _slicedToArray(_useState7, 2),\n computedPosition = _useState8[0],\n setComputedPosition = _useState8[1];\n var updateComputedPosition = useCallback(function () {\n if (!controlElement) return;\n var rect = getBoundingClientObj(controlElement);\n var scrollDistance = menuPosition === 'fixed' ? 0 : window.pageYOffset;\n var offset = rect[placement] + scrollDistance;\n if (offset !== (computedPosition === null || computedPosition === void 0 ? void 0 : computedPosition.offset) || rect.left !== (computedPosition === null || computedPosition === void 0 ? void 0 : computedPosition.rect.left) || rect.width !== (computedPosition === null || computedPosition === void 0 ? void 0 : computedPosition.rect.width)) {\n setComputedPosition({\n offset: offset,\n rect: rect\n });\n }\n }, [controlElement, menuPosition, placement, computedPosition === null || computedPosition === void 0 ? void 0 : computedPosition.offset, computedPosition === null || computedPosition === void 0 ? void 0 : computedPosition.rect.left, computedPosition === null || computedPosition === void 0 ? void 0 : computedPosition.rect.width]);\n useLayoutEffect(function () {\n updateComputedPosition();\n }, [updateComputedPosition]);\n var runAutoUpdate = useCallback(function () {\n if (typeof cleanupRef.current === 'function') {\n cleanupRef.current();\n cleanupRef.current = null;\n }\n if (controlElement && menuPortalRef.current) {\n cleanupRef.current = autoUpdate(controlElement, menuPortalRef.current, updateComputedPosition, {\n elementResize: 'ResizeObserver' in window\n });\n }\n }, [controlElement, updateComputedPosition]);\n useLayoutEffect(function () {\n runAutoUpdate();\n }, [runAutoUpdate]);\n var setMenuPortalElement = useCallback(function (menuPortalElement) {\n menuPortalRef.current = menuPortalElement;\n runAutoUpdate();\n }, [runAutoUpdate]);\n\n // bail early if required elements aren't present\n if (!appendTo && menuPosition !== 'fixed' || !computedPosition) return null;\n\n // same wrapper element whether fixed or portalled\n var menuWrapper = jsx(\"div\", _extends({\n ref: setMenuPortalElement\n }, getStyleProps(_objectSpread(_objectSpread({}, props), {}, {\n offset: computedPosition.offset,\n position: menuPosition,\n rect: computedPosition.rect\n }), 'menuPortal', {\n 'menu-portal': true\n }), innerProps), children);\n return jsx(PortalPlacementContext.Provider, {\n value: portalPlacementContext\n }, appendTo ? /*#__PURE__*/createPortal(menuWrapper, appendTo) : menuWrapper);\n};\n\n// ==============================\n// Root Container\n// ==============================\n\nvar containerCSS = function containerCSS(_ref) {\n var isDisabled = _ref.isDisabled,\n isRtl = _ref.isRtl;\n return {\n label: 'container',\n direction: isRtl ? 'rtl' : undefined,\n pointerEvents: isDisabled ? 'none' : undefined,\n // cancel mouse events when disabled\n position: 'relative'\n };\n};\nvar SelectContainer = function SelectContainer(props) {\n var children = props.children,\n innerProps = props.innerProps,\n isDisabled = props.isDisabled,\n isRtl = props.isRtl;\n return jsx(\"div\", _extends({}, getStyleProps(props, 'container', {\n '--is-disabled': isDisabled,\n '--is-rtl': isRtl\n }), innerProps), children);\n};\n\n// ==============================\n// Value Container\n// ==============================\n\nvar valueContainerCSS = function valueContainerCSS(_ref2, unstyled) {\n var spacing = _ref2.theme.spacing,\n isMulti = _ref2.isMulti,\n hasValue = _ref2.hasValue,\n controlShouldRenderValue = _ref2.selectProps.controlShouldRenderValue;\n return _objectSpread({\n alignItems: 'center',\n display: isMulti && hasValue && controlShouldRenderValue ? 'flex' : 'grid',\n flex: 1,\n flexWrap: 'wrap',\n WebkitOverflowScrolling: 'touch',\n position: 'relative',\n overflow: 'hidden'\n }, unstyled ? {} : {\n padding: \"\".concat(spacing.baseUnit / 2, \"px \").concat(spacing.baseUnit * 2, \"px\")\n });\n};\nvar ValueContainer = function ValueContainer(props) {\n var children = props.children,\n innerProps = props.innerProps,\n isMulti = props.isMulti,\n hasValue = props.hasValue;\n return jsx(\"div\", _extends({}, getStyleProps(props, 'valueContainer', {\n 'value-container': true,\n 'value-container--is-multi': isMulti,\n 'value-container--has-value': hasValue\n }), innerProps), children);\n};\n\n// ==============================\n// Indicator Container\n// ==============================\n\nvar indicatorsContainerCSS = function indicatorsContainerCSS() {\n return {\n alignItems: 'center',\n alignSelf: 'stretch',\n display: 'flex',\n flexShrink: 0\n };\n};\nvar IndicatorsContainer = function IndicatorsContainer(props) {\n var children = props.children,\n innerProps = props.innerProps;\n return jsx(\"div\", _extends({}, getStyleProps(props, 'indicatorsContainer', {\n indicators: true\n }), innerProps), children);\n};\n\nvar _templateObject;\nvar _excluded$2 = [\"size\"],\n _excluded2 = [\"innerProps\", \"isRtl\", \"size\"];\nfunction _EMOTION_STRINGIFIED_CSS_ERROR__() { return \"You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop).\"; }\n\n// ==============================\n// Dropdown & Clear Icons\n// ==============================\nvar _ref2 = process.env.NODE_ENV === \"production\" ? {\n name: \"8mmkcg\",\n styles: \"display:inline-block;fill:currentColor;line-height:1;stroke:currentColor;stroke-width:0\"\n} : {\n name: \"tj5bde-Svg\",\n styles: \"display:inline-block;fill:currentColor;line-height:1;stroke:currentColor;stroke-width:0;label:Svg;\",\n map: \"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImluZGljYXRvcnMudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQXlCSSIsImZpbGUiOiJpbmRpY2F0b3JzLnRzeCIsInNvdXJjZXNDb250ZW50IjpbIi8qKiBAanN4IGpzeCAqL1xuaW1wb3J0IHsgSlNYLCBSZWFjdE5vZGUgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBqc3gsIGtleWZyYW1lcyB9IGZyb20gJ0BlbW90aW9uL3JlYWN0JztcblxuaW1wb3J0IHtcbiAgQ29tbW9uUHJvcHNBbmRDbGFzc05hbWUsXG4gIENTU09iamVjdFdpdGhMYWJlbCxcbiAgR3JvdXBCYXNlLFxufSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQgeyBnZXRTdHlsZVByb3BzIH0gZnJvbSAnLi4vdXRpbHMnO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIERyb3Bkb3duICYgQ2xlYXIgSWNvbnNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5jb25zdCBTdmcgPSAoe1xuICBzaXplLFxuICAuLi5wcm9wc1xufTogSlNYLkludHJpbnNpY0VsZW1lbnRzWydzdmcnXSAmIHsgc2l6ZTogbnVtYmVyIH0pID0+IChcbiAgPHN2Z1xuICAgIGhlaWdodD17c2l6ZX1cbiAgICB3aWR0aD17c2l6ZX1cbiAgICB2aWV3Qm94PVwiMCAwIDIwIDIwXCJcbiAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgIGZvY3VzYWJsZT1cImZhbHNlXCJcbiAgICBjc3M9e3tcbiAgICAgIGRpc3BsYXk6ICdpbmxpbmUtYmxvY2snLFxuICAgICAgZmlsbDogJ2N1cnJlbnRDb2xvcicsXG4gICAgICBsaW5lSGVpZ2h0OiAxLFxuICAgICAgc3Ryb2tlOiAnY3VycmVudENvbG9yJyxcbiAgICAgIHN0cm9rZVdpZHRoOiAwLFxuICAgIH19XG4gICAgey4uLnByb3BzfVxuICAvPlxuKTtcblxuZXhwb3J0IHR5cGUgQ3Jvc3NJY29uUHJvcHMgPSBKU1guSW50cmluc2ljRWxlbWVudHNbJ3N2ZyddICYgeyBzaXplPzogbnVtYmVyIH07XG5leHBvcnQgY29uc3QgQ3Jvc3NJY29uID0gKHByb3BzOiBDcm9zc0ljb25Qcm9wcykgPT4gKFxuICA8U3ZnIHNpemU9ezIwfSB7Li4ucHJvcHN9PlxuICAgIDxwYXRoIGQ9XCJNMTQuMzQ4IDE0Ljg0OWMtMC40NjkgMC40NjktMS4yMjkgMC40NjktMS42OTcgMGwtMi42NTEtMy4wMzAtMi42NTEgMy4wMjljLTAuNDY5IDAuNDY5LTEuMjI5IDAuNDY5LTEuNjk3IDAtMC40NjktMC40NjktMC40NjktMS4yMjkgMC0xLjY5N2wyLjc1OC0zLjE1LTIuNzU5LTMuMTUyYy0wLjQ2OS0wLjQ2OS0wLjQ2OS0xLjIyOCAwLTEuNjk3czEuMjI4LTAuNDY5IDEuNjk3IDBsMi42NTIgMy4wMzEgMi42NTEtMy4wMzFjMC40NjktMC40NjkgMS4yMjgtMC40NjkgMS42OTcgMHMwLjQ2OSAxLjIyOSAwIDEuNjk3bC0yLjc1OCAzLjE1MiAyLjc1OCAzLjE1YzAuNDY5IDAuNDY5IDAuNDY5IDEuMjI5IDAgMS42OTh6XCIgLz5cbiAgPC9Tdmc+XG4pO1xuZXhwb3J0IHR5cGUgRG93bkNoZXZyb25Qcm9wcyA9IEpTWC5JbnRyaW5zaWNFbGVtZW50c1snc3ZnJ10gJiB7IHNpemU/OiBudW1iZXIgfTtcbmV4cG9ydCBjb25zdCBEb3duQ2hldnJvbiA9IChwcm9wczogRG93bkNoZXZyb25Qcm9wcykgPT4gKFxuICA8U3ZnIHNpemU9ezIwfSB7Li4ucHJvcHN9PlxuICAgIDxwYXRoIGQ9XCJNNC41MTYgNy41NDhjMC40MzYtMC40NDYgMS4wNDMtMC40ODEgMS41NzYgMGwzLjkwOCAzLjc0NyAzLjkwOC0zLjc0N2MwLjUzMy0wLjQ4MSAxLjE0MS0wLjQ0NiAxLjU3NCAwIDAuNDM2IDAuNDQ1IDAuNDA4IDEuMTk3IDAgMS42MTUtMC40MDYgMC40MTgtNC42OTUgNC41MDItNC42OTUgNC41MDItMC4yMTcgMC4yMjMtMC41MDIgMC4zMzUtMC43ODcgMC4zMzVzLTAuNTctMC4xMTItMC43ODktMC4zMzVjMCAwLTQuMjg3LTQuMDg0LTQuNjk1LTQuNTAycy0wLjQzNi0xLjE3IDAtMS42MTV6XCIgLz5cbiAgPC9Tdmc+XG4pO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIERyb3Bkb3duICYgQ2xlYXIgQnV0dG9uc1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbmV4cG9ydCBpbnRlcmZhY2UgRHJvcGRvd25JbmRpY2F0b3JQcm9wczxcbiAgT3B0aW9uID0gdW5rbm93bixcbiAgSXNNdWx0aSBleHRlbmRzIGJvb2xlYW4gPSBib29sZWFuLFxuICBHcm91cCBleHRlbmRzIEdyb3VwQmFzZTxPcHRpb24+ID0gR3JvdXBCYXNlPE9wdGlvbj5cbj4gZXh0ZW5kcyBDb21tb25Qcm9wc0FuZENsYXNzTmFtZTxPcHRpb24sIElzTXVsdGksIEdyb3VwPiB7XG4gIC8qKiBUaGUgY2hpbGRyZW4gdG8gYmUgcmVuZGVyZWQgaW5zaWRlIHRoZSBpbmRpY2F0b3IuICovXG4gIGNoaWxkcmVuPzogUmVhY3ROb2RlO1xuICAvKiogUHJvcHMgdGhhdCB3aWxsIGJlIHBhc3NlZCBvbiB0byB0aGUgY2hpbGRyZW4uICovXG4gIGlubmVyUHJvcHM6IEpTWC5JbnRyaW5zaWNFbGVtZW50c1snZGl2J107XG4gIC8qKiBUaGUgZm9jdXNlZCBzdGF0ZSBvZiB0aGUgc2VsZWN0LiAqL1xuICBpc0ZvY3VzZWQ6IGJvb2xlYW47XG4gIGlzRGlzYWJsZWQ6IGJvb2xlYW47XG59XG5cbmNvbnN0IGJhc2VDU1MgPSA8XG4gIE9wdGlvbixcbiAgSXNNdWx0aSBleHRlbmRzIGJvb2xlYW4sXG4gIEdyb3VwIGV4dGVuZHMgR3JvdXBCYXNlPE9wdGlvbj5cbj4oXG4gIHtcbiAgICBpc0ZvY3VzZWQsXG4gICAgdGhlbWU6IHtcbiAgICAgIHNwYWNpbmc6IHsgYmFzZVVuaXQgfSxcbiAgICAgIGNvbG9ycyxcbiAgICB9LFxuICB9OlxuICAgIHwgRHJvcGRvd25JbmRpY2F0b3JQcm9wczxPcHRpb24sIElzTXVsdGksIEdyb3VwPlxuICAgIHwgQ2xlYXJJbmRpY2F0b3JQcm9wczxPcHRpb24sIElzTXVsdGksIEdyb3VwPixcbiAgdW5zdHlsZWQ6IGJvb2xlYW5cbik6IENTU09iamVjdFdpdGhMYWJlbCA9PiAoe1xuICBsYWJlbDogJ2luZGljYXRvckNvbnRhaW5lcicsXG4gIGRpc3BsYXk6ICdmbGV4JyxcbiAgdHJhbnNpdGlvbjogJ2NvbG9yIDE1MG1zJyxcbiAgLi4uKHVuc3R5bGVkXG4gICAgPyB7fVxuICAgIDoge1xuICAgICAgICBjb2xvcjogaXNGb2N1c2VkID8gY29sb3JzLm5ldXRyYWw2MCA6IGNvbG9ycy5uZXV0cmFsMjAsXG4gICAgICAgIHBhZGRpbmc6IGJhc2VVbml0ICogMixcbiAgICAgICAgJzpob3Zlcic6IHtcbiAgICAgICAgICBjb2xvcjogaXNGb2N1c2VkID8gY29sb3JzLm5ldXRyYWw4MCA6IGNvbG9ycy5uZXV0cmFsNDAsXG4gICAgICAgIH0sXG4gICAgICB9KSxcbn0pO1xuXG5leHBvcnQgY29uc3QgZHJvcGRvd25JbmRpY2F0b3JDU1MgPSBiYXNlQ1NTO1xuZXhwb3J0IGNvbnN0IERyb3Bkb3duSW5kaWNhdG9yID0gPFxuICBPcHRpb24sXG4gIElzTXVsdGkgZXh0ZW5kcyBib29sZWFuLFxuICBHcm91cCBleHRlbmRzIEdyb3VwQmFzZTxPcHRpb24+XG4+KFxuICBwcm9wczogRHJvcGRvd25JbmRpY2F0b3JQcm9wczxPcHRpb24sIElzTXVsdGksIEdyb3VwPlxuKSA9PiB7XG4gIGNvbnN0IHsgY2hpbGRyZW4sIGlubmVyUHJvcHMgfSA9IHByb3BzO1xuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIHsuLi5nZXRTdHlsZVByb3BzKHByb3BzLCAnZHJvcGRvd25JbmRpY2F0b3InLCB7XG4gICAgICAgIGluZGljYXRvcjogdHJ1ZSxcbiAgICAgICAgJ2Ryb3Bkb3duLWluZGljYXRvcic6IHRydWUsXG4gICAgICB9KX1cbiAgICAgIHsuLi5pbm5lclByb3BzfVxuICAgID5cbiAgICAgIHtjaGlsZHJlbiB8fCA8RG93bkNoZXZyb24gLz59XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIENsZWFySW5kaWNhdG9yUHJvcHM8XG4gIE9wdGlvbiA9IHVua25vd24sXG4gIElzTXVsdGkgZXh0ZW5kcyBib29sZWFuID0gYm9vbGVhbixcbiAgR3JvdXAgZXh0ZW5kcyBHcm91cEJhc2U8T3B0aW9uPiA9IEdyb3VwQmFzZTxPcHRpb24+XG4+IGV4dGVuZHMgQ29tbW9uUHJvcHNBbmRDbGFzc05hbWU8T3B0aW9uLCBJc011bHRpLCBHcm91cD4ge1xuICAvKiogVGhlIGNoaWxkcmVuIHRvIGJlIHJlbmRlcmVkIGluc2lkZSB0aGUgaW5kaWNhdG9yLiAqL1xuICBjaGlsZHJlbj86IFJlYWN0Tm9kZTtcbiAgLyoqIFByb3BzIHRoYXQgd2lsbCBiZSBwYXNzZWQgb24gdG8gdGhlIGNoaWxkcmVuLiAqL1xuICBpbm5lclByb3BzOiBKU1guSW50cmluc2ljRWxlbWVudHNbJ2RpdiddO1xuICAvKiogVGhlIGZvY3VzZWQgc3RhdGUgb2YgdGhlIHNlbGVjdC4gKi9cbiAgaXNGb2N1c2VkOiBib29sZWFuO1xufVxuXG5leHBvcnQgY29uc3QgY2xlYXJJbmRpY2F0b3JDU1MgPSBiYXNlQ1NTO1xuZXhwb3J0IGNvbnN0IENsZWFySW5kaWNhdG9yID0gPFxuICBPcHRpb24sXG4gIElzTXVsdGkgZXh0ZW5kcyBib29sZWFuLFxuICBHcm91cCBleHRlbmRzIEdyb3VwQmFzZTxPcHRpb24+XG4+KFxuICBwcm9wczogQ2xlYXJJbmRpY2F0b3JQcm9wczxPcHRpb24sIElzTXVsdGksIEdyb3VwPlxuKSA9PiB7XG4gIGNvbnN0IHsgY2hpbGRyZW4sIGlubmVyUHJvcHMgfSA9IHByb3BzO1xuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIHsuLi5nZXRTdHlsZVByb3BzKHByb3BzLCAnY2xlYXJJbmRpY2F0b3InLCB7XG4gICAgICAgIGluZGljYXRvcjogdHJ1ZSxcbiAgICAgICAgJ2NsZWFyLWluZGljYXRvcic6IHRydWUsXG4gICAgICB9KX1cbiAgICAgIHsuLi5pbm5lclByb3BzfVxuICAgID5cbiAgICAgIHtjaGlsZHJlbiB8fCA8Q3Jvc3NJY29uIC8+fVxuICAgIDwvZGl2PlxuICApO1xufTtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBTZXBhcmF0b3Jcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5leHBvcnQgaW50ZXJmYWNlIEluZGljYXRvclNlcGFyYXRvclByb3BzPFxuICBPcHRpb24gPSB1bmtub3duLFxuICBJc011bHRpIGV4dGVuZHMgYm9vbGVhbiA9IGJvb2xlYW4sXG4gIEdyb3VwIGV4dGVuZHMgR3JvdXBCYXNlPE9wdGlvbj4gPSBHcm91cEJhc2U8T3B0aW9uPlxuPiBleHRlbmRzIENvbW1vblByb3BzQW5kQ2xhc3NOYW1lPE9wdGlvbiwgSXNNdWx0aSwgR3JvdXA+IHtcbiAgaXNEaXNhYmxlZDogYm9vbGVhbjtcbiAgaXNGb2N1c2VkOiBib29sZWFuO1xuICBpbm5lclByb3BzPzogSlNYLkludHJpbnNpY0VsZW1lbnRzWydzcGFuJ107XG59XG5cbmV4cG9ydCBjb25zdCBpbmRpY2F0b3JTZXBhcmF0b3JDU1MgPSA8XG4gIE9wdGlvbixcbiAgSXNNdWx0aSBleHRlbmRzIGJvb2xlYW4sXG4gIEdyb3VwIGV4dGVuZHMgR3JvdXBCYXNlPE9wdGlvbj5cbj4oXG4gIHtcbiAgICBpc0Rpc2FibGVkLFxuICAgIHRoZW1lOiB7XG4gICAgICBzcGFjaW5nOiB7IGJhc2VVbml0IH0sXG4gICAgICBjb2xvcnMsXG4gICAgfSxcbiAgfTogSW5kaWNhdG9yU2VwYXJhdG9yUHJvcHM8T3B0aW9uLCBJc011bHRpLCBHcm91cD4sXG4gIHVuc3R5bGVkOiBib29sZWFuXG4pOiBDU1NPYmplY3RXaXRoTGFiZWwgPT4gKHtcbiAgbGFiZWw6ICdpbmRpY2F0b3JTZXBhcmF0b3InLFxuICBhbGlnblNlbGY6ICdzdHJldGNoJyxcbiAgd2lkdGg6IDEsXG4gIC4uLih1bnN0eWxlZFxuICAgID8ge31cbiAgICA6IHtcbiAgICAgICAgYmFja2dyb3VuZENvbG9yOiBpc0Rpc2FibGVkID8gY29sb3JzLm5ldXRyYWwxMCA6IGNvbG9ycy5uZXV0cmFsMjAsXG4gICAgICAgIG1hcmdpbkJvdHRvbTogYmFzZVVuaXQgKiAyLFxuICAgICAgICBtYXJnaW5Ub3A6IGJhc2VVbml0ICogMixcbiAgICAgIH0pLFxufSk7XG5cbmV4cG9ydCBjb25zdCBJbmRpY2F0b3JTZXBhcmF0b3IgPSA8XG4gIE9wdGlvbixcbiAgSXNNdWx0aSBleHRlbmRzIGJvb2xlYW4sXG4gIEdyb3VwIGV4dGVuZHMgR3JvdXBCYXNlPE9wdGlvbj5cbj4oXG4gIHByb3BzOiBJbmRpY2F0b3JTZXBhcmF0b3JQcm9wczxPcHRpb24sIElzTXVsdGksIEdyb3VwPlxuKSA9PiB7XG4gIGNvbnN0IHsgaW5uZXJQcm9wcyB9ID0gcHJvcHM7XG4gIHJldHVybiAoXG4gICAgPHNwYW5cbiAgICAgIHsuLi5pbm5lclByb3BzfVxuICAgICAgey4uLmdldFN0eWxlUHJvcHMocHJvcHMsICdpbmRpY2F0b3JTZXBhcmF0b3InLCB7XG4gICAgICAgICdpbmRpY2F0b3Itc2VwYXJhdG9yJzogdHJ1ZSxcbiAgICAgIH0pfVxuICAgIC8+XG4gICk7XG59O1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIExvYWRpbmdcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5jb25zdCBsb2FkaW5nRG90QW5pbWF0aW9ucyA9IGtleWZyYW1lc2BcbiAgMCUsIDgwJSwgMTAwJSB7IG9wYWNpdHk6IDA7IH1cbiAgNDAlIHsgb3BhY2l0eTogMTsgfVxuYDtcblxuZXhwb3J0IGNvbnN0IGxvYWRpbmdJbmRpY2F0b3JDU1MgPSA8XG4gIE9wdGlvbixcbiAgSXNNdWx0aSBleHRlbmRzIGJvb2xlYW4sXG4gIEdyb3VwIGV4dGVuZHMgR3JvdXBCYXNlPE9wdGlvbj5cbj4oXG4gIHtcbiAgICBpc0ZvY3VzZWQsXG4gICAgc2l6ZSxcbiAgICB0aGVtZToge1xuICAgICAgY29sb3JzLFxuICAgICAgc3BhY2luZzogeyBiYXNlVW5pdCB9LFxuICAgIH0sXG4gIH06IExvYWRpbmdJbmRpY2F0b3JQcm9wczxPcHRpb24sIElzTXVsdGksIEdyb3VwPixcbiAgdW5zdHlsZWQ6IGJvb2xlYW5cbik6IENTU09iamVjdFdpdGhMYWJlbCA9PiAoe1xuICBsYWJlbDogJ2xvYWRpbmdJbmRpY2F0b3InLFxuICBkaXNwbGF5OiAnZmxleCcsXG4gIHRyYW5zaXRpb246ICdjb2xvciAxNTBtcycsXG4gIGFsaWduU2VsZjogJ2NlbnRlcicsXG4gIGZvbnRTaXplOiBzaXplLFxuICBsaW5lSGVpZ2h0OiAxLFxuICBtYXJnaW5SaWdodDogc2l6ZSxcbiAgdGV4dEFsaWduOiAnY2VudGVyJyxcbiAgdmVydGljYWxBbGlnbjogJ21pZGRsZScsXG4gIC4uLih1bnN0eWxlZFxuICAgID8ge31cbiAgICA6IHtcbiAgICAgICAgY29sb3I6IGlzRm9jdXNlZCA/IGNvbG9ycy5uZXV0cmFsNjAgOiBjb2xvcnMubmV1dHJhbDIwLFxuICAgICAgICBwYWRkaW5nOiBiYXNlVW5pdCAqIDIsXG4gICAgICB9KSxcbn0pO1xuXG5pbnRlcmZhY2UgTG9hZGluZ0RvdFByb3BzIHtcbiAgZGVsYXk6IG51bWJlcjtcbiAgb2Zmc2V0OiBib29sZWFuO1xufVxuY29uc3QgTG9hZGluZ0RvdCA9ICh7IGRlbGF5LCBvZmZzZXQgfTogTG9hZGluZ0RvdFByb3BzKSA9PiAoXG4gIDxzcGFuXG4gICAgY3NzPXt7XG4gICAgICBhbmltYXRpb246IGAke2xvYWRpbmdEb3RBbmltYXRpb25zfSAxcyBlYXNlLWluLW91dCAke2RlbGF5fW1zIGluZmluaXRlO2AsXG4gICAgICBiYWNrZ3JvdW5kQ29sb3I6ICdjdXJyZW50Q29sb3InLFxuICAgICAgYm9yZGVyUmFkaXVzOiAnMWVtJyxcbiAgICAgIGRpc3BsYXk6ICdpbmxpbmUtYmxvY2snLFxuICAgICAgbWFyZ2luTGVmdDogb2Zmc2V0ID8gJzFlbScgOiB1bmRlZmluZWQsXG4gICAgICBoZWlnaHQ6ICcxZW0nLFxuICAgICAgdmVydGljYWxBbGlnbjogJ3RvcCcsXG4gICAgICB3aWR0aDogJzFlbScsXG4gICAgfX1cbiAgLz5cbik7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTG9hZGluZ0luZGljYXRvclByb3BzPFxuICBPcHRpb24gPSB1bmtub3duLFxuICBJc011bHRpIGV4dGVuZHMgYm9vbGVhbiA9IGJvb2xlYW4sXG4gIEdyb3VwIGV4dGVuZHMgR3JvdXBCYXNlPE9wdGlvbj4gPSBHcm91cEJhc2U8T3B0aW9uPlxuPiBleHRlbmRzIENvbW1vblByb3BzQW5kQ2xhc3NOYW1lPE9wdGlvbiwgSXNNdWx0aSwgR3JvdXA+IHtcbiAgLyoqIFByb3BzIHRoYXQgd2lsbCBiZSBwYXNzZWQgb24gdG8gdGhlIGNoaWxkcmVuLiAqL1xuICBpbm5lclByb3BzOiBKU1guSW50cmluc2ljRWxlbWVudHNbJ2RpdiddO1xuICAvKiogVGhlIGZvY3VzZWQgc3RhdGUgb2YgdGhlIHNlbGVjdC4gKi9cbiAgaXNGb2N1c2VkOiBib29sZWFuO1xuICBpc0Rpc2FibGVkOiBib29sZWFuO1xuICAvKiogU2V0IHNpemUgb2YgdGhlIGNvbnRhaW5lci4gKi9cbiAgc2l6ZTogbnVtYmVyO1xufVxuZXhwb3J0IGNvbnN0IExvYWRpbmdJbmRpY2F0b3IgPSA8XG4gIE9wdGlvbixcbiAgSXNNdWx0aSBleHRlbmRzIGJvb2xlYW4sXG4gIEdyb3VwIGV4dGVuZHMgR3JvdXBCYXNlPE9wdGlvbj5cbj4oe1xuICBpbm5lclByb3BzLFxuICBpc1J0bCxcbiAgc2l6ZSA9IDQsXG4gIC4uLnJlc3RQcm9wc1xufTogTG9hZGluZ0luZGljYXRvclByb3BzPE9wdGlvbiwgSXNNdWx0aSwgR3JvdXA+KSA9PiB7XG4gIHJldHVybiAoXG4gICAgPGRpdlxuICAgICAgey4uLmdldFN0eWxlUHJvcHMoXG4gICAgICAgIHsgLi4ucmVzdFByb3BzLCBpbm5lclByb3BzLCBpc1J0bCwgc2l6ZSB9LFxuICAgICAgICAnbG9hZGluZ0luZGljYXRvcicsXG4gICAgICAgIHtcbiAgICAgICAgICBpbmRpY2F0b3I6IHRydWUsXG4gICAgICAgICAgJ2xvYWRpbmctaW5kaWNhdG9yJzogdHJ1ZSxcbiAgICAgICAgfVxuICAgICAgKX1cbiAgICAgIHsuLi5pbm5lclByb3BzfVxuICAgID5cbiAgICAgIDxMb2FkaW5nRG90IGRlbGF5PXswfSBvZmZzZXQ9e2lzUnRsfSAvPlxuICAgICAgPExvYWRpbmdEb3QgZGVsYXk9ezE2MH0gb2Zmc2V0IC8+XG4gICAgICA8TG9hZGluZ0RvdCBkZWxheT17MzIwfSBvZmZzZXQ9eyFpc1J0bH0gLz5cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG4iXX0= */\",\n toString: _EMOTION_STRINGIFIED_CSS_ERROR__\n};\nvar Svg = function Svg(_ref) {\n var size = _ref.size,\n props = _objectWithoutProperties(_ref, _excluded$2);\n return jsx(\"svg\", _extends({\n height: size,\n width: size,\n viewBox: \"0 0 20 20\",\n \"aria-hidden\": \"true\",\n focusable: \"false\",\n css: _ref2\n }, props));\n};\nvar CrossIcon = function CrossIcon(props) {\n return jsx(Svg, _extends({\n size: 20\n }, props), jsx(\"path\", {\n d: \"M14.348 14.849c-0.469 0.469-1.229 0.469-1.697 0l-2.651-3.030-2.651 3.029c-0.469 0.469-1.229 0.469-1.697 0-0.469-0.469-0.469-1.229 0-1.697l2.758-3.15-2.759-3.152c-0.469-0.469-0.469-1.228 0-1.697s1.228-0.469 1.697 0l2.652 3.031 2.651-3.031c0.469-0.469 1.228-0.469 1.697 0s0.469 1.229 0 1.697l-2.758 3.152 2.758 3.15c0.469 0.469 0.469 1.229 0 1.698z\"\n }));\n};\nvar DownChevron = function DownChevron(props) {\n return jsx(Svg, _extends({\n size: 20\n }, props), jsx(\"path\", {\n d: \"M4.516 7.548c0.436-0.446 1.043-0.481 1.576 0l3.908 3.747 3.908-3.747c0.533-0.481 1.141-0.446 1.574 0 0.436 0.445 0.408 1.197 0 1.615-0.406 0.418-4.695 4.502-4.695 4.502-0.217 0.223-0.502 0.335-0.787 0.335s-0.57-0.112-0.789-0.335c0 0-4.287-4.084-4.695-4.502s-0.436-1.17 0-1.615z\"\n }));\n};\n\n// ==============================\n// Dropdown & Clear Buttons\n// ==============================\n\nvar baseCSS = function baseCSS(_ref3, unstyled) {\n var isFocused = _ref3.isFocused,\n _ref3$theme = _ref3.theme,\n baseUnit = _ref3$theme.spacing.baseUnit,\n colors = _ref3$theme.colors;\n return _objectSpread({\n label: 'indicatorContainer',\n display: 'flex',\n transition: 'color 150ms'\n }, unstyled ? {} : {\n color: isFocused ? colors.neutral60 : colors.neutral20,\n padding: baseUnit * 2,\n ':hover': {\n color: isFocused ? colors.neutral80 : colors.neutral40\n }\n });\n};\nvar dropdownIndicatorCSS = baseCSS;\nvar DropdownIndicator = function DropdownIndicator(props) {\n var children = props.children,\n innerProps = props.innerProps;\n return jsx(\"div\", _extends({}, getStyleProps(props, 'dropdownIndicator', {\n indicator: true,\n 'dropdown-indicator': true\n }), innerProps), children || jsx(DownChevron, null));\n};\nvar clearIndicatorCSS = baseCSS;\nvar ClearIndicator = function ClearIndicator(props) {\n var children = props.children,\n innerProps = props.innerProps;\n return jsx(\"div\", _extends({}, getStyleProps(props, 'clearIndicator', {\n indicator: true,\n 'clear-indicator': true\n }), innerProps), children || jsx(CrossIcon, null));\n};\n\n// ==============================\n// Separator\n// ==============================\n\nvar indicatorSeparatorCSS = function indicatorSeparatorCSS(_ref4, unstyled) {\n var isDisabled = _ref4.isDisabled,\n _ref4$theme = _ref4.theme,\n baseUnit = _ref4$theme.spacing.baseUnit,\n colors = _ref4$theme.colors;\n return _objectSpread({\n label: 'indicatorSeparator',\n alignSelf: 'stretch',\n width: 1\n }, unstyled ? {} : {\n backgroundColor: isDisabled ? colors.neutral10 : colors.neutral20,\n marginBottom: baseUnit * 2,\n marginTop: baseUnit * 2\n });\n};\nvar IndicatorSeparator = function IndicatorSeparator(props) {\n var innerProps = props.innerProps;\n return jsx(\"span\", _extends({}, innerProps, getStyleProps(props, 'indicatorSeparator', {\n 'indicator-separator': true\n })));\n};\n\n// ==============================\n// Loading\n// ==============================\n\nvar loadingDotAnimations = keyframes(_templateObject || (_templateObject = _taggedTemplateLiteral([\"\\n 0%, 80%, 100% { opacity: 0; }\\n 40% { opacity: 1; }\\n\"])));\nvar loadingIndicatorCSS = function loadingIndicatorCSS(_ref5, unstyled) {\n var isFocused = _ref5.isFocused,\n size = _ref5.size,\n _ref5$theme = _ref5.theme,\n colors = _ref5$theme.colors,\n baseUnit = _ref5$theme.spacing.baseUnit;\n return _objectSpread({\n label: 'loadingIndicator',\n display: 'flex',\n transition: 'color 150ms',\n alignSelf: 'center',\n fontSize: size,\n lineHeight: 1,\n marginRight: size,\n textAlign: 'center',\n verticalAlign: 'middle'\n }, unstyled ? {} : {\n color: isFocused ? colors.neutral60 : colors.neutral20,\n padding: baseUnit * 2\n });\n};\nvar LoadingDot = function LoadingDot(_ref6) {\n var delay = _ref6.delay,\n offset = _ref6.offset;\n return jsx(\"span\", {\n css: /*#__PURE__*/css$2({\n animation: \"\".concat(loadingDotAnimations, \" 1s ease-in-out \").concat(delay, \"ms infinite;\"),\n backgroundColor: 'currentColor',\n borderRadius: '1em',\n display: 'inline-block',\n marginLeft: offset ? '1em' : undefined,\n height: '1em',\n verticalAlign: 'top',\n width: '1em'\n }, process.env.NODE_ENV === \"production\" ? \"\" : \";label:LoadingDot;\", process.env.NODE_ENV === \"production\" ? \"\" : \"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImluZGljYXRvcnMudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQW1RSSIsImZpbGUiOiJpbmRpY2F0b3JzLnRzeCIsInNvdXJjZXNDb250ZW50IjpbIi8qKiBAanN4IGpzeCAqL1xuaW1wb3J0IHsgSlNYLCBSZWFjdE5vZGUgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBqc3gsIGtleWZyYW1lcyB9IGZyb20gJ0BlbW90aW9uL3JlYWN0JztcblxuaW1wb3J0IHtcbiAgQ29tbW9uUHJvcHNBbmRDbGFzc05hbWUsXG4gIENTU09iamVjdFdpdGhMYWJlbCxcbiAgR3JvdXBCYXNlLFxufSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQgeyBnZXRTdHlsZVByb3BzIH0gZnJvbSAnLi4vdXRpbHMnO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIERyb3Bkb3duICYgQ2xlYXIgSWNvbnNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5jb25zdCBTdmcgPSAoe1xuICBzaXplLFxuICAuLi5wcm9wc1xufTogSlNYLkludHJpbnNpY0VsZW1lbnRzWydzdmcnXSAmIHsgc2l6ZTogbnVtYmVyIH0pID0+IChcbiAgPHN2Z1xuICAgIGhlaWdodD17c2l6ZX1cbiAgICB3aWR0aD17c2l6ZX1cbiAgICB2aWV3Qm94PVwiMCAwIDIwIDIwXCJcbiAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgIGZvY3VzYWJsZT1cImZhbHNlXCJcbiAgICBjc3M9e3tcbiAgICAgIGRpc3BsYXk6ICdpbmxpbmUtYmxvY2snLFxuICAgICAgZmlsbDogJ2N1cnJlbnRDb2xvcicsXG4gICAgICBsaW5lSGVpZ2h0OiAxLFxuICAgICAgc3Ryb2tlOiAnY3VycmVudENvbG9yJyxcbiAgICAgIHN0cm9rZVdpZHRoOiAwLFxuICAgIH19XG4gICAgey4uLnByb3BzfVxuICAvPlxuKTtcblxuZXhwb3J0IHR5cGUgQ3Jvc3NJY29uUHJvcHMgPSBKU1guSW50cmluc2ljRWxlbWVudHNbJ3N2ZyddICYgeyBzaXplPzogbnVtYmVyIH07XG5leHBvcnQgY29uc3QgQ3Jvc3NJY29uID0gKHByb3BzOiBDcm9zc0ljb25Qcm9wcykgPT4gKFxuICA8U3ZnIHNpemU9ezIwfSB7Li4ucHJvcHN9PlxuICAgIDxwYXRoIGQ9XCJNMTQuMzQ4IDE0Ljg0OWMtMC40NjkgMC40NjktMS4yMjkgMC40NjktMS42OTcgMGwtMi42NTEtMy4wMzAtMi42NTEgMy4wMjljLTAuNDY5IDAuNDY5LTEuMjI5IDAuNDY5LTEuNjk3IDAtMC40NjktMC40NjktMC40NjktMS4yMjkgMC0xLjY5N2wyLjc1OC0zLjE1LTIuNzU5LTMuMTUyYy0wLjQ2OS0wLjQ2OS0wLjQ2OS0xLjIyOCAwLTEuNjk3czEuMjI4LTAuNDY5IDEuNjk3IDBsMi42NTIgMy4wMzEgMi42NTEtMy4wMzFjMC40NjktMC40NjkgMS4yMjgtMC40NjkgMS42OTcgMHMwLjQ2OSAxLjIyOSAwIDEuNjk3bC0yLjc1OCAzLjE1MiAyLjc1OCAzLjE1YzAuNDY5IDAuNDY5IDAuNDY5IDEuMjI5IDAgMS42OTh6XCIgLz5cbiAgPC9Tdmc+XG4pO1xuZXhwb3J0IHR5cGUgRG93bkNoZXZyb25Qcm9wcyA9IEpTWC5JbnRyaW5zaWNFbGVtZW50c1snc3ZnJ10gJiB7IHNpemU/OiBudW1iZXIgfTtcbmV4cG9ydCBjb25zdCBEb3duQ2hldnJvbiA9IChwcm9wczogRG93bkNoZXZyb25Qcm9wcykgPT4gKFxuICA8U3ZnIHNpemU9ezIwfSB7Li4ucHJvcHN9PlxuICAgIDxwYXRoIGQ9XCJNNC41MTYgNy41NDhjMC40MzYtMC40NDYgMS4wNDMtMC40ODEgMS41NzYgMGwzLjkwOCAzLjc0NyAzLjkwOC0zLjc0N2MwLjUzMy0wLjQ4MSAxLjE0MS0wLjQ0NiAxLjU3NCAwIDAuNDM2IDAuNDQ1IDAuNDA4IDEuMTk3IDAgMS42MTUtMC40MDYgMC40MTgtNC42OTUgNC41MDItNC42OTUgNC41MDItMC4yMTcgMC4yMjMtMC41MDIgMC4zMzUtMC43ODcgMC4zMzVzLTAuNTctMC4xMTItMC43ODktMC4zMzVjMCAwLTQuMjg3LTQuMDg0LTQuNjk1LTQuNTAycy0wLjQzNi0xLjE3IDAtMS42MTV6XCIgLz5cbiAgPC9Tdmc+XG4pO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIERyb3Bkb3duICYgQ2xlYXIgQnV0dG9uc1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbmV4cG9ydCBpbnRlcmZhY2UgRHJvcGRvd25JbmRpY2F0b3JQcm9wczxcbiAgT3B0aW9uID0gdW5rbm93bixcbiAgSXNNdWx0aSBleHRlbmRzIGJvb2xlYW4gPSBib29sZWFuLFxuICBHcm91cCBleHRlbmRzIEdyb3VwQmFzZTxPcHRpb24+ID0gR3JvdXBCYXNlPE9wdGlvbj5cbj4gZXh0ZW5kcyBDb21tb25Qcm9wc0FuZENsYXNzTmFtZTxPcHRpb24sIElzTXVsdGksIEdyb3VwPiB7XG4gIC8qKiBUaGUgY2hpbGRyZW4gdG8gYmUgcmVuZGVyZWQgaW5zaWRlIHRoZSBpbmRpY2F0b3IuICovXG4gIGNoaWxkcmVuPzogUmVhY3ROb2RlO1xuICAvKiogUHJvcHMgdGhhdCB3aWxsIGJlIHBhc3NlZCBvbiB0byB0aGUgY2hpbGRyZW4uICovXG4gIGlubmVyUHJvcHM6IEpTWC5JbnRyaW5zaWNFbGVtZW50c1snZGl2J107XG4gIC8qKiBUaGUgZm9jdXNlZCBzdGF0ZSBvZiB0aGUgc2VsZWN0LiAqL1xuICBpc0ZvY3VzZWQ6IGJvb2xlYW47XG4gIGlzRGlzYWJsZWQ6IGJvb2xlYW47XG59XG5cbmNvbnN0IGJhc2VDU1MgPSA8XG4gIE9wdGlvbixcbiAgSXNNdWx0aSBleHRlbmRzIGJvb2xlYW4sXG4gIEdyb3VwIGV4dGVuZHMgR3JvdXBCYXNlPE9wdGlvbj5cbj4oXG4gIHtcbiAgICBpc0ZvY3VzZWQsXG4gICAgdGhlbWU6IHtcbiAgICAgIHNwYWNpbmc6IHsgYmFzZVVuaXQgfSxcbiAgICAgIGNvbG9ycyxcbiAgICB9LFxuICB9OlxuICAgIHwgRHJvcGRvd25JbmRpY2F0b3JQcm9wczxPcHRpb24sIElzTXVsdGksIEdyb3VwPlxuICAgIHwgQ2xlYXJJbmRpY2F0b3JQcm9wczxPcHRpb24sIElzTXVsdGksIEdyb3VwPixcbiAgdW5zdHlsZWQ6IGJvb2xlYW5cbik6IENTU09iamVjdFdpdGhMYWJlbCA9PiAoe1xuICBsYWJlbDogJ2luZGljYXRvckNvbnRhaW5lcicsXG4gIGRpc3BsYXk6ICdmbGV4JyxcbiAgdHJhbnNpdGlvbjogJ2NvbG9yIDE1MG1zJyxcbiAgLi4uKHVuc3R5bGVkXG4gICAgPyB7fVxuICAgIDoge1xuICAgICAgICBjb2xvcjogaXNGb2N1c2VkID8gY29sb3JzLm5ldXRyYWw2MCA6IGNvbG9ycy5uZXV0cmFsMjAsXG4gICAgICAgIHBhZGRpbmc6IGJhc2VVbml0ICogMixcbiAgICAgICAgJzpob3Zlcic6IHtcbiAgICAgICAgICBjb2xvcjogaXNGb2N1c2VkID8gY29sb3JzLm5ldXRyYWw4MCA6IGNvbG9ycy5uZXV0cmFsNDAsXG4gICAgICAgIH0sXG4gICAgICB9KSxcbn0pO1xuXG5leHBvcnQgY29uc3QgZHJvcGRvd25JbmRpY2F0b3JDU1MgPSBiYXNlQ1NTO1xuZXhwb3J0IGNvbnN0IERyb3Bkb3duSW5kaWNhdG9yID0gPFxuICBPcHRpb24sXG4gIElzTXVsdGkgZXh0ZW5kcyBib29sZWFuLFxuICBHcm91cCBleHRlbmRzIEdyb3VwQmFzZTxPcHRpb24+XG4+KFxuICBwcm9wczogRHJvcGRvd25JbmRpY2F0b3JQcm9wczxPcHRpb24sIElzTXVsdGksIEdyb3VwPlxuKSA9PiB7XG4gIGNvbnN0IHsgY2hpbGRyZW4sIGlubmVyUHJvcHMgfSA9IHByb3BzO1xuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIHsuLi5nZXRTdHlsZVByb3BzKHByb3BzLCAnZHJvcGRvd25JbmRpY2F0b3InLCB7XG4gICAgICAgIGluZGljYXRvcjogdHJ1ZSxcbiAgICAgICAgJ2Ryb3Bkb3duLWluZGljYXRvcic6IHRydWUsXG4gICAgICB9KX1cbiAgICAgIHsuLi5pbm5lclByb3BzfVxuICAgID5cbiAgICAgIHtjaGlsZHJlbiB8fCA8RG93bkNoZXZyb24gLz59XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIENsZWFySW5kaWNhdG9yUHJvcHM8XG4gIE9wdGlvbiA9IHVua25vd24sXG4gIElzTXVsdGkgZXh0ZW5kcyBib29sZWFuID0gYm9vbGVhbixcbiAgR3JvdXAgZXh0ZW5kcyBHcm91cEJhc2U8T3B0aW9uPiA9IEdyb3VwQmFzZTxPcHRpb24+XG4+IGV4dGVuZHMgQ29tbW9uUHJvcHNBbmRDbGFzc05hbWU8T3B0aW9uLCBJc011bHRpLCBHcm91cD4ge1xuICAvKiogVGhlIGNoaWxkcmVuIHRvIGJlIHJlbmRlcmVkIGluc2lkZSB0aGUgaW5kaWNhdG9yLiAqL1xuICBjaGlsZHJlbj86IFJlYWN0Tm9kZTtcbiAgLyoqIFByb3BzIHRoYXQgd2lsbCBiZSBwYXNzZWQgb24gdG8gdGhlIGNoaWxkcmVuLiAqL1xuICBpbm5lclByb3BzOiBKU1guSW50cmluc2ljRWxlbWVudHNbJ2RpdiddO1xuICAvKiogVGhlIGZvY3VzZWQgc3RhdGUgb2YgdGhlIHNlbGVjdC4gKi9cbiAgaXNGb2N1c2VkOiBib29sZWFuO1xufVxuXG5leHBvcnQgY29uc3QgY2xlYXJJbmRpY2F0b3JDU1MgPSBiYXNlQ1NTO1xuZXhwb3J0IGNvbnN0IENsZWFySW5kaWNhdG9yID0gPFxuICBPcHRpb24sXG4gIElzTXVsdGkgZXh0ZW5kcyBib29sZWFuLFxuICBHcm91cCBleHRlbmRzIEdyb3VwQmFzZTxPcHRpb24+XG4+KFxuICBwcm9wczogQ2xlYXJJbmRpY2F0b3JQcm9wczxPcHRpb24sIElzTXVsdGksIEdyb3VwPlxuKSA9PiB7XG4gIGNvbnN0IHsgY2hpbGRyZW4sIGlubmVyUHJvcHMgfSA9IHByb3BzO1xuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIHsuLi5nZXRTdHlsZVByb3BzKHByb3BzLCAnY2xlYXJJbmRpY2F0b3InLCB7XG4gICAgICAgIGluZGljYXRvcjogdHJ1ZSxcbiAgICAgICAgJ2NsZWFyLWluZGljYXRvcic6IHRydWUsXG4gICAgICB9KX1cbiAgICAgIHsuLi5pbm5lclByb3BzfVxuICAgID5cbiAgICAgIHtjaGlsZHJlbiB8fCA8Q3Jvc3NJY29uIC8+fVxuICAgIDwvZGl2PlxuICApO1xufTtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBTZXBhcmF0b3Jcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5leHBvcnQgaW50ZXJmYWNlIEluZGljYXRvclNlcGFyYXRvclByb3BzPFxuICBPcHRpb24gPSB1bmtub3duLFxuICBJc011bHRpIGV4dGVuZHMgYm9vbGVhbiA9IGJvb2xlYW4sXG4gIEdyb3VwIGV4dGVuZHMgR3JvdXBCYXNlPE9wdGlvbj4gPSBHcm91cEJhc2U8T3B0aW9uPlxuPiBleHRlbmRzIENvbW1vblByb3BzQW5kQ2xhc3NOYW1lPE9wdGlvbiwgSXNNdWx0aSwgR3JvdXA+IHtcbiAgaXNEaXNhYmxlZDogYm9vbGVhbjtcbiAgaXNGb2N1c2VkOiBib29sZWFuO1xuICBpbm5lclByb3BzPzogSlNYLkludHJpbnNpY0VsZW1lbnRzWydzcGFuJ107XG59XG5cbmV4cG9ydCBjb25zdCBpbmRpY2F0b3JTZXBhcmF0b3JDU1MgPSA8XG4gIE9wdGlvbixcbiAgSXNNdWx0aSBleHRlbmRzIGJvb2xlYW4sXG4gIEdyb3VwIGV4dGVuZHMgR3JvdXBCYXNlPE9wdGlvbj5cbj4oXG4gIHtcbiAgICBpc0Rpc2FibGVkLFxuICAgIHRoZW1lOiB7XG4gICAgICBzcGFjaW5nOiB7IGJhc2VVbml0IH0sXG4gICAgICBjb2xvcnMsXG4gICAgfSxcbiAgfTogSW5kaWNhdG9yU2VwYXJhdG9yUHJvcHM8T3B0aW9uLCBJc011bHRpLCBHcm91cD4sXG4gIHVuc3R5bGVkOiBib29sZWFuXG4pOiBDU1NPYmplY3RXaXRoTGFiZWwgPT4gKHtcbiAgbGFiZWw6ICdpbmRpY2F0b3JTZXBhcmF0b3InLFxuICBhbGlnblNlbGY6ICdzdHJldGNoJyxcbiAgd2lkdGg6IDEsXG4gIC4uLih1bnN0eWxlZFxuICAgID8ge31cbiAgICA6IHtcbiAgICAgICAgYmFja2dyb3VuZENvbG9yOiBpc0Rpc2FibGVkID8gY29sb3JzLm5ldXRyYWwxMCA6IGNvbG9ycy5uZXV0cmFsMjAsXG4gICAgICAgIG1hcmdpbkJvdHRvbTogYmFzZVVuaXQgKiAyLFxuICAgICAgICBtYXJnaW5Ub3A6IGJhc2VVbml0ICogMixcbiAgICAgIH0pLFxufSk7XG5cbmV4cG9ydCBjb25zdCBJbmRpY2F0b3JTZXBhcmF0b3IgPSA8XG4gIE9wdGlvbixcbiAgSXNNdWx0aSBleHRlbmRzIGJvb2xlYW4sXG4gIEdyb3VwIGV4dGVuZHMgR3JvdXBCYXNlPE9wdGlvbj5cbj4oXG4gIHByb3BzOiBJbmRpY2F0b3JTZXBhcmF0b3JQcm9wczxPcHRpb24sIElzTXVsdGksIEdyb3VwPlxuKSA9PiB7XG4gIGNvbnN0IHsgaW5uZXJQcm9wcyB9ID0gcHJvcHM7XG4gIHJldHVybiAoXG4gICAgPHNwYW5cbiAgICAgIHsuLi5pbm5lclByb3BzfVxuICAgICAgey4uLmdldFN0eWxlUHJvcHMocHJvcHMsICdpbmRpY2F0b3JTZXBhcmF0b3InLCB7XG4gICAgICAgICdpbmRpY2F0b3Itc2VwYXJhdG9yJzogdHJ1ZSxcbiAgICAgIH0pfVxuICAgIC8+XG4gICk7XG59O1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIExvYWRpbmdcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5jb25zdCBsb2FkaW5nRG90QW5pbWF0aW9ucyA9IGtleWZyYW1lc2BcbiAgMCUsIDgwJSwgMTAwJSB7IG9wYWNpdHk6IDA7IH1cbiAgNDAlIHsgb3BhY2l0eTogMTsgfVxuYDtcblxuZXhwb3J0IGNvbnN0IGxvYWRpbmdJbmRpY2F0b3JDU1MgPSA8XG4gIE9wdGlvbixcbiAgSXNNdWx0aSBleHRlbmRzIGJvb2xlYW4sXG4gIEdyb3VwIGV4dGVuZHMgR3JvdXBCYXNlPE9wdGlvbj5cbj4oXG4gIHtcbiAgICBpc0ZvY3VzZWQsXG4gICAgc2l6ZSxcbiAgICB0aGVtZToge1xuICAgICAgY29sb3JzLFxuICAgICAgc3BhY2luZzogeyBiYXNlVW5pdCB9LFxuICAgIH0sXG4gIH06IExvYWRpbmdJbmRpY2F0b3JQcm9wczxPcHRpb24sIElzTXVsdGksIEdyb3VwPixcbiAgdW5zdHlsZWQ6IGJvb2xlYW5cbik6IENTU09iamVjdFdpdGhMYWJlbCA9PiAoe1xuICBsYWJlbDogJ2xvYWRpbmdJbmRpY2F0b3InLFxuICBkaXNwbGF5OiAnZmxleCcsXG4gIHRyYW5zaXRpb246ICdjb2xvciAxNTBtcycsXG4gIGFsaWduU2VsZjogJ2NlbnRlcicsXG4gIGZvbnRTaXplOiBzaXplLFxuICBsaW5lSGVpZ2h0OiAxLFxuICBtYXJnaW5SaWdodDogc2l6ZSxcbiAgdGV4dEFsaWduOiAnY2VudGVyJyxcbiAgdmVydGljYWxBbGlnbjogJ21pZGRsZScsXG4gIC4uLih1bnN0eWxlZFxuICAgID8ge31cbiAgICA6IHtcbiAgICAgICAgY29sb3I6IGlzRm9jdXNlZCA/IGNvbG9ycy5uZXV0cmFsNjAgOiBjb2xvcnMubmV1dHJhbDIwLFxuICAgICAgICBwYWRkaW5nOiBiYXNlVW5pdCAqIDIsXG4gICAgICB9KSxcbn0pO1xuXG5pbnRlcmZhY2UgTG9hZGluZ0RvdFByb3BzIHtcbiAgZGVsYXk6IG51bWJlcjtcbiAgb2Zmc2V0OiBib29sZWFuO1xufVxuY29uc3QgTG9hZGluZ0RvdCA9ICh7IGRlbGF5LCBvZmZzZXQgfTogTG9hZGluZ0RvdFByb3BzKSA9PiAoXG4gIDxzcGFuXG4gICAgY3NzPXt7XG4gICAgICBhbmltYXRpb246IGAke2xvYWRpbmdEb3RBbmltYXRpb25zfSAxcyBlYXNlLWluLW91dCAke2RlbGF5fW1zIGluZmluaXRlO2AsXG4gICAgICBiYWNrZ3JvdW5kQ29sb3I6ICdjdXJyZW50Q29sb3InLFxuICAgICAgYm9yZGVyUmFkaXVzOiAnMWVtJyxcbiAgICAgIGRpc3BsYXk6ICdpbmxpbmUtYmxvY2snLFxuICAgICAgbWFyZ2luTGVmdDogb2Zmc2V0ID8gJzFlbScgOiB1bmRlZmluZWQsXG4gICAgICBoZWlnaHQ6ICcxZW0nLFxuICAgICAgdmVydGljYWxBbGlnbjogJ3RvcCcsXG4gICAgICB3aWR0aDogJzFlbScsXG4gICAgfX1cbiAgLz5cbik7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTG9hZGluZ0luZGljYXRvclByb3BzPFxuICBPcHRpb24gPSB1bmtub3duLFxuICBJc011bHRpIGV4dGVuZHMgYm9vbGVhbiA9IGJvb2xlYW4sXG4gIEdyb3VwIGV4dGVuZHMgR3JvdXBCYXNlPE9wdGlvbj4gPSBHcm91cEJhc2U8T3B0aW9uPlxuPiBleHRlbmRzIENvbW1vblByb3BzQW5kQ2xhc3NOYW1lPE9wdGlvbiwgSXNNdWx0aSwgR3JvdXA+IHtcbiAgLyoqIFByb3BzIHRoYXQgd2lsbCBiZSBwYXNzZWQgb24gdG8gdGhlIGNoaWxkcmVuLiAqL1xuICBpbm5lclByb3BzOiBKU1guSW50cmluc2ljRWxlbWVudHNbJ2RpdiddO1xuICAvKiogVGhlIGZvY3VzZWQgc3RhdGUgb2YgdGhlIHNlbGVjdC4gKi9cbiAgaXNGb2N1c2VkOiBib29sZWFuO1xuICBpc0Rpc2FibGVkOiBib29sZWFuO1xuICAvKiogU2V0IHNpemUgb2YgdGhlIGNvbnRhaW5lci4gKi9cbiAgc2l6ZTogbnVtYmVyO1xufVxuZXhwb3J0IGNvbnN0IExvYWRpbmdJbmRpY2F0b3IgPSA8XG4gIE9wdGlvbixcbiAgSXNNdWx0aSBleHRlbmRzIGJvb2xlYW4sXG4gIEdyb3VwIGV4dGVuZHMgR3JvdXBCYXNlPE9wdGlvbj5cbj4oe1xuICBpbm5lclByb3BzLFxuICBpc1J0bCxcbiAgc2l6ZSA9IDQsXG4gIC4uLnJlc3RQcm9wc1xufTogTG9hZGluZ0luZGljYXRvclByb3BzPE9wdGlvbiwgSXNNdWx0aSwgR3JvdXA+KSA9PiB7XG4gIHJldHVybiAoXG4gICAgPGRpdlxuICAgICAgey4uLmdldFN0eWxlUHJvcHMoXG4gICAgICAgIHsgLi4ucmVzdFByb3BzLCBpbm5lclByb3BzLCBpc1J0bCwgc2l6ZSB9LFxuICAgICAgICAnbG9hZGluZ0luZGljYXRvcicsXG4gICAgICAgIHtcbiAgICAgICAgICBpbmRpY2F0b3I6IHRydWUsXG4gICAgICAgICAgJ2xvYWRpbmctaW5kaWNhdG9yJzogdHJ1ZSxcbiAgICAgICAgfVxuICAgICAgKX1cbiAgICAgIHsuLi5pbm5lclByb3BzfVxuICAgID5cbiAgICAgIDxMb2FkaW5nRG90IGRlbGF5PXswfSBvZmZzZXQ9e2lzUnRsfSAvPlxuICAgICAgPExvYWRpbmdEb3QgZGVsYXk9ezE2MH0gb2Zmc2V0IC8+XG4gICAgICA8TG9hZGluZ0RvdCBkZWxheT17MzIwfSBvZmZzZXQ9eyFpc1J0bH0gLz5cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG4iXX0= */\")\n });\n};\nvar LoadingIndicator = function LoadingIndicator(_ref7) {\n var innerProps = _ref7.innerProps,\n isRtl = _ref7.isRtl,\n _ref7$size = _ref7.size,\n size = _ref7$size === void 0 ? 4 : _ref7$size,\n restProps = _objectWithoutProperties(_ref7, _excluded2);\n return jsx(\"div\", _extends({}, getStyleProps(_objectSpread(_objectSpread({}, restProps), {}, {\n innerProps: innerProps,\n isRtl: isRtl,\n size: size\n }), 'loadingIndicator', {\n indicator: true,\n 'loading-indicator': true\n }), innerProps), jsx(LoadingDot, {\n delay: 0,\n offset: isRtl\n }), jsx(LoadingDot, {\n delay: 160,\n offset: true\n }), jsx(LoadingDot, {\n delay: 320,\n offset: !isRtl\n }));\n};\n\nvar css$1 = function css(_ref, unstyled) {\n var isDisabled = _ref.isDisabled,\n isFocused = _ref.isFocused,\n _ref$theme = _ref.theme,\n colors = _ref$theme.colors,\n borderRadius = _ref$theme.borderRadius,\n spacing = _ref$theme.spacing;\n return _objectSpread({\n label: 'control',\n alignItems: 'center',\n cursor: 'default',\n display: 'flex',\n flexWrap: 'wrap',\n justifyContent: 'space-between',\n minHeight: spacing.controlHeight,\n outline: '0 !important',\n position: 'relative',\n transition: 'all 100ms'\n }, unstyled ? {} : {\n backgroundColor: isDisabled ? colors.neutral5 : colors.neutral0,\n borderColor: isDisabled ? colors.neutral10 : isFocused ? colors.primary : colors.neutral20,\n borderRadius: borderRadius,\n borderStyle: 'solid',\n borderWidth: 1,\n boxShadow: isFocused ? \"0 0 0 1px \".concat(colors.primary) : undefined,\n '&:hover': {\n borderColor: isFocused ? colors.primary : colors.neutral30\n }\n });\n};\nvar Control = function Control(props) {\n var children = props.children,\n isDisabled = props.isDisabled,\n isFocused = props.isFocused,\n innerRef = props.innerRef,\n innerProps = props.innerProps,\n menuIsOpen = props.menuIsOpen;\n return jsx(\"div\", _extends({\n ref: innerRef\n }, getStyleProps(props, 'control', {\n control: true,\n 'control--is-disabled': isDisabled,\n 'control--is-focused': isFocused,\n 'control--menu-is-open': menuIsOpen\n }), innerProps, {\n \"aria-disabled\": isDisabled || undefined\n }), children);\n};\nvar Control$1 = Control;\n\nvar _excluded$1 = [\"data\"];\nvar groupCSS = function groupCSS(_ref, unstyled) {\n var spacing = _ref.theme.spacing;\n return unstyled ? {} : {\n paddingBottom: spacing.baseUnit * 2,\n paddingTop: spacing.baseUnit * 2\n };\n};\nvar Group = function Group(props) {\n var children = props.children,\n cx = props.cx,\n getStyles = props.getStyles,\n getClassNames = props.getClassNames,\n Heading = props.Heading,\n headingProps = props.headingProps,\n innerProps = props.innerProps,\n label = props.label,\n theme = props.theme,\n selectProps = props.selectProps;\n return jsx(\"div\", _extends({}, getStyleProps(props, 'group', {\n group: true\n }), innerProps), jsx(Heading, _extends({}, headingProps, {\n selectProps: selectProps,\n theme: theme,\n getStyles: getStyles,\n getClassNames: getClassNames,\n cx: cx\n }), label), jsx(\"div\", null, children));\n};\nvar groupHeadingCSS = function groupHeadingCSS(_ref2, unstyled) {\n var _ref2$theme = _ref2.theme,\n colors = _ref2$theme.colors,\n spacing = _ref2$theme.spacing;\n return _objectSpread({\n label: 'group',\n cursor: 'default',\n display: 'block'\n }, unstyled ? {} : {\n color: colors.neutral40,\n fontSize: '75%',\n fontWeight: 500,\n marginBottom: '0.25em',\n paddingLeft: spacing.baseUnit * 3,\n paddingRight: spacing.baseUnit * 3,\n textTransform: 'uppercase'\n });\n};\nvar GroupHeading = function GroupHeading(props) {\n var _cleanCommonProps = cleanCommonProps(props);\n _cleanCommonProps.data;\n var innerProps = _objectWithoutProperties(_cleanCommonProps, _excluded$1);\n return jsx(\"div\", _extends({}, getStyleProps(props, 'groupHeading', {\n 'group-heading': true\n }), innerProps));\n};\nvar Group$1 = Group;\n\nvar _excluded = [\"innerRef\", \"isDisabled\", \"isHidden\", \"inputClassName\"];\nvar inputCSS = function inputCSS(_ref, unstyled) {\n var isDisabled = _ref.isDisabled,\n value = _ref.value,\n _ref$theme = _ref.theme,\n spacing = _ref$theme.spacing,\n colors = _ref$theme.colors;\n return _objectSpread(_objectSpread({\n visibility: isDisabled ? 'hidden' : 'visible',\n // force css to recompute when value change due to @emotion bug.\n // We can remove it whenever the bug is fixed.\n transform: value ? 'translateZ(0)' : ''\n }, containerStyle), unstyled ? {} : {\n margin: spacing.baseUnit / 2,\n paddingBottom: spacing.baseUnit / 2,\n paddingTop: spacing.baseUnit / 2,\n color: colors.neutral80\n });\n};\nvar spacingStyle = {\n gridArea: '1 / 2',\n font: 'inherit',\n minWidth: '2px',\n border: 0,\n margin: 0,\n outline: 0,\n padding: 0\n};\nvar containerStyle = {\n flex: '1 1 auto',\n display: 'inline-grid',\n gridArea: '1 / 1 / 2 / 3',\n gridTemplateColumns: '0 min-content',\n '&:after': _objectSpread({\n content: 'attr(data-value) \" \"',\n visibility: 'hidden',\n whiteSpace: 'pre'\n }, spacingStyle)\n};\nvar inputStyle = function inputStyle(isHidden) {\n return _objectSpread({\n label: 'input',\n color: 'inherit',\n background: 0,\n opacity: isHidden ? 0 : 1,\n width: '100%'\n }, spacingStyle);\n};\nvar Input = function Input(props) {\n var cx = props.cx,\n value = props.value;\n var _cleanCommonProps = cleanCommonProps(props),\n innerRef = _cleanCommonProps.innerRef,\n isDisabled = _cleanCommonProps.isDisabled,\n isHidden = _cleanCommonProps.isHidden,\n inputClassName = _cleanCommonProps.inputClassName,\n innerProps = _objectWithoutProperties(_cleanCommonProps, _excluded);\n return jsx(\"div\", _extends({}, getStyleProps(props, 'input', {\n 'input-container': true\n }), {\n \"data-value\": value || ''\n }), jsx(\"input\", _extends({\n className: cx({\n input: true\n }, inputClassName),\n ref: innerRef,\n style: inputStyle(isHidden),\n disabled: isDisabled\n }, innerProps)));\n};\nvar Input$1 = Input;\n\nvar multiValueCSS = function multiValueCSS(_ref, unstyled) {\n var _ref$theme = _ref.theme,\n spacing = _ref$theme.spacing,\n borderRadius = _ref$theme.borderRadius,\n colors = _ref$theme.colors;\n return _objectSpread({\n label: 'multiValue',\n display: 'flex',\n minWidth: 0\n }, unstyled ? {} : {\n backgroundColor: colors.neutral10,\n borderRadius: borderRadius / 2,\n margin: spacing.baseUnit / 2\n });\n};\nvar multiValueLabelCSS = function multiValueLabelCSS(_ref2, unstyled) {\n var _ref2$theme = _ref2.theme,\n borderRadius = _ref2$theme.borderRadius,\n colors = _ref2$theme.colors,\n cropWithEllipsis = _ref2.cropWithEllipsis;\n return _objectSpread({\n overflow: 'hidden',\n textOverflow: cropWithEllipsis || cropWithEllipsis === undefined ? 'ellipsis' : undefined,\n whiteSpace: 'nowrap'\n }, unstyled ? {} : {\n borderRadius: borderRadius / 2,\n color: colors.neutral80,\n fontSize: '85%',\n padding: 3,\n paddingLeft: 6\n });\n};\nvar multiValueRemoveCSS = function multiValueRemoveCSS(_ref3, unstyled) {\n var _ref3$theme = _ref3.theme,\n spacing = _ref3$theme.spacing,\n borderRadius = _ref3$theme.borderRadius,\n colors = _ref3$theme.colors,\n isFocused = _ref3.isFocused;\n return _objectSpread({\n alignItems: 'center',\n display: 'flex'\n }, unstyled ? {} : {\n borderRadius: borderRadius / 2,\n backgroundColor: isFocused ? colors.dangerLight : undefined,\n paddingLeft: spacing.baseUnit,\n paddingRight: spacing.baseUnit,\n ':hover': {\n backgroundColor: colors.dangerLight,\n color: colors.danger\n }\n });\n};\nvar MultiValueGeneric = function MultiValueGeneric(_ref4) {\n var children = _ref4.children,\n innerProps = _ref4.innerProps;\n return jsx(\"div\", innerProps, children);\n};\nvar MultiValueContainer = MultiValueGeneric;\nvar MultiValueLabel = MultiValueGeneric;\nfunction MultiValueRemove(_ref5) {\n var children = _ref5.children,\n innerProps = _ref5.innerProps;\n return jsx(\"div\", _extends({\n role: \"button\"\n }, innerProps), children || jsx(CrossIcon, {\n size: 14\n }));\n}\nvar MultiValue = function MultiValue(props) {\n var children = props.children,\n components = props.components,\n data = props.data,\n innerProps = props.innerProps,\n isDisabled = props.isDisabled,\n removeProps = props.removeProps,\n selectProps = props.selectProps;\n var Container = components.Container,\n Label = components.Label,\n Remove = components.Remove;\n return jsx(Container, {\n data: data,\n innerProps: _objectSpread(_objectSpread({}, getStyleProps(props, 'multiValue', {\n 'multi-value': true,\n 'multi-value--is-disabled': isDisabled\n })), innerProps),\n selectProps: selectProps\n }, jsx(Label, {\n data: data,\n innerProps: _objectSpread({}, getStyleProps(props, 'multiValueLabel', {\n 'multi-value__label': true\n })),\n selectProps: selectProps\n }, children), jsx(Remove, {\n data: data,\n innerProps: _objectSpread(_objectSpread({}, getStyleProps(props, 'multiValueRemove', {\n 'multi-value__remove': true\n })), {}, {\n 'aria-label': \"Remove \".concat(children || 'option')\n }, removeProps),\n selectProps: selectProps\n }));\n};\nvar MultiValue$1 = MultiValue;\n\nvar optionCSS = function optionCSS(_ref, unstyled) {\n var isDisabled = _ref.isDisabled,\n isFocused = _ref.isFocused,\n isSelected = _ref.isSelected,\n _ref$theme = _ref.theme,\n spacing = _ref$theme.spacing,\n colors = _ref$theme.colors;\n return _objectSpread({\n label: 'option',\n cursor: 'default',\n display: 'block',\n fontSize: 'inherit',\n width: '100%',\n userSelect: 'none',\n WebkitTapHighlightColor: 'rgba(0, 0, 0, 0)'\n }, unstyled ? {} : {\n backgroundColor: isSelected ? colors.primary : isFocused ? colors.primary25 : 'transparent',\n color: isDisabled ? colors.neutral20 : isSelected ? colors.neutral0 : 'inherit',\n padding: \"\".concat(spacing.baseUnit * 2, \"px \").concat(spacing.baseUnit * 3, \"px\"),\n // provide some affordance on touch devices\n ':active': {\n backgroundColor: !isDisabled ? isSelected ? colors.primary : colors.primary50 : undefined\n }\n });\n};\nvar Option = function Option(props) {\n var children = props.children,\n isDisabled = props.isDisabled,\n isFocused = props.isFocused,\n isSelected = props.isSelected,\n innerRef = props.innerRef,\n innerProps = props.innerProps;\n return jsx(\"div\", _extends({}, getStyleProps(props, 'option', {\n option: true,\n 'option--is-disabled': isDisabled,\n 'option--is-focused': isFocused,\n 'option--is-selected': isSelected\n }), {\n ref: innerRef,\n \"aria-disabled\": isDisabled\n }, innerProps), children);\n};\nvar Option$1 = Option;\n\nvar placeholderCSS = function placeholderCSS(_ref, unstyled) {\n var _ref$theme = _ref.theme,\n spacing = _ref$theme.spacing,\n colors = _ref$theme.colors;\n return _objectSpread({\n label: 'placeholder',\n gridArea: '1 / 1 / 2 / 3'\n }, unstyled ? {} : {\n color: colors.neutral50,\n marginLeft: spacing.baseUnit / 2,\n marginRight: spacing.baseUnit / 2\n });\n};\nvar Placeholder = function Placeholder(props) {\n var children = props.children,\n innerProps = props.innerProps;\n return jsx(\"div\", _extends({}, getStyleProps(props, 'placeholder', {\n placeholder: true\n }), innerProps), children);\n};\nvar Placeholder$1 = Placeholder;\n\nvar css = function css(_ref, unstyled) {\n var isDisabled = _ref.isDisabled,\n _ref$theme = _ref.theme,\n spacing = _ref$theme.spacing,\n colors = _ref$theme.colors;\n return _objectSpread({\n label: 'singleValue',\n gridArea: '1 / 1 / 2 / 3',\n maxWidth: '100%',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap'\n }, unstyled ? {} : {\n color: isDisabled ? colors.neutral40 : colors.neutral80,\n marginLeft: spacing.baseUnit / 2,\n marginRight: spacing.baseUnit / 2\n });\n};\nvar SingleValue = function SingleValue(props) {\n var children = props.children,\n isDisabled = props.isDisabled,\n innerProps = props.innerProps;\n return jsx(\"div\", _extends({}, getStyleProps(props, 'singleValue', {\n 'single-value': true,\n 'single-value--is-disabled': isDisabled\n }), innerProps), children);\n};\nvar SingleValue$1 = SingleValue;\n\nvar components = {\n ClearIndicator: ClearIndicator,\n Control: Control$1,\n DropdownIndicator: DropdownIndicator,\n DownChevron: DownChevron,\n CrossIcon: CrossIcon,\n Group: Group$1,\n GroupHeading: GroupHeading,\n IndicatorsContainer: IndicatorsContainer,\n IndicatorSeparator: IndicatorSeparator,\n Input: Input$1,\n LoadingIndicator: LoadingIndicator,\n Menu: Menu$1,\n MenuList: MenuList,\n MenuPortal: MenuPortal,\n LoadingMessage: LoadingMessage,\n NoOptionsMessage: NoOptionsMessage,\n MultiValue: MultiValue$1,\n MultiValueContainer: MultiValueContainer,\n MultiValueLabel: MultiValueLabel,\n MultiValueRemove: MultiValueRemove,\n Option: Option$1,\n Placeholder: Placeholder$1,\n SelectContainer: SelectContainer,\n SingleValue: SingleValue$1,\n ValueContainer: ValueContainer\n};\nvar defaultComponents = function defaultComponents(props) {\n return _objectSpread(_objectSpread({}, components), props.components);\n};\n\nexport { isMobileDevice as A, multiValueAsValue as B, singleValueAsValue as C, valueTernary as D, classNames as E, defaultComponents as F, isDocumentElement as G, cleanValue as H, scrollIntoView as I, noop as J, notNullish as K, handleInputChange as L, MenuPlacer as M, clearIndicatorCSS as a, containerCSS as b, components as c, css$1 as d, dropdownIndicatorCSS as e, groupHeadingCSS as f, groupCSS as g, indicatorSeparatorCSS as h, indicatorsContainerCSS as i, inputCSS as j, loadingMessageCSS as k, loadingIndicatorCSS as l, menuCSS as m, menuListCSS as n, menuPortalCSS as o, multiValueCSS as p, multiValueLabelCSS as q, removeProps as r, supportsPassiveEvents as s, multiValueRemoveCSS as t, noOptionsMessageCSS as u, optionCSS as v, placeholderCSS as w, css as x, valueContainerCSS as y, isTouchCapable as z };\n", "import { useLayoutEffect } from 'react';\n\nvar index = useLayoutEffect ;\n\nexport { index as default };\n", "var safeIsNaN = Number.isNaN ||\n function ponyfill(value) {\n return typeof value === 'number' && value !== value;\n };\nfunction isEqual(first, second) {\n if (first === second) {\n return true;\n }\n if (safeIsNaN(first) && safeIsNaN(second)) {\n return true;\n }\n return false;\n}\nfunction areInputsEqual(newInputs, lastInputs) {\n if (newInputs.length !== lastInputs.length) {\n return false;\n }\n for (var i = 0; i < newInputs.length; i++) {\n if (!isEqual(newInputs[i], lastInputs[i])) {\n return false;\n }\n }\n return true;\n}\n\nfunction memoizeOne(resultFn, isEqual) {\n if (isEqual === void 0) { isEqual = areInputsEqual; }\n var cache = null;\n function memoized() {\n var newArgs = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n newArgs[_i] = arguments[_i];\n }\n if (cache && cache.lastThis === this && isEqual(newArgs, cache.lastArgs)) {\n return cache.lastResult;\n }\n var lastResult = resultFn.apply(this, newArgs);\n cache = {\n lastResult: lastResult,\n lastArgs: newArgs,\n lastThis: this,\n };\n return lastResult;\n }\n memoized.clear = function clear() {\n cache = null;\n };\n return memoized;\n}\n\nexport { memoizeOne as default };\n", "import _extends from '@babel/runtime/helpers/esm/extends';\nimport * as React from 'react';\nimport { forwardRef } from 'react';\nimport { S as Select } from '../../dist/Select-aab027f3.esm.js';\nimport { u as useStateManager } from '../../dist/useStateManager-7e1e8489.esm.js';\nimport { u as useCreatable } from '../../dist/useCreatable-84008237.esm.js';\nexport { u as useCreatable } from '../../dist/useCreatable-84008237.esm.js';\nimport '@babel/runtime/helpers/objectSpread2';\nimport '@babel/runtime/helpers/classCallCheck';\nimport '@babel/runtime/helpers/createClass';\nimport '@babel/runtime/helpers/inherits';\nimport '@babel/runtime/helpers/createSuper';\nimport '@babel/runtime/helpers/toConsumableArray';\nimport '../../dist/index-641ee5b8.esm.js';\nimport '@emotion/react';\nimport '@babel/runtime/helpers/slicedToArray';\nimport '@babel/runtime/helpers/objectWithoutProperties';\nimport '@babel/runtime/helpers/typeof';\nimport '@babel/runtime/helpers/taggedTemplateLiteral';\nimport '@babel/runtime/helpers/defineProperty';\nimport 'react-dom';\nimport '@floating-ui/dom';\nimport 'use-isomorphic-layout-effect';\nimport 'memoize-one';\n\nvar CreatableSelect = /*#__PURE__*/forwardRef(function (props, ref) {\n var creatableProps = useStateManager(props);\n var selectProps = useCreatable(creatableProps);\n return /*#__PURE__*/React.createElement(Select, _extends({\n ref: ref\n }, selectProps));\n});\nvar CreatableSelect$1 = CreatableSelect;\n\nexport { CreatableSelect$1 as default };\n", "import _objectSpread from '@babel/runtime/helpers/esm/objectSpread2';\nimport _toConsumableArray from '@babel/runtime/helpers/esm/toConsumableArray';\nimport _objectWithoutProperties from '@babel/runtime/helpers/esm/objectWithoutProperties';\nimport { useMemo, useCallback } from 'react';\nimport { H as cleanValue, D as valueTernary } from './index-641ee5b8.esm.js';\nimport { g as getOptionValue, b as getOptionLabel } from './Select-aab027f3.esm.js';\n\nvar _excluded = [\"allowCreateWhileLoading\", \"createOptionPosition\", \"formatCreateLabel\", \"isValidNewOption\", \"getNewOptionData\", \"onCreateOption\", \"options\", \"onChange\"];\nvar compareOption = function compareOption() {\n var inputValue = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n var option = arguments.length > 1 ? arguments[1] : undefined;\n var accessors = arguments.length > 2 ? arguments[2] : undefined;\n var candidate = String(inputValue).toLowerCase();\n var optionValue = String(accessors.getOptionValue(option)).toLowerCase();\n var optionLabel = String(accessors.getOptionLabel(option)).toLowerCase();\n return optionValue === candidate || optionLabel === candidate;\n};\nvar builtins = {\n formatCreateLabel: function formatCreateLabel(inputValue) {\n return \"Create \\\"\".concat(inputValue, \"\\\"\");\n },\n isValidNewOption: function isValidNewOption(inputValue, selectValue, selectOptions, accessors) {\n return !(!inputValue || selectValue.some(function (option) {\n return compareOption(inputValue, option, accessors);\n }) || selectOptions.some(function (option) {\n return compareOption(inputValue, option, accessors);\n }));\n },\n getNewOptionData: function getNewOptionData(inputValue, optionLabel) {\n return {\n label: optionLabel,\n value: inputValue,\n __isNew__: true\n };\n }\n};\nfunction useCreatable(_ref) {\n var _ref$allowCreateWhile = _ref.allowCreateWhileLoading,\n allowCreateWhileLoading = _ref$allowCreateWhile === void 0 ? false : _ref$allowCreateWhile,\n _ref$createOptionPosi = _ref.createOptionPosition,\n createOptionPosition = _ref$createOptionPosi === void 0 ? 'last' : _ref$createOptionPosi,\n _ref$formatCreateLabe = _ref.formatCreateLabel,\n formatCreateLabel = _ref$formatCreateLabe === void 0 ? builtins.formatCreateLabel : _ref$formatCreateLabe,\n _ref$isValidNewOption = _ref.isValidNewOption,\n isValidNewOption = _ref$isValidNewOption === void 0 ? builtins.isValidNewOption : _ref$isValidNewOption,\n _ref$getNewOptionData = _ref.getNewOptionData,\n getNewOptionData = _ref$getNewOptionData === void 0 ? builtins.getNewOptionData : _ref$getNewOptionData,\n onCreateOption = _ref.onCreateOption,\n _ref$options = _ref.options,\n propsOptions = _ref$options === void 0 ? [] : _ref$options,\n propsOnChange = _ref.onChange,\n restSelectProps = _objectWithoutProperties(_ref, _excluded);\n var _restSelectProps$getO = restSelectProps.getOptionValue,\n getOptionValue$1 = _restSelectProps$getO === void 0 ? getOptionValue : _restSelectProps$getO,\n _restSelectProps$getO2 = restSelectProps.getOptionLabel,\n getOptionLabel$1 = _restSelectProps$getO2 === void 0 ? getOptionLabel : _restSelectProps$getO2,\n inputValue = restSelectProps.inputValue,\n isLoading = restSelectProps.isLoading,\n isMulti = restSelectProps.isMulti,\n value = restSelectProps.value,\n name = restSelectProps.name;\n var newOption = useMemo(function () {\n return isValidNewOption(inputValue, cleanValue(value), propsOptions, {\n getOptionValue: getOptionValue$1,\n getOptionLabel: getOptionLabel$1\n }) ? getNewOptionData(inputValue, formatCreateLabel(inputValue)) : undefined;\n }, [formatCreateLabel, getNewOptionData, getOptionLabel$1, getOptionValue$1, inputValue, isValidNewOption, propsOptions, value]);\n var options = useMemo(function () {\n return (allowCreateWhileLoading || !isLoading) && newOption ? createOptionPosition === 'first' ? [newOption].concat(_toConsumableArray(propsOptions)) : [].concat(_toConsumableArray(propsOptions), [newOption]) : propsOptions;\n }, [allowCreateWhileLoading, createOptionPosition, isLoading, newOption, propsOptions]);\n var onChange = useCallback(function (newValue, actionMeta) {\n if (actionMeta.action !== 'select-option') {\n return propsOnChange(newValue, actionMeta);\n }\n var valueArray = Array.isArray(newValue) ? newValue : [newValue];\n if (valueArray[valueArray.length - 1] === newOption) {\n if (onCreateOption) onCreateOption(inputValue);else {\n var newOptionData = getNewOptionData(inputValue, inputValue);\n var newActionMeta = {\n action: 'create-option',\n name: name,\n option: newOptionData\n };\n propsOnChange(valueTernary(isMulti, [].concat(_toConsumableArray(cleanValue(value)), [newOptionData]), newOptionData), newActionMeta);\n }\n return;\n }\n propsOnChange(newValue, actionMeta);\n }, [getNewOptionData, inputValue, isMulti, name, newOption, onCreateOption, propsOnChange, value]);\n return _objectSpread(_objectSpread({}, restSelectProps), {}, {\n options: options,\n onChange: onChange\n });\n}\n\nexport { useCreatable as u };\n", "'use client'\nimport type { ClearIndicatorProps } from 'react-select'\n\nimport React from 'react'\n\nimport type { Option as OptionType } from '../types.js'\n\nimport { XIcon } from '../../../icons/X/index.js'\nimport './index.scss'\n\nconst baseClass = 'clear-indicator'\n\nexport const ClearIndicator: React.FC<ClearIndicatorProps<OptionType, true>> = (props) => {\n const {\n clearValue,\n innerProps: { ref, ...restInnerProps },\n } = props\n\n return (\n <div\n className={baseClass}\n // TODO Fix this - Broke with React 19 types\n ref={typeof ref === 'string' ? null : ref}\n {...restInnerProps}\n onKeyDown={(e) => {\n if (e.key === 'Enter') {\n clearValue()\n e.stopPropagation()\n }\n }}\n role=\"button\"\n tabIndex={0}\n >\n <XIcon className={`${baseClass}__icon`} />\n </div>\n )\n}\n", "'use client'\nimport type { ControlProps } from 'react-select'\n\nimport React from 'react'\nimport { components as SelectComponents } from 'react-select'\n\nimport type { Option } from '../types.js'\n\nexport const Control: React.FC<ControlProps<Option, any>> = (props) => {\n const {\n children,\n innerProps,\n // @ts-expect-error-next-line // TODO Fix this - moduleResolution 16 breaks our declare module\n selectProps: { customProps: { disableKeyDown, disableMouseDown } = {} } = {},\n } = props\n\n return (\n <React.Fragment>\n <SelectComponents.Control\n {...props}\n innerProps={{\n ...innerProps,\n onKeyDown: (e) => {\n if (disableKeyDown) {\n e.stopPropagation()\n // Create event for keydown listeners which specifically want to bypass this stopPropagation\n const bypassEvent = new CustomEvent('bypassKeyDown', { detail: e })\n document.dispatchEvent(bypassEvent)\n }\n },\n // react-select has this typed incorrectly so we disable the linting rule\n // we need to prevent react-select from hijacking the 'onKeyDown' event while modals are open (i.e. the 'Relationship' field component)\n\n onMouseDown: (e) => {\n // we need to prevent react-select from hijacking the 'onMouseDown' event while modals are open (i.e. the 'Relationship' field component)\n if (!disableMouseDown) {\n innerProps.onMouseDown(e)\n }\n },\n }}\n >\n {children}\n </SelectComponents.Control>\n </React.Fragment>\n )\n}\n", "'use client'\nimport type { DropdownIndicatorProps } from 'react-select'\n\nimport React, { type JSX } from 'react'\n\nimport type { Option as OptionType } from '../types.js'\n\nimport { ChevronIcon } from '../../../icons/Chevron/index.js'\nimport './index.scss'\n\nconst baseClass = 'dropdown-indicator'\nexport const DropdownIndicator: React.FC<\n {\n innerProps: JSX.IntrinsicElements['button']\n } & DropdownIndicatorProps<OptionType, true>\n> = (props) => {\n const {\n innerProps: { ref, ...restInnerProps },\n } = props\n\n return (\n <button\n className={baseClass}\n ref={ref}\n {...restInnerProps}\n onKeyDown={(e) => {\n if (e.key === 'Enter') {\n e.key = ' '\n }\n }}\n type=\"button\"\n >\n <ChevronIcon className={`${baseClass}__icon`} />\n </button>\n )\n}\n", "'use client'\nimport type { InputProps } from 'react-select'\n\nimport React from 'react'\nimport { components as SelectComponents } from 'react-select'\n\nimport type { Option } from '../types.js'\n\nexport const Input: React.FC<InputProps<Option, any>> = (props) => {\n return (\n <React.Fragment>\n <SelectComponents.Input\n {...props}\n /**\n * Adding `aria-activedescendant` fixes hydration error\n * source: https://github.com/JedWatson/react-select/issues/5459#issuecomment-1878037196\n */\n aria-activedescendant={undefined}\n />\n </React.Fragment>\n )\n}\n", "'use client'\nimport type { MultiValueProps } from 'react-select'\n\nimport React from 'react'\nimport { components as SelectComponents } from 'react-select'\n\nimport type { Option } from '../types.js'\n\nimport { useDraggableSortable } from '../../DraggableSortable/useDraggableSortable/index.js'\nimport './index.scss'\n\nconst baseClass = 'multi-value'\n\nexport function generateMultiValueDraggableID(optionData, valueFunction) {\n return typeof valueFunction === 'function' ? valueFunction(optionData) : optionData?.value\n}\nexport const MultiValue: React.FC<MultiValueProps<Option>> = (props) => {\n const {\n className,\n data,\n innerProps,\n isDisabled,\n // @ts-expect-error // TODO Fix this - moduleResolution 16 breaks our declare module\n selectProps: { customProps: { disableMouseDown } = {}, getOptionValue, isSortable } = {},\n } = props\n\n const id = generateMultiValueDraggableID(data, getOptionValue)\n\n const { attributes, isDragging, listeners, setNodeRef, transform } = useDraggableSortable({\n id,\n disabled: !isSortable,\n })\n\n const classes = [\n baseClass,\n className,\n !isDisabled && isSortable && 'draggable',\n isDragging && `${baseClass}--is-dragging`,\n ]\n .filter(Boolean)\n .join(' ')\n\n return (\n <React.Fragment>\n <SelectComponents.MultiValue\n {...props}\n className={classes}\n innerProps={{\n ...(isSortable\n ? {\n ...attributes,\n ...listeners,\n }\n : {}),\n ...innerProps,\n onMouseDown: (e) => {\n if (!disableMouseDown) {\n // we need to prevent the dropdown from opening when clicking on the drag handle, but not when a modal is open (i.e. the 'Relationship' field component)\n e.stopPropagation()\n }\n },\n ref: setNodeRef,\n style: isSortable\n ? {\n transform,\n ...attributes?.style,\n }\n : {},\n }}\n />\n </React.Fragment>\n )\n}\n", "'use client'\nimport type { OptionLabel } from 'payload'\nimport type { MultiValueProps } from 'react-select'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport React from 'react'\nimport { components as SelectComponents } from 'react-select'\n\nimport type { Option } from '../types.js'\n\nimport { useTranslation } from '../../../providers/Translation/index.js'\nimport './index.scss'\n\nconst baseClass = 'multi-value-label'\n\nexport const MultiValueLabel: React.FC<MultiValueProps<Option>> = (props) => {\n // @ts-expect-error-next-line// TODO Fix this - moduleResolution 16 breaks our declare module\n const { data, selectProps: { customProps: { draggableProps, editableProps } = {} } = {} } = props\n const { i18n } = useTranslation()\n\n const className = `${baseClass}__text`\n const labelText = data.label ? getTranslation(data.label as OptionLabel, i18n) : ''\n const titleText = typeof labelText === 'string' ? labelText : ''\n\n return (\n <div className={baseClass} title={titleText}>\n <SelectComponents.MultiValueLabel\n {...props}\n innerProps={{\n className,\n ...((editableProps && editableProps(data, className, props.selectProps)) || {}),\n ...(draggableProps || {}),\n }}\n />\n </div>\n )\n}\n", "'use client'\nimport type { MultiValueRemoveProps } from 'react-select'\n\nimport React, { type JSX } from 'react'\n\nimport type { Option as OptionType } from '../types.js'\n\nimport { XIcon } from '../../../icons/X/index.js'\nimport { useTranslation } from '../../../providers/Translation/index.js'\nimport { Tooltip } from '../../Tooltip/index.js'\nimport './index.scss'\n\nconst baseClass = 'multi-value-remove'\n\nexport const MultiValueRemove: React.FC<\n {\n innerProps: JSX.IntrinsicElements['button']\n } & MultiValueRemoveProps<OptionType>\n> = (props) => {\n const {\n innerProps: { className, onClick, onTouchEnd },\n } = props\n\n const [showTooltip, setShowTooltip] = React.useState(false)\n const { t } = useTranslation()\n\n return (\n <button\n aria-label={t('general:remove')}\n className={[baseClass, className].filter(Boolean).join(' ')}\n onClick={(e) => {\n setShowTooltip(false)\n onClick(e)\n }}\n onKeyDown={(e) => {\n if (e.key === 'Enter') {\n e.stopPropagation()\n }\n }}\n onMouseDown={(e) => e.stopPropagation()}\n onMouseEnter={() => setShowTooltip(true)}\n onMouseLeave={() => setShowTooltip(false)}\n onTouchEnd={onTouchEnd}\n type=\"button\"\n >\n <Tooltip className={`${baseClass}__tooltip`} show={showTooltip}>\n {t('general:remove')}\n </Tooltip>\n <XIcon className={`${baseClass}__icon`} />\n </button>\n )\n}\n", "'use client'\nimport type { SingleValueProps } from 'react-select'\n\nimport React from 'react'\nimport { components as SelectComponents } from 'react-select'\n\nimport type { Option } from '../types.js'\n\nconst baseClass = 'react-select--single-value'\n\nexport const SingleValue: React.FC<SingleValueProps<Option>> = (props) => {\n const { children, className } = props\n\n return (\n <React.Fragment>\n <SelectComponents.SingleValue\n {...props}\n className={[baseClass, className].filter(Boolean).join(' ')}\n >\n {children}\n </SelectComponents.SingleValue>\n </React.Fragment>\n )\n}\n", "'use client'\nimport type { OptionLabel } from 'payload'\nimport type { ValueContainerProps } from 'react-select'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport React from 'react'\nimport { components as SelectComponents } from 'react-select'\n\nimport type { Option } from '../types.js'\n\nimport { useTranslation } from '../../../providers/Translation/index.js'\nimport './index.scss'\n\nconst baseClass = 'value-container'\n\nexport const ValueContainer: React.FC<ValueContainerProps<Option, any>> = (props) => {\n // @ts-expect-error-next-line // TODO Fix this - moduleResolution 16 breaks our declare module\n const { selectProps: { customProps, value } = {} } = props\n const { i18n } = useTranslation()\n\n // Get the title for single-value selects\n let titleText = ''\n if (value && !Array.isArray(value) && typeof value === 'object' && 'label' in value) {\n const labelText = value.label ? getTranslation(value.label as OptionLabel, i18n) : ''\n titleText = typeof labelText === 'string' ? labelText : ''\n }\n\n return (\n <div className={baseClass} ref={customProps?.droppableRef} title={titleText}>\n {customProps?.valueContainerLabel && (\n <span className={`${baseClass}__label`}>{customProps?.valueContainerLabel}</span>\n )}\n <SelectComponents.ValueContainer {...props} />\n </div>\n )\n}\n", "import type { Option, OptionObject } from 'payload'\n\n/**\n * Formats an array of options for use in a select input.\n */\nexport const formatOptions = (options: Option[]): OptionObject[] =>\n options.map((option) => {\n if (typeof option === 'object' && (option.value || option.value === '')) {\n return option\n }\n\n return {\n label: option,\n value: option,\n } as OptionObject\n })\n", "'use client'\nimport type {\n EmailFieldClientComponent,\n EmailFieldClientProps,\n EmailFieldValidation,\n} from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport React, { useCallback, useMemo } from 'react'\n\nimport { RenderCustomComponent } from '../../elements/RenderCustomComponent/index.js'\nimport { FieldDescription } from '../../fields/FieldDescription/index.js'\nimport { FieldError } from '../../fields/FieldError/index.js'\nimport { useField } from '../../forms/useField/index.js'\nimport { withCondition } from '../../forms/withCondition/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { FieldLabel } from '../FieldLabel/index.js'\nimport { mergeFieldStyles } from '../mergeFieldStyles.js'\nimport { fieldBaseClass } from '../shared/index.js'\nimport './index.scss'\n\nconst EmailFieldComponent: EmailFieldClientComponent = (props) => {\n const {\n field,\n field: {\n admin: {\n autoComplete,\n className,\n description,\n placeholder,\n } = {} as EmailFieldClientProps['field']['admin'],\n label,\n localized,\n required,\n } = {} as EmailFieldClientProps['field'],\n path: pathFromProps,\n readOnly,\n validate,\n } = props\n\n const { i18n } = useTranslation()\n\n const memoizedValidate: EmailFieldValidation = useCallback(\n (value, options) => {\n if (typeof validate === 'function') {\n return validate(value, { ...options, required })\n }\n },\n [validate, required],\n )\n\n const {\n customComponents: { AfterInput, BeforeInput, Description, Error, Label } = {},\n disabled,\n path,\n setValue,\n showError,\n value,\n } = useField({\n potentiallyStalePath: pathFromProps,\n validate: memoizedValidate,\n })\n\n const styles = useMemo(() => mergeFieldStyles(field), [field])\n\n return (\n <div\n className={[\n fieldBaseClass,\n 'email',\n className,\n showError && 'error',\n (readOnly || disabled) && 'read-only',\n ]\n .filter(Boolean)\n .join(' ')}\n style={styles}\n >\n <RenderCustomComponent\n CustomComponent={Label}\n Fallback={\n <FieldLabel label={label} localized={localized} path={path} required={required} />\n }\n />\n <div className={`${fieldBaseClass}__wrap`}>\n <RenderCustomComponent\n CustomComponent={Error}\n Fallback={<FieldError path={path} showError={showError} />}\n />\n {BeforeInput}\n {/* disable eslint here because the label is dynamic */}\n {/* eslint-disable-next-line jsx-a11y/control-has-associated-label */}\n <input\n autoComplete={autoComplete}\n disabled={readOnly || disabled}\n id={`field-${path.replace(/\\./g, '__')}`}\n name={path}\n onChange={setValue}\n placeholder={getTranslation(placeholder, i18n)}\n required={required}\n type=\"email\"\n value={(value as string) || ''}\n />\n {AfterInput}\n </div>\n <RenderCustomComponent\n CustomComponent={Description}\n Fallback={<FieldDescription description={description} path={path} />}\n />\n </div>\n )\n}\n\nexport const EmailField = withCondition(EmailFieldComponent)\n", "'use client'\n\nimport type { GroupFieldClientComponent } from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport { groupHasName } from 'payload/shared'\nimport React, { useMemo } from 'react'\n\nimport { useCollapsible } from '../../elements/Collapsible/provider.js'\nimport { ErrorPill } from '../../elements/ErrorPill/index.js'\nimport { RenderCustomComponent } from '../../elements/RenderCustomComponent/index.js'\nimport { FieldDescription } from '../../fields/FieldDescription/index.js'\nimport { FieldLabel } from '../../fields/FieldLabel/index.js'\nimport { useFormSubmitted } from '../../forms/Form/context.js'\nimport { RenderFields } from '../../forms/RenderFields/index.js'\nimport { useField } from '../../forms/useField/index.js'\nimport { withCondition } from '../../forms/withCondition/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { mergeFieldStyles } from '../mergeFieldStyles.js'\nimport './index.scss'\nimport { useRow } from '../Row/provider.js'\nimport { fieldBaseClass } from '../shared/index.js'\nimport { useTabs } from '../Tabs/provider.js'\nimport { GroupProvider, useGroup } from './provider.js'\n\nconst baseClass = 'group-field'\n\nexport const GroupFieldComponent: GroupFieldClientComponent = (props) => {\n const {\n field,\n field: { admin: { className, description, hideGutter } = {}, fields, label },\n indexPath,\n parentPath,\n parentSchemaPath,\n path,\n permissions,\n readOnly,\n schemaPath: schemaPathFromProps,\n } = props\n\n const schemaPath =\n schemaPathFromProps ?? (field.type === 'group' && groupHasName(field) ? field.name : path)\n\n const { i18n } = useTranslation()\n const { isWithinCollapsible } = useCollapsible()\n const isWithinGroup = useGroup()\n const isWithinRow = useRow()\n const isWithinTab = useTabs()\n\n const { customComponents: { AfterInput, BeforeInput, Description, Label } = {}, errorPaths } =\n useField({ path })\n\n const submitted = useFormSubmitted()\n const errorCount = errorPaths.length\n const fieldHasErrors = submitted && errorCount > 0\n\n const isTopLevel = !(isWithinCollapsible || isWithinGroup || isWithinRow)\n\n const styles = useMemo(() => mergeFieldStyles(field), [field])\n\n return (\n <div\n className={[\n fieldBaseClass,\n baseClass,\n isTopLevel && `${baseClass}--top-level`,\n isWithinCollapsible && `${baseClass}--within-collapsible`,\n isWithinGroup && `${baseClass}--within-group`,\n isWithinRow && `${baseClass}--within-row`,\n isWithinTab && `${baseClass}--within-tab`,\n !hideGutter && isWithinGroup && `${baseClass}--gutter`,\n fieldHasErrors && `${baseClass}--has-error`,\n className,\n ]\n .filter(Boolean)\n .join(' ')}\n id={`field-${path?.replace(/\\./g, '__')}`}\n style={styles}\n >\n <GroupProvider>\n <div className={`${baseClass}__wrap`}>\n {Boolean(Label || Description || label || fieldHasErrors) && (\n <div className={`${baseClass}__header`}>\n {Boolean(Label || Description || label) && (\n <header>\n <RenderCustomComponent\n CustomComponent={Label}\n Fallback={\n <h3 className={`${baseClass}__title`}>\n <FieldLabel\n as=\"span\"\n label={getTranslation(label, i18n)}\n localized={false}\n path={path}\n required={false}\n />\n </h3>\n }\n />\n <RenderCustomComponent\n CustomComponent={Description}\n Fallback={<FieldDescription description={description} path={path} />}\n />\n </header>\n )}\n {fieldHasErrors && <ErrorPill count={errorCount} i18n={i18n} withMessage />}\n </div>\n )}\n {BeforeInput}\n {/* Render an unnamed group differently */}\n {groupHasName(field) ? (\n <RenderFields\n fields={fields}\n margins=\"small\"\n parentIndexPath=\"\"\n parentPath={path}\n parentSchemaPath={schemaPath}\n permissions={permissions === true ? permissions : permissions?.fields}\n readOnly={readOnly}\n />\n ) : (\n <RenderFields\n fields={fields}\n margins=\"small\"\n parentIndexPath={indexPath}\n parentPath={parentPath}\n parentSchemaPath={parentSchemaPath}\n permissions={permissions}\n readOnly={readOnly}\n />\n )}\n </div>\n </GroupProvider>\n {AfterInput}\n </div>\n )\n}\n\nexport { GroupProvider, useGroup }\n\nexport const GroupField = withCondition(GroupFieldComponent)\n", "'use client'\nimport React, { createContext, use } from 'react'\n\nexport const Context = createContext(false)\n\nexport const RowProvider: React.FC<{ children?: React.ReactNode; withinRow?: boolean }> = ({\n children,\n withinRow = true,\n}) => {\n return <Context value={withinRow}>{children}</Context>\n}\n\nexport const useRow = (): boolean => use(Context)\n", "'use client'\nimport React, { createContext, use } from 'react'\n\nconst Context = createContext(false)\n\nexport const TabsProvider: React.FC<{ children?: React.ReactNode; withinTab?: boolean }> = ({\n children,\n withinTab = true,\n}) => {\n return <Context value={withinTab}>{children}</Context>\n}\n\nexport const useTabs = (): boolean => use(Context)\n", "'use client'\nimport React, { createContext, use } from 'react'\n\nexport const GroupContext = createContext(false)\n\nexport const GroupProvider: React.FC<{ children?: React.ReactNode; withinGroup?: boolean }> = ({\n children,\n withinGroup = true,\n}) => {\n return <GroupContext value={withinGroup}>{children}</GroupContext>\n}\n\nexport const useGroup = (): boolean => use(GroupContext)\n", "'use client'\n\nimport type { HiddenFieldProps } from 'payload'\n\nimport React, { useEffect } from 'react'\n\nimport { useField } from '../../forms/useField/index.js'\nimport { withCondition } from '../../forms/withCondition/index.js'\n\n/**\n * Renders an input with `type=\"hidden\"`.\n * This is mainly used to save a value on the form that is not visible to the user.\n * For example, this sets the `ìd` property of a block in the Blocks field.\n */\nconst HiddenFieldComponent: React.FC<HiddenFieldProps> = (props) => {\n const { disableModifyingForm = true, path: pathFromProps, value: valueFromProps } = props\n\n const { formInitializing, path, setValue, value } = useField({\n potentiallyStalePath: pathFromProps,\n })\n\n useEffect(() => {\n if (valueFromProps !== undefined && !formInitializing) {\n setValue(valueFromProps, disableModifyingForm)\n }\n }, [valueFromProps, setValue, disableModifyingForm, formInitializing])\n\n return (\n <input\n id={`field-${path?.replace(/\\./g, '__')}`}\n name={path}\n onChange={setValue}\n type=\"hidden\"\n value={(value as string) || ''}\n />\n )\n}\n\nexport const HiddenField = withCondition(HiddenFieldComponent)\n", "'use client'\n\nimport type {\n ClientConfig,\n ClientField,\n JoinFieldClient,\n JoinFieldClientComponent,\n PaginatedDocs,\n Where,\n} from 'payload'\n\nimport ObjectIdImport from 'bson-objectid'\nimport { fieldAffectsData, flattenTopLevelFields } from 'payload/shared'\nimport React, { useMemo } from 'react'\n\nimport { RelationshipTable } from '../../elements/RelationshipTable/index.js'\nimport { RenderCustomComponent } from '../../elements/RenderCustomComponent/index.js'\nimport { useField } from '../../forms/useField/index.js'\nimport { withCondition } from '../../forms/withCondition/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useDocumentInfo } from '../../providers/DocumentInfo/index.js'\nimport { FieldDescription } from '../FieldDescription/index.js'\nimport { FieldError } from '../FieldError/index.js'\nimport { FieldLabel } from '../FieldLabel/index.js'\nimport { fieldBaseClass } from '../index.js'\n\nconst ObjectId = 'default' in ObjectIdImport ? ObjectIdImport.default : ObjectIdImport\n\n/**\n * Recursively builds the default data for joined collection\n */\nconst getInitialDrawerData = ({\n collectionSlug,\n config,\n docID,\n fields,\n segments,\n}: {\n collectionSlug: string\n config: ClientConfig\n docID: number | string\n fields: ClientField[]\n segments: string[]\n}) => {\n const flattenedFields = flattenTopLevelFields(fields, {\n keepPresentationalFields: true,\n })\n\n const path = segments[0]\n\n const field = flattenedFields.find((field) => field.name === path)\n\n if (!field) {\n return null\n }\n\n if (field.type === 'relationship' || field.type === 'upload') {\n let value: { relationTo: string; value: number | string } | number | string = docID\n if (Array.isArray(field.relationTo)) {\n value = {\n relationTo: collectionSlug,\n value: docID,\n }\n }\n return {\n [field.name]: field.hasMany ? [value] : value,\n }\n }\n\n const nextSegments = segments.slice(1, segments.length)\n\n if (field.type === 'tab' || (field.type === 'group' && fieldAffectsData(field))) {\n return {\n [field.name]: getInitialDrawerData({\n collectionSlug,\n config,\n docID,\n fields: field.fields,\n segments: nextSegments,\n }),\n }\n }\n\n if (field.type === 'array') {\n const initialData = getInitialDrawerData({\n collectionSlug,\n config,\n docID,\n fields: field.fields,\n segments: nextSegments,\n })\n\n initialData.id = ObjectId().toHexString()\n\n return {\n [field.name]: [initialData],\n }\n }\n\n if (field.type === 'blocks') {\n for (const _block of field.blockReferences ?? field.blocks) {\n const block = typeof _block === 'string' ? config.blocksMap[_block] : _block\n\n const blockInitialData = getInitialDrawerData({\n collectionSlug,\n config,\n docID,\n fields: block.fields,\n segments: nextSegments,\n })\n\n if (blockInitialData) {\n blockInitialData.id = ObjectId().toHexString()\n blockInitialData.blockType = block.slug\n\n return {\n [field.name]: [blockInitialData],\n }\n }\n }\n }\n}\n\nconst JoinFieldComponent: JoinFieldClientComponent = (props) => {\n const {\n field,\n field: {\n admin: { allowCreate, description },\n collection,\n label,\n localized,\n on,\n required,\n },\n path: pathFromProps,\n } = props\n\n const { id: docID, docConfig } = useDocumentInfo()\n\n const { config, getEntityConfig } = useConfig()\n\n const {\n customComponents: { AfterInput, BeforeInput, Description, Error, Label } = {},\n path,\n showError,\n value,\n } = useField<PaginatedDocs>({\n potentiallyStalePath: pathFromProps,\n })\n\n const filterOptions: null | Where = useMemo(() => {\n if (!docID) {\n return null\n }\n\n let value: { relationTo: string; value: number | string } | number | string = docID\n\n if (Array.isArray(field.targetField.relationTo)) {\n value = {\n relationTo: docConfig.slug,\n value,\n }\n }\n\n const where = Array.isArray(collection)\n ? {}\n : {\n [on]: {\n equals: value,\n },\n }\n\n if (field.where) {\n return {\n and: [where, field.where],\n }\n }\n\n return where\n }, [docID, collection, field.targetField.relationTo, field.where, on, docConfig?.slug])\n\n const initialDrawerData = useMemo(() => {\n const relatedCollection = getEntityConfig({\n collectionSlug: Array.isArray(field.collection) ? field.collection[0] : field.collection,\n })\n\n return getInitialDrawerData({\n collectionSlug: docConfig?.slug,\n config,\n docID,\n fields: relatedCollection?.fields,\n segments: field.on.split('.'),\n })\n }, [getEntityConfig, field.collection, field.on, docConfig?.slug, docID, config])\n\n if (!docConfig) {\n return null\n }\n\n return (\n <div\n className={[fieldBaseClass, showError && 'error', 'join'].filter(Boolean).join(' ')}\n id={`field-${path?.replace(/\\./g, '__')}`}\n >\n <RenderCustomComponent\n CustomComponent={Error}\n Fallback={<FieldError path={path} showError={showError} />}\n />\n <RelationshipTable\n AfterInput={AfterInput}\n allowCreate={typeof docID !== 'undefined' && allowCreate}\n BeforeInput={BeforeInput}\n disableTable={filterOptions === null}\n field={field as JoinFieldClient}\n fieldPath={path}\n filterOptions={filterOptions}\n initialData={docID && value ? value : ({ docs: [] } as PaginatedDocs)}\n initialDrawerData={initialDrawerData}\n Label={\n <h4 style={{ margin: 0 }}>\n {Label || (\n <FieldLabel label={label} localized={localized} path={path} required={required} />\n )}\n </h4>\n }\n parent={\n Array.isArray(collection)\n ? {\n id: docID,\n collectionSlug: docConfig.slug,\n joinPath: path,\n }\n : undefined\n }\n relationTo={collection}\n />\n <RenderCustomComponent\n CustomComponent={Description}\n Fallback={<FieldDescription description={description} path={path} />}\n />\n </div>\n )\n}\n\nexport const JoinField = withCondition(JoinFieldComponent)\n", "'use client'\nimport { getTranslation } from '@payloadcms/translations'\nimport {\n type CollectionSlug,\n type Column,\n type JoinFieldClient,\n type ListQuery,\n type PaginatedDocs,\n type Where,\n} from 'payload'\nimport { hoistQueryParamsToAnd, transformColumnsToPreferences } from 'payload/shared'\nimport React, { Fragment, useCallback, useEffect, useRef, useState } from 'react'\n\nimport type { DocumentDrawerProps } from '../DocumentDrawer/types.js'\n\nimport { Pill } from '../../elements/Pill/index.js'\nimport { useEffectEvent } from '../../hooks/useEffectEvent.js'\nimport { ChevronIcon } from '../../icons/Chevron/index.js'\nimport { useAuth } from '../../providers/Auth/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { ListQueryProvider } from '../../providers/ListQuery/index.js'\nimport { useServerFunctions } from '../../providers/ServerFunctions/index.js'\nimport { TableColumnsProvider } from '../../providers/TableColumns/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { AnimateHeight } from '../AnimateHeight/index.js'\nimport { ColumnSelector } from '../ColumnSelector/index.js'\nimport { useDocumentDrawer } from '../DocumentDrawer/index.js'\nimport { RelationshipProvider } from '../Table/RelationshipProvider/index.js'\nimport { AddNewButton } from './AddNewButton.js'\nimport { DrawerLink } from './cells/DrawerLink/index.js'\nimport { RelationshipTablePagination } from './Pagination.js'\nimport './index.scss'\n\nconst baseClass = 'relationship-table'\n\ntype RelationshipTableComponentProps = {\n readonly AfterInput?: React.ReactNode\n readonly allowCreate?: boolean\n readonly BeforeInput?: React.ReactNode\n readonly disableTable?: boolean\n readonly field: JoinFieldClient\n readonly fieldPath?: string\n readonly filterOptions?: Where\n readonly initialData?: PaginatedDocs\n readonly initialDrawerData?: DocumentDrawerProps['initialData']\n readonly Label?: React.ReactNode\n readonly parent?: {\n collectionSlug: CollectionSlug\n id: number | string\n joinPath: string\n }\n readonly relationTo: string | string[]\n}\n\nexport type OnDrawerOpen = (id?: string, collectionSlug?: string) => void\n\nexport const RelationshipTable: React.FC<RelationshipTableComponentProps> = (props) => {\n const {\n AfterInput,\n allowCreate = true,\n BeforeInput,\n disableTable = false,\n field,\n fieldPath,\n filterOptions,\n initialData: initialDataFromProps,\n initialDrawerData,\n Label,\n parent,\n relationTo,\n } = props\n const [Table, setTable] = useState<React.ReactNode>(null)\n const { config, getEntityConfig } = useConfig()\n const { i18n, t } = useTranslation()\n\n const [query, setQuery] = useState<ListQuery>()\n const [openColumnSelector, setOpenColumnSelector] = useState(false)\n\n const [collectionConfig] = useState(() => getEntityConfig({ collectionSlug: relationTo }))\n\n const isPolymorphic = Array.isArray(relationTo)\n\n const [selectedCollection, setSelectedCollection] = useState(\n isPolymorphic ? undefined : relationTo,\n )\n\n const { permissions } = useAuth()\n\n const openDrawerWhenRelationChanges = useRef(false)\n\n const [currentDrawerID, setCurrentDrawerID] = useState<string | undefined>(undefined)\n\n const [DocumentDrawer, , { closeDrawer, isDrawerOpen, openDrawer }] = useDocumentDrawer({\n id: currentDrawerID,\n collectionSlug: selectedCollection,\n })\n\n const [isLoadingTable, setIsLoadingTable] = useState(!disableTable)\n\n const [data, setData] = useState<PaginatedDocs>(() =>\n initialDataFromProps\n ? {\n ...initialDataFromProps,\n docs: Array.isArray(initialDataFromProps.docs)\n ? initialDataFromProps.docs.reduce((acc, doc) => {\n if (typeof doc === 'string' || typeof doc === 'number') {\n return [\n ...acc,\n {\n id: doc,\n },\n ]\n }\n\n return [...acc, doc]\n }, [])\n : [],\n }\n : undefined,\n )\n\n const [columnState, setColumnState] = useState<Column[]>()\n\n const { getTableState } = useServerFunctions()\n\n const renderTable = useCallback(\n async (data?: PaginatedDocs) => {\n const newQuery: ListQuery = {\n limit: field?.defaultLimit || collectionConfig?.admin?.pagination?.defaultLimit,\n sort: field.defaultSort || collectionConfig?.defaultSort,\n ...(query || {}),\n where: { ...(query?.where || {}) },\n }\n\n if (filterOptions) {\n newQuery.where = hoistQueryParamsToAnd(newQuery.where, filterOptions)\n }\n\n // map columns from string[] to CollectionPreferences['columns']\n const defaultColumns = field.admin.defaultColumns\n ? field.admin.defaultColumns.map((accessor) => ({\n accessor,\n active: true,\n }))\n : undefined\n\n const renderRowTypes =\n typeof field.admin.disableRowTypes === 'boolean'\n ? !field.admin.disableRowTypes\n : Array.isArray(relationTo)\n\n const {\n data: newData,\n state: newColumnState,\n Table: NewTable,\n } = await getTableState({\n collectionSlug: relationTo,\n columns: transformColumnsToPreferences(query?.columns) || defaultColumns,\n data,\n enableRowSelections: false,\n orderableFieldName:\n !field.orderable || Array.isArray(field.collection)\n ? undefined\n : `_${field.collection}_${field.name}_order`,\n parent,\n query: newQuery,\n renderRowTypes,\n tableAppearance: 'condensed',\n })\n\n setData(newData)\n setTable(NewTable)\n setColumnState(newColumnState)\n setIsLoadingTable(false)\n },\n [\n field.defaultLimit,\n field.defaultSort,\n field.admin.defaultColumns,\n field.admin.disableRowTypes,\n field.collection,\n field.name,\n field.orderable,\n collectionConfig?.admin?.pagination?.defaultLimit,\n collectionConfig?.defaultSort,\n query,\n filterOptions,\n getTableState,\n relationTo,\n parent,\n ],\n )\n\n const handleTableRender = useEffectEvent((query: ListQuery, disableTable: boolean) => {\n if (!disableTable && (!Table || query)) {\n void renderTable()\n }\n })\n\n useEffect(() => {\n handleTableRender(query, disableTable)\n }, [query, disableTable])\n\n const onDrawerSave = useCallback<DocumentDrawerProps['onSave']>(\n ({ doc, operation }) => {\n if (operation === 'create') {\n closeDrawer()\n }\n\n const foundDocIndex = data?.docs?.findIndex((d) => d.id === doc.id)\n const withNewOrUpdatedData: PaginatedDocs = { docs: [] } as PaginatedDocs\n\n if (foundDocIndex !== -1) {\n const newDocs = [...data.docs]\n newDocs[foundDocIndex] = doc\n withNewOrUpdatedData.docs = newDocs\n } else {\n withNewOrUpdatedData.docs = [doc, ...data.docs]\n }\n\n void renderTable(withNewOrUpdatedData)\n },\n [data?.docs, renderTable, closeDrawer],\n )\n\n const onDrawerDelete = useCallback<DocumentDrawerProps['onDelete']>(\n (args) => {\n const newDocs = data.docs.filter((doc) => doc.id !== args.id)\n\n void renderTable({\n ...data,\n docs: newDocs,\n })\n\n setCurrentDrawerID(undefined)\n },\n [data, renderTable],\n )\n\n const onDrawerOpen = useCallback<OnDrawerOpen>((id, collectionSlug) => {\n openDrawerWhenRelationChanges.current = true\n\n if (id) {\n setCurrentDrawerID(id)\n } else {\n setCurrentDrawerID(undefined)\n }\n\n if (collectionSlug) {\n setSelectedCollection(collectionSlug)\n } else {\n setSelectedCollection(undefined)\n }\n }, [])\n\n useEffect(() => {\n if (openDrawerWhenRelationChanges.current) {\n openDrawerWhenRelationChanges.current = false\n openDrawer()\n }\n }, [openDrawer])\n\n useEffect(() => {\n if (!isDrawerOpen) {\n setCurrentDrawerID(undefined)\n }\n }, [isDrawerOpen])\n\n const canCreate =\n allowCreate !== false &&\n permissions?.collections?.[isPolymorphic ? relationTo[0] : relationTo]?.create\n\n useEffect(() => {\n if (isPolymorphic && selectedCollection) {\n openDrawer()\n }\n }, [selectedCollection, openDrawer, isPolymorphic])\n\n useEffect(() => {\n if (isPolymorphic && !isDrawerOpen && selectedCollection) {\n setSelectedCollection(undefined)\n }\n // eslint-disable-next-line react-compiler/react-compiler -- TODO: fix\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [isDrawerOpen])\n\n const memoizedListQuery = React.useMemo(\n () => ({\n columns: transformColumnsToPreferences(columnState)?.map(({ accessor }) => accessor),\n limit: field.defaultLimit ?? collectionConfig?.admin?.pagination?.defaultLimit,\n sort: field.defaultSort ?? collectionConfig?.defaultSort,\n }),\n [columnState, field, collectionConfig],\n )\n\n return (\n <div className={baseClass}>\n <div className={`${baseClass}__header`}>\n {Label}\n <div className={`${baseClass}__actions`}>\n <AddNewButton\n allowCreate={allowCreate !== false}\n baseClass={baseClass}\n buttonStyle=\"none\"\n className={`${baseClass}__add-new${isPolymorphic ? '-polymorphic' : ' doc-drawer__toggler'}`}\n collections={config.collections}\n i18n={i18n}\n icon={isPolymorphic ? 'plus' : undefined}\n label={i18n.t('fields:addNew')}\n onClick={isPolymorphic ? setSelectedCollection : openDrawer}\n permissions={permissions}\n relationTo={relationTo}\n />\n <Pill\n aria-controls={`${baseClass}-columns`}\n aria-expanded={openColumnSelector}\n className={`${baseClass}__toggle-columns ${\n openColumnSelector ? `${baseClass}__buttons-active` : ''\n }`}\n icon={<ChevronIcon direction={openColumnSelector ? 'up' : 'down'} />}\n onClick={() => setOpenColumnSelector(!openColumnSelector)}\n pillStyle=\"light\"\n size=\"small\"\n >\n {t('general:columns')}\n </Pill>\n </div>\n </div>\n {BeforeInput}\n {isLoadingTable ? (\n <p>{t('general:loading')}</p>\n ) : (\n <Fragment>\n {data?.docs && data.docs.length === 0 && (\n <div className={`${baseClass}__no-results`}>\n <p>\n {i18n.t('general:noResults', {\n label: isPolymorphic\n ? i18n.t('general:documents')\n : getTranslation(collectionConfig?.labels?.plural, i18n),\n })}\n </p>\n <AddNewButton\n allowCreate={canCreate}\n baseClass={baseClass}\n collections={config.collections}\n i18n={i18n}\n label={i18n.t('general:createNewLabel', {\n label: isPolymorphic\n ? i18n.t('general:document')\n : getTranslation(collectionConfig?.labels?.singular, i18n),\n })}\n onClick={isPolymorphic ? setSelectedCollection : openDrawer}\n permissions={permissions}\n relationTo={relationTo}\n />\n </div>\n )}\n {data?.docs && data.docs.length > 0 && (\n <RelationshipProvider>\n <ListQueryProvider\n data={data}\n modifySearchParams={false}\n onQueryChange={setQuery}\n orderableFieldName={\n !field.orderable || Array.isArray(field.collection)\n ? undefined\n : `_${field.collection}_${fieldPath.replaceAll('.', '_')}_order`\n }\n query={memoizedListQuery}\n >\n <TableColumnsProvider\n collectionSlug={isPolymorphic ? relationTo[0] : relationTo}\n columnState={columnState}\n LinkedCellOverride={\n <DrawerLink currentDrawerID={currentDrawerID} onDrawerOpen={onDrawerOpen} />\n }\n >\n <AnimateHeight\n className={`${baseClass}__columns`}\n height={openColumnSelector ? 'auto' : 0}\n id={`${baseClass}-columns`}\n >\n <div className={`${baseClass}__columns-inner`}>\n {collectionConfig && (\n <ColumnSelector collectionSlug={collectionConfig.slug} />\n )}\n </div>\n </AnimateHeight>\n {Table}\n <RelationshipTablePagination />\n </TableColumnsProvider>\n </ListQueryProvider>\n </RelationshipProvider>\n )}\n </Fragment>\n )}\n {AfterInput}\n <DocumentDrawer\n initialData={initialDrawerData}\n onDelete={onDrawerDelete}\n onSave={onDrawerSave}\n />\n </div>\n )\n}\n", "'use client'\nimport { useRouter, useSearchParams } from 'next/navigation.js'\nimport { type ListQuery, type Where } from 'payload'\nimport * as qs from 'qs-esm'\nimport React, { useCallback, useEffect, useMemo, useRef, useState } from 'react'\n\nimport type { IListQueryContext, ListQueryProps } from './types.js'\n\nimport { useListDrawerContext } from '../../elements/ListDrawer/Provider.js'\nimport { useEffectEvent } from '../../hooks/useEffectEvent.js'\nimport { useRouteTransition } from '../../providers/RouteTransition/index.js'\nimport { parseSearchParams } from '../../utilities/parseSearchParams.js'\nimport { useConfig } from '../Config/index.js'\nimport { ListQueryContext, ListQueryModifiedContext } from './context.js'\nimport { mergeQuery } from './mergeQuery.js'\nimport { sanitizeQuery } from './sanitizeQuery.js'\n\nexport { useListQuery } from './context.js'\n\nexport const ListQueryProvider: React.FC<ListQueryProps> = ({\n children,\n collectionSlug,\n data,\n modifySearchParams,\n onQueryChange: onQueryChangeFromProps,\n orderableFieldName,\n query: queryFromProps,\n}) => {\n // TODO: Investigate if this is still needed\n 'use no memo'\n\n const router = useRouter()\n const rawSearchParams = useSearchParams()\n const { startRouteTransition } = useRouteTransition()\n const [modified, setModified] = useState(false)\n const { getEntityConfig } = useConfig()\n const collectionConfig = getEntityConfig({ collectionSlug })\n\n const contextRef = useRef({} as IListQueryContext)\n contextRef.current.modified = modified\n\n const { onQueryChange: onQueryChangeFromContext } = useListDrawerContext()\n const onQueryChange = onQueryChangeFromContext || onQueryChangeFromProps\n\n const queryFromURL = useMemo<ListQuery>(\n () => sanitizeQuery(parseSearchParams(rawSearchParams)),\n [rawSearchParams],\n )\n\n const [query, setQuery] = useState<ListQuery>(() => {\n if (modifySearchParams) {\n return queryFromURL\n } else {\n return {\n limit: queryFromProps.limit,\n sort: queryFromProps.sort,\n }\n }\n })\n\n const refineListData = useCallback(\n // eslint-disable-next-line @typescript-eslint/require-await\n async (incomingQuery: ListQuery, modified?: boolean) => {\n setModified(modified ?? true)\n\n const newQuery = mergeQuery(query, incomingQuery, {\n defaults: {\n limit: queryFromProps.limit,\n sort: queryFromProps.sort,\n },\n })\n\n if (modifySearchParams) {\n const search = `?${qs.stringify({\n ...newQuery,\n columns: JSON.stringify(newQuery.columns),\n queryByGroup: JSON.stringify(newQuery.queryByGroup),\n })}`\n if (window.location.search !== search) {\n startRouteTransition(() => router.replace(search))\n }\n } else if (typeof onQueryChange === 'function') {\n onQueryChange(newQuery)\n }\n\n setQuery(newQuery)\n },\n [\n query,\n queryFromProps.limit,\n queryFromProps.sort,\n modifySearchParams,\n onQueryChange,\n startRouteTransition,\n router,\n ],\n )\n\n const handlePageChange = useCallback(\n async (arg: number) => {\n await refineListData({ page: arg })\n },\n [refineListData],\n )\n\n const handlePerPageChange = React.useCallback(\n async (arg: number) => {\n await refineListData({ limit: arg, page: 1 })\n },\n [refineListData],\n )\n\n const handleSearchChange = useCallback(\n async (arg: string) => {\n const search = arg === '' ? undefined : arg\n await refineListData({ search })\n },\n [refineListData],\n )\n\n const handleSortChange = useCallback(\n async (sort: string) => {\n await refineListData({ sort })\n },\n [refineListData],\n )\n\n const handleWhereChange = useCallback(\n async (where: Where) => {\n await refineListData({ where })\n },\n [refineListData],\n )\n\n /**\n * The server component may pass props to this client component, e.g. from\n * fetching the query from preferences.\n * This effect is responsible for syncing the props back to the URL, without\n * triggering a re-render.\n */\n const syncPropsToURL = useEffectEvent(() => {\n const newQuery = sanitizeQuery({ ...(query || {}), ...(queryFromProps || {}) })\n\n const search = `?${qs.stringify({\n ...newQuery,\n columns: JSON.stringify(newQuery.columns),\n queryByGroup: JSON.stringify(newQuery.queryByGroup),\n })}`\n\n if (window.location.search !== search) {\n setQuery(newQuery)\n // Important: do not use router.replace here to avoid re-rendering.\n window.history.replaceState(null, '', search)\n }\n })\n\n // If `query` is updated externally, update the local state\n // E.g. when HMR runs, these properties may be different\n useEffect(() => {\n if (modifySearchParams && queryFromProps) {\n syncPropsToURL()\n }\n }, [modifySearchParams, queryFromProps])\n\n return (\n <ListQueryContext\n value={{\n collectionSlug,\n data,\n defaultLimit: data?.limit,\n handlePageChange,\n handlePerPageChange,\n handleSearchChange,\n handleSortChange,\n handleWhereChange,\n isGroupingBy: Boolean(collectionConfig?.admin?.groupBy && query?.groupBy),\n orderableFieldName,\n query,\n refineListData,\n setModified,\n ...contextRef.current,\n }}\n >\n <ListQueryModifiedContext value={modified}>{children}</ListQueryModifiedContext>\n </ListQueryContext>\n )\n}\n", "import type { CollectionSlug, Data, ListQuery } from 'payload'\n\nimport { createContext, use } from 'react'\n\nimport type { useSelection } from '../../providers/Selection/index.js'\nimport type { UseDocumentDrawer } from '../DocumentDrawer/types.js'\nimport type { Option } from '../ReactSelect/index.js'\n\nexport type ListDrawerContextProps = {\n readonly allowCreate?: boolean\n readonly createNewDrawerSlug?: string\n readonly DocumentDrawerToggler?: ReturnType<UseDocumentDrawer>[1]\n readonly drawerSlug?: string\n readonly enabledCollections?: CollectionSlug[]\n readonly onBulkSelect?: (selected: ReturnType<typeof useSelection>['selected']) => void\n readonly onQueryChange?: (query: ListQuery) => void\n readonly onSelect?: (args: {\n collectionSlug: CollectionSlug\n doc: Data\n /**\n * @deprecated\n * The `docID` property is deprecated and will be removed in the next major version of Payload.\n * Use `doc.id` instead.\n */\n docID: string\n }) => void\n readonly selectedOption?: Option<CollectionSlug>\n readonly setSelectedOption?: (option: Option<CollectionSlug>) => void\n}\n\nexport type ListDrawerContextType = {\n readonly isInDrawer: boolean\n /**\n * When called, will either refresh the list view with its currently selected collection.\n * If an collection slug is provided, will use that instead of the currently selected one.\n */\n readonly refresh: (collectionSlug?: CollectionSlug) => Promise<void>\n} & ListDrawerContextProps\n\nexport const ListDrawerContext = createContext({} as ListDrawerContextType)\n\nexport const ListDrawerContextProvider: React.FC<\n {\n children: React.ReactNode\n refresh: ListDrawerContextType['refresh']\n } & ListDrawerContextProps\n> = ({ children, ...rest }) => {\n return (\n <ListDrawerContext value={{ isInDrawer: Boolean(rest.drawerSlug), ...rest }}>\n {children}\n </ListDrawerContext>\n )\n}\n\nexport const useListDrawerContext = (): ListDrawerContextType => {\n const context = use(ListDrawerContext)\n\n if (!context) {\n throw new Error('useListDrawerContext must be used within a ListDrawerContextProvider')\n }\n\n return context\n}\n", "import type { ReadonlyURLSearchParams } from 'next/navigation.js'\n\nimport * as qs from 'qs-esm'\n\n/**\n * A utility function to parse URLSearchParams into a ParsedQs object.\n * This function is a wrapper around the `qs` library.\n * In Next.js, the `useSearchParams()` hook from `next/navigation` returns a `URLSearchParams` object.\n * This function can be used to parse that object into a more usable format.\n * @param {ReadonlyURLSearchParams} searchParams - The URLSearchParams object to parse.\n * @returns {qs.ParsedQs} - The parsed query string object.\n */\nexport function parseSearchParams(searchParams: ReadonlyURLSearchParams): qs.ParsedQs {\n const search = searchParams.toString()\n\n return qs.parse(search, {\n depth: 10,\n ignoreQueryPrefix: true,\n })\n}\n", "import { createContext, use } from 'react'\n\nimport type { IListQueryContext } from './types.js'\n\nexport const ListQueryContext = createContext({} as IListQueryContext)\n\nexport const useListQuery = (): IListQueryContext => use(ListQueryContext)\n\nexport const ListQueryModifiedContext = createContext(false)\n\nexport const useListQueryModified = (): boolean => use(ListQueryModifiedContext)\n", "import type { ListQuery } from 'payload'\n\nexport const mergeQuery = (\n currentQuery: ListQuery,\n newQuery: ListQuery,\n options?: {\n defaults?: ListQuery\n },\n): ListQuery => {\n let page = 'page' in newQuery ? newQuery.page : currentQuery?.page\n\n const shouldResetPage = ['where', 'search', 'groupBy']?.some(\n (key) => key in newQuery && !['limit', 'page'].includes(key),\n )\n\n if (shouldResetPage) {\n page = 1\n }\n\n const shouldResetQueryByGroup = ['where', 'search', 'page', 'limit', 'groupBy', 'sort'].some(\n (key) => key in newQuery,\n )\n\n let mergedQueryByGroup = undefined\n\n if (!shouldResetQueryByGroup) {\n // Deeply merge queryByGroup so we can send a partial update for a specific group\n mergedQueryByGroup = {\n ...(currentQuery?.queryByGroup || {}),\n ...(newQuery.queryByGroup\n ? Object.fromEntries(\n Object.entries(newQuery.queryByGroup).map(([key, value]) => [\n key,\n {\n ...(currentQuery?.queryByGroup?.[key] || {}),\n ...value,\n },\n ]),\n )\n : {}),\n }\n }\n\n const mergedQuery: ListQuery = {\n ...currentQuery,\n ...newQuery,\n columns: 'columns' in newQuery ? newQuery.columns : currentQuery.columns,\n groupBy:\n 'groupBy' in newQuery\n ? newQuery.groupBy\n : (currentQuery?.groupBy ?? options?.defaults?.groupBy),\n limit: 'limit' in newQuery ? newQuery.limit : (currentQuery?.limit ?? options?.defaults?.limit),\n page,\n preset: 'preset' in newQuery ? newQuery.preset : currentQuery?.preset,\n queryByGroup: mergedQueryByGroup,\n search: 'search' in newQuery ? newQuery.search : currentQuery?.search,\n sort:\n 'sort' in newQuery\n ? newQuery.sort\n : ((currentQuery?.sort as string) ?? options?.defaults?.sort),\n where: 'where' in newQuery ? newQuery.where : currentQuery?.where,\n }\n\n return mergedQuery\n}\n", "import type { ListQuery, Where } from 'payload'\n\n/**\n * Sanitize empty strings from the query, e.g. `?preset=`\n * This is how we determine whether to clear user preferences for certain params\n * Once cleared, they are no longer needed in the URL\n */\nexport const sanitizeQuery = (toSanitize: ListQuery): ListQuery => {\n const sanitized = { ...toSanitize }\n\n Object.entries(sanitized).forEach(([key, value]) => {\n if (\n key === 'columns' &&\n (value === '[]' || (Array.isArray(sanitized[key]) && sanitized[key].length === 0))\n ) {\n delete sanitized[key]\n }\n\n if (\n key === 'where' &&\n typeof value === 'object' &&\n value !== null &&\n !Object.keys(value as Where).length\n ) {\n delete sanitized[key]\n }\n\n if ((key === 'limit' || key === 'page') && typeof value === 'string') {\n const parsed = parseInt(value, 10)\n sanitized[key] = Number.isNaN(parsed) ? undefined : parsed\n }\n\n if (key === 'page' && value === 0) {\n delete sanitized[key]\n }\n\n if (value === '') {\n delete sanitized[key]\n }\n })\n\n return sanitized\n}\n", "import type {\n AdminViewServerPropsOnly,\n BuildFormStateArgs,\n BuildTableStateArgs,\n Data,\n DocumentPreferences,\n DocumentSlots,\n FormState,\n GetFolderResultsComponentAndDataArgs,\n Params,\n RenderDocumentVersionsProperties,\n ServerFunction,\n ServerFunctionClient,\n SlugifyServerFunctionArgs,\n} from 'payload'\nimport type { Slugify } from 'payload/shared'\n\nimport React, { createContext, useCallback } from 'react'\n\nimport type {\n RenderFieldServerFnArgs,\n RenderFieldServerFnReturnType,\n} from '../../forms/fieldSchemasToFormState/serverFunctions/renderFieldServerFn.js'\nimport type { buildFormStateHandler } from '../../utilities/buildFormState.js'\nimport type { buildTableStateHandler } from '../../utilities/buildTableState.js'\nimport type { CopyDataFromLocaleArgs } from '../../utilities/copyDataFromLocale.js'\nimport type { getFolderResultsComponentAndDataHandler } from '../../utilities/getFolderResultsComponentAndData.js'\nimport type {\n schedulePublishHandler,\n SchedulePublishHandlerArgs,\n} from '../../utilities/schedulePublishHandler.js'\n\ntype GetFormStateClient = (\n args: {\n signal?: AbortSignal\n } & Omit<BuildFormStateArgs, 'clientConfig' | 'req'>,\n) => ReturnType<typeof buildFormStateHandler>\n\ntype SchedulePublishClient = (\n args: {\n signal?: AbortSignal\n } & Omit<SchedulePublishHandlerArgs, 'clientConfig' | 'req'>,\n) => ReturnType<typeof schedulePublishHandler>\n\ntype GetTableStateClient = (\n args: {\n signal?: AbortSignal\n } & Omit<BuildTableStateArgs, 'clientConfig' | 'req'>,\n) => ReturnType<typeof buildTableStateHandler>\n\ntype SlugifyClient = (\n args: {\n signal?: AbortSignal\n } & Omit<SlugifyServerFunctionArgs, 'clientConfig' | 'req'>,\n) => ReturnType<Slugify>\n\nexport type RenderDocumentResult = {\n data: any\n Document: React.ReactNode\n preferences: DocumentPreferences\n}\n\ntype RenderDocumentBaseArgs = {\n collectionSlug: string\n disableActions?: boolean\n docID: number | string\n drawerSlug?: string\n initialData?: Data\n initialState?: FormState\n overrideEntityVisibility?: boolean\n paramsOverride?: AdminViewServerPropsOnly['params']\n redirectAfterCreate?: boolean\n redirectAfterDelete: boolean\n redirectAfterDuplicate: boolean\n redirectAfterRestore?: boolean\n searchParams?: Params\n /**\n * Properties specific to the versions view\n */\n versions?: RenderDocumentVersionsProperties\n}\n\nexport type RenderDocumentServerFunction = ServerFunction<\n RenderDocumentBaseArgs,\n Promise<RenderDocumentResult>\n>\n\ntype RenderDocumentServerFunctionHookFn = (\n // No req or importMap - those are augmented by handleServerFunctions\n args: {\n signal?: AbortSignal\n } & RenderDocumentBaseArgs,\n) => Promise<RenderDocumentResult>\n\ntype CopyDataFromLocaleClient = (\n args: {\n signal?: AbortSignal\n } & Omit<CopyDataFromLocaleArgs, 'req'>,\n) => Promise<{ data: Data }>\n\ntype GetDocumentSlots = (args: {\n collectionSlug: string\n id?: number | string\n signal?: AbortSignal\n}) => Promise<DocumentSlots>\n\ntype GetFolderResultsComponentAndDataClient = (\n args: {\n signal?: AbortSignal\n } & Omit<GetFolderResultsComponentAndDataArgs, 'req'>,\n) => ReturnType<typeof getFolderResultsComponentAndDataHandler>\n\ntype RenderFieldClient = (args: RenderFieldServerFnArgs) => Promise<RenderFieldServerFnReturnType>\n\nexport type ServerFunctionsContextType = {\n _internal_renderField: RenderFieldClient\n copyDataFromLocale: CopyDataFromLocaleClient\n getDocumentSlots: GetDocumentSlots\n getFolderResultsComponentAndData: GetFolderResultsComponentAndDataClient\n getFormState: GetFormStateClient\n getTableState: GetTableStateClient\n renderDocument: RenderDocumentServerFunctionHookFn\n schedulePublish: SchedulePublishClient\n serverFunction: ServerFunctionClient\n slugify: SlugifyClient\n}\n\nexport const ServerFunctionsContext = createContext<ServerFunctionsContextType | undefined>(\n undefined,\n)\n\nexport const useServerFunctions = () => {\n const context = React.use(ServerFunctionsContext)\n if (context === undefined) {\n throw new Error('useServerFunctions must be used within a ServerFunctionsProvider')\n }\n return context\n}\n\nexport const ServerFunctionsProvider: React.FC<{\n children: React.ReactNode\n serverFunction: ServerFunctionClient\n}> = ({ children, serverFunction }) => {\n if (!serverFunction) {\n throw new Error('ServerFunctionsProvider requires a serverFunction prop')\n }\n\n const getDocumentSlots = useCallback<GetDocumentSlots>(\n async (args) =>\n await serverFunction({\n name: 'render-document-slots',\n args,\n }),\n [serverFunction],\n )\n\n const schedulePublish = useCallback<SchedulePublishClient>(\n async (args) => {\n const { signal: remoteSignal, ...rest } = args\n\n try {\n if (!remoteSignal?.aborted) {\n const result = await serverFunction({\n name: 'schedule-publish',\n args: { ...rest },\n })\n\n if (!remoteSignal?.aborted) {\n return result\n }\n }\n } catch (_err) {\n console.error(_err) // eslint-disable-line no-console\n }\n\n let error = `Error scheduling ${rest.type}`\n\n if (rest.doc) {\n error += ` for document with ID ${rest.doc.value} in collection ${rest.doc.relationTo}`\n }\n\n return { error }\n },\n [serverFunction],\n )\n\n const getFormState = useCallback<GetFormStateClient>(\n async (args) => {\n const { signal: remoteSignal, ...rest } = args || {}\n\n try {\n if (!remoteSignal?.aborted) {\n const result = (await serverFunction({\n name: 'form-state',\n args: { fallbackLocale: false, ...rest },\n })) as Awaited<ReturnType<typeof buildFormStateHandler>> // TODO: infer this type when `strictNullChecks` is enabled\n\n if (!remoteSignal?.aborted) {\n return result\n }\n }\n } catch (_err) {\n console.error(_err) // eslint-disable-line no-console\n }\n\n return { state: null }\n },\n [serverFunction],\n )\n\n const getTableState = useCallback<GetTableStateClient>(\n async (args) => {\n const { signal: remoteSignal, ...rest } = args || {}\n\n try {\n if (!remoteSignal?.aborted) {\n const result = (await serverFunction({\n name: 'table-state',\n args: { fallbackLocale: false, ...rest },\n })) as Awaited<ReturnType<typeof buildTableStateHandler>> // TODO: infer this type when `strictNullChecks` is enabled\n\n if (!remoteSignal?.aborted) {\n return result\n }\n }\n } catch (_err) {\n console.error(_err) // eslint-disable-line no-console\n }\n\n // return { state: args.formState }\n },\n [serverFunction],\n )\n\n const renderDocument = useCallback<RenderDocumentServerFunctionHookFn>(\n async (args) => {\n const { signal: remoteSignal, ...rest } = args || {}\n try {\n const result = (await serverFunction({\n name: 'render-document',\n args: {\n fallbackLocale: false,\n ...rest,\n } as Parameters<RenderDocumentServerFunctionHookFn>[0],\n })) as Awaited<ReturnType<RenderDocumentServerFunctionHookFn>> // TODO: infer this type when `strictNullChecks` is enabled\n\n return result\n } catch (_err) {\n console.error(_err) // eslint-disable-line no-console\n }\n },\n [serverFunction],\n )\n\n const copyDataFromLocale = useCallback<CopyDataFromLocaleClient>(\n async (args) => {\n const { signal: remoteSignal, ...rest } = args || {}\n\n const result = (await serverFunction({\n name: 'copy-data-from-locale',\n args: rest,\n })) as Data\n\n if (!remoteSignal?.aborted) {\n return { data: result }\n }\n },\n [serverFunction],\n )\n\n const getFolderResultsComponentAndData = useCallback<GetFolderResultsComponentAndDataClient>(\n async (args) => {\n const { signal: remoteSignal, ...rest } = args || {}\n\n try {\n const result = (await serverFunction({\n name: 'get-folder-results-component-and-data',\n args: rest,\n })) as Awaited<ReturnType<typeof getFolderResultsComponentAndDataHandler>>\n\n if (!remoteSignal?.aborted) {\n return result\n }\n } catch (_err) {\n console.error(_err) // eslint-disable-line no-console\n }\n },\n [serverFunction],\n )\n\n const _internal_renderField = useCallback<RenderFieldClient>(\n async (args) => {\n try {\n const result = (await serverFunction({\n name: 'render-field',\n args,\n })) as RenderFieldServerFnReturnType\n\n return result\n } catch (_err) {\n console.error(_err) // eslint-disable-line no-console\n }\n },\n [serverFunction],\n )\n\n const slugify = useCallback<SlugifyClient>(\n async (args) => {\n const { signal: remoteSignal, ...rest } = args || {}\n\n try {\n const result = (await serverFunction({\n name: 'slugify',\n args: { ...rest },\n })) as Awaited<ReturnType<Slugify>> // TODO: infer this type when `strictNullChecks` is enabled\n\n return result\n } catch (_err) {\n console.error(_err) // eslint-disable-line no-console\n }\n },\n [serverFunction],\n )\n\n return (\n <ServerFunctionsContext\n value={{\n _internal_renderField,\n copyDataFromLocale,\n getDocumentSlots,\n getFolderResultsComponentAndData,\n getFormState,\n getTableState,\n renderDocument,\n schedulePublish,\n serverFunction,\n slugify,\n }}\n >\n {children}\n </ServerFunctionsContext>\n )\n}\n", "'use client'\nimport { type Column } from 'payload'\nimport { transformColumnsToSearchParams } from 'payload/shared'\nimport React, { startTransition, useCallback, useRef } from 'react'\n\nimport type { ITableColumns, TableColumnsProviderProps } from './types.js'\n\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useListQuery } from '../../providers/ListQuery/index.js'\nimport { TableColumnContext } from './context.js'\n\nexport { useTableColumns } from './context.js'\n\nexport const TableColumnsProvider: React.FC<TableColumnsProviderProps> = ({\n children,\n collectionSlug,\n columnState: columnStateFromProps,\n LinkedCellOverride,\n}) => {\n const { getEntityConfig } = useConfig()\n const { query: currentQuery, refineListData } = useListQuery()\n\n const { admin: { defaultColumns } = {} } = getEntityConfig({\n collectionSlug,\n })\n\n const [columnState, setOptimisticColumnState] = React.useOptimistic(\n columnStateFromProps,\n (state, action: Column[]) => action,\n )\n\n const contextRef = useRef({} as ITableColumns)\n\n const toggleColumn = useCallback(\n async (column: string) => {\n const newColumnState = (columnState || []).map((col) => {\n if (col.accessor === column) {\n return { ...col, active: !col.active }\n }\n return col\n })\n\n startTransition(() => {\n setOptimisticColumnState(newColumnState)\n })\n\n await refineListData({\n columns: transformColumnsToSearchParams(newColumnState),\n })\n },\n [refineListData, columnState, setOptimisticColumnState],\n )\n\n const moveColumn = useCallback(\n async (args: { fromIndex: number; toIndex: number }) => {\n const { fromIndex, toIndex } = args\n const newColumnState = [...(columnState || [])]\n const [columnToMove] = newColumnState.splice(fromIndex, 1)\n newColumnState.splice(toIndex, 0, columnToMove)\n\n startTransition(() => {\n setOptimisticColumnState(newColumnState)\n })\n\n await refineListData({\n columns: transformColumnsToSearchParams(newColumnState),\n })\n },\n [columnState, refineListData, setOptimisticColumnState],\n )\n\n const setActiveColumns = useCallback(\n async (columns: string[]) => {\n const newColumnState = currentQuery.columns\n\n columns.forEach((colName) => {\n const colIndex = newColumnState.findIndex((c) => colName === c)\n\n // ensure the name does not begin with a `-` which denotes an inactive column\n if (colIndex !== undefined && newColumnState[colIndex][0] === '-') {\n newColumnState[colIndex] = colName.slice(1)\n }\n })\n\n await refineListData({ columns: newColumnState })\n },\n [currentQuery, refineListData],\n )\n\n const resetColumnsState = React.useCallback(async () => {\n await refineListData({ columns: defaultColumns || [] })\n }, [defaultColumns, refineListData])\n\n return (\n <TableColumnContext\n value={{\n columns: columnState,\n LinkedCellOverride,\n moveColumn,\n resetColumnsState,\n setActiveColumns,\n toggleColumn,\n ...contextRef.current,\n }}\n >\n {children}\n </TableColumnContext>\n )\n}\n", "import { createContext, use } from 'react'\n\nimport type { ITableColumns } from './types.js'\n\nexport const TableColumnContext = createContext<ITableColumns>({} as ITableColumns)\n\nexport const useTableColumns = (): ITableColumns => use(TableColumnContext)\n", "'use client'\nimport type { SanitizedCollectionConfig, StaticLabel } from 'payload'\n\nimport { fieldIsHiddenOrDisabled, fieldIsID } from 'payload/shared'\nimport React, { useId, useMemo } from 'react'\n\nimport { FieldLabel } from '../../fields/FieldLabel/index.js'\nimport { useEditDepth } from '../../providers/EditDepth/index.js'\nimport { useTableColumns } from '../../providers/TableColumns/index.js'\nimport { PillSelector, type SelectablePill } from '../PillSelector/index.js'\n\nexport type Props = {\n readonly collectionSlug: SanitizedCollectionConfig['slug']\n}\n\nexport const ColumnSelector: React.FC<Props> = ({ collectionSlug }) => {\n const { columns, moveColumn, toggleColumn } = useTableColumns()\n\n const uuid = useId()\n const editDepth = useEditDepth()\n\n const filteredColumns = useMemo(\n () =>\n columns?.filter(\n (col) =>\n !(fieldIsHiddenOrDisabled(col.field) && !fieldIsID(col.field)) &&\n !col?.field?.admin?.disableListColumn,\n ),\n [columns],\n )\n\n const pills: SelectablePill[] = useMemo(() => {\n return filteredColumns\n ? filteredColumns.map((col, i) => {\n const { accessor, active, field } = col\n\n const label =\n 'labelWithPrefix' in field && field.labelWithPrefix !== undefined\n ? field.labelWithPrefix\n : 'label' in field && field.label !== undefined\n ? field.label\n : 'name' in field && field.name !== undefined\n ? field.name\n : undefined\n\n return {\n name: accessor,\n key: `${collectionSlug}-${accessor}-${i}${editDepth ? `-${editDepth}-` : ''}${uuid}`,\n Label: <FieldLabel label={label as StaticLabel} unstyled />,\n selected: active,\n } as SelectablePill\n })\n : null\n }, [collectionSlug, editDepth, filteredColumns, uuid])\n\n if (!pills) {\n return null\n }\n\n return (\n <PillSelector\n draggable={{\n onDragEnd: ({ moveFromIndex, moveToIndex }) => {\n void moveColumn({\n fromIndex: moveFromIndex,\n toIndex: moveToIndex,\n })\n },\n }}\n onClick={({ pill }) => {\n void toggleColumn(pill.name)\n }}\n pills={pills}\n />\n )\n}\n", "'use client'\n\nimport React from 'react'\n\nimport { PlusIcon } from '../../icons/Plus/index.js'\nimport { XIcon } from '../../icons/X/index.js'\nimport { DraggableSortable } from '../DraggableSortable/index.js'\nimport { Pill } from '../Pill/index.js'\nimport './index.scss'\n\nconst baseClass = 'pill-selector'\n\nexport type SelectablePill = {\n key?: string\n Label?: React.ReactNode\n name: string\n selected: boolean\n}\n\nexport type Props = {\n draggable?: {\n onDragEnd: (args: { moveFromIndex: number; moveToIndex: number }) => void\n }\n onClick?: (args: { pill: SelectablePill }) => Promise<void> | void\n pills: SelectablePill[]\n}\n\n/**\n * Displays a wrappable list of pills that can be selected or deselected.\n * If `draggable` is true, the pills can be reordered by dragging.\n */\nexport const PillSelector: React.FC<Props> = ({ draggable, onClick, pills }) => {\n // IMPORTANT: Do NOT wrap DraggableSortable in a dynamic component function using useMemo.\n // BAD: useMemo(() => ({ children }) => <DraggableSortable>...</DraggableSortable>, [deps])\n // This creates a new function reference on each recomputation, causing React to treat it as a\n // different component type, triggering unmount/mount cycles instead of just updating props.\n // GOOD: Use conditional rendering directly: draggable ? <DraggableSortable /> : <div />\n const pillElements = React.useMemo(() => {\n return pills.map((pill, i) => {\n return (\n <Pill\n alignIcon=\"left\"\n aria-checked={pill.selected}\n className={[`${baseClass}__pill`, pill.selected && `${baseClass}__pill--selected`]\n .filter(Boolean)\n .join(' ')}\n draggable={Boolean(draggable)}\n icon={pill.selected ? <XIcon /> : <PlusIcon />}\n id={pill.name}\n key={pill.key ?? `${pill.name}-${i}`}\n onClick={() => {\n if (onClick) {\n void onClick({ pill })\n }\n }}\n size=\"small\"\n >\n {pill.Label ?? <span className={`${baseClass}__pill-label`}>{pill.name}</span>}\n </Pill>\n )\n })\n }, [pills, onClick, draggable])\n\n if (draggable) {\n return (\n <DraggableSortable\n className={baseClass}\n ids={pills.map((pill) => pill.name)}\n onDragEnd={({ moveFromIndex, moveToIndex }) => {\n draggable.onDragEnd({\n moveFromIndex,\n moveToIndex,\n })\n }}\n >\n {pillElements}\n </DraggableSortable>\n )\n }\n\n return <div className={baseClass}>{pillElements}</div>\n}\n", "'use client'\nimport { useModal } from '@faceless-ui/modal'\nimport React, { useCallback, useEffect, useId, useMemo, useState } from 'react'\n\nimport type {\n DocumentDrawerProps,\n DocumentTogglerProps,\n UseDocumentDrawer,\n UseDocumentDrawerContext,\n} from './types.js'\n\nimport { useRelatedCollections } from '../../hooks/useRelatedCollections.js'\nimport { useEditDepth } from '../../providers/EditDepth/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { Drawer, DrawerToggler } from '../Drawer/index.js'\nimport { DocumentDrawerContent } from './DrawerContent.js'\nimport './index.scss'\n\nexport const documentDrawerBaseClass = 'doc-drawer'\n\nconst formatDocumentDrawerSlug = ({\n id,\n collectionSlug,\n depth,\n uuid,\n}: {\n collectionSlug: string\n depth: number\n id?: number | string\n uuid: string\n}) => `doc-drawer_${collectionSlug}_${depth}${id ? `_${id}` : ''}_${uuid}`\n\nexport const DocumentDrawerToggler: React.FC<DocumentTogglerProps> = ({\n children,\n className,\n collectionSlug,\n disabled,\n drawerSlug,\n onClick,\n operation,\n ...rest\n}) => {\n const { t } = useTranslation()\n const [collectionConfig] = useRelatedCollections(collectionSlug)\n\n return (\n <DrawerToggler\n aria-label={t(operation === 'create' ? 'fields:addNewLabel' : 'general:editLabel', {\n label: collectionConfig?.labels.singular,\n })}\n className={[className, `${documentDrawerBaseClass}__toggler`].filter(Boolean).join(' ')}\n disabled={disabled}\n onClick={onClick}\n slug={drawerSlug}\n {...rest}\n >\n {children}\n </DrawerToggler>\n )\n}\n\nexport const DocumentDrawer: React.FC<DocumentDrawerProps> = (props) => {\n const { drawerSlug } = props\n\n return (\n <Drawer className={documentDrawerBaseClass} gutter={false} Header={null} slug={drawerSlug}>\n <DocumentDrawerContent {...props} />\n </Drawer>\n )\n}\n\n/**\n * A hook to manage documents from a drawer modal.\n * It provides the components and methods needed to open, close, and interact with the drawer.\n * @example\n * const [DocumentDrawer, DocumentDrawerToggler, { openDrawer, closeDrawer }] = useDocumentDrawer({\n * collectionSlug: 'posts',\n * id: postId, // optional, if not provided, it will render the \"create new\" view\n * })\n *\n * // ...\n *\n * return (\n * <div>\n * <DocumentDrawerToggler collectionSlug=\"posts\" id={postId}>\n * Edit Post\n * </DocumentDrawerToggler>\n * <DocumentDrawer collectionSlug=\"posts\" id={postId} />\n * </div>\n */\nexport const useDocumentDrawer: UseDocumentDrawer = ({\n id,\n collectionSlug,\n overrideEntityVisibility,\n}) => {\n const editDepth = useEditDepth()\n const uuid = useId()\n const { closeModal, modalState, openModal, toggleModal } = useModal()\n const [isOpen, setIsOpen] = useState(false)\n\n const drawerSlug = formatDocumentDrawerSlug({\n id,\n collectionSlug,\n depth: editDepth,\n uuid,\n })\n\n useEffect(() => {\n setIsOpen(Boolean(modalState[drawerSlug]?.isOpen))\n }, [modalState, drawerSlug])\n\n const toggleDrawer = useCallback(() => {\n toggleModal(drawerSlug)\n }, [toggleModal, drawerSlug])\n\n const closeDrawer = useCallback(() => {\n closeModal(drawerSlug)\n }, [closeModal, drawerSlug])\n\n const openDrawer = useCallback(() => {\n openModal(drawerSlug)\n }, [openModal, drawerSlug])\n\n const MemoizedDrawer = useMemo<React.FC<DocumentDrawerProps>>(() => {\n return (props) => (\n <DocumentDrawer\n {...props}\n collectionSlug={collectionSlug}\n drawerSlug={drawerSlug}\n id={id}\n key={drawerSlug}\n overrideEntityVisibility={overrideEntityVisibility}\n />\n )\n }, [id, drawerSlug, collectionSlug, overrideEntityVisibility])\n\n const MemoizedDrawerToggler = useMemo<React.FC<DocumentTogglerProps>>(() => {\n return (props) => (\n <DocumentDrawerToggler\n {...props}\n collectionSlug={collectionSlug}\n drawerSlug={drawerSlug}\n operation={!id ? 'create' : 'update'}\n />\n )\n }, [id, drawerSlug, collectionSlug])\n\n const MemoizedDrawerState = useMemo<UseDocumentDrawerContext>(\n () => ({\n closeDrawer,\n drawerDepth: editDepth,\n drawerSlug,\n isDrawerOpen: isOpen,\n openDrawer,\n toggleDrawer,\n }),\n [editDepth, drawerSlug, isOpen, toggleDrawer, closeDrawer, openDrawer],\n )\n\n return [MemoizedDrawer, MemoizedDrawerToggler, MemoizedDrawerState]\n}\n", "'use client'\nimport type { ClientCollectionConfig } from 'payload'\n\nimport { useState } from 'react'\n\nimport { useConfig } from '../providers/Config/index.js'\n\n/**\n * Gets the corresponding client collection config(s) for the given collection slug.\n */\nexport const useRelatedCollections = (relationTo: string | string[]): ClientCollectionConfig[] => {\n const { getEntityConfig } = useConfig()\n\n const [relatedCollections] = useState(() => {\n if (relationTo) {\n const relations = typeof relationTo === 'string' ? [relationTo] : relationTo\n return relations.map((relation) => getEntityConfig({ collectionSlug: relation }))\n }\n return []\n })\n\n return relatedCollections\n}\n", "'use client'\n\nimport { useModal } from '@faceless-ui/modal'\nimport React, { useCallback, useEffect, useRef, useState } from 'react'\nimport { toast } from 'sonner'\n\nimport type { DocumentDrawerProps } from './types.js'\n\nimport { LoadingOverlay } from '../../elements/Loading/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useServerFunctions } from '../../providers/ServerFunctions/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { abortAndIgnore, handleAbortRef } from '../../utilities/abortAndIgnore.js'\nimport { DocumentDrawerContextProvider } from './Provider.js'\n\nexport const DocumentDrawerContent: React.FC<DocumentDrawerProps> = ({\n id: docID,\n collectionSlug,\n disableActions,\n drawerSlug,\n initialData,\n onDelete: onDeleteFromProps,\n onDuplicate: onDuplicateFromProps,\n onSave: onSaveFromProps,\n overrideEntityVisibility = true,\n redirectAfterCreate,\n redirectAfterDelete,\n redirectAfterDuplicate,\n redirectAfterRestore,\n}) => {\n const { getEntityConfig } = useConfig()\n\n const [collectionConfig] = useState(() => getEntityConfig({ collectionSlug }))\n\n const abortGetDocumentViewRef = React.useRef<AbortController>(null)\n\n const { closeModal } = useModal()\n const { t } = useTranslation()\n\n const { renderDocument } = useServerFunctions()\n\n const [DocumentView, setDocumentView] = useState<React.ReactNode>(undefined)\n const [isLoading, setIsLoading] = useState(true)\n\n const hasInitialized = useRef(false)\n\n const getDocumentView = useCallback(\n (docID?: DocumentDrawerProps['id'], showLoadingIndicator: boolean = false) => {\n const controller = handleAbortRef(abortGetDocumentViewRef)\n\n const fetchDocumentView = async () => {\n if (showLoadingIndicator) {\n setIsLoading(true)\n }\n\n try {\n const result = await renderDocument({\n collectionSlug,\n disableActions,\n docID,\n drawerSlug,\n initialData,\n overrideEntityVisibility,\n redirectAfterCreate,\n redirectAfterDelete: redirectAfterDelete !== undefined ? redirectAfterDelete : false,\n redirectAfterDuplicate:\n redirectAfterDuplicate !== undefined ? redirectAfterDuplicate : false,\n redirectAfterRestore: redirectAfterRestore !== undefined ? redirectAfterRestore : false,\n signal: controller.signal,\n })\n\n if (result?.Document) {\n setDocumentView(result.Document)\n setIsLoading(false)\n }\n } catch (error) {\n toast.error(error?.message || t('error:unspecific'))\n closeModal(drawerSlug)\n }\n\n abortGetDocumentViewRef.current = null\n }\n\n void fetchDocumentView()\n },\n [\n collectionSlug,\n disableActions,\n drawerSlug,\n initialData,\n redirectAfterDelete,\n redirectAfterDuplicate,\n redirectAfterRestore,\n renderDocument,\n redirectAfterCreate,\n closeModal,\n overrideEntityVisibility,\n t,\n ],\n )\n\n const onSave = useCallback<DocumentDrawerProps['onSave']>(\n (args) => {\n if (args.operation === 'create') {\n getDocumentView(args.doc.id)\n }\n\n if (typeof onSaveFromProps === 'function') {\n void onSaveFromProps({\n ...args,\n collectionConfig,\n })\n }\n },\n [onSaveFromProps, collectionConfig, getDocumentView],\n )\n\n const onDuplicate = useCallback<DocumentDrawerProps['onDuplicate']>(\n (args) => {\n getDocumentView(args.doc.id)\n\n if (typeof onDuplicateFromProps === 'function') {\n void onDuplicateFromProps({\n ...args,\n collectionConfig,\n })\n }\n },\n [onDuplicateFromProps, collectionConfig, getDocumentView],\n )\n\n const onDelete = useCallback<DocumentDrawerProps['onDelete']>(\n (args) => {\n if (typeof onDeleteFromProps === 'function') {\n void onDeleteFromProps({\n ...args,\n collectionConfig,\n })\n }\n\n closeModal(drawerSlug)\n },\n [onDeleteFromProps, closeModal, drawerSlug, collectionConfig],\n )\n\n const clearDoc = useCallback(() => {\n getDocumentView(undefined, true)\n }, [getDocumentView])\n\n useEffect(() => {\n if (!DocumentView && !hasInitialized.current) {\n getDocumentView(docID, true)\n hasInitialized.current = true\n }\n }, [DocumentView, getDocumentView, docID])\n\n // Cleanup any pending requests when the component unmounts\n useEffect(() => {\n const abortGetDocumentView = abortGetDocumentViewRef.current\n\n return () => {\n abortAndIgnore(abortGetDocumentView)\n }\n }, [])\n\n if (isLoading) {\n return <LoadingOverlay />\n }\n\n return (\n <DocumentDrawerContextProvider\n clearDoc={clearDoc}\n drawerSlug={drawerSlug}\n onDelete={onDelete}\n onDuplicate={onDuplicate}\n onSave={onSave}\n >\n {DocumentView}\n </DocumentDrawerContextProvider>\n )\n}\n", "'use client'\nimport { getTranslation } from '@payloadcms/translations'\nimport React from 'react'\n\nimport type { LoadingOverlayTypes } from '../../elements/LoadingOverlay/types.js'\n\nimport { useLoadingOverlay } from '../../elements/LoadingOverlay/index.js'\nimport { useFormProcessing } from '../../forms/Form/context.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport './index.scss'\n\nconst baseClass = 'loading-overlay'\n\ntype LoadingOverlayProps = {\n animationDuration?: string\n loadingText?: string\n overlayType?: string\n show?: boolean\n}\n\nexport const LoadingOverlay: React.FC<LoadingOverlayProps> = ({\n animationDuration,\n loadingText,\n overlayType,\n show = true,\n}) => {\n const { t } = useTranslation()\n\n return (\n <div\n className={[\n baseClass,\n show ? `${baseClass}--entering` : `${baseClass}--exiting`,\n overlayType ? `${baseClass}--${overlayType}` : '',\n ]\n .filter(Boolean)\n .join(' ')}\n style={{\n animationDuration: animationDuration || '500ms',\n }}\n >\n <div className={`${baseClass}__bars`}>\n <div className={`${baseClass}__bar`} />\n <div className={`${baseClass}__bar`} />\n <div className={`${baseClass}__bar`} />\n <div className={`${baseClass}__bar`} />\n <div className={`${baseClass}__bar`} />\n </div>\n\n <span className={`${baseClass}__text`}>{loadingText || t('general:loading')}</span>\n </div>\n )\n}\n\nexport type UseLoadingOverlayToggleProps = {\n loadingText?: string\n name: string\n show: boolean\n type?: LoadingOverlayTypes\n}\nexport const LoadingOverlayToggle: React.FC<UseLoadingOverlayToggleProps> = ({\n name: key,\n type = 'fullscreen',\n loadingText,\n show,\n}) => {\n const { toggleLoadingOverlay } = useLoadingOverlay()\n\n React.useEffect(() => {\n toggleLoadingOverlay({\n type,\n isLoading: show,\n key,\n loadingText: loadingText || undefined,\n })\n\n return () => {\n toggleLoadingOverlay({\n type,\n isLoading: false,\n key,\n })\n }\n }, [show, toggleLoadingOverlay, key, type, loadingText])\n\n return null\n}\n\nexport type FormLoadingOverlayToggleProps = {\n action: 'create' | 'loading' | 'update'\n formIsLoading?: boolean\n loadingSuffix?: string\n name: string\n type?: LoadingOverlayTypes\n}\n\nexport const FormLoadingOverlayToggle: React.FC<FormLoadingOverlayToggleProps> = ({\n name,\n type = 'fullscreen',\n action,\n formIsLoading = false,\n loadingSuffix,\n}) => {\n const isProcessing = useFormProcessing()\n const { i18n, t } = useTranslation()\n\n const labels = {\n create: t('general:creating'),\n loading: t('general:loading'),\n update: t('general:updating'),\n }\n\n return (\n <LoadingOverlayToggle\n loadingText={`${labels[action]} ${\n loadingSuffix ? getTranslation(loadingSuffix, i18n) : ''\n }`.trim()}\n name={name}\n show={formIsLoading || isProcessing}\n type={type}\n />\n )\n}\n", "'use client'\nimport React, { createContext } from 'react'\n\nimport type { LoadingOverlayContext, ToggleLoadingOverlay } from './types.js'\n\nimport { LoadingOverlay } from '../../elements/Loading/index.js'\nimport { useDelayedRender } from '../../hooks/useDelayedRender.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { defaultLoadingOverlayState, reducer } from './reducer.js'\n\nconst animatedDuration = 250\n\nconst Context = createContext({\n isOnScreen: false,\n toggleLoadingOverlay: undefined,\n})\n\nexport const LoadingOverlayProvider: React.FC<{ children?: React.ReactNode }> = ({ children }) => {\n const { t } = useTranslation()\n const fallbackText = t('general:loading')\n const [overlays, dispatchOverlay] = React.useReducer(reducer, defaultLoadingOverlayState)\n\n const { isMounted, isUnmounting, triggerDelayedRender } = useDelayedRender({\n delayBeforeShow: 1000,\n inTimeout: animatedDuration,\n minShowTime: 500,\n outTimeout: animatedDuration,\n show: overlays.isLoading,\n })\n\n const toggleLoadingOverlay = React.useCallback<ToggleLoadingOverlay>(\n ({ type, isLoading, key, loadingText = fallbackText }) => {\n if (isLoading) {\n triggerDelayedRender()\n dispatchOverlay({\n type: 'add',\n payload: {\n type,\n key,\n loadingText,\n },\n })\n } else {\n dispatchOverlay({\n type: 'remove',\n payload: {\n type,\n key,\n },\n })\n }\n },\n [triggerDelayedRender, fallbackText],\n )\n\n return (\n <Context\n value={{\n isOnScreen: isMounted,\n toggleLoadingOverlay,\n }}\n >\n {isMounted && (\n <LoadingOverlay\n animationDuration={`${animatedDuration}ms`}\n loadingText={overlays.loadingText || fallbackText}\n overlayType={overlays.overlayType}\n show={!isUnmounting}\n />\n )}\n {children}\n </Context>\n )\n}\n\nexport const useLoadingOverlay = (): LoadingOverlayContext => {\n const contextHook = React.use(Context)\n if (contextHook === undefined) {\n throw new Error('useLoadingOverlay must be used within a LoadingOverlayProvider')\n }\n\n return contextHook\n}\n", "'use client'\nimport * as React from 'react'\n\nimport { useDelay } from './useDelay.js'\n\ntype DelayedRenderProps = {\n /** Time in ms to wait before \"mounting\" the component. */\n delayBeforeShow: number\n /** Time in ms for the \"enter\" phase of the transition, after delay completes. */\n inTimeout: number\n /** Min time in ms for the \"entered\" phase of the transition. */\n minShowTime: number\n /** Time in ms for the exit phase of the transition. */\n outTimeout: number\n /** `true` starts the mount process.\n * `false` starts the unmount process.\n * */\n show: boolean\n}\ntype useDelayedRenderT = (props: DelayedRenderProps) => {\n /** `true` if the component has mounted after the timeout. */\n isMounted: boolean\n /** `true` if the component is unmounting. */\n isUnmounting: boolean\n /** Call this function to trigger the timeout delay before rendering. */\n triggerDelayedRender: () => void\n}\nexport const useDelayedRender: useDelayedRenderT = ({\n delayBeforeShow,\n inTimeout,\n minShowTime,\n outTimeout,\n show,\n}) => {\n const totalMountTime = inTimeout + minShowTime + outTimeout\n const [hasDelayed, triggerDelay] = useDelay(delayBeforeShow)\n const [isMounted, setIsMounted] = React.useState(false)\n const [isUnmounting, setIsUnmounting] = React.useState(false)\n const onMountTimestampRef = React.useRef(0)\n const unmountTimeoutRef: React.RefObject<NodeJS.Timeout | undefined> = React.useRef(undefined)\n\n const unmount = React.useCallback(() => {\n setIsUnmounting(true)\n unmountTimeoutRef.current = setTimeout(() => {\n setIsMounted(false)\n setIsUnmounting(false)\n }, outTimeout)\n }, [setIsUnmounting, outTimeout])\n\n React.useEffect(() => {\n const shouldMount = hasDelayed && !isMounted && show\n const shouldUnmount = isMounted && !show\n\n if (shouldMount) {\n onMountTimestampRef.current = Date.now()\n setIsMounted(true)\n } else if (shouldUnmount) {\n const totalTimeMounted = Date.now() - onMountTimestampRef.current\n const remainingTime = totalMountTime - totalTimeMounted\n clearTimeout(unmountTimeoutRef.current)\n unmountTimeoutRef.current = setTimeout(unmount, Math.max(0, remainingTime))\n }\n }, [isMounted, show, unmount, totalMountTime, hasDelayed])\n\n return {\n isMounted,\n isUnmounting,\n triggerDelayedRender: triggerDelay,\n }\n}\n", "'use client'\nimport type { Action, State } from './types.js'\n\nexport const defaultLoadingOverlayState = {\n isLoading: false,\n loaders: [],\n loadingText: '',\n overlayType: null,\n}\n\nexport const reducer = (state: State, action: Action): State => {\n const loadersCopy = [...state.loaders]\n const { type = 'fullscreen', key = 'user', loadingText } = action.payload\n\n if (action.type === 'add') {\n loadersCopy.push({ type, key, loadingText })\n } else if (action.type === 'remove') {\n const index = loadersCopy.findIndex((item) => item.key === key && item.type === type)\n loadersCopy.splice(index, 1)\n }\n\n const nextLoader = loadersCopy?.length > 0 ? loadersCopy[loadersCopy.length - 1] : null\n\n return {\n isLoading: Boolean(nextLoader),\n loaders: loadersCopy,\n loadingText: nextLoader?.loadingText || state?.loadingText,\n overlayType: nextLoader?.type || state?.overlayType,\n }\n}\n", "export function abortAndIgnore(abortController: AbortController) {\n if (abortController) {\n try {\n abortController.abort()\n } catch (_err) {\n // swallow error\n }\n }\n}\n\n/**\n * Use this function when an effect is triggered multiple times over and you want to cancel the previous effect.\n * It will abort the previous effect and create a new AbortController for the next effect.\n * Important: You must also _reset_ the `abortControllerRef` after the effect is done, otherwise the next effect will be aborted immediately.\n * For example, run `abortControllerRef.current = null` in a `finally` block or after an awaited promise.\n * @param abortControllerRef\n * @returns {AbortController}\n */\nexport function handleAbortRef(\n abortControllerRef: React.RefObject<AbortController>,\n): AbortController {\n const newController = new AbortController()\n\n if (abortControllerRef.current) {\n try {\n abortControllerRef.current.abort()\n } catch (_err) {\n // swallow error\n }\n }\n\n abortControllerRef.current = newController\n\n return newController\n}\n", "import type { ClientCollectionConfig, Data, FormState, TypeWithID } from 'payload'\n\nimport { createContext, use } from 'react'\n\nexport type DocumentDrawerContextProps = {\n readonly clearDoc?: () => void\n readonly drawerSlug: string\n readonly onDelete?: (args: {\n collectionConfig?: ClientCollectionConfig\n id: string\n }) => Promise<void> | void\n /* only available if `redirectAfterDuplicate` is `false` */\n readonly onDuplicate?: (args: {\n collectionConfig?: ClientCollectionConfig\n doc: TypeWithID\n }) => Promise<void> | void\n readonly onRestore?: (args: {\n collectionConfig?: ClientCollectionConfig\n id: string\n }) => Promise<void> | void\n readonly onSave?: (args: {\n collectionConfig?: ClientCollectionConfig\n /**\n * If you want to pass additional data to the onSuccess callback, you can use this context object.\n *\n * @experimental This property is experimental and may change in the future. Use at your own risk.\n */\n context?: Record<string, unknown>\n doc: TypeWithID\n operation: 'create' | 'update'\n result: Data\n }) => Promise<FormState | void> | void\n}\n\nexport type DocumentDrawerContextType = {} & DocumentDrawerContextProps\n\nexport const DocumentDrawerCallbacksContext = createContext({} as DocumentDrawerContextType)\n\nexport const DocumentDrawerContextProvider: React.FC<\n {\n children: React.ReactNode\n } & DocumentDrawerContextProps\n> = ({ children, ...rest }) => {\n return (\n <DocumentDrawerCallbacksContext value={{ ...rest }}>{children}</DocumentDrawerCallbacksContext>\n )\n}\n\nexport const useDocumentDrawerContext = (): DocumentDrawerContextType => {\n const context = use(DocumentDrawerCallbacksContext)\n\n if (!context) {\n throw new Error('useDocumentDrawerContext must be used within a DocumentDrawerProvider')\n }\n\n return context\n}\n", "'use client'\nimport type { SelectType, TypeWithID } from 'payload'\n\nimport { appendUploadSelectFields, formatAdminURL } from 'payload/shared'\nimport * as qs from 'qs-esm'\nimport React, { createContext, use, useCallback, useEffect, useReducer, useRef } from 'react'\n\nimport { useDebounce } from '../../../hooks/useDebounce.js'\nimport { useConfig } from '../../../providers/Config/index.js'\nimport { useLocale } from '../../../providers/Locale/index.js'\nimport { useTranslation } from '../../../providers/Translation/index.js'\nimport { reducer } from './reducer.js'\n\n// documents are first set to null when requested\n// set to false when no doc is returned\n// or set to the document returned\nexport type Documents = {\n [slug: string]: {\n [id: number | string]: false | null | TypeWithID\n }\n}\n\ntype ListRelationshipContext = {\n documents: Documents\n getRelationships: (\n docs: {\n relationTo: string\n value: number | string\n }[],\n ) => void\n}\n\nconst Context = createContext({} as ListRelationshipContext)\n\nexport const RelationshipProvider: React.FC<{ readonly children?: React.ReactNode }> = ({\n children,\n}) => {\n const [documents, dispatchDocuments] = useReducer(reducer, {})\n const debouncedDocuments = useDebounce(documents, 100)\n\n const {\n config: {\n collections,\n routes: { api },\n },\n } = useConfig()\n\n const { i18n } = useTranslation()\n const { code: locale } = useLocale()\n const prevLocale = useRef(locale)\n\n const loadRelationshipDocs = useCallback(\n (reloadAll = false) => {\n Object.entries(debouncedDocuments).forEach(async ([slug, docs]) => {\n const idsToLoad: (number | string)[] = []\n\n Object.entries(docs).forEach(([id, value]) => {\n if (value === null || reloadAll) {\n idsToLoad.push(id)\n }\n })\n\n if (idsToLoad.length > 0) {\n const url = formatAdminURL({ apiRoute: api, path: `/${slug}` })\n\n const params = new URLSearchParams()\n const select: SelectType = {}\n\n params.append('depth', '0')\n params.append('limit', '250')\n\n const collection = collections.find((c) => c.slug === slug)\n if (collection.admin.enableListViewSelectAPI) {\n const fieldToSelect = collection.admin.useAsTitle ?? 'id'\n select[fieldToSelect] = true\n\n if (collection.upload) {\n appendUploadSelectFields({ collectionConfig: collection, select })\n }\n }\n\n if (locale) {\n params.append('locale', locale)\n }\n\n const idsToString = idsToLoad.map((id) => String(id))\n params.append('where[id][in]', idsToString.join(','))\n\n const query = `?${params.toString()}&${qs.stringify({ select })}`\n\n const result = await fetch(`${url}${query}`, {\n credentials: 'include',\n headers: {\n 'Accept-Language': i18n.language,\n },\n })\n\n if (result.ok) {\n const json = await result.json()\n if (json.docs) {\n dispatchDocuments({\n type: 'ADD_LOADED',\n docs: json.docs,\n idsToLoad,\n relationTo: slug,\n })\n }\n } else {\n dispatchDocuments({ type: 'ADD_LOADED', docs: [], idsToLoad, relationTo: slug })\n }\n }\n })\n },\n [debouncedDocuments, api, i18n, locale, collections],\n )\n\n useEffect(() => {\n void loadRelationshipDocs(locale && prevLocale.current !== locale)\n prevLocale.current = locale\n }, [locale, loadRelationshipDocs])\n\n const getRelationships = useCallback(\n (relationships: { relationTo: string; value: number | string }[]) => {\n dispatchDocuments({ type: 'REQUEST', docs: relationships })\n },\n [],\n )\n\n return <Context value={{ documents, getRelationships }}>{children}</Context>\n}\n\nexport const useListRelationships = (): ListRelationshipContext => use(Context)\n", "'use client'\nimport { useEffect, useState } from 'react'\n\nexport function useDebounce<T = unknown>(value: T, delay: number): T {\n // State and setters for debounced value\n const [debouncedValue, setDebouncedValue] = useState(value)\n\n useEffect(() => {\n const handler = setTimeout(() => {\n setDebouncedValue(value)\n }, delay)\n\n return () => {\n clearTimeout(handler)\n }\n }, [value, delay])\n\n return debouncedValue\n}\n", "import type { TypeWithID } from 'payload'\n\nimport type { Documents } from './index.js'\n\ntype RequestDocuments = {\n docs: { relationTo: string; value: number | string }[]\n type: 'REQUEST'\n}\n\ntype AddLoadedDocuments = {\n docs: TypeWithID[]\n idsToLoad: (number | string)[]\n relationTo: string\n type: 'ADD_LOADED'\n}\n\ntype Action = AddLoadedDocuments | RequestDocuments\n\nexport function reducer(state: Documents, action: Action): Documents {\n switch (action.type) {\n case 'ADD_LOADED': {\n const newState = { ...state }\n if (typeof newState[action.relationTo] !== 'object') {\n newState[action.relationTo] = {}\n }\n const unreturnedIDs = [...action.idsToLoad]\n\n if (Array.isArray(action.docs)) {\n action.docs.forEach((doc) => {\n unreturnedIDs.splice(unreturnedIDs.indexOf(doc.id), 1)\n newState[action.relationTo][doc.id] = doc\n })\n }\n\n unreturnedIDs.forEach((id) => {\n newState[action.relationTo][id] = false\n })\n\n return newState\n }\n\n case 'REQUEST': {\n const newState = { ...state }\n\n action.docs.forEach(({ relationTo, value }) => {\n if (typeof newState[relationTo] !== 'object') {\n newState[relationTo] = {}\n }\n newState[relationTo][value] = null\n })\n\n return newState\n }\n\n default: {\n return state\n }\n }\n}\n", "'use client'\nimport type { I18nClient } from '@payloadcms/translations'\nimport type { ClientCollectionConfig, SanitizedPermissions } from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\n\nimport type { Props as ButtonProps } from '../../elements/Button/types.js'\n\nimport { Button } from '../../elements/Button/index.js'\nimport { Popup, PopupList } from '../Popup/index.js'\n\nexport const AddNewButton = ({\n allowCreate,\n baseClass,\n buttonStyle,\n className,\n collections,\n i18n,\n icon,\n label,\n onClick,\n permissions,\n relationTo,\n}: {\n allowCreate: boolean\n baseClass: string\n buttonStyle?: ButtonProps['buttonStyle']\n className?: string\n collections: ClientCollectionConfig[]\n i18n: I18nClient\n icon?: ButtonProps['icon']\n label: string\n onClick: (selectedCollection?: string) => void\n permissions: SanitizedPermissions\n relationTo: string | string[]\n}) => {\n if (!allowCreate) {\n return null\n }\n\n const isPolymorphic = Array.isArray(relationTo)\n\n if (!isPolymorphic) {\n return (\n <Button buttonStyle={buttonStyle} className={className} onClick={() => onClick()}>\n {label}\n </Button>\n )\n }\n\n return (\n <div className={`${baseClass}__add-new-polymorphic-wrapper`}>\n <Popup\n button={\n <Button buttonStyle={buttonStyle} className={className} icon={icon}>\n {label}\n </Button>\n }\n buttonType=\"custom\"\n horizontalAlign=\"center\"\n render={({ close: closePopup }) => (\n <PopupList.ButtonGroup>\n {relationTo.map((relatedCollection) => {\n if (permissions.collections[relatedCollection]?.create) {\n return (\n <PopupList.Button\n className={`${baseClass}__relation-button--${relatedCollection}`}\n key={relatedCollection}\n onClick={() => {\n closePopup()\n onClick(relatedCollection)\n }}\n >\n {getTranslation(\n collections.find((each) => each.slug === relatedCollection).labels.singular,\n i18n,\n )}\n </PopupList.Button>\n )\n }\n\n return null\n })}\n </PopupList.ButtonGroup>\n )}\n size=\"medium\"\n />\n </div>\n )\n}\n", "'use client'\n\nimport React from 'react'\n\nimport type { OnDrawerOpen } from '../../index.js'\n\nimport { EditIcon } from '../../../../icons/Edit/index.js'\nimport { useCellProps } from '../../../../providers/TableColumns/RenderDefaultCell/index.js'\nimport { DefaultCell } from '../../../Table/DefaultCell/index.js'\nimport './index.scss'\n\nexport const DrawerLink: React.FC<{\n currentDrawerID?: string\n onDrawerOpen: OnDrawerOpen\n}> = ({ onDrawerOpen }) => {\n const cellProps = useCellProps()\n\n return (\n <div className=\"drawer-link\">\n <DefaultCell {...cellProps} className=\"drawer-link__cell\" link={false} onClick={null} />\n <button\n className=\"drawer-link__doc-drawer-toggler\"\n onClick={() => {\n onDrawerOpen(cellProps.rowData.id, cellProps.collectionSlug)\n }}\n type=\"button\"\n >\n <EditIcon />\n </button>\n </div>\n )\n}\n", "'use client'\nimport type { DefaultCellComponentProps } from 'payload'\n\nimport React from 'react'\n\nimport { useListDrawerContext } from '../../../elements/ListDrawer/Provider.js'\nimport { DefaultCell } from '../../../elements/Table/DefaultCell/index.js'\nimport { useTableColumns } from '../../../providers/TableColumns/index.js'\nimport './index.scss'\n\nconst baseClass = 'default-cell'\n\nconst CellPropsContext = React.createContext<DefaultCellComponentProps | null>(null)\n\nexport const useCellProps = (): DefaultCellComponentProps | null => React.use(CellPropsContext)\n\nexport const RenderDefaultCell: React.FC<{\n clientProps: DefaultCellComponentProps\n columnIndex: number\n enableRowSelections?: boolean\n isLinkedColumn?: boolean\n}> = ({ clientProps, columnIndex, isLinkedColumn }) => {\n const { drawerSlug, onSelect } = useListDrawerContext()\n const { LinkedCellOverride } = useTableColumns()\n\n const propsToPass: DefaultCellComponentProps = {\n ...clientProps,\n columnIndex,\n }\n\n if (isLinkedColumn && drawerSlug) {\n propsToPass.className = `${baseClass}__first-cell`\n propsToPass.link = false\n propsToPass.onClick = ({ collectionSlug: rowColl, rowData }) => {\n if (typeof onSelect === 'function') {\n onSelect({\n collectionSlug: rowColl,\n doc: rowData,\n docID: rowData.id as string,\n })\n }\n }\n }\n\n return (\n <CellPropsContext value={propsToPass}>\n {isLinkedColumn && LinkedCellOverride ? LinkedCellOverride : <DefaultCell {...propsToPass} />}\n </CellPropsContext>\n )\n}\n", "'use client'\nimport type { DefaultCellComponentProps, UploadFieldClient } from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport { fieldAffectsData, fieldIsID } from 'payload/shared'\nimport React from 'react' // TODO: abstract this out to support all routers\n\nimport { useConfig } from '../../../providers/Config/index.js'\nimport { useTranslation } from '../../../providers/Translation/index.js'\nimport { formatAdminURL } from '../../../utilities/formatAdminURL.js'\nimport { getDisplayedFieldValue } from '../../../utilities/getDisplayedFieldValue.js'\nimport { isValidReactElement } from '../../../utilities/isValidReactElement.js'\nimport { Link } from '../../Link/index.js'\nimport { CodeCell } from './fields/Code/index.js'\nimport { cellComponents } from './fields/index.js'\n\nexport const DefaultCell: React.FC<DefaultCellComponentProps> = (props) => {\n const {\n cellData,\n className: classNameFromProps,\n collectionSlug,\n field,\n field: { admin },\n link,\n linkURL,\n onClick: onClickFromProps,\n rowData,\n viewType,\n } = props\n\n const { i18n } = useTranslation()\n\n const {\n config: {\n routes: { admin: adminRoute },\n },\n getEntityConfig,\n } = useConfig()\n\n const collectionConfig = getEntityConfig({ collectionSlug })\n\n const classNameFromConfigContext = admin && 'className' in admin ? admin.className : undefined\n\n const className =\n classNameFromProps ||\n (field.admin && 'className' in field.admin ? field.admin.className : null) ||\n classNameFromConfigContext\n\n const onClick = onClickFromProps\n\n let WrapElement: React.ComponentType<any> | string = 'span'\n\n const wrapElementProps: {\n className?: string\n href?: string\n onClick?: () => void\n prefetch?: false\n type?: 'button'\n } = {\n className,\n }\n\n if (link) {\n wrapElementProps.prefetch = false\n WrapElement = Link\n\n // Use custom linkURL if provided, otherwise use default URL generation\n if (linkURL) {\n wrapElementProps.href = linkURL\n } else {\n wrapElementProps.href = collectionConfig?.slug\n ? formatAdminURL({\n adminRoute,\n path: `/collections/${collectionConfig?.slug}${viewType === 'trash' ? '/trash' : ''}/${encodeURIComponent(rowData.id)}`,\n })\n : ''\n }\n }\n\n if (typeof onClick === 'function') {\n WrapElement = 'button'\n wrapElementProps.type = 'button'\n wrapElementProps.onClick = () => {\n onClick({\n cellData,\n collectionSlug: collectionConfig?.slug,\n rowData,\n })\n }\n }\n\n if (fieldIsID(field)) {\n return (\n <WrapElement {...wrapElementProps}>\n <CodeCell\n cellData={`ID: ${cellData}`}\n collectionConfig={collectionConfig}\n collectionSlug={collectionSlug}\n field={{\n ...field,\n type: 'code',\n }}\n nowrap\n rowData={rowData}\n />\n </WrapElement>\n )\n }\n\n const displayedValue = getDisplayedFieldValue(cellData, field, i18n)\n\n const DefaultCellComponent: React.FC<DefaultCellComponentProps> =\n typeof cellData !== 'undefined' && cellComponents[field.type]\n\n let CellComponent: React.ReactNode = null\n\n // Handle JSX labels before using DefaultCellComponent\n if (isValidReactElement(displayedValue)) {\n CellComponent = displayedValue\n } else if (DefaultCellComponent) {\n CellComponent = <DefaultCellComponent cellData={cellData} rowData={rowData} {...props} />\n } else if (!DefaultCellComponent) {\n // DefaultCellComponent does not exist for certain field types like `text`\n if (\n collectionConfig?.upload &&\n fieldAffectsData(field) &&\n field.name === 'filename' &&\n field.type === 'text'\n ) {\n const FileCellComponent = cellComponents.File\n\n CellComponent = (\n <FileCellComponent\n cellData={cellData}\n rowData={rowData}\n {...(props as DefaultCellComponentProps<UploadFieldClient>)}\n collectionConfig={collectionConfig}\n field={field}\n />\n )\n } else {\n return (\n <WrapElement {...wrapElementProps}>\n {(displayedValue === '' ||\n typeof displayedValue === 'undefined' ||\n displayedValue === null) &&\n i18n.t('general:noLabel', {\n label: getTranslation(('label' in field ? field.label : null) || 'data', i18n),\n })}\n {typeof displayedValue === 'string' && displayedValue}\n {typeof displayedValue === 'number' && displayedValue}\n {typeof displayedValue === 'object' &&\n displayedValue !== null &&\n JSON.stringify(displayedValue)}\n </WrapElement>\n )\n }\n }\n\n if ((field.type === 'select' || field.type === 'radio') && field.options.length && cellData) {\n const classes = Array.isArray(cellData)\n ? cellData.map((value) => `selected--${value}`).join(' ')\n : `selected--${cellData}`\n\n const className = [wrapElementProps.className, classes].filter(Boolean).join(' ')\n\n return (\n <WrapElement {...wrapElementProps} className={className}>\n {CellComponent}\n </WrapElement>\n )\n }\n\n return <WrapElement {...wrapElementProps}>{CellComponent}</WrapElement>\n}\n", "/** Will read the `routes.admin` config and appropriately handle `\"/\"` admin paths */\nexport { formatAdminURL } from 'payload/shared'\n", "import type { I18nClient } from '@payloadcms/translations'\nimport type { ClientField } from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\n\nimport { isValidReactElement } from './isValidReactElement.js'\n\n/**\n * Returns the appropriate display value for a field.\n * - For select and radio fields:\n * - Returns JSX elements as-is.\n * - Translates localized label objects based on the current language.\n * - Returns string labels directly.\n * - Falls back to the option value if no valid label is found.\n * - For all other field types, returns `cellData` unchanged.\n */\nexport const getDisplayedFieldValue = (cellData: any, field: ClientField, i18n: I18nClient) => {\n if ((field?.type === 'select' || field?.type === 'radio') && Array.isArray(field.options)) {\n const selectedOption = field.options.find((opt) =>\n typeof opt === 'object' ? opt.value === cellData : opt === cellData,\n )\n\n if (selectedOption) {\n if (typeof selectedOption === 'object' && 'label' in selectedOption) {\n return isValidReactElement(selectedOption.label)\n ? selectedOption.label // Return JSX directly\n : getTranslation(selectedOption.label, i18n) || selectedOption.value // Use translation or fallback to value\n }\n return selectedOption // If option is a string, return it directly\n }\n }\n return cellData // Default fallback if no match found\n}\n", "import React, { type ReactElement } from 'react'\n\nconst LazyReactComponentSymbol = Symbol.for('react.lazy')\n\n/**\n * Since Next.js 15.4, `React.isValidElement()` returns `false` for components that cross the server-client boundary.\n * This utility expands on that check so that it returns true for valid React elements.\n */\nexport function isValidReactElement<P>(object: {} | null | undefined): object is ReactElement<P> {\n return React.isValidElement(object) || object?.['$$typeof'] === LazyReactComponentSymbol\n}\n", "'use client'\nimport type { ClientCollectionConfig, CodeFieldClient, DefaultCellComponentProps } from 'payload'\n\nimport React from 'react'\n\nimport './index.scss'\n\nexport interface CodeCellProps extends DefaultCellComponentProps<CodeFieldClient> {\n readonly collectionConfig: ClientCollectionConfig\n readonly nowrap?: boolean\n}\n\nexport const CodeCell: React.FC<CodeCellProps> = ({ cellData, nowrap }) => {\n const textToShow = cellData?.length > 100 ? `${cellData.substring(0, 100)}\\u2026` : cellData\n\n const noWrapStyle: React.CSSProperties = nowrap ? { whiteSpace: 'nowrap' } : {}\n\n return (\n <code className=\"code-cell\" style={noWrapStyle}>\n <span>{textToShow}</span>\n </code>\n )\n}\n", "'use client'\nimport type { ArrayFieldClient, DefaultCellComponentProps } from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport React from 'react'\n\nimport { useTranslation } from '../../../../../providers/Translation/index.js'\n\nexport interface ArrayCellProps extends DefaultCellComponentProps<ArrayFieldClient> {}\n\nexport const ArrayCell: React.FC<ArrayCellProps> = ({ cellData, field: { labels } }) => {\n const { i18n } = useTranslation()\n\n const arrayFields = cellData ?? []\n\n const label =\n arrayFields.length === 1\n ? `${arrayFields.length} ${getTranslation(labels?.singular || i18n.t('general:rows'), i18n)}`\n : `${arrayFields.length} ${getTranslation(labels?.plural || i18n.t('general:rows'), i18n)}`\n\n return <span>{label}</span>\n}\n", "'use client'\nimport type { BlocksFieldClient, DefaultCellComponentProps } from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport React from 'react'\n\nimport { useConfig } from '../../../../../providers/Config/index.js'\nimport { useTranslation } from '../../../../../providers/Translation/index.js'\n\nexport interface BlocksCellProps extends DefaultCellComponentProps<BlocksFieldClient> {}\n\nexport const BlocksCell: React.FC<BlocksCellProps> = ({\n cellData,\n field: { blockReferences, blocks, labels },\n}) => {\n const { i18n } = useTranslation()\n const { config } = useConfig()\n\n const selectedBlocks = Array.isArray(cellData) ? cellData.map(({ blockType }) => blockType) : []\n\n const translatedBlockLabels = (blockReferences ?? blocks)?.map((b) => {\n const block = typeof b === 'string' ? config.blocksMap[b] : b\n return {\n slug: block.slug,\n label: getTranslation(block.labels.singular, i18n),\n }\n })\n\n let label = `0 ${getTranslation(labels?.plural, i18n)}`\n\n const formatBlockList = (blocks) =>\n blocks\n .map((b) => {\n const filtered = translatedBlockLabels.filter((f) => f.slug === b)?.[0]\n return filtered?.label\n })\n .join(', ')\n\n const itemsToShow = 5\n\n if (selectedBlocks.length > itemsToShow) {\n const more = selectedBlocks.length - itemsToShow\n label = `${selectedBlocks.length} ${getTranslation(labels?.plural, i18n)} - ${i18n.t(\n 'fields:itemsAndMore',\n { count: more, items: formatBlockList(selectedBlocks.slice(0, itemsToShow)) },\n )}`\n } else if (selectedBlocks.length > 0) {\n label = `${selectedBlocks.length} ${getTranslation(\n selectedBlocks.length === 1 ? labels?.singular : labels?.plural,\n i18n,\n )} - ${formatBlockList(selectedBlocks)}`\n }\n\n return <span>{label}</span>\n}\n", "'use client'\nimport type { CheckboxFieldClient, DefaultCellComponentProps } from 'payload'\n\nimport React from 'react'\n\nimport { useTranslation } from '../../../../../providers/Translation/index.js'\nimport './index.scss'\n\nexport const CheckboxCell: React.FC<DefaultCellComponentProps<CheckboxFieldClient>> = ({\n cellData,\n}) => {\n const { t } = useTranslation()\n\n return (\n <code className=\"bool-cell\">\n <span>{t(`general:${cellData}`).toLowerCase()}</span>\n </code>\n )\n}\n", "'use client'\nimport type { DateFieldClient, DefaultCellComponentProps } from 'payload'\n\nimport { getObjectDotNotation } from 'payload/shared'\nimport React from 'react'\n\nimport { useConfig } from '../../../../../providers/Config/index.js'\nimport { useTranslation } from '../../../../../providers/Translation/index.js'\nimport { formatDate } from '../../../../../utilities/formatDocTitle/formatDateTitle.js'\n\nexport const DateCell: React.FC<\n DefaultCellComponentProps<{ accessor?: string } & DateFieldClient>\n> = (props) => {\n const {\n cellData,\n field: { name, accessor, admin: { date } = {}, timezone: timezoneFromField },\n rowData,\n } = props\n\n const {\n config: {\n admin: { dateFormat: dateFormatFromRoot },\n },\n } = useConfig()\n const { i18n } = useTranslation()\n\n const fieldPath = accessor || name\n\n const timezoneFieldName = `${fieldPath}_tz`\n const timezone =\n Boolean(timezoneFromField) && rowData\n ? getObjectDotNotation(rowData, timezoneFieldName, undefined)\n : undefined\n\n const dateFormat = date?.displayFormat || dateFormatFromRoot\n\n return (\n <span>\n {Boolean(cellData) && formatDate({ date: cellData, i18n, pattern: dateFormat, timezone })}\n </span>\n )\n}\n", "'use client'\nimport type {\n ClientCollectionConfig,\n DefaultCellComponentProps,\n TextFieldClient,\n UploadFieldClient,\n} from 'payload'\n\nimport { getBestFitFromSizes, isImage } from 'payload/shared'\nimport React from 'react'\n\nimport './index.scss'\nimport { Thumbnail } from '../../../../Thumbnail/index.js'\n\nconst baseClass = 'file'\n\nexport interface FileCellProps\n extends DefaultCellComponentProps<TextFieldClient | UploadFieldClient> {\n readonly collectionConfig: ClientCollectionConfig\n}\n\nexport const FileCell: React.FC<FileCellProps> = ({\n cellData: filename,\n collectionConfig,\n field,\n rowData,\n}) => {\n const fieldPreviewAllowed = 'displayPreview' in field ? field.displayPreview : undefined\n const previewAllowed = fieldPreviewAllowed ?? collectionConfig.upload?.displayPreview ?? true\n\n if (previewAllowed) {\n const isFileImage = isImage(rowData?.mimeType)\n let fileSrc: string | undefined = isFileImage\n ? rowData?.thumbnailURL || rowData?.url\n : rowData?.thumbnailURL\n\n if (isFileImage) {\n fileSrc = getBestFitFromSizes({\n sizes: rowData?.sizes,\n thumbnailURL: rowData?.thumbnailURL,\n url: rowData?.url,\n width: rowData?.width,\n })\n }\n\n return (\n <div className={baseClass}>\n <Thumbnail\n className={`${baseClass}__thumbnail`}\n collectionSlug={collectionConfig?.slug}\n doc={{\n ...rowData,\n filename,\n }}\n fileSrc={fileSrc}\n imageCacheTag={collectionConfig?.upload?.cacheTags && rowData?.updatedAt}\n size=\"small\"\n uploadConfig={collectionConfig?.upload}\n />\n <span className={`${baseClass}__filename`}>{String(filename)}</span>\n </div>\n )\n } else {\n return <>{String(filename)}</>\n }\n}\n", "'use client'\nimport React from 'react'\n\nimport './index.scss'\n\nconst baseClass = 'thumbnail'\n\nimport type { SanitizedCollectionConfig } from 'payload'\n\nimport { File } from '../../graphics/File/index.js'\nimport { ShimmerEffect } from '../ShimmerEffect/index.js'\n\nexport type ThumbnailProps = {\n className?: string\n collectionSlug?: string\n doc?: Record<string, unknown>\n fileSrc?: string\n height?: number\n imageCacheTag?: string\n size?: 'expand' | 'large' | 'medium' | 'none' | 'small'\n uploadConfig?: SanitizedCollectionConfig['upload']\n width?: number\n}\n\nexport const Thumbnail: React.FC<ThumbnailProps> = (props) => {\n const {\n className = '',\n doc: { filename } = {},\n fileSrc,\n height,\n imageCacheTag,\n size,\n width,\n } = props\n const [fileExists, setFileExists] = React.useState(undefined)\n\n const classNames = [baseClass, `${baseClass}--size-${size || 'medium'}`, className].join(' ')\n\n React.useEffect(() => {\n if (!fileSrc) {\n setFileExists(false)\n return\n }\n setFileExists(undefined)\n\n const img = new Image()\n img.src = fileSrc\n img.onload = () => {\n setFileExists(true)\n }\n img.onerror = () => {\n setFileExists(false)\n }\n }, [fileSrc])\n\n let src: null | string = null\n\n /**\n * If an imageCacheTag is provided, append it to the fileSrc\n * Check if the fileSrc already has a query string, if it does, append the imageCacheTag with an ampersand\n */\n if (fileSrc) {\n const queryChar = fileSrc?.includes('?') ? '&' : '?'\n src = imageCacheTag ? `${fileSrc}${queryChar}${encodeURIComponent(imageCacheTag)}` : fileSrc\n }\n\n return (\n <div className={classNames}>\n {fileExists === undefined && <ShimmerEffect height=\"100%\" />}\n {fileExists && <img alt={filename as string} height={height} src={src} width={width} />}\n {fileExists === false && <File />}\n </div>\n )\n}\n\ntype ThumbnailComponentProps = {\n readonly alt?: string\n readonly className?: string\n readonly filename: string\n readonly fileSrc: string\n readonly imageCacheTag?: string\n readonly size?: 'expand' | 'large' | 'medium' | 'none' | 'small'\n}\nexport function ThumbnailComponent(props: ThumbnailComponentProps) {\n const { alt, className = '', filename, fileSrc, imageCacheTag, size } = props\n const [fileExists, setFileExists] = React.useState(undefined)\n\n const classNames = [baseClass, `${baseClass}--size-${size || 'medium'}`, className].join(' ')\n\n React.useEffect(() => {\n if (!fileSrc) {\n setFileExists(false)\n return\n }\n setFileExists(undefined)\n\n const img = new Image()\n img.src = fileSrc\n img.onload = () => {\n setFileExists(true)\n }\n img.onerror = () => {\n setFileExists(false)\n }\n }, [fileSrc])\n\n let src: string = ''\n\n /**\n * If an imageCacheTag is provided, append it to the fileSrc\n * Check if the fileSrc already has a query string, if it does, append the imageCacheTag with an ampersand\n */\n if (fileSrc) {\n const queryChar = fileSrc?.includes('?') ? '&' : '?'\n src = imageCacheTag ? `${fileSrc}${queryChar}${encodeURIComponent(imageCacheTag)}` : fileSrc\n }\n\n return (\n <div className={classNames}>\n {fileExists === undefined && <ShimmerEffect height=\"100%\" />}\n {fileExists && <img alt={alt || filename} src={src} />}\n {fileExists === false && <File />}\n </div>\n )\n}\n", "import React from 'react'\n\nexport const File: React.FC = () => (\n <svg\n height=\"150\"\n style={{ backgroundColor: '#333333' }}\n viewBox=\"0 0 150 150\"\n width=\"150\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path d=\"M82.8876 50.5H55.5555V100.5H94.4444V61.9818H82.8876V50.5Z\" fill=\"white\" />\n <path d=\"M82.8876 61.9818H94.4444L82.8876 50.5V61.9818Z\" fill=\"#9A9A9A\" />\n </svg>\n)\n", "'use client'\nimport type { DefaultCellComponentProps, JSONFieldClient } from 'payload'\n\nimport React from 'react'\n\nimport { useTranslation } from '../../../../../providers/Translation/index.js'\nimport './index.scss'\nimport { stringifyTruncated } from '../../../../../utilities/stringifyTruncated.js'\n\nexport const JSONCell: React.FC<DefaultCellComponentProps<JSONFieldClient>> = ({ cellData }) => {\n const { t } = useTranslation()\n try {\n const cellDataString = stringifyTruncated(cellData, 100)\n return (\n <code className=\"json-cell\">\n <span>{cellDataString}</span>\n </code>\n )\n } catch (_ignore) {\n return (\n <code className=\"json-cell\">\n <span>{t('general:error')}</span>\n </code>\n )\n }\n}\n", "/**\n * Safely stringify a value and truncate it to a maximum length.\n *\n * Converts any value to a JSON string representation and truncates the resulting\n * string if it exceeds the maximum length. If truncation occurs, an ellipsis (…)\n * is appended to indicate incomplete output.\n *\n * @param value - The value to stringify (can be any type including objects, arrays, primitives)\n * @param maxLength - The maximum character length of the output string\n * @returns A JSON string representation, truncated with \"…\" if it exceeds maxLength\n */\nexport function stringifyTruncated(value: unknown, maxLength: number): string {\n const stringifiedJSON = JSON.stringify(value)\n const totalChars = stringifiedJSON.length\n\n // Only truncate if the string is significantly longer (>1.5x the max length)\n if (totalChars / maxLength > 1.5) {\n return `${stringifiedJSON.substring(0, maxLength)}\\u2026`\n }\n\n return stringifiedJSON\n}\n", "'use client'\nimport type {\n DefaultCellComponentProps,\n JoinFieldClient,\n RelationshipFieldClient,\n UploadFieldClient,\n} from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport React, { useEffect, useMemo, useState } from 'react'\n\nimport { useIntersect } from '../../../../../hooks/useIntersect.js'\nimport { useConfig } from '../../../../../providers/Config/index.js'\nimport { useTranslation } from '../../../../../providers/Translation/index.js'\nimport { canUseDOM } from '../../../../../utilities/canUseDOM.js'\nimport { formatDocTitle } from '../../../../../utilities/formatDocTitle/index.js'\nimport { useListRelationships } from '../../../RelationshipProvider/index.js'\nimport { FileCell } from '../File/index.js'\nimport './index.scss'\n\ntype Value = { relationTo: string; value: number | string }\nconst baseClass = 'relationship-cell'\nconst totalToShow = 3\n\nexport type RelationshipCellProps = DefaultCellComponentProps<\n JoinFieldClient | RelationshipFieldClient | UploadFieldClient\n>\n\nexport const RelationshipCell: React.FC<RelationshipCellProps> = ({\n cellData: cellDataFromProps,\n customCellProps: customCellContext,\n field,\n field: { label },\n}) => {\n // conditionally extract relationTo both both relationship and join fields\n const relationTo =\n ('relationTo' in field && field.relationTo) || ('collection' in field && field.collection)\n\n // conditionally extract docs from join fields\n const cellData = useMemo(() => {\n return 'collection' in field ? cellDataFromProps?.docs : cellDataFromProps\n }, [cellDataFromProps, field])\n\n const { config, getEntityConfig } = useConfig()\n const { collections } = config\n const [intersectionRef, entry] = useIntersect()\n const [values, setValues] = useState<Value[]>([])\n const { documents, getRelationships } = useListRelationships()\n const [hasRequested, setHasRequested] = useState(false)\n const { i18n, t } = useTranslation()\n\n const isAboveViewport = canUseDOM ? entry?.boundingClientRect?.top < window.innerHeight : false\n\n useEffect(() => {\n if ((cellData || typeof cellData === 'number') && isAboveViewport && !hasRequested) {\n const formattedValues: Value[] = []\n const arrayCellData = Array.isArray(cellData) ? cellData : [cellData]\n arrayCellData\n .slice(0, arrayCellData.length < totalToShow ? arrayCellData.length : totalToShow)\n .forEach((cell) => {\n if (typeof cell === 'object' && 'relationTo' in cell && 'value' in cell) {\n formattedValues.push(cell)\n }\n if (\n (typeof cell === 'number' || typeof cell === 'string') &&\n typeof relationTo === 'string'\n ) {\n formattedValues.push({\n relationTo,\n value: cell,\n })\n }\n })\n getRelationships(formattedValues)\n setHasRequested(true)\n setValues(formattedValues)\n }\n }, [cellData, relationTo, collections, isAboveViewport, hasRequested, getRelationships])\n\n useEffect(() => {\n if (hasRequested) {\n setHasRequested(false)\n }\n }, [cellData])\n\n return (\n <div className={baseClass} ref={intersectionRef}>\n {values.map(({ relationTo, value }, i) => {\n const document = documents[relationTo][value]\n const relatedCollection = getEntityConfig({\n collectionSlug: relationTo,\n })\n\n const label = formatDocTitle({\n collectionConfig: relatedCollection,\n data: document || null,\n dateFormat: config.admin.dateFormat,\n fallback: `${t('general:untitled')} - ID: ${value}`,\n i18n,\n })\n\n let fileField = null\n\n if (field.type === 'upload') {\n const fieldPreviewAllowed = 'displayPreview' in field ? field.displayPreview : undefined\n const previewAllowed =\n fieldPreviewAllowed ?? relatedCollection.upload?.displayPreview ?? true\n\n if (previewAllowed && document) {\n fileField = (\n <FileCell\n cellData={label}\n collectionConfig={relatedCollection}\n collectionSlug={relatedCollection.slug}\n customCellProps={customCellContext}\n field={field}\n rowData={document}\n />\n )\n }\n }\n\n return (\n <React.Fragment key={i}>\n {document === false && `${t('general:untitled')} - ID: ${value}`}\n {document === null && `${t('general:loading')}...`}\n {document ? fileField || label : null}\n {values.length > i + 1 && ', '}\n </React.Fragment>\n )\n })}\n {Array.isArray(cellData) &&\n cellData.length > totalToShow &&\n t('fields:itemsAndMore', { count: cellData.length - totalToShow, items: '' })}\n {values.length === 0 && t('general:noLabel', { label: getTranslation(label || '', i18n) })}\n </div>\n )\n}\n", "export const canUseDOM = !!(\n typeof window !== 'undefined' &&\n window.document &&\n window.document.createElement\n)\n", "'use client'\nimport type { DefaultCellComponentProps, OptionObject, SelectFieldClient } from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport { optionsAreObjects } from 'payload/shared'\nimport React from 'react'\n\nimport { useTranslation } from '../../../../../providers/Translation/index.js'\n\nexport interface SelectCellProps extends DefaultCellComponentProps<SelectFieldClient> {}\n\nexport const SelectCell: React.FC<SelectCellProps> = ({ cellData, field: { options } }) => {\n const { i18n } = useTranslation()\n\n const findLabel = (items: string[]) =>\n items\n .map((i) => {\n const found = (options as OptionObject[]).filter((f: OptionObject) => f.value === i)?.[0]\n ?.label\n return getTranslation(found, i18n)\n })\n .join(', ')\n\n let content = ''\n if (optionsAreObjects(options)) {\n content = Array.isArray(cellData)\n ? findLabel(cellData) // hasMany\n : findLabel([cellData])\n } else {\n content = Array.isArray(cellData)\n ? cellData.join(', ') // hasMany\n : cellData\n }\n\n return <span>{content}</span>\n}\n", "'use client'\nimport type { DefaultCellComponentProps, TextareaFieldClient } from 'payload'\n\nimport React from 'react'\n\nexport const TextareaCell: React.FC<DefaultCellComponentProps<TextareaFieldClient>> = ({\n cellData,\n}) => {\n const textToShow = cellData?.length > 100 ? `${cellData.substring(0, 100)}\\u2026` : cellData\n return <span>{textToShow}</span>\n}\n", "'use client'\nimport { ArrayCell } from './Array/index.js'\nimport { BlocksCell } from './Blocks/index.js'\nimport { CheckboxCell } from './Checkbox/index.js'\nimport { CodeCell } from './Code/index.js'\nimport { DateCell } from './Date/index.js'\nimport { FileCell } from './File/index.js'\nimport { JSONCell } from './JSON/index.js'\nimport { RelationshipCell } from './Relationship/index.js'\nimport { SelectCell } from './Select/index.js'\nimport { TextareaCell } from './Textarea/index.js'\n\nexport const cellComponents = {\n array: ArrayCell,\n blocks: BlocksCell,\n checkbox: CheckboxCell,\n code: CodeCell,\n date: DateCell,\n File: FileCell,\n join: RelationshipCell,\n json: JSONCell,\n radio: SelectCell,\n relationship: RelationshipCell,\n select: SelectCell,\n textarea: TextareaCell,\n upload: RelationshipCell,\n}\n", "'use client'\n\nimport React from 'react'\n\nimport { useListQuery } from '../../providers/ListQuery/index.js'\nimport { Pagination } from '../Pagination/index.js'\n\nexport const RelationshipTablePagination: React.FC = () => {\n const { data, handlePageChange } = useListQuery()\n\n return (\n <Pagination\n hasNextPage={data.hasNextPage}\n hasPrevPage={data.hasPrevPage}\n limit={data.limit}\n nextPage={data.nextPage || 2}\n numberOfNeighbors={1}\n onChange={(e) => {\n void handlePageChange(e)\n }}\n page={data.page || 1}\n prevPage={data.prevPage || undefined}\n totalPages={data.totalPages}\n />\n )\n}\n", "'use client'\nimport React from 'react'\n\nimport { ClickableArrow } from './ClickableArrow/index.js'\nimport './index.scss'\nimport { Page } from './Page/index.js'\nimport { Separator } from './Separator/index.js'\n\nconst nodeTypes = {\n ClickableArrow,\n Page,\n Separator,\n}\n\nconst baseClass = 'paginator'\n\nexport type PaginationProps = {\n hasNextPage?: boolean\n hasPrevPage?: boolean\n limit?: number\n nextPage?: number\n numberOfNeighbors?: number\n onChange?: (page: number) => void\n page?: number\n prevPage?: number\n totalPages?: number\n}\n\nexport type Node =\n | {\n props?: {\n direction?: 'left' | 'right'\n isDisabled?: boolean\n isFirstPage?: boolean\n isLastPage?: boolean\n page?: number\n updatePage: (page?: number) => void\n }\n type: 'ClickableArrow' | 'Page' | 'Separator'\n }\n | number\n\nexport const Pagination: React.FC<PaginationProps> = (props) => {\n const {\n hasNextPage = false,\n hasPrevPage = false,\n nextPage = null,\n numberOfNeighbors = 1,\n onChange,\n page: currentPage,\n prevPage = null,\n totalPages = null,\n } = props\n\n if (!hasPrevPage && !hasNextPage) {\n return null\n }\n\n const updatePage = (page) => {\n if (typeof onChange === 'function') {\n onChange(page)\n }\n }\n\n // Create array of integers for each page\n const pages = Array.from({ length: totalPages }, (_, index) => index + 1)\n\n // Assign indices for start and end of the range of pages that should be shown in paginator\n let rangeStartIndex = currentPage - 1 - numberOfNeighbors\n\n // Sanitize rangeStartIndex in case it is less than zero for safe split\n if (rangeStartIndex <= 0) {\n rangeStartIndex = 0\n }\n\n const rangeEndIndex = currentPage - 1 + numberOfNeighbors + 1\n\n // Slice out the range of pages that we want to render\n const nodes: Node[] = pages.slice(rangeStartIndex, rangeEndIndex)\n\n // Add prev separator if necessary\n if (currentPage - numberOfNeighbors - 1 >= 2) {\n nodes.unshift({ type: 'Separator' })\n }\n\n // Add first page if necessary\n if (currentPage > numberOfNeighbors + 1) {\n nodes.unshift({\n type: 'Page',\n props: {\n isFirstPage: true,\n page: 1,\n updatePage,\n },\n })\n }\n\n // Add next separator if necessary\n if (currentPage + numberOfNeighbors + 1 < totalPages) {\n nodes.push({ type: 'Separator' })\n }\n\n // Add last page if necessary\n if (rangeEndIndex < totalPages) {\n nodes.push({\n type: 'Page',\n props: {\n isLastPage: true,\n page: totalPages,\n updatePage,\n },\n })\n }\n\n // Add prev and next arrows based on necessity\n nodes.unshift({\n type: 'ClickableArrow',\n props: {\n direction: 'right',\n isDisabled: !hasNextPage,\n updatePage: () => updatePage(nextPage ?? currentPage + 1),\n },\n })\n\n nodes.unshift({\n type: 'ClickableArrow',\n props: {\n direction: 'left',\n isDisabled: !hasPrevPage,\n updatePage: () => updatePage(prevPage ?? Math.max(1, currentPage - 1)),\n },\n })\n\n return (\n <div className={baseClass}>\n {nodes.map((node, i) => {\n if (typeof node === 'number') {\n return (\n <Page isCurrent={currentPage === node} key={i} page={node} updatePage={updatePage} />\n )\n }\n\n const NodeType = nodeTypes[node.type]\n\n return <NodeType key={i} {...node.props} />\n })}\n </div>\n )\n}\n", "'use client'\nimport React from 'react'\n\nimport { ChevronIcon } from '../../../icons/Chevron/index.js'\nimport './index.scss'\n\nconst baseClass = 'clickable-arrow'\n\nexport type ClickableArrowProps = {\n direction?: 'left' | 'right'\n isDisabled?: boolean\n updatePage?: () => void\n}\n\nexport const ClickableArrow: React.FC<ClickableArrowProps> = (props) => {\n const { direction = 'right', isDisabled = false, updatePage } = props\n\n const classes = [\n baseClass,\n isDisabled && `${baseClass}--is-disabled`,\n direction && `${baseClass}--${direction}`,\n ]\n .filter(Boolean)\n .join(' ')\n\n return (\n <button\n className={classes}\n disabled={isDisabled}\n onClick={!isDisabled ? updatePage : undefined}\n type=\"button\"\n >\n <ChevronIcon />\n </button>\n )\n}\n", "'use client'\nimport React from 'react'\n\nexport type PageProps = {\n isCurrent?: boolean\n isFirstPage?: boolean\n isLastPage?: boolean\n page?: number\n updatePage?: (page) => void\n}\n\nconst baseClass = 'paginator__page'\n\nexport const Page: React.FC<PageProps> = ({\n isCurrent,\n isFirstPage = false,\n isLastPage = false,\n page = 1,\n updatePage,\n}) => {\n const classes = [\n baseClass,\n isCurrent && `${baseClass}--is-current`,\n isFirstPage && `${baseClass}--is-first-page`,\n isLastPage && `${baseClass}--is-last-page`,\n ]\n .filter(Boolean)\n .join(' ')\n\n return (\n <button className={classes} onClick={() => updatePage(page)} type=\"button\">\n {page}\n </button>\n )\n}\n", "'use client'\nimport React from 'react'\n\nexport const Separator: React.FC = () => <span className=\"paginator__separator\">&mdash;</span>\n", "'use client'\nimport type { JSONFieldClientComponent, JsonObject } from 'payload'\n\nimport { type OnMount } from '@monaco-editor/react'\nimport React, { useCallback, useEffect, useMemo, useState } from 'react'\nimport { v4 as uuidv4 } from 'uuid'\n\nimport { defaultOptions } from '../../elements/CodeEditor/constants.js'\nimport { CodeEditor } from '../../elements/CodeEditor/index.js'\nimport { RenderCustomComponent } from '../../elements/RenderCustomComponent/index.js'\nimport { useField } from '../../forms/useField/index.js'\nimport { withCondition } from '../../forms/withCondition/index.js'\nimport { FieldDescription } from '../FieldDescription/index.js'\nimport { FieldError } from '../FieldError/index.js'\nimport { FieldLabel } from '../FieldLabel/index.js'\nimport { mergeFieldStyles } from '../mergeFieldStyles.js'\nimport { fieldBaseClass } from '../shared/index.js'\nimport './index.scss'\n\nconst baseClass = 'json-field'\n\nconst JSONFieldComponent: JSONFieldClientComponent = (props) => {\n const {\n field,\n field: {\n admin: { className, description, editorOptions, maxHeight } = {},\n jsonSchema,\n label,\n localized,\n required,\n },\n path: pathFromProps,\n readOnly,\n validate,\n } = props\n\n const { insertSpaces = defaultOptions.insertSpaces, tabSize = defaultOptions.tabSize } =\n editorOptions || {}\n\n const formatJSON = useCallback(\n (value: JsonObject | undefined): string | undefined => {\n if (value === undefined) {\n return undefined\n }\n if (value === null) {\n return ''\n }\n return insertSpaces ? JSON.stringify(value, null, tabSize) : JSON.stringify(value, null, '\\t')\n },\n [tabSize, insertSpaces],\n )\n\n const [jsonError, setJsonError] = useState<string>()\n const inputChangeFromRef = React.useRef<'formState' | 'internalEditor'>('formState')\n const [recalculatedHeightAt, setRecalculatedHeightAt] = useState<number | undefined>(Date.now())\n\n const memoizedValidate = useCallback(\n (value, options) => {\n if (typeof validate === 'function') {\n return validate(value, { ...options, jsonError, required })\n }\n },\n [validate, required, jsonError],\n )\n\n const {\n customComponents: { AfterInput, BeforeInput, Description, Error, Label } = {},\n disabled,\n initialValue,\n path,\n setValue,\n showError,\n value,\n } = useField<JsonObject>({\n potentiallyStalePath: pathFromProps,\n validate: memoizedValidate,\n })\n\n const stringValueRef = React.useRef<string>(formatJSON(value ?? initialValue))\n\n const handleMount = useCallback<OnMount>(\n (editor, monaco) => {\n if (!jsonSchema) {\n return\n }\n\n monaco.languages.json.jsonDefaults.setDiagnosticsOptions({\n enableSchemaRequest: true,\n schemas: [\n ...(monaco.languages.json.jsonDefaults.diagnosticsOptions.schemas || []),\n jsonSchema,\n ],\n validate: true,\n })\n\n const uri = jsonSchema.uri\n const newUri = uri.includes('?')\n ? `${uri}&${crypto.randomUUID ? crypto.randomUUID() : uuidv4()}`\n : `${uri}?${crypto.randomUUID ? crypto.randomUUID() : uuidv4()}`\n\n editor.setModel(\n monaco.editor.createModel(formatJSON(value) || '', 'json', monaco.Uri.parse(newUri)),\n )\n },\n [jsonSchema, formatJSON, value],\n )\n\n const handleChange = useCallback(\n (val: string) => {\n if (readOnly || disabled) {\n return\n }\n inputChangeFromRef.current = 'internalEditor'\n\n try {\n setValue(val ? JSON.parse(val) : null)\n stringValueRef.current = val\n setJsonError(undefined)\n } catch (e) {\n setValue(val ? val : null)\n stringValueRef.current = val\n setJsonError(e)\n }\n },\n [readOnly, disabled, setValue],\n )\n\n useEffect(() => {\n if (inputChangeFromRef.current === 'formState') {\n const newStringValue = formatJSON(value ?? initialValue)\n if (newStringValue !== stringValueRef.current) {\n stringValueRef.current = newStringValue\n setRecalculatedHeightAt(Date.now())\n }\n }\n\n inputChangeFromRef.current = 'formState'\n }, [initialValue, path, formatJSON, value])\n\n const styles = useMemo(() => mergeFieldStyles(field), [field])\n\n return (\n <div\n className={[\n fieldBaseClass,\n baseClass,\n className,\n showError && 'error',\n (readOnly || disabled) && 'read-only',\n ]\n .filter(Boolean)\n .join(' ')}\n style={styles}\n >\n <RenderCustomComponent\n CustomComponent={Label}\n Fallback={\n <FieldLabel label={label} localized={localized} path={path} required={required} />\n }\n />\n <div className={`${fieldBaseClass}__wrap`}>\n <RenderCustomComponent\n CustomComponent={Error}\n Fallback={<FieldError message={jsonError} path={path} showError={showError} />}\n />\n {BeforeInput}\n <CodeEditor\n defaultLanguage=\"json\"\n maxHeight={maxHeight}\n onChange={handleChange}\n onMount={handleMount}\n options={editorOptions}\n readOnly={readOnly || disabled}\n recalculatedHeightAt={recalculatedHeightAt}\n value={stringValueRef.current}\n wrapperProps={{\n id: `field-${path?.replace(/\\./g, '__')}`,\n }}\n />\n {AfterInput}\n </div>\n <RenderCustomComponent\n CustomComponent={Description}\n Fallback={<FieldDescription description={description} path={path} />}\n />\n </div>\n )\n}\n\nexport const JSONField = withCondition(JSONFieldComponent)\n", "'use client'\nimport type { NumberFieldClientComponent, NumberFieldClientProps } from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport { isNumber } from 'payload/shared'\nimport React, { useCallback, useEffect, useMemo, useState } from 'react'\n\nimport type { Option } from '../../elements/ReactSelect/types.js'\n\nimport { ReactSelect } from '../../elements/ReactSelect/index.js'\nimport { RenderCustomComponent } from '../../elements/RenderCustomComponent/index.js'\nimport { useField } from '../../forms/useField/index.js'\nimport { withCondition } from '../../forms/withCondition/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { FieldDescription } from '../FieldDescription/index.js'\nimport { FieldError } from '../FieldError/index.js'\nimport { FieldLabel } from '../FieldLabel/index.js'\nimport { mergeFieldStyles } from '../mergeFieldStyles.js'\nimport './index.scss'\nimport { fieldBaseClass } from '../shared/index.js'\n\nconst NumberFieldComponent: NumberFieldClientComponent = (props) => {\n const {\n field,\n field: {\n admin: {\n className,\n description,\n placeholder: placeholderFromProps,\n step = 1,\n } = {} as NumberFieldClientProps['field']['admin'],\n hasMany = false,\n label,\n localized,\n max = Infinity,\n maxRows = Infinity,\n min = -Infinity,\n required,\n },\n onChange: onChangeFromProps,\n path: pathFromProps,\n readOnly,\n validate,\n } = props\n\n const { i18n, t } = useTranslation()\n\n const memoizedValidate = useCallback(\n (value, options) => {\n if (typeof validate === 'function') {\n return validate(value, { ...options, max, min, required })\n }\n },\n [validate, min, max, required],\n )\n\n const {\n customComponents: { AfterInput, BeforeInput, Description, Error, Label } = {},\n disabled,\n path,\n setValue,\n showError,\n value,\n } = useField<number | number[]>({\n potentiallyStalePath: pathFromProps,\n validate: memoizedValidate,\n })\n\n const handleChange = useCallback(\n (e) => {\n const val = parseFloat(e.target.value)\n let newVal = val\n\n if (Number.isNaN(val)) {\n newVal = null\n }\n\n if (typeof onChangeFromProps === 'function') {\n onChangeFromProps(newVal)\n }\n\n setValue(newVal)\n },\n [onChangeFromProps, setValue],\n )\n\n const [valueToRender, setValueToRender] = useState<\n { id: string; label: string; value: { value: number } }[]\n >([]) // Only for hasMany\n\n const handleHasManyChange = useCallback(\n (selectedOption) => {\n if (!(readOnly || disabled)) {\n let newValue\n if (!selectedOption) {\n newValue = []\n } else if (Array.isArray(selectedOption)) {\n newValue = selectedOption.map((option) => Number(option.value?.value || option.value))\n } else {\n newValue = [Number(selectedOption.value?.value || selectedOption.value)]\n }\n\n setValue(newValue)\n }\n },\n [readOnly, disabled, setValue],\n )\n\n // useEffect update valueToRender:\n useEffect(() => {\n if (hasMany && Array.isArray(value)) {\n setValueToRender(\n value.map((val, index) => {\n return {\n id: `${val}${index}`, // append index to avoid duplicate keys but allow duplicate numbers\n label: `${val}`,\n value: {\n toString: () => `${val}${index}`,\n value: (val as unknown as Record<string, number>)?.value || val,\n }, // You're probably wondering, why the hell is this done that way? Well, React-select automatically uses \"label-value\" as a key, so we will get that react duplicate key warning if we just pass in the value as multiple values can be the same. So we need to append the index to the toString() of the value to avoid that warning, as it uses that as the key.\n }\n }),\n )\n }\n }, [value, hasMany])\n\n const styles = useMemo(() => mergeFieldStyles(field), [field])\n\n const placeholder = getTranslation(placeholderFromProps, i18n)\n\n return (\n <div\n className={[\n fieldBaseClass,\n 'number',\n className,\n showError && 'error',\n (readOnly || disabled) && 'read-only',\n hasMany && 'has-many',\n ]\n .filter(Boolean)\n .join(' ')}\n style={styles}\n >\n <RenderCustomComponent\n CustomComponent={Label}\n Fallback={\n <FieldLabel label={label} localized={localized} path={path} required={required} />\n }\n />\n <div className={`${fieldBaseClass}__wrap`}>\n <RenderCustomComponent\n CustomComponent={Error}\n Fallback={<FieldError path={path} showError={showError} />}\n />\n {BeforeInput}\n {hasMany ? (\n <ReactSelect\n className={`field-${path.replace(/\\./g, '__')}`}\n disabled={readOnly || disabled}\n filterOption={(_, rawInput) => {\n const isOverHasMany = Array.isArray(value) && value.length >= maxRows\n return isNumber(rawInput) && !isOverHasMany\n }}\n isClearable\n isCreatable\n isMulti\n isSortable\n noOptionsMessage={() => {\n const isOverHasMany = Array.isArray(value) && value.length >= maxRows\n if (isOverHasMany) {\n return t('validation:limitReached', { max: maxRows, value: value.length + 1 })\n }\n return null\n }}\n // numberOnly\n onChange={handleHasManyChange}\n options={[]}\n placeholder={placeholder}\n showError={showError}\n value={valueToRender as Option[]}\n />\n ) : (\n <div>\n <input\n disabled={readOnly || disabled}\n id={`field-${path.replace(/\\./g, '__')}`}\n max={max}\n min={min}\n name={path}\n onChange={handleChange}\n onWheel={(e) => {\n // @ts-expect-error\n e.target.blur()\n }}\n placeholder={placeholder}\n step={step}\n type=\"number\"\n value={typeof value === 'number' ? value : ''}\n />\n </div>\n )}\n {AfterInput}\n <RenderCustomComponent\n CustomComponent={Description}\n Fallback={<FieldDescription description={description} path={path} />}\n />\n </div>\n </div>\n )\n}\n\nexport const NumberField = withCondition(NumberFieldComponent)\n", "'use client'\nimport type { PointFieldClientComponent, PointFieldValidation } from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport React, { useCallback, useMemo } from 'react'\n\nimport { RenderCustomComponent } from '../../elements/RenderCustomComponent/index.js'\nimport { FieldDescription } from '../../fields/FieldDescription/index.js'\nimport { FieldError } from '../../fields/FieldError/index.js'\nimport { FieldLabel } from '../../fields/FieldLabel/index.js'\nimport { useField } from '../../forms/useField/index.js'\nimport { withCondition } from '../../forms/withCondition/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { mergeFieldStyles } from '../mergeFieldStyles.js'\nimport './index.scss'\nimport { fieldBaseClass } from '../shared/index.js'\n\nconst baseClass = 'point'\n\nexport const PointFieldComponent: PointFieldClientComponent = (props) => {\n const {\n field,\n field: {\n admin: { className, description, placeholder, step } = {},\n label,\n localized,\n required,\n },\n path: pathFromProps,\n readOnly,\n validate,\n } = props\n\n const { i18n, t } = useTranslation()\n\n const memoizedValidate: PointFieldValidation = useCallback(\n (value, options) => {\n if (typeof validate === 'function') {\n return validate(value, { ...options, required })\n }\n },\n [validate, required],\n )\n\n const {\n customComponents: { AfterInput, BeforeInput, Description, Error, Label } = {},\n disabled,\n path,\n setValue,\n showError,\n value = [null, null],\n } = useField<[number, number]>({\n potentiallyStalePath: pathFromProps,\n validate: memoizedValidate,\n })\n\n const handleChange = useCallback(\n (e, index: 0 | 1) => {\n let val = parseFloat(e.target.value)\n if (Number.isNaN(val)) {\n val = e.target.value\n }\n const coordinates = [...value]\n coordinates[index] = val\n setValue(coordinates)\n },\n [setValue, value],\n )\n\n const getCoordinateFieldLabel = (type: 'latitude' | 'longitude') => {\n const suffix = type === 'longitude' ? t('fields:longitude') : t('fields:latitude')\n const fieldLabel = label ? getTranslation(label, i18n) : ''\n\n return `${fieldLabel}${fieldLabel ? ' - ' : ''}${suffix}`\n }\n\n const styles = useMemo(() => mergeFieldStyles(field), [field])\n\n return (\n <div\n className={[\n fieldBaseClass,\n baseClass,\n className,\n showError && 'error',\n (readOnly || disabled) && 'read-only',\n ]\n .filter(Boolean)\n .join(' ')}\n style={styles}\n >\n <ul className={`${baseClass}__wrap`}>\n <li>\n <RenderCustomComponent\n CustomComponent={Label}\n Fallback={\n <FieldLabel\n label={getCoordinateFieldLabel('longitude')}\n localized={localized}\n path={path}\n required={required}\n />\n }\n />\n <div className=\"input-wrapper\">\n {BeforeInput}\n {/* disable eslint rule because the label is dynamic */}\n {/* eslint-disable-next-line jsx-a11y/control-has-associated-label */}\n <input\n disabled={readOnly || disabled}\n id={`field-longitude-${path?.replace(/\\./g, '__')}`}\n name={`${path}.longitude`}\n onChange={(e) => handleChange(e, 0)}\n placeholder={getTranslation(placeholder, i18n)}\n step={step}\n type=\"number\"\n value={value && typeof value[0] === 'number' ? value[0] : ''}\n />\n {AfterInput}\n </div>\n </li>\n <li>\n <RenderCustomComponent\n CustomComponent={Label}\n Fallback={\n <FieldLabel\n label={getCoordinateFieldLabel('latitude')}\n localized={localized}\n path={path}\n required={required}\n />\n }\n />\n <div className=\"input-wrapper\">\n <RenderCustomComponent\n CustomComponent={Error}\n Fallback={<FieldError path={path} showError={showError} />}\n />\n {BeforeInput}\n {/* disable eslint rule because the label is dynamic */}\n {/* eslint-disable-next-line jsx-a11y/control-has-associated-label */}\n <input\n disabled={readOnly || disabled}\n id={`field-latitude-${path?.replace(/\\./g, '__')}`}\n name={`${path}.latitude`}\n onChange={(e) => handleChange(e, 1)}\n placeholder={getTranslation(placeholder, i18n)}\n step={step}\n type=\"number\"\n value={value && typeof value[1] === 'number' ? value[1] : ''}\n />\n {AfterInput}\n </div>\n </li>\n </ul>\n <RenderCustomComponent\n CustomComponent={Description}\n Fallback={<FieldDescription description={description} path={path} />}\n />\n </div>\n )\n}\n\nexport const PointField = withCondition(PointFieldComponent)\n", "'use client'\nimport type { RadioFieldClientComponent, RadioFieldClientProps } from 'payload'\n\nimport { optionIsObject } from 'payload/shared'\nimport React, { useCallback, useMemo } from 'react'\n\nimport { RenderCustomComponent } from '../../elements/RenderCustomComponent/index.js'\nimport { FieldDescription } from '../../fields/FieldDescription/index.js'\nimport { FieldError } from '../../fields/FieldError/index.js'\nimport { FieldLabel } from '../../fields/FieldLabel/index.js'\nimport { useForm } from '../../forms/Form/context.js'\nimport { useField } from '../../forms/useField/index.js'\nimport { withCondition } from '../../forms/withCondition/index.js'\nimport { mergeFieldStyles } from '../mergeFieldStyles.js'\nimport './index.scss'\nimport { fieldBaseClass } from '../shared/index.js'\nimport { Radio } from './Radio/index.js'\n\nconst baseClass = 'radio-group'\n\nconst RadioGroupFieldComponent: RadioFieldClientComponent = (props) => {\n const {\n disableModifyingForm: disableModifyingFormFromProps,\n field,\n field: {\n admin: {\n className,\n description,\n layout = 'horizontal',\n } = {} as RadioFieldClientProps['field']['admin'],\n label,\n localized,\n options = [],\n required,\n } = {} as RadioFieldClientProps['field'],\n onChange: onChangeFromProps,\n path: pathFromProps,\n readOnly,\n validate,\n value: valueFromProps,\n } = props\n\n const { uuid } = useForm()\n\n const memoizedValidate = useCallback(\n (value, validationOptions) => {\n if (typeof validate === 'function') {\n return validate(value, { ...validationOptions, options, required })\n }\n },\n [validate, options, required],\n )\n\n const {\n customComponents: { AfterInput, BeforeInput, Description, Error, Label } = {},\n disabled,\n path,\n setValue,\n showError,\n value: valueFromContext,\n } = useField<string>({\n potentiallyStalePath: pathFromProps,\n validate: memoizedValidate,\n })\n\n const value = valueFromContext || valueFromProps\n\n const styles = useMemo(() => mergeFieldStyles(field), [field])\n\n return (\n <div\n className={[\n fieldBaseClass,\n baseClass,\n className,\n `${baseClass}--layout-${layout}`,\n showError && 'error',\n (readOnly || disabled) && `${baseClass}--read-only`,\n ]\n .filter(Boolean)\n .join(' ')}\n style={styles}\n >\n <RenderCustomComponent\n CustomComponent={Error}\n Fallback={<FieldError path={path} showError={showError} />}\n />\n <RenderCustomComponent\n CustomComponent={Label}\n Fallback={\n <FieldLabel label={label} localized={localized} path={path} required={required} />\n }\n />\n <div className={`${fieldBaseClass}__wrap`}>\n {BeforeInput}\n <ul className={`${baseClass}--group`} id={`field-${path.replace(/\\./g, '__')}`}>\n {options.map((option) => {\n let optionValue = ''\n\n if (optionIsObject(option)) {\n optionValue = option.value\n } else {\n optionValue = option\n }\n\n const isSelected = String(optionValue) === String(value)\n\n const id = `field-${path}-${optionValue}${uuid ? `-${uuid}` : ''}`\n\n return (\n <li key={`${path} - ${optionValue}`}>\n <Radio\n id={id}\n isSelected={isSelected}\n onChange={() => {\n if (typeof onChangeFromProps === 'function') {\n onChangeFromProps(optionValue)\n }\n\n if (!(readOnly || disabled)) {\n setValue(optionValue, !!disableModifyingFormFromProps)\n }\n }}\n option={optionIsObject(option) ? option : { label: option, value: option }}\n path={path}\n readOnly={readOnly || disabled}\n uuid={uuid}\n />\n </li>\n )\n })}\n </ul>\n {AfterInput}\n <RenderCustomComponent\n CustomComponent={Description}\n Fallback={<FieldDescription description={description} path={path} />}\n />\n </div>\n </div>\n )\n}\n\nexport const RadioGroupField: any = withCondition(RadioGroupFieldComponent)\n", "'use client'\nimport type { OptionObject, RadioFieldClientProps } from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport React from 'react'\n\nimport { useEditDepth } from '../../../providers/EditDepth/index.js'\nimport { useTranslation } from '../../../providers/Translation/index.js'\nimport './index.scss'\n\nconst baseClass = 'radio-input'\n\nexport const Radio: React.FC<{\n id: string\n isSelected: boolean\n onChange: RadioFieldClientProps['onChange']\n option: OptionObject\n path: string\n readOnly?: boolean\n uuid?: string\n}> = (props) => {\n const { isSelected, onChange, option, path, readOnly, uuid } = props\n const { i18n } = useTranslation()\n\n const editDepth = useEditDepth()\n\n const id = `field-${path}-${option.value}${editDepth > 1 ? `-${editDepth}` : ''}${uuid ? `-${uuid}` : ''}`\n\n return (\n <label htmlFor={id}>\n <div\n className={[baseClass, isSelected && `${baseClass}--is-selected`].filter(Boolean).join(' ')}\n >\n <input\n checked={isSelected}\n disabled={readOnly}\n id={id}\n name={path}\n onChange={() => (typeof onChange === 'function' ? onChange(option.value) : null)}\n type=\"radio\"\n />\n <span\n className={[\n `${baseClass}__styled-radio`,\n readOnly && `${baseClass}__styled-radio--disabled`,\n ]\n .filter(Boolean)\n .join(' ')}\n />\n <span className={`${baseClass}__label`}>{getTranslation(option.label, i18n)}</span>\n </div>\n </label>\n )\n}\n", "'use client'\nimport type { RelationshipFieldClientComponent, ValueWithRelation } from 'payload'\n\nimport React, { useCallback, useMemo } from 'react'\n\nimport type { Value } from './types.js'\n\nimport { useField } from '../../forms/useField/index.js'\nimport { withCondition } from '../../forms/withCondition/index.js'\nimport { mergeFieldStyles } from '../mergeFieldStyles.js'\nimport { RelationshipInput } from './Input.js'\nimport './index.scss'\n\nexport { RelationshipInput }\n\nconst RelationshipFieldComponent: RelationshipFieldClientComponent = (props) => {\n const {\n field,\n field: {\n admin: {\n allowCreate = true,\n allowEdit = true,\n appearance = 'select',\n className,\n description,\n isSortable = true,\n placeholder,\n sortOptions,\n } = {},\n hasMany,\n label,\n localized,\n relationTo: relationToProp,\n required,\n },\n path: pathFromProps,\n readOnly,\n validate,\n } = props\n\n const memoizedValidate = useCallback(\n (value, validationOptions) => {\n if (typeof validate === 'function') {\n return validate(value, { ...validationOptions, required })\n }\n },\n [validate, required],\n )\n\n const {\n customComponents: { AfterInput, BeforeInput, Description, Error, Label } = {},\n disabled,\n filterOptions,\n initialValue,\n path,\n setValue,\n showError,\n value,\n } = useField<Value>({\n potentiallyStalePath: pathFromProps,\n validate: memoizedValidate,\n })\n\n const styles = useMemo(() => mergeFieldStyles(field), [field])\n const isPolymorphic = Array.isArray(relationToProp)\n const [relationTo] = React.useState(() =>\n Array.isArray(relationToProp) ? relationToProp : [relationToProp],\n )\n\n const handleChangeHasMulti = useCallback(\n (newValue: ValueWithRelation[]) => {\n if (!newValue) {\n setValue(null, newValue === value)\n return\n }\n\n let disableFormModification = false\n if (isPolymorphic) {\n disableFormModification =\n Array.isArray(value) &&\n Array.isArray(newValue) &&\n value.length === newValue.length &&\n (value as ValueWithRelation[]).every((val, idx) => {\n const newVal = newValue[idx]\n return val.value === newVal.value && val.relationTo === newVal.relationTo\n })\n } else {\n disableFormModification =\n Array.isArray(value) &&\n Array.isArray(newValue) &&\n value.length === newValue.length &&\n value.every((val, idx) => val === newValue[idx].value)\n }\n\n const dataToSet = newValue.map((val) => {\n if (isPolymorphic) {\n return val\n } else {\n return val.value\n }\n })\n\n setValue(dataToSet, disableFormModification)\n },\n [isPolymorphic, setValue, value],\n )\n\n const handleChangeSingle = useCallback(\n (newValue: ValueWithRelation) => {\n if (!newValue) {\n setValue(null, newValue === value)\n return\n }\n\n let disableFormModification = false\n if (isPolymorphic) {\n disableFormModification =\n value &&\n newValue &&\n (value as ValueWithRelation).value === newValue.value &&\n (value as ValueWithRelation).relationTo === newValue.relationTo\n } else {\n disableFormModification = value && newValue && value === newValue.value\n }\n\n const dataToSet = isPolymorphic ? newValue : newValue.value\n setValue(dataToSet, disableFormModification)\n },\n [isPolymorphic, setValue, value],\n )\n\n const memoizedValue: ValueWithRelation | ValueWithRelation[] = React.useMemo(() => {\n if (hasMany === true) {\n return (\n Array.isArray(value)\n ? value.map((val) => {\n return isPolymorphic\n ? val\n : {\n relationTo: Array.isArray(relationTo) ? relationTo[0] : relationTo,\n value: val,\n }\n })\n : value\n ) as ValueWithRelation[]\n } else {\n return (\n value\n ? isPolymorphic\n ? value\n : {\n relationTo: Array.isArray(relationTo) ? relationTo[0] : relationTo,\n value,\n }\n : value\n ) as ValueWithRelation\n }\n }, [hasMany, value, isPolymorphic, relationTo])\n\n const memoizedInitialValue: ValueWithRelation | ValueWithRelation[] = React.useMemo(() => {\n if (hasMany === true) {\n return (\n Array.isArray(initialValue)\n ? initialValue.map((val) => {\n return isPolymorphic\n ? val\n : {\n relationTo: Array.isArray(relationTo) ? relationTo[0] : relationTo,\n value: val,\n }\n })\n : initialValue\n ) as ValueWithRelation[]\n } else {\n return (\n initialValue\n ? isPolymorphic\n ? initialValue\n : {\n relationTo: Array.isArray(relationTo) ? relationTo[0] : relationTo,\n value: initialValue,\n }\n : initialValue\n ) as ValueWithRelation\n }\n }, [initialValue, isPolymorphic, relationTo, hasMany])\n\n return (\n <RelationshipInput\n AfterInput={AfterInput}\n allowCreate={allowCreate}\n allowEdit={allowEdit}\n appearance={appearance}\n BeforeInput={BeforeInput}\n className={className}\n Description={Description}\n description={description}\n Error={Error}\n filterOptions={filterOptions}\n formatDisplayedOptions={\n isPolymorphic ? undefined : (options) => options.map((opt) => opt.options).flat()\n }\n isSortable={isSortable}\n Label={Label}\n label={label}\n localized={localized}\n maxResultsPerRequest={10}\n maxRows={field?.maxRows}\n minRows={field?.minRows}\n path={path}\n placeholder={placeholder}\n readOnly={readOnly || disabled}\n relationTo={relationTo}\n required={required}\n showError={showError}\n sortOptions={sortOptions as any}\n style={styles}\n {...(hasMany === true\n ? {\n hasMany: true,\n initialValue: memoizedInitialValue as ValueWithRelation[],\n onChange: handleChangeHasMulti,\n value: memoizedValue as ValueWithRelation[],\n }\n : {\n hasMany: false,\n initialValue: memoizedInitialValue as ValueWithRelation,\n onChange: handleChangeSingle,\n value: memoizedValue as ValueWithRelation,\n })}\n />\n )\n}\n\nexport const RelationshipField = withCondition(RelationshipFieldComponent)\n", "'use client'\nimport type {\n DocumentEvent,\n FilterOptionsResult,\n PaginatedDocs,\n ValueWithRelation,\n Where,\n} from 'payload'\n\nimport { dequal } from 'dequal/lite'\nimport { formatAdminURL, wordBoundariesRegex } from 'payload/shared'\nimport * as qs from 'qs-esm'\nimport React, { useCallback, useEffect, useMemo, useReducer, useRef, useState } from 'react'\n\nimport type { DocumentDrawerProps } from '../../elements/DocumentDrawer/types.js'\nimport type { ListDrawerProps } from '../../elements/ListDrawer/types.js'\nimport type { ReactSelectAdapterProps } from '../../elements/ReactSelect/types.js'\nimport type { HasManyValueUnion, Option, RelationshipInputProps, UpdateResults } from './types.js'\n\nimport { AddNewRelation } from '../../elements/AddNewRelation/index.js'\nimport { useDocumentDrawer } from '../../elements/DocumentDrawer/index.js'\nimport { useListDrawer } from '../../elements/ListDrawer/index.js'\nimport { ReactSelect } from '../../elements/ReactSelect/index.js'\nimport { RenderCustomComponent } from '../../elements/RenderCustomComponent/index.js'\nimport { FieldDescription } from '../../fields/FieldDescription/index.js'\nimport { FieldError } from '../../fields/FieldError/index.js'\nimport { FieldLabel } from '../../fields/FieldLabel/index.js'\nimport { useDebouncedCallback } from '../../hooks/useDebouncedCallback.js'\nimport { useEffectEvent } from '../../hooks/useEffectEvent.js'\nimport { useQueue } from '../../hooks/useQueue.js'\nimport { useAuth } from '../../providers/Auth/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useDocumentEvents } from '../../providers/DocumentEvents/index.js'\nimport { useLocale } from '../../providers/Locale/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { sanitizeFilterOptionsQuery } from '../../utilities/sanitizeFilterOptionsQuery.js'\nimport { fieldBaseClass } from '../shared/index.js'\nimport { createRelationMap } from './createRelationMap.js'\nimport { findOptionsByValue } from './findOptionsByValue.js'\nimport { optionsReducer } from './optionsReducer.js'\nimport './index.scss'\nimport { MultiValueLabel } from './select-components/MultiValueLabel/index.js'\nimport { SingleValue } from './select-components/SingleValue/index.js'\n\nconst baseClass = 'relationship'\n\nexport const RelationshipInput: React.FC<RelationshipInputProps> = (props) => {\n const {\n AfterInput,\n allowCreate = true,\n allowEdit = true,\n appearance = 'select',\n BeforeInput,\n className,\n description,\n Description,\n Error,\n filterOptions,\n formatDisplayedOptions,\n hasMany,\n initialValue,\n isSortable = true,\n label,\n Label,\n localized,\n maxResultsPerRequest = 10,\n onChange,\n path,\n placeholder,\n readOnly,\n relationTo,\n required,\n showError,\n sortOptions,\n style,\n value,\n } = props\n\n const { config, getEntityConfig } = useConfig()\n\n const {\n routes: { api },\n serverURL,\n } = config\n\n const { i18n, t } = useTranslation()\n const { permissions } = useAuth()\n const { code: locale } = useLocale()\n\n const [currentlyOpenRelationship, setCurrentlyOpenRelationship] = useState<\n Parameters<ReactSelectAdapterProps['customProps']['onDocumentOpen']>[0]\n >({\n id: undefined,\n collectionSlug: undefined,\n hasReadPermission: false,\n })\n\n const [lastFullyLoadedRelation, setLastFullyLoadedRelation] = useState(-1)\n const [lastLoadedPage, setLastLoadedPage] = useState<Record<string, number>>({})\n const [errorLoading, setErrorLoading] = useState('')\n const [search, setSearch] = useState('')\n const [isLoading, setIsLoading] = useState(false)\n const [enableWordBoundarySearch, setEnableWordBoundarySearch] = useState(false)\n const [menuIsOpen, setMenuIsOpen] = useState(false)\n const hasLoadedFirstPageRef = useRef(false)\n const { queueTask } = useQueue()\n\n const [options, dispatchOptions] = useReducer(optionsReducer, [])\n\n const valueRef = useRef(value)\n\n const [DocumentDrawer, , { drawerSlug, isDrawerOpen, openDrawer }] = useDocumentDrawer({\n id: currentlyOpenRelationship.id,\n collectionSlug: currentlyOpenRelationship.collectionSlug,\n })\n\n // Filter selected values from displaying in the list drawer\n const listDrawerFilterOptions = useMemo<FilterOptionsResult>(() => {\n let newFilterOptions = filterOptions\n\n if (value) {\n const valuesByRelation = (hasMany === false ? [value] : value).reduce((acc, val) => {\n if (!acc[val.relationTo]) {\n acc[val.relationTo] = []\n }\n acc[val.relationTo].push(val.value)\n return acc\n }, {})\n\n ;(Array.isArray(relationTo) ? relationTo : [relationTo]).forEach((relation) => {\n newFilterOptions = {\n ...(newFilterOptions || {}),\n [relation]: {\n ...(typeof filterOptions?.[relation] === 'object' ? filterOptions[relation] : {}),\n ...(valuesByRelation[relation]\n ? {\n id: {\n not_in: valuesByRelation[relation],\n },\n }\n : {}),\n },\n }\n })\n }\n\n return newFilterOptions\n }, [filterOptions, value, hasMany, relationTo])\n\n const [\n ListDrawer,\n ,\n { closeDrawer: closeListDrawer, isDrawerOpen: isListDrawerOpen, openDrawer: openListDrawer },\n ] = useListDrawer({\n collectionSlugs: relationTo,\n filterOptions: listDrawerFilterOptions,\n })\n\n const onListSelect = useCallback<NonNullable<ListDrawerProps['onSelect']>>(\n ({ collectionSlug, doc }) => {\n if (hasMany) {\n onChange([\n ...(Array.isArray(value) ? value : []),\n {\n relationTo: collectionSlug,\n value: doc.id,\n },\n ])\n } else if (hasMany === false) {\n onChange({\n relationTo: collectionSlug,\n value: doc.id,\n })\n }\n\n closeListDrawer()\n },\n [hasMany, onChange, closeListDrawer, value],\n )\n\n const openDrawerWhenRelationChanges = useRef(false)\n\n const updateResults: UpdateResults = useCallback(\n ({\n filterOptions,\n hasMany: hasManyArg,\n lastFullyLoadedRelation: lastFullyLoadedRelationArg,\n lastLoadedPage: lastLoadedPageArg,\n onSuccess,\n search: searchArg,\n sort,\n value: valueArg,\n }) => {\n if (!permissions) {\n return\n }\n queueTask(async () => {\n const lastFullyLoadedRelationToUse =\n typeof lastFullyLoadedRelationArg !== 'undefined' ? lastFullyLoadedRelationArg : -1\n\n const relations = Array.isArray(relationTo) ? relationTo : [relationTo]\n const relationsToFetch =\n lastFullyLoadedRelationToUse === -1\n ? relations\n : relations.slice(lastFullyLoadedRelationToUse + 1)\n\n let resultsFetched = 0\n const relationMap = createRelationMap(\n hasManyArg === true\n ? {\n hasMany: true,\n relationTo,\n value: valueArg,\n }\n : {\n hasMany: false,\n relationTo,\n value: valueArg,\n },\n )\n\n if (!errorLoading) {\n await relationsToFetch.reduce(async (priorRelation, relation) => {\n const relationFilterOption = filterOptions?.[relation]\n\n let lastLoadedPageToUse\n if (search !== searchArg) {\n lastLoadedPageToUse = 1\n } else {\n lastLoadedPageToUse = (lastLoadedPageArg[relation] || 0) + 1\n }\n await priorRelation\n\n if (relationFilterOption === false) {\n setLastFullyLoadedRelation(relations.indexOf(relation))\n return Promise.resolve()\n }\n\n if (resultsFetched < 10) {\n const collection = getEntityConfig({ collectionSlug: relation })\n const fieldToSearch = collection?.admin?.useAsTitle || 'id'\n let fieldToSort = collection?.defaultSort || 'id'\n if (typeof sortOptions === 'string') {\n fieldToSort = sortOptions\n } else if (sortOptions?.[relation]) {\n fieldToSort = sortOptions[relation]\n }\n\n const query: {\n [key: string]: unknown\n where: Where\n } = {\n depth: 0,\n draft: true,\n limit: maxResultsPerRequest,\n locale,\n page: lastLoadedPageToUse,\n select: {\n [fieldToSearch]: true,\n },\n sort: fieldToSort,\n where: {\n and: [\n {\n id: {\n not_in: relationMap[relation],\n },\n },\n ],\n },\n }\n\n if (searchArg) {\n query.where.and.push({\n [fieldToSearch]: {\n like: searchArg,\n },\n })\n }\n\n if (relationFilterOption && typeof relationFilterOption !== 'boolean') {\n query.where.and.push(relationFilterOption)\n }\n\n sanitizeFilterOptionsQuery(query.where)\n\n const response = await fetch(\n formatAdminURL({\n apiRoute: api,\n path: `/${relation}`,\n }),\n {\n body: qs.stringify(query),\n credentials: 'include',\n headers: {\n 'Accept-Language': i18n.language,\n 'Content-Type': 'application/x-www-form-urlencoded',\n 'X-Payload-HTTP-Method-Override': 'GET',\n },\n method: 'POST',\n },\n )\n\n if (response.ok) {\n const data: PaginatedDocs<unknown> = await response.json()\n setLastLoadedPage((prevState) => {\n return {\n ...prevState,\n [relation]: lastLoadedPageToUse,\n }\n })\n\n if (!data.nextPage) {\n setLastFullyLoadedRelation(relations.indexOf(relation))\n }\n\n if (data.docs.length > 0) {\n resultsFetched += data.docs.length\n\n dispatchOptions({\n type: 'ADD',\n collection,\n config,\n docs: data.docs,\n i18n,\n sort,\n })\n }\n } else if (response.status === 403) {\n setLastFullyLoadedRelation(relations.indexOf(relation))\n dispatchOptions({\n type: 'ADD',\n collection,\n config,\n docs: [],\n i18n,\n ids: relationMap[relation],\n sort,\n })\n } else {\n setErrorLoading(t('error:unspecific'))\n }\n }\n }, Promise.resolve())\n\n if (typeof onSuccess === 'function') {\n onSuccess()\n }\n }\n })\n },\n [\n permissions,\n queueTask,\n relationTo,\n errorLoading,\n search,\n getEntityConfig,\n sortOptions,\n maxResultsPerRequest,\n locale,\n api,\n i18n,\n config,\n t,\n ],\n )\n\n const updateSearch = useDebouncedCallback<{ search: string } & HasManyValueUnion>(\n ({ hasMany: hasManyArg, search: searchArg, value }) => {\n updateResultsEffectEvent({\n filterOptions,\n lastLoadedPage: {},\n onSuccess: () => {\n setIsLoading(false)\n },\n search: searchArg,\n sort: true,\n ...(hasManyArg === true\n ? {\n hasMany: hasManyArg,\n value,\n }\n : {\n hasMany: hasManyArg,\n value,\n }),\n })\n setSearch(searchArg)\n },\n 300,\n )\n\n const handleInputChange = useCallback(\n (options: { search: string } & HasManyValueUnion) => {\n if (search !== options.search) {\n setIsLoading(true)\n setLastLoadedPage({})\n updateSearch(options)\n }\n },\n [search, updateSearch],\n )\n\n const handleValueChange = useEffectEvent(({ hasMany: hasManyArg, value }: HasManyValueUnion) => {\n const relationMap = createRelationMap(\n hasManyArg === true\n ? {\n hasMany: hasManyArg,\n relationTo,\n value,\n }\n : {\n hasMany: hasManyArg,\n relationTo,\n value,\n },\n )\n\n void Object.entries(relationMap).reduce(async (priorRelation, [relation, ids]) => {\n await priorRelation\n\n const idsToLoad = ids.filter((id) => {\n return !options.find((optionGroup) =>\n optionGroup?.options?.find(\n (option) => option.value === id && option.relationTo === relation,\n ),\n )\n })\n\n if (idsToLoad.length > 0) {\n const collection = getEntityConfig({ collectionSlug: relation })\n const fieldToSelect = collection?.admin?.useAsTitle || 'id'\n\n const query = {\n depth: 0,\n draft: true,\n limit: idsToLoad.length,\n locale,\n select: {\n [fieldToSelect]: true,\n },\n where: {\n id: {\n in: idsToLoad,\n },\n },\n }\n\n if (!errorLoading) {\n const response = await fetch(\n formatAdminURL({\n apiRoute: api,\n path: `/${relation}`,\n }),\n {\n body: qs.stringify(query),\n credentials: 'include',\n headers: {\n 'Accept-Language': i18n.language,\n 'Content-Type': 'application/x-www-form-urlencoded',\n 'X-Payload-HTTP-Method-Override': 'GET',\n },\n method: 'POST',\n },\n )\n let docs = []\n\n if (response.ok) {\n const data = await response.json()\n docs = data.docs\n }\n\n dispatchOptions({\n type: 'ADD',\n collection,\n config,\n docs,\n i18n,\n ids: idsToLoad,\n sort: true,\n })\n }\n }\n }, Promise.resolve())\n })\n\n const { mostRecentUpdate } = useDocumentEvents()\n\n const handleDocumentUpdateEvent = useEffectEvent((mostRecentUpdate: DocumentEvent) => {\n if (!value) {\n return false\n }\n\n const docID = mostRecentUpdate.doc.id\n\n let isMatchingUpdate = false\n if (mostRecentUpdate.operation === 'update') {\n if (hasMany === true) {\n const currentValue = Array.isArray(value) ? value : [value]\n isMatchingUpdate = currentValue.some((option) => {\n return option.value === docID && option.relationTo === mostRecentUpdate.entitySlug\n })\n } else if (hasMany === false) {\n isMatchingUpdate =\n value?.value === docID && value?.relationTo === mostRecentUpdate.entitySlug\n }\n } else if (mostRecentUpdate.operation === 'create') {\n // \"Create New\" drawer operations on the same level as this drawer should\n // set the value to the newly created document.\n // See test \"should create document within document drawer > has one\"\n isMatchingUpdate = mostRecentUpdate.drawerSlug === drawerSlug\n }\n\n if (!isMatchingUpdate) {\n return\n }\n\n const collectionConfig = getEntityConfig({ collectionSlug: mostRecentUpdate.entitySlug })\n\n dispatchOptions({\n type: 'UPDATE',\n collection: collectionConfig,\n config,\n doc: mostRecentUpdate.doc,\n i18n,\n })\n\n if (hasMany) {\n const currentValue = value ? (Array.isArray(value) ? value : [value]) : []\n\n const valuesToSet = currentValue.map((option: ValueWithRelation) => {\n return {\n relationTo: option.value === docID ? mostRecentUpdate.entitySlug : option.relationTo,\n value: option.value,\n }\n })\n\n onChange(valuesToSet)\n } else if (hasMany === false) {\n onChange({ relationTo: mostRecentUpdate.entitySlug, value: docID })\n }\n })\n\n /**\n * Listen to document update events. If you edit a related document from a drawer and save it, this event\n * will be triggered. We then need up update the label of this relationship input, as the useAsLabel field could have changed.\n *\n * We listen to this event instead of using the onSave callback on the document drawer, as the onSave callback is not triggered\n * when you save a document from a drawer opened by a *different* relationship (or any other) field.\n */\n useEffect(() => {\n if (mostRecentUpdate) {\n handleDocumentUpdateEvent(mostRecentUpdate)\n }\n }, [mostRecentUpdate])\n\n const onDuplicate = useCallback<DocumentDrawerProps['onDuplicate']>(\n (args) => {\n dispatchOptions({\n type: 'ADD',\n collection: args.collectionConfig,\n config,\n docs: [args.doc],\n i18n,\n sort: true,\n })\n\n if (hasMany) {\n onChange(\n value\n ? value.concat({\n relationTo: args.collectionConfig.slug,\n value: args.doc.id,\n })\n : null,\n )\n } else if (hasMany === false) {\n onChange({\n relationTo: args.collectionConfig.slug,\n value: args.doc.id,\n })\n }\n },\n [i18n, config, hasMany, onChange, value],\n )\n\n const onDelete = useCallback<DocumentDrawerProps['onDelete']>(\n (args) => {\n dispatchOptions({\n id: args.id,\n type: 'REMOVE',\n collection: args.collectionConfig,\n config,\n i18n,\n })\n\n if (hasMany) {\n onChange(\n value\n ? value.filter((option) => {\n return option.value !== args.id\n })\n : null,\n )\n } else {\n onChange(null)\n }\n\n return\n },\n [i18n, config, hasMany, onChange, value],\n )\n\n const filterOption = useCallback((item: Option, searchFilter: string) => {\n if (!searchFilter) {\n return true\n }\n const r = wordBoundariesRegex(searchFilter || '')\n // breaking the labels to search into smaller parts increases performance\n const breakApartThreshold = 250\n let labelString = String(item.label)\n // strings less than breakApartThreshold length won't be chunked\n while (labelString.length > breakApartThreshold) {\n // slicing by the next space after the length of the search input prevents slicing the string up by partial words\n const indexOfSpace = labelString.indexOf(' ', searchFilter.length)\n if (\n r.test(labelString.slice(0, indexOfSpace === -1 ? searchFilter.length : indexOfSpace + 1))\n ) {\n return true\n }\n labelString = labelString.slice(indexOfSpace === -1 ? searchFilter.length : indexOfSpace + 1)\n }\n return r.test(labelString.slice(-breakApartThreshold))\n }, [])\n\n const onDocumentOpen = useCallback<ReactSelectAdapterProps['customProps']['onDocumentOpen']>(\n ({ id, collectionSlug, hasReadPermission, openInNewTab }) => {\n if (openInNewTab) {\n if (hasReadPermission && id && collectionSlug) {\n const docUrl = formatAdminURL({\n adminRoute: config.routes.admin,\n path: `/collections/${collectionSlug}/${id}`,\n serverURL,\n })\n\n window.open(docUrl, '_blank')\n }\n } else {\n openDrawerWhenRelationChanges.current = true\n\n setCurrentlyOpenRelationship({\n id,\n collectionSlug,\n hasReadPermission,\n })\n }\n },\n [config.routes.admin, serverURL],\n )\n\n const updateResultsEffectEvent: UpdateResults = useEffectEvent((args) => {\n return updateResults(args)\n })\n\n // When (`relationTo` || `filterOptions` || `locale`) changes, reset component\n // Note - effect should not run on first run\n useEffect(() => {\n // If the menu is open while filterOptions changes\n // due to latency of form state and fast clicking into this field,\n // re-fetch options\n if (hasLoadedFirstPageRef.current && menuIsOpen) {\n setIsLoading(true)\n void updateResultsEffectEvent({\n filterOptions,\n lastLoadedPage: {},\n onSuccess: () => {\n hasLoadedFirstPageRef.current = true\n setIsLoading(false)\n },\n ...(hasMany === true\n ? {\n hasMany,\n value: valueRef.current as ValueWithRelation[],\n }\n : {\n hasMany,\n value: valueRef.current as ValueWithRelation,\n }),\n })\n }\n\n // If the menu is not open, still reset the field state\n // because we need to get new options next time the menu opens\n dispatchOptions({\n type: 'CLEAR',\n exemptValues: valueRef.current,\n })\n\n setLastFullyLoadedRelation(-1)\n setLastLoadedPage({})\n }, [relationTo, filterOptions, locale, path, menuIsOpen, hasMany])\n\n const prevValue = useRef(value)\n const isFirstRenderRef = useRef(true)\n\n // ///////////////////////////////////\n // Ensure we have an option for each value\n // ///////////////////////////////////\n useEffect(() => {\n if (isFirstRenderRef.current || !dequal(value, prevValue.current)) {\n handleValueChange(hasMany === true ? { hasMany, value } : { hasMany, value })\n }\n isFirstRenderRef.current = false\n prevValue.current = value\n }, [value, hasMany])\n\n // Determine if we should switch to word boundary search\n useEffect(() => {\n const relations = Array.isArray(relationTo) ? relationTo : [relationTo]\n const isIdOnly = relations.reduce((idOnly, relation) => {\n const collection = getEntityConfig({ collectionSlug: relation })\n const fieldToSearch = collection?.admin?.useAsTitle || 'id'\n return fieldToSearch === 'id' && idOnly\n }, true)\n setEnableWordBoundarySearch(!isIdOnly)\n }, [relationTo, getEntityConfig])\n\n useEffect(() => {\n if (openDrawerWhenRelationChanges.current) {\n openDrawer()\n openDrawerWhenRelationChanges.current = false\n }\n }, [openDrawer, currentlyOpenRelationship])\n\n useEffect(() => {\n // needed to sync the ref value when other fields influence the value\n // i.e. when a drawer is opened and the value is set\n valueRef.current = value\n }, [value])\n\n const valueToRender = findOptionsByValue({ allowEdit, options, value })\n\n if (!Array.isArray(valueToRender) && valueToRender?.value === 'null') {\n valueToRender.value = null\n }\n\n return (\n <div\n className={[\n fieldBaseClass,\n baseClass,\n className,\n showError && 'error',\n errorLoading && 'error-loading',\n readOnly && `${baseClass}--read-only`,\n !readOnly && allowCreate && `${baseClass}--allow-create`,\n ]\n .filter(Boolean)\n .join(' ')}\n id={`field-${path.replace(/\\./g, '__')}`}\n style={style}\n >\n <RenderCustomComponent\n CustomComponent={Label}\n Fallback={\n <FieldLabel label={label} localized={localized} path={path} required={required} />\n }\n />\n <div className={`${fieldBaseClass}__wrap`}>\n <RenderCustomComponent\n CustomComponent={Error}\n Fallback={<FieldError path={path} showError={showError} />}\n />\n {BeforeInput}\n {errorLoading ? (\n <div className={`${baseClass}__error-loading`}>{errorLoading}</div>\n ) : (\n <div className={`${baseClass}__wrap`}>\n <ReactSelect\n backspaceRemovesValue={!(isDrawerOpen || isListDrawerOpen)}\n components={{\n MultiValueLabel,\n SingleValue,\n ...(appearance !== 'select' && { DropdownIndicator: null }),\n }}\n customProps={{\n disableKeyDown: isDrawerOpen || isListDrawerOpen,\n disableMouseDown: isDrawerOpen || isListDrawerOpen,\n onDocumentOpen,\n }}\n disabled={readOnly || isDrawerOpen || isListDrawerOpen}\n filterOption={enableWordBoundarySearch ? filterOption : undefined}\n getOptionValue={(option: ValueWithRelation) => {\n if (!option) {\n return undefined\n }\n return hasMany && Array.isArray(relationTo)\n ? `${option.relationTo}_${option.value}`\n : (option.value as string)\n }}\n isLoading={appearance === 'select' && isLoading}\n isMulti={hasMany}\n isSearchable={appearance === 'select'}\n isSortable={isSortable}\n menuIsOpen={appearance === 'select' ? menuIsOpen : false}\n onChange={\n !readOnly\n ? (selected) => {\n if (hasMany) {\n if (selected === null) {\n valueRef.current = []\n onChange([])\n } else {\n valueRef.current = selected as ValueWithRelation[]\n onChange(selected as ValueWithRelation[])\n }\n } else if (hasMany === false) {\n if (selected === null) {\n valueRef.current = null\n onChange(null)\n } else {\n valueRef.current = selected as ValueWithRelation\n onChange(selected as ValueWithRelation)\n }\n }\n }\n : undefined\n }\n onInputChange={(newSearch) =>\n handleInputChange({\n search: newSearch,\n ...(hasMany === true\n ? {\n hasMany,\n value,\n }\n : {\n hasMany,\n value,\n }),\n })\n }\n onMenuClose={() => {\n setMenuIsOpen(false)\n }}\n onMenuOpen={() => {\n if (appearance === 'drawer') {\n openListDrawer()\n } else if (appearance === 'select') {\n setMenuIsOpen(true)\n if (!hasLoadedFirstPageRef.current) {\n setIsLoading(true)\n updateResultsEffectEvent({\n filterOptions,\n lastLoadedPage: {},\n onSuccess: () => {\n hasLoadedFirstPageRef.current = true\n setIsLoading(false)\n },\n ...(hasMany === true\n ? {\n hasMany,\n value,\n }\n : {\n hasMany,\n value,\n }),\n })\n }\n }\n }}\n onMenuScrollToBottom={() => {\n setIsLoading(true)\n updateResultsEffectEvent({\n filterOptions,\n lastFullyLoadedRelation,\n lastLoadedPage,\n onSuccess: () => {\n setIsLoading(false)\n },\n search,\n sort: false,\n ...(hasMany === true\n ? {\n hasMany,\n value: initialValue,\n }\n : {\n hasMany,\n value: initialValue,\n }),\n })\n }}\n options={\n typeof formatDisplayedOptions === 'function'\n ? formatDisplayedOptions(options)\n : options\n }\n placeholder={placeholder}\n showError={showError}\n value={valueToRender ?? null}\n />\n {!readOnly && allowCreate && (\n <AddNewRelation\n path={path}\n relationTo={relationTo}\n {...(hasMany === true\n ? {\n hasMany,\n onChange,\n value,\n }\n : {\n hasMany,\n onChange,\n value,\n })}\n />\n )}\n </div>\n )}\n {AfterInput}\n <RenderCustomComponent\n CustomComponent={Description}\n Fallback={<FieldDescription description={description} path={path} />}\n />\n </div>\n {currentlyOpenRelationship.collectionSlug && currentlyOpenRelationship.hasReadPermission && (\n <DocumentDrawer onDelete={onDelete} onDuplicate={onDuplicate} />\n )}\n {appearance === 'drawer' && !readOnly && (\n <ListDrawer allowCreate={allowCreate} enableRowSelections={false} onSelect={onListSelect} />\n )}\n </div>\n )\n}\n", "'use client'\nimport type { ClientCollectionConfig } from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport { hasAutosaveEnabled } from 'payload/shared'\nimport React, { Fragment, useCallback, useEffect, useState } from 'react'\n\nimport type { DocumentDrawerContextType } from '../DocumentDrawer/Provider.js'\nimport type { Props } from './types.js'\n\nimport { useRelatedCollections } from '../../hooks/useRelatedCollections.js'\nimport { PlusIcon } from '../../icons/Plus/index.js'\nimport { useAuth } from '../../providers/Auth/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { Button } from '../Button/index.js'\nimport { useDocumentDrawer } from '../DocumentDrawer/index.js'\nimport { Popup } from '../Popup/index.js'\nimport * as PopupList from '../Popup/PopupButtonList/index.js'\nimport './index.scss'\nimport { Tooltip } from '../Tooltip/index.js'\n\nconst baseClass = 'relationship-add-new'\n\nexport const AddNewRelation: React.FC<Props> = ({\n Button: ButtonFromProps,\n hasMany,\n onChange,\n path,\n relationTo,\n unstyled,\n value,\n}) => {\n const relatedCollections = useRelatedCollections(relationTo)\n const { permissions } = useAuth()\n const [show, setShow] = useState(false)\n const [selectedCollection, setSelectedCollection] = useState<string>()\n\n const relatedToMany = relatedCollections.length > 1\n\n const [collectionConfig, setCollectionConfig] = useState<ClientCollectionConfig>(() =>\n !relatedToMany ? relatedCollections[0] : undefined,\n )\n\n const [popupOpen, setPopupOpen] = useState(false)\n const { i18n, t } = useTranslation()\n const [showTooltip, setShowTooltip] = useState(false)\n\n const [DocumentDrawer, DocumentDrawerToggler, { isDrawerOpen, toggleDrawer }] = useDocumentDrawer(\n {\n collectionSlug: collectionConfig?.slug,\n },\n )\n\n const onSave: DocumentDrawerContextType['onSave'] = useCallback(\n ({ doc, operation }) => {\n // if autosave is enabled, the operation will be 'update'\n if (\n operation === 'create' ||\n (operation === 'update' && hasAutosaveEnabled(collectionConfig))\n ) {\n // ensure the value is not already in the array\n let isNewValue = false\n if (!value) {\n isNewValue = true\n } else {\n isNewValue = Array.isArray(value)\n ? !value.some((v) => v && v.value === doc.id)\n : value.value !== doc.id\n }\n\n if (isNewValue) {\n if (hasMany === true) {\n onChange([\n ...(Array.isArray(value) ? value : []),\n {\n relationTo: collectionConfig?.slug,\n value: doc.id,\n },\n ])\n } else {\n onChange({\n relationTo: collectionConfig?.slug,\n value: doc.id,\n })\n }\n }\n\n setSelectedCollection(undefined)\n }\n },\n [collectionConfig, hasMany, onChange, value],\n )\n\n const onPopupToggle = useCallback((state) => {\n setPopupOpen(state)\n }, [])\n\n useEffect(() => {\n if (permissions) {\n if (relatedCollections.length === 1) {\n setShow(permissions.collections[relatedCollections[0]?.slug]?.create)\n } else {\n setShow(\n relatedCollections.some(\n (collection) => permissions.collections[collection?.slug]?.create,\n ),\n )\n }\n }\n }, [permissions, relatedCollections])\n\n useEffect(() => {\n if (relatedToMany && selectedCollection) {\n setCollectionConfig(\n relatedCollections.find((collection) => collection?.slug === selectedCollection),\n )\n }\n }, [selectedCollection, relatedToMany, relatedCollections])\n\n useEffect(() => {\n if (relatedToMany && collectionConfig) {\n // the drawer must be rendered on the page before before opening it\n // this is why 'selectedCollection' is different from 'collectionConfig'\n toggleDrawer()\n setSelectedCollection(undefined)\n }\n }, [toggleDrawer, relatedToMany, collectionConfig])\n\n useEffect(() => {\n if (relatedToMany && !isDrawerOpen) {\n setCollectionConfig(undefined)\n }\n }, [isDrawerOpen, relatedToMany])\n\n const label = t('fields:addNewLabel', {\n label: getTranslation(relatedCollections[0]?.labels.singular, i18n),\n })\n\n if (!show) {\n return null\n }\n\n return (\n <div className={baseClass} id={`${path}-add-new`}>\n {relatedCollections.length === 1 && (\n <Fragment>\n <DocumentDrawerToggler\n className={[\n `${baseClass}__add-button`,\n unstyled && `${baseClass}__add-button--unstyled`,\n ]\n .filter(Boolean)\n .join(' ')}\n onClick={() => {\n setShowTooltip(false)\n }}\n onMouseEnter={() => setShowTooltip(true)}\n onMouseLeave={() => setShowTooltip(false)}\n >\n {ButtonFromProps ? (\n ButtonFromProps\n ) : (\n <Fragment>\n <Tooltip className={`${baseClass}__tooltip`} show={showTooltip}>\n {label}\n </Tooltip>\n <PlusIcon />\n </Fragment>\n )}\n </DocumentDrawerToggler>\n <DocumentDrawer onSave={onSave} />\n </Fragment>\n )}\n {relatedCollections.length > 1 && (\n <Fragment>\n <Popup\n button={\n ButtonFromProps ? (\n ButtonFromProps\n ) : (\n <Button\n buttonStyle=\"none\"\n className={`${baseClass}__add-button`}\n tooltip={popupOpen ? undefined : t('fields:addNew')}\n >\n <PlusIcon />\n </Button>\n )\n }\n buttonType=\"custom\"\n horizontalAlign=\"center\"\n onToggleOpen={onPopupToggle}\n render={({ close: closePopup }) => (\n <PopupList.ButtonGroup>\n {relatedCollections.map((relatedCollection) => {\n if (permissions.collections[relatedCollection?.slug]?.create) {\n return (\n <PopupList.Button\n className={`${baseClass}__relation-button--${relatedCollection?.slug}`}\n key={relatedCollection?.slug}\n onClick={() => {\n closePopup()\n setSelectedCollection(relatedCollection?.slug)\n }}\n >\n {getTranslation(relatedCollection?.labels?.singular, i18n)}\n </PopupList.Button>\n )\n }\n\n return null\n })}\n </PopupList.ButtonGroup>\n )}\n size=\"medium\"\n />\n {collectionConfig && permissions.collections[collectionConfig?.slug]?.create && (\n <DocumentDrawer onSave={onSave} />\n )}\n </Fragment>\n )}\n </div>\n )\n}\n", "'use client'\nimport { useModal } from '@faceless-ui/modal'\nimport React, { useCallback, useEffect, useId, useMemo, useState } from 'react'\n\nimport type { ListDrawerProps, ListTogglerProps, UseListDrawer } from './types.js'\n\nexport * from './types.js'\n\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useEditDepth } from '../../providers/EditDepth/index.js'\nimport { Drawer, DrawerToggler } from '../Drawer/index.js'\nimport { ListDrawerContent } from './DrawerContent.js'\n\nexport const baseClass = 'list-drawer'\nexport const formatListDrawerSlug = ({\n depth,\n uuid,\n}: {\n depth: number\n uuid: string // supply when creating a new document and no id is available\n}) => `list-drawer_${depth}_${uuid}`\n\nexport const ListDrawerToggler: React.FC<ListTogglerProps> = ({\n children,\n className,\n disabled,\n drawerSlug,\n onClick,\n ...rest\n}) => {\n return (\n <DrawerToggler\n className={[className, `${baseClass}__toggler`].filter(Boolean).join(' ')}\n disabled={disabled}\n onClick={onClick}\n slug={drawerSlug}\n {...rest}\n >\n {children}\n </DrawerToggler>\n )\n}\n\nexport const ListDrawer: React.FC<ListDrawerProps> = (props) => {\n const { drawerSlug } = props\n\n return (\n <Drawer className={baseClass} gutter={false} Header={null} slug={drawerSlug}>\n <ListDrawerContent {...props} />\n </Drawer>\n )\n}\n\n/**\n * Returns an array containing the ListDrawer component, the ListDrawerToggler component, and an object with state and methods for controlling the drawer.\n * @example\n * import { useListDrawer } from '@payloadcms/ui'\n *\n * // inside a React component\n * const [ListDrawer, ListDrawerToggler, { closeDrawer, openDrawer }] = useListDrawer({\n * collectionSlugs: ['users'],\n * selectedCollection: 'users',\n * })\n *\n * // inside the return statement\n * return (\n * <>\n * <ListDrawer />\n * <ListDrawerToggler onClick={openDrawer}>Open List Drawer</ListDrawerToggler>\n * </>\n * )\n */\nexport const useListDrawer: UseListDrawer = ({\n collectionSlugs: collectionSlugsFromProps,\n filterOptions,\n selectedCollection,\n uploads,\n}) => {\n const {\n config: { collections },\n } = useConfig()\n const drawerDepth = useEditDepth()\n const uuid = useId()\n const { closeModal, modalState, openModal, toggleModal } = useModal()\n const [isOpen, setIsOpen] = useState(false)\n const [collectionSlugs, setCollectionSlugs] = useState(collectionSlugsFromProps)\n\n const drawerSlug = formatListDrawerSlug({\n depth: drawerDepth,\n uuid,\n })\n\n useEffect(() => {\n setIsOpen(Boolean(modalState[drawerSlug]?.isOpen))\n }, [modalState, drawerSlug])\n\n useEffect(() => {\n if (!collectionSlugs || collectionSlugs.length === 0) {\n const filteredCollectionSlugs = collections.filter(({ upload }) => {\n if (uploads) {\n return Boolean(upload) === true\n }\n return true\n })\n\n setCollectionSlugs(filteredCollectionSlugs.map(({ slug }) => slug))\n }\n }, [collectionSlugs, uploads, collections])\n\n const toggleDrawer = useCallback(() => {\n toggleModal(drawerSlug)\n }, [toggleModal, drawerSlug])\n\n const closeDrawer = useCallback(() => {\n closeModal(drawerSlug)\n }, [drawerSlug, closeModal])\n\n const openDrawer = useCallback(() => {\n openModal(drawerSlug)\n }, [drawerSlug, openModal])\n\n const MemoizedDrawer = useMemo(() => {\n return (props) => (\n <ListDrawer\n {...props}\n closeDrawer={closeDrawer}\n collectionSlugs={collectionSlugs}\n drawerSlug={drawerSlug}\n filterOptions={filterOptions}\n key={drawerSlug}\n selectedCollection={selectedCollection}\n uploads={uploads}\n />\n )\n }, [drawerSlug, collectionSlugs, uploads, closeDrawer, selectedCollection, filterOptions])\n\n const MemoizedDrawerToggler = useMemo(() => {\n return (props) => <ListDrawerToggler {...props} drawerSlug={drawerSlug} />\n }, [drawerSlug])\n\n const MemoizedDrawerState = useMemo(\n () => ({\n closeDrawer,\n collectionSlugs,\n drawerDepth,\n drawerSlug,\n isDrawerOpen: isOpen,\n openDrawer,\n setCollectionSlugs,\n toggleDrawer,\n }),\n [\n drawerDepth,\n drawerSlug,\n isOpen,\n toggleDrawer,\n closeDrawer,\n openDrawer,\n setCollectionSlugs,\n collectionSlugs,\n ],\n )\n\n return [MemoizedDrawer, MemoizedDrawerToggler, MemoizedDrawerState]\n}\n", "'use client'\nimport type { CollectionSlug, ListQuery } from 'payload'\n\nimport { useModal } from '@faceless-ui/modal'\nimport { hoistQueryParamsToAnd } from 'payload/shared'\nimport React, { useCallback, useEffect, useState } from 'react'\n\nimport type { ListDrawerContextProps, ListDrawerContextType } from '../ListDrawer/Provider.js'\nimport type {\n ListDrawerProps,\n RenderListServerFnArgs,\n RenderListServerFnReturnType,\n} from './types.js'\n\nimport { useDocumentDrawer } from '../../elements/DocumentDrawer/index.js'\nimport { useEffectEvent } from '../../hooks/useEffectEvent.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useServerFunctions } from '../../providers/ServerFunctions/index.js'\nimport { ListDrawerContextProvider } from '../ListDrawer/Provider.js'\nimport { LoadingOverlay } from '../Loading/index.js'\nimport { type Option } from '../ReactSelect/index.js'\n\nexport const ListDrawerContent: React.FC<ListDrawerProps> = ({\n allowCreate = true,\n collectionSlugs,\n disableQueryPresets,\n drawerSlug,\n enableRowSelections,\n filterOptions,\n onBulkSelect,\n onSelect,\n overrideEntityVisibility = true,\n selectedCollection: collectionSlugFromProps,\n}) => {\n const { closeModal, isModalOpen } = useModal()\n\n const { serverFunction } = useServerFunctions()\n const [ListView, setListView] = useState<React.ReactNode>(undefined)\n const [isLoading, setIsLoading] = useState(true)\n\n const {\n config: { collections },\n getEntityConfig,\n } = useConfig()\n\n const isOpen = isModalOpen(drawerSlug)\n\n const enabledCollections = collections.filter(({ slug }) => {\n return collectionSlugs.includes(slug)\n })\n\n const [selectedOption, setSelectedOption] = useState<Option<string>>(() => {\n const initialSelection = collectionSlugFromProps || enabledCollections[0]?.slug\n const found = getEntityConfig({ collectionSlug: initialSelection })\n\n return found\n ? {\n label: found.labels,\n value: found.slug,\n }\n : undefined\n })\n\n const [DocumentDrawer, DocumentDrawerToggler, { drawerSlug: documentDrawerSlug }] =\n useDocumentDrawer({\n collectionSlug: selectedOption.value,\n })\n\n const updateSelectedOption = useEffectEvent((collectionSlug: CollectionSlug) => {\n if (collectionSlug && collectionSlug !== selectedOption?.value) {\n setSelectedOption({\n label: getEntityConfig({ collectionSlug })?.labels,\n value: collectionSlug,\n })\n }\n })\n\n useEffect(() => {\n updateSelectedOption(collectionSlugFromProps)\n }, [collectionSlugFromProps])\n\n /**\n * This performs a full server round trip to get the list view for the selected collection.\n * On the server, the data is freshly queried for the list view and all components are fully rendered.\n * This work includes building column state, rendering custom components, etc.\n */\n const refresh = useCallback(\n async ({ slug, query }: { query?: ListQuery; slug: string }) => {\n try {\n const newQuery: ListQuery = { ...(query || {}), where: { ...(query?.where || {}) } }\n\n const filterOption = filterOptions?.[slug]\n\n if (filterOptions && typeof filterOption !== 'boolean') {\n newQuery.where = hoistQueryParamsToAnd(newQuery.where, filterOption)\n }\n\n if (slug) {\n const result: RenderListServerFnReturnType = (await serverFunction({\n name: 'render-list',\n args: {\n collectionSlug: slug,\n disableBulkDelete: true,\n disableBulkEdit: true,\n disableQueryPresets,\n drawerSlug,\n enableRowSelections,\n overrideEntityVisibility,\n query: newQuery,\n } satisfies RenderListServerFnArgs,\n })) as RenderListServerFnReturnType\n\n setListView(result?.List || null)\n } else {\n setListView(null)\n }\n setIsLoading(false)\n } catch (_err) {\n console.error('Error rendering List View: ', _err) // eslint-disable-line no-console\n\n if (isOpen) {\n closeModal(drawerSlug)\n }\n }\n },\n [\n serverFunction,\n closeModal,\n drawerSlug,\n isOpen,\n enableRowSelections,\n filterOptions,\n overrideEntityVisibility,\n disableQueryPresets,\n ],\n )\n\n useEffect(() => {\n if (!ListView) {\n void refresh({ slug: selectedOption?.value })\n }\n }, [refresh, ListView, selectedOption.value])\n\n const onCreateNew = useCallback(\n ({ doc }) => {\n if (typeof onSelect === 'function') {\n onSelect({\n collectionSlug: selectedOption?.value,\n doc,\n docID: doc.id,\n })\n }\n\n closeModal(documentDrawerSlug)\n closeModal(drawerSlug)\n },\n [closeModal, documentDrawerSlug, drawerSlug, onSelect, selectedOption.value],\n )\n\n const onQueryChange: ListDrawerContextProps['onQueryChange'] = useCallback(\n (query) => {\n void refresh({ slug: selectedOption?.value, query })\n },\n [refresh, selectedOption.value],\n )\n\n const setMySelectedOption: ListDrawerContextProps['setSelectedOption'] = useCallback(\n (incomingSelection) => {\n setSelectedOption(incomingSelection)\n void refresh({ slug: incomingSelection?.value })\n },\n [refresh],\n )\n\n const refreshSelf: ListDrawerContextType['refresh'] = useCallback(\n async (incomingCollectionSlug) => {\n if (incomingCollectionSlug) {\n setSelectedOption({\n label: getEntityConfig({ collectionSlug: incomingCollectionSlug })?.labels,\n value: incomingCollectionSlug,\n })\n }\n\n await refresh({ slug: selectedOption.value || incomingCollectionSlug })\n },\n [getEntityConfig, refresh, selectedOption.value],\n )\n\n if (isLoading) {\n return <LoadingOverlay />\n }\n\n return (\n <ListDrawerContextProvider\n allowCreate={allowCreate}\n createNewDrawerSlug={documentDrawerSlug}\n DocumentDrawerToggler={DocumentDrawerToggler}\n drawerSlug={drawerSlug}\n enabledCollections={collectionSlugs}\n onBulkSelect={onBulkSelect}\n onQueryChange={onQueryChange}\n onSelect={onSelect}\n refresh={refreshSelf}\n selectedOption={selectedOption}\n setSelectedOption={setMySelectedOption}\n >\n {ListView}\n <DocumentDrawer onSave={onCreateNew} />\n </ListDrawerContextProvider>\n )\n}\n", "'use client'\nimport { useCallback, useRef } from 'react'\n\n/**\n * Returns a memoized function that will only call the passed function when it hasn't been called for the wait period\n * @param func The function to be called\n * @param wait Wait period after function hasn't been called for\n * @returns A memoized function that is debounced\n */\nexport const useDebouncedCallback = <TFunctionArgs = any>(func, wait) => {\n // Use a ref to store the timeout between renders\n // and prevent changes to it from causing re-renders\n const timeout = useRef<ReturnType<typeof setTimeout>>(undefined)\n\n return useCallback(\n (...args: TFunctionArgs[]) => {\n const later = () => {\n clearTimeout(timeout.current)\n func(...args)\n }\n\n clearTimeout(timeout.current)\n timeout.current = setTimeout(later, wait)\n },\n [func, wait],\n )\n}\n", "import { useCallback, useRef } from 'react'\n\ntype QueuedFunction = () => Promise<void>\n\ntype QueuedTaskOptions = {\n /**\n * A function that is called after the queue has processed a function\n * Used to perform side effects after processing the queue\n * @returns {void}\n */\n afterProcess?: () => void\n /**\n * A function that can be used to prevent the queue from processing under certain conditions\n * Can also be used to perform side effects before processing the queue\n * @returns {boolean} If `false`, the queue will not process\n */\n beforeProcess?: () => boolean | void\n}\n\ntype QueueTask = (fn: QueuedFunction, options?: QueuedTaskOptions) => void\n\n/**\n * A React hook that allows you to queue up functions to be executed in order.\n * This is useful when you need to ensure long running networks requests are processed sequentially.\n * Builds up a \"queue\" of functions to be executed in order, only ever processing the last function in the queue.\n * This ensures that a long queue of tasks doesn't cause a backlog of tasks to be processed.\n * E.g. if you queue a task and it begins running, then you queue 9 more tasks:\n * 1. The currently task will finish\n * 2. The next task in the queue will run\n * 3. All remaining tasks will be discarded\n * @returns {queueTask} A function used to queue a function.\n * @example\n * const { queueTask } = useQueue()\n * queueTask(async () => {\n * await fetch('https://api.example.com')\n * })\n */\nexport function useQueue(): {\n queueTask: QueueTask\n} {\n const queue = useRef<QueuedFunction[]>([])\n\n const isProcessing = useRef(false)\n\n const queueTask = useCallback<QueueTask>((fn, options) => {\n queue.current.push(fn)\n\n async function processQueue() {\n if (isProcessing.current) {\n return\n }\n\n // Allow the consumer to prevent the queue from processing under certain conditions\n if (typeof options?.beforeProcess === 'function') {\n const shouldContinue = options.beforeProcess()\n\n if (shouldContinue === false) {\n return\n }\n }\n\n while (queue.current.length > 0) {\n const latestTask = queue.current.pop() // Only process the last task in the queue\n queue.current = [] // Discard all other tasks\n\n isProcessing.current = true\n\n try {\n await latestTask()\n } catch (err) {\n console.error('Error in queued function:', err) // eslint-disable-line no-console\n } finally {\n isProcessing.current = false\n\n if (typeof options?.afterProcess === 'function') {\n options.afterProcess()\n }\n }\n }\n }\n\n void processQueue()\n }, [])\n\n return { queueTask }\n}\n", "'use client'\nimport type { DocumentEvent } from 'payload'\n\nimport React, { createContext, use, useState } from 'react'\n\nconst Context = createContext<{\n mostRecentUpdate: DocumentEvent | null\n reportUpdate: (event: DocumentEvent) => void\n}>({\n mostRecentUpdate: null,\n reportUpdate: () => null,\n})\n\nexport const DocumentEventsProvider: React.FC<{ children: React.ReactNode }> = ({ children }) => {\n const [mostRecentUpdate, reportUpdate] = useState<DocumentEvent>(null)\n\n return <Context value={{ mostRecentUpdate, reportUpdate }}>{children}</Context>\n}\n\n/**\n * The useDocumentEvents hook provides a way of subscribing to cross-document events,\n * such as updates made to nested documents within a drawer.\n * This hook will report document events that are outside the scope of the document currently being edited.\n *\n * @link https://payloadcms.com/docs/admin/react-hooks#usedocumentevents\n */\nexport const useDocumentEvents = () => use(Context)\n", "import type { Where } from 'payload'\n\nexport const sanitizeFilterOptionsQuery = (query: Where): Where => {\n for (const key in query) {\n const value = query[key]\n if ((key.toLowerCase() === 'and' || key.toLowerCase() === 'or') && Array.isArray(value)) {\n for (const val of value) {\n sanitizeFilterOptionsQuery(val)\n }\n } else if (\n value &&\n typeof value === 'object' &&\n 'in' in value &&\n Array.isArray(value.in) &&\n value.in.length === 0\n ) {\n {\n query[key] = { exists: false }\n }\n }\n }\n\n return query\n}\n", "'use client'\nimport type { HasManyValueUnion } from './types.js'\n\ntype RelationMap = {\n [relation: string]: (number | string)[]\n}\n\ntype CreateRelationMap = (\n args: {\n relationTo: string[]\n } & HasManyValueUnion,\n) => RelationMap\n\nexport const createRelationMap: CreateRelationMap = ({ hasMany, relationTo, value }) => {\n const relationMap: RelationMap = relationTo.reduce((map, current) => {\n return { ...map, [current]: [] }\n }, {})\n\n if (value === null) {\n return relationMap\n }\n\n if (value) {\n const add = (relation: string, id: number | string) => {\n if ((typeof id === 'string' || typeof id === 'number') && typeof relation === 'string') {\n if (relationMap[relation]) {\n relationMap[relation].push(id)\n } else {\n relationMap[relation] = [id]\n }\n }\n }\n if (hasMany === true) {\n value.forEach((val) => {\n if (val) {\n add(val.relationTo, val.value)\n }\n })\n } else {\n add(value.relationTo, value.value)\n }\n }\n\n return relationMap\n}\n", "'use client'\nimport type { ValueWithRelation } from 'payload'\n\nimport type { Option } from '../../elements/ReactSelect/types.js'\nimport type { OptionGroup } from './types.js'\n\ntype Args = {\n allowEdit: boolean\n options: OptionGroup[]\n value: ValueWithRelation | ValueWithRelation[]\n}\n\nexport const findOptionsByValue = ({ allowEdit, options, value }: Args): Option | Option[] => {\n if (value || typeof value === 'number') {\n if (Array.isArray(value)) {\n return value.map((val) => {\n let matchedOption: Option\n\n options.forEach((optGroup) => {\n if (!matchedOption) {\n matchedOption = optGroup.options.find((option) => {\n return option.value === val.value && option.relationTo === val.relationTo\n })\n }\n })\n\n return matchedOption ? { allowEdit, ...matchedOption } : undefined\n })\n }\n\n let matchedOption: Option\n\n options.forEach((optGroup) => {\n if (!matchedOption) {\n matchedOption = optGroup.options.find((option) => {\n return option.value === value.value && option.relationTo === value.relationTo\n })\n }\n })\n\n return matchedOption ? { allowEdit, ...matchedOption } : undefined\n }\n\n return undefined\n}\n", "'use client'\nimport { getTranslation } from '@payloadcms/translations'\n\nimport type { Action, Option, OptionGroup } from './types.js'\n\nimport { formatDocTitle } from '../../utilities/formatDocTitle/index.js'\n\nconst reduceToIDs = (options) =>\n options.reduce((ids, option) => {\n if (option.options) {\n return [...ids, ...reduceToIDs(option.options)]\n }\n\n return [...ids, { id: option.value, relationTo: option.relationTo }]\n }, [])\n\nconst sortOptions = (options: Option[]): Option[] =>\n options.sort((a: Option, b: Option) => {\n if (\n typeof a?.label?.localeCompare === 'function' &&\n typeof b?.label?.localeCompare === 'function'\n ) {\n return a.label.localeCompare(b.label)\n }\n\n return 0\n })\n\nexport const optionsReducer = (state: OptionGroup[], action: Action): OptionGroup[] => {\n switch (action.type) {\n case 'ADD': {\n const { collection, config, docs, i18n, ids = [], sort } = action\n const relation = collection.slug\n const loadedIDs = reduceToIDs(state)\n const newOptions = [...state]\n const optionsToAddTo = newOptions.find(\n (optionGroup) => optionGroup.label === collection.labels.plural,\n )\n const newSubOptions = docs.reduce((docSubOptions, doc) => {\n if (\n loadedIDs.filter((item) => item.id === doc.id && item.relationTo === relation).length ===\n 0\n ) {\n loadedIDs.push({ id: doc.id, relationTo: relation })\n\n const docTitle = formatDocTitle({\n collectionConfig: collection,\n data: doc,\n dateFormat: config.admin.dateFormat,\n fallback: `${i18n.t('general:untitled')} - ID: ${doc.id}`,\n i18n,\n })\n\n return [\n ...docSubOptions,\n {\n label: docTitle,\n relationTo: relation,\n value: doc.id,\n },\n ]\n }\n\n return docSubOptions\n }, [])\n\n ids.forEach((id) => {\n if (\n loadedIDs.filter((item) => item.id === id && item.relationTo === relation).length === 0\n ) {\n loadedIDs.push({ id, relationTo: relation })\n newSubOptions.push({\n allowEdit: false,\n label: `${i18n.t('general:untitled')} - ID: ${id}`,\n relationTo: relation,\n value: id,\n })\n }\n })\n\n if (optionsToAddTo) {\n const subOptions = [...optionsToAddTo.options, ...newSubOptions]\n\n optionsToAddTo.options = sort ? sortOptions(subOptions) : subOptions\n } else {\n newOptions.push({\n label: getTranslation(collection.labels.plural, i18n),\n options: sort ? sortOptions(newSubOptions) : newSubOptions,\n })\n }\n\n return newOptions\n }\n\n case 'CLEAR': {\n const exemptValues = action.exemptValues\n ? Array.isArray(action.exemptValues)\n ? action.exemptValues\n : [action.exemptValues]\n : []\n\n const clearedStateWithExemptValues = state.filter((optionGroup) => {\n const clearedOptions = optionGroup.options.filter((option) => {\n if (exemptValues) {\n return exemptValues.some((exemptValue) => {\n return exemptValue && option.value === exemptValue.value\n })\n }\n\n return false\n })\n\n optionGroup.options = clearedOptions\n\n return clearedOptions.length > 0\n })\n\n return clearedStateWithExemptValues\n }\n\n case 'REMOVE': {\n const { id, collection } = action\n\n const newOptions = [...state]\n\n const indexOfGroup = newOptions.findIndex(\n (optionGroup) => optionGroup.label === collection.labels.plural,\n )\n\n if (indexOfGroup === -1) {\n return newOptions\n }\n\n newOptions[indexOfGroup] = {\n ...newOptions[indexOfGroup],\n options: newOptions[indexOfGroup].options.filter((option) => option.value !== id),\n }\n\n return newOptions\n }\n\n case 'UPDATE': {\n const { collection, config, doc, i18n } = action\n const relation = collection.slug\n const newOptions = [...state]\n\n const docTitle = formatDocTitle({\n collectionConfig: collection,\n data: doc,\n dateFormat: config.admin.dateFormat,\n fallback: `${i18n.t('general:untitled')} - ID: ${doc.id}`,\n i18n,\n })\n\n const foundOptionGroup = newOptions.find(\n (optionGroup) => optionGroup.label === collection.labels.plural,\n )\n const foundOption = foundOptionGroup?.options?.find((option) => option.value === doc.id)\n\n if (foundOption) {\n foundOption.label = docTitle\n foundOption.relationTo = relation\n }\n\n return newOptions\n }\n\n default: {\n return state\n }\n }\n}\n", "'use client'\nimport type { MultiValueProps } from 'react-select'\n\nimport React, { Fragment, useState } from 'react'\nimport { components } from 'react-select'\n\nimport type { ReactSelectAdapterProps } from '../../../../elements/ReactSelect/types.js'\nimport type { Option } from '../../types.js'\n\nimport { Tooltip } from '../../../../elements/Tooltip/index.js'\nimport { EditIcon } from '../../../../icons/Edit/index.js'\nimport { useAuth } from '../../../../providers/Auth/index.js'\nimport { useTranslation } from '../../../../providers/Translation/index.js'\nimport './index.scss'\n\nconst baseClass = 'relationship--multi-value-label'\n\nexport const MultiValueLabel: React.FC<\n {\n selectProps: {\n // TODO Fix this - moduleResolution 16 breaks our declare module\n customProps: ReactSelectAdapterProps['customProps']\n }\n } & MultiValueProps<Option>\n> = (props) => {\n const {\n data: { allowEdit, label, relationTo, value },\n selectProps: { customProps: { draggableProps, onDocumentOpen } = {} } = {},\n } = props\n\n const { permissions } = useAuth()\n const [showTooltip, setShowTooltip] = useState(false)\n const { t } = useTranslation()\n const hasReadPermission = Boolean(permissions?.collections?.[relationTo]?.read)\n\n return (\n <div className={baseClass} title={label || ''}>\n <div className={`${baseClass}__content`}>\n <components.MultiValueLabel\n {...props}\n innerProps={{\n className: `${baseClass}__text`,\n ...(draggableProps || {}),\n }}\n />\n </div>\n {relationTo && hasReadPermission && allowEdit !== false && (\n <Fragment>\n <button\n aria-label={`Edit ${label}`}\n className={`${baseClass}__drawer-toggler`}\n onClick={(event) => {\n setShowTooltip(false)\n onDocumentOpen({\n id: value,\n collectionSlug: relationTo,\n hasReadPermission,\n openInNewTab: event.metaKey || event.ctrlKey,\n })\n }}\n onKeyDown={(e) => {\n if (e.key === 'Enter') {\n e.stopPropagation()\n }\n }}\n onMouseDown={(e) => e.stopPropagation()} // prevents react-select dropdown from opening\n onMouseEnter={() => setShowTooltip(true)}\n onMouseLeave={() => setShowTooltip(false)}\n onTouchEnd={(e) => e.stopPropagation()} // prevents react-select dropdown from opening\n type=\"button\"\n >\n <Tooltip className={`${baseClass}__tooltip`} show={showTooltip}>\n {t('general:editLabel', { label: '' })}\n </Tooltip>\n <EditIcon className={`${baseClass}__icon`} />\n </button>\n </Fragment>\n )}\n </div>\n )\n}\n", "'use client'\nimport type { SingleValueProps } from 'react-select'\n\nimport React, { Fragment, useState } from 'react'\nimport { components as SelectComponents } from 'react-select'\n\nimport type { ReactSelectAdapterProps } from '../../../../elements/ReactSelect/types.js'\nimport type { Option } from '../../types.js'\n\nimport { Tooltip } from '../../../../elements/Tooltip/index.js'\nimport { EditIcon } from '../../../../icons/Edit/index.js'\nimport { useAuth } from '../../../../providers/Auth/index.js'\nimport { useTranslation } from '../../../../providers/Translation/index.js'\nimport './index.scss'\n\nconst baseClass = 'relationship--single-value'\n\nexport const SingleValue: React.FC<\n {\n selectProps: {\n // TODO Fix this - moduleResolution 16 breaks our declare module\n customProps: ReactSelectAdapterProps['customProps']\n }\n } & SingleValueProps<Option>\n> = (props) => {\n const {\n children,\n data: { allowEdit, label, relationTo, value },\n selectProps: { customProps: { onDocumentOpen } = {} } = {},\n } = props\n\n const [showTooltip, setShowTooltip] = useState(false)\n const { t } = useTranslation()\n const { permissions } = useAuth()\n const hasReadPermission = Boolean(permissions?.collections?.[relationTo]?.read)\n\n return (\n <SelectComponents.SingleValue {...props} className={baseClass}>\n <div className={`${baseClass}__label`} title={label || ''}>\n <div className={`${baseClass}__label-text`}>\n <div className={`${baseClass}__text`}>{children}</div>\n {relationTo && hasReadPermission && allowEdit !== false && (\n <Fragment>\n <button\n aria-label={t('general:editLabel', { label })}\n className={`${baseClass}__drawer-toggler`}\n onClick={(event) => {\n setShowTooltip(false)\n onDocumentOpen({\n id: value,\n collectionSlug: relationTo,\n hasReadPermission,\n openInNewTab: event.metaKey || event.ctrlKey,\n })\n }}\n onKeyDown={(e) => {\n if (e.key === 'Enter') {\n e.stopPropagation()\n }\n }}\n onMouseDown={(e) => e.stopPropagation()} // prevents react-select dropdown from opening\n onMouseEnter={() => setShowTooltip(true)}\n onMouseLeave={() => setShowTooltip(false)}\n onTouchEnd={(e) => e.stopPropagation()} // prevents react-select dropdown from openingtype=\"button\"\n type=\"button\"\n >\n <Tooltip className={`${baseClass}__tooltip`} show={showTooltip}>\n {t('general:edit')}\n </Tooltip>\n <EditIcon />\n </button>\n </Fragment>\n )}\n </div>\n </div>\n </SelectComponents.SingleValue>\n )\n}\n", "'use client'\nimport type { RichTextFieldClientProps } from 'payload'\nimport type React from 'react'\n\nexport const RichTextField: React.FC<RichTextFieldClientProps> = () => {\n return null\n}\n", "'use client'\nimport type { RowFieldClientComponent } from 'payload'\n\nimport React from 'react'\n\nimport { RenderFields } from '../../forms/RenderFields/index.js'\nimport { withCondition } from '../../forms/withCondition/index.js'\nimport { fieldBaseClass } from '../shared/index.js'\nimport './index.scss'\nimport { RowProvider } from './provider.js'\n\nconst baseClass = 'row'\n\nconst RowFieldComponent: RowFieldClientComponent = (props) => {\n const {\n field: { admin: { className, style } = {}, fields },\n forceRender = false,\n indexPath = '',\n parentPath = '',\n parentSchemaPath = '',\n permissions,\n readOnly,\n } = props\n\n return (\n <RowProvider>\n <div\n className={[fieldBaseClass, baseClass, className].filter(Boolean).join(' ')}\n style={style || undefined}\n >\n <RenderFields\n className={`${baseClass}__fields`}\n fields={fields}\n forceRender={forceRender}\n margins={false}\n parentIndexPath={indexPath}\n parentPath={parentPath}\n parentSchemaPath={parentSchemaPath}\n permissions={permissions}\n readOnly={readOnly}\n />\n </div>\n </RowProvider>\n )\n}\n\nexport const RowField = withCondition(RowFieldComponent)\n", "'use client'\nimport type {\n Option,\n OptionObject,\n SelectFieldClientComponent,\n SelectFieldClientProps,\n} from 'payload'\n\nimport React, { useCallback, useMemo } from 'react'\n\nimport type { ReactSelectAdapterProps } from '../../elements/ReactSelect/types.js'\nimport type { SelectInputProps } from './Input.js'\n\nimport { useField } from '../../forms/useField/index.js'\nimport { withCondition } from '../../forms/withCondition/index.js'\nimport { mergeFieldStyles } from '../mergeFieldStyles.js'\nimport { SelectInput } from './Input.js'\n\nexport const formatOptions = (options: Option[]): OptionObject[] =>\n options.map((option) => {\n if (typeof option === 'object' && (option.value || option.value === '')) {\n return option\n }\n\n return {\n label: option,\n value: option,\n } as OptionObject\n })\n\nconst SelectFieldComponent: SelectFieldClientComponent = (props) => {\n const {\n field,\n field: {\n name,\n admin: {\n className,\n description,\n isClearable = true,\n isSortable = true,\n placeholder,\n } = {} as SelectFieldClientProps['field']['admin'],\n hasMany = false,\n label,\n localized,\n options: optionsFromProps = [],\n required,\n },\n onChange: onChangeFromProps,\n path: pathFromProps,\n readOnly,\n validate,\n } = props\n\n const options = React.useMemo(() => formatOptions(optionsFromProps), [optionsFromProps])\n\n const memoizedValidate = useCallback(\n (value, validationOptions) => {\n if (typeof validate === 'function') {\n return validate(value, { ...validationOptions, hasMany, options, required })\n }\n },\n [validate, required, hasMany, options],\n )\n\n const {\n customComponents: { AfterInput, BeforeInput, Description, Error, Label } = {},\n disabled,\n path,\n selectFilterOptions,\n setValue,\n showError,\n value,\n } = useField({\n potentiallyStalePath: pathFromProps,\n validate: memoizedValidate,\n })\n\n const onChange: ReactSelectAdapterProps['onChange'] = useCallback(\n (selectedOption: OptionObject | OptionObject[]) => {\n if (!readOnly || disabled) {\n let newValue: string | string[] = null\n if (selectedOption && hasMany) {\n if (Array.isArray(selectedOption)) {\n newValue = selectedOption.map((option) => option.value)\n } else {\n newValue = []\n }\n } else if (selectedOption && !Array.isArray(selectedOption)) {\n newValue = selectedOption.value\n }\n\n if (typeof onChangeFromProps === 'function') {\n onChangeFromProps(newValue)\n }\n\n setValue(newValue)\n }\n },\n [readOnly, disabled, hasMany, setValue, onChangeFromProps],\n )\n\n const styles = useMemo(() => mergeFieldStyles(field), [field])\n\n return (\n <SelectInput\n AfterInput={AfterInput}\n BeforeInput={BeforeInput}\n className={className}\n Description={Description}\n description={description}\n Error={Error}\n filterOption={\n selectFilterOptions\n ? ({ label, value }, search) =>\n selectFilterOptions?.some(\n (option) => (typeof option === 'string' ? option : option.value) === value,\n ) && label.toLowerCase().includes(search.toLowerCase())\n : undefined\n }\n hasMany={hasMany}\n isClearable={isClearable}\n isSortable={isSortable}\n Label={Label}\n label={label}\n localized={localized}\n name={name}\n onChange={onChange}\n options={options}\n path={path}\n placeholder={placeholder}\n readOnly={readOnly || disabled}\n required={required}\n showError={showError}\n style={styles}\n value={value as string | string[]}\n />\n )\n}\n\nexport const SelectField = withCondition(SelectFieldComponent)\n\nexport { SelectInput, type SelectInputProps }\n", "'use client'\nimport type { LabelFunction, OptionObject, StaticDescription, StaticLabel } from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport React from 'react'\n\nimport type { ReactSelectAdapterProps } from '../../elements/ReactSelect/types.js'\n\nimport { ReactSelect } from '../../elements/ReactSelect/index.js'\nimport { RenderCustomComponent } from '../../elements/RenderCustomComponent/index.js'\nimport { FieldDescription } from '../../fields/FieldDescription/index.js'\nimport { FieldError } from '../../fields/FieldError/index.js'\nimport { FieldLabel } from '../../fields/FieldLabel/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { fieldBaseClass } from '../shared/index.js'\nimport './index.scss'\n\nexport type SelectInputProps = {\n readonly AfterInput?: React.ReactNode\n readonly BeforeInput?: React.ReactNode\n readonly className?: string\n readonly Description?: React.ReactNode\n readonly description?: StaticDescription\n readonly Error?: React.ReactNode\n readonly filterOption?: ReactSelectAdapterProps['filterOption']\n readonly hasMany?: boolean\n readonly id?: string\n readonly isClearable?: boolean\n readonly isSortable?: boolean\n readonly Label?: React.ReactNode\n readonly label?: StaticLabel\n readonly localized?: boolean\n readonly name: string\n readonly onChange?: ReactSelectAdapterProps['onChange']\n readonly onInputChange?: ReactSelectAdapterProps['onInputChange']\n readonly options?: OptionObject[]\n readonly path: string\n readonly placeholder?: LabelFunction | string\n readonly readOnly?: boolean\n readonly required?: boolean\n readonly showError?: boolean\n readonly style?: React.CSSProperties\n readonly value?: string | string[]\n}\n\nexport const SelectInput: React.FC<SelectInputProps> = (props) => {\n const {\n id,\n AfterInput,\n BeforeInput,\n className,\n Description,\n description,\n Error,\n filterOption,\n hasMany = false,\n isClearable = true,\n isSortable = true,\n label,\n Label,\n localized,\n onChange,\n onInputChange,\n options,\n path,\n placeholder,\n readOnly,\n required,\n showError,\n style,\n value,\n } = props\n\n const { i18n } = useTranslation()\n\n let valueToRender\n\n if (hasMany && Array.isArray(value)) {\n valueToRender = value.map((val) => {\n const matchingOption = options.find((option) => option.value === val)\n return {\n label: matchingOption ? getTranslation(matchingOption.label, i18n) : val,\n value: matchingOption?.value ?? val,\n }\n })\n } else if (value) {\n const matchingOption = options.find((option) => option.value === value)\n valueToRender = {\n label: matchingOption ? getTranslation(matchingOption.label, i18n) : value,\n value: matchingOption?.value ?? value,\n }\n } else {\n // If value is not present then render nothing, allowing select fields to reset to their initial 'Select an option' state\n valueToRender = null\n }\n\n return (\n <div\n className={[\n fieldBaseClass,\n 'select',\n className,\n showError && 'error',\n readOnly && 'read-only',\n ]\n .filter(Boolean)\n .join(' ')}\n id={`field-${path.replace(/\\./g, '__')}`}\n style={style}\n >\n <RenderCustomComponent\n CustomComponent={Label}\n Fallback={\n <FieldLabel label={label} localized={localized} path={path} required={required} />\n }\n />\n <div className={`${fieldBaseClass}__wrap`}>\n <RenderCustomComponent\n CustomComponent={Error}\n Fallback={<FieldError path={path} showError={showError} />}\n />\n {BeforeInput}\n <ReactSelect\n disabled={readOnly}\n filterOption={filterOption}\n id={id}\n isClearable={isClearable}\n isMulti={hasMany}\n isSortable={isSortable}\n onChange={onChange}\n onInputChange={onInputChange}\n options={options.map((option) => ({\n ...option,\n label: getTranslation(option.label, i18n),\n }))}\n placeholder={placeholder}\n showError={showError}\n value={valueToRender as OptionObject}\n />\n {AfterInput}\n </div>\n <RenderCustomComponent\n CustomComponent={Description}\n Fallback={<FieldDescription description={description} path={path} />}\n />\n </div>\n )\n}\n", "'use client'\nimport type {\n ClientComponentProps,\n ClientTab,\n DocumentPreferences,\n SanitizedFieldPermissions,\n StaticDescription,\n TabsFieldClientComponent,\n} from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport { getFieldPaths, toKebabCase } from 'payload/shared'\nimport React, { useCallback, useEffect, useState } from 'react'\n\nimport { useCollapsible } from '../../elements/Collapsible/provider.js'\nimport { RenderCustomComponent } from '../../elements/RenderCustomComponent/index.js'\nimport { useFormFields } from '../../forms/Form/index.js'\nimport { RenderFields } from '../../forms/RenderFields/index.js'\nimport { useField } from '../../forms/useField/index.js'\nimport { withCondition } from '../../forms/withCondition/index.js'\nimport { useDocumentInfo } from '../../providers/DocumentInfo/index.js'\nimport { usePreferences } from '../../providers/Preferences/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { FieldDescription } from '../FieldDescription/index.js'\nimport { fieldBaseClass } from '../shared/index.js'\nimport { TabsProvider } from './provider.js'\nimport { TabComponent } from './Tab/index.js'\nimport './index.scss'\n\nconst baseClass = 'tabs-field'\n\nexport { TabsProvider }\n\nconst TabsFieldComponent: TabsFieldClientComponent = (props) => {\n const {\n field: { admin: { className } = {}, tabs = [] },\n forceRender = false,\n indexPath = '',\n parentPath = '',\n parentSchemaPath = '',\n path = '',\n permissions,\n readOnly,\n schemaPath = '',\n } = props\n\n const { getPreference, setPreference } = usePreferences()\n const { preferencesKey } = useDocumentInfo()\n const { i18n } = useTranslation()\n const { isWithinCollapsible } = useCollapsible()\n\n const tabStates = useFormFields(([fields]) => {\n return tabs.map((tab, index) => {\n const id = tab?.id\n\n return {\n index,\n passesCondition: fields?.[id]?.passesCondition ?? true,\n tab,\n }\n })\n })\n\n const [activeTabIndex, setActiveTabIndex] = useState<number>(\n () => tabStates.filter(({ passesCondition }) => passesCondition)?.[0]?.index ?? 0,\n )\n\n const tabsPrefKey = `tabs-${indexPath}`\n\n const activeTabInfo = tabStates[activeTabIndex]\n const activeTabConfig = activeTabInfo?.tab\n const activeTabDescription = activeTabConfig?.admin?.description ?? activeTabConfig?.description\n\n const activeTabStaticDescription =\n typeof activeTabDescription === 'function'\n ? activeTabDescription({ i18n, t: i18n.t })\n : activeTabDescription\n\n const hasVisibleTabs = tabStates.some(({ passesCondition }) => passesCondition)\n\n const handleTabChange = useCallback(\n async (incomingTabIndex: number): Promise<void> => {\n setActiveTabIndex(incomingTabIndex)\n\n const existingPreferences: DocumentPreferences = await getPreference(preferencesKey)\n\n if (preferencesKey) {\n void setPreference(preferencesKey, {\n ...existingPreferences,\n ...(path\n ? {\n fields: {\n ...(existingPreferences?.fields || {}),\n [path]: {\n ...existingPreferences?.fields?.[path],\n tabIndex: incomingTabIndex,\n },\n },\n }\n : {\n fields: {\n ...existingPreferences?.fields,\n [tabsPrefKey]: {\n ...existingPreferences?.fields?.[tabsPrefKey],\n tabIndex: incomingTabIndex,\n },\n },\n }),\n })\n }\n },\n [getPreference, preferencesKey, setPreference, path, tabsPrefKey],\n )\n\n useEffect(() => {\n if (preferencesKey) {\n const getInitialPref = async () => {\n const existingPreferences: DocumentPreferences = await getPreference(preferencesKey)\n const initialIndex = path\n ? existingPreferences?.fields?.[path]?.tabIndex\n : existingPreferences?.fields?.[tabsPrefKey]?.tabIndex\n\n const newIndex = typeof initialIndex === 'number' && initialIndex < tabStates.length ? initialIndex : 0\n setActiveTabIndex(newIndex)\n }\n void getInitialPref()\n }\n }, [path, getPreference, preferencesKey, tabsPrefKey, tabs, parentPath, parentSchemaPath])\n\n useEffect(() => {\n if (activeTabInfo?.passesCondition === false) {\n const nextTab = tabStates.find(({ passesCondition }) => passesCondition)\n if (nextTab) {\n void handleTabChange(nextTab.index)\n }\n }\n }, [activeTabInfo, tabStates, handleTabChange])\n\n return (\n <div\n className={[\n fieldBaseClass,\n className,\n baseClass,\n isWithinCollapsible && `${baseClass}--within-collapsible`,\n !hasVisibleTabs && `${baseClass}--hidden`,\n ]\n .filter(Boolean)\n .join(' ')}\n >\n <TabsProvider>\n <div className={`${baseClass}__tabs-wrap`}>\n <div className={`${baseClass}__tabs`}>\n {tabStates.map(({ index, passesCondition, tab }) => (\n <TabComponent\n hidden={!passesCondition}\n isActive={activeTabIndex === index}\n key={index}\n parentPath={path}\n setIsActive={() => {\n void handleTabChange(index)\n }}\n tab={tab}\n />\n ))}\n </div>\n </div>\n <div className={`${baseClass}__content-wrap`}>\n {activeTabConfig && (\n <TabContent\n description={activeTabStaticDescription}\n field={activeTabConfig}\n forceRender={forceRender}\n hidden={false}\n parentIndexPath={indexPath}\n parentPath={path}\n parentSchemaPath={schemaPath}\n path={path}\n permissions={\n permissions && typeof permissions === 'object' && 'name' in activeTabConfig\n ? permissions[activeTabConfig.name] &&\n typeof permissions[activeTabConfig.name] === 'object' &&\n 'fields' in permissions[activeTabConfig.name]\n ? permissions[activeTabConfig.name].fields\n : permissions[activeTabConfig.name]\n : permissions\n }\n readOnly={readOnly}\n tabIndex={activeTabIndex}\n />\n )}\n </div>\n </TabsProvider>\n </div>\n )\n}\n\nexport const TabsField = withCondition(TabsFieldComponent)\n\ntype ActiveTabProps = {\n readonly description: StaticDescription\n readonly field: ClientTab\n readonly hidden: boolean\n readonly label?: string\n readonly parentIndexPath: string\n readonly parentPath: string\n readonly parentSchemaPath: string\n readonly path: string\n readonly permissions: SanitizedFieldPermissions\n readonly readOnly: boolean\n readonly tabIndex: number\n} & Pick<ClientComponentProps, 'forceRender'>\n\nfunction TabContent({\n description,\n field,\n forceRender,\n hidden,\n label,\n parentIndexPath,\n parentPath,\n parentSchemaPath,\n permissions,\n readOnly,\n tabIndex,\n}: ActiveTabProps) {\n const { i18n } = useTranslation()\n\n const { customComponents: { AfterInput, BeforeInput, Description, Field } = {} } = useField()\n\n if (Field) {\n return Field\n }\n\n const { indexPath, path, schemaPath } = getFieldPaths({\n field,\n index: tabIndex,\n parentIndexPath,\n parentPath,\n parentSchemaPath,\n })\n\n return (\n <div\n className={[\n hidden && `${baseClass}__tab--hidden`,\n `${baseClass}__tab`,\n label && `${baseClass}__tabConfigLabel-${toKebabCase(getTranslation(label, i18n))}`,\n ]\n .filter(Boolean)\n .join(' ')}\n >\n <RenderCustomComponent\n CustomComponent={Description}\n Fallback={\n <FieldDescription description={description} marginPlacement=\"bottom\" path={parentPath} />\n }\n />\n {BeforeInput}\n <RenderFields\n fields={field.fields}\n forceRender={forceRender}\n parentIndexPath={indexPath}\n parentPath={path}\n parentSchemaPath={schemaPath}\n permissions={permissions}\n readOnly={readOnly}\n />\n {AfterInput}\n </div>\n )\n}\n", "'use client'\nimport { dequal } from 'dequal/lite' // lite: no need for Map and Set support\nimport { useRouter } from 'next/navigation.js'\nimport { serialize } from 'object-to-formdata'\nimport { type FormState, type PayloadRequest } from 'payload'\nimport {\n deepCopyObjectSimpleWithoutReactComponents,\n getDataByPath as getDataByPathFunc,\n getSiblingData as getSiblingDataFunc,\n hasDraftValidationEnabled,\n reduceFieldsToValues,\n wait,\n} from 'payload/shared'\nimport React, { useCallback, useEffect, useReducer, useRef, useState } from 'react'\nimport { toast } from 'sonner'\n\nimport type {\n CreateFormData,\n Context as FormContextType,\n FormProps,\n GetDataByPath,\n Submit,\n SubmitOptions,\n} from './types.js'\n\nimport { FieldErrorsToast } from '../../elements/Toasts/fieldErrors.js'\nimport { useDebouncedEffect } from '../../hooks/useDebouncedEffect.js'\nimport { useEffectEvent } from '../../hooks/useEffectEvent.js'\nimport { useQueue } from '../../hooks/useQueue.js'\nimport { useThrottledEffect } from '../../hooks/useThrottledEffect.js'\nimport { useAuth } from '../../providers/Auth/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useDocumentInfo } from '../../providers/DocumentInfo/index.js'\nimport { useLocale } from '../../providers/Locale/index.js'\nimport { useOperation } from '../../providers/Operation/index.js'\nimport { useRouteTransition } from '../../providers/RouteTransition/index.js'\nimport { useServerFunctions } from '../../providers/ServerFunctions/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { useUploadHandlers } from '../../providers/UploadHandlers/index.js'\nimport { abortAndIgnore, handleAbortRef } from '../../utilities/abortAndIgnore.js'\nimport { requests } from '../../utilities/api.js'\nimport {\n BackgroundProcessingContext,\n DocumentFormContext,\n FormContext,\n FormFieldsContext,\n FormWatchContext,\n InitializingContext,\n ModifiedContext,\n ProcessingContext,\n SubmittedContext,\n useDocumentForm,\n} from './context.js'\nimport { errorMessages } from './errorMessages.js'\nimport { fieldReducer } from './fieldReducer.js'\nimport { initContextState } from './initContextState.js'\n\nconst baseClass = 'form'\n\nexport const Form: React.FC<FormProps> = (props) => {\n const { id, collectionSlug, docConfig, docPermissions, getDocPreferences, globalSlug } =\n useDocumentInfo()\n\n const validateDrafts = hasDraftValidationEnabled(docConfig)\n\n const {\n action,\n beforeSubmit,\n children,\n className,\n disabled: disabledFromProps,\n disableSuccessStatus,\n disableValidationOnSubmit,\n // fields: fieldsFromProps = collection?.fields || global?.fields,\n el,\n handleResponse,\n initialState, // fully formed initial field state\n isDocumentForm,\n isInitializing: initializingFromProps,\n onChange,\n onSubmit,\n onSuccess,\n redirect,\n submitted: submittedFromProps,\n uuid,\n waitForAutocomplete,\n } = props\n\n const method = 'method' in props ? props?.method : undefined\n\n const router = useRouter()\n\n const documentForm = useDocumentForm()\n\n const { code: locale } = useLocale()\n const { i18n, t } = useTranslation()\n const { refreshCookie, user } = useAuth()\n const operation = useOperation()\n const { queueTask } = useQueue()\n\n const { getFormState } = useServerFunctions()\n const { startRouteTransition } = useRouteTransition()\n const { getUploadHandler } = useUploadHandlers()\n\n const { config } = useConfig()\n\n const [disabled, setDisabled] = useState(disabledFromProps || false)\n const [isMounted, setIsMounted] = useState(false)\n\n const [submitted, setSubmitted] = useState(false)\n\n /**\n * Tracks wether the form state passes validation.\n * For example the state could be submitted but invalid as field errors have been returned.\n */\n const [isValid, setIsValid] = useState(true)\n const [initializing, setInitializing] = useState(initializingFromProps)\n\n const [processing, setProcessing] = useState(false)\n\n /**\n * Determines whether the form is processing asynchronously in the background, e.g. autosave is running.\n * Useful to determine whether to disable the form or queue other processes while in flight, e.g. disable manual submits while an autosave is running.\n */\n const [backgroundProcessing, _setBackgroundProcessing] = useState(false)\n\n /**\n * A ref that can be read within the `setModified` interceptor.\n * Dependents of this state can read it immediately without needing to wait for a render cycle.\n */\n const backgroundProcessingRef = useRef(backgroundProcessing)\n\n /**\n * Flag to track if the form was modified _during a submission_, e.g. while autosave is running.\n * Useful in order to avoid resetting `modified` to false wrongfully after a submit.\n * For example, if the user modifies a field while the a background process (autosave) is running,\n * we need to ensure that after the submit completes, the `modified` state remains true.\n */\n const modifiedWhileProcessingRef = useRef(false)\n\n /**\n * Intercept the `setBackgroundProcessing` method to keep the ref in sync.\n * See the `backgroundProcessingRef` for more details.\n */\n const setBackgroundProcessing = useCallback((backgroundProcessing: boolean) => {\n backgroundProcessingRef.current = backgroundProcessing\n _setBackgroundProcessing(backgroundProcessing)\n }, [])\n\n const [modified, _setModified] = useState(false)\n\n /**\n * Intercept the `setModified` method to track whether the event happened during background processing.\n * See the `modifiedWhileProcessingRef` ref for more details.\n */\n const setModified = useCallback((modified: boolean) => {\n if (backgroundProcessingRef.current) {\n modifiedWhileProcessingRef.current = true\n }\n\n _setModified(modified)\n }, [])\n\n const formRef = useRef<HTMLFormElement>(null)\n const contextRef = useRef({} as FormContextType)\n const abortResetFormRef = useRef<AbortController>(null)\n const isFirstRenderRef = useRef(true)\n\n const fieldsReducer = useReducer(fieldReducer, {}, () => initialState)\n\n const [formState, dispatchFields] = fieldsReducer\n\n contextRef.current.fields = formState\n\n const prevFormState = useRef(formState)\n\n const validateForm = useCallback(async () => {\n const validatedFieldState = {}\n let isValid = true\n\n const data = contextRef.current.getData()\n\n const validationPromises = Object.entries(contextRef.current.fields).map(\n async ([path, field]) => {\n const validatedField = field\n const pathSegments = path ? path.split('.') : []\n\n if (field.passesCondition !== false) {\n let validationResult: boolean | string = validatedField.valid\n\n if ('validate' in field && typeof field.validate === 'function') {\n let valueToValidate = field.value\n\n if (field?.rows && Array.isArray(field.rows)) {\n valueToValidate = contextRef.current.getDataByPath(path)\n }\n\n validationResult = await field.validate(valueToValidate, {\n ...field,\n id,\n collectionSlug,\n // If there is a parent document form, we can get the data from that form\n blockData: undefined, // Will be expensive to get - not worth to pass to client-side validation, as this can be obtained by the user using `useFormFields()`\n data: documentForm?.getData ? documentForm.getData() : data,\n event: 'submit',\n operation,\n path: pathSegments,\n preferences: {} as any,\n req: {\n payload: {\n config,\n },\n t,\n user,\n } as unknown as PayloadRequest,\n siblingData: contextRef.current.getSiblingData(path),\n })\n\n if (typeof validationResult === 'string') {\n validatedField.errorMessage = validationResult\n validatedField.valid = false\n } else {\n validatedField.valid = true\n validatedField.errorMessage = undefined\n }\n }\n\n if (validatedField.valid === false) {\n isValid = false\n }\n }\n\n validatedFieldState[path] = validatedField\n },\n )\n\n await Promise.all(validationPromises)\n\n if (!dequal(contextRef.current.fields, validatedFieldState)) {\n dispatchFields({ type: 'REPLACE_STATE', state: validatedFieldState })\n }\n\n setIsValid(isValid)\n\n return isValid\n }, [collectionSlug, config, dispatchFields, id, operation, t, user, documentForm])\n\n const submit = useCallback<Submit>(\n async (options, e) => {\n const {\n acceptValues = true,\n action: actionArg = action,\n context,\n disableFormWhileProcessing = true,\n disableSuccessStatus: disableSuccessStatusFromArgs,\n method: methodToUse = method,\n overrides: overridesFromArgs = {},\n skipValidation,\n } = options || ({} as SubmitOptions)\n\n const disableToast = disableSuccessStatusFromArgs ?? disableSuccessStatus\n\n if (disabled) {\n if (e) {\n e.preventDefault()\n }\n return\n }\n\n // create new toast promise which will resolve manually later\n let errorToast, successToast\n\n const promise = new Promise((resolve, reject) => {\n successToast = resolve\n errorToast = reject\n })\n\n const hasFormSubmitAction =\n actionArg || typeof action === 'string' || typeof action === 'function'\n\n if (redirect || disableToast || !hasFormSubmitAction) {\n // Do not show submitting toast, as the promise toast may never disappear under these conditions.\n // Instead, make successToast() or errorToast() throw toast.success / toast.error\n successToast = (data) => toast.success(data)\n errorToast = (data) => toast.error(data)\n } else {\n toast.promise(promise, {\n error: (data) => {\n return data as string\n },\n loading: t('general:submitting'),\n success: (data) => {\n return data as string\n },\n })\n }\n\n if (e) {\n e.stopPropagation()\n e.preventDefault()\n }\n\n if (disableFormWhileProcessing) {\n setProcessing(true)\n setDisabled(true)\n }\n\n if (waitForAutocomplete) {\n await wait(100)\n }\n\n const data = reduceFieldsToValues(contextRef.current.fields, true)\n\n const serializableFormState = deepCopyObjectSimpleWithoutReactComponents(\n contextRef.current.fields,\n {\n excludeFiles: true,\n },\n )\n\n // Execute server side validations\n if (Array.isArray(beforeSubmit)) {\n let revalidatedFormState: FormState\n\n await beforeSubmit.reduce(async (priorOnChange, beforeSubmitFn) => {\n await priorOnChange\n\n const result = await beforeSubmitFn({\n formState: serializableFormState,\n })\n\n revalidatedFormState = result\n }, Promise.resolve())\n\n const isValid = Object.entries(revalidatedFormState).every(\n ([, field]) => field.valid !== false,\n )\n\n setIsValid(isValid)\n\n if (!isValid) {\n setProcessing(false)\n setSubmitted(true)\n setDisabled(false)\n return dispatchFields({ type: 'REPLACE_STATE', state: revalidatedFormState })\n }\n }\n\n const isValid =\n skipValidation || disableValidationOnSubmit ? true : await contextRef.current.validateForm()\n\n setIsValid(isValid)\n\n // If not valid, prevent submission\n if (!isValid) {\n errorToast(t('error:correctInvalidFields'))\n setProcessing(false)\n setSubmitted(true)\n setDisabled(false)\n return\n }\n\n let overrides = {}\n\n if (typeof overridesFromArgs === 'function') {\n overrides = overridesFromArgs(contextRef.current.fields)\n } else if (typeof overridesFromArgs === 'object') {\n overrides = overridesFromArgs\n }\n\n // If submit handler comes through via props, run that\n if (onSubmit) {\n for (const [key, value] of Object.entries(overrides)) {\n data[key] = value\n }\n\n onSubmit(contextRef.current.fields, data)\n }\n\n if (!hasFormSubmitAction) {\n // No action provided, so we should return. An example where this happens are lexical link drawers. Upon submitting the drawer, we\n // want to close it without submitting the form. Stuff like validation would be handled by lexical before this, through beforeSubmit\n setProcessing(false)\n setSubmitted(true)\n setDisabled(false)\n return\n }\n\n try {\n const formData = await contextRef.current.createFormData(overrides, {\n data,\n mergeOverrideData: Boolean(typeof overridesFromArgs !== 'function'),\n })\n\n let res\n\n if (typeof actionArg === 'string') {\n res = await requests[methodToUse.toLowerCase()](actionArg, {\n body: formData,\n headers: {\n 'Accept-Language': i18n.language,\n },\n })\n } else if (typeof action === 'function') {\n res = await action(formData)\n }\n\n if (!modifiedWhileProcessingRef.current) {\n setModified(false)\n } else {\n modifiedWhileProcessingRef.current = false\n }\n\n setDisabled(false)\n\n if (typeof handleResponse === 'function') {\n handleResponse(res, successToast, errorToast)\n return\n }\n\n const contentType = res.headers.get('content-type')\n const isJSON = contentType && contentType.indexOf('application/json') !== -1\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let json: Record<string, any> = {}\n\n if (isJSON) {\n json = await res.json()\n }\n\n if (res.status < 400) {\n if (typeof onSuccess === 'function') {\n const newFormState = await onSuccess(json, {\n context,\n formState: serializableFormState,\n })\n\n if (newFormState) {\n dispatchFields({\n type: 'MERGE_SERVER_STATE',\n acceptValues,\n prevStateRef: prevFormState,\n serverState: newFormState,\n })\n }\n }\n\n setSubmitted(false)\n setProcessing(false)\n\n if (redirect) {\n startRouteTransition(() => router.push(redirect))\n } else if (!disableToast) {\n successToast(json.message || t('general:submissionSuccessful'))\n }\n } else {\n setProcessing(false)\n setSubmitted(true)\n\n // When there was an error submitting a draft,\n // set the form state to unsubmitted, to not trigger visible form validation on changes after the failed submit.\n // Also keep the form as modified so the save button remains enabled for retry.\n if (overridesFromArgs['_status'] === 'draft') {\n setModified(true)\n\n if (!validateDrafts) {\n setSubmitted(false)\n }\n }\n\n contextRef.current = { ...contextRef.current } // triggers rerender of all components that subscribe to form\n\n if (json.message) {\n errorToast(json.message)\n return\n }\n\n if (Array.isArray(json.errors)) {\n const [fieldErrors, nonFieldErrors] = json.errors.reduce(\n ([fieldErrs, nonFieldErrs], err) => {\n const newFieldErrs = []\n const newNonFieldErrs = []\n\n if (err?.message) {\n newNonFieldErrs.push(err)\n }\n\n if (Array.isArray(err?.data?.errors)) {\n err.data?.errors.forEach((dataError) => {\n if (dataError?.path) {\n newFieldErrs.push(dataError)\n } else {\n newNonFieldErrs.push(dataError)\n }\n })\n }\n\n return [\n [...fieldErrs, ...newFieldErrs],\n [...nonFieldErrs, ...newNonFieldErrs],\n ]\n },\n [[], []],\n )\n\n setIsValid(false)\n\n dispatchFields({\n type: 'ADD_SERVER_ERRORS',\n errors: fieldErrors,\n })\n\n nonFieldErrors.forEach((err) => {\n errorToast(<FieldErrorsToast errorMessage={err.message || t('error:unknown')} />)\n })\n\n return\n }\n\n const message = errorMessages?.[res.status] || res?.statusText || t('error:unknown')\n\n errorToast(message)\n }\n\n return { formState: contextRef.current.fields, res }\n } catch (err) {\n console.error('Error submitting form', err) // eslint-disable-line no-console\n setProcessing(false)\n setSubmitted(true)\n setDisabled(false)\n errorToast(err.message)\n }\n },\n [\n beforeSubmit,\n startRouteTransition,\n action,\n disableSuccessStatus,\n disableValidationOnSubmit,\n disabled,\n dispatchFields,\n handleResponse,\n method,\n onSubmit,\n onSuccess,\n redirect,\n router,\n t,\n i18n,\n validateDrafts,\n waitForAutocomplete,\n setModified,\n setSubmitted,\n ],\n )\n\n const getFields = useCallback(() => contextRef.current.fields, [])\n\n const getField = useCallback((path: string) => contextRef.current.fields[path], [])\n\n const getData = useCallback(() => reduceFieldsToValues(contextRef.current.fields, true), [])\n\n const getSiblingData = useCallback(\n (path: string) => getSiblingDataFunc(contextRef.current.fields, path),\n [],\n )\n\n const getDataByPath = useCallback<GetDataByPath>(\n (path: string) => getDataByPathFunc(contextRef.current.fields, path),\n [],\n )\n\n const createFormData = useCallback<CreateFormData>(\n async (overrides, { data: dataFromArgs, mergeOverrideData = true }) => {\n let data = dataFromArgs || reduceFieldsToValues(contextRef.current.fields, true)\n\n let file = data?.file\n\n if (docConfig && 'upload' in docConfig && docConfig.upload && file) {\n delete data.file\n\n const handler = getUploadHandler({ collectionSlug })\n\n if (typeof handler === 'function') {\n let filename = file.name\n const clientUploadContext = await handler({\n file,\n updateFilename: (value) => {\n filename = value\n },\n })\n\n file = JSON.stringify({\n clientUploadContext,\n collectionSlug,\n filename,\n mimeType: file.type,\n size: file.size,\n })\n }\n }\n\n if (mergeOverrideData) {\n data = {\n ...data,\n ...overrides,\n }\n } else {\n data = overrides\n }\n\n const dataToSerialize: Record<string, unknown> = {\n _payload: JSON.stringify(data),\n }\n\n if (docConfig && 'upload' in docConfig && docConfig.upload && file) {\n dataToSerialize.file = file\n }\n\n // nullAsUndefineds is important to allow uploads and relationship fields to clear themselves\n const formData = serialize(dataToSerialize, {\n indices: true,\n nullsAsUndefineds: false,\n })\n\n return formData\n },\n [collectionSlug, docConfig, getUploadHandler],\n )\n\n const reset = useCallback(\n async (data: unknown) => {\n const controller = handleAbortRef(abortResetFormRef)\n\n const docPreferences = await getDocPreferences()\n\n const { state: newState } = await getFormState({\n id,\n collectionSlug,\n data,\n docPermissions,\n docPreferences,\n globalSlug,\n locale,\n operation,\n renderAllFields: true,\n schemaPath: collectionSlug ? collectionSlug : globalSlug,\n signal: controller.signal,\n skipValidation: true,\n })\n\n contextRef.current = { ...initContextState } as FormContextType\n setModified(false)\n dispatchFields({ type: 'REPLACE_STATE', state: newState })\n\n abortResetFormRef.current = null\n },\n [\n collectionSlug,\n dispatchFields,\n globalSlug,\n id,\n operation,\n getFormState,\n docPermissions,\n getDocPreferences,\n locale,\n setModified,\n ],\n )\n\n const replaceState = useCallback(\n (state: FormState) => {\n contextRef.current = { ...initContextState } as FormContextType\n setModified(false)\n dispatchFields({ type: 'REPLACE_STATE', state })\n },\n [dispatchFields, setModified],\n )\n\n const addFieldRow: FormContextType['addFieldRow'] = useCallback(\n ({ blockType, path, rowIndex: rowIndexArg, subFieldState }) => {\n const newRows: unknown[] = getDataByPath(path) || []\n const rowIndex = rowIndexArg === undefined ? newRows.length : rowIndexArg\n\n // dispatch ADD_ROW adds a blank row to local form state.\n // This performs no form state request, as the debounced onChange effect will do that for us.\n dispatchFields({\n type: 'ADD_ROW',\n blockType,\n path,\n rowIndex,\n subFieldState,\n })\n\n setModified(true)\n },\n [dispatchFields, getDataByPath, setModified],\n )\n\n const moveFieldRow: FormContextType['moveFieldRow'] = useCallback(\n ({ moveFromIndex, moveToIndex, path }) => {\n dispatchFields({\n type: 'MOVE_ROW',\n moveFromIndex,\n moveToIndex,\n path,\n })\n\n setModified(true)\n },\n [dispatchFields, setModified],\n )\n\n const removeFieldRow: FormContextType['removeFieldRow'] = useCallback(\n ({ path, rowIndex }) => {\n dispatchFields({ type: 'REMOVE_ROW', path, rowIndex })\n\n setModified(true)\n },\n [dispatchFields, setModified],\n )\n\n const replaceFieldRow: FormContextType['replaceFieldRow'] = useCallback(\n ({ blockType, path, rowIndex: rowIndexArg, subFieldState }) => {\n const currentRows: unknown[] = getDataByPath(path)\n const rowIndex = rowIndexArg === undefined ? currentRows.length : rowIndexArg\n\n dispatchFields({\n type: 'REPLACE_ROW',\n blockType,\n path,\n rowIndex,\n subFieldState,\n })\n\n setModified(true)\n },\n [dispatchFields, getDataByPath, setModified],\n )\n\n useEffect(() => {\n const abortOnChange = abortResetFormRef.current\n\n return () => {\n abortAndIgnore(abortOnChange)\n }\n }, [])\n\n useEffect(() => {\n if (initializingFromProps !== undefined) {\n setInitializing(initializingFromProps)\n }\n }, [initializingFromProps])\n\n contextRef.current.submit = submit\n contextRef.current.getFields = getFields\n contextRef.current.getField = getField\n contextRef.current.getData = getData\n contextRef.current.getSiblingData = getSiblingData\n contextRef.current.getDataByPath = getDataByPath\n contextRef.current.validateForm = validateForm\n contextRef.current.createFormData = createFormData\n contextRef.current.setModified = setModified\n contextRef.current.setProcessing = setProcessing\n contextRef.current.setBackgroundProcessing = setBackgroundProcessing\n\n contextRef.current.setSubmitted = setSubmitted\n contextRef.current.setIsValid = setIsValid\n contextRef.current.disabled = disabled\n contextRef.current.setDisabled = setDisabled\n contextRef.current.formRef = formRef\n contextRef.current.reset = reset\n contextRef.current.replaceState = replaceState\n contextRef.current.dispatchFields = dispatchFields\n contextRef.current.addFieldRow = addFieldRow\n contextRef.current.removeFieldRow = removeFieldRow\n contextRef.current.moveFieldRow = moveFieldRow\n contextRef.current.replaceFieldRow = replaceFieldRow\n contextRef.current.uuid = uuid\n contextRef.current.initializing = initializing\n contextRef.current.isValid = isValid\n\n useEffect(() => {\n setIsMounted(true)\n }, [])\n\n useEffect(() => {\n if (typeof disabledFromProps === 'boolean') {\n setDisabled(disabledFromProps)\n }\n }, [disabledFromProps])\n\n useEffect(() => {\n if (typeof submittedFromProps === 'boolean') {\n setSubmitted(submittedFromProps)\n }\n }, [submittedFromProps])\n\n useEffect(() => {\n if (initialState) {\n contextRef.current = { ...initContextState } as FormContextType\n dispatchFields({\n type: 'REPLACE_STATE',\n optimize: false,\n sanitize: true,\n state: initialState,\n })\n }\n }, [initialState, dispatchFields])\n\n useThrottledEffect(\n () => {\n refreshCookie()\n },\n 15000,\n [formState],\n )\n\n const handleLocaleChange = useEffectEvent(() => {\n contextRef.current = { ...contextRef.current } // triggers rerender of all components that subscribe to form\n setModified(false)\n })\n\n useEffect(() => {\n handleLocaleChange()\n }, [locale])\n\n const classes = [className, baseClass].filter(Boolean).join(' ')\n\n const executeOnChange = useEffectEvent((submitted: boolean) => {\n queueTask(async () => {\n if (Array.isArray(onChange)) {\n let serverState: FormState\n\n for (const onChangeFn of onChange) {\n // Edit view default onChange is in packages/ui/src/views/Edit/index.tsx. This onChange usually sends a form state request\n serverState = await onChangeFn({\n formState: deepCopyObjectSimpleWithoutReactComponents(formState, {\n excludeFiles: true,\n }),\n submitted,\n })\n }\n\n dispatchFields({\n type: 'MERGE_SERVER_STATE',\n prevStateRef: prevFormState,\n serverState,\n })\n }\n })\n })\n\n useDebouncedEffect(\n () => {\n if ((isFirstRenderRef.current || !dequal(formState, prevFormState.current)) && modified) {\n executeOnChange(submitted)\n }\n\n prevFormState.current = formState\n isFirstRenderRef.current = false\n },\n [modified, submitted, formState],\n 250,\n )\n\n const DocumentFormContextComponent: React.FC<any> = isDocumentForm\n ? DocumentFormContext\n : React.Fragment\n\n const documentFormContextProps = isDocumentForm\n ? {\n value: contextRef.current,\n }\n : {}\n\n const El: 'form' = (el as unknown as 'form') || 'form'\n\n return (\n <El\n action={typeof action === 'function' ? void action : action}\n className={classes}\n /**\n * data-form-ready signals if the form is ready to be used. This is used by our e2e tests\n * to wait for the form to be ready before interacting with it, reducing flakiness if the test is run in\n * slow network conditions.\n */\n data-form-ready={!processing && isMounted && !initializing}\n method={method}\n noValidate\n onSubmit={(e) => void contextRef.current.submit({}, e)}\n ref={formRef}\n >\n <DocumentFormContextComponent {...documentFormContextProps}>\n <FormContext value={contextRef.current}>\n <FormWatchContext\n value={{\n fields: formState,\n ...contextRef.current,\n }}\n >\n <SubmittedContext value={submitted}>\n <InitializingContext value={!isMounted || (isMounted && initializing)}>\n <ProcessingContext value={processing}>\n <BackgroundProcessingContext value={backgroundProcessing}>\n <ModifiedContext value={modified}>\n {/* eslint-disable-next-line @eslint-react/no-context-provider */}\n <FormFieldsContext.Provider value={fieldsReducer}>\n {children}\n </FormFieldsContext.Provider>\n </ModifiedContext>\n </BackgroundProcessingContext>\n </ProcessingContext>\n </InitializingContext>\n </SubmittedContext>\n </FormWatchContext>\n </FormContext>\n </DocumentFormContextComponent>\n </El>\n )\n}\n\nexport {\n DocumentFormContext,\n FormContext,\n FormFieldsContext,\n FormWatchContext,\n ModifiedContext,\n ProcessingContext,\n SubmittedContext,\n useAllFormFields,\n useDocumentForm,\n useForm,\n useFormFields,\n useFormModified,\n useFormProcessing,\n useFormSubmitted,\n useWatchForm,\n} from './context.js'\n\nexport { FormProps }\n", "'use client'\n\nimport React from 'react'\n\nfunction groupSimilarErrors(items: string[]): string[] {\n const result: string[] = []\n\n for (const item of items) {\n if (item) {\n const parts = item.split(' → ')\n let inserted = false\n\n // Find a place where a similar path exists\n for (let i = 0; i < result.length; i++) {\n if (result[i].startsWith(parts[0])) {\n result.splice(i + 1, 0, item)\n inserted = true\n break\n }\n }\n\n // If no similar path was found, add to the end\n if (!inserted) {\n result.push(item)\n }\n }\n }\n\n return result\n}\n\nfunction createErrorsFromMessage(message: string): {\n errors?: string[]\n message: string\n} {\n const [intro, errorsString] = message.split(':')\n\n if (!errorsString) {\n return {\n message: intro,\n }\n }\n\n const errors = errorsString.split(',').map((error) => error.replaceAll(' > ', ' → ').trim())\n\n if (errors.length === 1) {\n return {\n errors,\n message: `${intro}: `,\n }\n }\n\n return {\n errors: groupSimilarErrors(errors),\n message: `${intro} (${errors.length}):`,\n }\n}\n\nexport function FieldErrorsToast({ errorMessage }) {\n const [{ errors, message }] = React.useState(() => createErrorsFromMessage(errorMessage))\n\n return (\n <div>\n {message}\n {Array.isArray(errors) && errors.length > 0 ? (\n errors.length === 1 ? (\n <span data-testid=\"field-error\">{errors[0]}</span>\n ) : (\n <ul data-testid=\"field-errors\">\n {errors.map((error, index) => {\n return <li key={index}>{error}</li>\n })}\n </ul>\n )\n ) : null}\n </div>\n )\n}\n", "'use client'\nimport type { DependencyList } from 'react'\n\nimport { useEffect, useState } from 'react'\n\nexport function useDebouncedEffect(effect: () => void, deps: DependencyList, delay: number): void {\n const [debouncedEffect, setDebouncedEffect] = useState<() => void>(() => effect)\n\n useEffect(() => {\n const handler = setTimeout(() => {\n setDebouncedEffect(() => effect)\n }, delay)\n\n return () => {\n clearTimeout(handler)\n }\n }, [...deps, delay])\n\n useEffect(() => {\n debouncedEffect()\n }, [debouncedEffect])\n}\n", "'use client'\nimport type { UploadCollectionSlug } from 'payload'\n\nimport React, { useState } from 'react'\n\ntype UploadHandler = (args: {\n file: File\n updateFilename: (filename: string) => void\n}) => Promise<unknown>\n\nexport type UploadHandlersContext = {\n getUploadHandler: (args: { collectionSlug: UploadCollectionSlug }) => null | UploadHandler\n setUploadHandler: (args: {\n collectionSlug: UploadCollectionSlug\n handler: UploadHandler\n }) => unknown\n}\n\nconst Context = React.createContext<null | UploadHandlersContext>(null)\n\nexport const UploadHandlersProvider = ({ children }) => {\n const [uploadHandlers, setUploadHandlers] = useState<Map<UploadCollectionSlug, UploadHandler>>(\n () => new Map(),\n )\n\n const getUploadHandler: UploadHandlersContext['getUploadHandler'] = ({ collectionSlug }) => {\n return uploadHandlers.get(collectionSlug)\n }\n\n const setUploadHandler: UploadHandlersContext['setUploadHandler'] = ({\n collectionSlug,\n handler,\n }) => {\n setUploadHandlers((uploadHandlers) => {\n const clone = new Map(uploadHandlers)\n clone.set(collectionSlug, handler)\n return clone\n })\n }\n\n return <Context value={{ getUploadHandler, setUploadHandler }}>{children}</Context>\n}\n\nexport const useUploadHandlers = (): UploadHandlersContext => {\n const context = React.use(Context)\n\n if (context === null) {\n throw new Error('useUploadHandlers must be used within UploadHandlersProvider')\n }\n\n return context\n}\n", "'use client'\nexport const errorMessages = {\n 413: 'Your request was too large to submit successfully.',\n}\n", "'use client'\nimport type { FormField, FormState, Row } from 'payload'\n\nimport ObjectIdImport from 'bson-objectid'\nimport { dequal } from 'dequal/lite' // lite: no need for Map and Set support\nimport { deepCopyObjectSimpleWithoutReactComponents } from 'payload/shared'\n\nimport type { FieldAction } from './types.js'\n\nimport { mergeServerFormState } from './mergeServerFormState.js'\nimport { flattenRows, separateRows } from './rows.js'\n\nconst ObjectId = 'default' in ObjectIdImport ? ObjectIdImport.default : ObjectIdImport\n\n/**\n * Reducer which modifies the form field state (all the current data of the fields in the form). When called using dispatch, it will return a new state object.\n */\nexport function fieldReducer(state: FormState, action: FieldAction): FormState {\n switch (action.type) {\n case 'ADD_ROW': {\n const { blockType, path, rowIndex: rowIndexFromArgs, subFieldState = {} } = action\n\n const rowIndex =\n typeof rowIndexFromArgs === 'number' ? rowIndexFromArgs : state[path]?.rows?.length || 0\n\n const withNewRow = [...(state[path]?.rows || [])]\n\n const newRow: Row = {\n id: (subFieldState?.id?.value as string) || new ObjectId().toHexString(),\n isLoading: true,\n }\n\n if (blockType) {\n newRow.blockType = blockType\n }\n\n withNewRow.splice(rowIndex, 0, newRow)\n\n if (blockType) {\n subFieldState.blockType = {\n initialValue: blockType,\n valid: true,\n value: blockType,\n }\n }\n\n // add new row to array _field state_\n const { remainingFields, rows: siblingRows } = separateRows(path, state)\n\n siblingRows.splice(rowIndex, 0, subFieldState)\n\n const newState: FormState = {\n ...remainingFields,\n ...flattenRows(path, siblingRows),\n [`${path}.${rowIndex}.id`]: {\n initialValue: newRow.id,\n passesCondition: true,\n valid: true,\n value: newRow.id,\n },\n [path]: {\n ...state[path],\n disableFormData: true,\n rows: withNewRow,\n value: siblingRows.length,\n },\n }\n\n return newState\n }\n\n case 'ADD_SERVER_ERRORS': {\n let newState = { ...state }\n\n const errorPaths: { fieldErrorPath: string; parentPath: string }[] = []\n\n action.errors.forEach(({ message, path: fieldPath }) => {\n newState[fieldPath] = {\n ...(newState[fieldPath] || {\n initialValue: null,\n value: null,\n }),\n errorMessage: message,\n valid: false,\n }\n\n const segments = fieldPath.split('.')\n if (segments.length > 1) {\n errorPaths.push({\n fieldErrorPath: fieldPath,\n parentPath: segments.slice(0, segments.length - 1).join('.'),\n })\n }\n })\n\n newState = Object.entries(newState).reduce((acc, [path, fieldState]) => {\n const fieldErrorPaths = errorPaths.reduce((errorACC, { fieldErrorPath, parentPath }) => {\n if (parentPath.startsWith(path)) {\n errorACC.push(fieldErrorPath)\n }\n return errorACC\n }, [])\n\n let changed = false\n\n if (fieldErrorPaths.length > 0) {\n const newErrorPaths = Array.isArray(fieldState.errorPaths) ? fieldState.errorPaths : []\n\n fieldErrorPaths.forEach((fieldErrorPath) => {\n if (!newErrorPaths.includes(fieldErrorPath)) {\n newErrorPaths.push(fieldErrorPath)\n changed = true\n }\n })\n\n if (changed) {\n acc[path] = {\n ...fieldState,\n errorPaths: newErrorPaths,\n }\n }\n }\n\n if (!changed) {\n acc[path] = fieldState\n }\n\n return acc\n }, {})\n\n return newState\n }\n\n /**\n * Duplicates a row in an array or blocks field.\n * It needs to manipulate two distinct parts of the form state:\n * - The `rows` property of the parent field, e.g. `array.rows`, `blocks.rows`, etc.\n * - The row's state, e.g. `array.0.id`, `array.0.text`, etc.\n */\n case 'DUPLICATE_ROW': {\n const { path, rowIndex } = action\n const { remainingFields, rows } = separateRows(path, state)\n\n // 1. Duplicate the `rows` property of the parent field, e.g. `array.rows`, `blocks.rows`, etc.\n const newRows = [...(state[path].rows || [])]\n\n const newRow = deepCopyObjectSimpleWithoutReactComponents(newRows[rowIndex])\n\n const newRowID = new ObjectId().toHexString()\n\n if (newRow.id) {\n newRow.id = newRowID\n }\n\n if (newRows[rowIndex]?.customComponents?.RowLabel) {\n newRow.customComponents = {\n RowLabel: newRows[rowIndex].customComponents.RowLabel,\n }\n }\n\n // 2. Duplicate the row's state, e.g. `array.0.id`, `array.0.text`, etc.\n const newRowState = deepCopyObjectSimpleWithoutReactComponents(rows[rowIndex])\n\n // Ensure that `id` in form state exactly matches the row id on the parent field\n if (newRowState.id) {\n newRowState.id.value = newRowID\n newRowState.id.initialValue = newRowID\n }\n\n // Generate new ids for all nested id fields, e.g. `array.0.nestedArray.0.id`\n for (const key of Object.keys(newRowState).filter((key) => key.endsWith('.id'))) {\n const idState = newRowState[key]\n\n const newNestedFieldID = new ObjectId().toHexString()\n\n if (idState && typeof idState.value === 'string' && ObjectId.isValid(idState.value)) {\n newRowState[key].value = newNestedFieldID\n newRowState[key].initialValue = newNestedFieldID\n\n // Apply the ID to its corresponding parent field's rows, e.g. `array.0.nestedArray.rows[0].id`\n const segments = key.split('.')\n const rowIndex = parseInt(segments[segments.length - 2], 10)\n const parentFieldPath = segments.slice(0, segments.length - 2).join('.')\n const parentFieldRows = newRowState?.[parentFieldPath]?.rows\n\n if (newRowState[parentFieldPath] && Array.isArray(parentFieldRows)) {\n if (!parentFieldRows[rowIndex]) {\n parentFieldRows[rowIndex] = {\n id: newNestedFieldID,\n }\n } else {\n parentFieldRows[rowIndex].id = newNestedFieldID\n }\n }\n }\n }\n\n // If there are subfields\n if (Object.keys(newRowState).length > 0) {\n // Add new object containing subfield names to unflattenedRows array\n rows.splice(rowIndex + 1, 0, newRowState)\n newRows.splice(rowIndex + 1, 0, newRow)\n }\n\n const newState = {\n ...remainingFields,\n ...flattenRows(path, rows),\n [path]: {\n ...state[path],\n disableFormData: true,\n rows: newRows,\n value: rows.length,\n },\n }\n\n return newState\n }\n\n case 'MERGE_SERVER_STATE': {\n const { acceptValues, prevStateRef, serverState } = action\n\n const newState = mergeServerFormState({\n acceptValues,\n currentState: state || {},\n incomingState: serverState,\n })\n\n prevStateRef.current = newState\n\n return newState\n }\n\n case 'MOVE_ROW': {\n const { moveFromIndex, moveToIndex, path } = action\n\n // Handle moving rows on the top-level, i.e. `array.0.text` -> `array.1.text`\n const { remainingFields, rows: topLevelRows } = separateRows(path, state)\n const copyOfMovingRow = topLevelRows[moveFromIndex]\n topLevelRows.splice(moveFromIndex, 1)\n topLevelRows.splice(moveToIndex, 0, copyOfMovingRow)\n\n // modify array/block internal row state (i.e. collapsed, blockType)\n const rowsWithinField = [...(state[path]?.rows || [])]\n const copyOfMovingRow2 = { ...rowsWithinField[moveFromIndex] }\n rowsWithinField.splice(moveFromIndex, 1)\n rowsWithinField.splice(moveToIndex, 0, copyOfMovingRow2)\n\n const newState = {\n ...remainingFields,\n ...flattenRows(path, topLevelRows),\n [path]: {\n ...state[path],\n rows: rowsWithinField,\n },\n }\n\n return newState\n }\n\n case 'REMOVE': {\n const newState = { ...state }\n if (newState[action.path]) {\n delete newState[action.path]\n }\n return newState\n }\n\n case 'REMOVE_ROW': {\n const { path, rowIndex } = action\n const { remainingFields, rows } = separateRows(path, state)\n const rowsMetadata = [...(state[path]?.rows || [])]\n\n rows.splice(rowIndex, 1)\n rowsMetadata.splice(rowIndex, 1)\n\n const newState: FormState = {\n ...remainingFields,\n [path]: {\n ...state[path],\n disableFormData: rows.length > 0,\n rows: rowsMetadata,\n value: rows.length,\n },\n ...flattenRows(path, rows),\n }\n\n return newState\n }\n\n case 'REPLACE_ROW': {\n const { blockType, path, rowIndex: rowIndexArg, subFieldState = {} } = action\n\n const { remainingFields, rows: siblingRows } = separateRows(path, state)\n const rowIndex = Math.max(0, Math.min(rowIndexArg, siblingRows?.length - 1 || 0))\n\n const rowsMetadata = [...(state[path]?.rows || [])]\n rowsMetadata[rowIndex] = {\n id: new ObjectId().toHexString(),\n blockType: blockType || undefined,\n collapsed: false,\n }\n\n if (blockType) {\n subFieldState.blockType = {\n initialValue: blockType,\n valid: true,\n value: blockType,\n }\n }\n\n // replace form _field state_\n siblingRows[rowIndex] = subFieldState\n\n const newState: FormState = {\n ...remainingFields,\n ...flattenRows(path, siblingRows),\n [path]: {\n ...state[path],\n disableFormData: true,\n rows: rowsMetadata,\n value: siblingRows.length,\n },\n }\n\n return newState\n }\n\n case 'REPLACE_STATE': {\n if (action.optimize !== false) {\n // Only update fields that have changed\n // by comparing old value / initialValue to new\n // ..\n // This is a performance enhancement for saving\n // large documents with hundreds of fields\n const newState: FormState = {}\n\n for (const [path, newField] of Object.entries(action.state)) {\n const oldField = state[path]\n\n if (newField.valid !== false) {\n newField.valid = true\n }\n if (newField.passesCondition !== false) {\n newField.passesCondition = true\n }\n\n if (!dequal(oldField, newField)) {\n newState[path] = newField\n } else if (oldField) {\n newState[path] = oldField\n }\n }\n\n return newState\n }\n\n // TODO: Remove this in 4.0 - this is a temporary fix to prevent a breaking change\n if (action.sanitize) {\n for (const field of Object.values(action.state)) {\n if (field.valid !== false) {\n field.valid = true\n }\n if (field.passesCondition !== false) {\n field.passesCondition = true\n }\n }\n }\n // If we're not optimizing, just set the state to the new state\n return action.state\n }\n\n case 'SET_ALL_ROWS_COLLAPSED': {\n const { path, updatedRows } = action\n\n return {\n ...state,\n [path]: {\n ...state[path],\n rows: updatedRows,\n },\n }\n }\n\n case 'SET_ROW_COLLAPSED': {\n const { path, updatedRows } = action\n\n const newState = {\n ...state,\n [path]: {\n ...state[path],\n rows: updatedRows,\n },\n }\n\n return newState\n }\n\n case 'UPDATE': {\n const newField = Object.entries(action).reduce(\n (field, [key, value]) => {\n if (\n [\n 'disableFormData',\n 'errorMessage',\n 'initialValue',\n 'rows',\n 'valid',\n 'validate',\n 'value',\n ].includes(key)\n ) {\n return {\n ...field,\n [key]: value,\n ...(key === 'value' ? { isModified: true } : {}),\n }\n }\n\n return field\n },\n state?.[action.path] || ({} as FormField),\n )\n\n const newState = {\n ...state,\n [action.path]: newField,\n }\n\n // reset `isModified` in all other fields\n if ('value' in action) {\n for (const [path, field] of Object.entries(newState)) {\n if (path !== action.path && 'isModified' in field) {\n delete newState[path].isModified\n }\n }\n }\n\n return newState\n }\n\n case 'UPDATE_MANY': {\n const newState = { ...state }\n\n Object.entries(action.formState).forEach(([path, field]) => {\n newState[path] = field\n })\n\n return newState\n }\n\n default: {\n return state\n }\n }\n}\n", "'use client'\nimport type { FormState } from 'payload'\n\nimport { dequal } from 'dequal/lite' // lite: no need for Map and Set support\n\n/**\n * If true, will accept all values from the server, overriding any current values in local state.\n * Can also provide an options object for more granular control.\n */\nexport type AcceptValues =\n | {\n /**\n * When `false`, will accept the values from the server _UNLESS_ the value has been modified locally since the request was made.\n * This is useful for autosave, for example, where hooks may have modified the field's value on the server while you were still making changes.\n * @default undefined\n */\n overrideLocalChanges?: boolean\n }\n | boolean\n\ntype Args = {\n acceptValues?: AcceptValues\n currentState?: FormState\n incomingState: FormState\n}\n\n/**\n * This function receives form state from the server and intelligently merges it into the client state.\n * The server contains extra properties that the client may not have, e.g. custom components and error states.\n * We typically do not want to merge properties that rely on user input, however, such as values, unless explicitly requested.\n * Doing this would cause the client to lose any local changes to those fields.\n *\n * Note: Local state is the source of truth, not the new server state that is getting merged in. This is critical for array row\n * manipulation specifically, where the user may have added, removed, or reordered rows while a request was pending and is now stale.\n *\n * This function applies some defaults, as well as cleans up the server response in preparation for the client.\n * e.g. it will set `valid` and `passesCondition` to true if undefined, and remove `addedByServer` from the response.\n */\nexport const mergeServerFormState = ({\n acceptValues,\n currentState = {},\n incomingState,\n}: Args): FormState => {\n const newState = { ...currentState }\n\n for (const [path, incomingField] of Object.entries(incomingState || {})) {\n if (!(path in currentState) && !incomingField.addedByServer) {\n continue\n }\n\n /**\n * If it's a new field added by the server, always accept the value.\n * Otherwise:\n * a. accept all values when explicitly requested, e.g. on submit\n * b. only accept values for unmodified fields, e.g. on autosave\n */\n const shouldAcceptValue =\n incomingField.addedByServer ||\n acceptValues === true ||\n (typeof acceptValues === 'object' &&\n acceptValues !== null &&\n // Note: Must be explicitly `false`, allow `null` or `undefined` to mean true\n acceptValues.overrideLocalChanges === false &&\n !currentState[path]?.isModified)\n\n let sanitizedIncomingField = incomingField\n\n if (!shouldAcceptValue) {\n /**\n * Note: do not delete properties off `incomingField` as this will mutate the original object\n * Instead, omit them from the destructured object by excluding specific keys\n * This will also ensure we don't set `undefined` into the result unnecessarily\n */\n const { initialValue, value, ...rest } = incomingField\n sanitizedIncomingField = rest\n }\n\n newState[path] = {\n ...currentState[path],\n ...sanitizedIncomingField,\n }\n\n if (\n currentState[path] &&\n 'errorPaths' in currentState[path] &&\n !('errorPaths' in incomingField)\n ) {\n newState[path].errorPaths = []\n }\n\n /**\n * Deeply merge the rows array to ensure changes to local state are not lost while the request was pending\n * For example, the server response could come back with a row which has been deleted on the client\n * Loop over the incoming rows, if it exists in client side form state, merge in any new properties from the server\n * Note: read `currentState` and not `newState` here, as the `rows` property have already been merged above\n */\n if (Array.isArray(incomingField.rows) && path in currentState) {\n newState[path].rows = [...(currentState[path]?.rows || [])] // shallow copy to avoid mutating the original array\n\n incomingField.rows.forEach((row) => {\n const indexInCurrentState = currentState[path].rows?.findIndex(\n (existingRow) => existingRow.id === row.id,\n )\n\n if (indexInCurrentState > -1) {\n newState[path].rows[indexInCurrentState] = {\n ...currentState[path].rows[indexInCurrentState],\n ...row,\n }\n } else if (row.addedByServer) {\n /**\n * Note: This is a known limitation of computed array and block rows\n * If a new row was added by the server, we append it to the _end_ of this array\n * This is because the client is the source of truth, and it has arrays ordered in a certain position\n * For example, the user may have re-ordered rows client-side while a long running request is processing\n * This means that we _cannot_ slice a new row into the second position on the server, for example\n * By the time it gets back to the client, its index is stale\n */\n const newRow = { ...row }\n delete newRow.addedByServer\n newState[path].rows.push(newRow)\n }\n })\n }\n\n // If `valid` is `undefined`, mark it as `true`\n if (incomingField.valid !== false) {\n newState[path].valid = true\n }\n\n // If `passesCondition` is `undefined`, mark it as `true`\n if (incomingField.passesCondition !== false) {\n newState[path].passesCondition = true\n }\n\n /**\n * Undefined values for blocksFilterOptions coming back should be treated as \"all blocks allowed\" and\n * should always be merged in.\n * Without this, an undefined value coming back will incorrectly be ignored, and the previous filter will remain.\n */\n if (!incomingField.blocksFilterOptions) {\n delete newState[path].blocksFilterOptions\n }\n\n // Strip away the `addedByServer` property from the client\n // This will prevent it from being passed back to the server\n delete newState[path].addedByServer\n }\n\n // Return the original object reference if the state is unchanged\n // This will avoid unnecessary re-renders and dependency updates\n return dequal(newState, currentState) ? currentState : newState\n}\n", "'use client'\nimport type { FormState } from 'payload'\n\ntype Result = {\n remainingFields: FormState\n rows: FormState[]\n}\n\nexport const separateRows = (path: string, fields: FormState): Result => {\n const remainingFields: FormState = {}\n\n const rows = Object.entries(fields).reduce((incomingRows, [fieldPath, field]) => {\n const newRows = incomingRows\n\n if (fieldPath.indexOf(`${path}.`) === 0) {\n const [rowIndex] = fieldPath.replace(`${path}.`, '').split('.')\n if (!newRows[rowIndex]) {\n newRows[rowIndex] = {}\n }\n newRows[rowIndex][fieldPath.replace(`${path}.${String(rowIndex)}.`, '')] = { ...field }\n } else {\n remainingFields[fieldPath] = field\n }\n\n return newRows\n }, [])\n\n return {\n remainingFields,\n rows,\n }\n}\n\nexport const flattenRows = (path: string, rows: FormState[]): FormState => {\n return rows.reduce(\n (fields, row, i) => ({\n ...fields,\n ...Object.entries(row).reduce((subFields, [subPath, subField]) => {\n return {\n ...subFields,\n [`${path}.${i}.${subPath}`]: { ...subField },\n }\n }, {}),\n }),\n {},\n )\n}\n", "'use client'\nimport type { Data, FormField, FormState } from 'payload'\n\nimport type {\n Context,\n CreateFormData,\n DispatchFields,\n GetSiblingData,\n Reset,\n SetModified,\n SetProcessing,\n SetSubmitted,\n Submit,\n ValidateForm,\n} from './types.js'\n\nconst submit: Submit = () => undefined\nconst getSiblingData: GetSiblingData = () => undefined\nconst dispatchFields: DispatchFields = () => undefined\nconst validateForm: ValidateForm = () => undefined\nconst createFormData: CreateFormData = () => undefined\n\nconst setModified: SetModified = () => undefined\nconst setProcessing: SetProcessing = () => undefined\nconst setBackgroundProcessing: SetProcessing = () => undefined\nconst setSubmitted: SetSubmitted = () => undefined\nconst reset: Reset = () => undefined\n\nexport const initContextState: Context = {\n addFieldRow: () => undefined,\n buildRowErrors: () => undefined,\n createFormData,\n disabled: false,\n dispatchFields,\n fields: {},\n formRef: null,\n getData: (): Data => undefined,\n getDataByPath: () => undefined,\n getField: (): FormField => undefined,\n getFields: (): FormState => ({}),\n getSiblingData,\n initializing: undefined,\n isValid: true,\n moveFieldRow: () => undefined,\n removeFieldRow: () => undefined,\n replaceFieldRow: () => undefined,\n replaceState: () => undefined,\n reset,\n setBackgroundProcessing,\n setDisabled: () => undefined,\n setIsValid: () => undefined,\n setModified,\n setProcessing,\n setSubmitted,\n submit,\n\n validateForm,\n}\n", "'use client'\n\nimport type { ClientTab } from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport { tabHasName } from 'payload/shared'\nimport React, { useState } from 'react'\n\nimport { ErrorPill } from '../../../elements/ErrorPill/index.js'\nimport { WatchChildErrors } from '../../../forms/WatchChildErrors/index.js'\nimport { useTranslation } from '../../../providers/Translation/index.js'\nimport './index.scss'\n\nconst baseClass = 'tabs-field__tab-button'\n\ntype TabProps = {\n readonly hidden?: boolean\n readonly isActive?: boolean\n readonly parentPath: string\n readonly setIsActive: () => void\n readonly tab: ClientTab\n}\n\nexport const TabComponent: React.FC<TabProps> = ({\n hidden,\n isActive,\n parentPath,\n setIsActive,\n tab,\n}) => {\n const { i18n } = useTranslation()\n const [errorCount, setErrorCount] = useState(undefined)\n\n const path = [\n // removes parent 'tabs' path segment, i.e. `_index-0`\n ...(parentPath ? parentPath.split('.').slice(0, -1) : []),\n ...(tabHasName(tab) ? [tab.name] : []),\n ]\n\n const fieldHasErrors = errorCount > 0\n\n return (\n <React.Fragment>\n <WatchChildErrors fields={tab.fields} path={path} setErrorCount={setErrorCount} />\n <button\n className={[\n baseClass,\n fieldHasErrors && `${baseClass}--has-error`,\n isActive && `${baseClass}--active`,\n hidden && `${baseClass}--hidden`,\n ]\n .filter(Boolean)\n .join(' ')}\n onClick={setIsActive}\n type=\"button\"\n >\n {tab.label ? getTranslation(tab.label, i18n) : tabHasName(tab) ? tab.name : ''}\n {fieldHasErrors && <ErrorPill count={errorCount} i18n={i18n} />}\n </button>\n </React.Fragment>\n )\n}\n", "'use client'\nimport type { TextFieldClientComponent } from 'payload'\n\nimport React, { useCallback, useEffect, useMemo, useState } from 'react'\n\nimport type { Option } from '../../elements/ReactSelect/types.js'\nimport type { TextInputProps } from './types.js'\n\nimport { useField } from '../../forms/useField/index.js'\nimport { withCondition } from '../../forms/withCondition/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useLocale } from '../../providers/Locale/index.js'\nimport { mergeFieldStyles } from '../mergeFieldStyles.js'\nimport { isFieldRTL } from '../shared/index.js'\nimport { TextInput } from './Input.js'\nimport './index.scss'\n\nexport { TextInput, TextInputProps }\n\nconst TextFieldComponent: TextFieldClientComponent = (props) => {\n const {\n field,\n field: {\n admin: { autoComplete, className, description, placeholder, rtl } = {},\n hasMany,\n label,\n localized,\n maxLength,\n maxRows,\n minLength,\n minRows,\n required,\n },\n inputRef,\n path: pathFromProps,\n readOnly,\n validate,\n } = props\n\n const locale = useLocale()\n\n const {\n config: { localization: localizationConfig },\n } = useConfig()\n\n const memoizedValidate = useCallback(\n (value, options) => {\n if (typeof validate === 'function') {\n return validate(value, { ...options, maxLength, minLength, required })\n }\n },\n [validate, minLength, maxLength, required],\n )\n\n const {\n customComponents: { AfterInput, BeforeInput, Description, Error, Label } = {},\n disabled,\n path,\n setValue,\n showError,\n value,\n } = useField({\n potentiallyStalePath: pathFromProps,\n validate: memoizedValidate,\n })\n\n const renderRTL = isFieldRTL({\n fieldLocalized: localized,\n fieldRTL: rtl,\n locale,\n localizationConfig: localizationConfig || undefined,\n })\n\n const [valueToRender, setValueToRender] = useState<\n { id: string; label: string; value: { value: number } }[]\n >([]) // Only for hasMany\n\n const handleHasManyChange = useCallback(\n (selectedOption) => {\n if (!(readOnly || disabled)) {\n let newValue\n if (!selectedOption) {\n newValue = []\n } else if (Array.isArray(selectedOption)) {\n newValue = selectedOption.map((option) => option.value?.value || option.value)\n } else {\n newValue = [selectedOption.value?.value || selectedOption.value]\n }\n\n setValue(newValue)\n }\n },\n [readOnly, setValue, disabled],\n )\n\n // useEffect update valueToRender:\n useEffect(() => {\n if (hasMany && Array.isArray(value)) {\n setValueToRender(\n value.map((val, index) => {\n return {\n id: `${val}${index}`, // append index to avoid duplicate keys but allow duplicate numbers\n label: `${val}`,\n value: {\n // React-select automatically uses \"label-value\" as a key, so we will get that react duplicate key warning if we just pass in the value as multiple values can be the same. So we need to append the index to the toString() of the value to avoid that warning, as it uses that as the key.\n toString: () => `${val}${index}`,\n value: val?.value || val,\n },\n }\n }),\n )\n }\n }, [value, hasMany])\n\n const styles = useMemo(() => mergeFieldStyles(field), [field])\n\n return (\n <TextInput\n AfterInput={AfterInput}\n BeforeInput={BeforeInput}\n className={className}\n Description={Description}\n description={description}\n Error={Error}\n hasMany={hasMany}\n htmlAttributes={{\n autoComplete: autoComplete || undefined,\n }}\n inputRef={inputRef}\n Label={Label}\n label={label}\n localized={localized}\n maxRows={maxRows}\n minRows={minRows}\n onChange={\n hasMany\n ? handleHasManyChange\n : (e) => {\n setValue(e.target.value)\n }\n }\n path={path}\n placeholder={placeholder}\n readOnly={readOnly || disabled}\n required={required}\n rtl={renderRTL}\n showError={showError}\n style={styles}\n value={(value as string) || ''}\n valueToRender={valueToRender as Option[]}\n />\n )\n}\n\nexport const TextField = withCondition(TextFieldComponent)\n", "'use client'\nimport type { ChangeEvent } from 'react'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport React from 'react'\n\nimport type { ReactSelectAdapterProps } from '../../elements/ReactSelect/types.js'\nimport type { TextInputProps } from './types.js'\n\nimport { ReactSelect } from '../../elements/ReactSelect/index.js'\nimport { RenderCustomComponent } from '../../elements/RenderCustomComponent/index.js'\nimport { FieldDescription } from '../../fields/FieldDescription/index.js'\nimport { FieldError } from '../../fields/FieldError/index.js'\nimport { FieldLabel } from '../../fields/FieldLabel/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { fieldBaseClass } from '../shared/index.js'\nimport './index.scss'\n\nexport const TextInput: React.FC<TextInputProps> = (props) => {\n const {\n AfterInput,\n BeforeInput,\n className,\n Description,\n description,\n Error,\n hasMany,\n htmlAttributes,\n inputRef,\n Label,\n label,\n localized,\n maxRows,\n onChange,\n onKeyDown,\n path,\n placeholder: placeholderFromProps,\n readOnly,\n required,\n rtl,\n showError,\n style,\n value,\n valueToRender,\n } = props\n\n const { i18n, t } = useTranslation()\n\n const editableProps: ReactSelectAdapterProps['customProps']['editableProps'] = (\n data,\n className,\n selectProps,\n ) => {\n const editableClassName = `${className}--editable`\n\n return {\n onBlur: (event: React.FocusEvent<HTMLDivElement>) => {\n event.currentTarget.contentEditable = 'false'\n },\n onClick: (event: React.MouseEvent<HTMLDivElement>) => {\n event.currentTarget.contentEditable = 'true'\n event.currentTarget.classList.add(editableClassName)\n event.currentTarget.focus()\n },\n onKeyDown: (event: React.KeyboardEvent<HTMLDivElement>) => {\n if (\n !event.nativeEvent.isComposing &&\n (event.key === 'Enter' || event.key === 'Tab' || event.key === 'Escape')\n ) {\n event.currentTarget.contentEditable = 'false'\n event.currentTarget.classList.remove(editableClassName)\n data.value.value = event.currentTarget.innerText\n data.label = event.currentTarget.innerText\n\n if (data.value.value.replaceAll('\\n', '')) {\n selectProps.onChange(selectProps.value, {\n action: 'create-option',\n option: data,\n })\n } else {\n if (Array.isArray(selectProps.value)) {\n const newValues = selectProps.value.filter((v) => v.id !== data.id)\n selectProps.onChange(newValues, {\n action: 'pop-value',\n removedValue: data,\n })\n }\n }\n\n event.preventDefault()\n }\n event.stopPropagation()\n },\n }\n }\n\n const placeholder = getTranslation(placeholderFromProps, i18n)\n\n return (\n <div\n className={[\n fieldBaseClass,\n 'text',\n className,\n showError && 'error',\n readOnly && 'read-only',\n hasMany && 'has-many',\n ]\n .filter(Boolean)\n .join(' ')}\n style={style}\n >\n <RenderCustomComponent\n CustomComponent={Label}\n Fallback={\n <FieldLabel label={label} localized={localized} path={path} required={required} />\n }\n />\n <div className={`${fieldBaseClass}__wrap`}>\n <RenderCustomComponent\n CustomComponent={Error}\n Fallback={<FieldError path={path} showError={showError} />}\n />\n {BeforeInput}\n {hasMany ? (\n <ReactSelect\n className={`field-${path.replace(/\\./g, '__')}`}\n components={{ DropdownIndicator: null }}\n customProps={{\n editableProps,\n }}\n disabled={readOnly}\n // prevent adding additional options if maxRows is reached\n filterOption={() =>\n !maxRows ? true : !(Array.isArray(value) && maxRows && value.length >= maxRows)\n }\n isClearable={false}\n isCreatable\n isMulti\n isSortable\n menuIsOpen={false}\n noOptionsMessage={() => {\n const isOverHasMany = Array.isArray(value) && value.length >= maxRows\n if (isOverHasMany) {\n return t('validation:limitReached', { max: maxRows, value: value.length + 1 })\n }\n return null\n }}\n onChange={onChange}\n options={[]}\n placeholder={placeholder}\n showError={showError}\n value={valueToRender}\n />\n ) : (\n <input\n data-rtl={rtl}\n disabled={readOnly}\n id={`field-${path?.replace(/\\./g, '__')}`}\n name={path}\n onChange={onChange as (e: ChangeEvent<HTMLInputElement>) => void}\n onKeyDown={onKeyDown}\n placeholder={placeholder}\n ref={inputRef}\n type=\"text\"\n value={value || ''}\n {...(htmlAttributes ?? {})}\n />\n )}\n {AfterInput}\n <RenderCustomComponent\n CustomComponent={Description}\n Fallback={<FieldDescription description={description} path={path} />}\n />\n </div>\n </div>\n )\n}\n", "'use client'\nimport type { TextareaFieldClientComponent, TextareaFieldValidation } from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport React, { useCallback, useMemo } from 'react'\n\nimport type { TextAreaInputProps } from './types.js'\n\nimport { useField } from '../../forms/useField/index.js'\nimport { withCondition } from '../../forms/withCondition/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useLocale } from '../../providers/Locale/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { mergeFieldStyles } from '../mergeFieldStyles.js'\nimport './index.scss'\nimport { isFieldRTL } from '../shared/index.js'\nimport { TextareaInput } from './Input.js'\n\nexport { TextareaInput, TextAreaInputProps }\n\nconst TextareaFieldComponent: TextareaFieldClientComponent = (props) => {\n const {\n field,\n field: {\n admin: { className, description, placeholder, rows, rtl } = {},\n label,\n localized,\n maxLength,\n minLength,\n required,\n },\n path: pathFromProps,\n readOnly,\n validate,\n } = props\n\n const { i18n } = useTranslation()\n\n const {\n config: { localization },\n } = useConfig()\n\n const locale = useLocale()\n\n const isRTL = isFieldRTL({\n fieldLocalized: localized,\n fieldRTL: rtl,\n locale,\n localizationConfig: localization || undefined,\n })\n\n const memoizedValidate: TextareaFieldValidation = useCallback(\n (value, options) => {\n if (typeof validate === 'function') {\n return validate(value, { ...options, maxLength, minLength, required })\n }\n },\n [validate, required, maxLength, minLength],\n )\n\n const {\n customComponents: { AfterInput, BeforeInput, Description, Error, Label } = {},\n disabled,\n path,\n setValue,\n showError,\n value,\n } = useField<string>({\n potentiallyStalePath: pathFromProps,\n validate: memoizedValidate,\n })\n\n const styles = useMemo(() => mergeFieldStyles(field), [field])\n\n return (\n <TextareaInput\n AfterInput={AfterInput}\n BeforeInput={BeforeInput}\n className={className}\n Description={Description}\n description={description}\n Error={Error}\n Label={Label}\n label={label}\n localized={localized}\n onChange={(e) => {\n setValue(e.target.value)\n }}\n path={path}\n placeholder={getTranslation(placeholder, i18n)}\n readOnly={readOnly || disabled}\n required={required}\n rows={rows}\n rtl={isRTL}\n showError={showError}\n style={styles}\n value={value}\n />\n )\n}\n\nexport const TextareaField = withCondition(TextareaFieldComponent)\n", "'use client'\nimport type { CSSProperties } from 'react'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport React from 'react'\n\nimport type { TextAreaInputProps } from './types.js'\n\nimport { RenderCustomComponent } from '../../elements/RenderCustomComponent/index.js'\nimport { FieldDescription } from '../../fields/FieldDescription/index.js'\nimport { FieldError } from '../../fields/FieldError/index.js'\nimport { FieldLabel } from '../../fields/FieldLabel/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { fieldBaseClass } from '../shared/index.js'\nimport './index.scss'\n\nexport const TextareaInput: React.FC<TextAreaInputProps> = (props) => {\n const {\n AfterInput,\n BeforeInput,\n className,\n Description,\n description,\n Error,\n Label,\n label,\n localized,\n onChange,\n path,\n placeholder,\n readOnly,\n required,\n rows,\n rtl,\n showError,\n style,\n value,\n } = props\n\n const { i18n } = useTranslation()\n\n return (\n <div\n className={[\n fieldBaseClass,\n 'textarea',\n className,\n showError && 'error',\n readOnly && 'read-only',\n ]\n .filter(Boolean)\n .join(' ')}\n style={style}\n >\n <RenderCustomComponent\n CustomComponent={Label}\n Fallback={\n <FieldLabel\n htmlFor={`field-${path.replace(/\\./g, '__')}`}\n label={label}\n localized={localized}\n path={path}\n required={required}\n />\n }\n />\n <div className={`${fieldBaseClass}__wrap`}>\n <RenderCustomComponent\n CustomComponent={Error}\n Fallback={<FieldError path={path} showError={showError} />}\n />\n {BeforeInput}\n <div className=\"textarea-outer\">\n <textarea\n data-rtl={rtl}\n disabled={readOnly}\n id={`field-${path.replace(/\\./g, '__')}`}\n name={path}\n onChange={onChange}\n placeholder={getTranslation(placeholder, i18n)}\n rows={rows}\n style={\n {\n '--rows': rows,\n } as CSSProperties\n }\n value={value || ''}\n />\n </div>\n {AfterInput}\n <RenderCustomComponent\n CustomComponent={Description}\n Fallback={<FieldDescription description={description} path={path} />}\n />\n </div>\n </div>\n )\n}\n", "'use client'\nimport type React from 'react'\n\nexport const UIField: React.FC = () => {\n return null\n}\n", "'use client'\n\nimport type { UploadFieldClientProps, ValueWithRelation } from 'payload'\n\nimport React, { useMemo } from 'react'\n\nimport { BulkUploadProvider } from '../../elements/BulkUpload/index.js'\nimport { useField } from '../../forms/useField/index.js'\nimport { withCondition } from '../../forms/withCondition/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { mergeFieldStyles } from '../mergeFieldStyles.js'\nimport { UploadInput } from './Input.js'\nimport './index.scss'\n\nexport { UploadInput } from './Input.js'\nexport type { UploadInputProps } from './Input.js'\n\nexport const baseClass = 'upload'\n\nexport function UploadComponent(props: UploadFieldClientProps) {\n const {\n field,\n field: {\n admin: { allowCreate, className, description, isSortable } = {},\n hasMany,\n label,\n localized,\n maxRows,\n relationTo: relationToFromProps,\n required,\n },\n path: pathFromProps,\n readOnly,\n validate,\n } = props\n\n const { config } = useConfig()\n\n const displayPreview = field.displayPreview\n\n const memoizedValidate = React.useCallback(\n (value, options) => {\n if (typeof validate === 'function') {\n return validate(value, { ...options, required })\n }\n },\n [validate, required],\n )\n\n const {\n customComponents: { AfterInput, BeforeInput, Description, Error, Label } = {},\n disabled,\n filterOptions,\n path,\n setValue,\n showError,\n value,\n } = useField<string | string[]>({\n potentiallyStalePath: pathFromProps,\n validate: memoizedValidate,\n })\n\n const isPolymorphic = Array.isArray(relationToFromProps)\n\n const memoizedValue:\n | (number | string)[]\n | number\n | string\n | ValueWithRelation\n | ValueWithRelation[] = React.useMemo(() => {\n if (hasMany === true) {\n return (\n Array.isArray(value)\n ? value.map((val) => {\n return isPolymorphic\n ? val\n : {\n relationTo: Array.isArray(relationToFromProps)\n ? relationToFromProps[0]\n : relationToFromProps,\n value: val,\n }\n })\n : value\n ) as ValueWithRelation[]\n } else {\n // Value comes in as string when not polymorphic and with the object with the right relationTo when it is polymorphic\n return value\n }\n }, [hasMany, value, isPolymorphic, relationToFromProps])\n\n const styles = useMemo(() => mergeFieldStyles(field), [field])\n\n return (\n <BulkUploadProvider drawerSlugPrefix={pathFromProps}>\n <UploadInput\n AfterInput={AfterInput}\n allowCreate={allowCreate !== false}\n api={config.routes.api}\n BeforeInput={BeforeInput}\n className={className}\n Description={Description}\n description={description}\n displayPreview={displayPreview}\n Error={Error}\n filterOptions={filterOptions}\n hasMany={hasMany}\n isSortable={isSortable}\n label={label}\n Label={Label}\n localized={localized}\n maxRows={maxRows}\n onChange={setValue}\n path={path}\n readOnly={readOnly || disabled}\n relationTo={relationToFromProps}\n required={required}\n serverURL={config.serverURL}\n showError={showError}\n style={styles}\n value={memoizedValue}\n />\n </BulkUploadProvider>\n )\n}\n\nexport const UploadField = withCondition(UploadComponent)\n", "'use client'\n\nimport type { CollectionSlug, JsonObject } from 'payload'\n\nimport { useModal } from '@faceless-ui/modal'\nimport { validateMimeType } from 'payload/shared'\nimport React, { useEffect } from 'react'\nimport { toast } from 'sonner'\n\nimport { useEffectEvent } from '../../hooks/useEffectEvent.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { EditDepthProvider } from '../../providers/EditDepth/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { UploadControlsProvider } from '../../providers/UploadControls/index.js'\nimport { Drawer, useDrawerDepth } from '../Drawer/index.js'\nimport { AddFilesView } from './AddFilesView/index.js'\nimport { AddingFilesView } from './AddingFilesView/index.js'\nimport { FormsManagerProvider, type InitialForms, useFormsManager } from './FormsManager/index.js'\n\nconst drawerSlug = 'bulk-upload-drawer-slug'\n\nfunction DrawerContent() {\n const { addFiles, forms, isInitializing } = useFormsManager()\n const { closeModal } = useModal()\n const { collectionSlug, drawerSlug } = useBulkUpload()\n const { getEntityConfig } = useConfig()\n const { t } = useTranslation()\n\n const uploadCollection = getEntityConfig({ collectionSlug })\n const uploadConfig = uploadCollection?.upload\n const uploadMimeTypes = uploadConfig?.mimeTypes\n\n const onDrop = React.useCallback(\n (acceptedFiles: FileList) => {\n const fileTransfer = new DataTransfer()\n for (const candidateFile of acceptedFiles) {\n if (\n uploadMimeTypes === undefined ||\n uploadMimeTypes.length === 0 ||\n validateMimeType(candidateFile.type, uploadMimeTypes)\n ) {\n fileTransfer.items.add(candidateFile)\n }\n }\n if (fileTransfer.files.length === 0) {\n toast.error(t('error:invalidFileType'))\n } else {\n void addFiles(fileTransfer.files)\n }\n },\n [addFiles, t, uploadMimeTypes],\n )\n\n if (!collectionSlug) {\n return null\n }\n\n if (!forms.length && !isInitializing) {\n return (\n <AddFilesView\n acceptMimeTypes={uploadMimeTypes?.join(', ')}\n onCancel={() => closeModal(drawerSlug)}\n onDrop={onDrop}\n />\n )\n } else {\n return <AddingFilesView />\n }\n}\n\nexport type BulkUploadProps = {\n readonly children: React.ReactNode\n}\n\nexport function BulkUploadDrawer() {\n const {\n drawerSlug,\n onCancel,\n setInitialFiles,\n setInitialForms,\n setOnCancel,\n setOnSuccess,\n setSelectableCollections,\n setSuccessfullyUploaded,\n successfullyUploaded,\n } = useBulkUpload()\n const { modalState } = useModal()\n const previousModalStateRef = React.useRef(modalState)\n\n /**\n * This is used to trigger onCancel when the drawer is closed (=> forms reset, as FormsManager is unmounted)\n */\n const onModalStateChanged = useEffectEvent((modalState) => {\n const previousModalState = previousModalStateRef.current[drawerSlug]\n const currentModalState = modalState[drawerSlug]\n\n if (typeof currentModalState === 'undefined' && typeof previousModalState === 'undefined') {\n return\n }\n\n if (previousModalState?.isOpen !== currentModalState?.isOpen) {\n if (!currentModalState?.isOpen) {\n if (!successfullyUploaded) {\n // It's only cancelled if successfullyUploaded is not set. Otherwise, this would simply be a modal close after success\n // => do not call cancel, just reset everything\n if (typeof onCancel === 'function') {\n onCancel()\n }\n }\n\n // Reset everything to defaults\n setInitialFiles(undefined)\n setInitialForms(undefined)\n setOnCancel(() => () => null)\n setOnSuccess(() => () => null)\n setSelectableCollections(null)\n setSuccessfullyUploaded(false)\n }\n }\n previousModalStateRef.current = modalState\n })\n\n useEffect(() => {\n onModalStateChanged(modalState)\n }, [modalState])\n\n return (\n <Drawer gutter={false} Header={null} slug={drawerSlug}>\n <FormsManagerProvider>\n <UploadControlsProvider>\n <EditDepthProvider>\n <DrawerContent />\n </EditDepthProvider>\n </UploadControlsProvider>\n </FormsManagerProvider>\n </Drawer>\n )\n}\n\nexport type BulkUploadContext = {\n collectionSlug: CollectionSlug\n drawerSlug: string\n initialFiles: FileList\n /**\n * Like initialFiles, but allows manually providing initial form state or the form ID for each file\n */\n initialForms: InitialForms\n maxFiles: number\n onCancel: () => void\n onSuccess: (\n uploadedForms: Array<{\n collectionSlug: CollectionSlug\n doc: JsonObject\n /**\n * ID of the form that created this document\n */\n formID: string\n }>,\n errorCount: number,\n ) => void\n /**\n * An array of collection slugs that can be selected in the collection dropdown (if applicable)\n * @default null - collection cannot be selected\n */\n selectableCollections?: null | string[]\n setCollectionSlug: (slug: string) => void\n setInitialFiles: (files: FileList) => void\n setInitialForms: (\n forms: ((forms: InitialForms | undefined) => InitialForms | undefined) | InitialForms,\n ) => void\n setMaxFiles: (maxFiles: number) => void\n setOnCancel: (onCancel: BulkUploadContext['onCancel']) => void\n setOnSuccess: (onSuccess: BulkUploadContext['onSuccess']) => void\n /**\n * Set the collections that can be selected in the collection dropdown (if applicable)\n *\n * @default null - collection cannot be selected\n */\n setSelectableCollections: (collections: null | string[]) => void\n setSuccessfullyUploaded: (successfullyUploaded: boolean) => void\n successfullyUploaded: boolean\n}\n\nconst Context = React.createContext<BulkUploadContext>({\n collectionSlug: '',\n drawerSlug: '',\n initialFiles: undefined,\n initialForms: [],\n maxFiles: undefined,\n onCancel: () => null,\n onSuccess: () => null,\n selectableCollections: null,\n setCollectionSlug: () => null,\n setInitialFiles: () => null,\n setInitialForms: () => null,\n setMaxFiles: () => null,\n setOnCancel: () => null,\n setOnSuccess: () => null,\n setSelectableCollections: () => null,\n setSuccessfullyUploaded: () => false,\n successfullyUploaded: false,\n})\nexport function BulkUploadProvider({\n children,\n drawerSlugPrefix,\n}: {\n readonly children: React.ReactNode\n readonly drawerSlugPrefix?: string\n}) {\n const [selectableCollections, setSelectableCollections] = React.useState<null | string[]>(null)\n const [collection, setCollection] = React.useState<string>()\n const [onSuccessFunction, setOnSuccessFunction] = React.useState<BulkUploadContext['onSuccess']>()\n const [onCancelFunction, setOnCancelFunction] = React.useState<BulkUploadContext['onCancel']>()\n const [initialFiles, setInitialFiles] = React.useState<FileList>(undefined)\n const [initialForms, setInitialForms] = React.useState<InitialForms>(undefined)\n const [maxFiles, setMaxFiles] = React.useState<number>(undefined)\n const [successfullyUploaded, setSuccessfullyUploaded] = React.useState<boolean>(false)\n\n const drawerSlug = `${drawerSlugPrefix ? `${drawerSlugPrefix}-` : ''}${useBulkUploadDrawerSlug()}`\n\n const setOnSuccess: BulkUploadContext['setOnSuccess'] = (onSuccess) => {\n setOnSuccessFunction(() => onSuccess)\n }\n const setOnCancel: BulkUploadContext['setOnCancel'] = (onCancel) => {\n setOnCancelFunction(() => onCancel)\n }\n\n return (\n <Context\n value={{\n collectionSlug: collection,\n drawerSlug,\n initialFiles,\n initialForms,\n maxFiles,\n onCancel: () => {\n if (typeof onCancelFunction === 'function') {\n onCancelFunction()\n }\n },\n onSuccess: (newDocs, errorCount) => {\n if (typeof onSuccessFunction === 'function') {\n onSuccessFunction(newDocs, errorCount)\n }\n },\n selectableCollections,\n setCollectionSlug: setCollection,\n setInitialFiles,\n setInitialForms,\n setMaxFiles,\n setOnCancel,\n setOnSuccess,\n setSelectableCollections,\n setSuccessfullyUploaded,\n successfullyUploaded,\n }}\n >\n <React.Fragment>\n {children}\n <BulkUploadDrawer />\n </React.Fragment>\n </Context>\n )\n}\n\nexport const useBulkUpload = () => React.use(Context)\n\nexport function useBulkUploadDrawerSlug() {\n const depth = useDrawerDepth()\n\n return `${drawerSlug}-${depth || 1}`\n}\n", "'use client'\nimport React, { createContext, use, useState } from 'react'\n\nexport type UploadControlsContext = {\n setUploadControlFile: (file: File) => void\n setUploadControlFileName: (name: string) => void\n setUploadControlFileUrl: (url: string) => void\n uploadControlFile: File | null\n uploadControlFileName: null | string\n uploadControlFileUrl: string\n}\n\nconst Context = createContext<UploadControlsContext>(undefined)\n\nexport const UploadControlsProvider: React.FC<{ children: React.ReactNode }> = ({ children }) => {\n const [uploadControlFileName, setUploadControlFileName] = useState<null | string>(null)\n const [uploadControlFileUrl, setUploadControlFileUrl] = useState<string>('')\n const [uploadControlFile, setUploadControlFile] = useState<File | null>(null)\n\n return (\n <Context\n value={{\n setUploadControlFile,\n setUploadControlFileName,\n setUploadControlFileUrl,\n uploadControlFile,\n uploadControlFileName,\n uploadControlFileUrl,\n }}\n >\n {children}\n </Context>\n )\n}\n\nexport const useUploadControls = (): UploadControlsContext => {\n const context = use(Context)\n if (!context) {\n throw new Error('useUploadControls must be used within an UploadControlsProvider')\n }\n return context\n}\n", "'use client'\n\nimport React from 'react'\n\nimport { useTranslation } from '../../../providers/Translation/index.js'\nimport { Button } from '../../Button/index.js'\nimport { Dropzone } from '../../Dropzone/index.js'\nimport { DrawerHeader } from '../Header/index.js'\nimport './index.scss'\n\nconst baseClass = 'bulk-upload--add-files'\n\ntype Props = {\n readonly acceptMimeTypes?: string\n readonly onCancel: () => void\n readonly onDrop: (acceptedFiles: FileList) => void\n}\nexport function AddFilesView({ acceptMimeTypes, onCancel, onDrop }: Props) {\n const { t } = useTranslation()\n\n const inputRef = React.useRef(null)\n\n return (\n <div className={baseClass}>\n <DrawerHeader onClose={onCancel} title={t('upload:addFiles')} />\n <div className={`${baseClass}__dropArea`}>\n <Dropzone multipleFiles onChange={onDrop}>\n <Button\n buttonStyle=\"subtle\"\n iconPosition=\"left\"\n onClick={() => {\n if (inputRef.current) {\n inputRef.current.click()\n }\n }}\n size=\"small\"\n >\n {t('upload:selectFile')}\n </Button>\n <input\n accept={acceptMimeTypes}\n aria-hidden=\"true\"\n className={`${baseClass}__hidden-input`}\n hidden\n multiple\n onChange={(e) => {\n if (e.target.files && e.target.files.length > 0) {\n onDrop(e.target.files)\n }\n }}\n ref={inputRef}\n type=\"file\"\n />\n\n <p className={`${baseClass}__dragAndDropText`}>\n {t('general:or')} {t('upload:dragAndDrop')}\n </p>\n </Dropzone>\n </div>\n </div>\n )\n}\n", "'use client'\nimport React from 'react'\n\nimport './index.scss'\n\nconst handleDragOver = (e: DragEvent) => {\n e.preventDefault()\n e.stopPropagation()\n}\n\nconst baseClass = 'dropzone'\n\nexport type Props = {\n readonly children?: React.ReactNode\n readonly className?: string\n readonly disabled?: boolean\n readonly dropzoneStyle?: 'default' | 'none'\n readonly multipleFiles?: boolean\n readonly onChange: (e: FileList) => void\n}\n\nexport function Dropzone({\n children,\n className,\n disabled = false,\n dropzoneStyle = 'default',\n multipleFiles,\n onChange,\n}: Props) {\n const dropRef = React.useRef<HTMLDivElement>(null)\n const [dragging, setDragging] = React.useState(false)\n\n const addFiles = React.useCallback(\n (files: FileList) => {\n if (!multipleFiles && files.length > 1) {\n const dataTransfer = new DataTransfer()\n dataTransfer.items.add(files[0])\n onChange(dataTransfer.files)\n } else {\n onChange(files)\n }\n },\n [multipleFiles, onChange],\n )\n\n const handlePaste = React.useCallback(\n (e: ClipboardEvent) => {\n e.preventDefault()\n e.stopPropagation()\n\n if (e.clipboardData.files && e.clipboardData.files.length > 0) {\n addFiles(e.clipboardData.files)\n }\n },\n [addFiles],\n )\n\n const handleDragEnter = React.useCallback((e: DragEvent) => {\n e.preventDefault()\n e.stopPropagation()\n setDragging(true)\n }, [])\n\n const handleDragLeave = React.useCallback((e: DragEvent) => {\n e.preventDefault()\n e.stopPropagation()\n setDragging(false)\n }, [])\n\n const handleDrop = React.useCallback(\n (e: DragEvent) => {\n e.preventDefault()\n e.stopPropagation()\n setDragging(false)\n\n if (e.dataTransfer.files && e.dataTransfer.files.length > 0) {\n addFiles(e.dataTransfer.files)\n setDragging(false)\n\n try {\n e.dataTransfer.clearData()\n } catch {\n // Firefox throws NoModificationAllowedError when calling clearData() on a protected DataTransfer during drop events\n // https://developer.mozilla.org/en-US/docs/Web/API/DataTransfer/clearData#exceptions\n }\n }\n },\n [addFiles],\n )\n\n React.useEffect(() => {\n const div = dropRef.current\n\n if (div && !disabled) {\n div.addEventListener('dragenter', handleDragEnter)\n div.addEventListener('dragleave', handleDragLeave)\n div.addEventListener('dragover', handleDragOver)\n div.addEventListener('drop', handleDrop)\n div.addEventListener('paste', handlePaste)\n\n return () => {\n div.removeEventListener('dragenter', handleDragEnter)\n div.removeEventListener('dragleave', handleDragLeave)\n div.removeEventListener('dragover', handleDragOver)\n div.removeEventListener('drop', handleDrop)\n div.removeEventListener('paste', handlePaste)\n }\n }\n\n return () => null\n }, [disabled, handleDragEnter, handleDragLeave, handleDrop, handlePaste])\n\n const classes = [\n baseClass,\n className,\n dragging ? 'dragging' : '',\n `dropzoneStyle--${dropzoneStyle}`,\n ]\n .filter(Boolean)\n .join(' ')\n\n return (\n <div className={classes} ref={dropRef}>\n {children}\n </div>\n )\n}\n", "'use client'\n\nimport React from 'react'\n\nimport { DrawerCloseButton } from '../DrawerCloseButton/index.js'\nimport './index.scss'\n\nconst baseClass = 'bulk-upload--drawer-header'\n\ntype Props = {\n readonly onClose: () => void\n readonly title: string\n}\nexport function DrawerHeader({ onClose, title }: Props) {\n return (\n <div className={baseClass}>\n <h2 title={title}>{title}</h2>\n <DrawerCloseButton onClick={onClose} />\n </div>\n )\n}\n", "'use client'\nimport React from 'react'\n\nimport { XIcon } from '../../../icons/X/index.js'\nimport { useTranslation } from '../../../providers/Translation/index.js'\nimport './index.scss'\n\nconst baseClass = 'drawer-close-button'\n\ntype Props = {\n readonly onClick: () => void\n}\nexport function DrawerCloseButton({ onClick }: Props) {\n const { t } = useTranslation()\n\n return (\n <button aria-label={t('general:close')} className={baseClass} onClick={onClick} type=\"button\">\n <XIcon />\n </button>\n )\n}\n", "'use client'\n\nimport { useModal } from '@faceless-ui/modal'\nimport { getTranslation } from '@payloadcms/translations'\nimport { reduceFieldsToValues } from 'payload/shared'\nimport React from 'react'\n\nimport { useAuth } from '../../../providers/Auth/index.js'\nimport { useConfig } from '../../../providers/Config/index.js'\nimport { DocumentInfoProvider } from '../../../providers/DocumentInfo/index.js'\nimport { useTranslation } from '../../../providers/Translation/index.js'\nimport { ActionsBar } from '../ActionsBar/index.js'\nimport { discardBulkUploadModalSlug, DiscardWithoutSaving } from '../DiscardWithoutSaving/index.js'\nimport { EditForm } from '../EditForm/index.js'\nimport { FileSidebar } from '../FileSidebar/index.js'\nimport { useFormsManager } from '../FormsManager/index.js'\nimport { DrawerHeader } from '../Header/index.js'\nimport './index.scss'\n\nconst baseClass = 'bulk-upload--file-manager'\n\nexport function AddingFilesView() {\n const {\n activeIndex,\n collectionSlug,\n docPermissions,\n documentSlots,\n forms,\n hasPublishPermission,\n hasSavePermission,\n hasSubmitted,\n resetUploadEdits,\n updateUploadEdits,\n } = useFormsManager()\n const activeForm = forms[activeIndex]\n const { getEntityConfig } = useConfig()\n const { i18n } = useTranslation()\n const { user } = useAuth()\n const { openModal } = useModal()\n\n const collectionConfig = getEntityConfig({ collectionSlug })\n\n return (\n <div className={baseClass}>\n <FileSidebar />\n\n <div className={`${baseClass}__editView`}>\n <DrawerHeader\n onClose={() => openModal(discardBulkUploadModalSlug)}\n title={getTranslation(collectionConfig.labels.singular, i18n)}\n />\n {activeForm ? (\n <DocumentInfoProvider\n collectionSlug={collectionSlug}\n currentEditor={user}\n docPermissions={docPermissions}\n hasPublishedDoc={false}\n hasPublishPermission={hasPublishPermission}\n hasSavePermission={hasSavePermission}\n id={null}\n initialData={reduceFieldsToValues(activeForm.formState, true)}\n initialState={activeForm.formState}\n isLocked={false}\n key={`${activeIndex}-${forms.length}`}\n lastUpdateTime={0}\n mostRecentVersionIsAutosaved={false}\n unpublishedVersionCount={0}\n Upload={documentSlots.Upload}\n versionCount={0}\n >\n <ActionsBar collectionConfig={collectionConfig} />\n <EditForm\n resetUploadEdits={resetUploadEdits}\n submitted={hasSubmitted}\n updateUploadEdits={updateUploadEdits}\n uploadEdits={activeForm?.uploadEdits}\n />\n </DocumentInfoProvider>\n ) : null}\n </div>\n\n <DiscardWithoutSaving />\n </div>\n )\n}\n", "'use client'\n\nimport type { ClientCollectionConfig } from 'payload'\n\nimport React from 'react'\n\nimport { ChevronIcon } from '../../../icons/Chevron/index.js'\nimport { useConfig } from '../../../providers/Config/index.js'\nimport { useTranslation } from '../../../providers/Translation/index.js'\nimport { Button } from '../../Button/index.js'\nimport { EditManyBulkUploads } from '../EditMany/index.js'\nimport { useFormsManager } from '../FormsManager/index.js'\nimport './index.scss'\n\nconst baseClass = 'bulk-upload--actions-bar'\n\ntype Props = {\n readonly collectionConfig: ClientCollectionConfig\n}\n\nexport function ActionsBar({ collectionConfig }: Props) {\n const { activeIndex, forms, setActiveIndex } = useFormsManager()\n const { t } = useTranslation()\n\n return (\n <div className={baseClass}>\n <div className={`${baseClass}__navigation`}>\n <p className={`${baseClass}__locationText`}>\n <strong>{activeIndex + 1}</strong>\n {` ${t('general:of')} `}\n <strong>{forms.length}</strong>\n </p>\n\n <div className={`${baseClass}__controls`}>\n <Button\n aria-label={t('general:previous')}\n buttonStyle=\"none\"\n onClick={() => {\n const nextIndex = activeIndex - 1\n if (nextIndex < 0) {\n setActiveIndex(forms.length - 1)\n } else {\n setActiveIndex(nextIndex)\n }\n }}\n type=\"button\"\n >\n <ChevronIcon direction=\"left\" />\n </Button>\n <Button\n aria-label={t('general:next')}\n buttonStyle=\"none\"\n onClick={() => {\n const nextIndex = activeIndex + 1\n if (nextIndex === forms.length) {\n setActiveIndex(0)\n } else {\n setActiveIndex(nextIndex)\n }\n }}\n type=\"button\"\n >\n <ChevronIcon direction=\"right\" />\n </Button>\n </div>\n <EditManyBulkUploads collection={collectionConfig} />\n </div>\n\n <Actions className={`${baseClass}__saveButtons`} />\n </div>\n )\n}\n\ntype ActionsProps = {\n readonly className?: string\n}\nexport function Actions({ className }: ActionsProps) {\n const { getEntityConfig } = useConfig()\n const { t } = useTranslation()\n const { collectionSlug, hasPublishPermission, hasSavePermission, saveAllDocs } = useFormsManager()\n\n const collectionConfig = getEntityConfig({ collectionSlug })\n\n return (\n <div className={[`${baseClass}__buttons`, className].filter(Boolean).join(' ')}>\n {collectionConfig?.versions?.drafts && hasSavePermission ? (\n <Button\n buttonStyle=\"secondary\"\n onClick={() => void saveAllDocs({ overrides: { _status: 'draft' } })}\n >\n {t('version:saveDraft')}\n </Button>\n ) : null}\n {collectionConfig?.versions?.drafts && hasPublishPermission ? (\n <Button onClick={() => void saveAllDocs({ overrides: { _status: 'published' } })}>\n {t('version:publish')}\n </Button>\n ) : null}\n\n {!collectionConfig?.versions?.drafts && hasSavePermission ? (\n <Button onClick={() => void saveAllDocs()}>{t('general:save')}</Button>\n ) : null}\n </div>\n )\n}\n", "'use client'\n\nimport type { ClientCollectionConfig } from 'payload'\n\nimport React from 'react'\n\nimport { useAuth } from '../../../providers/Auth/index.js'\nimport { EditDepthProvider } from '../../../providers/EditDepth/index.js'\nimport { useTranslation } from '../../../providers/Translation/index.js'\nimport { Drawer, DrawerToggler } from '../../Drawer/index.js'\nimport { useFormsManager } from '../FormsManager/index.js'\nimport { EditManyBulkUploadsDrawerContent } from './DrawerContent.js'\nimport './index.scss'\n\nexport const baseClass = 'edit-many-bulk-uploads'\n\nexport type EditManyBulkUploadsProps = {\n readonly collection: ClientCollectionConfig\n}\n\nexport const EditManyBulkUploads: React.FC<EditManyBulkUploadsProps> = (props) => {\n const { collection: { slug } = {}, collection } = props\n\n const { permissions } = useAuth()\n\n const { t } = useTranslation()\n const { forms } = useFormsManager() // Access forms managed in bulk uploads\n\n const collectionPermissions = permissions?.collections?.[slug]\n const hasUpdatePermission = collectionPermissions?.update\n\n const drawerSlug = `edit-${slug}-bulk-uploads`\n\n if (!hasUpdatePermission) {\n return null\n }\n\n return (\n <div className={baseClass}>\n <DrawerToggler\n aria-label={t('general:editAll')}\n className={`${baseClass}__toggle`}\n slug={drawerSlug}\n >\n {t('general:editAll')}\n </DrawerToggler>\n <EditDepthProvider>\n <Drawer Header={null} slug={drawerSlug}>\n <EditManyBulkUploadsDrawerContent\n collection={collection}\n drawerSlug={drawerSlug}\n forms={forms}\n />\n </Drawer>\n </EditDepthProvider>\n </div>\n )\n}\n", "'use client'\n\nimport type {\n CollectionSlug,\n Data,\n DocumentSlots,\n FormState,\n JsonObject,\n SanitizedDocumentPermissions,\n UploadEdits,\n} from 'payload'\n\nimport { useModal } from '@faceless-ui/modal'\nimport { formatAdminURL } from 'payload/shared'\nimport * as qs from 'qs-esm'\nimport React from 'react'\nimport { toast } from 'sonner'\n\nimport type { State } from './reducer.js'\n\nimport { fieldReducer } from '../../../forms/Form/fieldReducer.js'\nimport { useEffectEvent } from '../../../hooks/useEffectEvent.js'\nimport { useConfig } from '../../../providers/Config/index.js'\nimport { useLocale } from '../../../providers/Locale/index.js'\nimport { useServerFunctions } from '../../../providers/ServerFunctions/index.js'\nimport { useTranslation } from '../../../providers/Translation/index.js'\nimport { useUploadHandlers } from '../../../providers/UploadHandlers/index.js'\nimport { hasSavePermission as getHasSavePermission } from '../../../utilities/hasSavePermission.js'\nimport { LoadingOverlay } from '../../Loading/index.js'\nimport { useLoadingOverlay } from '../../LoadingOverlay/index.js'\nimport { useBulkUpload } from '../index.js'\nimport { createFormData } from './createFormData.js'\nimport { formsManagementReducer } from './reducer.js'\n\ntype FormsManagerContext = {\n readonly activeIndex: State['activeIndex']\n readonly addFiles: (filelist: FileList) => Promise<void>\n readonly bulkUpdateForm: (\n updatedFields: Record<string, unknown>,\n afterStateUpdate?: () => void,\n ) => Promise<void>\n readonly collectionSlug: string\n readonly docPermissions?: SanitizedDocumentPermissions\n readonly documentSlots: DocumentSlots\n readonly forms: State['forms']\n getFormDataRef: React.RefObject<() => Data>\n readonly hasPublishPermission: boolean\n readonly hasSavePermission: boolean\n readonly hasSubmitted: boolean\n readonly isInitializing: boolean\n readonly removeFile: (index: number) => void\n readonly resetUploadEdits?: () => void\n readonly saveAllDocs: ({ overrides }?: { overrides?: Record<string, unknown> }) => Promise<void>\n readonly setActiveIndex: (index: number) => void\n readonly setFormTotalErrorCount: ({\n errorCount,\n index,\n }: {\n errorCount: number\n index: number\n }) => void\n readonly totalErrorCount?: number\n readonly updateUploadEdits: (args: UploadEdits) => void\n}\n\nconst Context = React.createContext<FormsManagerContext>({\n activeIndex: 0,\n addFiles: () => Promise.resolve(),\n bulkUpdateForm: () => null,\n collectionSlug: '',\n docPermissions: undefined,\n documentSlots: {},\n forms: [],\n getFormDataRef: { current: () => ({}) },\n hasPublishPermission: false,\n hasSavePermission: false,\n hasSubmitted: false,\n isInitializing: false,\n removeFile: () => {},\n saveAllDocs: () => Promise.resolve(),\n setActiveIndex: () => 0,\n setFormTotalErrorCount: () => {},\n totalErrorCount: 0,\n updateUploadEdits: () => {},\n})\n\nconst initialState: State = {\n activeIndex: 0,\n forms: [],\n totalErrorCount: 0,\n}\n\nexport type InitialForms = Array<{\n file: File\n formID?: string\n initialState?: FormState | null\n}>\n\ntype FormsManagerProps = {\n readonly children: React.ReactNode\n}\n\nexport function FormsManagerProvider({ children }: FormsManagerProps) {\n const { config } = useConfig()\n const {\n routes: { api },\n } = config\n const { code } = useLocale()\n const { i18n, t } = useTranslation()\n\n const { getDocumentSlots, getFormState } = useServerFunctions()\n const { getUploadHandler } = useUploadHandlers()\n\n const [documentSlots, setDocumentSlots] = React.useState<DocumentSlots>({})\n const [hasSubmitted, setHasSubmitted] = React.useState(false)\n const [docPermissions, setDocPermissions] = React.useState<SanitizedDocumentPermissions>()\n const [hasSavePermission, setHasSavePermission] = React.useState(false)\n const [hasPublishPermission, setHasPublishPermission] = React.useState(false)\n const [hasInitializedState, setHasInitializedState] = React.useState(false)\n const [hasInitializedDocPermissions, setHasInitializedDocPermissions] = React.useState(false)\n const [isInitializing, setIsInitializing] = React.useState(false)\n const [state, dispatch] = React.useReducer(formsManagementReducer, initialState)\n const { activeIndex, forms, totalErrorCount } = state\n\n const formsRef = React.useRef(forms)\n formsRef.current = forms\n\n const { toggleLoadingOverlay } = useLoadingOverlay()\n const { closeModal } = useModal()\n const {\n collectionSlug,\n drawerSlug,\n initialFiles,\n initialForms,\n onSuccess,\n setInitialFiles,\n setInitialForms,\n setSuccessfullyUploaded,\n } = useBulkUpload()\n\n const [isUploading, setIsUploading] = React.useState(false)\n const [loadingText, setLoadingText] = React.useState('')\n\n const hasInitializedWithFiles = React.useRef(false)\n const initialStateRef = React.useRef<FormState>(null)\n const getFormDataRef = React.useRef<() => Data>(() => ({}))\n\n const baseAPIPath = formatAdminURL({\n apiRoute: api,\n path: '',\n })\n\n const actionURL = `${baseAPIPath}/${collectionSlug}`\n\n const initializeSharedDocPermissions = React.useCallback(async () => {\n const params = {\n locale: code || undefined,\n }\n\n const docAccessURL = `/${collectionSlug}/access`\n const res = await fetch(`${baseAPIPath}${docAccessURL}?${qs.stringify(params)}`, {\n credentials: 'include',\n headers: {\n 'Accept-Language': i18n.language,\n 'Content-Type': 'application/json',\n },\n method: 'post',\n })\n\n const json: SanitizedDocumentPermissions = await res.json()\n const publishedAccessJSON = await fetch(\n `${baseAPIPath}${docAccessURL}?${qs.stringify(params)}`,\n {\n body: JSON.stringify({\n _status: 'published',\n }),\n credentials: 'include',\n headers: {\n 'Accept-Language': i18n.language,\n 'Content-Type': 'application/json',\n },\n method: 'POST',\n },\n ).then((res) => res.json())\n\n setDocPermissions(json)\n\n setHasSavePermission(\n getHasSavePermission({\n collectionSlug,\n docPermissions: json,\n isEditing: false,\n }),\n )\n\n setHasPublishPermission(publishedAccessJSON?.update)\n setHasInitializedDocPermissions(true)\n }, [baseAPIPath, code, collectionSlug, i18n.language])\n\n const initializeSharedFormState = React.useCallback(\n async (abortController?: AbortController) => {\n if (abortController?.signal) {\n abortController.abort('aborting previous fetch for initial form state without files')\n }\n\n // FETCH AND SET THE DOCUMENT SLOTS HERE!\n const documentSlots = await getDocumentSlots({ collectionSlug })\n setDocumentSlots(documentSlots)\n\n try {\n const { state: formStateWithoutFiles } = await getFormState({\n collectionSlug,\n docPermissions,\n docPreferences: { fields: {} },\n locale: code,\n operation: 'create',\n renderAllFields: true,\n schemaPath: collectionSlug,\n skipValidation: true,\n })\n initialStateRef.current = formStateWithoutFiles\n setHasInitializedState(true)\n } catch (_err) {\n // swallow error\n }\n },\n [getDocumentSlots, collectionSlug, getFormState, docPermissions, code],\n )\n\n const setActiveIndex: FormsManagerContext['setActiveIndex'] = React.useCallback(\n (index: number) => {\n const currentFormsData = getFormDataRef.current()\n\n dispatch({\n type: 'REPLACE',\n state: {\n activeIndex: index,\n forms: forms.map((form, i) => {\n if (i === activeIndex) {\n return {\n errorCount: form.errorCount,\n formID: form.formID,\n formState: currentFormsData,\n uploadEdits: form.uploadEdits,\n }\n }\n return form\n }),\n },\n })\n },\n [forms, activeIndex],\n )\n\n const addFiles = React.useCallback(\n async (files: FileList) => {\n if (forms.length) {\n // save the state of the current form before adding new files\n dispatch({\n type: 'UPDATE_FORM',\n errorCount: forms[activeIndex].errorCount,\n formState: getFormDataRef.current(),\n index: activeIndex,\n })\n }\n\n toggleLoadingOverlay({ isLoading: true, key: 'addingDocs' })\n if (!hasInitializedState) {\n await initializeSharedFormState()\n }\n dispatch({\n type: 'ADD_FORMS',\n forms: Array.from(files).map((file) => ({\n file,\n initialState: initialStateRef.current,\n })),\n })\n toggleLoadingOverlay({ isLoading: false, key: 'addingDocs' })\n },\n [initializeSharedFormState, hasInitializedState, toggleLoadingOverlay, activeIndex, forms],\n )\n\n const addFilesEffectEvent = useEffectEvent(addFiles)\n\n const addInitialForms = useEffectEvent(async (initialForms: InitialForms) => {\n toggleLoadingOverlay({ isLoading: true, key: 'addingDocs' })\n\n if (!hasInitializedState) {\n await initializeSharedFormState()\n }\n\n dispatch({\n type: 'ADD_FORMS',\n forms: initialForms.map((form) => ({\n ...form,\n initialState: form?.initialState || initialStateRef.current,\n })),\n })\n\n toggleLoadingOverlay({ isLoading: false, key: 'addingDocs' })\n })\n\n const removeFile: FormsManagerContext['removeFile'] = React.useCallback((index) => {\n dispatch({ type: 'REMOVE_FORM', index })\n }, [])\n\n const setFormTotalErrorCount: FormsManagerContext['setFormTotalErrorCount'] = React.useCallback(\n ({ errorCount, index }) => {\n dispatch({\n type: 'UPDATE_ERROR_COUNT',\n count: errorCount,\n index,\n })\n },\n [],\n )\n\n const saveAllDocs: FormsManagerContext['saveAllDocs'] = React.useCallback(\n async ({ overrides } = {}) => {\n const currentFormsData = getFormDataRef.current()\n const currentForms = [...forms]\n currentForms[activeIndex] = {\n errorCount: currentForms[activeIndex].errorCount,\n formID: currentForms[activeIndex].formID,\n formState: currentFormsData,\n uploadEdits: currentForms[activeIndex].uploadEdits,\n }\n const activeFormID = currentForms[activeIndex]?.formID\n const newDocs: Array<{\n collectionSlug: CollectionSlug\n doc: JsonObject\n /**\n * ID of the form that created this document\n */\n formID: string\n }> = []\n\n setIsUploading(true)\n\n for (let i = 0; i < currentForms.length; i++) {\n try {\n const form = currentForms[i]\n const fileValue = form.formState?.file?.value\n\n setLoadingText(t('general:uploadingBulk', { current: i + 1, total: currentForms.length }))\n\n const actionURLWithParams = `${actionURL}${qs.stringify(\n {\n locale: code,\n uploadEdits: form?.uploadEdits || undefined,\n },\n {\n addQueryPrefix: true,\n },\n )}`\n\n const req = await fetch(actionURLWithParams, {\n body: await createFormData(\n form.formState,\n overrides,\n collectionSlug,\n getUploadHandler({ collectionSlug }),\n ),\n credentials: 'include',\n method: 'POST',\n })\n\n const json = await req.json()\n\n if (req.status === 201 && json?.doc) {\n newDocs.push({\n collectionSlug,\n doc: json.doc,\n formID: form.formID,\n })\n }\n\n // should expose some sort of helper for this\n const [fieldErrors, nonFieldErrors] = (json?.errors || []).reduce(\n ([fieldErrs, nonFieldErrs], err) => {\n const newFieldErrs: any[] = []\n const newNonFieldErrs: any[] = []\n\n if (err?.message) {\n newNonFieldErrs.push(err)\n }\n\n if (Array.isArray(err?.data?.errors)) {\n err.data?.errors.forEach((dataError) => {\n if (dataError?.path) {\n newFieldErrs.push(dataError)\n } else {\n newNonFieldErrs.push(dataError)\n }\n })\n }\n\n return [\n [...fieldErrs, ...newFieldErrs],\n [...nonFieldErrs, ...newNonFieldErrs],\n ]\n },\n [[], []],\n )\n\n const missingFile = !fileValue && req.status === 400\n const exceedsLimit = fileValue && req.status === 413\n const missingFilename =\n fileValue &&\n typeof fileValue === 'object' &&\n 'name' in fileValue &&\n (!fileValue.name || fileValue.name === '')\n\n if (missingFile || exceedsLimit || missingFilename) {\n currentForms[i].formState.file.valid = false\n\n // neeed to get the field state to extract count since field errors\n // are not returned when file is missing or exceeds limit\n const { state: newState } = await getFormState({\n collectionSlug,\n docPermissions,\n docPreferences: null,\n formState: currentForms[i].formState,\n operation: 'update',\n schemaPath: collectionSlug,\n })\n\n currentForms[i] = {\n errorCount: Object.values(newState).reduce(\n (acc, value) => (value?.valid === false ? acc + 1 : acc),\n 0,\n ),\n formID: currentForms[i].formID,\n formState: newState,\n }\n\n toast.error(nonFieldErrors[0]?.message)\n } else {\n currentForms[i] = {\n errorCount: fieldErrors.length,\n formID: currentForms[i].formID,\n formState: fieldReducer(currentForms[i].formState, {\n type: 'ADD_SERVER_ERRORS',\n errors: fieldErrors,\n }),\n }\n }\n } catch (_) {\n // swallow\n }\n }\n\n setHasSubmitted(true)\n setLoadingText('')\n setIsUploading(false)\n\n const remainingForms = []\n\n currentForms.forEach(({ errorCount }, i) => {\n if (errorCount) {\n remainingForms.push(currentForms[i])\n }\n })\n\n const successCount = Math.max(0, currentForms.length - remainingForms.length)\n const errorCount = currentForms.length - successCount\n\n if (successCount) {\n toast.success(`Successfully saved ${successCount} files`)\n setSuccessfullyUploaded(true)\n\n if (typeof onSuccess === 'function') {\n onSuccess(newDocs, errorCount)\n }\n }\n\n if (errorCount) {\n toast.error(`Failed to save ${errorCount} files`)\n } else {\n closeModal(drawerSlug)\n }\n\n dispatch({\n type: 'REPLACE',\n state: {\n activeIndex: remainingForms.reduce((acc, { formID }, i) => {\n if (formID === activeFormID) {\n return i\n }\n return acc\n }, 0),\n forms: remainingForms,\n totalErrorCount: remainingForms.reduce((acc, { errorCount }) => acc + errorCount, 0),\n },\n })\n\n if (remainingForms.length === 0) {\n setInitialFiles(undefined)\n setInitialForms(undefined)\n }\n },\n [\n forms,\n activeIndex,\n t,\n actionURL,\n code,\n collectionSlug,\n getUploadHandler,\n getFormState,\n docPermissions,\n setSuccessfullyUploaded,\n onSuccess,\n closeModal,\n drawerSlug,\n setInitialFiles,\n setInitialForms,\n ],\n )\n\n const bulkUpdateForm = React.useCallback(\n async (updatedFields: Record<string, unknown>, afterStateUpdate?: () => void) => {\n for (let i = 0; i < forms.length; i++) {\n Object.entries(updatedFields).forEach(([path, value]) => {\n if (forms[i].formState[path]) {\n forms[i].formState[path].value = value\n\n dispatch({\n type: 'UPDATE_FORM',\n errorCount: forms[i].errorCount,\n formState: forms[i].formState,\n index: i,\n })\n }\n })\n\n if (typeof afterStateUpdate === 'function') {\n afterStateUpdate()\n }\n\n if (hasSubmitted) {\n const { state } = await getFormState({\n collectionSlug,\n docPermissions,\n docPreferences: null,\n formState: forms[i].formState,\n operation: 'create',\n schemaPath: collectionSlug,\n })\n\n const newFormErrorCount = Object.values(state).reduce(\n (acc, value) => (value?.valid === false ? acc + 1 : acc),\n 0,\n )\n\n dispatch({\n type: 'UPDATE_FORM',\n errorCount: newFormErrorCount,\n formState: state,\n index: i,\n })\n }\n }\n },\n [collectionSlug, docPermissions, forms, getFormState, hasSubmitted],\n )\n\n const updateUploadEdits = React.useCallback<FormsManagerContext['updateUploadEdits']>(\n (uploadEdits) => {\n dispatch({\n type: 'UPDATE_FORM',\n errorCount: forms[activeIndex].errorCount,\n formState: forms[activeIndex].formState,\n index: activeIndex,\n uploadEdits,\n })\n },\n [activeIndex, forms],\n )\n\n const resetUploadEdits = React.useCallback<FormsManagerContext['resetUploadEdits']>(() => {\n dispatch({\n type: 'REPLACE',\n state: {\n forms: forms.map((form) => ({\n ...form,\n uploadEdits: {},\n })),\n },\n })\n }, [forms])\n\n React.useEffect(() => {\n if (!collectionSlug) {\n return\n }\n if (!hasInitializedState) {\n void initializeSharedFormState()\n }\n\n if (!hasInitializedDocPermissions) {\n void initializeSharedDocPermissions()\n }\n\n if (initialFiles || initialForms) {\n if (!hasInitializedState || !hasInitializedDocPermissions) {\n setIsInitializing(true)\n } else {\n setIsInitializing(false)\n }\n }\n\n if (\n hasInitializedState &&\n (initialForms?.length || initialFiles?.length) &&\n !hasInitializedWithFiles.current\n ) {\n if (initialForms?.length) {\n void addInitialForms(initialForms)\n }\n if (initialFiles?.length) {\n void addFilesEffectEvent(initialFiles)\n }\n hasInitializedWithFiles.current = true\n }\n return\n }, [\n initialFiles,\n initializeSharedFormState,\n initializeSharedDocPermissions,\n collectionSlug,\n hasInitializedState,\n hasInitializedDocPermissions,\n initialForms,\n ])\n\n return (\n <Context\n value={{\n activeIndex: state.activeIndex,\n addFiles,\n bulkUpdateForm,\n collectionSlug,\n docPermissions,\n documentSlots,\n forms,\n getFormDataRef,\n hasPublishPermission,\n hasSavePermission,\n hasSubmitted,\n isInitializing,\n removeFile,\n resetUploadEdits,\n saveAllDocs,\n setActiveIndex,\n setFormTotalErrorCount,\n totalErrorCount,\n updateUploadEdits,\n }}\n >\n {isUploading && (\n <LoadingOverlay\n animationDuration=\"250ms\"\n loadingText={loadingText}\n overlayType=\"fullscreen\"\n show\n />\n )}\n {children}\n </Context>\n )\n}\n\nexport function useFormsManager() {\n return React.use(Context)\n}\n", "import type { CollectionSlug, FormState } from 'payload'\n\nimport { serialize } from 'object-to-formdata'\nimport { reduceFieldsToValues } from 'payload/shared'\n\nimport type { UploadHandlersContext } from '../../../providers/UploadHandlers/index.js'\n\nexport async function createFormData(\n formState: FormState = {},\n overrides: Record<string, any> = {},\n collectionSlug: CollectionSlug,\n uploadHandler: ReturnType<UploadHandlersContext['getUploadHandler']>,\n) {\n const data = reduceFieldsToValues(formState, true)\n let file = data?.file\n\n if (file) {\n delete data.file\n }\n\n if (file && typeof uploadHandler === 'function') {\n let filename = file.name\n\n const clientUploadContext = await uploadHandler({\n file,\n updateFilename: (value) => {\n filename = value\n },\n })\n\n file = JSON.stringify({\n clientUploadContext,\n collectionSlug,\n filename,\n mimeType: file.type,\n size: file.size,\n })\n }\n\n const dataWithOverrides = {\n ...data,\n ...overrides,\n }\n\n const dataToSerialize = {\n _payload: JSON.stringify(dataWithOverrides),\n file,\n }\n\n return serialize(dataToSerialize, { indices: true, nullsAsUndefineds: false })\n}\n", "import type { FormState, UploadEdits } from 'payload'\n\nimport { v4 as uuidv4 } from 'uuid'\n\nimport type { InitialForms } from './index.js'\n\nexport type State = {\n activeIndex: number\n forms: {\n errorCount: number\n formID: string\n formState: FormState\n uploadEdits?: UploadEdits\n }[]\n totalErrorCount: number\n}\n\ntype Action =\n | {\n count: number\n index: number\n type: 'UPDATE_ERROR_COUNT'\n }\n | {\n errorCount: number\n formState: FormState\n index: number\n type: 'UPDATE_FORM'\n updatedFields?: Record<string, unknown>\n uploadEdits?: UploadEdits\n }\n | {\n forms: InitialForms\n type: 'ADD_FORMS'\n }\n | {\n index: number\n type: 'REMOVE_FORM'\n }\n | {\n index: number\n type: 'SET_ACTIVE_INDEX'\n }\n | {\n state: Partial<State>\n type: 'REPLACE'\n }\n\nexport function formsManagementReducer(state: State, action: Action): State {\n switch (action.type) {\n case 'ADD_FORMS': {\n const newForms: State['forms'] = []\n for (let i = 0; i < action.forms.length; i++) {\n newForms[i] = {\n errorCount: 0,\n formID: action.forms[i].formID ?? (crypto.randomUUID ? crypto.randomUUID() : uuidv4()),\n formState: {\n ...(action.forms[i].initialState || {}),\n file: {\n initialValue: action.forms[i].file,\n valid: true,\n value: action.forms[i].file,\n },\n },\n uploadEdits: {},\n }\n }\n\n return {\n ...state,\n activeIndex: 0,\n forms: [...newForms, ...state.forms],\n }\n }\n case 'REMOVE_FORM': {\n const remainingFormStates = [...state.forms]\n const [removedForm] = remainingFormStates.splice(action.index, 1)\n\n const affectedByShift = state.activeIndex >= action.index\n const nextIndex =\n state.activeIndex === action.index\n ? action.index\n : affectedByShift\n ? state.activeIndex - 1\n : state.activeIndex\n const boundedActiveIndex = Math.min(remainingFormStates.length - 1, nextIndex)\n\n return {\n ...state,\n activeIndex: affectedByShift ? boundedActiveIndex : state.activeIndex,\n forms: remainingFormStates,\n totalErrorCount: state.totalErrorCount - removedForm.errorCount,\n }\n }\n case 'REPLACE': {\n return {\n ...state,\n ...action.state,\n }\n }\n case 'SET_ACTIVE_INDEX': {\n return {\n ...state,\n activeIndex: action.index,\n }\n }\n case 'UPDATE_ERROR_COUNT': {\n const forms = [...state.forms]\n forms[action.index].errorCount = action.count\n\n return {\n ...state,\n forms,\n totalErrorCount: forms.reduce((acc, form) => acc + form.errorCount, 0),\n }\n }\n case 'UPDATE_FORM': {\n const updatedForms = [...state.forms]\n updatedForms[action.index].errorCount = action.errorCount\n\n // Merge the existing formState with the new formState\n updatedForms[action.index] = {\n ...updatedForms[action.index],\n formState: {\n ...updatedForms[action.index].formState,\n ...action.formState,\n },\n uploadEdits: {\n ...updatedForms[action.index].uploadEdits,\n ...action.uploadEdits,\n },\n }\n\n return {\n ...state,\n forms: updatedForms,\n totalErrorCount: updatedForms.reduce((acc, form) => acc + form.errorCount, 0),\n }\n }\n default: {\n return state\n }\n }\n}\n", "'use client'\n\nimport type { ClientCollectionConfig, SelectType } from 'payload'\n\nimport { useModal } from '@faceless-ui/modal'\nimport { getTranslation } from '@payloadcms/translations'\nimport { unflatten } from 'payload/shared'\nimport React, { useCallback, useEffect, useMemo, useState } from 'react'\n\nimport type { FormProps } from '../../../forms/Form/index.js'\nimport type { OnFieldSelect } from '../../FieldSelect/index.js'\nimport type { FieldOption } from '../../FieldSelect/reduceFieldOptions.js'\nimport type { State } from '../FormsManager/reducer.js'\nimport type { EditManyBulkUploadsProps } from './index.js'\n\nimport { Button } from '../../../elements/Button/index.js'\nimport { Form } from '../../../forms/Form/index.js'\nimport { FieldPathContext } from '../../../forms/RenderFields/context.js'\nimport { RenderField } from '../../../forms/RenderFields/RenderField.js'\nimport { XIcon } from '../../../icons/X/index.js'\nimport { useAuth } from '../../../providers/Auth/index.js'\nimport { useServerFunctions } from '../../../providers/ServerFunctions/index.js'\nimport { useTranslation } from '../../../providers/Translation/index.js'\nimport { abortAndIgnore, handleAbortRef } from '../../../utilities/abortAndIgnore.js'\nimport { FieldSelect } from '../../FieldSelect/index.js'\nimport { useFormsManager } from '../FormsManager/index.js'\nimport { baseClass } from './index.js'\nimport './index.scss'\nimport '../../../forms/RenderFields/index.scss'\n\nexport const EditManyBulkUploadsDrawerContent: React.FC<\n {\n collection: ClientCollectionConfig\n drawerSlug: string\n forms: State['forms']\n } & EditManyBulkUploadsProps\n> = (props) => {\n const {\n collection: { fields, labels: { plural, singular } } = {},\n collection,\n drawerSlug,\n forms,\n } = props\n\n const [isInitializing, setIsInitializing] = useState(false)\n const { permissions } = useAuth()\n const { i18n, t } = useTranslation()\n const { closeModal } = useModal()\n const { bulkUpdateForm } = useFormsManager()\n const { getFormState } = useServerFunctions()\n const abortFormStateRef = React.useRef<AbortController>(null)\n\n const [selectedFields, setSelectedFields] = useState<FieldOption[]>([])\n const collectionPermissions = permissions?.collections?.[collection.slug]\n\n const select = useMemo<SelectType>(() => {\n return unflatten(\n selectedFields.reduce((acc, option) => {\n acc[option.value.path] = true\n return acc\n }, {} as SelectType),\n )\n }, [selectedFields])\n\n const onChange: FormProps['onChange'][0] = useCallback(\n async ({ formState: prevFormState, submitted }) => {\n const controller = handleAbortRef(abortFormStateRef)\n\n const { state } = await getFormState({\n collectionSlug: collection.slug,\n docPermissions: collectionPermissions,\n docPreferences: null,\n formState: prevFormState,\n operation: 'update',\n schemaPath: collection.slug,\n select,\n signal: controller.signal,\n skipValidation: !submitted,\n })\n\n abortFormStateRef.current = null\n\n return state\n },\n [getFormState, collection, collectionPermissions, select],\n )\n\n useEffect(() => {\n const abortFormState = abortFormStateRef.current\n\n return () => {\n abortAndIgnore(abortFormState)\n }\n }, [])\n\n const handleSubmit: FormProps['onSubmit'] = useCallback(\n (formState) => {\n const pairedData = selectedFields.reduce((acc, option) => {\n if (formState[option.value.path]) {\n acc[option.value.path] = formState[option.value.path].value\n }\n return acc\n }, {})\n\n void bulkUpdateForm(pairedData, () => closeModal(drawerSlug))\n },\n [closeModal, drawerSlug, bulkUpdateForm, selectedFields],\n )\n\n const onFieldSelect = useCallback<OnFieldSelect>(\n async ({ dispatchFields, formState, selected }) => {\n setIsInitializing(true)\n\n setSelectedFields(selected || [])\n\n const { state } = await getFormState({\n collectionSlug: collection.slug,\n docPermissions: collectionPermissions,\n docPreferences: null,\n formState,\n operation: 'update',\n schemaPath: collection.slug,\n select: unflatten(\n selected.reduce((acc, option) => {\n acc[option.value.path] = true\n return acc\n }, {} as SelectType),\n ),\n skipValidation: true,\n })\n\n dispatchFields({\n type: 'UPDATE_MANY',\n formState: state,\n })\n\n setIsInitializing(false)\n },\n [getFormState, collection, collectionPermissions],\n )\n\n return (\n <div className={`${baseClass}__main`}>\n <div className={`${baseClass}__header`}>\n <h2 className={`${baseClass}__header__title`}>\n {t('general:editingLabel', {\n count: forms.length,\n label: getTranslation(forms.length > 1 ? plural : singular, i18n),\n })}\n </h2>\n <button\n aria-label={t('general:close')}\n className={`${baseClass}__header__close`}\n id={`close-drawer__${drawerSlug}`}\n onClick={() => closeModal(drawerSlug)}\n type=\"button\"\n >\n <XIcon />\n </button>\n </div>\n <Form\n className={`${baseClass}__form`}\n isInitializing={isInitializing}\n onChange={[onChange]}\n onSubmit={handleSubmit}\n >\n <FieldSelect\n fields={fields}\n onChange={onFieldSelect}\n permissions={collectionPermissions.fields}\n />\n {selectedFields.length === 0 ? null : (\n <div className=\"render-fields\">\n <FieldPathContext value={undefined}>\n {selectedFields.map((option, i) => {\n const {\n value: { field, fieldPermissions, path },\n } = option\n\n return (\n <RenderField\n clientFieldConfig={field}\n indexPath=\"\"\n key={`${path}-${i}`}\n parentPath=\"\"\n parentSchemaPath=\"\"\n path={path}\n permissions={fieldPermissions}\n />\n )\n })}\n </FieldPathContext>\n </div>\n )}\n <div className={`${baseClass}__sidebar-wrap`}>\n <div className={`${baseClass}__sidebar`}>\n <div className={`${baseClass}__sidebar-sticky-wrap`}>\n <div className={`${baseClass}__document-actions`}>\n <Button type=\"submit\">{t('general:applyChanges')}</Button>\n </div>\n </div>\n </div>\n </div>\n </Form>\n </div>\n )\n}\n", "'use client'\nimport type { ClientField, FormState, SanitizedFieldPermissions } from 'payload'\n\nimport React, { useState } from 'react'\n\nimport type { FieldAction } from '../../forms/Form/types.js'\nimport type { FieldOption } from './reduceFieldOptions.js'\n\nimport { FieldLabel } from '../../fields/FieldLabel/index.js'\nimport { useForm } from '../../forms/Form/context.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { filterOutUploadFields } from '../../utilities/filterOutUploadFields.js'\nimport { ReactSelect } from '../ReactSelect/index.js'\nimport { reduceFieldOptions } from './reduceFieldOptions.js'\nimport './index.scss'\n\nconst baseClass = 'field-select'\n\nexport type OnFieldSelect = ({\n dispatchFields,\n formState,\n selected,\n}: {\n dispatchFields: React.Dispatch<FieldAction>\n formState: FormState\n selected: FieldOption[]\n}) => void\n\nexport type FieldSelectProps = {\n readonly fields: ClientField[]\n readonly onChange: OnFieldSelect\n readonly permissions:\n | {\n [fieldName: string]: SanitizedFieldPermissions\n }\n | SanitizedFieldPermissions\n}\n\nexport const FieldSelect: React.FC<FieldSelectProps> = ({ fields, onChange, permissions }) => {\n const { t } = useTranslation()\n const { dispatchFields, getFields } = useForm()\n\n const [options] = useState<FieldOption[]>(() =>\n reduceFieldOptions({\n fields: filterOutUploadFields(fields),\n formState: getFields(),\n permissions,\n }),\n )\n\n return (\n <div className={baseClass}>\n <FieldLabel label={t('fields:selectFieldsToEdit')} />\n <ReactSelect\n getOptionValue={(option) => {\n if (typeof option.value === 'object' && 'path' in option.value) {\n return String(option.value.path)\n }\n return String(option.value)\n }}\n isMulti\n onChange={(selected: FieldOption[]) =>\n onChange({ dispatchFields, formState: getFields(), selected })\n }\n options={options}\n />\n </div>\n )\n}\n", "import type { FieldWithPathClient } from 'payload'\n\nexport const filterOutUploadFields = (fields: FieldWithPathClient[]): FieldWithPathClient[] => {\n // List of reserved upload field names\n const baseUploadFieldNames = [\n 'file',\n 'mimeType',\n 'thumbnailURL',\n 'width',\n 'height',\n 'filesize',\n 'filename',\n 'url',\n 'focalX',\n 'focalY',\n 'sizes',\n ]\n\n return fields.filter((field) => !baseUploadFieldNames.includes('name' in field && field.name))\n}\n", "import type { ClientField, FormState, SanitizedFieldPermissions } from 'payload'\n\nimport {\n fieldAffectsData,\n fieldHasSubFields,\n fieldIsHiddenOrDisabled,\n getFieldPermissions,\n} from 'payload/shared'\n\nimport { createNestedClientFieldPath } from '../../forms/Form/createNestedClientFieldPath.js'\nimport { combineFieldLabel } from '../../utilities/combineFieldLabel.js'\n\nexport type SelectedField = {\n field: ClientField\n fieldPermissions: SanitizedFieldPermissions\n path: string\n}\n\nexport type FieldOption = {\n label: React.ReactNode\n value: SelectedField\n}\n\nexport const ignoreFromBulkEdit = (field: ClientField): boolean =>\n Boolean(\n (fieldAffectsData(field) || field.type === 'ui') &&\n (field.admin.disableBulkEdit ||\n field.unique ||\n fieldIsHiddenOrDisabled(field) ||\n ('readOnly' in field && field.readOnly)),\n )\n\nexport const reduceFieldOptions = ({\n fields,\n formState,\n labelPrefix = null,\n parentPath = '',\n path = '',\n permissions,\n}: {\n readonly fields: ClientField[]\n readonly formState?: FormState\n readonly labelPrefix?: React.ReactNode\n readonly parentPath?: string\n readonly path?: string\n readonly permissions:\n | {\n [fieldName: string]: SanitizedFieldPermissions\n }\n | SanitizedFieldPermissions\n}): FieldOption[] => {\n if (!fields) {\n return []\n }\n\n const CustomLabel = formState?.[path]?.customComponents?.Label\n\n return fields?.reduce((fieldsToUse, field) => {\n const {\n operation: hasOperationPermission,\n permissions: fieldPermissions,\n read: hasReadPermission,\n } = getFieldPermissions({\n field,\n operation: 'update',\n parentName: parentPath?.includes('.')\n ? parentPath.split('.')[parentPath.split('.').length - 1]\n : parentPath,\n permissions,\n })\n\n // escape for a variety of reasons, include ui fields as they have `name`.\n if (\n (fieldAffectsData(field) || field.type === 'ui') &&\n (field.admin?.disableBulkEdit ||\n field.unique ||\n fieldIsHiddenOrDisabled(field) ||\n ('readOnly' in field && field.readOnly) ||\n !hasOperationPermission ||\n !hasReadPermission)\n ) {\n return fieldsToUse\n }\n\n if (!(field.type === 'array' || field.type === 'blocks') && fieldHasSubFields(field)) {\n return [\n ...fieldsToUse,\n ...reduceFieldOptions({\n fields: field.fields,\n labelPrefix: combineFieldLabel({ CustomLabel, field, prefix: labelPrefix }),\n parentPath: path,\n path: createNestedClientFieldPath(path, field),\n permissions: fieldPermissions,\n }),\n ]\n }\n\n if (field.type === 'tabs' && 'tabs' in field) {\n return [\n ...fieldsToUse,\n ...field.tabs.reduce((tabFields, tab) => {\n if ('fields' in tab) {\n const isNamedTab = 'name' in tab && tab.name\n return [\n ...tabFields,\n ...reduceFieldOptions({\n fields: tab.fields,\n labelPrefix,\n parentPath: path,\n path: isNamedTab ? createNestedClientFieldPath(path, field) : path,\n permissions: fieldPermissions,\n }),\n ]\n }\n }, []),\n ]\n }\n\n const formattedField: FieldOption = {\n label: combineFieldLabel({ CustomLabel, field, prefix: labelPrefix }),\n value: {\n field,\n fieldPermissions: fieldPermissions as SanitizedFieldPermissions,\n path: createNestedClientFieldPath(path, field),\n },\n }\n\n return [...fieldsToUse, formattedField]\n }, [])\n}\n", "'use client'\nimport type { ClientField } from 'payload'\n\nimport { fieldAffectsData } from 'payload/shared'\n\nexport const createNestedClientFieldPath = (parentPath: string, field: ClientField): string => {\n if (parentPath) {\n if (fieldAffectsData(field) && field.name) {\n return `${parentPath}.${field.name}`\n }\n return parentPath\n }\n\n if (fieldAffectsData(field)) {\n return field.name\n }\n\n return ''\n}\n", "import type { ClientField } from 'payload'\n\nimport { Fragment } from 'react'\n\nimport { RenderCustomComponent } from '../elements/RenderCustomComponent/index.js'\nimport { FieldLabel } from '../fields/FieldLabel/index.js'\n\nexport const combineFieldLabel = ({\n CustomLabel,\n field,\n prefix,\n}: {\n CustomLabel?: React.ReactNode\n field?: ClientField\n prefix?: React.ReactNode\n}): React.ReactNode => {\n return (\n <Fragment>\n {prefix ? (\n <Fragment>\n <span style={{ display: 'inline-block' }}>{prefix}</span>\n {' > '}\n </Fragment>\n ) : null}\n <span style={{ display: 'inline-block' }}>\n <RenderCustomComponent\n CustomComponent={CustomLabel}\n Fallback={<FieldLabel label={'label' in field && field.label} />}\n />\n </span>\n </Fragment>\n )\n}\n", "'use client'\n\nimport { useModal } from '@faceless-ui/modal'\nimport React from 'react'\n\nimport { useTranslation } from '../../../providers/Translation/index.js'\nimport { ConfirmationModal } from '../../ConfirmationModal/index.js'\nimport { useBulkUpload } from '../index.js'\nexport const discardBulkUploadModalSlug = 'bulk-upload--discard-without-saving'\n\nexport function DiscardWithoutSaving() {\n const { t } = useTranslation()\n const { closeModal } = useModal()\n const { drawerSlug } = useBulkUpload()\n\n const onCancel = React.useCallback(() => {\n closeModal(discardBulkUploadModalSlug)\n }, [closeModal])\n\n const onConfirm = React.useCallback(() => {\n closeModal(drawerSlug)\n closeModal(discardBulkUploadModalSlug)\n }, [closeModal, drawerSlug])\n\n return (\n <ConfirmationModal\n body={t('general:changesNotSaved')}\n cancelLabel={t('general:stayOnThisPage')}\n confirmLabel={t('general:leaveAnyway')}\n heading={t('general:leaveWithoutSaving')}\n modalSlug={discardBulkUploadModalSlug}\n onCancel={onCancel}\n onConfirm={onConfirm}\n />\n )\n}\n", "'use client'\n\nimport React, { useCallback, useEffect, useMemo } from 'react'\n\nimport type { EditFormProps } from './types.js'\n\nimport { Form, useForm } from '../../../forms/Form/index.js'\nimport { type FormProps } from '../../../forms/Form/types.js'\nimport { WatchChildErrors } from '../../../forms/WatchChildErrors/index.js'\nimport { useConfig } from '../../../providers/Config/index.js'\nimport { useDocumentEvents } from '../../../providers/DocumentEvents/index.js'\nimport { useDocumentInfo } from '../../../providers/DocumentInfo/index.js'\nimport { OperationProvider } from '../../../providers/Operation/index.js'\nimport { useServerFunctions } from '../../../providers/ServerFunctions/index.js'\nimport { abortAndIgnore, handleAbortRef } from '../../../utilities/abortAndIgnore.js'\nimport { useDocumentDrawerContext } from '../../DocumentDrawer/Provider.js'\nimport { DocumentFields } from '../../DocumentFields/index.js'\nimport { MoveDocToFolder } from '../../FolderView/MoveDocToFolder/index.js'\nimport { Upload_v4 } from '../../Upload/index.js'\nimport { useFormsManager } from '../FormsManager/index.js'\nimport './index.scss'\n\nconst baseClass = 'collection-edit'\n\n// This component receives props only on _pages_\n// When rendered within a drawer, props are empty\n// This is solely to support custom edit views which get server-rendered\n\nexport function EditForm({\n resetUploadEdits,\n submitted,\n updateUploadEdits,\n uploadEdits,\n}: EditFormProps) {\n const {\n action,\n collectionSlug: docSlug,\n docPermissions,\n getDocPreferences,\n hasSavePermission,\n initialState,\n isInitializing,\n Upload: CustomUpload,\n } = useDocumentInfo()\n\n const { drawerSlug, onSave: onSaveFromContext } = useDocumentDrawerContext()\n\n const { getFormState } = useServerFunctions()\n\n const {\n config: { folders },\n getEntityConfig,\n } = useConfig()\n\n const abortOnChangeRef = React.useRef<AbortController>(null)\n\n const collectionConfig = getEntityConfig({ collectionSlug: docSlug })\n const { reportUpdate } = useDocumentEvents()\n\n const collectionSlug = collectionConfig.slug\n\n const [schemaPath] = React.useState(collectionSlug)\n\n const onSave = useCallback(\n (json) => {\n reportUpdate({\n doc: json?.doc || json?.result,\n drawerSlug,\n entitySlug: collectionSlug,\n operation: 'create',\n updatedAt: json?.result?.updatedAt || new Date().toISOString(),\n })\n\n if (typeof onSaveFromContext === 'function') {\n void onSaveFromContext({\n ...json,\n operation: 'create',\n })\n }\n resetUploadEdits()\n },\n [collectionSlug, onSaveFromContext, reportUpdate, resetUploadEdits, drawerSlug],\n )\n\n const onChange: NonNullable<FormProps['onChange']>[0] = useCallback(\n async ({ formState: prevFormState, submitted }) => {\n const controller = handleAbortRef(abortOnChangeRef)\n\n const docPreferences = await getDocPreferences()\n\n const { state: newFormState } = await getFormState({\n collectionSlug,\n docPermissions,\n docPreferences,\n formState: prevFormState,\n operation: 'create',\n schemaPath,\n signal: controller.signal,\n skipValidation: !submitted,\n })\n\n abortOnChangeRef.current = null\n\n return newFormState\n },\n [collectionSlug, schemaPath, getDocPreferences, getFormState, docPermissions],\n )\n\n useEffect(() => {\n const abortOnChange = abortOnChangeRef.current\n\n return () => {\n abortAndIgnore(abortOnChange)\n }\n }, [])\n\n return (\n <OperationProvider operation=\"create\">\n <Form\n action={action}\n className={`${baseClass}__form`}\n disabled={isInitializing || !hasSavePermission}\n initialState={isInitializing ? undefined : initialState}\n isInitializing={isInitializing}\n method=\"POST\"\n onChange={[onChange]}\n onSuccess={onSave}\n submitted={submitted}\n >\n <DocumentFields\n BeforeFields={\n <React.Fragment>\n {CustomUpload || (\n <Upload_v4\n collectionSlug={collectionConfig.slug}\n customActions={[\n folders && collectionConfig.folders && (\n <MoveDocToFolder\n buttonProps={{\n buttonStyle: 'pill',\n size: 'small',\n }}\n folderCollectionSlug={folders.slug}\n folderFieldName={folders.fieldName}\n key=\"move-doc-to-folder\"\n />\n ),\n ].filter(Boolean)}\n initialState={initialState}\n resetUploadEdits={resetUploadEdits}\n updateUploadEdits={updateUploadEdits}\n uploadConfig={collectionConfig.upload}\n uploadEdits={uploadEdits}\n />\n )}\n </React.Fragment>\n }\n docPermissions={docPermissions}\n fields={collectionConfig.fields}\n schemaPathSegments={[collectionConfig.slug]}\n />\n <ReportAllErrors />\n <GetFieldProxy />\n </Form>\n </OperationProvider>\n )\n}\n\nfunction GetFieldProxy() {\n const { getField, getFields } = useForm()\n const { getFormDataRef } = useFormsManager()\n\n useEffect(() => {\n // eslint-disable-next-line react-compiler/react-compiler -- TODO: fix\n getFormDataRef.current = getFields\n }, [getFields, getField, getFormDataRef])\n\n return null\n}\n\nfunction ReportAllErrors() {\n const { docConfig } = useDocumentInfo()\n const { activeIndex, forms, setFormTotalErrorCount } = useFormsManager()\n const errorCountRef = React.useRef(0)\n\n const fileIsValid = useMemo(() => {\n const currentForm = forms[activeIndex]\n return currentForm?.formState?.file?.valid ?? true\n }, [activeIndex, forms])\n\n const reportFormErrorCount = React.useCallback(\n (fieldErrorCount: number) => {\n let newErrorCount = fieldErrorCount\n // If the file is invalid, count that as an error\n if (!fileIsValid) {\n newErrorCount += 1\n }\n if (newErrorCount === errorCountRef.current) {\n return\n }\n setFormTotalErrorCount({ errorCount: newErrorCount, index: activeIndex })\n errorCountRef.current = newErrorCount\n },\n [activeIndex, setFormTotalErrorCount, fileIsValid],\n )\n\n if (!docConfig) {\n return null\n }\n\n return (\n <WatchChildErrors fields={docConfig.fields} path={[]} setErrorCount={reportFormErrorCount} />\n )\n}\n", "'use client'\nimport type { ClientField, SanitizedDocumentPermissions } from 'payload'\n\nimport { fieldIsSidebar } from 'payload/shared'\nimport React, { useMemo } from 'react'\n\nimport { RenderFields } from '../../forms/RenderFields/index.js'\nimport { Gutter } from '../Gutter/index.js'\nimport { TrashBanner } from '../TrashBanner/index.js'\nimport './index.scss'\n\nconst baseClass = 'document-fields'\n\ntype Args = {\n readonly AfterFields?: React.ReactNode\n readonly BeforeFields?: React.ReactNode\n readonly Description?: React.ReactNode\n readonly docPermissions: SanitizedDocumentPermissions\n readonly fields: ClientField[]\n readonly forceSidebarWrap?: boolean\n readonly isTrashed?: boolean\n readonly readOnly?: boolean\n readonly schemaPathSegments: string[]\n}\n\nexport const DocumentFields: React.FC<Args> = ({\n AfterFields,\n BeforeFields,\n docPermissions,\n fields,\n forceSidebarWrap,\n isTrashed = false,\n readOnly,\n schemaPathSegments,\n}) => {\n const { hasSidebarFields, mainFields, sidebarFields } = useMemo(() => {\n return fields.reduce(\n (acc, field) => {\n if (fieldIsSidebar(field)) {\n acc.sidebarFields.push(field)\n acc.mainFields.push(null)\n acc.hasSidebarFields = true\n } else {\n acc.mainFields.push(field)\n acc.sidebarFields.push(null)\n }\n return acc\n },\n {\n hasSidebarFields: false,\n mainFields: [] as ClientField[],\n sidebarFields: [] as ClientField[],\n },\n )\n }, [fields])\n\n return (\n <div\n className={[\n baseClass,\n hasSidebarFields ? `${baseClass}--has-sidebar` : `${baseClass}--no-sidebar`,\n forceSidebarWrap && `${baseClass}--force-sidebar-wrap`,\n ]\n .filter(Boolean)\n .join(' ')}\n >\n <div className={`${baseClass}__main`}>\n <Gutter className={`${baseClass}__edit`}>\n {isTrashed && <TrashBanner />}\n {BeforeFields}\n <RenderFields\n className={`${baseClass}__fields`}\n fields={mainFields}\n forceRender\n parentIndexPath=\"\"\n parentPath=\"\"\n parentSchemaPath={schemaPathSegments.join('.')}\n permissions={docPermissions?.fields}\n readOnly={readOnly}\n />\n {AfterFields}\n </Gutter>\n </div>\n {hasSidebarFields ? (\n <div className={`${baseClass}__sidebar-wrap`}>\n <div className={`${baseClass}__sidebar`}>\n <div className={`${baseClass}__sidebar-fields`}>\n <RenderFields\n fields={sidebarFields}\n forceRender\n parentIndexPath=\"\"\n parentPath=\"\"\n parentSchemaPath={schemaPathSegments.join('.')}\n permissions={docPermissions?.fields}\n readOnly={readOnly}\n />\n </div>\n </div>\n </div>\n ) : null}\n </div>\n )\n}\n", "'use client'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport React from 'react'\n\nimport { TrashIcon } from '../../icons/Trash/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useDocumentInfo } from '../../providers/DocumentInfo/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport './index.scss'\n\nconst baseClass = 'trash-banner'\n\nexport const TrashBanner: React.FC = () => {\n const { getEntityConfig } = useConfig()\n const { collectionSlug } = useDocumentInfo()\n const collectionConfig = getEntityConfig({ collectionSlug })\n\n const { labels } = collectionConfig\n const { i18n } = useTranslation()\n return (\n <div className={baseClass}>\n <TrashIcon />\n <p>\n {i18n.t('general:documentIsTrashed', {\n label: `${getTranslation(labels?.singular, i18n)}`,\n })}\n </p>\n </div>\n )\n}\n", "import React from 'react'\n\nimport './index.scss'\n\nexport function TrashIcon({ className }: { className?: string }) {\n return (\n <svg\n className={[className, 'icon icon--trash'].filter(Boolean).join(' ')}\n fill=\"none\"\n height=\"20\"\n viewBox=\"0 0 20 20\"\n width=\"20\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M4.1499 6.1H15.8499M14.5499 6.1V15.2C14.5499 15.85 13.8999 16.5 13.2499 16.5H6.7499C6.0999 16.5 5.4499 15.85 5.4499 15.2V6.1M7.3999 6.1V4.8C7.3999 4.15 8.0499 3.5 8.6999 3.5H11.2999C11.9499 3.5 12.5999 4.15 12.5999 4.8V6.1M8.6999 9.35V13.25M11.2999 9.35V13.25\"\n stroke=\"currentColor\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n )\n}\n", "'use client'\n\nimport { useModal } from '@faceless-ui/modal'\nimport { getTranslation } from '@payloadcms/translations'\nimport { type FolderOrDocument, formatAdminURL } from 'payload/shared'\nimport React, { useId } from 'react'\nimport { toast } from 'sonner'\n\nimport type { Props as ButtonProps } from '../../Button/types.js'\n\nimport { useForm, useFormFields } from '../../../forms/Form/context.js'\nimport { FolderIcon } from '../../../icons/Folder/index.js'\nimport { useConfig } from '../../../providers/Config/index.js'\nimport { useDocumentInfo } from '../../../providers/DocumentInfo/index.js'\nimport { useTranslation } from '../../../providers/Translation/index.js'\nimport { Button } from '../../Button/index.js'\nimport { formatDrawerSlug, useDrawerDepth } from '../../Drawer/index.js'\nimport './index.scss'\nimport { MoveItemsToFolderDrawer } from '../Drawers/MoveToFolder/index.js'\n\nconst baseClass = 'move-doc-to-folder'\n\n/**\n * This is the button shown on the edit document view. It uses the more generic `MoveDocToFolderButton` component.\n */\nexport function MoveDocToFolder({\n buttonProps,\n className = '',\n folderCollectionSlug,\n folderFieldName,\n}: {\n readonly buttonProps?: Partial<ButtonProps>\n readonly className?: string\n readonly folderCollectionSlug: string\n readonly folderFieldName: string\n}) {\n const { t } = useTranslation()\n const dispatchField = useFormFields(([_, dispatch]) => dispatch)\n const currentParentFolder = useFormFields(\n ([fields]) => (fields && fields?.[folderFieldName]) || null,\n )\n const fromFolderID = currentParentFolder?.value\n const { id, collectionSlug, initialData, title } = useDocumentInfo()\n const { setModified } = useForm()\n const [fromFolderName, setFromFolderName] = React.useState(() => `${t('general:loading')}...`)\n\n const { config } = useConfig()\n const modalID = useId()\n\n React.useEffect(() => {\n async function fetchFolderLabel() {\n if (fromFolderID && (typeof fromFolderID === 'string' || typeof fromFolderID === 'number')) {\n const response = await fetch(\n formatAdminURL({\n apiRoute: config.routes.api,\n path: `/${folderCollectionSlug}/${fromFolderID}`,\n }),\n )\n const folderData = await response.json()\n setFromFolderName(folderData?.name || t('folder:noFolder'))\n } else {\n setFromFolderName(t('folder:noFolder'))\n }\n }\n\n void fetchFolderLabel()\n }, [folderCollectionSlug, config.routes.api, fromFolderID, t])\n\n return (\n <MoveDocToFolderButton\n buttonProps={buttonProps}\n className={className}\n collectionSlug={collectionSlug}\n docData={initialData as FolderOrDocument['value']}\n docID={id}\n docTitle={title}\n folderCollectionSlug={folderCollectionSlug}\n folderFieldName={folderFieldName}\n fromFolderID={fromFolderID as number | string}\n fromFolderName={fromFolderName}\n modalSlug={`move-to-folder-${modalID}`}\n onConfirm={({ id }) => {\n if (currentParentFolder.value !== id) {\n dispatchField({\n type: 'UPDATE',\n path: folderFieldName,\n value: id,\n })\n setModified(true)\n }\n }}\n skipConfirmModal={!currentParentFolder?.value}\n />\n )\n}\n\ntype MoveDocToFolderButtonProps = {\n readonly buttonProps?: Partial<ButtonProps>\n readonly className?: string\n readonly collectionSlug: string\n readonly docData: FolderOrDocument['value']\n readonly docID: number | string\n readonly docTitle?: string\n readonly folderCollectionSlug: string\n readonly folderFieldName: string\n readonly fromFolderID?: number | string\n readonly fromFolderName: string\n readonly modalSlug: string\n readonly onConfirm?: (args: { id: number | string; name: string }) => Promise<void> | void\n readonly skipConfirmModal?: boolean\n}\n\n/**\n * This is a more generic button that can be used in other contexts, such as table cells and the edit view.\n */\nexport const MoveDocToFolderButton = ({\n buttonProps,\n className,\n collectionSlug,\n docData,\n docID,\n docTitle,\n folderCollectionSlug,\n folderFieldName,\n fromFolderID,\n fromFolderName,\n modalSlug,\n onConfirm,\n skipConfirmModal,\n}: MoveDocToFolderButtonProps) => {\n const { getEntityConfig } = useConfig()\n const { i18n, t } = useTranslation()\n const { closeModal, openModal } = useModal()\n const drawerDepth = useDrawerDepth()\n const drawerSlug = formatDrawerSlug({ slug: modalSlug, depth: drawerDepth })\n\n const titleToRender =\n docTitle || getTranslation(getEntityConfig({ collectionSlug }).labels.singular, i18n)\n\n return (\n <>\n <Button\n buttonStyle=\"subtle\"\n className={[baseClass, className].filter(Boolean).join(' ')}\n icon={<FolderIcon />}\n iconPosition=\"left\"\n onClick={() => {\n openModal(drawerSlug)\n }}\n {...buttonProps}\n >\n {fromFolderName}\n </Button>\n\n <MoveItemsToFolderDrawer\n action=\"moveItemToFolder\"\n drawerSlug={drawerSlug}\n //todo this should inherit\n folderAssignedCollections={[collectionSlug]}\n folderCollectionSlug={folderCollectionSlug}\n folderFieldName={folderFieldName}\n fromFolderID={fromFolderID}\n fromFolderName={fromFolderName}\n itemsToMove={[\n {\n itemKey: `${collectionSlug}-${docID}`,\n relationTo: collectionSlug,\n value: { ...docData, id: docID },\n },\n ]}\n onConfirm={async (args) => {\n if (fromFolderID !== args.id && typeof onConfirm === 'function') {\n try {\n await onConfirm(args)\n\n if (args.id) {\n // moved to folder\n toast.success(\n t('folder:itemHasBeenMoved', {\n folderName: `\"${args.name}\"`,\n title: titleToRender,\n }),\n )\n } else {\n // moved to root\n toast.success(\n t('folder:itemHasBeenMovedToRoot', {\n title: titleToRender,\n }),\n )\n }\n } catch (_) {\n // todo: add error toast?\n }\n }\n\n closeModal(drawerSlug)\n }}\n skipConfirmModal={skipConfirmModal}\n title={titleToRender}\n />\n </>\n )\n}\n", "import React from 'react'\n\nimport './index.scss'\n\nexport function FolderIcon({ className }: { className?: string }) {\n return (\n <svg\n className={[className, 'icon icon--folder'].filter(Boolean).join(' ')}\n fill=\"none\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n width=\"16\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M13.3333 13.3333C13.6869 13.3333 14.026 13.1929 14.2761 12.9428C14.5261 12.6928 14.6666 12.3536 14.6666 12V5.33333C14.6666 4.97971 14.5261 4.64057 14.2761 4.39052C14.026 4.14048 13.6869 4 13.3333 4H8.06659C7.84359 4.00219 7.62362 3.94841 7.42679 3.84359C7.22996 3.73877 7.06256 3.58625 6.93992 3.4L6.39992 2.6C6.27851 2.41565 6.11323 2.26432 5.91892 2.1596C5.7246 2.05488 5.50732 2.00004 5.28659 2H2.66659C2.31296 2 1.97382 2.14048 1.72378 2.39052C1.47373 2.64057 1.33325 2.97971 1.33325 3.33333V12C1.33325 12.3536 1.47373 12.6928 1.72378 12.9428C1.97382 13.1929 2.31296 13.3333 2.66659 13.3333H13.3333Z\"\n fill=\"currentColor\"\n />\n </svg>\n )\n}\n", "'use client'\n\nimport type { CollectionSlug, Document } from 'payload'\nimport type { FolderBreadcrumb, FolderOrDocument } from 'payload/shared'\n\nimport { useModal } from '@faceless-ui/modal'\nimport { getTranslation } from '@payloadcms/translations'\nimport { extractID } from 'payload/shared'\nimport React from 'react'\n\nimport { useAuth } from '../../../../providers/Auth/index.js'\nimport { FolderProvider, useFolder } from '../../../../providers/Folders/index.js'\nimport { useRouteCache } from '../../../../providers/RouteCache/index.js'\nimport { useServerFunctions } from '../../../../providers/ServerFunctions/index.js'\nimport { useTranslation } from '../../../../providers/Translation/index.js'\nimport { Button } from '../../../Button/index.js'\nimport { ConfirmationModal } from '../../../ConfirmationModal/index.js'\nimport { useDocumentDrawer } from '../../../DocumentDrawer/index.js'\nimport { Drawer } from '../../../Drawer/index.js'\nimport { DrawerActionHeader } from '../../../DrawerActionHeader/index.js'\nimport { DrawerContentContainer } from '../../../DrawerContentContainer/index.js'\nimport { ListCreateNewDocInFolderButton } from '../../../ListHeader/TitleActions/ListCreateNewDocInFolderButton.js'\nimport { LoadingOverlay } from '../../../Loading/index.js'\nimport { NoListResults } from '../../../NoListResults/index.js'\nimport { Translation } from '../../../Translation/index.js'\nimport { FolderBreadcrumbs } from '../../Breadcrumbs/index.js'\nimport { ColoredFolderIcon } from '../../ColoredFolderIcon/index.js'\nimport './index.scss'\n\nconst baseClass = 'move-folder-drawer'\nconst baseModalSlug = 'move-folder-drawer'\nconst confirmModalSlug = `${baseModalSlug}-confirm-move`\n\ntype ActionProps =\n | {\n readonly action: 'moveItemsToFolder'\n }\n | {\n readonly action: 'moveItemToFolder'\n readonly title: string\n }\nexport type MoveToFolderDrawerProps = {\n readonly drawerSlug: string\n readonly folderAssignedCollections: CollectionSlug[]\n readonly folderCollectionSlug: string\n readonly folderFieldName: string\n readonly fromFolderID?: number | string\n readonly fromFolderName?: string\n readonly itemsToMove: FolderOrDocument[]\n /**\n * Callback function to be called when the user confirms the move\n *\n * @param folderID - The ID of the folder to move the items to\n */\n readonly onConfirm: (args: {\n id: null | number | string\n name: null | string\n }) => Promise<void> | void\n readonly populateMoveToFolderDrawer?: (folderID: null | number | string) => Promise<void> | void\n /**\n * Set to `true` to skip the confirmation modal\n * @default false\n */\n readonly skipConfirmModal?: boolean\n} & ActionProps\n\nexport function MoveItemsToFolderDrawer(props: MoveToFolderDrawerProps) {\n return (\n <Drawer gutter={false} Header={null} slug={props.drawerSlug}>\n <LoadFolderData {...props} />\n </Drawer>\n )\n}\n\nfunction LoadFolderData(props: MoveToFolderDrawerProps) {\n const { permissions } = useAuth()\n const [subfolders, setSubfolders] = React.useState<FolderOrDocument[]>([])\n const [documents, setDocuments] = React.useState<FolderOrDocument[]>([])\n const [breadcrumbs, setBreadcrumbs] = React.useState<FolderBreadcrumb[]>([])\n const [FolderResultsComponent, setFolderResultsComponent] = React.useState<React.ReactNode>(null)\n const [hasLoaded, setHasLoaded] = React.useState(false)\n const [folderID, setFolderID] = React.useState<null | number | string>(props.fromFolderID || null)\n const hasLoadedRef = React.useRef(false)\n const { getFolderResultsComponentAndData } = useServerFunctions()\n\n const populateMoveToFolderDrawer = React.useCallback(\n async (folderIDToPopulate: null | number | string) => {\n try {\n const result = await getFolderResultsComponentAndData({\n browseByFolder: false,\n collectionsToDisplay: [props.folderCollectionSlug],\n displayAs: 'grid',\n // todo: should be able to pass undefined, empty array or null and get all folders. Need to look at API for this in the server function\n folderAssignedCollections: props.folderAssignedCollections,\n folderID: folderIDToPopulate,\n sort: 'name',\n })\n\n setBreadcrumbs(result.breadcrumbs || [])\n setSubfolders(result?.subfolders || [])\n setDocuments(result?.documents || [])\n setFolderResultsComponent(result.FolderResultsComponent || null)\n setFolderID(folderIDToPopulate)\n setHasLoaded(true)\n } catch (e) {\n setBreadcrumbs([])\n setSubfolders([])\n setDocuments([])\n }\n\n hasLoadedRef.current = true\n },\n [getFolderResultsComponentAndData, props.folderAssignedCollections, props.folderCollectionSlug],\n )\n\n React.useEffect(() => {\n if (!hasLoadedRef.current) {\n void populateMoveToFolderDrawer(props.fromFolderID)\n }\n }, [populateMoveToFolderDrawer, props.fromFolderID])\n\n if (!hasLoaded) {\n return <LoadingOverlay />\n }\n\n return (\n <FolderProvider\n allCollectionFolderSlugs={[props.folderCollectionSlug]}\n allowCreateCollectionSlugs={\n permissions.collections[props.folderCollectionSlug]?.create\n ? [props.folderCollectionSlug]\n : []\n }\n allowMultiSelection={false}\n breadcrumbs={breadcrumbs}\n documents={documents}\n folderFieldName={props.folderFieldName}\n folderID={folderID}\n FolderResultsComponent={FolderResultsComponent}\n key={folderID}\n onItemClick={async (item) => {\n await populateMoveToFolderDrawer(item.value.id)\n }}\n subfolders={subfolders}\n >\n <Content {...props} populateMoveToFolderDrawer={populateMoveToFolderDrawer} />\n </FolderProvider>\n )\n}\n\nfunction Content({\n drawerSlug,\n fromFolderID,\n fromFolderName,\n itemsToMove,\n onConfirm,\n populateMoveToFolderDrawer,\n skipConfirmModal,\n ...props\n}: MoveToFolderDrawerProps) {\n const { clearRouteCache } = useRouteCache()\n const { closeModal, isModalOpen, openModal } = useModal()\n const [count] = React.useState(() => itemsToMove.length)\n const [folderAddedToUnderlyingFolder, setFolderAddedToUnderlyingFolder] = React.useState(false)\n const { i18n, t } = useTranslation()\n const {\n breadcrumbs,\n folderCollectionConfig,\n folderCollectionSlug,\n folderFieldName,\n folderID,\n FolderResultsComponent,\n folderType,\n getSelectedItems,\n subfolders,\n } = useFolder()\n const [FolderDocumentDrawer, , { closeDrawer: closeFolderDrawer, openDrawer: openFolderDrawer }] =\n useDocumentDrawer({\n collectionSlug: folderCollectionSlug,\n })\n\n const getSelectedFolder = React.useCallback((): {\n id: null | number | string\n name: null | string\n } => {\n const selected = getSelectedItems()\n\n if (selected.length === 0) {\n const lastCrumb = breadcrumbs?.[breadcrumbs.length - 1]\n // use the breadcrumb\n return {\n id: lastCrumb?.id || null,\n name: lastCrumb?.name || null,\n }\n } else {\n // use the selected item\n return {\n id: selected[0].value.id,\n name: selected[0].value._folderOrDocumentTitle,\n }\n }\n }, [breadcrumbs, getSelectedItems])\n\n const onCreateSuccess = React.useCallback(\n async ({ collectionSlug, doc }: { collectionSlug: CollectionSlug; doc: Document }) => {\n await populateMoveToFolderDrawer(folderID)\n if (\n collectionSlug === folderCollectionSlug &&\n ((doc?.folder && fromFolderID === extractID(doc?.folder)) ||\n (!fromFolderID && !doc?.folder))\n ) {\n // if the folder we created is in the same folder as the one we are moving from\n // set variable so we can clear the route cache when we close the drawer\n setFolderAddedToUnderlyingFolder(true)\n }\n },\n [populateMoveToFolderDrawer, folderID, fromFolderID, folderCollectionSlug],\n )\n\n const onConfirmMove = React.useCallback(() => {\n if (typeof onConfirm === 'function') {\n void onConfirm(getSelectedFolder())\n }\n }, [getSelectedFolder, onConfirm])\n\n React.useEffect(() => {\n if (!isModalOpen(drawerSlug) && folderAddedToUnderlyingFolder) {\n // if we added a folder to the underlying folder, clear the route cache\n // so that the folder view will be reloaded with the new folder\n setFolderAddedToUnderlyingFolder(false)\n clearRouteCache()\n }\n }, [drawerSlug, isModalOpen, clearRouteCache, folderAddedToUnderlyingFolder])\n\n return (\n <div className={baseClass}>\n <DrawerActionHeader\n onCancel={() => {\n closeModal(drawerSlug)\n }}\n onSave={() => {\n if (skipConfirmModal) {\n onConfirmMove()\n } else {\n openModal(confirmModalSlug)\n }\n }}\n saveLabel={t('general:select')}\n title={\n <DrawerHeading\n action={props.action}\n count={count}\n fromFolderName={fromFolderID ? fromFolderName : undefined}\n title={props.action === 'moveItemToFolder' ? props.title : undefined}\n />\n }\n />\n\n <div className={`${baseClass}__breadcrumbs-section`}>\n <FolderBreadcrumbs\n breadcrumbs={[\n {\n id: null,\n name: (\n <span className={`${baseClass}__folder-breadcrumbs-root`}>\n <ColoredFolderIcon />\n {t('folder:folders')}\n </span>\n ),\n onClick: breadcrumbs.length\n ? () => {\n void populateMoveToFolderDrawer(null)\n }\n : undefined,\n },\n ...breadcrumbs.map((crumb, index) => ({\n id: crumb.id,\n name: crumb.name,\n onClick:\n index !== breadcrumbs.length - 1\n ? () => {\n void populateMoveToFolderDrawer(crumb.id)\n }\n : undefined,\n })),\n ]}\n />\n {subfolders.length > 0 && (\n <>\n <Button\n buttonStyle=\"pill\"\n className={`${baseClass}__add-folder-button`}\n margin={false}\n onClick={() => {\n openFolderDrawer()\n }}\n >\n {t('fields:addLabel', {\n label: getTranslation(folderCollectionConfig.labels?.singular, i18n),\n })}\n </Button>\n <FolderDocumentDrawer\n initialData={{\n [folderFieldName]: folderID,\n folderType,\n }}\n onSave={(result) => {\n void onCreateSuccess({\n collectionSlug: folderCollectionConfig.slug,\n doc: result.doc,\n })\n closeFolderDrawer()\n }}\n redirectAfterCreate={false}\n />\n </>\n )}\n </div>\n\n <DrawerContentContainer className={`${baseClass}__body-section`}>\n {subfolders.length > 0 ? (\n FolderResultsComponent\n ) : (\n <NoListResults\n Actions={[\n <ListCreateNewDocInFolderButton\n buttonLabel={`${t('general:create')} ${getTranslation(folderCollectionConfig.labels?.singular, i18n).toLowerCase()}`}\n buttonSize=\"medium\"\n buttonStyle=\"primary\"\n collectionSlugs={[folderCollectionSlug]}\n folderAssignedCollections={props.folderAssignedCollections}\n key=\"create-folder\"\n onCreateSuccess={onCreateSuccess}\n slugPrefix=\"create-new-folder-from-drawer--no-results\"\n />,\n ]}\n Message={\n <>\n <h3>{i18n.t('general:noResultsFound')}</h3>\n <p>{i18n.t('general:noResultsDescription')}</p>\n </>\n }\n />\n )}\n </DrawerContentContainer>\n\n {!skipConfirmModal && (\n <ConfirmationModal\n body={\n <ConfirmationMessage\n action={props.action}\n count={count}\n fromFolderName={fromFolderName}\n title={props.action === 'moveItemToFolder' ? props.title : undefined}\n toFolderName={getSelectedFolder().name}\n />\n }\n confirmingLabel={t('general:moving')}\n confirmLabel={t('general:move')}\n heading={t('general:confirmMove')}\n modalSlug={confirmModalSlug}\n onConfirm={onConfirmMove}\n />\n )}\n </div>\n )\n}\n\nfunction DrawerHeading(\n props: { count?: number } & ActionProps & Pick<MoveToFolderDrawerProps, 'fromFolderName'>,\n): string {\n const { t } = useTranslation()\n\n switch (props.action) {\n case 'moveItemToFolder':\n // moving current folder from list view actions menu\n // or moving item from edit view\n if (props.fromFolderName) {\n // move from folder\n return t('folder:movingFromFolder', {\n fromFolder: props.fromFolderName,\n title: props.title,\n })\n } else {\n // move from root\n return t('folder:selectFolderForItem', {\n title: props.title,\n })\n }\n\n case 'moveItemsToFolder':\n if (props.fromFolderName) {\n // move from folder\n return t('folder:movingFromFolder', {\n fromFolder: props.fromFolderName,\n title: `${props.count} ${props.count > 1 ? t('general:items') : t('general:item')}`,\n })\n } else {\n // move from root\n return t('folder:selectFolderForItem', {\n title: `${props.count} ${props.count > 1 ? t('general:items') : t('general:item')}`,\n })\n }\n }\n}\n\nfunction ConfirmationMessage(\n props: { count?: number; toFolderName?: string } & ActionProps &\n Pick<MoveToFolderDrawerProps, 'fromFolderName'>,\n) {\n const { t } = useTranslation()\n\n switch (props.action) {\n case 'moveItemToFolder':\n // moving current folder from list view actions menu\n // or moving item from edit view\n if (props.toFolderName) {\n // move to destination\n // You are about to move {{title}} to {{toFolder}}. Are you sure?\n return (\n <Translation\n elements={{\n 1: ({ children }) => <strong>{children}</strong>,\n 2: ({ children }) => <strong>{children}</strong>,\n }}\n i18nKey=\"folder:moveItemToFolderConfirmation\"\n t={t}\n variables={{\n title: props.title,\n toFolder: props.toFolderName,\n }}\n />\n )\n } else {\n // move to root\n // You are about to move {{title}} to the root folder. Are you sure?\n return (\n <Translation\n elements={{\n 1: ({ children }) => <strong>{children}</strong>,\n }}\n i18nKey=\"folder:moveItemToRootConfirmation\"\n t={t}\n variables={{\n title: props.title,\n }}\n />\n )\n }\n\n case 'moveItemsToFolder':\n // moving many (documents/folders) from list view\n if (props.toFolderName) {\n // move to destination\n // You are about to move {{count}} {{label}} to {{toFolder}}. Are you sure?\n return (\n <Translation\n elements={{\n 1: ({ children }) => <strong>{children}</strong>,\n 2: ({ children }) => <strong>{children}</strong>,\n }}\n i18nKey=\"folder:moveItemsToFolderConfirmation\"\n t={t}\n variables={{\n count: props.count,\n label: props.count > 1 ? t('general:items') : t('general:item'),\n toFolder: props.toFolderName,\n }}\n />\n )\n } else {\n // move to root\n // You are about to move {{count}} {{label}} to the root folder. Are you sure?\n return (\n <Translation\n elements={{\n 1: ({ children }) => <strong>{children}</strong>,\n }}\n i18nKey=\"folder:moveItemsToRootConfirmation\"\n t={t}\n variables={{\n count: props.count,\n label: props.count > 1 ? t('general:items') : t('general:item'),\n }}\n />\n )\n }\n }\n}\n", "'use client'\n\nimport type { ClientCollectionConfig, CollectionSlug, FolderSortKeys } from 'payload'\nimport type { FolderBreadcrumb, FolderDocumentItemKey, FolderOrDocument } from 'payload/shared'\n\nimport { useRouter, useSearchParams } from 'next/navigation.js'\nimport { extractID, formatAdminURL, formatFolderOrDocumentItem } from 'payload/shared'\nimport * as qs from 'qs-esm'\nimport React from 'react'\nimport { toast } from 'sonner'\n\nimport { useDrawerDepth } from '../../elements/Drawer/index.js'\nimport { parseSearchParams } from '../../utilities/parseSearchParams.js'\nimport { useConfig } from '../Config/index.js'\nimport { useLocale } from '../Locale/index.js'\nimport { useRouteTransition } from '../RouteTransition/index.js'\nimport { useTranslation } from '../Translation/index.js'\nimport { groupItemIDsByRelation } from './groupItemIDsByRelation.js'\n\ntype FolderQueryParams = {\n page?: string\n relationTo?: CollectionSlug[]\n search?: string\n sort?: string\n}\n\nexport type FileCardData = {\n filename: string\n id: number | string\n mimeType: string\n name: string\n url: string\n}\n\nexport type FolderContextValue = {\n /**\n * The collection slugs that a view can be filtered by\n * Used in the browse-by-folder view\n */\n activeCollectionFolderSlugs: CollectionSlug[]\n /**\n * Folder enabled collection slugs that can be populated within the provider\n */\n readonly allCollectionFolderSlugs?: CollectionSlug[]\n allowCreateCollectionSlugs: CollectionSlug[]\n breadcrumbs?: FolderBreadcrumb[]\n checkIfItemIsDisabled: (item: FolderOrDocument) => boolean\n clearSelections: () => void\n currentFolder?: FolderOrDocument | null\n documents?: FolderOrDocument[]\n dragOverlayItem?: FolderOrDocument | undefined\n focusedRowIndex: number\n folderCollectionConfig: ClientCollectionConfig\n folderCollectionSlug: string\n folderFieldName: string\n folderID?: number | string\n FolderResultsComponent: React.ReactNode\n folderType: CollectionSlug[] | undefined\n getFolderRoute: (toFolderID?: number | string) => string\n getSelectedItems?: () => FolderOrDocument[]\n isDragging: boolean\n itemKeysToMove?: Set<FolderDocumentItemKey>\n moveToFolder: (args: {\n itemsToMove: FolderOrDocument[]\n toFolderID?: number | string\n }) => Promise<void>\n onItemClick: (args: { event: React.MouseEvent; index: number; item: FolderOrDocument }) => void\n onItemKeyPress: (args: {\n event: React.KeyboardEvent\n index: number\n item: FolderOrDocument\n }) => void\n refineFolderData: (args: { query?: FolderQueryParams; updateURL: boolean }) => void\n search: string\n selectedFolderCollections?: CollectionSlug[]\n readonly selectedItemKeys: Set<FolderDocumentItemKey>\n setBreadcrumbs: React.Dispatch<React.SetStateAction<FolderBreadcrumb[]>>\n setFocusedRowIndex: React.Dispatch<React.SetStateAction<number>>\n setIsDragging: React.Dispatch<React.SetStateAction<boolean>>\n sort: FolderSortKeys\n subfolders?: FolderOrDocument[]\n}\n\nconst Context = React.createContext<FolderContextValue>({\n activeCollectionFolderSlugs: [],\n allCollectionFolderSlugs: [],\n allowCreateCollectionSlugs: [],\n breadcrumbs: [],\n checkIfItemIsDisabled: () => false,\n clearSelections: () => {},\n currentFolder: null,\n documents: [],\n dragOverlayItem: undefined,\n focusedRowIndex: -1,\n folderCollectionConfig: null,\n folderCollectionSlug: '',\n folderFieldName: 'folder',\n folderID: undefined,\n FolderResultsComponent: null,\n folderType: undefined,\n getFolderRoute: () => '',\n getSelectedItems: () => [],\n isDragging: false,\n itemKeysToMove: undefined,\n moveToFolder: () => Promise.resolve(undefined),\n onItemClick: () => undefined,\n onItemKeyPress: () => undefined,\n refineFolderData: () => undefined,\n search: '',\n selectedFolderCollections: undefined,\n selectedItemKeys: new Set<FolderDocumentItemKey>(),\n setBreadcrumbs: () => {},\n setFocusedRowIndex: () => -1,\n setIsDragging: () => false,\n sort: 'name',\n subfolders: [],\n})\n\nexport type FolderProviderProps = {\n /**\n * The collection slugs that are being viewed\n */\n readonly activeCollectionFolderSlugs?: CollectionSlug[]\n /**\n * Folder enabled collection slugs that can be populated within the provider\n */\n readonly allCollectionFolderSlugs: CollectionSlug[]\n /**\n * Array of slugs that can be created in the folder view\n */\n readonly allowCreateCollectionSlugs: CollectionSlug[]\n readonly allowMultiSelection?: boolean\n /**\n * The base folder route path\n *\n * @example\n * `/collections/:collectionSlug/:folderCollectionSlug`\n * or\n * `/browse-by-folder`\n */\n readonly baseFolderPath?: `/${string}`\n /**\n * Breadcrumbs for the current folder\n */\n readonly breadcrumbs?: FolderBreadcrumb[]\n /**\n * Children to render inside the provider\n */\n readonly children: React.ReactNode\n /**\n * All documents in the current folder\n */\n readonly documents: FolderOrDocument[]\n /**\n * The name of the field that contains the folder relation\n */\n readonly folderFieldName: string\n /**\n * The ID of the current folder\n */\n readonly folderID?: number | string\n /**\n * The component to render the folder results\n */\n readonly FolderResultsComponent: React.ReactNode\n /**\n * Optional function to call when an item is clicked\n */\n readonly onItemClick?: (itme: FolderOrDocument) => void\n /**\n * The intial search query\n */\n readonly search?: string\n /**\n * The sort order of the documents\n *\n * @example\n * `name` for descending\n * `-name` for ascending\n */\n readonly sort?: FolderSortKeys\n /**\n * All subfolders in the current folder\n */\n readonly subfolders: FolderOrDocument[]\n}\nexport function FolderProvider({\n activeCollectionFolderSlugs: activeCollectionSlugs,\n allCollectionFolderSlugs = [],\n allowCreateCollectionSlugs,\n allowMultiSelection = true,\n baseFolderPath,\n breadcrumbs: _breadcrumbsFromProps = [],\n children,\n documents,\n folderFieldName,\n folderID,\n FolderResultsComponent: InitialFolderResultsComponent,\n onItemClick: onItemClickFromProps,\n search,\n sort = 'name',\n subfolders,\n}: FolderProviderProps) {\n const parentFolderContext = useFolder()\n const { config } = useConfig()\n const { routes } = config\n const drawerDepth = useDrawerDepth()\n const { t } = useTranslation()\n const router = useRouter()\n const { startRouteTransition } = useRouteTransition()\n const locale = useLocale()\n const localeCode = locale ? locale.code : undefined\n\n const currentlySelectedIndexes = React.useRef(new Set<number>())\n\n const [selectedFolderCollections, setSelectedFolderCollections] = React.useState<\n CollectionSlug[]\n >([])\n const [FolderResultsComponent, setFolderResultsComponent] = React.useState(\n InitialFolderResultsComponent || (() => null),\n )\n const [folderCollectionConfig] = React.useState(() =>\n config.collections.find(\n (collection) => config.folders && collection.slug === config.folders.slug,\n ),\n )\n const folderCollectionSlug = folderCollectionConfig.slug\n\n const rawSearchParams = useSearchParams()\n const searchParams = React.useMemo(() => parseSearchParams(rawSearchParams), [rawSearchParams])\n const [currentQuery, setCurrentQuery] = React.useState<FolderQueryParams>(searchParams)\n\n const [isDragging, setIsDragging] = React.useState(false)\n const [selectedItemKeys, setSelectedItemKeys] = React.useState<Set<FolderDocumentItemKey>>(\n () => new Set(),\n )\n const [focusedRowIndex, setFocusedRowIndex] = React.useState(-1)\n // This is used to determine what data to display on the drag overlay\n const [dragOverlayItem, setDragOverlayItem] = React.useState<FolderOrDocument | undefined>()\n const [breadcrumbs, setBreadcrumbs] =\n React.useState<FolderContextValue['breadcrumbs']>(_breadcrumbsFromProps)\n const lastClickTime = React.useRef<null | number>(null)\n const totalCount = subfolders.length + documents.length\n\n const clearSelections = React.useCallback(() => {\n setFocusedRowIndex(-1)\n setSelectedItemKeys(new Set())\n setDragOverlayItem(undefined)\n currentlySelectedIndexes.current = new Set()\n }, [])\n\n const mergeQuery = React.useCallback(\n (newQuery: Partial<FolderQueryParams> = {}): Partial<FolderQueryParams> => {\n let page = 'page' in newQuery ? newQuery.page : currentQuery?.page\n\n if ('search' in newQuery) {\n page = '1'\n }\n\n const mergedQuery = {\n ...currentQuery,\n ...newQuery,\n locale: localeCode,\n page,\n relationTo: 'relationTo' in newQuery ? newQuery.relationTo : currentQuery?.relationTo,\n search: 'search' in newQuery ? newQuery.search : currentQuery?.search,\n sort: 'sort' in newQuery ? newQuery.sort : (currentQuery?.sort ?? undefined),\n }\n\n return mergedQuery\n },\n [currentQuery, localeCode],\n )\n\n const refineFolderData: FolderContextValue['refineFolderData'] = React.useCallback(\n ({ query, updateURL }) => {\n if (updateURL) {\n const queryParams = mergeQuery(query)\n\n startRouteTransition(() =>\n router.replace(\n `${qs.stringify({ ...queryParams, relationTo: JSON.stringify(queryParams.relationTo) }, { addQueryPrefix: true })}`,\n ),\n )\n\n setCurrentQuery(queryParams)\n }\n },\n [mergeQuery, router, startRouteTransition],\n )\n\n const getFolderRoute: FolderContextValue['getFolderRoute'] = React.useCallback(\n (toFolderID) => {\n const queryParams = qs.stringify(mergeQuery({ page: '1', search: '' }), {\n addQueryPrefix: true,\n })\n return formatAdminURL({\n adminRoute: config.routes.admin,\n path: `${baseFolderPath}${toFolderID ? `/${toFolderID}` : ''}${queryParams}`,\n })\n },\n [baseFolderPath, config.routes.admin, mergeQuery],\n )\n\n const getItem = React.useCallback(\n (itemKey: FolderDocumentItemKey) => {\n return [...subfolders, ...documents].find((doc) => doc.itemKey === itemKey)\n },\n [documents, subfolders],\n )\n\n const getSelectedItems = React.useCallback(() => {\n return Array.from(selectedItemKeys).reduce((acc, itemKey) => {\n const item = getItem(itemKey)\n if (item) {\n acc.push(item)\n }\n return acc\n }, [])\n }, [selectedItemKeys, getItem])\n\n const navigateAfterSelection = React.useCallback(\n ({ collectionSlug, docID }: { collectionSlug: string; docID?: number | string }) => {\n if (drawerDepth === 1) {\n // not in a drawer (default is 1)\n if (collectionSlug === folderCollectionSlug) {\n // clicked on folder, take the user to the folder view\n startRouteTransition(() => {\n router.push(getFolderRoute(docID))\n clearSelections()\n })\n } else if (collectionSlug) {\n // clicked on document, take the user to the documet view\n startRouteTransition(() => {\n router.push(\n formatAdminURL({\n adminRoute: config.routes.admin,\n path: `/collections/${collectionSlug}/${docID}`,\n }),\n )\n clearSelections()\n })\n }\n } else {\n clearSelections()\n }\n\n if (typeof onItemClickFromProps === 'function') {\n onItemClickFromProps(getItem(`${collectionSlug}-${docID}`))\n }\n },\n [\n clearSelections,\n config.routes.admin,\n drawerDepth,\n folderCollectionSlug,\n getFolderRoute,\n getItem,\n onItemClickFromProps,\n router,\n startRouteTransition,\n ],\n )\n\n const handleShiftSelection = React.useCallback(\n (targetIndex: number) => {\n const allItems = [...subfolders, ...documents]\n\n // Find existing selection boundaries\n const existingIndexes = allItems.reduce((acc, item, idx) => {\n if (selectedItemKeys.has(item.itemKey)) {\n acc.push(idx)\n }\n return acc\n }, [])\n\n if (existingIndexes.length === 0) {\n // No existing selection, just select target\n return [targetIndex]\n }\n\n const firstSelectedIndex = Math.min(...existingIndexes)\n const lastSelectedIndex = Math.max(...existingIndexes)\n const isWithinBounds = targetIndex >= firstSelectedIndex && targetIndex <= lastSelectedIndex\n\n // Choose anchor based on whether we're contracting or extending\n let anchorIndex = targetIndex\n if (isWithinBounds) {\n // Contracting: if target is at a boundary, use target as anchor\n // Otherwise, use furthest boundary to maintain opposite edge\n if (targetIndex === firstSelectedIndex || targetIndex === lastSelectedIndex) {\n anchorIndex = targetIndex\n } else {\n const distanceToFirst = Math.abs(targetIndex - firstSelectedIndex)\n const distanceToLast = Math.abs(targetIndex - lastSelectedIndex)\n anchorIndex = distanceToFirst >= distanceToLast ? firstSelectedIndex : lastSelectedIndex\n }\n } else {\n // Extending: use closest boundary\n const distanceToFirst = Math.abs(targetIndex - firstSelectedIndex)\n const distanceToLast = Math.abs(targetIndex - lastSelectedIndex)\n anchorIndex = distanceToFirst <= distanceToLast ? firstSelectedIndex : lastSelectedIndex\n }\n\n // Create range from anchor to target\n const startIndex = Math.min(anchorIndex, targetIndex)\n const endIndex = Math.max(anchorIndex, targetIndex)\n const newRangeIndexes = Array.from(\n { length: endIndex - startIndex + 1 },\n (_, i) => startIndex + i,\n )\n\n if (isWithinBounds) {\n // Contracting: replace with new range\n return newRangeIndexes\n } else {\n // Extending: union with existing\n return [...new Set([...existingIndexes, ...newRangeIndexes])]\n }\n },\n [subfolders, documents, selectedItemKeys],\n )\n\n const updateSelections = React.useCallback(\n ({ indexes }: { indexes: number[] }) => {\n const allItems = [...subfolders, ...documents]\n const { newSelectedFolderCollections, newSelectedItemKeys } = allItems.reduce(\n (acc, item, index) => {\n if (indexes.includes(index)) {\n acc.newSelectedItemKeys.add(item.itemKey)\n if (item.relationTo === folderCollectionSlug) {\n item.value.folderType?.forEach((collectionSlug) => {\n if (!acc.newSelectedFolderCollections.includes(collectionSlug)) {\n acc.newSelectedFolderCollections.push(collectionSlug)\n }\n })\n } else {\n if (!acc.newSelectedFolderCollections.includes(item.relationTo)) {\n acc.newSelectedFolderCollections.push(item.relationTo)\n }\n }\n }\n return acc\n },\n {\n newSelectedFolderCollections: [] satisfies CollectionSlug[],\n newSelectedItemKeys: new Set<FolderDocumentItemKey>(),\n },\n )\n\n setSelectedFolderCollections(newSelectedFolderCollections)\n setSelectedItemKeys(newSelectedItemKeys)\n },\n [documents, folderCollectionSlug, subfolders],\n )\n\n const onItemKeyPress: FolderContextValue['onItemKeyPress'] = React.useCallback(\n ({ event, item: currentItem }) => {\n const { code, ctrlKey, metaKey, shiftKey } = event\n const isShiftPressed = shiftKey\n const isCtrlPressed = ctrlKey || metaKey\n const isCurrentlySelected = selectedItemKeys.has(currentItem.itemKey)\n const allItems = [...subfolders, ...documents]\n const currentItemIndex = allItems.findIndex((item) => item.itemKey === currentItem.itemKey)\n\n switch (code) {\n case 'ArrowDown':\n case 'ArrowLeft':\n case 'ArrowRight':\n case 'ArrowUp': {\n event.preventDefault()\n\n if (currentItemIndex === -1) {\n break\n }\n\n const isBackward = code === 'ArrowLeft' || code === 'ArrowUp'\n const newItemIndex = isBackward ? currentItemIndex - 1 : currentItemIndex + 1\n\n if (newItemIndex < 0 || newItemIndex > totalCount - 1) {\n // out of bounds, keep current selection\n return\n }\n\n setFocusedRowIndex(newItemIndex)\n\n if (isCtrlPressed) {\n break\n }\n\n if (isShiftPressed && allowMultiSelection) {\n const selectedIndexes = handleShiftSelection(newItemIndex)\n updateSelections({ indexes: selectedIndexes })\n return\n }\n\n // Single selection without shift\n if (!isShiftPressed) {\n const newItem = allItems[newItemIndex]\n setSelectedItemKeys(new Set([newItem.itemKey]))\n }\n\n break\n }\n case 'Enter': {\n if (selectedItemKeys.size === 1) {\n setFocusedRowIndex(undefined)\n navigateAfterSelection({\n collectionSlug: currentItem.relationTo,\n docID: extractID(currentItem.value),\n })\n return\n }\n break\n }\n case 'Escape': {\n clearSelections()\n break\n }\n case 'KeyA': {\n if (allowMultiSelection && isCtrlPressed) {\n event.preventDefault()\n setFocusedRowIndex(totalCount - 1)\n updateSelections({\n indexes: Array.from({ length: totalCount }, (_, i) => i),\n })\n }\n break\n }\n case 'Space': {\n if (allowMultiSelection && isShiftPressed) {\n event.preventDefault()\n const allItems = [...subfolders, ...documents]\n updateSelections({\n indexes: allItems.reduce((acc, item, idx) => {\n if (item.itemKey === currentItem.itemKey) {\n if (isCurrentlySelected) {\n return acc\n } else {\n acc.push(idx)\n }\n } else if (selectedItemKeys.has(item.itemKey)) {\n acc.push(idx)\n }\n return acc\n }, []),\n })\n } else {\n event.preventDefault()\n updateSelections({\n indexes: isCurrentlySelected ? [] : [currentItemIndex],\n })\n }\n break\n }\n case 'Tab': {\n if (allowMultiSelection && isShiftPressed) {\n const prevIndex = currentItemIndex - 1\n if (prevIndex < 0 && selectedItemKeys?.size > 0) {\n setFocusedRowIndex(prevIndex)\n }\n } else {\n const nextIndex = currentItemIndex + 1\n if (nextIndex === totalCount && selectedItemKeys.size > 0) {\n setFocusedRowIndex(totalCount - 1)\n }\n }\n break\n }\n }\n },\n [\n selectedItemKeys,\n subfolders,\n documents,\n allowMultiSelection,\n handleShiftSelection,\n updateSelections,\n navigateAfterSelection,\n clearSelections,\n totalCount,\n ],\n )\n\n const onItemClick: FolderContextValue['onItemClick'] = React.useCallback(\n ({ event, item: clickedItem }) => {\n let doubleClicked: boolean = false\n const isCtrlPressed = event.ctrlKey || event.metaKey\n const isShiftPressed = event.shiftKey\n const isCurrentlySelected = selectedItemKeys.has(clickedItem.itemKey)\n const allItems = [...subfolders, ...documents]\n const currentItemIndex = allItems.findIndex((item) => item.itemKey === clickedItem.itemKey)\n\n if (allowMultiSelection && isCtrlPressed) {\n event.preventDefault()\n let overlayItemKey: FolderDocumentItemKey | undefined\n const indexes = allItems.reduce((acc, item, idx) => {\n if (item.itemKey === clickedItem.itemKey) {\n if (isCurrentlySelected && event.type !== 'pointermove') {\n return acc\n } else {\n acc.push(idx)\n overlayItemKey = item.itemKey\n }\n } else if (selectedItemKeys.has(item.itemKey)) {\n acc.push(idx)\n }\n return acc\n }, [])\n\n updateSelections({ indexes })\n\n if (overlayItemKey) {\n setDragOverlayItem(getItem(overlayItemKey))\n }\n } else if (allowMultiSelection && isShiftPressed) {\n if (currentItemIndex !== -1) {\n const selectedIndexes = handleShiftSelection(currentItemIndex)\n updateSelections({ indexes: selectedIndexes })\n }\n } else if (allowMultiSelection && event.type === 'pointermove') {\n // on drag start of an unselected item\n if (!isCurrentlySelected) {\n updateSelections({\n indexes: allItems.reduce((acc, item, idx) => {\n if (item.itemKey === clickedItem.itemKey) {\n acc.push(idx)\n }\n return acc\n }, []),\n })\n }\n setDragOverlayItem(getItem(clickedItem.itemKey))\n } else {\n // Normal click - select single item\n const now = Date.now()\n doubleClicked =\n now - lastClickTime.current < 400 && dragOverlayItem?.itemKey === clickedItem.itemKey\n lastClickTime.current = now\n if (!doubleClicked) {\n updateSelections({\n indexes: isCurrentlySelected && selectedItemKeys.size === 1 ? [] : [currentItemIndex],\n })\n }\n setDragOverlayItem(getItem(clickedItem.itemKey))\n }\n\n if (doubleClicked) {\n navigateAfterSelection({\n collectionSlug: clickedItem.relationTo,\n docID: extractID(clickedItem.value),\n })\n }\n },\n [\n selectedItemKeys,\n subfolders,\n documents,\n allowMultiSelection,\n dragOverlayItem,\n getItem,\n updateSelections,\n navigateAfterSelection,\n handleShiftSelection,\n ],\n )\n\n /**\n * Makes requests to the server to update the folder field on passed in documents\n *\n * Might rewrite this in the future to return the promises so errors can be handled contextually\n */\n const moveToFolder: FolderContextValue['moveToFolder'] = React.useCallback(\n async (args) => {\n const { itemsToMove: items, toFolderID } = args\n if (!items.length) {\n return\n }\n\n const movingCurrentFolder =\n items.length === 1 &&\n items[0].relationTo === folderCollectionSlug &&\n items[0].value.id === folderID\n\n if (movingCurrentFolder) {\n const queryParams = qs.stringify(\n {\n depth: 0,\n locale: localeCode,\n },\n {\n addQueryPrefix: true,\n },\n )\n const req = await fetch(\n formatAdminURL({\n apiRoute: routes.api,\n path: `/${folderCollectionSlug}/${folderID}${queryParams}`,\n }),\n {\n body: JSON.stringify({ [folderFieldName]: toFolderID || null }),\n credentials: 'include',\n headers: {\n 'content-type': 'application/json',\n },\n method: 'PATCH',\n },\n )\n if (req.status !== 200) {\n toast.error(t('general:error'))\n }\n } else {\n for (const [collectionSlug, ids] of Object.entries(groupItemIDsByRelation(items))) {\n const queryParams = qs.stringify(\n {\n depth: 0,\n limit: 0,\n locale: localeCode,\n where: {\n id: {\n in: ids,\n },\n },\n },\n {\n addQueryPrefix: true,\n },\n )\n try {\n await fetch(\n formatAdminURL({\n apiRoute: routes.api,\n path: `/${collectionSlug}${queryParams}`,\n }),\n {\n body: JSON.stringify({ [folderFieldName]: toFolderID || null }),\n credentials: 'include',\n headers: {\n 'content-type': 'application/json',\n },\n method: 'PATCH',\n },\n )\n } catch (error) {\n toast.error(t('general:error'))\n // eslint-disable-next-line no-console\n console.error(error)\n continue\n }\n }\n }\n\n clearSelections()\n },\n [folderID, clearSelections, folderCollectionSlug, folderFieldName, routes.api, t, localeCode],\n )\n\n const checkIfItemIsDisabled: FolderContextValue['checkIfItemIsDisabled'] = React.useCallback(\n (item) => {\n function folderAcceptsItem({\n item,\n selectedFolderCollections,\n }: {\n item: FolderOrDocument\n selectedFolderCollections: string[]\n }): boolean {\n if (\n !item.value.folderType ||\n (Array.isArray(item.value.folderType) && item.value.folderType.length === 0)\n ) {\n // Enable folder that accept all collections\n return false\n }\n\n if (selectedFolderCollections.length === 0) {\n // If no collections are selected, enable folders that accept all collections\n return Boolean(item.value.folderType || item.value.folderType.length > 0)\n }\n\n // Disable folders that do not accept all of the selected collections\n return selectedFolderCollections.some((slug) => {\n return !item.value.folderType.includes(slug)\n })\n }\n\n if (isDragging) {\n const isSelected = selectedItemKeys.has(item.itemKey)\n if (isSelected) {\n return true\n } else if (item.relationTo === folderCollectionSlug) {\n return folderAcceptsItem({ item, selectedFolderCollections })\n } else {\n // Non folder items are disabled on drag\n return true\n }\n } else if (parentFolderContext?.selectedItemKeys?.size) {\n // Disable selected items from being navigated to in move to drawer\n if (parentFolderContext.selectedItemKeys.has(item.itemKey)) {\n return true\n }\n // Moving items to folder\n if (item.relationTo === folderCollectionSlug) {\n return folderAcceptsItem({\n item,\n selectedFolderCollections: parentFolderContext.selectedFolderCollections,\n })\n }\n // If the item is not a folder, it is disabled on move\n return true\n }\n },\n [\n selectedFolderCollections,\n isDragging,\n selectedItemKeys,\n folderCollectionSlug,\n parentFolderContext?.selectedFolderCollections,\n parentFolderContext?.selectedItemKeys,\n ],\n )\n\n // If a new component is provided, update the state so children can re-render with the new component\n React.useEffect(() => {\n if (InitialFolderResultsComponent) {\n setFolderResultsComponent(InitialFolderResultsComponent)\n }\n }, [InitialFolderResultsComponent])\n\n return (\n <Context\n value={{\n activeCollectionFolderSlugs: activeCollectionSlugs || allCollectionFolderSlugs,\n allCollectionFolderSlugs,\n allowCreateCollectionSlugs,\n breadcrumbs,\n checkIfItemIsDisabled,\n clearSelections,\n currentFolder:\n breadcrumbs?.[breadcrumbs.length - 1]?.id !== undefined\n ? formatFolderOrDocumentItem({\n folderFieldName,\n isUpload: false,\n relationTo: folderCollectionSlug,\n useAsTitle: folderCollectionConfig.admin.useAsTitle,\n value: breadcrumbs[breadcrumbs.length - 1],\n })\n : null,\n documents,\n dragOverlayItem,\n focusedRowIndex,\n folderCollectionConfig,\n folderCollectionSlug,\n folderFieldName,\n folderID,\n FolderResultsComponent,\n folderType: breadcrumbs?.[breadcrumbs.length - 1]?.folderType,\n getFolderRoute,\n getSelectedItems,\n isDragging,\n itemKeysToMove: parentFolderContext.selectedItemKeys,\n moveToFolder,\n onItemClick,\n onItemKeyPress,\n refineFolderData,\n search,\n selectedFolderCollections,\n selectedItemKeys,\n setBreadcrumbs,\n setFocusedRowIndex,\n setIsDragging,\n sort,\n subfolders,\n }}\n >\n {children}\n </Context>\n )\n}\n\nexport function useFolder(): FolderContextValue {\n const context = React.use(Context)\n\n if (context === undefined) {\n throw new Error('useFolder must be used within a FolderProvider')\n }\n\n return context\n}\n", "import type { FolderOrDocument } from 'payload/shared'\n\nexport function groupItemIDsByRelation(items: FolderOrDocument[]) {\n return items.reduce(\n (acc, item) => {\n if (!acc[item.relationTo]) {\n acc[item.relationTo] = []\n }\n acc[item.relationTo].push(item.value.id)\n\n return acc\n },\n {} as Record<string, (number | string)[]>,\n )\n}\n", "'use client'\n\nimport { usePathname, useRouter } from 'next/navigation.js'\nimport React, { createContext, use, useCallback, useEffect, useRef } from 'react'\n\nimport { useEffectEvent } from '../../hooks/useEffectEvent.js'\n\nexport type RouteCacheContext = {\n cachingEnabled: boolean\n clearRouteCache: () => void\n}\n\nconst Context = createContext<RouteCacheContext>({\n cachingEnabled: true,\n clearRouteCache: () => {},\n})\n\nexport const RouteCache: React.FC<{ cachingEnabled?: boolean; children: React.ReactNode }> = ({\n cachingEnabled = true,\n children,\n}) => {\n const pathname = usePathname()\n const router = useRouter()\n\n /**\n * Next.js caches pages in memory in their {@link https://nextjs.org/docs/app/guides/caching#client-side-router-cache Client-side Router Cache},\n * causing forward/back browser navigation to show stale data from a previous visit.\n * The problem is this bfcache-like behavior has no opt-out, even if the page is dynamic, requires authentication, etc.\n * The workaround is to force a refresh when navigating via the browser controls.\n * This should be removed if/when Next.js supports this natively.\n */\n const clearAfterPathnameChange = useRef(false)\n\n const clearRouteCache = useCallback(() => {\n router.refresh()\n }, [router])\n\n useEffect(() => {\n const handlePopState = () => {\n clearAfterPathnameChange.current = true\n }\n\n window.addEventListener('popstate', handlePopState)\n\n return () => {\n window.removeEventListener('popstate', handlePopState)\n }\n }, [router])\n\n const handlePathnameChange = useEffectEvent((pathname: string) => {\n if (cachingEnabled || clearAfterPathnameChange.current) {\n clearAfterPathnameChange.current = false\n clearRouteCache()\n }\n })\n\n useEffect(() => {\n handlePathnameChange(pathname)\n }, [pathname])\n\n return <Context value={{ cachingEnabled, clearRouteCache }}>{children}</Context>\n}\n\nexport const useRouteCache = () => use(Context)\n", "'use client'\n\nimport React from 'react'\n\nimport { FormSubmit } from '../../forms/Submit/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { Button } from '../Button/index.js'\nimport './index.scss'\n\nconst baseClass = 'drawer-action-header'\n\ntype DrawerActionHeaderArgs = {\n readonly cancelLabel?: string\n className?: string\n readonly onCancel?: () => void\n readonly onSave?: () => void\n readonly saveLabel?: string\n readonly title: React.ReactNode | string\n}\nexport const DrawerActionHeader = ({\n cancelLabel,\n className,\n onCancel,\n onSave,\n saveLabel,\n title,\n}: DrawerActionHeaderArgs) => {\n const { t } = useTranslation()\n\n return (\n <div className={[baseClass, className].filter(Boolean).join(' ')}>\n <div className={`${baseClass}__content`}>\n <h1 className={`${baseClass}__title`}>{title}</h1>\n\n <div className={`${baseClass}__actions`}>\n <Button aria-label={t('general:cancel')} buttonStyle=\"secondary\" onClick={onCancel}>\n {cancelLabel || t('general:cancel')}\n </Button>\n\n <FormSubmit aria-label={t('general:applyChanges')} onClick={onSave}>\n {saveLabel || t('general:applyChanges')}\n </FormSubmit>\n </div>\n </div>\n </div>\n )\n}\n", "'use client'\nimport React from 'react'\n\nimport type { Props } from '../../elements/Button/types.js'\n\nimport { Button } from '../../elements/Button/index.js'\nimport {\n useForm,\n useFormBackgroundProcessing,\n useFormInitializing,\n useFormProcessing,\n} from '../Form/context.js'\nimport './index.scss'\n\nconst baseClass = 'form-submit'\n\nexport const FormSubmit: React.FC<Props> = (props) => {\n const {\n type = 'submit',\n buttonId: id,\n children,\n disabled: disabledFromProps,\n onClick,\n programmaticSubmit,\n ref,\n } = props\n\n const processing = useFormProcessing()\n const backgroundProcessing = useFormBackgroundProcessing()\n const initializing = useFormInitializing()\n const { disabled, submit } = useForm()\n\n const canSave = !(\n disabledFromProps ||\n initializing ||\n processing ||\n backgroundProcessing ||\n disabled\n )\n\n const handleClick =\n onClick ??\n (programmaticSubmit\n ? () => {\n void submit()\n }\n : undefined)\n\n return (\n <div className={baseClass}>\n <Button\n ref={ref}\n {...props}\n disabled={canSave ? undefined : true}\n id={id}\n onClick={handleClick}\n type={type}\n >\n {children}\n </Button>\n </div>\n )\n}\n", "import React from 'react'\n\nimport './index.scss'\n\nconst baseClass = 'drawer-content-container'\n\ntype Props = {\n readonly children: React.ReactNode\n readonly className?: string\n}\nexport function DrawerContentContainer({ children, className }: Props) {\n return <div className={[baseClass, className].filter(Boolean).join(' ')}>{children}</div>\n}\n", "'use client'\n\nimport type { ClientCollectionConfig, CollectionSlug } from 'payload'\n\nimport { useModal } from '@faceless-ui/modal'\nimport { getTranslation } from '@payloadcms/translations'\nimport React from 'react'\n\nimport { useConfig } from '../../../providers/Config/index.js'\nimport { useFolder } from '../../../providers/Folders/index.js'\nimport { useTranslation } from '../../../providers/Translation/index.js'\nimport { Button } from '../../Button/index.js'\nimport { DocumentDrawer, useDocumentDrawer } from '../../DocumentDrawer/index.js'\nimport { Popup, PopupList } from '../../Popup/index.js'\n\nconst baseClass = 'create-new-doc-in-folder'\n\nexport function ListCreateNewDocInFolderButton({\n buttonLabel,\n buttonSize = 'small',\n buttonStyle = 'pill',\n collectionSlugs,\n folderAssignedCollections,\n onCreateSuccess,\n slugPrefix,\n}: {\n buttonLabel: string\n buttonSize?: 'large' | 'medium' | 'small' | 'xsmall'\n buttonStyle?:\n | 'error'\n | 'icon-label'\n | 'none'\n | 'pill'\n | 'primary'\n | 'secondary'\n | 'subtle'\n | 'tab'\n | 'transparent'\n collectionSlugs: CollectionSlug[]\n folderAssignedCollections: CollectionSlug[]\n onCreateSuccess: (args: {\n collectionSlug: CollectionSlug\n doc: Record<string, unknown>\n }) => Promise<void> | void\n slugPrefix: string\n}) {\n const newDocInFolderDrawerSlug = `${slugPrefix}-new-doc-in-folder-drawer`\n const { i18n } = useTranslation()\n const { closeModal, openModal } = useModal()\n const { config } = useConfig()\n const { folderCollectionConfig, folderCollectionSlug, folderFieldName, folderID } = useFolder()\n const [FolderDocumentDrawer, , { closeDrawer: closeFolderDrawer, openDrawer: openFolderDrawer }] =\n useDocumentDrawer({\n collectionSlug: folderCollectionSlug,\n })\n const [createCollectionSlug, setCreateCollectionSlug] = React.useState<string | undefined>()\n const [enabledCollections] = React.useState<ClientCollectionConfig[]>(() =>\n collectionSlugs.reduce((acc, collectionSlug) => {\n const collectionConfig = config.collections.find(({ slug }) => slug === collectionSlug)\n if (collectionConfig) {\n acc.push(collectionConfig)\n }\n return acc\n }, []),\n )\n\n if (enabledCollections.length === 0) {\n return null\n }\n\n return (\n <React.Fragment>\n {enabledCollections.length === 1 ? (\n // If there is only 1 option, do not render a popup\n <Button\n buttonStyle={buttonStyle}\n className={`${baseClass}__button`}\n el=\"div\"\n onClick={() => {\n if (enabledCollections[0].slug === folderCollectionConfig.slug) {\n openFolderDrawer()\n } else {\n setCreateCollectionSlug(enabledCollections[0].slug)\n openModal(newDocInFolderDrawerSlug)\n }\n }}\n size={buttonSize}\n >\n {buttonLabel}\n </Button>\n ) : (\n <Popup\n button={\n <Button\n buttonStyle={buttonStyle}\n className={`${baseClass}__popup-button`}\n el=\"div\"\n icon=\"chevron\"\n size={buttonSize}\n >\n {buttonLabel}\n </Button>\n }\n buttonType=\"default\"\n className={`${baseClass}__action-popup`}\n >\n <PopupList.ButtonGroup>\n {enabledCollections.map((collection, index) => {\n return (\n <PopupList.Button\n key={index}\n onClick={() => {\n if (collection.slug === folderCollectionConfig.slug) {\n openFolderDrawer()\n } else {\n setCreateCollectionSlug(collection.slug)\n openModal(newDocInFolderDrawerSlug)\n }\n }}\n >\n {getTranslation(collection.labels.singular, i18n)}\n </PopupList.Button>\n )\n })}\n </PopupList.ButtonGroup>\n </Popup>\n )}\n\n {createCollectionSlug && (\n <DocumentDrawer\n collectionSlug={createCollectionSlug}\n drawerSlug={newDocInFolderDrawerSlug}\n initialData={{\n [folderFieldName]: folderID,\n }}\n onSave={async ({ doc }) => {\n await onCreateSuccess({\n collectionSlug: createCollectionSlug,\n doc,\n })\n closeModal(newDocInFolderDrawerSlug)\n }}\n redirectAfterCreate={false}\n />\n )}\n\n {collectionSlugs.includes(folderCollectionConfig.slug) && (\n <FolderDocumentDrawer\n initialData={{\n [folderFieldName]: folderID,\n folderType: createCollectionSlug\n ? folderAssignedCollections || [createCollectionSlug]\n : folderAssignedCollections,\n }}\n onSave={async (result) => {\n await onCreateSuccess({\n collectionSlug: folderCollectionConfig.slug,\n doc: result.doc,\n })\n closeFolderDrawer()\n }}\n redirectAfterCreate={false}\n />\n )}\n </React.Fragment>\n )\n}\n", "import React from 'react'\n\nimport './index.scss'\n\nconst baseClass = 'no-results'\n\ntype NoResultsProps = {\n Actions?: React.ReactNode[]\n Message: React.ReactNode\n}\nexport function NoListResults({ Actions, Message }: NoResultsProps) {\n return (\n <div className={baseClass}>\n {Message}\n {Actions && Actions.length > 0 && (\n <div className={`${baseClass}__actions`}>\n {Actions.map((action, index) => (\n <React.Fragment key={index}>{action}</React.Fragment>\n ))}\n </div>\n )}\n </div>\n )\n}\n", "import type { ClientTranslationKeys, TFunction } from '@payloadcms/translations'\n\nimport * as React from 'react'\n\nconst RecursiveTranslation: React.FC<{\n elements?: Record<string, React.FC<{ children: React.ReactNode }>>\n translationString: string\n}> = ({ elements, translationString }) => {\n const regex = /(<[^>]+>.*?<\\/[^>]+>)/g\n const sections = translationString.split(regex)\n\n return (\n <span>\n {sections.map((section, index) => {\n if (elements && section.startsWith('<') && section.endsWith('>')) {\n const elementKey = section[1]\n const Element = elements[elementKey]\n\n if (Element) {\n const regex = new RegExp(`<${elementKey}>(.*?)<\\/${elementKey}>`, 'g')\n const children = section.replace(regex, (_, group) => group)\n\n return (\n <Element key={index}>\n <RecursiveTranslation translationString={children} />\n </Element>\n )\n }\n }\n\n return section\n })}\n </span>\n )\n}\n\nexport type TranslationProps = {\n elements?: Record<string, React.FC<{ children: React.ReactNode }>>\n i18nKey: ClientTranslationKeys\n t: TFunction\n variables?: Record<string, unknown>\n}\n\nexport const Translation: React.FC<TranslationProps> = ({ elements, i18nKey, t, variables }) => {\n const stringWithVariables = t(i18nKey, variables || {})\n\n if (!elements) {\n return stringWithVariables\n }\n\n return <RecursiveTranslation elements={elements} translationString={stringWithVariables} />\n}\n", "'use client'\n\nimport type { FolderBreadcrumb } from 'payload/shared'\n\nimport { useDroppable } from '@dnd-kit/core'\nimport React from 'react'\n\nimport { ChevronIcon } from '../../../icons/Chevron/index.js'\nimport './index.scss'\n\nconst baseClass = 'folderBreadcrumbs'\n\ntype Props = {\n readonly breadcrumbs: {\n id: null | number | string\n name: React.ReactNode | string\n onClick: () => void\n }[]\n className?: string\n}\nexport function FolderBreadcrumbs({ breadcrumbs, className }: Props) {\n return (\n <div className={`${baseClass} ${className || ''}`.trim()}>\n {breadcrumbs?.map((crumb, index) => (\n <div className={`${baseClass}__crumb`} key={index}>\n {crumb.onClick ? (\n <DroppableBreadcrumb\n className={`${baseClass}__crumb-item`}\n id={crumb.id}\n onClick={crumb.onClick}\n >\n {crumb.name}\n </DroppableBreadcrumb>\n ) : (\n crumb.name\n )}\n {breadcrumbs.length > 0 && index !== breadcrumbs.length - 1 && (\n <ChevronIcon className={`${baseClass}__crumb-chevron`} direction=\"right\" />\n )}\n </div>\n ))}\n </div>\n )\n}\n\nexport function DroppableBreadcrumb({\n id,\n children,\n className,\n onClick,\n}: {\n children: React.ReactNode\n className?: string\n onClick: () => void\n} & Pick<FolderBreadcrumb, 'id'>) {\n const { isOver, setNodeRef } = useDroppable({\n id: `folder-${id}`,\n data: {\n id,\n type: 'folder',\n },\n })\n\n return (\n <button\n className={['droppable-button', className, isOver && 'droppable-button--hover']\n .filter(Boolean)\n .join(' ')}\n onClick={onClick}\n ref={setNodeRef}\n type=\"button\"\n >\n {children}\n </button>\n )\n}\n", "import { FolderIcon } from '../../../icons/Folder/index.js'\nimport './index.scss'\nexport function ColoredFolderIcon() {\n return <FolderIcon className=\"colored-folder-icon\" />\n}\n", "'use client'\nimport type { FormState, SanitizedCollectionConfig, UploadEdits } from 'payload'\n\nimport { useModal } from '@faceless-ui/modal'\nimport { formatAdminURL, isImage } from 'payload/shared'\nimport React, { Fragment, useCallback, useEffect, useRef, useState } from 'react'\nimport { toast } from 'sonner'\n\nimport { FieldError } from '../../fields/FieldError/index.js'\nimport { fieldBaseClass } from '../../fields/shared/index.js'\nimport { useForm, useFormProcessing } from '../../forms/Form/index.js'\nimport { useField } from '../../forms/useField/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useDocumentInfo } from '../../providers/DocumentInfo/index.js'\nimport { EditDepthProvider } from '../../providers/EditDepth/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { UploadControlsProvider, useUploadControls } from '../../providers/UploadControls/index.js'\nimport { useUploadEdits } from '../../providers/UploadEdits/index.js'\nimport { Button } from '../Button/index.js'\nimport { Drawer } from '../Drawer/index.js'\nimport { Dropzone } from '../Dropzone/index.js'\nimport { EditUpload } from '../EditUpload/index.js'\nimport './index.scss'\nimport { FileDetails } from '../FileDetails/index.js'\nimport { PreviewSizes } from '../PreviewSizes/index.js'\nimport { Thumbnail } from '../Thumbnail/index.js'\n\nconst baseClass = 'file-field'\nexport const editDrawerSlug = 'edit-upload'\nexport const sizePreviewSlug = 'preview-sizes'\n\nconst validate = (value) => {\n if (!value && value !== undefined) {\n return 'A file is required.'\n }\n\n if (value && (!value.name || value.name === '')) {\n return 'A file name is required.'\n }\n\n return true\n}\n\ntype UploadActionsArgs = {\n readonly customActions?: React.ReactNode[]\n readonly enableAdjustments: boolean\n readonly enablePreviewSizes: boolean\n readonly mimeType: string\n}\n\nexport const UploadActions = ({\n customActions,\n enableAdjustments,\n enablePreviewSizes,\n mimeType,\n}: UploadActionsArgs) => {\n const { t } = useTranslation()\n const { openModal } = useModal()\n\n const fileTypeIsAdjustable =\n isImage(mimeType) && mimeType !== 'image/svg+xml' && mimeType !== 'image/jxl'\n\n if (!fileTypeIsAdjustable && (!customActions || customActions.length === 0)) {\n return null\n }\n\n return (\n <div className={`${baseClass}__upload-actions`}>\n {fileTypeIsAdjustable && (\n <React.Fragment>\n {enablePreviewSizes && (\n <Button\n buttonStyle=\"pill\"\n className={`${baseClass}__previewSizes`}\n margin={false}\n onClick={() => {\n openModal(sizePreviewSlug)\n }}\n size=\"small\"\n >\n {t('upload:previewSizes')}\n </Button>\n )}\n {enableAdjustments && (\n <Button\n buttonStyle=\"pill\"\n className={`${baseClass}__edit`}\n margin={false}\n onClick={() => {\n openModal(editDrawerSlug)\n }}\n size=\"small\"\n >\n {t('upload:editImage')}\n </Button>\n )}\n </React.Fragment>\n )}\n\n {customActions &&\n customActions.map((CustomAction, i) => {\n return <React.Fragment key={i}>{CustomAction}</React.Fragment>\n })}\n </div>\n )\n}\n\nexport type UploadProps = {\n readonly collectionSlug: string\n readonly customActions?: React.ReactNode[]\n readonly initialState?: FormState\n readonly onChange?: (file?: File) => void\n readonly uploadConfig: SanitizedCollectionConfig['upload']\n readonly UploadControls?: React.ReactNode\n}\n\nexport const Upload: React.FC<UploadProps> = (props) => {\n const { resetUploadEdits, updateUploadEdits, uploadEdits } = useUploadEdits()\n return (\n <UploadControlsProvider>\n <Upload_v4\n {...props}\n resetUploadEdits={resetUploadEdits}\n updateUploadEdits={updateUploadEdits}\n uploadEdits={uploadEdits}\n />\n </UploadControlsProvider>\n )\n}\n\nexport type UploadProps_v4 = {\n readonly resetUploadEdits?: () => void\n readonly updateUploadEdits?: (args: UploadEdits) => void\n readonly uploadEdits?: UploadEdits\n} & UploadProps\n\nexport const Upload_v4: React.FC<UploadProps_v4> = (props) => {\n const {\n collectionSlug,\n customActions,\n initialState,\n onChange,\n resetUploadEdits,\n updateUploadEdits,\n uploadConfig,\n UploadControls,\n uploadEdits,\n } = props\n\n const {\n setUploadControlFile,\n setUploadControlFileName,\n setUploadControlFileUrl,\n uploadControlFile,\n uploadControlFileName,\n uploadControlFileUrl,\n } = useUploadControls()\n\n const {\n config: {\n routes: { api },\n },\n } = useConfig()\n\n const { t } = useTranslation()\n const { setModified } = useForm()\n const { id, data, docPermissions, setUploadStatus } = useDocumentInfo()\n const isFormSubmitting = useFormProcessing()\n const { errorMessage, setValue, showError, value } = useField<File>({\n path: 'file',\n validate,\n })\n\n const [fileSrc, setFileSrc] = useState<null | string>(null)\n const [removedFile, setRemovedFile] = useState(false)\n const [filename, setFilename] = useState<string>(value?.name || '')\n const [showUrlInput, setShowUrlInput] = useState(false)\n const [fileUrl, setFileUrl] = useState<string>('')\n\n const urlInputRef = useRef<HTMLInputElement>(null)\n const inputRef = useRef<HTMLInputElement>(null)\n\n const useServerSideFetch =\n typeof uploadConfig?.pasteURL === 'object' && uploadConfig.pasteURL.allowList?.length > 0\n\n const handleFileChange = useCallback(\n ({ file, isNewFile = true }: { file: File | null; isNewFile?: boolean }) => {\n if (isNewFile && file instanceof File) {\n setFileSrc(URL.createObjectURL(file))\n }\n\n setValue(file)\n setShowUrlInput(false)\n setUploadControlFileUrl('')\n setUploadControlFileName(null)\n setUploadControlFile(null)\n\n if (typeof onChange === 'function') {\n onChange(file)\n }\n },\n [onChange, setValue, setUploadControlFile, setUploadControlFileName, setUploadControlFileUrl],\n )\n\n const renameFile = (fileToChange: File, newName: string): File => {\n // Creating a new File object with updated properties\n const newFile = new File([fileToChange], newName, {\n type: fileToChange.type,\n lastModified: fileToChange.lastModified,\n })\n return newFile\n }\n\n const handleFileNameChange = React.useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n const updatedFileName = e.target.value\n\n if (value) {\n handleFileChange({ file: renameFile(value, updatedFileName), isNewFile: false })\n setFilename(updatedFileName)\n }\n },\n [handleFileChange, value],\n )\n\n const handleFileSelection = useCallback(\n (files: FileList) => {\n const fileToUpload = files?.[0]\n handleFileChange({ file: fileToUpload })\n },\n [handleFileChange],\n )\n\n const handleFileRemoval = useCallback(() => {\n setRemovedFile(true)\n handleFileChange({ file: null })\n setFileSrc('')\n setFileUrl('')\n resetUploadEdits()\n setShowUrlInput(false)\n setUploadControlFileUrl('')\n setUploadControlFileName(null)\n setUploadControlFile(null)\n }, [\n handleFileChange,\n resetUploadEdits,\n setUploadControlFile,\n setUploadControlFileName,\n setUploadControlFileUrl,\n ])\n\n const onEditsSave = useCallback(\n (args: UploadEdits) => {\n setModified(true)\n updateUploadEdits(args)\n },\n [setModified, updateUploadEdits],\n )\n\n const handleUrlSubmit = useCallback(async () => {\n if (!fileUrl || uploadConfig?.pasteURL === false) {\n return\n }\n\n setUploadStatus('uploading')\n try {\n // Attempt client-side fetch\n const clientResponse = await fetch(fileUrl)\n\n if (!clientResponse.ok) {\n throw new Error(`Fetch failed with status: ${clientResponse.status}`)\n }\n\n const blob = await clientResponse.blob()\n const fileName = uploadControlFileName || decodeURIComponent(fileUrl.split('/').pop() || '')\n const file = new File([blob], fileName, { type: blob.type })\n\n handleFileChange({ file })\n setUploadStatus('idle')\n return // Exit if client-side fetch succeeds\n } catch (_clientError) {\n if (!useServerSideFetch) {\n // If server-side fetch is not enabled, show client-side error\n toast.error('Failed to fetch the file.')\n setUploadStatus('failed')\n return\n }\n }\n\n // Attempt server-side fetch if client-side fetch fails and useServerSideFetch is true\n try {\n const pasteURL: `/${string}` = `/${collectionSlug}/paste-url${id ? `/${id}?` : '?'}src=${encodeURIComponent(fileUrl)}`\n const serverResponse = await fetch(\n formatAdminURL({\n apiRoute: api,\n path: pasteURL,\n }),\n )\n\n if (!serverResponse.ok) {\n throw new Error(`Fetch failed with status: ${serverResponse.status}`)\n }\n\n const blob = await serverResponse.blob()\n const fileName = decodeURIComponent(fileUrl.split('/').pop() || '')\n const file = new File([blob], fileName, { type: blob.type })\n\n handleFileChange({ file })\n setUploadStatus('idle')\n } catch (_serverError) {\n toast.error('The provided URL is not allowed.')\n setUploadStatus('failed')\n }\n }, [\n api,\n collectionSlug,\n fileUrl,\n handleFileChange,\n id,\n setUploadStatus,\n uploadConfig,\n uploadControlFileName,\n useServerSideFetch,\n ])\n\n useEffect(() => {\n if (initialState?.file?.value instanceof File) {\n setFileSrc(URL.createObjectURL(initialState.file.value))\n setRemovedFile(false)\n }\n }, [initialState])\n\n useEffect(() => {\n if (showUrlInput && urlInputRef.current) {\n // urlInputRef.current.focus() // Focus on the remote-url input field when showUrlInput is true\n }\n }, [showUrlInput])\n\n useEffect(() => {\n if (isFormSubmitting) {\n setRemovedFile(false)\n }\n }, [isFormSubmitting])\n\n const canRemoveUpload = docPermissions?.update\n\n const hasImageSizes = uploadConfig?.imageSizes?.length > 0\n const hasResizeOptions = Boolean(uploadConfig?.resizeOptions)\n // Explicity check if set to true, default is undefined\n const focalPointEnabled = uploadConfig?.focalPoint === true\n\n const { crop: showCrop = true, focalPoint = true } = uploadConfig\n\n const showFocalPoint = focalPoint && (hasImageSizes || hasResizeOptions || focalPointEnabled)\n\n const acceptMimeTypes = uploadConfig.mimeTypes?.join(', ')\n\n const imageCacheTag = uploadConfig?.cacheTags && data?.updatedAt\n\n useEffect(() => {\n const handleControlFileUrl = async () => {\n if (uploadControlFileUrl) {\n setFileUrl(uploadControlFileUrl)\n await handleUrlSubmit()\n }\n }\n\n void handleControlFileUrl()\n }, [uploadControlFileUrl, handleUrlSubmit])\n\n useEffect(() => {\n const handleControlFile = () => {\n if (uploadControlFile) {\n handleFileChange({ file: uploadControlFile })\n }\n }\n\n void handleControlFile()\n }, [uploadControlFile, handleFileChange])\n\n return (\n <div className={[fieldBaseClass, baseClass].filter(Boolean).join(' ')}>\n <FieldError message={errorMessage} showError={showError} />\n {data && data.filename && !removedFile && (\n <FileDetails\n collectionSlug={collectionSlug}\n customUploadActions={customActions}\n doc={data}\n enableAdjustments={showCrop || showFocalPoint}\n handleRemove={canRemoveUpload ? handleFileRemoval : undefined}\n hasImageSizes={hasImageSizes}\n hideRemoveFile={uploadConfig.hideRemoveFile}\n imageCacheTag={imageCacheTag}\n uploadConfig={uploadConfig}\n />\n )}\n {((!uploadConfig.hideFileInputOnCreate && !data?.filename) || removedFile) && (\n <div className={`${baseClass}__upload`}>\n {!value && !showUrlInput && (\n <Dropzone onChange={handleFileSelection}>\n <div className={`${baseClass}__dropzoneContent`}>\n <div className={`${baseClass}__dropzoneButtons`}>\n <Button\n buttonStyle=\"pill\"\n onClick={() => {\n if (inputRef.current) {\n inputRef.current.click()\n }\n }}\n size=\"small\"\n >\n {t('upload:selectFile')}\n </Button>\n <input\n accept={acceptMimeTypes}\n aria-hidden=\"true\"\n className={`${baseClass}__hidden-input`}\n hidden\n onChange={(e) => {\n if (e.target.files && e.target.files.length > 0) {\n handleFileSelection(e.target.files)\n }\n }}\n ref={inputRef}\n type=\"file\"\n />\n {uploadConfig?.pasteURL !== false && (\n <Fragment>\n <span className={`${baseClass}__orText`}>{t('general:or')}</span>\n <Button\n buttonStyle=\"pill\"\n onClick={() => {\n setShowUrlInput(true)\n setUploadControlFileUrl('')\n setUploadControlFile(null)\n setUploadControlFileName(null)\n }}\n size=\"small\"\n >\n {t('upload:pasteURL')}\n </Button>\n </Fragment>\n )}\n\n {UploadControls ? UploadControls : null}\n </div>\n <p className={`${baseClass}__dragAndDropText`}>\n {t('general:or')} {t('upload:dragAndDrop')}\n </p>\n </div>\n </Dropzone>\n )}\n {showUrlInput && (\n <React.Fragment>\n <div className={`${baseClass}__remote-file-wrap`}>\n {/* eslint-disable-next-line jsx-a11y/control-has-associated-label */}\n <input\n className={`${baseClass}__remote-file`}\n onChange={(e) => {\n setFileUrl(e.target.value)\n }}\n ref={urlInputRef}\n title={fileUrl}\n type=\"text\"\n value={fileUrl}\n />\n <div className={`${baseClass}__add-file-wrap`}>\n <button\n className={`${baseClass}__add-file`}\n onClick={() => {\n void handleUrlSubmit()\n }}\n type=\"button\"\n >\n {t('upload:addFile')}\n </button>\n </div>\n </div>\n <Button\n buttonStyle=\"icon-label\"\n className={`${baseClass}__remove`}\n icon=\"x\"\n iconStyle=\"with-border\"\n onClick={() => {\n setShowUrlInput(false)\n setUploadControlFileUrl('')\n setUploadControlFile(null)\n setUploadControlFileName(null)\n }}\n round\n tooltip={t('general:cancel')}\n />\n </React.Fragment>\n )}\n {value && fileSrc && (\n <React.Fragment>\n <div className={`${baseClass}__thumbnail-wrap`}>\n <Thumbnail\n collectionSlug={collectionSlug}\n fileSrc={isImage(value.type) ? fileSrc : null}\n />\n </div>\n <div className={`${baseClass}__file-adjustments`}>\n {/* eslint-disable-next-line jsx-a11y/control-has-associated-label */}\n <input\n className={`${baseClass}__filename`}\n onChange={handleFileNameChange}\n title={filename || value.name}\n type=\"text\"\n value={filename || value.name}\n />\n <UploadActions\n customActions={customActions}\n enableAdjustments={showCrop || showFocalPoint}\n enablePreviewSizes={hasImageSizes && data?.filename && !removedFile}\n mimeType={value.type}\n />\n </div>\n <Button\n buttonStyle=\"icon-label\"\n className={`${baseClass}__remove`}\n icon=\"x\"\n iconStyle=\"with-border\"\n onClick={handleFileRemoval}\n round\n tooltip={t('general:cancel')}\n />\n </React.Fragment>\n )}\n </div>\n )}\n {(value || data?.filename) && (\n <EditDepthProvider>\n <Drawer Header={null} slug={editDrawerSlug}>\n <EditUpload\n fileName={value?.name || data?.filename}\n fileSrc={data?.url || fileSrc}\n imageCacheTag={imageCacheTag}\n initialCrop={uploadEdits?.crop ?? undefined}\n initialFocalPoint={{\n x: uploadEdits?.focalPoint?.x || data?.focalX || 50,\n y: uploadEdits?.focalPoint?.y || data?.focalY || 50,\n }}\n onSave={onEditsSave}\n showCrop={showCrop}\n showFocalPoint={showFocalPoint}\n />\n </Drawer>\n </EditDepthProvider>\n )}\n {data && hasImageSizes && (\n <Drawer\n className={`${baseClass}__previewDrawer`}\n hoverTitle\n slug={sizePreviewSlug}\n title={t('upload:sizesFor', { label: data.filename })}\n >\n <PreviewSizes doc={data} imageCacheTag={imageCacheTag} uploadConfig={uploadConfig} />\n </Drawer>\n )}\n </div>\n )\n}\n", "'use client'\n\nimport type { UploadEdits } from 'payload'\n\nimport { useModal } from '@faceless-ui/modal'\nimport React, { useRef, useState } from 'react'\nimport ReactCrop from 'react-image-crop'\nimport 'react-image-crop/dist/ReactCrop.css'\n\nimport { editDrawerSlug } from '../../elements/Upload/index.js'\nimport { PlusIcon } from '../../icons/Plus/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { Button } from '../Button/index.js'\nimport './index.scss'\n\nconst baseClass = 'edit-upload'\n\ntype Props = {\n name: string\n onChange: (value: string) => void\n ref?: React.RefObject<HTMLInputElement>\n value: string\n}\n\nconst Input: React.FC<Props> = (props) => {\n const { name, onChange, ref, value } = props\n\n return (\n <div className={`${baseClass}__input`}>\n {name}\n <input\n name={name}\n onChange={(e) => onChange(e.target.value)}\n ref={ref}\n type=\"number\"\n value={value}\n />\n </div>\n )\n}\n\ntype FocalPosition = {\n x: number\n y: number\n}\n\nexport type EditUploadProps = {\n fileName: string\n fileSrc: string\n imageCacheTag?: string\n initialCrop?: UploadEdits['crop']\n initialFocalPoint?: FocalPosition\n onSave?: (uploadEdits: UploadEdits) => void\n showCrop?: boolean\n showFocalPoint?: boolean\n}\n\nconst defaultCrop: UploadEdits['crop'] = {\n height: 100,\n unit: '%',\n width: 100,\n x: 0,\n y: 0,\n}\n\nexport const EditUpload: React.FC<EditUploadProps> = ({\n fileName,\n fileSrc,\n imageCacheTag,\n initialCrop,\n initialFocalPoint,\n onSave,\n showCrop,\n showFocalPoint,\n}) => {\n const { closeModal } = useModal()\n const { t } = useTranslation()\n\n const [crop, setCrop] = useState<UploadEdits['crop']>(() => ({\n ...defaultCrop,\n ...(initialCrop || {}),\n }))\n\n const defaultFocalPosition: FocalPosition = {\n x: 50,\n y: 50,\n }\n\n const [focalPosition, setFocalPosition] = useState<FocalPosition>(() => ({\n ...defaultFocalPosition,\n ...initialFocalPoint,\n }))\n\n const [checkBounds, setCheckBounds] = useState<boolean>(false)\n const [uncroppedPixelHeight, setUncroppedPixelHeight] = useState<number>(0)\n const [uncroppedPixelWidth, setUncroppedPixelWidth] = useState<number>(0)\n\n const focalWrapRef = useRef<HTMLDivElement | undefined>(undefined)\n const imageRef = useRef<HTMLImageElement | undefined>(undefined)\n const cropRef = useRef<HTMLDivElement | undefined>(undefined)\n\n const heightInputRef = useRef<HTMLInputElement | null>(null)\n const widthInputRef = useRef<HTMLInputElement | null>(null)\n\n const [imageLoaded, setImageLoaded] = useState<boolean>(false)\n\n const onImageLoad = (e) => {\n // set the default image height/width on load\n setUncroppedPixelHeight(e.currentTarget.naturalHeight)\n setUncroppedPixelWidth(e.currentTarget.naturalWidth)\n setImageLoaded(true)\n }\n\n const fineTuneCrop = ({ dimension, value }: { dimension: 'height' | 'width'; value: string }) => {\n const intValue = parseInt(value)\n\n const percentage =\n 100 * (intValue / (dimension === 'width' ? uncroppedPixelWidth : uncroppedPixelHeight))\n\n if (percentage <= 0 || percentage > 100) {\n return null\n }\n\n setCrop({\n ...crop,\n [dimension]: percentage,\n })\n }\n\n const fineTuneFocalPosition = ({\n coordinate,\n value,\n }: {\n coordinate: 'x' | 'y'\n value: string\n }) => {\n const intValue = parseInt(value)\n if (intValue >= 0 && intValue <= 100) {\n setFocalPosition((prevPosition) => ({ ...prevPosition, [coordinate]: intValue }))\n }\n }\n\n const saveEdits = () => {\n if (typeof onSave === 'function') {\n onSave({\n crop: crop ? crop : undefined,\n focalPoint: focalPosition,\n heightInPixels: Number(heightInputRef?.current?.value ?? uncroppedPixelHeight),\n widthInPixels: Number(widthInputRef?.current?.value ?? uncroppedPixelWidth),\n })\n }\n closeModal(editDrawerSlug)\n }\n\n const onDragEnd = React.useCallback(({ x, y }) => {\n setFocalPosition({ x, y })\n setCheckBounds(false)\n }, [])\n\n const centerFocalPoint = () => {\n const containerRect = focalWrapRef.current.getBoundingClientRect()\n const boundsRect = showCrop\n ? cropRef.current.getBoundingClientRect()\n : imageRef.current.getBoundingClientRect()\n const xCenter =\n ((boundsRect.left - containerRect.left + boundsRect.width / 2) / containerRect.width) * 100\n const yCenter =\n ((boundsRect.top - containerRect.top + boundsRect.height / 2) / containerRect.height) * 100\n setFocalPosition({ x: xCenter, y: yCenter })\n }\n\n const fileSrcToUse = imageCacheTag ? `${fileSrc}?${encodeURIComponent(imageCacheTag)}` : fileSrc\n\n return (\n <div className={baseClass}>\n <div className={`${baseClass}__header`}>\n <h2 title={`${t('general:editing')} ${fileName}`}>\n {t('general:editing')} {fileName}\n </h2>\n <div className={`${baseClass}__actions`}>\n <Button\n aria-label={t('general:cancel')}\n buttonStyle=\"secondary\"\n className={`${baseClass}__cancel`}\n onClick={() => closeModal(editDrawerSlug)}\n >\n {t('general:cancel')}\n </Button>\n <Button\n aria-label={t('general:applyChanges')}\n buttonStyle=\"primary\"\n className={`${baseClass}__save`}\n disabled={!imageLoaded}\n onClick={saveEdits}\n >\n {t('general:applyChanges')}\n </Button>\n </div>\n </div>\n <div className={`${baseClass}__toolWrap`}>\n <div className={`${baseClass}__crop`}>\n <div\n className={`${baseClass}__focal-wrapper`}\n ref={focalWrapRef}\n style={{\n aspectRatio: `${uncroppedPixelWidth / uncroppedPixelHeight}`,\n }}\n >\n {showCrop ? (\n <ReactCrop\n className={`${baseClass}__reactCrop`}\n crop={crop}\n onChange={(_, c) => setCrop(c)}\n onComplete={() => setCheckBounds(true)}\n renderSelectionAddon={() => {\n return <div className={`${baseClass}__crop-window`} ref={cropRef} />\n }}\n >\n <img\n alt={t('upload:setCropArea')}\n onLoad={onImageLoad}\n ref={imageRef}\n src={fileSrcToUse}\n />\n </ReactCrop>\n ) : (\n <img\n alt={t('upload:setFocalPoint')}\n onLoad={onImageLoad}\n ref={imageRef}\n src={fileSrcToUse}\n />\n )}\n {showFocalPoint && (\n <DraggableElement\n boundsRef={showCrop ? cropRef : imageRef}\n checkBounds={showCrop ? checkBounds : false}\n className={`${baseClass}__focalPoint`}\n containerRef={focalWrapRef}\n initialPosition={focalPosition}\n onDragEnd={onDragEnd}\n setCheckBounds={showCrop ? setCheckBounds : false}\n >\n <PlusIcon />\n </DraggableElement>\n )}\n </div>\n </div>\n {(showCrop || showFocalPoint) && (\n <div className={`${baseClass}__sidebar`}>\n {showCrop && (\n <div className={`${baseClass}__groupWrap`}>\n <div>\n <div className={`${baseClass}__titleWrap`}>\n <h3>{t('upload:crop')}</h3>\n <Button\n buttonStyle=\"none\"\n className={`${baseClass}__reset`}\n onClick={() =>\n setCrop({\n height: 100,\n unit: '%',\n width: 100,\n x: 0,\n y: 0,\n })\n }\n >\n {t('general:reset')}\n </Button>\n </div>\n </div>\n <span className={`${baseClass}__description`}>\n {t('upload:cropToolDescription')}\n </span>\n <div className={`${baseClass}__inputsWrap`}>\n <Input\n name={`${t('upload:width')} (px)`}\n onChange={(value) => fineTuneCrop({ dimension: 'width', value })}\n ref={widthInputRef}\n value={((crop.width / 100) * uncroppedPixelWidth).toFixed(0)}\n />\n <Input\n name={`${t('upload:height')} (px)`}\n onChange={(value) => fineTuneCrop({ dimension: 'height', value })}\n ref={heightInputRef}\n value={((crop.height / 100) * uncroppedPixelHeight).toFixed(0)}\n />\n </div>\n </div>\n )}\n\n {showFocalPoint && (\n <div className={`${baseClass}__groupWrap`}>\n <div>\n <div className={`${baseClass}__titleWrap`}>\n <h3>{t('upload:focalPoint')}</h3>\n <Button\n buttonStyle=\"none\"\n className={`${baseClass}__reset`}\n onClick={centerFocalPoint}\n >\n {t('general:reset')}\n </Button>\n </div>\n </div>\n <span className={`${baseClass}__description`}>\n {t('upload:focalPointDescription')}\n </span>\n <div className={`${baseClass}__inputsWrap`}>\n <Input\n name=\"X %\"\n onChange={(value) => fineTuneFocalPosition({ coordinate: 'x', value })}\n value={focalPosition.x.toFixed(0)}\n />\n <Input\n name=\"Y %\"\n onChange={(value) => fineTuneFocalPosition({ coordinate: 'y', value })}\n value={focalPosition.y.toFixed(0)}\n />\n </div>\n </div>\n )}\n </div>\n )}\n </div>\n </div>\n )\n}\n\nconst DraggableElement = ({\n boundsRef,\n checkBounds,\n children,\n className,\n containerRef,\n initialPosition = { x: 50, y: 50 },\n onDragEnd,\n setCheckBounds,\n}) => {\n const [position, setPosition] = useState({ x: initialPosition.x, y: initialPosition.y })\n const [isDragging, setIsDragging] = useState(false)\n const dragRef = useRef<HTMLButtonElement | undefined>(undefined)\n\n const getCoordinates = React.useCallback(\n (mouseXArg?: number, mouseYArg?: number, recenter?: boolean) => {\n const containerRect = containerRef.current.getBoundingClientRect()\n const boundsRect = boundsRef.current.getBoundingClientRect()\n const mouseX = mouseXArg ?? boundsRect.left\n const mouseY = mouseYArg ?? boundsRect.top\n\n const xOutOfBounds = mouseX < boundsRect.left || mouseX > boundsRect.right\n const yOutOfBounds = mouseY < boundsRect.top || mouseY > boundsRect.bottom\n\n let x = ((mouseX - containerRect.left) / containerRect.width) * 100\n let y = ((mouseY - containerRect.top) / containerRect.height) * 100\n const xCenter =\n ((boundsRect.left - containerRect.left + boundsRect.width / 2) / containerRect.width) * 100\n const yCenter =\n ((boundsRect.top - containerRect.top + boundsRect.height / 2) / containerRect.height) * 100\n if (xOutOfBounds || yOutOfBounds) {\n setIsDragging(false)\n if (mouseX < boundsRect.left) {\n x = ((boundsRect.left - containerRect.left) / containerRect.width) * 100\n } else if (mouseX > boundsRect.right) {\n x =\n ((containerRect.width - (containerRect.right - boundsRect.right)) /\n containerRect.width) *\n 100\n }\n\n if (mouseY < boundsRect.top) {\n y = ((boundsRect.top - containerRect.top) / containerRect.height) * 100\n } else if (mouseY > boundsRect.bottom) {\n y =\n ((containerRect.height - (containerRect.bottom - boundsRect.bottom)) /\n containerRect.height) *\n 100\n }\n\n if (recenter) {\n x = xOutOfBounds ? xCenter : x\n y = yOutOfBounds ? yCenter : y\n }\n }\n\n return { x, y }\n },\n [boundsRef, containerRef],\n )\n\n const handleMouseDown = (event) => {\n event.preventDefault()\n setIsDragging(true)\n }\n\n const handleMouseMove = (event) => {\n if (!isDragging) {\n return null\n }\n const { x, y } = getCoordinates(event.clientX, event.clientY)\n\n setPosition({ x, y })\n }\n\n const onDrop = () => {\n setIsDragging(false)\n onDragEnd(position)\n }\n\n React.useEffect(() => {\n if (isDragging || !dragRef.current) {\n return\n }\n if (checkBounds) {\n const { height, left, top, width } = dragRef.current.getBoundingClientRect()\n const { x, y } = getCoordinates(left + width / 2, top + height / 2, true)\n onDragEnd({ x, y })\n setPosition({ x, y })\n setCheckBounds(false)\n return\n }\n }, [getCoordinates, isDragging, checkBounds, setCheckBounds, position.x, position.y, onDragEnd])\n\n React.useEffect(() => {\n setPosition({ x: initialPosition.x, y: initialPosition.y })\n }, [initialPosition.x, initialPosition.y])\n\n return (\n <div\n className={[\n `${baseClass}__draggable-container`,\n isDragging && `${baseClass}__draggable-container--dragging`,\n ]\n .filter(Boolean)\n .join(' ')}\n onMouseMove={handleMouseMove}\n >\n <button\n className={[`${baseClass}__draggable`, className].filter(Boolean).join(' ')}\n onMouseDown={handleMouseDown}\n onMouseUp={onDrop}\n ref={dragRef}\n style={{ left: `${position.x}%`, top: `${position.y}%` }}\n type=\"button\"\n >\n {children}\n </button>\n <div />\n </div>\n )\n}\n", "import g, { PureComponent as E, createRef as _ } from \"react\";\nconst M = {\n x: 0,\n y: 0,\n width: 0,\n height: 0,\n unit: \"px\"\n}, f = (s, t, e) => Math.min(Math.max(s, t), e), S = (...s) => s.filter((t) => t && typeof t == \"string\").join(\" \"), P = (s, t) => s === t || s.width === t.width && s.height === t.height && s.x === t.x && s.y === t.y && s.unit === t.unit;\nfunction H(s, t, e, o) {\n const i = y(s, e, o);\n return s.width && (i.height = i.width / t), s.height && (i.width = i.height * t), i.y + i.height > o && (i.height = o - i.y, i.width = i.height * t), i.x + i.width > e && (i.width = e - i.x, i.height = i.width / t), s.unit === \"%\" ? D(i, e, o) : i;\n}\nfunction N(s, t, e) {\n const o = y(s, t, e);\n return o.x = (t - o.width) / 2, o.y = (e - o.height) / 2, s.unit === \"%\" ? D(o, t, e) : o;\n}\nfunction D(s, t, e) {\n return s.unit === \"%\" ? { ...M, ...s, unit: \"%\" } : {\n unit: \"%\",\n x: s.x ? s.x / t * 100 : 0,\n y: s.y ? s.y / e * 100 : 0,\n width: s.width ? s.width / t * 100 : 0,\n height: s.height ? s.height / e * 100 : 0\n };\n}\nfunction y(s, t, e) {\n return s.unit ? s.unit === \"px\" ? { ...M, ...s, unit: \"px\" } : {\n unit: \"px\",\n x: s.x ? s.x * t / 100 : 0,\n y: s.y ? s.y * e / 100 : 0,\n width: s.width ? s.width * t / 100 : 0,\n height: s.height ? s.height * e / 100 : 0\n } : { ...M, ...s, unit: \"px\" };\n}\nfunction X(s, t, e, o, i, n = 0, a = 0, w = o, h = i) {\n const r = { ...s };\n let c = Math.min(n, o), d = Math.min(a, i), p = Math.min(w, o), l = Math.min(h, i);\n t && (t > 1 ? (c = a ? a * t : c, d = c / t, p = w * t) : (d = n ? n / t : d, c = d * t, l = h / t)), r.y < 0 && (r.height = Math.max(r.height + r.y, d), r.y = 0), r.x < 0 && (r.width = Math.max(r.width + r.x, c), r.x = 0);\n const u = o - (r.x + r.width);\n u < 0 && (r.x = Math.min(r.x, o - c), r.width += u);\n const C = i - (r.y + r.height);\n if (C < 0 && (r.y = Math.min(r.y, i - d), r.height += C), r.width < c && ((e === \"sw\" || e == \"nw\") && (r.x -= c - r.width), r.width = c), r.height < d && ((e === \"nw\" || e == \"ne\") && (r.y -= d - r.height), r.height = d), r.width > p && ((e === \"sw\" || e == \"nw\") && (r.x -= p - r.width), r.width = p), r.height > l && ((e === \"nw\" || e == \"ne\") && (r.y -= l - r.height), r.height = l), t) {\n const R = r.width / r.height;\n if (R < t) {\n const x = Math.max(r.width / t, d);\n (e === \"nw\" || e == \"ne\") && (r.y -= x - r.height), r.height = x;\n } else if (R > t) {\n const x = Math.max(r.height * t, c);\n (e === \"sw\" || e == \"nw\") && (r.x -= x - r.width), r.width = x;\n }\n }\n return r;\n}\nfunction K(s, t, e, o) {\n const i = { ...s };\n return t === \"ArrowLeft\" ? o === \"nw\" ? (i.x -= e, i.y -= e, i.width += e, i.height += e) : o === \"w\" ? (i.x -= e, i.width += e) : o === \"sw\" ? (i.x -= e, i.width += e, i.height += e) : o === \"ne\" ? (i.y += e, i.width -= e, i.height -= e) : o === \"e\" ? i.width -= e : o === \"se\" && (i.width -= e, i.height -= e) : t === \"ArrowRight\" && (o === \"nw\" ? (i.x += e, i.y += e, i.width -= e, i.height -= e) : o === \"w\" ? (i.x += e, i.width -= e) : o === \"sw\" ? (i.x += e, i.width -= e, i.height -= e) : o === \"ne\" ? (i.y -= e, i.width += e, i.height += e) : o === \"e\" ? i.width += e : o === \"se\" && (i.width += e, i.height += e)), t === \"ArrowUp\" ? o === \"nw\" ? (i.x -= e, i.y -= e, i.width += e, i.height += e) : o === \"n\" ? (i.y -= e, i.height += e) : o === \"ne\" ? (i.y -= e, i.width += e, i.height += e) : o === \"sw\" ? (i.x += e, i.width -= e, i.height -= e) : o === \"s\" ? i.height -= e : o === \"se\" && (i.width -= e, i.height -= e) : t === \"ArrowDown\" && (o === \"nw\" ? (i.x += e, i.y += e, i.width -= e, i.height -= e) : o === \"n\" ? (i.y += e, i.height -= e) : o === \"ne\" ? (i.y += e, i.width -= e, i.height -= e) : o === \"sw\" ? (i.x -= e, i.width += e, i.height += e) : o === \"s\" ? i.height += e : o === \"se\" && (i.width += e, i.height += e)), i;\n}\nconst b = { capture: !0, passive: !1 }, v = class m extends E {\n constructor() {\n super(...arguments), this.docMoveBound = !1, this.mouseDownOnCrop = !1, this.dragStarted = !1, this.evData = {\n startClientX: 0,\n startClientY: 0,\n startCropX: 0,\n startCropY: 0,\n clientX: 0,\n clientY: 0,\n isResize: !0\n }, this.componentRef = _(), this.mediaRef = _(), this.initChangeCalled = !1, this.state = {\n cropIsActive: !1,\n newCropIsBeingDrawn: !1\n }, this.onCropPointerDown = (t) => {\n const { crop: e, disabled: o } = this.props, i = this.getBox();\n if (!e)\n return;\n const n = y(e, i.width, i.height);\n if (o)\n return;\n t.cancelable && t.preventDefault(), this.bindDocMove(), this.componentRef.current.focus({ preventScroll: !0 });\n const a = t.target.dataset.ord, w = !!a;\n let h = t.clientX, r = t.clientY, c = n.x, d = n.y;\n if (a) {\n const p = t.clientX - i.x, l = t.clientY - i.y;\n let u = 0, C = 0;\n a === \"ne\" || a == \"e\" ? (u = p - (n.x + n.width), C = l - n.y, c = n.x, d = n.y + n.height) : a === \"se\" || a === \"s\" ? (u = p - (n.x + n.width), C = l - (n.y + n.height), c = n.x, d = n.y) : a === \"sw\" || a == \"w\" ? (u = p - n.x, C = l - (n.y + n.height), c = n.x + n.width, d = n.y) : (a === \"nw\" || a == \"n\") && (u = p - n.x, C = l - n.y, c = n.x + n.width, d = n.y + n.height), h = c + i.x + u, r = d + i.y + C;\n }\n this.evData = {\n startClientX: h,\n startClientY: r,\n startCropX: c,\n startCropY: d,\n clientX: t.clientX,\n clientY: t.clientY,\n isResize: w,\n ord: a\n }, this.mouseDownOnCrop = !0, this.setState({ cropIsActive: !0 });\n }, this.onComponentPointerDown = (t) => {\n const { crop: e, disabled: o, locked: i, keepSelection: n, onChange: a } = this.props, w = this.getBox();\n if (o || i || n && e)\n return;\n t.cancelable && t.preventDefault(), this.bindDocMove(), this.componentRef.current.focus({ preventScroll: !0 });\n const h = t.clientX - w.x, r = t.clientY - w.y, c = {\n unit: \"px\",\n x: h,\n y: r,\n width: 0,\n height: 0\n };\n this.evData = {\n startClientX: t.clientX,\n startClientY: t.clientY,\n startCropX: h,\n startCropY: r,\n clientX: t.clientX,\n clientY: t.clientY,\n isResize: !0\n }, this.mouseDownOnCrop = !0, a(y(c, w.width, w.height), D(c, w.width, w.height)), this.setState({ cropIsActive: !0, newCropIsBeingDrawn: !0 });\n }, this.onDocPointerMove = (t) => {\n const { crop: e, disabled: o, onChange: i, onDragStart: n } = this.props, a = this.getBox();\n if (o || !e || !this.mouseDownOnCrop)\n return;\n t.cancelable && t.preventDefault(), this.dragStarted || (this.dragStarted = !0, n && n(t));\n const { evData: w } = this;\n w.clientX = t.clientX, w.clientY = t.clientY;\n let h;\n w.isResize ? h = this.resizeCrop() : h = this.dragCrop(), P(e, h) || i(\n y(h, a.width, a.height),\n D(h, a.width, a.height)\n );\n }, this.onComponentKeyDown = (t) => {\n const { crop: e, disabled: o, onChange: i, onComplete: n } = this.props;\n if (o)\n return;\n const a = t.key;\n let w = !1;\n if (!e)\n return;\n const h = this.getBox(), r = this.makePixelCrop(h), d = (navigator.platform.match(\"Mac\") ? t.metaKey : t.ctrlKey) ? m.nudgeStepLarge : t.shiftKey ? m.nudgeStepMedium : m.nudgeStep;\n if (a === \"ArrowLeft\" ? (r.x -= d, w = !0) : a === \"ArrowRight\" ? (r.x += d, w = !0) : a === \"ArrowUp\" ? (r.y -= d, w = !0) : a === \"ArrowDown\" && (r.y += d, w = !0), w) {\n t.cancelable && t.preventDefault(), r.x = f(r.x, 0, h.width - r.width), r.y = f(r.y, 0, h.height - r.height);\n const p = y(r, h.width, h.height), l = D(r, h.width, h.height);\n i(p, l), n && n(p, l);\n }\n }, this.onHandlerKeyDown = (t, e) => {\n const {\n aspect: o = 0,\n crop: i,\n disabled: n,\n minWidth: a = 0,\n minHeight: w = 0,\n maxWidth: h,\n maxHeight: r,\n onChange: c,\n onComplete: d\n } = this.props, p = this.getBox();\n if (n || !i)\n return;\n if (t.key === \"ArrowUp\" || t.key === \"ArrowDown\" || t.key === \"ArrowLeft\" || t.key === \"ArrowRight\")\n t.stopPropagation(), t.preventDefault();\n else\n return;\n const u = (navigator.platform.match(\"Mac\") ? t.metaKey : t.ctrlKey) ? m.nudgeStepLarge : t.shiftKey ? m.nudgeStepMedium : m.nudgeStep, C = y(i, p.width, p.height), R = K(C, t.key, u, e), x = X(\n R,\n o,\n e,\n p.width,\n p.height,\n a,\n w,\n h,\n r\n );\n if (!P(i, x)) {\n const Y = D(x, p.width, p.height);\n c(x, Y), d && d(x, Y);\n }\n }, this.onDocPointerDone = (t) => {\n const { crop: e, disabled: o, onComplete: i, onDragEnd: n } = this.props, a = this.getBox();\n this.unbindDocMove(), !(o || !e) && this.mouseDownOnCrop && (this.mouseDownOnCrop = !1, this.dragStarted = !1, n && n(t), i && i(y(e, a.width, a.height), D(e, a.width, a.height)), this.setState({ cropIsActive: !1, newCropIsBeingDrawn: !1 }));\n }, this.onDragFocus = (t) => {\n var e;\n (e = this.componentRef.current) == null || e.scrollTo(0, 0);\n };\n }\n get document() {\n return document;\n }\n // We unfortunately get the bounding box every time as x+y changes\n // due to scrolling.\n getBox() {\n const t = this.mediaRef.current;\n if (!t)\n return { x: 0, y: 0, width: 0, height: 0 };\n const { x: e, y: o, width: i, height: n } = t.getBoundingClientRect();\n return { x: e, y: o, width: i, height: n };\n }\n componentDidUpdate(t) {\n const { crop: e, onComplete: o } = this.props;\n if (o && !t.crop && e) {\n const { width: i, height: n } = this.getBox();\n i && n && o(y(e, i, n), D(e, i, n));\n }\n }\n componentWillUnmount() {\n this.resizeObserver && this.resizeObserver.disconnect();\n }\n bindDocMove() {\n this.docMoveBound || (this.document.addEventListener(\"pointermove\", this.onDocPointerMove, b), this.document.addEventListener(\"pointerup\", this.onDocPointerDone, b), this.document.addEventListener(\"pointercancel\", this.onDocPointerDone, b), this.docMoveBound = !0);\n }\n unbindDocMove() {\n this.docMoveBound && (this.document.removeEventListener(\"pointermove\", this.onDocPointerMove, b), this.document.removeEventListener(\"pointerup\", this.onDocPointerDone, b), this.document.removeEventListener(\"pointercancel\", this.onDocPointerDone, b), this.docMoveBound = !1);\n }\n getCropStyle() {\n const { crop: t } = this.props;\n if (t)\n return {\n top: `${t.y}${t.unit}`,\n left: `${t.x}${t.unit}`,\n width: `${t.width}${t.unit}`,\n height: `${t.height}${t.unit}`\n };\n }\n dragCrop() {\n const { evData: t } = this, e = this.getBox(), o = this.makePixelCrop(e), i = t.clientX - t.startClientX, n = t.clientY - t.startClientY;\n return o.x = f(t.startCropX + i, 0, e.width - o.width), o.y = f(t.startCropY + n, 0, e.height - o.height), o;\n }\n getPointRegion(t, e, o, i) {\n const { evData: n } = this, a = n.clientX - t.x, w = n.clientY - t.y;\n let h;\n i && e ? h = e === \"nw\" || e === \"n\" || e === \"ne\" : h = w < n.startCropY;\n let r;\n return o && e ? r = e === \"nw\" || e === \"w\" || e === \"sw\" : r = a < n.startCropX, r ? h ? \"nw\" : \"sw\" : h ? \"ne\" : \"se\";\n }\n resolveMinDimensions(t, e, o = 0, i = 0) {\n let n = Math.min(o, t.width), a = Math.min(i, t.height);\n return !e || !n && !a ? [n, a] : e > 1 ? n ? [n, n / e] : [a * e, a] : a ? [a * e, a] : [n, n / e];\n }\n resizeCrop() {\n const { evData: t } = this, { aspect: e = 0, maxWidth: o, maxHeight: i } = this.props, n = this.getBox(), [a, w] = this.resolveMinDimensions(n, e, this.props.minWidth, this.props.minHeight);\n let h = this.makePixelCrop(n), r = this.getPointRegion(n, t.ord, a, w);\n const c = t.ord || r;\n let d = t.clientX - t.startClientX, p = t.clientY - t.startClientY;\n (a && c === \"nw\" || c === \"w\" || c === \"sw\") && (d = Math.min(d, -a)), (w && c === \"nw\" || c === \"n\" || c === \"ne\") && (p = Math.min(p, -w));\n const l = {\n unit: \"px\",\n x: 0,\n y: 0,\n width: 0,\n height: 0\n };\n r === \"ne\" ? (l.x = t.startCropX, l.width = d, e ? (l.height = l.width / e, l.y = t.startCropY - l.height) : (l.height = Math.abs(p), l.y = t.startCropY - l.height)) : r === \"se\" ? (l.x = t.startCropX, l.y = t.startCropY, l.width = d, e ? l.height = l.width / e : l.height = p) : r === \"sw\" ? (l.x = t.startCropX + d, l.y = t.startCropY, l.width = Math.abs(d), e ? l.height = l.width / e : l.height = p) : r === \"nw\" && (l.x = t.startCropX + d, l.width = Math.abs(d), e ? (l.height = l.width / e, l.y = t.startCropY - l.height) : (l.height = Math.abs(p), l.y = t.startCropY + p));\n const u = X(\n l,\n e,\n r,\n n.width,\n n.height,\n a,\n w,\n o,\n i\n );\n return e || m.xyOrds.indexOf(c) > -1 ? h = u : m.xOrds.indexOf(c) > -1 ? (h.x = u.x, h.width = u.width) : m.yOrds.indexOf(c) > -1 && (h.y = u.y, h.height = u.height), h.x = f(h.x, 0, n.width - h.width), h.y = f(h.y, 0, n.height - h.height), h;\n }\n createCropSelection() {\n const {\n ariaLabels: t = m.defaultProps.ariaLabels,\n disabled: e,\n locked: o,\n renderSelectionAddon: i,\n ruleOfThirds: n,\n crop: a\n } = this.props, w = this.getCropStyle();\n if (a)\n return /* @__PURE__ */ g.createElement(\n \"div\",\n {\n style: w,\n className: \"ReactCrop__crop-selection\",\n onPointerDown: this.onCropPointerDown,\n \"aria-label\": t.cropArea,\n tabIndex: 0,\n onKeyDown: this.onComponentKeyDown,\n role: \"group\"\n },\n !e && !o && /* @__PURE__ */ g.createElement(\"div\", { className: \"ReactCrop__drag-elements\", onFocus: this.onDragFocus }, /* @__PURE__ */ g.createElement(\"div\", { className: \"ReactCrop__drag-bar ord-n\", \"data-ord\": \"n\" }), /* @__PURE__ */ g.createElement(\"div\", { className: \"ReactCrop__drag-bar ord-e\", \"data-ord\": \"e\" }), /* @__PURE__ */ g.createElement(\"div\", { className: \"ReactCrop__drag-bar ord-s\", \"data-ord\": \"s\" }), /* @__PURE__ */ g.createElement(\"div\", { className: \"ReactCrop__drag-bar ord-w\", \"data-ord\": \"w\" }), /* @__PURE__ */ g.createElement(\n \"div\",\n {\n className: \"ReactCrop__drag-handle ord-nw\",\n \"data-ord\": \"nw\",\n tabIndex: 0,\n \"aria-label\": t.nwDragHandle,\n onKeyDown: (h) => this.onHandlerKeyDown(h, \"nw\"),\n role: \"button\"\n }\n ), /* @__PURE__ */ g.createElement(\n \"div\",\n {\n className: \"ReactCrop__drag-handle ord-n\",\n \"data-ord\": \"n\",\n tabIndex: 0,\n \"aria-label\": t.nDragHandle,\n onKeyDown: (h) => this.onHandlerKeyDown(h, \"n\"),\n role: \"button\"\n }\n ), /* @__PURE__ */ g.createElement(\n \"div\",\n {\n className: \"ReactCrop__drag-handle ord-ne\",\n \"data-ord\": \"ne\",\n tabIndex: 0,\n \"aria-label\": t.neDragHandle,\n onKeyDown: (h) => this.onHandlerKeyDown(h, \"ne\"),\n role: \"button\"\n }\n ), /* @__PURE__ */ g.createElement(\n \"div\",\n {\n className: \"ReactCrop__drag-handle ord-e\",\n \"data-ord\": \"e\",\n tabIndex: 0,\n \"aria-label\": t.eDragHandle,\n onKeyDown: (h) => this.onHandlerKeyDown(h, \"e\"),\n role: \"button\"\n }\n ), /* @__PURE__ */ g.createElement(\n \"div\",\n {\n className: \"ReactCrop__drag-handle ord-se\",\n \"data-ord\": \"se\",\n tabIndex: 0,\n \"aria-label\": t.seDragHandle,\n onKeyDown: (h) => this.onHandlerKeyDown(h, \"se\"),\n role: \"button\"\n }\n ), /* @__PURE__ */ g.createElement(\n \"div\",\n {\n className: \"ReactCrop__drag-handle ord-s\",\n \"data-ord\": \"s\",\n tabIndex: 0,\n \"aria-label\": t.sDragHandle,\n onKeyDown: (h) => this.onHandlerKeyDown(h, \"s\"),\n role: \"button\"\n }\n ), /* @__PURE__ */ g.createElement(\n \"div\",\n {\n className: \"ReactCrop__drag-handle ord-sw\",\n \"data-ord\": \"sw\",\n tabIndex: 0,\n \"aria-label\": t.swDragHandle,\n onKeyDown: (h) => this.onHandlerKeyDown(h, \"sw\"),\n role: \"button\"\n }\n ), /* @__PURE__ */ g.createElement(\n \"div\",\n {\n className: \"ReactCrop__drag-handle ord-w\",\n \"data-ord\": \"w\",\n tabIndex: 0,\n \"aria-label\": t.wDragHandle,\n onKeyDown: (h) => this.onHandlerKeyDown(h, \"w\"),\n role: \"button\"\n }\n )),\n i && /* @__PURE__ */ g.createElement(\"div\", { className: \"ReactCrop__selection-addon\", onMouseDown: (h) => h.stopPropagation() }, i(this.state)),\n n && /* @__PURE__ */ g.createElement(g.Fragment, null, /* @__PURE__ */ g.createElement(\"div\", { className: \"ReactCrop__rule-of-thirds-hz\" }), /* @__PURE__ */ g.createElement(\"div\", { className: \"ReactCrop__rule-of-thirds-vt\" }))\n );\n }\n makePixelCrop(t) {\n const e = { ...M, ...this.props.crop || {} };\n return y(e, t.width, t.height);\n }\n render() {\n const { aspect: t, children: e, circularCrop: o, className: i, crop: n, disabled: a, locked: w, style: h, ruleOfThirds: r } = this.props, { cropIsActive: c, newCropIsBeingDrawn: d } = this.state, p = n ? this.createCropSelection() : null, l = S(\n \"ReactCrop\",\n i,\n c && \"ReactCrop--active\",\n a && \"ReactCrop--disabled\",\n w && \"ReactCrop--locked\",\n d && \"ReactCrop--new-crop\",\n n && t && \"ReactCrop--fixed-aspect\",\n n && o && \"ReactCrop--circular-crop\",\n n && r && \"ReactCrop--rule-of-thirds\",\n !this.dragStarted && n && !n.width && !n.height && \"ReactCrop--invisible-crop\",\n o && \"ReactCrop--no-animate\"\n );\n return /* @__PURE__ */ g.createElement(\"div\", { ref: this.componentRef, className: l, style: h }, /* @__PURE__ */ g.createElement(\"div\", { ref: this.mediaRef, className: \"ReactCrop__child-wrapper\", onPointerDown: this.onComponentPointerDown }, e), p);\n }\n};\nv.xOrds = [\"e\", \"w\"];\nv.yOrds = [\"n\", \"s\"];\nv.xyOrds = [\"nw\", \"ne\", \"se\", \"sw\"];\nv.nudgeStep = 1;\nv.nudgeStepMedium = 10;\nv.nudgeStepLarge = 100;\nv.defaultProps = {\n ariaLabels: {\n cropArea: \"Use the arrow keys to move the crop selection area\",\n nwDragHandle: \"Use the arrow keys to move the north west drag handle to change the crop selection area\",\n nDragHandle: \"Use the up and down arrow keys to move the north drag handle to change the crop selection area\",\n neDragHandle: \"Use the arrow keys to move the north east drag handle to change the crop selection area\",\n eDragHandle: \"Use the up and down arrow keys to move the east drag handle to change the crop selection area\",\n seDragHandle: \"Use the arrow keys to move the south east drag handle to change the crop selection area\",\n sDragHandle: \"Use the up and down arrow keys to move the south drag handle to change the crop selection area\",\n swDragHandle: \"Use the arrow keys to move the south west drag handle to change the crop selection area\",\n wDragHandle: \"Use the up and down arrow keys to move the west drag handle to change the crop selection area\"\n }\n};\nlet I = v;\nexport {\n I as Component,\n I as ReactCrop,\n P as areCropsEqual,\n N as centerCrop,\n f as clamp,\n S as cls,\n X as containCrop,\n D as convertToPercentCrop,\n y as convertToPixelCrop,\n I as default,\n M as defaultCrop,\n H as makeAspectCrop,\n K as nudgeCrop\n};\n", "'use client'\nimport type { Data, FileSizes, SanitizedCollectionConfig } from 'payload'\n\nimport React from 'react'\n\nimport { DraggableFileDetails } from './DraggableFileDetails/index.js'\nimport { StaticFileDetails } from './StaticFileDetails/index.js'\n\ntype SharedFileDetailsProps = {\n collectionSlug: string\n customUploadActions?: React.ReactNode[]\n doc: {\n sizes?: FileSizes\n } & Data\n enableAdjustments?: boolean\n hasImageSizes?: boolean\n hideRemoveFile?: boolean\n imageCacheTag?: string\n uploadConfig: SanitizedCollectionConfig['upload']\n}\n\ntype StaticFileDetailsProps = {\n draggableItemProps?: never\n handleRemove?: () => void\n hasMany?: never\n isSortable?: never\n removeItem?: never\n rowIndex?: never\n}\n\ntype DraggableFileDetailsProps = {\n handleRemove?: never\n hasMany: boolean\n isSortable?: boolean\n removeItem?: (index: number) => void\n rowIndex: number\n}\n\nexport type FileDetailsProps = (DraggableFileDetailsProps | StaticFileDetailsProps) &\n SharedFileDetailsProps\n\nexport const FileDetails: React.FC<FileDetailsProps> = (props) => {\n const { hasMany } = props\n\n if (hasMany) {\n return <DraggableFileDetails {...props} />\n }\n\n return <StaticFileDetails {...props} />\n}\n", "'use client'\nimport React from 'react'\n\nimport { Button } from '../../Button/index.js'\nimport { Thumbnail } from '../../Thumbnail/index.js'\nimport './index.scss'\n\nconst baseClass = 'file-details-draggable'\n\nimport type { Data, FileSizes, SanitizedCollectionConfig } from 'payload'\n\nimport { DraggableSortableItem } from '../../../elements/DraggableSortable/DraggableSortableItem/index.js'\nimport { DragHandleIcon } from '../../../icons/DragHandle/index.js'\nimport { EditIcon } from '../../../icons/Edit/index.js'\nimport { useDocumentDrawer } from '../../DocumentDrawer/index.js'\n\nexport type DraggableFileDetailsProps = {\n collectionSlug: string\n customUploadActions?: React.ReactNode[]\n doc: {\n sizes?: FileSizes\n } & Data\n enableAdjustments?: boolean\n hasImageSizes?: boolean\n hasMany: boolean\n hideRemoveFile?: boolean\n imageCacheTag?: string\n isSortable?: boolean\n removeItem?: (index: number) => void\n rowIndex: number\n uploadConfig: SanitizedCollectionConfig['upload']\n}\n\nexport const DraggableFileDetails: React.FC<DraggableFileDetailsProps> = (props) => {\n const {\n collectionSlug,\n doc,\n hideRemoveFile,\n imageCacheTag,\n isSortable,\n removeItem,\n rowIndex,\n uploadConfig,\n } = props\n\n const { id, filename, thumbnailURL, url } = doc\n\n const [DocumentDrawer, DocumentDrawerToggler] = useDocumentDrawer({\n id,\n collectionSlug,\n })\n\n return (\n <DraggableSortableItem id={id} key={id}>\n {(draggableSortableItemProps) => (\n <div\n className={[\n baseClass,\n draggableSortableItemProps && isSortable && `${baseClass}--has-drag-handle`,\n ]\n .filter(Boolean)\n .join(' ')}\n ref={draggableSortableItemProps.setNodeRef}\n style={{\n transform: draggableSortableItemProps.transform,\n transition: draggableSortableItemProps.transition,\n zIndex: draggableSortableItemProps.isDragging ? 1 : undefined,\n }}\n >\n <div className={`${baseClass}--drag-wrapper`}>\n {isSortable && draggableSortableItemProps && (\n <div\n className={`${baseClass}__drag`}\n {...draggableSortableItemProps.attributes}\n {...draggableSortableItemProps.listeners}\n >\n <DragHandleIcon />\n </div>\n )}\n <Thumbnail\n className={`${baseClass}__thumbnail`}\n collectionSlug={collectionSlug}\n doc={doc}\n fileSrc={thumbnailURL || url}\n imageCacheTag={imageCacheTag}\n uploadConfig={uploadConfig}\n />\n </div>\n <div className={`${baseClass}__main-detail`}>{filename}</div>\n\n <div className={`${baseClass}__actions`}>\n <DocumentDrawer />\n <DocumentDrawerToggler>\n <EditIcon />\n </DocumentDrawerToggler>\n {!hideRemoveFile && removeItem && (\n <Button\n buttonStyle=\"icon-label\"\n className={`${baseClass}__remove`}\n icon=\"x\"\n iconStyle=\"none\"\n onClick={() => removeItem(rowIndex)}\n round\n />\n )}\n </div>\n </div>\n )}\n </DraggableSortableItem>\n )\n}\n", "'use client'\nimport React from 'react'\n\nimport { Button } from '../../Button/index.js'\nimport { Thumbnail } from '../../Thumbnail/index.js'\nimport { UploadActions } from '../../Upload/index.js'\nimport { FileMeta } from '../FileMeta/index.js'\nimport './index.scss'\n\nconst baseClass = 'file-details'\n\nimport type { Data, FileSizes, SanitizedCollectionConfig } from 'payload'\n\nexport type StaticFileDetailsProps = {\n customUploadActions?: React.ReactNode[]\n doc: {\n sizes?: FileSizes\n } & Data\n enableAdjustments?: boolean\n handleRemove?: () => void\n hasImageSizes?: boolean\n hideRemoveFile?: boolean\n imageCacheTag?: string\n uploadConfig: SanitizedCollectionConfig['upload']\n}\n\nexport const StaticFileDetails: React.FC<StaticFileDetailsProps> = (props) => {\n const {\n customUploadActions,\n doc,\n enableAdjustments,\n handleRemove,\n hasImageSizes,\n hideRemoveFile,\n imageCacheTag,\n uploadConfig,\n } = props\n\n const { filename, filesize, height, mimeType, thumbnailURL, url, width } = doc\n\n const previewAllowed = uploadConfig.displayPreview ?? true\n\n return (\n <div className={baseClass}>\n <header>\n {previewAllowed && (\n <Thumbnail\n // size=\"small\"\n className={`${baseClass}__thumbnail`}\n doc={doc}\n fileSrc={thumbnailURL || url}\n imageCacheTag={imageCacheTag}\n uploadConfig={uploadConfig}\n />\n )}\n <div className={`${baseClass}__main-detail`}>\n <FileMeta\n filename={filename as string}\n filesize={filesize as number}\n height={height as number}\n mimeType={mimeType as string}\n url={url as string}\n width={width as number}\n />\n\n {(enableAdjustments || (hasImageSizes && doc.filename) || customUploadActions) && (\n <UploadActions\n customActions={customUploadActions}\n enableAdjustments={Boolean(enableAdjustments)}\n enablePreviewSizes={hasImageSizes && doc.filename}\n mimeType={mimeType}\n />\n )}\n </div>\n {!hideRemoveFile && handleRemove && (\n <Button\n buttonStyle=\"icon-label\"\n className={`${baseClass}__remove`}\n icon=\"x\"\n iconStyle=\"with-border\"\n onClick={handleRemove}\n round\n />\n )}\n </header>\n </div>\n )\n}\n", "'use client'\nimport { formatFilesize } from 'payload/shared'\nimport React from 'react'\n\nexport type FileMetaProps = {\n filename: string\n filesize: number\n height?: number\n mimeType: string\n sizes?: unknown\n url: string\n width?: number\n}\n\nimport { CopyToClipboard } from '../../CopyToClipboard/index.js'\nimport './index.scss'\n\nconst baseClass = 'file-meta'\n\nexport const FileMeta: React.FC<FileMetaProps> = (props) => {\n const { filename, filesize, height, mimeType, url: fileURL, width } = props\n\n return (\n <div className={baseClass}>\n <div className={`${baseClass}__url`}>\n <a href={fileURL} rel=\"noopener noreferrer\" target=\"_blank\">\n {filename}\n </a>\n <CopyToClipboard defaultMessage=\"Copy URL\" value={fileURL} />\n </div>\n <div className={`${baseClass}__size-type`}>\n {formatFilesize(filesize)}\n {typeof width === 'number' && typeof height === 'number' && (\n <React.Fragment>\n &nbsp;-&nbsp;\n {width}x{height}\n </React.Fragment>\n )}\n {mimeType && (\n <React.Fragment>\n &nbsp;-&nbsp;\n {mimeType}\n </React.Fragment>\n )}\n </div>\n </div>\n )\n}\n", "'use client'\nimport React, { useState } from 'react'\n\nimport { CopyIcon } from '../../icons/Copy/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { Tooltip } from '../Tooltip/index.js'\nimport './index.scss'\n\nconst baseClass = 'copy-to-clipboard'\n\nexport type Props = {\n defaultMessage?: string\n successMessage?: string\n value?: string\n}\n\nexport const CopyToClipboard: React.FC<Props> = ({ defaultMessage, successMessage, value }) => {\n const [copied, setCopied] = useState(false)\n const [hovered, setHovered] = useState(false)\n const { t } = useTranslation()\n\n if (value) {\n return (\n <button\n className={baseClass}\n onClick={async () => {\n await navigator.clipboard.writeText(value)\n setCopied(true)\n }}\n onMouseEnter={() => {\n setHovered(true)\n setCopied(false)\n }}\n onMouseLeave={() => {\n setHovered(false)\n setCopied(false)\n }}\n type=\"button\"\n >\n <CopyIcon />\n <Tooltip delay={copied ? 0 : undefined} show={hovered || copied}>\n {copied && (successMessage ?? t('general:copied'))}\n {!copied && (defaultMessage ?? t('general:copy'))}\n </Tooltip>\n </button>\n )\n }\n\n return null\n}\n", "'use client'\nimport type { Data, FileSize, SanitizedCollectionConfig, SanitizedUploadConfig } from 'payload'\n\nimport React, { useEffect, useMemo, useState } from 'react'\n\nimport { FileMeta } from '../FileDetails/FileMeta/index.js'\nimport './index.scss'\n\nconst baseClass = 'preview-sizes'\n\ntype FileInfo = {\n url: string\n} & FileSize\ntype FilesSizesWithUrl = {\n [key: string]: FileInfo\n}\n\nconst sortSizes = (sizes: FilesSizesWithUrl, imageSizes: SanitizedUploadConfig['imageSizes']) => {\n if (!imageSizes || imageSizes.length === 0) {\n return sizes\n }\n\n const orderedSizes: FilesSizesWithUrl = {}\n\n imageSizes.forEach(({ name }) => {\n if (sizes[name]) {\n orderedSizes[name] = sizes[name]\n }\n })\n\n return orderedSizes\n}\n\ntype PreviewSizeCardProps = {\n active: boolean\n alt: string\n meta: FileInfo\n name: string\n onClick?: () => void\n previewSrc: string\n}\nconst PreviewSizeCard: React.FC<PreviewSizeCardProps> = ({\n name,\n active,\n alt,\n meta,\n onClick,\n previewSrc,\n}) => {\n return (\n <div\n className={[`${baseClass}__sizeOption`, active && `${baseClass}--selected`]\n .filter(Boolean)\n .join(' ')}\n onClick={typeof onClick === 'function' ? onClick : undefined}\n onKeyDown={(e) => {\n if (typeof onClick !== 'function') {\n return\n }\n if (e.key === 'Enter') {\n onClick()\n }\n }}\n role=\"button\"\n tabIndex={0}\n >\n <div className={`${baseClass}__image`}>\n <img alt={alt} src={previewSrc} />\n </div>\n <div className={`${baseClass}__sizeMeta`}>\n <div className={`${baseClass}__sizeName`}>{name}</div>\n <FileMeta {...meta} />\n </div>\n </div>\n )\n}\n\nexport type PreviewSizesProps = {\n doc: {\n sizes?: FilesSizesWithUrl\n } & Data\n imageCacheTag?: string\n uploadConfig: SanitizedCollectionConfig['upload']\n}\n\nexport const PreviewSizes: React.FC<PreviewSizesProps> = ({ doc, imageCacheTag, uploadConfig }) => {\n const { imageSizes } = uploadConfig\n const { sizes } = doc\n\n const alt = (doc as { alt?: string })?.alt || doc.filename || ''\n\n const [orderedSizes, setOrderedSizes] = useState<FilesSizesWithUrl>(() =>\n sortSizes(sizes, imageSizes),\n )\n const [selectedSize, setSelectedSize] = useState<null | string>(null)\n\n const generateImageUrl = (doc) => {\n if (!doc.filename) {\n return null\n }\n if (doc.url) {\n return `${doc.url}${imageCacheTag ? `?${encodeURIComponent(imageCacheTag)}` : ''}`\n }\n }\n useEffect(() => {\n setOrderedSizes(sortSizes(sizes, imageSizes))\n }, [sizes, imageSizes, imageCacheTag])\n\n const mainPreviewSrc = selectedSize\n ? generateImageUrl(doc.sizes[selectedSize])\n : generateImageUrl(doc)\n\n const originalImage = useMemo(\n (): FileInfo => ({\n filename: doc.filename,\n filesize: doc.filesize,\n height: doc.height,\n mimeType: doc.mimeType,\n url: doc.url,\n width: doc.width,\n }),\n [doc],\n )\n const originalFilename = 'Original'\n\n return (\n <div className={baseClass}>\n <div className={`${baseClass}__imageWrap`}>\n <div className={`${baseClass}__meta`}>\n <div className={`${baseClass}__sizeName`}>{selectedSize || originalFilename}</div>\n <FileMeta {...(selectedSize ? orderedSizes[selectedSize] : originalImage)} />\n </div>\n <img alt={alt} className={`${baseClass}__preview`} src={mainPreviewSrc} />\n </div>\n <div className={`${baseClass}__listWrap`}>\n <div className={`${baseClass}__list`}>\n <PreviewSizeCard\n active={!selectedSize}\n alt={alt}\n meta={originalImage}\n name={originalFilename}\n onClick={() => setSelectedSize(null)}\n previewSrc={generateImageUrl(doc)}\n />\n\n {Object.entries(orderedSizes).map(([key, val]) => {\n const selected = selectedSize === key\n const previewSrc = generateImageUrl(val)\n\n if (previewSrc) {\n return (\n <PreviewSizeCard\n active={selected}\n alt={alt}\n key={key}\n meta={val}\n name={key}\n onClick={() => setSelectedSize(key)}\n previewSrc={previewSrc}\n />\n )\n }\n\n return null\n })}\n </div>\n </div>\n </div>\n )\n}\n", "'use client'\n\nimport { useModal } from '@faceless-ui/modal'\nimport { useWindowInfo } from '@faceless-ui/window-info'\nimport { isImage } from 'payload/shared'\nimport React from 'react'\n\nimport { SelectInput } from '../../../fields/Select/Input.js'\nimport { ChevronIcon } from '../../../icons/Chevron/index.js'\nimport { XIcon } from '../../../icons/X/index.js'\nimport { useConfig } from '../../../providers/Config/index.js'\nimport { useTranslation } from '../../../providers/Translation/index.js'\nimport { AnimateHeight } from '../../AnimateHeight/index.js'\nimport { Button } from '../../Button/index.js'\nimport { Drawer } from '../../Drawer/index.js'\nimport { ErrorPill } from '../../ErrorPill/index.js'\nimport { Pill } from '../../Pill/index.js'\nimport { ShimmerEffect } from '../../ShimmerEffect/index.js'\nimport { createThumbnail } from '../../Thumbnail/createThumbnail.js'\nimport { Thumbnail } from '../../Thumbnail/index.js'\nimport { Actions } from '../ActionsBar/index.js'\nimport { AddFilesView } from '../AddFilesView/index.js'\nimport './index.scss'\nimport { useFormsManager } from '../FormsManager/index.js'\nimport { useBulkUpload } from '../index.js'\n\nconst addMoreFilesDrawerSlug = 'bulk-upload-drawer--add-more-files'\n\nconst baseClass = 'file-selections'\n\nexport function FileSidebar() {\n const {\n activeIndex,\n addFiles,\n forms,\n isInitializing,\n removeFile,\n setActiveIndex,\n totalErrorCount,\n } = useFormsManager()\n const { initialFiles, initialForms, maxFiles } = useBulkUpload()\n const { i18n, t } = useTranslation()\n const { closeModal, openModal } = useModal()\n const [showFiles, setShowFiles] = React.useState(false)\n const { breakpoints } = useWindowInfo()\n\n const handleRemoveFile = React.useCallback(\n (indexToRemove: number) => {\n removeFile(indexToRemove)\n },\n [removeFile],\n )\n\n const handleAddFiles = React.useCallback(\n (filelist: FileList) => {\n void addFiles(filelist)\n closeModal(addMoreFilesDrawerSlug)\n },\n [addFiles, closeModal],\n )\n\n const getFileSize = React.useCallback((file: File) => {\n const size = file.size\n const i = size === 0 ? 0 : Math.floor(Math.log(size) / Math.log(1024))\n const decimals = i > 1 ? 1 : 0\n const formattedSize =\n (size / Math.pow(1024, i)).toFixed(decimals) + ' ' + ['B', 'kB', 'MB', 'GB', 'TB'][i]\n return formattedSize\n }, [])\n\n const totalFileCount = isInitializing\n ? (initialFiles?.length ?? initialForms?.length)\n : forms.length\n\n const {\n collectionSlug: bulkUploadCollectionSlug,\n selectableCollections,\n setCollectionSlug,\n } = useBulkUpload()\n\n const { getEntityConfig } = useConfig()\n\n return (\n <div\n className={[baseClass, showFiles && `${baseClass}__showingFiles`].filter(Boolean).join(' ')}\n >\n {breakpoints.m && showFiles ? <div className={`${baseClass}__mobileBlur`} /> : null}\n <div className={`${baseClass}__header`}>\n {selectableCollections?.length > 1 && (\n <SelectInput\n className={`${baseClass}__collectionSelect`}\n isClearable={false}\n name=\"groupBy\"\n onChange={(e) => {\n const val: string =\n typeof e === 'object' && 'value' in e\n ? (e?.value as string)\n : (e as unknown as string)\n setCollectionSlug(val)\n }}\n options={\n selectableCollections?.map((coll) => {\n const config = getEntityConfig({ collectionSlug: coll })\n return { label: config.labels.singular, value: config.slug }\n }) || []\n }\n path=\"groupBy\"\n required\n value={bulkUploadCollectionSlug}\n />\n )}\n <div className={`${baseClass}__headerTopRow`}>\n <div className={`${baseClass}__header__text`}>\n <ErrorPill count={totalErrorCount} i18n={i18n} withMessage />\n <p>\n <strong\n title={`${totalFileCount} ${t(totalFileCount > 1 ? 'upload:filesToUpload' : 'upload:fileToUpload')}`}\n >\n {totalFileCount}{' '}\n {t(totalFileCount > 1 ? 'upload:filesToUpload' : 'upload:fileToUpload')}\n </strong>\n </p>\n </div>\n\n <div className={`${baseClass}__header__actions`}>\n {(typeof maxFiles === 'number' ? totalFileCount < maxFiles : true) ? (\n <Pill\n className={`${baseClass}__header__addFile`}\n onClick={() => openModal(addMoreFilesDrawerSlug)}\n size=\"small\"\n >\n {t('upload:addFile')}\n </Pill>\n ) : null}\n <Button\n buttonStyle=\"transparent\"\n className={`${baseClass}__toggler`}\n onClick={() => setShowFiles((prev) => !prev)}\n >\n <span className={`${baseClass}__toggler__label`}>\n <strong\n title={`${totalFileCount} ${t(totalFileCount > 1 ? 'upload:filesToUpload' : 'upload:fileToUpload')}`}\n >\n {totalFileCount}{' '}\n {t(totalFileCount > 1 ? 'upload:filesToUpload' : 'upload:fileToUpload')}\n </strong>\n </span>\n <ChevronIcon direction={showFiles ? 'down' : 'up'} />\n </Button>\n\n <Drawer gutter={false} Header={null} slug={addMoreFilesDrawerSlug}>\n <AddFilesView\n onCancel={() => closeModal(addMoreFilesDrawerSlug)}\n onDrop={handleAddFiles}\n />\n </Drawer>\n </div>\n </div>\n\n <div className={`${baseClass}__header__mobileDocActions`}>\n <Actions />\n </div>\n </div>\n\n <div className={`${baseClass}__animateWrapper`}>\n <AnimateHeight height={!breakpoints.m || showFiles ? 'auto' : 0}>\n <div className={`${baseClass}__filesContainer`}>\n {isInitializing &&\n forms.length === 0 &&\n (initialFiles?.length > 0 || initialForms?.length > 0)\n ? (initialFiles ? Array.from(initialFiles) : initialForms).map((file, index) => (\n <ShimmerEffect\n animationDelay={`calc(${index} * ${60}ms)`}\n height=\"35px\"\n key={index}\n />\n ))\n : null}\n {forms.map(({ errorCount, formID, formState }, index) => {\n const currentFile = (formState?.file?.value as File) || ({} as File)\n\n return (\n <div\n className={[\n `${baseClass}__fileRowContainer`,\n index === activeIndex && `${baseClass}__fileRowContainer--active`,\n errorCount && errorCount > 0 && `${baseClass}__fileRowContainer--error`,\n ]\n .filter(Boolean)\n .join(' ')}\n key={formID}\n >\n <button\n className={`${baseClass}__fileRow`}\n onClick={() => setActiveIndex(index)}\n type=\"button\"\n >\n <SidebarThumbnail file={currentFile} formID={formID} />\n <div className={`${baseClass}__fileDetails`}>\n <p className={`${baseClass}__fileName`} title={currentFile.name}>\n {currentFile.name || t('upload:noFile')}\n </p>\n </div>\n {currentFile instanceof File ? (\n <p className={`${baseClass}__fileSize`}>{getFileSize(currentFile)}</p>\n ) : null}\n <div className={`${baseClass}__remove ${baseClass}__remove--underlay`}>\n <XIcon />\n </div>\n\n {errorCount ? (\n <ErrorPill\n className={`${baseClass}__errorCount`}\n count={errorCount}\n i18n={i18n}\n />\n ) : null}\n </button>\n\n <button\n aria-label={t('general:remove')}\n className={`${baseClass}__remove ${baseClass}__remove--overlay`}\n onClick={() => handleRemoveFile(index)}\n type=\"button\"\n >\n <XIcon />\n </button>\n </div>\n )\n })}\n </div>\n </AnimateHeight>\n </div>\n </div>\n )\n}\n\nfunction SidebarThumbnail({ file, formID }: { file: File; formID: string }) {\n const [thumbnailURL, setThumbnailURL] = React.useState<null | string>(null)\n const [isLoading, setIsLoading] = React.useState(true)\n\n React.useEffect(() => {\n let isCancelled = false\n\n async function generateThumbnail() {\n setIsLoading(true)\n setThumbnailURL(null)\n\n try {\n if (isImage(file.type)) {\n const url = await createThumbnail(file)\n if (!isCancelled) {\n setThumbnailURL(url)\n }\n } else {\n setThumbnailURL(null)\n }\n } catch (_) {\n if (!isCancelled) {\n setThumbnailURL(null)\n }\n } finally {\n if (!isCancelled) {\n setIsLoading(false)\n }\n }\n }\n\n void generateThumbnail()\n\n return () => {\n isCancelled = true\n }\n }, [file])\n\n if (isLoading) {\n return <ShimmerEffect className={`${baseClass}__thumbnail-shimmer`} disableInlineStyles />\n }\n\n return (\n <Thumbnail\n className={`${baseClass}__thumbnail`}\n fileSrc={thumbnailURL}\n key={`${formID}-${thumbnailURL || 'placeholder'}`}\n />\n )\n}\n", null, null, null, null, null, null, "/**\n * Create a thumbnail from a File object by drawing it onto an OffscreenCanvas\n */\nexport const createThumbnail = (file: File): Promise<string> => {\n return new Promise((resolve, reject) => {\n const img = new Image()\n img.src = URL.createObjectURL(file) // Use Object URL directly\n\n img.onload = () => {\n const maxDimension = 280\n let drawHeight: number, drawWidth: number\n\n // Calculate aspect ratio\n const aspectRatio = img.width / img.height\n\n // Determine dimensions to fit within maxDimension while maintaining aspect ratio\n if (aspectRatio > 1) {\n // Image is wider than tall\n drawWidth = maxDimension\n drawHeight = maxDimension / aspectRatio\n } else {\n // Image is taller than wide, or square\n drawWidth = maxDimension * aspectRatio\n drawHeight = maxDimension\n }\n\n const canvas = new OffscreenCanvas(drawWidth, drawHeight) // Create an OffscreenCanvas\n const ctx = canvas.getContext('2d')\n\n // Determine output format based on input file type\n const outputFormat = file.type === 'image/png' ? 'image/png' : 'image/jpeg'\n const quality = file.type === 'image/png' ? undefined : 0.8 // PNG doesn't use quality, use higher quality for JPEG\n\n // Draw the image onto the OffscreenCanvas with calculated dimensions\n ctx.drawImage(img, 0, 0, drawWidth, drawHeight)\n\n // Convert the OffscreenCanvas to a Blob and free up memory\n canvas\n .convertToBlob({ type: outputFormat, ...(quality && { quality }) })\n .then((blob) => {\n URL.revokeObjectURL(img.src) // Release the Object URL\n const reader = new FileReader()\n reader.onload = () => resolve(reader.result as string) // Resolve as data URL\n reader.onerror = reject\n reader.readAsDataURL(blob)\n })\n .catch(reject)\n }\n\n img.onerror = (error) => {\n URL.revokeObjectURL(img.src) // Release Object URL on error\n // eslint-disable-next-line @typescript-eslint/prefer-promise-reject-errors\n reject(error)\n }\n })\n}\n", "'use client'\n\nimport type {\n ClientCollectionConfig,\n FieldLabelClientProps,\n FilterOptionsResult,\n JsonObject,\n StaticDescription,\n StaticLabel,\n UploadFieldClient,\n UploadField as UploadFieldType,\n ValueWithRelation,\n} from 'payload'\nimport type { MarkOptional } from 'ts-essentials'\n\nimport { useModal } from '@faceless-ui/modal'\nimport { formatAdminURL } from 'payload/shared'\nimport * as qs from 'qs-esm'\nimport React, { useCallback, useEffect, useMemo } from 'react'\n\nimport type { ListDrawerProps } from '../../elements/ListDrawer/types.js'\nimport type { ReloadDoc, ValueAsDataWithRelation } from './types.js'\n\nimport { type BulkUploadContext, useBulkUpload } from '../../elements/BulkUpload/index.js'\nimport { Button } from '../../elements/Button/index.js'\nimport { useDocumentDrawer } from '../../elements/DocumentDrawer/index.js'\nimport { Dropzone } from '../../elements/Dropzone/index.js'\nimport { useListDrawer } from '../../elements/ListDrawer/index.js'\nimport { RenderCustomComponent } from '../../elements/RenderCustomComponent/index.js'\nimport { ShimmerEffect } from '../../elements/ShimmerEffect/index.js'\nimport { FieldDescription } from '../../fields/FieldDescription/index.js'\nimport { FieldError } from '../../fields/FieldError/index.js'\nimport { FieldLabel } from '../../fields/FieldLabel/index.js'\nimport { useAuth } from '../../providers/Auth/index.js'\nimport { useLocale } from '../../providers/Locale/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { normalizeRelationshipValue } from '../../utilities/normalizeRelationshipValue.js'\nimport { fieldBaseClass } from '../shared/index.js'\nimport { UploadComponentHasMany } from './HasMany/index.js'\nimport './index.scss'\nimport { UploadComponentHasOne } from './HasOne/index.js'\n\nexport const baseClass = 'upload'\n\ntype PopulatedDocs = { relationTo: string; value: JsonObject }[]\n\nexport type UploadInputProps = {\n readonly AfterInput?: React.ReactNode\n readonly allowCreate?: boolean\n /**\n * Controls the visibility of the \"Create new collection\" button\n */\n readonly api?: string\n readonly BeforeInput?: React.ReactNode\n readonly className?: string\n readonly collection?: ClientCollectionConfig\n readonly customUploadActions?: React.ReactNode[]\n readonly Description?: React.ReactNode\n readonly description?: StaticDescription\n readonly displayPreview?: boolean\n readonly Error?: React.ReactNode\n readonly filterOptions?: FilterOptionsResult\n readonly hasMany?: boolean\n readonly hideRemoveFile?: boolean\n readonly isSortable?: boolean\n readonly Label?: React.ReactNode\n readonly label?: StaticLabel\n readonly labelProps?: FieldLabelClientProps<MarkOptional<UploadFieldClient, 'type'>>\n readonly localized?: boolean\n readonly maxRows?: number\n readonly onChange?: (e) => void\n readonly path: string\n readonly readOnly?: boolean\n readonly relationTo: UploadFieldType['relationTo']\n readonly required?: boolean\n readonly serverURL?: string\n readonly showError?: boolean\n readonly style?: React.CSSProperties\n readonly value?: (number | string)[] | number | string | ValueWithRelation | ValueWithRelation[]\n}\n\nexport function UploadInput(props: UploadInputProps) {\n const {\n AfterInput,\n allowCreate,\n api,\n BeforeInput,\n className,\n Description,\n description,\n displayPreview,\n Error,\n filterOptions: filterOptionsFromProps,\n hasMany,\n isSortable,\n Label,\n label,\n localized,\n maxRows,\n onChange: onChangeFromProps,\n path,\n readOnly,\n relationTo,\n required,\n serverURL,\n showError,\n style,\n value,\n } = props\n\n const [populatedDocs, setPopulatedDocs] = React.useState<\n {\n relationTo: string\n value: JsonObject\n }[]\n >()\n\n const [activeRelationTo] = React.useState<string>(\n Array.isArray(relationTo) ? relationTo[0] : relationTo,\n )\n\n const { openModal } = useModal()\n const {\n drawerSlug,\n setCollectionSlug,\n setInitialFiles,\n setMaxFiles,\n setOnSuccess,\n setSelectableCollections,\n } = useBulkUpload()\n const { permissions } = useAuth()\n const { code } = useLocale()\n const { i18n, t } = useTranslation()\n\n // This will be used by the bulk upload to allow you to select only collections you have create permissions for\n const collectionSlugsWithCreatePermission = useMemo(() => {\n if (Array.isArray(relationTo)) {\n return relationTo.filter(\n (relation) => permissions?.collections && permissions.collections?.[relation]?.create,\n )\n }\n return []\n }, [relationTo, permissions])\n\n const filterOptions: FilterOptionsResult = useMemo(() => {\n const isPoly = Array.isArray(relationTo)\n\n if (!value) {\n return filterOptionsFromProps\n }\n\n // Group existing IDs by relation\n const existingIdsByRelation: Record<string, (number | string)[]> = {}\n\n const values = Array.isArray(value) ? value : [value]\n\n for (const val of values) {\n if (isPoly && typeof val === 'object' && 'relationTo' in val) {\n // Poly upload - group by relationTo\n if (!existingIdsByRelation[val.relationTo]) {\n existingIdsByRelation[val.relationTo] = []\n }\n existingIdsByRelation[val.relationTo].push(val.value)\n } else if (!isPoly) {\n // Non-poly upload - all IDs belong to the single collection\n const collection = relationTo\n if (!existingIdsByRelation[collection]) {\n existingIdsByRelation[collection] = []\n }\n const id = typeof val === 'object' && 'value' in val ? val.value : val\n if (typeof id === 'string' || typeof id === 'number') {\n existingIdsByRelation[collection].push(id)\n }\n }\n }\n\n // Build filter options for each collection\n const newFilterOptions = { ...filterOptionsFromProps }\n const relations = isPoly ? relationTo : [relationTo]\n\n relations.forEach((relation) => {\n const existingIds = existingIdsByRelation[relation] || []\n\n newFilterOptions[relation] = {\n ...((filterOptionsFromProps?.[relation] as any) || {}),\n id: {\n ...((filterOptionsFromProps?.[relation] as any)?.id || {}),\n not_in: ((filterOptionsFromProps?.[relation] as any)?.id?.not_in || []).concat(\n existingIds,\n ),\n },\n }\n })\n\n return newFilterOptions\n }, [value, filterOptionsFromProps, relationTo])\n\n const [ListDrawer, , { closeDrawer: closeListDrawer, openDrawer: openListDrawer }] =\n useListDrawer({\n collectionSlugs: typeof relationTo === 'string' ? [relationTo] : relationTo,\n filterOptions,\n })\n\n const [\n CreateDocDrawer,\n ,\n { closeDrawer: closeCreateDocDrawer, openDrawer: openCreateDocDrawer },\n ] = useDocumentDrawer({\n collectionSlug: activeRelationTo,\n })\n\n /**\n * Track the last loaded value to prevent unnecessary reloads\n */\n const loadedValueRef = React.useRef<\n (number | string)[] | null | number | string | ValueWithRelation | ValueWithRelation[]\n >(null)\n\n const canCreate = useMemo(() => {\n if (!allowCreate) {\n return false\n }\n\n if (typeof activeRelationTo === 'string') {\n if (permissions?.collections && permissions.collections?.[activeRelationTo]?.create) {\n return true\n }\n }\n\n return false\n }, [activeRelationTo, permissions, allowCreate])\n\n const onChange = React.useCallback(\n (newValue) => {\n if (typeof onChangeFromProps === 'function') {\n onChangeFromProps(newValue)\n }\n },\n [onChangeFromProps],\n )\n\n const populateDocs = React.useCallback(\n async (items: ValueWithRelation[]): Promise<ValueAsDataWithRelation[]> => {\n if (!items?.length) {\n return []\n }\n\n // 1. Group IDs by collection\n const grouped: Record<string, (number | string)[]> = {}\n items.forEach(({ relationTo, value }) => {\n if (!grouped[relationTo]) {\n grouped[relationTo] = []\n }\n // Ensure we extract the actual ID value, not an object\n let idValue: number | string = value\n\n if (value && typeof value === 'object' && 'value' in (value as any)) {\n idValue = (value as any).value\n }\n\n grouped[relationTo].push(idValue)\n })\n\n // 2. Fetch per collection\n const fetches = Object.entries(grouped).map(async ([collection, ids]) => {\n const query = {\n depth: 0,\n draft: true,\n limit: ids.length,\n locale: code,\n where: {\n and: [\n {\n id: {\n in: ids,\n },\n },\n ],\n },\n }\n const response = await fetch(\n formatAdminURL({\n apiRoute: api,\n path: `/${collection}`,\n }),\n {\n body: qs.stringify(query),\n credentials: 'include',\n headers: {\n 'Accept-Language': i18n.language,\n 'Content-Type': 'application/x-www-form-urlencoded',\n 'X-Payload-HTTP-Method-Override': 'GET',\n },\n method: 'POST',\n },\n )\n let docs: any[] = []\n if (response.ok) {\n const data = await response.json()\n docs = data.docs\n }\n // Map docs by ID for fast lookup\n const docsById = docs.reduce((acc, doc) => {\n acc[doc.id] = doc\n return acc\n }, {})\n return { collection, docsById }\n })\n\n const results = await Promise.all(fetches)\n\n // 3. Build lookup\n const lookup: Record<string, Record<string, any>> = {}\n results.forEach(({ collection, docsById }) => {\n lookup[collection] = docsById\n })\n\n // 4. Reconstruct in input order, add placeholders if missing\n const sortedDocs = items.map(({ relationTo, value }) => {\n const doc = lookup[relationTo]?.[value] || {\n id: value,\n filename: `${t('general:untitled')} - ID: ${value}`,\n isPlaceholder: true,\n }\n return { relationTo, value: doc }\n })\n\n return sortedDocs\n },\n [api, code, i18n.language, t],\n )\n\n const normalizeValue = useCallback(\n (value: any): any => normalizeRelationshipValue(value, relationTo),\n [relationTo],\n )\n\n const onUploadSuccess: BulkUploadContext['onSuccess'] = useCallback(\n (uploadedForms) => {\n const isPoly = Array.isArray(relationTo)\n\n if (hasMany) {\n const newValues = uploadedForms.map((form) =>\n isPoly ? { relationTo: form.collectionSlug, value: form.doc.id } : form.doc.id,\n )\n // Normalize existing values before merging\n const normalizedExisting = Array.isArray(value) ? value.map(normalizeValue) : []\n const mergedValue = [...normalizedExisting, ...newValues]\n onChange(mergedValue)\n setPopulatedDocs((currentDocs) => [\n ...(currentDocs || []),\n ...uploadedForms.map((form) => ({\n relationTo: form.collectionSlug,\n value: form.doc,\n })),\n ])\n } else {\n const firstDoc = uploadedForms[0]\n const newValue = isPoly\n ? { relationTo: firstDoc.collectionSlug, value: firstDoc.doc.id }\n : firstDoc.doc.id\n onChange(newValue)\n setPopulatedDocs([\n {\n relationTo: firstDoc.collectionSlug,\n value: firstDoc.doc,\n },\n ])\n }\n },\n [value, onChange, hasMany, relationTo, normalizeValue],\n )\n\n const onLocalFileSelection = React.useCallback(\n (fileList?: FileList) => {\n let fileListToUse = fileList\n if (!hasMany && fileList && fileList.length > 1) {\n const dataTransfer = new DataTransfer()\n dataTransfer.items.add(fileList[0])\n fileListToUse = dataTransfer.files\n }\n if (fileListToUse) {\n setInitialFiles(fileListToUse)\n }\n // Use activeRelationTo for poly uploads, or relationTo as string for single collection\n const collectionToUse = Array.isArray(relationTo) ? activeRelationTo : relationTo\n\n setCollectionSlug(collectionToUse)\n if (Array.isArray(collectionSlugsWithCreatePermission)) {\n setSelectableCollections(collectionSlugsWithCreatePermission)\n }\n\n if (typeof maxRows === 'number') {\n setMaxFiles(maxRows)\n }\n\n openModal(drawerSlug)\n },\n [\n hasMany,\n relationTo,\n activeRelationTo,\n setCollectionSlug,\n collectionSlugsWithCreatePermission,\n maxRows,\n openModal,\n drawerSlug,\n setInitialFiles,\n setSelectableCollections,\n setMaxFiles,\n ],\n )\n\n // only hasMany can bulk select\n const onListBulkSelect = React.useCallback<NonNullable<ListDrawerProps['onBulkSelect']>>(\n async (docs) => {\n const isPoly = Array.isArray(relationTo)\n const selectedDocIDs = []\n\n for (const [id, isSelected] of docs) {\n if (isSelected) {\n selectedDocIDs.push(id)\n }\n }\n\n const itemsToLoad = selectedDocIDs.map((id) => ({\n relationTo: activeRelationTo,\n value: id,\n }))\n\n const loadedDocs = await populateDocs(itemsToLoad)\n if (loadedDocs) {\n setPopulatedDocs((currentDocs) => [...(currentDocs || []), ...loadedDocs])\n }\n\n const newValues = selectedDocIDs.map((id) =>\n isPoly ? { relationTo: activeRelationTo, value: id } : id,\n )\n // Normalize existing values before merging\n const normalizedExisting = Array.isArray(value) ? value.map(normalizeValue) : []\n onChange([...normalizedExisting, ...newValues])\n closeListDrawer()\n },\n [activeRelationTo, closeListDrawer, onChange, populateDocs, value, relationTo, normalizeValue],\n )\n\n const onDocCreate = React.useCallback(\n (data) => {\n const isPoly = Array.isArray(relationTo)\n if (data.doc) {\n setPopulatedDocs((currentDocs) => [\n ...(currentDocs || []),\n {\n relationTo: activeRelationTo,\n value: data.doc,\n },\n ])\n\n const newValue = isPoly ? { relationTo: activeRelationTo, value: data.doc.id } : data.doc.id\n onChange(newValue)\n }\n closeCreateDocDrawer()\n },\n [closeCreateDocDrawer, activeRelationTo, onChange, relationTo],\n )\n\n const onListSelect = useCallback<NonNullable<ListDrawerProps['onSelect']>>(\n async ({ collectionSlug, doc }) => {\n const isPoly = Array.isArray(relationTo)\n\n const loadedDocs = await populateDocs([{ relationTo: collectionSlug, value: doc.id }])\n const selectedDoc = loadedDocs?.[0] || null\n\n setPopulatedDocs((currentDocs) => {\n if (selectedDoc) {\n if (hasMany) {\n return [...(currentDocs || []), selectedDoc]\n }\n return [selectedDoc]\n }\n return currentDocs\n })\n\n if (hasMany) {\n const newValue = isPoly ? { relationTo: collectionSlug, value: doc.id } : doc.id\n // Normalize existing values before merging\n const normalizedExisting = Array.isArray(value) ? value.map(normalizeValue) : []\n const valueToUse = [...normalizedExisting, newValue]\n onChange(valueToUse)\n } else {\n const valueToUse = isPoly ? { relationTo: collectionSlug, value: doc.id } : doc.id\n onChange(valueToUse)\n }\n closeListDrawer()\n },\n [closeListDrawer, hasMany, populateDocs, onChange, value, relationTo, normalizeValue],\n )\n\n const reloadDoc = React.useCallback<ReloadDoc>(\n async (docID, collectionSlug) => {\n const docs = await populateDocs([{ relationTo: collectionSlug, value: docID }])\n\n if (docs[0]) {\n let updatedDocsToPropogate = []\n setPopulatedDocs((currentDocs) => {\n const existingDocIndex = currentDocs?.findIndex((doc) => {\n const hasExisting = doc.value?.id === docs[0].value.id || doc.value?.isPlaceholder\n return hasExisting && doc.relationTo === collectionSlug\n })\n if (existingDocIndex > -1) {\n const updatedDocs = [...currentDocs]\n updatedDocs[existingDocIndex] = docs[0]\n updatedDocsToPropogate = updatedDocs\n return updatedDocs\n }\n return currentDocs\n })\n\n if (updatedDocsToPropogate.length && hasMany) {\n onChange(updatedDocsToPropogate.map((doc) => doc.value?.id))\n }\n }\n },\n [populateDocs, onChange, hasMany],\n )\n\n // only hasMany can reorder\n const onReorder = React.useCallback(\n (newValue) => {\n const isPoly = Array.isArray(relationTo)\n const newValueToSave = newValue.map(({ relationTo: rel, value }) =>\n isPoly ? { relationTo: rel, value: value.id } : value.id,\n )\n onChange(newValueToSave)\n setPopulatedDocs(newValue)\n },\n [onChange, relationTo],\n )\n\n const onRemove = React.useCallback(\n (newValue?: PopulatedDocs) => {\n const isPoly = Array.isArray(relationTo)\n\n if (!newValue || newValue.length === 0) {\n onChange(hasMany ? [] : null)\n setPopulatedDocs(hasMany ? [] : null)\n return\n }\n\n const newValueToSave = newValue.map(({ relationTo: rel, value }) =>\n isPoly ? { relationTo: rel, value: value.id } : value.id,\n )\n\n onChange(hasMany ? newValueToSave : newValueToSave[0])\n setPopulatedDocs(newValue)\n },\n [onChange, hasMany, relationTo],\n )\n\n useEffect(() => {\n async function loadInitialDocs() {\n if (value) {\n let itemsToLoad: ValueWithRelation[] = []\n if (\n Array.isArray(relationTo) &&\n ((typeof value === 'object' && 'relationTo' in value) ||\n (Array.isArray(value) &&\n value.length > 0 &&\n typeof value[0] === 'object' &&\n 'relationTo' in value[0]))\n ) {\n // For poly uploads, value should already be in the format { relationTo, value }\n const values = Array.isArray(value) ? value : [value]\n itemsToLoad = values\n .filter((v): v is ValueWithRelation => typeof v === 'object' && 'relationTo' in v)\n .map((v) => {\n // Ensure the value property is a simple ID, not nested\n let idValue: any = v.value\n while (\n idValue &&\n typeof idValue === 'object' &&\n idValue !== null &&\n 'value' in idValue\n ) {\n idValue = idValue.value\n }\n return {\n relationTo: v.relationTo,\n value: idValue as number | string,\n }\n })\n } else {\n // This check is here to satisfy TypeScript that relationTo is a string\n if (!Array.isArray(relationTo)) {\n // For single collection uploads, we need to wrap the IDs\n const ids = Array.isArray(value) ? value : [value]\n itemsToLoad = ids.map((id): ValueWithRelation => {\n // Extract the actual ID, handling nested objects\n let idValue: any = id\n while (\n idValue &&\n typeof idValue === 'object' &&\n idValue !== null &&\n 'value' in idValue\n ) {\n idValue = idValue.value\n }\n return {\n relationTo,\n value: idValue as number | string,\n }\n })\n }\n }\n\n if (itemsToLoad.length > 0) {\n const loadedDocs = await populateDocs(itemsToLoad)\n\n if (loadedDocs) {\n setPopulatedDocs(loadedDocs)\n loadedValueRef.current = value\n }\n }\n } else {\n // Clear populated docs when value is cleared\n setPopulatedDocs([])\n loadedValueRef.current = null\n }\n }\n\n // Only load if value has changed from what we last loaded\n const valueChanged = loadedValueRef.current !== value\n if (valueChanged) {\n void loadInitialDocs()\n }\n }, [populateDocs, value, relationTo])\n\n useEffect(() => {\n setOnSuccess(onUploadSuccess)\n }, [value, path, onUploadSuccess, setOnSuccess])\n\n const showDropzone =\n !value ||\n (hasMany && Array.isArray(value) && (typeof maxRows !== 'number' || value.length < maxRows)) ||\n (!hasMany && populatedDocs?.[0] && typeof populatedDocs[0].value === 'undefined')\n\n return (\n <div\n className={[\n fieldBaseClass,\n baseClass,\n className,\n showError && 'error',\n readOnly && 'read-only',\n ]\n .filter(Boolean)\n .join(' ')}\n id={`field-${path?.replace(/\\./g, '__')}`}\n style={style}\n >\n <RenderCustomComponent\n CustomComponent={Label}\n Fallback={\n <FieldLabel label={label} localized={localized} path={path} required={required} />\n }\n />\n <div className={`${baseClass}__wrap`}>\n <RenderCustomComponent\n CustomComponent={Error}\n Fallback={<FieldError path={path} showError={showError} />}\n />\n </div>\n {BeforeInput}\n <div className={`${baseClass}__dropzoneAndUpload`}>\n {hasMany && Array.isArray(value) && value.length > 0 ? (\n <>\n {populatedDocs && populatedDocs?.length > 0 ? (\n <UploadComponentHasMany\n displayPreview={displayPreview}\n fileDocs={populatedDocs}\n isSortable={isSortable && !readOnly}\n onRemove={onRemove}\n onReorder={onReorder}\n readonly={readOnly}\n reloadDoc={reloadDoc}\n serverURL={serverURL}\n showCollectionSlug={Array.isArray(relationTo)}\n />\n ) : (\n <div className={`${baseClass}__loadingRows`}>\n {value.map((id) => (\n <ShimmerEffect height=\"40px\" key={typeof id === 'object' ? id.value : id} />\n ))}\n </div>\n )}\n </>\n ) : null}\n {!hasMany && value ? (\n <>\n {populatedDocs && populatedDocs?.length > 0 && populatedDocs[0].value ? (\n <UploadComponentHasOne\n displayPreview={displayPreview}\n fileDoc={populatedDocs[0]}\n onRemove={onRemove}\n readonly={readOnly}\n reloadDoc={reloadDoc}\n serverURL={serverURL}\n showCollectionSlug={Array.isArray(relationTo)}\n />\n ) : populatedDocs && value && !populatedDocs?.[0]?.value ? (\n <>\n {t('general:untitled')} - ID: {value}\n </>\n ) : (\n <ShimmerEffect height=\"62px\" />\n )}\n </>\n ) : null}\n {showDropzone ? (\n <Dropzone\n disabled={readOnly || !canCreate}\n multipleFiles={hasMany}\n onChange={onLocalFileSelection}\n >\n <div className={`${baseClass}__dropzoneContent`}>\n <div className={`${baseClass}__dropzoneContent__buttons`}>\n {canCreate && (\n <>\n <Button\n buttonStyle=\"pill\"\n className={`${baseClass}__createNewToggler`}\n disabled={readOnly || !canCreate}\n onClick={() => {\n if (!readOnly) {\n if (hasMany) {\n onLocalFileSelection()\n } else {\n openCreateDocDrawer()\n }\n }\n }}\n size=\"small\"\n >\n {t('general:createNew')}\n </Button>\n <span className={`${baseClass}__dropzoneContent__orText`}>\n {t('general:or')}\n </span>\n </>\n )}\n <Button\n buttonStyle=\"pill\"\n className={`${baseClass}__listToggler`}\n disabled={readOnly}\n onClick={openListDrawer}\n size=\"small\"\n >\n {t('fields:chooseFromExisting')}\n </Button>\n <CreateDocDrawer onSave={onDocCreate} />\n <ListDrawer\n allowCreate={canCreate}\n enableRowSelections={hasMany}\n onBulkSelect={onListBulkSelect}\n onSelect={onListSelect}\n />\n </div>\n\n {canCreate && !readOnly && (\n <p className={`${baseClass}__dragAndDropText`}>\n {t('general:or')} {t('upload:dragAndDrop')}\n </p>\n )}\n </div>\n </Dropzone>\n ) : (\n <>\n {!readOnly &&\n !populatedDocs &&\n (!value ||\n typeof maxRows !== 'number' ||\n (Array.isArray(value) && value.length < maxRows)) ? (\n <ShimmerEffect height=\"40px\" />\n ) : null}\n </>\n )}\n </div>\n {AfterInput}\n <RenderCustomComponent\n CustomComponent={Description}\n Fallback={<FieldDescription description={description} path={path} />}\n />\n </div>\n )\n}\n", "/**\n * Normalizes relationship/upload field values by extracting IDs from nested objects\n * and returning them in the appropriate format based on whether the field is polymorphic.\n *\n * @param value - The value to normalize (can be a simple ID, or an object with relationTo and value)\n * @param relationTo - The relationTo config (string for monomorphic, array for polymorphic)\n * @returns The normalized value (simple ID for monomorphic, {relationTo, value} for polymorphic)\n *\n * @example\n * // Monomorphic field - returns simple ID\n * normalizeRelationshipValue('123', 'users') // '123'\n * normalizeRelationshipValue({ relationTo: 'users', value: '123' }, 'users') // '123'\n *\n * @example\n * // Polymorphic field - returns {relationTo, value}\n * normalizeRelationshipValue('123', ['users', 'posts']) // '123' (kept as-is, no relationTo to infer)\n * normalizeRelationshipValue({ relationTo: 'users', value: '123' }, ['users', 'posts'])\n * // { relationTo: 'users', value: '123' }\n *\n * @example\n * // Handles nested value objects (populated documents)\n * normalizeRelationshipValue(\n * { relationTo: 'users', value: { id: '123', name: 'John' } },\n * ['users', 'posts']\n * )\n * // { relationTo: 'users', value: '123' }\n */\nexport function normalizeRelationshipValue(value: any, relationTo: string | string[]): any {\n const isPoly = Array.isArray(relationTo)\n\n // If it's already a simple ID (string or number), return as-is for non-poly or wrap for poly\n if (typeof value === 'string' || typeof value === 'number') {\n return value\n }\n\n // If it's an object with relationTo and value\n if (value && typeof value === 'object' && 'relationTo' in value && 'value' in value) {\n // Extract the actual ID value, handling nested objects\n let idValue: any = value.value\n while (idValue && typeof idValue === 'object' && idValue !== null && 'value' in idValue) {\n idValue = idValue.value\n }\n\n // If the nested value is a populated document with an ID, extract it\n if (idValue && typeof idValue === 'object' && idValue !== null && 'id' in idValue) {\n idValue = idValue.id\n }\n\n // Return the normalized structure\n if (isPoly) {\n return { relationTo: value.relationTo, value: idValue }\n }\n return idValue\n }\n\n // If it's a populated document object (has id but no relationTo/value structure)\n if (value && typeof value === 'object' && 'id' in value) {\n return value.id\n }\n\n return value\n}\n", "'use client'\nimport type { JsonObject } from 'payload'\n\nimport React from 'react'\n\nimport { DraggableSortableItem } from '../../../elements/DraggableSortable/DraggableSortableItem/index.js'\nimport { DraggableSortable } from '../../../elements/DraggableSortable/index.js'\nimport { DragHandleIcon } from '../../../icons/DragHandle/index.js'\nimport { RelationshipContent } from '../RelationshipContent/index.js'\nimport { UploadCard } from '../UploadCard/index.js'\n\nconst baseClass = 'upload upload--has-many'\n\nimport { getBestFitFromSizes, isImage } from 'payload/shared'\n\nimport './index.scss'\n\nimport type { ReloadDoc } from '../types.js'\n\ntype Props = {\n readonly className?: string\n readonly displayPreview?: boolean\n readonly fileDocs: {\n relationTo: string\n value: JsonObject\n }[]\n readonly isSortable?: boolean\n readonly onRemove?: (value) => void\n readonly onReorder?: (value) => void\n readonly readonly?: boolean\n readonly reloadDoc: ReloadDoc\n readonly serverURL: string\n readonly showCollectionSlug?: boolean\n}\n\nexport function UploadComponentHasMany(props: Props) {\n const {\n className,\n displayPreview,\n fileDocs,\n isSortable,\n onRemove,\n onReorder,\n readonly,\n reloadDoc,\n serverURL,\n showCollectionSlug = false,\n } = props\n\n const moveRow = React.useCallback(\n (moveFromIndex: number, moveToIndex: number) => {\n if (moveFromIndex === moveToIndex) {\n return\n }\n\n const updatedArray = [...fileDocs]\n const [item] = updatedArray.splice(moveFromIndex, 1)\n\n updatedArray.splice(moveToIndex, 0, item)\n\n onReorder(updatedArray)\n },\n [fileDocs, onReorder],\n )\n\n const removeItem = React.useCallback(\n (index: number) => {\n const updatedArray = [...(fileDocs || [])]\n updatedArray.splice(index, 1)\n onRemove(updatedArray.length === 0 ? [] : updatedArray)\n },\n [fileDocs, onRemove],\n )\n\n return (\n <div className={[baseClass, className].filter(Boolean).join(' ')}>\n <DraggableSortable\n className={`${baseClass}__draggable-rows`}\n ids={fileDocs?.map(({ value }) => String(value.id))}\n onDragEnd={({ moveFromIndex, moveToIndex }) => moveRow(moveFromIndex, moveToIndex)}\n >\n {fileDocs.map(({ relationTo, value }, index) => {\n const id = String(value.id)\n let src: string\n let thumbnailSrc: string\n\n if (value.url) {\n try {\n src = new URL(value.url, serverURL).toString()\n } catch {\n src = `${serverURL}${value.url}`\n }\n }\n\n if (value.thumbnailURL) {\n try {\n thumbnailSrc = new URL(value.thumbnailURL, serverURL).toString()\n } catch {\n thumbnailSrc = `${serverURL}${value.thumbnailURL}`\n }\n }\n\n if (isImage(value.mimeType)) {\n thumbnailSrc = getBestFitFromSizes({\n sizes: value.sizes,\n thumbnailURL: thumbnailSrc,\n url: src,\n width: value.width,\n })\n }\n\n return (\n <DraggableSortableItem disabled={!isSortable || readonly} id={id} key={id}>\n {(draggableSortableItemProps) => (\n <div\n className={[\n `${baseClass}__dragItem`,\n draggableSortableItemProps && isSortable && `${baseClass}--has-drag-handle`,\n ]\n .filter(Boolean)\n .join(' ')}\n ref={draggableSortableItemProps.setNodeRef}\n style={{\n transform: draggableSortableItemProps.transform,\n transition: draggableSortableItemProps.transition,\n zIndex: draggableSortableItemProps.isDragging ? 1 : undefined,\n }}\n >\n <UploadCard size=\"small\">\n {draggableSortableItemProps && (\n <div\n className={`${baseClass}__drag`}\n {...draggableSortableItemProps.attributes}\n {...draggableSortableItemProps.listeners}\n >\n <DragHandleIcon />\n </div>\n )}\n\n <RelationshipContent\n allowEdit={!readonly}\n allowRemove={!readonly}\n alt={(value?.alt || value?.filename) as string}\n byteSize={value.filesize as number}\n collectionSlug={relationTo}\n displayPreview={displayPreview}\n filename={value.filename as string}\n id={id}\n mimeType={value?.mimeType as string}\n onRemove={() => removeItem(index)}\n reloadDoc={reloadDoc}\n showCollectionSlug={showCollectionSlug}\n src={src}\n thumbnailSrc={thumbnailSrc}\n updatedAt={value.updatedAt}\n withMeta={false}\n x={value?.width as number}\n y={value?.height as number}\n />\n </UploadCard>\n </div>\n )}\n </DraggableSortableItem>\n )\n })}\n </DraggableSortable>\n </div>\n )\n}\n", "'use client'\n\nimport type { TypeWithID } from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport { formatFilesize } from 'payload/shared'\nimport React from 'react'\n\nimport type { ReloadDoc } from '../types.js'\n\nimport { Button } from '../../../elements/Button/index.js'\nimport { useDocumentDrawer } from '../../../elements/DocumentDrawer/index.js'\nimport { Pill } from '../../../elements/Pill/index.js'\nimport { ThumbnailComponent } from '../../../elements/Thumbnail/index.js'\nimport './index.scss'\nimport { useConfig } from '../../../providers/Config/index.js'\nimport { useTranslation } from '../../../providers/Translation/index.js'\n\nconst baseClass = 'upload-relationship-details'\n\ntype Props = {\n readonly allowEdit?: boolean\n readonly allowRemove?: boolean\n readonly alt: string\n readonly byteSize: number\n readonly className?: string\n readonly collectionSlug: string\n readonly displayPreview?: boolean\n readonly filename: string\n readonly id?: number | string\n readonly mimeType: string\n readonly onRemove: () => void\n readonly reloadDoc: ReloadDoc\n readonly showCollectionSlug?: boolean\n readonly src: string\n readonly thumbnailSrc: string\n readonly updatedAt?: string\n readonly withMeta?: boolean\n readonly x?: number\n readonly y?: number\n}\nexport function RelationshipContent(props: Props) {\n const {\n id,\n allowEdit,\n allowRemove,\n alt,\n byteSize,\n className,\n collectionSlug,\n displayPreview,\n filename,\n mimeType,\n onRemove,\n reloadDoc,\n showCollectionSlug = false,\n src,\n thumbnailSrc,\n updatedAt,\n withMeta = true,\n x,\n y,\n } = props\n\n const { config } = useConfig()\n const { i18n } = useTranslation()\n const collectionConfig =\n 'collections' in config\n ? config.collections.find((collection) => collection.slug === collectionSlug)\n : undefined\n\n const [DocumentDrawer, _, { openDrawer }] = useDocumentDrawer({\n id: id ?? undefined,\n collectionSlug,\n })\n\n const onSave = React.useCallback(\n async ({ doc }: { doc: TypeWithID }) => reloadDoc(doc.id, collectionSlug),\n [reloadDoc, collectionSlug],\n )\n\n function generateMetaText(mimeType: string, size: number): string {\n const sections: string[] = []\n if (size) {\n sections.push(formatFilesize(size))\n }\n\n if (x && y) {\n sections.push(`${x}x${y}`)\n }\n\n if (mimeType) {\n sections.push(mimeType)\n }\n\n return sections.join(' — ')\n }\n\n const metaText = withMeta ? generateMetaText(mimeType, byteSize) : ''\n const previewAllowed = displayPreview ?? collectionConfig?.upload?.displayPreview ?? true\n\n return (\n <div className={[baseClass, className].filter(Boolean).join(' ')}>\n <div className={`${baseClass}__imageAndDetails`}>\n {previewAllowed && (\n <ThumbnailComponent\n alt={alt}\n className={`${baseClass}__thumbnail`}\n filename={filename}\n fileSrc={thumbnailSrc}\n imageCacheTag={collectionConfig?.upload?.cacheTags && updatedAt}\n size=\"small\"\n />\n )}\n {showCollectionSlug && collectionConfig ? (\n <Pill size=\"small\">{getTranslation(collectionConfig.labels.singular, i18n)}</Pill>\n ) : null}\n <div className={`${baseClass}__details`}>\n <p className={`${baseClass}__filename`}>\n {src ? (\n <a href={src} target=\"_blank\">\n {filename}\n </a>\n ) : (\n filename\n )}\n </p>\n {withMeta ? <p className={`${baseClass}__meta`}>{metaText}</p> : null}\n </div>\n </div>\n\n {allowEdit !== false || allowRemove !== false ? (\n <div className={`${baseClass}__actions`}>\n {allowEdit !== false ? (\n <Button\n buttonStyle=\"icon-label\"\n className={`${baseClass}__edit`}\n icon=\"edit\"\n iconStyle=\"none\"\n onClick={openDrawer}\n />\n ) : null}\n {allowRemove !== false ? (\n <Button\n buttonStyle=\"icon-label\"\n className={`${baseClass}__remove`}\n icon=\"x\"\n iconStyle=\"none\"\n onClick={() => onRemove()}\n />\n ) : null}\n <DocumentDrawer onSave={onSave} />\n </div>\n ) : null}\n </div>\n )\n}\n", "import React from 'react'\n\nimport './index.scss'\n\nconst baseClass = 'upload-field-card'\n\ntype Props = {\n readonly children: React.ReactNode\n readonly className?: string\n readonly size?: 'medium' | 'small'\n}\nexport function UploadCard({ children, className, size = 'medium' }: Props) {\n return (\n <div className={[baseClass, className, `${baseClass}--size-${size}`].filter(Boolean).join(' ')}>\n {children}\n </div>\n )\n}\n", "'use client'\n\nimport type { JsonObject } from 'payload'\n\nimport { getBestFitFromSizes, isImage } from 'payload/shared'\nimport React from 'react'\n\nimport type { ReloadDoc } from '../types.js'\n\nimport './index.scss'\nimport { RelationshipContent } from '../RelationshipContent/index.js'\nimport { UploadCard } from '../UploadCard/index.js'\n\nconst baseClass = 'upload upload--has-one'\n\ntype Props = {\n readonly className?: string\n readonly displayPreview?: boolean\n readonly fileDoc: {\n relationTo: string\n value: JsonObject\n }\n readonly onRemove?: () => void\n readonly readonly?: boolean\n readonly reloadDoc: ReloadDoc\n readonly serverURL: string\n readonly showCollectionSlug?: boolean\n}\n\nexport function UploadComponentHasOne(props: Props) {\n const {\n className,\n displayPreview,\n fileDoc,\n onRemove,\n readonly,\n reloadDoc,\n serverURL,\n showCollectionSlug = false,\n } = props\n const { relationTo, value } = fileDoc\n const id = String(value?.id)\n\n let src: string\n let thumbnailSrc: string\n\n if (value.url) {\n try {\n src = new URL(value.url, serverURL).toString()\n } catch {\n src = `${serverURL}${value.url}`\n }\n }\n\n if (value.thumbnailURL) {\n try {\n thumbnailSrc = new URL(value.thumbnailURL, serverURL).toString()\n } catch {\n thumbnailSrc = `${serverURL}${value.thumbnailURL}`\n }\n }\n\n if (isImage(value.mimeType)) {\n thumbnailSrc = getBestFitFromSizes({\n sizes: value.sizes,\n thumbnailURL: thumbnailSrc,\n url: src,\n width: value.width,\n })\n }\n\n return (\n <UploadCard className={[baseClass, className].filter(Boolean).join(' ')}>\n <RelationshipContent\n allowEdit={!readonly}\n allowRemove={!readonly}\n alt={(value?.alt || value?.filename) as string}\n byteSize={value.filesize as number}\n collectionSlug={relationTo}\n displayPreview={displayPreview}\n filename={value.filename as string}\n id={id}\n mimeType={value?.mimeType as string}\n onRemove={onRemove}\n reloadDoc={reloadDoc}\n showCollectionSlug={showCollectionSlug}\n src={src}\n thumbnailSrc={thumbnailSrc}\n updatedAt={value.updatedAt}\n x={value?.width as number}\n y={value?.height as number}\n />\n </UploadCard>\n )\n}\n", "'use client'\n\nimport { confirmPassword } from 'payload/shared'\nimport React from 'react'\n\nimport { useField } from '../../forms/useField/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { FieldError } from '../FieldError/index.js'\nimport { FieldLabel } from '../FieldLabel/index.js'\nimport { fieldBaseClass } from '../shared/index.js'\nimport './index.scss'\n\nexport type ConfirmPasswordFieldProps = {\n readonly disabled?: boolean\n readonly path?: string\n}\n\nexport const ConfirmPasswordField: React.FC<ConfirmPasswordFieldProps> = (props) => {\n const { disabled: disabledFromProps, path = 'confirm-password' } = props\n const { t } = useTranslation()\n\n const { disabled, setValue, showError, value } = useField({\n path,\n validate: (value, options) => {\n return confirmPassword(value, {\n name: 'confirm-password',\n type: 'text',\n required: true,\n ...options,\n })\n },\n })\n\n return (\n <div\n className={[fieldBaseClass, 'confirm-password', showError && 'error']\n .filter(Boolean)\n .join(' ')}\n >\n <FieldLabel\n htmlFor=\"field-confirm-password\"\n label={t('authentication:confirmPassword')}\n required\n />\n <div className={`${fieldBaseClass}__wrap`}>\n <FieldError path={path} />\n <input\n aria-label={t('authentication:confirmPassword')}\n autoComplete=\"off\"\n disabled={!!(disabled || disabledFromProps)}\n id=\"field-confirm-password\"\n name=\"confirm-password\"\n onChange={setValue}\n type=\"password\"\n value={(value as string) || ''}\n />\n </div>\n </div>\n )\n}\n", "'use client'\nimport type { PasswordFieldValidation, PayloadRequest } from 'payload'\n\nimport { password } from 'payload/shared'\nimport React, { useCallback, useMemo } from 'react'\n\nimport type { PasswordFieldProps } from './types.js'\n\nimport { useField } from '../../forms/useField/index.js'\nimport { withCondition } from '../../forms/withCondition/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useLocale } from '../../providers/Locale/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { mergeFieldStyles } from '../mergeFieldStyles.js'\nimport './index.scss'\nimport { isFieldRTL } from '../shared/index.js'\nimport { PasswordInput } from './input.js'\n\nconst PasswordFieldComponent: React.FC<PasswordFieldProps> = (props) => {\n const {\n autoComplete,\n field,\n field: {\n admin: {\n className,\n disabled: disabledFromProps,\n placeholder,\n rtl,\n } = {} as PasswordFieldProps['field']['admin'],\n label,\n localized,\n required,\n } = {} as PasswordFieldProps['field'],\n inputRef,\n path,\n validate,\n } = props\n\n const { t } = useTranslation()\n const locale = useLocale()\n const { config } = useConfig()\n\n const memoizedValidate: PasswordFieldValidation = useCallback(\n (value, options) => {\n const pathSegments = path ? path.split('.') : []\n\n if (typeof validate === 'function') {\n return validate(value, { ...options, required })\n }\n\n return password(value, {\n name: 'password',\n type: 'text',\n blockData: {},\n data: {},\n event: 'onChange',\n path: pathSegments,\n preferences: { fields: {} },\n req: {\n payload: {\n config,\n },\n t,\n } as unknown as PayloadRequest,\n required: true,\n siblingData: {},\n })\n },\n [validate, config, t, required, path],\n )\n\n const {\n customComponents: { AfterInput, BeforeInput, Description, Error, Label } = {},\n disabled,\n setValue,\n showError,\n value,\n } = useField({\n path,\n validate: memoizedValidate,\n })\n\n const renderRTL = isFieldRTL({\n fieldLocalized: false,\n fieldRTL: rtl,\n locale,\n localizationConfig: config.localization || undefined,\n })\n\n const styles = useMemo(() => mergeFieldStyles(field), [field])\n\n return (\n <PasswordInput\n AfterInput={AfterInput}\n autoComplete={autoComplete}\n BeforeInput={BeforeInput}\n className={className}\n Description={Description}\n Error={Error}\n inputRef={inputRef}\n Label={Label}\n label={label}\n localized={localized}\n onChange={(e) => {\n setValue(e.target.value)\n }}\n path={path}\n placeholder={placeholder}\n readOnly={disabled || disabledFromProps}\n required={required}\n rtl={renderRTL}\n showError={showError}\n style={styles}\n value={(value as string) || ''}\n />\n )\n}\n\nexport const PasswordField = withCondition(PasswordFieldComponent)\n", "'use client'\nimport type { ChangeEvent } from 'react'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport React from 'react'\n\nimport type { PasswordInputProps } from './types.js'\n\nimport { RenderCustomComponent } from '../../elements/RenderCustomComponent/index.js'\nimport { FieldDescription } from '../../fields/FieldDescription/index.js'\nimport { FieldError } from '../../fields/FieldError/index.js'\nimport { FieldLabel } from '../../fields/FieldLabel/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { fieldBaseClass } from '../shared/index.js'\nimport './index.scss'\n\nexport const PasswordInput: React.FC<PasswordInputProps> = (props) => {\n const {\n AfterInput,\n autoComplete = 'off',\n BeforeInput,\n className,\n description,\n Description,\n Error,\n inputRef,\n Label,\n label,\n localized,\n onChange,\n onKeyDown,\n path,\n placeholder,\n readOnly,\n required,\n rtl,\n showError,\n style,\n value,\n width,\n } = props\n\n const { i18n } = useTranslation()\n\n return (\n <div\n className={[\n fieldBaseClass,\n 'password',\n className,\n showError && 'error',\n readOnly && 'read-only',\n ]\n .filter(Boolean)\n .join(' ')}\n style={{\n ...style,\n width,\n }}\n >\n <RenderCustomComponent\n CustomComponent={Label}\n Fallback={\n <FieldLabel label={label} localized={localized} path={path} required={required} />\n }\n />\n <div className={`${fieldBaseClass}__wrap`}>\n <RenderCustomComponent\n CustomComponent={Error}\n Fallback={<FieldError path={path} showError={showError} />}\n />\n <div>\n {BeforeInput}\n <input\n aria-label={getTranslation(label, i18n)}\n autoComplete={autoComplete}\n data-rtl={rtl}\n disabled={readOnly}\n id={`field-${path.replace(/\\./g, '__')}`}\n name={path}\n onChange={onChange as (e: ChangeEvent<HTMLInputElement>) => void}\n onKeyDown={onKeyDown}\n placeholder={getTranslation(placeholder, i18n)}\n ref={inputRef}\n type=\"password\"\n value={value || ''}\n />\n {AfterInput}\n </div>\n <RenderCustomComponent\n CustomComponent={Description}\n Fallback={<FieldDescription description={description} path={path} />}\n />\n </div>\n </div>\n )\n}\n", "'use client'\nimport type {\n ClientFieldBase,\n FieldTypes,\n GenericDescriptionProps,\n GenericErrorProps,\n GenericLabelProps,\n HiddenFieldProps,\n} from 'payload'\nimport type React from 'react'\n\nimport type { ConfirmPasswordFieldProps } from './ConfirmPassword/index.js'\n\nimport { RowLabel } from '../forms/RowLabel/index.js'\nimport { ArrayField } from './Array/index.js'\nimport { BlocksField } from './Blocks/index.js'\nimport { CheckboxField } from './Checkbox/index.js'\nimport { CodeField } from './Code/index.js'\nimport { CollapsibleField } from './Collapsible/index.js'\nimport { ConfirmPasswordField } from './ConfirmPassword/index.js'\nimport { DateTimeField } from './DateTime/index.js'\nimport { EmailField } from './Email/index.js'\nimport { FieldDescription } from './FieldDescription/index.js'\nimport { FieldError } from './FieldError/index.js'\nimport { FieldLabel } from './FieldLabel/index.js'\nimport { GroupField } from './Group/index.js'\nimport { HiddenField } from './Hidden/index.js'\nimport { JoinField } from './Join/index.js'\nimport { JSONField } from './JSON/index.js'\nimport { NumberField } from './Number/index.js'\nimport { PasswordField } from './Password/index.js'\nimport { PointField } from './Point/index.js'\nimport { RadioGroupField } from './RadioGroup/index.js'\nimport { RelationshipField } from './Relationship/index.js'\nimport { RichTextField } from './RichText/index.js'\nimport { RowField } from './Row/index.js'\nimport { SelectField } from './Select/index.js'\nimport { TabsField } from './Tabs/index.js'\nimport { TextField } from './Text/index.js'\nimport { TextareaField } from './Textarea/index.js'\nimport { UIField } from './UI/index.js'\nimport { UploadField } from './Upload/index.js'\n\nexport * from './shared/index.js'\n\nexport type FieldTypesComponents = {\n [K in 'password' | FieldTypes]: React.FC<ClientFieldBase>\n} & {\n confirmPassword: React.FC<ConfirmPasswordFieldProps>\n hidden: React.FC<HiddenFieldProps>\n}\n\nexport const fieldComponents: FieldTypesComponents = {\n array: ArrayField,\n blocks: BlocksField,\n checkbox: CheckboxField,\n code: CodeField,\n collapsible: CollapsibleField,\n confirmPassword: ConfirmPasswordField,\n date: DateTimeField,\n email: EmailField,\n group: GroupField,\n hidden: HiddenField,\n join: JoinField,\n json: JSONField,\n number: NumberField,\n password: PasswordField,\n point: PointField,\n radio: RadioGroupField,\n relationship: RelationshipField,\n richText: RichTextField,\n row: RowField,\n select: SelectField,\n tabs: TabsField,\n text: TextField,\n textarea: TextareaField,\n ui: UIField,\n upload: UploadField,\n}\n\nexport type FieldComponentsWithSlots = {\n Description: React.FC<GenericDescriptionProps>\n Error: React.FC<GenericErrorProps>\n Label: React.FC<GenericLabelProps>\n RowLabel: React.FC\n} & FieldTypesComponents\n\nexport const allFieldComponents: FieldComponentsWithSlots = {\n ...fieldComponents,\n Description: FieldDescription,\n Error: FieldError,\n Label: FieldLabel,\n RowLabel,\n}\n", "'use client'\n\nimport { useModal } from '@faceless-ui/modal'\nimport { setsAreEqual } from 'payload/shared'\nimport { useCallback, useEffect } from 'react'\n\n// Required to be outside of hook, else debounce would be necessary\n// and then one could not prevent the default behaviour.\n\n// It maps the pressed keys with the time they were pressed, in order to implement a maximum time\n// for the user to press the next key in the sequence\n\n// This is necessary to prevent a bug where the keyup event, which unsets the key as pressed\n// is not fired when the window is not focused.\n// When the user then comes back to the window, the key is still registered as pressed, even though it's not.\nconst pressedKeys = new Map<string, number>([])\n\nconst map = {\n altleft: 'alt',\n altright: 'alt',\n controlleft: 'ctrl',\n controlright: 'ctrl',\n ctrlleft: 'ctrl',\n ctrlright: 'ctrl',\n escape: 'esc',\n metaleft: 'meta',\n metaright: 'meta',\n osleft: 'meta',\n osright: 'meta',\n shiftleft: 'shift',\n shiftright: 'shift',\n}\n\nconst stripKey = (key: string) => {\n return (map[key.toLowerCase()] || key).trim().toLowerCase().replace('key', '')\n}\n\nconst pushToKeys = (code: string) => {\n const key = stripKey(code)\n\n // There is a weird bug with macos that if the keys are not cleared they remain in the\n // pressed keys set.\n if (key === 'meta') {\n pressedKeys.forEach(\n (time, pressedKey) => pressedKey !== 'meta' && pressedKeys.delete(pressedKey),\n )\n }\n\n pressedKeys.set(key, Date.now())\n}\n\nconst removeFromKeys = (code: string) => {\n const key = stripKey(code)\n // There is a weird bug with macos that if the keys are not cleared they remain in the\n // pressed keys set.\n if (key === 'meta') {\n pressedKeys.clear()\n }\n pressedKeys.delete(key)\n}\n\n/**\n * Hook function to work with hotkeys.\n * @param param0.keyCode {string[]} The keys to listen for (`Event.code` without `'Key'` and lowercased)\n * @param param0.cmdCtrlKey {boolean} Whether Ctrl on windows or Cmd on mac must be pressed\n * @param param0.editDepth {boolean} This ensures that the hotkey is only triggered for the most top-level drawer in case there are nested drawers\n * @param func The callback function\n */\nexport const useHotkey = (\n options: {\n cmdCtrlKey: boolean\n editDepth: number\n keyCodes: string[]\n },\n func: (e: KeyboardEvent) => void,\n): void => {\n const { cmdCtrlKey, editDepth, keyCodes } = options\n\n const { modalState } = useModal()\n\n const keydown = useCallback(\n (event: CustomEvent | KeyboardEvent) => {\n const e: KeyboardEvent = event.detail?.key ? event.detail : event\n if (e.key === undefined) {\n // Autofill events, or other synthetic events, can be ignored\n return\n }\n\n // Filter out pressed keys which have been pressed > 3 seconds ago\n pressedKeys.forEach((time, key) => {\n if (Date.now() - time > 3000) {\n pressedKeys.delete(key)\n }\n })\n\n if (e.code) {\n pushToKeys(e.code)\n }\n\n // Check for Mac and iPad\n const hasCmd = window.navigator.userAgent.includes('Mac OS X')\n const pressedWithoutModifier = [...pressedKeys.keys()].filter(\n (key) => !['alt', 'ctrl', 'meta', 'shift'].includes(key),\n )\n\n // Check whether arrays contain the same values (regardless of number of occurrences)\n if (\n setsAreEqual(new Set(pressedWithoutModifier), new Set(keyCodes)) &&\n (!cmdCtrlKey || (hasCmd && pressedKeys.has('meta')) || (!hasCmd && e.ctrlKey))\n ) {\n // get the maximum edit depth by counting the number of open drawers. modalState is and object which contains the state of all drawers.\n const maxEditDepth =\n Object.keys(modalState).filter((key) => modalState[key]?.isOpen)?.length + 1 || 1\n\n if (maxEditDepth !== editDepth) {\n // We only want to execute the hotkey from the most top-level drawer / edit depth.\n return\n }\n // execute the function associated with the maximum edit depth\n func(e)\n }\n },\n [keyCodes, cmdCtrlKey, editDepth, modalState, func],\n )\n\n const keyup = useCallback((e: KeyboardEvent) => {\n if (e.code) {\n removeFromKeys(e.code)\n }\n }, [])\n\n useEffect(() => {\n document.addEventListener('keydown', keydown, false)\n document.addEventListener('bypassKeyDown', keydown, false) // this is called if the keydown event's propagation is stopped by react-select\n document.addEventListener('keyup', keyup, false)\n\n return () => {\n document.removeEventListener('keydown', keydown)\n document.removeEventListener('bypassKeyDown', keydown)\n document.removeEventListener('keyup', keyup)\n }\n }, [keydown, keyup])\n}\n", "'use client'\nimport type React from 'react'\n\nimport * as qs from 'qs-esm'\nimport { useEffect, useRef, useState } from 'react'\n\nimport { useLocale } from '../providers/Locale/index.js'\nimport { useTranslation } from '../providers/Translation/index.js'\nimport { requests } from '../utilities/api.js'\n\ntype Result = [\n {\n data: any\n isError: boolean\n isLoading: boolean\n },\n {\n setParams: React.Dispatch<unknown>\n },\n]\n\ntype Options = {\n initialData?: any\n initialParams?: unknown\n}\n\ntype UsePayloadAPI = (url: string, options?: Options) => Result\n\nexport const usePayloadAPI: UsePayloadAPI = (url, options = {}) => {\n const { initialData, initialParams = {} } = options\n\n const { i18n } = useTranslation()\n const [data, setData] = useState(initialData || {})\n const [params, setParams] = useState(initialParams)\n const [isLoading, setIsLoading] = useState(!initialData)\n const [isError, setIsError] = useState(false)\n const { code: locale } = useLocale()\n const hasInitialized = useRef(false)\n\n const search = qs.stringify(\n {\n locale,\n ...(typeof params === 'object' ? params : {}),\n },\n {\n addQueryPrefix: true,\n },\n )\n\n // If `initialData`, no need to make a request\n useEffect(() => {\n if (initialData && !hasInitialized.current) {\n hasInitialized.current = true\n return\n }\n\n const abortController = new AbortController()\n\n const fetchData = async () => {\n setIsError(false)\n setIsLoading(true)\n\n try {\n const response = await requests.get(`${url}${search}`, {\n headers: {\n 'Accept-Language': i18n.language,\n },\n signal: abortController.signal,\n })\n\n if (response.status > 201) {\n setIsError(true)\n }\n\n const json = await response.json()\n\n setData(json)\n setIsLoading(false)\n } catch (error) {\n if (!abortController.signal.aborted) {\n setIsError(true)\n setIsLoading(false)\n }\n }\n }\n\n if (url) {\n void fetchData()\n } else {\n setIsError(false)\n setIsLoading(false)\n }\n\n return () => {\n try {\n abortController.abort()\n } catch (_err) {\n // swallow error\n }\n }\n }, [url, locale, search, i18n.language, initialData])\n\n // If `initialData` changes, reset the state\n useEffect(() => {\n if (initialData && hasInitialized.current) {\n setData(initialData)\n }\n }, [initialData])\n\n return [{ data, isError, isLoading }, { setParams }]\n}\n", "'use client'\n\nimport { useEffect, useState } from 'react'\n\ninterface Size {\n height: number\n width: number\n}\n\ninterface Resize {\n size?: Size\n}\n\nexport const useResize = (element: HTMLElement): Resize => {\n const [size, setSize] = useState<Size>()\n\n useEffect(() => {\n let observer: any // eslint-disable-line\n\n if (element) {\n observer = new ResizeObserver((entries) => {\n entries.forEach((entry) => {\n const {\n contentBoxSize,\n contentRect, // for Safari iOS compatibility, will be deprecated eventually (see https://developer.mozilla.org/en-US/docs/Web/API/ResizeObserverEntry/contentRect)\n } = entry\n\n let newWidth = 0\n let newHeight = 0\n\n if (contentBoxSize) {\n const newSize = Array.isArray(contentBoxSize) ? contentBoxSize[0] : contentBoxSize\n\n if (newSize) {\n const { blockSize, inlineSize } = newSize\n newWidth = inlineSize\n newHeight = blockSize\n }\n } else if (contentRect) {\n // see note above for why this block is needed\n const { height, width } = contentRect\n newWidth = width\n newHeight = height\n }\n\n setSize({\n height: newHeight,\n width: newWidth,\n })\n })\n })\n\n observer.observe(element)\n }\n\n return () => {\n if (observer) {\n observer.unobserve(element)\n }\n }\n }, [element])\n\n return {\n size,\n }\n}\n", "'use client'\nimport type { ClientCollectionConfig, ClientField } from 'payload'\n\nimport { flattenTopLevelFields } from 'payload/shared'\n\nimport { useTranslation } from '../providers/Translation/index.js'\n\nexport const useUseTitleField = (collection: ClientCollectionConfig): ClientField => {\n const {\n admin: { useAsTitle },\n fields,\n } = collection\n\n const { i18n } = useTranslation()\n\n const topLevelFields = flattenTopLevelFields(fields, {\n i18n,\n moveSubFieldsToTop: true,\n }) as ClientField[]\n\n return topLevelFields?.find((field) => 'name' in field && field.name === useAsTitle)\n}\n", "'use client'\n\nimport React from 'react'\n\nimport { SortDownIcon } from '../../icons/Sort/index.js'\nimport { useListQuery } from '../../providers/ListQuery/index.js'\nimport './index.scss'\nimport { useTranslation } from '../../providers/Translation/index.js'\n\nexport type SortHeaderProps = {\n readonly appearance?: 'condensed' | 'default'\n readonly disable?: boolean\n}\n\nconst baseClass = 'sort-header'\n\nfunction useSort() {\n const { handleSortChange, orderableFieldName, query } = useListQuery()\n const querySort = Array.isArray(query.sort) ? query.sort[0] : query.sort\n const isActive = querySort === orderableFieldName\n\n const handleSortPress = () => {\n // If it's already sorted by the \"_order\" field, do nothing\n if (isActive) {\n return\n }\n // If NOT sorted by the \"_order\" field, sort by that field.\n void handleSortChange(orderableFieldName)\n }\n\n return { handleSortPress, isActive }\n}\n\nexport const SortHeader: React.FC<SortHeaderProps> = (props) => {\n const { appearance } = props\n const { handleSortPress, isActive } = useSort()\n const { t } = useTranslation()\n\n return (\n <div\n className={[baseClass, appearance && `${baseClass}--appearance-${appearance}`]\n .filter(Boolean)\n .join(' ')}\n >\n <div className={`${baseClass}__buttons`}>\n <button\n aria-label={t('general:sortByLabelDirection', {\n direction: t('general:ascending'),\n label: 'Order',\n })}\n className={`${baseClass}__button ${isActive ? `${baseClass}--active` : ''}`}\n onClick={handleSortPress}\n type=\"button\"\n >\n <SortDownIcon />\n </button>\n </div>\n </div>\n )\n}\n", "import React from 'react'\n\nimport './index.scss'\n\nexport const SortDownIcon: React.FC<{ className?: string }> = ({ className }) => (\n <svg\n className=\"icon icon--sort\"\n fill=\"none\"\n height=\"20\"\n viewBox=\"0 0 20 20\"\n width=\"20\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n className=\"fill\"\n d=\"M2.5 13.3333L5.83333 16.6667M5.83333 16.6667L9.16667 13.3333M5.83333 16.6667V3.33333M9.16667 7.08333H17.5M9.16667 10.4167H15M11.6667 13.75H12.5\"\n stroke=\"#2F2F2F\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n)\n\nexport const SortUpIcon: React.FC<{ className?: string }> = ({ className }) => (\n <svg\n className=\"icon icon--sort\"\n fill=\"none\"\n height=\"20\"\n viewBox=\"0 0 20 20\"\n width=\"20\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n className=\"fill\"\n d=\"M2.5 6.66668L5.83333 3.33334M5.83333 3.33334L9.16667 6.66668M5.83333 3.33334V16.6667M11.6667 7.08354H17.5M9.16667 10.4169H15M9.16667 13.7502H12.5\"\n stroke=\"#2F2F2F\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n)\n", "'use client'\n\nimport React from 'react'\n\nimport { DragHandleIcon } from '../../icons/DragHandle/index.js'\nimport './index.scss'\nimport { useListQuery } from '../../providers/ListQuery/index.js'\n\nconst baseClass = 'sort-row'\n\nexport const SortRow = () => {\n const { orderableFieldName, query } = useListQuery()\n const isActive = query.sort === orderableFieldName || query.sort === `-${orderableFieldName}`\n\n return (\n <div className={`${baseClass} ${isActive ? 'active' : ''}`} role=\"button\" tabIndex={0}>\n <DragHandleIcon className={`${baseClass}__icon`} />\n </div>\n )\n}\n", "'use client'\n\nimport type { ClientCollectionConfig, Column, OrderableEndpointBody } from 'payload'\n\nimport './index.scss'\n\nimport { DragOverlay } from '@dnd-kit/core'\nimport { formatAdminURL } from 'payload/shared'\nimport React, { useEffect, useState } from 'react'\nimport { toast } from 'sonner'\n\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useListQuery } from '../../providers/ListQuery/index.js'\nimport { useLocale } from '../../providers/Locale/index.js'\nimport { DraggableSortableItem } from '../DraggableSortable/DraggableSortableItem/index.js'\nimport { DraggableSortable } from '../DraggableSortable/index.js'\nimport { OrderableRow } from './OrderableRow.js'\nimport { OrderableRowDragPreview } from './OrderableRowDragPreview.js'\n\nconst baseClass = 'table'\n\nexport type Props = {\n readonly appearance?: 'condensed' | 'default'\n readonly BeforeTable?: React.ReactNode\n readonly collection: ClientCollectionConfig\n readonly columns?: Column[]\n readonly data: Record<string, unknown>[]\n readonly heading?: React.ReactNode\n}\n\nexport const OrderableTable: React.FC<Props> = ({\n appearance = 'default',\n BeforeTable,\n collection,\n columns,\n data: initialData,\n}) => {\n const { config } = useConfig()\n const { data: listQueryData, orderableFieldName, query } = useListQuery()\n const { code: localeCode } = useLocale()\n // Use the data from ListQueryProvider if available, otherwise use the props\n const serverData = listQueryData?.docs || initialData\n\n // Local state to track the current order of rows\n const [localData, setLocalData] = useState(serverData)\n\n // id -> index for each column\n const [cellMap, setCellMap] = useState<Record<string, number>>({})\n\n const [dragActiveRowId, setDragActiveRowId] = useState<number | string | undefined>()\n\n // Update local data when server data changes\n useEffect(() => {\n setLocalData(serverData)\n setCellMap(\n Object.fromEntries(serverData.map((item, index) => [String(item.id ?? item._id), index])),\n )\n }, [serverData])\n\n const activeColumns = columns?.filter((col) => col?.active)\n\n if (\n !activeColumns ||\n activeColumns.filter((col) => !['_dragHandle', '_select'].includes(col.accessor)).length === 0\n ) {\n return <div>No columns selected</div>\n }\n\n const handleDragEnd = async ({ moveFromIndex, moveToIndex }) => {\n if (query.sort !== orderableFieldName && query.sort !== `-${orderableFieldName}`) {\n toast.warning('To reorder the rows you must first sort them by the \"Order\" column')\n setDragActiveRowId(undefined)\n return\n }\n\n if (moveFromIndex === moveToIndex) {\n setDragActiveRowId(undefined)\n return\n }\n\n const movedId = localData[moveFromIndex].id ?? localData[moveFromIndex]._id\n const newBeforeRow =\n moveToIndex > moveFromIndex ? localData[moveToIndex] : localData[moveToIndex - 1]\n const newAfterRow =\n moveToIndex > moveFromIndex ? localData[moveToIndex + 1] : localData[moveToIndex]\n\n // Store the original data for rollback\n const previousData = [...localData]\n\n // Optimisitc update of local state to reorder the rows\n setLocalData((currentData) => {\n const newData = [...currentData]\n // Update the rendered cell for the moved row to show \"pending\"\n newData[moveFromIndex][orderableFieldName] = `pending`\n // Move the item in the array\n newData.splice(moveToIndex, 0, newData.splice(moveFromIndex, 1)[0])\n return newData\n })\n\n try {\n const target: OrderableEndpointBody['target'] = newBeforeRow\n ? {\n id: newBeforeRow.id ?? newBeforeRow._id,\n key: newBeforeRow[orderableFieldName],\n }\n : {\n id: newAfterRow.id ?? newAfterRow._id,\n key: newAfterRow[orderableFieldName],\n }\n\n const newKeyWillBe =\n (newBeforeRow && query.sort === orderableFieldName) ||\n (!newBeforeRow && query.sort === `-${orderableFieldName}`)\n ? 'greater'\n : 'less'\n\n const jsonBody: OrderableEndpointBody = {\n collectionSlug: collection.slug,\n docsToMove: [movedId],\n newKeyWillBe,\n orderableFieldName,\n target,\n }\n\n const response = await fetch(\n formatAdminURL({\n apiRoute: config.routes.api,\n path: `/reorder?locale=${localeCode}`,\n }),\n {\n body: JSON.stringify(jsonBody),\n credentials: 'include',\n headers: {\n 'Content-Type': 'application/json',\n },\n method: 'POST',\n },\n )\n\n if (response.status === 403) {\n throw new Error('You do not have permission to reorder these rows')\n }\n\n if (!response.ok) {\n throw new Error(\n 'Failed to reorder. This can happen if you reorder several rows too quickly. Please try again.',\n )\n }\n\n if (response.status === 200 && (await response.json())['message'] === 'initial migration') {\n throw new Error(\n 'You have enabled \"orderable\" on a collection with existing documents' +\n 'and this is the first time you have sorted documents. We have run an automatic migration ' +\n 'to add an initial order to the documents. Please refresh the page and try again.',\n )\n }\n } catch (err) {\n const error = err instanceof Error ? err.message : String(err)\n // Rollback to previous state if the request fails\n setLocalData(previousData)\n toast.error(error)\n } finally {\n setDragActiveRowId(undefined)\n }\n }\n\n const handleDragStart = ({ id }) => {\n setDragActiveRowId(id)\n }\n\n const rowIds = localData.map((row) => row.id ?? row._id)\n\n return (\n <div\n className={[baseClass, appearance && `${baseClass}--appearance-${appearance}`]\n .filter(Boolean)\n .join(' ')}\n >\n {BeforeTable}\n <DraggableSortable ids={rowIds} onDragEnd={handleDragEnd} onDragStart={handleDragStart}>\n <table cellPadding=\"0\" cellSpacing=\"0\">\n <thead>\n <tr>\n {activeColumns.map((col, i) => (\n <th id={`heading-${col.accessor}`} key={i}>\n {col.Heading}\n </th>\n ))}\n </tr>\n </thead>\n <tbody>\n {localData.map((row, rowIndex) => (\n <DraggableSortableItem id={rowIds[rowIndex]} key={rowIds[rowIndex]}>\n {({ attributes, isDragging, listeners, setNodeRef, transform, transition }) => (\n <OrderableRow\n cellMap={cellMap}\n className={`row-${rowIndex + 1}`}\n columns={activeColumns}\n dragAttributes={attributes}\n dragListeners={listeners}\n ref={setNodeRef}\n rowId={row.id ?? row._id}\n style={{\n opacity: isDragging ? 0 : 1,\n transform,\n transition,\n }}\n />\n )}\n </DraggableSortableItem>\n ))}\n </tbody>\n </table>\n\n <DragOverlay>\n <OrderableRowDragPreview\n className={[baseClass, `${baseClass}--drag-preview`].join(' ')}\n rowId={dragActiveRowId}\n >\n <OrderableRow cellMap={cellMap} columns={activeColumns} rowId={dragActiveRowId} />\n </OrderableRowDragPreview>\n </DragOverlay>\n </DraggableSortable>\n </div>\n )\n}\n", "import type { DraggableSyntheticListeners } from '@dnd-kit/core'\nimport type { Column } from 'payload'\nimport type { HTMLAttributes, Ref } from 'react'\n\nexport type Props = {\n readonly cellMap: Record<string, number>\n readonly columns: Column[]\n readonly dragAttributes?: HTMLAttributes<unknown>\n readonly dragListeners?: DraggableSyntheticListeners\n readonly ref?: Ref<HTMLTableRowElement>\n readonly rowId: number | string\n} & HTMLAttributes<HTMLTableRowElement>\n\nexport const OrderableRow = ({\n cellMap,\n columns,\n dragAttributes = {},\n dragListeners = {},\n rowId,\n ...rest\n}: Props) => (\n <tr {...rest}>\n {columns.map((col, colIndex) => {\n const { accessor } = col\n\n // Use the cellMap to find which index in the renderedCells to use\n const cell = col.renderedCells[cellMap[rowId]]\n\n // For drag handles, wrap in div with drag attributes\n if (accessor === '_dragHandle') {\n return (\n <td className={`cell-${accessor}`} key={colIndex}>\n <div {...dragAttributes} {...dragListeners}>\n {cell}\n </div>\n </td>\n )\n }\n\n return (\n <td className={`cell-${accessor}`} key={colIndex}>\n {cell}\n </td>\n )\n })}\n </tr>\n)\n", "import type { ReactNode } from 'react'\n\nexport type Props = {\n readonly children: ReactNode\n readonly className?: string\n readonly rowId?: number | string\n}\n\nexport const OrderableRowDragPreview = ({ children, className, rowId }: Props) =>\n typeof rowId === 'undefined' ? null : (\n <div className={className}>\n <table cellPadding={0} cellSpacing={0}>\n <tbody>{children}</tbody>\n </table>\n </div>\n )\n", "import type { ColumnPreference, DefaultCellComponentProps } from 'payload'\n\nimport { toWords, transformColumnsToSearchParams } from 'payload/shared'\nimport React from 'react'\n\nimport { Pill } from '../../../Pill/index.js'\nimport './index.scss'\n\nconst baseClass = 'query-preset-columns-cell'\n\nexport const QueryPresetsColumnsCell: React.FC<DefaultCellComponentProps> = ({ cellData }) => {\n return (\n <div className={baseClass}>\n {cellData\n ? transformColumnsToSearchParams(cellData as ColumnPreference[]).map((column, i) => {\n const isColumnActive = !column.startsWith('-')\n\n // to void very lengthy cells, only display the active columns\n if (!isColumnActive) {\n return null\n }\n\n return (\n <Pill key={i} pillStyle={isColumnActive ? 'always-white' : 'light'} size=\"small\">\n {toWords(column)}\n </Pill>\n )\n })\n : 'No columns selected'}\n </div>\n )\n}\n", "import type { DefaultCellComponentProps, Where } from 'payload'\n\nimport { toWords } from 'payload/shared'\nimport React from 'react'\n\n/** @todo: improve this */\nconst transformWhereToNaturalLanguage = (where: Where): string => {\n if (where.or && where.or.length > 0 && where.or[0].and && where.or[0].and.length > 0) {\n const orQuery = where.or[0]\n const andQuery = orQuery?.and?.[0]\n\n if (!andQuery || typeof andQuery !== 'object') {\n return 'No where query'\n }\n\n const key = Object.keys(andQuery)[0]\n\n if (!key || !andQuery[key] || typeof andQuery[key] !== 'object') {\n return 'No where query'\n }\n\n const operator = Object.keys(andQuery[key])[0]\n const value = andQuery[key][operator]\n\n if (typeof value === 'string') {\n return `${toWords(key)} ${operator} ${toWords(value)}`\n } else if (Array.isArray(value)) {\n return `${toWords(key)} ${operator} ${value.map((val) => toWords(val)).join(' or ')}`\n }\n }\n\n return ''\n}\n\nexport const QueryPresetsWhereCell: React.FC<DefaultCellComponentProps> = ({ cellData }) => {\n return <div>{cellData ? transformWhereToNaturalLanguage(cellData) : 'No where query'}</div>\n}\n", "import type { DefaultCellComponentProps } from 'payload'\nimport type { JSX } from 'react'\n\nimport { toWords } from 'payload/shared'\nimport React, { Fragment } from 'react'\n\nexport const QueryPresetsAccessCell: React.FC<DefaultCellComponentProps> = ({ cellData }) => {\n // first sort the operations in the order they should be displayed\n const operations = ['read', 'update', 'delete']\n\n return (\n <p>\n {operations.reduce((acc, operation, index) => {\n const operationData = (cellData as JSON)?.[operation]\n\n if (operationData && operationData.constraint) {\n acc.push(\n <Fragment key={operation}>\n <span>\n <strong>{toWords(operation)}</strong>: {toWords(operationData.constraint)}\n </span>\n {index !== operations.length - 1 && ', '}\n </Fragment>,\n )\n }\n return acc\n }, [] as JSX.Element[])}\n </p>\n )\n}\n", "import type { DefaultCellComponentProps } from 'payload'\n\nimport { toWords } from 'payload/shared'\nimport React, { useMemo } from 'react'\n\nimport { useAuth } from '../../../../providers/Auth/index.js'\nimport { useConfig } from '../../../../providers/Config/index.js'\nimport { useTranslation } from '../../../../providers/Translation/index.js'\nimport { reduceFieldsToOptions } from '../../../../utilities/reduceFieldsToOptions.js'\n\nexport const QueryPresetsGroupByCell: React.FC<DefaultCellComponentProps> = ({\n cellData,\n rowData,\n}) => {\n const { i18n } = useTranslation()\n const { permissions } = useAuth()\n const { config } = useConfig()\n\n // Get the related collection from the row data\n const relatedCollection = rowData?.relatedCollection as string\n\n // Get the collection config for the related collection\n const collectionConfig = useMemo(() => {\n if (!relatedCollection) {\n return null\n }\n\n return config.collections?.find((col) => col.slug === relatedCollection)\n }, [relatedCollection, config.collections])\n\n // Reduce fields to options to get proper labels\n const reducedFields = useMemo(() => {\n if (!collectionConfig) {\n return []\n }\n\n const fieldPermissions = permissions?.collections?.[relatedCollection]?.fields\n\n return reduceFieldsToOptions({\n fieldPermissions,\n fields: collectionConfig.fields,\n i18n,\n })\n }, [collectionConfig, permissions, relatedCollection, i18n])\n\n if (!cellData || typeof cellData !== 'string') {\n return <div>No group by selected</div>\n }\n\n const isDescending = cellData.startsWith('-')\n const fieldName = isDescending ? cellData.slice(1) : cellData\n const direction = isDescending ? 'descending' : 'ascending'\n\n // Find the field option to get the proper label\n const fieldOption = reducedFields.find((field) => field.value === fieldName)\n const displayLabel = fieldOption?.label || toWords(fieldName)\n\n return (\n <div>\n {displayLabel} ({direction})\n </div>\n )\n}\n", "'use client'\nimport type { ClientTranslationKeys, I18nClient } from '@payloadcms/translations'\nimport type { ClientField, SanitizedFieldPermissions, SanitizedFieldsPermissions } from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport { fieldAffectsData, fieldIsHiddenOrDisabled, fieldIsID, tabHasName } from 'payload/shared'\n\nimport type { ReducedField } from '../elements/WhereBuilder/types.js'\n\nimport {\n fieldTypeConditions,\n getValidFieldOperators,\n} from '../elements/WhereBuilder/field-types.js'\nimport { createNestedClientFieldPath } from '../forms/Form/createNestedClientFieldPath.js'\nimport { combineFieldLabel } from './combineFieldLabel.js'\n\ntype ReduceFieldOptionsArgs = {\n fieldPermissions?: SanitizedFieldPermissions | SanitizedFieldsPermissions\n fields: ClientField[]\n i18n: I18nClient\n labelPrefix?: string\n pathPrefix?: string\n}\n\n/**\n * Transforms a fields schema into a flattened array of fields with labels and values.\n * Used in the `WhereBuilder` component to render the fields in the dropdown.\n */\nexport const reduceFieldsToOptions = ({\n fieldPermissions,\n fields,\n i18n,\n labelPrefix,\n pathPrefix: pathPrefixFromArgs,\n}: ReduceFieldOptionsArgs): ReducedField[] => {\n return fields.reduce((reduced, field) => {\n let pathPrefix = pathPrefixFromArgs\n // Do not filter out `field.admin.disableListFilter` fields here, as these should still render as disabled if they appear in the URL query\n // Filter out `virtual: true` fields since they are regular virtuals and not backed by a DB field\n if (\n (fieldIsHiddenOrDisabled(field) && !fieldIsID(field)) ||\n ('virtual' in field && field.virtual === true)\n ) {\n return reduced\n }\n\n // IMPORTANT: We DON'T mutate field.name here because the field object is shared across\n // multiple components (WhereBuilder, GroupByBuilder, etc.). Mutating it would break\n // permission checks and cause issues in other components that need the field name.\n // Instead, we use a flag to determine whether to include the field name in the path.\n let shouldIgnoreFieldName = false\n\n // Handle virtual:string fields (virtual relationships, e.g. \"post.title\")\n if ('virtual' in field && typeof field.virtual === 'string') {\n pathPrefix = pathPrefix ? pathPrefix + '.' + field.virtual : field.virtual\n if (fieldAffectsData(field)) {\n // Mark that we should ignore the field name when constructing the field path\n shouldIgnoreFieldName = true\n }\n }\n\n if (field.type === 'tabs' && 'tabs' in field) {\n const tabs = field.tabs\n\n tabs.forEach((tab) => {\n if (typeof tab.label !== 'boolean') {\n const localizedTabLabel = getTranslation(tab.label, i18n)\n\n const labelWithPrefix = labelPrefix\n ? labelPrefix + ' > ' + localizedTabLabel\n : localizedTabLabel\n\n // Make sure we handle nested tabs\n const tabPathPrefix =\n tabHasName(tab) && tab.name\n ? pathPrefix\n ? pathPrefix + '.' + tab.name\n : tab.name\n : pathPrefix\n\n if (typeof localizedTabLabel === 'string') {\n reduced.push(\n ...reduceFieldsToOptions({\n fieldPermissions:\n typeof fieldPermissions === 'boolean'\n ? fieldPermissions\n : tabHasName(tab) && tab.name\n ? fieldPermissions?.[tab.name]?.fields || fieldPermissions?.[tab.name]\n : fieldPermissions,\n fields: tab.fields,\n i18n,\n labelPrefix: labelWithPrefix,\n pathPrefix: tabPathPrefix,\n }),\n )\n }\n }\n })\n return reduced\n }\n\n // Rows cant have labels, so we need to handle them differently\n if (field.type === 'row' && 'fields' in field) {\n reduced.push(\n ...reduceFieldsToOptions({\n fieldPermissions,\n fields: field.fields,\n i18n,\n labelPrefix,\n pathPrefix,\n }),\n )\n return reduced\n }\n\n if (field.type === 'collapsible' && 'fields' in field) {\n const localizedTabLabel = getTranslation(field.label || '', i18n)\n\n const labelWithPrefix = labelPrefix\n ? labelPrefix + ' > ' + localizedTabLabel\n : localizedTabLabel\n\n reduced.push(\n ...reduceFieldsToOptions({\n fieldPermissions,\n fields: field.fields,\n i18n,\n labelPrefix: labelWithPrefix,\n pathPrefix,\n }),\n )\n return reduced\n }\n\n if (field.type === 'group' && 'fields' in field) {\n const translatedLabel = getTranslation(field.label || '', i18n)\n\n const labelWithPrefix = labelPrefix\n ? translatedLabel\n ? labelPrefix + ' > ' + translatedLabel\n : labelPrefix\n : translatedLabel\n\n if (fieldAffectsData(field)) {\n // Make sure we handle deeply nested groups\n const pathWithPrefix = field.name\n ? pathPrefix\n ? pathPrefix + '.' + field.name\n : field.name\n : pathPrefix\n\n reduced.push(\n ...reduceFieldsToOptions({\n fieldPermissions:\n typeof fieldPermissions === 'boolean'\n ? fieldPermissions\n : fieldPermissions?.[field.name]?.fields || fieldPermissions?.[field.name],\n fields: field.fields,\n i18n,\n labelPrefix: labelWithPrefix,\n pathPrefix: pathWithPrefix,\n }),\n )\n } else {\n reduced.push(\n ...reduceFieldsToOptions({\n fieldPermissions,\n fields: field.fields,\n i18n,\n labelPrefix: labelWithPrefix,\n pathPrefix,\n }),\n )\n }\n\n return reduced\n }\n\n if (field.type === 'array' && 'fields' in field) {\n const translatedLabel = getTranslation(field.label || '', i18n)\n\n const labelWithPrefix = labelPrefix\n ? translatedLabel\n ? labelPrefix + ' > ' + translatedLabel\n : labelPrefix\n : translatedLabel\n\n // Make sure we handle deeply nested groups\n const pathWithPrefix = field.name\n ? pathPrefix\n ? pathPrefix + '.' + field.name\n : field.name\n : pathPrefix\n\n reduced.push(\n ...reduceFieldsToOptions({\n fieldPermissions:\n typeof fieldPermissions === 'boolean'\n ? fieldPermissions\n : fieldPermissions?.[field.name]?.fields || fieldPermissions?.[field.name],\n fields: field.fields,\n i18n,\n labelPrefix: labelWithPrefix,\n pathPrefix: pathWithPrefix,\n }),\n )\n\n return reduced\n }\n\n if (typeof fieldTypeConditions[field.type] === 'object') {\n if (\n fieldIsID(field) ||\n fieldPermissions === true ||\n fieldPermissions?.[field.name] === true ||\n fieldPermissions?.[field.name]?.read === true\n ) {\n const operatorKeys = new Set()\n\n const { validOperators } = getValidFieldOperators({\n field,\n })\n\n const operators = validOperators.reduce((acc, operator) => {\n if (!operatorKeys.has(operator.value)) {\n operatorKeys.add(operator.value)\n const operatorKey = `operators:${operator.label}` as ClientTranslationKeys\n acc.push({\n ...operator,\n label: i18n.t(operatorKey),\n })\n }\n\n return acc\n }, [])\n\n const localizedLabel = getTranslation(field.label || '', i18n)\n\n const formattedLabel = labelPrefix\n ? combineFieldLabel({\n field,\n prefix: labelPrefix,\n })\n : localizedLabel\n\n // For virtual fields, we use just the pathPrefix (the virtual path) without appending the field name\n // For regular fields, we use createNestedClientFieldPath which appends the field name to the path\n let fieldPath: string\n if (shouldIgnoreFieldName) {\n fieldPath = pathPrefix\n } else if (pathPrefix) {\n fieldPath = createNestedClientFieldPath(pathPrefix, field)\n } else {\n fieldPath = field.name\n }\n\n const formattedField: ReducedField = {\n label: formattedLabel,\n plainTextLabel: `${labelPrefix ? labelPrefix + ' > ' : ''}${localizedLabel}`,\n value: fieldPath,\n ...fieldTypeConditions[field.type],\n field,\n operators,\n }\n\n reduced.push(formattedField)\n return reduced\n }\n }\n return reduced\n }, [])\n}\n", "'use client'\n\nimport type { ClientField } from 'payload'\n\nconst equalsOperators = [\n {\n label: 'equals',\n value: 'equals',\n },\n {\n label: 'isNotEqualTo',\n value: 'not_equals',\n },\n]\n\nexport const arrayOperators = [\n {\n label: 'isIn',\n value: 'in',\n },\n {\n label: 'isNotIn',\n value: 'not_in',\n },\n]\n\nconst exists = {\n label: 'exists',\n value: 'exists',\n}\n\nconst base = [...equalsOperators, ...arrayOperators, exists]\n\nconst numeric = [\n ...base,\n {\n label: 'isGreaterThan',\n value: 'greater_than',\n },\n {\n label: 'isLessThan',\n value: 'less_than',\n },\n {\n label: 'isLessThanOrEqualTo',\n value: 'less_than_equal',\n },\n {\n label: 'isGreaterThanOrEqualTo',\n value: 'greater_than_equal',\n },\n]\n\nconst geo = [\n ...equalsOperators,\n {\n label: 'near',\n value: 'near',\n },\n]\n\nconst within = {\n label: 'within',\n value: 'within',\n}\n\nconst intersects = {\n label: 'intersects',\n value: 'intersects',\n}\n\nconst like = {\n label: 'isLike',\n value: 'like',\n}\n\nconst notLike = {\n label: 'isNotLike',\n value: 'not_like',\n}\n\nconst contains = {\n label: 'contains',\n value: 'contains',\n}\n\nexport const fieldTypeConditions: {\n [key: string]: {\n component: string\n operators: { label: string; value: string }[]\n }\n} = {\n checkbox: {\n component: 'Text',\n operators: [...equalsOperators, exists],\n },\n code: {\n component: 'Text',\n operators: [...base, like, notLike, contains],\n },\n date: {\n component: 'Date',\n operators: [...numeric, exists],\n },\n email: {\n component: 'Text',\n operators: [...base, contains],\n },\n json: {\n component: 'Text',\n operators: [...base, like, contains, notLike, within, intersects],\n },\n number: {\n component: 'Number',\n operators: [...numeric, exists],\n },\n point: {\n component: 'Point',\n operators: [...geo, exists, within, intersects],\n },\n radio: {\n component: 'Select',\n operators: [...base],\n },\n relationship: {\n component: 'Relationship',\n operators: [...base],\n },\n richText: {\n component: 'Text',\n operators: [...base, like, notLike, contains],\n },\n select: {\n component: 'Select',\n operators: [...base],\n },\n text: {\n component: 'Text',\n operators: [...base, like, notLike, contains],\n },\n textarea: {\n component: 'Text',\n operators: [...base, like, notLike, contains],\n },\n upload: {\n component: 'Relationship',\n operators: [...base],\n },\n}\n\nexport const getValidFieldOperators = ({\n field,\n operator,\n}: {\n field: ClientField\n operator?: string\n}): {\n validOperator: string\n validOperators: {\n label: string\n value: string\n }[]\n} => {\n let validOperators: {\n label: string\n value: string\n }[] = []\n\n if (field.type === 'relationship' && Array.isArray(field.relationTo)) {\n if ('hasMany' in field && field.hasMany) {\n validOperators = [...equalsOperators, exists]\n } else {\n validOperators = [...base]\n }\n } else {\n validOperators = [...fieldTypeConditions[field.type].operators]\n }\n\n return {\n validOperator:\n operator && validOperators.find(({ value }) => value === operator)\n ? operator\n : validOperators[0].value,\n validOperators,\n }\n}\n", "'use client'\nimport type { ColumnPreference, JSONFieldClientComponent } from 'payload'\n\nimport { toWords, transformColumnsToSearchParams } from 'payload/shared'\nimport React from 'react'\n\nimport { FieldLabel } from '../../../../fields/FieldLabel/index.js'\nimport { useField } from '../../../../forms/useField/index.js'\nimport { Pill } from '../../../Pill/index.js'\nimport './index.scss'\n\nexport const QueryPresetsColumnField: JSONFieldClientComponent = ({\n field: { label, required },\n}) => {\n const { path, value } = useField()\n\n return (\n <div className=\"field-type query-preset-columns-field\">\n <FieldLabel as=\"h3\" label={label} path={path} required={required} />\n <div className=\"value-wrapper\">\n {value\n ? transformColumnsToSearchParams(value as ColumnPreference[]).map((column, i) => {\n const isColumnActive = !column.startsWith('-')\n\n return (\n <Pill\n key={i}\n pillStyle={isColumnActive ? 'always-white' : 'light-gray'}\n size=\"small\"\n >\n {toWords(column)}\n </Pill>\n )\n })\n : 'No columns selected'}\n </div>\n </div>\n )\n}\n", "'use client'\nimport type { JSONFieldClientComponent, Where } from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport { toWords } from 'payload/shared'\nimport React from 'react'\n\nimport { FieldLabel } from '../../../../fields/FieldLabel/index.js'\nimport { useField } from '../../../../forms/useField/index.js'\nimport { useConfig } from '../../../../providers/Config/index.js'\nimport { useListQuery } from '../../../../providers/ListQuery/index.js'\nimport { useTranslation } from '../../../../providers/Translation/index.js'\nimport { Pill } from '../../../Pill/index.js'\nimport './index.scss'\n\n/** @todo: improve this */\nconst transformWhereToNaturalLanguage = (\n where: Where,\n collectionLabel: string,\n): React.ReactNode => {\n if (!where) {\n return null\n }\n\n const renderCondition = (condition: any): React.ReactNode => {\n if (!condition || typeof condition !== 'object') {\n return 'No where query'\n }\n\n const key = Object.keys(condition)[0]\n\n if (!key || !condition[key] || typeof condition[key] !== 'object') {\n return 'No where query'\n }\n\n const operator = Object.keys(condition[key])[0]\n const operatorValue = condition[key][operator]\n\n // Format value - ideally would use field schema for proper typing\n const formatValue = (val: any): string => {\n if (typeof val === 'object' && val != null) {\n try {\n return new Date(val).toLocaleDateString()\n } catch {\n return 'Unknown error has occurred'\n }\n }\n return val?.toString() ?? ''\n }\n\n const value = Array.isArray(operatorValue)\n ? operatorValue.map(formatValue).join(', ')\n : formatValue(operatorValue)\n\n return (\n <Pill pillStyle=\"always-white\" size=\"small\">\n <b>{toWords(key)}</b> {operator} <b>{toWords(value)}</b>\n </Pill>\n )\n }\n\n const renderWhere = (where: Where, collectionLabel: string): React.ReactNode => {\n if (where.or && where.or.length > 0) {\n return (\n <div className=\"or-condition\">\n {where.or.map((orCondition, orIndex) => (\n <React.Fragment key={orIndex}>\n {orCondition.and && orCondition.and.length > 0 ? (\n <div className=\"and-condition\">\n {orIndex === 0 && (\n <span className=\"label\">{`Filter ${collectionLabel} where `}</span>\n )}\n {orIndex > 0 && <span className=\"label\"> or </span>}\n {orCondition.and.map((andCondition, andIndex) => (\n <React.Fragment key={andIndex}>\n {renderCondition(andCondition)}\n {andIndex < orCondition.and.length - 1 && (\n <span className=\"label\"> and </span>\n )}\n </React.Fragment>\n ))}\n </div>\n ) : (\n renderCondition(orCondition)\n )}\n </React.Fragment>\n ))}\n </div>\n )\n }\n\n return renderCondition(where)\n }\n\n return renderWhere(where, collectionLabel)\n}\n\nexport const QueryPresetsWhereField: JSONFieldClientComponent = ({\n field: { label, required },\n}) => {\n const { path, value } = useField()\n const { collectionSlug } = useListQuery()\n const { getEntityConfig } = useConfig()\n\n const collectionConfig = getEntityConfig({ collectionSlug })\n\n const { i18n } = useTranslation()\n\n return (\n <div className=\"field-type query-preset-where-field\">\n <FieldLabel as=\"h3\" label={label} path={path} required={required} />\n <div className=\"value-wrapper\">\n {value\n ? transformWhereToNaturalLanguage(\n value as Where,\n getTranslation(collectionConfig?.labels?.plural, i18n),\n )\n : 'No where query'}\n </div>\n </div>\n )\n}\n", "'use client'\nimport type { TextFieldClientComponent } from 'payload'\n\nimport { toWords } from 'payload/shared'\nimport React, { useMemo } from 'react'\n\nimport { FieldLabel } from '../../../../fields/FieldLabel/index.js'\nimport { useField } from '../../../../forms/useField/index.js'\nimport { useAuth } from '../../../../providers/Auth/index.js'\nimport { useConfig } from '../../../../providers/Config/index.js'\nimport { useTranslation } from '../../../../providers/Translation/index.js'\nimport { reduceFieldsToOptions } from '../../../../utilities/reduceFieldsToOptions.js'\nimport { Pill } from '../../../Pill/index.js'\nimport './index.scss'\n\nexport const QueryPresetsGroupByField: TextFieldClientComponent = ({\n field: { label, required },\n}) => {\n const { path, value } = useField()\n const { i18n } = useTranslation()\n const { permissions } = useAuth()\n const { config } = useConfig()\n\n // Get the relatedCollection from the document data\n const relatedCollectionField = useField({ path: 'relatedCollection' })\n const relatedCollection = relatedCollectionField.value as string\n\n // Get the collection config for the related collection\n const collectionConfig = useMemo(() => {\n if (!relatedCollection) {\n return null\n }\n\n return config.collections?.find((col) => col.slug === relatedCollection)\n }, [relatedCollection, config.collections])\n\n // Reduce fields to options to get proper labels\n const reducedFields = useMemo(() => {\n if (!collectionConfig) {\n return []\n }\n\n const fieldPermissions = permissions?.collections?.[relatedCollection]?.fields\n\n return reduceFieldsToOptions({\n fieldPermissions,\n fields: collectionConfig.fields,\n i18n,\n })\n }, [collectionConfig, permissions, relatedCollection, i18n])\n\n const renderGroupBy = (groupByValue: string) => {\n if (!groupByValue) {\n return 'No group by selected'\n }\n\n const isDescending = groupByValue.startsWith('-')\n const fieldName = isDescending ? groupByValue.slice(1) : groupByValue\n const direction = isDescending ? 'descending' : 'ascending'\n\n // Find the field option to get the proper label\n const fieldOption = reducedFields.find((field) => field.value === fieldName)\n const displayLabel = fieldOption?.label || toWords(fieldName)\n\n return (\n <Pill pillStyle=\"always-white\" size=\"small\">\n <b>{displayLabel}</b> ({direction})\n </Pill>\n )\n }\n\n return (\n <div className=\"field-type query-preset-group-by-field\">\n <FieldLabel as=\"h3\" label={label} path={path} required={required} />\n <div className=\"value-wrapper\">{renderGroupBy(value as string)}</div>\n </div>\n )\n}\n", "'use client'\nimport React, { useCallback } from 'react'\n\nimport type { OnCancel } from '../ConfirmationModal/index.js'\n\nimport { useForm, useFormModified } from '../../forms/Form/index.js'\nimport { useAuth } from '../../providers/Auth/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { ConfirmationModal } from '../ConfirmationModal/index.js'\nimport { useModal } from '../Modal/index.js'\nimport { usePreventLeave } from './usePreventLeave.js'\n\ntype LeaveWithoutSavingProps = {\n disablePreventLeave?: boolean\n modalSlug?: string\n onConfirm?: () => Promise<void> | void\n onPrevent?: (nextHref: null | string) => void\n}\n\nconst leaveWithoutSavingModalSlug = 'leave-without-saving'\n\nexport const LeaveWithoutSaving: React.FC<LeaveWithoutSavingProps> = ({\n disablePreventLeave = false,\n onConfirm,\n onPrevent,\n}) => {\n const modalSlug = leaveWithoutSavingModalSlug\n const { closeModal, openModal } = useModal()\n const modified = useFormModified()\n const { isValid } = useForm()\n const { user } = useAuth()\n const [hasAccepted, setHasAccepted] = React.useState(false)\n\n const prevent = !disablePreventLeave && Boolean((modified || !isValid) && user)\n\n const handlePrevent = useCallback(() => {\n const activeHref = (document.activeElement as HTMLAnchorElement)?.href || null\n if (onPrevent) {\n onPrevent(activeHref)\n }\n openModal(modalSlug)\n }, [openModal, onPrevent, modalSlug])\n\n const handleAccept = useCallback(() => {\n closeModal(modalSlug)\n }, [closeModal, modalSlug])\n\n usePreventLeave({ hasAccepted, onAccept: handleAccept, onPrevent: handlePrevent, prevent })\n\n const onCancel: OnCancel = useCallback(() => {\n closeModal(modalSlug)\n }, [closeModal, modalSlug])\n\n const handleConfirm = useCallback(async () => {\n if (onConfirm) {\n try {\n await onConfirm()\n } catch (err) {\n // eslint-disable-next-line no-console\n console.error('Error in LeaveWithoutSaving onConfirm:', err)\n }\n }\n setHasAccepted(true)\n }, [onConfirm])\n\n return (\n <LeaveWithoutSavingModal modalSlug={modalSlug} onCancel={onCancel} onConfirm={handleConfirm} />\n )\n}\n\nexport const LeaveWithoutSavingModal = ({\n modalSlug,\n onCancel,\n onConfirm,\n}: {\n modalSlug: string\n onCancel?: OnCancel\n onConfirm: () => Promise<void> | void\n}) => {\n const { t } = useTranslation()\n\n return (\n <ConfirmationModal\n body={t('general:changesNotSaved')}\n cancelLabel={t('general:stayOnThisPage')}\n confirmLabel={t('general:leaveAnyway')}\n heading={t('general:leaveWithoutSaving')}\n modalSlug={modalSlug}\n onCancel={onCancel}\n onConfirm={onConfirm}\n />\n )\n}\n", "'use client'\n// Credit: @Taiki92777\n// - Source: https://github.com/vercel/next.js/discussions/32231#discussioncomment-7284386\n// Credit: `react-use` maintainers\n// - Source: https://github.com/streamich/react-use/blob/ade8d3905f544305515d010737b4ae604cc51024/src/useBeforeUnload.ts#L2\nimport { useRouter } from 'next/navigation.js'\nimport { useCallback, useEffect, useRef } from 'react'\n\nimport { useRouteTransition } from '../../providers/RouteTransition/index.js'\n\nfunction on<T extends Document | EventTarget | HTMLElement | Window>(\n obj: null | T,\n ...args: [string, (() => void) | null, ...any] | Parameters<T['addEventListener']>\n): void {\n if (obj && obj.addEventListener) {\n obj.addEventListener(...(args as Parameters<HTMLElement['addEventListener']>))\n }\n}\n\nfunction off<T extends Document | EventTarget | HTMLElement | Window>(\n obj: null | T,\n ...args: [string, (() => void) | null, ...any] | Parameters<T['removeEventListener']>\n): void {\n if (obj && obj.removeEventListener) {\n obj.removeEventListener(...(args as Parameters<HTMLElement['removeEventListener']>))\n }\n}\n\nexport const useBeforeUnload = (enabled: (() => boolean) | boolean = true, message?: string) => {\n const handler = useCallback(\n (event: BeforeUnloadEvent) => {\n const finalEnabled = typeof enabled === 'function' ? enabled() : true\n\n if (!finalEnabled) {\n return\n }\n\n event.preventDefault()\n\n if (message) {\n event.returnValue = message\n }\n\n return message\n },\n [enabled, message],\n )\n\n useEffect(() => {\n if (!enabled) {\n return\n }\n\n on(window, 'beforeunload', handler)\n\n return () => off(window, 'beforeunload', handler)\n }, [enabled, handler])\n}\n\nexport const usePreventLeave = ({\n hasAccepted = false,\n message = 'Are you sure want to leave this page?',\n onAccept,\n onPrevent,\n prevent = true,\n}: {\n hasAccepted: boolean\n // if no `onPrevent` is provided, the message will be displayed in a confirm dialog\n message?: string\n onAccept?: () => void\n // to use a custom confirmation dialog, provide a function that returns a boolean\n onPrevent?: () => void\n prevent: boolean\n}) => {\n // check when page is about to be reloaded\n useBeforeUnload(prevent, message)\n const { startRouteTransition } = useRouteTransition()\n\n const router = useRouter()\n const cancelledURL = useRef<string>('')\n\n // check when page is about to be changed\n useEffect(() => {\n function isAnchorOfCurrentUrl(currentUrl: string, newUrl: string) {\n try {\n const currentUrlObj = new URL(currentUrl)\n const newUrlObj = new URL(newUrl)\n // Compare hostname, pathname, and search parameters\n if (\n currentUrlObj.hostname === newUrlObj.hostname &&\n currentUrlObj.pathname === newUrlObj.pathname &&\n currentUrlObj.search === newUrlObj.search\n ) {\n // Check if the new URL is just an anchor of the current URL page\n const currentHash = currentUrlObj.hash\n const newHash = newUrlObj.hash\n return (\n currentHash !== newHash &&\n currentUrlObj.href.replace(currentHash, '') === newUrlObj.href.replace(newHash, '')\n )\n }\n } catch (err) {\n // eslint-disable-next-line no-console\n console.log('Unexpected exception thrown in LeaveWithoutSaving:isAnchorOfCurrentUrl', err)\n }\n return false\n }\n\n function findClosestAnchor(element: HTMLElement | null): HTMLAnchorElement | null {\n while (element && element.tagName.toLowerCase() !== 'a') {\n element = element.parentElement\n }\n return element as HTMLAnchorElement\n }\n\n function handleClick(event: MouseEvent) {\n try {\n const target = event.target as HTMLElement\n const anchor = findClosestAnchor(target)\n if (anchor) {\n const currentUrl = window.location.href\n const newUrl = anchor.href\n const isAnchor = isAnchorOfCurrentUrl(currentUrl, newUrl)\n const isDownloadLink = anchor.download !== ''\n const isNewTab = anchor.target === '_blank' || event.metaKey || event.ctrlKey\n\n const isPageLeaving = !(newUrl === currentUrl || isAnchor || isDownloadLink || isNewTab)\n\n if (isPageLeaving && prevent && (!onPrevent ? !window.confirm(message) : true)) {\n // Keep a reference of the href\n cancelledURL.current = newUrl\n\n // Cancel the route change\n event.preventDefault()\n event.stopPropagation()\n\n if (typeof onPrevent === 'function') {\n onPrevent()\n }\n }\n }\n } catch (err) {\n // eslint-disable-next-line no-console\n console.log('Unexpected exception thrown in LeaveWithoutSaving:usePreventLeave', err)\n }\n }\n\n if (prevent) {\n // Add the global click event listener\n document.addEventListener('click', handleClick, true)\n }\n\n // Clean up the global click event listener when the component is unmounted\n return () => {\n document.removeEventListener('click', handleClick, true)\n }\n }, [onPrevent, prevent, message])\n\n useEffect(() => {\n if (hasAccepted && cancelledURL.current) {\n if (onAccept) {\n onAccept()\n }\n\n startRouteTransition(() => router.push(cancelledURL.current))\n }\n }, [hasAccepted, onAccept, router, startRouteTransition])\n}\n", "'use client'\nimport React, { useEffect } from 'react'\n\nimport { useRouteCache } from '../../providers/RouteCache/index.js'\nimport { useRouteTransition } from '../../providers/RouteTransition/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { Button } from '../Button/index.js'\nimport { Modal, useModal } from '../Modal/index.js'\nimport './index.scss'\n\nconst modalSlug = 'document-take-over'\n\nconst baseClass = 'document-take-over'\n\nexport const DocumentTakeOver: React.FC<{\n handleBackToDashboard: () => void\n isActive: boolean\n onReadOnly: () => void\n}> = ({ handleBackToDashboard, isActive, onReadOnly }) => {\n const { closeModal, openModal } = useModal()\n const { t } = useTranslation()\n const { startRouteTransition } = useRouteTransition()\n const { clearRouteCache } = useRouteCache()\n\n useEffect(() => {\n if (isActive) {\n openModal(modalSlug)\n } else {\n closeModal(modalSlug)\n }\n }, [isActive, openModal, closeModal])\n\n return (\n <Modal\n className={baseClass}\n // // Fixes https://github.com/payloadcms/payload/issues/13778\n closeOnBlur={false}\n slug={modalSlug}\n >\n <div className={`${baseClass}__wrapper`}>\n <div className={`${baseClass}__content`}>\n <h1>{t('general:editingTakenOver')}</h1>\n <p>{t('general:anotherUserTakenOver')}</p>\n </div>\n <div className={`${baseClass}__controls`}>\n <Button\n buttonStyle=\"primary\"\n id={`${modalSlug}-back-to-dashboard`}\n onClick={() => {\n startRouteTransition(() => handleBackToDashboard())\n }}\n size=\"large\"\n >\n {t('general:backToDashboard')}\n </Button>\n <Button\n buttonStyle=\"secondary\"\n id={`${modalSlug}-view-read-only`}\n onClick={() => {\n onReadOnly()\n closeModal(modalSlug)\n clearRouteCache()\n }}\n size=\"large\"\n >\n {t('general:viewReadOnly')}\n </Button>\n </div>\n </div>\n </Modal>\n )\n}\n", "'use client'\nimport type { ClientUser } from 'payload'\n\nimport React, { useEffect } from 'react'\n\nimport { useRouteCache } from '../../providers/RouteCache/index.js'\nimport { useRouteTransition } from '../../providers/RouteTransition/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { isClientUserObject } from '../../utilities/isClientUserObject.js'\nimport { Button } from '../Button/index.js'\nimport { Modal, useModal } from '../Modal/index.js'\nimport './index.scss'\n\nconst modalSlug = 'document-locked'\n\nconst baseClass = 'document-locked'\n\nconst formatDate = (date) => {\n if (!date) {\n return ''\n }\n return new Intl.DateTimeFormat('en-US', {\n day: 'numeric',\n hour: 'numeric',\n hour12: true,\n minute: 'numeric',\n month: 'short',\n year: 'numeric',\n }).format(new Date(date))\n}\n\nexport const DocumentLocked: React.FC<{\n handleGoBack: () => void\n isActive: boolean\n onReadOnly: () => void\n onTakeOver: () => void\n updatedAt?: null | number\n user?: ClientUser | number | string\n}> = ({ handleGoBack, isActive, onReadOnly, onTakeOver, updatedAt, user }) => {\n const { closeModal, openModal } = useModal()\n const { t } = useTranslation()\n const { clearRouteCache } = useRouteCache()\n const { startRouteTransition } = useRouteTransition()\n\n useEffect(() => {\n if (isActive) {\n openModal(modalSlug)\n } else {\n closeModal(modalSlug)\n }\n }, [isActive, openModal, closeModal])\n\n return (\n <Modal\n className={baseClass}\n // Fixes https://github.com/payloadcms/payload/issues/13778\n closeOnBlur={false}\n onClose={() => {\n startRouteTransition(() => handleGoBack())\n }}\n slug={modalSlug}\n >\n <div className={`${baseClass}__wrapper`}>\n <div className={`${baseClass}__content`}>\n <h1>{t('general:documentLocked')}</h1>\n <p>\n <strong>\n {isClientUserObject(user) ? (user.email ?? user.id) : `${t('general:user')}: ${user}`}\n </strong>{' '}\n {t('general:currentlyEditing')}\n </p>\n <p>\n {t('general:editedSince')} <strong>{formatDate(updatedAt)}</strong>\n </p>\n </div>\n <div className={`${baseClass}__controls`}>\n <Button\n buttonStyle=\"secondary\"\n id={`${modalSlug}-go-back`}\n onClick={() => {\n closeModal(modalSlug)\n startRouteTransition(() => handleGoBack())\n }}\n size=\"large\"\n >\n {t('general:goBack')}\n </Button>\n <Button\n buttonStyle=\"secondary\"\n id={`${modalSlug}-view-read-only`}\n onClick={() => {\n onReadOnly()\n closeModal(modalSlug)\n clearRouteCache()\n }}\n size=\"large\"\n >\n {t('general:viewReadOnly')}\n </Button>\n <Button\n buttonStyle=\"primary\"\n id={`${modalSlug}-take-over`}\n onClick={() => {\n onTakeOver()\n closeModal(modalSlug)\n }}\n size=\"large\"\n >\n {t('general:takeOver')}\n </Button>\n </div>\n </div>\n </Modal>\n )\n}\n", "import type { ClientUser } from 'payload'\n\nexport const isClientUserObject = (user): user is ClientUser => {\n return user && typeof user === 'object'\n}\n", "'use client'\nimport type { DescriptionFunction, StaticDescription, ViewDescriptionClientProps } from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport React from 'react'\n\nimport { useTranslation } from '../../providers/Translation/index.js'\n\nexport type ViewDescriptionComponent = React.ComponentType<any>\n\ntype Description = DescriptionFunction | StaticDescription | string | ViewDescriptionComponent\n\nexport function isComponent(description: Description): description is ViewDescriptionComponent {\n return React.isValidElement(description)\n}\n\nexport function ViewDescription(props: ViewDescriptionClientProps) {\n const { i18n } = useTranslation()\n const { description } = props\n\n if (description) {\n return <div className=\"custom-view-description\">{getTranslation(description, i18n)}</div>\n }\n\n return null\n}\n", "'use client'\nimport { formatAdminURL } from 'payload/shared'\nimport React, { useEffect, useRef, useState } from 'react'\n\nimport { Account } from '../../graphics/Account/index.js'\nimport { useActions } from '../../providers/Actions/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { Hamburger } from '../Hamburger/index.js'\nimport { Link } from '../Link/index.js'\nimport { Localizer } from '../Localizer/index.js'\nimport { LocalizerLabel } from '../Localizer/LocalizerLabel/index.js'\nimport { useNav } from '../Nav/context.js'\nimport { NavToggler } from '../Nav/NavToggler/index.js'\nimport { RenderCustomComponent } from '../RenderCustomComponent/index.js'\nimport { StepNav } from '../StepNav/index.js'\nimport './index.scss'\n\nconst baseClass = 'app-header'\n\ntype Props = {\n CustomAvatar?: React.ReactNode\n CustomIcon?: React.ReactNode\n}\nexport function AppHeader({ CustomAvatar, CustomIcon }: Props) {\n const { t } = useTranslation()\n\n const { Actions } = useActions()\n\n const {\n config: {\n admin: {\n routes: { account: accountRoute },\n },\n localization,\n routes: { admin: adminRoute },\n serverURL,\n },\n } = useConfig()\n\n const { navOpen } = useNav()\n\n const customControlsRef = useRef<HTMLDivElement>(null)\n const [isScrollable, setIsScrollable] = useState(false)\n\n useEffect(() => {\n const checkIsScrollable = () => {\n const el = customControlsRef.current\n if (el) {\n const scrollable = el.scrollWidth > el.clientWidth\n setIsScrollable(scrollable)\n }\n }\n\n checkIsScrollable()\n window.addEventListener('resize', checkIsScrollable)\n\n return () => {\n window.removeEventListener('resize', checkIsScrollable)\n }\n }, [Actions])\n\n const ActionComponents = Actions ? Object.values(Actions) : []\n\n return (\n <header className={[baseClass, navOpen && `${baseClass}--nav-open`].filter(Boolean).join(' ')}>\n <div className={`${baseClass}__bg`} />\n <div className={`${baseClass}__content`}>\n <div className={`${baseClass}__wrapper`}>\n <NavToggler className={`${baseClass}__mobile-nav-toggler`} tabIndex={-1}>\n <Hamburger />\n </NavToggler>\n <div className={`${baseClass}__controls-wrapper`}>\n <div className={`${baseClass}__step-nav-wrapper`}>\n <StepNav className={`${baseClass}__step-nav`} CustomIcon={CustomIcon} />\n </div>\n <div className={`${baseClass}__actions-wrapper`}>\n <div className={`${baseClass}__actions`} ref={customControlsRef}>\n {ActionComponents.map((Action, i) => (\n <div\n className={\n isScrollable && i === ActionComponents.length - 1\n ? `${baseClass}__last-action`\n : ''\n }\n key={i}\n >\n {Action}\n </div>\n ))}\n </div>\n {isScrollable && <div className={`${baseClass}__gradient-placeholder`} />}\n </div>\n {localization && (\n <LocalizerLabel ariaLabel=\"invisible\" className={`${baseClass}__localizer-spacing`} />\n )}\n <Link\n aria-label={t('authentication:account')}\n className={`${baseClass}__account`}\n href={formatAdminURL({ adminRoute, path: accountRoute })}\n prefetch={false}\n tabIndex={0}\n >\n <RenderCustomComponent CustomComponent={CustomAvatar} Fallback={<Account />} />\n </Link>\n </div>\n </div>\n </div>\n <Localizer className={`${baseClass}__localizer`} />\n </header>\n )\n}\n", "'use client'\nimport { usePathname } from 'next/navigation.js'\nimport { formatAdminURL } from 'payload/shared'\nimport React from 'react'\n\nimport { useAuth } from '../../providers/Auth/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { DefaultAccountIcon } from './Default/index.js'\nimport { GravatarAccountIcon } from './Gravatar/index.js'\n\nexport const Account = () => {\n const {\n config: {\n admin: {\n avatar,\n routes: { account: accountRoute },\n },\n routes: { admin: adminRoute },\n },\n } = useConfig()\n\n const { user } = useAuth()\n const pathname = usePathname()\n const isOnAccountPage = pathname === formatAdminURL({ adminRoute, path: accountRoute })\n\n if (!user?.email || avatar === 'default') {\n return <DefaultAccountIcon active={isOnAccountPage} />\n }\n if (avatar === 'gravatar') {\n return <GravatarAccountIcon />\n }\n}\n", "import React from 'react'\n\nimport './index.scss'\n\nconst baseClass = 'graphic-account'\n\nexport const DefaultAccountIcon: React.FC<{\n active: boolean\n}> = (props) => (\n <svg\n className={[baseClass, props?.active && `${baseClass}--active`].filter(Boolean).join(' ')}\n height=\"25\"\n viewBox=\"0 0 25 25\"\n width=\"25\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <circle className={`${baseClass}__bg`} cx=\"12.5\" cy=\"12.5\" r=\"11.5\" />\n <circle className={`${baseClass}__head`} cx=\"12.5\" cy=\"10.73\" r=\"3.98\" />\n <path\n className={`${baseClass}__body`}\n d=\"M12.5,24a11.44,11.44,0,0,0,7.66-2.94c-.5-2.71-3.73-4.8-7.66-4.8s-7.16,2.09-7.66,4.8A11.44,11.44,0,0,0,12.5,24Z\"\n />\n </svg>\n)\n", "'use client'\nimport md5 from 'md5'\nimport React from 'react'\n\nimport { useAuth } from '../../../providers/Auth/index.js'\n\nexport const GravatarAccountIcon: React.FC = () => {\n const { user } = useAuth()\n\n const hash = md5(user.email.trim().toLowerCase())\n\n const params = new URLSearchParams({\n default: 'mp',\n r: 'g',\n s: '50',\n }).toString()\n\n const query = `?${params}`\n\n return (\n <img\n alt=\"yas\"\n className=\"gravatar-account\"\n height={25}\n src={`https://www.gravatar.com/avatar/${hash}${query}`}\n style={{ borderRadius: '50%' }}\n width={25}\n />\n )\n}\n", "'use client'\n\nimport React, { createContext, use, useState } from 'react'\n\ntype ActionsContextType = {\n Actions: {\n [key: string]: React.ReactNode\n }\n setViewActions: (actions: ActionsContextType['Actions']) => void\n}\n\nconst ActionsContext = createContext<ActionsContextType>({\n Actions: {},\n setViewActions: () => {},\n})\n\nexport const useActions = () => use(ActionsContext)\n\nexport const ActionsProvider: React.FC<{\n readonly Actions?: {\n [key: string]: React.ReactNode\n }\n readonly children: React.ReactNode\n}> = ({ Actions, children }) => {\n const [viewActions, setViewActions] = useState(Actions)\n\n return (\n <ActionsContext\n value={{\n Actions: {\n ...viewActions,\n ...Actions,\n },\n setViewActions,\n }}\n >\n {children}\n </ActionsContext>\n )\n}\n", "'use client'\nimport React from 'react'\n\nimport { ChevronIcon } from '../../icons/Chevron/index.js'\nimport { CloseMenuIcon } from '../../icons/CloseMenu/index.js'\nimport { MenuIcon } from '../../icons/Menu/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport './index.scss'\n\nconst baseClass = 'hamburger'\n\nexport const Hamburger: React.FC<{\n readonly closeIcon?: 'collapse' | 'x'\n readonly isActive?: boolean\n}> = (props) => {\n const { t } = useTranslation()\n const { closeIcon = 'x', isActive = false } = props\n\n return (\n <div className={baseClass}>\n {!isActive && (\n <div\n aria-label={t('general:open')}\n className={`${baseClass}__open-icon`}\n title={t('general:open')}\n >\n <MenuIcon />\n </div>\n )}\n {isActive && (\n <div\n aria-label={closeIcon === 'collapse' ? t('general:collapse') : t('general:close')}\n className={`${baseClass}__close-icon`}\n title={closeIcon === 'collapse' ? t('general:collapse') : t('general:close')}\n >\n {closeIcon === 'x' && <CloseMenuIcon />}\n {closeIcon === 'collapse' && <ChevronIcon direction=\"left\" />}\n </div>\n )}\n </div>\n )\n}\n", "import React from 'react'\n\nimport './index.scss'\n\nexport const CloseMenuIcon: React.FC = () => (\n <svg className=\"icon icon--close-menu\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\">\n <path className=\"stroke\" d=\"M14 6L6 14M6 6L14 14\" strokeLinecap=\"square\" />\n </svg>\n)\n", "import React from 'react'\n\nimport './index.scss'\n\nexport const MenuIcon: React.FC = () => (\n <svg\n className=\"icon icon--menu\"\n fill=\"none\"\n height=\"20\"\n viewBox=\"0 0 20 20\"\n width=\"20\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n className=\"stroke\"\n d=\"M4.66667 10H15.3333M4.66667 6H15.3333M4.66667 14H15.3333\"\n strokeLinecap=\"square\"\n />\n </svg>\n)\n", "'use client'\nimport { getTranslation } from '@payloadcms/translations'\nimport { useRouter } from 'next/navigation.js'\nimport * as qs from 'qs-esm'\nimport React, { Fragment } from 'react'\n\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useLocale, useLocaleLoading } from '../../providers/Locale/index.js'\nimport { useRouteTransition } from '../../providers/RouteTransition/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { Popup, PopupList } from '../Popup/index.js'\nimport './index.scss'\nimport { LocalizerLabel } from './LocalizerLabel/index.js'\n\nconst baseClass = 'localizer'\n\nexport const Localizer: React.FC<{\n className?: string\n}> = (props) => {\n const { className } = props\n const {\n config: { localization },\n } = useConfig()\n\n const router = useRouter()\n const { startRouteTransition } = useRouteTransition()\n\n const { setLocaleIsLoading } = useLocaleLoading()\n\n const { i18n } = useTranslation()\n const locale = useLocale()\n\n if (localization) {\n const { locales } = localization\n\n return (\n <div className={[baseClass, className].filter(Boolean).join(' ')}>\n <Popup\n button={<LocalizerLabel />}\n horizontalAlign=\"right\"\n render={({ close }) => (\n <PopupList.ButtonGroup>\n {locales.map((localeOption) => {\n const localeOptionLabel = getTranslation(localeOption.label, i18n)\n\n return (\n <PopupList.Button\n active={locale.code === localeOption.code}\n disabled={locale.code === localeOption.code}\n key={localeOption.code}\n onClick={() => {\n setLocaleIsLoading(true)\n close()\n\n // can't use `useSearchParams` here because it is stale due to `window.history.pushState` in `ListQueryProvider`\n const searchParams = new URLSearchParams(window.location.search)\n\n const url = qs.stringify(\n {\n ...qs.parse(searchParams.toString(), {\n depth: 10,\n ignoreQueryPrefix: true,\n }),\n locale: localeOption.code,\n },\n { addQueryPrefix: true },\n )\n\n startRouteTransition(() => {\n router.push(url)\n })\n }}\n >\n {localeOptionLabel !== localeOption.code ? (\n <Fragment>\n {localeOptionLabel}\n &nbsp;\n <span\n className={`${baseClass}__locale-code`}\n data-locale={localeOption.code}\n >\n {`(${localeOption.code})`}\n </span>\n </Fragment>\n ) : (\n <span className={`${baseClass}__locale-code`} data-locale={localeOption.code}>\n {localeOptionLabel}\n </span>\n )}\n </PopupList.Button>\n )\n })}\n </PopupList.ButtonGroup>\n )}\n showScrollbar\n size=\"large\"\n />\n </div>\n )\n }\n\n return null\n}\n", "'use client'\nimport { getTranslation } from '@payloadcms/translations'\nimport React from 'react'\n\nimport { ChevronIcon } from '../../../icons/Chevron/index.js'\nimport { useLocale } from '../../../providers/Locale/index.js'\nimport { useTranslation } from '../../../providers/Translation/index.js'\nimport './index.scss'\n\nconst baseClass = 'localizer-button'\n\nexport const LocalizerLabel: React.FC<{\n ariaLabel?: string\n className?: string\n}> = (props) => {\n const { ariaLabel, className } = props\n const locale = useLocale()\n const { i18n, t } = useTranslation()\n\n return (\n <div\n aria-label={ariaLabel || t('general:locale')}\n className={[baseClass, className].filter(Boolean).join(' ')}\n data-locale={locale ? locale.code : undefined}\n >\n <div className={`${baseClass}__label`}>{`${t('general:locale')}:`}&nbsp;</div>\n <div className={`${baseClass}__current`}>\n <span className={`${baseClass}__current-label`}>\n {`${getTranslation(locale.label, i18n)}`}\n </span>\n <ChevronIcon className={`${baseClass}__chevron`} />\n </div>\n </div>\n )\n}\n", "'use client'\nimport { useWindowInfo } from '@faceless-ui/window-info'\nimport { usePathname } from 'next/navigation.js'\nimport { PREFERENCE_KEYS } from 'payload/shared'\nimport React, { useEffect, useRef } from 'react'\n\nimport { usePreferences } from '../../providers/Preferences/index.js'\n\ntype NavContextType = {\n hydrated: boolean\n navOpen: boolean\n navRef: React.RefObject<HTMLDivElement | null>\n setNavOpen: (value: boolean) => void\n shouldAnimate: boolean\n}\n\n/**\n * @internal\n */\nexport const NavContext = React.createContext<NavContextType>({\n hydrated: false,\n navOpen: true,\n navRef: null,\n setNavOpen: () => {},\n shouldAnimate: false,\n})\n\nexport const useNav = () => React.use(NavContext)\n\nconst getNavPreference = async (getPreference): Promise<boolean> => {\n const navPrefs = await getPreference(PREFERENCE_KEYS.NAV)\n const preferredState = navPrefs?.open\n if (typeof preferredState === 'boolean') {\n return preferredState\n } else {\n return true\n }\n}\n\n/**\n * @internal\n */\nexport const NavProvider: React.FC<{\n children: React.ReactNode\n initialIsOpen?: boolean\n}> = ({ children, initialIsOpen }) => {\n const {\n breakpoints: { l: largeBreak, m: midBreak, s: smallBreak },\n } = useWindowInfo()\n\n const pathname = usePathname()\n\n const { getPreference } = usePreferences()\n const navRef = useRef(null)\n\n // initialize the nav to be closed\n // this is because getting the preference is async\n // so instead of closing it after the preference is loaded\n // we will open it after the preference is loaded\n const [navOpen, setNavOpen] = React.useState(initialIsOpen)\n\n const [shouldAnimate, setShouldAnimate] = React.useState(false)\n const [hydrated, setHydrated] = React.useState(false)\n\n // on load check the user's preference and set \"initial\" state\n useEffect(() => {\n if (largeBreak === false) {\n const setNavFromPreferences = async () => {\n const preferredState = await getNavPreference(getPreference)\n setNavOpen(preferredState)\n }\n\n void setNavFromPreferences()\n }\n }, [largeBreak, getPreference, setNavOpen])\n\n // on smaller screens where the nav is a modal\n // close the nav when the user navigates away\n useEffect(() => {\n if (smallBreak === true) {\n setNavOpen(false)\n }\n }, [pathname])\n\n // on open and close, lock the body scroll\n // do not do this on desktop, the sidebar is not a modal\n useEffect(() => {\n if (navRef.current) {\n if (navOpen && midBreak) {\n navRef.current.style.overscrollBehavior = 'contain'\n } else {\n navRef.current.style.overscrollBehavior = 'auto'\n }\n }\n }, [navOpen, midBreak])\n\n // on smaller screens where the nav is a modal\n // close the nav when the user resizes down to mobile\n // the sidebar is a modal on mobile\n useEffect(() => {\n if (largeBreak === true || midBreak === true || smallBreak === true) {\n setNavOpen(false)\n }\n setHydrated(true)\n\n const timeout = setTimeout(() => {\n setShouldAnimate(true)\n }, 100)\n return () => {\n clearTimeout(timeout)\n }\n }, [largeBreak, midBreak, smallBreak])\n\n // when the component unmounts, clear all body scroll locks\n useEffect(() => {\n return () => {\n if (navRef.current) {\n navRef.current.style.overscrollBehavior = 'auto'\n }\n }\n }, [])\n\n return (\n <NavContext value={{ hydrated, navOpen, navRef, setNavOpen, shouldAnimate }}>\n {children}\n </NavContext>\n )\n}\n", "'use client'\nimport { useWindowInfo } from '@faceless-ui/window-info'\nimport { PREFERENCE_KEYS } from 'payload/shared'\nimport React from 'react'\n\nimport { usePreferences } from '../../../providers/Preferences/index.js'\nimport { useTranslation } from '../../../providers/Translation/index.js'\nimport { useNav } from '../context.js'\nimport './index.scss'\n\nconst baseClass = 'nav-toggler'\n\nexport const NavToggler: React.FC<{\n children?: React.ReactNode\n className?: string\n id?: string\n tabIndex?: number\n}> = (props) => {\n const { id, children, className, tabIndex = 0 } = props\n\n const { t } = useTranslation()\n\n const { setPreference } = usePreferences()\n\n const { navOpen, setNavOpen } = useNav()\n\n const {\n breakpoints: { l: largeBreak },\n } = useWindowInfo()\n\n return (\n <button\n aria-label={`${navOpen ? t('general:close') : t('general:open')} ${t('general:menu')}`}\n className={[baseClass, navOpen && `${baseClass}--is-open`, className]\n .filter(Boolean)\n .join(' ')}\n id={id}\n onClick={async () => {\n setNavOpen(!navOpen)\n\n // only when the user explicitly toggles the nav on desktop do we want to set the preference\n // this is because the js may open or close the nav based on the window size, routing, etc\n if (!largeBreak) {\n await setPreference(\n PREFERENCE_KEYS.NAV,\n {\n open: !navOpen,\n },\n true,\n )\n }\n }}\n tabIndex={tabIndex}\n type=\"button\"\n >\n {children}\n </button>\n )\n}\n", "'use client'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport React, { Fragment } from 'react'\n\nimport type { StepNavItem } from './types.js'\n\nimport { PayloadIcon } from '../../graphics/Icon/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { Link } from '../Link/index.js'\nimport { RenderCustomComponent } from '../RenderCustomComponent/index.js'\nimport { StepNavProvider, useStepNav } from './context.js'\nimport './index.scss'\n\nexport { SetStepNav } from './SetStepNav.js'\n\nconst baseClass = 'step-nav'\n\nconst StepNav: React.FC<{\n readonly className?: string\n readonly CustomIcon?: React.ReactNode\n /**\n * @deprecated\n * This prop is deprecated and will be removed in the next major version.\n * Components now import their own `Link` directly from `next/link`.\n */\n readonly Link?: React.ComponentType\n}> = ({ className, CustomIcon }) => {\n const { i18n } = useTranslation()\n\n const { stepNav } = useStepNav()\n\n const {\n config: {\n routes: { admin },\n },\n } = useConfig()\n\n const { t } = useTranslation()\n\n return (\n <Fragment>\n {stepNav.length > 0 ? (\n <nav className={[baseClass, className].filter(Boolean).join(' ')}>\n <Link className={`${baseClass}__home`} href={admin} prefetch={false} tabIndex={0}>\n <span title={t('general:dashboard')}>\n <RenderCustomComponent CustomComponent={CustomIcon} Fallback={<PayloadIcon />} />\n </span>\n </Link>\n <span>/</span>\n {stepNav.map((item, i) => {\n const StepLabel = getTranslation(item.label, i18n)\n const isLast = stepNav.length === i + 1\n\n const Step = isLast ? (\n <span className={`${baseClass}__last`} key={i}>\n {StepLabel}\n </span>\n ) : (\n <Fragment key={i}>\n {item.url ? (\n <Link href={item.url} prefetch={false}>\n <span key={i}>{StepLabel}</span>\n </Link>\n ) : (\n <span key={i}>{StepLabel}</span>\n )}\n <span>/</span>\n </Fragment>\n )\n\n return Step\n })}\n </nav>\n ) : (\n <div className={[baseClass, className].filter(Boolean).join(' ')}>\n <div className={`${baseClass}__home`}>\n <span title={t('general:dashboard')}>\n <RenderCustomComponent CustomComponent={CustomIcon} Fallback={<PayloadIcon />} />\n </span>\n </div>\n </div>\n )}\n </Fragment>\n )\n}\n\nexport { StepNav, StepNavItem, StepNavProvider, useStepNav }\n", "import React from 'react'\n\nexport const PayloadIcon: React.FC<{\n fill?: string\n}> = ({ fill: fillFromProps }) => {\n const fill = fillFromProps || 'var(--theme-elevation-1000)'\n\n return (\n <svg\n className=\"graphic-icon\"\n height=\"100%\"\n viewBox=\"0 0 25 25\"\n width=\"100%\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M11.8673 21.2336L4.40922 16.9845C4.31871 16.9309 4.25837 16.8355 4.25837 16.7282V10.1609C4.25837 10.0477 4.38508 9.97616 4.48162 10.0298L13.1404 14.9642C13.2611 15.0358 13.412 14.9464 13.412 14.8093V11.6091C13.412 11.4839 13.3456 11.3647 13.2309 11.2992L2.81624 5.36353C2.72573 5.30989 2.60505 5.30989 2.51454 5.36353L1.15085 6.14422C1.06034 6.19786 1 6.29321 1 6.40048V18.5995C1 18.7068 1.06034 18.8021 1.15085 18.8558L11.8491 24.9583C11.9397 25.0119 12.0603 25.0119 12.1509 24.9583L21.1355 19.8331C21.2562 19.7616 21.2562 19.5948 21.1355 19.5232L18.3357 17.9261C18.2211 17.8605 18.0883 17.8605 17.9737 17.9261L12.175 21.2336C12.0845 21.2872 11.9638 21.2872 11.8733 21.2336H11.8673Z\"\n fill={fill}\n />\n <path\n d=\"M22.8491 6.13827L12.1508 0.0417218C12.0603 -0.0119135 11.9397 -0.0119135 11.8491 0.0417218L6.19528 3.2658C6.0746 3.33731 6.0746 3.50418 6.19528 3.57569L8.97092 5.16091C9.08557 5.22647 9.21832 5.22647 9.33296 5.16091L11.8672 3.71872C11.9578 3.66508 12.0784 3.66508 12.1689 3.71872L19.627 7.96782C19.7175 8.02146 19.7778 8.11681 19.7778 8.22408V14.8212C19.7778 14.9464 19.8442 15.0656 19.9589 15.1311L22.7345 16.7104C22.8552 16.7819 23.006 16.6925 23.006 16.5554V6.40048C23.006 6.29321 22.9457 6.19786 22.8552 6.14423L22.8491 6.13827Z\"\n fill={fill}\n />\n </svg>\n )\n}\n", "'use client'\nimport React, { createContext, use, useState } from 'react'\n\nimport type { ContextType } from './types.js'\n\nexport const useStepNav = (): ContextType => use(Context)\n\nexport const Context = createContext<ContextType>({\n setStepNav: () => {\n if (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line no-console\n console.warn('StepNavProvider is missing; `setStepNav` is a no-op.')\n }\n },\n stepNav: [],\n})\n\nexport const StepNavProvider: React.FC<{ children?: React.ReactNode }> = ({ children }) => {\n const [stepNav, setStepNav] = useState([])\n\n return (\n <Context\n value={{\n setStepNav,\n stepNav,\n }}\n >\n {children}\n </Context>\n )\n}\n", "'use client'\nimport { useEffect } from 'react'\n\nimport type { StepNavItem } from './types.js'\n\nimport { useStepNav } from './context.js'\n\nexport const SetStepNav: React.FC<{\n nav: StepNavItem[]\n}> = ({ nav }) => {\n const { setStepNav } = useStepNav()\n\n useEffect(() => {\n setStepNav(nav)\n }, [setStepNav, nav])\n\n return null\n}\n", "'use client'\n\nimport React from 'react'\n\nimport { Button } from '../Button/index.js'\nimport './index.scss'\n\nexport type Props = {\n actions?: React.ReactNode\n buttonAriaLabel?: string\n href?: string\n id?: string\n /**\n * @deprecated\n * This prop is deprecated and will be removed in the next major version.\n * Components now import their own `Link` directly from `next/link`.\n */\n Link?: React.ElementType\n onClick?: () => void\n title: string\n titleAs?: React.ElementType\n}\n\nconst baseClass = 'card'\n\nexport const Card: React.FC<Props> = (props) => {\n const { id, actions, buttonAriaLabel, href, onClick, title, titleAs } = props\n\n const classes = [baseClass, id, (onClick || href) && `${baseClass}--has-onclick`]\n .filter(Boolean)\n .join(' ')\n\n const Tag = titleAs ?? 'div'\n\n return (\n <div className={classes} id={id}>\n <Tag className={`${baseClass}__title`}>{title}</Tag>\n {actions && <div className={`${baseClass}__actions`}>{actions}</div>}\n {(onClick || href) && (\n <Button\n aria-label={buttonAriaLabel}\n buttonStyle=\"none\"\n className={`${baseClass}__click`}\n el=\"link\"\n onClick={onClick}\n to={href}\n />\n )}\n </div>\n )\n}\n", "'use client'\n\nimport { useModal } from '@faceless-ui/modal'\nimport { getTranslation } from '@payloadcms/translations'\nimport { useRouter } from 'next/navigation.js'\nimport { formatAdminURL } from 'payload/shared'\nimport React, { useCallback } from 'react'\nimport { toast } from 'sonner'\n\nimport { CheckboxField } from '../../fields/Checkbox/index.js'\nimport { SelectInput } from '../../fields/Select/index.js'\nimport { useFormModified } from '../../forms/Form/context.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useDocumentInfo } from '../../providers/DocumentInfo/index.js'\nimport { useLocale } from '../../providers/Locale/index.js'\nimport { useRouteTransition } from '../../providers/RouteTransition/index.js'\nimport { useServerFunctions } from '../../providers/ServerFunctions/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { DrawerHeader } from '../BulkUpload/Header/index.js'\nimport { Button } from '../Button/index.js'\nimport { Drawer } from '../Drawer/index.js'\nimport { PopupList } from '../Popup/index.js'\nimport './index.scss'\n\nconst baseClass = 'copy-locale-data'\n\nconst drawerSlug = 'copy-locale'\nexport const CopyLocaleData: React.FC = () => {\n const {\n config: {\n localization,\n routes: { admin },\n },\n } = useConfig()\n const { code } = useLocale()\n const { id, collectionSlug, globalSlug } = useDocumentInfo()\n const { i18n, t } = useTranslation()\n const modified = useFormModified()\n const { toggleModal } = useModal()\n const { copyDataFromLocale } = useServerFunctions()\n const router = useRouter()\n const { startRouteTransition } = useRouteTransition()\n\n const localeOptions =\n (localization &&\n localization.locales.map((locale) => ({ label: locale.label, value: locale.code }))) ||\n []\n\n const localeOptionsWithoutCurrent = localeOptions.filter((locale) => locale.value !== code)\n\n const getLocaleLabel = (code: string) => {\n const locale = localization && localization.locales.find((l) => l.code === code)\n return locale && locale.label ? getTranslation(locale.label, i18n) : code\n }\n\n const [copying, setCopying] = React.useState(false)\n const [toLocale, setToLocale] = React.useState<null | string>(null)\n const [fromLocale, setFromLocale] = React.useState<null | string>(code)\n const [overwriteExisting, setOverwriteExisting] = React.useState(false)\n\n React.useEffect(() => {\n if (fromLocale !== code) {\n setFromLocale(code)\n }\n }, [code, fromLocale])\n\n const copyLocaleData = useCallback(\n async ({ from, to }) => {\n setCopying(true)\n\n try {\n await copyDataFromLocale({\n collectionSlug,\n docID: id,\n fromLocale: from,\n globalSlug,\n overrideData: overwriteExisting,\n toLocale: to,\n })\n\n setCopying(false)\n\n startRouteTransition(() =>\n router.push(\n formatAdminURL({\n adminRoute: admin,\n path: `/${collectionSlug ? `collections/${collectionSlug}/${id}` : `globals/${globalSlug}`}`,\n }) + `?locale=${to}`,\n ),\n )\n\n toggleModal(drawerSlug)\n } catch (error) {\n setCopying(false)\n const errorMessage = (error as Error).message || 'error:unknown'\n const translatedMessage = errorMessage.startsWith('error:')\n ? t(errorMessage as any)\n : errorMessage\n toast.error(translatedMessage)\n }\n },\n [\n copyDataFromLocale,\n collectionSlug,\n id,\n globalSlug,\n overwriteExisting,\n toggleModal,\n router,\n admin,\n startRouteTransition,\n t,\n ],\n )\n\n if (!id && !globalSlug) {\n return null\n }\n\n return (\n <React.Fragment>\n <PopupList.Button\n id={`${baseClass}__button`}\n onClick={() => {\n if (modified) {\n toast.info(t('general:unsavedChanges'))\n } else {\n toggleModal(drawerSlug)\n }\n }}\n >\n {t('localization:copyToLocale')}\n </PopupList.Button>\n <Drawer\n className={baseClass}\n gutter={false}\n Header={\n <DrawerHeader\n onClose={() => {\n toggleModal(drawerSlug)\n }}\n title={t('localization:copyToLocale')}\n />\n }\n slug={drawerSlug}\n >\n <div className={`${baseClass}__sub-header`}>\n <span>\n {fromLocale && toLocale ? (\n <div>\n {t('localization:copyFromTo', {\n from: getLocaleLabel(fromLocale),\n to: getLocaleLabel(toLocale),\n })}\n </div>\n ) : (\n t('localization:selectLocaleToCopy')\n )}\n </span>\n <Button\n buttonStyle=\"primary\"\n disabled={!fromLocale || !toLocale}\n iconPosition=\"left\"\n onClick={async () => {\n if (fromLocale === toLocale) {\n toast.error(t('localization:cannotCopySameLocale'))\n return\n }\n if (!copying) {\n await copyLocaleData({\n from: fromLocale,\n to: toLocale,\n })\n }\n }}\n size=\"medium\"\n >\n {copying ? t('general:copying') + '...' : t('general:copy')}\n </Button>\n </div>\n\n <div className={`${baseClass}__content`}>\n <SelectInput\n label={t('localization:copyFrom')}\n name={'fromLocale'}\n onChange={(selectedOption: { value: string }) => {\n if (selectedOption?.value) {\n setFromLocale(selectedOption.value)\n }\n }}\n options={localeOptions}\n path=\"fromLocale\"\n readOnly\n value={fromLocale}\n />\n <SelectInput\n label={t('localization:copyTo')}\n name=\"toLocale\"\n onChange={(selectedOption: { value: string }) => {\n if (selectedOption?.value) {\n setToLocale(selectedOption.value)\n }\n }}\n options={localeOptionsWithoutCurrent}\n path=\"toLocale\"\n value={toLocale}\n />\n <CheckboxField\n checked={overwriteExisting}\n field={{\n name: 'overwriteExisting',\n label: t('general:overwriteExistingData'),\n }}\n onChange={() => setOverwriteExisting(!overwriteExisting)}\n path={'overwriteExisting'}\n />\n </div>\n </Drawer>\n </React.Fragment>\n )\n}\n", "'use client'\nimport type { ClientCollectionConfig, ViewTypes, Where } from 'payload'\n\nimport { useModal } from '@faceless-ui/modal'\nimport { getTranslation } from '@payloadcms/translations'\nimport { useRouter, useSearchParams } from 'next/navigation.js'\nimport { formatAdminURL, mergeListSearchAndWhere } from 'payload/shared'\nimport * as qs from 'qs-esm'\nimport React from 'react'\nimport { toast } from 'sonner'\n\nimport { CheckboxInput } from '../../fields/Checkbox/Input.js'\nimport { useAuth } from '../../providers/Auth/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useLocale } from '../../providers/Locale/index.js'\nimport { useRouteCache } from '../../providers/RouteCache/index.js'\nimport { SelectAllStatus, useSelection } from '../../providers/Selection/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { requests } from '../../utilities/api.js'\nimport { parseSearchParams } from '../../utilities/parseSearchParams.js'\nimport { ConfirmationModal } from '../ConfirmationModal/index.js'\nimport { ListSelectionButton } from '../ListSelection/index.js'\nimport { Translation } from '../Translation/index.js'\nimport './index.scss'\n\nexport type Props = {\n collection: ClientCollectionConfig\n /**\n * When multiple DeleteMany components are rendered on the page, this will differentiate them.\n */\n modalPrefix?: string\n /**\n * When multiple PublishMany components are rendered on the page, this will differentiate them.\n */\n title?: string\n viewType?: ViewTypes\n}\n\nexport const DeleteMany: React.FC<Props> = (props) => {\n const { viewType } = props\n const { collection: { slug, trash } = {}, modalPrefix } = props\n\n const { permissions } = useAuth()\n const { count, selectAll, selectedIDs, toggleAll } = useSelection()\n const router = useRouter()\n const searchParams = useSearchParams()\n const { clearRouteCache } = useRouteCache()\n\n const collectionPermissions = permissions?.collections?.[slug]\n const hasDeletePermission = collectionPermissions?.delete\n\n const selectingAll = selectAll === SelectAllStatus.AllAvailable\n\n const ids = selectingAll ? [] : selectedIDs\n\n if (selectAll === SelectAllStatus.None || !hasDeletePermission) {\n return null\n }\n\n const baseWhere = parseSearchParams(searchParams)?.where as Where\n\n const finalWhere =\n viewType === 'trash'\n ? {\n and: [\n ...(Array.isArray(baseWhere?.and) ? baseWhere.and : baseWhere ? [baseWhere] : []),\n { deletedAt: { exists: true } },\n ],\n }\n : baseWhere\n\n return (\n <React.Fragment>\n <DeleteMany_v4\n afterDelete={() => {\n toggleAll()\n\n router.replace(\n qs.stringify(\n {\n ...parseSearchParams(searchParams),\n page: selectAll ? '1' : undefined,\n },\n { addQueryPrefix: true },\n ),\n )\n\n clearRouteCache()\n }}\n modalPrefix={modalPrefix}\n search={parseSearchParams(searchParams)?.search as string}\n selections={{\n [slug]: {\n all: selectAll === SelectAllStatus.AllAvailable,\n ids,\n totalCount: selectingAll ? count : ids.length,\n },\n }}\n trash={trash}\n viewType={viewType}\n where={finalWhere}\n />\n </React.Fragment>\n )\n}\n\ntype AfterDeleteResult = {\n [relationTo: string]: {\n deletedCount: number\n errors: unknown[]\n ids: (number | string)[]\n totalCount: number\n }\n}\ntype DeleteMany_v4Props = {\n /**\n * A callback function to be called after the delete request is completed.\n */\n afterDelete?: (result: AfterDeleteResult) => void\n /**\n * When multiple DeleteMany components are rendered on the page, this will differentiate them.\n */\n modalPrefix?: string\n /**\n * Optionally pass a search string to filter the documents to be deleted.\n *\n * This is intentionally passed as a prop so modals could pass in their own\n * search string that may not be stored in the URL.\n */\n search?: string\n /**\n * An object containing the relationTo as the key and an object with the following properties:\n * - all: boolean\n * - totalCount: number\n * - ids: (string | number)[]\n */\n selections: {\n [relationTo: string]: {\n all?: boolean\n ids?: (number | string)[]\n totalCount?: number\n }\n }\n trash?: boolean\n viewType?: ViewTypes\n /**\n * Optionally pass a where clause to filter the documents to be deleted.\n * This will be ignored if multiple relations are selected.\n *\n * This is intentionally passed as a prop so modals could pass in their own\n * where clause that may not be stored in the URL.\n */\n where?: Where\n}\n\n/**\n * Handles polymorphic document delete operations.\n *\n * If you are deleting monomorphic documents, shape your `selections` to match the polymorphic structure.\n */\nexport function DeleteMany_v4({\n afterDelete,\n modalPrefix,\n search,\n selections,\n trash,\n viewType,\n where,\n}: DeleteMany_v4Props) {\n const { t } = useTranslation()\n\n const {\n config: {\n collections,\n routes: { api },\n serverURL,\n },\n } = useConfig()\n\n const { code: locale } = useLocale()\n const { i18n } = useTranslation()\n const { openModal } = useModal()\n\n const [deletePermanently, setDeletePermanently] = React.useState(false)\n const confirmManyDeleteDrawerSlug = `${modalPrefix ? `${modalPrefix}-` : ''}confirm-delete-many-docs`\n\n const handleDelete = React.useCallback(async () => {\n const deletingOneCollection = Object.keys(selections).length === 1\n const result: AfterDeleteResult = {}\n\n for (const [relationTo, { all, ids = [] }] of Object.entries(selections)) {\n const collectionConfig = collections.find(({ slug }) => slug === relationTo)\n\n if (collectionConfig) {\n let whereConstraint: Where\n\n if (all) {\n // selecting all documents with optional where filter\n if (deletingOneCollection && where) {\n whereConstraint =\n viewType === 'trash'\n ? {\n and: [\n ...(Array.isArray(where.and) ? where.and : [where]),\n { deletedAt: { exists: true } },\n ],\n }\n : where\n } else {\n whereConstraint =\n viewType === 'trash'\n ? {\n and: [{ id: { not_equals: '' } }, { deletedAt: { exists: true } }],\n }\n : {\n id: { not_equals: '' },\n }\n }\n } else {\n // selecting specific documents\n whereConstraint = {\n and: [\n { id: { in: ids } },\n ...(viewType === 'trash' ? [{ deletedAt: { exists: true } }] : []),\n ],\n }\n }\n\n const url = formatAdminURL({\n apiRoute: api,\n path: `/${relationTo}${qs.stringify(\n {\n limit: 0,\n locale,\n select: {},\n where: mergeListSearchAndWhere({\n collectionConfig,\n search,\n where: whereConstraint,\n }),\n ...(viewType === 'trash' ? { trash: true } : {}),\n },\n { addQueryPrefix: true },\n )}`,\n })\n\n const deleteManyResponse =\n viewType === 'trash' || deletePermanently || !collectionConfig.trash\n ? await requests.delete(url, {\n headers: {\n 'Accept-Language': i18n.language,\n 'Content-Type': 'application/json',\n },\n })\n : await requests.patch(url, {\n body: JSON.stringify({\n deletedAt: new Date().toISOString(),\n }),\n headers: {\n 'Accept-Language': i18n.language,\n 'Content-Type': 'application/json',\n },\n })\n\n try {\n const { plural, singular } = collectionConfig.labels\n const json = await deleteManyResponse.json()\n\n const deletedDocs = json?.docs.length || 0\n const successLabel = deletedDocs > 1 ? plural : singular\n\n if (deleteManyResponse.status < 400 || deletedDocs > 0) {\n const wasTrashed = collectionConfig.trash && !deletePermanently && viewType !== 'trash'\n\n let successKey:\n | 'general:deletedCountSuccessfully'\n | 'general:permanentlyDeletedCountSuccessfully'\n | 'general:trashedCountSuccessfully'\n\n if (wasTrashed) {\n successKey = 'general:trashedCountSuccessfully'\n } else if (viewType === 'trash' || deletePermanently) {\n successKey = 'general:permanentlyDeletedCountSuccessfully'\n } else {\n successKey = 'general:deletedCountSuccessfully'\n }\n\n toast.success(\n t(successKey, {\n count: deletedDocs,\n label: getTranslation(successLabel, i18n),\n }),\n )\n }\n\n if (json?.errors.length > 0) {\n toast.error(json.message, {\n description: json.errors.map((error) => error.message).join('\\n'),\n })\n }\n\n result[relationTo] = {\n deletedCount: deletedDocs,\n errors: json?.errors || null,\n ids: json?.docs.map((doc) => doc.id) || [],\n totalCount: json.totalDocs,\n }\n\n if (deleteManyResponse.status > 400 && json?.errors.length === 0) {\n toast.error(t('error:unknown'))\n result[relationTo].errors = [t('error:unknown')]\n }\n\n continue\n } catch (_err) {\n toast.error(t('error:unknown'))\n result[relationTo] = {\n deletedCount: 0,\n errors: [_err],\n ids: [],\n totalCount: 0,\n }\n continue\n }\n }\n }\n\n if (typeof afterDelete === 'function') {\n afterDelete(result)\n }\n }, [\n selections,\n afterDelete,\n collections,\n deletePermanently,\n locale,\n search,\n serverURL,\n api,\n i18n,\n viewType,\n where,\n t,\n ])\n\n const { label: labelString, labelCount } = Object.entries(selections).reduce(\n (acc, [key, value], index, array) => {\n const collectionConfig = collections.find(({ slug }) => slug === key)\n if (collectionConfig) {\n const labelCount = acc.labelCount === undefined ? value.totalCount : acc.labelCount\n const collectionLabel = `${acc.labelCount !== undefined ? `${value.totalCount} ` : ''}${getTranslation(\n value.totalCount > 1 ? collectionConfig.labels.plural : collectionConfig.labels.singular,\n i18n,\n )}`\n\n let newLabel\n\n if (index === array.length - 1 && index !== 0) {\n newLabel = `${acc.label} and ${collectionLabel}`\n } else if (index > 0) {\n newLabel = `${acc.label}, ${collectionLabel}`\n } else {\n newLabel = collectionLabel\n }\n\n return {\n label: newLabel,\n labelCount,\n }\n }\n return acc\n },\n {\n label: '',\n labelCount: undefined,\n },\n )\n\n return (\n <React.Fragment>\n <ListSelectionButton\n aria-label={t('general:delete')}\n className=\"delete-documents__toggle\"\n onClick={() => {\n openModal(confirmManyDeleteDrawerSlug)\n }}\n >\n {t('general:delete')}\n </ListSelectionButton>\n <ConfirmationModal\n body={\n <React.Fragment>\n <p>\n {trash ? (\n viewType === 'trash' ? (\n <Translation\n elements={{\n '0': ({ children }) => <strong>{children}</strong>,\n '1': ({ children }) => <strong>{children}</strong>,\n }}\n i18nKey=\"general:aboutToPermanentlyDeleteTrash\"\n t={t}\n variables={{\n count: labelCount ?? 0,\n label: labelString,\n }}\n />\n ) : (\n t('general:aboutToTrashCount', { count: labelCount, label: labelString })\n )\n ) : (\n t('general:aboutToDeleteCount', { count: labelCount, label: labelString })\n )}\n </p>\n {trash && viewType !== 'trash' && (\n <div className=\"delete-documents__checkbox\">\n <CheckboxInput\n checked={deletePermanently}\n id=\"delete-forever\"\n label={t('general:deletePermanently')}\n name=\"delete-forever\"\n onToggle={(e) => setDeletePermanently(e.target.checked)}\n />\n </div>\n )}\n </React.Fragment>\n }\n confirmingLabel={t('general:deleting')}\n heading={t('general:confirmDeletion')}\n modalSlug={confirmManyDeleteDrawerSlug}\n onConfirm={handleDelete}\n />\n </React.Fragment>\n )\n}\n", "'use client'\nimport type { Where } from 'payload'\n\nimport { useSearchParams } from 'next/navigation.js'\nimport * as qs from 'qs-esm'\nimport React, { createContext, use, useCallback, useEffect, useMemo, useRef, useState } from 'react'\n\nimport { parseSearchParams } from '../../utilities/parseSearchParams.js'\nimport { useAuth } from '../Auth/index.js'\nimport { useListQuery } from '../ListQuery/index.js'\nimport { useLocale } from '../Locale/index.js'\n\nexport enum SelectAllStatus {\n AllAvailable = 'allAvailable',\n AllInPage = 'allInPage',\n None = 'none',\n Some = 'some',\n}\n\ntype SelectionContext = {\n count: number\n disableBulkDelete?: boolean\n disableBulkEdit?: boolean\n getQueryParams: (additionalParams?: Where) => string\n getSelectedIds: () => (number | string)[]\n selectAll: SelectAllStatus\n selected: Map<number | string, boolean>\n selectedIDs: (number | string)[]\n setSelection: (id: number | string) => void\n /**\n * Selects all rows on the current page within the current query.\n * If `allAvailable` is true, does not select specific IDs so that the query itself affects all rows across all pages.\n */\n toggleAll: (allAvailable?: boolean) => void\n totalDocs: number\n}\n\nconst Context = createContext({\n count: undefined,\n getQueryParams: (additionalParams?: Where) => '',\n getSelectedIds: () => [],\n selectAll: undefined,\n selected: new Map(),\n selectedIDs: [],\n setSelection: (id: number | string) => {},\n toggleAll: (toggleAll: boolean) => {},\n totalDocs: undefined,\n} satisfies SelectionContext)\n\ntype Props = {\n readonly children: React.ReactNode\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n readonly docs: any[]\n readonly totalDocs: number\n}\n\nconst reduceActiveSelections = (selected: Map<number | string, boolean>): (number | string)[] => {\n const ids = []\n\n for (const [key, value] of selected) {\n if (value) {\n ids.push(key)\n }\n }\n\n return ids\n}\n\nexport const SelectionProvider: React.FC<Props> = ({ children, docs = [], totalDocs }) => {\n const contextRef = useRef({} as SelectionContext)\n const { user } = useAuth()\n\n const { code: locale } = useLocale()\n\n const [selected, setSelected] = useState<SelectionContext['selected']>(() => {\n const rows = new Map()\n\n docs.forEach(({ id }) => {\n rows.set(id, false)\n })\n\n return rows\n })\n\n const [selectAll, setSelectAll] = useState<SelectAllStatus>(SelectAllStatus.None)\n const [count, setCount] = useState(0)\n const searchParams = useSearchParams()\n const { query } = useListQuery()\n\n const toggleAll: SelectionContext['toggleAll'] = useCallback(\n (allAvailable = false) => {\n const rows = new Map()\n if (allAvailable) {\n setSelectAll(SelectAllStatus.AllAvailable)\n\n docs.forEach(({ id, _isLocked, _userEditing }) => {\n if (!_isLocked || _userEditing?.id === user?.id) {\n rows.set(id, true)\n }\n })\n } else if (\n // Reset back to `None` if we previously had any type of selection\n selectAll === SelectAllStatus.AllAvailable ||\n selectAll === SelectAllStatus.AllInPage\n ) {\n setSelectAll(SelectAllStatus.None)\n } else {\n const shouldSelect = selectAll !== SelectAllStatus.Some\n\n docs.forEach(({ id, _isLocked, _userEditing }) => {\n if (!_isLocked || _userEditing?.id === user?.id) {\n rows.set(id, shouldSelect)\n }\n })\n\n // Set selectAll synchronously to avoid race conditions with useEffect\n if (shouldSelect && rows.size > 0) {\n if (rows.size === docs.length) {\n setSelectAll(SelectAllStatus.AllInPage)\n } else {\n setSelectAll(SelectAllStatus.Some)\n }\n } else {\n setSelectAll(SelectAllStatus.None)\n }\n }\n\n setSelected(rows)\n },\n [docs, selectAll, user?.id],\n )\n\n const setSelection: SelectionContext['setSelection'] = useCallback(\n (id) => {\n const doc = docs.find((doc) => doc.id === id)\n\n if (doc?._isLocked && user?.id !== doc?._userEditing.id) {\n return // Prevent selection if the document is locked\n }\n\n const existingValue = selected.get(id)\n const isSelected = typeof existingValue === 'boolean' ? !existingValue : true\n\n const newMap = new Map(selected.set(id, isSelected))\n\n // If previously selected all and now deselecting, adjust status\n if (selectAll === SelectAllStatus.AllAvailable && !isSelected) {\n setSelectAll(SelectAllStatus.Some)\n }\n\n setSelected(newMap)\n },\n [selected, docs, selectAll, user?.id],\n )\n\n const getQueryParams = useCallback(\n (additionalWhereParams?: Where): string => {\n let where: Where\n\n if (selectAll === SelectAllStatus.AllAvailable) {\n const params = parseSearchParams(searchParams)?.where as Where\n\n where = params || {\n id: {\n not_equals: '',\n },\n }\n } else {\n const ids = []\n\n for (const [key, value] of selected) {\n if (value) {\n ids.push(key)\n }\n }\n\n where = {\n id: {\n in: ids,\n },\n }\n }\n\n if (additionalWhereParams) {\n where = {\n and: [{ ...additionalWhereParams }, where],\n }\n }\n\n return qs.stringify(\n {\n locale,\n where,\n },\n { addQueryPrefix: true },\n )\n },\n [selectAll, selected, locale, searchParams],\n )\n\n const getSelectedIds = useCallback(() => reduceActiveSelections(selected), [selected])\n\n useEffect(() => {\n if (selectAll === SelectAllStatus.AllAvailable) {\n return\n }\n let some = false\n let all = true\n\n if (!selected.size) {\n all = false\n some = false\n } else {\n for (const [_, value] of selected) {\n all = all && value\n some = some || value\n }\n }\n\n if (all && selected.size === docs.length) {\n setSelectAll(SelectAllStatus.AllInPage)\n } else if (some) {\n setSelectAll(SelectAllStatus.Some)\n } else {\n setSelectAll(SelectAllStatus.None)\n }\n }, [selectAll, selected, totalDocs, docs])\n\n useEffect(() => {\n let newCount = 0\n\n if (selectAll === SelectAllStatus.AllAvailable) {\n newCount = totalDocs\n } else {\n for (const [_, value] of selected) {\n if (value) {\n newCount++\n }\n }\n }\n\n setCount(newCount)\n }, [selectAll, selected, totalDocs])\n\n useEffect(() => {\n setSelectAll(SelectAllStatus.None)\n setSelected(new Map())\n }, [query])\n\n const selectedIDs = useMemo(() => reduceActiveSelections(selected), [selected])\n\n contextRef.current = {\n count,\n getQueryParams,\n getSelectedIds,\n selectAll,\n selected,\n selectedIDs,\n setSelection,\n toggleAll,\n totalDocs,\n }\n\n return <Context value={contextRef.current}>{children}</Context>\n}\n\nexport const useSelection = (): SelectionContext => use(Context)\n", "'use client'\nimport React from 'react'\n\nimport type { Props as ButtonProps } from '../Button/types.js'\n\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { Button } from '../Button/index.js'\nimport './index.scss'\n\nconst baseClass = 'list-selection'\n\ntype ListSelection_v4Props = {\n /**\n * The count of selected items\n */\n readonly count: number\n /**\n * Actions that apply to the list as a whole\n *\n * @example select all, clear selection\n */\n readonly ListActions?: React.ReactNode[]\n /**\n * Actions that apply to the selected items\n *\n * @example edit, delete, publish, unpublish\n */\n readonly SelectionActions?: React.ReactNode[]\n}\nexport function ListSelection_v4({ count, ListActions, SelectionActions }: ListSelection_v4Props) {\n const { t } = useTranslation()\n\n return (\n <div className={baseClass}>\n <span>{t('general:selectedCount', { count, label: '' })}</span>\n {ListActions && ListActions.length > 0 && (\n <React.Fragment>\n <span>&mdash;</span>\n <div className={`${baseClass}__actions`}>{ListActions}</div>\n </React.Fragment>\n )}\n {SelectionActions && SelectionActions.length > 0 && (\n <React.Fragment>\n <span>&mdash;</span>\n <div className={`${baseClass}__actions`}>{SelectionActions}</div>\n </React.Fragment>\n )}\n </div>\n )\n}\n\ntype ListSelectionButtonProps = {} & ButtonProps\nexport function ListSelectionButton({ children, className, ...props }: ListSelectionButtonProps) {\n return (\n <Button\n {...props}\n buttonStyle=\"none\"\n className={[`${baseClass}__button`, className].filter(Boolean).join(' ')}\n >\n {children}\n </Button>\n )\n}\n", "'use client'\nimport type {\n ClientUser,\n Data,\n SanitizedCollectionConfig,\n SanitizedCollectionPermission,\n SanitizedGlobalPermission,\n} from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport { formatAdminURL, hasAutosaveEnabled, hasDraftsEnabled } from 'payload/shared'\nimport React, { Fragment, useEffect } from 'react'\n\nimport type { DocumentDrawerContextType } from '../DocumentDrawer/Provider.js'\n\nimport { useFormInitializing, useFormProcessing } from '../../forms/Form/context.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useEditDepth } from '../../providers/EditDepth/index.js'\nimport { useLivePreviewContext } from '../../providers/LivePreview/context.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { formatDate } from '../../utilities/formatDocTitle/formatDateTitle.js'\nimport { Autosave } from '../Autosave/index.js'\nimport { Button } from '../Button/index.js'\nimport { CopyLocaleData } from '../CopyLocaleData/index.js'\nimport { DeleteDocument } from '../DeleteDocument/index.js'\nimport { DuplicateDocument } from '../DuplicateDocument/index.js'\nimport { MoveDocToFolder } from '../FolderView/MoveDocToFolder/index.js'\nimport { Gutter } from '../Gutter/index.js'\nimport { LivePreviewToggler } from '../LivePreview/Toggler/index.js'\nimport { Locked } from '../Locked/index.js'\nimport { PermanentlyDeleteButton } from '../PermanentlyDeleteButton/index.js'\nimport { Popup, PopupList } from '../Popup/index.js'\nimport { PreviewButton } from '../PreviewButton/index.js'\nimport { PublishButton } from '../PublishButton/index.js'\nimport { RenderCustomComponent } from '../RenderCustomComponent/index.js'\nimport { RestoreButton } from '../RestoreButton/index.js'\nimport { SaveButton } from '../SaveButton/index.js'\nimport './index.scss'\nimport { SaveDraftButton } from '../SaveDraftButton/index.js'\nimport { Status } from '../Status/index.js'\nimport { UnpublishButton } from '../UnpublishButton/index.js'\n\nconst baseClass = 'doc-controls'\n\nexport const DocumentControls: React.FC<{\n readonly apiURL: string\n readonly BeforeDocumentControls?: React.ReactNode\n readonly customComponents?: {\n readonly PreviewButton?: React.ReactNode\n readonly PublishButton?: React.ReactNode\n readonly SaveButton?: React.ReactNode\n readonly SaveDraftButton?: React.ReactNode\n readonly Status?: React.ReactNode\n readonly UnpublishButton?: React.ReactNode\n }\n readonly data?: Data\n readonly disableActions?: boolean\n readonly disableCreate?: boolean\n readonly EditMenuItems?: React.ReactNode\n readonly hasPublishPermission?: boolean\n readonly hasSavePermission?: boolean\n readonly id?: number | string\n readonly isAccountView?: boolean\n readonly isEditing?: boolean\n readonly isInDrawer?: boolean\n readonly isTrashed?: boolean\n readonly onDelete?: DocumentDrawerContextType['onDelete']\n readonly onDrawerCreateNew?: () => void\n /* Only available if `redirectAfterDuplicate` is `false` */\n readonly onDuplicate?: DocumentDrawerContextType['onDuplicate']\n readonly onRestore?: DocumentDrawerContextType['onRestore']\n readonly onSave?: DocumentDrawerContextType['onSave']\n readonly onTakeOver?: () => void\n readonly permissions: null | SanitizedCollectionPermission | SanitizedGlobalPermission\n readonly readOnlyForIncomingUser?: boolean\n readonly redirectAfterDelete?: boolean\n readonly redirectAfterDuplicate?: boolean\n readonly redirectAfterRestore?: boolean\n readonly slug: SanitizedCollectionConfig['slug']\n readonly user?: ClientUser\n}> = (props) => {\n const {\n id,\n slug,\n BeforeDocumentControls,\n customComponents: {\n PreviewButton: CustomPreviewButton,\n PublishButton: CustomPublishButton,\n SaveButton: CustomSaveButton,\n SaveDraftButton: CustomSaveDraftButton,\n Status: CustomStatus,\n UnpublishButton: CustomUnpublishButton,\n } = {},\n data,\n disableActions,\n disableCreate,\n EditMenuItems,\n hasSavePermission,\n isAccountView,\n isEditing,\n isInDrawer,\n isTrashed,\n onDelete,\n onDrawerCreateNew,\n onDuplicate,\n onRestore,\n onTakeOver,\n permissions,\n readOnlyForIncomingUser,\n redirectAfterDelete,\n redirectAfterDuplicate,\n redirectAfterRestore,\n user,\n } = props\n\n const { i18n, t } = useTranslation()\n\n const editDepth = useEditDepth()\n\n const { config, getEntityConfig } = useConfig()\n\n const collectionConfig = getEntityConfig({ collectionSlug: slug })\n\n const globalConfig = getEntityConfig({ globalSlug: slug })\n\n const { isLivePreviewEnabled } = useLivePreviewContext()\n\n const {\n admin: { dateFormat },\n localization,\n routes: { admin: adminRoute },\n serverURL,\n } = config\n\n // Settings these in state to avoid hydration issues if there is a mismatch between the server and client\n const [updatedAt, setUpdatedAt] = React.useState<string>('')\n const [createdAt, setCreatedAt] = React.useState<string>('')\n\n const processing = useFormProcessing()\n const initializing = useFormInitializing()\n\n useEffect(() => {\n if (data?.updatedAt) {\n setUpdatedAt(formatDate({ date: data.updatedAt, i18n, pattern: dateFormat }))\n }\n if (data?.createdAt) {\n setCreatedAt(formatDate({ date: data.createdAt, i18n, pattern: dateFormat }))\n }\n }, [data, i18n, dateFormat])\n\n const hasCreatePermission = permissions && 'create' in permissions && permissions.create\n\n const hasDeletePermission = permissions && 'delete' in permissions && permissions.delete\n\n const showDotMenu = Boolean(\n collectionConfig && id && !disableActions && (hasCreatePermission || hasDeletePermission),\n )\n\n const unsavedDraftWithValidations =\n !id && collectionConfig?.versions?.drafts && collectionConfig.versions?.drafts.validate\n\n const globalHasDraftsEnabled = hasDraftsEnabled(globalConfig)\n const collectionHasDraftsEnabled = hasDraftsEnabled(collectionConfig)\n const collectionAutosaveEnabled = hasAutosaveEnabled(collectionConfig)\n const globalAutosaveEnabled = hasAutosaveEnabled(globalConfig)\n const autosaveEnabled = collectionAutosaveEnabled || globalAutosaveEnabled\n\n const showSaveDraftButton =\n (collectionAutosaveEnabled &&\n collectionConfig.versions.drafts.autosave !== false &&\n collectionConfig.versions.drafts.autosave.showSaveDraftButton === true) ||\n (globalAutosaveEnabled &&\n globalConfig.versions.drafts.autosave !== false &&\n globalConfig.versions.drafts.autosave.showSaveDraftButton === true)\n const showCopyToLocale = localization && !collectionConfig?.admin?.disableCopyToLocale\n\n const showFolderMetaIcon = collectionConfig && collectionConfig.folders\n const showLockedMetaIcon = user && readOnlyForIncomingUser\n\n return (\n <Gutter className={baseClass}>\n <div className={`${baseClass}__wrapper`}>\n <div className={`${baseClass}__content`}>\n {showLockedMetaIcon || showFolderMetaIcon ? (\n <div className={`${baseClass}__meta-icons`}>\n {showLockedMetaIcon && (\n <Locked className={`${baseClass}__locked-controls`} user={user} />\n )}\n {showFolderMetaIcon && config.folders && !isTrashed && (\n <MoveDocToFolder\n folderCollectionSlug={config.folders.slug}\n folderFieldName={config.folders.fieldName}\n />\n )}\n </div>\n ) : null}\n <ul className={`${baseClass}__meta`}>\n {collectionConfig && !isEditing && !isAccountView && (\n <li className={`${baseClass}__list-item`}>\n <p className={`${baseClass}__value`}>\n {i18n.t('general:creatingNewLabel', {\n label: getTranslation(\n collectionConfig?.labels?.singular ?? i18n.t('general:document'),\n i18n,\n ),\n })}\n </p>\n </li>\n )}\n {(collectionHasDraftsEnabled || globalHasDraftsEnabled) && (\n <Fragment>\n {(globalConfig || (collectionConfig && isEditing)) && (\n <li\n className={[`${baseClass}__status`, `${baseClass}__list-item`]\n .filter(Boolean)\n .join(' ')}\n >\n <RenderCustomComponent CustomComponent={CustomStatus} Fallback={<Status />} />\n </li>\n )}\n {hasSavePermission &&\n autosaveEnabled &&\n !unsavedDraftWithValidations &&\n !isTrashed && (\n <li className={`${baseClass}__list-item`}>\n <Autosave\n collection={collectionConfig}\n global={globalConfig}\n id={id}\n publishedDocUpdatedAt={data?.createdAt}\n />\n </li>\n )}\n </Fragment>\n )}\n {collectionConfig?.timestamps && (isEditing || isAccountView) && (\n <Fragment>\n <li\n className={[`${baseClass}__list-item`, `${baseClass}__value-wrap`]\n .filter(Boolean)\n .join(' ')}\n title={data?.updatedAt ? updatedAt : ''}\n >\n <p className={`${baseClass}__label`}>\n {i18n.t(isTrashed ? 'general:deleted' : 'general:lastModified')}:&nbsp;\n </p>\n\n {data?.updatedAt && <p className={`${baseClass}__value`}>{updatedAt}</p>}\n </li>\n <li\n className={[`${baseClass}__list-item`, `${baseClass}__value-wrap`]\n .filter(Boolean)\n .join(' ')}\n title={data?.createdAt ? createdAt : ''}\n >\n <p className={`${baseClass}__label`}>{i18n.t('general:created')}:&nbsp;</p>\n {data?.createdAt && <p className={`${baseClass}__value`}>{createdAt}</p>}\n </li>\n </Fragment>\n )}\n </ul>\n </div>\n <div className={`${baseClass}__controls-wrapper`}>\n <div className={`${baseClass}__controls`}>\n {BeforeDocumentControls}\n {isLivePreviewEnabled && !isInDrawer && <LivePreviewToggler />}\n {(collectionConfig?.admin.preview || globalConfig?.admin.preview) && (\n <RenderCustomComponent\n CustomComponent={CustomPreviewButton}\n Fallback={<PreviewButton />}\n />\n )}\n {hasSavePermission && !isTrashed && (\n <Fragment>\n {collectionHasDraftsEnabled || globalHasDraftsEnabled ? (\n <Fragment>\n {(unsavedDraftWithValidations ||\n !autosaveEnabled ||\n (autosaveEnabled && showSaveDraftButton)) && (\n <RenderCustomComponent\n CustomComponent={CustomSaveDraftButton}\n Fallback={<SaveDraftButton />}\n />\n )}\n <RenderCustomComponent\n CustomComponent={CustomPublishButton}\n Fallback={<PublishButton />}\n />\n </Fragment>\n ) : (\n <RenderCustomComponent\n CustomComponent={CustomSaveButton}\n Fallback={<SaveButton />}\n />\n )}\n </Fragment>\n )}\n {hasDeletePermission && isTrashed && (\n <PermanentlyDeleteButton\n buttonId=\"action-permanently-delete\"\n collectionSlug={collectionConfig?.slug}\n id={id.toString()}\n onDelete={onDelete}\n redirectAfterDelete={redirectAfterDelete}\n singularLabel={collectionConfig?.labels?.singular}\n />\n )}\n {hasSavePermission && isTrashed && (\n <RestoreButton\n buttonId=\"action-restore\"\n collectionSlug={collectionConfig?.slug}\n id={id.toString()}\n onRestore={onRestore}\n redirectAfterRestore={redirectAfterRestore}\n singularLabel={collectionConfig?.labels?.singular}\n />\n )}\n {user && readOnlyForIncomingUser && (\n <Button\n buttonStyle=\"secondary\"\n id=\"take-over\"\n onClick={onTakeOver}\n size=\"medium\"\n type=\"button\"\n >\n {t('general:takeOver')}\n </Button>\n )}\n </div>\n {showDotMenu && !readOnlyForIncomingUser && (\n <Popup\n button={\n <div className={`${baseClass}__dots`}>\n <div />\n <div />\n <div />\n </div>\n }\n className={`${baseClass}__popup`}\n disabled={initializing || processing}\n horizontalAlign=\"right\"\n size=\"large\"\n verticalAlign=\"bottom\"\n >\n <PopupList.ButtonGroup>\n {showCopyToLocale && <CopyLocaleData />}\n {hasCreatePermission && (\n <React.Fragment>\n {!disableCreate && (\n <Fragment>\n {editDepth > 1 ? (\n <PopupList.Button id=\"action-create\" onClick={onDrawerCreateNew}>\n {i18n.t('general:createNew')}\n </PopupList.Button>\n ) : (\n <PopupList.Button\n href={formatAdminURL({\n adminRoute,\n path: `/collections/${collectionConfig?.slug}/create`,\n })}\n id=\"action-create\"\n >\n {i18n.t('general:createNew')}\n </PopupList.Button>\n )}\n </Fragment>\n )}\n {collectionConfig.disableDuplicate !== true && isEditing && (\n <>\n <DuplicateDocument\n id={id}\n onDuplicate={onDuplicate}\n redirectAfterDuplicate={redirectAfterDuplicate}\n singularLabel={collectionConfig?.labels?.singular}\n slug={collectionConfig?.slug}\n />\n {localization && (\n <DuplicateDocument\n id={id}\n onDuplicate={onDuplicate}\n redirectAfterDuplicate={redirectAfterDuplicate}\n selectLocales={true}\n singularLabel={collectionConfig?.labels?.singular}\n slug={collectionConfig?.slug}\n />\n )}\n </>\n )}\n </React.Fragment>\n )}\n {hasDeletePermission && (\n <DeleteDocument\n buttonId=\"action-delete\"\n collectionSlug={collectionConfig?.slug}\n id={id.toString()}\n onDelete={onDelete}\n redirectAfterDelete={redirectAfterDelete}\n singularLabel={collectionConfig?.labels?.singular}\n useAsTitle={collectionConfig?.admin?.useAsTitle}\n />\n )}\n <RenderCustomComponent\n CustomComponent={CustomUnpublishButton}\n Fallback={<UnpublishButton />}\n />\n {EditMenuItems}\n </PopupList.ButtonGroup>\n </Popup>\n )}\n </div>\n </div>\n <div className={`${baseClass}__divider`} />\n </Gutter>\n )\n}\n", "'use client'\nimport type { LivePreviewConfig, LivePreviewURLType } from 'payload'\nimport type { Dispatch } from 'react'\nimport type React from 'react'\n\nimport { createContext, use } from 'react'\n\nimport type { usePopupWindow } from '../../hooks/usePopupWindow.js'\nimport type { SizeReducerAction } from './sizeReducer.js'\n\nexport interface LivePreviewContextType {\n appIsReady: boolean\n breakpoint: LivePreviewConfig['breakpoints'][number]['name']\n breakpoints: LivePreviewConfig['breakpoints']\n iframeRef: React.RefObject<HTMLIFrameElement | null>\n isLivePreviewEnabled: boolean\n isLivePreviewing: boolean\n isPopupOpen: boolean\n isPreviewEnabled: boolean\n listeningForMessages?: boolean\n /**\n * The URL that has finished loading in the iframe or popup.\n * For example, if you set the `url`, it will begin to load into the iframe,\n * but `loadedURL` will not be set until the iframe's `onLoad` event fires.\n */\n loadedURL?: string\n measuredDeviceSize: {\n height: number\n width: number\n }\n openPopupWindow: ReturnType<typeof usePopupWindow>['openPopupWindow']\n popupRef?: React.RefObject<null | Window>\n previewURL?: string\n previewWindowType: 'iframe' | 'popup'\n setAppIsReady: (appIsReady: boolean) => void\n setBreakpoint: (breakpoint: LivePreviewConfig['breakpoints'][number]['name']) => void\n setHeight: (height: number) => void\n setIsLivePreviewing: (isLivePreviewing: boolean) => void\n setLoadedURL: (loadedURL: string) => void\n setMeasuredDeviceSize: (size: { height: number; width: number }) => void\n setPreviewURL: (url: string) => void\n setPreviewWindowType: (previewWindowType: 'iframe' | 'popup') => void\n setSize: Dispatch<SizeReducerAction>\n setToolbarPosition: (position: { x: number; y: number }) => void\n\n /**\n * Sets the URL of the preview (either iframe or popup).\n * Will trigger a reload of the window.\n */\n setURL: (url: string) => void\n setWidth: (width: number) => void\n setZoom: (zoom: number) => void\n size: {\n height: number\n width: number\n }\n toolbarPosition: {\n x: number\n y: number\n }\n /**\n * The live preview url property can be either a string or a function that returns a string.\n * It is important to know which one it is, so that we can opt in/out of certain behaviors, e.g. calling the server to get the URL.\n */\n typeofLivePreviewURL?: 'function' | 'string'\n url: LivePreviewURLType\n zoom: number\n}\n\nexport const LivePreviewContext = createContext<LivePreviewContextType>({\n appIsReady: false,\n breakpoint: undefined,\n breakpoints: undefined,\n iframeRef: undefined,\n isLivePreviewEnabled: undefined,\n isLivePreviewing: false,\n isPopupOpen: false,\n isPreviewEnabled: undefined,\n measuredDeviceSize: {\n height: 0,\n width: 0,\n },\n openPopupWindow: () => {},\n popupRef: undefined,\n previewURL: undefined,\n previewWindowType: 'iframe',\n setAppIsReady: () => {},\n setBreakpoint: () => {},\n setHeight: () => {},\n setIsLivePreviewing: () => {},\n setLoadedURL: () => {},\n setMeasuredDeviceSize: () => {},\n setPreviewURL: () => {},\n setPreviewWindowType: () => {},\n setSize: () => {},\n setToolbarPosition: () => {},\n setURL: () => {},\n setWidth: () => {},\n setZoom: () => {},\n size: {\n height: 0,\n width: 0,\n },\n toolbarPosition: {\n x: 0,\n y: 0,\n },\n typeofLivePreviewURL: undefined,\n url: undefined,\n zoom: 1,\n})\n\nexport const useLivePreviewContext = () => use(LivePreviewContext)\n\n/**\n * Hook to access live preview context values. Separated to prevent breaking changes. In the future this hook can be removed in favour of just using the LivePreview one.\n */\nexport const usePreviewURL = () => {\n const { isPreviewEnabled, previewURL, setPreviewURL } = use(LivePreviewContext)\n\n return { isPreviewEnabled, previewURL, setPreviewURL }\n}\n", "'use client'\n// TODO: abstract the `next/navigation` dependency out from this component\nimport type { ClientCollectionConfig, ClientGlobalConfig } from 'payload'\n\nimport { dequal } from 'dequal/lite'\nimport {\n formatAdminURL,\n getAutosaveInterval,\n hasDraftValidationEnabled,\n reduceFieldsToValues,\n} from 'payload/shared'\nimport * as qs from 'qs-esm'\nimport React, { useDeferredValue, useEffect, useRef, useState } from 'react'\n\nimport type { OnSaveContext } from '../../views/Edit/index.js'\n\nimport {\n useAllFormFields,\n useForm,\n useFormModified,\n useFormSubmitted,\n} from '../../forms/Form/context.js'\nimport { useDebounce } from '../../hooks/useDebounce.js'\nimport { useEffectEvent } from '../../hooks/useEffectEvent.js'\nimport { useQueue } from '../../hooks/useQueue.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useDocumentInfo } from '../../providers/DocumentInfo/index.js'\nimport { useLocale } from '../../providers/Locale/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { formatTimeToNow } from '../../utilities/formatDocTitle/formatDateTitle.js'\nimport { reduceFieldsToValuesWithValidation } from '../../utilities/reduceFieldsToValuesWithValidation.js'\nimport { LeaveWithoutSaving } from '../LeaveWithoutSaving/index.js'\nimport './index.scss'\n\nconst baseClass = 'autosave'\n// The minimum time the saving state should be shown\nconst minimumAnimationTime = 1000\n\nexport type Props = {\n collection?: ClientCollectionConfig\n global?: ClientGlobalConfig\n id?: number | string\n publishedDocUpdatedAt: string\n}\n\nexport const Autosave: React.FC<Props> = ({ id, collection, global: globalDoc }) => {\n const {\n config: {\n routes: { api },\n },\n } = useConfig()\n\n const {\n docConfig,\n lastUpdateTime,\n mostRecentVersionIsAutosaved,\n setMostRecentVersionIsAutosaved,\n setUnpublishedVersionCount,\n } = useDocumentInfo()\n\n const { isValid, setBackgroundProcessing, submit } = useForm()\n\n const [formState] = useAllFormFields()\n const modified = useFormModified()\n const submitted = useFormSubmitted()\n\n const { code: locale } = useLocale()\n const { i18n, t } = useTranslation()\n\n const interval = getAutosaveInterval(docConfig)\n const validateOnDraft = hasDraftValidationEnabled(docConfig)\n\n const [_saving, setSaving] = useState(false)\n\n const saving = useDeferredValue(_saving)\n\n const debouncedFormState = useDebounce(formState, interval)\n\n const { queueTask } = useQueue()\n\n const autosaveTimeoutRef = useRef<NodeJS.Timeout | null>(null)\n\n const handleAutosave = useEffectEvent(() => {\n autosaveTimeoutRef.current = undefined\n // We need to log the time in order to figure out if we need to trigger the state off later\n let startTimestamp = undefined\n let endTimestamp = undefined\n\n const hideIndicator = () => {\n // If request was faster than minimum animation time, animate the difference\n if (endTimestamp - startTimestamp < minimumAnimationTime) {\n autosaveTimeoutRef.current = setTimeout(\n () => {\n setSaving(false)\n },\n minimumAnimationTime - (endTimestamp - startTimestamp),\n )\n } else {\n stopAutoSaveIndicator()\n }\n }\n\n queueTask(\n async () => {\n if (modified) {\n startTimestamp = new Date().getTime()\n\n setSaving(true)\n\n let url: string\n let method: string\n let entitySlug: string\n const params = qs.stringify(\n {\n autosave: true,\n depth: 0,\n draft: true,\n 'fallback-locale': 'null',\n locale,\n },\n {\n addQueryPrefix: true,\n },\n )\n\n if (collection && id) {\n entitySlug = collection.slug\n url = formatAdminURL({\n apiRoute: api,\n path: `/${entitySlug}/${id}${params}`,\n })\n method = 'PATCH'\n }\n\n if (globalDoc) {\n entitySlug = globalDoc.slug\n url = formatAdminURL({\n apiRoute: api,\n path: `/globals/${entitySlug}${params}`,\n })\n method = 'POST'\n }\n\n const { valid } = reduceFieldsToValuesWithValidation(formState, true)\n\n const skipSubmission = submitted && !valid && validateOnDraft\n\n if (!skipSubmission && modified && url) {\n const result = await submit<any, OnSaveContext>({\n acceptValues: {\n overrideLocalChanges: false,\n },\n action: url,\n context: {\n getDocPermissions: false,\n incrementVersionCount: !mostRecentVersionIsAutosaved,\n },\n disableFormWhileProcessing: false,\n disableSuccessStatus: true,\n method,\n overrides: {\n _status: 'draft',\n },\n skipValidation: !validateOnDraft,\n })\n\n if (result && result?.res?.ok && !mostRecentVersionIsAutosaved) {\n setMostRecentVersionIsAutosaved(true)\n setUnpublishedVersionCount((prev) => prev + 1)\n }\n\n const newDate = new Date()\n\n // We need to log the time in order to figure out if we need to trigger the state off later\n endTimestamp = newDate.getTime()\n\n hideIndicator()\n }\n }\n },\n {\n afterProcess: () => {\n setBackgroundProcessing(false)\n },\n beforeProcess: () => {\n setBackgroundProcessing(true)\n },\n },\n )\n })\n\n const didMount = useRef(false)\n const previousDebouncedData = useRef(reduceFieldsToValues(debouncedFormState))\n\n // When debounced fields change, autosave\n useEffect(() => {\n /**\n * Ensure autosave doesn't run on mount\n */\n if (!didMount.current) {\n didMount.current = true\n return\n }\n\n /**\n * Ensure autosave only runs if the form data changes, not every time the entire form state changes\n * Remove `updatedAt` from comparison as it changes on every autosave interval.\n */\n const { updatedAt: _, ...formData } = reduceFieldsToValues(debouncedFormState)\n const { updatedAt: __, ...prevFormData } = previousDebouncedData.current\n\n if (dequal(formData, prevFormData)) {\n return\n }\n\n previousDebouncedData.current = formData\n\n handleAutosave()\n }, [debouncedFormState])\n\n /**\n * If component unmounts, clear the autosave timeout\n */\n useEffect(() => {\n return () => {\n stopAutoSaveIndicator()\n }\n }, [])\n\n const stopAutoSaveIndicator = useEffectEvent(() => {\n if (autosaveTimeoutRef.current) {\n clearTimeout(autosaveTimeoutRef.current)\n }\n\n setSaving(false)\n })\n\n return (\n <div className={baseClass}>\n {validateOnDraft && !isValid && <LeaveWithoutSaving />}\n {saving && t('general:saving')}\n {!saving && Boolean(lastUpdateTime) && (\n <React.Fragment>\n {t('version:lastSavedAgo', {\n distance: formatTimeToNow({ date: lastUpdateTime, i18n }),\n })}\n </React.Fragment>\n )}\n </div>\n )\n}\n", "import type { Data, FormState } from 'payload'\n\nimport { unflatten as flatleyUnflatten } from 'payload/shared'\n\ntype ReturnType = {\n data: Data\n valid: boolean\n}\n\n/**\n * Reduce flattened form fields (Fields) to just map to the respective values instead of the full FormField object\n *\n * @param unflatten This also unflattens the data if `unflatten` is true. The unflattened data should match the original data structure\n * @param ignoreDisableFormData - if true, will include fields that have `disableFormData` set to true, for example, blocks or arrays fields.\n *\n */\nexport const reduceFieldsToValuesWithValidation = (\n fields: FormState,\n unflatten?: boolean,\n ignoreDisableFormData?: boolean,\n): ReturnType => {\n const state: ReturnType = {\n data: {},\n valid: true,\n }\n\n if (!fields) {\n return state\n }\n\n Object.keys(fields).forEach((key) => {\n if (ignoreDisableFormData === true || !fields[key]?.disableFormData) {\n state.data[key] = fields[key]?.value\n if (!fields[key].valid) {\n state.valid = false\n }\n }\n })\n\n if (unflatten) {\n state.data = flatleyUnflatten(state.data)\n }\n\n return state\n}\n", "'use client'\nimport type { SanitizedCollectionConfig } from 'payload'\n\nimport { useModal } from '@faceless-ui/modal'\nimport { getTranslation } from '@payloadcms/translations'\nimport { useRouter } from 'next/navigation.js'\nimport { formatAdminURL } from 'payload/shared'\nimport React, { Fragment, useCallback, useState } from 'react'\nimport { toast } from 'sonner'\n\nimport type { DocumentDrawerContextType } from '../DocumentDrawer/Provider.js'\n\nimport { CheckboxInput } from '../../fields/Checkbox/Input.js'\nimport { useForm } from '../../forms/Form/context.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useDocumentTitle } from '../../providers/DocumentTitle/index.js'\nimport { useRouteTransition } from '../../providers/RouteTransition/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { requests } from '../../utilities/api.js'\nimport { ConfirmationModal } from '../ConfirmationModal/index.js'\nimport { PopupList } from '../Popup/index.js'\nimport { Translation } from '../Translation/index.js'\nimport './index.scss'\n\nconst baseClass = 'delete-document'\n\nexport type Props = {\n readonly buttonId?: string\n readonly collectionSlug: SanitizedCollectionConfig['slug']\n readonly id?: string\n readonly onDelete?: DocumentDrawerContextType['onDelete']\n readonly redirectAfterDelete?: boolean\n readonly singularLabel: SanitizedCollectionConfig['labels']['singular']\n readonly title?: string\n readonly useAsTitle: SanitizedCollectionConfig['admin']['useAsTitle']\n}\n\nexport const DeleteDocument: React.FC<Props> = (props) => {\n const {\n id,\n buttonId,\n collectionSlug,\n onDelete,\n redirectAfterDelete = true,\n singularLabel,\n title: titleFromProps,\n } = props\n\n const {\n config: {\n routes: { admin: adminRoute, api },\n },\n getEntityConfig,\n } = useConfig()\n\n const collectionConfig = getEntityConfig({ collectionSlug })\n\n const { setModified } = useForm()\n const router = useRouter()\n const { i18n, t } = useTranslation()\n const { title } = useDocumentTitle()\n const { startRouteTransition } = useRouteTransition()\n const { openModal } = useModal()\n\n const modalSlug = `delete-${id}`\n\n const [deletePermanently, setDeletePermanently] = useState(false)\n\n const addDefaultError = useCallback(() => {\n toast.error(t('error:deletingTitle', { title }))\n }, [t, title])\n\n const handleDelete = useCallback(async () => {\n setModified(false)\n\n try {\n const url = formatAdminURL({\n apiRoute: api,\n path: `/${collectionSlug}/${id}`,\n })\n const res =\n deletePermanently || !collectionConfig.trash\n ? await requests.delete(url, {\n headers: {\n 'Accept-Language': i18n.language,\n 'Content-Type': 'application/json',\n },\n })\n : await requests.patch(url, {\n body: JSON.stringify({\n deletedAt: new Date().toISOString(),\n }),\n headers: {\n 'Accept-Language': i18n.language,\n 'Content-Type': 'application/json',\n },\n })\n\n const json = await res.json()\n\n if (res.status < 400) {\n toast.success(\n t(\n deletePermanently || !collectionConfig.trash\n ? 'general:titleDeleted'\n : 'general:titleTrashed',\n {\n label: getTranslation(singularLabel, i18n),\n title,\n },\n ) || json.message,\n )\n\n if (redirectAfterDelete) {\n return startRouteTransition(() =>\n router.push(formatAdminURL({ adminRoute, path: `/collections/${collectionSlug}` })),\n )\n }\n\n if (typeof onDelete === 'function') {\n await onDelete({ id, collectionConfig })\n }\n\n return\n }\n\n if (json.errors) {\n json.errors.forEach((error) => toast.error(error.message))\n } else {\n addDefaultError()\n }\n\n return\n } catch (_err) {\n return addDefaultError()\n }\n }, [\n deletePermanently,\n setModified,\n\n api,\n collectionSlug,\n id,\n t,\n singularLabel,\n addDefaultError,\n i18n,\n title,\n router,\n adminRoute,\n redirectAfterDelete,\n onDelete,\n collectionConfig,\n startRouteTransition,\n ])\n\n if (id) {\n return (\n <Fragment>\n <PopupList.Button\n id={buttonId}\n onClick={() => {\n openModal(modalSlug)\n }}\n >\n {t('general:delete')}\n </PopupList.Button>\n <ConfirmationModal\n body={\n <Fragment>\n <Translation\n elements={{\n '1': ({ children }) => <strong>{children}</strong>,\n }}\n i18nKey={collectionConfig.trash ? 'general:aboutToTrash' : 'general:aboutToDelete'}\n t={t}\n variables={{\n label: getTranslation(singularLabel, i18n),\n title: titleFromProps || title || id,\n }}\n />\n {collectionConfig.trash && (\n <div className={`${baseClass}__checkbox`}>\n <CheckboxInput\n checked={deletePermanently}\n id=\"delete-forever\"\n label={t('general:deletePermanently')}\n name=\"delete-forever\"\n onToggle={(e) => setDeletePermanently(e.target.checked)}\n />\n </div>\n )}\n </Fragment>\n }\n className={baseClass}\n confirmingLabel={t('general:deleting')}\n heading={t('general:confirmDeletion')}\n modalSlug={modalSlug}\n onConfirm={handleDelete}\n />\n </Fragment>\n )\n }\n\n return null\n}\n", "'use client'\n\nimport type { SanitizedCollectionConfig } from 'payload'\n\nimport { useModal } from '@faceless-ui/modal'\nimport { getTranslation } from '@payloadcms/translations'\nimport { useRouter } from 'next/navigation.js'\nimport { formatAdminURL, hasDraftsEnabled } from 'payload/shared'\nimport * as qs from 'qs-esm'\nimport React, { useCallback, useMemo } from 'react'\nimport { toast } from 'sonner'\n\nimport type { DocumentDrawerContextType } from '../DocumentDrawer/Provider.js'\n\nimport { useForm, useFormModified } from '../../forms/Form/context.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useLocale } from '../../providers/Locale/index.js'\nimport { useRouteTransition } from '../../providers/RouteTransition/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { requests } from '../../utilities/api.js'\nimport { traverseForLocalizedFields } from '../../utilities/traverseForLocalizedFields.js'\nimport { ConfirmationModal } from '../ConfirmationModal/index.js'\nimport { PopupList } from '../Popup/index.js'\nimport { SelectLocalesDrawer } from './SelectLocalesDrawer/index.js'\n\nexport type Props = {\n readonly id: number | string\n readonly onDuplicate?: DocumentDrawerContextType['onDuplicate']\n readonly redirectAfterDuplicate?: boolean\n readonly selectLocales?: boolean\n readonly singularLabel: SanitizedCollectionConfig['labels']['singular']\n readonly slug: string\n}\n\nexport const DuplicateDocument: React.FC<Props> = ({\n id,\n slug,\n onDuplicate,\n redirectAfterDuplicate = true,\n selectLocales,\n singularLabel,\n}) => {\n const router = useRouter()\n const modified = useFormModified()\n const { openModal } = useModal()\n const { code: localeCode } = useLocale()\n const { setModified } = useForm()\n const { startRouteTransition } = useRouteTransition()\n\n const {\n config: {\n localization,\n routes: { admin: adminRoute, api: apiRoute },\n },\n getEntityConfig,\n } = useConfig()\n\n const collectionConfig = getEntityConfig({ collectionSlug: slug })\n\n const { i18n, t } = useTranslation()\n\n const modalSlug = `duplicate-${id}`\n const drawerSlug = `duplicate-locales-${id}`\n\n const isDuplicateByLocaleEnabled = useMemo(() => {\n if (selectLocales && collectionConfig) {\n return traverseForLocalizedFields(collectionConfig.fields)\n }\n return false\n }, [collectionConfig, selectLocales])\n\n const handleDuplicate = useCallback(\n async (args?: { selectedLocales?: string[] }) => {\n const { selectedLocales } = args || {}\n const hasSelectedLocales = selectedLocales && selectedLocales.length > 0\n\n const queryParams: Record<string, string | string[]> = {}\n if (localeCode) {\n queryParams.locale = localeCode\n }\n if (hasSelectedLocales) {\n queryParams.selectedLocales = selectedLocales\n }\n\n const headers = {\n 'Accept-Language': i18n.language,\n 'Content-Type': 'application/json',\n credentials: 'include',\n }\n\n try {\n const res = await requests.post(\n formatAdminURL({\n apiRoute,\n path: `/${slug}/${id}/duplicate${qs.stringify(queryParams, {\n addQueryPrefix: true,\n })}`,\n }),\n {\n body: JSON.stringify(hasDraftsEnabled(collectionConfig) ? { _status: 'draft' } : {}),\n headers,\n },\n )\n\n const { doc, errors, message } = await res.json()\n\n if (res.status < 400) {\n toast.success(\n message ||\n t('general:successfullyDuplicated', { label: getTranslation(singularLabel, i18n) }),\n )\n\n setModified(false)\n\n if (redirectAfterDuplicate) {\n return startRouteTransition(() =>\n router.push(\n formatAdminURL({\n adminRoute,\n path: `/collections/${slug}/${doc.id}${localeCode ? `?locale=${localeCode}` : ''}`,\n }),\n ),\n )\n }\n\n if (typeof onDuplicate === 'function') {\n void onDuplicate({ collectionConfig, doc })\n }\n } else {\n toast.error(\n errors?.[0].message ||\n message ||\n t('error:unspecific', { label: getTranslation(singularLabel, i18n) }),\n )\n }\n } catch (_error) {\n toast.error(t('error:unspecific', { label: getTranslation(singularLabel, i18n) }))\n }\n },\n [\n adminRoute,\n apiRoute,\n collectionConfig,\n i18n,\n id,\n localeCode,\n onDuplicate,\n redirectAfterDuplicate,\n router,\n setModified,\n singularLabel,\n slug,\n startRouteTransition,\n t,\n ],\n )\n\n const handleConfirmWithoutSaving = useCallback(async () => {\n if (selectLocales) {\n openModal(drawerSlug)\n } else {\n await handleDuplicate()\n }\n }, [handleDuplicate, drawerSlug, selectLocales, openModal])\n\n const buttonLabel = selectLocales\n ? `${t('general:duplicate')} ${t('localization:selectedLocales')}`\n : t('general:duplicate')\n\n if (!selectLocales || isDuplicateByLocaleEnabled) {\n return (\n <React.Fragment>\n <PopupList.Button\n id={`action-duplicate${isDuplicateByLocaleEnabled ? `-locales` : ''}`}\n onClick={() => {\n if (modified) {\n openModal(modalSlug)\n } else if (selectLocales) {\n openModal(drawerSlug)\n } else {\n void handleDuplicate()\n }\n }}\n >\n {buttonLabel}\n </PopupList.Button>\n <ConfirmationModal\n body={t('general:unsavedChangesDuplicate')}\n confirmLabel={t('general:duplicateWithoutSaving')}\n heading={t('general:unsavedChanges')}\n modalSlug={modalSlug}\n onConfirm={handleConfirmWithoutSaving}\n />\n {selectLocales && localization && (\n <SelectLocalesDrawer\n localization={localization}\n onConfirm={handleDuplicate}\n slug={drawerSlug}\n />\n )}\n </React.Fragment>\n )\n }\n\n return null\n}\n", "import type { ClientField, Field } from 'payload'\n\nexport const traverseForLocalizedFields = (fields: ClientField[] | Field[]): boolean => {\n for (const field of fields) {\n if ('localized' in field && field.localized) {\n return true\n }\n\n switch (field.type) {\n case 'array':\n case 'collapsible':\n case 'group':\n case 'row':\n if (field.fields && traverseForLocalizedFields(field.fields)) {\n return true\n }\n break\n\n case 'blocks':\n if (field.blocks) {\n for (const block of field.blocks) {\n if (block.fields && traverseForLocalizedFields(block.fields)) {\n return true\n }\n }\n }\n break\n\n case 'tabs':\n if (field.tabs) {\n for (const tab of field.tabs) {\n if ('localized' in tab && tab.localized) {\n return true\n }\n if ('fields' in tab && tab.fields && traverseForLocalizedFields(tab.fields)) {\n return true\n }\n }\n }\n break\n }\n }\n\n return false\n}\n", "'use client'\n\nimport type { I18nClient } from '@payloadcms/translations'\nimport type { ClientConfig } from 'payload'\n\nimport { useModal } from '@faceless-ui/modal'\nimport { getTranslation } from '@payloadcms/translations'\nimport { setsAreEqual } from 'payload/shared'\nimport React, { useCallback, useMemo, useState } from 'react'\n\nimport { CheckboxInput } from '../../../fields/Checkbox/index.js'\nimport { useTranslation } from '../../../providers/Translation/index.js'\nimport { DrawerHeader } from '../../BulkUpload/Header/index.js'\nimport { Button } from '../../Button/index.js'\nimport { Drawer } from '../../Drawer/index.js'\nimport './index.scss'\n\nexport type LocaleOption = {\n label: string\n value: string\n}\n\nexport type SelectLocalesDrawerProps = {\n readonly localization: Exclude<ClientConfig['localization'], false>\n readonly onConfirm: (args: { selectedLocales: string[] }) => Promise<void> | void\n readonly slug: string\n}\n\nconst getLocaleOptions = ({\n i18n,\n localization,\n}: {\n i18n: I18nClient\n localization: SelectLocalesDrawerProps['localization']\n}): LocaleOption[] => {\n return localization.locales.map((locale) => ({\n label: getTranslation(locale.label, i18n),\n value: locale.code,\n }))\n}\n\nconst baseClass = 'select-locales-drawer'\n\nexport const SelectLocalesDrawer: React.FC<SelectLocalesDrawerProps> = ({\n slug,\n localization,\n onConfirm,\n}) => {\n const { i18n, t } = useTranslation()\n const { toggleModal } = useModal()\n const [selectedLocales, setSelectedLocales] = useState<string[]>([])\n\n const localeOptions = useMemo(\n () => getLocaleOptions({ i18n, localization }),\n [localization, i18n],\n )\n const allLocales = useMemo(() => localeOptions.map((locale) => locale.value), [localeOptions])\n const allLocalesSelected = useMemo(\n () => setsAreEqual(new Set(selectedLocales), new Set(allLocales)),\n [selectedLocales, allLocales],\n )\n\n const handleSelectAll = useCallback(() => {\n setSelectedLocales(allLocalesSelected ? [] : [...allLocales])\n }, [allLocalesSelected, allLocales])\n\n const handleToggleLocale = useCallback((localeValue: string) => {\n setSelectedLocales((prev) =>\n prev.includes(localeValue) ? prev.filter((l) => l !== localeValue) : [...prev, localeValue],\n )\n }, [])\n\n const handleConfirm = useCallback(async () => {\n await onConfirm({ selectedLocales })\n toggleModal(slug)\n }, [onConfirm, selectedLocales, slug, toggleModal])\n\n return (\n <Drawer\n className={baseClass}\n gutter={false}\n Header={\n <DrawerHeader\n onClose={() => {\n toggleModal(slug)\n }}\n title={`${t('general:duplicate')} ${t('localization:selectedLocales')}`}\n />\n }\n slug={slug}\n >\n <div className={`${baseClass}__sub-header`}>\n <span>{t('localization:selectLocaleToDuplicate')}</span>\n <Button\n buttonStyle=\"primary\"\n disabled={selectedLocales.length === 0}\n iconPosition=\"left\"\n id=\"#action-duplicate-confirm\"\n onClick={handleConfirm}\n size=\"medium\"\n >\n {t('general:duplicate')}\n </Button>\n </div>\n <div className={`${baseClass}__content`}>\n <div className={`${baseClass}__item`}>\n <CheckboxInput\n checked={allLocalesSelected}\n id=\"select-locale-all\"\n label={t('general:selectAll', {\n count: allLocales.length,\n label: t('general:locales'),\n })}\n onToggle={handleSelectAll}\n />\n </div>\n {localeOptions.map((locale) => (\n <div className={`${baseClass}__item`} key={locale.value}>\n <CheckboxInput\n checked={selectedLocales.includes(locale.value)}\n id={`select-locale-${locale.value}`}\n label={locale.label}\n onToggle={() => handleToggleLocale(locale.value)}\n />\n </div>\n ))}\n </div>\n </Drawer>\n )\n}\n", "import React from 'react'\n\nimport { EyeIcon } from '../../../icons/Eye/index.js'\nimport { useLivePreviewContext } from '../../../providers/LivePreview/context.js'\nimport { useTranslation } from '../../../providers/Translation/index.js'\nimport './index.scss'\n\nconst baseClass = 'live-preview-toggler'\n\nexport const LivePreviewToggler: React.FC = () => {\n const { isLivePreviewing, setIsLivePreviewing, url: livePreviewURL } = useLivePreviewContext()\n const { t } = useTranslation()\n\n if (!livePreviewURL) {\n return null\n }\n\n return (\n <button\n aria-label={isLivePreviewing ? t('general:exitLivePreview') : t('general:livePreview')}\n className={[baseClass, isLivePreviewing && `${baseClass}--active`].filter(Boolean).join(' ')}\n id=\"live-preview-toggler\"\n onClick={() => {\n setIsLivePreviewing(!isLivePreviewing)\n }}\n title={isLivePreviewing ? t('general:exitLivePreview') : t('general:livePreview')}\n type=\"button\"\n >\n <EyeIcon active={isLivePreviewing} />\n </button>\n )\n}\n", "import React, { Fragment } from 'react'\n\nimport './index.scss'\n\nexport const EyeIcon: React.FC<{ active?: boolean; className?: string }> = ({\n active = true,\n className,\n}) => (\n <svg\n className={[className, 'icon icon--eye'].filter(Boolean).join(' ')}\n viewBox=\"0 0 16 12\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n {!active ? (\n <Fragment>\n <circle className=\"stroke\" cx=\"8.5\" cy=\"6\" r=\"2.5\" />\n <path\n className=\"stroke\"\n d=\"M8.5 1C3.83333 1 1.5 6 1.5 6C1.5 6 3.83333 11 8.5 11C13.1667 11 15.5 6 15.5 6C15.5 6 13.1667 1 8.5 1Z\"\n />\n </Fragment>\n ) : (\n <Fragment>\n <path\n className=\"stroke\"\n d=\"M2 11.5L4.35141 9.51035M15 0.5L12.6486 2.48965M10.915 6.64887C10.6493 7.64011 9.78959 8.38832 8.7408 8.48855M10.4085 4.38511C9.94992 3.84369 9.2651 3.5 8.5 3.5C7.11929 3.5 6 4.61929 6 6C6 6.61561 6.22251 7.17926 6.59149 7.61489M10.4085 4.38511L6.59149 7.61489M10.4085 4.38511L12.6486 2.48965M6.59149 7.61489L4.35141 9.51035M14.1292 3.92915C15.0431 5.02085 15.5 6 15.5 6C15.5 6 13.1667 11 8.5 11C7.67995 11 6.93195 10.8456 6.256 10.5911M4.35141 9.51035C2.45047 8.03672 1.5 6 1.5 6C1.5 6 3.83333 1 8.5 1C10.1882 1 11.5711 1.65437 12.6486 2.48965\"\n />\n </Fragment>\n )}\n </svg>\n)\n", "'use client'\nimport type { ClientUser } from 'payload'\n\nimport React, { useState } from 'react'\n\nimport { LockIcon } from '../../icons/Lock/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { isClientUserObject } from '../../utilities/isClientUserObject.js'\nimport { Tooltip } from '../Tooltip/index.js'\nimport './index.scss'\n\nconst baseClass = 'locked'\n\nexport const Locked: React.FC<{\n className?: string\n user: ClientUser\n}> = ({ className, user }) => {\n const [hovered, setHovered] = useState(false)\n const { t } = useTranslation()\n\n const userToUse = isClientUserObject(user) ? (user.email ?? user.id) : t('general:anotherUser')\n\n return (\n <div\n className={[baseClass, className].filter(Boolean).join(' ')}\n onMouseEnter={() => setHovered(true)}\n onMouseLeave={() => setHovered(false)}\n role=\"button\"\n tabIndex={0}\n >\n <Tooltip\n alignCaret=\"left\"\n className={`${baseClass}__tooltip`}\n position=\"top\"\n show={hovered}\n >{`${userToUse} ${t('general:isEditing')}`}</Tooltip>\n <LockIcon />\n </div>\n )\n}\n", "import React from 'react'\n\nimport './index.scss'\n\nexport const LockIcon: React.FC<{ className?: string }> = ({ className }) => (\n <svg\n className={['icon icon--lock', className].filter(Boolean).join(' ')}\n fill=\"none\"\n height=\"20\"\n viewBox=\"0 0 20 20\"\n width=\"20\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n className=\"stroke\"\n d=\"M7.5 9.5V7.5C7.5 6.83696 7.76339 6.20107 8.23223 5.73223C8.70107 5.26339 9.33696 5 10 5C10.663 5 11.2989 5.26339 11.7678 5.73223C12.2366 6.20107 12.5 6.83696 12.5 7.5V9.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeOpacity=\"1\"\n />\n <path\n className=\"stroke\"\n d=\"M13.5 9.5H6.5C5.94772 9.5 5.5 9.94772 5.5 10.5V14C5.5 14.5523 5.94772 15 6.5 15H13.5C14.0523 15 14.5 14.5523 14.5 14V10.5C14.5 9.94772 14.0523 9.5 13.5 9.5Z\"\n stopOpacity=\"1\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n)\n", "'use client'\n\nimport type { SanitizedCollectionConfig } from 'payload'\n\nimport { useModal } from '@faceless-ui/modal'\nimport { getTranslation } from '@payloadcms/translations'\nimport { useRouter } from 'next/navigation.js'\nimport { formatAdminURL } from 'payload/shared'\nimport * as qs from 'qs-esm'\nimport React, { Fragment, useCallback } from 'react'\nimport { toast } from 'sonner'\n\nimport type { DocumentDrawerContextType } from '../DocumentDrawer/Provider.js'\n\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useDocumentTitle } from '../../providers/DocumentTitle/index.js'\nimport { useRouteTransition } from '../../providers/RouteTransition/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { requests } from '../../utilities/api.js'\nimport { Button } from '../Button/index.js'\nimport { ConfirmationModal } from '../ConfirmationModal/index.js'\nimport { Translation } from '../Translation/index.js'\n\nexport type Props = {\n readonly buttonId?: string\n readonly collectionSlug: SanitizedCollectionConfig['slug']\n readonly id?: string\n readonly onDelete?: DocumentDrawerContextType['onDelete']\n readonly redirectAfterDelete?: boolean\n readonly singularLabel: SanitizedCollectionConfig['labels']['singular']\n readonly title?: string\n}\n\nexport const PermanentlyDeleteButton: React.FC<Props> = (props) => {\n const {\n id,\n buttonId,\n collectionSlug,\n onDelete,\n redirectAfterDelete = true,\n singularLabel,\n title: titleFromProps,\n } = props\n\n const {\n config: {\n routes: { admin: adminRoute, api },\n serverURL,\n },\n getEntityConfig,\n } = useConfig()\n\n const collectionConfig = getEntityConfig({ collectionSlug })\n const router = useRouter()\n const { i18n, t } = useTranslation()\n const { title } = useDocumentTitle()\n const { startRouteTransition } = useRouteTransition()\n const { openModal } = useModal()\n\n const modalSlug = `perma-delete-${id}`\n\n const addDefaultError = useCallback(() => {\n toast.error(t('error:deletingTitle', { title }))\n }, [t, title])\n\n const handleDelete = useCallback(async () => {\n try {\n const url = formatAdminURL({\n apiRoute: api,\n path: `/${collectionSlug}${qs.stringify(\n {\n trash: true,\n where: {\n and: [{ id: { equals: id } }, { deletedAt: { exists: true } }],\n },\n },\n {\n addQueryPrefix: true,\n },\n )}`,\n })\n\n const res = await requests.delete(url, {\n headers: {\n 'Accept-Language': i18n.language,\n 'Content-Type': 'application/json',\n },\n })\n\n const json = await res.json()\n\n if (res.status < 400) {\n toast.success(\n t('general:titleDeleted', {\n label: getTranslation(singularLabel, i18n),\n title,\n }) || json.message,\n )\n\n if (redirectAfterDelete) {\n return startRouteTransition(() =>\n router.push(\n formatAdminURL({\n adminRoute,\n path: `/collections/${collectionSlug}/trash`,\n serverURL,\n }),\n ),\n )\n }\n\n if (typeof onDelete === 'function') {\n await onDelete({ id, collectionConfig })\n }\n\n return\n }\n\n if (json.errors) {\n json.errors.forEach((error) => toast.error(error.message))\n } else {\n addDefaultError()\n }\n } catch (_err) {\n addDefaultError()\n }\n }, [\n serverURL,\n api,\n collectionSlug,\n id,\n t,\n singularLabel,\n addDefaultError,\n i18n,\n title,\n router,\n adminRoute,\n redirectAfterDelete,\n onDelete,\n collectionConfig,\n startRouteTransition,\n ])\n\n if (id) {\n return (\n <Fragment>\n <Button\n buttonStyle=\"secondary\"\n id={buttonId}\n onClick={() => {\n openModal(modalSlug)\n }}\n >\n {t('general:permanentlyDelete')}\n </Button>\n <ConfirmationModal\n body={\n <Translation\n elements={{\n '1': ({ children }) => <strong>{children}</strong>,\n }}\n i18nKey=\"general:aboutToPermanentlyDelete\"\n t={t}\n variables={{\n label: getTranslation(singularLabel, i18n),\n title: titleFromProps || title || id,\n }}\n />\n }\n confirmingLabel={t('general:deleting')}\n heading={t('general:confirmDeletion')}\n modalSlug={modalSlug}\n onConfirm={handleDelete}\n />\n </Fragment>\n )\n }\n\n return null\n}\n", "'use client'\nimport type { PreviewButtonClientProps } from 'payload'\n\nimport React from 'react'\n\nimport { ExternalLinkIcon } from '../../icons/ExternalLink/index.js'\nimport './index.scss'\nimport { usePreviewURL } from '../../providers/LivePreview/context.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\n\nconst baseClass = 'preview-btn'\n\nexport function PreviewButton(props: PreviewButtonClientProps) {\n const { previewURL } = usePreviewURL()\n const { t } = useTranslation()\n\n if (!previewURL) {\n return null\n }\n\n return (\n <a\n aria-label={t('version:preview')}\n className={baseClass}\n href={previewURL}\n id=\"preview-button\"\n target=\"_blank\"\n title={t('version:preview')}\n >\n <ExternalLinkIcon />\n </a>\n )\n}\n", "import React from 'react'\n\nimport './index.scss'\n\nexport const ExternalLinkIcon: React.FC<{\n className?: string\n}> = (props) => {\n const { className } = props\n return (\n <svg\n className={[className, 'icon icon--externalLink'].filter(Boolean).join(' ')}\n viewBox=\"0 0 20 20\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n className=\"stroke\"\n d=\"M16 10.6667V14.6667C16 15.0203 15.8595 15.3594 15.6095 15.6095C15.3594 15.8595 15.0203 16 14.6667 16H5.33333C4.97971 16 4.64057 15.8595 4.39052 15.6095C4.14048 15.3594 4 15.0203 4 14.6667V5.33333C4 4.97971 4.14048 4.64057 4.39052 4.39052C4.64057 4.14048 4.97971 4 5.33333 4H9.33333M16 4L10 10M16 4H12M16 4V8\"\n strokeLinecap=\"square\"\n />\n </svg>\n )\n}\n", "'use client'\n\nimport type { PublishButtonClientProps } from 'payload'\n\nimport { useModal } from '@faceless-ui/modal'\nimport { getTranslation } from '@payloadcms/translations'\nimport {\n formatAdminURL,\n hasAutosaveEnabled,\n hasLocalizeStatusEnabled,\n hasScheduledPublishEnabled,\n} from 'payload/shared'\nimport * as qs from 'qs-esm'\nimport React, { useCallback, useEffect, useState } from 'react'\n\nimport { useForm, useFormModified } from '../../forms/Form/context.js'\nimport { FormSubmit } from '../../forms/Submit/index.js'\nimport { useHotkey } from '../../hooks/useHotkey.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useDocumentInfo } from '../../providers/DocumentInfo/index.js'\nimport { useEditDepth } from '../../providers/EditDepth/index.js'\nimport { useLocale } from '../../providers/Locale/index.js'\nimport { useOperation } from '../../providers/Operation/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { traverseForLocalizedFields } from '../../utilities/traverseForLocalizedFields.js'\nimport { PopupList } from '../Popup/index.js'\nimport { ScheduleDrawer } from './ScheduleDrawer/index.js'\n\nexport function PublishButton({\n label: labelProp,\n}: { label?: string } & PublishButtonClientProps = {}) {\n const {\n id,\n collectionSlug,\n globalSlug,\n hasPublishedDoc,\n hasPublishPermission,\n setHasPublishedDoc,\n setMostRecentVersionIsAutosaved,\n setUnpublishedVersionCount,\n unpublishedVersionCount,\n uploadStatus,\n } = useDocumentInfo()\n\n const { config, getEntityConfig } = useConfig()\n const { submit } = useForm()\n const modified = useFormModified()\n const editDepth = useEditDepth()\n const { code: localeCode } = useLocale()\n const { isModalOpen, toggleModal } = useModal()\n\n const drawerSlug = `schedule-publish-${id}`\n\n const {\n localization,\n routes: { api },\n } = config\n\n const { i18n, t } = useTranslation()\n const label = labelProp || t('version:publishChanges')\n\n const entityConfig = React.useMemo(() => {\n if (collectionSlug) {\n return getEntityConfig({ collectionSlug })\n }\n\n if (globalSlug) {\n return getEntityConfig({ globalSlug })\n }\n }, [collectionSlug, globalSlug, getEntityConfig])\n\n const hasNewerVersions = unpublishedVersionCount > 0\n\n const canPublish =\n hasPublishPermission &&\n (modified || hasNewerVersions || !hasPublishedDoc) &&\n uploadStatus !== 'uploading'\n\n const scheduledPublishEnabled = hasScheduledPublishEnabled(entityConfig)\n\n // If autosave is enabled the modified will always be true so only conditionally check on modified state\n const hasAutosave = hasAutosaveEnabled(entityConfig)\n\n const canSchedulePublish = Boolean(\n scheduledPublishEnabled &&\n hasPublishPermission &&\n (globalSlug || (collectionSlug && id)) &&\n (hasAutosave || !modified),\n )\n\n const [hasLocalizedFields, setHasLocalizedFields] = useState(false)\n\n useEffect(() => {\n const hasLocalizedField = traverseForLocalizedFields(entityConfig?.fields)\n setHasLocalizedFields(hasLocalizedField)\n }, [entityConfig?.fields])\n\n const isSpecificLocalePublishEnabled = localization && hasLocalizedFields && hasPublishPermission\n\n const operation = useOperation()\n\n const disabled = operation === 'update' && !modified\n\n const saveDraft = useCallback(async () => {\n if (disabled) {\n return\n }\n\n const params = qs.stringify(\n {\n depth: 0,\n draft: true,\n 'fallback-locale': 'null',\n locale: localeCode,\n },\n { addQueryPrefix: true },\n )\n\n let action\n let method = 'POST'\n\n if (collectionSlug) {\n action = formatAdminURL({\n apiRoute: api,\n path: `/${collectionSlug}${id ? `/${id}` : ''}${params}`,\n })\n if (id) {\n method = 'PATCH'\n }\n }\n\n if (globalSlug) {\n action = formatAdminURL({\n apiRoute: api,\n path: `/globals/${globalSlug}${params}`,\n })\n }\n\n await submit({\n action,\n method,\n overrides: {\n _status: 'draft',\n },\n skipValidation: true,\n })\n }, [disabled, localeCode, collectionSlug, globalSlug, submit, api, id])\n\n useHotkey({ cmdCtrlKey: true, editDepth, keyCodes: ['s'] }, (e) => {\n e.preventDefault()\n e.stopPropagation()\n\n if (saveDraft && hasAutosave) {\n void saveDraft()\n }\n })\n\n const localizeStatusEnabled = hasLocalizeStatusEnabled(entityConfig)\n\n const publish = useCallback(async () => {\n if (uploadStatus === 'uploading') {\n return\n }\n\n const params = qs.stringify(\n {\n depth: 0,\n locale: localeCode,\n ...(localizeStatusEnabled && { publishAllLocales: true }),\n },\n { addQueryPrefix: true },\n )\n\n const action = formatAdminURL({\n apiRoute: api,\n path: `${\n globalSlug ? `/globals/${globalSlug}` : `/${collectionSlug}${id ? `/${id}` : ''}`\n }${params}` as `/${string}`,\n })\n\n const result = await submit({\n action,\n overrides: {\n _status: 'published',\n },\n })\n\n if (result) {\n setUnpublishedVersionCount(0)\n setMostRecentVersionIsAutosaved(false)\n setHasPublishedDoc(true)\n }\n }, [\n localeCode,\n localizeStatusEnabled,\n api,\n collectionSlug,\n globalSlug,\n id,\n setHasPublishedDoc,\n submit,\n setUnpublishedVersionCount,\n uploadStatus,\n setMostRecentVersionIsAutosaved,\n ])\n\n const publishSpecificLocale = useCallback(\n async (locale) => {\n if (uploadStatus === 'uploading') {\n return\n }\n\n const params = qs.stringify(\n {\n depth: 0,\n locale,\n publishSpecificLocale: locale,\n },\n { addQueryPrefix: true },\n )\n\n const pathSegment = globalSlug\n ? `/globals/${globalSlug}`\n : `/${collectionSlug}${id ? `/${id}` : ''}`\n const action = formatAdminURL({\n apiRoute: api,\n path: `${pathSegment}${params}` as `/${string}`,\n })\n\n const result = await submit({\n action,\n overrides: {\n _status: 'published',\n },\n })\n\n if (result) {\n setHasPublishedDoc(true)\n }\n },\n [api, collectionSlug, globalSlug, id, setHasPublishedDoc, submit, uploadStatus],\n )\n\n // Publish to all locales unless there are localized fields AND defaultLocalePublishOption is 'active'\n const isDefaultPublishAll =\n !isSpecificLocalePublishEnabled ||\n (localization && localization?.defaultLocalePublishOption !== 'active')\n\n const activeLocale =\n localization &&\n localization?.locales.find((locale) =>\n typeof locale === 'string' ? locale === localeCode : locale.code === localeCode,\n )\n\n const activeLocaleLabel = activeLocale && getTranslation(activeLocale.label, i18n)\n\n if (!hasPublishPermission) {\n return null\n }\n\n return (\n <React.Fragment>\n <FormSubmit\n buttonId=\"action-save\"\n disabled={!canPublish}\n enableSubMenu={canSchedulePublish}\n onClick={isDefaultPublishAll ? publish : () => publishSpecificLocale(activeLocale.code)}\n size=\"medium\"\n SubMenuPopupContent={\n isSpecificLocalePublishEnabled || canSchedulePublish\n ? ({ close }) => {\n return (\n <React.Fragment>\n {canSchedulePublish && (\n <PopupList.ButtonGroup key=\"schedule-publish\">\n <PopupList.Button\n id=\"schedule-publish\"\n onClick={() => [toggleModal(drawerSlug), close()]}\n >\n {t('version:schedulePublish')}\n </PopupList.Button>\n </PopupList.ButtonGroup>\n )}\n {isSpecificLocalePublishEnabled && (\n <PopupList.ButtonGroup>\n <PopupList.Button\n id=\"publish-locale\"\n onClick={\n isDefaultPublishAll\n ? () => publishSpecificLocale(activeLocale.code)\n : publish\n }\n >\n {isDefaultPublishAll\n ? t('version:publishIn', { locale: activeLocaleLabel })\n : t('version:publishAllLocales')}\n </PopupList.Button>\n </PopupList.ButtonGroup>\n )}\n </React.Fragment>\n )\n }\n : undefined\n }\n type=\"button\"\n >\n {!isDefaultPublishAll ? t('version:publishIn', { locale: activeLocaleLabel }) : label}\n </FormSubmit>\n {canSchedulePublish && isModalOpen(drawerSlug) && (\n <ScheduleDrawer\n defaultType={!hasNewerVersions ? 'unpublish' : 'publish'}\n schedulePublishConfig={\n scheduledPublishEnabled &&\n typeof entityConfig.versions.drafts.schedulePublish === 'object'\n ? entityConfig.versions.drafts.schedulePublish\n : undefined\n }\n slug={drawerSlug}\n />\n )}\n </React.Fragment>\n )\n}\n", "/* eslint-disable no-console */\n'use client'\n\nimport type { Column, SchedulePublish, Where } from 'payload'\n\nimport { TZDateMini as TZDate } from '@date-fns/tz/date/mini'\nimport { useModal } from '@faceless-ui/modal'\nimport { getTranslation } from '@payloadcms/translations'\nimport { endOfToday, isToday, startOfDay } from 'date-fns'\nimport { transpose } from 'date-fns/transpose'\nimport { formatAdminURL } from 'payload/shared'\nimport * as qs from 'qs-esm'\nimport React, { useCallback, useMemo } from 'react'\nimport { toast } from 'sonner'\n\nimport type { PublishType, UpcomingEvent } from './types.js'\n\nimport { FieldLabel } from '../../../fields/FieldLabel/index.js'\nimport { Radio } from '../../../fields/RadioGroup/Radio/index.js'\nimport { useConfig } from '../../../providers/Config/index.js'\nimport { useDocumentInfo } from '../../../providers/DocumentInfo/index.js'\nimport { useDocumentTitle } from '../../../providers/DocumentTitle/index.js'\nimport { useServerFunctions } from '../../../providers/ServerFunctions/index.js'\nimport { useTranslation } from '../../../providers/Translation/index.js'\nimport { requests } from '../../../utilities/api.js'\nimport { Banner } from '../../Banner/index.js'\nimport { DrawerCloseButton } from '../../BulkUpload/DrawerCloseButton/index.js'\nimport { Button } from '../../Button/index.js'\nimport { DatePickerField } from '../../DatePicker/index.js'\nimport { Drawer } from '../../Drawer/index.js'\nimport { Gutter } from '../../Gutter/index.js'\nimport './index.scss'\nimport { ReactSelect } from '../../ReactSelect/index.js'\nimport { ShimmerEffect } from '../../ShimmerEffect/index.js'\nimport { Table } from '../../Table/index.js'\nimport { TimezonePicker } from '../../TimezonePicker/index.js'\nimport { buildUpcomingColumns } from './buildUpcomingColumns.js'\n\nconst baseClass = 'schedule-publish'\n\ntype Props = {\n defaultType?: PublishType\n schedulePublishConfig?: SchedulePublish\n slug: string\n}\n\nconst defaultLocaleOption = {\n label: 'All',\n value: 'all',\n}\n\nexport const ScheduleDrawer: React.FC<Props> = ({ slug, defaultType, schedulePublishConfig }) => {\n const { toggleModal } = useModal()\n const {\n config: {\n admin: {\n dateFormat,\n timezones: { defaultTimezone, supportedTimezones },\n },\n localization,\n routes: { api },\n },\n } = useConfig()\n const { id, collectionSlug, globalSlug } = useDocumentInfo()\n const { title } = useDocumentTitle()\n const { i18n, t } = useTranslation()\n const { schedulePublish } = useServerFunctions()\n const [type, setType] = React.useState<PublishType>(defaultType || 'publish')\n const [date, setDate] = React.useState<Date>()\n const [timezone, setTimezone] = React.useState<string>(defaultTimezone)\n const [locale, setLocale] = React.useState<{ label: string; value: string }>(defaultLocaleOption)\n const [processing, setProcessing] = React.useState(false)\n const modalTitle = t('general:schedulePublishFor', { title })\n const [upcoming, setUpcoming] = React.useState<UpcomingEvent[]>()\n const [upcomingColumns, setUpcomingColumns] = React.useState<Column[]>()\n const deleteHandlerRef = React.useRef<((id: number | string) => Promise<void>) | null>(() => null)\n\n // Get the user timezone so we can adjust the displayed value against it\n const userTimezone = Intl.DateTimeFormat().resolvedOptions().timeZone\n\n const localeOptions = React.useMemo(() => {\n if (localization) {\n const options = localization.locales.map(({ code, label }) => ({\n label: getTranslation(label, i18n),\n value: code,\n }))\n\n options.unshift(defaultLocaleOption)\n\n return options\n }\n\n return []\n }, [localization, i18n])\n\n const fetchUpcoming = React.useCallback(async () => {\n const query: { sort: string; where: Where } = {\n sort: 'waitUntil',\n where: {\n and: [\n {\n taskSlug: {\n equals: 'schedulePublish',\n },\n },\n {\n waitUntil: {\n greater_than: new Date(),\n },\n },\n ],\n },\n }\n\n if (collectionSlug) {\n query.where.and.push({\n 'input.doc.value': {\n equals: String(id),\n },\n })\n query.where.and.push({\n 'input.doc.relationTo': {\n equals: collectionSlug,\n },\n })\n }\n\n if (globalSlug) {\n query.where.and.push({\n 'input.global': {\n equals: globalSlug,\n },\n })\n }\n\n const { docs } = await requests\n .post(formatAdminURL({ apiRoute: api, path: `/payload-jobs` }), {\n body: qs.stringify(query),\n headers: {\n 'Accept-Language': i18n.language,\n 'Content-Type': 'application/x-www-form-urlencoded',\n 'X-Payload-HTTP-Method-Override': 'GET',\n },\n })\n .then((res) => res.json())\n\n setUpcomingColumns(\n buildUpcomingColumns({\n dateFormat,\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n deleteHandler: deleteHandlerRef.current,\n docs,\n i18n,\n localization,\n supportedTimezones,\n t,\n }),\n )\n setUpcoming(docs)\n }, [collectionSlug, globalSlug, api, i18n, dateFormat, localization, supportedTimezones, t, id])\n\n const deleteHandler = React.useCallback(\n async (id: number | string) => {\n try {\n await schedulePublish({\n deleteID: id,\n })\n await fetchUpcoming()\n toast.success(t('general:deletedSuccessfully'))\n } catch (err) {\n console.error(err)\n toast.error(err.message)\n }\n },\n [fetchUpcoming, schedulePublish, t],\n )\n\n React.useEffect(() => {\n deleteHandlerRef.current = deleteHandler\n }, [deleteHandler])\n\n const handleSave = React.useCallback(async () => {\n if (!date) {\n return toast.error(t('general:noDateSelected'))\n }\n\n setProcessing(true)\n\n let localeToPublish: string\n\n if (typeof locale === 'object' && locale.value !== 'all' && type === 'publish') {\n localeToPublish = locale.value\n }\n\n try {\n await schedulePublish({\n type,\n date,\n doc: collectionSlug\n ? {\n relationTo: collectionSlug,\n value: String(id),\n }\n : undefined,\n global: globalSlug || undefined,\n localeToPublish,\n timezone,\n })\n\n setDate(undefined)\n toast.success(t('version:scheduledSuccessfully'))\n void fetchUpcoming()\n } catch (err) {\n console.error(err)\n toast.error(err.message)\n }\n\n setProcessing(false)\n }, [\n date,\n locale,\n type,\n t,\n schedulePublish,\n collectionSlug,\n id,\n globalSlug,\n timezone,\n fetchUpcoming,\n ])\n\n const displayedValue = useMemo(() => {\n if (timezone && userTimezone && date) {\n // Create TZDate instances for the selected timezone and the user's timezone\n // These instances allow us to transpose the date between timezones while keeping the same time value\n const DateWithOriginalTz = TZDate.tz(timezone)\n const DateWithUserTz = TZDate.tz(userTimezone)\n\n const modifiedDate = new TZDate(date).withTimeZone(timezone)\n\n // Transpose the date to the selected timezone\n const dateWithTimezone = transpose(modifiedDate, DateWithOriginalTz)\n\n // Transpose the date to the user's timezone - this is necessary because the react-datepicker component insists on displaying the date in the user's timezone\n const dateWithUserTimezone = transpose(dateWithTimezone, DateWithUserTz)\n\n return dateWithUserTimezone.toISOString()\n }\n\n return date\n }, [timezone, date, userTimezone])\n\n const onChangeDate = useCallback(\n (incomingDate: Date) => {\n if (timezone && incomingDate) {\n // Create TZDate instances for the selected timezone\n const tzDateWithUTC = TZDate.tz(timezone)\n\n // Creates a TZDate instance for the user's timezone — this is default behaviour of TZDate as it wraps the Date constructor\n const dateToUserTz = new TZDate(incomingDate)\n\n // Transpose the date to the selected timezone\n const dateWithTimezone = transpose(dateToUserTz, tzDateWithUTC)\n\n setDate(dateWithTimezone || null)\n } else {\n setDate(incomingDate || null)\n }\n },\n [setDate, timezone],\n )\n\n React.useEffect(() => {\n if (!upcoming) {\n const fetchInitialUpcoming = async () => {\n await fetchUpcoming()\n }\n\n void fetchInitialUpcoming()\n }\n }, [upcoming, fetchUpcoming])\n\n const minTime = useMemo(() => {\n if (date && isToday(date)) {\n return new Date()\n }\n\n return startOfDay(new Date())\n }, [date])\n\n return (\n <Drawer\n className={baseClass}\n gutter={false}\n Header={\n <div className={`${baseClass}__drawer-header`}>\n <h2 title={modalTitle}>{modalTitle}</h2>\n <DrawerCloseButton onClick={() => toggleModal(slug)} />\n </div>\n }\n slug={slug}\n >\n <Gutter className={`${baseClass}__scheduler`}>\n <FieldLabel label={t('version:type')} required />\n <ul className={`${baseClass}__type`}>\n <li>\n <Radio\n id={`${slug}-type`}\n isSelected={type === 'publish'}\n onChange={() => setType('publish')}\n option={{ label: t('version:publish'), value: 'publish' }}\n path={`${slug}-type`}\n readOnly={processing}\n />\n </li>\n <li>\n <Radio\n id={`${slug}-type`}\n isSelected={type === 'unpublish'}\n onChange={() => setType('unpublish')}\n option={{ label: t('version:unpublish'), value: 'unpublish' }}\n path={`${slug}-type`}\n readOnly={processing}\n />\n </li>\n </ul>\n <br />\n <FieldLabel label={t('general:time')} path={'time'} required />\n <DatePickerField\n id=\"time\"\n maxTime={endOfToday()}\n minDate={new Date()}\n minTime={minTime}\n onChange={(e) => onChangeDate(e)}\n pickerAppearance=\"dayAndTime\"\n readOnly={processing}\n timeFormat={schedulePublishConfig?.timeFormat}\n timeIntervals={schedulePublishConfig?.timeIntervals ?? 5}\n value={displayedValue}\n />\n {supportedTimezones.length > 0 && (\n <TimezonePicker\n id={`timezone-picker`}\n onChange={setTimezone}\n options={supportedTimezones}\n selectedTimezone={timezone}\n />\n )}\n <br />\n {localeOptions.length > 0 && type === 'publish' && (\n <React.Fragment>\n <FieldLabel label={t('localization:localeToPublish')} />\n <ReactSelect\n onChange={(e) => setLocale(e as { label: string; value: string })}\n options={localeOptions}\n value={locale}\n />\n <br />\n </React.Fragment>\n )}\n <div className={`${baseClass}__actions`}>\n <Button\n buttonStyle=\"primary\"\n disabled={processing}\n id=\"scheduled-publish-save\"\n onClick={handleSave}\n type=\"button\"\n >\n {t('general:save')}\n </Button>\n {processing ? <span>{t('general:saving')}</span> : null}\n </div>\n </Gutter>\n <Gutter className={`${baseClass}__upcoming`}>\n <h4>{t('general:upcomingEvents')}</h4>\n {!upcoming && <ShimmerEffect />}\n {upcoming?.length === 0 && (\n <Banner type=\"info\">{t('general:noUpcomingEventsScheduled')}</Banner>\n )}\n {upcoming?.length > 0 && (\n <Table appearance=\"condensed\" columns={upcomingColumns} data={upcoming} />\n )}\n </Gutter>\n </Drawer>\n )\n}\n", "'use client'\n\nimport type { Column } from 'payload'\n\nimport React from 'react'\n\nimport './index.scss'\n\nconst baseClass = 'table'\n\nexport type Props = {\n readonly appearance?: 'condensed' | 'default'\n readonly BeforeTable?: React.ReactNode\n readonly columns?: Column[]\n readonly data: Record<string, unknown>[]\n}\n\nexport const Table: React.FC<Props> = ({ appearance, BeforeTable, columns, data }) => {\n const activeColumns = columns?.filter((col) => col?.active)\n\n if (!activeColumns || activeColumns.length === 0) {\n return <div>No columns selected</div>\n }\n\n return (\n <div\n className={[baseClass, appearance && `${baseClass}--appearance-${appearance}`]\n .filter(Boolean)\n .join(' ')}\n >\n {BeforeTable}\n <table cellPadding=\"0\" cellSpacing=\"0\">\n <thead>\n <tr>\n {activeColumns.map((col, i) => (\n <th id={`heading-${col.accessor.replace(/\\./g, '__')}`} key={i}>\n {col.Heading}\n </th>\n ))}\n </tr>\n </thead>\n <tbody>\n {data &&\n data?.map((row, rowIndex) => {\n return (\n <tr\n className={`row-${rowIndex + 1}`}\n data-id={row.id}\n key={\n typeof row.id === 'string' || typeof row.id === 'number'\n ? String(row.id)\n : rowIndex\n }\n >\n {activeColumns.map((col, colIndex) => {\n const { accessor } = col\n\n return (\n <td className={`cell-${accessor.replace(/\\./g, '__')}`} key={colIndex}>\n {col.renderedCells[rowIndex]}\n </td>\n )\n })}\n </tr>\n )\n })}\n </tbody>\n </table>\n </div>\n )\n}\n", "import type { ClientConfig, Column } from 'payload'\n\nimport { getTranslation, type I18nClient, type TFunction } from '@payloadcms/translations'\nimport React from 'react'\n\nimport type { UpcomingEvent } from './types.js'\n\nimport { formatDate } from '../../../utilities/formatDocTitle/formatDateTitle.js'\nimport { Button } from '../../Button/index.js'\nimport { Pill } from '../../Pill/index.js'\n\ntype Args = {\n dateFormat: string\n deleteHandler: (id: number | string) => void\n docs: UpcomingEvent[]\n i18n: I18nClient\n localization: ClientConfig['localization']\n supportedTimezones: ClientConfig['admin']['timezones']['supportedTimezones']\n t: TFunction\n}\n\nexport const buildUpcomingColumns = ({\n dateFormat,\n deleteHandler,\n docs,\n i18n,\n localization,\n supportedTimezones,\n t,\n}: Args): Column[] => {\n const columns: Column[] = [\n {\n accessor: 'input.type',\n active: true,\n field: {\n name: '',\n type: 'text',\n },\n Heading: <span>{t('version:type')}</span>,\n renderedCells: docs.map((doc) => {\n const type = doc.input?.type\n\n return (\n <Pill key={doc.id} pillStyle={type === 'publish' ? 'success' : 'warning'} size=\"small\">\n {type === 'publish' && t('version:publish')}\n {type === 'unpublish' && t('version:unpublish')}\n </Pill>\n )\n }),\n },\n {\n accessor: 'waitUntil',\n active: true,\n field: {\n name: '',\n type: 'date',\n },\n Heading: <span>{t('general:time')}</span>,\n renderedCells: docs.map((doc) => (\n <span key={doc.id}>\n {formatDate({\n date: doc.waitUntil,\n i18n,\n pattern: dateFormat,\n timezone: doc.input.timezone,\n })}\n </span>\n )),\n },\n {\n accessor: 'input.timezone',\n active: true,\n field: {\n name: '',\n type: 'text',\n },\n Heading: <span>{t('general:timezone')}</span>,\n renderedCells: docs.map((doc) => {\n const matchedTimezone = supportedTimezones.find(\n (timezone) => timezone.value === doc.input.timezone,\n )\n\n const timezone = matchedTimezone?.label || doc.input.timezone\n\n return <span key={doc.id}>{timezone || t('general:noValue')}</span>\n }),\n },\n ]\n\n if (localization) {\n columns.push({\n accessor: 'input.locale',\n active: true,\n field: {\n name: '',\n type: 'text',\n },\n Heading: <span>{t('general:locale')}</span>,\n renderedCells: docs.map((doc) => {\n if (doc.input.locale) {\n const matchedLocale = localization.locales.find(\n (locale) => locale.code === doc.input.locale,\n )\n if (matchedLocale) {\n return <span key={doc.id}>{getTranslation(matchedLocale.label, i18n)}</span>\n }\n }\n\n return <span key={doc.id}>{t('general:all')}</span>\n }),\n })\n }\n\n columns.push({\n accessor: 'delete',\n active: true,\n field: {\n name: 'delete',\n type: 'text',\n },\n Heading: <span>{t('general:delete')}</span>,\n renderedCells: docs.map((doc) => (\n <Button\n buttonStyle=\"icon-label\"\n className=\"schedule-publish__delete\"\n icon=\"x\"\n key={doc.id}\n onClick={(e) => {\n e.preventDefault()\n deleteHandler(doc.id)\n }}\n tooltip={t('general:delete')}\n />\n )),\n })\n\n return columns\n}\n", "'use client'\n\nimport type { SanitizedCollectionConfig } from 'payload'\n\nimport { useModal } from '@faceless-ui/modal'\nimport { getTranslation } from '@payloadcms/translations'\nimport { useRouter } from 'next/navigation.js'\nimport { formatAdminURL } from 'payload/shared'\nimport * as qs from 'qs-esm'\nimport React, { Fragment, useCallback, useState } from 'react'\nimport { toast } from 'sonner'\n\nimport type { DocumentDrawerContextType } from '../DocumentDrawer/Provider.js'\n\nimport { CheckboxInput } from '../../fields/Checkbox/Input.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useDocumentTitle } from '../../providers/DocumentTitle/index.js'\nimport { useRouteTransition } from '../../providers/RouteTransition/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { requests } from '../../utilities/api.js'\nimport { Button } from '../Button/index.js'\nimport { ConfirmationModal } from '../ConfirmationModal/index.js'\nimport { Translation } from '../Translation/index.js'\nimport './index.scss'\n\nconst baseClass = 'restore-button'\n\nexport type Props = {\n readonly buttonId?: string\n readonly collectionSlug: SanitizedCollectionConfig['slug']\n readonly id?: string\n readonly onRestore?: DocumentDrawerContextType['onRestore']\n readonly redirectAfterRestore?: boolean\n readonly singularLabel: SanitizedCollectionConfig['labels']['singular']\n readonly title?: string\n}\n\nexport const RestoreButton: React.FC<Props> = (props) => {\n const {\n id,\n buttonId,\n collectionSlug,\n onRestore,\n redirectAfterRestore = true,\n singularLabel,\n title: titleFromProps,\n } = props\n\n const {\n config: {\n routes: { admin: adminRoute, api },\n serverURL,\n },\n getEntityConfig,\n } = useConfig()\n\n const collectionConfig = getEntityConfig({ collectionSlug })\n const router = useRouter()\n const { i18n, t } = useTranslation()\n const { title } = useDocumentTitle()\n const { startRouteTransition } = useRouteTransition()\n const { openModal } = useModal()\n\n const modalSlug = `restore-${id}`\n\n const [restoreAsPublished, setRestoreAsPublished] = useState(false)\n\n const addDefaultError = useCallback(() => {\n toast.error(t('error:restoringTitle', { title }))\n }, [t, title])\n\n const handleRestore = useCallback(async () => {\n try {\n const url = formatAdminURL({\n apiRoute: api,\n path: `/${collectionSlug}${qs.stringify(\n {\n trash: true,\n where: {\n and: [{ id: { equals: id } }, { deletedAt: { exists: true } }],\n },\n },\n {\n addQueryPrefix: true,\n },\n )}`,\n })\n\n const body: Record<string, unknown> = {\n deletedAt: null,\n }\n\n // Only include _status if drafts are enabled\n if (collectionConfig?.versions?.drafts) {\n body._status = restoreAsPublished ? 'published' : 'draft'\n }\n\n const res = await requests.patch(url, {\n body: JSON.stringify(body),\n headers: {\n 'Accept-Language': i18n.language,\n 'Content-Type': 'application/json',\n },\n })\n\n const json = await res.json()\n\n if (res.status < 400) {\n toast.success(\n t('general:titleRestored', {\n label: getTranslation(singularLabel, i18n),\n title,\n }) || json.message,\n )\n\n if (redirectAfterRestore) {\n return startRouteTransition(() =>\n router.push(\n formatAdminURL({\n adminRoute,\n path: `/collections/${collectionSlug}/${id}`,\n serverURL,\n }),\n ),\n )\n }\n\n if (typeof onRestore === 'function') {\n await onRestore({ id, collectionConfig })\n }\n\n return\n }\n\n if (json.errors) {\n json.errors.forEach((error) => toast.error(error.message))\n } else {\n addDefaultError()\n }\n } catch (_err) {\n addDefaultError()\n }\n }, [\n serverURL,\n api,\n collectionSlug,\n id,\n t,\n singularLabel,\n addDefaultError,\n i18n,\n title,\n router,\n adminRoute,\n redirectAfterRestore,\n onRestore,\n collectionConfig,\n startRouteTransition,\n restoreAsPublished,\n ])\n\n if (id) {\n return (\n <Fragment>\n <Button\n buttonStyle=\"primary\"\n id={buttonId}\n key={buttonId}\n onClick={() => {\n openModal(modalSlug)\n }}\n >\n {t('general:restore')}\n </Button>\n <ConfirmationModal\n body={\n <Fragment>\n <Translation\n elements={{\n '1': ({ children }) => <strong>{children}</strong>,\n }}\n i18nKey={\n collectionConfig?.versions?.drafts\n ? 'general:aboutToRestoreAsDraft'\n : 'general:aboutToRestore'\n }\n t={t}\n variables={{\n label: getTranslation(singularLabel, i18n),\n title: titleFromProps || title || id,\n }}\n />\n {collectionConfig?.versions?.drafts && (\n <div className={`${baseClass}__checkbox`}>\n <CheckboxInput\n checked={restoreAsPublished}\n id=\"restore-as-published\"\n label={t('general:restoreAsPublished')}\n name=\"restore-as-published\"\n onToggle={(e) => setRestoreAsPublished(e.target.checked)}\n />\n </div>\n )}\n </Fragment>\n }\n className={baseClass}\n confirmingLabel={t('general:restoring')}\n heading={t('general:confirmRestoration')}\n modalSlug={modalSlug}\n onConfirm={handleRestore}\n />\n </Fragment>\n )\n }\n\n return null\n}\n", "'use client'\n\nimport type { SaveButtonClientProps } from 'payload'\n\nimport React, { useRef } from 'react'\n\nimport { useForm, useFormModified } from '../../forms/Form/context.js'\nimport { FormSubmit } from '../../forms/Submit/index.js'\nimport { useHotkey } from '../../hooks/useHotkey.js'\nimport { useDocumentInfo } from '../../providers/DocumentInfo/index.js'\nimport { useEditDepth } from '../../providers/EditDepth/index.js'\nimport { useOperation } from '../../providers/Operation/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\n\nexport function SaveButton({ label: labelProp }: SaveButtonClientProps) {\n const { uploadStatus } = useDocumentInfo()\n const { t } = useTranslation()\n const { submit } = useForm()\n const modified = useFormModified()\n const label = labelProp || t('general:save')\n const ref = useRef<HTMLButtonElement>(null)\n const editDepth = useEditDepth()\n const operation = useOperation()\n\n const disabled = (operation === 'update' && !modified) || uploadStatus === 'uploading'\n\n useHotkey({ cmdCtrlKey: true, editDepth, keyCodes: ['s'] }, (e) => {\n if (disabled) {\n // absorb the event\n }\n\n e.preventDefault()\n e.stopPropagation()\n if (ref?.current) {\n ref.current.click()\n }\n })\n\n const handleSubmit = () => {\n if (uploadStatus === 'uploading') {\n return\n }\n\n return void submit()\n }\n\n return (\n <FormSubmit\n buttonId=\"action-save\"\n disabled={disabled}\n onClick={handleSubmit}\n ref={ref}\n size=\"medium\"\n type=\"button\"\n >\n {label}\n </FormSubmit>\n )\n}\n", "'use client'\n\nimport type { SaveDraftButtonClientProps } from 'payload'\n\nimport { formatAdminURL } from 'payload/shared'\nimport React, { useCallback, useRef } from 'react'\n\nimport { useForm, useFormModified } from '../../forms/Form/context.js'\nimport { FormSubmit } from '../../forms/Submit/index.js'\nimport { useHotkey } from '../../hooks/useHotkey.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useDocumentInfo } from '../../providers/DocumentInfo/index.js'\nimport { useEditDepth } from '../../providers/EditDepth/index.js'\nimport { useLocale } from '../../providers/Locale/index.js'\nimport { useOperation } from '../../providers/Operation/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\n\nconst baseClass = 'save-draft'\n\nexport function SaveDraftButton(props: SaveDraftButtonClientProps) {\n const {\n config: {\n routes: { api },\n },\n } = useConfig()\n\n const { id, collectionSlug, globalSlug, setUnpublishedVersionCount, uploadStatus } =\n useDocumentInfo()\n\n const modified = useFormModified()\n const { code: locale } = useLocale()\n const ref = useRef<HTMLButtonElement>(null)\n const editDepth = useEditDepth()\n const { t } = useTranslation()\n const { submit } = useForm()\n const operation = useOperation()\n\n const disabled = (operation === 'update' && !modified) || uploadStatus === 'uploading'\n\n const saveDraft = useCallback(async () => {\n if (disabled) {\n return\n }\n\n const search = `?locale=${locale}&depth=0&fallback-locale=null&draft=true`\n let action\n let method = 'POST'\n\n if (collectionSlug) {\n action = formatAdminURL({\n apiRoute: api,\n path: `/${collectionSlug}${id ? `/${id}` : ''}${search}`,\n })\n if (id) {\n method = 'PATCH'\n }\n }\n\n if (globalSlug) {\n action = formatAdminURL({\n apiRoute: api,\n path: `/globals/${globalSlug}${search}`,\n })\n }\n\n await submit({\n action,\n method,\n overrides: {\n _status: 'draft',\n },\n skipValidation: true,\n })\n\n setUnpublishedVersionCount((count) => count + 1)\n }, [submit, collectionSlug, globalSlug, api, locale, id, disabled, setUnpublishedVersionCount])\n\n useHotkey({ cmdCtrlKey: true, editDepth, keyCodes: ['s'] }, (e) => {\n if (disabled) {\n // absorb the event\n }\n\n e.preventDefault()\n e.stopPropagation()\n if (ref?.current) {\n ref.current.click()\n }\n })\n\n return (\n <FormSubmit\n buttonId=\"action-save-draft\"\n buttonStyle=\"secondary\"\n className={baseClass}\n disabled={disabled}\n onClick={() => {\n return void saveDraft()\n }}\n ref={ref}\n size=\"medium\"\n type=\"button\"\n >\n {t('version:saveDraft')}\n </FormSubmit>\n )\n}\n", "'use client'\nimport { useModal } from '@faceless-ui/modal'\nimport { formatAdminURL } from 'payload/shared'\nimport React, { useCallback } from 'react'\nimport { toast } from 'sonner'\n\nimport { useForm } from '../../forms/Form/context.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useDocumentInfo } from '../../providers/DocumentInfo/index.js'\nimport { useLocale } from '../../providers/Locale/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { requests } from '../../utilities/api.js'\nimport { Button } from '../Button/index.js'\nimport { ConfirmationModal } from '../ConfirmationModal/index.js'\nimport './index.scss'\n\nconst baseClass = 'status'\n\nexport const Status: React.FC = () => {\n const {\n id,\n collectionSlug,\n docPermissions,\n globalSlug,\n hasPublishedDoc,\n incrementVersionCount,\n isTrashed,\n setMostRecentVersionIsAutosaved,\n setUnpublishedVersionCount,\n unpublishedVersionCount,\n } = useDocumentInfo()\n\n const { toggleModal } = useModal()\n\n const {\n config: {\n routes: { api },\n },\n } = useConfig()\n\n const { reset: resetForm } = useForm()\n const { code: locale } = useLocale()\n const { i18n, t } = useTranslation()\n\n const revertModalSlug = `confirm-revert-${id}`\n\n let statusToRender: 'changed' | 'draft' | 'published'\n\n if (unpublishedVersionCount > 0 && hasPublishedDoc) {\n statusToRender = 'changed'\n } else if (!hasPublishedDoc) {\n statusToRender = 'draft'\n } else if (hasPublishedDoc && unpublishedVersionCount <= 0) {\n statusToRender = 'published'\n }\n\n const displayStatusKey = isTrashed\n ? hasPublishedDoc\n ? 'previouslyPublished'\n : 'previouslyDraft'\n : statusToRender\n\n const performAction = useCallback(async () => {\n let url\n let method\n\n if (collectionSlug) {\n url = formatAdminURL({\n apiRoute: api,\n path: `/${collectionSlug}/${id}?locale=${locale}&fallback-locale=null&depth=0`,\n })\n method = 'patch'\n }\n\n if (globalSlug) {\n url = formatAdminURL({\n apiRoute: api,\n path: `/globals/${globalSlug}?locale=${locale}&fallback-locale=null&depth=0`,\n })\n method = 'post'\n }\n\n const publishedDoc = await requests\n .get(url, {\n headers: {\n 'Accept-Language': i18n.language,\n 'Content-Type': 'application/json',\n },\n })\n .then((res) => res.json())\n\n const body = publishedDoc\n\n const res = await requests[method](url, {\n body: JSON.stringify(body),\n headers: {\n 'Accept-Language': i18n.language,\n 'Content-Type': 'application/json',\n },\n })\n\n if (res.status === 200) {\n let data\n const json = await res.json()\n\n if (globalSlug) {\n data = json.result\n } else if (collectionSlug) {\n data = json.doc\n }\n\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n resetForm(data)\n toast.success(json.message)\n incrementVersionCount()\n setMostRecentVersionIsAutosaved(false)\n\n setUnpublishedVersionCount(0)\n } else {\n try {\n const json = await res.json()\n if (json.errors?.[0]?.message) {\n toast.error(json.errors[0].message)\n } else if (json.error) {\n toast.error(json.error)\n } else {\n toast.error(t('error:revertingDocument'))\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n } catch (err) {\n toast.error(t('error:revertingDocument'))\n }\n }\n }, [\n api,\n collectionSlug,\n globalSlug,\n id,\n i18n.language,\n incrementVersionCount,\n locale,\n resetForm,\n setUnpublishedVersionCount,\n setMostRecentVersionIsAutosaved,\n t,\n ])\n\n const canUpdate = docPermissions?.update\n\n if (statusToRender) {\n return (\n <div\n className={baseClass}\n title={`${t('version:status')}: ${t(`version:${displayStatusKey}`)}`}\n >\n <div className={`${baseClass}__value-wrap`}>\n <span className={`${baseClass}__label`}>{t('version:status')}:&nbsp;</span>\n <span className={`${baseClass}__value`}>{t(`version:${displayStatusKey}`)}</span>\n\n {!isTrashed && canUpdate && hasPublishedDoc && statusToRender === 'changed' && (\n <React.Fragment>\n &nbsp;&mdash;&nbsp;\n <Button\n buttonStyle=\"none\"\n className={`${baseClass}__action`}\n id=\"action-revert-to-published\"\n onClick={() => toggleModal(revertModalSlug)}\n >\n {t('version:revertToPublished')}\n </Button>\n <ConfirmationModal\n body={t('version:aboutToRevertToPublished')}\n confirmingLabel={t('version:reverting')}\n heading={t('version:confirmRevertToSaved')}\n modalSlug={revertModalSlug}\n onConfirm={() => performAction()}\n />\n </React.Fragment>\n )}\n </div>\n </div>\n )\n }\n\n return null\n}\n", "'use client'\n\nimport type { UnpublishButtonClientProps } from 'payload'\n\nimport { useModal } from '@faceless-ui/modal'\nimport { getTranslation } from '@payloadcms/translations'\nimport { formatAdminURL } from 'payload/shared'\nimport * as qs from 'qs-esm'\nimport React, { useCallback, useEffect, useState } from 'react'\nimport { toast } from 'sonner'\n\nimport { useForm } from '../../forms/Form/context.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useDocumentInfo } from '../../providers/DocumentInfo/index.js'\nimport { useLocale } from '../../providers/Locale/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { requests } from '../../utilities/api.js'\nimport { traverseForLocalizedFields } from '../../utilities/traverseForLocalizedFields.js'\nimport { ConfirmationModal } from '../ConfirmationModal/index.js'\nimport { PopupList } from '../Popup/index.js'\nexport function UnpublishButton({\n label: labelProp,\n}: { label?: string } & UnpublishButtonClientProps = {}) {\n const {\n id,\n collectionSlug,\n data: dataFromProps,\n globalSlug,\n hasPublishedDoc,\n hasPublishPermission,\n incrementVersionCount,\n isTrashed,\n setHasPublishedDoc,\n setMostRecentVersionIsAutosaved,\n setUnpublishedVersionCount,\n } = useDocumentInfo()\n const { toggleModal } = useModal()\n\n const { config, getEntityConfig } = useConfig()\n const { reset: resetForm } = useForm()\n const { code: localeCode, label: localeLabel } = useLocale()\n const [unpublishAll, setUnpublishAll] = useState(false)\n const [hasLocalizedFields, setHasLocalizedFields] = useState(false)\n const unPublishModalSlug = `confirm-un-publish-${id}`\n\n const {\n routes: { api },\n serverURL,\n } = config\n\n const { i18n, t } = useTranslation()\n\n const entityConfig = React.useMemo(() => {\n if (collectionSlug) {\n return getEntityConfig({ collectionSlug })\n }\n\n if (globalSlug) {\n return getEntityConfig({ globalSlug })\n }\n }, [collectionSlug, globalSlug, getEntityConfig])\n\n const unpublish = useCallback(\n (unpublishAll?: boolean) => {\n void (async () => {\n let url\n let method\n\n const queryString = qs.stringify(\n {\n depth: 0,\n 'fallback-locale': 'null',\n locale: unpublishAll ? undefined : localeCode,\n unpublishAllLocales: unpublishAll,\n },\n { addQueryPrefix: true },\n )\n\n if (collectionSlug) {\n url = formatAdminURL({\n apiRoute: api,\n path: `/${collectionSlug}/${id}${queryString}`,\n serverURL,\n })\n method = 'patch'\n }\n\n if (globalSlug) {\n url = formatAdminURL({\n apiRoute: api,\n path: `/globals/${globalSlug}${queryString}`,\n serverURL,\n })\n method = 'post'\n }\n\n try {\n const res = await requests[method](url, {\n body: JSON.stringify({ _status: 'draft' }),\n headers: {\n 'Accept-Language': i18n.language,\n 'Content-Type': 'application/json',\n },\n })\n\n if (res.status === 200) {\n void resetForm({\n ...(dataFromProps || {}),\n _status: 'draft',\n })\n\n toast.success(t('version:unpublishedSuccessfully'))\n incrementVersionCount()\n setUnpublishedVersionCount(1)\n setMostRecentVersionIsAutosaved(false)\n setHasPublishedDoc(false)\n } else {\n try {\n const json = await res.json()\n if (json.errors?.[0]?.message) {\n toast.error(json.errors[0].message)\n } else if (json.error) {\n toast.error(json.error)\n } else {\n toast.error(t('error:unPublishingDocument'))\n }\n } catch {\n toast.error(t('error:unPublishingDocument'))\n }\n }\n } catch {\n toast.error(t('error:unPublishingDocument'))\n }\n })().catch(() => {\n toast.error(t('error:unPublishingDocument'))\n })\n },\n [\n dataFromProps,\n resetForm,\n collectionSlug,\n globalSlug,\n serverURL,\n api,\n localeCode,\n id,\n i18n.language,\n incrementVersionCount,\n setHasPublishedDoc,\n setMostRecentVersionIsAutosaved,\n setUnpublishedVersionCount,\n t,\n ],\n )\n\n useEffect(() => {\n const hasLocalizedField = traverseForLocalizedFields(entityConfig?.fields)\n setHasLocalizedFields(hasLocalizedField)\n }, [entityConfig?.fields])\n\n const drafts = entityConfig?.versions?.drafts\n const hasDraftsEnabled = typeof drafts === 'object' && drafts !== null\n\n const canUnpublish = React.useMemo(() => {\n return hasDraftsEnabled && hasPublishPermission && hasPublishedDoc && !isTrashed\n }, [hasPublishPermission, hasPublishedDoc, isTrashed, hasDraftsEnabled])\n\n const canUnpublishCurrentLocale = React.useMemo(() => {\n if (!canUnpublish || !hasLocalizedFields) {\n return false\n }\n\n const isLocalizeStatusEnabled = drafts && drafts.localizeStatus === true\n const isExperimentalEnabled = config.experimental?.localizeStatus === true\n\n return isLocalizeStatusEnabled && isExperimentalEnabled\n }, [canUnpublish, hasLocalizedFields, drafts, config.experimental?.localizeStatus])\n\n const label = getTranslation(localeLabel, i18n)\n\n if (!canUnpublish) {\n return null\n }\n\n return (\n <React.Fragment>\n <PopupList.Button\n id=\"action-unpublish\"\n onClick={() => {\n setUnpublishAll(true)\n toggleModal(unPublishModalSlug)\n }}\n >\n {labelProp || t('version:unpublish')}\n </PopupList.Button>\n {canUnpublishCurrentLocale && (\n <PopupList.Button\n id=\"action-unpublish-locale\"\n onClick={() => {\n setUnpublishAll(false)\n toggleModal(unPublishModalSlug)\n }}\n >\n {labelProp ? `${labelProp} [${label}]` : t('version:unpublishIn', { locale: label })}\n </PopupList.Button>\n )}\n <ConfirmationModal\n body={\n !unpublishAll\n ? t('version:aboutToUnpublishIn', { locale: label })\n : t('version:aboutToUnpublish')\n }\n confirmingLabel={t('version:unpublishing')}\n heading={t('version:confirmUnpublish')}\n modalSlug={unPublishModalSlug}\n onConfirm={() => unpublish(unpublishAll)}\n />\n </React.Fragment>\n )\n}\n", "import React from 'react'\n\nimport { HtmlDiff } from './diff/index.js'\nimport './index.scss'\n\nconst baseClass = 'html-diff'\n\nexport const getHTMLDiffComponents = ({\n fromHTML,\n toHTML,\n tokenizeByCharacter,\n}: {\n fromHTML: string\n toHTML: string\n tokenizeByCharacter?: boolean\n}): {\n From: React.ReactNode\n To: React.ReactNode\n} => {\n const diffHTML = new HtmlDiff(fromHTML, toHTML, {\n tokenizeByCharacter,\n })\n\n const [oldHTML, newHTML] = diffHTML.getSideBySideContents()\n\n const From = oldHTML ? (\n <div\n className={`${baseClass}__diff-old html-diff`}\n dangerouslySetInnerHTML={{ __html: oldHTML }}\n />\n ) : null\n\n const To = newHTML ? (\n <div\n className={`${baseClass}__diff-new html-diff`}\n dangerouslySetInnerHTML={{ __html: newHTML }}\n />\n ) : null\n\n return { From, To }\n}\n", "// Taken and modified from https://github.com/Arman19941113/html-diff/blob/master/packages/html-diff/src/index.ts\n\ninterface MatchedBlock {\n newEnd: number\n newStart: number\n oldEnd: number\n oldStart: number\n size: number\n}\n\ninterface Operation {\n /**\n * Index of entry in tokenized token list\n */\n newEnd: number\n newStart: number\n oldEnd: number\n oldStart: number\n type: 'create' | 'delete' | 'equal' | 'replace'\n}\n\ntype BaseOpType = 'create' | 'delete'\n\ninterface HtmlDiffConfig {\n classNames: {\n createBlock: string\n createInline: string\n deleteBlock: string\n deleteInline: string\n }\n greedyBoundary: number\n greedyMatch: boolean\n minMatchedSize: number\n}\n\nexport interface HtmlDiffOptions {\n /**\n * The classNames for wrapper DOM.\n * Use this to configure your own styles without importing the built-in CSS file\n */\n classNames?: Partial<{\n createBlock?: string\n createInline?: string\n deleteBlock?: string\n deleteInline?: string\n }>\n /**\n * @defaultValue 1000\n */\n greedyBoundary?: number\n /**\n * When greedyMatch is enabled, if the length of the sub-tokens exceeds greedyBoundary,\n * we will use the matched sub-tokens that are sufficiently good, even if they are not optimal, to enhance performance.\n * @defaultValue true\n */\n greedyMatch?: boolean\n /**\n * Determine the minimum threshold for calculating common sub-tokens.\n * You may adjust it to a value larger than 2, but not lower, due to the potential inclusion of HTML tags in the count.\n * @defaultValue 2\n */\n minMatchedSize?: number\n /**\n * Whether to tokenize by character or by word.\n * @defaultValue false\n */\n tokenizeByCharacter?: boolean\n}\n\n// eslint-disable-next-line regexp/no-super-linear-backtracking, regexp/optimal-quantifier-concatenation\nconst htmlStartTagReg = /^<(?<name>[^\\s/>]+)[^>]*>$/\n// eslint-disable-next-line regexp/no-super-linear-backtracking, regexp/optimal-quantifier-concatenation\nconst htmlTagWithNameReg = /^<(?<isEnd>\\/)?(?<name>[^\\s>]+)[^>]*>$/\n\nconst htmlTagReg = /^<[^>]+>/\nconst htmlImgTagReg = /^<img[^>]*>$/\nconst htmlVideoTagReg = /^<video[^>]*>.*?<\\/video>$/ms\n\nexport class HtmlDiff {\n private readonly config: HtmlDiffConfig\n private leastCommonLength: number = Infinity\n private readonly matchedBlockList: MatchedBlock[] = []\n private readonly newTokens: string[] = []\n private readonly oldTokens: string[] = []\n private readonly operationList: Operation[] = []\n private sideBySideContents?: [string, string]\n private unifiedContent?: string\n\n constructor(\n oldHtml: string,\n newHtml: string,\n {\n classNames = {\n createBlock: 'html-diff-create-block-wrapper',\n createInline: 'html-diff-create-inline-wrapper',\n deleteBlock: 'html-diff-delete-block-wrapper',\n deleteInline: 'html-diff-delete-inline-wrapper',\n },\n greedyBoundary = 1000,\n greedyMatch = true,\n minMatchedSize = 2,\n tokenizeByCharacter = false,\n }: HtmlDiffOptions = {},\n ) {\n // init config\n this.config = {\n classNames: {\n createBlock: 'html-diff-create-block-wrapper',\n createInline: 'html-diff-create-inline-wrapper',\n deleteBlock: 'html-diff-delete-block-wrapper',\n deleteInline: 'html-diff-delete-inline-wrapper',\n ...classNames,\n },\n greedyBoundary,\n greedyMatch,\n minMatchedSize,\n }\n // white space is junk\n oldHtml = oldHtml.trim()\n newHtml = newHtml.trim()\n\n // no need to diff\n if (oldHtml === newHtml) {\n this.unifiedContent = oldHtml\n let equalSequence = 0\n // eslint-disable-next-line regexp/no-super-linear-backtracking, regexp/optimal-quantifier-concatenation\n const content = oldHtml.replace(/<([^\\s/>]+)[^>]*>/g, (match: string, name: string) => {\n const tagNameLength = name.length + 1\n return `${match.slice(0, tagNameLength)} data-seq=\"${++equalSequence}\"${match.slice(tagNameLength)}`\n })\n this.sideBySideContents = [content, content]\n return\n }\n\n // step1: split HTML to tokens(atomic tokens)\n const tokenizeFn = tokenizeByCharacter ? this.tokenizeByCharacter : this.tokenizeByWord\n this.oldTokens = tokenizeFn(oldHtml)\n this.newTokens = tokenizeFn(newHtml)\n // step2: find matched blocks\n this.matchedBlockList = this.getMatchedBlockList()\n\n // step3: generate operation list\n this.operationList = this.getOperationList()\n }\n\n // Find the longest matched block between tokens\n private computeBestMatchedBlock(\n oldStart: number,\n oldEnd: number,\n newStart: number,\n newEnd: number,\n ): MatchedBlock | null {\n let bestMatchedBlock = null\n for (let i = oldStart; i < oldEnd; i++) {\n const len = Math.min(oldEnd - i, newEnd - newStart)\n const ret = this.slideBestMatchedBlock(i, newStart, len)\n if (ret && (!bestMatchedBlock || ret.size > bestMatchedBlock.size)) {\n bestMatchedBlock = ret\n if (ret.size > this.leastCommonLength) {\n return bestMatchedBlock\n }\n }\n }\n for (let j = newStart; j < newEnd; j++) {\n const len = Math.min(oldEnd - oldStart, newEnd - j)\n const ret = this.slideBestMatchedBlock(oldStart, j, len)\n if (ret && (!bestMatchedBlock || ret.size > bestMatchedBlock.size)) {\n bestMatchedBlock = ret\n if (ret.size > this.leastCommonLength) {\n return bestMatchedBlock\n }\n }\n }\n return bestMatchedBlock\n }\n\n private computeMatchedBlockList(\n oldStart: number,\n oldEnd: number,\n newStart: number,\n newEnd: number,\n matchedBlockList: MatchedBlock[] = [],\n ): MatchedBlock[] {\n const matchBlock = this.computeBestMatchedBlock(oldStart, oldEnd, newStart, newEnd)\n\n if (!matchBlock) {\n return []\n }\n\n if (oldStart < matchBlock.oldStart && newStart < matchBlock.newStart) {\n this.computeMatchedBlockList(\n oldStart,\n matchBlock.oldStart,\n newStart,\n matchBlock.newStart,\n matchedBlockList,\n )\n }\n matchedBlockList.push(matchBlock)\n if (oldEnd > matchBlock.oldEnd && newEnd > matchBlock.newEnd) {\n this.computeMatchedBlockList(\n matchBlock.oldEnd,\n oldEnd,\n matchBlock.newEnd,\n newEnd,\n matchedBlockList,\n )\n }\n return matchedBlockList\n }\n\n private dressUpBlockTag(type: BaseOpType, token: string): string {\n if (type === 'create') {\n return `<div class=\"${this.config.classNames.createBlock}\">${token}</div>`\n }\n if (type === 'delete') {\n return `<div class=\"${this.config.classNames.deleteBlock}\">${token}</div>`\n }\n return ''\n }\n\n private dressUpDiffContent(type: BaseOpType, tokens: string[]): string {\n const tokensLength = tokens.length\n if (!tokensLength) {\n return ''\n }\n\n let result = ''\n let textStartIndex = 0\n let i = -1\n for (const token of tokens) {\n i++\n\n // If this is true, this HTML should be diffed as well - not just its children\n const isMatchElement = token.includes('data-enable-match=\"true\"')\n const isMatchExplicitlyDisabled = token.includes('data-enable-match=\"false\"')\n const isHtmlTag = !!token.match(htmlTagReg)?.length\n\n if (isMatchExplicitlyDisabled) {\n textStartIndex = i + 1\n result += token\n }\n // this token is html tag\n else if (!isMatchElement && isHtmlTag) {\n // handle text tokens before\n if (i > textStartIndex) {\n result += this.dressUpText(type, tokens.slice(textStartIndex, i))\n }\n // handle this tag\n textStartIndex = i + 1\n if (token.match(htmlVideoTagReg)) {\n result += this.dressUpBlockTag(type, token)\n } /* else if ([htmlImgTagReg].some((item) => token.match(item))) {\n result += this.dressUpInlineTag(type, token)\n }*/ else {\n result += token\n }\n } else if (isMatchElement && isHtmlTag) {\n // handle text tokens before\n if (i > textStartIndex) {\n result += this.dressUpText(type, tokens.slice(textStartIndex, i))\n }\n\n // handle this tag\n textStartIndex = i + 1\n // Add data-match-type to the tag that can be styled\n const newToken = this.dressupMatchEnabledHtmlTag(type, token)\n\n result += newToken\n }\n }\n if (textStartIndex < tokensLength) {\n result += this.dressUpText(type, tokens.slice(textStartIndex))\n }\n return result\n }\n\n private dressUpInlineTag(type: BaseOpType, token: string): string {\n if (type === 'create') {\n return `<span class=\"${this.config.classNames.createInline}\">${token}</span>`\n }\n if (type === 'delete') {\n return `<span class=\"${this.config.classNames.deleteInline}\">${token}</span>`\n }\n return ''\n }\n\n private dressupMatchEnabledHtmlTag(type: BaseOpType, token: string): string {\n // token is a single html tag, e.g. <a data-enable-match=\"true\" href=\"https://2\" rel=undefined target=undefined>\n // add data-match-type to the tag\n const tagName = token.match(htmlStartTagReg)?.groups?.name\n if (!tagName) {\n return token\n }\n const tagNameLength = tagName.length + 1\n const matchType = type === 'create' ? 'create' : 'delete'\n return `${token.slice(0, tagNameLength)} data-match-type=\"${matchType}\"${token.slice(\n tagNameLength,\n token.length,\n )}`\n }\n\n private dressUpText(type: BaseOpType, tokens: string[]): string {\n const text = tokens.join('')\n if (!text.trim()) {\n return ''\n }\n if (type === 'create') {\n return `<span data-match-type=\"create\">${text}</span>`\n }\n if (type === 'delete') {\n return `<span data-match-type=\"delete\">${text}</span>`\n }\n return ''\n }\n\n /**\n * Generates a list of token entries that are matched between the old and new HTML. This list will not\n * include token ranges that differ.\n */\n private getMatchedBlockList(): MatchedBlock[] {\n const n1 = this.oldTokens.length\n const n2 = this.newTokens.length\n\n // 1. sync from start\n let start: MatchedBlock | null = null\n let i = 0\n while (i < n1 && i < n2 && this.oldTokens[i] === this.newTokens[i]) {\n i++\n }\n if (i >= this.config.minMatchedSize) {\n start = {\n newEnd: i,\n newStart: 0,\n oldEnd: i,\n oldStart: 0,\n size: i,\n }\n }\n\n // 2. sync from end\n let end: MatchedBlock | null = null\n let e1 = n1 - 1\n let e2 = n2 - 1\n while (i <= e1 && i <= e2 && this.oldTokens[e1] === this.newTokens[e2]) {\n e1--\n e2--\n }\n const size = n1 - 1 - e1\n if (size >= this.config.minMatchedSize) {\n end = {\n newEnd: n2,\n newStart: e2 + 1,\n oldEnd: n1,\n oldStart: e1 + 1,\n size,\n }\n }\n\n // 3. handle rest\n const oldStart = start ? i : 0\n const oldEnd = end ? e1 + 1 : n1\n const newStart = start ? i : 0\n const newEnd = end ? e2 + 1 : n2\n // optimize for large tokens\n if (this.config.greedyMatch) {\n const commonLength = Math.min(oldEnd - oldStart, newEnd - newStart)\n if (commonLength > this.config.greedyBoundary) {\n this.leastCommonLength = Math.floor(commonLength / 3)\n }\n }\n const ret = this.computeMatchedBlockList(oldStart, oldEnd, newStart, newEnd)\n if (start) {\n ret.unshift(start)\n }\n if (end) {\n ret.push(end)\n }\n\n return ret\n }\n\n // Generate operation list by matchedBlockList\n private getOperationList(): Operation[] {\n const operationList: Operation[] = []\n let walkIndexOld = 0\n let walkIndexNew = 0\n for (const matchedBlock of this.matchedBlockList) {\n const isOldStartIndexMatched = walkIndexOld === matchedBlock.oldStart\n const isNewStartIndexMatched = walkIndexNew === matchedBlock.newStart\n const operationBase = {\n newEnd: matchedBlock.newStart,\n newStart: walkIndexNew,\n oldEnd: matchedBlock.oldStart,\n oldStart: walkIndexOld,\n }\n if (!isOldStartIndexMatched && !isNewStartIndexMatched) {\n operationList.push(Object.assign(operationBase, { type: 'replace' as const }))\n } else if (isOldStartIndexMatched && !isNewStartIndexMatched) {\n operationList.push(Object.assign(operationBase, { type: 'create' as const }))\n } else if (!isOldStartIndexMatched && isNewStartIndexMatched) {\n operationList.push(Object.assign(operationBase, { type: 'delete' as const }))\n }\n\n operationList.push({\n type: 'equal',\n newEnd: matchedBlock.newEnd,\n newStart: matchedBlock.newStart,\n oldEnd: matchedBlock.oldEnd,\n oldStart: matchedBlock.oldStart,\n })\n walkIndexOld = matchedBlock.oldEnd\n walkIndexNew = matchedBlock.newEnd\n }\n // handle the tail content\n const maxIndexOld = this.oldTokens.length\n const maxIndexNew = this.newTokens.length\n const tailOperationBase = {\n newEnd: maxIndexNew,\n newStart: walkIndexNew,\n oldEnd: maxIndexOld,\n oldStart: walkIndexOld,\n }\n const isOldFinished = walkIndexOld === maxIndexOld\n const isNewFinished = walkIndexNew === maxIndexNew\n if (!isOldFinished && !isNewFinished) {\n operationList.push(Object.assign(tailOperationBase, { type: 'replace' as const }))\n } else if (isOldFinished && !isNewFinished) {\n operationList.push(Object.assign(tailOperationBase, { type: 'create' as const }))\n } else if (!isOldFinished && isNewFinished) {\n operationList.push(Object.assign(tailOperationBase, { type: 'delete' as const }))\n }\n return operationList\n }\n\n private slideBestMatchedBlock(addA: number, addB: number, len: number): MatchedBlock | null {\n let maxSize = 0\n let bestMatchedBlock: MatchedBlock | null = null\n\n let continuousSize = 0\n for (let i = 0; i < len; i++) {\n if (this.oldTokens[addA + i] === this.newTokens[addB + i]) {\n continuousSize++\n } else {\n continuousSize = 0\n }\n if (continuousSize > maxSize) {\n maxSize = continuousSize\n bestMatchedBlock = {\n newEnd: addB + i + 1,\n newStart: addB + i - continuousSize + 1,\n oldEnd: addA + i + 1,\n oldStart: addA + i - continuousSize + 1,\n size: continuousSize,\n }\n }\n }\n\n return maxSize >= this.config.minMatchedSize ? bestMatchedBlock : null\n }\n\n /**\n * Convert HTML to tokens at character level, preserving HTML tags as complete tokens\n * @example\n * tokenize(\"<a> Hello World </a>\")\n * [\"<a>\", \" \", \"H\", \"e\", \"l\", \"l\", \"o\", \" \", \"W\", \"o\", \"r\", \"l\", \"d\", \" \", \"</a>\"]\n */\n private tokenizeByCharacter(html: string): string[] {\n // First, identify HTML tags and preserve them as complete tokens\n const tokens: string[] = []\n let currentPos = 0\n\n // Regular expression to match HTML tags (including picture and video tags with content)\n const tagRegex = /<picture[^>]*>.*?<\\/picture>|<video[^>]*>.*?<\\/video>|<[^>]+>/gs\n let match: null | RegExpExecArray\n\n while ((match = tagRegex.exec(html)) !== null) {\n // Add characters before the tag\n const beforeTag = html.substring(currentPos, match.index)\n if (beforeTag) {\n // Split non-tag content into individual characters\n for (const char of beforeTag) {\n tokens.push(char)\n }\n }\n\n // Add the complete tag as a single token\n tokens.push(match[0])\n currentPos = match.index + match[0].length\n }\n\n // Add any remaining characters after the last tag\n const remaining = html.substring(currentPos)\n for (const char of remaining) {\n tokens.push(char)\n }\n\n return tokens\n }\n\n /**\n * convert HTML to tokens\n * @example\n * tokenize(\"<a> Hello World </a>\")\n * [\"<a>\",\" \", \"Hello\", \" \", \"World\", \" \", \"</a>\"]\n */\n private tokenizeByWord(html: string): string[] {\n // atomic token: html tag、continuous numbers or letters、blank spaces、other symbol\n return (\n html.match(\n /<picture[^>]*>.*?<\\/picture>|<video[^>]*>.*?<\\/video>|<[^>]+>|\\w+\\b|\\s+|[^<>\\w]/gs,\n ) || []\n )\n }\n\n public getSideBySideContents(): string[] {\n if (this.sideBySideContents !== undefined) {\n return this.sideBySideContents\n }\n\n let oldHtml = ''\n let newHtml = ''\n let equalSequence = 0\n this.operationList.forEach((operation) => {\n switch (operation.type) {\n case 'create': {\n newHtml += this.dressUpDiffContent(\n 'create',\n this.newTokens.slice(operation.newStart, operation.newEnd),\n )\n break\n }\n\n case 'delete': {\n const deletedTokens = this.oldTokens.slice(operation.oldStart, operation.oldEnd)\n oldHtml += this.dressUpDiffContent('delete', deletedTokens)\n break\n }\n case 'equal': {\n const equalTokens = this.newTokens.slice(operation.newStart, operation.newEnd)\n let equalString = ''\n for (const token of equalTokens) {\n // find start tags and add data-seq to enable sync scroll\n const startTagMatch = token.match(htmlStartTagReg)\n if (startTagMatch) {\n equalSequence += 1\n const tagNameLength = (startTagMatch?.groups?.name?.length ?? 0) + 1\n equalString += `${token.slice(0, tagNameLength)} data-seq=\"${equalSequence}\"${token.slice(tagNameLength)}`\n } else {\n equalString += token\n }\n }\n oldHtml += equalString\n newHtml += equalString\n break\n }\n\n case 'replace': {\n oldHtml += this.dressUpDiffContent(\n 'delete',\n this.oldTokens.slice(operation.oldStart, operation.oldEnd),\n )\n newHtml += this.dressUpDiffContent(\n 'create',\n this.newTokens.slice(operation.newStart, operation.newEnd),\n )\n break\n }\n\n default: {\n // eslint-disable-next-line no-console\n console.error('Richtext diff error - invalid operation: ' + String(operation.type))\n }\n }\n })\n\n const result: [string, string] = [oldHtml, newHtml]\n this.sideBySideContents = result\n return result\n }\n\n public getUnifiedContent(): string {\n if (this.unifiedContent !== undefined) {\n return this.unifiedContent\n }\n\n let result = ''\n this.operationList.forEach((operation) => {\n switch (operation.type) {\n case 'create': {\n result += this.dressUpDiffContent(\n 'create',\n this.newTokens.slice(operation.newStart, operation.newEnd),\n )\n break\n }\n\n case 'delete': {\n result += this.dressUpDiffContent(\n 'delete',\n this.oldTokens.slice(operation.oldStart, operation.oldEnd),\n )\n break\n }\n\n case 'equal': {\n for (const token of this.newTokens.slice(operation.newStart, operation.newEnd)) {\n result += token\n }\n break\n }\n\n case 'replace': {\n // handle specially tag replace\n const olds = this.oldTokens.slice(operation.oldStart, operation.oldEnd)\n const news = this.newTokens.slice(operation.newStart, operation.newEnd)\n if (\n olds.length === 1 &&\n news.length === 1 &&\n olds[0]?.match(htmlTagReg) &&\n news[0]?.match(htmlTagReg)\n ) {\n result += news[0]\n break\n }\n\n const deletedTokens: string[] = []\n const createdTokens: string[] = []\n let createIndex = operation.newStart\n for (\n let deleteIndex = operation.oldStart;\n deleteIndex < operation.oldEnd;\n deleteIndex++\n ) {\n const deletedToken = this.oldTokens[deleteIndex]\n\n if (!deletedToken) {\n continue\n }\n\n const matchTagResultD = deletedToken?.match(htmlTagWithNameReg)\n if (matchTagResultD) {\n // handle replaced tag token\n\n // skip special tag\n if ([htmlImgTagReg, htmlVideoTagReg].some((item) => deletedToken?.match(item))) {\n deletedTokens.push(deletedToken)\n continue\n }\n\n // handle normal tag\n result += this.dressUpDiffContent('delete', deletedTokens)\n deletedTokens.splice(0)\n let isTagInNewFind = false\n for (\n let tempCreateIndex = createIndex;\n tempCreateIndex < operation.newEnd;\n tempCreateIndex++\n ) {\n const createdToken = this.newTokens[tempCreateIndex]\n if (!createdToken) {\n continue\n }\n const matchTagResultC = createdToken?.match(htmlTagWithNameReg)\n if (\n matchTagResultC &&\n matchTagResultC.groups?.name === matchTagResultD.groups?.name &&\n matchTagResultC.groups?.isEnd === matchTagResultD.groups?.isEnd\n ) {\n // find first matched tag, but not maybe the expected tag(to optimize)\n isTagInNewFind = true\n result += this.dressUpDiffContent('create', createdTokens)\n result += createdToken\n createdTokens.splice(0)\n createIndex = tempCreateIndex + 1\n break\n } else {\n createdTokens.push(createdToken)\n }\n }\n if (!isTagInNewFind) {\n result += deletedToken\n createdTokens.splice(0)\n }\n } else {\n // token is not a tag\n deletedTokens.push(deletedToken)\n }\n }\n if (createIndex < operation.newEnd) {\n createdTokens.push(...this.newTokens.slice(createIndex, operation.newEnd))\n }\n result += this.dressUpDiffContent('delete', deletedTokens)\n result += this.dressUpDiffContent('create', createdTokens)\n break\n }\n\n default: {\n // eslint-disable-next-line no-console\n console.error('Richtext diff error - invalid operation: ' + String(operation.type))\n }\n }\n })\n this.unifiedContent = result\n return result\n }\n}\n", "import { useEffect } from 'react'\n\nimport { useClickOutsideContext } from '../providers/ClickOutside/index.js'\n\nexport function useClickOutside(\n ref: React.RefObject<HTMLElement>,\n handler: () => void,\n enabled = true,\n) {\n const { register, unregister } = useClickOutsideContext()\n\n useEffect(() => {\n if (!enabled || !ref.current) {\n return\n }\n\n const listener = { handler, ref }\n register(listener)\n return () => unregister(listener)\n }, [ref, handler, enabled, register, unregister])\n}\n", "import React, { createContext, use, useEffect, useRef } from 'react'\n\ntype Listener = {\n handler: () => void\n ref: React.RefObject<HTMLElement>\n}\n\nconst ClickOutsideContext = createContext<{\n register: (listener: Listener) => void\n unregister: (listener: Listener) => void\n} | null>(null)\n\nexport const ClickOutsideProvider: React.FC<{ children: React.ReactNode }> = ({ children }) => {\n const listeners = useRef<Set<Listener>>(new Set())\n\n useEffect(() => {\n const handleClick = (event: MouseEvent) => {\n listeners.current.forEach(({ handler, ref }) => {\n if (ref.current && !ref.current.contains(event.target as Node)) {\n handler()\n }\n })\n }\n\n document.addEventListener('mousedown', handleClick)\n return () => document.removeEventListener('mousedown', handleClick)\n }, [])\n\n const register = (listener: Listener) => listeners.current.add(listener)\n const unregister = (listener: Listener) => listeners.current.delete(listener)\n\n return <ClickOutsideContext value={{ register, unregister }}>{children}</ClickOutsideContext>\n}\n\nexport const useClickOutsideContext = () => {\n const context = use(ClickOutsideContext)\n if (!context) {\n throw new Error('useClickOutside must be used within a ClickOutsideProvider')\n }\n return context\n}\n", "'use client'\nimport type { ClientCollectionConfig, Where } from 'payload'\n\nimport { useModal } from '@faceless-ui/modal'\nimport React, { useState } from 'react'\n\nimport type { FieldOption } from '../FieldSelect/reduceFieldOptions.js'\n\nimport { useAuth } from '../../providers/Auth/index.js'\nimport { EditDepthProvider } from '../../providers/EditDepth/index.js'\nimport { SelectAllStatus, useSelection } from '../../providers/Selection/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { Drawer } from '../Drawer/index.js'\nimport { ListSelectionButton } from '../ListSelection/index.js'\nimport { EditManyDrawerContent } from './DrawerContent.js'\nimport './index.scss'\n\nexport const baseClass = 'edit-many'\n\nexport type EditManyProps = {\n readonly collection: ClientCollectionConfig\n}\n\nexport const EditMany: React.FC<EditManyProps> = (props) => {\n const { count, selectAll, selectedIDs, toggleAll } = useSelection()\n\n return (\n <EditMany_v4\n {...props}\n count={count}\n ids={selectedIDs}\n onSuccess={() => toggleAll()}\n selectAll={selectAll === SelectAllStatus.AllAvailable}\n />\n )\n}\n\nexport const EditMany_v4: React.FC<\n {\n count: number\n ids: (number | string)[]\n /**\n * When multiple EditMany components are rendered on the page, this will differentiate them.\n */\n modalPrefix?: string\n onSuccess?: () => void\n selectAll: boolean\n where?: Where\n } & Omit<EditManyProps, 'ids'>\n> = ({ collection, count, ids, modalPrefix, onSuccess, selectAll, where }) => {\n const { permissions } = useAuth()\n const { openModal } = useModal()\n\n const { t } = useTranslation()\n\n const [selectedFields, setSelectedFields] = useState<FieldOption[]>([])\n\n const collectionPermissions = permissions?.collections?.[collection.slug]\n\n const drawerSlug = `${modalPrefix ? `${modalPrefix}-` : ''}edit-${collection.slug}`\n\n if (count === 0 || !collectionPermissions?.update) {\n return null\n }\n\n return (\n <div className={[baseClass, `${baseClass}__toggle`].filter(Boolean).join(' ')}>\n <ListSelectionButton\n aria-label={t('general:edit')}\n onClick={() => {\n openModal(drawerSlug)\n setSelectedFields([])\n }}\n >\n {t('general:edit')}\n </ListSelectionButton>\n <EditDepthProvider>\n <Drawer Header={null} slug={drawerSlug}>\n <EditManyDrawerContent\n collection={collection}\n count={count}\n drawerSlug={drawerSlug}\n ids={ids}\n onSuccess={onSuccess}\n selectAll={selectAll}\n selectedFields={selectedFields}\n setSelectedFields={setSelectedFields}\n where={where}\n />\n </Drawer>\n </EditDepthProvider>\n </div>\n )\n}\n", "'use client'\n\nimport type { SelectType, Where } from 'payload'\n\nimport { useModal } from '@faceless-ui/modal'\nimport { getTranslation } from '@payloadcms/translations'\nimport { useRouter, useSearchParams } from 'next/navigation.js'\nimport {\n combineWhereConstraints,\n formatAdminURL,\n mergeListSearchAndWhere,\n unflatten,\n} from 'payload/shared'\nimport * as qs from 'qs-esm'\nimport React, { useCallback, useEffect, useMemo, useState } from 'react'\n\nimport type { FormProps } from '../../forms/Form/index.js'\nimport type { OnFieldSelect } from '../FieldSelect/index.js'\nimport type { FieldOption } from '../FieldSelect/reduceFieldOptions.js'\n\nimport { useForm } from '../../forms/Form/context.js'\nimport { Form } from '../../forms/Form/index.js'\nimport { RenderField } from '../../forms/RenderFields/RenderField.js'\nimport { FormSubmit } from '../../forms/Submit/index.js'\nimport { XIcon } from '../../icons/X/index.js'\nimport { useAuth } from '../../providers/Auth/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { DocumentInfoProvider } from '../../providers/DocumentInfo/index.js'\nimport { useLocale } from '../../providers/Locale/index.js'\nimport { OperationContext } from '../../providers/Operation/index.js'\nimport { useServerFunctions } from '../../providers/ServerFunctions/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { abortAndIgnore, handleAbortRef } from '../../utilities/abortAndIgnore.js'\nimport { parseSearchParams } from '../../utilities/parseSearchParams.js'\nimport { FieldSelect } from '../FieldSelect/index.js'\nimport './index.scss'\nimport '../../forms/RenderFields/index.scss'\nimport { baseClass, type EditManyProps } from './index.js'\n\nconst Submit: React.FC<{\n readonly action: string\n readonly disabled: boolean\n}> = ({ action, disabled }) => {\n const { submit } = useForm()\n const { t } = useTranslation()\n\n const save = useCallback(() => {\n void submit({\n action,\n method: 'PATCH',\n skipValidation: true,\n })\n }, [action, submit])\n\n return (\n <FormSubmit className={`${baseClass}__save`} disabled={disabled} onClick={save}>\n {t('general:save')}\n </FormSubmit>\n )\n}\n\nconst PublishButton: React.FC<{\n action: string\n disabled: boolean\n}> = ({ action, disabled }) => {\n const { submit } = useForm()\n const { t } = useTranslation()\n\n const save = useCallback(() => {\n void submit({\n action,\n method: 'PATCH',\n overrides: {\n _status: 'published',\n },\n skipValidation: true,\n })\n }, [action, submit])\n\n return (\n <FormSubmit className={`${baseClass}__publish`} disabled={disabled} onClick={save}>\n {t('version:publishChanges')}\n </FormSubmit>\n )\n}\n\nconst SaveDraftButton: React.FC<{\n action: string\n disabled: boolean\n}> = ({ action, disabled }) => {\n const { submit } = useForm()\n const { t } = useTranslation()\n\n const save = useCallback(() => {\n void submit({\n action,\n method: 'PATCH',\n overrides: {\n _status: 'draft',\n },\n skipValidation: true,\n })\n }, [action, submit])\n\n return (\n <FormSubmit\n buttonStyle=\"secondary\"\n className={`${baseClass}__draft`}\n disabled={disabled}\n onClick={save}\n >\n {t('version:saveDraft')}\n </FormSubmit>\n )\n}\n\ntype EditManyDrawerContentProps = {\n /**\n * The total count of selected items\n */\n count?: number\n /**\n * The slug of the drawer\n */\n drawerSlug: string\n /**\n * The IDs of the selected items\n */\n ids?: (number | string)[]\n /**\n * The function to call after a successful action\n */\n onSuccess?: () => void\n /**\n * Whether all items are selected\n */\n selectAll?: boolean\n /**\n * The fields that are selected to bulk edit\n */\n selectedFields: FieldOption[]\n /**\n * The function to set the selected fields to bulk edit\n */\n setSelectedFields: (fields: FieldOption[]) => void\n where?: Where\n} & EditManyProps\n\nexport const EditManyDrawerContent: React.FC<EditManyDrawerContentProps> = (props) => {\n const {\n collection,\n collection: { fields, labels: { plural, singular } } = {},\n count,\n drawerSlug,\n ids,\n onSuccess: onSuccessFromProps,\n selectAll,\n selectedFields,\n setSelectedFields,\n where,\n } = props\n\n const { permissions, user } = useAuth()\n const { code: locale } = useLocale()\n\n const { closeModal } = useModal()\n\n const {\n config: {\n routes: { api: apiRoute },\n },\n } = useConfig()\n\n const { getFormState } = useServerFunctions()\n\n const { i18n, t } = useTranslation()\n\n const [isInitializing, setIsInitializing] = useState(false)\n\n const router = useRouter()\n const abortFormStateRef = React.useRef<AbortController>(null)\n const collectionPermissions = permissions?.collections?.[collection.slug]\n const searchParams = useSearchParams()\n\n const select = useMemo<SelectType>(() => {\n return unflatten(\n selectedFields.reduce((acc, option) => {\n acc[option.value.path] = true\n return acc\n }, {} as SelectType),\n )\n }, [selectedFields])\n\n const onChange: FormProps['onChange'][0] = useCallback(\n async ({ formState: prevFormState, submitted }) => {\n const controller = handleAbortRef(abortFormStateRef)\n\n const { state } = await getFormState({\n collectionSlug: collection.slug,\n docPermissions: collectionPermissions,\n docPreferences: null,\n formState: prevFormState,\n operation: 'update',\n schemaPath: collection.slug,\n select,\n signal: controller.signal,\n skipValidation: !submitted,\n })\n\n abortFormStateRef.current = null\n\n return state\n },\n [getFormState, collection, collectionPermissions, select],\n )\n\n useEffect(() => {\n const abortFormState = abortFormStateRef.current\n\n return () => {\n abortAndIgnore(abortFormState)\n }\n }, [])\n\n const queryString = useMemo((): string => {\n const whereConstraints: Where[] = []\n\n if (where) {\n whereConstraints.push(where)\n }\n\n const queryWithSearch = mergeListSearchAndWhere({\n collectionConfig: collection,\n search: searchParams.get('search'),\n })\n\n if (queryWithSearch) {\n whereConstraints.push(queryWithSearch)\n }\n\n if (selectAll) {\n // Match the current filter/search, or default to all docs\n whereConstraints.push(\n (parseSearchParams(searchParams)?.where as Where) || {\n id: {\n not_equals: '',\n },\n },\n )\n } else {\n // If we're not selecting all, we need to select specific docs\n whereConstraints.push({\n id: {\n in: ids || [],\n },\n })\n }\n\n return qs.stringify(\n {\n locale,\n select: {},\n where: combineWhereConstraints(whereConstraints),\n },\n { addQueryPrefix: true },\n )\n }, [collection, searchParams, selectAll, ids, locale, where])\n\n const onSuccess = () => {\n router.replace(\n qs.stringify(\n {\n ...parseSearchParams(searchParams),\n _r: Date.now(), // Cache buster to force fresh data fetch. Prevents an e2e race condition where sometimes the data is not updated.\n page: selectAll ? '1' : undefined,\n },\n { addQueryPrefix: true },\n ),\n )\n closeModal(drawerSlug)\n\n if (typeof onSuccessFromProps === 'function') {\n onSuccessFromProps()\n }\n }\n\n const onFieldSelect = useCallback<OnFieldSelect>(\n async ({ dispatchFields, formState, selected }) => {\n setIsInitializing(true)\n\n setSelectedFields(selected || [])\n\n const { state } = await getFormState({\n collectionSlug: collection.slug,\n docPermissions: collectionPermissions,\n docPreferences: null,\n formState,\n operation: 'update',\n schemaPath: collection.slug,\n select: unflatten(\n selected.reduce((acc, option) => {\n acc[option.value.path] = true\n return acc\n }, {} as SelectType),\n ),\n skipValidation: true,\n })\n\n dispatchFields({\n type: 'UPDATE_MANY',\n formState: state,\n })\n\n setIsInitializing(false)\n },\n [getFormState, collection.slug, collectionPermissions, setSelectedFields],\n )\n\n return (\n <DocumentInfoProvider\n collectionSlug={collection.slug}\n currentEditor={user}\n hasPublishedDoc={false}\n id={null}\n initialData={{}}\n isLocked={false}\n lastUpdateTime={0}\n mostRecentVersionIsAutosaved={false}\n unpublishedVersionCount={0}\n versionCount={0}\n >\n <OperationContext value=\"update\">\n <div className={`${baseClass}__main`}>\n <div className={`${baseClass}__header`}>\n <h2 className={`${baseClass}__header__title`}>\n {t('general:editingLabel', {\n count,\n label: getTranslation(count > 1 ? plural : singular, i18n),\n })}\n </h2>\n <button\n aria-label={t('general:close')}\n className={`${baseClass}__header__close`}\n id={`close-drawer__${drawerSlug}`}\n onClick={() => closeModal(drawerSlug)}\n type=\"button\"\n >\n <XIcon />\n </button>\n </div>\n <Form\n className={`${baseClass}__form`}\n isInitializing={isInitializing}\n onChange={[onChange]}\n onSuccess={onSuccess}\n >\n <FieldSelect\n fields={fields}\n onChange={onFieldSelect}\n permissions={collectionPermissions.fields}\n />\n {selectedFields.length === 0 ? null : (\n <div className=\"render-fields\">\n {selectedFields.map((option, i) => {\n const {\n value: { field, fieldPermissions, path },\n } = option\n\n return (\n <RenderField\n clientFieldConfig={field}\n indexPath=\"\"\n key={`${path}-${i}`}\n parentPath=\"\"\n parentSchemaPath=\"\"\n path={path}\n permissions={fieldPermissions}\n />\n )\n })}\n </div>\n )}\n <div className={`${baseClass}__sidebar-wrap`}>\n <div className={`${baseClass}__sidebar`}>\n <div className={`${baseClass}__sidebar-sticky-wrap`}>\n <div className={`${baseClass}__document-actions`}>\n {collection?.versions?.drafts ? (\n <React.Fragment>\n <SaveDraftButton\n action={formatAdminURL({\n apiRoute,\n path: `/${collection.slug}${queryString}&draft=true`,\n })}\n disabled={selectedFields.length === 0}\n />\n <PublishButton\n action={formatAdminURL({\n apiRoute,\n path: `/${collection.slug}${queryString}&draft=true`,\n })}\n disabled={selectedFields.length === 0}\n />\n </React.Fragment>\n ) : (\n <Submit\n action={formatAdminURL({\n apiRoute,\n path: `/${collection.slug}${queryString}`,\n })}\n disabled={selectedFields.length === 0}\n />\n )}\n </div>\n </div>\n </div>\n </div>\n </Form>\n </div>\n </OperationContext>\n </DocumentInfoProvider>\n )\n}\n", "'use client'\nimport type { Modal as ModalType } from '@faceless-ui/modal'\n\nimport { Modal } from '@faceless-ui/modal'\nimport React from 'react'\n\nimport { useEditDepth } from '../../providers/EditDepth/index.js'\n\nexport function FullscreenModal(props: Parameters<typeof ModalType>[0]) {\n const currentDepth = useEditDepth()\n\n return (\n <Modal\n // Fixes https://github.com/payloadcms/payload/issues/13778\n closeOnBlur={false}\n {...props}\n style={{\n ...(props.style || {}),\n zIndex: `calc(100 + ${currentDepth || 0} + 1)`,\n }}\n />\n )\n}\n", "'use client'\nimport { useModal } from '@faceless-ui/modal'\nimport React, { useCallback } from 'react'\nimport { toast } from 'sonner'\n\nimport { useDocumentInfo } from '../../providers/DocumentInfo/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { Button } from '../Button/index.js'\nimport { ConfirmationModal } from '../ConfirmationModal/index.js'\nimport { Translation } from '../Translation/index.js'\n\nexport type GenerateConfirmationProps = {\n highlightField: (Boolean) => void\n setKey: () => void\n}\n\nexport function GenerateConfirmation(props: GenerateConfirmationProps) {\n const { highlightField, setKey } = props\n\n const { id } = useDocumentInfo()\n const { toggleModal } = useModal()\n const { t } = useTranslation()\n\n const modalSlug = `generate-confirmation-${id}`\n\n const handleGenerate = useCallback(() => {\n setKey()\n toast.success(t('authentication:newAPIKeyGenerated'))\n highlightField(true)\n }, [highlightField, setKey, t])\n\n return (\n <React.Fragment>\n <Button\n buttonStyle=\"secondary\"\n onClick={() => {\n toggleModal(modalSlug)\n }}\n size=\"small\"\n >\n {t('authentication:generateNewAPIKey')}\n </Button>\n <ConfirmationModal\n body={\n <Translation\n elements={{\n 1: ({ children }) => <strong>{children}</strong>,\n }}\n i18nKey=\"authentication:generatingNewAPIKeyWillInvalidate\"\n t={t}\n />\n }\n confirmLabel={t('authentication:generate')}\n heading={t('authentication:confirmGeneration')}\n modalSlug={modalSlug}\n onConfirm={handleGenerate}\n />\n </React.Fragment>\n )\n}\n", "'use client'\n\nimport type { SanitizedPermissions } from 'payload'\n\nimport { useEffect } from 'react'\n\nimport { useAuth } from '../../providers/Auth/index.js'\n\n/**\n * The Auth Provider wraps the entire app\n * but each page has specific permissions\n *\n * i.e. access control on documents/fields on a document\n */\n\ntype Props = {\n permissions: SanitizedPermissions\n}\n\nexport function HydrateAuthProvider({ permissions }: Props) {\n const { setPermissions } = useAuth()\n\n useEffect(() => {\n setPermissions(permissions)\n }, [permissions, setPermissions])\n\n return null\n}\n", "'use client'\n\nimport { useWindowInfo } from '@faceless-ui/window-info'\nimport { getTranslation } from '@payloadcms/translations'\nimport { validateWhereQuery } from 'payload/shared'\nimport React, { Fragment, useEffect, useRef, useState } from 'react'\n\nimport type { ListControlsProps } from './types.js'\n\nimport { Popup, PopupList } from '../../elements/Popup/index.js'\nimport { useUseTitleField } from '../../hooks/useUseAsTitle.js'\nimport { ChevronIcon } from '../../icons/Chevron/index.js'\nimport { Dots } from '../../icons/Dots/index.js'\nimport { useListQuery } from '../../providers/ListQuery/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { AnimateHeight } from '../AnimateHeight/index.js'\nimport { ColumnSelector } from '../ColumnSelector/index.js'\nimport { GroupByBuilder } from '../GroupByBuilder/index.js'\nimport { Pill } from '../Pill/index.js'\nimport { QueryPresetBar } from '../QueryPresets/QueryPresetBar/index.js'\nimport { SearchBar } from '../SearchBar/index.js'\nimport { WhereBuilder } from '../WhereBuilder/index.js'\nimport { getTextFieldsToBeSearched } from './getTextFieldsToBeSearched.js'\nimport './index.scss'\n\nconst baseClass = 'list-controls'\n\n/**\n * The ListControls component is used to render the controls (search, filter, where)\n * for a collection's list view. You can find those directly above the table which lists\n * the collection's documents.\n */\nexport const ListControls: React.FC<ListControlsProps> = (props) => {\n const {\n beforeActions,\n collectionConfig,\n collectionSlug,\n disableQueryPresets,\n enableColumns = true,\n enableFilters = true,\n enableSort = false,\n listMenuItems,\n queryPreset: activePreset,\n queryPresetPermissions,\n renderedFilters,\n resolvedFilterOptions,\n } = props\n\n const { handleSearchChange, query } = useListQuery()\n\n const titleField = useUseTitleField(collectionConfig)\n const { i18n, t } = useTranslation()\n\n const {\n breakpoints: { s: smallBreak },\n } = useWindowInfo()\n\n const searchLabel =\n (titleField &&\n getTranslation(\n 'label' in titleField &&\n (typeof titleField.label === 'string' || typeof titleField.label === 'object')\n ? titleField.label\n : 'name' in titleField\n ? titleField.name\n : null,\n i18n,\n )) ??\n 'ID'\n\n const listSearchableFields = getTextFieldsToBeSearched(\n collectionConfig.admin.listSearchableFields,\n collectionConfig.fields,\n i18n,\n )\n\n const searchLabelTranslated = useRef(\n t('general:searchBy', { label: getTranslation(searchLabel, i18n) }),\n )\n\n const hasWhereParam = useRef(Boolean(query?.where))\n\n const shouldInitializeWhereOpened = validateWhereQuery(query?.where)\n\n const [visibleDrawer, setVisibleDrawer] = useState<'columns' | 'group-by' | 'sort' | 'where'>(\n shouldInitializeWhereOpened ? 'where' : undefined,\n )\n\n useEffect(() => {\n if (hasWhereParam.current && !query?.where) {\n hasWhereParam.current = false\n } else if (query?.where) {\n hasWhereParam.current = true\n }\n }, [setVisibleDrawer, query?.where])\n\n useEffect(() => {\n if (listSearchableFields?.length > 0) {\n searchLabelTranslated.current = listSearchableFields.reduce(\n (placeholderText: string, field, i: number) => {\n const label =\n 'label' in field && field.label ? field.label : 'name' in field ? field.name : null\n\n if (i === 0) {\n return `${t('general:searchBy', {\n label: getTranslation(label, i18n),\n })}`\n }\n\n if (i === listSearchableFields.length - 1) {\n return `${placeholderText} ${t('general:or')} ${getTranslation(label, i18n)}`\n }\n\n return `${placeholderText}, ${getTranslation(label, i18n)}`\n },\n '',\n )\n } else {\n searchLabelTranslated.current = t('general:searchBy', {\n label: getTranslation(searchLabel, i18n),\n })\n }\n }, [t, listSearchableFields, i18n, searchLabel])\n\n return (\n <div className={baseClass}>\n {collectionConfig?.enableQueryPresets && !disableQueryPresets && (\n <QueryPresetBar\n activePreset={activePreset}\n collectionSlug={collectionSlug}\n queryPresetPermissions={queryPresetPermissions}\n />\n )}\n <SearchBar\n Actions={[\n !smallBreak && (\n <React.Fragment key=\"before-actions\">{beforeActions && beforeActions}</React.Fragment>\n ),\n enableColumns && (\n <Pill\n aria-controls={`${baseClass}-columns`}\n aria-expanded={visibleDrawer === 'columns'}\n className={`${baseClass}__toggle-columns`}\n icon={<ChevronIcon direction={visibleDrawer === 'columns' ? 'up' : 'down'} />}\n id=\"toggle-list-columns\"\n key=\"toggle-list-columns\"\n onClick={() => setVisibleDrawer(visibleDrawer !== 'columns' ? 'columns' : undefined)}\n pillStyle=\"light\"\n size=\"small\"\n >\n {t('general:columns')}\n </Pill>\n ),\n enableFilters && (\n <Pill\n aria-controls={`${baseClass}-where`}\n aria-expanded={visibleDrawer === 'where'}\n className={`${baseClass}__toggle-where`}\n icon={<ChevronIcon direction={visibleDrawer === 'where' ? 'up' : 'down'} />}\n id=\"toggle-list-filters\"\n key=\"toggle-list-filters\"\n onClick={() => setVisibleDrawer(visibleDrawer !== 'where' ? 'where' : undefined)}\n pillStyle=\"light\"\n size=\"small\"\n >\n {t('general:filters')}\n </Pill>\n ),\n enableSort && (\n <Pill\n aria-controls={`${baseClass}-sort`}\n aria-expanded={visibleDrawer === 'sort'}\n className={`${baseClass}__toggle-sort`}\n icon={<ChevronIcon />}\n id=\"toggle-list-sort\"\n key=\"toggle-list-sort\"\n onClick={() => setVisibleDrawer(visibleDrawer !== 'sort' ? 'sort' : undefined)}\n pillStyle=\"light\"\n size=\"small\"\n >\n {t('general:sort')}\n </Pill>\n ),\n collectionConfig.admin.groupBy && (\n <Pill\n aria-controls={`${baseClass}-group-by`}\n aria-expanded={visibleDrawer === 'group-by'}\n className={`${baseClass}__toggle-group-by`}\n icon={<ChevronIcon direction={visibleDrawer === 'group-by' ? 'up' : 'down'} />}\n id=\"toggle-group-by\"\n key=\"toggle-group-by\"\n onClick={() =>\n setVisibleDrawer(visibleDrawer !== 'group-by' ? 'group-by' : undefined)\n }\n pillStyle=\"light\"\n size=\"small\"\n >\n {t('general:groupByLabel', {\n label: '',\n })}\n </Pill>\n ),\n listMenuItems && Array.isArray(listMenuItems) && listMenuItems.length > 0 && (\n <Popup\n button={<Dots ariaLabel={t('general:moreOptions')} />}\n className={`${baseClass}__popup`}\n horizontalAlign=\"right\"\n id=\"list-menu\"\n key=\"list-menu\"\n size=\"small\"\n verticalAlign=\"bottom\"\n >\n <PopupList.ButtonGroup>\n {listMenuItems.map((item, i) => (\n <Fragment key={`list-menu-item-${i}`}>{item}</Fragment>\n ))}\n </PopupList.ButtonGroup>\n </Popup>\n ),\n ].filter(Boolean)}\n key={collectionSlug}\n label={searchLabelTranslated.current}\n onSearchChange={handleSearchChange}\n searchQueryParam={query?.search}\n />\n {enableColumns && (\n <AnimateHeight\n className={`${baseClass}__columns`}\n height={visibleDrawer === 'columns' ? 'auto' : 0}\n id={`${baseClass}-columns`}\n >\n <ColumnSelector collectionSlug={collectionConfig.slug} />\n </AnimateHeight>\n )}\n <AnimateHeight\n className={`${baseClass}__where`}\n height={visibleDrawer === 'where' ? 'auto' : 0}\n id={`${baseClass}-where`}\n >\n <WhereBuilder\n collectionPluralLabel={collectionConfig?.labels?.plural}\n collectionSlug={collectionConfig.slug}\n fields={collectionConfig?.fields}\n renderedFilters={renderedFilters}\n resolvedFilterOptions={resolvedFilterOptions}\n />\n </AnimateHeight>\n {collectionConfig.admin.groupBy && (\n <AnimateHeight\n className={`${baseClass}__group-by`}\n height={visibleDrawer === 'group-by' ? 'auto' : 0}\n id={`${baseClass}-group-by`}\n >\n <GroupByBuilder collectionSlug={collectionConfig.slug} fields={collectionConfig.fields} />\n </AnimateHeight>\n )}\n </div>\n )\n}\n", "import React from 'react'\n\nimport './index.scss'\n\nconst baseClass = 'dots'\n\nexport const Dots: React.FC<{\n ariaLabel?: string\n className?: string\n noBackground?: boolean\n orientation?: 'horizontal' | 'vertical'\n}> = ({ ariaLabel, className, noBackground, orientation = 'vertical' }) => (\n <div\n aria-label={ariaLabel}\n className={[\n className,\n baseClass,\n noBackground && `${baseClass}--no-background`,\n orientation && `${baseClass}--${orientation}`,\n ]\n .filter(Boolean)\n .join(' ')}\n >\n <div />\n <div />\n <div />\n </div>\n)\n", "'use client'\nimport type { ClientField, Field, SanitizedCollectionConfig } from 'payload'\n\nimport './index.scss'\n\nimport React, { useMemo } from 'react'\n\nimport { SelectInput } from '../../fields/Select/Input.js'\nimport { useAuth } from '../../providers/Auth/index.js'\nimport { useListQuery } from '../../providers/ListQuery/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { reduceFieldsToOptions } from '../../utilities/reduceFieldsToOptions.js'\nimport { ReactSelect } from '../ReactSelect/index.js'\n\nexport type Props = {\n readonly collectionSlug: SanitizedCollectionConfig['slug']\n fields: ClientField[]\n}\n\nconst baseClass = 'group-by-builder'\n\n/**\n * Note: Some fields are already omitted from the list of fields:\n * - fields with nested field, e.g. `tabs`, `groups`, etc.\n * - fields that don't affect data, i.e. `row`, `collapsible`, `ui`, etc.\n * So we don't technically need to omit them here, but do anyway.\n * But some remaining fields still need an additional check, e.g. `richText`, etc.\n */\nconst supportedFieldTypes: Field['type'][] = [\n 'text',\n 'textarea',\n 'number',\n 'select',\n 'relationship',\n 'date',\n 'checkbox',\n 'radio',\n 'email',\n 'number',\n 'upload',\n]\n\nexport const GroupByBuilder: React.FC<Props> = ({ collectionSlug, fields }) => {\n const { i18n, t } = useTranslation()\n const { permissions } = useAuth()\n\n const fieldPermissions = permissions?.collections?.[collectionSlug]?.fields\n\n const reducedFields = useMemo(\n () =>\n reduceFieldsToOptions({\n fieldPermissions,\n fields,\n i18n,\n }),\n [fields, fieldPermissions, i18n],\n )\n\n const { query, refineListData } = useListQuery()\n\n const groupByFieldName = query.groupBy?.replace(/^-/, '')\n\n const groupByField = reducedFields.find((field) => field.value === groupByFieldName)\n\n return (\n <div className={baseClass}>\n <div className={`${baseClass}__header`}>\n <p>\n {t('general:groupByLabel', {\n label: '',\n })}\n </p>\n {query.groupBy && (\n <button\n className={`${baseClass}__clear-button`}\n id=\"group-by--reset\"\n onClick={async () => {\n await refineListData({\n groupBy: '',\n })\n }}\n type=\"button\"\n >\n {t('general:clear')}\n </button>\n )}\n </div>\n <div className={`${baseClass}__inputs`}>\n <ReactSelect\n filterOption={(option, inputValue) =>\n ((option?.data?.plainTextLabel as string) || option.label)\n .toLowerCase()\n .includes(inputValue.toLowerCase())\n }\n id=\"group-by--field-select\"\n isClearable\n isMulti={false}\n onChange={async (v: { value: string } | null) => {\n const value = v === null ? undefined : v.value\n\n // value is being cleared\n if (v === null) {\n await refineListData({\n groupBy: '',\n page: 1,\n })\n }\n\n await refineListData({\n groupBy: value ? (query.groupBy?.startsWith('-') ? `-${value}` : value) : undefined,\n page: 1,\n })\n }}\n options={reducedFields.filter(\n (field) =>\n !field.field.admin.disableGroupBy &&\n field.value !== 'id' &&\n supportedFieldTypes.includes(field.field.type),\n )}\n value={{\n label: groupByField?.label || t('general:selectValue'),\n value: groupByFieldName || '',\n }}\n />\n <SelectInput\n id=\"group-by--sort\"\n isClearable={false}\n name=\"direction\"\n onChange={async ({ value }: { value: string }) => {\n if (!groupByFieldName) {\n return\n }\n\n await refineListData({\n groupBy: value === 'asc' ? groupByFieldName : `-${groupByFieldName}`,\n page: 1,\n })\n }}\n options={[\n { label: t('general:ascending'), value: 'asc' },\n { label: t('general:descending'), value: 'desc' },\n ]}\n path=\"direction\"\n readOnly={!groupByFieldName}\n value={\n !query.groupBy\n ? 'asc'\n : typeof query.groupBy === 'string'\n ? `${query.groupBy.startsWith('-') ? 'desc' : 'asc'}`\n : ''\n }\n />\n </div>\n </div>\n )\n}\n", "import type { QueryPreset, SanitizedCollectionPermission } from 'payload'\n\nimport { useModal } from '@faceless-ui/modal'\nimport { getTranslation } from '@payloadcms/translations'\nimport {\n formatAdminURL,\n transformColumnsToPreferences,\n transformColumnsToSearchParams,\n} from 'payload/shared'\nimport React, { Fragment, useCallback, useMemo } from 'react'\nimport { toast } from 'sonner'\n\nimport { PlusIcon } from '../../../icons/Plus/index.js'\nimport { useConfig } from '../../../providers/Config/index.js'\nimport { useListQuery } from '../../../providers/ListQuery/context.js'\nimport { useTranslation } from '../../../providers/Translation/index.js'\nimport { ConfirmationModal } from '../../ConfirmationModal/index.js'\nimport { useDocumentDrawer } from '../../DocumentDrawer/index.js'\nimport { useListDrawer } from '../../ListDrawer/index.js'\nimport { ListSelectionButton } from '../../ListSelection/index.js'\nimport { Pill } from '../../Pill/index.js'\nimport { Translation } from '../../Translation/index.js'\nimport { QueryPresetToggler } from '../QueryPresetToggler/index.js'\nimport './index.scss'\n\nconst confirmDeletePresetModalSlug = 'confirm-delete-preset'\n\nconst queryPresetsSlug = 'payload-query-presets'\n\nconst baseClass = 'query-preset-bar'\n\nexport const QueryPresetBar: React.FC<{\n activePreset: QueryPreset\n collectionSlug?: string\n queryPresetPermissions: SanitizedCollectionPermission\n}> = ({ activePreset, collectionSlug, queryPresetPermissions }) => {\n const { modified, query, refineListData, setModified: setQueryModified } = useListQuery()\n\n const { i18n, t } = useTranslation()\n const { openModal } = useModal()\n\n const {\n config: {\n routes: { api: apiRoute },\n },\n getEntityConfig,\n } = useConfig()\n\n const presetConfig = getEntityConfig({ collectionSlug: queryPresetsSlug })\n\n const [PresetDocumentDrawer, , { openDrawer: openDocumentDrawer }] = useDocumentDrawer({\n id: activePreset?.id,\n collectionSlug: queryPresetsSlug,\n })\n\n const [\n CreateNewPresetDrawer,\n ,\n { closeDrawer: closeCreateNewDrawer, openDrawer: openCreateNewDrawer },\n ] = useDocumentDrawer({\n collectionSlug: queryPresetsSlug,\n })\n\n const filterOptions = useMemo(\n () => ({\n 'payload-query-presets': {\n isTemp: {\n not_equals: true,\n },\n relatedCollection: {\n equals: collectionSlug,\n },\n },\n }),\n [collectionSlug],\n )\n\n const [ListDrawer, , { closeDrawer: closeListDrawer, openDrawer: openListDrawer }] =\n useListDrawer({\n collectionSlugs: [queryPresetsSlug],\n filterOptions,\n selectedCollection: queryPresetsSlug,\n })\n\n const handlePresetChange = useCallback(\n async (preset: QueryPreset) => {\n await refineListData(\n {\n columns: preset.columns ? transformColumnsToSearchParams(preset.columns) : undefined,\n groupBy: preset.groupBy || '',\n preset: preset.id,\n where: preset.where,\n },\n false,\n )\n },\n [refineListData],\n )\n\n const resetQueryPreset = useCallback(async () => {\n await refineListData(\n {\n columns: [],\n groupBy: '',\n preset: '',\n where: {},\n },\n false,\n )\n }, [refineListData])\n\n const handleDeletePreset = useCallback(async () => {\n try {\n await fetch(\n formatAdminURL({\n apiRoute,\n path: `/${queryPresetsSlug}/${activePreset.id}`,\n }),\n {\n method: 'DELETE',\n },\n ).then(async (res) => {\n try {\n const json = await res.json()\n\n if (res.status < 400) {\n toast.success(\n t('general:titleDeleted', {\n label: getTranslation(presetConfig?.labels?.singular, i18n),\n title: activePreset.title,\n }),\n )\n\n await resetQueryPreset()\n } else {\n if (json.errors) {\n json.errors.forEach((error) => toast.error(error.message))\n } else {\n toast.error(t('error:deletingTitle', { title: activePreset.title }))\n }\n }\n } catch (_err) {\n toast.error(t('error:deletingTitle', { title: activePreset.title }))\n }\n })\n } catch (_err) {\n toast.error(t('error:deletingTitle', { title: activePreset.title }))\n }\n }, [apiRoute, activePreset?.id, activePreset?.title, t, presetConfig, i18n, resetQueryPreset])\n\n const saveCurrentChanges = useCallback(async () => {\n try {\n await fetch(\n formatAdminURL({\n apiRoute,\n path: `/${queryPresetsSlug}/${activePreset.id}`,\n }),\n {\n body: JSON.stringify({\n columns: transformColumnsToPreferences(query.columns),\n groupBy: query.groupBy,\n where: query.where,\n }),\n credentials: 'include',\n headers: {\n 'Content-Type': 'application/json',\n },\n method: 'PATCH',\n },\n ).then(async (res) => {\n try {\n const json = await res.json()\n\n if (res.status < 400) {\n toast.success(\n t('general:updatedLabelSuccessfully', {\n label: getTranslation(presetConfig?.labels?.singular, i18n),\n }),\n )\n\n setQueryModified(false)\n } else {\n if (json.errors) {\n json.errors.forEach((error) => toast.error(error.message))\n } else {\n toast.error(t('error:unknown'))\n }\n }\n } catch (_err) {\n toast.error(t('error:unknown'))\n }\n })\n } catch (_err) {\n toast.error(t('error:unknown'))\n }\n }, [\n apiRoute,\n activePreset?.id,\n query.columns,\n query.groupBy,\n query.where,\n t,\n presetConfig?.labels?.singular,\n i18n,\n setQueryModified,\n ])\n\n const hasModifiedPreset = activePreset && modified\n\n return (\n <Fragment>\n <div className={baseClass}>\n <div className={`${baseClass}__menu`}>\n <QueryPresetToggler\n activePreset={activePreset}\n openPresetListDrawer={openListDrawer}\n resetPreset={resetQueryPreset}\n />\n <Pill\n aria-label={t('general:newLabel', { label: presetConfig?.labels?.singular })}\n className={`${baseClass}__create-new-preset`}\n icon={<PlusIcon />}\n id=\"create-new-preset\"\n onClick={() => {\n openCreateNewDrawer()\n }}\n size=\"small\"\n />\n </div>\n <div className={`${baseClass}__menu-items`}>\n {hasModifiedPreset && (\n <ListSelectionButton\n id=\"reset-preset\"\n key=\"reset\"\n onClick={async () => {\n await refineListData(\n {\n columns: transformColumnsToSearchParams(activePreset.columns),\n groupBy: activePreset.groupBy || '',\n where: activePreset.where,\n },\n false,\n )\n }}\n type=\"button\"\n >\n {t('general:reset')}\n </ListSelectionButton>\n )}\n {hasModifiedPreset && queryPresetPermissions.update && (\n <ListSelectionButton\n id=\"save-preset\"\n key=\"save\"\n onClick={async () => {\n await saveCurrentChanges()\n }}\n type=\"button\"\n >\n {activePreset?.isShared ? t('general:updateForEveryone') : t('fields:saveChanges')}\n </ListSelectionButton>\n )}\n {activePreset && queryPresetPermissions?.delete && (\n <Fragment>\n <ListSelectionButton\n id=\"delete-preset\"\n onClick={() => openModal(confirmDeletePresetModalSlug)}\n type=\"button\"\n >\n {t('general:deleteLabel', { label: presetConfig?.labels?.singular })}\n </ListSelectionButton>\n <ListSelectionButton\n id=\"edit-preset\"\n onClick={() => {\n openDocumentDrawer()\n }}\n type=\"button\"\n >\n {t('general:editLabel', { label: presetConfig?.labels?.singular })}\n </ListSelectionButton>\n </Fragment>\n )}\n </div>\n </div>\n <CreateNewPresetDrawer\n initialData={{\n columns: transformColumnsToPreferences(query.columns),\n groupBy: query.groupBy,\n relatedCollection: collectionSlug,\n where: query.where,\n }}\n onSave={async ({ doc }) => {\n closeCreateNewDrawer()\n await handlePresetChange(doc as QueryPreset)\n }}\n redirectAfterCreate={false}\n />\n <ConfirmationModal\n body={\n <Translation\n elements={{\n '1': ({ children }) => <strong>{children}</strong>,\n }}\n i18nKey=\"general:aboutToDelete\"\n t={t}\n variables={{\n label: presetConfig?.labels?.singular,\n title: activePreset?.title,\n }}\n />\n }\n confirmingLabel={t('general:deleting')}\n heading={t('general:confirmDeletion')}\n modalSlug={confirmDeletePresetModalSlug}\n onConfirm={handleDeletePreset}\n />\n <PresetDocumentDrawer\n onDelete={() => {\n // setSelectedPreset(undefined)\n }}\n onDuplicate={async ({ doc }) => {\n await handlePresetChange(doc as QueryPreset)\n }}\n onSave={async ({ doc }) => {\n await handlePresetChange(doc as QueryPreset)\n }}\n />\n <ListDrawer\n allowCreate={false}\n disableQueryPresets\n onSelect={async ({ doc }) => {\n closeListDrawer()\n await handlePresetChange(doc as QueryPreset)\n }}\n />\n </Fragment>\n )\n}\n", "'use client'\nimport type { QueryPreset } from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\n\nimport { PeopleIcon } from '../../../icons/People/index.js'\nimport { XIcon } from '../../../icons/X/index.js'\nimport { useConfig } from '../../../providers/Config/index.js'\nimport { useTranslation } from '../../../providers/Translation/index.js'\nimport { Pill } from '../../Pill/index.js'\nimport './index.scss'\n\nconst baseClass = 'active-query-preset'\n\nexport function QueryPresetToggler({\n activePreset,\n openPresetListDrawer,\n resetPreset,\n}: {\n activePreset: QueryPreset\n openPresetListDrawer: () => void\n resetPreset: () => Promise<void>\n}) {\n const { i18n, t } = useTranslation()\n const { getEntityConfig } = useConfig()\n\n const presetsConfig = getEntityConfig({\n collectionSlug: 'payload-query-presets',\n })\n\n return (\n <Pill\n className={[baseClass, activePreset && `${baseClass}--active`].filter(Boolean).join(' ')}\n id=\"select-preset\"\n onClick={() => {\n openPresetListDrawer()\n }}\n pillStyle=\"light\"\n size=\"small\"\n >\n <div className={`${baseClass}__label`}>\n {activePreset?.isShared && <PeopleIcon className={`${baseClass}__shared`} />}\n <div className={`${baseClass}__label-text-max-width`}>\n <div className={`${baseClass}__label-text`}>\n {activePreset?.title ||\n t('general:selectLabel', {\n label: getTranslation(presetsConfig.labels.singular, i18n),\n })}\n </div>\n </div>\n {activePreset ? (\n <div\n className={`${baseClass}__clear`}\n id=\"clear-preset\"\n onClick={async (e) => {\n e.stopPropagation()\n await resetPreset()\n }}\n onKeyDown={async (e) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.stopPropagation()\n await resetPreset()\n }\n }}\n role=\"button\"\n tabIndex={0}\n >\n <XIcon />\n </div>\n ) : null}\n </div>\n </Pill>\n )\n}\n", "import React from 'react'\n\nimport './index.scss'\n\nexport const PeopleIcon: React.FC<{\n className: string\n}> = ({ className }) => (\n <svg\n className={['icon', 'icon--people', className].filter(Boolean).join(' ')}\n fill=\"none\"\n height=\"20\"\n viewBox=\"0 0 20 20\"\n width=\"20\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n className=\"stroke\"\n d=\"M14 16C14 14.5855 13.4381 13.229 12.4379 12.2288C11.4377 11.2286 10.0812 10.6667 8.66668 10.6667M8.66668 10.6667C7.25219 10.6667 5.89563 11.2286 4.89544 12.2288C3.89525 13.229 3.33334 14.5855 3.33334 16M8.66668 10.6667C10.5076 10.6667 12 9.17428 12 7.33333C12 5.49238 10.5076 4 8.66668 4C6.82573 4 5.33334 5.49238 5.33334 7.33333C5.33334 9.17428 6.82573 10.6667 8.66668 10.6667ZM16.6667 15.3333C16.6667 13.0867 15.3333 11 14 10C14.4383 9.67118 14.7888 9.23939 15.0204 8.74285C15.252 8.2463 15.3577 7.70031 15.328 7.1532C15.2984 6.60609 15.1343 6.07472 14.8503 5.60613C14.5664 5.13754 14.1713 4.74617 13.7 4.46667\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n)\n", "'use client'\n\nimport React, { useEffect, useRef, useState } from 'react'\n\nimport type { SearchFilterProps } from './types.js'\n\nimport { useDebounce } from '../../hooks/useDebounce.js'\nimport './index.scss'\n\nconst baseClass = 'search-filter'\n\nexport function SearchFilter(props: SearchFilterProps) {\n const { handleChange, initialParams, label, searchQueryParam } = props\n const searchParam = initialParams?.search || searchQueryParam\n const [search, setSearch] = useState(typeof searchParam === 'string' ? searchParam : undefined)\n\n /**\n * Tracks whether the state should be updated based on the search value.\n * If the value is updated from the URL, we don't want to update the state as it causes additional renders.\n */\n const shouldUpdateState = useRef(true)\n\n /**\n * Tracks the previous search value to compare with the current debounced search value.\n */\n const previousSearch = useRef(typeof searchParam === 'string' ? searchParam : undefined)\n\n const debouncedSearch = useDebounce(search, 300)\n\n useEffect(() => {\n if (searchParam !== previousSearch.current) {\n shouldUpdateState.current = false\n setSearch(searchParam as string)\n previousSearch.current = searchParam as string\n }\n\n return () => {\n shouldUpdateState.current = true\n previousSearch.current = undefined\n }\n }, [searchParam])\n\n useEffect(() => {\n if (debouncedSearch !== previousSearch.current && shouldUpdateState.current) {\n if (handleChange) {\n handleChange(debouncedSearch)\n }\n\n previousSearch.current = debouncedSearch\n }\n }, [debouncedSearch, handleChange])\n\n return (\n <div className={baseClass}>\n <input\n aria-label={label}\n className={`${baseClass}__input`}\n id=\"search-filter-input\"\n onChange={(e) => {\n shouldUpdateState.current = true\n setSearch(e.target.value)\n }}\n placeholder={label}\n type=\"text\"\n value={search || ''}\n />\n </div>\n )\n}\n", "import { SearchIcon } from '../../icons/Search/index.js'\nimport { SearchFilter } from '../SearchFilter/index.js'\nimport './index.scss'\n\nconst baseClass = 'search-bar'\n\ntype SearchBarProps = {\n Actions?: React.ReactNode[]\n className?: string\n label?: string\n onSearchChange: (search: string) => void\n searchQueryParam?: string\n}\nexport function SearchBar({\n Actions,\n className,\n label = 'Search...',\n onSearchChange,\n searchQueryParam,\n}: SearchBarProps) {\n return (\n <div className={[baseClass, className].filter(Boolean).join(' ')}>\n <SearchIcon />\n <SearchFilter\n handleChange={onSearchChange}\n label={label}\n searchQueryParam={searchQueryParam}\n />\n {Actions && Actions.length > 0 ? (\n <div className={`${baseClass}__actions`}>{Actions}</div>\n ) : null}\n </div>\n )\n}\n", "'use client'\nimport type { Operator } from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport { dequal } from 'dequal/lite'\nimport { transformWhereQuery, validateWhereQuery } from 'payload/shared'\nimport React, { useMemo } from 'react'\n\nimport type { AddCondition, RemoveCondition, UpdateCondition, WhereBuilderProps } from './types.js'\n\nimport { useAuth } from '../../providers/Auth/index.js'\nimport { useListQuery } from '../../providers/ListQuery/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { reduceFieldsToOptions } from '../../utilities/reduceFieldsToOptions.js'\nimport { Button } from '../Button/index.js'\nimport { Condition } from './Condition/index.js'\nimport './index.scss'\nimport { fieldTypeConditions, getValidFieldOperators } from './field-types.js'\n\nconst baseClass = 'where-builder'\n\nexport { WhereBuilderProps }\n\n/**\n * The WhereBuilder component is used to render the filter controls for a collection's list view.\n * It is part of the {@link ListControls} component which is used to render the controls (search, filter, where).\n */\nexport const WhereBuilder: React.FC<WhereBuilderProps> = (props) => {\n const { collectionPluralLabel, collectionSlug, fields, renderedFilters, resolvedFilterOptions } =\n props\n const { i18n, t } = useTranslation()\n const { permissions } = useAuth()\n\n const fieldPermissions = permissions?.collections?.[collectionSlug]?.fields\n\n const reducedFields = useMemo(\n () =>\n reduceFieldsToOptions({\n fieldPermissions,\n fields,\n i18n,\n }),\n [fieldPermissions, fields, i18n],\n )\n\n const { handleWhereChange, query } = useListQuery()\n\n const conditions = useMemo(() => {\n const whereFromSearch = query.where\n\n if (whereFromSearch) {\n if (validateWhereQuery(whereFromSearch)) {\n return whereFromSearch.or\n }\n\n // Transform the where query to be in the right format. This will transform something simple like [text][equals]=example%20post to the right format\n const transformedWhere = transformWhereQuery(whereFromSearch)\n\n if (validateWhereQuery(transformedWhere)) {\n return transformedWhere.or\n }\n\n console.warn(`Invalid where query in URL: ${JSON.stringify(whereFromSearch)}`) // eslint-disable-line no-console\n }\n\n return []\n }, [query.where])\n\n const addCondition: AddCondition = React.useCallback(\n async ({ andIndex, field, orIndex, relation }) => {\n const newConditions = [...conditions]\n\n const defaultOperator = fieldTypeConditions[field.field.type].operators[0].value\n\n if (relation === 'and') {\n newConditions[orIndex].and.splice(andIndex, 0, {\n [String(field.value)]: {\n [defaultOperator]: undefined,\n },\n })\n } else {\n newConditions.push({\n and: [\n {\n [String(field.value)]: {\n [defaultOperator]: undefined,\n },\n },\n ],\n })\n }\n\n await handleWhereChange({ or: newConditions })\n },\n [conditions, handleWhereChange],\n )\n\n const updateCondition: UpdateCondition = React.useCallback(\n async ({ andIndex, field, operator: incomingOperator, orIndex, value }) => {\n const existingCondition = conditions[orIndex].and[andIndex]\n\n if (typeof existingCondition === 'object' && field.value) {\n const { validOperator } = getValidFieldOperators({\n field: field.field,\n operator: incomingOperator,\n })\n\n // Skip if nothing changed\n const existingValue = existingCondition[String(field.value)]?.[validOperator]\n if (typeof existingValue !== 'undefined' && existingValue === value) {\n return\n }\n\n const newRowCondition = {\n [String(field.value)]: { [validOperator]: value },\n }\n\n if (dequal(existingCondition, newRowCondition)) {\n return\n }\n\n const newConditions = [...conditions]\n newConditions[orIndex].and[andIndex] = newRowCondition\n\n await handleWhereChange({ or: newConditions })\n }\n },\n [conditions, handleWhereChange],\n )\n\n const removeCondition: RemoveCondition = React.useCallback(\n async ({ andIndex, orIndex }) => {\n const newConditions = [...conditions]\n newConditions[orIndex].and.splice(andIndex, 1)\n\n if (newConditions[orIndex].and.length === 0) {\n newConditions.splice(orIndex, 1)\n }\n\n await handleWhereChange({ or: newConditions })\n },\n [conditions, handleWhereChange],\n )\n\n return (\n <div className={baseClass}>\n {conditions.length > 0 && (\n <React.Fragment>\n <p className={`${baseClass}__label`}>\n {t('general:filterWhere', { label: getTranslation(collectionPluralLabel, i18n) })}\n </p>\n <ul className={`${baseClass}__or-filters`}>\n {conditions.map((or, orIndex) => {\n const compoundOrKey = `${orIndex}_${Array.isArray(or?.and) ? or.and.length : ''}`\n\n return (\n <li key={compoundOrKey}>\n {orIndex !== 0 && <div className={`${baseClass}__label`}>{t('general:or')}</div>}\n <ul className={`${baseClass}__and-filters`}>\n {Array.isArray(or?.and) &&\n or.and.map((_, andIndex) => {\n const condition = conditions[orIndex].and[andIndex]\n const fieldPath = Object.keys(condition)[0]\n\n const operator =\n (Object.keys(condition?.[fieldPath] || {})?.[0] as Operator) || undefined\n\n const value = condition?.[fieldPath]?.[operator] || undefined\n\n return (\n <li key={andIndex}>\n {andIndex !== 0 && (\n <div className={`${baseClass}__label`}>{t('general:and')}</div>\n )}\n <Condition\n addCondition={addCondition}\n andIndex={andIndex}\n fieldPath={fieldPath}\n filterOptions={resolvedFilterOptions?.get(fieldPath)}\n operator={operator}\n orIndex={orIndex}\n reducedFields={reducedFields}\n removeCondition={removeCondition}\n RenderedFilter={renderedFilters?.get(fieldPath)}\n updateCondition={updateCondition}\n value={value}\n />\n </li>\n )\n })}\n </ul>\n </li>\n )\n })}\n </ul>\n <Button\n buttonStyle=\"icon-label\"\n className={`${baseClass}__add-or`}\n icon=\"plus\"\n iconPosition=\"left\"\n iconStyle=\"with-border\"\n onClick={async () => {\n await addCondition({\n andIndex: 0,\n field: reducedFields.find((field) => !field.field.admin?.disableListFilter),\n orIndex: conditions.length,\n relation: 'or',\n })\n }}\n >\n {t('general:or')}\n </Button>\n </React.Fragment>\n )}\n {conditions.length === 0 && (\n <div className={`${baseClass}__no-filters`}>\n <div className={`${baseClass}__label`}>{t('general:noFiltersSet')}</div>\n <Button\n buttonStyle=\"icon-label\"\n className={`${baseClass}__add-first-filter`}\n icon=\"plus\"\n iconPosition=\"left\"\n iconStyle=\"with-border\"\n onClick={async () => {\n if (reducedFields.length > 0) {\n await addCondition({\n andIndex: 0,\n field: reducedFields.find((field) => !field.field.admin?.disableListFilter),\n orIndex: conditions.length,\n relation: 'or',\n })\n }\n }}\n >\n {t('general:addFilter')}\n </Button>\n </div>\n )}\n </div>\n )\n}\n", "'use client'\nimport React, { useCallback, useEffect, useState } from 'react'\n\nimport type {\n AddCondition,\n ReducedField,\n RemoveCondition,\n UpdateCondition,\n Value,\n} from '../types.js'\n\nexport type Props = {\n readonly addCondition: AddCondition\n readonly andIndex: number\n readonly fieldPath: string\n readonly filterOptions: ResolvedFilterOptions\n readonly operator: Operator\n readonly orIndex: number\n readonly reducedFields: ReducedField[]\n readonly removeCondition: RemoveCondition\n readonly RenderedFilter: React.ReactNode\n readonly updateCondition: UpdateCondition\n readonly value: Value\n}\n\nimport type { Operator, Option as PayloadOption, ResolvedFilterOptions } from 'payload'\n\nimport type { Option } from '../../ReactSelect/index.js'\n\nimport { useDebounce } from '../../../hooks/useDebounce.js'\nimport { useEffectEvent } from '../../../hooks/useEffectEvent.js'\nimport { useTranslation } from '../../../providers/Translation/index.js'\nimport { Button } from '../../Button/index.js'\nimport { ReactSelect } from '../../ReactSelect/index.js'\nimport { DefaultFilter } from './DefaultFilter/index.js'\nimport { getOperatorValueTypes } from './validOperators.js'\nimport './index.scss'\n\nconst baseClass = 'condition'\n\nexport const Condition: React.FC<Props> = (props) => {\n const {\n addCondition,\n andIndex,\n fieldPath,\n filterOptions,\n operator,\n orIndex,\n reducedFields,\n removeCondition,\n RenderedFilter,\n updateCondition,\n value,\n } = props\n\n const { t } = useTranslation()\n\n const reducedField = reducedFields.find((field) => field.value === fieldPath)\n\n const [internalValue, setInternalValue] = useState<Value>(value)\n\n const debouncedValue = useDebounce(internalValue, 300)\n\n const booleanSelect = ['exists'].includes(operator) || reducedField?.field?.type === 'checkbox'\n\n let valueOptions: PayloadOption[] = []\n\n if (booleanSelect) {\n valueOptions = [\n { label: t('general:true'), value: 'true' },\n { label: t('general:false'), value: 'false' },\n ]\n } else if (reducedField?.field && 'options' in reducedField.field) {\n valueOptions = reducedField.field.options\n }\n\n const updateValue = useEffectEvent(async (debouncedValue: Value) => {\n if (operator) {\n await updateCondition({\n type: 'value',\n andIndex,\n field: reducedField,\n operator,\n orIndex,\n value: debouncedValue === null || debouncedValue === '' ? undefined : debouncedValue,\n })\n }\n })\n\n useEffect(() => {\n void updateValue(debouncedValue)\n }, [debouncedValue])\n\n const disabled =\n (!reducedField?.value && typeof reducedField?.value !== 'number') ||\n reducedField?.field?.admin?.disableListFilter\n\n const handleFieldChange = useCallback(\n async (field: Option<string>) => {\n setInternalValue(undefined)\n await updateCondition({\n type: 'field',\n andIndex,\n field: reducedFields.find((option) => option.value === field.value),\n operator,\n orIndex,\n value: undefined,\n })\n },\n [andIndex, operator, orIndex, reducedFields, updateCondition],\n )\n\n const handleOperatorChange = useCallback(\n async (operator: Option<Operator>) => {\n const operatorValueTypes = getOperatorValueTypes(reducedField.field.type)\n const validOperatorValue = operatorValueTypes[operator.value] || 'any'\n const isValidValue =\n validOperatorValue === 'any' ||\n typeof value === validOperatorValue ||\n (validOperatorValue === 'boolean' && (value === 'true' || value === 'false'))\n\n if (!isValidValue) {\n // if the current value is not valid for the new operator\n // reset the value before passing it to updateCondition\n setInternalValue(undefined)\n }\n\n await updateCondition({\n type: 'operator',\n andIndex,\n field: reducedField,\n operator: operator.value,\n orIndex,\n value: isValidValue ? value : undefined,\n })\n },\n [andIndex, reducedField, orIndex, updateCondition, value],\n )\n\n return (\n <div className={baseClass}>\n <div className={`${baseClass}__wrap`}>\n <div className={`${baseClass}__inputs`}>\n <div className={`${baseClass}__field`}>\n <ReactSelect\n disabled={disabled}\n filterOption={(option, inputValue) =>\n ((option?.data?.plainTextLabel as string) || option.label)\n .toLowerCase()\n .includes(inputValue.toLowerCase())\n }\n isClearable={false}\n onChange={handleFieldChange}\n options={reducedFields.filter((field) => !field.field.admin.disableListFilter)}\n value={\n reducedField || {\n value: reducedField?.value,\n }\n }\n />\n </div>\n <div className={`${baseClass}__operator`}>\n <ReactSelect\n disabled={disabled}\n isClearable={false}\n onChange={handleOperatorChange}\n options={reducedField?.operators}\n value={reducedField?.operators.find((o) => operator === o.value) || null}\n />\n </div>\n <div className={`${baseClass}__value`}>\n {RenderedFilter || (\n <DefaultFilter\n booleanSelect={booleanSelect}\n disabled={\n !operator || !reducedField || reducedField?.field?.admin?.disableListFilter\n }\n filterOptions={filterOptions}\n internalField={reducedField}\n onChange={setInternalValue}\n operator={operator}\n options={valueOptions}\n value={internalValue ?? ''}\n />\n )}\n </div>\n </div>\n <div className={`${baseClass}__actions`}>\n <Button\n buttonStyle=\"icon-label\"\n className={`${baseClass}__actions-remove`}\n icon=\"x\"\n iconStyle=\"with-border\"\n onClick={() =>\n removeCondition({\n andIndex,\n orIndex,\n })\n }\n round\n />\n <Button\n buttonStyle=\"icon-label\"\n className={`${baseClass}__actions-add`}\n icon=\"plus\"\n iconStyle=\"with-border\"\n onClick={() =>\n addCondition({\n andIndex: andIndex + 1,\n field: reducedFields.find((field) => !field.field.admin?.disableListFilter),\n orIndex,\n relation: 'and',\n })\n }\n round\n />\n </div>\n </div>\n </div>\n )\n}\n", "import type {\n Operator,\n Option,\n ResolvedFilterOptions,\n SelectFieldClient,\n TextFieldClient,\n} from 'payload'\n\nimport React from 'react'\n\nimport type { ReducedField, Value } from '../../types.js'\n\nimport { DateFilter } from '../Date/index.js'\nimport { NumberFilter } from '../Number/index.js'\nimport { RelationshipFilter } from '../Relationship/index.js'\nimport { Select } from '../Select/index.js'\nimport { Text } from '../Text/index.js'\n\ntype Props = {\n booleanSelect: boolean\n disabled: boolean\n filterOptions: ResolvedFilterOptions\n internalField: ReducedField\n onChange: React.Dispatch<React.SetStateAction<string>>\n operator: Operator\n options: Option[]\n value: Value\n}\n\nexport const DefaultFilter: React.FC<Props> = ({\n booleanSelect,\n disabled,\n filterOptions,\n internalField,\n onChange,\n operator,\n options,\n value,\n}) => {\n if (booleanSelect || ['radio', 'select'].includes(internalField?.field?.type)) {\n return (\n <Select\n disabled={disabled}\n field={internalField.field as SelectFieldClient}\n isClearable={!booleanSelect}\n onChange={onChange}\n operator={operator}\n options={options}\n value={value as string}\n />\n )\n }\n\n switch (internalField?.field?.type) {\n case 'date': {\n return (\n <DateFilter\n disabled={disabled}\n field={internalField.field}\n onChange={onChange}\n operator={operator}\n value={value as Date | string}\n />\n )\n }\n\n case 'number': {\n return (\n <NumberFilter\n disabled={disabled}\n field={internalField.field}\n onChange={onChange}\n operator={operator}\n value={value as number | number[]}\n />\n )\n }\n\n case 'relationship': {\n return (\n <RelationshipFilter\n disabled={disabled}\n field={internalField.field}\n filterOptions={filterOptions}\n onChange={onChange}\n operator={operator}\n value={value}\n />\n )\n }\n\n case 'upload': {\n return (\n <RelationshipFilter\n disabled={disabled}\n field={internalField.field}\n filterOptions={filterOptions}\n onChange={onChange}\n operator={operator}\n value={value}\n />\n )\n }\n\n default: {\n return (\n <Text\n disabled={disabled}\n field={internalField?.field as TextFieldClient}\n onChange={onChange}\n operator={operator}\n value={value as string | string[]}\n />\n )\n }\n }\n}\n", "'use client'\nimport { getTranslation } from '@payloadcms/translations'\nimport React from 'react'\n\nimport type { DateFilterProps as Props } from './types.js'\n\nimport { useTranslation } from '../../../../providers/Translation/index.js'\nimport { DatePickerField } from '../../../DatePicker/index.js'\n\nconst baseClass = 'condition-value-date'\n\nexport const DateFilter: React.FC<Props> = ({ disabled, field: { admin }, onChange, value }) => {\n const { date } = admin || {}\n const { i18n, t } = useTranslation()\n\n return (\n <div className={baseClass}>\n <DatePickerField\n {...date}\n onChange={onChange}\n placeholder={getTranslation(admin.placeholder, i18n) || t('general:enterAValue')}\n readOnly={disabled}\n value={value as Date}\n />\n </div>\n )\n}\n", "'use client'\nimport { getTranslation } from '@payloadcms/translations'\nimport React from 'react'\n\nimport type { NumberFilterProps as Props } from './types.js'\n\nimport { useTranslation } from '../../../../providers/Translation/index.js'\nimport { ReactSelect } from '../../../ReactSelect/index.js'\nimport './index.scss'\n\nconst baseClass = 'condition-value-number'\n\nexport const NumberFilter: React.FC<Props> = (props) => {\n const {\n disabled,\n field: { admin, hasMany },\n onChange,\n operator,\n value,\n } = props\n\n const { i18n, t } = useTranslation()\n\n const isMulti = ['in', 'not_in'].includes(operator) || hasMany\n\n const [valueToRender, setValueToRender] = React.useState<\n { id: string; label: string; value: { value: number } }[]\n >([])\n\n const onSelect = React.useCallback(\n (selectedOption) => {\n let newValue\n if (!selectedOption) {\n newValue = []\n } else if (isMulti) {\n if (Array.isArray(selectedOption)) {\n newValue = selectedOption.map((option) => Number(option.value?.value || option.value))\n } else {\n newValue = [Number(selectedOption.value?.value || selectedOption.value)]\n }\n }\n\n onChange(newValue)\n },\n [isMulti, onChange],\n )\n\n React.useEffect(() => {\n if (Array.isArray(value)) {\n setValueToRender(\n value.map((val, index) => {\n return {\n id: `${val}${index}`, // append index to avoid duplicate keys but allow duplicate numbers\n label: `${val}`,\n value: {\n toString: () => `${val}${index}`,\n value: (val as any)?.value || val,\n },\n }\n }),\n )\n } else {\n setValueToRender([])\n }\n }, [value])\n\n const placeholder = getTranslation(admin?.placeholder, i18n) || t('general:enterAValue')\n\n return isMulti ? (\n <ReactSelect\n disabled={disabled}\n isClearable\n isCreatable\n isMulti={isMulti}\n isSortable\n numberOnly\n onChange={onSelect}\n options={[]}\n placeholder={placeholder}\n value={valueToRender || []}\n />\n ) : (\n <input\n className={baseClass}\n disabled={disabled}\n onChange={(e) => onChange(e.target.value)}\n placeholder={placeholder}\n type=\"number\"\n value={value as number}\n />\n )\n}\n", "'use client'\nimport type { PaginatedDocs, Where } from 'payload'\n\nimport { formatAdminURL } from 'payload/shared'\nimport * as qs from 'qs-esm'\nimport React, { useCallback, useEffect, useReducer, useState } from 'react'\n\nimport type { Option } from '../../../ReactSelect/types.js'\nimport type { RelationshipFilterProps as Props, ValueWithRelation } from './types.js'\n\nimport { useDebounce } from '../../../../hooks/useDebounce.js'\nimport { useEffectEvent } from '../../../../hooks/useEffectEvent.js'\nimport { useConfig } from '../../../../providers/Config/index.js'\nimport { useLocale } from '../../../../providers/Locale/index.js'\nimport { useTranslation } from '../../../../providers/Translation/index.js'\nimport { ReactSelect } from '../../../ReactSelect/index.js'\nimport './index.scss'\nimport optionsReducer from './optionsReducer.js'\n\nconst baseClass = 'condition-value-relationship'\n\nconst maxResultsPerRequest = 10\n\nexport const RelationshipFilter: React.FC<Props> = (props) => {\n const {\n disabled,\n field: { admin = {}, hasMany, relationTo },\n filterOptions,\n onChange,\n value,\n } = props\n\n const placeholder = 'placeholder' in admin ? admin?.placeholder : undefined\n const isSortable = admin?.isSortable\n\n const {\n config: {\n routes: { api },\n },\n getEntityConfig,\n } = useConfig()\n\n const hasMultipleRelations = Array.isArray(relationTo)\n const [options, dispatchOptions] = useReducer(optionsReducer, [])\n const [search, setSearch] = useState('')\n const debouncedSearch = useDebounce(search, 300)\n const [errorLoading, setErrorLoading] = useState('')\n const [hasLoadedFirstOptions, setHasLoadedFirstOptions] = useState(false)\n const { i18n, t } = useTranslation()\n const locale = useLocale()\n\n const relationSlugs = hasMultipleRelations ? relationTo : [relationTo]\n\n const loadedRelationships = React.useRef<\n Map<\n string,\n {\n hasLoadedAll: boolean\n nextPage: number\n }\n >\n >(\n new Map(\n relationSlugs.map((relation) => [\n relation,\n {\n hasLoadedAll: false,\n nextPage: 1,\n },\n ]),\n ),\n )\n\n const addOptions = useCallback(\n (data, relation) => {\n const collection = getEntityConfig({ collectionSlug: relation })\n dispatchOptions({ type: 'ADD', collection, data, hasMultipleRelations, i18n, relation })\n },\n [hasMultipleRelations, i18n, getEntityConfig],\n )\n\n const loadOptions = useEffectEvent(\n async ({\n abortController,\n relationSlug,\n }: {\n abortController: AbortController\n relationSlug: string\n }) => {\n const loadedRelationship = loadedRelationships.current.get(relationSlug)\n\n if (relationSlug && !loadedRelationship.hasLoadedAll) {\n const collection = getEntityConfig({\n collectionSlug: relationSlug,\n })\n\n const fieldToSearch = collection?.admin?.useAsTitle || 'id'\n\n const where: Where = {\n and: [],\n }\n\n const query = {\n depth: 0,\n limit: maxResultsPerRequest,\n locale: locale.code,\n page: loadedRelationship.nextPage,\n select: {\n [fieldToSearch]: true,\n },\n where,\n }\n\n if (filterOptions && filterOptions?.[relationSlug]) {\n query.where.and.push(filterOptions[relationSlug])\n }\n\n if (debouncedSearch) {\n query.where.and.push({\n [fieldToSearch]: {\n like: debouncedSearch,\n },\n })\n }\n\n try {\n const response = await fetch(\n formatAdminURL({\n apiRoute: api,\n path: `/${relationSlug}${qs.stringify(query, { addQueryPrefix: true })}`,\n }),\n {\n credentials: 'include',\n headers: {\n 'Accept-Language': i18n.language,\n },\n signal: abortController.signal,\n },\n )\n\n if (response.ok) {\n const data: PaginatedDocs = await response.json()\n if (data.docs.length > 0) {\n addOptions(data, relationSlug)\n\n if (data.nextPage) {\n loadedRelationships.current.set(relationSlug, {\n hasLoadedAll: false,\n nextPage: data.nextPage,\n })\n } else {\n loadedRelationships.current.set(relationSlug, {\n hasLoadedAll: true,\n nextPage: null,\n })\n }\n }\n } else {\n setErrorLoading(t('error:unspecific'))\n }\n } catch (e) {\n if (!abortController.signal.aborted) {\n console.error(e) // eslint-disable-line no-console\n }\n }\n }\n\n setHasLoadedFirstOptions(true)\n },\n )\n\n const handleScrollToBottom = React.useCallback(() => {\n const relationshipToLoad = loadedRelationships.current.entries().next().value\n\n if (relationshipToLoad[0] && !relationshipToLoad[1].hasLoadedAll) {\n const abortController = new AbortController()\n\n void loadOptions({\n abortController,\n relationSlug: relationshipToLoad[0],\n })\n }\n }, [])\n\n const findOptionsByValue = useCallback((): Option | Option[] => {\n if (value) {\n if (hasMany) {\n if (Array.isArray(value)) {\n return value.map((val) => {\n if (hasMultipleRelations) {\n let matchedOption: Option\n\n options.forEach((opt) => {\n if (opt.options) {\n opt.options.some((subOpt) => {\n if (subOpt?.value == val.value) {\n matchedOption = subOpt\n return true\n }\n\n return false\n })\n }\n })\n\n return matchedOption\n }\n\n return options.find((opt) => opt.value == val)\n })\n }\n\n return undefined\n }\n\n if (hasMultipleRelations) {\n let matchedOption: Option\n\n const valueWithRelation = value as ValueWithRelation\n\n options.forEach((opt) => {\n if (opt?.options) {\n opt.options.some((subOpt) => {\n if (subOpt?.value == valueWithRelation.value) {\n matchedOption = subOpt\n return true\n }\n return false\n })\n }\n })\n\n return matchedOption\n }\n\n return options.find((opt) => opt.value == value)\n }\n\n return undefined\n }, [hasMany, hasMultipleRelations, value, options])\n\n const handleInputChange = useCallback(\n (input: string) => {\n if (input !== search) {\n dispatchOptions({ type: 'CLEAR', i18n, required: false })\n\n const relationSlugs = Array.isArray(relationTo) ? relationTo : [relationTo]\n\n loadedRelationships.current = new Map(\n relationSlugs.map((relation) => [\n relation,\n {\n hasLoadedAll: false,\n nextPage: 1,\n },\n ]),\n )\n\n setSearch(input)\n }\n },\n [i18n, relationTo, search],\n )\n\n const addOptionByID = useCallback(\n async (id, relation) => {\n if (!errorLoading && id !== 'null' && id && relation) {\n const response = await fetch(\n formatAdminURL({ apiRoute: api, path: `/${relation}/${id}?depth=0` }),\n {\n credentials: 'include',\n headers: {\n 'Accept-Language': i18n.language,\n },\n },\n )\n\n if (response.ok) {\n const data = await response.json()\n addOptions({ docs: [data] }, relation)\n } else {\n // eslint-disable-next-line no-console\n console.error(t('error:loadingDocument', { id }))\n }\n }\n },\n [i18n, addOptions, api, errorLoading, t],\n )\n\n /**\n * When `relationTo` changes externally, reset the options and reload them from scratch\n * The `loadOptions` dependency is a useEffectEvent which has no dependencies of its own\n * This means we can safely depend on it without it triggering this effect to run\n * This is useful because this effect should _only_ run when `relationTo` changes\n */\n useEffect(() => {\n const relations = Array.isArray(relationTo) ? relationTo : [relationTo]\n\n loadedRelationships.current = new Map(\n relations.map((relation) => [\n relation,\n {\n hasLoadedAll: false,\n nextPage: 1,\n },\n ]),\n )\n\n dispatchOptions({ type: 'CLEAR', i18n, required: false })\n setHasLoadedFirstOptions(false)\n\n const abortControllers: AbortController[] = []\n\n relations.forEach((relation) => {\n const abortController = new AbortController()\n\n void loadOptions({\n abortController,\n relationSlug: relation,\n })\n\n abortControllers.push(abortController)\n })\n\n return () => {\n abortControllers.forEach((controller) => {\n if (controller.signal) {\n try {\n controller.abort()\n } catch (_err) {\n // swallow error\n }\n }\n })\n }\n }, [i18n, relationTo, debouncedSearch, filterOptions])\n\n /**\n * Load any other options that might exist in the value that were not loaded already\n */\n useEffect(() => {\n if (value && hasLoadedFirstOptions) {\n if (hasMany) {\n const matchedOptions = findOptionsByValue()\n\n ;((matchedOptions as Option[]) || []).forEach((option, i) => {\n if (!option) {\n if (hasMultipleRelations) {\n void addOptionByID(value[i].value, value[i].relationTo)\n } else {\n void addOptionByID(value[i], relationTo)\n }\n }\n })\n } else {\n const matchedOption = findOptionsByValue()\n\n if (!matchedOption) {\n if (hasMultipleRelations) {\n const valueWithRelation = value as ValueWithRelation\n void addOptionByID(valueWithRelation.value, valueWithRelation.relationTo)\n } else {\n void addOptionByID(value, relationTo)\n }\n }\n }\n }\n }, [\n addOptionByID,\n findOptionsByValue,\n hasMany,\n hasMultipleRelations,\n relationTo,\n value,\n hasLoadedFirstOptions,\n ])\n\n const classes = ['field-type', baseClass, errorLoading && 'error-loading']\n .filter(Boolean)\n .join(' ')\n\n const valueToRender = (findOptionsByValue() || value) as Option\n\n return (\n <div className={classes}>\n {errorLoading ? (\n <div className={`${baseClass}__error-loading`}>{errorLoading}</div>\n ) : (\n <ReactSelect\n disabled={disabled}\n isMulti={hasMany}\n isSortable={isSortable}\n onChange={(selected) => {\n if (!selected) {\n onChange(null)\n return\n }\n\n if (hasMany && Array.isArray(selected)) {\n onChange(\n selected\n ? selected.map((option) => {\n if (hasMultipleRelations) {\n return {\n relationTo: option?.relationTo,\n value: option?.value,\n }\n }\n\n return option?.value\n })\n : null,\n )\n } else if (hasMultipleRelations && !Array.isArray(selected)) {\n onChange({\n relationTo: selected?.relationTo,\n value: selected?.value,\n })\n } else if (!Array.isArray(selected)) {\n onChange(selected?.value)\n }\n }}\n onInputChange={handleInputChange}\n onMenuScrollToBottom={handleScrollToBottom}\n options={options}\n placeholder={placeholder}\n value={valueToRender}\n />\n )}\n </div>\n )\n}\n", "'use client'\nimport { getTranslation } from '@payloadcms/translations'\n\nimport type { Action, Option } from './types.js'\n\nconst reduceToIDs = (options) =>\n options.reduce((ids, option) => {\n if (option.options) {\n return [...ids, ...reduceToIDs(option.options)]\n }\n\n return [...ids, option.id]\n }, [])\n\nconst optionsReducer = (state: Option[], action: Action): Option[] => {\n switch (action.type) {\n case 'ADD': {\n const { collection, data, hasMultipleRelations, i18n, relation } = action\n\n const labelKey = collection.admin.useAsTitle || 'id'\n\n const loadedIDs = reduceToIDs(state)\n\n if (!hasMultipleRelations) {\n return [\n ...state,\n ...data.docs.reduce((docs, doc) => {\n if (loadedIDs.indexOf(doc.id) === -1) {\n loadedIDs.push(doc.id)\n return [\n ...docs,\n {\n label: doc[labelKey],\n value: doc.id,\n },\n ]\n }\n return docs\n }, []),\n ]\n }\n\n const newOptions = [...state]\n const optionsToAddTo = newOptions.find(\n (optionGroup) => optionGroup.label === getTranslation(collection.labels.plural, i18n),\n )\n\n const newSubOptions = data.docs.reduce((docs, doc) => {\n if (loadedIDs.indexOf(doc.id) === -1) {\n loadedIDs.push(doc.id)\n\n return [\n ...docs,\n {\n label: doc[labelKey],\n relationTo: relation,\n value: doc.id,\n },\n ]\n }\n\n return docs\n }, [])\n\n if (optionsToAddTo) {\n optionsToAddTo.options = [...optionsToAddTo.options, ...newSubOptions]\n } else {\n newOptions.push({\n label: getTranslation(collection.labels.plural, i18n),\n options: newSubOptions,\n value: undefined,\n })\n }\n\n return newOptions\n }\n\n case 'CLEAR': {\n return action.required ? [] : [{ label: action.i18n.t('general:none'), value: 'null' }]\n }\n\n default: {\n return state\n }\n }\n}\n\nexport default optionsReducer\n", "'use client'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport React from 'react'\n\nimport type { SelectFilterProps as Props } from './types.js'\n\nimport { useTranslation } from '../../../../providers/Translation/index.js'\nimport { ReactSelect } from '../../../ReactSelect/index.js'\nimport { formatOptions } from './formatOptions.js'\n\nexport const Select: React.FC<Props> = ({\n disabled,\n field: {\n admin: { placeholder },\n },\n isClearable,\n onChange,\n operator,\n options: optionsFromProps,\n value,\n}) => {\n const { i18n } = useTranslation()\n const [options, setOptions] = React.useState(formatOptions(optionsFromProps))\n\n const isMulti = ['in', 'not_in'].includes(operator)\n let valueToRender\n\n if (isMulti && Array.isArray(value)) {\n valueToRender = value.map((val) => {\n const matchingOption = options.find((option) => option.value === val)\n return {\n label: matchingOption ? getTranslation(matchingOption.label, i18n) : val,\n value: matchingOption?.value ?? val,\n }\n })\n } else if (value) {\n const matchingOption = options.find((option) => option.value === value)\n valueToRender = {\n label: matchingOption ? getTranslation(matchingOption.label, i18n) : value,\n value: matchingOption?.value ?? value,\n }\n }\n\n const onSelect = React.useCallback(\n (selectedOption) => {\n let newValue\n\n if (!selectedOption) {\n newValue = null\n } else if (isMulti) {\n if (Array.isArray(selectedOption)) {\n newValue = selectedOption.map((option) => option.value)\n } else {\n newValue = []\n }\n } else {\n newValue = selectedOption.value\n }\n\n onChange(newValue)\n },\n [isMulti, onChange],\n )\n\n React.useEffect(() => {\n setOptions(formatOptions(optionsFromProps))\n }, [optionsFromProps])\n\n React.useEffect(() => {\n if (!isMulti && Array.isArray(value)) {\n onChange(value[0])\n }\n }, [isMulti, onChange, value])\n\n return (\n <ReactSelect\n disabled={disabled}\n isClearable={isClearable}\n isMulti={isMulti}\n onChange={onSelect}\n options={options.map((option) => ({ ...option, label: getTranslation(option.label, i18n) }))}\n placeholder={placeholder}\n value={valueToRender}\n />\n )\n}\n", "'use client'\nimport React from 'react'\n\nimport type { TextFilterProps as Props } from './types.js'\n\nimport { useTranslation } from '../../../../providers/Translation/index.js'\nimport { ReactSelect } from '../../../ReactSelect/index.js'\nimport './index.scss'\n\nconst baseClass = 'condition-value-text'\n\nexport const Text: React.FC<Props> = (props) => {\n const {\n disabled,\n field: { hasMany },\n onChange,\n operator,\n value,\n } = props\n const { t } = useTranslation()\n\n const isMulti = ['in', 'not_in'].includes(operator) || hasMany\n\n const [valueToRender, setValueToRender] = React.useState<\n { id: string; label: string; value: { value: string } }[]\n >([])\n\n const onSelect = React.useCallback(\n (selectedOption) => {\n let newValue\n if (!selectedOption) {\n newValue = []\n } else if (isMulti) {\n if (Array.isArray(selectedOption)) {\n newValue = selectedOption.map((option) => option.value?.value || option.value)\n } else {\n newValue = [selectedOption.value?.value || selectedOption.value]\n }\n }\n\n onChange(newValue)\n },\n [isMulti, onChange],\n )\n\n React.useEffect(() => {\n if (Array.isArray(value)) {\n setValueToRender(\n value.map((val, index) => {\n return {\n id: `${val}${index}`, // append index to avoid duplicate keys but allow duplicate numbers\n label: `${val}`,\n value: {\n toString: () => `${val}${index}`,\n value: (val as any)?.value || val,\n },\n }\n }),\n )\n } else {\n setValueToRender([])\n }\n }, [value])\n\n return isMulti ? (\n <ReactSelect\n disabled={disabled}\n isClearable\n isCreatable\n isMulti={isMulti}\n isSortable\n onChange={onSelect}\n options={[]}\n placeholder={t('general:enterAValue')}\n value={valueToRender || []}\n />\n ) : (\n <input\n className={baseClass}\n disabled={disabled}\n onChange={(e) => onChange(e.target.value)}\n placeholder={t('general:enterAValue')}\n type=\"text\"\n value={value || ''}\n />\n )\n}\n", "export const getOperatorValueTypes = (fieldType) => {\n return {\n all: 'any',\n contains: 'string',\n equals: 'any',\n /*\n * exists:\n * The expected value is boolean, but it's passed as a string ('true' or 'false').\n * Need to additionally check if the value is strictly 'true' or 'false' as a string,\n * rather than using a direct typeof comparison.\n * This is handled as:\n * validOperatorValue === 'boolean' && (value === 'true' || value === 'false')\n */\n exists: 'boolean',\n /*\n * greater_than, greater_than_equal, less_than, less_than_equal:\n * Used for number and date fields:\n * - For date fields, the value is an object (e.g., Mon Feb 17 2025 12:00:00 GMT+0000).\n * - For number fields, the value is a string representing the number.\n */\n greater_than: fieldType === 'date' ? 'object' : 'string',\n greater_than_equal: fieldType === 'date' ? 'object' : 'string',\n in: 'any',\n intersects: 'any',\n less_than: fieldType === 'date' ? 'object' : 'string',\n less_than_equal: fieldType === 'date' ? 'object' : 'string',\n like: 'string',\n near: 'any',\n not_equals: 'any',\n not_in: 'any',\n not_like: 'string',\n within: 'any',\n }\n}\n", "'use client'\nimport type { I18nClient } from '@payloadcms/translations'\nimport type { ClientField } from 'payload'\n\nimport { fieldAffectsData, flattenTopLevelFields } from 'payload/shared'\n\nexport const getTextFieldsToBeSearched = (\n listSearchableFields: string[],\n fields: ClientField[],\n i18n: I18nClient,\n): ClientField[] => {\n if (listSearchableFields) {\n const flattenedFields = flattenTopLevelFields(fields, {\n i18n,\n moveSubFieldsToTop: true,\n }) as ClientField[]\n\n const searchableFieldNames = new Set(listSearchableFields)\n const matchingFields: typeof flattenedFields = []\n\n for (const field of flattenedFields) {\n if (fieldAffectsData(field) && searchableFieldNames.has(field.name)) {\n matchingFields.push(field)\n searchableFieldNames.delete(field.name)\n }\n }\n\n return matchingFields\n }\n\n return null\n}\n", "'use client'\nimport type { ClientCollectionConfig, ViewTypes, Where } from 'payload'\n\nimport React, { Fragment, useCallback } from 'react'\n\nimport { DeleteMany } from '../../../elements/DeleteMany/index.js'\nimport { EditMany_v4 } from '../../../elements/EditMany/index.js'\nimport { ListSelection_v4, ListSelectionButton } from '../../../elements/ListSelection/index.js'\nimport { PublishMany_v4 } from '../../../elements/PublishMany/index.js'\nimport { RestoreMany } from '../../../elements/RestoreMany/index.js'\nimport { UnpublishMany_v4 } from '../../../elements/UnpublishMany/index.js'\nimport { SelectAllStatus, useSelection } from '../../../providers/Selection/index.js'\nimport { useTranslation } from '../../../providers/Translation/index.js'\n\nexport type ListSelectionProps = {\n collectionConfig?: ClientCollectionConfig\n disableBulkDelete?: boolean\n disableBulkEdit?: boolean\n label: string\n modalPrefix?: string\n showSelectAllAcrossPages?: boolean\n viewType?: ViewTypes\n where?: Where\n}\n\nexport const ListSelection: React.FC<ListSelectionProps> = ({\n collectionConfig,\n disableBulkDelete,\n disableBulkEdit,\n label,\n modalPrefix,\n showSelectAllAcrossPages = true,\n viewType,\n where,\n}) => {\n const { count, selectAll, selectedIDs, toggleAll, totalDocs } = useSelection()\n const { t } = useTranslation()\n\n const onActionSuccess = useCallback(() => toggleAll(), [toggleAll])\n\n if (count === 0) {\n return null\n }\n\n const isTrashView = collectionConfig?.trash && viewType === 'trash'\n\n return (\n <ListSelection_v4\n count={count}\n ListActions={[\n selectAll !== SelectAllStatus.AllAvailable &&\n count < totalDocs &&\n showSelectAllAcrossPages !== false ? (\n <ListSelectionButton\n aria-label={t('general:selectAll', { count: `(${totalDocs})`, label })}\n id=\"select-all-across-pages\"\n key=\"select-all\"\n onClick={() => toggleAll(true)}\n >\n {t('general:selectAll', { count: `(${totalDocs})`, label: '' })}\n </ListSelectionButton>\n ) : null,\n ].filter(Boolean)}\n SelectionActions={[\n !disableBulkEdit && !isTrashView && (\n <Fragment key=\"bulk-actions\">\n <EditMany_v4\n collection={collectionConfig}\n count={count}\n ids={selectedIDs}\n modalPrefix={modalPrefix}\n onSuccess={onActionSuccess}\n selectAll={selectAll === SelectAllStatus.AllAvailable}\n where={where}\n />\n <PublishMany_v4\n collection={collectionConfig}\n count={count}\n ids={selectedIDs}\n modalPrefix={modalPrefix}\n onSuccess={onActionSuccess}\n selectAll={selectAll === SelectAllStatus.AllAvailable}\n where={where}\n />\n <UnpublishMany_v4\n collection={collectionConfig}\n count={count}\n ids={selectedIDs}\n modalPrefix={modalPrefix}\n onSuccess={onActionSuccess}\n selectAll={selectAll === SelectAllStatus.AllAvailable}\n where={where}\n />\n </Fragment>\n ),\n isTrashView && (\n <RestoreMany collection={collectionConfig} key=\"bulk-restore\" viewType={viewType} />\n ),\n !disableBulkDelete && (\n <DeleteMany\n collection={collectionConfig}\n key=\"bulk-delete\"\n modalPrefix={modalPrefix}\n viewType={viewType}\n />\n ),\n ].filter(Boolean)}\n />\n )\n}\n", "'use client'\nimport type { ClientCollectionConfig, Where } from 'payload'\n\nimport { useModal } from '@faceless-ui/modal'\nimport React from 'react'\n\nimport { useAuth } from '../../providers/Auth/index.js'\nimport { SelectAllStatus, useSelection } from '../../providers/Selection/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { ListSelectionButton } from '../ListSelection/index.js'\nimport { PublishManyDrawerContent } from './DrawerContent.js'\n\nexport type PublishManyProps = {\n collection: ClientCollectionConfig\n}\n\nexport const PublishMany: React.FC<PublishManyProps> = (props) => {\n const { count, selectAll, selectedIDs, toggleAll } = useSelection()\n\n return (\n <PublishMany_v4\n {...props}\n count={count}\n ids={selectedIDs}\n onSuccess={() => toggleAll()}\n selectAll={selectAll === SelectAllStatus.AllAvailable}\n />\n )\n}\n\ntype PublishMany_v4Props = {\n count: number\n ids: (number | string)[]\n /**\n * When multiple PublishMany components are rendered on the page, this will differentiate them.\n */\n modalPrefix?: string\n onSuccess?: () => void\n selectAll: boolean\n where?: Where\n} & PublishManyProps\n\nexport const PublishMany_v4: React.FC<PublishMany_v4Props> = (props) => {\n const {\n collection,\n collection: { slug, versions } = {},\n count,\n ids,\n modalPrefix,\n onSuccess,\n selectAll,\n where,\n } = props\n\n const { permissions } = useAuth()\n const { t } = useTranslation()\n\n const { openModal } = useModal()\n\n const collectionPermissions = permissions?.collections?.[slug]\n const hasPermission = collectionPermissions?.update\n\n const drawerSlug = `${modalPrefix ? `${modalPrefix}-` : ''}publish-${slug}`\n\n if (!versions?.drafts || count === 0 || !hasPermission) {\n return null\n }\n\n return (\n <React.Fragment>\n <ListSelectionButton\n aria-label={t('version:publish')}\n onClick={() => {\n openModal(drawerSlug)\n }}\n >\n {t('version:publish')}\n </ListSelectionButton>\n <PublishManyDrawerContent\n collection={collection}\n drawerSlug={drawerSlug}\n ids={ids}\n onSuccess={onSuccess}\n selectAll={selectAll}\n where={where}\n />\n </React.Fragment>\n )\n}\n", "import type { Where } from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport { useRouter, useSearchParams } from 'next/navigation.js'\nimport { combineWhereConstraints, formatAdminURL, mergeListSearchAndWhere } from 'payload/shared'\nimport * as qs from 'qs-esm'\nimport React, { useCallback } from 'react'\nimport { toast } from 'sonner'\n\nimport type { PublishManyProps } from './index.js'\n\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useLocale } from '../../providers/Locale/index.js'\nimport { useRouteCache } from '../../providers/RouteCache/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { requests } from '../../utilities/api.js'\nimport { parseSearchParams } from '../../utilities/parseSearchParams.js'\nimport { ConfirmationModal } from '../ConfirmationModal/index.js'\n\ntype PublishManyDrawerContentProps = {\n drawerSlug: string\n ids: (number | string)[]\n onSuccess?: () => void\n selectAll: boolean\n where?: Where\n} & PublishManyProps\n\nexport function PublishManyDrawerContent(props: PublishManyDrawerContentProps) {\n const {\n collection,\n collection: { slug, labels: { plural, singular } } = {},\n drawerSlug,\n ids,\n onSuccess,\n selectAll,\n where,\n } = props\n\n const { clearRouteCache } = useRouteCache()\n\n const {\n config: {\n routes: { api },\n },\n } = useConfig()\n\n const { code: locale } = useLocale()\n\n const router = useRouter()\n const searchParams = useSearchParams()\n const { i18n, t } = useTranslation()\n\n const addDefaultError = useCallback(() => {\n toast.error(t('error:unknown'))\n }, [t])\n\n const queryString = React.useMemo((): string => {\n const whereConstraints: Where[] = [\n {\n _status: {\n not_equals: 'published',\n },\n },\n ]\n\n if (where) {\n whereConstraints.push(where)\n }\n\n const queryWithSearch = mergeListSearchAndWhere({\n collectionConfig: collection,\n search: searchParams.get('search'),\n })\n\n if (queryWithSearch) {\n whereConstraints.push(queryWithSearch)\n }\n\n if (selectAll) {\n // Match the current filter/search, or default to all docs\n whereConstraints.push(\n (parseSearchParams(searchParams)?.where as Where) || {\n id: {\n not_equals: '',\n },\n },\n )\n } else {\n // If we're not selecting all, we need to select specific docs\n whereConstraints.push({\n id: {\n in: ids || [],\n },\n })\n }\n\n return qs.stringify(\n {\n locale,\n select: {},\n where: combineWhereConstraints(whereConstraints),\n },\n { addQueryPrefix: true },\n )\n }, [collection, searchParams, selectAll, ids, locale, where])\n\n const handlePublish = useCallback(async () => {\n const url = formatAdminURL({\n apiRoute: api,\n path: `/${slug}${queryString}&draft=true`,\n })\n await requests\n .patch(url, {\n body: JSON.stringify({\n _status: 'published',\n }),\n headers: {\n 'Accept-Language': i18n.language,\n 'Content-Type': 'application/json',\n },\n })\n .then(async (res) => {\n try {\n const json = await res.json()\n\n const deletedDocs = json?.docs.length || 0\n const successLabel = deletedDocs > 1 ? plural : singular\n\n if (res.status < 400 || deletedDocs > 0) {\n toast.success(\n t('general:updatedCountSuccessfully', {\n count: deletedDocs,\n label: getTranslation(successLabel, i18n),\n }),\n )\n\n if (json?.errors.length > 0) {\n toast.error(json.message, {\n description: json.errors.map((error) => error.message).join('\\n'),\n })\n }\n\n router.replace(\n qs.stringify(\n {\n ...parseSearchParams(searchParams),\n page: selectAll ? '1' : undefined,\n },\n { addQueryPrefix: true },\n ),\n )\n\n clearRouteCache()\n\n if (typeof onSuccess === 'function') {\n onSuccess()\n }\n\n return null\n }\n\n if (json.errors) {\n json.errors.forEach((error) => toast.error(error.message))\n } else {\n addDefaultError()\n }\n return false\n } catch (_err) {\n return addDefaultError()\n }\n })\n }, [\n api,\n slug,\n queryString,\n i18n,\n plural,\n singular,\n t,\n router,\n searchParams,\n selectAll,\n clearRouteCache,\n addDefaultError,\n onSuccess,\n ])\n\n return (\n <ConfirmationModal\n body={t('version:aboutToPublishSelection', { label: getTranslation(plural, i18n) })}\n cancelLabel={t('general:cancel')}\n confirmingLabel={t('version:publishing')}\n confirmLabel={t('general:confirm')}\n heading={t('version:confirmPublish')}\n modalSlug={drawerSlug}\n onConfirm={handlePublish}\n />\n )\n}\n", "'use client'\nimport type { ClientCollectionConfig, ViewTypes, Where } from 'payload'\n\nimport { useModal } from '@faceless-ui/modal'\nimport { getTranslation } from '@payloadcms/translations'\nimport { useRouter, useSearchParams } from 'next/navigation.js'\nimport { formatAdminURL, mergeListSearchAndWhere } from 'payload/shared'\nimport * as qs from 'qs-esm'\nimport React from 'react'\nimport { toast } from 'sonner'\n\nimport { CheckboxInput } from '../../fields/Checkbox/Input.js'\nimport { useAuth } from '../../providers/Auth/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useLocale } from '../../providers/Locale/index.js'\nimport { useRouteCache } from '../../providers/RouteCache/index.js'\nimport { SelectAllStatus, useSelection } from '../../providers/Selection/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { requests } from '../../utilities/api.js'\nimport { parseSearchParams } from '../../utilities/parseSearchParams.js'\nimport { ConfirmationModal } from '../ConfirmationModal/index.js'\nimport { ListSelectionButton } from '../ListSelection/index.js'\nimport './index.scss'\n\nconst confirmManyRestoreDrawerSlug = `confirm-restore-many-docs`\n\nconst baseClass = 'restore-many'\n\nexport type Props = {\n collection: ClientCollectionConfig\n viewType?: ViewTypes\n}\n\nexport const RestoreMany: React.FC<Props> = (props) => {\n const { collection: { slug } = {}, viewType } = props\n\n const { permissions } = useAuth()\n const {\n config: { collections, routes, serverURL },\n } = useConfig()\n const { code: locale } = useLocale()\n const router = useRouter()\n const { clearRouteCache } = useRouteCache()\n const searchParams = useSearchParams()\n const { count, getSelectedIds, selectAll, toggleAll } = useSelection()\n const { openModal } = useModal()\n\n const { i18n, t } = useTranslation()\n\n const [restoreAsPublished, setRestoreAsPublished] = React.useState(false)\n\n const collectionPermissions = permissions?.collections?.[slug]\n const hasUpdatePermission = collectionPermissions?.update\n\n if (selectAll === SelectAllStatus.None || !hasUpdatePermission || viewType !== 'trash') {\n return null\n }\n\n const selectingAll = selectAll === SelectAllStatus.AllAvailable\n const selectedIDs = !selectingAll ? getSelectedIds() : []\n\n const baseWhere = parseSearchParams(searchParams)?.where as Where\n\n const finalWhere = {\n and: [\n ...(Array.isArray(baseWhere?.and) ? baseWhere.and : baseWhere ? [baseWhere] : []),\n { deletedAt: { exists: true } },\n ],\n }\n\n const handleRestore = async () => {\n const collectionConfig = collections.find((c) => c.slug === slug)\n if (!collectionConfig) {\n return\n }\n\n let whereConstraint: Where\n\n if (selectingAll) {\n whereConstraint = finalWhere\n } else {\n whereConstraint = {\n and: [{ id: { in: selectedIDs } }, { deletedAt: { exists: true } }],\n }\n }\n\n const url = formatAdminURL({\n apiRoute: routes.api,\n path: `/${slug}${qs.stringify(\n {\n limit: 0,\n locale,\n select: {},\n trash: true, // Ensure trashed docs are returned\n where: mergeListSearchAndWhere({\n collectionConfig,\n search: parseSearchParams(searchParams)?.search as string,\n where: whereConstraint,\n }),\n },\n { addQueryPrefix: true },\n )}`,\n })\n\n const body: Record<string, unknown> = {\n deletedAt: null,\n }\n\n // Only include _status if drafts are enabled\n if (collectionConfig?.versions?.drafts) {\n body._status = restoreAsPublished ? 'published' : 'draft'\n }\n\n const restoreManyResponse = await requests.patch(url, {\n body: JSON.stringify(body),\n headers: {\n 'Accept-Language': i18n.language,\n 'Content-Type': 'application/json',\n },\n })\n\n try {\n const { plural, singular } = collectionConfig.labels\n const json = await restoreManyResponse.json()\n\n const restoredDocs = json?.docs?.length || 0\n const successLabel = restoredDocs > 1 ? plural : singular\n\n if (restoreManyResponse.status < 400 || restoredDocs > 0) {\n toast.success(\n t('general:restoredCountSuccessfully', {\n count: restoredDocs,\n label: getTranslation(successLabel, i18n),\n }),\n )\n }\n\n if (json?.errors?.length > 0) {\n toast.error(json.message, {\n description: json.errors.map((e) => e.message).join('\\n'),\n })\n }\n } catch (err) {\n toast.error(t('error:unknown'))\n }\n\n toggleAll()\n\n router.replace(\n qs.stringify(\n {\n ...parseSearchParams(searchParams),\n page: selectingAll ? '1' : undefined,\n },\n { addQueryPrefix: true },\n ),\n )\n\n clearRouteCache()\n }\n\n const collectionConfig = collections.find(({ slug: s }) => s === slug)\n\n const labelString = getTranslation(\n count === 1 ? collectionConfig.labels.singular : collectionConfig.labels.plural,\n i18n,\n )\n\n return (\n <React.Fragment>\n <ListSelectionButton\n aria-label={t('general:restore')}\n className=\"restore-documents__toggle\"\n onClick={() => {\n openModal(confirmManyRestoreDrawerSlug)\n }}\n >\n {t('general:restore')}\n </ListSelectionButton>\n <ConfirmationModal\n body={\n <React.Fragment>\n {t(\n collectionConfig?.versions?.drafts\n ? 'general:aboutToRestoreAsDraftCount'\n : 'general:aboutToRestoreCount',\n {\n count,\n label: labelString,\n },\n )}\n {collectionConfig?.versions?.drafts && (\n <div className={`${baseClass}__checkbox`}>\n <CheckboxInput\n checked={restoreAsPublished}\n id=\"restore-as-published-many\"\n label={t('general:restoreAsPublished')}\n name=\"restore-as-published-many\"\n onToggle={(e) => setRestoreAsPublished(e.target.checked)}\n />\n </div>\n )}\n </React.Fragment>\n }\n className={baseClass}\n confirmingLabel={t('general:restoring')}\n heading={t('general:confirmRestoration')}\n modalSlug={confirmManyRestoreDrawerSlug}\n onConfirm={handleRestore}\n />\n </React.Fragment>\n )\n}\n", "'use client'\nimport type { ClientCollectionConfig, Where } from 'payload'\n\nimport { useModal } from '@faceless-ui/modal'\nimport React from 'react'\n\nimport { useAuth } from '../../providers/Auth/index.js'\nimport { SelectAllStatus, useSelection } from '../../providers/Selection/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { ListSelectionButton } from '../ListSelection/index.js'\nimport { UnpublishManyDrawerContent } from './DrawerContent.js'\n\nexport type UnpublishManyProps = {\n collection: ClientCollectionConfig\n}\n\nexport const UnpublishMany: React.FC<UnpublishManyProps> = (props) => {\n const { count, selectAll, selectedIDs, toggleAll } = useSelection()\n\n return (\n <UnpublishMany_v4\n {...props}\n count={count}\n ids={selectedIDs}\n onSuccess={() => toggleAll()}\n selectAll={selectAll === SelectAllStatus.AllAvailable}\n />\n )\n}\n\nexport const UnpublishMany_v4: React.FC<\n {\n count: number\n ids: (number | string)[]\n /**\n * When multiple UnpublishMany components are rendered on the page, this will differentiate them.\n */\n modalPrefix?: string\n onSuccess?: () => void\n selectAll: boolean\n where?: Where\n } & UnpublishManyProps\n> = (props) => {\n const {\n collection,\n collection: { slug, versions } = {},\n count,\n ids,\n modalPrefix,\n onSuccess,\n selectAll,\n where,\n } = props\n\n const { t } = useTranslation()\n const { permissions } = useAuth()\n const { toggleModal } = useModal()\n\n const collectionPermissions = permissions?.collections?.[slug]\n const hasPermission = collectionPermissions?.update\n\n const drawerSlug = `${modalPrefix ? `${modalPrefix}-` : ''}unpublish-${slug}`\n\n if (!versions?.drafts || count === 0 || !hasPermission) {\n return null\n }\n\n return (\n <React.Fragment>\n <ListSelectionButton\n aria-label={t('version:unpublish')}\n onClick={() => {\n toggleModal(drawerSlug)\n }}\n >\n {t('version:unpublish')}\n </ListSelectionButton>\n <UnpublishManyDrawerContent\n collection={collection}\n drawerSlug={drawerSlug}\n ids={ids}\n onSuccess={onSuccess}\n selectAll={selectAll}\n where={where}\n />\n </React.Fragment>\n )\n}\n", "import type { Where } from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport { useRouter, useSearchParams } from 'next/navigation.js'\nimport { combineWhereConstraints, formatAdminURL, mergeListSearchAndWhere } from 'payload/shared'\nimport * as qs from 'qs-esm'\nimport React, { useCallback } from 'react'\nimport { toast } from 'sonner'\n\nimport type { UnpublishManyProps } from './index.js'\n\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useLocale } from '../../providers/Locale/index.js'\nimport { useRouteCache } from '../../providers/RouteCache/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { requests } from '../../utilities/api.js'\nimport { parseSearchParams } from '../../utilities/parseSearchParams.js'\nimport { ConfirmationModal } from '../ConfirmationModal/index.js'\n\ntype UnpublishManyDrawerContentProps = {\n drawerSlug: string\n ids: (number | string)[]\n onSuccess?: () => void\n selectAll: boolean\n where?: Where\n} & UnpublishManyProps\n\nexport function UnpublishManyDrawerContent(props: UnpublishManyDrawerContentProps) {\n const {\n collection,\n collection: { slug, labels: { plural, singular } } = {},\n drawerSlug,\n ids,\n onSuccess,\n selectAll,\n where,\n } = props\n\n const {\n config: {\n routes: { api },\n },\n } = useConfig()\n const { code: locale } = useLocale()\n const { i18n, t } = useTranslation()\n const searchParams = useSearchParams()\n const router = useRouter()\n const { clearRouteCache } = useRouteCache()\n const addDefaultError = useCallback(() => {\n toast.error(t('error:unknown'))\n }, [t])\n\n const queryString = React.useMemo((): string => {\n const whereConstraints: Where[] = [\n {\n _status: {\n not_equals: 'draft',\n },\n },\n ]\n\n if (where) {\n whereConstraints.push(where)\n }\n\n const queryWithSearch = mergeListSearchAndWhere({\n collectionConfig: collection,\n search: searchParams.get('search'),\n })\n\n if (queryWithSearch) {\n whereConstraints.push(queryWithSearch)\n }\n\n if (!selectAll) {\n // If we're not selecting all, we need to select specific docs\n whereConstraints.push({\n id: {\n in: ids || [],\n },\n })\n }\n\n return qs.stringify(\n {\n locale,\n select: {},\n where: combineWhereConstraints(whereConstraints),\n },\n { addQueryPrefix: true },\n )\n }, [collection, searchParams, selectAll, ids, locale, where])\n\n const handleUnpublish = useCallback(async () => {\n const url = formatAdminURL({\n apiRoute: api,\n path: `/${slug}${queryString}`,\n })\n await requests\n .patch(url, {\n body: JSON.stringify({\n _status: 'draft',\n }),\n headers: {\n 'Accept-Language': i18n.language,\n 'Content-Type': 'application/json',\n },\n })\n .then(async (res) => {\n try {\n const json = await res.json()\n\n const deletedDocs = json?.docs.length || 0\n const successLabel = deletedDocs > 1 ? plural : singular\n\n if (res.status < 400 || deletedDocs > 0) {\n toast.success(\n t('general:updatedCountSuccessfully', {\n count: deletedDocs,\n label: getTranslation(successLabel, i18n),\n }),\n )\n\n if (json?.errors.length > 0) {\n toast.error(json.message, {\n description: json.errors.map((error) => error.message).join('\\n'),\n })\n }\n\n router.replace(\n qs.stringify(\n {\n ...parseSearchParams(searchParams),\n page: selectAll ? '1' : undefined,\n },\n { addQueryPrefix: true },\n ),\n )\n\n clearRouteCache()\n\n if (typeof onSuccess === 'function') {\n onSuccess()\n }\n\n return null\n }\n\n if (json.errors) {\n json.errors.forEach((error) => toast.error(error.message))\n } else {\n addDefaultError()\n }\n return false\n } catch (_err) {\n return addDefaultError()\n }\n })\n }, [\n api,\n slug,\n queryString,\n i18n,\n plural,\n singular,\n t,\n router,\n searchParams,\n selectAll,\n clearRouteCache,\n addDefaultError,\n onSuccess,\n ])\n\n return (\n <ConfirmationModal\n body={t('version:aboutToUnpublishSelection', { label: getTranslation(plural, i18n) })}\n confirmingLabel={t('version:unpublishing')}\n heading={t('version:confirmUnpublish')}\n modalSlug={drawerSlug}\n onConfirm={handleUnpublish}\n />\n )\n}\n", "import type { I18nClient, TFunction } from '@payloadcms/translations'\nimport type { ClientCollectionConfig, ViewTypes } from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport React from 'react'\n\nimport { CloseModalButton } from '../../../elements/CloseModalButton/index.js'\nimport { DefaultListViewTabs } from '../../../elements/DefaultListViewTabs/index.js'\nimport { useListDrawerContext } from '../../../elements/ListDrawer/Provider.js'\nimport { DrawerRelationshipSelect } from '../../../elements/ListHeader/DrawerRelationshipSelect/index.js'\nimport { ListDrawerCreateNewDocButton } from '../../../elements/ListHeader/DrawerTitleActions/index.js'\nimport { ListHeader } from '../../../elements/ListHeader/index.js'\nimport {\n ListBulkUploadButton,\n ListCreateNewButton,\n ListEmptyTrashButton,\n} from '../../../elements/ListHeader/TitleActions/index.js'\nimport { useConfig } from '../../../providers/Config/index.js'\nimport { useListQuery } from '../../../providers/ListQuery/index.js'\nimport { ListSelection } from '../ListSelection/index.js'\nimport './index.scss'\n\nconst drawerBaseClass = 'list-drawer'\n\nexport type ListHeaderProps = {\n Actions?: React.ReactNode[]\n className?: string\n collectionConfig: ClientCollectionConfig\n Description?: React.ReactNode\n disableBulkDelete?: boolean\n disableBulkEdit?: boolean\n hasCreatePermission: boolean\n hasDeletePermission?: boolean\n i18n: I18nClient\n isBulkUploadEnabled: boolean\n isTrashEnabled?: boolean\n newDocumentURL: string\n onBulkUploadSuccess?: () => void\n /** @deprecated This prop will be removed in the next major version.\n *\n * Opening of the bulk upload modal is handled internally.\n *\n * Prefer `onBulkUploadSuccess` usage to handle the success of the bulk upload.\n */\n openBulkUpload: () => void\n smallBreak: boolean\n /** @deprecated This prop will be removed in the next major version. */\n t?: TFunction\n TitleActions?: React.ReactNode[]\n viewType?: ViewTypes\n}\n\nexport const CollectionListHeader: React.FC<ListHeaderProps> = ({\n className,\n collectionConfig,\n Description,\n disableBulkDelete,\n disableBulkEdit,\n hasCreatePermission,\n hasDeletePermission,\n i18n,\n isBulkUploadEnabled,\n isTrashEnabled,\n newDocumentURL,\n onBulkUploadSuccess,\n openBulkUpload,\n smallBreak,\n viewType,\n}) => {\n const { config, getEntityConfig } = useConfig()\n const { drawerSlug, isInDrawer, selectedOption } = useListDrawerContext()\n const isTrashRoute = viewType === 'trash'\n const { isGroupingBy } = useListQuery()\n\n if (isInDrawer) {\n return (\n <ListHeader\n Actions={[\n <CloseModalButton\n className={`${drawerBaseClass}__header-close`}\n key=\"close-button\"\n slug={drawerSlug}\n />,\n ]}\n AfterListHeaderContent={\n <>\n {Description}\n {<DrawerRelationshipSelect />}\n </>\n }\n className={`${drawerBaseClass}__header`}\n title={getTranslation(\n getEntityConfig({ collectionSlug: selectedOption.value })?.labels?.plural,\n i18n,\n )}\n TitleActions={[\n <ListDrawerCreateNewDocButton\n hasCreatePermission={hasCreatePermission}\n key=\"list-drawer-create-new-doc\"\n />,\n ].filter(Boolean)}\n />\n )\n }\n\n return (\n <ListHeader\n Actions={[\n !smallBreak && !isGroupingBy && (\n <ListSelection\n collectionConfig={collectionConfig}\n disableBulkDelete={disableBulkDelete}\n disableBulkEdit={disableBulkEdit}\n key=\"list-selection\"\n label={getTranslation(collectionConfig?.labels?.plural, i18n)}\n showSelectAllAcrossPages={!isGroupingBy}\n viewType={viewType}\n />\n ),\n <DefaultListViewTabs\n collectionConfig={collectionConfig}\n config={config}\n key=\"default-list-actions\"\n viewType={viewType}\n />,\n ].filter(Boolean)}\n AfterListHeaderContent={Description}\n className={className}\n title={getTranslation(collectionConfig?.labels?.plural, i18n)}\n TitleActions={[\n hasCreatePermission && !isTrashRoute && (\n <ListCreateNewButton\n collectionConfig={collectionConfig}\n hasCreatePermission={hasCreatePermission}\n key=\"list-header-create-new-doc\"\n newDocumentURL={newDocumentURL}\n />\n ),\n hasCreatePermission && isBulkUploadEnabled && !isTrashRoute && (\n <ListBulkUploadButton\n collectionSlug={collectionConfig.slug}\n hasCreatePermission={hasCreatePermission}\n isBulkUploadEnabled={isBulkUploadEnabled}\n key=\"list-header-bulk-upload\"\n onBulkUploadSuccess={onBulkUploadSuccess}\n openBulkUpload={openBulkUpload}\n />\n ),\n hasDeletePermission && isTrashEnabled && viewType === 'trash' && (\n <ListEmptyTrashButton\n collectionConfig={collectionConfig}\n hasDeletePermission={hasDeletePermission}\n key=\"list-header-empty-trash\"\n />\n ),\n ].filter(Boolean)}\n />\n )\n}\n", "import { useModal } from '@faceless-ui/modal'\n\nimport { XIcon } from '../../icons/X/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport './index.scss'\n\nconst baseClass = 'close-modal-button'\n\nexport function CloseModalButton({ slug, className }: { className?: string; slug: string }) {\n const { closeModal } = useModal()\n const { t } = useTranslation()\n\n return (\n <button\n aria-label={t('general:close')}\n className={[baseClass, className].filter(Boolean).join(' ')}\n key=\"close-button\"\n onClick={() => {\n closeModal(slug)\n }}\n type=\"button\"\n >\n <XIcon />\n </button>\n )\n}\n", "'use client'\n\nimport type { ClientCollectionConfig, ClientConfig, ViewTypes } from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport { useRouter } from 'next/navigation.js'\nimport { formatAdminURL } from 'payload/shared'\nimport React from 'react'\n\nimport { usePreferences } from '../../providers/Preferences/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { Button } from '../Button/index.js'\nimport './index.scss'\n\nconst baseClass = 'default-list-view-tabs'\n\ntype DefaultListViewTabsProps = {\n collectionConfig: ClientCollectionConfig\n config: ClientConfig\n onChange?: (viewType: ViewTypes) => void\n viewType?: ViewTypes\n}\n\nexport const DefaultListViewTabs: React.FC<DefaultListViewTabsProps> = ({\n collectionConfig,\n config,\n onChange,\n viewType,\n}) => {\n const { i18n, t } = useTranslation()\n const { setPreference } = usePreferences()\n const router = useRouter()\n const isTrashEnabled = collectionConfig.trash\n const isFoldersEnabled = collectionConfig.folders && config.folders\n\n if (!isTrashEnabled && !isFoldersEnabled) {\n return null\n }\n\n const handleViewChange = async (newViewType: ViewTypes) => {\n if (onChange) {\n onChange(newViewType)\n }\n\n if (newViewType === 'list' || newViewType === 'folders') {\n await setPreference(`collection-${collectionConfig.slug}`, {\n listViewType: newViewType,\n })\n }\n\n let path: `/${string}` = `/collections/${collectionConfig.slug}`\n switch (newViewType) {\n case 'folders':\n if (config.folders) {\n path = `/collections/${collectionConfig.slug}/${config.folders.slug}`\n }\n break\n case 'trash':\n path = `/collections/${collectionConfig.slug}/trash`\n break\n }\n\n const url = formatAdminURL({\n adminRoute: config.routes.admin,\n path,\n })\n\n router.push(url)\n }\n\n const allButtonLabel = `${t('general:all')} ${getTranslation(collectionConfig?.labels?.plural, i18n)}`\n const allButtonId = allButtonLabel.toLowerCase().replace(/\\s+/g, '-')\n\n return (\n <div className={baseClass}>\n <Button\n buttonStyle=\"tab\"\n className={[`${baseClass}__button`, viewType === 'list' && `${baseClass}__button--active`]\n .filter(Boolean)\n .join(' ')}\n disabled={viewType === 'list'}\n el=\"button\"\n id={allButtonId}\n onClick={() => handleViewChange('list')}\n >\n {t('general:all')} {getTranslation(collectionConfig?.labels?.plural, i18n)}\n </Button>\n\n {isFoldersEnabled && (\n <Button\n buttonStyle=\"tab\"\n className={[\n `${baseClass}__button`,\n viewType === 'folders' && `${baseClass}__button--active`,\n ]\n .filter(Boolean)\n .join(' ')}\n disabled={viewType === 'folders'}\n el=\"button\"\n onClick={() => handleViewChange('folders')}\n >\n {t('folder:byFolder')}\n </Button>\n )}\n\n {isTrashEnabled && (\n <Button\n buttonStyle=\"tab\"\n className={[\n `${baseClass}__button`,\n viewType === 'trash' && `${baseClass}__button--active`,\n ]\n .filter(Boolean)\n .join(' ')}\n disabled={viewType === 'trash'}\n el=\"button\"\n id=\"trash-view-pill\"\n onClick={() => handleViewChange('trash')}\n >\n {t('general:trash')}\n </Button>\n )}\n </div>\n )\n}\n", "'use client'\n\nimport { getTranslation } from '@payloadcms/translations'\n\nimport { FieldLabel } from '../../../fields/FieldLabel/index.js'\nimport { useConfig } from '../../../providers/Config/index.js'\nimport { useTranslation } from '../../../providers/Translation/index.js'\nimport { useListDrawerContext } from '../../ListDrawer/Provider.js'\nimport { ReactSelect } from '../../ReactSelect/index.js'\nimport { listHeaderClass } from '../index.js'\n\nconst drawerBaseClass = 'list-drawer'\n\nexport const DrawerRelationshipSelect = () => {\n const { i18n, t } = useTranslation()\n const {\n config: { collections },\n getEntityConfig,\n } = useConfig()\n const { enabledCollections, selectedOption, setSelectedOption } = useListDrawerContext()\n const enabledCollectionConfigs = collections.filter(({ slug }) =>\n enabledCollections.includes(slug),\n )\n if (enabledCollectionConfigs.length > 1) {\n const activeCollectionConfig = getEntityConfig({ collectionSlug: selectedOption.value })\n\n return (\n <div className={`${drawerBaseClass}__select-collection-wrap`}>\n <FieldLabel label={t('upload:selectCollectionToBrowse')} />\n <ReactSelect\n className={`${listHeaderClass}__select-collection`}\n isClearable={false}\n onChange={setSelectedOption}\n options={enabledCollectionConfigs.map((coll) => ({\n label: getTranslation(coll.labels.singular, i18n),\n value: coll.slug,\n }))}\n value={{\n label: getTranslation(activeCollectionConfig?.labels.singular, i18n),\n value: activeCollectionConfig?.slug,\n }}\n />\n </div>\n )\n }\n return null\n}\n", "import React from 'react'\n\nimport './index.scss'\n\nexport const listHeaderClass = 'list-header'\n\ntype ListHeaderProps = {\n readonly Actions?: React.ReactNode[]\n readonly AfterListHeaderContent?: React.ReactNode\n readonly className?: string\n readonly title: string\n readonly TitleActions?: React.ReactNode[]\n}\nexport const ListHeader: React.FC<ListHeaderProps> = (props) => {\n return (\n <header className={[listHeaderClass, props.className].filter(Boolean).join(' ')}>\n <div className={`${listHeaderClass}__content`}>\n <div className={`${listHeaderClass}__title-and-actions`}>\n <h1 className={`${listHeaderClass}__title`}>{props.title}</h1>\n {props.TitleActions.length ? (\n <div className={`${listHeaderClass}__title-actions`}>{props.TitleActions}</div>\n ) : null}\n </div>\n {props.Actions.length ? (\n <div className={`${listHeaderClass}__actions`}>{props.Actions}</div>\n ) : null}\n </div>\n {props.AfterListHeaderContent ? (\n <div className={`${listHeaderClass}__after-header-content`}>\n {props.AfterListHeaderContent}\n </div>\n ) : null}\n </header>\n )\n}\n", "'use client'\n\nimport { useTranslation } from '../../../providers/Translation/index.js'\nimport { useListDrawerContext } from '../../ListDrawer/Provider.js'\nimport { Pill } from '../../Pill/index.js'\n\nconst baseClass = 'list-header'\n\ntype DefaultDrawerTitleActionsProps = {\n hasCreatePermission: boolean\n}\n\nexport function ListDrawerCreateNewDocButton({\n hasCreatePermission,\n}: DefaultDrawerTitleActionsProps) {\n const { DocumentDrawerToggler } = useListDrawerContext()\n const { t } = useTranslation()\n\n if (!hasCreatePermission) {\n return null\n }\n\n return (\n <DocumentDrawerToggler\n className={`${baseClass}__create-new-button`}\n key=\"create-new-button-toggler\"\n >\n <Pill size=\"small\">{t('general:createNew')}</Pill>\n </DocumentDrawerToggler>\n )\n}\n", "'use client'\nimport type { CollectionSlug } from 'payload'\n\nimport { useModal } from '@faceless-ui/modal'\nimport { useRouter } from 'next/navigation.js'\nimport React from 'react'\n\nimport { useBulkUpload } from '../../../elements/BulkUpload/index.js'\nimport { useTranslation } from '../../../providers/Translation/index.js'\nimport { Button } from '../../Button/index.js'\n\nexport function ListBulkUploadButton({\n collectionSlug,\n hasCreatePermission,\n isBulkUploadEnabled,\n onBulkUploadSuccess,\n openBulkUpload: openBulkUploadFromProps,\n}: {\n collectionSlug: CollectionSlug\n hasCreatePermission: boolean\n isBulkUploadEnabled: boolean\n onBulkUploadSuccess?: () => void\n /**\n * @deprecated This prop will be removed in the next major version.\n *\n * Prefer using `onBulkUploadSuccess`\n */\n openBulkUpload?: () => void\n}) {\n const { drawerSlug: bulkUploadDrawerSlug, setCollectionSlug, setOnSuccess } = useBulkUpload()\n const { t } = useTranslation()\n const { openModal } = useModal()\n const router = useRouter()\n\n const openBulkUpload = React.useCallback(() => {\n if (typeof openBulkUploadFromProps === 'function') {\n openBulkUploadFromProps()\n } else {\n setCollectionSlug(collectionSlug)\n openModal(bulkUploadDrawerSlug)\n setOnSuccess(() => {\n if (typeof onBulkUploadSuccess === 'function') {\n onBulkUploadSuccess()\n } else {\n router.refresh()\n }\n })\n }\n }, [\n router,\n collectionSlug,\n bulkUploadDrawerSlug,\n openModal,\n setCollectionSlug,\n setOnSuccess,\n onBulkUploadSuccess,\n openBulkUploadFromProps,\n ])\n\n if (!hasCreatePermission || !isBulkUploadEnabled) {\n return null\n }\n\n return (\n <Button\n aria-label={t('upload:bulkUpload')}\n buttonStyle=\"pill\"\n key=\"bulk-upload-button\"\n onClick={openBulkUpload}\n size=\"small\"\n >\n {t('upload:bulkUpload')}\n </Button>\n )\n}\n", "'use client'\nimport type { ClientCollectionConfig } from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport React from 'react'\n\nimport { useTranslation } from '../../../providers/Translation/index.js'\nimport { Button } from '../../Button/index.js'\n\nconst baseClass = 'list-create-new-doc'\n\nexport function ListCreateNewButton({\n collectionConfig,\n hasCreatePermission,\n newDocumentURL,\n}: {\n collectionConfig: ClientCollectionConfig\n hasCreatePermission: boolean\n newDocumentURL: string\n}) {\n const { i18n, t } = useTranslation()\n\n if (!hasCreatePermission) {\n return null\n }\n\n return (\n <Button\n aria-label={t('general:createNewLabel', {\n label: getTranslation(collectionConfig?.labels?.singular, i18n),\n })}\n buttonStyle=\"pill\"\n className={`${baseClass}__create-new-button`}\n el={'link'}\n key=\"create-new-button\"\n size=\"small\"\n to={newDocumentURL}\n >\n {t('general:createNew')}\n </Button>\n )\n}\n", "'use client'\nimport type { ClientCollectionConfig } from 'payload'\n\nimport { useModal } from '@faceless-ui/modal'\nimport { getTranslation } from '@payloadcms/translations'\nimport { useRouter, useSearchParams } from 'next/navigation.js'\nimport { formatAdminURL } from 'payload/shared'\nimport * as qs from 'qs-esm'\nimport React from 'react'\nimport { toast } from 'sonner'\n\nimport { useConfig } from '../../../providers/Config/index.js'\nimport { useLocale } from '../../../providers/Locale/index.js'\nimport { useRouteCache } from '../../../providers/RouteCache/index.js'\nimport { useTranslation } from '../../../providers/Translation/index.js'\nimport { requests } from '../../../utilities/api.js'\nimport { Button } from '../../Button/index.js'\nimport { ConfirmationModal } from '../../ConfirmationModal/index.js'\nimport { Translation } from '../../Translation/index.js'\n\nconst confirmEmptyTrashSlug = 'confirm-empty-trash'\n\nexport function ListEmptyTrashButton({\n collectionConfig,\n hasDeletePermission,\n}: {\n collectionConfig: ClientCollectionConfig\n hasDeletePermission: boolean\n}) {\n const { i18n, t } = useTranslation()\n const { code: locale } = useLocale()\n const { config } = useConfig()\n const { openModal } = useModal()\n const router = useRouter()\n const searchParams = useSearchParams()\n const { clearRouteCache } = useRouteCache()\n\n const [trashCount, setTrashCount] = React.useState<null | number>(null)\n\n React.useEffect(() => {\n const fetchTrashCount = async () => {\n const queryString = qs.stringify(\n {\n depth: 0,\n limit: 0,\n locale,\n trash: true,\n where: {\n deletedAt: {\n exists: true,\n },\n },\n },\n { addQueryPrefix: true },\n )\n\n try {\n const res = await requests.get(\n formatAdminURL({\n apiRoute: config.routes.api,\n path: `/${collectionConfig.slug}${queryString}`,\n }),\n {\n headers: {\n 'Accept-Language': i18n.language,\n 'Content-Type': 'application/json',\n },\n },\n )\n\n const json = await res.json()\n setTrashCount(json?.totalDocs ?? 0)\n } catch {\n setTrashCount(0)\n }\n }\n\n void fetchTrashCount()\n }, [collectionConfig.slug, config, i18n.language, locale])\n\n const handleEmptyTrash = React.useCallback(async () => {\n if (!hasDeletePermission) {\n return\n }\n\n const { slug, labels } = collectionConfig\n\n const queryString = qs.stringify(\n {\n limit: 0,\n locale,\n trash: true,\n where: {\n deletedAt: {\n exists: true,\n },\n },\n },\n { addQueryPrefix: true },\n )\n\n const res = await requests.delete(\n formatAdminURL({\n apiRoute: config.routes.api,\n path: `/${slug}${queryString}`,\n }),\n {\n headers: {\n 'Accept-Language': i18n.language,\n 'Content-Type': 'application/json',\n },\n },\n )\n\n try {\n const json = await res.json()\n const deletedCount = json?.docs?.length || 0\n\n if (res.status < 400) {\n toast.success(\n t('general:permanentlyDeletedCountSuccessfully', {\n count: deletedCount,\n label: getTranslation(labels?.plural, i18n),\n }),\n )\n }\n\n if (json?.errors?.length > 0) {\n toast.error(json.message, {\n description: json.errors.map((err) => err.message).join('\\n'),\n })\n }\n\n router.replace(\n qs.stringify(\n {\n ...Object.fromEntries(searchParams.entries()),\n page: '1',\n },\n { addQueryPrefix: true },\n ),\n )\n\n clearRouteCache()\n } catch {\n toast.error(t('error:unknown'))\n }\n }, [\n collectionConfig,\n config,\n hasDeletePermission,\n i18n,\n t,\n locale,\n searchParams,\n router,\n clearRouteCache,\n ])\n\n return (\n <React.Fragment>\n <Button\n aria-label={t('general:emptyTrashLabel', {\n label: getTranslation(collectionConfig?.labels?.plural, i18n),\n })}\n buttonStyle=\"pill\"\n disabled={trashCount === 0}\n id=\"empty-trash-button\"\n key=\"empty-trash-button\"\n onClick={() => {\n openModal(confirmEmptyTrashSlug)\n }}\n size=\"small\"\n >\n {t('general:emptyTrash')}\n </Button>\n <ConfirmationModal\n body={\n <Translation\n elements={{\n '0': ({ children }) => <strong>{children}</strong>,\n '1': ({ children }) => <strong>{children}</strong>,\n }}\n i18nKey=\"general:aboutToPermanentlyDeleteTrash\"\n t={t}\n variables={{\n count: trashCount ?? 0,\n label: getTranslation(\n trashCount === 1\n ? collectionConfig.labels?.singular\n : collectionConfig.labels?.plural,\n i18n,\n ),\n }}\n />\n }\n confirmingLabel={t('general:deleting')}\n heading={t('general:confirmDeletion')}\n modalSlug={confirmEmptyTrashSlug}\n onConfirm={handleEmptyTrash}\n />\n </React.Fragment>\n )\n}\n", "import type { ClientCollectionConfig } from 'payload'\n\nimport React from 'react'\n\nimport { ListSelection } from '../ListSelection/index.js'\nimport './index.scss'\n\nconst baseClass = 'group-by-header'\n\nexport const GroupByHeader: React.FC<{\n collectionConfig?: ClientCollectionConfig\n groupByFieldPath: string\n groupByValue: string\n heading: string\n}> = ({ collectionConfig, groupByFieldPath, groupByValue, heading }) => {\n return (\n <header className={baseClass}>\n <h4 className={`${baseClass}__heading`} data-group-id={groupByValue}>\n {heading}\n </h4>\n <ListSelection\n collectionConfig={collectionConfig}\n label={heading}\n modalPrefix={groupByValue}\n where={{\n [groupByFieldPath]: {\n equals: groupByValue,\n },\n }}\n />\n </header>\n )\n}\n", "'use client'\nimport type { ClientCollectionConfig, PaginatedDocs } from 'payload'\n\nimport { isNumber } from 'payload/shared'\nimport React, { Fragment } from 'react'\n\nimport type { IListQueryContext } from '../../providers/ListQuery/types.js'\n\nimport { Pagination } from '../../elements/Pagination/index.js'\nimport { PerPage } from '../../elements/PerPage/index.js'\nimport { useListQuery } from '../../providers/ListQuery/context.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport './index.scss'\n\nconst baseClass = 'page-controls'\n\n/**\n * @internal\n */\nexport const PageControlsComponent: React.FC<{\n AfterPageControls?: React.ReactNode\n collectionConfig: ClientCollectionConfig\n data: PaginatedDocs\n handlePageChange?: IListQueryContext['handlePageChange']\n handlePerPageChange?: IListQueryContext['handlePerPageChange']\n limit?: number\n}> = ({\n AfterPageControls,\n collectionConfig,\n data,\n handlePageChange,\n handlePerPageChange,\n limit,\n}) => {\n const { i18n } = useTranslation()\n\n return (\n <div className={baseClass}>\n <Pagination\n hasNextPage={data.hasNextPage}\n hasPrevPage={data.hasPrevPage}\n limit={data.limit}\n nextPage={data.nextPage}\n numberOfNeighbors={1}\n onChange={handlePageChange}\n page={data.page}\n prevPage={data.prevPage}\n totalPages={data.totalPages}\n />\n {data.totalDocs > 0 && (\n <Fragment>\n <div className={`${baseClass}__page-info`}>\n {data.page * data.limit - (data.limit - 1)}-\n {data.totalPages > 1 && data.totalPages !== data.page\n ? data.limit * data.page\n : data.totalDocs}{' '}\n {i18n.t('general:of')} {data.totalDocs}\n </div>\n <PerPage\n handleChange={handlePerPageChange}\n limit={limit}\n limits={collectionConfig?.admin?.pagination?.limits}\n resetPage={data.totalDocs <= data.pagingCounter}\n />\n {AfterPageControls}\n </Fragment>\n )}\n </div>\n )\n}\n\n/**\n * These page controls are controlled by the global ListQuery state.\n * To override thi behavior, build your own wrapper around PageControlsComponent.\n *\n * @internal\n */\nexport const PageControls: React.FC<{\n AfterPageControls?: React.ReactNode\n collectionConfig: ClientCollectionConfig\n}> = ({ AfterPageControls, collectionConfig }) => {\n const {\n data,\n defaultLimit: initialLimit,\n handlePageChange,\n handlePerPageChange,\n query,\n } = useListQuery()\n\n return (\n <PageControlsComponent\n AfterPageControls={AfterPageControls}\n collectionConfig={collectionConfig}\n data={data}\n handlePageChange={handlePageChange}\n handlePerPageChange={handlePerPageChange}\n limit={isNumber(query.limit) ? query.limit : initialLimit}\n />\n )\n}\n", "'use client'\n// TODO: abstract the `next/navigation` dependency out from this component\nimport { collectionDefaults, isNumber } from 'payload/shared'\nimport React from 'react'\n\nimport { ChevronIcon } from '../../icons/Chevron/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { Popup, PopupList } from '../Popup/index.js'\nimport './index.scss'\n\nconst baseClass = 'per-page'\n\nconst defaultLimits = collectionDefaults.admin.pagination.limits\n\nexport type PerPageProps = {\n readonly defaultLimit?: number\n readonly handleChange?: (limit: number) => void\n readonly limit: number\n readonly limits: number[]\n readonly resetPage?: boolean\n}\n\nexport const PerPage: React.FC<PerPageProps> = ({\n defaultLimit = 10,\n handleChange,\n limit,\n limits = defaultLimits,\n}) => {\n const { t } = useTranslation()\n\n const limitToUse = isNumber(limit) ? limit : defaultLimit\n\n return (\n <div className={baseClass}>\n <Popup\n button={\n <div className={`${baseClass}__base-button`}>\n <span>{t('general:perPage', { limit: limitToUse })}</span>\n &nbsp;\n <ChevronIcon className={`${baseClass}__icon`} />\n </div>\n }\n horizontalAlign=\"right\"\n render={({ close }) => (\n <PopupList.ButtonGroup>\n {limits.map((limitNumber, i) => (\n <PopupList.Button\n className={[\n `${baseClass}__button`,\n limitNumber === limitToUse && `${baseClass}__button-active`,\n ]\n .filter(Boolean)\n .join(' ')}\n key={i}\n onClick={() => {\n close()\n if (handleChange) {\n handleChange(limitNumber)\n }\n }}\n >\n {limitNumber === limitToUse && (\n <div className={`${baseClass}__chevron`}>\n <ChevronIcon direction=\"right\" size=\"small\" />\n </div>\n )}\n &nbsp;\n <span>{limitNumber}</span>\n </PopupList.Button>\n ))}\n </PopupList.ButtonGroup>\n )}\n size=\"small\"\n />\n </div>\n )\n}\n", "import React from 'react'\n\nimport './index.scss'\n\nconst baseClass = 'sticky-toolbar'\n\n/**\n * @internal\n */\nexport const StickyToolbar: React.FC<{\n children: React.ReactNode\n}> = ({ children }) => <div className={baseClass}>{children}</div>\n", "'use client'\nimport type { ClientCollectionConfig, PaginatedDocs } from 'payload'\n\nimport React, { useCallback } from 'react'\n\nimport type { IListQueryContext } from '../../providers/ListQuery/types.js'\n\nimport { useListQuery } from '../../providers/ListQuery/context.js'\nimport { PageControlsComponent } from './index.js'\n\n/**\n * If `groupBy` is set in the query, multiple tables will render, one for each group.\n * In this case, each table needs its own `PageControls` to handle pagination.\n * These page controls, however, should not modify the global `ListQuery` state.\n * Instead, they should only handle the pagination for the current group.\n * To do this, build a wrapper around `PageControlsComponent` that handles the pagination logic for the current group.\n */\nexport const GroupByPageControls: React.FC<{\n AfterPageControls?: React.ReactNode\n collectionConfig: ClientCollectionConfig\n data: PaginatedDocs\n groupByValue?: number | string\n}> = ({ AfterPageControls, collectionConfig, data, groupByValue }) => {\n const { refineListData } = useListQuery()\n\n const handlePageChange: IListQueryContext['handlePageChange'] = useCallback(\n async (page) => {\n await refineListData({\n queryByGroup: {\n [groupByValue]: {\n page,\n },\n },\n })\n },\n [refineListData, groupByValue],\n )\n\n const handlePerPageChange: IListQueryContext['handlePerPageChange'] = useCallback(\n async (limit) => {\n await refineListData({\n queryByGroup: {\n [groupByValue]: {\n limit,\n page: 1,\n },\n },\n })\n },\n [refineListData, groupByValue],\n )\n\n return (\n <PageControlsComponent\n AfterPageControls={AfterPageControls}\n collectionConfig={collectionConfig}\n data={data}\n handlePageChange={handlePageChange}\n handlePerPageChange={handlePerPageChange}\n />\n )\n}\n", "'use client'\nimport { formatAdminURL } from 'payload/shared'\nimport React from 'react'\n\nimport { LogOutIcon } from '../../icons/LogOut/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { Link } from '../Link/index.js'\n\nconst baseClass = 'nav'\n\nexport const Logout: React.FC<{\n /**\n * @deprecated\n * This prop is deprecated and will be removed in the next major version.\n * Components now import their own `Link` directly from `next/link`.\n */\n Link?: React.ComponentType\n tabIndex?: number\n}> = ({ tabIndex = 0 }) => {\n const { t } = useTranslation()\n const { config } = useConfig()\n\n const {\n admin: {\n routes: { logout: logoutRoute },\n },\n routes: { admin: adminRoute },\n } = config\n\n return (\n <Link\n aria-label={t('authentication:logOut')}\n className={`${baseClass}__log-out`}\n href={formatAdminURL({\n adminRoute,\n path: logoutRoute,\n })}\n prefetch={false}\n tabIndex={tabIndex}\n title={t('authentication:logOut')}\n >\n <LogOutIcon />\n </Link>\n )\n}\n", "import React from 'react'\n\nimport './index.scss'\n\nexport const LogOutIcon: React.FC = () => (\n <svg\n className=\"icon icon--logout\"\n fill=\"none\"\n height=\"20\"\n viewBox=\"0 0 20 20\"\n width=\"20\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n className=\"stroke\"\n d=\"M12 16H14.6667C15.0203 16 15.3594 15.8595 15.6095 15.6095C15.8595 15.3594 16 15.0203 16 14.6667V5.33333C16 4.97971 15.8595 4.64057 15.6095 4.39052C15.3594 4.14048 15.0203 4 14.6667 4H12M7.33333 13.3333L4 10M4 10L7.33333 6.66667M4 10H12\"\n strokeLinecap=\"square\"\n />\n </svg>\n)\n", "'use client'\nimport type { NavPreferences } from 'payload'\n\nimport { PREFERENCE_KEYS } from 'payload/shared'\nimport React, { useState } from 'react'\n\nimport { ChevronIcon } from '../../icons/Chevron/index.js'\nimport { usePreferences } from '../../providers/Preferences/index.js'\nimport './index.scss'\nimport { AnimateHeight } from '../AnimateHeight/index.js'\nimport { useNav } from '../Nav/context.js'\n\nconst baseClass = 'nav-group'\n\ntype Props = {\n children: React.ReactNode\n isOpen?: boolean\n label: string\n}\n\nexport const NavGroup: React.FC<Props> = ({ children, isOpen: isOpenFromProps, label }) => {\n const [collapsed, setCollapsed] = useState(\n typeof isOpenFromProps !== 'undefined' ? !isOpenFromProps : false,\n )\n\n const [animate, setAnimate] = useState(false)\n const { setPreference } = usePreferences()\n const { navOpen } = useNav()\n\n if (label) {\n const toggleCollapsed = () => {\n setAnimate(true)\n const newGroupPrefs: NavPreferences['groups'] = {}\n\n if (!newGroupPrefs?.[label]) {\n newGroupPrefs[label] = { open: Boolean(collapsed) }\n } else {\n newGroupPrefs[label].open = Boolean(collapsed)\n }\n\n void setPreference(PREFERENCE_KEYS.NAV, { groups: newGroupPrefs }, true)\n setCollapsed(!collapsed)\n }\n\n return (\n <div\n className={[`${baseClass}`, `${label}`, collapsed && `${baseClass}--collapsed`]\n .filter(Boolean)\n .join(' ')}\n id={`nav-group-${label}`}\n >\n <button\n className={[\n `${baseClass}__toggle`,\n `${baseClass}__toggle--${collapsed ? 'collapsed' : 'open'}`,\n ]\n .filter(Boolean)\n .join(' ')}\n onClick={toggleCollapsed}\n tabIndex={!navOpen ? -1 : 0}\n type=\"button\"\n >\n <div className={`${baseClass}__label`}>{label}</div>\n <div className={`${baseClass}__indicator`}>\n <ChevronIcon\n className={`${baseClass}__indicator`}\n direction={!collapsed ? 'up' : undefined}\n />\n </div>\n </button>\n <AnimateHeight duration={animate ? 200 : 0} height={collapsed ? 0 : 'auto'}>\n <div className={`${baseClass}__content`}>{children}</div>\n </AnimateHeight>\n </div>\n )\n }\n\n return <React.Fragment>{children}</React.Fragment>\n}\n", "'use client'\nimport React, { useMemo, useRef, useState } from 'react'\n\nimport type { PopupProps } from '../Popup/index.js'\n\nimport { Popup, PopupList } from '../Popup/index.js'\nimport './index.scss'\n\nconst baseClass = 'combobox'\n\n/**\n * @internal\n * @experimental\n */\nexport type ComboboxEntry = {\n Component: React.ReactNode\n name: string\n}\n\n/**\n * @internal\n * @experimental\n */\nexport type ComboboxProps = {\n entries: ComboboxEntry[]\n /** Minimum number of entries required to show search */\n minEntriesForSearch?: number\n onSelect?: (entry: ComboboxEntry) => void\n searchPlaceholder?: string\n} & Omit<PopupProps, 'children' | 'render'>\n\n/**\n * A wrapper on top of Popup + PopupList.ButtonGroup that adds search functionality.\n *\n * @internal - this component may be removed or receive breaking changes in minor releases.\n * @experimental\n */\nexport const Combobox: React.FC<ComboboxProps> = (props) => {\n const {\n entries,\n minEntriesForSearch = 8,\n onSelect,\n onToggleClose,\n onToggleOpen,\n searchPlaceholder = 'Search...',\n ...popupProps\n } = props\n const [searchValue, setSearchValue] = useState('')\n const isOpenRef = useRef(false)\n const searchInputRef = useRef<HTMLInputElement>(null)\n\n const filteredEntries = useMemo(() => {\n if (!searchValue) {\n return entries\n }\n const search = searchValue.toLowerCase()\n return entries.filter((entry) => entry.name.toLowerCase().includes(search))\n }, [entries, searchValue])\n\n const showSearch = entries.length >= minEntriesForSearch\n const hasResults = filteredEntries.length > 0\n\n const handleToggleOpen = React.useCallback(\n (active: boolean) => {\n isOpenRef.current = active\n if (active && showSearch) {\n setTimeout(() => {\n searchInputRef.current?.focus()\n }, 100)\n }\n onToggleOpen?.(active)\n },\n [showSearch, onToggleOpen],\n )\n\n const handleToggleClose = React.useCallback(() => {\n isOpenRef.current = false\n setSearchValue('')\n onToggleClose?.()\n }, [onToggleClose])\n\n return (\n <Popup\n {...popupProps}\n className={`${baseClass} ${popupProps.className || ''}`}\n onToggleClose={handleToggleClose}\n onToggleOpen={handleToggleOpen}\n render={({ close }) => (\n <div className={`${baseClass}__content`}>\n {showSearch && (\n <div\n className={`${baseClass}__search-wrapper${!hasResults ? ` ${baseClass}__search-wrapper--no-results` : ''}`}\n >\n <input\n aria-label={searchPlaceholder}\n className={`${baseClass}__search-input`}\n onChange={(e) => setSearchValue(e.target.value)}\n placeholder={searchPlaceholder}\n ref={searchInputRef}\n type=\"text\"\n value={searchValue}\n />\n </div>\n )}\n <PopupList.ButtonGroup>\n {filteredEntries.map((entry, index) => {\n const handleClick = () => {\n if (onSelect) {\n onSelect(entry)\n }\n close()\n }\n\n return (\n <div\n className={`${baseClass}__entry`}\n key={`${entry.name}-${index}`}\n onClick={handleClick}\n onKeyDown={(e) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault()\n handleClick()\n }\n }}\n role=\"menuitem\"\n tabIndex={0}\n >\n {entry.Component}\n </div>\n )\n })}\n </PopupList.ButtonGroup>\n </div>\n )}\n />\n )\n}\n", "import { formatAdminURL } from 'payload/shared'\nimport React from 'react'\n\nimport { useConfig } from '../../../providers/Config/index.js'\nimport { useTranslation } from '../../../providers/Translation/index.js'\nimport { Link } from '../../Link/index.js'\nimport { ColoredFolderIcon } from '../ColoredFolderIcon/index.js'\nimport './index.scss'\n\nconst baseClass = 'browse-by-folder-button'\n\nexport function BrowseByFolderButton({ active }) {\n const { t } = useTranslation()\n const { config } = useConfig()\n const {\n admin: {\n routes: { browseByFolder: foldersRoute },\n },\n routes: { admin: adminRoute },\n } = config\n\n return (\n <Link\n className={[baseClass, active && 'active'].filter(Boolean).join(' ')}\n href={formatAdminURL({\n adminRoute,\n path: foldersRoute,\n })}\n id=\"browse-by-folder\"\n prefetch={false}\n >\n <ColoredFolderIcon />\n {t('folder:browseByFolder')}\n </Link>\n )\n}\n", "import type { OptionObject, SelectFieldClientProps } from 'payload'\n\nimport React from 'react'\n\nimport type { ReactSelectAdapterProps } from '../../ReactSelect/types.js'\n\nimport { mergeFieldStyles } from '../../../fields/mergeFieldStyles.js'\nimport { formatOptions } from '../../../fields/Select/index.js'\nimport { SelectInput } from '../../../fields/Select/Input.js'\nimport { useField } from '../../../forms/useField/index.js'\nimport { useFolder } from '../../../providers/Folders/index.js'\nimport { useTranslation } from '../../../providers/Translation/index.js'\n\nexport const FolderTypeField = (props: SelectFieldClientProps) => {\n const {\n field,\n field: {\n name,\n admin: {\n className,\n isClearable = true,\n isSortable = true,\n placeholder,\n } = {} as SelectFieldClientProps['field']['admin'],\n hasMany = false,\n label,\n localized,\n options: allSelectOptions = [],\n required,\n },\n onChange: onChangeFromProps,\n path: pathFromProps,\n readOnly,\n validate,\n } = props\n const { t } = useTranslation()\n\n const { folderType } = useFolder()\n\n const options = React.useMemo(() => {\n if (!folderType || folderType.length === 0) {\n return formatOptions(allSelectOptions)\n }\n return formatOptions(\n allSelectOptions.filter((option) => {\n if (typeof option === 'object' && option.value) {\n return folderType.includes(option.value)\n }\n return true\n }),\n )\n }, [allSelectOptions, folderType])\n\n const memoizedValidate = React.useCallback(\n (value, validationOptions) => {\n if (typeof validate === 'function') {\n return validate(value, { ...validationOptions, hasMany, options, required })\n }\n },\n [validate, required, hasMany, options],\n )\n\n const {\n customComponents: { AfterInput, BeforeInput, Description, Error, Label } = {},\n disabled,\n path,\n selectFilterOptions,\n setValue,\n showError,\n value,\n } = useField({\n potentiallyStalePath: pathFromProps,\n validate: memoizedValidate,\n })\n\n const onChange: ReactSelectAdapterProps['onChange'] = React.useCallback(\n (selectedOption: OptionObject | OptionObject[]) => {\n if (!readOnly || disabled) {\n let newValue: string | string[] = null\n if (selectedOption && hasMany) {\n if (Array.isArray(selectedOption) && selectedOption.length > 0) {\n newValue = selectedOption.map((option) => option.value)\n } else {\n newValue = null\n }\n } else if (selectedOption && !Array.isArray(selectedOption)) {\n newValue = selectedOption.value\n }\n\n if (typeof onChangeFromProps === 'function') {\n onChangeFromProps(newValue)\n }\n\n setValue(newValue)\n }\n },\n [readOnly, disabled, hasMany, setValue, onChangeFromProps],\n )\n\n const styles = React.useMemo(() => mergeFieldStyles(field), [field])\n\n return (\n <SelectInput\n AfterInput={AfterInput}\n BeforeInput={BeforeInput}\n className={className}\n Description={Description}\n description={t('folder:folderTypeDescription')}\n Error={Error}\n filterOption={\n selectFilterOptions\n ? ({ value }) =>\n selectFilterOptions?.some(\n (option) => (typeof option === 'string' ? option : option.value) === value,\n )\n : undefined\n }\n hasMany={hasMany}\n isClearable={isClearable}\n isSortable={isSortable}\n Label={Label}\n label={label}\n localized={localized}\n name={name}\n onChange={onChange}\n options={options}\n path={path}\n placeholder={placeholder}\n readOnly={readOnly || disabled}\n required={required || (Array.isArray(folderType) && folderType.length > 0)}\n showError={showError}\n style={styles}\n value={value as string | string[]}\n />\n )\n}\n", "'use client'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport { extractID } from 'payload/shared'\nimport React from 'react'\n\nimport { DocumentIcon } from '../../../icons/Document/index.js'\nimport { useConfig } from '../../../providers/Config/index.js'\nimport { useFolder } from '../../../providers/Folders/index.js'\nimport { useTranslation } from '../../../providers/Translation/index.js'\nimport { formatDate } from '../../../utilities/formatDocTitle/formatDateTitle.js'\nimport { ColoredFolderIcon } from '../ColoredFolderIcon/index.js'\nimport { DraggableTableRow } from '../DraggableTableRow/index.js'\nimport { SimpleTable, TableHeader } from '../SimpleTable/index.js'\nimport './index.scss'\n\nconst baseClass = 'folder-file-table'\n\ntype Props = {\n showRelationCell?: boolean\n}\n\nexport function FolderFileTable({ showRelationCell = true }: Props) {\n const {\n checkIfItemIsDisabled,\n documents,\n focusedRowIndex,\n onItemClick,\n onItemKeyPress,\n selectedItemKeys,\n subfolders,\n } = useFolder()\n const { config } = useConfig()\n const { i18n, t } = useTranslation()\n\n const [relationToMap] = React.useState(() => {\n const map: Record<string, { plural: string; singular: string }> = {}\n config.collections.forEach((collection) => {\n map[collection.slug] = {\n plural: getTranslation(collection.labels?.plural, i18n),\n singular: getTranslation(collection.labels?.singular, i18n),\n }\n })\n return map\n })\n\n const [columns] = React.useState(() => {\n const columnsToShow = [\n {\n name: 'name',\n label: t('general:name'),\n },\n {\n name: 'createdAt',\n label: t('general:createdAt'),\n },\n {\n name: 'updatedAt',\n label: t('general:updatedAt'),\n },\n ]\n\n if (showRelationCell) {\n columnsToShow.push({\n name: 'type',\n label: t('version:type'),\n })\n }\n\n return columnsToShow\n })\n\n return (\n <SimpleTable\n headerCells={columns.map(({ name, label }) => (\n <TableHeader key={name}>{label}</TableHeader>\n ))}\n tableRows={[\n ...subfolders.map((subfolder, rowIndex) => {\n const { itemKey, relationTo, value } = subfolder\n const subfolderID = extractID(value)\n\n return (\n <DraggableTableRow\n columns={columns.map(({ name }, index) => {\n let cellValue: React.ReactNode = '—'\n if (name === 'name' && value._folderOrDocumentTitle !== undefined) {\n cellValue = value._folderOrDocumentTitle\n }\n\n if ((name === 'createdAt' || name === 'updatedAt') && value[name]) {\n cellValue = formatDate({\n date: value[name],\n i18n,\n pattern: config.admin.dateFormat,\n })\n }\n\n if (name === 'type') {\n cellValue = (\n <>\n {relationToMap[relationTo]?.singular || relationTo}\n {Array.isArray(subfolder.value?.folderType)\n ? subfolder.value?.folderType.reduce((acc, slug, index) => {\n if (index === 0) {\n return ` — ${relationToMap[slug]?.plural || slug}`\n }\n if (index > 0) {\n return `${acc}, ${relationToMap[slug]?.plural || slug}`\n }\n return acc\n }, '')\n : ''}\n </>\n )\n }\n\n if (index === 0) {\n return (\n <span className={`${baseClass}__cell-with-icon`} key={`${itemKey}-${name}`}>\n <ColoredFolderIcon />\n {cellValue}\n </span>\n )\n } else {\n return cellValue\n }\n })}\n disabled={checkIfItemIsDisabled(subfolder)}\n dragData={{\n id: subfolderID,\n type: 'folder',\n }}\n id={subfolderID}\n isDroppable\n isFocused={focusedRowIndex === rowIndex}\n isSelected={selectedItemKeys.has(itemKey)}\n isSelecting={selectedItemKeys.size > 0}\n itemKey={itemKey}\n key={`${rowIndex}-${itemKey}`}\n onClick={(event) => {\n void onItemClick({\n event,\n index: rowIndex,\n item: subfolder,\n })\n }}\n onKeyDown={(event) => {\n void onItemKeyPress({\n event,\n index: rowIndex,\n item: subfolder,\n })\n }}\n />\n )\n }),\n\n ...documents.map((document, unadjustedIndex) => {\n const { itemKey, relationTo, value } = document\n const documentID = extractID(value)\n const rowIndex = unadjustedIndex + subfolders.length\n\n return (\n <DraggableTableRow\n columns={columns.map(({ name }, index) => {\n let cellValue: React.ReactNode = '—'\n if (name === 'name' && value._folderOrDocumentTitle !== undefined) {\n cellValue = value._folderOrDocumentTitle\n }\n\n if ((name === 'createdAt' || name === 'updatedAt') && value[name]) {\n cellValue = formatDate({\n date: value[name],\n i18n,\n pattern: config.admin.dateFormat,\n })\n }\n\n if (name === 'type') {\n cellValue = relationToMap[relationTo]?.singular || relationTo\n }\n\n if (index === 0) {\n return (\n <span className={`${baseClass}__cell-with-icon`} key={`${itemKey}-${name}`}>\n <DocumentIcon />\n {cellValue}\n </span>\n )\n } else {\n return cellValue\n }\n })}\n disabled={checkIfItemIsDisabled(document)}\n dragData={{\n id: documentID,\n type: 'document',\n }}\n id={documentID}\n isFocused={focusedRowIndex === rowIndex}\n isSelected={selectedItemKeys.has(itemKey)}\n isSelecting={selectedItemKeys.size > 0}\n itemKey={itemKey}\n key={`${rowIndex}-${itemKey}`}\n onClick={(event) => {\n void onItemClick({\n event,\n index: rowIndex,\n item: document,\n })\n }}\n onKeyDown={(event) => {\n void onItemKeyPress({\n event,\n index: rowIndex,\n item: document,\n })\n }}\n />\n )\n }),\n ]}\n />\n )\n}\n", "import React from 'react'\n\nimport './index.scss'\n\nexport const DocumentIcon = () => {\n return (\n <svg\n className=\"icon icon--document\"\n fill=\"none\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n width=\"16\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n clipRule=\"evenodd\"\n d=\"M3.5 1C2.94772 1 2.5 1.44772 2.5 2V14C2.5 14.5523 2.94771 15 3.5 15H12.5C13.0523 15 13.5 14.5523 13.5 14V4.41421C13.5 4.149 13.3946 3.89464 13.2071 3.70711L10.7929 1.29289C10.6054 1.10536 10.351 1 10.0858 1H3.5ZM5 5.5C5 5.22386 5.22386 5 5.5 5H10.5C10.7761 5 11 5.22386 11 5.5C11 5.77614 10.7761 6 10.5 6H5.5C5.22386 6 5 5.77614 5 5.5ZM5 8.5C5 8.22386 5.22386 8 5.5 8H10.5C10.7761 8 11 8.22386 11 8.5C11 8.77614 10.7761 9 10.5 9H5.5C5.22386 9 5 8.77614 5 8.5ZM5 11.5C5 11.2239 5.22386 11 5.5 11H10.5C10.7761 11 11 11.2239 11 11.5C11 11.7761 10.7761 12 10.5 12H5.5C5.22386 12 5 11.7761 5 11.5Z\"\n fill=\"currentColor\"\n fillRule=\"evenodd\"\n />\n </svg>\n )\n}\n", "'use client'\nimport { useDroppable } from '@dnd-kit/core'\nimport React from 'react'\n\nimport { DraggableWithClick } from '../DraggableWithClick/index.js'\nimport { HiddenCell, TableCell } from '../SimpleTable/index.js'\nimport './index.scss'\n\nconst baseClass = 'draggable-table-row'\ntype Props = {\n readonly columns: React.ReactNode[]\n readonly disabled?: boolean\n readonly dragData?: Record<string, unknown>\n readonly id: number | string\n readonly isDroppable?: boolean\n readonly isFocused?: boolean\n readonly isSelected?: boolean\n readonly isSelecting?: boolean\n readonly itemKey: string\n readonly onClick?: (e: React.MouseEvent) => void\n readonly onKeyDown?: (e: React.KeyboardEvent) => void\n}\nexport function DraggableTableRow({\n id,\n columns,\n disabled = false,\n dragData,\n isDroppable: _isDroppable,\n isFocused,\n isSelected,\n isSelecting,\n itemKey,\n onClick,\n onKeyDown,\n}: Props) {\n const isDroppable = !disabled && _isDroppable && !isSelected\n const { isOver, setNodeRef } = useDroppable({\n id,\n data: dragData,\n disabled: !isDroppable,\n })\n const ref = React.useRef(null)\n\n React.useEffect(() => {\n const copyOfRef = ref.current\n if (isFocused && ref.current) {\n ref.current.focus()\n } else if (!isFocused && ref.current) {\n ref.current.blur()\n }\n\n return () => {\n if (copyOfRef) {\n copyOfRef.blur()\n }\n }\n }, [isFocused])\n\n return (\n <DraggableWithClick\n as=\"tr\"\n className={[\n baseClass,\n isSelected && `${baseClass}--selected`,\n isSelecting && `${baseClass}--selecting`,\n disabled && `${baseClass}--disabled`,\n isFocused && `${baseClass}--focused`,\n isOver && `${baseClass}--over`,\n ]\n .filter(Boolean)\n .join(' ')}\n key={itemKey}\n onClick={onClick}\n onKeyDown={onKeyDown}\n ref={ref}\n >\n {columns.map((col, i) => (\n <TableCell\n className={[\n `${baseClass}__cell-content`,\n i === 0 && `${baseClass}__first-td`,\n i === columns.length - 1 && `${baseClass}__last-td`,\n ]\n .filter(Boolean)\n .join(' ')}\n key={`${itemKey}-${i}`}\n >\n {col}\n </TableCell>\n ))}\n\n {isDroppable ? (\n <HiddenCell>\n <div className={`${baseClass}__drop-area`} ref={setNodeRef} />\n </HiddenCell>\n ) : null}\n </DraggableWithClick>\n )\n}\n", "import { useDraggable } from '@dnd-kit/core'\nimport React, { useId, useRef } from 'react'\n\nimport './index.scss'\n\nconst baseClass = 'draggable-with-click'\n\ntype Props = {\n readonly as?: React.ElementType\n readonly children?: React.ReactNode\n readonly className?: string\n readonly disabled?: boolean\n readonly onClick: (e: React.MouseEvent) => void\n readonly onKeyDown?: (e: React.KeyboardEvent) => void\n readonly ref?: React.RefObject<HTMLDivElement>\n readonly thresholdPixels?: number\n}\n\nexport const DraggableWithClick = ({\n as = 'div',\n children,\n className,\n disabled = false,\n onClick,\n onKeyDown,\n ref,\n thresholdPixels = 3,\n}: Props) => {\n const id = useId()\n const { attributes, listeners, setNodeRef } = useDraggable({ id, disabled })\n const initialPos = useRef({ x: 0, y: 0 })\n const isDragging = useRef(false)\n\n const handlePointerDown = (e) => {\n initialPos.current = { x: e.clientX, y: e.clientY }\n isDragging.current = false\n\n const handlePointerMove = (moveEvent) => {\n const deltaX = Math.abs(moveEvent.clientX - initialPos.current.x)\n const deltaY = Math.abs(moveEvent.clientY - initialPos.current.y)\n if (deltaX > thresholdPixels || deltaY > thresholdPixels) {\n isDragging.current = true\n if (listeners?.onPointerDown) {\n listeners.onPointerDown(e)\n // when the user starts dragging\n // - call the click handler\n // - remove the pointermove listener\n onClick(moveEvent)\n }\n window.removeEventListener('pointermove', handlePointerMove)\n }\n }\n\n const cleanup = () => {\n window.removeEventListener('pointermove', handlePointerMove)\n window.removeEventListener('pointerup', handlePointerUp)\n }\n\n const handlePointerUp = (upEvent) => {\n cleanup()\n if (!isDragging.current) {\n // if the user did not drag the element\n // - call the click handler\n onClick(upEvent)\n }\n }\n\n window.addEventListener('pointermove', handlePointerMove)\n window.addEventListener('pointerup', handlePointerUp)\n }\n\n const Component = as || 'div'\n\n return (\n <Component\n role=\"button\"\n tabIndex={0}\n {...attributes}\n className={[baseClass, className, disabled ? `${baseClass}--disabled` : '']\n .filter(Boolean)\n .join(' ')}\n onKeyDown={disabled ? undefined : onKeyDown}\n onPointerDown={disabled ? undefined : onClick ? handlePointerDown : undefined}\n ref={(node) => {\n if (disabled) {\n return\n }\n setNodeRef(node)\n if (ref) {\n ref.current = node\n }\n }}\n >\n {children}\n </Component>\n )\n}\n", "'use client'\n\nimport React from 'react'\n\nimport './index.scss'\n\nconst baseClass = 'simple-table'\n\ntype TableProps = {\n readonly appearance?: 'condensed' | 'default'\n readonly className?: string\n readonly headerCells: React.ReactNode[]\n readonly tableRows: React.ReactNode[]\n}\nexport const SimpleTable = ({\n appearance,\n className,\n headerCells: headers,\n tableRows: rows,\n}: TableProps) => {\n return (\n <div\n className={[className, baseClass, appearance && `${baseClass}--appearance-${appearance}`]\n .filter(Boolean)\n .join(' ')}\n >\n <table cellPadding={0} cellSpacing={0} className={`${baseClass}__table`}>\n <TableHead>\n <TableRow>{headers}</TableRow>\n </TableHead>\n\n <TableBody>{rows}</TableBody>\n </table>\n </div>\n )\n}\n\nexport const TableHead = ({\n children,\n className,\n ...rest\n}: React.HTMLAttributes<HTMLTableSectionElement>) => {\n return (\n <thead className={`${baseClass}__thead ${className || ''}`.trim()} {...rest}>\n {children}\n </thead>\n )\n}\n\nexport const TableBody = ({\n children,\n className,\n ...rest\n}: React.HTMLAttributes<HTMLTableSectionElement>) => {\n return (\n <tbody className={`${baseClass}__tbody ${className || ''}`.trim()} {...rest}>\n {children}\n </tbody>\n )\n}\n\nexport const TableRow = ({\n children,\n className,\n ...rest\n}: React.HTMLAttributes<HTMLTableRowElement>) => {\n return (\n <tr className={`${baseClass}__tr ${className || ''}`.trim()} {...rest}>\n {children}\n </tr>\n )\n}\n\nexport const TableCell = ({\n children,\n className,\n ...rest\n}: React.TdHTMLAttributes<HTMLTableCellElement>) => {\n return (\n <td className={`${baseClass}__td ${className || ''}`.trim()} {...rest}>\n {children}\n </td>\n )\n}\n\nexport const TableHeader = ({\n children,\n className,\n ...rest\n}: React.ThHTMLAttributes<HTMLTableCellElement>) => {\n return (\n <th className={`${baseClass}__th ${className || ''}`.trim()} {...rest}>\n {children}\n </th>\n )\n}\n\nexport const HiddenCell = ({\n children,\n className,\n ...rest\n}: { children?: React.ReactNode } & React.TdHTMLAttributes<HTMLTableCellElement>) => {\n return (\n <td className={`${baseClass}__hidden-cell ${className || ''}`.trim()} {...rest}>\n {children}\n </td>\n )\n}\n", "'use client'\n\nimport type { FolderOrDocument } from 'payload/shared'\n\nimport React from 'react'\n\nimport { ContextFolderFileCard } from '../FolderFileCard/index.js'\nimport './index.scss'\n\nconst baseClass = 'item-card-grid'\n\ntype ItemCardGridProps = {\n items: FolderOrDocument[]\n title?: string\n} & (\n | {\n subfolderCount: number\n type: 'file'\n }\n | {\n subfolderCount?: never\n type: 'folder'\n }\n)\nexport function ItemCardGrid({ type, items, subfolderCount, title }: ItemCardGridProps) {\n return (\n <>\n {title && <p className={`${baseClass}__title`}>{title}</p>}\n <div className={baseClass}>\n {!items || items?.length === 0\n ? null\n : items.map((item, _index) => {\n const index = _index + (subfolderCount || 0)\n const { itemKey } = item\n\n return <ContextFolderFileCard index={index} item={item} key={itemKey} type={type} />\n })}\n </div>\n </>\n )\n}\n", "'use client'\n\nimport type { FolderOrDocument } from 'payload/shared'\n\nimport { useDroppable } from '@dnd-kit/core'\nimport { getTranslation } from '@payloadcms/translations'\nimport React from 'react'\n\nimport { DocumentIcon } from '../../../icons/Document/index.js'\nimport { ThreeDotsIcon } from '../../../icons/ThreeDots/index.js'\nimport { useConfig } from '../../../providers/Config/index.js'\nimport { useFolder } from '../../../providers/Folders/index.js'\nimport { useTranslation } from '../../../providers/Translation/index.js'\nimport { Popup } from '../../Popup/index.js'\nimport { Thumbnail } from '../../Thumbnail/index.js'\nimport { ColoredFolderIcon } from '../ColoredFolderIcon/index.js'\nimport { DraggableWithClick } from '../DraggableWithClick/index.js'\nimport './index.scss'\n\nconst baseClass = 'folder-file-card'\n\ntype Props = {\n readonly className?: string\n readonly disabled?: boolean\n readonly folderType?: string[]\n readonly id: number | string\n readonly isDeleting?: boolean\n readonly isFocused?: boolean\n readonly isSelected?: boolean\n readonly itemKey: string\n readonly onClick?: (e: React.MouseEvent) => void\n readonly onKeyDown?: (e: React.KeyboardEvent) => void\n readonly PopupActions?: React.ReactNode\n readonly previewUrl?: string\n readonly selectedCount?: number\n readonly title: string\n readonly type: 'file' | 'folder'\n}\nexport function FolderFileCard({\n id,\n type,\n className = '',\n disabled = false,\n folderType,\n isDeleting = false,\n isFocused = false,\n isSelected = false,\n itemKey,\n onClick,\n onKeyDown,\n PopupActions,\n previewUrl,\n selectedCount = 0,\n title,\n}: Props) {\n const disableDrop = !id || disabled || type !== 'folder'\n const { isOver, setNodeRef } = useDroppable({\n id: itemKey,\n data: {\n id,\n type,\n folderType,\n },\n disabled: disableDrop,\n })\n const ref = React.useRef(null)\n\n React.useEffect(() => {\n const copyOfRef = ref.current\n if (isFocused && ref.current) {\n ref.current.focus()\n } else if (!isFocused && ref.current) {\n ref.current.blur()\n }\n\n return () => {\n if (copyOfRef) {\n copyOfRef.blur()\n }\n }\n }, [isFocused])\n\n return (\n <DraggableWithClick\n className={[\n baseClass,\n className,\n isSelected && `${baseClass}--selected`,\n disabled && `${baseClass}--disabled`,\n isDeleting && `${baseClass}--deleting`,\n isFocused && `${baseClass}--focused`,\n isOver && `${baseClass}--over`,\n `${baseClass}--${type}`,\n ]\n .filter(Boolean)\n .join(' ')}\n disabled={disabled || (!onClick && !onKeyDown)}\n key={itemKey}\n onClick={onClick}\n onKeyDown={onKeyDown}\n ref={ref}\n >\n {!disableDrop ? <div className={`${baseClass}__drop-area`} ref={setNodeRef} /> : null}\n\n {type === 'file' ? (\n <div className={`${baseClass}__preview-area`}>\n {previewUrl ? <Thumbnail fileSrc={previewUrl} /> : <DocumentIcon />}\n </div>\n ) : null}\n\n <div className={`${baseClass}__titlebar-area`}>\n <div className={`${baseClass}__icon-wrap`}>\n {type === 'file' ? <DocumentIcon /> : <ColoredFolderIcon />}\n </div>\n <div className={`${baseClass}__titlebar-labels`}>\n <p className={`${baseClass}__name`} title={title}>\n <span>{title}</span>\n </p>\n {folderType && folderType.length > 0 ? (\n <AssignedCollections folderType={folderType} />\n ) : null}\n </div>\n {PopupActions ? (\n <Popup\n button={<ThreeDotsIcon />}\n disabled={selectedCount > 1 || (selectedCount === 1 && !isSelected)}\n horizontalAlign=\"right\"\n size=\"large\"\n verticalAlign=\"bottom\"\n >\n {PopupActions}\n </Popup>\n ) : null}\n </div>\n </DraggableWithClick>\n )\n}\n\nfunction AssignedCollections({ folderType }: { folderType: string[] }) {\n const { config } = useConfig()\n const { i18n } = useTranslation()\n\n const collectionsDisplayText = React.useMemo(() => {\n return folderType.reduce((acc, collection) => {\n const collectionConfig = config.collections?.find((c) => c.slug === collection)\n if (collectionConfig) {\n return [...acc, getTranslation(collectionConfig.labels.plural, i18n)]\n }\n return acc\n }, [])\n }, [folderType, config.collections, i18n])\n\n return (\n <p className={`${baseClass}__assigned-collections`}>\n {collectionsDisplayText.map((label, index) => (\n <span key={label}>\n {label}\n {index < folderType.length - 1 ? ', ' : ''}\n </span>\n ))}\n </p>\n )\n}\n\ntype ContextCardProps = {\n readonly className?: string\n readonly index: number // todo: possibly remove\n readonly item: FolderOrDocument\n readonly type: 'file' | 'folder'\n}\nexport function ContextFolderFileCard({ type, className, index, item }: ContextCardProps) {\n const { checkIfItemIsDisabled, focusedRowIndex, onItemClick, onItemKeyPress, selectedItemKeys } =\n useFolder()\n const isSelected = selectedItemKeys.has(item.itemKey)\n const isDisabled = checkIfItemIsDisabled(item)\n\n return (\n <FolderFileCard\n className={className}\n disabled={isDisabled}\n folderType={item.value.folderType || []}\n id={item.value.id}\n isFocused={focusedRowIndex === index}\n isSelected={isSelected}\n itemKey={item.itemKey}\n onClick={(event) => {\n void onItemClick({ event, index, item })\n }}\n onKeyDown={(event) => {\n void onItemKeyPress({ event, index, item })\n }}\n previewUrl={item.value.url}\n title={item.value._folderOrDocumentTitle}\n type={type}\n />\n )\n}\n", "import React from 'react'\n\nimport './index.scss'\n\nexport function ThreeDotsIcon({ className = '' }) {\n return (\n <div className={`icon icon--dots ${className}`.trim()}>\n <div />\n <div />\n <div />\n </div>\n )\n}\n", "'use client'\nimport React, { Fragment } from 'react'\n\nimport { useDocumentInfo } from '../../providers/DocumentInfo/index.js'\nimport { useDocumentTitle } from '../../providers/DocumentTitle/index.js'\nimport { IDLabel } from '../IDLabel/index.js'\nimport './index.scss'\n\nconst baseClass = 'render-title'\n\nexport type RenderTitleProps = {\n className?: string\n element?: React.ElementType\n fallback?: string\n fallbackToID?: boolean\n title?: string\n}\n\nexport const RenderTitle: React.FC<RenderTitleProps> = (props) => {\n const { className, element = 'h1', fallback, title: titleFromProps } = props\n\n const { id, isInitializing } = useDocumentInfo()\n const { title: titleFromContext } = useDocumentTitle()\n\n const title = titleFromProps || titleFromContext || fallback\n\n const idAsTitle = title === id\n\n const Tag = element\n\n // Render and invisible character to prevent layout shift when the title populates from context\n const EmptySpace = <Fragment>&nbsp;</Fragment>\n\n return (\n <Tag\n className={[className, baseClass, idAsTitle && `${baseClass}--has-id`]\n .filter(Boolean)\n .join(' ')}\n data-doc-id={id}\n title={title}\n >\n {isInitializing ? (\n EmptySpace\n ) : (\n <Fragment>\n {idAsTitle ? <IDLabel className={`${baseClass}__id`} id={id} /> : title || EmptySpace}\n </Fragment>\n )}\n </Tag>\n )\n}\n", "'use client'\nimport React from 'react'\n\nimport './index.scss'\nimport { Link } from '../../elements/Link/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useDocumentInfo } from '../../providers/DocumentInfo/index.js'\nimport { formatAdminURL } from '../../utilities/formatAdminURL.js'\nimport { sanitizeID } from '../../utilities/sanitizeID.js'\nimport { useDrawerDepth } from '../Drawer/index.js'\n\nconst baseClass = 'id-label'\n\nexport const IDLabel: React.FC<{ className?: string; id: string; prefix?: string }> = ({\n id,\n className,\n prefix = 'ID:',\n}) => {\n const {\n config: {\n routes: { admin: adminRoute },\n },\n } = useConfig()\n\n const { collectionSlug, globalSlug } = useDocumentInfo()\n const drawerDepth = useDrawerDepth()\n\n const docPath = formatAdminURL({\n adminRoute,\n path: `/${collectionSlug ? `collections/${collectionSlug}` : `globals/${globalSlug}`}/${id}`,\n })\n\n return (\n <div className={[baseClass, className].filter(Boolean).join(' ')} title={id}>\n {prefix}\n &nbsp;\n {drawerDepth > 1 ? <Link href={docPath}>{sanitizeID(id)}</Link> : sanitizeID(id)}\n </div>\n )\n}\n", "export function sanitizeID(id: number | string): number | string {\n if (id === undefined) {\n return id\n }\n\n if (typeof id === 'number') {\n return id\n }\n\n return decodeURIComponent(id)\n}\n", "'use client'\nimport type { StaticLabel } from 'payload'\n\nimport React from 'react'\n\nimport { FieldLabel } from '../../fields/FieldLabel/index.js'\nimport { ChevronIcon } from '../../icons/Chevron/index.js'\nimport { useListQuery } from '../../providers/ListQuery/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport './index.scss'\n\nexport type SortColumnProps = {\n readonly appearance?: 'condensed' | 'default'\n readonly disable?: boolean\n readonly Label: React.ReactNode\n readonly label?: StaticLabel\n readonly name: string\n}\n\nconst baseClass = 'sort-column'\n\nexport const SortColumn: React.FC<SortColumnProps> = (props) => {\n const { name, appearance, disable = false, Label, label } = props\n const { handleSortChange, query } = useListQuery()\n const { t } = useTranslation()\n\n const { sort } = query\n\n const desc = `-${name}`\n const asc = name\n\n const ascClasses = [`${baseClass}__asc`]\n if (sort === asc) {\n ascClasses.push(`${baseClass}--active`)\n }\n\n const descClasses = [`${baseClass}__desc`]\n if (sort === desc) {\n descClasses.push(`${baseClass}--active`)\n }\n\n return (\n <div\n className={[baseClass, appearance && `${baseClass}--appearance-${appearance}`]\n .filter(Boolean)\n .join(' ')}\n >\n <span className={`${baseClass}__label`}>\n {Label ?? <FieldLabel hideLocale label={label} unstyled />}\n </span>\n {!disable && (\n <div className={`${baseClass}__buttons`}>\n <button\n aria-label={t('general:sortByLabelDirection', {\n direction: t('general:ascending'),\n label,\n })}\n className={[...ascClasses, `${baseClass}__button`].filter(Boolean).join(' ')}\n onClick={() => void handleSortChange(asc)}\n type=\"button\"\n >\n <ChevronIcon direction=\"up\" />\n </button>\n <button\n aria-label={t('general:sortByLabelDirection', {\n direction: t('general:descending'),\n label,\n })}\n className={[...descClasses, `${baseClass}__button`].filter(Boolean).join(' ')}\n onClick={() => void handleSortChange(desc)}\n type=\"button\"\n >\n <ChevronIcon />\n </button>\n </div>\n )}\n </div>\n )\n}\n", "'use client'\nimport type { I18nClient } from '@payloadcms/translations'\nimport type { ClientBlock, ClientWidget, Labels } from 'payload'\n\nimport { useModal } from '@faceless-ui/modal'\nimport { getTranslation } from '@payloadcms/translations'\nimport { toWords } from 'payload/shared'\nimport React, { useEffect, useMemo, useState } from 'react'\n\nimport { DefaultBlockImage } from '../../graphics/DefaultBlockImage/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { Drawer } from '../Drawer/index.js'\nimport { ThumbnailCard } from '../ThumbnailCard/index.js'\nimport './index.scss'\nimport { ItemSearch } from './ItemSearch/index.js'\n\nexport type DrawerItem = ClientBlock | ClientWidget\n\nexport type ItemsDrawerProps = {\n readonly addRowIndex?: number\n readonly drawerSlug: string\n readonly items: (DrawerItem | string)[]\n readonly labels?: Labels\n readonly onItemClick: (item: DrawerItem, index?: number) => Promise<void> | void\n readonly searchPlaceholder?: string\n readonly title?: string\n}\n\nconst baseClass = 'items-drawer'\n\nconst getItemLabel = (item: DrawerItem, i18n: I18nClient): string => {\n // Handle ClientBlock\n if ('labels' in item && item.labels?.singular) {\n if (typeof item.labels.singular === 'string') {\n return item.labels.singular.toLowerCase()\n }\n if (typeof item.labels.singular === 'object') {\n return getTranslation(item.labels.singular, i18n).toLowerCase()\n }\n }\n\n // Handle ClientWidget with label (already resolved from function on server)\n if ('label' in item && item.label) {\n if (typeof item.label === 'string') {\n return item.label.toLowerCase()\n }\n if (typeof item.label === 'object') {\n return getTranslation(item.label, i18n).toLowerCase()\n }\n }\n\n // Fallback to slug\n if ('slug' in item) {\n return toWords(item.slug).toLowerCase()\n }\n\n return ''\n}\n\nconst getItemSlug = (item: DrawerItem): string => {\n return item.slug\n}\n\nconst getItemImageInfo = (item: DrawerItem) => {\n if ('imageURL' in item) {\n return {\n imageAltText: item.imageAltText,\n imageURL: item.imageURL,\n }\n }\n return { imageAltText: undefined, imageURL: undefined }\n}\n\nconst getItemDisplayLabel = (item: DrawerItem, i18n: I18nClient): string => {\n // Handle ClientBlock\n if ('labels' in item && item.labels?.singular) {\n return getTranslation(item.labels.singular, i18n)\n }\n\n // Handle ClientWidget with label (already resolved from function on server)\n if ('label' in item && item.label) {\n if (typeof item.label === 'string') {\n return item.label\n }\n if (typeof item.label === 'object') {\n return getTranslation(item.label, i18n)\n }\n }\n\n // Fallback to slug - convert to human-readable label\n return toWords(item.slug)\n}\n\nexport const ItemsDrawer: React.FC<ItemsDrawerProps> = (props) => {\n const { addRowIndex, drawerSlug, items, labels, onItemClick, searchPlaceholder, title } = props\n\n const [searchTerm, setSearchTerm] = useState('')\n const [filteredItems, setFilteredItems] = useState(items)\n const { closeModal, isModalOpen } = useModal()\n const { i18n, t } = useTranslation()\n const { config } = useConfig()\n\n const itemGroups = useMemo(() => {\n const groups: Record<string, (DrawerItem | string)[]> = {\n _none: [],\n }\n filteredItems.forEach((item) => {\n if (typeof item === 'object' && 'admin' in item && item.admin?.group) {\n const group = item.admin.group\n const label = typeof group === 'string' ? group : getTranslation(group, i18n)\n\n if (Object.hasOwn(groups, label)) {\n groups[label].push(item)\n } else {\n groups[label] = [item]\n }\n } else {\n groups._none.push(item)\n }\n })\n return groups\n }, [filteredItems, i18n])\n\n useEffect(() => {\n if (!isModalOpen(drawerSlug)) {\n setSearchTerm('')\n }\n }, [isModalOpen, drawerSlug])\n\n useEffect(() => {\n const searchTermToUse = searchTerm.toLowerCase()\n\n const matchingItems = items?.reduce((matchedItems, _item) => {\n let item: DrawerItem\n\n if (typeof _item === 'string') {\n // Handle string references (for blocks)\n item = config.blocksMap?.[_item] as DrawerItem\n } else {\n item = _item\n }\n\n if (item) {\n const itemLabel = getItemLabel(item, i18n)\n if (itemLabel.includes(searchTermToUse)) {\n matchedItems.push(item)\n }\n }\n return matchedItems\n }, [] as DrawerItem[])\n\n setFilteredItems(matchingItems || [])\n }, [searchTerm, items, i18n, config.blocksMap])\n\n const finalTitle =\n title ||\n (labels\n ? t('fields:addLabel', { label: getTranslation(labels.singular, i18n) })\n : t('fields:addNew'))\n\n return (\n <Drawer slug={drawerSlug} title={finalTitle}>\n <ItemSearch\n placeholder={searchPlaceholder || t('fields:searchForBlock')}\n setSearchTerm={setSearchTerm}\n />\n <div className={`${baseClass}__items-wrapper`}>\n <ul className={`${baseClass}__item-groups`}>\n {Object.entries(itemGroups).map(([groupLabel, groupItems]) =>\n !groupItems.length ? null : (\n <li\n className={[\n `${baseClass}__item-group`,\n groupLabel === '_none' && `${baseClass}__item-group-none`,\n ]\n .filter(Boolean)\n .join(' ')}\n key={groupLabel}\n >\n {groupLabel !== '_none' && (\n <h3 className={`${baseClass}__item-group-label`}>{groupLabel}</h3>\n )}\n <ul className={`${baseClass}__items`}>\n {groupItems.map((_item, index) => {\n const item =\n typeof _item === 'string' ? (config.blocksMap?.[_item] as DrawerItem) : _item\n\n if (!item) {\n return null\n }\n\n const { imageAltText, imageURL } = getItemImageInfo(item)\n const displayLabel = getItemDisplayLabel(item, i18n)\n\n return (\n <li className={`${baseClass}__item`} key={index}>\n <ThumbnailCard\n alignLabel=\"center\"\n label={displayLabel}\n onClick={() => {\n void onItemClick(item, addRowIndex)\n closeModal(drawerSlug)\n }}\n thumbnail={\n <div className={`${baseClass}__default-image`}>\n {imageURL ? (\n <img alt={imageAltText} src={imageURL} />\n ) : (\n <DefaultBlockImage />\n )}\n </div>\n }\n />\n </li>\n )\n })}\n </ul>\n </li>\n ),\n )}\n </ul>\n </div>\n </Drawer>\n )\n}\n", "'use client'\nimport React, { useId } from 'react'\n\nimport { SearchIcon } from '../../../icons/Search/index.js'\nimport './index.scss'\n\nconst baseClass = 'item-search'\n\nexport type Props = {\n readonly placeholder?: string\n readonly setSearchTerm: (term: string) => void\n}\n\nexport const ItemSearch: React.FC<Props> = ({ placeholder, setSearchTerm }) => {\n const inputId = useId()\n const labelId = `${inputId}-label`\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n setSearchTerm(e.target.value)\n }\n\n return (\n <div className={baseClass}>\n <label className=\"sr-only\" htmlFor={inputId} id={labelId}>\n {placeholder}\n </label>\n <input\n aria-labelledby={labelId}\n className={`${baseClass}__input`}\n id={inputId}\n onChange={handleChange}\n placeholder={placeholder}\n type=\"text\"\n />\n <SearchIcon />\n </div>\n )\n}\n", "'use client'\n\nimport type { SlugFieldClientProps } from 'payload'\n\nimport React, { useCallback, useState } from 'react'\n\nimport { Button } from '../../elements/Button/index.js'\nimport { useForm } from '../../forms/Form/index.js'\nimport { useField } from '../../forms/useField/index.js'\nimport { useDocumentInfo } from '../../providers/DocumentInfo/index.js'\nimport { useServerFunctions } from '../../providers/ServerFunctions/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { FieldLabel } from '../FieldLabel/index.js'\nimport { TextInput } from '../Text/index.js'\nimport './index.scss'\n\n/**\n * @experimental This component is experimental and may change or be removed in the future. Use at your own risk.\n */\nexport const SlugField: React.FC<SlugFieldClientProps> = ({\n field,\n path,\n readOnly: readOnlyFromProps,\n useAsSlug,\n}) => {\n const { label } = field\n\n const { t } = useTranslation()\n\n const { collectionSlug, globalSlug } = useDocumentInfo()\n\n const { slugify } = useServerFunctions()\n\n const { setValue, value } = useField<string>({ path: path || field.name })\n\n const { getData, getDataByPath } = useForm()\n\n const [isLocked, setIsLocked] = useState(true)\n\n /**\n * This method allows the user to generate their slug on demand, e.g. when they click the \"generate\" button.\n * It uses the `slugify` server function to gain access to their custom slugify function defined in their field config.\n */\n const handleGenerate = useCallback(\n async (e: React.MouseEvent<Element>) => {\n e.preventDefault()\n\n const valueToSlugify = getDataByPath(useAsSlug)\n\n const formattedSlug = await slugify({\n collectionSlug,\n data: getData(),\n globalSlug,\n path,\n valueToSlugify,\n })\n\n if (formattedSlug === null || formattedSlug === undefined) {\n setValue('')\n return\n }\n\n /**\n * The result may be the same as the current value, and if so, we don't want to trigger a re-render.\n */\n if (value !== formattedSlug) {\n setValue(formattedSlug)\n }\n },\n [setValue, value, useAsSlug, getData, slugify, getDataByPath, collectionSlug, globalSlug, path],\n )\n\n const toggleLock = useCallback((e: React.MouseEvent<Element>) => {\n e.preventDefault()\n setIsLocked((prev) => !prev)\n }, [])\n\n return (\n <div className=\"field-type slug-field-component\">\n <div className=\"label-wrapper\">\n <FieldLabel htmlFor={`field-${path}`} label={label} />\n {!isLocked && (\n <Button buttonStyle=\"none\" className=\"lock-button\" onClick={handleGenerate}>\n {t('authentication:generate')}\n </Button>\n )}\n <Button buttonStyle=\"none\" className=\"lock-button\" onClick={toggleLock}>\n {isLocked ? t('general:unlock') : t('general:lock')}\n </Button>\n </div>\n <TextInput\n onChange={setValue}\n path={path || field.name}\n readOnly={Boolean(readOnlyFromProps || isLocked)}\n value={value}\n />\n </div>\n )\n}\n", "import React from 'react'\n\nexport const CodeBlockIcon: React.FC = () => (\n <svg\n aria-hidden=\"true\"\n className=\"graphic code-block-icon\"\n focusable=\"false\"\n viewBox=\"0 0 20 20\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n className=\"stroke\"\n d=\"M14 12.6667L16.6667 9.99999L14 7.33332M5.99999 7.33332L3.33333 9.99999L5.99999 12.6667M11.6667 4.66666L8.33333 15.3333\"\n strokeLinecap=\"square\"\n />\n </svg>\n)\n", "import * as React from 'react'\n\nconst baseClass = 'minimize-maximize'\n\ntype Props = {\n className?: string\n isMinimized?: boolean\n}\nexport const MinimizeMaximizeIcon: React.FC<Props> = ({ className, isMinimized }) => {\n const classes = [\n baseClass,\n isMinimized ? `${baseClass}--minimized` : `${baseClass}--maximized`,\n className,\n ]\n .filter(Boolean)\n .join(' ')\n\n return (\n <svg\n className={classes}\n height=\"20\"\n stroke=\"currentColor\"\n viewBox=\"0 0 20 20\"\n width=\"20\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n {isMinimized ? (\n <path d=\"M7.33333 4H5.33333C4.97971 4 4.64057 4.14048 4.39052 4.39052C4.14048 4.64057 4 4.97971 4 5.33333V7.33333M16 7.33333V5.33333C16 4.97971 15.8595 4.64057 15.6095 4.39052C15.3594 4.14048 15.0203 4 14.6667 4H12.6667M4 12.6667V14.6667C4 15.0203 4.14048 15.3594 4.39052 15.6095C4.64057 15.8595 4.97971 16 5.33333 16H7.33333M12.6667 16H14.6667C15.0203 16 15.3594 15.8595 15.6095 15.6095C15.8595 15.3594 16 15.0203 16 14.6667V12.6667\" />\n ) : (\n <path d=\"M7.33333 4V6C7.33333 6.35362 7.19286 6.69276 6.94281 6.94281C6.69276 7.19286 6.35362 7.33333 6 7.33333H4M16 7.33333H14C13.6464 7.33333 13.3072 7.19286 13.0572 6.94281C12.8071 6.69276 12.6667 6.35362 12.6667 6V4M4 12.6667H6C6.35362 12.6667 6.69276 12.8071 6.94281 13.0572C7.19286 13.3072 7.33333 13.6464 7.33333 14V16M12.6667 16V14C12.6667 13.6464 12.8071 13.3072 13.0572 13.0572C13.3072 12.8071 13.6464 12.6667 14 12.6667H16\" />\n )}\n </svg>\n )\n}\n", "import React from 'react'\n\nimport './index.scss'\n\nconst baseClass = 'gear'\n\nexport const GearIcon: React.FC<{\n ariaLabel?: string\n className?: string\n}> = ({ ariaLabel, className }) => (\n <div aria-label={ariaLabel} className={[className, baseClass].filter(Boolean).join(' ')}>\n <svg\n className=\"icon icon--gear\"\n fill=\"none\"\n height=\"20\"\n viewBox=\"0 0 20 20\"\n width=\"20\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M9.33337 8.84671L6.66671 4.22671M9.33337 11.1534L6.66671 15.7734M10 16.6667V15.3334M10 15.3334C12.9456 15.3334 15.3334 12.9456 15.3334 10C15.3334 7.05452 12.9456 4.66671 10 4.66671M10 15.3334C7.05452 15.3334 4.66671 12.9456 4.66671 10M10 3.33337V4.66671M10 4.66671C7.05452 4.66671 4.66671 7.05452 4.66671 10M11.3334 10H16.6667M11.3334 10C11.3334 10.7364 10.7364 11.3334 10 11.3334C9.26366 11.3334 8.66671 10.7364 8.66671 10C8.66671 9.26366 9.26366 8.66671 10 8.66671C10.7364 8.66671 11.3334 9.26366 11.3334 10ZM13.3334 15.7734L12.6667 14.62M13.3334 4.22671L12.6667 5.38004M3.33337 10H4.66671M15.7734 13.3334L14.62 12.6667M15.7734 6.66671L14.62 7.33337M4.22671 13.3334L5.38004 12.6667M4.22671 6.66671L5.38004 7.33337\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </div>\n)\n", "import React from 'react'\n\nimport './index.scss'\n\nexport function MoveFolderIcon() {\n return (\n <svg\n className=\"icon icon--move-folder\"\n fill=\"none\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n width=\"24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <g filter=\"url(#filter0_d_278_1086)\">\n <path\n d=\"M5.33334 10V7.33334C5.33334 6.97971 5.47382 6.64058 5.72387 6.39053C5.97392 6.14048 6.31305 6 6.66668 6H9.26668C9.48967 5.99782 9.70965 6.0516 9.90648 6.15642C10.1033 6.26124 10.2707 6.41375 10.3933 6.6L10.9333 7.4C11.0547 7.58436 11.22 7.73568 11.4143 7.84041C11.6087 7.94513 11.8259 7.99997 12.0467 8H17.3333C17.687 8 18.0261 8.14048 18.2762 8.39053C18.5262 8.64058 18.6667 8.97971 18.6667 9.33334V16C18.6667 16.3536 18.5262 16.6928 18.2762 16.9428C18.0261 17.1929 17.687 17.3333 17.3333 17.3333H6.66668C6.31305 17.3333 5.97392 17.1929 5.72387 16.9428C5.47382 16.6928 5.33334 16.3536 5.33334 16V15.3333M5.33334 12.6667H12M12 12.6667L10 14.6667M12 12.6667L10 10.6667\"\n stroke=\"currentColor\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </g>\n <defs>\n <filter\n colorInterpolationFilters=\"sRGB\"\n filterUnits=\"userSpaceOnUse\"\n height=\"26\"\n id=\"filter0_d_278_1086\"\n width=\"26\"\n x=\"-1\"\n y=\"-1\"\n >\n <feBlend\n in=\"SourceGraphic\"\n in2=\"effect1_dropShadow_278_1086\"\n mode=\"normal\"\n result=\"shape\"\n />\n </filter>\n </defs>\n </svg>\n )\n}\n", "import React from 'react'\n\nimport './index.scss'\n\nexport const GridViewIcon = () => {\n return (\n <svg\n className=\"icon icon--grid-view\"\n fill=\"none\"\n height=\"20\"\n viewBox=\"0 0 20 20\"\n width=\"20\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M8 4H4.66667C4.29848 4 4 4.29848 4 4.66667V8C4 8.36819 4.29848 8.66667 4.66667 8.66667H8C8.36819 8.66667 8.66667 8.36819 8.66667 8V4.66667C8.66667 4.29848 8.36819 4 8 4Z\"\n stroke=\"currentColor\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M15.3333 4H12C11.6318 4 11.3333 4.29848 11.3333 4.66667V8C11.3333 8.36819 11.6318 8.66667 12 8.66667H15.3333C15.7015 8.66667 16 8.36819 16 8V4.66667C16 4.29848 15.7015 4 15.3333 4Z\"\n stroke=\"currentColor\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M15.3333 11.3333H12C11.6318 11.3333 11.3333 11.6318 11.3333 12V15.3333C11.3333 15.7015 11.6318 16 12 16H15.3333C15.7015 16 16 15.7015 16 15.3333V12C16 11.6318 15.7015 11.3333 15.3333 11.3333Z\"\n stroke=\"currentColor\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M8 11.3333H4.66667C4.29848 11.3333 4 11.6318 4 12V15.3333C4 15.7015 4.29848 16 4.66667 16H8C8.36819 16 8.66667 15.7015 8.66667 15.3333V12C8.66667 11.6318 8.36819 11.3333 8 11.3333Z\"\n stroke=\"currentColor\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n )\n}\n", "import React from 'react'\n\nimport './index.scss'\n\nexport const ListViewIcon = () => {\n return (\n <svg\n className=\"icon icon--list-view\"\n fill=\"none\"\n height=\"20\"\n viewBox=\"0 0 20 20\"\n width=\"20\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M4 10H16M4 14H16M4 6H16\"\n stroke=\"currentColor\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n )\n}\n", "'use client'\nimport React from 'react'\n\nexport const Error: React.FC = () => {\n return (\n <svg fill=\"none\" height=\"26\" viewBox=\"0 0 26 26\" width=\"26\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M13 21C17.4183 21 21 17.4183 21 13C21 8.58172 17.4183 5 13 5C8.58172 5 5 8.58172 5 13C5 17.4183 8.58172 21 13 21Z\"\n fill=\"var(--theme-error-500)\"\n />\n <path\n d=\"M15.4001 10.5996L10.6001 15.3996M10.6001 10.5996L15.4001 15.3996\"\n stroke=\"var(--theme-error-50)\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n )\n}\n", "'use client'\nimport React from 'react'\n\nexport const Info: React.FC = () => {\n return (\n <svg fill=\"none\" height=\"26\" viewBox=\"0 0 26 26\" width=\"26\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M13 21C17.4183 21 21 17.4183 21 13C21 8.58172 17.4183 5 13 5C8.58172 5 5 8.58172 5 13C5 17.4183 8.58172 21 13 21Z\"\n fill=\"var(--theme-elevation-500)\"\n />\n <path\n d=\"M13 16.1998V12.9998M13 9.7998H13.0077\"\n stroke=\"var(--theme-elevation-50)\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n )\n}\n", "'use client'\nimport React from 'react'\n\nexport const Success: React.FC = () => {\n return (\n <svg fill=\"none\" height=\"26\" viewBox=\"0 0 26 26\" width=\"26\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M13 21C17.4183 21 21 17.4183 21 13C21 8.58172 17.4183 5 13 5C8.58172 5 5 8.58172 5 13C5 17.4183 8.58172 21 13 21Z\"\n fill=\"var(--theme-success-500)\"\n />\n <path\n d=\"M10.6001 13.0004L12.2001 14.6004L15.4001 11.4004\"\n stroke=\"var(--theme-success-50)\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n )\n}\n", "'use client'\nimport React from 'react'\n\nexport const Warning: React.FC = () => {\n return (\n <svg fill=\"none\" height=\"26\" viewBox=\"0 0 26 26\" width=\"26\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M13 21C17.4183 21 21 17.4183 21 13C21 8.58172 17.4183 5 13 5C8.58172 5 5 8.58172 5 13C5 17.4183 8.58172 21 13 21Z\"\n fill=\"var(--theme-warning-500)\"\n />\n <path\n d=\"M13 10V13.2M13 16.4H13.008\"\n stroke=\"var(--theme-warning-50)\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n )\n}\n", "'use client'\nimport React from 'react'\n\ntype ModifyClientFunctionContextType = {\n addClientFunction: (args: ModifyFunctionArgs) => void\n removeClientFunction: (args: ModifyFunctionArgs) => void\n}\ntype ClientFunctionsContextType = Record<string, any>\n\nconst ModifyClientFunctionContext = React.createContext<ModifyClientFunctionContextType>({\n addClientFunction: () => null,\n removeClientFunction: () => null,\n})\nconst ClientFunctionsContext = React.createContext<ClientFunctionsContextType>({})\n\ntype ModifyFunctionArgs = { func: any; key: string }\n\nexport const ClientFunctionProvider: React.FC<{ children: React.ReactNode }> = ({ children }) => {\n const [clientFunctions, setClientFunctions] = React.useState({})\n\n const addClientFunction = React.useCallback((args: ModifyFunctionArgs) => {\n setClientFunctions((state) => {\n const newState = { ...state }\n newState[args.key] = args.func\n return newState\n })\n }, [])\n\n const removeClientFunction = React.useCallback((args: ModifyFunctionArgs) => {\n setClientFunctions((state) => {\n const newState = { ...state }\n delete newState[args.key]\n return newState\n })\n }, [])\n\n return (\n <ModifyClientFunctionContext\n value={{\n addClientFunction,\n removeClientFunction,\n }}\n >\n <ClientFunctionsContext value={clientFunctions}>{children}</ClientFunctionsContext>\n </ModifyClientFunctionContext>\n )\n}\n\nexport const useAddClientFunction = (key: string, func: any) => {\n const { addClientFunction, removeClientFunction } = React.use(ModifyClientFunctionContext)\n\n React.useEffect(() => {\n addClientFunction({\n func,\n key,\n })\n\n return () => {\n removeClientFunction({\n func,\n key,\n })\n }\n }, [func, key, addClientFunction, removeClientFunction])\n}\n\nexport const useClientFunctions = () => {\n return React.use(ClientFunctionsContext)\n}\n", "'use client'\nimport type { CollectionPreferences, LivePreviewConfig, LivePreviewURLType } from 'payload'\n\nimport { DndContext } from '@dnd-kit/core'\nimport React, { useCallback, useEffect, useId, useMemo, useRef, useState } from 'react'\n\nimport type { LivePreviewContextType } from './context.js'\n\nimport { usePopupWindow } from '../../hooks/usePopupWindow.js'\nimport { useDocumentInfo } from '../../providers/DocumentInfo/index.js'\nimport { usePreferences } from '../../providers/Preferences/index.js'\nimport { formatAbsoluteURL } from '../../utilities/formatAbsoluteURL.js'\nimport { customCollisionDetection } from './collisionDetection.js'\nimport { LivePreviewContext } from './context.js'\nimport { sizeReducer } from './sizeReducer.js'\n\nexport type LivePreviewProviderProps = {\n appIsReady?: boolean\n breakpoints?: LivePreviewConfig['breakpoints']\n children: React.ReactNode\n deviceSize?: {\n height: number\n width: number\n }\n isLivePreviewEnabled?: boolean\n isLivePreviewing: boolean\n /**\n * This specifically relates to `admin.preview` function in the config instead of live preview.\n */\n isPreviewEnabled?: boolean\n /**\n * This specifically relates to `admin.preview` function in the config instead of live preview.\n */\n previewURL?: string\n} & Pick<LivePreviewContextType, 'typeofLivePreviewURL' | 'url'>\n\nexport const LivePreviewProvider: React.FC<LivePreviewProviderProps> = ({\n breakpoints: incomingBreakpoints,\n children,\n isLivePreviewEnabled,\n isLivePreviewing: incomingIsLivePreviewing,\n isPreviewEnabled,\n previewURL: previewURLFromProps,\n typeofLivePreviewURL,\n url: urlFromProps,\n}) => {\n const [previewWindowType, setPreviewWindowType] = useState<'iframe' | 'popup'>('iframe')\n const [isLivePreviewing, setIsLivePreviewing] = useState(incomingIsLivePreviewing)\n\n const breakpoints: LivePreviewConfig['breakpoints'] = useMemo(\n () => [\n ...(incomingBreakpoints || []),\n {\n name: 'responsive',\n height: '100%',\n label: 'Responsive',\n width: '100%',\n },\n ],\n [incomingBreakpoints],\n )\n\n const [url, setURL] = useState<string>('')\n const [previewURL, setPreviewURL] = useState<string>(previewURLFromProps)\n\n const { isPopupOpen, openPopupWindow, popupRef } = usePopupWindow({\n eventType: 'payload-live-preview',\n url,\n })\n\n const [appIsReady, setAppIsReady] = useState(false)\n const [listeningForMessages, setListeningForMessages] = useState(false)\n\n const { collectionSlug, globalSlug } = useDocumentInfo()\n\n const isFirstRender = useRef(true)\n\n const { setPreference } = usePreferences()\n\n const iframeRef = React.useRef<HTMLIFrameElement>(null)\n\n const [loadedURL, setLoadedURL] = useState<string>()\n\n const [zoom, setZoom] = useState(1)\n\n const [position, setPosition] = useState({ x: 0, y: 0 })\n\n const [size, setSize] = React.useReducer(sizeReducer, { height: 0, width: 0 })\n\n const [measuredDeviceSize, setMeasuredDeviceSize] = useState({\n height: 0,\n width: 0,\n })\n\n const [breakpoint, setBreakpoint] =\n React.useState<LivePreviewConfig['breakpoints'][0]['name']>('responsive')\n\n /**\n * A \"middleware\" callback fn that does some additional work before `setURL`.\n * This is what we provide through context, bc it:\n * - ensures the URL is absolute\n * - resets `appIsReady` to `false` while the new URL is loading\n */\n const setLivePreviewURL = useCallback<LivePreviewContextType['setURL']>(\n (_incomingURL) => {\n let incomingURL: LivePreviewURLType\n\n if (typeof _incomingURL === 'string') {\n incomingURL = formatAbsoluteURL(_incomingURL)\n }\n\n if (!incomingURL) {\n setIsLivePreviewing(false)\n }\n\n if (incomingURL !== url) {\n setAppIsReady(false)\n setURL(incomingURL)\n }\n },\n [url],\n )\n\n /**\n * `url` needs to be relative to the window, which cannot be done on initial render.\n */\n useEffect(() => {\n if (typeof urlFromProps === 'string') {\n setURL(formatAbsoluteURL(urlFromProps))\n }\n }, [urlFromProps])\n\n // The toolbar needs to freely drag and drop around the page\n const handleDragEnd = (ev) => {\n // only update position if the toolbar is completely within the preview area\n // otherwise reset it back to the previous position\n // TODO: reset to the nearest edge of the preview area\n if (ev.over && ev.over.id === 'live-preview-area') {\n const newPos = {\n x: position.x + ev.delta.x,\n y: position.y + ev.delta.y,\n }\n\n setPosition(newPos)\n } else {\n // reset\n }\n }\n\n const setWidth = useCallback(\n (width) => {\n setSize({ type: 'width', value: width })\n },\n [setSize],\n )\n\n const setHeight = useCallback(\n (height) => {\n setSize({ type: 'height', value: height })\n },\n [setSize],\n )\n\n // explicitly set new width and height when as new breakpoints are selected\n // exclude `custom` breakpoint as it is handled by the `setWidth` and `setHeight` directly\n useEffect(() => {\n const foundBreakpoint = breakpoints?.find((bp) => bp.name === breakpoint)\n\n if (\n foundBreakpoint &&\n breakpoint !== 'responsive' &&\n breakpoint !== 'custom' &&\n typeof foundBreakpoint?.width === 'number' &&\n typeof foundBreakpoint?.height === 'number'\n ) {\n setSize({\n type: 'reset',\n value: {\n height: foundBreakpoint.height,\n width: foundBreakpoint.width,\n },\n })\n }\n }, [breakpoint, breakpoints])\n\n /**\n * Receive the `ready` message from the popup window\n * This indicates that the app is ready to receive `window.postMessage` events\n * This is also the only cross-origin way of detecting when a popup window has loaded\n * Unlike iframe elements which have an `onLoad` handler, there is no way to access `window.open` on popups\n */\n useEffect(() => {\n const handleMessage = (event: MessageEvent) => {\n if (\n url?.startsWith(event.origin) &&\n event.data &&\n typeof event.data === 'object' &&\n event.data.type === 'payload-live-preview'\n ) {\n if (event.data.ready) {\n setAppIsReady(true)\n }\n }\n }\n\n window.addEventListener('message', handleMessage)\n\n setListeningForMessages(true)\n\n return () => {\n window.removeEventListener('message', handleMessage)\n }\n }, [url, listeningForMessages])\n\n const handleWindowChange = useCallback(\n (type: 'iframe' | 'popup') => {\n setAppIsReady(false)\n setPreviewWindowType(type)\n if (type === 'popup') {\n openPopupWindow()\n }\n },\n [openPopupWindow],\n )\n\n // when the user closes the popup window, switch back to the iframe\n // the `usePopupWindow` reports the `isPopupOpen` state for us to use here\n useEffect(() => {\n const newPreviewWindowType = isPopupOpen ? 'popup' : 'iframe'\n\n if (newPreviewWindowType !== previewWindowType) {\n handleWindowChange('iframe')\n }\n }, [previewWindowType, isPopupOpen, handleWindowChange])\n\n useEffect(() => {\n if (isFirstRender.current) {\n isFirstRender.current = false\n return\n }\n\n void setPreference<CollectionPreferences>(\n collectionSlug ? `collection-${collectionSlug}` : `global-${globalSlug}`,\n {\n editViewType: isLivePreviewing ? 'live-preview' : 'default',\n },\n true,\n )\n }, [isLivePreviewing, setPreference, collectionSlug, globalSlug])\n\n const dndContextID = useId()\n\n return (\n <LivePreviewContext\n value={{\n appIsReady,\n breakpoint,\n breakpoints,\n iframeRef,\n isLivePreviewEnabled,\n isLivePreviewing,\n isPopupOpen,\n isPreviewEnabled,\n listeningForMessages,\n loadedURL,\n measuredDeviceSize,\n openPopupWindow,\n popupRef,\n previewURL,\n previewWindowType,\n setAppIsReady,\n setBreakpoint,\n setHeight,\n setIsLivePreviewing,\n setLoadedURL,\n setMeasuredDeviceSize,\n setPreviewURL,\n setPreviewWindowType: handleWindowChange,\n setSize,\n setToolbarPosition: setPosition,\n setURL: setLivePreviewURL,\n setWidth,\n setZoom,\n size,\n toolbarPosition: position,\n typeofLivePreviewURL,\n url,\n zoom,\n }}\n >\n <DndContext\n collisionDetection={customCollisionDetection}\n // Provide stable ID to fix hydration issues: https://github.com/clauderic/dnd-kit/issues/926\n id={dndContextID}\n onDragEnd={handleDragEnd}\n >\n {children}\n </DndContext>\n </LivePreviewContext>\n )\n}\n", "'use client'\nimport type React from 'react'\n\nimport { useCallback, useEffect, useRef, useState } from 'react'\n\nimport { useConfig } from '../providers/Config/index.js'\n\nexport interface PopupMessage {\n searchParams: {\n [key: string]: string | undefined\n code: string\n installation_id: string\n state: string\n }\n type: string\n}\n\nexport const usePopupWindow = (props: {\n eventType?: string\n\n onMessage?: (searchParams: PopupMessage['searchParams']) => Promise<void>\n url: string\n}): {\n isPopupOpen: boolean\n openPopupWindow: () => void\n popupRef?: React.RefObject<null | Window>\n} => {\n const { eventType, onMessage, url } = props\n const isReceivingMessage = useRef(false)\n const [isOpen, setIsOpen] = useState(false)\n\n const {\n config: { serverURL },\n } = useConfig()\n\n const popupRef = useRef<null | Window>(null)\n\n // Optionally broadcast messages back out to the parent component\n useEffect(() => {\n const receiveMessage = async (event: MessageEvent): Promise<void> => {\n if (\n event.origin !== window.location.origin ||\n event.origin !== url ||\n event.origin !== serverURL\n ) {\n // console.warn(`Message received by ${event.origin}; IGNORED.`) // eslint-disable-line no-console\n return\n }\n\n if (\n typeof onMessage === 'function' &&\n event.data?.type === eventType &&\n !isReceivingMessage.current\n ) {\n isReceivingMessage.current = true\n await onMessage(event.data?.searchParams)\n isReceivingMessage.current = false\n }\n }\n\n if (isOpen && popupRef.current) {\n window.addEventListener('message', receiveMessage, false)\n }\n\n return () => {\n window.removeEventListener('message', receiveMessage)\n }\n }, [onMessage, eventType, url, serverURL, isOpen])\n\n // Customize the size, position, and style of the popup window\n const openPopupWindow = useCallback(\n (e?: MouseEvent) => {\n if (e) {\n e.preventDefault()\n }\n\n const features = {\n height: 700,\n left: 'auto',\n menubar: 'no',\n popup: 'yes',\n toolbar: 'no',\n top: 'auto',\n width: 800,\n }\n\n const popupOptions = Object.entries(features)\n .reduce((str, [key, value]) => {\n let strCopy = str\n if (value === 'auto') {\n if (key === 'top') {\n const v = Math.round(window.innerHeight / 2 - features.height / 2)\n strCopy += `top=${v},`\n } else if (key === 'left') {\n const v = Math.round(window.innerWidth / 2 - features.width / 2)\n strCopy += `left=${v},`\n }\n return strCopy\n }\n\n strCopy += `${key}=${value},`\n return strCopy\n }, '')\n .slice(0, -1) // remove last ',' (comma)\n\n const newWindow = window.open(url, '_blank', popupOptions)\n\n popupRef.current = newWindow\n\n setIsOpen(true)\n },\n [url],\n )\n\n // this is the most stable and widely supported way to check if a popup window is no longer open\n // we poll its ref every x ms and use the popup window's `closed` property\n useEffect(() => {\n let timer: NodeJS.Timeout\n\n if (isOpen) {\n timer = setInterval(function () {\n if (popupRef.current.closed) {\n clearInterval(timer)\n setIsOpen(false)\n }\n }, 1000)\n } else {\n clearInterval(timer)\n }\n\n return () => {\n if (timer) {\n clearInterval(timer)\n }\n }\n }, [isOpen, popupRef])\n\n return {\n isPopupOpen: isOpen,\n openPopupWindow,\n popupRef,\n }\n}\n", "const getAbsoluteUrl = (url) => {\n try {\n return new URL(url, window.location.origin).href\n } catch {\n return url\n }\n}\n\n/**\n * Ensures the provided URL is absolute. If not, it converts it to an absolute URL based\n * on the current window location.\n * Note: This MUST be called within the client environment as it relies on the `window` object\n * to determine the absolute URL.\n */\nexport const formatAbsoluteURL = (incomingURL: string) =>\n incomingURL?.startsWith('http://') || incomingURL?.startsWith('https://')\n ? incomingURL\n : getAbsoluteUrl(incomingURL)\n", "import type { CollisionDetection } from '@dnd-kit/core'\n\nimport { rectIntersection } from '@dnd-kit/core'\n\n// If the toolbar exits the preview area, we need to reset its position\n// This will prevent the toolbar from getting stuck outside the preview area\nexport const customCollisionDetection: CollisionDetection = ({\n collisionRect,\n droppableContainers,\n ...args\n}) => {\n const droppableContainer = droppableContainers.find(({ id }) => id === 'live-preview-area')\n\n const rectIntersectionCollisions = rectIntersection({\n ...args,\n collisionRect,\n droppableContainers: [droppableContainer],\n })\n\n // Collision detection algorithms return an array of collisions\n if (rectIntersectionCollisions.length === 0) {\n // The preview area is not intersecting, return early\n return rectIntersectionCollisions\n }\n\n // Compute whether the draggable element is completely contained within the preview area\n const previewAreaRect = droppableContainer?.rect?.current\n\n const isContained =\n collisionRect.top >= previewAreaRect.top &&\n collisionRect.left >= previewAreaRect.left &&\n collisionRect.bottom <= previewAreaRect.bottom &&\n collisionRect.right <= previewAreaRect.right\n\n if (isContained) {\n return rectIntersectionCollisions\n }\n}\n", "// export const sizeReducer: (state, action) => {\n// switch (action.type) {\n// case 'width':\n// return { ...state, width: action.value }\n// case 'height':\n// return { ...state, height: action.value }\n// default:\n// return { ...state, ...(action?.value || {}) }\n// }\n// },\n\ntype SizeReducerState = {\n height: number\n width: number\n}\n\nexport type SizeReducerAction =\n | {\n type: 'height' | 'width'\n value: number\n }\n | {\n type: 'reset'\n value: {\n height: number\n width: number\n }\n }\n\nexport const sizeReducer = (state: SizeReducerState, action: SizeReducerAction) => {\n switch (action.type) {\n case 'height':\n return { ...state, height: action.value }\n case 'width':\n return { ...state, width: action.value }\n default:\n return { ...state, ...(action?.value || {}) }\n }\n}\n", "'use client'\nimport React, { useEffect, useRef } from 'react'\n\nimport { useRouteTransition } from '../index.js'\nimport './index.scss'\n\nconst transitionDuration = 200\nconst baseClass = 'progress-bar'\nconst initialDelay = 150\n\n/**\n * Renders a progress bar that shows the progress of a route transition.\n * Place this at the root of your application, inside of the `RouteTransitionProvider`.\n * When a transition is triggered, the progress bar will show the progress of that transition and exit when the transition is complete.\n * @returns A progress bar that shows the progress of a route transition\n * @example\n * import { RouteTransitionProvider, ProgressBar, Link } from '@payloadcms/ui'\n * const App = () => (\n * <RouteTransitionProvider>\n * <ProgressBar />\n * <Link href=\"/somewhere\">Go Somewhere</Link>\n * </RouteTransitionProvider>\n */\nexport const ProgressBar = () => {\n const { isTransitioning, transitionProgress } = useRouteTransition()\n const [progressToShow, setProgressToShow] = React.useState<null | number>(null)\n const shouldDelayProgress = useRef(true)\n\n useEffect(() => {\n let clearTimerID: NodeJS.Timeout\n let delayTimerID: NodeJS.Timeout\n\n if (isTransitioning) {\n if (shouldDelayProgress.current) {\n delayTimerID = setTimeout(() => {\n setProgressToShow(transitionProgress)\n shouldDelayProgress.current = false\n }, initialDelay)\n } else {\n setProgressToShow(transitionProgress)\n }\n } else {\n shouldDelayProgress.current = true\n\n // Fast forward to 100% when the transition is complete\n // Then fade out the progress bar directly after\n setProgressToShow(1)\n\n // Wait for CSS transition to finish before hiding the progress bar\n // This includes both the fast-forward to 100% and the subsequent fade-out\n clearTimerID = setTimeout(() => {\n setProgressToShow(null)\n }, transitionDuration * 2)\n }\n\n return () => {\n clearTimeout(clearTimerID)\n clearTimeout(delayTimerID)\n }\n }, [isTransitioning, transitionProgress])\n\n if (typeof progressToShow === 'number') {\n return (\n <div\n className={[baseClass, progressToShow === 1 && `${baseClass}--fade-out`]\n .filter(Boolean)\n .join(' ')}\n style={{\n // @ts-expect-error - TS doesn't like custom CSS properties\n '--transition-duration': `${transitionDuration}ms`,\n }}\n >\n <div\n className={`${baseClass}__progress`}\n style={{\n width: `${(progressToShow || 0) * 100}%`,\n }}\n />\n </div>\n )\n }\n\n return null\n}\n", "'use client'\nimport type { SanitizedCollectionConfig, SanitizedGlobalConfig, VisibleEntities } from 'payload'\n\nimport React, { createContext, use, useCallback } from 'react'\n\nexport type VisibleEntitiesContextType = {\n isEntityVisible: ({\n collectionSlug,\n globalSlug,\n }: {\n collectionSlug?: SanitizedCollectionConfig['slug']\n globalSlug?: SanitizedGlobalConfig['slug']\n }) => boolean\n visibleEntities: VisibleEntities\n}\n\nexport const EntityVisibilityContext = createContext({} as VisibleEntitiesContextType)\n\nexport const EntityVisibilityProvider: React.FC<{\n children: React.ReactNode\n visibleEntities?: VisibleEntities\n}> = ({ children, visibleEntities }) => {\n const isEntityVisible = useCallback(\n ({\n collectionSlug,\n globalSlug,\n }: {\n collectionSlug: SanitizedCollectionConfig['slug']\n globalSlug: SanitizedGlobalConfig['slug']\n }) => {\n if (collectionSlug) {\n return visibleEntities.collections.includes(collectionSlug)\n }\n\n if (globalSlug) {\n return visibleEntities.globals.includes(globalSlug)\n }\n\n return false\n },\n [visibleEntities],\n )\n\n return (\n <EntityVisibilityContext value={{ isEntityVisible, visibleEntities }}>\n {children}\n </EntityVisibilityContext>\n )\n}\n\nexport const useEntityVisibility = (): VisibleEntitiesContextType => use(EntityVisibilityContext)\n", "'use client'\n\nimport { useParams as useNextParams } from 'next/navigation.js'\nimport React, { createContext, use } from 'react'\n\nexport type Params = ReturnType<typeof useNextParams>\ninterface IParamsContext extends Params {}\n\nconst Context = createContext<IParamsContext>({} as IParamsContext)\n\n/**\n * @deprecated\n * The ParamsProvider is deprecated and will be removed in the next major release. Instead, use the `useParams` hook from `next/navigation` directly. See https://github.com/payloadcms/payload/pull/9581.\n * @example\n * ```tsx\n * import { useParams } from 'next/navigation'\n * ```\n */\nexport const ParamsProvider: React.FC<{ children?: React.ReactNode }> = ({ children }) => {\n const params = useNextParams()\n return <Context value={params}>{children}</Context>\n}\n\n/**\n * @deprecated\n * The `useParams` hook is deprecated and will be removed in the next major release. Instead, use the `useParams` hook from `next/navigation` directly. See https://github.com/payloadcms/payload/pull/9581.\n * @example\n * ```tsx\n * import { useParams } from 'next/navigation'\n * ```\n */\nexport const useParams = (): IParamsContext => use(Context)\n", "'use client'\nimport type { I18nClient, I18nOptions, Language } from '@payloadcms/translations'\nimport type {\n ClientConfig,\n LanguageOptions,\n Locale,\n SanitizedPermissions,\n ServerFunctionClient,\n TypedUser,\n} from 'payload'\n\nimport { DndContext, pointerWithin } from '@dnd-kit/core'\nimport { ModalContainer, ModalProvider } from '@faceless-ui/modal'\nimport { ScrollInfoProvider } from '@faceless-ui/scroll-info'\nimport React from 'react'\n\nimport type { Theme } from '../Theme/index.js'\n\nimport { CloseModalOnRouteChange } from '../../elements/CloseModalOnRouteChange/index.js'\nimport { LoadingOverlayProvider } from '../../elements/LoadingOverlay/index.js'\nimport { NavProvider } from '../../elements/Nav/context.js'\nimport { StayLoggedInModal } from '../../elements/StayLoggedIn/index.js'\nimport { StepNavProvider } from '../../elements/StepNav/index.js'\nimport { ClickOutsideProvider } from '../../providers/ClickOutside/index.js'\nimport { WindowInfoProvider } from '../../providers/WindowInfo/index.js'\nimport { AuthProvider } from '../Auth/index.js'\nimport { ClientFunctionProvider } from '../ClientFunction/index.js'\nimport { ConfigProvider } from '../Config/index.js'\nimport { DocumentEventsProvider } from '../DocumentEvents/index.js'\nimport { LocaleProvider } from '../Locale/index.js'\nimport { ParamsProvider } from '../Params/index.js'\nimport { PreferencesProvider } from '../Preferences/index.js'\nimport { RouteCache } from '../RouteCache/index.js'\nimport { RouteTransitionProvider } from '../RouteTransition/index.js'\nimport { SearchParamsProvider } from '../SearchParams/index.js'\nimport { ServerFunctionsProvider } from '../ServerFunctions/index.js'\nimport { ThemeProvider } from '../Theme/index.js'\nimport { ToastContainer } from '../ToastContainer/index.js'\nimport { TranslationProvider } from '../Translation/index.js'\nimport { UploadHandlersProvider } from '../UploadHandlers/index.js'\n\ntype Props = {\n readonly children: React.ReactNode\n readonly config: ClientConfig\n readonly dateFNSKey: Language['dateFNSKey']\n readonly fallbackLang: I18nOptions['fallbackLanguage']\n readonly isNavOpen?: boolean\n readonly languageCode: string\n readonly languageOptions: LanguageOptions\n readonly locale?: Locale['code']\n readonly permissions: SanitizedPermissions\n readonly serverFunction: ServerFunctionClient\n readonly switchLanguageServerAction?: (lang: string) => Promise<void>\n readonly theme: Theme\n readonly translations: I18nClient['translations']\n readonly user: null | TypedUser\n}\n\nexport const RootProvider: React.FC<Props> = ({\n children,\n config,\n dateFNSKey,\n fallbackLang,\n isNavOpen,\n languageCode,\n languageOptions,\n locale,\n permissions,\n serverFunction,\n switchLanguageServerAction,\n theme,\n translations,\n user,\n}) => {\n const dndContextID = React.useId()\n\n return (\n <ClickOutsideProvider>\n <ServerFunctionsProvider serverFunction={serverFunction}>\n <RouteTransitionProvider>\n <RouteCache\n cachingEnabled={process.env.NEXT_PUBLIC_ENABLE_ROUTER_CACHE_REFRESH === 'true'}\n >\n <ConfigProvider config={config}>\n <ClientFunctionProvider>\n <TranslationProvider\n dateFNSKey={dateFNSKey}\n fallbackLang={fallbackLang}\n language={languageCode}\n languageOptions={languageOptions}\n switchLanguageServerAction={switchLanguageServerAction}\n translations={translations}\n >\n <WindowInfoProvider\n breakpoints={{\n l: '(max-width: 1440px)',\n m: '(max-width: 1024px)',\n s: '(max-width: 768px)',\n xs: '(max-width: 400px)',\n }}\n >\n <ScrollInfoProvider>\n <SearchParamsProvider>\n <ModalProvider classPrefix=\"payload\" transTime={0} zIndex=\"var(--z-modal)\">\n <CloseModalOnRouteChange />\n <AuthProvider permissions={permissions} user={user}>\n <PreferencesProvider>\n <ThemeProvider theme={theme}>\n <ParamsProvider>\n <LocaleProvider locale={locale}>\n <StepNavProvider>\n <LoadingOverlayProvider>\n <DocumentEventsProvider>\n <NavProvider initialIsOpen={isNavOpen}>\n <UploadHandlersProvider>\n <DndContext\n collisionDetection={pointerWithin}\n // Provide stable ID to fix hydration issues: https://github.com/clauderic/dnd-kit/issues/926\n id={dndContextID}\n >\n {children}\n </DndContext>\n </UploadHandlersProvider>\n </NavProvider>\n </DocumentEventsProvider>\n </LoadingOverlayProvider>\n </StepNavProvider>\n </LocaleProvider>\n </ParamsProvider>\n </ThemeProvider>\n </PreferencesProvider>\n <ModalContainer />\n <StayLoggedInModal />\n </AuthProvider>\n </ModalProvider>\n </SearchParamsProvider>\n </ScrollInfoProvider>\n </WindowInfoProvider>\n </TranslationProvider>\n </ClientFunctionProvider>\n </ConfigProvider>\n </RouteCache>\n </RouteTransitionProvider>\n </ServerFunctionsProvider>\n <ToastContainer config={config} />\n </ClickOutsideProvider>\n )\n}\n", null, null, null, null, null, "'use client'\n\nimport { useModal } from '@faceless-ui/modal'\nimport { usePathname } from 'next/navigation.js'\nimport { useEffect, useRef } from 'react'\n\nimport { useEffectEvent } from '../../hooks/useEffectEvent.js'\n\nexport function CloseModalOnRouteChange() {\n const { closeAllModals } = useModal()\n const pathname = usePathname()\n\n const closeAllModalsEffectEvent = useEffectEvent(() => {\n closeAllModals()\n })\n\n const initialRenderRef = useRef(true)\n\n useEffect(() => {\n if (initialRenderRef.current) {\n initialRenderRef.current = false\n return\n }\n\n closeAllModalsEffectEvent()\n }, [pathname])\n\n return null\n}\n", "'use client'\nimport * as facelessUIImport from '@faceless-ui/window-info'\nconst { WindowInfoProvider } =\n facelessUIImport && 'WindowInfoProvider' in facelessUIImport\n ? facelessUIImport\n : { WindowInfoProvider: undefined }\nconst { useWindowInfo } =\n facelessUIImport && 'useWindowInfo' in facelessUIImport\n ? facelessUIImport\n : { useWindowInfo: undefined }\nexport { useWindowInfo, WindowInfoProvider }\n", "'use client'\n\nimport { useSearchParams as useNextSearchParams } from 'next/navigation.js'\nimport * as qs from 'qs-esm'\nimport React, { createContext, use } from 'react'\n\nexport type SearchParamsContext = {\n searchParams: qs.ParsedQs\n stringifyParams: ({ params, replace }: { params: qs.ParsedQs; replace?: boolean }) => string\n}\n\nconst initialContext: SearchParamsContext = {\n searchParams: {},\n stringifyParams: () => '',\n}\n\nconst Context = createContext(initialContext)\n\n/**\n * @deprecated\n * The SearchParamsProvider is deprecated and will be removed in the next major release. Instead, use the `useSearchParams` hook from `next/navigation` directly. See https://github.com/payloadcms/payload/pull/9581.\n * @example\n * ```tsx\n * import { useSearchParams } from 'next/navigation'\n * ```\n */\nexport const SearchParamsProvider: React.FC<{ children?: React.ReactNode }> = ({ children }) => {\n const nextSearchParams = useNextSearchParams()\n const searchString = nextSearchParams.toString()\n\n const searchParams = React.useMemo(\n () =>\n qs.parse(searchString, {\n depth: 10,\n ignoreQueryPrefix: true,\n }),\n [searchString],\n )\n\n const stringifyParams = React.useCallback(\n ({ params, replace = false }: { params: qs.ParsedQs; replace?: boolean }) => {\n return qs.stringify(\n {\n ...(replace ? {} : searchParams),\n ...params,\n },\n { addQueryPrefix: true },\n )\n },\n [searchParams],\n )\n\n return <Context value={{ searchParams, stringifyParams }}>{children}</Context>\n}\n\n/**\n * @deprecated\n * The `useSearchParams` hook is deprecated and will be removed in the next major release. Instead, use the `useSearchParams` hook from `next/navigation` directly. See https://github.com/payloadcms/payload/pull/9581.\n * @example\n * ```tsx\n * import { useSearchParams } from 'next/navigation'\n * ```\n * If you need to parse the `where` query, you can do so with the `parseSearchParams` utility.\n * ```tsx\n * import { parseSearchParams } from '@payloadcms/ui'\n * const parsedSearchParams = parseSearchParams(searchParams)\n * ```\n */\nexport const useSearchParams = (): SearchParamsContext => use(Context)\n", "'use client'\nimport type { ClientConfig } from 'payload'\n\nimport React from 'react'\nimport { Toaster } from 'sonner'\n\nimport { Error } from './icons/Error.js'\nimport { Info } from './icons/Info.js'\nimport { Success } from './icons/Success.js'\nimport { Warning } from './icons/Warning.js'\n\nexport const ToastContainer: React.FC<{\n config: ClientConfig\n}> = ({ config }) => {\n const { admin: { toast: { duration, expand, limit, position } = {} } = {} } = config\n\n return (\n <Toaster\n className=\"payload-toast-container\"\n closeButton\n // @ts-expect-error\n dir=\"undefined\"\n duration={duration ?? 4000}\n expand={expand ?? false}\n gap={8}\n icons={{\n error: <Error />,\n info: <Info />,\n success: <Success />,\n warning: <Warning />,\n }}\n offset=\"calc(var(--gutter-h) / 2)\"\n position={position ?? 'bottom-right'}\n toastOptions={{\n classNames: {\n closeButton: 'payload-toast-close-button',\n content: 'toast-content',\n error: 'toast-error',\n icon: 'toast-icon',\n info: 'toast-info',\n success: 'toast-success',\n title: 'toast-title',\n toast: 'payload-toast-item',\n warning: 'toast-warning',\n },\n unstyled: true,\n }}\n visibleToasts={limit ?? 5}\n />\n )\n}\n", "'use client'\n\nimport type { TFunction } from '@payloadcms/translations'\nimport type { LoginWithUsernameOptions, SanitizedFieldPermissions } from 'payload'\n\nimport { email, getFieldPermissions, username } from 'payload/shared'\nimport React from 'react'\n\nimport { EmailField } from '../../fields/Email/index.js'\nimport { TextField } from '../../fields/Text/index.js'\nimport './index.scss'\nimport { FieldPathContext } from '../../forms/RenderFields/context.js'\n\nconst baseClass = 'login-fields'\ntype RenderEmailAndUsernameFieldsProps = {\n className?: string\n loginWithUsername?: false | LoginWithUsernameOptions\n operation?: 'create' | 'update'\n permissions?:\n | {\n [fieldName: string]: SanitizedFieldPermissions\n }\n | true\n readOnly: boolean\n t: TFunction\n}\n\nexport function EmailAndUsernameFields(props: RenderEmailAndUsernameFieldsProps) {\n const {\n className,\n loginWithUsername,\n operation: operationFromProps,\n permissions,\n readOnly,\n t,\n } = props\n\n function getAuthFieldPermission(fieldName: string, operation: 'read' | 'update') {\n const permissionsResult = getFieldPermissions({\n field: { name: fieldName, type: 'text' },\n operation: operationFromProps === 'create' ? 'create' : operation,\n parentName: '',\n permissions,\n })\n return permissionsResult.operation\n }\n\n const hasEmailFieldOverride =\n typeof permissions === 'object' && 'email' in permissions && permissions.email\n const hasUsernameFieldOverride =\n typeof permissions === 'object' && 'username' in permissions && permissions.username\n\n const emailPermissions = hasEmailFieldOverride\n ? {\n read: getAuthFieldPermission('email', 'read'),\n update: getAuthFieldPermission('email', 'update'),\n }\n : {\n read: true,\n update: true,\n }\n\n const usernamePermissions = hasUsernameFieldOverride\n ? {\n read: getAuthFieldPermission('username', 'read'),\n update: getAuthFieldPermission('username', 'update'),\n }\n : {\n read: true,\n update: true,\n }\n\n const showEmailField =\n (!loginWithUsername || loginWithUsername?.requireEmail || loginWithUsername?.allowEmailLogin) &&\n emailPermissions.read\n\n const showUsernameField = Boolean(loginWithUsername) && usernamePermissions.read\n\n if (showEmailField || showUsernameField) {\n return (\n <div className={[baseClass, className && className].filter(Boolean).join(' ')}>\n {showEmailField ? (\n <FieldPathContext value=\"email\">\n <EmailField\n field={{\n name: 'email',\n admin: {\n autoComplete: 'off',\n },\n label: t('general:email'),\n required:\n !loginWithUsername || (loginWithUsername && loginWithUsername.requireEmail),\n }}\n path=\"email\"\n readOnly={readOnly || !emailPermissions.update}\n schemaPath=\"email\"\n validate={email}\n />\n </FieldPathContext>\n ) : null}\n {showUsernameField && (\n <FieldPathContext value=\"username\">\n <TextField\n field={{\n name: 'username',\n admin: {\n autoComplete: 'off',\n },\n label: t('authentication:username'),\n required: loginWithUsername && loginWithUsername.requireUsername,\n }}\n path=\"username\"\n readOnly={readOnly || !usernamePermissions.update}\n schemaPath=\"username\"\n validate={username}\n />\n </FieldPathContext>\n )}\n </div>\n )\n }\n}\n", "'use client'\n\nimport React from 'react'\n\nimport { CheckboxInput } from '../../fields/Checkbox/Input.js'\nimport { SelectAllStatus, useSelection } from '../../providers/Selection/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport './index.scss'\n\nconst baseClass = 'select-all'\n\nexport const SelectAll: React.FC = () => {\n const { selectAll, toggleAll } = useSelection()\n const { i18n } = useTranslation()\n\n return (\n <CheckboxInput\n aria-label={\n selectAll === SelectAllStatus.None\n ? i18n.t('general:selectAllRows')\n : i18n.t('general:deselectAllRows')\n }\n checked={\n selectAll === SelectAllStatus.AllInPage || selectAll === SelectAllStatus.AllAvailable\n }\n className={[baseClass, `${baseClass}__checkbox`].join(' ')}\n id=\"select-all\"\n name=\"select-all\"\n onToggle={() => toggleAll()}\n partialChecked={selectAll === SelectAllStatus.Some}\n />\n )\n}\n", "'use client'\nimport type { ClientUser } from 'payload'\n\nimport React from 'react'\n\nimport { CheckboxInput } from '../../fields/Checkbox/Input.js'\nimport { useAuth } from '../../providers/Auth/index.js'\nimport { useSelection } from '../../providers/Selection/index.js'\nimport { Locked } from '../Locked/index.js'\nimport './index.scss'\n\nconst baseClass = 'select-row'\n\nexport const SelectRow: React.FC<{\n rowData: {\n _isLocked: boolean\n _userEditing: ClientUser\n id: string\n }\n}> = ({ rowData }) => {\n const { user } = useAuth()\n const { selected, setSelection } = useSelection()\n const { _isLocked, _userEditing } = rowData || {}\n\n const documentIsLocked = _isLocked && _userEditing\n\n if (documentIsLocked && _userEditing.id !== user?.id) {\n return <Locked user={_userEditing} />\n }\n\n return (\n <CheckboxInput\n checked={Boolean(selected.get(rowData.id))}\n className={[baseClass, `${baseClass}__checkbox`].join(' ')}\n onToggle={() => setSelection(rowData.id)}\n />\n )\n}\n", "import React from 'react'\n\nimport { useSelection } from '../../providers/Selection/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { Pill } from '../Pill/index.js'\n\nexport const SelectMany: React.FC<{\n onClick?: (ids: ReturnType<typeof useSelection>['selected']) => void\n}> = (props) => {\n const { onClick } = props\n\n const { count, selected } = useSelection()\n const { t } = useTranslation()\n\n if (!selected || !count) {\n return null\n }\n\n return (\n <Pill\n onClick={() => {\n if (typeof onClick === 'function') {\n onClick(selected)\n }\n }}\n pillStyle=\"white\"\n size=\"small\"\n >\n {t('general:select')} {count}\n </Pill>\n )\n}\n", "'use client'\n\nimport type { ListViewClientProps } from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport { useRouter } from 'next/navigation.js'\nimport { formatAdminURL, formatFilesize } from 'payload/shared'\nimport React, { Fragment, useEffect } from 'react'\n\nimport { useBulkUpload } from '../../elements/BulkUpload/index.js'\nimport { Button } from '../../elements/Button/index.js'\nimport { Gutter } from '../../elements/Gutter/index.js'\nimport { ListControls } from '../../elements/ListControls/index.js'\nimport { useListDrawerContext } from '../../elements/ListDrawer/Provider.js'\nimport { useModal } from '../../elements/Modal/index.js'\nimport { NoListResults } from '../../elements/NoListResults/index.js'\nimport { PageControls } from '../../elements/PageControls/index.js'\nimport { RenderCustomComponent } from '../../elements/RenderCustomComponent/index.js'\nimport { SelectMany } from '../../elements/SelectMany/index.js'\nimport { useStepNav } from '../../elements/StepNav/index.js'\nimport { StickyToolbar } from '../../elements/StickyToolbar/index.js'\nimport { RelationshipProvider } from '../../elements/Table/RelationshipProvider/index.js'\nimport { ViewDescription } from '../../elements/ViewDescription/index.js'\nimport { useControllableState } from '../../hooks/useControllableState.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useListQuery } from '../../providers/ListQuery/index.js'\nimport { SelectionProvider } from '../../providers/Selection/index.js'\nimport { TableColumnsProvider } from '../../providers/TableColumns/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { useWindowInfo } from '../../providers/WindowInfo/index.js'\nimport { ListSelection } from '../../views/List/ListSelection/index.js'\nimport { CollectionListHeader } from './ListHeader/index.js'\nimport './index.scss'\n\nconst baseClass = 'collection-list'\n\nexport function DefaultListView(props: ListViewClientProps) {\n const {\n AfterList,\n AfterListTable,\n beforeActions,\n BeforeList,\n BeforeListTable,\n collectionSlug,\n columnState,\n Description,\n disableBulkDelete,\n disableBulkEdit,\n disableQueryPresets,\n enableRowSelections,\n hasCreatePermission: hasCreatePermissionFromProps,\n hasDeletePermission,\n listMenuItems,\n newDocumentURL,\n queryPreset,\n queryPresetPermissions,\n renderedFilters,\n resolvedFilterOptions,\n Table: InitialTable,\n viewType,\n } = props\n\n const [Table] = useControllableState(InitialTable)\n\n const { allowCreate, createNewDrawerSlug, isInDrawer, onBulkSelect } = useListDrawerContext()\n\n const hasCreatePermission =\n allowCreate !== undefined\n ? allowCreate && hasCreatePermissionFromProps\n : hasCreatePermissionFromProps\n\n const {\n config: {\n routes: { admin: adminRoute },\n serverURL,\n },\n getEntityConfig,\n } = useConfig()\n const router = useRouter()\n\n const { data, isGroupingBy } = useListQuery()\n\n const { openModal } = useModal()\n const { drawerSlug: bulkUploadDrawerSlug, setCollectionSlug, setOnSuccess } = useBulkUpload()\n\n const collectionConfig = getEntityConfig({ collectionSlug })\n\n const { labels, upload } = collectionConfig\n\n const isUploadCollection = Boolean(upload)\n\n const isBulkUploadEnabled = isUploadCollection && collectionConfig.upload.bulkUpload\n\n const isTrashEnabled = Boolean(collectionConfig.trash)\n\n const { i18n } = useTranslation()\n\n const { setStepNav } = useStepNav()\n\n const {\n breakpoints: { s: smallBreak },\n } = useWindowInfo()\n\n const docs = React.useMemo(() => {\n if (isUploadCollection) {\n return data.docs.map((doc) => {\n return {\n ...doc,\n filesize: formatFilesize(doc.filesize),\n }\n })\n } else {\n return data?.docs\n }\n }, [data?.docs, isUploadCollection])\n\n const openBulkUpload = React.useCallback(() => {\n setCollectionSlug(collectionSlug)\n openModal(bulkUploadDrawerSlug)\n setOnSuccess(() => router.refresh())\n }, [router, collectionSlug, bulkUploadDrawerSlug, openModal, setCollectionSlug, setOnSuccess])\n\n useEffect(() => {\n if (!isInDrawer) {\n const baseLabel = {\n label: getTranslation(labels?.plural, i18n),\n url:\n isTrashEnabled && viewType === 'trash'\n ? formatAdminURL({\n adminRoute,\n path: `/collections/${collectionSlug}`,\n })\n : undefined,\n }\n\n const trashLabel = {\n label: i18n.t('general:trash'),\n }\n\n const navItems =\n isTrashEnabled && viewType === 'trash' ? [baseLabel, trashLabel] : [baseLabel]\n\n setStepNav(navItems)\n }\n }, [\n adminRoute,\n setStepNav,\n serverURL,\n labels,\n isInDrawer,\n isTrashEnabled,\n viewType,\n i18n,\n collectionSlug,\n ])\n\n return (\n <Fragment>\n <TableColumnsProvider collectionSlug={collectionSlug} columnState={columnState}>\n <div className={`${baseClass} ${baseClass}--${collectionSlug}`}>\n <SelectionProvider docs={docs} totalDocs={data?.totalDocs}>\n {BeforeList}\n <Gutter className={`${baseClass}__wrap`}>\n <CollectionListHeader\n collectionConfig={collectionConfig}\n Description={\n Description || collectionConfig?.admin?.description ? (\n <div className={`${baseClass}__sub-header`}>\n <RenderCustomComponent\n CustomComponent={Description}\n Fallback={\n <ViewDescription\n collectionSlug={collectionSlug}\n description={collectionConfig?.admin?.description}\n />\n }\n />\n </div>\n ) : undefined\n }\n disableBulkDelete={disableBulkDelete}\n disableBulkEdit={disableBulkEdit}\n hasCreatePermission={hasCreatePermission}\n hasDeletePermission={hasDeletePermission}\n i18n={i18n}\n isBulkUploadEnabled={isBulkUploadEnabled && !upload.hideFileInputOnCreate}\n isTrashEnabled={isTrashEnabled}\n newDocumentURL={newDocumentURL}\n openBulkUpload={openBulkUpload}\n smallBreak={smallBreak}\n viewType={viewType}\n />\n <ListControls\n beforeActions={\n enableRowSelections && typeof onBulkSelect === 'function'\n ? beforeActions\n ? [...beforeActions, <SelectMany key=\"select-many\" onClick={onBulkSelect} />]\n : [<SelectMany key=\"select-many\" onClick={onBulkSelect} />]\n : beforeActions\n }\n collectionConfig={collectionConfig}\n collectionSlug={collectionSlug}\n disableQueryPresets={\n collectionConfig?.enableQueryPresets !== true || disableQueryPresets\n }\n listMenuItems={listMenuItems}\n queryPreset={queryPreset}\n queryPresetPermissions={queryPresetPermissions}\n renderedFilters={renderedFilters}\n resolvedFilterOptions={resolvedFilterOptions}\n />\n {BeforeListTable}\n {docs?.length > 0 && (\n <div className={`${baseClass}__tables`}>\n <RelationshipProvider>{Table}</RelationshipProvider>\n </div>\n )}\n {docs?.length === 0 && (\n <NoListResults\n Actions={\n hasCreatePermission && newDocumentURL && viewType !== 'trash'\n ? [\n isInDrawer ? (\n <Button\n el=\"button\"\n key=\"create\"\n onClick={() => openModal(createNewDrawerSlug)}\n >\n {i18n.t('general:createNewLabel', {\n label: getTranslation(labels?.singular, i18n),\n })}\n </Button>\n ) : (\n <Button el=\"link\" key=\"create\" to={newDocumentURL}>\n {i18n.t('general:createNewLabel', {\n label: getTranslation(labels?.singular, i18n),\n })}\n </Button>\n ),\n ]\n : []\n }\n Message={\n viewType === 'trash' ? (\n <p>\n {i18n.t('general:noTrashResults', {\n label: getTranslation(labels?.plural, i18n),\n })}\n </p>\n ) : (\n <>\n <h3>{i18n.t('general:noResultsFound')}</h3>\n <p>{i18n.t('general:noResultsDescription')}</p>\n </>\n )\n }\n />\n )}\n {AfterListTable}\n {docs?.length > 0 && !isGroupingBy && (\n <PageControls\n AfterPageControls={\n smallBreak ? (\n <div className={`${baseClass}__list-selection`}>\n <ListSelection\n collectionConfig={collectionConfig}\n disableBulkDelete={disableBulkDelete}\n disableBulkEdit={disableBulkEdit}\n label={getTranslation(collectionConfig.labels.plural, i18n)}\n showSelectAllAcrossPages={!isGroupingBy}\n />\n <div className={`${baseClass}__list-selection-actions`}>\n {enableRowSelections && typeof onBulkSelect === 'function'\n ? beforeActions\n ? [\n ...beforeActions,\n <SelectMany key=\"select-many\" onClick={onBulkSelect} />,\n ]\n : [<SelectMany key=\"select-many\" onClick={onBulkSelect} />]\n : beforeActions}\n </div>\n </div>\n ) : null\n }\n collectionConfig={collectionConfig}\n />\n )}\n </Gutter>\n {AfterList}\n </SelectionProvider>\n </div>\n </TableColumnsProvider>\n {docs?.length > 0 && isGroupingBy && data.totalPages > 1 && (\n <StickyToolbar>\n <PageControls collectionConfig={collectionConfig} />\n </StickyToolbar>\n )}\n </Fragment>\n )\n}\n", "'use client'\n\nimport type { DragEndEvent } from '@dnd-kit/core'\nimport type { FolderListViewClientProps } from 'payload'\n\nimport { useDndMonitor } from '@dnd-kit/core'\nimport { getTranslation } from '@payloadcms/translations'\nimport { useRouter } from 'next/navigation.js'\nimport { formatAdminURL } from 'payload/shared'\nimport React, { Fragment } from 'react'\n\nimport { DefaultListViewTabs } from '../../elements/DefaultListViewTabs/index.js'\nimport { DroppableBreadcrumb } from '../../elements/FolderView/Breadcrumbs/index.js'\nimport { ColoredFolderIcon } from '../../elements/FolderView/ColoredFolderIcon/index.js'\nimport { CurrentFolderActions } from '../../elements/FolderView/CurrentFolderActions/index.js'\nimport { DragOverlaySelection } from '../../elements/FolderView/DragOverlaySelection/index.js'\nimport { SortByPill } from '../../elements/FolderView/SortByPill/index.js'\nimport { ToggleViewButtons } from '../../elements/FolderView/ToggleViewButtons/index.js'\nimport { Gutter } from '../../elements/Gutter/index.js'\nimport { ListHeader } from '../../elements/ListHeader/index.js'\nimport {\n ListBulkUploadButton,\n ListCreateNewDocInFolderButton,\n} from '../../elements/ListHeader/TitleActions/index.js'\nimport { NoListResults } from '../../elements/NoListResults/index.js'\nimport { SearchBar } from '../../elements/SearchBar/index.js'\nimport { useStepNav } from '../../elements/StepNav/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useEditDepth } from '../../providers/EditDepth/index.js'\nimport { FolderProvider, useFolder } from '../../providers/Folders/index.js'\nimport { usePreferences } from '../../providers/Preferences/index.js'\nimport { useRouteCache } from '../../providers/RouteCache/index.js'\nimport './index.scss'\nimport { useRouteTransition } from '../../providers/RouteTransition/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { useWindowInfo } from '../../providers/WindowInfo/index.js'\nimport { ListSelection } from './ListSelection/index.js'\n\nconst baseClass = 'collection-folder-list'\n\nexport function DefaultCollectionFolderView({\n allCollectionFolderSlugs: folderCollectionSlugs,\n allowCreateCollectionSlugs,\n baseFolderPath,\n breadcrumbs,\n documents,\n folderFieldName,\n folderID,\n FolderResultsComponent,\n search,\n sort,\n subfolders,\n ...restOfProps\n}: FolderListViewClientProps) {\n return (\n <FolderProvider\n allCollectionFolderSlugs={folderCollectionSlugs}\n allowCreateCollectionSlugs={allowCreateCollectionSlugs}\n baseFolderPath={baseFolderPath}\n breadcrumbs={breadcrumbs}\n documents={documents}\n folderFieldName={folderFieldName}\n folderID={folderID}\n FolderResultsComponent={FolderResultsComponent}\n search={search}\n sort={sort}\n subfolders={subfolders}\n >\n <CollectionFolderViewInContext {...restOfProps} />\n </FolderProvider>\n )\n}\n\ntype CollectionFolderViewInContextProps = Omit<\n FolderListViewClientProps,\n | 'allCollectionFolderSlugs'\n | 'allowCreateCollectionSlugs'\n | 'baseFolderPath'\n | 'breadcrumbs'\n | 'documents'\n | 'folderFieldName'\n | 'folderID'\n | 'FolderResultsComponent'\n | 'subfolders'\n>\n\nfunction CollectionFolderViewInContext(props: CollectionFolderViewInContextProps) {\n const {\n AfterFolderList,\n AfterFolderListTable,\n BeforeFolderList,\n BeforeFolderListTable,\n collectionSlug,\n Description,\n disableBulkDelete,\n disableBulkEdit,\n search,\n viewPreference,\n } = props\n\n const { config, getEntityConfig } = useConfig()\n const { i18n, t } = useTranslation()\n const drawerDepth = useEditDepth()\n const { setStepNav } = useStepNav()\n const { setPreference } = usePreferences()\n const {\n allowCreateCollectionSlugs,\n breadcrumbs,\n documents,\n dragOverlayItem,\n folderCollectionConfig,\n folderCollectionSlug,\n FolderResultsComponent,\n folderType,\n getSelectedItems,\n moveToFolder,\n refineFolderData,\n selectedItemKeys,\n setIsDragging,\n subfolders,\n } = useFolder()\n\n const router = useRouter()\n const { startRouteTransition } = useRouteTransition()\n const { clearRouteCache } = useRouteCache()\n\n const collectionConfig = getEntityConfig({ collectionSlug })\n\n const { labels, upload } = collectionConfig\n const isUploadCollection = Boolean(upload)\n const isBulkUploadEnabled = isUploadCollection && collectionConfig.upload.bulkUpload\n\n const {\n breakpoints: { s: smallBreak },\n } = useWindowInfo()\n\n const onDragEnd = React.useCallback(\n async (event: DragEndEvent) => {\n if (!event.over) {\n return\n }\n\n if (event.over.data.current.type === 'folder' && 'id' in event.over.data.current) {\n try {\n await moveToFolder({\n itemsToMove: getSelectedItems(),\n toFolderID: event.over.data.current.id,\n })\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error('Error moving items:', error)\n }\n\n clearRouteCache()\n }\n },\n [moveToFolder, getSelectedItems, clearRouteCache],\n )\n\n const handleSetViewType = React.useCallback(\n async (view: 'grid' | 'list') => {\n await setPreference(`${collectionSlug}-collection-folder`, {\n viewPreference: view,\n })\n clearRouteCache()\n },\n [collectionSlug, setPreference, clearRouteCache],\n )\n\n React.useEffect(() => {\n if (!drawerDepth) {\n setStepNav([\n !breadcrumbs.length\n ? {\n label: (\n <div className={`${baseClass}__step-nav-icon-label`} key=\"root\">\n <ColoredFolderIcon />\n {getTranslation(labels?.plural, i18n)}\n </div>\n ),\n }\n : {\n label: (\n <DroppableBreadcrumb\n className={[\n `${baseClass}__step-nav-droppable`,\n `${baseClass}__step-nav-icon-label`,\n ]\n .filter(Boolean)\n .join(' ')}\n id={null}\n key=\"root\"\n onClick={() => {\n startRouteTransition(() => {\n if (config.folders) {\n router.push(\n formatAdminURL({\n adminRoute: config.routes.admin,\n path: `/collections/${collectionSlug}/${config.folders.slug}`,\n }),\n )\n }\n })\n }}\n >\n <ColoredFolderIcon />\n {getTranslation(labels?.plural, i18n)}\n </DroppableBreadcrumb>\n ),\n },\n ...breadcrumbs.map((crumb, crumbIndex) => {\n return {\n label:\n crumbIndex === breadcrumbs.length - 1 ? (\n crumb.name\n ) : (\n <DroppableBreadcrumb\n className={`${baseClass}__step-nav-droppable`}\n id={crumb.id}\n key={crumb.id}\n onClick={() => {\n startRouteTransition(() => {\n if (config.folders) {\n router.push(\n formatAdminURL({\n adminRoute: config.routes.admin,\n path: `/collections/${collectionSlug}/${config.folders.slug}/${crumb.id}`,\n }),\n )\n }\n })\n }}\n >\n {crumb.name}\n </DroppableBreadcrumb>\n ),\n }\n }),\n ])\n }\n }, [\n breadcrumbs,\n collectionSlug,\n config.folders,\n config.routes.admin,\n config.serverURL,\n drawerDepth,\n i18n,\n labels?.plural,\n router,\n setStepNav,\n startRouteTransition,\n ])\n\n const totalDocsAndSubfolders = documents.length + subfolders.length\n\n return (\n <Fragment>\n <DndEventListener onDragEnd={onDragEnd} setIsDragging={setIsDragging} />\n\n <div className={`${baseClass} ${baseClass}--${collectionSlug}`}>\n {BeforeFolderList}\n <Gutter className={`${baseClass}__wrap`}>\n <ListHeader\n Actions={[\n !smallBreak && (\n <ListSelection\n disableBulkDelete={disableBulkDelete}\n disableBulkEdit={collectionConfig.disableBulkEdit ?? disableBulkEdit}\n folderAssignedCollections={\n Array.isArray(folderType) ? folderType : [collectionSlug]\n }\n key=\"list-selection\"\n />\n ),\n <DefaultListViewTabs\n collectionConfig={collectionConfig}\n config={config}\n key=\"default-list-actions\"\n viewType=\"folders\"\n />,\n ].filter(Boolean)}\n AfterListHeaderContent={Description}\n title={getTranslation(labels?.plural, i18n)}\n TitleActions={[\n allowCreateCollectionSlugs.length && (\n <ListCreateNewDocInFolderButton\n buttonLabel={\n allowCreateCollectionSlugs.length > 1\n ? t('general:createNew')\n : `${t('general:create')} ${getTranslation(folderCollectionConfig.labels?.singular, i18n).toLowerCase()}`\n }\n collectionSlugs={allowCreateCollectionSlugs}\n folderAssignedCollections={\n Array.isArray(folderType) ? folderType : [collectionSlug]\n }\n key=\"create-new-button\"\n onCreateSuccess={clearRouteCache}\n slugPrefix=\"create-document--header-pill\"\n />\n ),\n <ListBulkUploadButton\n collectionSlug={collectionSlug}\n hasCreatePermission={allowCreateCollectionSlugs.includes(collectionSlug)}\n isBulkUploadEnabled={isBulkUploadEnabled}\n key=\"bulk-upload-button\"\n />,\n ].filter(Boolean)}\n />\n <SearchBar\n Actions={[\n <SortByPill key=\"sort-by-pill\" />,\n <ToggleViewButtons\n activeView={viewPreference}\n key=\"toggle-view-buttons\"\n setActiveView={handleSetViewType}\n />,\n <CurrentFolderActions key=\"current-folder-actions\" />,\n ].filter(Boolean)}\n label={t('general:searchBy', {\n label: t('general:name'),\n })}\n onSearchChange={(search) => refineFolderData({ query: { search }, updateURL: true })}\n searchQueryParam={search}\n />\n {BeforeFolderListTable}\n {totalDocsAndSubfolders > 0 && FolderResultsComponent}\n {totalDocsAndSubfolders === 0 && (\n <NoListResults\n Actions={[\n allowCreateCollectionSlugs.includes(folderCollectionSlug) && (\n <ListCreateNewDocInFolderButton\n buttonLabel={`${t('general:create')} ${getTranslation(folderCollectionConfig.labels?.singular, i18n).toLowerCase()}`}\n buttonSize=\"medium\"\n buttonStyle=\"primary\"\n collectionSlugs={[folderCollectionConfig.slug]}\n folderAssignedCollections={\n Array.isArray(folderType) ? folderType : [collectionSlug]\n }\n key=\"create-folder\"\n onCreateSuccess={clearRouteCache}\n slugPrefix=\"create-folder--no-results\"\n />\n ),\n allowCreateCollectionSlugs.includes(collectionSlug) && (\n <ListCreateNewDocInFolderButton\n buttonLabel={`${t('general:create')} ${t('general:document').toLowerCase()}`}\n buttonSize=\"medium\"\n buttonStyle=\"primary\"\n collectionSlugs={[collectionSlug]}\n folderAssignedCollections={\n Array.isArray(folderType) ? folderType : [collectionSlug]\n }\n key=\"create-document\"\n onCreateSuccess={clearRouteCache}\n slugPrefix=\"create-document--no-results\"\n />\n ),\n ].filter(Boolean)}\n Message={\n <>\n <h3>{i18n.t('general:noResultsFound')}</h3>\n <p>{i18n.t('general:noResultsDescription')}</p>\n </>\n }\n />\n )}\n {AfterFolderListTable}\n </Gutter>\n {AfterFolderList}\n </div>\n {selectedItemKeys.size > 0 && dragOverlayItem && (\n <DragOverlaySelection item={dragOverlayItem} selectedCount={selectedItemKeys.size} />\n )}\n </Fragment>\n )\n}\n\nfunction DndEventListener({ onDragEnd, setIsDragging }) {\n useDndMonitor({\n onDragCancel() {\n setIsDragging(false)\n },\n onDragEnd(event) {\n setIsDragging(false)\n onDragEnd(event)\n },\n onDragStart() {\n setIsDragging(true)\n },\n })\n\n return null\n}\n", "import { useModal } from '@faceless-ui/modal'\nimport { getTranslation } from '@payloadcms/translations'\nimport { useRouter } from 'next/navigation.js'\nimport { formatAdminURL } from 'payload/shared'\nimport React from 'react'\nimport { toast } from 'sonner'\n\nimport { Dots } from '../../../icons/Dots/index.js'\nimport { useConfig } from '../../../providers/Config/index.js'\nimport { useFolder } from '../../../providers/Folders/index.js'\nimport { useRouteCache } from '../../../providers/RouteCache/index.js'\nimport { useRouteTransition } from '../../../providers/RouteTransition/index.js'\nimport { useTranslation } from '../../../providers/Translation/index.js'\nimport { ConfirmationModal } from '../../ConfirmationModal/index.js'\nimport { useDocumentDrawer } from '../../DocumentDrawer/index.js'\nimport { Popup, PopupList } from '../../Popup/index.js'\nimport { Translation } from '../../Translation/index.js'\nimport { MoveItemsToFolderDrawer } from '../Drawers/MoveToFolder/index.js'\n\nconst moveToFolderDrawerSlug = 'move-to-folder--current-folder'\nconst confirmDeleteDrawerSlug = 'confirm-many-delete'\n\nconst baseClass = 'current-folder-actions'\n\ntype Props = {\n className?: string\n}\nexport function CurrentFolderActions({ className }: Props) {\n const router = useRouter()\n const { startRouteTransition } = useRouteTransition()\n const {\n breadcrumbs,\n currentFolder,\n folderCollectionConfig,\n folderCollectionSlug,\n folderFieldName,\n folderID,\n getFolderRoute,\n moveToFolder,\n } = useFolder()\n const [FolderDocumentDrawer, , { closeDrawer: closeFolderDrawer, openDrawer: openFolderDrawer }] =\n useDocumentDrawer({\n id: folderID,\n collectionSlug: folderCollectionSlug,\n })\n const { clearRouteCache } = useRouteCache()\n const { config } = useConfig()\n const { routes } = config\n const { closeModal, openModal } = useModal()\n const { i18n, t } = useTranslation()\n\n const deleteCurrentFolder = React.useCallback(async () => {\n await fetch(\n formatAdminURL({\n apiRoute: routes.api,\n path: `/${folderCollectionSlug}/${folderID}?depth=0`,\n }),\n {\n credentials: 'include',\n method: 'DELETE',\n },\n )\n startRouteTransition(() => {\n router.push(getFolderRoute(breadcrumbs[breadcrumbs.length - 2]?.id || null))\n })\n }, [\n breadcrumbs,\n folderCollectionSlug,\n folderID,\n getFolderRoute,\n router,\n routes.api,\n startRouteTransition,\n ])\n\n if (!folderID) {\n return null\n }\n\n return (\n <>\n <Popup\n button={<Dots />}\n className={[baseClass, className].filter(Boolean).join(' ')}\n render={() => (\n <PopupList.ButtonGroup>\n <PopupList.Button\n onClick={() => {\n openFolderDrawer()\n }}\n >\n {t('general:editLabel', {\n label: getTranslation(folderCollectionConfig.labels.singular, i18n),\n })}\n </PopupList.Button>\n <PopupList.Button\n onClick={() => {\n openModal(moveToFolderDrawerSlug)\n }}\n >\n {t('folder:moveFolder')}\n </PopupList.Button>\n <PopupList.Button\n onClick={() => {\n openModal(confirmDeleteDrawerSlug)\n }}\n >\n {t('folder:deleteFolder')}\n </PopupList.Button>\n </PopupList.ButtonGroup>\n )}\n />\n <MoveItemsToFolderDrawer\n action=\"moveItemToFolder\"\n drawerSlug={moveToFolderDrawerSlug}\n folderAssignedCollections={currentFolder?.value.folderType}\n folderCollectionSlug={folderCollectionSlug}\n folderFieldName={folderFieldName}\n fromFolderID={currentFolder?.value.id}\n fromFolderName={currentFolder?.value._folderOrDocumentTitle}\n itemsToMove={[currentFolder]}\n onConfirm={async ({ id, name }) => {\n await moveToFolder({\n itemsToMove: [currentFolder],\n toFolderID: id,\n })\n if (id) {\n // moved to folder\n toast.success(\n t('folder:itemHasBeenMoved', {\n folderName: `\"${name}\"`,\n title: currentFolder.value._folderOrDocumentTitle,\n }),\n )\n } else {\n // moved to root\n toast.success(\n t('folder:itemHasBeenMovedToRoot', {\n title: currentFolder.value._folderOrDocumentTitle,\n }),\n )\n }\n closeModal(moveToFolderDrawerSlug)\n }}\n title={currentFolder.value._folderOrDocumentTitle}\n />\n\n <ConfirmationModal\n body={\n <Translation\n elements={{\n '1': ({ children }) => <strong>{children}</strong>,\n }}\n i18nKey=\"general:aboutToDelete\"\n t={t}\n variables={{\n label: getTranslation(folderCollectionConfig.labels.singular, i18n),\n title: currentFolder.value._folderOrDocumentTitle,\n }}\n />\n }\n confirmingLabel={t('general:deleting')}\n heading={t('general:confirmDeletion')}\n modalSlug={confirmDeleteDrawerSlug}\n onConfirm={deleteCurrentFolder}\n />\n\n <FolderDocumentDrawer\n onSave={() => {\n closeFolderDrawer()\n clearRouteCache()\n }}\n />\n </>\n )\n}\n", "import type { Modifier } from '@dnd-kit/core'\nimport type { FolderOrDocument } from 'payload/shared'\n\nimport { DragOverlay } from '@dnd-kit/core'\nimport { getEventCoordinates } from '@dnd-kit/utilities'\n\nimport { FolderFileCard } from '../FolderFileCard/index.js'\nimport './index.scss'\n\nconst baseClass = 'drag-overlay-selection'\n\ntype DragCardsProps = {\n readonly item: FolderOrDocument\n readonly selectedCount: number\n}\nexport function DragOverlaySelection({ item, selectedCount }: DragCardsProps) {\n return (\n <DragOverlay\n dropAnimation={null}\n modifiers={[snapTopLeftToCursor]}\n style={{\n height: 'unset',\n maxWidth: '220px',\n }}\n >\n <div className={`${baseClass}__cards`}>\n {Array.from({ length: selectedCount > 1 ? 2 : 1 }).map((_, index) => (\n <div\n className={`${baseClass}__card`}\n key={index}\n style={{\n right: `${index * 3}px`,\n top: `-${index * 3}px`,\n }}\n >\n <FolderFileCard\n id={null}\n isSelected\n itemKey=\"overlay-card\"\n title={item.value._folderOrDocumentTitle}\n type=\"folder\"\n />\n </div>\n ))}\n {selectedCount > 1 ? (\n <span className={`${baseClass}__card-count`}>{selectedCount}</span>\n ) : null}\n </div>\n </DragOverlay>\n )\n}\n\nexport const snapTopLeftToCursor: Modifier = ({ activatorEvent, draggingNodeRect, transform }) => {\n if (draggingNodeRect && activatorEvent) {\n const activatorCoordinates = getEventCoordinates(activatorEvent)\n\n if (!activatorCoordinates) {\n return transform\n }\n\n const offsetX = activatorCoordinates.x - draggingNodeRect.left\n const offsetY = activatorCoordinates.y - draggingNodeRect.top\n\n return {\n ...transform,\n x: transform.x + offsetX + 5,\n y: transform.y + offsetY + 5,\n }\n }\n\n return transform\n}\n", "import type { TFunction } from '@payloadcms/translations'\nimport type { FolderSortKeys } from 'payload'\n\nimport React from 'react'\n\nimport { ChevronIcon } from '../../../icons/Chevron/index.js'\nimport { SortDownIcon, SortUpIcon } from '../../../icons/Sort/index.js'\nimport { useFolder } from '../../../providers/Folders/index.js'\nimport { useTranslation } from '../../../providers/Translation/index.js'\nimport { Pill } from '../../Pill/index.js'\nimport { Popup, PopupList } from '../../Popup/index.js'\nimport './index.scss'\n\nconst baseClass = 'sort-by-pill'\n\nconst sortOnOptions: {\n label: (t: TFunction) => React.ReactNode\n value: FolderSortKeys\n}[] = [\n { label: (t) => t('general:name'), value: 'name' },\n { label: (t) => t('general:createdAt'), value: 'createdAt' },\n { label: (t) => t('general:updatedAt'), value: 'updatedAt' },\n]\nconst orderOnOptions: {\n label: (t: TFunction) => React.ReactNode\n value: 'asc' | 'desc'\n}[] = [\n {\n label: (t) => (\n <>\n <SortUpIcon />\n {t('general:ascending')}\n </>\n ),\n value: 'asc',\n },\n {\n label: (t) => (\n <>\n <SortDownIcon />\n {t('general:descending')}\n </>\n ),\n value: 'desc',\n },\n]\nexport function SortByPill() {\n const { refineFolderData, sort } = useFolder()\n const { t } = useTranslation()\n const sortDirection = sort.startsWith('-') ? 'desc' : 'asc'\n const [selectedSortOption] =\n sortOnOptions.filter(({ value }) => value === (sort.startsWith('-') ? sort.slice(1) : sort)) ||\n sortOnOptions\n const [selectedOrderOption] = orderOnOptions.filter(({ value }) => value === sortDirection)\n\n return (\n <Popup\n button={\n <Pill className={`${baseClass}__trigger`} icon={<ChevronIcon />} size=\"small\">\n {sortDirection === 'asc' ? (\n <SortUpIcon className={`${baseClass}__sort-icon`} />\n ) : (\n <SortDownIcon className={`${baseClass}__sort-icon`} />\n )}\n {selectedSortOption?.label(t)}\n </Pill>\n }\n className={baseClass}\n horizontalAlign=\"right\"\n render={({ close }) => (\n <>\n <PopupList.GroupLabel label=\"Sort by\" />\n <PopupList.ButtonGroup>\n {sortOnOptions.map(({ label, value }) => (\n <PopupList.Button\n active={selectedSortOption?.value === value}\n key={value}\n onClick={() => {\n refineFolderData({\n query: {\n page: '1',\n sort: sortDirection === 'desc' ? `-${value}` : value,\n },\n updateURL: true,\n })\n close()\n }}\n >\n {label(t)}\n </PopupList.Button>\n ))}\n </PopupList.ButtonGroup>\n <PopupList.Divider />\n <PopupList.GroupLabel label=\"Order\" />\n <PopupList.ButtonGroup>\n {orderOnOptions.map(({ label, value }) => (\n <PopupList.Button\n active={selectedOrderOption?.value === value}\n className={`${baseClass}__order-option`}\n key={value}\n onClick={() => {\n if (sortDirection !== value) {\n refineFolderData({\n query: {\n page: '1',\n sort:\n value === 'desc'\n ? `-${selectedSortOption?.value}`\n : selectedSortOption?.value,\n },\n updateURL: true,\n })\n close()\n }\n }}\n >\n {label(t)}\n </PopupList.Button>\n ))}\n </PopupList.ButtonGroup>\n </>\n )}\n showScrollbar\n verticalAlign=\"bottom\"\n />\n )\n}\n", "import { GridViewIcon } from '../../../icons/GridView/index.js'\nimport { ListViewIcon } from '../../../icons/ListView/index.js'\nimport { Button } from '../../Button/index.js'\nimport './index.scss'\n\nconst baseClass = 'folder-view-toggle-button'\n\ntype Props = {\n activeView: 'grid' | 'list'\n setActiveView: (view: 'grid' | 'list') => void\n}\nexport function ToggleViewButtons({ activeView, setActiveView }: Props) {\n return (\n <>\n <Button\n buttonStyle=\"pill\"\n className={[baseClass, activeView === 'grid' && `${baseClass}--active`]\n .filter(Boolean)\n .join(' ')}\n icon={<GridViewIcon />}\n margin={false}\n onClick={() => {\n setActiveView('grid')\n }}\n />\n <Button\n buttonStyle=\"pill\"\n className={[baseClass, activeView === 'list' && `${baseClass}--active`]\n .filter(Boolean)\n .join(' ')}\n icon={<ListViewIcon />}\n margin={false}\n onClick={() => {\n setActiveView('list')\n }}\n />\n </>\n )\n}\n", "'use client'\n\nimport type { CollectionSlug } from 'payload'\n\nimport { useModal } from '@faceless-ui/modal'\nimport { extractID } from 'payload/shared'\nimport React, { Fragment } from 'react'\nimport { toast } from 'sonner'\n\nimport { DeleteMany_v4 } from '../../../elements/DeleteMany/index.js'\nimport { EditMany_v4 } from '../../../elements/EditMany/index.js'\nimport { EditFolderAction } from '../../../elements/FolderView/Drawers/EditFolderAction/index.js'\nimport { MoveItemsToFolderDrawer } from '../../../elements/FolderView/Drawers/MoveToFolder/index.js'\nimport { ListSelection_v4, ListSelectionButton } from '../../../elements/ListSelection/index.js'\nimport { PublishMany_v4 } from '../../../elements/PublishMany/index.js'\nimport { UnpublishMany_v4 } from '../../../elements/UnpublishMany/index.js'\nimport { useConfig } from '../../../providers/Config/index.js'\nimport { useFolder } from '../../../providers/Folders/index.js'\nimport { useRouteCache } from '../../../providers/RouteCache/index.js'\nimport { useTranslation } from '../../../providers/Translation/index.js'\n\nconst moveToFolderDrawerSlug = 'move-to-folder--list'\n\ntype GroupedSelections = {\n [relationTo: string]: {\n all?: boolean\n ids?: (number | string)[]\n totalCount: number\n }\n}\n\nexport type ListSelectionProps = {\n disableBulkDelete?: boolean\n disableBulkEdit?: boolean\n folderAssignedCollections: CollectionSlug[]\n}\n\nexport const ListSelection: React.FC<ListSelectionProps> = ({\n disableBulkDelete,\n disableBulkEdit,\n folderAssignedCollections,\n}) => {\n const {\n clearSelections,\n currentFolder,\n folderCollectionSlug,\n folderFieldName,\n folderID,\n getSelectedItems,\n moveToFolder,\n } = useFolder()\n\n const { clearRouteCache } = useRouteCache()\n const { config } = useConfig()\n const { t } = useTranslation()\n const { closeModal, openModal } = useModal()\n const items = getSelectedItems()\n\n const groupedSelections: GroupedSelections = items.reduce((acc, item) => {\n if (item) {\n if (acc[item.relationTo]) {\n acc[item.relationTo].ids.push(extractID(item.value))\n acc[item.relationTo].totalCount += 1\n } else {\n acc[item.relationTo] = {\n ids: [extractID(item.value)],\n totalCount: 1,\n }\n }\n }\n\n return acc\n }, {} as GroupedSelections)\n\n const count = items.length\n const singleNonFolderCollectionSelected =\n Object.keys(groupedSelections).length === 1 &&\n Object.keys(groupedSelections)[0] !== folderCollectionSlug\n const collectionConfig = singleNonFolderCollectionSelected\n ? config.collections.find((collection) => {\n return collection.slug === Object.keys(groupedSelections)[0]\n })\n : null\n\n if (count === 0) {\n return null\n }\n\n const ids = singleNonFolderCollectionSelected\n ? groupedSelections[Object.keys(groupedSelections)[0]]?.ids || []\n : []\n\n return (\n <ListSelection_v4\n count={count}\n ListActions={[\n count > 0 && (\n <ListSelectionButton key=\"clear-all\" onClick={() => clearSelections()}>\n {t('general:clearAll')}\n </ListSelectionButton>\n ),\n ].filter(Boolean)}\n SelectionActions={[\n !disableBulkEdit && ids.length && (\n <Fragment key=\"bulk-actions\">\n <EditMany_v4 collection={collectionConfig} count={count} ids={ids} selectAll={false} />\n <PublishMany_v4\n collection={collectionConfig}\n count={count}\n ids={ids}\n selectAll={false}\n />\n <UnpublishMany_v4\n collection={collectionConfig}\n count={count}\n ids={ids}\n selectAll={false}\n />\n </Fragment>\n ),\n count === 1 && !singleNonFolderCollectionSelected && (\n <EditFolderAction\n folderCollectionSlug={folderCollectionSlug}\n id={groupedSelections[folderCollectionSlug].ids[0]}\n key=\"edit-folder-action\"\n />\n ),\n count > 0 ? (\n <React.Fragment key={moveToFolderDrawerSlug}>\n <ListSelectionButton\n onClick={() => {\n openModal(moveToFolderDrawerSlug)\n }}\n type=\"button\"\n >\n {t('general:move')}\n </ListSelectionButton>\n\n <MoveItemsToFolderDrawer\n action=\"moveItemsToFolder\"\n drawerSlug={moveToFolderDrawerSlug}\n folderAssignedCollections={folderAssignedCollections}\n folderCollectionSlug={folderCollectionSlug}\n folderFieldName={folderFieldName}\n fromFolderID={folderID}\n fromFolderName={currentFolder?.value?._folderOrDocumentTitle}\n itemsToMove={getSelectedItems()}\n onConfirm={async ({ id, name }) => {\n await moveToFolder({\n itemsToMove: getSelectedItems(),\n toFolderID: id,\n })\n\n if (id) {\n // moved to folder\n toast.success(\n t('folder:itemsMovedToFolder', {\n folderName: `\"${name}\"`,\n title: `${count} ${count > 1 ? t('general:items') : t('general:item')}`,\n }),\n )\n } else {\n // moved to root\n toast.success(\n t('folder:itemsMovedToRoot', {\n title: `${count} ${count > 1 ? t('general:items') : t('general:item')}`,\n }),\n )\n }\n\n clearRouteCache()\n closeModal(moveToFolderDrawerSlug)\n }}\n />\n </React.Fragment>\n ) : null,\n !disableBulkDelete && (\n <DeleteMany_v4\n afterDelete={() => {\n clearRouteCache()\n clearSelections()\n }}\n key=\"bulk-delete\"\n selections={groupedSelections}\n />\n ),\n ].filter(Boolean)}\n />\n )\n}\n", "import { useRouteCache } from '../../../../providers/RouteCache/index.js'\nimport { useTranslation } from '../../../../providers/Translation/index.js'\nimport { useDocumentDrawer } from '../../../DocumentDrawer/index.js'\nimport { ListSelectionButton } from '../../../ListSelection/index.js'\n\ntype EditFolderActionProps = {\n folderCollectionSlug: string\n id: number | string\n}\nexport const EditFolderAction = ({ id, folderCollectionSlug }: EditFolderActionProps) => {\n const { clearRouteCache } = useRouteCache()\n const { t } = useTranslation()\n const [FolderDocumentDrawer, , { closeDrawer, openDrawer }] = useDocumentDrawer({\n id,\n collectionSlug: folderCollectionSlug,\n })\n\n if (!id) {\n return null\n }\n\n return (\n <>\n <ListSelectionButton onClick={openDrawer} type=\"button\">\n {t('general:edit')}\n </ListSelectionButton>\n\n <FolderDocumentDrawer\n onSave={() => {\n closeDrawer()\n clearRouteCache()\n }}\n />\n </>\n )\n}\n", "'use client'\n\nimport type { DragEndEvent } from '@dnd-kit/core'\nimport type { FolderListViewClientProps } from 'payload'\n\nimport { useDndMonitor } from '@dnd-kit/core'\nimport { getTranslation } from '@payloadcms/translations'\nimport { useRouter } from 'next/navigation.js'\nimport { PREFERENCE_KEYS } from 'payload/shared'\nimport React, { Fragment } from 'react'\n\nimport { DroppableBreadcrumb } from '../../elements/FolderView/Breadcrumbs/index.js'\nimport { ColoredFolderIcon } from '../../elements/FolderView/ColoredFolderIcon/index.js'\nimport { CurrentFolderActions } from '../../elements/FolderView/CurrentFolderActions/index.js'\nimport { DragOverlaySelection } from '../../elements/FolderView/DragOverlaySelection/index.js'\nimport { FilterFolderTypePill } from '../../elements/FolderView/FilterFolderTypePill/index.js'\nimport { FolderFileTable } from '../../elements/FolderView/FolderFileTable/index.js'\nimport { ItemCardGrid } from '../../elements/FolderView/ItemCardGrid/index.js'\nimport { SortByPill } from '../../elements/FolderView/SortByPill/index.js'\nimport { ToggleViewButtons } from '../../elements/FolderView/ToggleViewButtons/index.js'\nimport { Gutter } from '../../elements/Gutter/index.js'\nimport { ListHeader } from '../../elements/ListHeader/index.js'\nimport { ListCreateNewDocInFolderButton } from '../../elements/ListHeader/TitleActions/index.js'\nimport { NoListResults } from '../../elements/NoListResults/index.js'\nimport { SearchBar } from '../../elements/SearchBar/index.js'\nimport { useStepNav } from '../../elements/StepNav/index.js'\nimport { useEditDepth } from '../../providers/EditDepth/index.js'\nimport { FolderProvider, useFolder } from '../../providers/Folders/index.js'\nimport { usePreferences } from '../../providers/Preferences/index.js'\nimport { useRouteCache } from '../../providers/RouteCache/index.js'\nimport { useRouteTransition } from '../../providers/RouteTransition/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { useWindowInfo } from '../../providers/WindowInfo/index.js'\nimport { ListSelection } from '../CollectionFolder/ListSelection/index.js'\nimport './index.scss'\n\nconst baseClass = 'folder-list'\n\nexport function DefaultBrowseByFolderView({\n activeCollectionFolderSlugs,\n allCollectionFolderSlugs,\n allowCreateCollectionSlugs,\n baseFolderPath,\n breadcrumbs,\n documents,\n folderFieldName,\n folderID,\n FolderResultsComponent,\n search,\n subfolders,\n ...restOfProps\n}: FolderListViewClientProps) {\n return (\n <FolderProvider\n activeCollectionFolderSlugs={activeCollectionFolderSlugs}\n allCollectionFolderSlugs={allCollectionFolderSlugs}\n allowCreateCollectionSlugs={allowCreateCollectionSlugs}\n baseFolderPath={baseFolderPath}\n breadcrumbs={breadcrumbs}\n documents={documents}\n folderFieldName={folderFieldName}\n folderID={folderID}\n FolderResultsComponent={FolderResultsComponent}\n search={search}\n subfolders={subfolders}\n >\n <BrowseByFolderViewInContext {...restOfProps} />\n </FolderProvider>\n )\n}\n\ntype BrowseByFolderViewInContextProps = Omit<\n FolderListViewClientProps,\n | 'activeCollectionFolderSlugs'\n | 'allCollectionFolderSlugs'\n | 'allowCreateCollectionSlugs'\n | 'baseFolderPath'\n | 'breadcrumbs'\n | 'documents'\n | 'folderFieldName'\n | 'folderID'\n | 'FolderResultsComponent'\n | 'subfolders'\n>\n\nfunction BrowseByFolderViewInContext(props: BrowseByFolderViewInContextProps) {\n const {\n AfterFolderList,\n AfterFolderListTable,\n BeforeFolderList,\n BeforeFolderListTable,\n Description,\n disableBulkDelete,\n disableBulkEdit,\n folderAssignedCollections,\n viewPreference,\n } = props\n\n const router = useRouter()\n const { i18n, t } = useTranslation()\n const drawerDepth = useEditDepth()\n const { setStepNav } = useStepNav()\n const { startRouteTransition } = useRouteTransition()\n const { clearRouteCache } = useRouteCache()\n const {\n breakpoints: { s: smallBreak },\n } = useWindowInfo()\n const { setPreference } = usePreferences()\n const {\n allowCreateCollectionSlugs,\n breadcrumbs,\n documents,\n dragOverlayItem,\n folderCollectionConfig,\n folderID,\n folderType,\n getFolderRoute,\n getSelectedItems,\n moveToFolder,\n refineFolderData,\n search,\n selectedItemKeys,\n setIsDragging,\n subfolders,\n } = useFolder()\n\n const [activeView, setActiveView] = React.useState<'grid' | 'list'>(viewPreference || 'grid')\n const [searchPlaceholder] = React.useState(() => {\n const locationLabel =\n breadcrumbs.length === 0\n ? getTranslation(folderCollectionConfig.labels?.plural, i18n)\n : breadcrumbs[breadcrumbs.length - 1].name\n return t('folder:searchByNameInFolder', {\n folderName: locationLabel,\n })\n })\n\n const onDragEnd = React.useCallback(\n async (event: DragEndEvent) => {\n if (!event.over) {\n return\n }\n\n if (event.over.data.current.type === 'folder' && 'id' in event.over.data.current) {\n await moveToFolder({\n itemsToMove: getSelectedItems(),\n toFolderID: event.over.data.current.id || null,\n })\n clearRouteCache()\n }\n },\n [moveToFolder, getSelectedItems, clearRouteCache],\n )\n\n const totalDocsAndSubfolders = documents.length + subfolders.length\n const listHeaderTitle = !breadcrumbs.length\n ? t('folder:browseByFolder')\n : breadcrumbs[breadcrumbs.length - 1].name\n\n const handleSetViewType = React.useCallback(\n (view: 'grid' | 'list') => {\n void setPreference(PREFERENCE_KEYS.BROWSE_BY_FOLDER, {\n viewPreference: view,\n })\n setActiveView(view)\n },\n [setPreference],\n )\n\n React.useEffect(() => {\n if (!drawerDepth) {\n setStepNav([\n !breadcrumbs.length\n ? {\n label: (\n <div className={`${baseClass}__step-nav-icon-label`} key=\"root\">\n <ColoredFolderIcon />\n {t('folder:browseByFolder')}\n </div>\n ),\n }\n : {\n label: (\n <DroppableBreadcrumb\n className={[\n `${baseClass}__step-nav-droppable`,\n `${baseClass}__step-nav-icon-label`,\n ]\n .filter(Boolean)\n .join(' ')}\n id={null}\n key=\"root\"\n onClick={() => {\n startRouteTransition(() => {\n router.push(getFolderRoute(null))\n })\n }}\n >\n <ColoredFolderIcon />\n {t('folder:browseByFolder')}\n </DroppableBreadcrumb>\n ),\n },\n ...breadcrumbs.map((crumb, crumbIndex) => {\n return {\n label:\n crumbIndex === breadcrumbs.length - 1 ? (\n crumb.name\n ) : (\n <DroppableBreadcrumb\n className={`${baseClass}__step-nav-droppable`}\n id={crumb.id}\n key={crumb.id}\n onClick={() => {\n startRouteTransition(() => {\n router.push(getFolderRoute(crumb.id))\n })\n }}\n >\n {crumb.name}\n </DroppableBreadcrumb>\n ),\n }\n }),\n ])\n }\n }, [breadcrumbs, drawerDepth, getFolderRoute, router, setStepNav, startRouteTransition, t])\n\n const nonFolderCollectionSlugs = allowCreateCollectionSlugs.filter(\n (slug) => slug !== folderCollectionConfig.slug,\n )\n\n return (\n <Fragment>\n <DndEventListener onDragEnd={onDragEnd} setIsDragging={setIsDragging} />\n <div className={`${baseClass} ${baseClass}--folders`}>\n {BeforeFolderList}\n <Gutter className={`${baseClass}__wrap`}>\n <ListHeader\n Actions={[\n !smallBreak && (\n <ListSelection\n disableBulkDelete={disableBulkDelete}\n disableBulkEdit={disableBulkEdit}\n folderAssignedCollections={folderAssignedCollections}\n key=\"list-selection\"\n />\n ),\n ].filter(Boolean)}\n AfterListHeaderContent={Description}\n title={listHeaderTitle}\n TitleActions={[\n allowCreateCollectionSlugs.length && (\n <ListCreateNewDocInFolderButton\n buttonLabel={\n allowCreateCollectionSlugs.length > 1\n ? t('general:createNew')\n : `${t('general:create')} ${getTranslation(folderCollectionConfig.labels?.singular, i18n).toLowerCase()}`\n }\n collectionSlugs={allowCreateCollectionSlugs}\n folderAssignedCollections={Array.isArray(folderType) ? folderType : []}\n key=\"create-new-button\"\n onCreateSuccess={clearRouteCache}\n slugPrefix=\"create-document--header-pill\"\n />\n ),\n ].filter(Boolean)}\n />\n <SearchBar\n Actions={[\n <SortByPill key=\"sort-by-pill\" />,\n folderID && <FilterFolderTypePill key=\"collection-type\" />,\n <ToggleViewButtons\n activeView={activeView}\n key=\"toggle-view-buttons\"\n setActiveView={handleSetViewType}\n />,\n <CurrentFolderActions key=\"current-folder-actions\" />,\n ].filter(Boolean)}\n label={searchPlaceholder}\n onSearchChange={(search) => refineFolderData({ query: { search }, updateURL: true })}\n searchQueryParam={search}\n />\n {BeforeFolderListTable}\n {totalDocsAndSubfolders > 0 && (\n <>\n {activeView === 'grid' ? (\n <div>\n {subfolders.length ? (\n <>\n <ItemCardGrid items={subfolders} title={'Folders'} type=\"folder\" />\n </>\n ) : null}\n\n {documents.length ? (\n <>\n <ItemCardGrid\n items={documents}\n subfolderCount={subfolders.length}\n title={'Documents'}\n type=\"file\"\n />\n </>\n ) : null}\n </div>\n ) : (\n <FolderFileTable />\n )}\n </>\n )}\n {totalDocsAndSubfolders === 0 && (\n <NoListResults\n Actions={[\n allowCreateCollectionSlugs.includes(folderCollectionConfig.slug) && (\n <ListCreateNewDocInFolderButton\n buttonLabel={`${t('general:create')} ${getTranslation(folderCollectionConfig.labels?.singular, i18n).toLowerCase()}`}\n buttonSize=\"medium\"\n buttonStyle=\"primary\"\n collectionSlugs={[folderCollectionConfig.slug]}\n folderAssignedCollections={Array.isArray(folderType) ? folderType : []}\n key=\"create-folder\"\n onCreateSuccess={clearRouteCache}\n slugPrefix=\"create-folder--no-results\"\n />\n ),\n folderID && nonFolderCollectionSlugs.length > 0 && (\n <ListCreateNewDocInFolderButton\n buttonLabel={`${t('general:create')} ${t('general:document').toLowerCase()}`}\n buttonSize=\"medium\"\n buttonStyle=\"primary\"\n collectionSlugs={nonFolderCollectionSlugs}\n folderAssignedCollections={Array.isArray(folderType) ? folderType : []}\n key=\"create-document\"\n onCreateSuccess={clearRouteCache}\n slugPrefix=\"create-document--no-results\"\n />\n ),\n ].filter(Boolean)}\n Message={\n <>\n <h3>{i18n.t('general:noResultsFound')}</h3>\n <p>{i18n.t('general:noResultsDescription')}</p>\n </>\n }\n />\n )}\n {AfterFolderListTable}\n </Gutter>\n {AfterFolderList}\n </div>\n {selectedItemKeys.size > 0 && dragOverlayItem && (\n <DragOverlaySelection item={dragOverlayItem} selectedCount={selectedItemKeys.size} />\n )}\n </Fragment>\n )\n}\nfunction DndEventListener({ onDragEnd, setIsDragging }) {\n useDndMonitor({\n onDragCancel() {\n setIsDragging(false)\n },\n onDragEnd(event) {\n setIsDragging(false)\n onDragEnd(event)\n },\n onDragStart() {\n setIsDragging(true)\n },\n })\n\n return null\n}\n", "'use client'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport React from 'react'\n\nimport { useConfig } from '../../../providers/Config/index.js'\nimport { useFolder } from '../../../providers/Folders/index.js'\nimport { useTranslation } from '../../../providers/Translation/index.js'\nimport { Button } from '../../Button/index.js'\nimport { CheckboxPopup } from '../../CheckboxPopup/index.js'\nimport './index.scss'\n\nconst baseClass = 'collection-type'\n\nexport function FilterFolderTypePill() {\n const {\n activeCollectionFolderSlugs: visibleCollectionSlugs,\n allCollectionFolderSlugs: folderCollectionSlugs,\n folderCollectionSlug,\n refineFolderData,\n } = useFolder()\n const { i18n, t } = useTranslation()\n const { config, getEntityConfig } = useConfig()\n\n const [allCollectionOptions] = React.useState(() => {\n return config.collections.reduce(\n (acc, collection) => {\n if (collection.folders && folderCollectionSlugs.includes(collection.slug)) {\n acc.push({\n label: getTranslation(collection.labels?.plural, i18n),\n value: collection.slug,\n })\n }\n\n return acc\n },\n [\n {\n label: getTranslation(\n getEntityConfig({ collectionSlug: folderCollectionSlug }).labels?.plural,\n i18n,\n ),\n value: folderCollectionSlug,\n },\n ],\n )\n })\n\n return (\n <CheckboxPopup\n Button={\n <Button buttonStyle=\"pill\" el=\"div\" icon=\"chevron\" margin={false} size=\"small\">\n {visibleCollectionSlugs.length ? (\n <span className={`${baseClass}__count`}>{visibleCollectionSlugs.length}</span>\n ) : null}\n {t('version:type')}\n </Button>\n }\n key=\"relation-to-selection-popup\"\n onChange={({ selectedValues: relationTo }) => {\n void refineFolderData({ query: { relationTo }, updateURL: true })\n }}\n options={allCollectionOptions}\n selectedValues={visibleCollectionSlugs}\n />\n )\n}\n", "import type { PopupProps } from '../Popup/index.js'\n\nimport { CheckboxInput } from '../../fields/Checkbox/Input.js'\nimport { Popup } from '../Popup/index.js'\nimport './index.scss'\n\nconst baseClass = 'checkbox-popup'\n\ntype CheckboxPopupProps = {\n Button: React.ReactNode\n onChange: (args: { close: () => void; selectedValues: string[] }) => void\n options: {\n label: string\n value: string\n }[]\n selectedValues: string[]\n} & Omit<PopupProps, 'button' | 'render'>\nexport function CheckboxPopup({\n Button,\n className,\n onChange,\n options,\n selectedValues,\n ...popupProps\n}: CheckboxPopupProps) {\n return (\n <Popup\n button={Button}\n className={[baseClass, className].filter(Boolean).join(' ')}\n horizontalAlign=\"right\"\n render={({ close }) => (\n <div className={`${baseClass}__options`}>\n {options.map(({ label, value }) => (\n <CheckboxInput\n checked={selectedValues?.includes(value)}\n key={value}\n label={label}\n onToggle={() => {\n const newSelectedValues = selectedValues?.includes(value)\n ? selectedValues.filter((v) => v !== value)\n : [...selectedValues, value]\n onChange({ close, selectedValues: newSelectedValues })\n }}\n />\n ))}\n </div>\n )}\n showScrollbar\n verticalAlign=\"bottom\"\n {...popupProps}\n />\n )\n}\n", "'use client'\n\nimport type { ClientUser, DocumentViewClientProps } from 'payload'\n\nimport { useRouter, useSearchParams } from 'next/navigation.js'\nimport { formatAdminURL, hasAutosaveEnabled } from 'payload/shared'\nimport React, { Fragment, useCallback, useEffect, useMemo, useRef, useState } from 'react'\nimport { toast } from 'sonner'\n\nimport type { FormProps } from '../../forms/Form/index.js'\nimport type { FormOnSuccess } from '../../forms/Form/types.js'\nimport type { LockedState } from '../../utilities/buildFormState.js'\n\nimport { DocumentControls } from '../../elements/DocumentControls/index.js'\nimport { DocumentDrawerHeader } from '../../elements/DocumentDrawer/DrawerHeader/index.js'\nimport { useDocumentDrawerContext } from '../../elements/DocumentDrawer/Provider.js'\nimport { DocumentFields } from '../../elements/DocumentFields/index.js'\nimport { DocumentLocked } from '../../elements/DocumentLocked/index.js'\nimport { DocumentTakeOver } from '../../elements/DocumentTakeOver/index.js'\nimport { LeaveWithoutSaving } from '../../elements/LeaveWithoutSaving/index.js'\nimport { LivePreviewWindow } from '../../elements/LivePreview/Window/index.js'\nimport { Upload } from '../../elements/Upload/index.js'\nimport { Form } from '../../forms/Form/index.js'\nimport { useAuth } from '../../providers/Auth/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useDocumentEvents } from '../../providers/DocumentEvents/index.js'\nimport { useDocumentInfo } from '../../providers/DocumentInfo/index.js'\nimport { useEditDepth } from '../../providers/EditDepth/index.js'\nimport { useLivePreviewContext, usePreviewURL } from '../../providers/LivePreview/context.js'\nimport { OperationProvider } from '../../providers/Operation/index.js'\nimport { useRouteCache } from '../../providers/RouteCache/index.js'\nimport { useRouteTransition } from '../../providers/RouteTransition/index.js'\nimport { useServerFunctions } from '../../providers/ServerFunctions/index.js'\nimport { UploadControlsProvider } from '../../providers/UploadControls/index.js'\nimport { useUploadEdits } from '../../providers/UploadEdits/index.js'\nimport { abortAndIgnore, handleAbortRef } from '../../utilities/abortAndIgnore.js'\nimport { handleBackToDashboard } from '../../utilities/handleBackToDashboard.js'\nimport { handleGoBack } from '../../utilities/handleGoBack.js'\nimport { handleTakeOver } from '../../utilities/handleTakeOver.js'\nimport { Auth } from './Auth/index.js'\nimport { SetDocumentStepNav } from './SetDocumentStepNav/index.js'\nimport { SetDocumentTitle } from './SetDocumentTitle/index.js'\nimport './index.scss'\n\nconst baseClass = 'collection-edit'\nconst PENDING_SUCCESS_TOAST_KEY = 'payload-pending-success-toast'\n\nexport type OnSaveContext = {\n getDocPermissions?: boolean\n incrementVersionCount?: boolean\n}\n\n// This component receives props only on _pages_\n// When rendered within a drawer, props are empty\n// This is solely to support custom edit views which get server-rendered\nexport function DefaultEditView({\n BeforeDocumentControls,\n Description,\n EditMenuItems,\n LivePreview: CustomLivePreview,\n PreviewButton,\n PublishButton,\n SaveButton,\n SaveDraftButton,\n Status,\n UnpublishButton,\n Upload: CustomUpload,\n UploadControls,\n}: DocumentViewClientProps) {\n const {\n id,\n action,\n AfterDocument,\n AfterFields,\n apiURL,\n BeforeFields,\n collectionSlug,\n currentEditor,\n data,\n disableActions,\n disableCreate,\n disableLeaveWithoutSaving,\n docPermissions,\n documentIsLocked,\n documentLockState,\n getDocPermissions,\n getDocPreferences,\n globalSlug,\n hasPublishPermission,\n hasSavePermission,\n incrementVersionCount,\n initialState,\n isEditing,\n isInitializing,\n isLocked,\n isTrashed,\n lastUpdateTime,\n redirectAfterCreate,\n redirectAfterDelete,\n redirectAfterDuplicate,\n redirectAfterRestore,\n setCurrentEditor,\n setData,\n setDocumentIsLocked,\n setLastUpdateTime,\n unlockDocument,\n updateDocumentEditor,\n } = useDocumentInfo()\n\n const {\n clearDoc,\n drawerSlug,\n onDelete,\n onDuplicate,\n onRestore,\n onSave: onSaveFromContext,\n } = useDocumentDrawerContext()\n\n const isInDrawer = Boolean(drawerSlug)\n\n const { refreshCookieAsync, user } = useAuth()\n\n const {\n config,\n config: {\n admin: { user: userSlug },\n routes: { admin: adminRoute },\n serverURL,\n },\n getEntityConfig,\n } = useConfig()\n\n const collectionConfig = getEntityConfig({ collectionSlug })\n const globalConfig = getEntityConfig({ globalSlug })\n\n const depth = useEditDepth()\n\n const router = useRouter()\n const params = useSearchParams()\n const { reportUpdate } = useDocumentEvents()\n const { resetUploadEdits } = useUploadEdits()\n const { getFormState } = useServerFunctions()\n const { startRouteTransition } = useRouteTransition()\n const { clearRouteCache } = useRouteCache()\n const {\n isLivePreviewEnabled,\n isLivePreviewing,\n previewWindowType,\n setURL: setLivePreviewURL,\n typeofLivePreviewURL,\n url: livePreviewURL,\n } = useLivePreviewContext()\n const { isPreviewEnabled, setPreviewURL } = usePreviewURL()\n\n const abortOnChangeRef = useRef<AbortController>(null)\n const abortOnSaveRef = useRef<AbortController>(null)\n\n const locale = params.get('locale')\n\n const entitySlug = collectionConfig?.slug || globalConfig?.slug\n\n const operation = collectionSlug && !id ? 'create' : 'update'\n\n const auth = collectionConfig ? collectionConfig.auth : undefined\n const upload = collectionConfig ? collectionConfig.upload : undefined\n\n const docConfig = collectionConfig || globalConfig\n\n const lockDocumentsProp = docConfig?.lockDocuments !== undefined ? docConfig?.lockDocuments : true\n const isLockingEnabled = lockDocumentsProp !== false\n\n const lockDurationDefault = 300 // Default 5 minutes in seconds\n const lockDuration =\n typeof lockDocumentsProp === 'object' ? lockDocumentsProp.duration : lockDurationDefault\n const lockDurationInMilliseconds = lockDuration * 1000\n\n const autosaveEnabled = hasAutosaveEnabled(docConfig)\n\n const [isReadOnlyForIncomingUser, setIsReadOnlyForIncomingUser] = useState(false)\n const [showTakeOverModal, setShowTakeOverModal] = useState(false)\n\n const [editSessionStartTime, setEditSessionStartTime] = useState(Date.now())\n\n const lockExpiryTime = lastUpdateTime + lockDurationInMilliseconds\n const isLockExpired = Date.now() > lockExpiryTime\n\n const preventLeaveWithoutSaving =\n !isReadOnlyForIncomingUser &&\n (typeof disableLeaveWithoutSaving !== 'undefined'\n ? !disableLeaveWithoutSaving\n : !autosaveEnabled)\n\n const schemaPathSegments = useMemo(() => [entitySlug], [entitySlug])\n\n const [validateBeforeSubmit, setValidateBeforeSubmit] = useState(() => {\n if (operation === 'create' && auth && !auth.disableLocalStrategy) {\n return true\n }\n\n return false\n })\n\n const nextHrefRef = React.useRef<null | string>(null)\n\n const handleDocumentLocking = useCallback(\n (lockedState: LockedState) => {\n setDocumentIsLocked(true)\n const previousOwnerID =\n typeof documentLockState.current?.user === 'object'\n ? documentLockState.current?.user?.id\n : documentLockState.current?.user\n\n if (lockedState && lockedState.user) {\n const lockedUserID =\n typeof lockedState.user === 'string' || typeof lockedState.user === 'number'\n ? lockedState.user\n : lockedState.user.id\n\n if (!documentLockState.current || lockedUserID !== previousOwnerID) {\n if (previousOwnerID === user.id && lockedUserID !== user.id) {\n setShowTakeOverModal(true)\n documentLockState.current.hasShownLockedModal = true\n }\n\n documentLockState.current = {\n hasShownLockedModal: documentLockState.current?.hasShownLockedModal || false,\n isLocked: true,\n user: lockedState.user as ClientUser,\n }\n setCurrentEditor(lockedState.user as ClientUser)\n }\n\n // Update lastUpdateTime when lock state changes\n if (lockedState.lastEditedAt) {\n setLastUpdateTime(new Date(lockedState.lastEditedAt).getTime())\n }\n }\n },\n [documentLockState, setCurrentEditor, setDocumentIsLocked, setLastUpdateTime, user?.id],\n )\n\n const handlePrevent = useCallback((nextHref: null | string) => {\n nextHrefRef.current = nextHref\n }, [])\n\n const handleLeaveConfirm = useCallback(async () => {\n const lockUser = documentLockState.current?.user\n\n const isLockOwnedByCurrentUser =\n typeof lockUser === 'object' ? lockUser?.id === user?.id : lockUser === user?.id\n\n if (isLockingEnabled && documentIsLocked && (id || globalSlug)) {\n // Check where user is trying to go\n const nextPath = nextHrefRef.current ? new URL(nextHrefRef.current).pathname : ''\n const isInternalView = ['/preview', '/api', '/versions'].some((path) =>\n nextPath.includes(path),\n )\n\n // Remove the lock if the user is navigating away from the document view they have locked\n if (isLockOwnedByCurrentUser && !isInternalView) {\n try {\n await unlockDocument(id, collectionSlug ?? globalSlug)\n setDocumentIsLocked(false)\n setCurrentEditor(null)\n } catch (err) {\n console.error('Failed to unlock before leave', err) // eslint-disable-line no-console\n }\n }\n }\n }, [\n collectionSlug,\n documentIsLocked,\n documentLockState,\n globalSlug,\n id,\n isLockingEnabled,\n setCurrentEditor,\n setDocumentIsLocked,\n unlockDocument,\n user?.id,\n ])\n\n const onSave: FormOnSuccess<any, OnSaveContext> = useCallback(\n async (json, ctx) => {\n const { context, formState } = ctx || {}\n\n const controller = handleAbortRef(abortOnSaveRef)\n\n const document = json?.doc || json?.result\n\n const updatedAt = document?.updatedAt || new Date().toISOString()\n\n // If we're editing the doc of the logged-in user,\n // Refresh the cookie to get new permissions\n if (user && collectionSlug === userSlug && id === user.id) {\n void refreshCookieAsync()\n }\n\n setLastUpdateTime(updatedAt)\n\n if (context?.incrementVersionCount !== false) {\n incrementVersionCount()\n }\n\n if (typeof setData === 'function') {\n void setData(document || {})\n }\n\n if (typeof onSaveFromContext === 'function') {\n const operation = id ? 'update' : 'create'\n\n void onSaveFromContext({\n ...(json as Record<string, unknown>),\n context,\n operation,\n // @ts-expect-error todo: this is not right, should be under `doc`?\n updatedAt:\n operation === 'update'\n ? new Date().toISOString()\n : document?.updatedAt || new Date().toISOString(),\n })\n }\n\n if (!isEditing && depth < 2 && redirectAfterCreate !== false) {\n // Store success message to show after redirect\n if (json.message && typeof window !== 'undefined') {\n window.sessionStorage.setItem(PENDING_SUCCESS_TOAST_KEY, json.message)\n }\n\n // Redirect to the same locale if it's been set\n const redirectRoute = formatAdminURL({\n adminRoute,\n path: `/collections/${collectionSlug}/${document?.id}${locale ? `?locale=${locale}` : ''}`,\n })\n\n startRouteTransition(() => router.push(redirectRoute))\n } else {\n resetUploadEdits()\n }\n\n if (context?.getDocPermissions !== false) {\n await getDocPermissions(json)\n }\n\n if (id || globalSlug) {\n const docPreferences = await getDocPreferences()\n\n const { livePreviewURL, previewURL, state } = await getFormState({\n id,\n collectionSlug,\n data: document,\n docPermissions,\n docPreferences,\n formState,\n globalSlug,\n operation,\n renderAllFields: false,\n returnLivePreviewURL: isLivePreviewEnabled && typeofLivePreviewURL === 'function',\n returnLockStatus: false,\n returnPreviewURL: isPreviewEnabled,\n schemaPath: schemaPathSegments.join('.'),\n signal: controller.signal,\n skipValidation: true,\n })\n\n // For upload collections, clear the file field from the returned state\n // to prevent the File object from persisting in form state after save\n if (upload && state) {\n delete state.file\n }\n\n // Unlock the document after save\n if (isLockingEnabled) {\n setDocumentIsLocked(false)\n }\n\n if (isLivePreviewEnabled && typeofLivePreviewURL === 'function') {\n setLivePreviewURL(livePreviewURL)\n }\n\n if (isPreviewEnabled) {\n setPreviewURL(previewURL)\n }\n\n reportUpdate({\n id,\n doc: document,\n drawerSlug,\n entitySlug,\n operation: 'update',\n updatedAt,\n })\n\n abortOnSaveRef.current = null\n\n return state\n } else {\n reportUpdate({\n id,\n doc: document,\n drawerSlug,\n entitySlug,\n operation: 'create',\n updatedAt,\n })\n }\n },\n [\n user,\n collectionSlug,\n userSlug,\n id,\n setLastUpdateTime,\n setData,\n onSaveFromContext,\n isEditing,\n depth,\n redirectAfterCreate,\n globalSlug,\n refreshCookieAsync,\n incrementVersionCount,\n adminRoute,\n locale,\n startRouteTransition,\n router,\n resetUploadEdits,\n getDocPermissions,\n getDocPreferences,\n getFormState,\n docPermissions,\n operation,\n isLivePreviewEnabled,\n typeofLivePreviewURL,\n isPreviewEnabled,\n schemaPathSegments,\n upload,\n isLockingEnabled,\n reportUpdate,\n drawerSlug,\n entitySlug,\n setDocumentIsLocked,\n setLivePreviewURL,\n setPreviewURL,\n ],\n )\n\n const onChange: FormProps['onChange'][0] = useCallback(\n async ({ formState: prevFormState, submitted }) => {\n const controller = handleAbortRef(abortOnChangeRef)\n\n const currentTime = Date.now()\n const timeSinceLastUpdate = currentTime - editSessionStartTime\n\n const updateLastEdited = isLockingEnabled && timeSinceLastUpdate >= 10000 // 10 seconds\n\n if (updateLastEdited) {\n setEditSessionStartTime(currentTime)\n }\n\n const docPreferences = await getDocPreferences()\n\n const result = await getFormState({\n id,\n collectionSlug,\n docPermissions,\n docPreferences,\n formState: prevFormState,\n globalSlug,\n operation,\n renderAllFields: false,\n returnLockStatus: isLockingEnabled,\n schemaPath: schemaPathSegments.join('.'),\n signal: controller.signal,\n skipValidation: !submitted,\n updateLastEdited,\n })\n\n if (!result) {\n return\n }\n\n const { lockedState, state } = result\n\n if (isLockingEnabled) {\n handleDocumentLocking(lockedState)\n }\n\n abortOnChangeRef.current = null\n\n return state\n },\n [\n editSessionStartTime,\n isLockingEnabled,\n getDocPreferences,\n getFormState,\n id,\n collectionSlug,\n docPermissions,\n globalSlug,\n operation,\n schemaPathSegments,\n handleDocumentLocking,\n ],\n )\n\n // Clean up when the component unmounts or when the document is unlocked\n useEffect(() => {\n return () => {\n setShowTakeOverModal(false)\n }\n }, [])\n\n useEffect(() => {\n const abortOnChange = abortOnChangeRef.current\n const abortOnSave = abortOnSaveRef.current\n\n return () => {\n abortAndIgnore(abortOnChange)\n abortAndIgnore(abortOnSave)\n }\n }, [])\n\n // Show pending success toast after redirect from create\n useEffect(() => {\n if (!isInitializing && typeof window !== 'undefined') {\n const pendingMessage = window.sessionStorage.getItem(PENDING_SUCCESS_TOAST_KEY)\n\n if (pendingMessage) {\n window.sessionStorage.removeItem(PENDING_SUCCESS_TOAST_KEY)\n toast.success(pendingMessage)\n }\n }\n }, [isInitializing])\n\n const shouldShowDocumentLockedModal =\n documentIsLocked &&\n currentEditor &&\n (typeof currentEditor === 'object'\n ? currentEditor.id !== user?.id\n : currentEditor !== user?.id) &&\n !isReadOnlyForIncomingUser &&\n !showTakeOverModal &&\n !documentLockState.current?.hasShownLockedModal &&\n !isLockExpired\n\n const isFolderCollection = config.folders && collectionSlug === config.folders?.slug\n\n return (\n <main\n className={[\n baseClass,\n (id || globalSlug) && `${baseClass}--is-editing`,\n globalSlug && `global-edit--${globalSlug}`,\n collectionSlug && `collection-edit--${collectionSlug}`,\n isLivePreviewing && previewWindowType === 'iframe' && `${baseClass}--is-live-previewing`,\n ]\n .filter(Boolean)\n .join(' ')}\n >\n <OperationProvider operation={operation}>\n <Form\n action={action}\n className={`${baseClass}__form`}\n disabled={isReadOnlyForIncomingUser || isInitializing || !hasSavePermission || isTrashed}\n disableSuccessStatus={!isEditing && depth < 2 && redirectAfterCreate !== false}\n disableValidationOnSubmit={!validateBeforeSubmit}\n initialState={!isInitializing && initialState}\n isDocumentForm={true}\n isInitializing={isInitializing}\n key={`${isLocked}`}\n method={id ? 'PATCH' : 'POST'}\n onChange={[onChange]}\n onSuccess={onSave}\n >\n {isInDrawer && (\n <DocumentDrawerHeader\n AfterHeader={Description}\n drawerSlug={drawerSlug}\n showDocumentID={!isFolderCollection}\n />\n )}\n {isLockingEnabled && shouldShowDocumentLockedModal && (\n <DocumentLocked\n handleGoBack={() => handleGoBack({ adminRoute, collectionSlug, router, serverURL })}\n isActive={shouldShowDocumentLockedModal}\n onReadOnly={() => {\n setIsReadOnlyForIncomingUser(true)\n setShowTakeOverModal(false)\n }}\n onTakeOver={() =>\n handleTakeOver({\n id,\n clearRouteCache,\n collectionSlug,\n documentLockStateRef: documentLockState,\n globalSlug,\n isLockingEnabled,\n isWithinDoc: false,\n setCurrentEditor,\n updateDocumentEditor,\n user,\n })\n }\n updatedAt={lastUpdateTime}\n user={currentEditor}\n />\n )}\n {isLockingEnabled && showTakeOverModal && (\n <DocumentTakeOver\n handleBackToDashboard={() => handleBackToDashboard({ adminRoute, router, serverURL })}\n isActive={showTakeOverModal}\n onReadOnly={() => {\n setIsReadOnlyForIncomingUser(true)\n setShowTakeOverModal(false)\n }}\n />\n )}\n {preventLeaveWithoutSaving && (\n <LeaveWithoutSaving onConfirm={handleLeaveConfirm} onPrevent={handlePrevent} />\n )}\n {!isInDrawer && (\n <SetDocumentStepNav\n collectionSlug={collectionConfig?.slug}\n globalSlug={globalConfig?.slug}\n id={id}\n isTrashed={isTrashed}\n pluralLabel={collectionConfig?.labels?.plural}\n useAsTitle={collectionConfig?.admin?.useAsTitle}\n />\n )}\n <SetDocumentTitle\n collectionConfig={collectionConfig}\n config={config}\n fallback={depth <= 1 ? id?.toString() : undefined}\n globalConfig={globalConfig}\n />\n <DocumentControls\n apiURL={apiURL}\n BeforeDocumentControls={BeforeDocumentControls}\n customComponents={{\n PreviewButton,\n PublishButton,\n SaveButton,\n SaveDraftButton,\n Status,\n UnpublishButton,\n }}\n data={data}\n disableActions={disableActions || isFolderCollection || isTrashed}\n disableCreate={disableCreate}\n EditMenuItems={EditMenuItems}\n hasPublishPermission={hasPublishPermission}\n hasSavePermission={hasSavePermission}\n id={id}\n isEditing={isEditing}\n isInDrawer={isInDrawer}\n isTrashed={isTrashed}\n onDelete={onDelete}\n onDrawerCreateNew={clearDoc}\n onDuplicate={onDuplicate}\n onRestore={onRestore}\n onSave={onSave}\n onTakeOver={() =>\n handleTakeOver({\n id,\n clearRouteCache,\n collectionSlug,\n documentLockStateRef: documentLockState,\n globalSlug,\n isLockingEnabled,\n isWithinDoc: true,\n setCurrentEditor,\n setIsReadOnlyForIncomingUser,\n updateDocumentEditor,\n user,\n })\n }\n permissions={docPermissions}\n readOnlyForIncomingUser={isReadOnlyForIncomingUser}\n redirectAfterDelete={redirectAfterDelete}\n redirectAfterDuplicate={redirectAfterDuplicate}\n redirectAfterRestore={redirectAfterRestore}\n slug={collectionConfig?.slug || globalConfig?.slug}\n user={currentEditor}\n />\n <div\n className={[\n `${baseClass}__main-wrapper`,\n previewWindowType === 'popup' && `${baseClass}--detached`,\n ]\n .filter(Boolean)\n .join(' ')}\n >\n <div\n className={[\n `${baseClass}__main`,\n previewWindowType === 'popup' && `${baseClass}__main--popup-open`,\n ]\n .filter(Boolean)\n .join(' ')}\n >\n <DocumentFields\n AfterFields={AfterFields}\n BeforeFields={\n BeforeFields || (\n <Fragment>\n {auth && (\n <Auth\n className={`${baseClass}__auth`}\n collectionSlug={collectionConfig.slug}\n disableLocalStrategy={collectionConfig.auth?.disableLocalStrategy}\n email={data?.email}\n loginWithUsername={auth?.loginWithUsername}\n operation={operation}\n readOnly={!hasSavePermission}\n requirePassword={!id}\n setValidateBeforeSubmit={setValidateBeforeSubmit}\n // eslint-disable-next-line react-compiler/react-compiler\n useAPIKey={auth.useAPIKey}\n username={data?.username}\n verify={auth.verify}\n />\n )}\n {upload && (\n <React.Fragment>\n <UploadControlsProvider>\n {CustomUpload || (\n <Upload\n collectionSlug={collectionConfig.slug}\n initialState={initialState}\n uploadConfig={upload}\n UploadControls={UploadControls}\n />\n )}\n </UploadControlsProvider>\n </React.Fragment>\n )}\n </Fragment>\n )\n }\n Description={Description}\n docPermissions={docPermissions}\n fields={docConfig.fields}\n forceSidebarWrap={isLivePreviewing}\n isTrashed={isTrashed}\n readOnly={isReadOnlyForIncomingUser || !hasSavePermission || isTrashed}\n schemaPathSegments={schemaPathSegments}\n />\n {AfterDocument}\n </div>\n {isLivePreviewEnabled && !isInDrawer && livePreviewURL && (\n <>\n {CustomLivePreview || (\n <LivePreviewWindow collectionSlug={collectionSlug} globalSlug={globalSlug} />\n )}\n </>\n )}\n </div>\n </Form>\n </OperationProvider>\n </main>\n )\n}\n", "'use client'\n\nimport { useCallback } from 'react'\n\nimport { Gutter } from '../../../elements/Gutter/index.js'\nimport { useModal } from '../../../elements/Modal/index.js'\nimport { RenderTitle } from '../../../elements/RenderTitle/index.js'\nimport { useFormModified } from '../../../forms/Form/index.js'\nimport { XIcon } from '../../../icons/X/index.js'\nimport { useDocumentInfo } from '../../../providers/DocumentInfo/index.js'\nimport { useDocumentTitle } from '../../../providers/DocumentTitle/index.js'\nimport { useTranslation } from '../../../providers/Translation/index.js'\nimport { IDLabel } from '../../IDLabel/index.js'\nimport { LeaveWithoutSavingModal } from '../../LeaveWithoutSaving/index.js'\nimport { documentDrawerBaseClass } from '../index.js'\nimport './index.scss'\n\nconst leaveWithoutSavingModalSlug = 'leave-without-saving-doc-drawer'\n\nexport const DocumentDrawerHeader: React.FC<{\n AfterHeader?: React.ReactNode\n drawerSlug: string\n showDocumentID?: boolean\n}> = ({ AfterHeader, drawerSlug, showDocumentID = true }) => {\n const { closeModal, openModal } = useModal()\n const { t } = useTranslation()\n const isModified = useFormModified()\n\n const handleOnClose = useCallback(() => {\n if (isModified) {\n openModal(leaveWithoutSavingModalSlug)\n } else {\n closeModal(drawerSlug)\n }\n }, [isModified, openModal, closeModal, drawerSlug])\n\n return (\n <Gutter className={`${documentDrawerBaseClass}__header`}>\n <div className={`${documentDrawerBaseClass}__header-content`}>\n <h2 className={`${documentDrawerBaseClass}__header-text`}>\n {<RenderTitle element=\"span\" />}\n </h2>\n <button\n aria-label={t('general:close')}\n className={`${documentDrawerBaseClass}__header-close`}\n onClick={handleOnClose}\n type=\"button\"\n >\n <XIcon />\n </button>\n </div>\n {showDocumentID && <DocumentID />}\n {AfterHeader ? (\n <div className={`${documentDrawerBaseClass}__after-header`}>{AfterHeader}</div>\n ) : null}\n\n <LeaveWithoutSavingModal\n modalSlug={leaveWithoutSavingModalSlug}\n onConfirm={() => closeModal(drawerSlug)}\n />\n </Gutter>\n )\n}\n\nconst DocumentID: React.FC = () => {\n const { id } = useDocumentInfo()\n const { title } = useDocumentTitle()\n return id && id !== title ? <IDLabel id={id.toString()} /> : null\n}\n", "'use client'\n\nimport type { EditViewProps } from 'payload'\n\nimport { reduceFieldsToValues } from 'payload/shared'\nimport React, { useEffect } from 'react'\n\nimport { useAllFormFields } from '../../../forms/Form/context.js'\nimport { useDocumentEvents } from '../../../providers/DocumentEvents/index.js'\nimport { useDocumentInfo } from '../../../providers/DocumentInfo/index.js'\nimport { useLivePreviewContext } from '../../../providers/LivePreview/context.js'\nimport { useLocale } from '../../../providers/Locale/index.js'\nimport { ShimmerEffect } from '../../ShimmerEffect/index.js'\nimport { DeviceContainer } from '../Device/index.js'\nimport { IFrame } from '../IFrame/index.js'\nimport { LivePreviewToolbar } from '../Toolbar/index.js'\nimport './index.scss'\n\nconst baseClass = 'live-preview-window'\n\nexport const LivePreviewWindow: React.FC<EditViewProps> = (props) => {\n const {\n appIsReady,\n breakpoint,\n iframeRef,\n isLivePreviewing,\n loadedURL,\n popupRef,\n previewWindowType,\n url,\n } = useLivePreviewContext()\n\n const locale = useLocale()\n\n const { mostRecentUpdate } = useDocumentEvents()\n\n const [formState] = useAllFormFields()\n const { id, collectionSlug, globalSlug } = useDocumentInfo()\n\n /**\n * For client-side apps, send data through `window.postMessage`\n * The preview could either be an iframe embedded on the page\n * Or it could be a separate popup window\n * We need to transmit data to both accordingly\n */\n useEffect(() => {\n if (!isLivePreviewing || !appIsReady) {\n return\n }\n\n // For performance, do not reduce fields to values until after the iframe or popup has loaded\n if (formState) {\n const values = reduceFieldsToValues(formState, true)\n\n if (!values.id) {\n values.id = id\n }\n\n const message = {\n type: 'payload-live-preview',\n collectionSlug,\n data: values,\n externallyUpdatedRelationship: mostRecentUpdate,\n globalSlug,\n locale: locale.code,\n }\n\n // Post message to external popup window\n if (previewWindowType === 'popup' && popupRef.current) {\n popupRef.current.postMessage(message, url)\n }\n\n // Post message to embedded iframe\n if (previewWindowType === 'iframe' && iframeRef.current) {\n iframeRef.current.contentWindow?.postMessage(message, url)\n }\n }\n }, [\n formState,\n url,\n collectionSlug,\n globalSlug,\n id,\n previewWindowType,\n popupRef,\n appIsReady,\n iframeRef,\n mostRecentUpdate,\n locale,\n isLivePreviewing,\n loadedURL,\n ])\n\n /**\n * To support SSR, we transmit a `window.postMessage` event without a payload\n * This is because the event will ultimately trigger a server-side roundtrip\n * i.e., save, save draft, autosave, etc. will fire `router.refresh()`\n */\n useEffect(() => {\n if (!isLivePreviewing || !appIsReady) {\n return\n }\n\n const message = {\n type: 'payload-document-event',\n }\n\n // Post message to external popup window\n if (previewWindowType === 'popup' && popupRef.current) {\n popupRef.current.postMessage(message, url)\n }\n\n // Post message to embedded iframe\n if (previewWindowType === 'iframe' && iframeRef.current) {\n iframeRef.current.contentWindow?.postMessage(message, url)\n }\n }, [mostRecentUpdate, iframeRef, popupRef, previewWindowType, url, isLivePreviewing, appIsReady])\n\n if (previewWindowType !== 'iframe') {\n return null\n }\n\n return (\n <div\n className={[\n baseClass,\n isLivePreviewing && `${baseClass}--is-live-previewing`,\n breakpoint && breakpoint !== 'responsive' && `${baseClass}--has-breakpoint`,\n ]\n .filter(Boolean)\n .join(' ')}\n >\n <div className={`${baseClass}__wrapper`}>\n <LivePreviewToolbar {...props} />\n <div className={`${baseClass}__main`}>\n <DeviceContainer>{url ? <IFrame /> : <ShimmerEffect height=\"100%\" />}</DeviceContainer>\n </div>\n </div>\n </div>\n )\n}\n", "'use client'\nimport React, { useEffect } from 'react'\n\nimport { useResize } from '../../../hooks/useResize.js'\nimport { useLivePreviewContext } from '../../../providers/LivePreview/context.js'\n\nexport const DeviceContainer: React.FC<{\n children: React.ReactNode\n}> = (props) => {\n const { children } = props\n\n const deviceFrameRef = React.useRef<HTMLDivElement>(null)\n const outerFrameRef = React.useRef<HTMLDivElement>(null)\n\n const { breakpoint, setMeasuredDeviceSize, size: desiredSize, zoom } = useLivePreviewContext()\n\n // Keep an accurate measurement of the actual device size as it is truly rendered\n // This is helpful when `sizes` are non-number units like percentages, etc.\n\n const { size: measuredDeviceSize } = useResize(deviceFrameRef.current)\n\n const { size: outerFrameSize } = useResize(outerFrameRef.current)\n\n let deviceIsLargerThanFrame: boolean = false\n\n // Sync the measured device size with the context so that other components can use it\n // This happens from the bottom up so that as this component mounts and unmounts,\n // its size is freshly populated again upon re-mounting, i.e. going from iframe->popup->iframe\n useEffect(() => {\n if (measuredDeviceSize) {\n setMeasuredDeviceSize(measuredDeviceSize)\n }\n }, [measuredDeviceSize, setMeasuredDeviceSize])\n\n let x = '0'\n let margin = '0'\n\n if (breakpoint && breakpoint !== 'responsive') {\n x = '-50%'\n\n if (\n desiredSize &&\n measuredDeviceSize &&\n typeof zoom === 'number' &&\n typeof desiredSize.width === 'number' &&\n typeof desiredSize.height === 'number' &&\n typeof measuredDeviceSize.width === 'number' &&\n typeof measuredDeviceSize.height === 'number'\n ) {\n margin = '0 auto'\n const scaledDesiredWidth = desiredSize.width / zoom\n const scaledDeviceWidth = measuredDeviceSize.width * zoom\n const scaledDeviceDifferencePixels = scaledDesiredWidth - desiredSize.width\n deviceIsLargerThanFrame = scaledDeviceWidth > outerFrameSize.width\n\n if (deviceIsLargerThanFrame) {\n if (zoom > 1) {\n const differenceFromDeviceToFrame = measuredDeviceSize.width - outerFrameSize.width\n if (differenceFromDeviceToFrame < 0) {\n x = `${differenceFromDeviceToFrame / 2}px`\n } else {\n x = '0'\n }\n } else {\n x = '0'\n }\n } else {\n if (zoom >= 1) {\n x = `${scaledDeviceDifferencePixels / 2}px`\n } else {\n const differenceFromDeviceToFrame = outerFrameSize.width - scaledDeviceWidth\n x = `${differenceFromDeviceToFrame / 2}px`\n margin = '0'\n }\n }\n }\n }\n\n let width = zoom ? `${100 / zoom}%` : '100%'\n let height = zoom ? `${100 / zoom}%` : '100%'\n\n if (breakpoint !== 'responsive') {\n width = `${desiredSize?.width / (typeof zoom === 'number' ? zoom : 1)}px`\n height = `${desiredSize?.height / (typeof zoom === 'number' ? zoom : 1)}px`\n }\n\n return (\n <div\n ref={outerFrameRef}\n style={{\n height: '100%',\n width: '100%',\n }}\n >\n <div\n ref={deviceFrameRef}\n style={{\n height,\n margin,\n transform: `translate3d(${x}, 0, 0)`,\n width,\n }}\n >\n {children}\n </div>\n </div>\n )\n}\n", "'use client'\nimport React from 'react'\n\nimport { useLivePreviewContext } from '../../../providers/LivePreview/context.js'\nimport './index.scss'\n\nconst baseClass = 'live-preview-iframe'\n\nexport const IFrame: React.FC = () => {\n const { iframeRef, setLoadedURL, url, zoom } = useLivePreviewContext()\n\n return (\n <iframe\n className={baseClass}\n key={url}\n onLoad={() => {\n setLoadedURL(url)\n }}\n ref={iframeRef}\n src={url}\n style={{\n transform: typeof zoom === 'number' ? `scale(${zoom}) ` : undefined,\n }}\n title={url}\n />\n )\n}\n", "'use client'\nimport type { EditViewProps } from 'payload'\n\nimport { useDraggable } from '@dnd-kit/core'\nimport React from 'react'\n\nimport { DragHandleIcon } from '../../../icons/DragHandle/index.js'\nimport { useLivePreviewContext } from '../../../providers/LivePreview/context.js'\nimport { ToolbarControls } from './Controls/index.js'\nimport './index.scss'\n\nconst baseClass = 'live-preview-toolbar'\n\nconst DraggableToolbar: React.FC<EditViewProps> = (props) => {\n const { toolbarPosition } = useLivePreviewContext()\n\n const { attributes, listeners, setNodeRef, transform } = useDraggable({\n id: 'live-preview-toolbar',\n })\n\n return (\n <div\n className={[baseClass, `${baseClass}--draggable`].join(' ')}\n style={{\n left: `${toolbarPosition.x}px`,\n top: `${toolbarPosition.y}px`,\n ...(transform\n ? {\n transform: transform\n ? `translate3d(${transform?.x || 0}px, ${transform?.y || 0}px, 0)`\n : undefined,\n }\n : {}),\n }}\n >\n <button\n {...listeners}\n {...attributes}\n className={`${baseClass}__drag-handle`}\n ref={setNodeRef}\n type=\"button\"\n >\n <DragHandleIcon />\n </button>\n <ToolbarControls {...props} />\n </div>\n )\n}\n\nconst StaticToolbar: React.FC<EditViewProps> = (props) => {\n return (\n <div className={[baseClass, `${baseClass}--static`].join(' ')}>\n <ToolbarControls {...props} />\n </div>\n )\n}\n\nexport const LivePreviewToolbar: React.FC<\n {\n draggable?: boolean\n } & EditViewProps\n> = (props) => {\n const { draggable } = props\n\n if (draggable) {\n return <DraggableToolbar {...props} />\n }\n\n return <StaticToolbar {...props} />\n}\n", "'use client'\n\nimport type { EditViewProps } from 'payload'\n\nimport React from 'react'\n\nimport { ChevronIcon } from '../../../../icons/Chevron/index.js'\nimport { ExternalLinkIcon } from '../../../../icons/ExternalLink/index.js'\nimport { XIcon } from '../../../../icons/X/index.js'\nimport { useLivePreviewContext } from '../../../../providers/LivePreview/context.js'\nimport { useTranslation } from '../../../../providers/Translation/index.js'\nimport { Popup, PopupList } from '../../../Popup/index.js'\nimport { PreviewFrameSizeInput } from '../SizeInput/index.js'\nimport './index.scss'\n\nconst baseClass = 'live-preview-toolbar-controls'\nconst zoomOptions = [50, 75, 100, 125, 150, 200]\n\nexport const ToolbarControls: React.FC<EditViewProps> = () => {\n const { breakpoint, breakpoints, setBreakpoint, setPreviewWindowType, setZoom, url, zoom } =\n useLivePreviewContext()\n\n const { t } = useTranslation()\n\n const customOption = {\n label: t('general:custom'),\n value: 'custom',\n }\n\n return (\n <div className={baseClass}>\n {breakpoints?.length > 0 && (\n <Popup\n button={\n <React.Fragment>\n <span>\n {breakpoints.find((bp) => bp.name == breakpoint)?.label ?? customOption.label}\n </span>\n <ChevronIcon className={`${baseClass}__chevron`} />\n </React.Fragment>\n }\n className={`${baseClass}__breakpoint`}\n horizontalAlign=\"right\"\n render={({ close }) => (\n <PopupList.ButtonGroup>\n <React.Fragment>\n {breakpoints.map((bp) => (\n <PopupList.Button\n active={bp.name == breakpoint}\n key={bp.name}\n onClick={() => {\n setBreakpoint(bp.name)\n close()\n }}\n >\n {bp.label}\n </PopupList.Button>\n ))}\n {/* Dynamically add this option so that it only appears when the width and height inputs are explicitly changed */}\n {breakpoint === 'custom' && (\n <PopupList.Button\n active={breakpoint == customOption.value}\n onClick={() => {\n setBreakpoint(customOption.value)\n close()\n }}\n >\n {customOption.label}\n </PopupList.Button>\n )}\n </React.Fragment>\n </PopupList.ButtonGroup>\n )}\n showScrollbar\n verticalAlign=\"bottom\"\n />\n )}\n <div className={`${baseClass}__device-size`}>\n <PreviewFrameSizeInput axis=\"x\" />\n <span className={`${baseClass}__size-divider`}>\n <XIcon />\n </span>\n <PreviewFrameSizeInput axis=\"y\" />\n </div>\n <Popup\n button={\n <React.Fragment>\n <span>{zoom * 100}%</span>\n <ChevronIcon className={`${baseClass}__chevron`} />\n </React.Fragment>\n }\n className={`${baseClass}__zoom`}\n horizontalAlign=\"right\"\n render={({ close }) => (\n <PopupList.ButtonGroup>\n <React.Fragment>\n {zoomOptions.map((zoomValue) => (\n <PopupList.Button\n active={zoom * 100 == zoomValue}\n key={zoomValue}\n onClick={() => {\n setZoom(zoomValue / 100)\n close()\n }}\n >\n {zoomValue}%\n </PopupList.Button>\n ))}\n </React.Fragment>\n </PopupList.ButtonGroup>\n )}\n showScrollbar\n verticalAlign=\"bottom\"\n />\n <a\n className={`${baseClass}__external`}\n href={url}\n onClick={(e) => {\n e.preventDefault()\n setPreviewWindowType('popup')\n }}\n target=\"_blank\"\n title=\"Open in new window\"\n type=\"button\"\n >\n <ExternalLinkIcon />\n </a>\n </div>\n )\n}\n", "'use client'\nimport React, { useCallback, useEffect } from 'react'\n\nimport { useLivePreviewContext } from '../../../../providers/LivePreview/context.js'\nimport './index.scss'\n\nconst baseClass = 'toolbar-input'\n\nexport const PreviewFrameSizeInput: React.FC<{\n axis?: 'x' | 'y'\n}> = (props) => {\n const { axis } = props\n\n const { breakpoint, measuredDeviceSize, setBreakpoint, setSize, size, zoom } =\n useLivePreviewContext()\n\n const [internalState, setInternalState] = React.useState<number>(\n (axis === 'x' ? measuredDeviceSize?.width : measuredDeviceSize?.height) || 0,\n )\n\n // when the input is changed manually, we need to set the breakpoint as `custom`\n // this will then allow us to set an explicit width and height\n const handleChange = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n let newValue = Number(e.target.value)\n\n if (newValue < 0) {\n newValue = 0\n }\n\n setInternalState(newValue)\n setBreakpoint('custom')\n\n // be sure to set _both_ axis values to so that the other axis doesn't fallback to 0 on initial change\n // this is because the `responsive` size is '100%' in CSS, and `0` in initial state\n setSize({\n type: 'reset',\n value: {\n height: axis === 'y' ? newValue : Number(measuredDeviceSize?.height.toFixed(0)) * zoom,\n width: axis === 'x' ? newValue : Number(measuredDeviceSize?.width.toFixed(0)) * zoom,\n },\n })\n },\n [axis, setBreakpoint, measuredDeviceSize, setSize, zoom],\n )\n\n // if the breakpoint is `responsive` then the device's div will have `100%` width and height\n // so we need to take the measurements provided by `actualDeviceSize` and sync internal state\n useEffect(() => {\n if (breakpoint === 'responsive' && measuredDeviceSize) {\n if (axis === 'x') {\n setInternalState(Number(measuredDeviceSize.width.toFixed(0)) * zoom)\n } else {\n setInternalState(Number(measuredDeviceSize.height.toFixed(0)) * zoom)\n }\n }\n\n if (breakpoint !== 'responsive' && size) {\n setInternalState(axis === 'x' ? size.width : size.height)\n }\n }, [breakpoint, axis, measuredDeviceSize, size, zoom])\n\n return (\n <input\n className={baseClass}\n min={0}\n name={axis === 'x' ? 'live-preview-width' : 'live-preview-height'}\n onChange={handleChange}\n step={1}\n type=\"number\"\n value={internalState || 0}\n />\n )\n}\n", "import type { AppRouterInstance } from 'next/dist/shared/lib/app-router-context.shared-runtime.js'\n\nimport { formatAdminURL } from 'payload/shared'\n\ntype BackToDashboardProps = {\n adminRoute: string\n router: AppRouterInstance\n serverURL?: string\n}\n\nexport const handleBackToDashboard = ({ adminRoute, router, serverURL }: BackToDashboardProps) => {\n const redirectRoute = formatAdminURL({\n adminRoute,\n path: '',\n serverURL,\n })\n router.push(redirectRoute)\n}\n", "import type { AppRouterInstance } from 'next/dist/shared/lib/app-router-context.shared-runtime.js'\n\nimport { formatAdminURL } from 'payload/shared'\n\ntype GoBackProps = {\n adminRoute: string\n collectionSlug: string\n router: AppRouterInstance\n serverURL?: string\n}\n\nexport const handleGoBack = ({ adminRoute, collectionSlug, router, serverURL }: GoBackProps) => {\n const redirectRoute = formatAdminURL({\n adminRoute,\n path: collectionSlug ? `/collections/${collectionSlug}` : '/',\n })\n router.push(redirectRoute)\n}\n", "import type { ClientUser } from 'payload'\n\nexport interface HandleTakeOverParams {\n clearRouteCache?: () => void\n collectionSlug?: string\n documentLockStateRef: React.RefObject<{\n hasShownLockedModal: boolean\n isLocked: boolean\n user: ClientUser | number | string\n }>\n globalSlug?: string\n id: number | string\n isLockingEnabled: boolean\n isWithinDoc: boolean\n setCurrentEditor: (value: React.SetStateAction<ClientUser | number | string>) => void\n setIsReadOnlyForIncomingUser?: (value: React.SetStateAction<boolean>) => void\n updateDocumentEditor: (\n docID: number | string,\n slug: string,\n user: ClientUser | number | string,\n ) => Promise<void>\n user: ClientUser | number | string\n}\n\nexport const handleTakeOver = async ({\n id,\n clearRouteCache,\n collectionSlug,\n documentLockStateRef,\n globalSlug,\n isLockingEnabled,\n isWithinDoc,\n setCurrentEditor,\n setIsReadOnlyForIncomingUser,\n updateDocumentEditor,\n user,\n}: HandleTakeOverParams): Promise<void> => {\n if (!isLockingEnabled) {\n return\n }\n\n try {\n // Call updateDocumentEditor to update the document's owner to the current user\n await updateDocumentEditor(id, collectionSlug ?? globalSlug, user)\n\n if (!isWithinDoc) {\n documentLockStateRef.current.hasShownLockedModal = true\n }\n\n // Update the locked state to reflect the current user as the owner\n documentLockStateRef.current = {\n hasShownLockedModal: documentLockStateRef.current?.hasShownLockedModal,\n isLocked: true,\n user,\n }\n setCurrentEditor(user)\n\n // If this is a takeover within the document, ensure the document is editable\n if (isWithinDoc && setIsReadOnlyForIncomingUser) {\n setIsReadOnlyForIncomingUser(false)\n }\n\n // Need to clear the route cache to refresh the page and update readOnly state for server rendered components\n if (clearRouteCache) {\n clearRouteCache()\n }\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error('Error during document takeover:', error)\n }\n}\n", "'use client'\n\nimport type { SanitizedFieldPermissions } from 'payload'\n\nimport { formatAdminURL, getFieldPermissions } from 'payload/shared'\nimport React, { Fragment, useCallback, useEffect, useMemo, useState } from 'react'\nimport { toast } from 'sonner'\n\nimport type { Props } from './types.js'\n\nimport { Button } from '../../../elements/Button/index.js'\nimport { EmailAndUsernameFields } from '../../../elements/EmailAndUsername/index.js'\nimport { CheckboxField } from '../../../fields/Checkbox/index.js'\nimport { ConfirmPasswordField } from '../../../fields/ConfirmPassword/index.js'\nimport { PasswordField } from '../../../fields/Password/index.js'\nimport { useFormFields, useFormModified } from '../../../forms/Form/context.js'\nimport { useConfig } from '../../../providers/Config/index.js'\nimport { useDocumentInfo } from '../../../providers/DocumentInfo/index.js'\nimport { useTranslation } from '../../../providers/Translation/index.js'\nimport './index.scss'\nimport { APIKey } from './APIKey.js'\n\nconst baseClass = 'auth-fields'\n\nexport const Auth: React.FC<Props> = (props) => {\n const {\n className,\n collectionSlug,\n disableLocalStrategy,\n email,\n loginWithUsername,\n operation,\n readOnly,\n requirePassword,\n setValidateBeforeSubmit,\n useAPIKey,\n username,\n verify,\n } = props\n\n const [changingPassword, setChangingPassword] = useState(requirePassword)\n const enableAPIKey = useFormFields(([fields]) => (fields && fields?.enableAPIKey) || null)\n const dispatchFields = useFormFields((reducer) => reducer[1])\n const modified = useFormModified()\n const { i18n, t } = useTranslation()\n const { docPermissions, isEditing, isInitializing, isTrashed } = useDocumentInfo()\n\n const {\n config: {\n routes: { api },\n },\n } = useConfig()\n\n let showPasswordFields: SanitizedFieldPermissions = true\n let showUnlock = true\n const hasPasswordFieldOverride =\n typeof docPermissions.fields === 'object' && 'password' in docPermissions.fields\n const hasLoginFieldOverride =\n typeof docPermissions.fields === 'object' &&\n ('username' in docPermissions.fields || 'email' in docPermissions.fields)\n\n if (hasPasswordFieldOverride) {\n const { permissions: passwordPermissions } = getFieldPermissions({\n field: { name: 'password', type: 'text' },\n operation,\n parentName: '',\n permissions: docPermissions?.fields,\n })\n\n if (operation === 'create') {\n showPasswordFields =\n passwordPermissions === true ||\n ((typeof passwordPermissions === 'object' &&\n passwordPermissions.create) as SanitizedFieldPermissions)\n } else {\n showPasswordFields =\n passwordPermissions === true ||\n ((typeof passwordPermissions === 'object' &&\n passwordPermissions.update) as SanitizedFieldPermissions)\n }\n }\n\n if (hasLoginFieldOverride) {\n const hasEmailAndUsernameFields =\n loginWithUsername && (loginWithUsername.requireEmail || loginWithUsername.allowEmailLogin)\n\n const { operation: emailPermission } = getFieldPermissions({\n field: { name: 'email', type: 'text' },\n operation: 'read',\n parentName: '',\n permissions: docPermissions?.fields,\n })\n\n const { operation: usernamePermission } = getFieldPermissions({\n field: { name: 'username', type: 'text' },\n operation: 'read',\n parentName: '',\n permissions: docPermissions?.fields,\n })\n\n if (hasEmailAndUsernameFields) {\n showUnlock = usernamePermission || emailPermission\n } else if (loginWithUsername && !hasEmailAndUsernameFields) {\n showUnlock = usernamePermission\n } else {\n showUnlock = emailPermission\n }\n }\n\n const enableFields =\n (!disableLocalStrategy ||\n (typeof disableLocalStrategy === 'object' && disableLocalStrategy.enableFields === true)) &&\n (showUnlock || showPasswordFields)\n\n const disabled = readOnly || isInitializing || isTrashed\n\n const apiKeyPermissions =\n docPermissions?.fields === true ? true : docPermissions?.fields?.enableAPIKey\n\n const apiKeyReadOnly =\n readOnly ||\n apiKeyPermissions === true ||\n (apiKeyPermissions && typeof apiKeyPermissions === 'object' && !apiKeyPermissions?.update)\n\n const enableAPIKeyReadOnly =\n readOnly || (apiKeyPermissions !== true && !apiKeyPermissions?.update)\n\n const canReadApiKey = apiKeyPermissions === true || apiKeyPermissions?.read\n\n const hasPermissionToUnlock: boolean = useMemo(() => {\n if (docPermissions) {\n return Boolean('unlock' in docPermissions ? docPermissions.unlock : undefined)\n }\n\n return false\n }, [docPermissions])\n\n const handleChangePassword = useCallback(\n (changingPassword: boolean) => {\n if (changingPassword) {\n setValidateBeforeSubmit(true)\n\n dispatchFields({\n type: 'UPDATE',\n errorMessage: t('validation:required'),\n path: 'password',\n valid: false,\n })\n\n dispatchFields({\n type: 'UPDATE',\n errorMessage: t('validation:required'),\n path: 'confirm-password',\n valid: false,\n })\n } else {\n setValidateBeforeSubmit(false)\n dispatchFields({ type: 'REMOVE', path: 'password' })\n dispatchFields({ type: 'REMOVE', path: 'confirm-password' })\n }\n\n setChangingPassword(changingPassword)\n },\n [dispatchFields, t, setValidateBeforeSubmit],\n )\n\n const unlock = useCallback(async () => {\n const url = formatAdminURL({\n apiRoute: api,\n path: `/${collectionSlug}/unlock`,\n })\n const response = await fetch(url, {\n body:\n loginWithUsername && username ? JSON.stringify({ username }) : JSON.stringify({ email }),\n credentials: 'include',\n headers: {\n 'Accept-Language': i18n.language,\n 'Content-Type': 'application/json',\n },\n method: 'post',\n })\n\n if (response.status === 200) {\n toast.success(t('authentication:successfullyUnlocked'))\n } else {\n toast.error(t('authentication:failedToUnlock'))\n }\n }, [i18n, api, collectionSlug, email, username, t, loginWithUsername])\n\n useEffect(() => {\n if (!modified) {\n setChangingPassword(false)\n }\n }, [modified])\n\n const showAuthBlock = enableFields\n const showAPIKeyBlock = useAPIKey && canReadApiKey\n const showVerifyBlock = verify && isEditing\n\n if (!(showAuthBlock || showAPIKeyBlock || showVerifyBlock)) {\n return null\n }\n\n return (\n <div className={[baseClass, className].filter(Boolean).join(' ')}>\n {enableFields && (\n <React.Fragment>\n <EmailAndUsernameFields\n loginWithUsername={loginWithUsername}\n operation={operation}\n permissions={docPermissions?.fields}\n readOnly={readOnly || isTrashed}\n t={t}\n />\n {(changingPassword || requirePassword) && (!disableLocalStrategy || !enableFields) && (\n <div className={`${baseClass}__changing-password`}>\n <PasswordField\n autoComplete=\"new-password\"\n field={{\n name: 'password',\n label: t('authentication:newPassword'),\n required: true,\n }}\n indexPath=\"\"\n parentPath=\"\"\n parentSchemaPath=\"\"\n path=\"password\"\n schemaPath=\"password\"\n />\n <ConfirmPasswordField disabled={readOnly || isTrashed} />\n </div>\n )}\n <div className={`${baseClass}__controls`}>\n {changingPassword && !requirePassword && (\n <Button\n buttonStyle=\"secondary\"\n disabled={disabled}\n id=\"cancel-change-password\"\n onClick={() => handleChangePassword(false)}\n size=\"medium\"\n >\n {t('general:cancel')}\n </Button>\n )}\n {!changingPassword &&\n !requirePassword &&\n !disableLocalStrategy &&\n showPasswordFields && (\n <Button\n buttonStyle=\"secondary\"\n disabled={disabled}\n id=\"change-password\"\n onClick={() => handleChangePassword(true)}\n size=\"medium\"\n >\n {t('authentication:changePassword')}\n </Button>\n )}\n {!changingPassword && operation === 'update' && hasPermissionToUnlock && (\n <Button\n buttonStyle=\"secondary\"\n disabled={disabled || !showUnlock}\n id=\"force-unlock\"\n onClick={() => void unlock()}\n size=\"medium\"\n >\n {t('authentication:forceUnlock')}\n </Button>\n )}\n </div>\n </React.Fragment>\n )}\n {useAPIKey && (\n <div className={`${baseClass}__api-key`}>\n {canReadApiKey && (\n <Fragment>\n <CheckboxField\n field={{\n name: 'enableAPIKey',\n admin: { disabled, readOnly: enableAPIKeyReadOnly },\n label: t('authentication:enableAPIKey'),\n }}\n path=\"enableAPIKey\"\n schemaPath={`${collectionSlug}.enableAPIKey`}\n />\n <APIKey enabled={!!enableAPIKey?.value} readOnly={apiKeyReadOnly} />\n </Fragment>\n )}\n </div>\n )}\n {verify && isEditing && (\n <CheckboxField\n field={{\n name: '_verified',\n admin: { disabled, readOnly },\n label: t('authentication:verified'),\n }}\n path=\"_verified\"\n schemaPath={`${collectionSlug}._verified`}\n />\n )}\n </div>\n )\n}\n", "'use client'\nimport type { PayloadRequest, TextFieldClient } from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport { text } from 'payload/shared'\nimport React, { useEffect, useMemo, useState } from 'react'\nimport { v4 as uuidv4 } from 'uuid'\n\nimport { Button } from '../../../elements/Button/index.js'\nimport { CopyToClipboard } from '../../../elements/CopyToClipboard/index.js'\nimport { GenerateConfirmation } from '../../../elements/GenerateConfirmation/index.js'\nimport { useFormFields } from '../../../forms/Form/context.js'\nimport { useField } from '../../../forms/useField/index.js'\nimport { EyeIcon } from '../../../icons/Eye/index.js'\nimport { useConfig } from '../../../providers/Config/index.js'\nimport { useDocumentInfo } from '../../../providers/DocumentInfo/index.js'\nimport { useTranslation } from '../../../providers/Translation/index.js'\n\nconst path = 'apiKey'\nconst baseClass = 'api-key'\nconst fieldBaseClass = 'field-type'\n\nexport const APIKey: React.FC<{ readonly enabled: boolean; readonly readOnly?: boolean }> = ({\n enabled,\n readOnly,\n}) => {\n const [initialAPIKey] = useState(uuidv4())\n const [highlightedField, setHighlightedField] = useState(false)\n const [showKey, setShowKey] = useState(false)\n const { i18n, t } = useTranslation()\n const { config, getEntityConfig } = useConfig()\n const { collectionSlug } = useDocumentInfo()\n\n const apiKey = useFormFields(([fields]) => (fields && fields[path]) || null)\n\n const apiKeyField: TextFieldClient = getEntityConfig({ collectionSlug })?.fields?.find(\n (field) => 'name' in field && field.name === 'apiKey',\n ) as TextFieldClient\n\n const validate = (val) =>\n text(val, {\n name: 'apiKey',\n type: 'text',\n blockData: {},\n data: {},\n event: 'onChange',\n maxLength: 48,\n minLength: 24,\n path: ['apiKey'],\n preferences: { fields: {} },\n req: {\n payload: {\n config,\n },\n t,\n } as unknown as PayloadRequest,\n siblingData: {},\n })\n\n const apiKeyValue = apiKey?.value\n\n const apiKeyLabel = useMemo(() => {\n let label: Record<string, string> | string = 'API Key'\n\n if (apiKeyField?.label) {\n label = apiKeyField.label\n }\n\n return getTranslation(label, i18n)\n }, [apiKeyField, i18n])\n\n const APIKeyLabel = useMemo(\n () => (\n <label className={`${baseClass}__label field-label`} htmlFor=\"apiKey\">\n <span>{apiKeyLabel}</span>\n <CopyToClipboard value={apiKeyValue as string} />\n </label>\n ),\n [apiKeyLabel, apiKeyValue],\n )\n\n const fieldType = useField({\n path: 'apiKey',\n validate,\n })\n\n const highlightField = () => {\n if (highlightedField) {\n setHighlightedField(false)\n }\n setTimeout(() => {\n setHighlightedField(true)\n }, 1)\n }\n\n const { setValue, value } = fieldType\n\n useEffect(() => {\n if (!apiKeyValue && enabled) {\n setValue(initialAPIKey)\n }\n if (!enabled && apiKeyValue) {\n setValue(null)\n }\n }, [apiKeyValue, enabled, setValue, initialAPIKey])\n\n useEffect(() => {\n if (highlightedField) {\n setTimeout(() => {\n setHighlightedField(false)\n }, 10000)\n }\n }, [highlightedField])\n\n if (!enabled) {\n return null\n }\n\n return (\n <React.Fragment>\n <div className={[fieldBaseClass, 'api-key', 'read-only'].filter(Boolean).join(' ')}>\n {APIKeyLabel}\n <div className={`${baseClass}__input-wrap`}>\n <input\n aria-label={apiKeyLabel}\n className={highlightedField ? 'highlight' : undefined}\n disabled\n id=\"apiKey\"\n name=\"apiKey\"\n type={showKey ? 'text' : 'password'}\n value={(value as string) || ''}\n />\n <div className={`${baseClass}__toggle-button-wrap`}>\n <Button\n buttonStyle=\"none\"\n className={`${baseClass}__toggle-button`}\n icon={<EyeIcon active={showKey} />}\n onClick={() => setShowKey((prev) => !prev)}\n />\n </div>\n </div>\n </div>\n {!readOnly && (\n <GenerateConfirmation highlightField={highlightField} setKey={() => setValue(uuidv4())} />\n )}\n </React.Fragment>\n )\n}\n", "'use client'\nimport type { SanitizedCollectionConfig, SanitizedGlobalConfig } from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport { formatAdminURL } from 'payload/shared'\nimport { useEffect } from 'react'\n\nimport type { StepNavItem } from '../../../elements/StepNav/index.js'\n\nimport { useStepNav } from '../../../elements/StepNav/index.js'\nimport { useConfig } from '../../../providers/Config/index.js'\nimport { useDocumentInfo } from '../../../providers/DocumentInfo/index.js'\nimport { useDocumentTitle } from '../../../providers/DocumentTitle/index.js'\nimport { useEntityVisibility } from '../../../providers/EntityVisibility/index.js'\nimport { useTranslation } from '../../../providers/Translation/index.js'\n\nexport const SetDocumentStepNav: React.FC<{\n collectionSlug?: SanitizedCollectionConfig['slug']\n globalLabel?: SanitizedGlobalConfig['label']\n globalSlug?: SanitizedGlobalConfig['slug']\n id?: number | string\n isTrashed?: boolean\n pluralLabel?: SanitizedCollectionConfig['labels']['plural']\n useAsTitle?: SanitizedCollectionConfig['admin']['useAsTitle']\n view?: string\n}> = (props) => {\n const { id, collectionSlug, globalSlug, isTrashed, pluralLabel, useAsTitle } = props\n\n const view: string | undefined = props?.view || undefined\n\n const { isEditing, isInitializing } = useDocumentInfo()\n const { title } = useDocumentTitle()\n\n const { isEntityVisible } = useEntityVisibility()\n const isVisible = isEntityVisible({ collectionSlug, globalSlug })\n\n const { setStepNav } = useStepNav()\n\n const { i18n, t } = useTranslation()\n\n const {\n config: {\n routes: { admin: adminRoute },\n serverURL,\n },\n } = useConfig()\n\n useEffect(() => {\n const nav: StepNavItem[] = []\n\n if (!isInitializing) {\n if (collectionSlug) {\n // Collection label\n nav.push({\n label: getTranslation(pluralLabel, i18n),\n url: isVisible\n ? formatAdminURL({\n adminRoute,\n path: `/collections/${collectionSlug}`,\n })\n : undefined,\n })\n\n // Trash breadcrumb (if in trash view)\n if (isTrashed) {\n nav.push({\n label: t('general:trash'),\n url: isVisible\n ? formatAdminURL({\n adminRoute,\n path: `/collections/${collectionSlug}/trash`,\n })\n : undefined,\n })\n }\n\n // Document label\n if (isEditing) {\n nav.push({\n label: (useAsTitle && useAsTitle !== 'id' && title) || `${id}`,\n url: isVisible\n ? formatAdminURL({\n adminRoute,\n path: isTrashed\n ? `/collections/${collectionSlug}/trash/${id}`\n : `/collections/${collectionSlug}/${id}`,\n })\n : undefined,\n })\n } else {\n nav.push({\n label: t('general:createNew'),\n })\n }\n } else if (globalSlug) {\n nav.push({\n label: title,\n url: isVisible\n ? formatAdminURL({\n adminRoute,\n path: `/globals/${globalSlug}`,\n })\n : undefined,\n })\n }\n\n // Fallback view (used for versions, previews, etc.)\n if (view) {\n nav.push({\n label: view,\n })\n }\n\n setStepNav(nav)\n }\n }, [\n setStepNav,\n isInitializing,\n isEditing,\n pluralLabel,\n id,\n isTrashed,\n useAsTitle,\n adminRoute,\n t,\n i18n,\n title,\n collectionSlug,\n globalSlug,\n serverURL,\n view,\n isVisible,\n ])\n\n return null\n}\n", "'use client'\nimport type { ClientCollectionConfig, ClientConfig, ClientGlobalConfig } from 'payload'\n\nimport { useEffect, useRef } from 'react'\n\nimport { useFormFields } from '../../../forms/Form/context.js'\nimport { useDocumentTitle } from '../../../providers/DocumentTitle/index.js'\nimport { useTranslation } from '../../../providers/Translation/index.js'\nimport { formatDocTitle } from '../../../utilities/formatDocTitle/index.js'\n\nexport const SetDocumentTitle: React.FC<{\n collectionConfig?: ClientCollectionConfig\n config?: ClientConfig\n fallback: string\n globalConfig?: ClientGlobalConfig\n}> = (props) => {\n const { collectionConfig, config, fallback, globalConfig } = props\n\n const useAsTitle = collectionConfig?.admin?.useAsTitle\n\n const field = useFormFields(([fields]) => (useAsTitle && fields && fields?.[useAsTitle]) || null)\n\n const hasInitialized = useRef(false)\n\n const { i18n } = useTranslation()\n\n const { setDocumentTitle } = useDocumentTitle()\n\n const dateFormatFromConfig = config?.admin?.dateFormat\n\n const title = formatDocTitle({\n collectionConfig,\n data: { id: '', [useAsTitle]: field?.value || '' },\n dateFormat: dateFormatFromConfig,\n fallback,\n globalConfig,\n i18n,\n })\n\n useEffect(() => {\n if (!hasInitialized.current) {\n hasInitialized.current = true\n return\n }\n\n setDocumentTitle(title)\n }, [setDocumentTitle, title])\n\n return null\n}\n", "import React from 'react'\n\nimport './index.scss'\n\nconst baseClass = 'field-diff-label'\n\nexport const FieldDiffLabel: React.FC<{ children?: React.ReactNode }> = ({ children }) => (\n <div className={baseClass}>{children}</div>\n)\n", "import type { LabelFunction, StaticLabel } from 'payload'\n\nimport './index.scss'\n\nimport { getTranslation, type I18nClient } from '@payloadcms/translations'\n\nimport { FieldDiffLabel } from '../FieldDiffLabel/index.js'\n\nconst baseClass = 'field-diff'\n\nexport const FieldDiffContainer: React.FC<{\n className?: string\n From: React.ReactNode\n i18n: I18nClient\n label: {\n label?: false | LabelFunction | StaticLabel\n locale?: string\n }\n nestingLevel?: number\n To: React.ReactNode\n}> = (args) => {\n const {\n className,\n From,\n i18n,\n label: { label, locale },\n nestingLevel = 0,\n To,\n } = args\n\n return (\n <div\n className={`${baseClass}-container${className ? ` ${className}` : ''} nested-level-${nestingLevel}`}\n style={\n nestingLevel\n ? ({\n // Need to use % instead of fr, as calc() doesn't work with fr when this is used in gridTemplateColumns\n '--left-offset': `calc(50% - (${nestingLevel} * calc( calc(var(--base)* 0.5) - 2.5px )))`,\n } as React.CSSProperties)\n : ({\n '--left-offset': '50%',\n } as React.CSSProperties)\n }\n >\n <FieldDiffLabel>\n {locale && <span className={`${baseClass}__locale-label`}>{locale}</span>}\n {typeof label !== 'function' && getTranslation(label || '', i18n)}\n </FieldDiffLabel>\n <div\n className={`${baseClass}-content`}\n style={\n nestingLevel\n ? {\n gridTemplateColumns: `calc(var(--left-offset) - calc(var(--base)*0.5) ) calc(50% - calc(var(--base)*0.5) + calc(50% - var(--left-offset)))`,\n }\n : undefined\n }\n >\n {From}\n {To}\n </div>\n </div>\n )\n}\n"],
"mappings": "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X,EAAG,CACD,KAAM,IACN,QAAS,2BACX,EAAG,CACD,KAAM,IACN,QAAS,iFACX,EAAG,CACD,KAAM,IACN,QAAS,yGACX,EAAG,CACD,KAAM,KACN,QAAS,QACX,EAAG,CACD,KAAM,KACN,QAAS,QACX,EAAG,CACD,KAAM,IACN,QAAS,6CACX,EAAG,CACD,KAAM,IACN,QAAS,2FACX,EAAG,CACD,KAAM,KACN,QAAS,QACX,EAAG,CACD,KAAM,KACN,QAAS,QACX,EAAG,CACD,KAAM,IACN,QAAS,mPACX,EAAG,CACD,KAAM,KACN,QAAS,QACX,EAAG,CACD,KAAM,KACN,QAAS,QACX,EAAG,CACD,KAAM,KACN,QAAS,QACX,EAAG,CACD,KAAM,IACN,QAAS,yDACX,EAAG,CACD,KAAM,IACN,QAAS,iCACX,EAAG,CACD,KAAM,IACN,QAAS,mGACX,EAAG,CACD,KAAM,IACN,QAAS,mGACX,EAAG,CACD,KAAM,IACN,QAAS,uFACX,EAAG,CACD,KAAM,KACN,QAAS,QACX,EAAG,CACD,KAAM,IACN,QAAS,iMACX,EAAG,CACD,KAAM,IACN,QAAS,6CACX,EAAG,CACD,KAAM,KACN,QAAS,QACX,EAAG,CACD,KAAM,IACN,QAAS,yDACX,EAAG,CACD,KAAM,IACN,QAAS,2BACX,EAAG,CACD,KAAM,IACN,QAAS,qFACX,EAAG,CACD,KAAM,IACN,QAAS,iFACX,EAAG,CACD,KAAM,IACN,QAAS,mMACX,EAAG,CACD,KAAM,KACN,QAAS,QACX,EAAG,CACD,KAAM,KACN,QAAS,kBACX,EAAG,CACD,KAAM,KACN,QAAS,QACX,EAAG,CACD,KAAM,KACN,QAAS,QACX,EAAG,CACD,KAAM,KACN,QAAS,cACX,EAAG,CACD,KAAM,KACN,QAAS,QACX,EAAG,CACD,KAAM,IACN,QAAS,mDACX,EAAG,CACD,KAAM,IACN,QAAS,yEACX,EAAG,CACD,KAAM,IACN,QAAS,iFACX,EAAG,CACD,KAAM,KACN,QAAS,cACX,EAAG,CACD,KAAM,IACN,QAAS,+KACX,EAAG,CACD,KAAM,IACN,QAAS,iCACX,EAAG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",
"names": ["require_scheduler_production", "__commonJSMin", "exports", "push", "heap", "node", "index", "a", "parentIndex", "parent", "compare", "peek", "pop", "first", "last", "length", "halfLength", "leftIndex", "left", "rightIndex", "right", "b", "diff", "localPerformance", "localDate", "initialTime", "taskQueue", "timerQueue", "taskIdCounter", "currentTask", "currentPriorityLevel", "isPerformingWork", "isHostCallbackScheduled", "isHostTimeoutScheduled", "localSetTimeout", "localClearTimeout", "localSetImmediate", "advanceTimers", "currentTime", "timer", "handleTimeout", "requestHostCallback", "firstTimer", "requestHostTimeout", "isMessageLoopRunning", "taskTimeoutID", "frameInterval", "startTime", "shouldYieldToHost", "performWorkUntilDeadline", "hasMoreWork", "previousPriorityLevel", "callback", "continuationCallback", "schedulePerformWorkUntilDeadline", "channel", "port", "ms", "task", "fps", "eventHandler", "priorityLevel", "options", "timeout", "parentPriorityLevel", "require_scheduler", "__commonJSMin", "exports", "module", "require_react_is_production_min", "__commonJSMin", "exports", "b", "c", "d", "e", "f", "g", "h", "k", "l", "m", "n", "p", "q", "r", "t", "v", "w", "x", "y", "z", "a", "u", "A", "require_react_is", "__commonJSMin", "exports", "module", "require_hoist_non_react_statics_cjs", "__commonJSMin", "exports", "module", "reactIs", "REACT_STATICS", "KNOWN_STATICS", "FORWARD_REF_STATICS", "MEMO_STATICS", "TYPE_STATICS", "getStatics", "component", "defineProperty", "getOwnPropertyNames", "getOwnPropertySymbols", "getOwnPropertyDescriptor", "getPrototypeOf", "objectPrototype", "hoistNonReactStatics", "targetComponent", "sourceComponent", "blacklist", "inheritedComponent", "keys", "targetStatics", "sourceStatics", "i", "key", "descriptor", "require_objectid", "__commonJSMin", "exports", "module", "MACHINE_ID", "index", "ObjectID", "pid", "BufferCtr", "isBuffer", "obj", "hexTable", "i", "checkForHexRegExp", "decodeLookup", "id", "valid", "time", "hex", "hexString", "data", "otherId", "timestamp", "inc", "next", "length", "n", "inspect", "require_src", "__commonJSMin", "exports", "module", "isUndefined", "value", "isNull", "isBoolean", "isObject", "isArray", "isDate", "isBlob", "isReactNative", "isFile", "initCfg", "serialize", "obj", "cfg", "fd", "pre", "index", "key", "prop", "require_crypt", "__commonJSMin", "exports", "module", "base64map", "crypt", "n", "b", "i", "bytes", "words", "hex", "c", "base64", "triplet", "j", "imod4", "require_charenc", "__commonJSMin", "exports", "module", "charenc", "str", "bytes", "i", "require_is_buffer", "__commonJSMin", "exports", "module", "obj", "isBuffer", "isSlowBuffer", "require_md5", "__commonJSMin", "exports", "module", "crypt", "utf8", "isBuffer", "bin", "md5", "message", "options", "m", "a", "b", "c", "d", "i", "FF", "GG", "HH", "II", "aa", "bb", "cc", "dd", "x", "s", "t", "n", "digestbytes", "RenderCustomComponent", "CustomComponent", "Fallback", "undefined", "React", "createContext", "use", "import_scheduler", "createElement", "createContextOrig", "useContextOrig", "useEffect", "useLayoutEffect", "useReducer", "useRef", "useState", "CONTEXT_VALUE", "ORIGINAL_PROVIDER", "isSSR", "useIsomorphicLayoutEffect", "runWithNormalPriority", "runWithPriority", "fn", "NormalPriority", "createProvider", "ProviderOrig", "value", "children", "valueRef", "versionRef", "resolve", "setResolve", "contextValue", "listeners", "update", "options", "action", "r", "v", "listener", "identity", "x", "createContext", "defaultValue", "context", "f", "useContextSelector", "selector", "version", "selected", "state", "dispatch", "prev", "nextSelected", "useContext", "FormContext", "createContext", "DocumentFormContext", "FormWatchContext", "SubmittedContext", "ProcessingContext", "BackgroundProcessingContext", "ModifiedContext", "InitializingContext", "FormFieldsContext", "createSelectorContext", "useForm", "use", "useDocumentForm", "useWatchForm", "useFormSubmitted", "useFormProcessing", "useFormBackgroundProcessing", "useFormModified", "useFormInitializing", "useFormFields", "selector", "useContextSelector", "useAllFormFields", "useFullContext", "RowLabel", "React", "createContext", "data", "path", "rowNumber", "undefined", "RowLabelProvider", "children", "getDataByPath", "getSiblingData", "useWatchForm", "collapsibleData", "contextValue", "useMemo", "_jsx", "value", "useRowLabel", "use", "baseClass", "RowLabel", "props", "className", "CustomComponent", "label", "path", "rowNumber", "_jsx", "RowLabelProvider", "RenderCustomComponent", "Fallback", "filter", "Boolean", "join", "style", "pointerEvents", "getTranslation", "React", "Fragment", "useCallback", "useId", "useMemo", "React", "forwardRef", "isValidElement", "ReactDOM", "getAsset", "type", "SuccessIcon", "InfoIcon", "WarningIcon", "ErrorIcon", "bars", "Loader", "visible", "className", "_", "i", "CloseIcon", "useIsDocumentHidden", "isDocumentHidden", "setIsDocumentHidden", "callback", "toastsCounter", "Observer", "subscriber", "index", "data", "_a", "message", "rest", "id", "alreadyExists", "toast", "dismissible", "promise", "p", "shouldDismiss", "result", "originalPromise", "response", "isHttpResponse", "description", "error", "unwrap", "resolve", "reject", "jsx", "ToastState", "toastFunction", "basicToast", "getHistory", "getToasts", "styleInject", "css", "insertAt", "head", "style", "isAction", "action", "VISIBLE_TOASTS_AMOUNT", "VIEWPORT_OFFSET", "MOBILE_VIEWPORT_OFFSET", "TOAST_LIFETIME", "TOAST_WIDTH", "GAP", "SWIPE_THRESHOLD", "TIME_BEFORE_UNMOUNT", "cn", "classes", "getDefaultSwipeDirections", "position", "y", "x", "directions", "Toast", "props", "_b", "_c", "_d", "_e", "_f", "_g", "_h", "_i", "_j", "_k", "ToasterInvert", "unstyled", "interacting", "setHeights", "visibleToasts", "heights", "toasts", "expanded", "removeToast", "defaultRichColors", "closeButtonFromToaster", "cancelButtonStyle", "actionButtonStyle", "descriptionClassName", "durationFromToaster", "gap", "loadingIconProp", "expandByDefault", "classNames", "icons", "closeButtonAriaLabel", "pauseWhenPageIsHidden", "swipeDirection", "setSwipeDirection", "swipeOutDirection", "setSwipeOutDirection", "mounted", "setMounted", "removed", "setRemoved", "swiping", "setSwiping", "swipeOut", "setSwipeOut", "isSwiped", "setIsSwiped", "offsetBeforeRemove", "setOffsetBeforeRemove", "initialHeight", "setInitialHeight", "remainingTime", "dragStartTime", "toastRef", "isFront", "isVisible", "toastType", "toastClassname", "toastDescriptionClassname", "heightIndex", "height", "closeButton", "duration", "closeTimerStartTimeRef", "offset", "lastCloseTimerStartTimeRef", "pointerStartRef", "toastsHeightBefore", "prev", "curr", "reducerIndex", "invert", "disabled", "toastNode", "h", "originalHeight", "newHeight", "deleteToast", "timeoutId", "elapsedTime", "getLoadingIcon", "event", "swipeAmountX", "swipeAmountY", "timeTaken", "swipeAmount", "velocity", "yDelta", "xDelta", "swipeDirections", "getDocumentDirection", "dirAttribute", "assignOffset", "defaultOffset", "mobileOffset", "styles", "isMobile", "prefix", "defaultValue", "assignAll", "key", "Toaster", "forwardRef", "props", "ref", "invert", "position", "hotkey", "expand", "closeButton", "className", "offset", "mobileOffset", "theme", "richColors", "duration", "style", "visibleToasts", "VISIBLE_TOASTS_AMOUNT", "toastOptions", "dir", "getDocumentDirection", "gap", "GAP", "loadingIcon", "icons", "containerAriaLabel", "pauseWhenPageIsHidden", "toasts", "setToasts", "React", "possiblePositions", "toast", "heights", "setHeights", "expanded", "setExpanded", "interacting", "setInteracting", "actualTheme", "setActualTheme", "listRef", "hotkeyLabel", "lastFocusedElementRef", "isFocusWithinRef", "removeToast", "toastToRemove", "_a", "ToastState", "id", "t", "ReactDOM", "indexOfExistingToast", "darkMediaQuery", "matches", "e", "handleKeyDown", "event", "_b", "key", "index", "y", "x", "TOAST_WIDTH", "assignOffset", "Toast", "h", "React", "NextLinkImport", "useRouter", "c", "_c", "React", "startTransition", "useEffect", "useOptimistic", "useRef", "RouteTransitionProvider", "t0", "$", "children", "isTransitioning", "setIsTransitioning", "transitionProgress", "setTransitionProgress", "useState", "transitionProgressRef", "timerID", "t1", "Symbol", "for", "current", "setInterval", "newProgress", "Math", "random", "pow", "log", "initiateProgress", "t2", "t3", "clearInterval", "t4", "callback", "startRouteTransition", "t5", "_jsx", "RouteTransitionContext", "value", "createContext", "useRouteTransition", "use", "slashedProtocols", "stringifyUrlQueryParam", "param", "isNaN", "String", "urlQueryToSearchParams", "urlQuery", "result", "URLSearchParams", "Object", "entries", "forEach", "key", "value", "Array", "isArray", "item", "append", "set", "formatUrl", "urlObj", "auth", "hostname", "protocol", "pathname", "hash", "query", "host", "encodeURIComponent", "replace", "indexOf", "port", "search", "endsWith", "slashes", "test", "NextLink", "NextLinkImport", "default", "isModifiedEvent", "event", "target", "currentTarget", "getAttribute", "metaKey", "ctrlKey", "shiftKey", "altKey", "nativeEvent", "which", "Link", "children", "href", "onClick", "preventDefault", "ref", "replace", "scroll", "rest", "router", "useRouter", "startRouteTransition", "useRouteTransition", "_jsx", "e", "url", "formatUrl", "navigate", "push", "baseClass", "type", "alignIcon", "children", "className", "icon", "onClick", "to", "classes", "RenderedType", "Link", "_jsxs", "href", "_jsx", "React", "React", "Fragment", "isValidElement", "ChevronIcon", "ariaLabel", "className", "direction", "size", "height", "style", "viewBox", "width", "xmlns", "_jsx", "d", "EditIcon", "className", "viewBox", "xmlns", "_jsx", "d", "LinkIcon", "_jsx", "className", "fill", "focusable", "height", "viewBox", "width", "xmlns", "d", "PlusIcon", "_jsx", "className", "height", "viewBox", "width", "xmlns", "d", "SwapIcon", "_jsx", "className", "viewBox", "xmlns", "d", "PopupButtonList_exports", "__export", "Button", "ButtonGroup", "PopupListDivider", "PopupListGroupLabel", "baseClass", "PopupListDivider", "baseClass", "label", "_jsx", "className", "baseClass", "PopupListGroupLabel", "buttonSize", "ButtonGroup", "children", "className", "textAlign", "classes", "Button", "id", "active", "disabled", "href", "onClick", "_jsx", "Link", "e", "prefetch", "type", "useCallback", "useEffect", "useRef", "useState", "createPortal", "React", "useCallback", "useInsertionEffect", "useRef", "useEffectEvent", "fn", "ref", "current", "args", "latestFn", "baseClass", "props", "active", "button", "buttonType", "className", "disabled", "noBackground", "setActive", "size", "classes", "handleClick", "handleKeyDown", "e", "preventDefault", "_jsx", "onClick", "onKeyDown", "role", "tabIndex", "type", "baseClass", "PopupTrigger", "id", "button", "buttonClassName", "buttonSize", "buttonType", "caret", "children", "className", "disabled", "forceOpen", "horizontalAlign", "initActive", "noBackground", "onToggleClose", "onToggleOpen", "portalClassName", "render", "showOnHover", "showScrollbar", "size", "verticalAlign", "props", "useRef", "popupRef", "openedViaKeyboardRef", "mounted", "setActiveInternal", "useState", "active", "useEffect", "setMounted", "setActive", "useCallback", "isActive", "viaKeyboard", "updatePosition", "useEffectEvent", "trigger", "triggerRef", "triggerRect", "popup", "getBoundingClientRect", "offset", "top", "onTop", "popupRect", "scrollY", "bottom", "window", "innerHeight", "height", "setIsOnTop", "left", "triggerCenter", "width", "newTop", "Math", "round", "newLeft", "caretLeft", "scrollX", "newCaretLeft", "style", "getPropertyValue", "handleClickOutside", "e", "isOutsidePopup", "current", "contains", "target", "isOutsideTrigger", "handleKeyDown", "e_0", "popup_0", "preventDefault", "key", "focusable", "from", "el", "currentIndex", "findIndex", "document", "activeElement", "nextIndex", "goBackward", "handleActionableClick", "e_1", "actionable", "closest", "popup_1", "TABBABLE_SELECTOR", "firstFocusable", "addEventListener", "capture", "removeEventListener", "undefined", "_jsx", "Trigger", "ref", "onMouseEnter", "onMouseLeave", "role", "tabIndex", "createPortal", "_jsxs", "isOnTop", "close", "React", "useEffect", "c", "_c", "useEffect", "useRef", "useState", "useIntersect", "t0", "disable", "$", "root", "t1", "rootMargin", "t2", "threshold", "t3", "undefined", "entry", "updateEntry", "node", "setNode", "observer", "window", "IntersectionObserver", "t4", "ent", "t5", "t6", "current", "currentObserver", "disconnect", "observe", "t7", "Tooltip", "props", "alignCaret", "boundingRef", "children", "className", "delay", "positionFromProps", "position", "show", "staticPositioning", "setShow", "React", "showFromProps", "useState", "getTitleAttribute", "setPosition", "content", "useIntersect", "ref", "intersectionEntry", "root", "rootMargin", "threshold", "useEffect", "timerID", "setTimeout", "isIntersecting", "_jsxs", "_jsx", "style", "title", "icons", "Tooltip", "ChevronIcon", "chevron", "edit", "EditIcon", "link", "LinkIcon", "plus", "PlusIcon", "swap", "baseClass", "children", "icon", "showTooltip", "tooltip", "BuiltInIcon", "_jsx", "className", "show", "_jsxs", "isValidElement", "Button", "props", "id", "type", "ariaLabel", "buttonStyle", "disabled", "el", "enableSubMenu", "extraButtonProps", "iconPosition", "iconStyle", "margin", "newTab", "onClick", "onMouseDown", "ref", "round", "size", "SubMenuPopupContent", "to", "url", "setShowTooltip", "React", "classes", "handleClick", "event", "styleClasses", "undefined", "onPointerEnter", "onPointerLeave", "rel", "target", "title", "buttonElement", "buttonProps", "href", "ButtonContents", "Link", "prefetch", "Popup", "button", "buttonSize", "horizontalAlign", "noBackground", "render", "close", "verticalAlign", "fieldAffectsData", "fieldHasSubFields", "isClipboardDataValid", "data", "path", "args", "type", "isClipboardBlocksValid", "blocksFromClipboard", "blocks", "blocksFromConfig", "schemaBlocks", "isClipboardFieldsValid", "fieldsFromClipboard", "fields", "fieldsFromConfig", "schemaFields", "length", "every", "clipboardField", "i", "configField", "name", "hasNestedFieldsConfig", "hasNestedFieldsClipboard", "configBlockMap", "Map", "map", "block", "slug", "size", "checkedSlugs", "Set", "currBlock", "currSlug", "has", "configBlock", "get", "add", "localStorageClipboardKey", "clipboardCopy", "args", "getDataToCopy", "t", "rest", "dataToWrite", "data", "localStorage", "setItem", "JSON", "stringify", "clipboardPaste", "onPaste", "path", "fieldPath", "dataToPaste", "jsonFromClipboard", "getItem", "parse", "dataToValidate", "isClipboardDataValid", "useCallback", "MoreIcon", "className", "viewBox", "xmlns", "_jsx", "d", "strokeLinecap", "c", "_c", "Fragment", "CopyIcon", "_jsx", "className", "viewBox", "xmlns", "d", "ClipboardActionLabel", "t0", "$", "_c", "isPaste", "isRow", "t", "useTranslation", "t1", "label", "_jsxs", "Fragment", "children", "_jsx", "EditIcon", "CopyIcon", "baseClass", "ClipboardAction", "allowCopy", "allowPaste", "className", "copyClassName", "disabled", "isRow", "onPaste", "pasteClassName", "path", "rest", "t", "useTranslation", "classes", "filter", "Boolean", "join", "handleCopy", "useCallback", "clipboardResult", "clipboardCopy", "toast", "error", "success", "handlePaste", "clipboardPaste", "type", "schemaFields", "fields", "schemaBlocks", "blocks", "_jsx", "Popup", "button", "MoreIcon", "horizontalAlign", "render", "close", "_jsxs", "PopupList", "ButtonGroup", "Button", "onClick", "ClipboardActionLabel", "isPaste", "size", "verticalAlign", "reduceFormStateByPath", "formState", "path", "rowIndex", "filteredState", "prefix", "key", "startsWith", "customComponents", "_", "validate", "__", "field", "Array", "isArray", "rows", "map", "row", "serializableRow", "mergeFormStateFromClipboard", "dataFromClipboard", "clipboardData", "type", "typeFromClipboard", "data", "pathFromClipboard", "rowIndexFromClipboard", "copyFromField", "pasteIntoField", "fromRowToField", "pathToReplace", "targetSegment", "lastRenderedPath", "rowIDFromClipboard", "value", "hasRows", "length", "id", "isLoading", "initialValue", "disableFormData", "fieldPath", "clipboardPath", "endsWith", "newPath", "replace", "undefined", "c", "_c", "Fragment", "c", "_c", "useCombinedRefs", "refs", "useMemo", "node", "forEach", "ref", "canUseDOM", "window", "document", "createElement", "isWindow", "element", "elementString", "Object", "prototype", "toString", "call", "isNode", "getWindow", "target", "_target$ownerDocument", "_target$ownerDocument2", "ownerDocument", "defaultView", "useIsomorphicLayoutEffect", "canUseDOM", "useLayoutEffect", "useEffect", "ids", "useUniqueId", "prefix", "value", "useMemo", "id", "createAdjustmentFn", "modifier", "object", "adjustments", "reduce", "accumulator", "adjustment", "entries", "Object", "key", "valueAdjustment", "subtract", "createAdjustmentFn", "hasViewportRelativeCoordinates", "event", "isKeyboardEvent", "KeyboardEvent", "getWindow", "target", "isTouchEvent", "TouchEvent", "getEventCoordinates", "touches", "length", "clientX", "x", "clientY", "y", "changedTouches", "CSS", "Object", "freeze", "Translate", "toString", "transform", "Math", "round", "Scale", "scaleX", "scaleY", "Transform", "join", "Transition", "_ref", "property", "duration", "easing", "arrayMove", "array", "from", "to", "newArray", "slice", "splice", "length", "getSortedRects", "items", "rects", "reduce", "accumulator", "id", "index", "rect", "get", "Array", "length", "isValidIndex", "itemsEqual", "a", "b", "i", "normalizeDisabled", "disabled", "draggable", "droppable", "rectSortingStrategy", "_ref", "rects", "activeIndex", "overIndex", "index", "newRects", "arrayMove", "oldRect", "newRect", "x", "left", "y", "top", "scaleX", "width", "scaleY", "height", "ID_PREFIX", "Context", "React", "createContext", "activeIndex", "containerId", "disableTransforms", "items", "overIndex", "useDragOverlay", "sortedRects", "strategy", "rectSortingStrategy", "disabled", "draggable", "droppable", "SortableContext", "children", "id", "userDefinedItems", "disabledProp", "active", "dragOverlay", "droppableRects", "over", "measureDroppableContainers", "useDndContext", "useUniqueId", "rect", "useMemo", "map", "item", "isDragging", "indexOf", "previousItemsRef", "useRef", "itemsHaveChanged", "itemsEqual", "current", "normalizeDisabled", "useIsomorphicLayoutEffect", "useEffect", "contextValue", "getSortedRects", "Provider", "value", "defaultNewIndexGetter", "_ref", "arrayMove", "defaultAnimateLayoutChanges", "_ref2", "isSorting", "wasDragging", "index", "newIndex", "previousItems", "previousContainerId", "transition", "defaultTransition", "duration", "easing", "transitionProperty", "disabledTransition", "CSS", "Transition", "toString", "property", "defaultAttributes", "roleDescription", "useDerivedTransform", "node", "derivedTransform", "setDerivedtransform", "useState", "previousIndex", "initial", "getClientRect", "ignoreTransform", "delta", "x", "left", "y", "top", "scaleX", "width", "scaleY", "height", "useSortable", "animateLayoutChanges", "attributes", "userDefinedAttributes", "localDisabled", "data", "customData", "getNewIndex", "localStrategy", "resizeObserverConfig", "globalDisabled", "globalStrategy", "useContext", "normalizeLocalDisabled", "sortable", "itemsAfterCurrentSortable", "slice", "isOver", "setNodeRef", "setDroppableNodeRef", "useDroppable", "updateMeasurementsFor", "activatorEvent", "activeNodeRect", "setDraggableNodeRef", "listeners", "setActivatorNodeRef", "transform", "useDraggable", "useCombinedRefs", "Boolean", "displaceItem", "isValidIndex", "shouldDisplaceDragSource", "dragSourceDisplacement", "finalTransform", "rects", "activeId", "previous", "shouldAnimateLayoutChanges", "timeoutId", "setTimeout", "clearTimeout", "getTransition", "isKeyboardEvent", "_localDisabled$dragga", "_localDisabled$droppa", "hasSortableData", "entry", "directions", "KeyboardCode", "Down", "Right", "Up", "Left", "sortableKeyboardCoordinates", "event", "context", "collisionRect", "droppableContainers", "scrollableAncestors", "includes", "code", "preventDefault", "filteredContainers", "getEnabled", "forEach", "get", "push", "collisions", "closestCorners", "pointerCoordinates", "closestId", "getFirstCollision", "length", "activeDroppable", "newDroppable", "newRect", "newNode", "hasDifferentScrollAncestors", "getScrollableAncestors", "some", "element", "hasSameContainer", "isSameContainer", "isAfterActive", "isAfter", "offset", "rectCoordinates", "subtract", "a", "b", "useDraggableSortable", "props", "$", "_c", "id", "disabled", "t0", "Symbol", "for", "duration", "easing", "t1", "transition", "attributes", "isDragging", "listeners", "setNodeRef", "transform", "useSortable", "t2", "t3", "cursor", "t4", "style", "t5", "x", "y", "t6", "DraggableSortableItem", "props", "$", "_c", "id", "children", "disabled", "t0", "attributes", "isDragging", "listeners", "setNodeRef", "transform", "transition", "useDraggableSortable", "t1", "t2", "_jsx", "Fragment", "style", "cursor", "c", "_c", "closestCenter", "DndContext", "KeyboardSensor", "PointerSensor", "useDroppable", "useSensor", "useSensors", "useId", "DraggableSortable", "props", "$", "_c", "children", "className", "ids", "onDragEnd", "onDragStart", "dndContextID", "sortableContextID", "t0", "id", "setNodeRef", "useDroppable", "t1", "Symbol", "for", "activationConstraint", "distance", "t2", "coordinateGetter", "sortableKeyboardCoordinates", "sensors", "useSensors", "useSensor", "PointerSensor", "KeyboardSensor", "t3", "event", "active", "over", "activatorEvent", "stopPropagation", "moveFromIndex", "findIndex", "_id", "moveToIndex", "_id_0", "handleDragEnd", "t4", "event_0", "active_0", "handleDragStart", "t5", "_jsx", "DndContext", "collisionDetection", "closestCenter", "SortableContext", "items", "ref", "baseClass", "props", "className", "count", "i18n", "withMessage", "lessThan3Chars", "_jsx", "classes", "_jsxs", "c", "_c", "getTranslation", "baseClass", "props", "$", "_c", "FieldDescription", "className", "description", "marginPlacement", "path", "i18n", "useTranslation", "t0", "replace", "t2", "t1", "t3", "t4", "_jsx", "getTranslation", "c", "_c", "baseClass", "props", "$", "_c", "FieldError", "t0", "alignCaret", "message", "path", "showErrorFromProps", "showError", "useFormSubmitted", "t1", "t2", "fields", "field", "useFormFields", "hasSubmitted", "messageFromProps", "Symbol", "errorMessage", "valid", "showMessage", "className", "delay", "staticPositioning", "bb0", "getTranslation", "c", "_c", "createContext", "use", "EditDepthContext", "EditDepthProvider", "t0", "$", "children", "depth", "useEditDepth", "t1", "_jsx", "value", "c", "_c", "useSearchParams", "formatAdminURL", "React", "createContext", "use", "useEffect", "useRef", "useState", "findLocaleFromCode", "localizationConfig", "locale", "locales", "length", "find", "el", "code", "useRef", "useEffect", "useState", "ReactDOM", "_extends", "n", "t", "r", "_objectWithoutPropertiesLoose", "r", "t", "_setPrototypeOf", "t", "e", "_inheritsLoose", "o", "_setPrototypeOf", "hasClass", "element", "className", "addClass", "element", "className", "hasClass", "replaceClassName", "origClass", "classToRemove", "removeClass", "element", "className", "React", "React", "ReactDOM", "config_default", "React", "TransitionGroupContext_default", "forceReflow", "node", "UNMOUNTED", "EXITED", "ENTERING", "ENTERED", "EXITING", "Transition", "_React$Component", "_inheritsLoose", "props", "context", "_this", "parentGroup", "appear", "initialStatus", "_ref", "prevState", "nextIn", "_proto", "prevProps", "nextStatus", "status", "timeout", "exit", "enter", "mounting", "node", "ReactDOM", "forceReflow", "_this2", "appearing", "_ref2", "maybeNode", "maybeAppearing", "timeouts", "enterTimeout", "config_default", "_this3", "nextState", "callback", "_this4", "active", "event", "handler", "doesNotHaveTimeoutOrListener", "_ref3", "maybeNextCallback", "_this$props", "children", "_in", "_mountOnEnter", "_unmountOnExit", "_appear", "_enter", "_exit", "_timeout", "_addEndListener", "_onEnter", "_onEntering", "_onEntered", "_onExit", "_onExiting", "_onExited", "_nodeRef", "childProps", "_objectWithoutPropertiesLoose", "React", "TransitionGroupContext_default", "noop", "Transition_default", "_addClass", "node", "classes", "c", "addClass", "removeClass", "CSSTransition", "_React$Component", "_inheritsLoose", "_this", "_len", "args", "_key", "maybeNode", "maybeAppearing", "_this$resolveArgument", "appearing", "_this$resolveArgument2", "type", "_this$resolveArgument3", "_this$resolveArgument4", "_this$resolveArgument5", "_this$resolveArgument6", "classNames", "isStringClassNames", "prefix", "baseClassName", "activeClassName", "doneClassName", "_proto", "phase", "className", "_this$getClassNames", "forceReflow", "_this$appliedClasses$", "_this$props", "_", "props", "_objectWithoutPropertiesLoose", "React", "Transition_default", "_extends", "CSSTransition_default", "_assertThisInitialized", "e", "useContext", "createContext", "ModalContext", "useModal", "useContext", "ModalContext", "generateTransitionClasses", "baseClass", "activeFocusTraps", "activateTrap", "trapStack", "trap", "length", "activeTrap", "pause", "trapIndex", "indexOf", "splice", "push", "deactivateTrap", "unpause", "isSelectableInput", "node", "tagName", "toLowerCase", "select", "isEscapeEvent", "e", "key", "keyCode", "isTabEvent", "isKeyForward", "shiftKey", "isKeyBackward", "delay", "fn", "setTimeout", "findIndex", "arr", "idx", "every", "value", "i", "valueOrHandler", "_len", "arguments", "params", "Array", "_key", "apply", "getActualTarget", "event", "target", "shadowRoot", "composedPath", "internalTrapStack", "createFocusTrap", "elements", "userOptions", "doc", "document", "config", "_objectSpread", "returnFocusOnDeactivate", "escapeDeactivates", "delayInitialFocus", "state", "containers", "containerGroups", "tabbableGroups", "nodeFocusedBeforeActivation", "mostRecentlyFocusedNode", "active", "paused", "delayInitialFocusTimer", "undefined", "recentNavEvent", "getOption", "configOverrideOptions", "optionName", "configOptionName", "findContainerIndex", "element", "_ref", "container", "tabbableNodes", "contains", "includes", "find", "getNodeForOption", "optionValue", "_len2", "_key2", "Error", "concat", "querySelector", "getInitialFocusNode", "isFocusable", "tabbableOptions", "activeElement", "firstTabbableGroup", "firstTabbableNode", "updateTabbableNodes", "map", "tabbable", "focusableNodes", "focusable", "lastTabbableNode", "firstDomTabbableNode", "isTabbable", "lastDomTabbableNode", "slice", "reverse", "posTabIndexesFound", "getTabIndex", "nextTabbableNode", "forward", "nodeIdx", "el", "filter", "group", "g", "getActiveElement", "tryFocus", "focus", "preventScroll", "getReturnFocusNode", "previousActiveElement", "findNextNavNode", "_ref2", "_ref2$isBackward", "isBackward", "destinationNode", "containerIndex", "containerGroup", "startOfGroupIndex", "_ref3", "destinationGroupIndex", "destinationGroup", "lastOfGroupIndex", "_ref4", "checkPointerDown", "clickOutsideDeactivates", "deactivate", "returnFocus", "allowOutsideClick", "preventDefault", "checkFocusIn", "targetContained", "Document", "stopImmediatePropagation", "nextNode", "navAcrossContainers", "mruContainerIdx", "mruTabIdx", "some", "n", "checkKeyNav", "checkKey", "checkClick", "addListeners", "addEventListener", "capture", "passive", "removeListeners", "removeEventListener", "checkDomRemoval", "mutations", "isFocusedNodeRemoved", "mutation", "removedNodes", "from", "mutationObserver", "window", "MutationObserver", "updateObservedNodes", "disconnect", "observe", "subtree", "childList", "activate", "activateOptions", "onActivate", "onPostActivate", "checkCanFocusTrap", "finishActivation", "then", "deactivateOptions", "options", "onDeactivate", "onPostDeactivate", "checkCanReturnFocus", "clearTimeout", "finishDeactivation", "pauseOptions", "onPause", "onPostPause", "unpauseOptions", "onUnpause", "onPostUnpause", "updateContainerElements", "containerElements", "elementsAsArray", "Boolean", "itemBaseClass", "asModal", "ModalComponent", "slugFromArg", "props", "modal", "useModal", "modalRef", "useRef", "layTrap", "setLayTrap", "useState", "trapHasBeenLayed", "trap", "setTrap", "modalState", "classPrefixFromContext", "containerRef", "transTime", "setCloseOnBlur", "setBodyScrollLock", "openModal", "className", "Tag", "slugFromProp", "closeOnBlur", "lockBodyScroll", "classPrefixFromProps", "onEnter", "onEntering", "onEntered", "onExit", "onExiting", "onExited", "openOnInit", "trapFocus", "focusTrapOptions", "rest", "__rest", "classPrefixToUse", "slug", "isOpen", "useEffect", "currentModal", "newTrap", "createFocusTrap", "timedOpen", "setTimedOpen", "baseClass", "mergedClasses", "mergedAttributes", "ReactDOM", "_jsx", "CSSTransition_default", "generateTransitionClasses", "Fragment", "_Modal", "props", "children", "_jsx", "Fragment", "Modal", "asModal", "containerBaseClass", "ModalContainer", "props", "oneModalIsOpen", "classPrefix", "transTime", "setContainerRef", "containerRef", "closeAllModals", "closeOnBlur", "useModal", "className", "Tag", "children", "onClick", "rest", "__rest", "baseClass", "mergedClasses", "mergedAttributes", "e", "_jsx", "CSSTransition_default", "generateTransitionClasses", "Fragment", "useState", "useRef", "useEffect", "useCallback", "useReducer", "_toConsumableArray", "arr", "i", "arr2", "hasPassiveEvents", "passiveTestOptions", "isIosDevice", "locks", "documentListenerAdded", "initialClientY", "previousBodyOverflowSetting", "previousBodyPosition", "previousBodyPaddingRight", "allowTouchMove", "el", "lock", "preventDefault", "rawEvent", "e", "setOverflowHidden", "options", "_reserveScrollBarGap", "scrollBarGap", "computedBodyPaddingRight", "restoreOverflowSetting", "setPositionFixed", "_window", "scrollY", "scrollX", "innerHeight", "bottomBarHeight", "restorePositionSetting", "y", "x", "isTargetElementTotallyScrolled", "targetElement", "handleScroll", "event", "clientY", "disableBodyScroll", "enableBodyScroll", "targetElement", "locks", "lock", "isIosDevice", "documentListenerAdded", "preventDefault", "hasPassiveEvents", "restorePositionSetting", "restoreOverflowSetting", "generateCSS", "classPrefix", "zIndex", "prefixToUse", "containerBaseClass", "itemBaseClass", "reducer", "state", "action", "newState", "type", "payload", "slug", "isCurrentlyOpen", "latestModal", "acc", "modal", "key", "value", "getSearchQuery", "getModalParamArray", "searchQuery", "params", "modalParam", "ModalProvider", "props", "classPrefix", "minifyCSS", "shouldGenerateCSS", "zIndex", "handleParamChange", "children", "transTime", "containerRef", "useRef", "modalState", "dispatchModalState", "useReducer", "reducer", "acc", "param", "oneIsOpen", "setOneIsOpen", "useState", "closeOnBlur", "setCloseOnBlur", "bodyScrollIsLocked", "setBodyScrollIsLocked", "cssString", "setCSSString", "escIsBound", "bindEsc", "useCallback", "e", "useEffect", "newString", "generateCSS", "openModals", "slug", "modal", "queryWithModal", "newURL", "isOneOpen", "key", "setBodyScrollLock", "shouldLock", "excludingRef", "disableBodyScroll", "enableBodyScroll", "setContainerRef", "ref", "openModal", "closeModal", "closeAllModals", "toggleModal", "isModalOpen", "inheritedProps", "_jsxs", "Fragment", "_jsx", "ModalContext", "usePathname", "useRouter", "formatAdminURL", "qs", "React", "createContext", "use", "useCallback", "useEffect", "useState", "c", "_c", "useRouter", "formatAdminURL", "c", "_c", "React", "c", "_c", "createContext", "use", "useLayoutEffect", "useState", "baseClass", "props", "children", "className", "left", "negativeLeft", "negativeRight", "ref", "right", "shouldPadLeft", "_jsx", "shouldPadRight", "c", "_c", "useId", "useDrawerSlug", "slug", "$", "_c", "uuid", "useId", "editDepth", "useEditDepth", "t0", "t1", "formatDrawerSlug", "depth", "baseClass", "drawerZBase", "slug", "depth", "useDrawerSlug", "t0", "$", "_c", "DrawerToggler", "children", "className", "disabled", "onClick", "openModal", "useModal", "t1", "e", "handleClick", "type", "Drawer", "gutter", "Header", "hoverTitle", "title", "t", "useTranslation", "closeModal", "modalState", "useDrawerDepth", "drawerDepth", "isOpen", "useState", "t2", "useLayoutEffect", "t3", "setAnimateIn", "animateIn", "t4", "t6", "t5", "t7", "t9", "t8", "t10", "_jsx", "DrawerDepthProvider", "_jsxs", "closeOnBlur", "style", "id", "Gutter", "left", "right", "XIcon", "DrawerDepthContext", "createContext", "parentDepth", "value", "use", "baseClass", "ConfirmationModal", "props", "$", "_c", "body", "cancelLabel", "className", "confirmingLabel", "confirmLabel", "heading", "modalSlug", "onCancelFromProps", "onCancel", "onConfirm", "useDrawerDepth", "editDepth", "React", "closeModal", "isModalOpen", "useModal", "t", "useTranslation", "t0", "confirming", "onConfirmFromProps", "setConfirming", "t1", "t2", "t3", "t5", "t4", "_jsx", "Modal", "closeOnBlur", "slug", "style", "_jsxs", "children", "buttonStyle", "disabled", "id", "onClick", "size", "type", "stayLoggedInModalSlug", "StayLoggedInModal", "$", "_c", "refreshCookie", "useAuth", "router", "useRouter", "config", "useConfig", "admin", "t0", "routes", "t1", "t2", "logout", "logoutRoute", "adminRoute", "t", "useTranslation", "startRouteTransition", "useRouteTransition", "t3", "push", "formatAdminURL", "path", "onConfirm", "t4", "onCancel", "t5", "_jsx", "ConfirmationModal", "body", "cancelLabel", "confirmLabel", "heading", "modalSlug", "qs", "requests", "delete", "url", "options", "headers", "formattedOptions", "credentials", "method", "fetch", "get", "query", "params", "stringify", "addQueryPrefix", "patch", "post", "put", "Context", "createContext", "maxTimeoutMs", "AuthProvider", "children", "permissions", "initialPermissions", "user", "initialUser", "pathname", "usePathname", "router", "useRouter", "config", "useConfig", "admin", "autoLogin", "autoRefresh", "routes", "inactivity", "logoutInactivityRoute", "userSlug", "adminRoute", "api", "apiRoute", "i18n", "useTranslation", "closeAllModals", "openModal", "useModal", "startRouteTransition", "useRouteTransition", "setUserInMemory", "useState", "tokenInMemory", "setTokenInMemory", "tokenExpirationMs", "setTokenExpirationMs", "setPermissions", "forceLogoutBufferMs", "setForceLogoutBufferMs", "fetchedUserOnMount", "setFetchedUserOnMount", "refreshTokenTimeoutRef", "React", "useRef", "reminderTimeoutRef", "forceLogOutTimeoutRef", "id", "redirectToInactivityRoute", "useCallback", "baseAdminRoute", "formatAdminURL", "path", "replace", "window", "location", "startsWith", "encodeURIComponent", "revokeTokenAndExpire", "undefined", "clearTimeout", "current", "handleReminderTimeout", "useEffectEvent", "refreshCookieEvent", "stayLoggedInModalSlug", "setNewUser", "userResponse", "token", "exp", "expiresInMs", "Math", "max", "min", "Date", "now", "nextForceLogoutBufferMs", "setTimeout", "refreshCookie", "forceRefresh", "request", "requests", "post", "headers", "language", "status", "json", "e", "toast", "error", "message", "refreshCookieAsync", "skipSetUser", "logOut", "collection", "refreshPermissions", "locale", "params", "stringify", "addQueryPrefix", "get", "Error", "fetchFullUser", "credentials", "useEffect", "fetchFullUserEvent", "fetchUserOnMount", "prefillOnly", "_jsx", "value", "setUser", "useAuth", "use", "LocaleContext", "createContext", "LocaleLoadingContext", "localeIsLoading", "setLocaleIsLoading", "_", "fetchPreferences", "key", "baseURL", "fetch", "credentials", "headers", "method", "then", "res", "json", "LocaleProvider", "t0", "$", "_c", "children", "locale", "initialLocaleFromPrefs", "config", "t1", "useConfig", "localization", "t2", "routes", "t3", "undefined", "api", "apiRoute", "user", "useAuth", "defaultLocale", "t4", "useSearchParams", "t5", "get", "localeFromParams", "t6", "locales", "length", "findLocaleFromCode", "code", "setLocale", "React", "useState", "isLoading", "prevLocale", "useRef", "t7", "t8", "current", "useEffect", "t9", "formatAdminURL", "path", "fetchURL", "t10", "id", "localeToUse", "_temp", "newLocale", "t11", "t12", "t13", "_jsx", "value", "useLocaleLoading", "use", "useLocale", "generateFieldID", "path", "editDepth", "uuid", "replace", "FieldLabel", "props", "t0", "as", "t1", "hideLocale", "htmlFor", "label", "t2", "localized", "path", "t3", "required", "unstyled", "ElementFromProps", "undefined", "uuid", "useForm", "useEditDepth", "editDepth", "htmlForFromProps", "generateFieldID", "i18n", "useTranslation", "code", "localLabel", "useLocale", "_jsxs", "Element", "className", "getTranslation", "_jsx", "children", "extractRowsAndCollapsedIDs", "collapsed", "rowID", "rows", "reduce", "acc", "row", "id", "collapsedIDs", "push", "updatedRows", "toggleAllRows", "c", "_c", "React", "rtlLanguages", "useCallback", "useMemo", "c", "_c", "React", "useRef", "c", "_c", "useEffect", "useRef", "useThrottledEffect", "callback", "delay", "t0", "$", "t1", "undefined", "deps", "t2", "Symbol", "for", "Date", "now", "lastRan", "t3", "handler", "setTimeout", "current", "clearTimeout", "t4", "formatAdminURL", "qs", "React", "createContext", "use", "useCallback", "useEffect", "useMemo", "useRef", "useState", "getTranslation", "offsetFormatCache", "offsetCache", "tzOffset", "timeZone", "date", "offsetStr", "calcOffset", "captures", "offsetRe", "cacheStr", "values", "hours", "minutes", "TZDateMini", "_TZDateMini", "args", "tzOffset", "adjustToSystemTZ", "syncToInternal", "tz", "timeZone", "time", "date", "re", "method", "utcMethod", "syncFromInternal", "offset", "prevHour", "systemOffset", "prevHourSystemOffset", "systemDSTChange", "dstShift", "offsetDiff", "postOffset", "postOffsetDiff", "offsetChanged", "postDiff", "newOffset", "offsetChange", "maxTime", "minTime", "millisecondsInWeek", "millisecondsInDay", "minutesInMonth", "minutesInDay", "secondsInHour", "secondsInDay", "secondsInHour", "secondsInWeek", "secondsInYear", "secondsInMonth", "secondsInQuarter", "constructFromSymbol", "constructFrom", "date", "value", "constructFromSymbol", "toDate", "argument", "context", "constructFrom", "defaultOptions", "getDefaultOptions", "startOfWeek", "date", "options", "defaultOptions", "getDefaultOptions", "weekStartsOn", "_date", "toDate", "day", "diff", "startOfISOWeek", "date", "options", "startOfWeek", "getISOWeekYear", "date", "options", "_date", "toDate", "year", "fourthOfJanuaryOfNextYear", "constructFrom", "startOfNextYear", "startOfISOWeek", "fourthOfJanuaryOfThisYear", "startOfThisYear", "getTimezoneOffsetInMilliseconds", "date", "_date", "toDate", "utcDate", "normalizeDates", "context", "dates", "normalize", "constructFrom", "date", "startOfDay", "date", "options", "_date", "toDate", "differenceInCalendarDays", "laterDate", "earlierDate", "options", "laterDate_", "earlierDate_", "normalizeDates", "laterStartOfDay", "startOfDay", "earlierStartOfDay", "laterTimestamp", "getTimezoneOffsetInMilliseconds", "earlierTimestamp", "millisecondsInDay", "startOfISOWeekYear", "date", "options", "year", "getISOWeekYear", "fourthOfJanuary", "constructFrom", "startOfISOWeek", "compareAsc", "dateLeft", "dateRight", "diff", "toDate", "constructNow", "date", "constructFrom", "isSameDay", "laterDate", "earlierDate", "options", "dateLeft_", "dateRight_", "normalizeDates", "startOfDay", "isDate", "value", "isValid", "date", "isDate", "toDate", "differenceInCalendarMonths", "laterDate", "earlierDate", "options", "laterDate_", "earlierDate_", "normalizeDates", "yearsDiff", "monthsDiff", "getRoundingMethod", "method", "number", "result", "differenceInMilliseconds", "laterDate", "earlierDate", "toDate", "endOfDay", "date", "options", "_date", "toDate", "endOfMonth", "date", "options", "_date", "toDate", "month", "isLastDayOfMonth", "date", "options", "_date", "toDate", "endOfDay", "endOfMonth", "differenceInMonths", "laterDate", "earlierDate", "options", "laterDate_", "workingLaterDate", "earlierDate_", "normalizeDates", "sign", "compareAsc", "difference", "differenceInCalendarMonths", "isLastMonthNotFull", "isLastDayOfMonth", "result", "differenceInSeconds", "laterDate", "earlierDate", "options", "diff", "differenceInMilliseconds", "getRoundingMethod", "startOfYear", "date", "options", "date_", "toDate", "endOfToday", "options", "endOfDay", "getDayOfYear", "date", "options", "_date", "toDate", "differenceInCalendarDays", "startOfYear", "getISOWeek", "date", "options", "_date", "toDate", "diff", "startOfISOWeek", "startOfISOWeekYear", "millisecondsInWeek", "getWeekYear", "date", "options", "_date", "toDate", "year", "defaultOptions", "getDefaultOptions", "firstWeekContainsDate", "firstWeekOfNextYear", "constructFrom", "startOfNextYear", "startOfWeek", "firstWeekOfThisYear", "startOfThisYear", "startOfWeekYear", "date", "options", "defaultOptions", "getDefaultOptions", "firstWeekContainsDate", "year", "getWeekYear", "firstWeek", "constructFrom", "startOfWeek", "getWeek", "date", "options", "_date", "toDate", "diff", "startOfWeek", "startOfWeekYear", "millisecondsInWeek", "addLeadingZeros", "number", "targetLength", "sign", "output", "lightFormatters", "date", "token", "signedYear", "year", "addLeadingZeros", "month", "dayPeriodEnumValue", "numberOfDigits", "milliseconds", "fractionalSeconds", "dayPeriodEnum", "formatters", "date", "token", "localize", "era", "signedYear", "year", "lightFormatters", "options", "signedWeekYear", "getWeekYear", "weekYear", "twoDigitYear", "addLeadingZeros", "isoWeekYear", "getISOWeekYear", "quarter", "month", "week", "getWeek", "isoWeek", "getISOWeek", "dayOfYear", "getDayOfYear", "dayOfWeek", "localDayOfWeek", "isoDayOfWeek", "dayPeriodEnumValue", "hours", "_localize", "timezoneOffset", "formatTimezoneWithOptionalMinutes", "formatTimezone", "formatTimezoneShort", "timestamp", "offset", "delimiter", "sign", "absOffset", "minutes", "dateLongFormatter", "pattern", "formatLong", "timeLongFormatter", "dateTimeLongFormatter", "matchResult", "datePattern", "timePattern", "dateTimeFormat", "longFormatters", "dayOfYearTokenRE", "weekYearTokenRE", "throwTokens", "isProtectedDayOfYearToken", "token", "isProtectedWeekYearToken", "warnOrThrowProtectedError", "format", "input", "_message", "message", "subject", "formattingTokensRegExp", "longFormattingTokensRegExp", "escapedStringRegExp", "doubleQuoteRegExp", "unescapedLatinCharacterRegExp", "format", "date", "formatStr", "options", "defaultOptions", "getDefaultOptions", "locale", "enUS", "firstWeekContainsDate", "weekStartsOn", "originalDate", "toDate", "isValid", "parts", "longFormattingTokensRegExp", "substring", "firstCharacter", "longFormatter", "longFormatters", "formattingTokensRegExp", "cleanEscapedString", "formatters", "unescapedLatinCharacterRegExp", "formatterOptions", "part", "token", "isProtectedWeekYearToken", "isProtectedDayOfYearToken", "warnOrThrowProtectedError", "formatter", "input", "matched", "escapedStringRegExp", "doubleQuoteRegExp", "formatDistance", "laterDate", "earlierDate", "options", "defaultOptions", "getDefaultOptions", "locale", "enUS", "minutesInAlmostTwoDays", "comparison", "compareAsc", "localizeOptions", "laterDate_", "earlierDate_", "normalizeDates", "seconds", "differenceInSeconds", "offsetInSeconds", "getTimezoneOffsetInMilliseconds", "minutes", "months", "minutesInDay", "hours", "minutesInMonth", "days", "differenceInMonths", "nearestMonth", "monthsSinceStartOfYear", "years", "formatDistanceToNow", "date", "options", "formatDistance", "constructNow", "transpose", "date", "constructor", "date_", "isConstructor", "constructFrom", "isToday", "date", "options", "isSameDay", "constructFrom", "constructNow", "formatDate", "date", "i18n", "pattern", "timezone", "theDate", "TZDate", "Date", "DateWithOriginalTz", "tz", "modifiedDate", "withTimeZone", "dateWithTimezone", "transpose", "dateFNS", "format", "locale", "t", "formatTimeToNow", "formatDistanceToNow", "isSerializedLexicalEditor", "value", "formatLexicalDocTitle", "editorState", "textContent", "node", "text", "type", "children", "formatRelationshipTitle", "data", "Array", "isArray", "map", "item", "id", "String", "filter", "Boolean", "join", "formatDocTitle", "collectionConfig", "data", "dateFormat", "dateFormatFromConfig", "fallback", "globalConfig", "i18n", "title", "useAsTitle", "admin", "fieldConfig", "fields", "find", "f", "name", "isDate", "type", "isRelationship", "date", "displayFormat", "formatDate", "pattern", "formatRelationshipTitle", "getTranslation", "label", "slug", "isSerializedLexicalEditor", "formatLexicalDocTitle", "root", "children", "t", "createContext", "use", "useEffect", "useState", "DocumentTitleContext", "createContext", "useDocumentTitle", "use", "DocumentTitleProvider", "children", "id", "collectionSlug", "data", "docConfig", "globalSlug", "initialData", "useDocumentInfo", "config", "admin", "dateFormat", "useConfig", "i18n", "useTranslation", "title", "setDocumentTitle", "useState", "formatDocTitle", "collectionConfig", "undefined", "fallback", "toString", "globalConfig", "useEffect", "_jsx", "value", "dequal", "formatAdminURL", "createContext", "use", "useCallback", "useEffect", "useRef", "deepMergeSimple", "obj1", "obj2", "output", "key", "Object", "prototype", "hasOwnProperty", "call", "Array", "isArray", "Context", "createContext", "requestOptions", "value", "language", "body", "JSON", "stringify", "headers", "PreferencesProvider", "children", "contextRef", "useRef", "preferencesRef", "pendingUpdate", "config", "useConfig", "user", "useAuth", "i18n", "useTranslation", "routes", "api", "useEffect", "current", "getPreference", "useCallback", "key", "prefs", "promise", "Promise", "resolve", "request", "requests", "get", "formatAdminURL", "apiRoute", "path", "credentials", "status", "json", "setPreference", "merge", "post", "newValue", "currentPreference", "deepMergeSimple", "dequal", "updatePreference", "setTimeout", "_jsx", "usePreferences", "use", "c", "_c", "React", "Context", "createContext", "getUploadEdits", "resetUploadEdits", "undefined", "updateUploadEdits", "uploadEdits", "UploadEditsProvider", "t0", "$", "children", "initialUploadEdits", "t1", "setUploadEdits", "useState", "t2", "Symbol", "for", "t3", "edits", "prevEdits", "t4", "t5", "_jsx", "value", "useUploadEdits", "use", "formatAdminURL", "qs", "React", "hasSavePermission", "args", "collectionSlug", "docPermissions", "globalSlug", "isEditing", "Boolean", "update", "create", "isEditing", "id", "collectionSlug", "globalSlug", "Boolean", "useGetDocPermissions", "id", "api", "collectionSlug", "globalSlug", "i18n", "locale", "permissions", "setDocPermissions", "setHasPublishPermission", "setHasSavePermission", "React", "useCallback", "data", "params", "undefined", "idToUse", "newIsEditing", "getIsEditing", "docAccessPath", "json", "fetch", "formatAdminURL", "apiRoute", "path", "stringify", "addQueryPrefix", "body", "JSON", "doc", "_status", "credentials", "headers", "language", "method", "publishedAccessJSON", "then", "res", "getHasSavePermission", "docPermissions", "isEditing", "update", "newDocPermissions", "collections", "globals", "Context", "createContext", "useDocumentInfo", "use", "DocumentInfo", "children", "props", "id", "collectionSlug", "currentEditor", "currentEditorFromProps", "docPermissions", "docPermissionsFromProps", "globalSlug", "hasPublishedDoc", "hasPublishedDocFromProps", "hasPublishPermission", "hasPublishPermissionFromProps", "hasSavePermission", "hasSavePermissionFromProps", "initialData", "initialState", "isLocked", "isLockedFromProps", "lastUpdateTime", "lastUpdateTimeFromProps", "mostRecentVersionIsAutosaved", "mostRecentVersionIsAutosavedFromProps", "unpublishedVersionCount", "unpublishedVersionCountFromProps", "versionCount", "versionCountFromProps", "setDocPermissions", "useControllableState", "setHasSavePermission", "setHasPublishPermission", "permissions", "useAuth", "config", "admin", "dateFormat", "collections", "routes", "api", "getEntityConfig", "useConfig", "collectionConfig", "globalConfig", "hasLockedDocumentsCollection", "some", "collection", "slug", "abortControllerRef", "useRef", "AbortController", "docConfig", "i18n", "useTranslation", "uploadEdits", "useUploadEdits", "title", "setDocumentTitle", "useState", "formatDocTitle", "data", "fallback", "toString", "setMostRecentVersionIsAutosaved", "setVersionCount", "setHasPublishedDoc", "setUnpublishedVersionCount", "documentIsLocked", "setDocumentIsLocked", "setCurrentEditor", "setLastUpdateTime", "setData", "uploadStatus", "setUploadStatus", "documentLockState", "hasShownLockedModal", "user", "updateUploadStatus", "useCallback", "status", "getPreference", "setPreference", "usePreferences", "code", "locale", "useLocale", "localeIsLoading", "useLocaleLoading", "isInitializing", "useMemo", "undefined", "baseAPIPath", "formatAdminURL", "apiRoute", "path", "pluralType", "preferencesKey", "unlockDocument", "docID", "isGlobal", "request", "requests", "get", "credentials", "params", "docs", "json", "length", "lockID", "delete", "headers", "error", "console", "updateDocumentEditor", "userData", "relationTo", "value", "patch", "body", "JSON", "stringify", "getDocPermissions", "useGetDocPermissions", "getDocPreferences", "setDocFieldPreferences", "fieldPreferences", "allPreferences", "fields", "e", "incrementVersionCount", "newCount", "versions", "maxPerDoc", "Math", "min", "max", "useEffect", "re1", "current", "abort", "action", "React", "docPath", "depth", "addQueryPrefix", "savedDocumentData", "updateSavedDocumentData", "_jsx", "DocumentTitleProvider", "DocumentInfoProvider", "UploadEditsProvider", "createContext", "use", "OperationContext", "OperationProvider", "children", "operation", "_jsx", "value", "useOperation", "React", "FieldPathContext", "createContext", "undefined", "useFieldPath", "context", "useContext", "useFieldInForm", "options", "$", "_c", "t0", "disableFormData", "t1", "hasRows", "path", "pathFromOptions", "potentiallyStalePath", "validate", "undefined", "pathFromContext", "useFieldPath", "submitted", "useFormSubmitted", "processing", "useFormProcessing", "initializing", "useFormInitializing", "user", "useAuth", "id", "collectionSlug", "useDocumentInfo", "operation", "useOperation", "dispatchField", "useFormFields", "_temp", "t2", "t3", "fields", "field", "t", "useTranslation", "config", "useConfig", "getData", "getDataByPath", "getSiblingData", "setModified", "useForm", "documentForm", "useDocumentForm", "filterOptions", "value", "initialValue", "valid", "showError", "prevValid", "useRef", "prevErrorMessage", "errorMessage", "split", "pathSegments", "t4", "e", "t5", "disableModifyingForm", "val", "preventDefault", "stopPropagation", "target", "type", "setValue", "blocksFilterOptions", "t6", "customComponents", "t7", "t8", "t9", "errorPaths", "t10", "rows", "t11", "selectFilterOptions", "t12", "t13", "disabled", "formInitializing", "formProcessing", "formSubmitted", "result", "t14", "valueToValidate", "Array", "isArray", "current", "valid_0", "data", "isValid", "blockData", "event", "preferences", "req", "payload", "siblingData", "update", "t15", "t16", "useThrottledEffect", "FieldContext", "React", "createContext", "useField", "fieldContext", "use", "hasFieldContext", "currentPath", "Error", "dispatch", "c", "_c", "WatchCondition", "props", "$", "_c", "children", "path", "t0", "t1", "fields", "field", "useFormFields", "passesCondition", "withCondition", "Field", "props", "path", "_jsx", "WatchCondition", "mergeFieldStyles", "field", "admin", "style", "width", "flex", "fieldBaseClass", "isFieldRTL", "fieldLocalized", "fieldRTL", "locale", "localizationConfig", "hasMultipleLocales", "locales", "length", "isCurrentLocaleDefaultLocale", "code", "defaultLocale", "rtl", "c", "_c", "useEffect", "useId", "useState", "CheckIcon", "_jsx", "className", "viewBox", "xmlns", "d", "LineIcon", "_jsx", "className", "fill", "height", "viewBox", "width", "xmlns", "d", "inputBaseClass", "CheckboxInput", "t0", "$", "_c", "id", "idFromProps", "name", "AfterInput", "BeforeInput", "checked", "className", "inputRef", "Label", "label", "localized", "onToggle", "partialChecked", "readOnly", "readOnlyFromProps", "required", "isHydrated", "setIsHydrated", "useState", "fallbackID", "useId", "t1", "t2", "Symbol", "for", "useEffect", "t3", "t4", "t5", "filter", "Boolean", "t6", "join", "t7", "t8", "t9", "_jsx", "disabled", "onChange", "ref", "title", "type", "t10", "t11", "_jsxs", "children", "CheckIcon", "LineIcon", "RenderCustomComponent", "CustomComponent", "Fallback", "FieldLabel", "htmlFor", "baseClass", "CheckboxFieldComponent", "props", "id", "checkedFromProps", "checked", "disableFormData", "field", "admin", "className", "description", "label", "required", "onChangeFromProps", "onChange", "partialChecked", "path", "readOnly", "validate", "uuid", "useForm", "useEditDepth", "editDepth", "i18n", "useTranslation", "language", "isRTL", "rtlLanguages", "options", "memoizedValidate", "useCallback", "customComponents", "AfterInput", "BeforeInput", "Description", "Error", "Label", "disabled", "setValue", "showError", "value", "pathFromProps", "potentiallyStalePath", "onToggle", "value_0", "Boolean", "fieldID", "useMemo", "generateFieldID", "mergeFieldStyles", "fieldBaseClass", "baseClass", "style", "styles", "_jsx", "RenderCustomComponent", "CustomComponent", "FieldError", "Fallback", "alignCaret", "inputRef", "name", "FieldDescription", "CheckboxField", "withCondition", "baseClass", "t0", "$", "_c", "NullifyLocaleField", "fieldValue", "localized", "path", "t1", "readOnly", "currentLocale", "code", "useLocale", "t2", "config", "useConfig", "localization", "checked", "setChecked", "t", "useTranslation", "dispatchFields", "setModified", "useForm", "t3", "useFallback", "type", "onChange", "hideCheckbox", "t4", "_jsx", "Banner", "className", "CheckboxField", "children", "field", "name", "id", "scrollToID", "id", "element", "document", "getElementById", "bounds", "getBoundingClientRect", "window", "scrollBy", "behavior", "top", "c", "_c", "getTranslation", "c", "_c", "React", "baseClass", "PopupList", "t0", "$", "_c", "ArrayAction", "addRow", "copyRow", "duplicateRow", "hasMaxRows", "index", "isSortable", "moveRow", "pasteRow", "removeRow", "rowCount", "t", "useTranslation", "t1", "_jsx", "Popup", "MoreIcon", "button", "buttonClassName", "className", "horizontalAlign", "render", "t2", "close", "_jsxs", "PopupButtonList_exports", "buttonSize", "children", "onClick", "ChevronIcon", "React", "Fragment", "PlusIcon", "Button", "CopyIcon", "ClipboardActionLabel", "isPaste", "XIcon", "c", "_c", "useState", "DragHandleIcon", "className", "viewBox", "xmlns", "_jsx", "d", "strokeLinecap", "React", "useEffect", "useRef", "useEffect", "useMemo", "useRef", "useState", "usePatchAnimateHeight", "containerRef", "contentRef", "duration", "open", "browserSupportsKeywordAnimation", "CSS", "supports", "hasInitialized", "previousOpenState", "isAnimating", "setIsAnimating", "resizeObserverRef", "container", "current", "content", "setContainerHeight", "height", "style", "handleTransitionEnd", "transition", "animate", "scrollHeight", "offsetHeight", "onTransitionEnd", "removeEventListener", "addEventListener", "ResizeObserver", "observe", "disconnect", "AnimateHeight", "id", "children", "className", "duration", "height", "open", "setOpen", "React", "prevIsOpen", "useState", "useRef", "childrenDisplay", "setParentOverflow", "setChildrenDisplay", "parentOverflow", "containerRef", "setIsAnimating", "useEffect", "contentRef", "displayTimer", "overflowTimer", "newIsOpen", "Boolean", "hasChanged", "setTimeout", "window", "usePatchAnimateHeight", "_jsx", "isAnimating", "ref", "style", "overflow", "React", "createContext", "use", "Context", "isCollapsed", "undefined", "isVisible", "isWithinCollapsible", "toggle", "CollapsibleProvider", "children", "parentIsCollapsed", "useCollapsible", "contextValue", "useMemo", "_jsx", "value", "baseClass", "CollapsibleProvider", "CollapsibleProvider", "useCollapsible", "$", "_c", "Collapsible", "actions", "AfterCollapsible", "children", "className", "t1", "collapsibleStyle", "t2", "disableHeaderToggle", "t3", "disableToggleIndicator", "dragHandleProps", "header", "initCollapsed", "collapsedFromProps", "isCollapsed", "onToggle", "undefined", "collapsedLocal", "setCollapsedLocal", "useState", "Boolean", "isWithinCollapsible", "t", "useTranslation", "t4", "toggleCollapsible", "baseClass", "t5", "t6", "t7", "t8", "hoveringToggle", "t10", "t9", "t11", "t13", "t14", "Symbol", "setHoveringToggle", "t15", "t12", "_jsx", "_jsxs", "toggle", "onMouseEnter", "onMouseLeave", "onClick", "type", "attributes", "DragHandleIcon", "AnimateHeight", "height", "c", "_c", "fieldIsHiddenOrDisabled", "getFieldPaths", "getFieldPermissions", "c", "_c", "React", "RenderIfInViewport", "t0", "$", "_c", "children", "className", "forceRender", "hasRendered", "setHasRendered", "React", "useState", "Boolean", "t1", "Symbol", "for", "rootMargin", "intersectionRef", "entry", "useIntersect", "isIntersecting", "isAboveViewport", "boundingClientRect", "top", "shouldRender", "t2", "t3", "useEffect", "t4", "t5", "_jsx", "ref", "c", "_c", "getTranslation", "React", "Fragment", "useCallback", "useMemo", "c", "_c", "getTranslation", "c", "_c", "useEffect", "useState", "baseClass", "props", "DraggablePill", "$", "id", "className", "t0", "attributes", "isDragging", "listeners", "setNodeRef", "transform", "useDraggableSortable", "t2", "t1", "t3", "t4", "_jsx", "StaticPill", "elementProps", "ref", "style", "alignIcon", "ariaChecked", "ariaControls", "ariaLabel", "children", "draggable", "icon", "onClick", "pillStyle", "rounded", "size", "to", "undefined", "setIsHydrated", "useState", "Symbol", "useEffect", "isButton", "t5", "t6", "t7", "t8", "t9", "t10", "t11", "t12", "t14", "t13", "classes", "Element", "Link", "t15", "isHydrated", "t16", "t18", "ariaExpanded", "t17", "_jsxs", "disabled", "href", "type", "Pill", "useEffect", "useState", "useThrottledValue", "value", "delay", "throttledValue", "setThrottledValue", "handler", "setTimeout", "clearTimeout", "c", "_c", "React", "c", "_c", "getTranslation", "React", "useEffect", "getTranslation", "Fragment", "useEffect", "useMemo", "useState", "c", "_c", "baseClass", "props", "$", "_c", "ThumbnailCard", "alignLabel", "className", "collection", "doc", "labelFromProps", "label", "onClick", "thumbnail", "config", "useConfig", "i18n", "useTranslation", "t0", "t2", "t1", "classes", "t3", "title", "formatDocTitle", "data", "dateFormat", "fallback", "_jsxs", "type", "_jsx", "children", "useState", "byteToHex", "i", "unsafeStringify", "arr", "offset", "getRandomValues", "rnds8", "rng", "randomUUID", "native_default", "v4", "options", "buf", "offset", "native_default", "rnds", "rng", "i", "unsafeStringify", "v4_default", "DefaultBlockImage", "patternID", "useState", "uuid", "_jsxs", "fill", "height", "preserveAspectRatio", "viewBox", "width", "xmlns", "clipPath", "_jsx", "rx", "transform", "x", "y", "cx", "cy", "r", "id", "c", "_c", "SearchIcon", "_jsx", "className", "fill", "viewBox", "xmlns", "d", "baseClass", "props", "$", "_c", "BlockSearch", "setSearchTerm", "t", "useTranslation", "t0", "e", "handleChange", "t1", "_jsxs", "className", "children", "_jsx", "onChange", "placeholder", "baseClass", "block", "i18n", "getBlockLabel", "labels", "singular", "getTranslation", "BlockSelector", "props", "blocks", "onSelect", "searchTermFromProps", "searchTerm", "setSearchTerm", "useControllableState", "useTranslation", "config", "useConfig", "useMemo", "blockGroups", "groups", "filteredBlocks", "group", "admin", "label", "Object", "hasOwn", "useEffect", "searchTermToUse", "toLowerCase", "_block", "matchingBlocks", "reduce", "matchedBlocks", "block_0", "blockLabel", "includes", "setFilteredBlocks", "Fragment", "className", "_jsx", "groupLabel", "groupBlocks", "_jsxs", "entries", "_block_0", "index", "slug", "imageAltText", "imageURL", "blockLabels", "ThumbnailCard", "alignLabel", "onClick", "thumbnail", "alt", "BlocksDrawer", "props", "$", "_c", "addRow", "addRowIndex", "blocks", "drawerSlug", "labels", "closeModal", "isModalOpen", "useModal", "i18n", "t", "useTranslation", "searchTermOverride", "setSearchTermOverride", "React", "useState", "t0", "t1", "useEffect", "t2", "singular", "t3", "slug", "_jsx", "Drawer", "title", "label", "getTranslation", "children", "BlockSelector", "onSelect", "searchTerm", "RowActions", "props", "$", "_c", "addRow", "blocks", "blockType", "copyRow", "duplicateRow", "hasMaxRows", "isSortable", "labels", "moveRow", "pasteRow", "removeRow", "rowCount", "rowIndex", "closeModal", "openModal", "useModal", "drawerSlug", "useDrawerSlug", "indexToAdd", "setIndexToAdd", "React", "useState", "t0", "_", "rowBlockType", "t1", "t2", "index", "t3", "_jsxs", "Fragment", "children", "_jsx", "BlocksDrawer", "addRowIndex", "ArrayAction", "c", "_c", "baseClass", "$", "_c", "SectionTitle", "customOnChange", "customValue", "path", "readOnly", "props", "t0", "setValue", "value", "useField", "t", "useTranslation", "t1", "Symbol", "classes", "t2", "e", "stopPropagation", "preventDefault", "onChange", "t4", "t3", "_jsx", "className", "children", "id", "name", "placeholder", "type", "baseClass", "BlockRow", "t0", "$", "_c", "addRow", "attributes", "block", "blocks", "copyRow", "duplicateRow", "errorCount", "fields", "hasMaxRows", "isLoading", "isLoadingFromProps", "isSortable", "Label", "labels", "listeners", "moveRow", "parentPath", "pasteRow", "path", "permissions", "readOnly", "removeRow", "row", "rowCount", "rowIndex", "schemaPath", "setCollapse", "setNodeRef", "transform", "useThrottledValue", "i18n", "useTranslation", "fieldHasErrors", "useFormSubmitted", "showBlockName", "admin", "disableBlockName", "t1", "t2", "filter", "Boolean", "classNames", "join", "t3", "slug", "blockType", "collapsed", "id", "blockPermissions", "permissionsBlockSpecific", "hasReadPermission", "read", "missingCreateOrUpdate", "create", "update", "Object", "keys", "length", "t4", "_jsx", "split", "ref", "style", "children", "Collapsible", "actions", "RowActions", "className", "collapsibleStyle", "dragHandleProps", "undefined", "header", "ShimmerEffect", "height", "width", "_jsxs", "RowLabel", "CustomComponent", "label", "_Fragment", "String", "padStart", "Pill", "pillStyle", "size", "getTranslation", "singular", "SectionTitle", "ErrorPill", "count", "withMessage", "onToggle", "RenderFields", "margins", "parentIndexPath", "parentSchemaPath", "baseClass", "BlocksDrawer", "props", "BlocksFieldComponent", "i18n", "t", "useTranslation", "field", "name", "type", "admin", "className", "description", "isSortable", "blockReferences", "blocks", "label", "labelsFromProps", "labels", "localized", "maxRows", "minRowsProp", "minRows", "pathFromProps", "path", "permissions", "readOnly", "schemaPathFromProps", "schemaPath", "validate", "setDocFieldPreferences", "useDocumentInfo", "addFieldRow", "dispatchFields", "getFields", "moveFieldRow", "removeFieldRow", "replaceState", "setModified", "useForm", "locale", "code", "useLocale", "config", "useConfig", "useDrawerSlug", "drawerSlug", "useFormSubmitted", "submitted", "plural", "singular", "editingDefaultLocale", "localization", "fallback", "defaultLocale", "memoizedValidate", "useCallback", "value", "options", "required", "blocksFilterOptions", "customComponents", "AfterInput", "BeforeInput", "Description", "Error", "Label", "disabled", "errorPaths", "rows", "showError", "valid", "value_0", "useField", "hasRows", "potentiallyStalePath", "clientBlocks", "clientBlocksAfterFilter_0", "clientBlocksAfterFilter", "useMemo", "resolvedBlocks", "blockReference", "block", "Array", "block_0", "filter", "blockSlug", "rowIndex", "blockType", "setTimeout", "scrollToID", "rowIndex_0", "duplicateRow", "rowIndex_1", "moveFromIndex", "moveToIndex", "collapsed", "toggleCollapseAll", "collapsedIDs", "updatedRows", "setCollapse", "collapsedIDs_0", "updatedRows_0", "extractRowsAndCollapsedIDs", "rowID", "copyRow", "reduceFormStateByPath", "getDataToCopy", "formState", "rowIndex_2", "clipboardResult", "ue", "clipboardResult_0", "clipboardPaste", "pasteArgs", "onPaste", "dataFromClipboard", "newState", "mergeFormStateFromClipboard", "rowIndex_3", "schemaBlocks", "pasteBlocks", "newState_0", "hasMaxRows", "length", "fieldErrorCount", "fieldHasErrors", "showMinRows", "showRequired", "mergeFieldStyles", "fieldBaseClass", "id", "styles", "style", "_jsx", "RenderCustomComponent", "CustomComponent", "FieldError", "Fallback", "_jsxs", "FieldLabel", "as", "count", "withMessage", "Fragment", "onClick", "ClipboardAction", "allowCopy", "allowPaste", "FieldDescription", "fieldValue", "ids", "map", "onDragEnd", "moveFromIndex_0", "moveToIndex_0", "moveRow", "blockType_0", "isLoading", "row", "block_1", "blockConfig", "i", "rowPath", "errorPath", "DraggableSortableItem", "BlockRow", "draggableSortableItemProps", "addRow", "rowErrorCount", "errorCount", "fields", "parentPath", "pasteRow", "removeRow", "rowCount", "React", "Banner", "DrawerToggler", "slug", "Button", "buttonStyle", "el", "icon", "iconPosition", "iconStyle", "BlocksField", "withCondition", "React", "useCallback", "useEffect", "useMemo", "useState", "lazy", "Suspense", "LazyEditor", "lazy", "CodeEditor", "props", "_jsx", "Suspense", "fallback", "ShimmerEffect", "prismToMonacoLanguageMap", "js", "ts", "baseClass", "props", "CodeFieldComponent", "field", "admin", "className", "description", "editorOptions", "editorProps", "language", "label", "localized", "onMount", "path", "readOnly", "validate", "React", "inputChangeFromRef", "useState", "memoizedValidate", "recalculatedHeightAt", "setRecalculatedHeightAt", "useCallback", "options", "required", "customComponents", "AfterInput", "BeforeInput", "Description", "Error", "Label", "disabled", "initialValue", "setValue", "showError", "value", "pathFromProps", "potentiallyStalePath", "stringValueRef", "value_0", "useRef", "handleChange", "val", "useEffect", "current", "useMemo", "mergeFieldStyles", "fieldBaseClass", "style", "styles", "_jsx", "RenderCustomComponent", "CustomComponent", "FieldLabel", "Fallback", "FieldError", "CodeEditor", "defaultLanguage", "onChange", "wrapperProps", "FieldDescription", "CodeField", "withCondition", "getTranslation", "Fragment", "useCallback", "useEffect", "useMemo", "useState", "c", "_c", "fieldAffectsData", "buildPathSegments", "fields", "reduce", "acc", "field", "undefined", "push", "name", "type", "tabs", "forEach", "tab", "WatchChildErrors", "t0", "$", "_c", "fields", "path", "parentPath", "setErrorCount", "formState", "useAllFormFields", "hasSubmitted", "useFormSubmitted", "t1", "buildPathSegments", "segmentsToMatch", "t2", "errorCount", "Object", "entries", "forEach", "t3", "key", "some", "segment", "segmentToMatch", "join", "endsWith", "pathWithoutDot", "slice", "startsWith", "pathState", "valid", "useThrottledEffect", "baseClass", "fieldBaseClass", "props", "CollapsibleFieldComponent", "field", "admin", "className", "description", "initCollapsed", "fields", "label", "indexPath", "parentPath", "parentSchemaPath", "path", "permissions", "readOnly", "i18n", "useTranslation", "getPreference", "setPreference", "usePreferences", "preferencesKey", "useDocumentInfo", "setCollapsedOnMount", "useState", "fieldPreferencesKey", "fieldHasErrors", "setErrorCount", "customComponents", "AfterInput", "BeforeInput", "Description", "Label", "disabled", "onToggle", "useCallback", "newCollapsedState", "existingPreferences", "useEffect", "fetchInitialState", "preferences", "specificPreference", "undefined", "styles", "mergeFieldStyles", "_jsxs", "Fragment", "split", "id", "style", "_jsx", "Collapsible", "collapsibleStyle", "header", "RowLabel", "CustomComponent", "count", "withMessage", "RenderFields", "margins", "parentIndexPath", "FieldDescription", "Fallback", "CollapsibleField", "withCondition", "getTranslation", "useCallback", "useMemo", "lazy", "Suspense", "DatePicker", "lazy", "DatePickerField", "props", "_jsx", "Suspense", "fallback", "ShimmerEffect", "height", "useMemo", "getTranslation", "React", "useEffect", "useId", "_typeof", "o", "toPrimitive", "r", "_typeof", "e", "i", "toPropertyKey", "i", "toPrimitive", "_typeof", "_defineProperty", "e", "r", "t", "toPropertyKey", "ownKeys", "e", "r", "t", "o", "_objectSpread2", "_defineProperty", "_arrayWithHoles", "r", "_iterableToArrayLimit", "r", "l", "t", "e", "n", "i", "u", "f", "o", "_arrayLikeToArray", "r", "a", "e", "_unsupportedIterableToArray", "r", "a", "_arrayLikeToArray", "t", "_nonIterableRest", "_slicedToArray", "r", "_arrayWithHoles", "_iterableToArrayLimit", "_unsupportedIterableToArray", "_nonIterableRest", "_objectWithoutProperties", "e", "t", "r", "i", "_objectWithoutPropertiesLoose", "n", "useState", "useCallback", "_excluded", "useStateManager", "_ref", "_ref$defaultInputValu", "defaultInputValue", "_ref$defaultMenuIsOpe", "defaultMenuIsOpen", "_ref$defaultValue", "defaultValue", "propsInputValue", "propsMenuIsOpen", "propsOnChange", "propsOnInputChange", "propsOnMenuClose", "propsOnMenuOpen", "propsValue", "restSelectProps", "_objectWithoutProperties", "_useState", "_useState2", "_slicedToArray", "stateInputValue", "setStateInputValue", "_useState3", "_useState4", "stateMenuIsOpen", "setStateMenuIsOpen", "_useState5", "_useState6", "stateValue", "setStateValue", "onChange", "value", "actionMeta", "onInputChange", "newValue", "onMenuOpen", "onMenuClose", "inputValue", "menuIsOpen", "_objectSpread2", "React", "forwardRef", "useMemo", "_classCallCheck", "a", "n", "_defineProperties", "e", "r", "t", "o", "toPropertyKey", "_createClass", "_inherits", "_setPrototypeOf", "_getPrototypeOf", "t", "_isNativeReflectConstruct", "_possibleConstructorReturn", "_typeof", "_assertThisInitialized", "_createSuper", "r", "_isNativeReflectConstruct", "e", "o", "_getPrototypeOf", "s", "_possibleConstructorReturn", "_arrayWithoutHoles", "r", "_arrayLikeToArray", "_iterableToArray", "r", "_nonIterableSpread", "_toConsumableArray", "r", "_arrayWithoutHoles", "_iterableToArray", "_unsupportedIterableToArray", "_nonIterableSpread", "React", "useMemo", "Fragment", "useRef", "useCallback", "useEffect", "Component", "React", "useContext", "forwardRef", "isDevelopment", "sheetForTag", "tag", "i", "createStyleElement", "options", "StyleSheet", "_this", "before", "_proto", "nodes", "rule", "sheet", "_tag$parentNode", "MS", "MOZ", "WEBKIT", "COMMENT", "RULESET", "DECLARATION", "IMPORT", "KEYFRAMES", "LAYER", "abs", "from", "assign", "hash", "value", "length", "charat", "trim", "match", "pattern", "replace", "replacement", "indexof", "search", "index", "substr", "begin", "end", "strlen", "sizeof", "append", "array", "combine", "callback", "line", "column", "length", "position", "character", "characters", "node", "value", "root", "parent", "type", "props", "children", "copy", "assign", "char", "prev", "charat", "next", "peek", "caret", "slice", "begin", "end", "substr", "token", "alloc", "strlen", "dealloc", "delimit", "trim", "delimiter", "whitespace", "type", "character", "peek", "next", "token", "escaping", "index", "count", "next", "character", "slice", "caret", "peek", "delimiter", "type", "position", "commenter", "from", "identifier", "token", "compile", "value", "dealloc", "parse", "alloc", "root", "parent", "rule", "rules", "rulesets", "pseudo", "points", "declarations", "index", "offset", "length", "atrule", "property", "previous", "variable", "scanning", "ampersand", "character", "type", "props", "children", "reference", "characters", "next", "charat", "indexof", "replace", "delimit", "whitespace", "escaping", "caret", "peek", "append", "comment", "commenter", "strlen", "declaration", "ruleset", "prev", "from", "identifier", "post", "size", "sizeof", "i", "j", "k", "x", "y", "substr", "abs", "z", "trim", "node", "RULESET", "COMMENT", "char", "DECLARATION", "serialize", "children", "callback", "output", "length", "sizeof", "i", "stringify", "element", "index", "LAYER", "IMPORT", "DECLARATION", "COMMENT", "KEYFRAMES", "RULESET", "strlen", "middleware", "collection", "length", "sizeof", "element", "index", "children", "callback", "output", "i", "rulesheet", "memoize", "fn", "cache", "arg", "identifierWithPointTracking", "begin", "points", "index", "previous", "character", "peek", "token", "next", "slice", "position", "toRules", "parsed", "delimit", "from", "getRules", "value", "dealloc", "alloc", "fixedElements", "compat", "element", "parent", "isImplicitRule", "rules", "parentRules", "i", "k", "j", "removeLabel", "prefix", "length", "hash", "WEBKIT", "MOZ", "MS", "replace", "strlen", "charat", "indexof", "prefixer", "children", "callback", "DECLARATION", "KEYFRAMES", "serialize", "copy", "RULESET", "combine", "match", "defaultStylisPlugins", "createCache", "options", "key", "ssrStyles", "node", "dataEmotionAttribute", "stylisPlugins", "inserted", "container", "nodesToHydrate", "attrib", "_insert", "omnipresentPlugins", "currentSheet", "finalizingPlugins", "stringify", "rulesheet", "rule", "serializer", "middleware", "stylis", "styles", "compile", "selector", "serialized", "sheet", "shouldCache", "cache", "StyleSheet", "isBrowser", "getRegisteredStyles", "registered", "registeredStyles", "classNames", "rawClassName", "className", "registerStyles", "cache", "serialized", "isStringTag", "insertStyles", "current", "murmur2", "str", "h", "k", "i", "len", "unitlessKeys", "isDevelopment", "hyphenateRegex", "animationRegex", "isCustomProperty", "property", "isProcessableValue", "value", "processStyleName", "memoize", "styleName", "processStyleValue", "key", "match", "p1", "p2", "cursor", "unitlessKeys", "noComponentSelectorMessage", "handleInterpolation", "mergedProps", "registered", "interpolation", "componentSelector", "keyframes", "serializedStyles", "next", "styles", "createStringFromObject", "previousCursor", "result", "asString", "cached", "obj", "string", "i", "_i", "interpolated", "labelPattern", "serializeStyles", "args", "stringMode", "strings", "asTemplateStringsArr", "templateStringsArr", "identifierName", "name", "murmur2", "React", "syncFallback", "create", "useInsertionEffect", "useInsertionEffectAlwaysWithSyncFallback", "isDevelopment", "EmotionCacheContext", "createCache", "CacheProvider", "withEmotionCache", "func", "forwardRef", "props", "ref", "cache", "useContext", "EmotionCacheContext", "ThemeContext", "hasOwn", "typePropName", "createEmotionProps", "type", "props", "newProps", "_key", "Insertion", "_ref", "cache", "serialized", "isStringTag", "registerStyles", "useInsertionEffectAlwaysWithSyncFallback", "insertStyles", "Emotion", "withEmotionCache", "ref", "cssProp", "WrappedComponent", "registeredStyles", "className", "getRegisteredStyles", "serializeStyles", "ThemeContext", "_key2", "isDevelopment", "Emotion$1", "React", "import_hoist_non_react_statics", "jsx", "type", "props", "args", "hasOwn", "argsLength", "createElementArgArray", "Emotion$1", "createEmotionProps", "_jsx", "JSX", "css", "_len", "args", "_key", "serializeStyles", "keyframes", "insertable", "name", "_taggedTemplateLiteral", "e", "t", "init_floating_ui_dom", "useContext", "useRef", "useState", "useMemo", "useCallback", "createContext", "createPortal", "useLayoutEffect", "index", "_excluded$4", "noop", "applyPrefixToName", "prefix", "name", "classNames", "state", "_len", "classNameList", "_key", "arr", "key", "i", "cleanValue", "value", "isArray", "_typeof", "cleanCommonProps", "props", "innerProps", "_objectWithoutProperties", "_objectSpread2", "getStyleProps", "classNamesState", "cx", "getStyles", "getClassNames", "className", "isDocumentElement", "el", "normalizedHeight", "getScrollTop", "scrollTo", "top", "getScrollParent", "element", "style", "excludeStaticParent", "overflowRx", "parent", "easeOutCubic", "b", "c", "d", "animatedScrollTo", "to", "duration", "callback", "noop", "start", "change", "increment", "currentTime", "animateScroll", "val", "scrollIntoView", "menuEl", "focusedEl", "menuRect", "focusedRect", "overScroll", "getBoundingClientObj", "rect", "isTouchCapable", "isMobileDevice", "passiveOptionAccessed", "options", "w", "supportsPassiveEvents", "notNullish", "item", "isArray", "arg", "valueTernary", "isMulti", "multiValue", "singleValue", "removeProps", "propsObj", "_len2", "properties", "_key2", "propsMap", "_ref", "_ref2", "_slicedToArray", "key", "newProps", "_ref3", "_ref4", "val", "_excluded$3", "_excluded2$1", "getMenuPlacement", "preferredMaxHeight", "menuEl", "minHeight", "preferredPlacement", "shouldScroll", "isFixedPosition", "controlHeight", "scrollParent", "getScrollParent", "defaultState", "_scrollParent$getBoun", "scrollHeight", "_menuEl$getBoundingCl", "menuBottom", "menuHeight", "menuTop", "_menuEl$offsetParent$", "containerTop", "viewHeight", "normalizedHeight", "scrollTop", "getScrollTop", "marginBottom", "marginTop", "viewSpaceAbove", "viewSpaceBelow", "scrollSpaceAbove", "scrollSpaceBelow", "scrollDown", "scrollUp", "scrollDuration", "animatedScrollTo", "constrainedHeight", "_constrainedHeight", "spaceAbove", "scrollTo", "_constrainedHeight2", "alignToControl", "placement", "placementToCSSProp", "coercePlacement", "p", "menuCSS", "unstyled", "_objectSpread2", "_ref2$theme", "borderRadius", "spacing", "colors", "_defineProperty", "PortalPlacementContext", "createContext", "MenuPlacer", "props", "children", "minMenuHeight", "maxMenuHeight", "menuPlacement", "menuPosition", "menuShouldScrollIntoView", "theme", "useContext", "setPortalPlacement", "ref", "useRef", "_useState", "useState", "_useState2", "maxHeight", "setMaxHeight", "_useState3", "_useState4", "setPlacement", "index", "state", "Menu", "innerRef", "innerProps", "jsx", "_extends", "getStyleProps", "Menu$1", "menuListCSS", "baseUnit", "MenuList", "isMulti", "noticeCSS", "_ref5", "_ref5$theme", "noOptionsMessageCSS", "loadingMessageCSS", "NoOptionsMessage", "_ref6", "_ref6$children", "restProps", "_objectWithoutProperties", "LoadingMessage", "_ref7", "_ref7$children", "menuPortalCSS", "_ref8", "rect", "offset", "position", "MenuPortal", "appendTo", "controlElement", "menuPortalRef", "cleanupRef", "_useState5", "_useState6", "portalPlacementContext", "useMemo", "_useState7", "_useState8", "computedPosition", "setComputedPosition", "updateComputedPosition", "useCallback", "getBoundingClientObj", "scrollDistance", "runAutoUpdate", "autoUpdate", "setMenuPortalElement", "menuPortalElement", "menuWrapper", "createPortal", "containerCSS", "isDisabled", "isRtl", "SelectContainer", "valueContainerCSS", "hasValue", "controlShouldRenderValue", "ValueContainer", "indicatorsContainerCSS", "IndicatorsContainer", "_templateObject", "_excluded$2", "_excluded2", "_ref2", "Svg", "_ref", "size", "props", "_objectWithoutProperties", "_excluded$2", "jsx", "_extends", "CrossIcon", "DownChevron", "baseCSS", "_ref3", "unstyled", "isFocused", "_ref3$theme", "baseUnit", "colors", "_objectSpread2", "dropdownIndicatorCSS", "DropdownIndicator", "children", "innerProps", "getStyleProps", "clearIndicatorCSS", "ClearIndicator", "indicatorSeparatorCSS", "_ref4", "isDisabled", "_ref4$theme", "IndicatorSeparator", "loadingDotAnimations", "keyframes", "_templateObject", "_taggedTemplateLiteral", "loadingIndicatorCSS", "_ref5", "_ref5$theme", "LoadingDot", "_ref6", "delay", "offset", "css", "LoadingIndicator", "_ref7", "isRtl", "_ref7$size", "restProps", "_excluded2", "css$1", "_ref$theme", "borderRadius", "spacing", "Control", "innerRef", "menuIsOpen", "Control$1", "_excluded$1", "groupCSS", "Group", "cx", "getStyles", "getClassNames", "Heading", "headingProps", "label", "theme", "selectProps", "groupHeadingCSS", "_ref2$theme", "GroupHeading", "_cleanCommonProps", "cleanCommonProps", "Group$1", "_excluded", "inputCSS", "value", "containerStyle", "spacingStyle", "inputStyle", "isHidden", "Input", "inputClassName", "Input$1", "multiValueCSS", "multiValueLabelCSS", "cropWithEllipsis", "multiValueRemoveCSS", "MultiValueGeneric", "MultiValueContainer", "MultiValueLabel", "MultiValueRemove", "MultiValue", "components", "data", "removeProps", "Container", "Label", "Remove", "MultiValue$1", "optionCSS", "isSelected", "Option", "Option$1", "placeholderCSS", "Placeholder", "Placeholder$1", "SingleValue", "SingleValue$1", "IndicatorsContainer", "Menu$1", "MenuList", "MenuPortal", "LoadingMessage", "NoOptionsMessage", "SelectContainer", "ValueContainer", "defaultComponents", "safeIsNaN", "value", "isEqual", "first", "second", "areInputsEqual", "newInputs", "lastInputs", "i", "memoizeOne", "resultFn", "cache", "memoized", "newArgs", "_i", "lastResult", "_ref", "A11yText", "props", "jsx", "_extends", "A11yText$1", "defaultAriaLiveMessages", "isSearchable", "isMulti", "tabSelectsValue", "context", "isInitialFocus", "action", "_props$label", "label", "labels", "isDisabled", "focused", "options", "_props$label2", "selectValue", "isSelected", "isAppleDevice", "getArrayIndex", "arr", "item", "disabled", "status", "inputValue", "resultsMessage", "LiveRegion", "ariaSelection", "focusedOption", "focusedValue", "focusableOptions", "isFocused", "selectProps", "id", "ariaLiveMessages", "getOptionLabel", "isOptionDisabled", "menuIsOpen", "screenReaderStatus", "isLoading", "ariaLabel", "ariaLive", "messages", "useMemo", "_objectSpread2", "ariaSelected", "message", "option", "selectedOptions", "removedValue", "removedValues", "value", "asOption", "val", "selected", "multiSelected", "onChangeProps", "ariaFocused", "focusMsg", "onFocusProps", "ariaResults", "resultsMsg", "ariaGuidance", "guidanceMsg", "ScreenReaderText", "Fragment", "LiveRegion$1", "diacritics", "anyDiacritic", "d", "diacriticToBase", "i", "diacritic", "j", "stripDiacritics", "str", "match", "memoizedStripDiacriticsForInput", "memoizeOne", "trimString", "defaultStringify", "createFilter", "config", "rawInput", "_ignoreCase$ignoreAcc", "ignoreCase", "ignoreAccents", "stringify", "trim", "matchFrom", "input", "candidate", "_excluded", "DummyInput", "innerRef", "_objectWithoutProperties", "filteredProps", "removeProps", "css", "cancelScroll", "event", "useScrollCapture", "isEnabled", "onBottomArrive", "onBottomLeave", "onTopArrive", "onTopLeave", "isBottom", "useRef", "isTop", "touchStart", "scrollTarget", "handleEventDelta", "useCallback", "delta", "_scrollTarget$current", "scrollTop", "scrollHeight", "clientHeight", "target", "isDeltaPositive", "availableScroll", "shouldCancelScroll", "onWheel", "onTouchStart", "onTouchMove", "deltaY", "startListening", "el", "notPassive", "supportsPassiveEvents", "stopListening", "useEffect", "element", "STYLE_KEYS", "LOCK_STYLES", "preventTouchMove", "e", "allowTouchMove", "preventInertiaScroll", "top", "totalScroll", "currentScroll", "isTouchDevice", "canUseDOM", "activeScrollLocks", "listenerOptions", "useScrollLock", "_ref$accountForScroll", "accountForScrollbars", "originalStyles", "addScrollLock", "touchScrollTarget", "targetStyle", "key", "currentPadding", "clientWidth", "adjustedPadding", "removeScrollLock", "blurSelectInput", "event", "element", "_ref2$1", "ScrollManager", "_ref", "children", "lockEnabled", "_ref$captureEnabled", "captureEnabled", "onBottomArrive", "onBottomLeave", "onTopArrive", "onTopLeave", "setScrollCaptureTarget", "useScrollCapture", "setScrollLockTarget", "useScrollLock", "targetRef", "jsx", "Fragment", "_ref2", "RequiredInput", "_ref", "name", "onFocus", "jsx", "RequiredInput$1", "testPlatform", "re", "_window$navigator$use", "isIPhone", "isMac", "isIPad", "isIOS", "isAppleDevice", "formatGroupLabel", "group", "getOptionLabel$1", "option", "getOptionValue$1", "isOptionDisabled", "defaultStyles", "clearIndicatorCSS", "containerCSS", "css$1", "dropdownIndicatorCSS", "groupCSS", "groupHeadingCSS", "indicatorsContainerCSS", "indicatorSeparatorCSS", "inputCSS", "loadingIndicatorCSS", "loadingMessageCSS", "menuCSS", "menuListCSS", "menuPortalCSS", "multiValueCSS", "multiValueLabelCSS", "multiValueRemoveCSS", "noOptionsMessageCSS", "optionCSS", "placeholderCSS", "css", "valueContainerCSS", "colors", "borderRadius", "baseUnit", "controlHeight", "menuGutter", "spacing", "defaultTheme", "defaultProps", "isTouchCapable", "createFilter", "formatGroupLabel", "getOptionLabel$1", "getOptionValue$1", "isOptionDisabled", "isMobileDevice", "_ref", "count", "toCategorizedOption", "props", "option", "selectValue", "index", "isDisabled", "_isOptionDisabled", "isSelected", "_isOptionSelected", "label", "getOptionLabel", "value", "getOptionValue", "buildCategorizedOptions", "groupOrOption", "groupOrOptionIndex", "categorizedOptions", "optionIndex", "categorizedOption", "isFocusable", "notNullish", "buildFocusableOptionsFromCategorizedOptions", "optionsAccumulator", "_toConsumableArray", "buildFocusableOptionsWithIds", "optionId", "buildFocusableOptions", "_props$inputValue", "inputValue", "data", "shouldHideSelectedOptions", "_filterOption", "getNextFocusedValue", "state", "nextSelectValue", "focusedValue", "lastSelectValue", "lastFocusedIndex", "nextFocusedIndex", "getNextFocusedOption", "options", "lastFocusedOption", "getFocusedOptionId", "focusableOptionsWithIds", "focusedOption", "_focusableOptionsWith", "focusedOptionId", "candidate", "i", "hideSelectedOptions", "isMulti", "instanceId", "Select", "_Component", "_inherits", "_super", "_createSuper", "_props", "_this", "_classCallCheck", "isAppleDevice", "ref", "newValue", "actionMeta", "_this$props", "onChange", "name", "action", "_this$props2", "closeMenuOnSelect", "_this$props3", "blurInputOnSelect", "deselected", "removedValue", "newValueArray", "valueTernary", "lastSelectedValue", "_len", "args", "_key", "classNames", "key", "unstyled", "base", "defaultStyles", "custom", "_this$props$className", "_this$props$className2", "element", "defaultComponents", "_objectSpread2", "event", "openMenuOnClick", "_this$props4", "menuIsOpen", "isDocumentElement", "_ref2", "touches", "touch", "_ref3", "deltaX", "deltaY", "moveThreshold", "prevInputValue", "focusedOptionIndex", "e", "_this$props5", "backspaceRemovesValue", "escapeClearsValue", "isClearable", "onKeyDown", "tabSelectsValue", "openMenuOnFocus", "_this$state", "cleanValue", "focusableOptions", "_createClass", "scrollIntoView", "prevProps", "_this$props6", "isFocused", "focusOption", "_this2", "_this$state2", "openAtIndex", "selectedIndex", "direction", "_this$state3", "focusedIndex", "lastIndex", "nextFocus", "pageSize", "clearValue", "cx", "getStyles", "getClassNames", "getValue", "selectOption", "setValue", "isRtl", "hasValue", "_this$props7", "context", "_inputValue", "_selectValue", "_this$props8", "isSearchable", "inputId", "tabIndex", "form", "required", "_this$getComponents", "Input", "_this$state4", "inputIsHidden", "ariaSelection", "commonProps", "id", "ariaAttributes", "_extends", "DummyInput", "noop", "_this3", "_this$getComponents2", "MultiValue", "MultiValueContainer", "MultiValueLabel", "MultiValueRemove", "SingleValue", "Placeholder", "_this$props9", "controlShouldRenderValue", "placeholder", "_this$state5", "opt", "isOptionFocused", "singleValue", "_this$getComponents3", "ClearIndicator", "_this$props10", "isLoading", "innerProps", "_this$getComponents4", "LoadingIndicator", "_this$props11", "_this$getComponents5", "DropdownIndicator", "IndicatorSeparator", "_this$getComponents6", "_this4", "_this$getComponents7", "Group", "GroupHeading", "Menu", "MenuList", "MenuPortal", "LoadingMessage", "NoOptionsMessage", "Option", "_this$props12", "captureMenuScroll", "loadingMessage", "minMenuHeight", "maxMenuHeight", "menuPlacement", "menuPosition", "menuPortalTarget", "menuShouldBlockScroll", "menuShouldScrollIntoView", "noOptionsMessage", "onMenuScrollToTop", "onMenuScrollToBottom", "render", "type", "onHover", "onSelect", "menuUI", "item", "_data", "groupIndex", "groupId", "headingId", "message", "_message", "menuPlacementProps", "menuElement", "MenuPlacer", "_ref4", "_ref4$placerProps", "placement", "maxHeight", "ScrollManager", "scrollTargetRef", "instance", "_this5", "_this$props13", "delimiter", "RequiredInput$1", "input", "_value", "_this$state6", "LiveRegion$1", "_this$getComponents8", "Control", "IndicatorsContainer", "SelectContainer", "ValueContainer", "_this$props14", "className", "clearFocusValueOnUpdate", "inputIsHiddenAfterUpdate", "prevWasFocused", "instancePrefix", "newMenuOptionsState", "newInputIsHiddenState", "newAriaSelection", "hasKeptFocus", "Component", "StateManagedSelect", "forwardRef", "props", "ref", "baseSelectProps", "useStateManager", "Select", "_extends", "StateManagedSelect$1", "React", "forwardRef", "useMemo", "useCallback", "_excluded", "compareOption", "inputValue", "option", "accessors", "candidate", "optionValue", "optionLabel", "builtins", "selectValue", "selectOptions", "useCreatable", "_ref", "_ref$allowCreateWhile", "allowCreateWhileLoading", "_ref$createOptionPosi", "createOptionPosition", "_ref$formatCreateLabe", "formatCreateLabel", "_ref$isValidNewOption", "isValidNewOption", "_ref$getNewOptionData", "getNewOptionData", "onCreateOption", "_ref$options", "propsOptions", "propsOnChange", "restSelectProps", "_objectWithoutProperties", "_restSelectProps$getO", "getOptionValue$1", "_restSelectProps$getO2", "getOptionLabel$1", "isLoading", "isMulti", "value", "name", "newOption", "useMemo", "cleanValue", "options", "_toConsumableArray", "onChange", "useCallback", "newValue", "actionMeta", "valueArray", "newOptionData", "newActionMeta", "valueTernary", "_objectSpread2", "CreatableSelect", "forwardRef", "props", "ref", "creatableProps", "useStateManager", "selectProps", "useCreatable", "Select", "_extends", "CreatableSelect$1", "baseClass", "props", "clearValue", "innerProps", "ref", "restInnerProps", "_jsx", "onKeyDown", "role", "tabIndex", "XIcon", "React", "Control", "props", "children", "innerProps", "selectProps", "customProps", "disableKeyDown", "disableMouseDown", "_jsx", "React", "Fragment", "SelectComponents", "onKeyDown", "e", "stopPropagation", "bypassEvent", "CustomEvent", "detail", "document", "dispatchEvent", "onMouseDown", "baseClass", "props", "innerProps", "ref", "restInnerProps", "_jsx", "className", "onKeyDown", "e", "type", "ChevronIcon", "React", "Input", "props", "_jsx", "React", "Fragment", "SelectComponents", "undefined", "c", "_c", "React", "baseClass", "generateMultiValueDraggableID", "optionData", "valueFunction", "MultiValue", "props", "$", "_c", "className", "data", "innerProps", "isDisabled", "t0", "selectProps", "t1", "t2", "customProps", "getOptionValue", "isSortable", "t3", "disableMouseDown", "t4", "id", "t6", "t5", "attributes", "isDragging", "listeners", "setNodeRef", "transform", "useDraggableSortable", "t7", "t9", "t8", "classes", "t10", "t11", "e", "_jsx", "React", "Fragment", "children", "onMouseDown", "ref", "style", "getTranslation", "baseClass", "props", "data", "t0", "selectProps", "t1", "customProps", "draggableProps", "editableProps", "i18n", "useTranslation", "className", "getTranslation", "titleText", "label", "labelText", "title", "children", "innerProps", "c", "_c", "React", "baseClass", "props", "$", "_c", "MultiValueRemove", "t0", "innerProps", "className", "onClick", "onTouchEnd", "showTooltip", "setShowTooltip", "React", "t", "useTranslation", "t1", "t2", "t3", "t4", "e", "t5", "t6", "_jsxs", "_temp", "onKeyDown", "onMouseDown", "_temp2", "onMouseEnter", "onMouseLeave", "type", "_jsx", "Tooltip", "children", "show", "XIcon", "e_0", "e_1", "React", "baseClass", "SingleValue", "props", "children", "className", "_jsx", "React", "Fragment", "SelectComponents", "filter", "Boolean", "join", "getTranslation", "baseClass", "props", "t0", "selectProps", "customProps", "value", "i18n", "useTranslation", "titleText", "isArray", "getTranslation", "labelText", "label", "_jsxs", "className", "ref", "title", "_jsx", "children", "valueContainerLabel", "createOption", "ValueContainer", "label", "SelectAdapter", "props", "i18n", "t", "useTranslation", "setInputValue", "React", "uuid", "useId", "setHasMounted", "useEffect", "hasMounted", "className", "components", "customProps", "disabled", "filterOption", "getOptionValue", "isClearable", "isCreatable", "isLoading", "isSearchable", "noOptionsMessage", "numberOnly", "onChange", "onMenuClose", "onMenuOpen", "options", "placeholder", "showError", "value", "loadingMessage", "classes", "rsStyles", "menu", "_jsx", "ShimmerEffect", "StateManagedSelect$1", "captureMenuScroll", "classNamePrefix", "ClearIndicator", "Control", "DropdownIndicator", "Input", "MultiValue", "MultiValueLabel", "MultiValueRemove", "SingleValue", "instanceId", "isDisabled", "menuPlacement", "styles", "unstyled", "handleKeyDown", "event", "acceptableKeys", "isNumber", "key", "isActionKey", "inputValue", "CreatableSelect$1", "newValue", "onInputChange", "onKeyDown", "SortableSelect", "draggableIDs", "optionValue", "DraggableSortable", "ids", "onDragEnd", "moveFromIndex", "moveToIndex", "sorted", "arrayMove", "isArray", "ReactSelect", "isMulti", "isSortable", "formatOptions", "options", "map", "option", "value", "label", "formatOptions", "props", "id", "onChangeFromProps", "onChange", "optionsFromProps", "options", "readOnly", "required", "selectedTimezoneFromProps", "selectedTimezone", "t", "useTranslation", "t_0", "find", "Boolean", "readOnlyFromProps", "className", "_jsx", "FieldLabel", "htmlFor", "label", "ReactSelect", "disabled", "inputId", "isClearable", "isCreatable", "value", "baseClass", "fieldBaseClass", "props", "DateTimeFieldComponent", "field", "admin", "className", "date", "description", "placeholder", "label", "localized", "required", "pathFromProps", "path", "readOnly", "validate", "datePickerProps", "userTimezone", "config", "useConfig", "i18n", "useTranslation", "dispatchFields", "setModified", "useForm", "useCallback", "value", "options", "memoizedValidate", "customComponents", "AfterInput", "BeforeInput", "Description", "Error", "Label", "disabled", "setValue", "showError", "potentiallyStalePath", "timezonePath", "fields", "_", "timezoneField", "useFormFields", "supportedTimezones", "timezone", "timezones", "isDateOnly", "selectedTimezone", "displayedValue", "useMemo", "value_0", "DateWithOriginalTz", "TZDateMini", "TZDate", "DateWithUserTz", "dateWithTimezone", "transpose", "modifiedDate", "styles", "mergeFieldStyles", "onChange", "incomingDate", "TZDateWithSelectedTz", "incomingOffset", "getTimezoneOffset", "originalHour", "getHours", "dateToSelectedTz", "dateToUserTz", "dateWithTimezone_0", "onChangeTimezone", "type", "style", "_jsx", "RenderCustomComponent", "CustomComponent", "FieldLabel", "Fallback", "id", "replace", "FieldError", "overrides", "getTranslation", "timezoneRequired", "FieldDescription", "DateTimeField", "withCondition", "getTranslation", "useCallback", "useMemo", "EmailFieldComponent", "props", "field", "admin", "autoComplete", "className", "description", "placeholder", "label", "localized", "required", "pathFromProps", "path", "readOnly", "validate", "i18n", "useTranslation", "useCallback", "value", "options", "memoizedValidate", "customComponents", "AfterInput", "BeforeInput", "Description", "Error", "Label", "disabled", "setValue", "showError", "potentiallyStalePath", "styles", "useMemo", "mergeFieldStyles", "fieldBaseClass", "style", "_jsx", "RenderCustomComponent", "CustomComponent", "FieldLabel", "Fallback", "FieldError", "id", "name", "onChange", "type", "value_0", "FieldDescription", "EmailField", "withCondition", "getTranslation", "groupHasName", "useMemo", "createContext", "use", "Context", "RowProvider", "children", "withinRow", "_jsx", "value", "useRow", "createContext", "use", "Context", "TabsProvider", "children", "withinTab", "_jsx", "value", "useTabs", "createContext", "use", "GroupContext", "GroupProvider", "children", "withinGroup", "_jsx", "value", "useGroup", "baseClass", "GroupProvider", "props", "field", "admin", "className", "description", "hideGutter", "fields", "indexPath", "parentPath", "parentSchemaPath", "path", "permissions", "readOnly", "schemaPathFromProps", "schemaPath", "groupHasName", "i18n", "useTranslation", "isWithinCollapsible", "useCollapsible", "useGroup", "isWithinGroup", "useRow", "isWithinRow", "isWithinTab", "customComponents", "AfterInput", "BeforeInput", "Description", "Label", "errorPaths", "submitted", "useFormSubmitted", "errorCount", "fieldHasErrors", "isTopLevel", "useMemo", "mergeFieldStyles", "fieldBaseClass", "id", "styles", "style", "_jsx", "_jsxs", "label", "Boolean", "CustomComponent", "Fallback", "FieldLabel", "as", "getTranslation", "localized", "FieldDescription", "count", "withMessage", "margins", "parentIndexPath", "GroupProvider", "useGroup", "GroupFieldComponent", "c", "_c", "useEffect", "HiddenFieldComponent", "props", "$", "_c", "disableModifyingForm", "t0", "path", "pathFromProps", "value", "valueFromProps", "undefined", "t1", "potentiallyStalePath", "formInitializing", "setValue", "useField", "t2", "t3", "useEffect", "t4", "replace", "t5", "t6", "_jsx", "id", "name", "onChange", "type", "HiddenField", "withCondition", "import_bson_objectid", "fieldAffectsData", "flattenTopLevelFields", "useMemo", "getTranslation", "hoistQueryParamsToAnd", "transformColumnsToPreferences", "React", "Fragment", "useCallback", "useEffect", "useRef", "useState", "useRouter", "useSearchParams", "qs", "React", "useCallback", "useEffect", "useMemo", "useRef", "useState", "createContext", "use", "ListDrawerContext", "ListDrawerContextProvider", "children", "rest", "_jsx", "value", "isInDrawer", "Boolean", "drawerSlug", "useListDrawerContext", "context", "Error", "qs", "parseSearchParams", "searchParams", "search", "toString", "parse", "depth", "ignoreQueryPrefix", "createContext", "use", "ListQueryContext", "useListQuery", "ListQueryModifiedContext", "mergeQuery", "currentQuery", "newQuery", "options", "page", "some", "key", "includes", "shouldResetQueryByGroup", "mergedQueryByGroup", "queryByGroup", "Object", "fromEntries", "entries", "map", "value", "columns", "groupBy", "defaults", "limit", "preset", "search", "sort", "where", "sanitizeQuery", "toSanitize", "sanitized", "Object", "entries", "forEach", "key", "value", "Array", "isArray", "length", "keys", "parsed", "parseInt", "Number", "isNaN", "undefined", "ListQueryProvider", "children", "collectionSlug", "data", "modifySearchParams", "onQueryChange", "onQueryChangeFromProps", "orderableFieldName", "query", "queryFromProps", "router", "useRouter", "rawSearchParams", "useSearchParams", "startRouteTransition", "useRouteTransition", "modified", "setModified", "useState", "getEntityConfig", "useConfig", "collectionConfig", "contextRef", "useRef", "current", "onQueryChangeFromContext", "useListDrawerContext", "queryFromURL", "useMemo", "sanitizeQuery", "parseSearchParams", "setQuery", "limit", "sort", "refineListData", "useCallback", "incomingQuery", "newQuery", "mergeQuery", "defaults", "search", "stringify", "columns", "JSON", "queryByGroup", "window", "location", "replace", "handlePageChange", "arg", "page", "handlePerPageChange", "React", "handleSearchChange", "undefined", "handleSortChange", "handleWhereChange", "where", "syncPropsToURL", "useEffectEvent", "history", "replaceState", "useEffect", "_jsx", "ListQueryContext", "value", "defaultLimit", "isGroupingBy", "Boolean", "admin", "groupBy", "ListQueryModifiedContext", "React", "createContext", "useCallback", "ServerFunctionsContext", "undefined", "useServerFunctions", "context", "use", "Error", "ServerFunctionsProvider", "children", "serverFunction", "getDocumentSlots", "args", "name", "schedulePublish", "signal", "remoteSignal", "rest", "aborted", "result", "_err", "console", "error", "type", "doc", "value", "relationTo", "getFormState", "fallbackLocale", "state", "getTableState", "renderDocument", "copyDataFromLocale", "data", "getFolderResultsComponentAndData", "_internal_renderField", "slugify", "_jsx", "transformColumnsToSearchParams", "React", "startTransition", "useCallback", "useRef", "createContext", "use", "TableColumnContext", "useTableColumns", "TableColumnsProvider", "children", "collectionSlug", "columnState", "columnStateFromProps", "LinkedCellOverride", "getEntityConfig", "useConfig", "query", "currentQuery", "refineListData", "useListQuery", "admin", "defaultColumns", "setOptimisticColumnState", "React", "useOptimistic", "state", "action", "contextRef", "useRef", "toggleColumn", "useCallback", "column", "newColumnState", "map", "col", "accessor", "active", "startTransition", "columns", "transformColumnsToSearchParams", "moveColumn", "args", "fromIndex", "toIndex", "columnToMove", "splice", "setActiveColumns", "forEach", "colName", "colIndex", "findIndex", "c", "undefined", "slice", "resetColumnsState", "_jsx", "TableColumnContext", "value", "current", "fieldIsHiddenOrDisabled", "fieldIsID", "useId", "useMemo", "React", "baseClass", "draggable", "onClick", "pills", "pillElements", "React", "pill", "i", "_jsx", "Pill", "alignIcon", "selected", "className", "Boolean", "XIcon", "PlusIcon", "icon", "id", "name", "size", "Label", "DraggableSortable", "pill_0", "ids", "map", "onDragEnd", "moveFromIndex", "moveToIndex", "ColumnSelector", "collectionSlug", "columns", "moveColumn", "toggleColumn", "useTableColumns", "uuid", "useId", "editDepth", "useEditDepth", "filteredColumns", "useMemo", "filter", "col", "fieldIsHiddenOrDisabled", "field", "fieldIsID", "admin", "disableListColumn", "pills", "map", "i", "accessor", "active", "label", "labelWithPrefix", "undefined", "name", "key", "Label", "_jsx", "FieldLabel", "unstyled", "selected", "PillSelector", "draggable", "onDragEnd", "moveFromIndex", "moveToIndex", "fromIndex", "toIndex", "onClick", "pill", "c", "_c", "useEffect", "useId", "useState", "c", "_c", "useState", "useRelatedCollections", "relationTo", "$", "_c", "getEntityConfig", "useConfig", "t0", "map", "relation", "collectionSlug", "relatedCollections", "useState", "React", "useCallback", "useEffect", "useRef", "useState", "c", "_c", "getTranslation", "React", "React", "createContext", "c", "_c", "React", "useDelayedRender", "t0", "$", "_c", "delayBeforeShow", "inTimeout", "minShowTime", "outTimeout", "show", "totalMountTime", "hasDelayed", "triggerDelay", "useDelay", "isMounted", "setIsMounted", "useState", "isUnmounting", "setIsUnmounting", "onMountTimestampRef", "useRef", "unmountTimeoutRef", "undefined", "t1", "current", "setTimeout", "unmount", "t2", "t3", "shouldMount", "shouldUnmount", "Date", "now", "totalTimeMounted", "remainingTime", "clearTimeout", "Math", "max", "useEffect", "t4", "triggerDelayedRender", "defaultLoadingOverlayState", "isLoading", "loaders", "loadingText", "overlayType", "reducer", "state", "action", "loadersCopy", "type", "key", "payload", "push", "index", "findIndex", "item", "splice", "nextLoader", "length", "Boolean", "animatedDuration", "Context", "createContext", "isOnScreen", "toggleLoadingOverlay", "undefined", "LoadingOverlayProvider", "children", "t", "useTranslation", "fallbackText", "overlays", "dispatchOverlay", "React", "useReducer", "reducer", "defaultLoadingOverlayState", "isMounted", "isUnmounting", "triggerDelayedRender", "useDelayedRender", "delayBeforeShow", "inTimeout", "minShowTime", "outTimeout", "show", "isLoading", "useCallback", "type", "key", "loadingText", "payload", "_jsxs", "value", "_jsx", "LoadingOverlay", "animationDuration", "overlayType", "useLoadingOverlay", "contextHook", "use", "Error", "baseClass", "t0", "$", "_c", "LoadingOverlay", "animationDuration", "loadingText", "overlayType", "show", "t1", "t", "useTranslation", "t2", "t4", "t3", "t5", "t7", "t6", "_jsxs", "className", "style", "children", "_jsx", "LoadingOverlayToggle", "key", "name", "type", "toggleLoadingOverlay", "useLoadingOverlay", "isLoading", "React", "useEffect", "FormLoadingOverlayToggle", "action", "formIsLoading", "loadingSuffix", "undefined", "useFormProcessing", "isProcessing", "i18n", "labels", "create", "loading", "getTranslation", "abortAndIgnore", "abortController", "abort", "handleAbortRef", "abortControllerRef", "newController", "AbortController", "current", "createContext", "use", "DocumentDrawerCallbacksContext", "DocumentDrawerContextProvider", "children", "rest", "_jsx", "value", "useDocumentDrawerContext", "context", "Error", "DocumentDrawerContent", "id", "docID", "collectionSlug", "disableActions", "drawerSlug", "initialData", "onDelete", "onDeleteFromProps", "onDuplicate", "onDuplicateFromProps", "onSave", "onSaveFromProps", "overrideEntityVisibility", "redirectAfterCreate", "redirectAfterDelete", "redirectAfterDuplicate", "redirectAfterRestore", "getEntityConfig", "useConfig", "collectionConfig", "useState", "abortGetDocumentViewRef", "React", "useRef", "closeModal", "useModal", "t", "useTranslation", "renderDocument", "useServerFunctions", "DocumentView", "setDocumentView", "undefined", "isLoading", "setIsLoading", "hasInitialized", "getDocumentView", "useCallback", "showLoadingIndicator", "controller", "handleAbortRef", "result", "signal", "Document", "error", "toast", "message", "current", "args", "operation", "doc", "clearDoc", "useEffect", "abortGetDocumentView", "abortAndIgnore", "_jsx", "LoadingOverlay", "DocumentDrawerContextProvider", "documentDrawerBaseClass", "formatDocumentDrawerSlug", "id", "collectionSlug", "depth", "uuid", "DocumentDrawerToggler", "t0", "$", "_c", "children", "className", "disabled", "drawerSlug", "onClick", "operation", "t", "useTranslation", "useRelatedCollections", "t1", "collectionConfig", "t2", "_jsx", "DrawerToggler", "slug", "DocumentDrawer", "props", "Drawer", "gutter", "Header", "DocumentDrawerContent", "useDocumentDrawer", "overrideEntityVisibility", "editDepth", "useEditDepth", "closeModal", "modalState", "openModal", "toggleModal", "useModal", "setIsOpen", "useState", "t3", "useEffect", "t4", "toggleDrawer", "t5", "closeDrawer", "t6", "openDrawer", "t7", "key", "t8", "props_0", "t9", "isOpen", "drawerDepth", "isDrawerOpen", "MemoizedDrawerState", "t10", "MemoizedDrawer", "MemoizedDrawerToggler", "c", "_c", "appendUploadSelectFields", "formatAdminURL", "qs", "createContext", "use", "useEffect", "useReducer", "useRef", "c", "_c", "useEffect", "useState", "useDebounce", "value", "delay", "$", "debouncedValue", "setDebouncedValue", "t0", "t1", "handler", "setTimeout", "clearTimeout", "reducer", "state", "action", "type", "newState", "relationTo", "unreturnedIDs", "idsToLoad", "Array", "isArray", "docs", "forEach", "doc", "splice", "indexOf", "id", "value", "Context", "createContext", "RelationshipProvider", "t0", "$", "_c", "children", "t1", "Symbol", "for", "documents", "dispatchDocuments", "useReducer", "reducer", "debouncedDocuments", "useDebounce", "config", "t2", "useConfig", "collections", "routes", "t3", "api", "i18n", "useTranslation", "code", "locale", "useLocale", "prevLocale", "useRef", "t4", "t5", "reloadAll", "undefined", "Object", "entries", "forEach", "t6", "slug", "docs", "idsToLoad", "t7", "id", "value", "push", "length", "url", "formatAdminURL", "apiRoute", "path", "params", "URLSearchParams", "select", "append", "collection", "find", "c", "admin", "enableListViewSelectAPI", "fieldToSelect", "useAsTitle", "upload", "appendUploadSelectFields", "collectionConfig", "idsToString", "map", "_temp", "join", "query", "toString", "stringify", "result", "fetch", "credentials", "headers", "language", "ok", "json", "type", "relationTo", "loadRelationshipDocs", "current", "useEffect", "relationships", "getRelationships", "t8", "_jsx", "useListRelationships", "use", "id_0", "String", "getTranslation", "AddNewButton", "allowCreate", "baseClass", "buttonStyle", "className", "collections", "i18n", "icon", "label", "onClick", "permissions", "relationTo", "Array", "isArray", "_jsx", "Popup", "button", "Button", "buttonType", "horizontalAlign", "render", "close", "closePopup", "PopupList", "ButtonGroup", "map", "relatedCollection", "create", "getTranslation", "find", "each", "slug", "labels", "singular", "size", "c", "_c", "c", "_c", "React", "c", "_c", "getTranslation", "fieldAffectsData", "fieldIsID", "formatAdminURL", "getTranslation", "React", "LazyReactComponentSymbol", "Symbol", "for", "isValidReactElement", "object", "isValidElement", "getDisplayedFieldValue", "cellData", "field", "i18n", "type", "Array", "isArray", "options", "selectedOption", "find", "opt", "value", "isValidReactElement", "label", "getTranslation", "CodeCell", "cellData", "nowrap", "textToShow", "_jsx", "className", "length", "noWrapStyle", "whiteSpace", "style", "c", "_c", "getTranslation", "ArrayCell", "t0", "$", "_c", "cellData", "field", "t1", "labels", "i18n", "useTranslation", "arrayFields", "label", "length", "getTranslation", "singular", "t", "plural", "t2", "_jsx", "children", "c", "_c", "getTranslation", "BlocksCell", "t0", "$", "_c", "cellData", "field", "t1", "blockReferences", "blocks", "labels", "i18n", "useTranslation", "config", "useConfig", "selectedBlocks", "Array", "isArray", "map", "_temp", "translatedBlockLabels", "b", "block", "blocksMap", "slug", "label", "getTranslation", "singular", "plural", "formatBlockList", "blocks_0", "b_0", "filter", "f", "join", "length", "more", "t", "count", "items", "slice", "t2", "_jsx", "children", "blockType", "c", "_c", "CheckboxCell", "t0", "$", "_c", "cellData", "t", "useTranslation", "t2", "t1", "_jsx", "className", "children", "getObjectDotNotation", "DateCell", "props", "cellData", "field", "t0", "rowData", "name", "accessor", "admin", "t1", "timezone", "timezoneFromField", "date", "undefined", "config", "t2", "useConfig", "t3", "dateFormat", "dateFormatFromRoot", "i18n", "useTranslation", "timezoneFieldName", "getObjectDotNotation", "displayFormat", "_jsx", "children", "Boolean", "formatDate", "pattern", "getBestFitFromSizes", "isImage", "c", "_c", "React", "File", "_jsxs", "height", "style", "backgroundColor", "viewBox", "width", "xmlns", "_jsx", "d", "fill", "baseClass", "ShimmerEffect", "props", "$", "_c", "Thumbnail", "t0", "className", "doc", "fileSrc", "height", "imageCacheTag", "size", "width", "filename", "fileExists", "undefined", "React", "t2", "setFileExists", "useState", "t3", "classNames", "t4", "t5", "img", "src", "useEffect", "queryChar", "includes", "_jsxs", "_jsx", "children", "alt", "ThumbnailComponent", "t1", "baseClass", "filename", "cellData", "collectionConfig", "field", "rowData", "displayPreview", "previewAllowed", "isImage", "fileSrc", "isFileImage", "mimeType", "getBestFitFromSizes", "sizes", "thumbnailURL", "url", "_jsxs", "className", "_jsx", "Thumbnail", "collectionSlug", "doc", "imageCacheTag", "size", "_Fragment", "c", "_c", "stringifyTruncated", "value", "maxLength", "stringifiedJSON", "JSON", "stringify", "length", "substring", "stringifyTruncated", "$", "_c", "JSONCell", "cellData", "t", "t2", "cellDataString", "_jsx", "className", "children", "c", "_c", "getTranslation", "React", "useEffect", "useState", "canUseDOM", "window", "document", "createElement", "baseClass", "totalToShow", "t0", "$", "_c", "RelationshipCell", "cellDataFromProps", "cellData", "customCellProps", "field", "t1", "label", "relationTo", "config", "getEntityConfig", "useConfig", "collections", "entry", "useIntersect", "t2", "values", "setValues", "useState", "documents", "getRelationships", "useListRelationships", "i18n", "t", "useTranslation", "canUseDOM", "t3", "hasRequested", "isAboveViewport", "formattedValues", "arrayCellData", "Array", "cell", "setHasRequested", "t4", "useEffect", "t5", "t6", "t7", "customCellContext", "intersectionRef", "t8", "t9", "i", "relationTo_0", "value", "document", "relatedCollection", "label_0", "formatDocTitle", "collectionConfig", "data", "dateFormat", "fallback", "fileField", "displayPreview", "previewAllowed", "FileCell", "collectionSlug", "_jsxs", "React", "Fragment", "children", "className", "ref", "map", "count", "items", "c", "_c", "getTranslation", "optionsAreObjects", "SelectCell", "t0", "$", "_c", "cellData", "field", "t1", "options", "i18n", "useTranslation", "t2", "items", "map", "i", "found", "filter", "f", "value", "label", "getTranslation", "join", "findLabel", "t3", "content", "optionsAreObjects", "_jsx", "children", "TextareaCell", "cellData", "textToShow", "length", "substring", "_jsx", "cellComponents", "array", "ArrayCell", "blocks", "BlocksCell", "checkbox", "CheckboxCell", "code", "CodeCell", "date", "DateCell", "File", "FileCell", "join", "RelationshipCell", "json", "JSONCell", "radio", "SelectCell", "relationship", "select", "textarea", "TextareaCell", "upload", "DefaultCell", "props", "$", "_c", "cellData", "className", "classNameFromProps", "collectionSlug", "field", "t0", "link", "linkURL", "onClick", "onClickFromProps", "rowData", "viewType", "admin", "i18n", "useTranslation", "config", "t1", "getEntityConfig", "useConfig", "routes", "t2", "adminRoute", "t3", "t4", "Symbol", "for", "collectionConfig", "classNameFromConfigContext", "undefined", "WrapElement", "wrapElementProps", "prefetch", "href", "slug", "formatAdminURL", "path", "encodeURIComponent", "id", "type", "fieldIsID", "_jsx", "children", "CodeCell", "nowrap", "displayedValue", "getDisplayedFieldValue", "DefaultCellComponent", "cellComponents", "CellComponent", "isValidReactElement", "upload", "fieldAffectsData", "name", "FileCellComponent", "File", "_jsxs", "t", "label", "getTranslation", "JSON", "stringify", "options", "length", "classes", "Array", "isArray", "map", "_temp", "join", "className_0", "filter", "Boolean", "value", "baseClass", "React", "CellPropsContext", "createContext", "useCellProps", "t0", "$", "_c", "RenderDefaultCell", "clientProps", "columnIndex", "isLinkedColumn", "drawerSlug", "onSelect", "useListDrawerContext", "LinkedCellOverride", "useTableColumns", "t1", "propsToPass", "className", "t2", "t3", "rowColl", "collectionSlug", "rowData", "doc", "_jsx", "value", "DefaultCell", "children", "DrawerLink", "t0", "$", "_c", "onDrawerOpen", "cellProps", "useCellProps", "t1", "_jsxs", "className", "_jsx", "DefaultCell", "children", "link", "onClick", "type", "EditIcon", "c", "_c", "baseClass", "props", "direction", "isDisabled", "updatePage", "classes", "className", "disabled", "onClick", "type", "_jsx", "ChevronIcon", "baseClass", "Page", "isCurrent", "isFirstPage", "isLastPage", "page", "updatePage", "classes", "filter", "Boolean", "join", "_jsx", "className", "onClick", "type", "Separator", "_jsx", "className", "nodeTypes", "ClickableArrow", "Page", "baseClass", "props", "hasNextPage", "hasPrevPage", "nextPage", "numberOfNeighbors", "onChange", "page", "currentPage", "prevPage", "totalPages", "updatePage", "pages", "length", "rangeStartIndex", "rangeEndIndex", "nodes", "unshift", "type", "isFirstPage", "push", "isLastPage", "direction", "isDisabled", "_jsx", "className", "node", "i", "isCurrent", "NodeType", "RelationshipTablePagination", "$", "_c", "data", "handlePageChange", "useListQuery", "t0", "nextPage", "t1", "e", "t2", "page", "t3", "prevPage", "undefined", "t4", "hasNextPage", "hasPrevPage", "limit", "totalPages", "_jsx", "Pagination", "numberOfNeighbors", "onChange", "baseClass", "props", "AfterInput", "allowCreate", "BeforeInput", "disableTable", "field", "fieldPath", "filterOptions", "initialDataFromProps", "initialData", "initialDrawerData", "Label", "parent", "relationTo", "setTable", "useState", "config", "getEntityConfig", "useConfig", "i18n", "t", "useTranslation", "query", "openColumnSelector", "setOpenColumnSelector", "collectionConfig", "collectionSlug", "isPolymorphic", "setSelectedCollection", "permissions", "useAuth", "useRef", "openDrawerWhenRelationChanges", "currentDrawerID", "setCurrentDrawerID", "closeDrawer", "isDrawerOpen", "openDrawer", "useDocumentDrawer", "id", "isLoadingTable", "setIsLoadingTable", "acc", "doc", "Array", "isArray", "undefined", "setColumnState", "getTableState", "useServerFunctions", "data", "renderTable", "newQuery", "limit", "sort", "defaultSort", "where", "hoistQueryParamsToAnd", "defaultColumns", "accessor", "active", "renderRowTypes", "newData", "state", "newColumnState", "Table", "NewTable", "columns", "enableRowSelections", "orderableFieldName", "setData", "admin", "handleTableRender", "useEffectEvent", "useEffect", "operation", "foundDocIndex", "d", "docs", "withNewOrUpdatedData", "newDocs", "onDrawerDelete", "useCallback", "args", "canCreate", "selectedCollection", "React", "memoizedListQuery", "columnState", "className", "_jsxs", "_jsx", "AddNewButton", "buttonStyle", "collections", "icon", "label", "onClick", "Pill", "ChevronIcon", "pillStyle", "size", "Fragment", "getTranslation", "length", "modifySearchParams", "onQueryChange", "setQuery", "TableColumnsProvider", "DrawerLink", "LinkedCellOverride", "height", "ColumnSelector", "onDelete", "onDrawerSave", "onSave", "ObjectId", "ObjectIdImport", "default", "getInitialDrawerData", "collectionSlug", "config", "docID", "fields", "segments", "flattenedFields", "flattenTopLevelFields", "keepPresentationalFields", "path", "field", "find", "name", "type", "value", "Array", "isArray", "relationTo", "hasMany", "nextSegments", "slice", "length", "fieldAffectsData", "initialData", "id", "toHexString", "_block", "blockReferences", "blocks", "block", "blocksMap", "blockInitialData", "blockType", "slug", "JoinFieldComponent", "props", "admin", "allowCreate", "description", "collection", "label", "localized", "on", "required", "pathFromProps", "docConfig", "useDocumentInfo", "getEntityConfig", "useConfig", "customComponents", "AfterInput", "BeforeInput", "Description", "Error", "Label", "showError", "useField", "potentiallyStalePath", "filterOptions", "useMemo", "targetField", "where", "equals", "and", "initialDrawerData", "relatedCollection", "split", "_jsxs", "className", "fieldBaseClass", "filter", "Boolean", "join", "replace", "_jsx", "RenderCustomComponent", "CustomComponent", "Fallback", "FieldError", "RelationshipTable", "disableTable", "fieldPath", "docs", "style", "margin", "FieldLabel", "parent", "joinPath", "undefined", "FieldDescription", "JoinField", "withCondition", "React", "useCallback", "useEffect", "useMemo", "useState", "baseClass", "props", "JSONFieldComponent", "field", "admin", "className", "description", "editorOptions", "maxHeight", "jsonSchema", "label", "localized", "pathFromProps", "path", "readOnly", "validate", "insertSpaces", "defaultOptions", "tabSize", "useCallback", "value", "formatJSON", "JSON", "useState", "inputChangeFromRef", "setJsonError", "React", "memoizedValidate", "recalculatedHeightAt", "setRecalculatedHeightAt", "options", "jsonError", "required", "customComponents", "AfterInput", "BeforeInput", "Description", "Error", "Label", "disabled", "initialValue", "setValue", "showError", "potentiallyStalePath", "stringValueRef", "value_1", "useRef", "handleMount", "monaco", "jsonDefaults", "enableSchemaRequest", "schemas", "uri", "v4_default", "editor", "newUri", "includes", "randomUUID", "crypto", "uuidv4", "setModel", "createModel", "handleChange", "val", "useEffect", "current", "newStringValue", "useMemo", "mergeFieldStyles", "fieldBaseClass", "style", "styles", "_jsx", "RenderCustomComponent", "CustomComponent", "FieldLabel", "Fallback", "FieldError", "message", "defaultLanguage", "onChange", "onMount", "wrapperProps", "FieldDescription", "JSONField", "withCondition", "getTranslation", "isNumber", "useCallback", "useEffect", "useMemo", "useState", "NumberFieldComponent", "props", "field", "admin", "className", "description", "placeholderFromProps", "placeholder", "step", "hasMany", "label", "localized", "max", "Infinity", "maxRows", "min", "onChangeFromProps", "onChange", "path", "readOnly", "validate", "i18n", "t", "useTranslation", "useCallback", "value", "options", "memoizedValidate", "required", "customComponents", "AfterInput", "BeforeInput", "Description", "Error", "Label", "disabled", "setValue", "showError", "pathFromProps", "potentiallyStalePath", "handleChange", "e", "newVal", "parseFloat", "val", "isNaN", "setValueToRender", "useState", "handleHasManyChange", "selectedOption", "newValue", "Array", "option", "useEffect", "value_0", "isArray", "index", "val_0", "id", "toString", "mergeFieldStyles", "styles", "useMemo", "getTranslation", "fieldBaseClass", "style", "_jsx", "RenderCustomComponent", "CustomComponent", "FieldLabel", "Fallback", "FieldError", "ReactSelect", "rawInput", "filterOption", "isOverHasMany", "isClearable", "isCreatable", "isMulti", "isSortable", "valueToRender", "name", "e_0", "type", "FieldDescription", "NumberField", "withCondition", "getTranslation", "useCallback", "useMemo", "baseClass", "fieldBaseClass", "props", "field", "admin", "className", "description", "placeholder", "step", "label", "localized", "pathFromProps", "path", "readOnly", "validate", "i18n", "t", "useTranslation", "useCallback", "value", "options", "memoizedValidate", "required", "customComponents", "AfterInput", "BeforeInput", "Description", "Error", "Label", "disabled", "setValue", "showError", "potentiallyStalePath", "handleChange", "e", "index", "val", "parseFloat", "Number", "coordinates", "value_0", "type", "getCoordinateFieldLabel", "suffix", "getTranslation", "fieldLabel", "styles", "useMemo", "mergeFieldStyles", "style", "_jsxs", "RenderCustomComponent", "CustomComponent", "_jsx", "FieldLabel", "Fallback", "id", "name", "e_0", "onChange", "FieldError", "e_1", "FieldDescription", "PointField", "withCondition", "PointFieldComponent", "optionIsObject", "useCallback", "useMemo", "c", "_c", "getTranslation", "baseClass", "props", "$", "_c", "Radio", "isSelected", "onChange", "option", "path", "readOnly", "uuid", "i18n", "useTranslation", "useEditDepth", "editDepth", "id", "value", "t1", "t0", "t2", "t3", "t4", "t5", "_jsx", "checked", "disabled", "name", "t6", "t7", "htmlFor", "children", "_jsxs", "className", "join", "getTranslation", "baseClass", "props", "RadioGroupFieldComponent", "disableModifyingFormFromProps", "disableModifyingForm", "field", "admin", "className", "description", "layout", "label", "localized", "options", "required", "onChangeFromProps", "onChange", "path", "readOnly", "validate", "value", "uuid", "useForm", "useCallback", "validationOptions", "memoizedValidate", "customComponents", "AfterInput", "BeforeInput", "Description", "Error", "Label", "disabled", "setValue", "showError", "valueFromContext", "pathFromProps", "potentiallyStalePath", "value_0", "valueFromProps", "useMemo", "mergeFieldStyles", "fieldBaseClass", "style", "styles", "_jsx", "RenderCustomComponent", "CustomComponent", "FieldError", "Fallback", "FieldLabel", "id", "replace", "map", "optionValue", "option", "optionIsObject", "isSelected", "String", "Radio", "FieldDescription", "RadioGroupField", "withCondition", "React", "useCallback", "useMemo", "dequal", "formatAdminURL", "wordBoundariesRegex", "qs", "useCallback", "useEffect", "useMemo", "useReducer", "useRef", "useState", "c", "_c", "getTranslation", "hasAutosaveEnabled", "Fragment", "useEffect", "useState", "baseClass", "t0", "$", "_c", "AddNewRelation", "ButtonFromProps", "Button", "hasMany", "onChange", "path", "relationTo", "unstyled", "value", "relatedCollections", "useRelatedCollections", "permissions", "useAuth", "setShow", "useState", "show", "relatedToMany", "selectedCollection", "setSelectedCollection", "t1", "collectionConfig", "setCollectionConfig", "i18n", "t", "useTranslation", "setShowTooltip", "t2", "showTooltip", "t3", "DocumentDrawer", "DocumentDrawerToggler", "t4", "useDocumentDrawer", "isDrawerOpen", "toggleDrawer", "t5", "t6", "doc", "operation", "hasAutosaveEnabled", "isNewValue", "v", "Array", "onSave", "state", "Symbol", "setPopupOpen", "onPopupToggle", "t7", "t8", "collection", "useEffect", "t10", "t9", "collection_0", "t11", "t12", "t13", "t14", "t16", "t17", "popupOpen", "t15", "bb0", "label", "_jsxs", "className", "id", "Fragment", "children", "_jsx", "onClick", "onMouseEnter", "onMouseLeave", "Tooltip", "length", "button", "buttonStyle", "tooltip", "undefined", "horizontalAlign", "onToggleOpen", "render", "t18", "closePopup", "close", "ButtonGroup", "PopupList", "relatedCollection", "map", "collections", "getTranslation", "c", "_c", "useEffect", "useId", "useState", "hoistQueryParamsToAnd", "useCallback", "useEffect", "useState", "ListDrawerContent", "allowCreate", "collectionSlugs", "disableQueryPresets", "drawerSlug", "enableRowSelections", "filterOptions", "onBulkSelect", "onSelect", "overrideEntityVisibility", "selectedCollection", "collectionSlugFromProps", "closeModal", "isModalOpen", "useModal", "serverFunction", "useServerFunctions", "ListView", "setListView", "useState", "undefined", "isLoading", "setIsLoading", "config", "collections", "getEntityConfig", "useConfig", "isOpen", "enabledCollections", "filter", "slug", "includes", "selectedOption", "setSelectedOption", "initialSelection", "found", "collectionSlug", "label", "labels", "value", "DocumentDrawer", "DocumentDrawerToggler", "documentDrawerSlug", "useDocumentDrawer", "updateSelectedOption", "useEffectEvent", "useEffect", "refresh", "useCallback", "query", "newQuery", "where", "filterOption", "hoistQueryParamsToAnd", "result", "name", "args", "disableBulkDelete", "disableBulkEdit", "List", "_err", "console", "error", "onCreateNew", "doc", "docID", "id", "onQueryChange", "setMySelectedOption", "incomingSelection", "refreshSelf", "incomingCollectionSlug", "_jsx", "LoadingOverlay", "_jsxs", "ListDrawerContextProvider", "createNewDrawerSlug", "onSave", "baseClass", "formatListDrawerSlug", "depth", "uuid", "ListDrawerToggler", "children", "className", "disabled", "drawerSlug", "onClick", "rest", "_jsx", "DrawerToggler", "filter", "Boolean", "join", "slug", "ListDrawer", "props", "Drawer", "gutter", "Header", "ListDrawerContent", "useListDrawer", "t0", "$", "_c", "collectionSlugs", "collectionSlugsFromProps", "filterOptions", "selectedCollection", "uploads", "config", "t1", "useConfig", "collections", "drawerDepth", "useEditDepth", "useId", "closeModal", "modalState", "openModal", "toggleModal", "useModal", "isOpen", "setIsOpen", "useState", "setCollectionSlugs", "t2", "t3", "t4", "useEffect", "t5", "t6", "length", "filteredCollectionSlugs", "t7", "upload", "map", "_temp", "toggleDrawer", "t8", "closeDrawer", "t9", "openDrawer", "t10", "_createElement", "key", "MemoizedDrawer", "t11", "props_0", "MemoizedDrawerToggler", "t12", "isDrawerOpen", "MemoizedDrawerState", "t13", "c", "_c", "useRef", "useDebouncedCallback", "func", "wait", "$", "timeout", "undefined", "t0", "t1", "args", "later", "clearTimeout", "current", "setTimeout", "useCallback", "useRef", "useQueue", "queue", "isProcessing", "queueTask", "fn", "options", "current", "push", "processQueue", "beforeProcess", "length", "latestTask", "pop", "err", "console", "error", "afterProcess", "c", "_c", "createContext", "use", "useState", "Context", "mostRecentUpdate", "reportUpdate", "DocumentEventsProvider", "t0", "$", "children", "t1", "_jsx", "value", "useDocumentEvents", "sanitizeFilterOptionsQuery", "query", "key", "value", "toLowerCase", "Array", "isArray", "val", "in", "length", "exists", "createRelationMap", "hasMany", "relationTo", "value", "relationMap", "reduce", "map", "current", "add", "relation", "id", "push", "forEach", "val", "findOptionsByValue", "allowEdit", "options", "value", "Array", "isArray", "map", "val", "matchedOption", "forEach", "optGroup", "find", "option", "relationTo", "undefined", "getTranslation", "reduceToIDs", "options", "reduce", "ids", "option", "id", "value", "relationTo", "sortOptions", "sort", "a", "b", "label", "localeCompare", "optionsReducer", "state", "action", "type", "collection", "config", "docs", "i18n", "relation", "slug", "loadedIDs", "newOptions", "optionsToAddTo", "find", "optionGroup", "labels", "plural", "newSubOptions", "docSubOptions", "doc", "filter", "item", "length", "push", "docTitle", "formatDocTitle", "collectionConfig", "data", "dateFormat", "admin", "fallback", "t", "forEach", "allowEdit", "subOptions", "getTranslation", "exemptValues", "Array", "isArray", "clearedOptions", "some", "exemptValue", "indexOfGroup", "findIndex", "foundOption", "Fragment", "useState", "baseClass", "props", "t0", "data", "t1", "selectProps", "allowEdit", "label", "relationTo", "value", "t2", "customProps", "draggableProps", "onDocumentOpen", "permissions", "useAuth", "setShowTooltip", "useState", "t", "useTranslation", "hasReadPermission", "className", "title", "children", "_jsx", "innerProps", "Fragment", "event", "onClick", "id", "collectionSlug", "_temp", "onKeyDown", "onMouseDown", "_temp2", "onMouseEnter", "onMouseLeave", "_temp3", "onTouchEnd", "type", "Tooltip", "show", "showTooltip", "EditIcon", "e", "e_0", "e_1", "c", "_c", "Fragment", "useState", "baseClass", "props", "$", "_c", "SingleValue", "children", "data", "t1", "selectProps", "allowEdit", "label", "relationTo", "value", "t0", "t2", "t3", "customProps", "t4", "onDocumentOpen", "showTooltip", "setShowTooltip", "useState", "t", "useTranslation", "permissions", "useAuth", "hasReadPermission", "t6", "t5", "_jsx", "components", "className", "title", "_jsxs", "event", "onClick", "id", "collectionSlug", "_temp", "onKeyDown", "onMouseDown", "_temp2", "onMouseEnter", "onMouseLeave", "_temp3", "onTouchEnd", "type", "Tooltip", "show", "e", "e_0", "e_1", "baseClass", "SingleValue", "props", "AfterInput", "allowCreate", "allowEdit", "appearance", "BeforeInput", "className", "description", "Description", "Error", "filterOptions", "formatDisplayedOptions", "hasMany", "initialValue", "isSortable", "label", "Label", "localized", "maxResultsPerRequest", "onChange", "path", "placeholder", "readOnly", "relationTo", "required", "showError", "sortOptions", "style", "value", "config", "getEntityConfig", "useConfig", "routes", "serverURL", "i18n", "t", "useTranslation", "permissions", "useAuth", "locale", "code", "useLocale", "setCurrentlyOpenRelationship", "useState", "id", "collectionSlug", "undefined", "lastFullyLoadedRelation", "setLastFullyLoadedRelation", "lastLoadedPage", "setErrorLoading", "setLastLoadedPage", "errorLoading", "search", "setSearch", "isLoading", "setEnableWordBoundarySearch", "enableWordBoundarySearch", "hasLoadedFirstPageRef", "setMenuIsOpen", "queueTask", "useQueue", "dispatchOptions", "useReducer", "optionsReducer", "valueRef", "useRef", "drawerSlug", "isDrawerOpen", "openDrawer", "useDocumentDrawer", "currentlyOpenRelationship", "listDrawerFilterOptions", "useMemo", "newFilterOptions", "acc", "val", "valuesByRelation", "relation", "Array", "ListDrawer", "closeDrawer", "closeListDrawer", "openListDrawer", "collectionSlugs", "onListSelect", "useCallback", "doc", "openDrawerWhenRelationChanges", "updateResults", "lastFullyLoadedRelationArg", "onSuccess", "sort", "valueArg", "lastFullyLoadedRelationToUse", "relations", "isArray", "resultsFetched", "relationsToFetch", "createRelationMap", "hasManyArg", "relationMap", "priorRelation", "relation_0", "filterOptions_0", "lastLoadedPageToUse", "lastLoadedPageArg", "relationFilterOption", "fieldToSearch", "collection", "fieldToSort", "useAsTitle", "query", "depth", "draft", "limit", "page", "select", "where", "and", "searchArg", "push", "sanitizeFilterOptionsQuery", "response", "apiRoute", "api", "body", "stringify", "credentials", "headers", "prevState", "data", "type", "docs", "ids", "Promise", "resolve", "updateSearch", "searchArg_0", "value_0", "updateResultsEffectEvent", "hasManyArg_0", "handleInputChange", "options_0", "setIsLoading", "options", "useEffectEvent", "handleValueChange", "value_1", "relationMap_0", "hasManyArg_1", "priorRelation_0", "relation_1", "Object", "idsToLoad", "filter", "optionGroup", "option", "fieldToSelect", "collection_0", "formatAdminURL", "query_0", "response_0", "mostRecentUpdate", "useDocumentEvents", "mostRecentUpdate_0", "handleDocumentUpdateEvent", "docID", "isMatchingUpdate", "currentValue", "collectionConfig", "valuesToSet", "option_1", "useEffect", "args", "args_0", "option_2", "filterOption", "searchFilter", "r", "wordBoundariesRegex", "breakApartThreshold", "labelString", "item", "indexOfSpace", "test", "onDocumentOpen", "collectionSlug_0", "hasReadPermission", "openInNewTab", "id_0", "adminRoute", "docUrl", "args_1", "menuIsOpen", "prevValue", "dequal", "isFirstRenderRef", "current", "relation_2", "idOnly", "isIdOnly", "findOptionsByValue", "valueToRender", "_jsxs", "fieldBaseClass", "_jsx", "RenderCustomComponent", "CustomComponent", "FieldLabel", "Fallback", "FieldError", "ReactSelect", "isListDrawerOpen", "backspaceRemovesValue", "components", "MultiValueLabel", "customProps", "disableKeyDown", "disableMouseDown", "disabled", "getOptionValue", "option_3", "isMulti", "isSearchable", "selected", "newSearch", "onInputChange", "onMenuClose", "onMenuOpen", "onMenuScrollToBottom", "AddNewRelation", "FieldDescription", "onDelete", "onDuplicate", "enableRowSelections", "onSelect", "RelationshipFieldComponent", "props", "field", "admin", "allowCreate", "allowEdit", "appearance", "className", "description", "isSortable", "placeholder", "sortOptions", "hasMany", "label", "localized", "relationToProp", "relationTo", "pathFromProps", "path", "readOnly", "validate", "useCallback", "value", "validationOptions", "memoizedValidate", "required", "customComponents", "AfterInput", "BeforeInput", "Description", "Error", "Label", "disabled", "filterOptions", "initialValue", "setValue", "showError", "potentiallyStalePath", "styles", "useMemo", "mergeFieldStyles", "isPolymorphic", "React", "handleChangeHasMulti", "useState", "newValue", "isArray", "value_0", "disableFormModification", "val", "idx", "Array", "newVal", "val_0", "idx_0", "dataToSet", "val_1", "newValue_0", "handleChangeSingle", "disableFormModification_0", "dataToSet_0", "memoizedValue", "val_2", "memoizedInitialValue", "val_3", "options", "opt", "formatDisplayedOptions", "maxResultsPerRequest", "maxRows", "minRows", "style", "onChange", "RelationshipField", "withCondition", "RichTextField", "baseClass", "RowProvider", "props", "RowFieldComponent", "field", "admin", "className", "style", "fields", "forceRender", "indexPath", "parentPath", "parentSchemaPath", "permissions", "readOnly", "_jsx", "fieldBaseClass", "undefined", "RenderFields", "margins", "parentIndexPath", "RowField", "withCondition", "React", "useCallback", "useMemo", "c", "_c", "getTranslation", "SelectInput", "props", "$", "_c", "id", "AfterInput", "BeforeInput", "className", "Description", "description", "Error", "filterOption", "hasMany", "t1", "isClearable", "t2", "isSortable", "label", "Label", "localized", "onChange", "onInputChange", "options", "path", "placeholder", "readOnly", "required", "showError", "style", "value", "t0", "undefined", "i18n", "useTranslation", "t3", "valueToRender", "t4", "val", "matchingOption", "option", "getTranslation", "option_0", "matchingOption_0", "t6", "t5", "fieldBaseClass", "t7", "option_1", "_jsxs", "_jsx", "RenderCustomComponent", "children", "CustomComponent", "FieldLabel", "Fallback", "FieldError", "ReactSelect", "disabled", "isMulti", "FieldDescription", "formatOptions", "options", "map", "option", "value", "label", "SelectFieldComponent", "props", "field", "name", "admin", "className", "description", "isClearable", "isSortable", "placeholder", "hasMany", "localized", "optionsFromProps", "required", "onChange", "onChangeFromProps", "path", "pathFromProps", "readOnly", "validate", "React", "useMemo", "memoizedValidate", "useCallback", "validationOptions", "customComponents", "AfterInput", "BeforeInput", "Description", "Error", "Label", "disabled", "selectFilterOptions", "setValue", "showError", "useField", "potentiallyStalePath", "selectedOption", "newValue", "Array", "isArray", "styles", "mergeFieldStyles", "_jsx", "SelectInput", "filterOption", "search", "some", "toLowerCase", "includes", "undefined", "style", "SelectField", "withCondition", "c", "_c", "getTranslation", "getFieldPaths", "toKebabCase", "useEffect", "useState", "import_object_to_formdata", "dequal", "useRouter", "deepCopyObjectSimpleWithoutReactComponents", "getDataByPath", "getDataByPathFunc", "getSiblingData", "getSiblingDataFunc", "hasDraftValidationEnabled", "reduceFieldsToValues", "wait", "React", "useCallback", "useEffect", "useReducer", "useRef", "useState", "c", "_c", "React", "groupSimilarErrors", "items", "result", "item", "parts", "split", "inserted", "i", "length", "startsWith", "splice", "push", "createErrorsFromMessage", "message", "intro", "errorsString", "errors", "map", "error", "replaceAll", "trim", "FieldErrorsToast", "t0", "$", "errorMessage", "t1", "t2", "useState", "t3", "_jsxs", "children", "Array", "isArray", "_jsx", "_temp", "index", "c", "_c", "useEffect", "useState", "useDebouncedEffect", "effect", "deps", "delay", "$", "t0", "debouncedEffect", "setDebouncedEffect", "t1", "handler", "setTimeout", "clearTimeout", "t2", "t3", "t4", "c", "_c", "React", "useState", "Context", "createContext", "UploadHandlersProvider", "t0", "$", "children", "uploadHandlers", "setUploadHandlers", "_temp", "t1", "t2", "collectionSlug", "get", "getUploadHandler", "Symbol", "for", "t3", "collectionSlug_0", "handler", "uploadHandlers_0", "clone", "Map", "set", "setUploadHandler", "_jsx", "value", "useUploadHandlers", "context", "use", "Error", "errorMessages", "import_bson_objectid", "dequal", "deepCopyObjectSimpleWithoutReactComponents", "dequal", "mergeServerFormState", "acceptValues", "currentState", "incomingState", "newState", "path", "incomingField", "Object", "entries", "addedByServer", "shouldAcceptValue", "overrideLocalChanges", "isModified", "sanitizedIncomingField", "initialValue", "value", "rest", "errorPaths", "Array", "isArray", "rows", "forEach", "row", "indexInCurrentState", "findIndex", "existingRow", "id", "newRow", "push", "valid", "passesCondition", "blocksFilterOptions", "separateRows", "path", "fields", "remainingFields", "rows", "Object", "entries", "reduce", "incomingRows", "fieldPath", "field", "newRows", "indexOf", "rowIndex", "replace", "split", "String", "flattenRows", "row", "i", "subFields", "subPath", "subField", "ObjectId", "ObjectIdImport", "default", "fieldReducer", "state", "action", "type", "blockType", "path", "rowIndex", "rowIndexFromArgs", "subFieldState", "rows", "length", "withNewRow", "newRow", "id", "value", "toHexString", "isLoading", "splice", "initialValue", "valid", "remainingFields", "siblingRows", "separateRows", "flattenRows", "passesCondition", "disableFormData", "newState", "errorPaths", "errors", "forEach", "message", "fieldPath", "errorMessage", "segments", "split", "push", "fieldErrorPath", "parentPath", "slice", "join", "Object", "entries", "reduce", "acc", "fieldState", "fieldErrorPaths", "errorACC", "startsWith", "changed", "newErrorPaths", "Array", "isArray", "includes", "newRows", "deepCopyObjectSimpleWithoutReactComponents", "newRowID", "customComponents", "RowLabel", "newRowState", "key", "keys", "filter", "endsWith", "idState", "newNestedFieldID", "isValid", "parseInt", "parentFieldPath", "parentFieldRows", "acceptValues", "prevStateRef", "serverState", "mergeServerFormState", "currentState", "incomingState", "current", "moveFromIndex", "moveToIndex", "topLevelRows", "copyOfMovingRow", "rowsWithinField", "copyOfMovingRow2", "rowsMetadata", "rowIndexArg", "Math", "max", "min", "undefined", "collapsed", "optimize", "newField", "oldField", "dequal", "sanitize", "field", "values", "updatedRows", "isModified", "formState", "submit", "getSiblingData", "dispatchFields", "validateForm", "createFormData", "setModified", "setProcessing", "setBackgroundProcessing", "setSubmitted", "reset", "initContextState", "addFieldRow", "buildRowErrors", "disabled", "fields", "formRef", "getData", "getDataByPath", "getField", "getFields", "initializing", "undefined", "isValid", "moveFieldRow", "removeFieldRow", "replaceFieldRow", "replaceState", "setDisabled", "setIsValid", "baseClass", "Form", "props", "id", "collectionSlug", "docConfig", "docPermissions", "getDocPreferences", "globalSlug", "useDocumentInfo", "validateDrafts", "hasDraftValidationEnabled", "action", "beforeSubmit", "children", "className", "disabled", "disabledFromProps", "disableSuccessStatus", "disableValidationOnSubmit", "el", "handleResponse", "initialState", "isDocumentForm", "isInitializing", "initializingFromProps", "onChange", "onSubmit", "onSuccess", "redirect", "submitted", "submittedFromProps", "uuid", "waitForAutocomplete", "method", "undefined", "router", "useRouter", "documentForm", "useDocumentForm", "code", "locale", "useLocale", "i18n", "t", "useTranslation", "refreshCookie", "user", "useAuth", "operation", "useOperation", "queueTask", "useQueue", "getFormState", "useServerFunctions", "startRouteTransition", "useRouteTransition", "getUploadHandler", "useUploadHandlers", "config", "useConfig", "setDisabled", "useState", "isMounted", "setIsMounted", "setSubmitted", "isValid", "setIsValid", "initializing", "setInitializing", "processing", "setProcessing", "backgroundProcessing", "_setBackgroundProcessing", "backgroundProcessingRef", "useRef", "modifiedWhileProcessingRef", "setBackgroundProcessing", "useCallback", "current", "modified", "_setModified", "setModified", "formRef", "contextRef", "abortResetFormRef", "isFirstRenderRef", "fieldsReducer", "useReducer", "fieldReducer", "formState", "dispatchFields", "fields", "prevFormState", "validateForm", "validatedFieldState", "data", "getData", "validationPromises", "Object", "entries", "map", "path", "field", "validatedField", "pathSegments", "split", "passesCondition", "validationResult", "valid", "validate", "valueToValidate", "value", "rows", "Array", "isArray", "getDataByPath", "blockData", "event", "preferences", "req", "payload", "siblingData", "getSiblingData", "errorMessage", "Promise", "all", "dequal", "type", "state", "submit", "options", "e", "acceptValues", "actionArg", "context", "disableFormWhileProcessing", "disableSuccessStatusFromArgs", "methodToUse", "overrides", "overridesFromArgs", "skipValidation", "disableToast", "preventDefault", "errorToast", "successToast", "promise", "resolve", "reject", "hasFormSubmitAction", "toast", "success", "error", "loading", "stopPropagation", "wait", "reduceFieldsToValues", "serializableFormState", "deepCopyObjectSimpleWithoutReactComponents", "excludeFiles", "revalidatedFormState", "reduce", "priorOnChange", "beforeSubmitFn", "every", "key", "formData", "createFormData", "mergeOverrideData", "res", "requests", "toLowerCase", "body", "headers", "language", "contentType", "get", "isJSON", "indexOf", "json", "status", "newFormState", "prevStateRef", "serverState", "push", "message", "errors", "fieldErrors", "nonFieldErrors", "fieldErrs", "nonFieldErrs", "err", "newFieldErrs", "newNonFieldErrs", "forEach", "dataError", "_jsx", "FieldErrorsToast", "errorMessages", "statusText", "console", "getFields", "getField", "getSiblingDataFunc", "getDataByPathFunc", "dataFromArgs", "file", "upload", "handler", "filename", "name", "clientUploadContext", "updateFilename", "JSON", "stringify", "mimeType", "size", "dataToSerialize", "_payload", "serialize", "indices", "nullsAsUndefineds", "reset", "controller", "handleAbortRef", "docPreferences", "newState", "renderAllFields", "schemaPath", "signal", "initContextState", "replaceState", "addFieldRow", "blockType", "rowIndex", "rowIndexArg", "subFieldState", "newRows", "length", "moveFieldRow", "moveFromIndex", "moveToIndex", "removeFieldRow", "replaceFieldRow", "currentRows", "useEffect", "abortOnChange", "abortAndIgnore", "optimize", "sanitize", "useThrottledEffect", "handleLocaleChange", "useEffectEvent", "classes", "filter", "Boolean", "join", "executeOnChange", "onChangeFn", "useDebouncedEffect", "DocumentFormContextComponent", "DocumentFormContext", "React", "Fragment", "documentFormContextProps", "noValidate", "ref", "FormContext", "FormWatchContext", "SubmittedContext", "InitializingContext", "ProcessingContext", "BackgroundProcessingContext", "ModifiedContext", "FormFieldsContext", "Provider", "c", "_c", "getTranslation", "tabHasName", "React", "useState", "baseClass", "t0", "$", "_c", "TabComponent", "hidden", "isActive", "parentPath", "setIsActive", "tab", "i18n", "useTranslation", "setErrorCount", "useState", "t1", "errorCount", "path", "fieldHasErrors", "_jsx", "fields", "t3", "t4", "t6", "t5", "_jsxs", "React", "Fragment", "children", "t2", "className", "onClick", "type", "getTranslation", "tabHasName", "ErrorPill", "count", "baseClass", "TabsFieldComponent", "props", "$", "t0", "field", "t1", "forceRender", "t2", "indexPath", "parentPath", "t4", "parentSchemaPath", "path", "permissions", "readOnly", "t6", "schemaPath", "t7", "admin", "t8", "tabs", "t9", "className", "t10", "undefined", "t3", "t5", "getPreference", "setPreference", "usePreferences", "preferencesKey", "useDocumentInfo", "i18n", "useTranslation", "isWithinCollapsible", "useCollapsible", "t11", "t12", "fields", "index", "map", "tab", "id", "passesCondition", "tabStates", "useFormFields", "_temp", "activeTabIndex", "setActiveTabIndex", "useState", "tabsPrefKey", "activeTabInfo", "activeTabConfig", "activeTabDescription", "_temp2", "t13", "incomingTabIndex", "existingPreferences", "handleTabChange", "t14", "getInitialPref", "existingPreferences_0", "initialIndex", "tabIndex", "newIndex", "t15", "useEffect", "t16", "nextTab", "t17", "baseClass", "t18", "t20", "t19", "fieldBaseClass", "t21", "t22", "index_0", "passesCondition_2", "_jsx", "TabComponent", "hidden", "isActive", "setIsActive", "tab_0", "_jsxs", "join", "children", "TabsProvider", "TabContent", "description", "parentIndexPath", "TabsField", "withCondition", "label", "customComponents", "useField", "Field", "bb0", "AfterInput", "BeforeInput", "Description", "toKebabCase", "getTranslation", "RenderCustomComponent", "CustomComponent", "FieldDescription", "Fallback", "marginPlacement", "RenderFields", "passesCondition_0", "_temp3", "passesCondition_1", "useCallback", "useEffect", "useMemo", "useState", "c", "_c", "getTranslation", "TextInput", "props", "$", "_c", "AfterInput", "BeforeInput", "className", "Description", "description", "Error", "hasMany", "htmlAttributes", "inputRef", "Label", "label", "localized", "maxRows", "onChange", "onKeyDown", "path", "placeholderFromProps", "placeholder", "readOnly", "required", "rtl", "showError", "style", "value", "valueToRender", "i18n", "t", "useTranslation", "_temp2", "t0", "getTranslation", "t1", "t2", "t4", "t3", "fieldBaseClass", "_jsxs", "_jsx", "RenderCustomComponent", "children", "CustomComponent", "FieldLabel", "Fallback", "FieldError", "ReactSelect", "components", "customProps", "disabled", "filterOption", "isClearable", "isCreatable", "isMulti", "isSortable", "menuIsOpen", "isOverHasMany", "max", "options", "id", "name", "ref", "type", "FieldDescription", "_temp", "event", "data", "className_0", "selectProps", "editableClassName", "onBlur", "onClick", "event_0", "currentTarget", "contentEditable", "classList", "event_1", "innerText", "replaceAll", "action", "Array", "v", "newValues", "TextFieldComponent", "props", "field", "admin", "autoComplete", "className", "description", "placeholder", "rtl", "hasMany", "label", "localized", "maxLength", "maxRows", "minLength", "minRows", "inputRef", "path", "readOnly", "validate", "useLocale", "locale", "config", "localizationConfig", "useConfig", "useCallback", "value", "options", "memoizedValidate", "required", "customComponents", "AfterInput", "BeforeInput", "Description", "Error", "Label", "disabled", "setValue", "showError", "pathFromProps", "potentiallyStalePath", "renderRTL", "isFieldRTL", "fieldLocalized", "fieldRTL", "valueToRender", "setValueToRender", "useState", "handleHasManyChange", "selectedOption", "newValue", "Array", "option", "useEffect", "value_0", "isArray", "index", "val", "id", "toString", "mergeFieldStyles", "useMemo", "TextInput", "htmlAttributes", "e", "onChange", "style", "styles", "TextField", "withCondition", "getTranslation", "useCallback", "useMemo", "c", "_c", "getTranslation", "TextareaInput", "props", "$", "_c", "AfterInput", "BeforeInput", "className", "Description", "description", "Error", "Label", "label", "localized", "onChange", "path", "placeholder", "readOnly", "required", "rows", "rtl", "showError", "style", "value", "i18n", "useTranslation", "t0", "t2", "t1", "fieldBaseClass", "t3", "t5", "t4", "_jsxs", "_jsx", "RenderCustomComponent", "children", "CustomComponent", "FieldLabel", "Fallback", "htmlFor", "FieldError", "disabled", "id", "name", "getTranslation", "FieldDescription", "TextareaFieldComponent", "props", "field", "admin", "className", "description", "placeholder", "rows", "rtl", "label", "localized", "maxLength", "minLength", "pathFromProps", "path", "readOnly", "validate", "i18n", "useTranslation", "config", "useConfig", "useLocale", "locale", "isFieldRTL", "fieldLocalized", "fieldRTL", "localization", "memoizedValidate", "useCallback", "value", "options", "required", "customComponents", "AfterInput", "BeforeInput", "Description", "Error", "Label", "disabled", "setValue", "showError", "potentiallyStalePath", "styles", "useMemo", "mergeFieldStyles", "TextareaInput", "e", "onChange", "getTranslation", "isRTL", "style", "TextareaField", "withCondition", "UIField", "React", "useMemo", "c", "_c", "validateMimeType", "React", "useEffect", "c", "_c", "createContext", "use", "useState", "Context", "undefined", "UploadControlsProvider", "t0", "$", "children", "uploadControlFileName", "setUploadControlFileName", "uploadControlFileUrl", "setUploadControlFileUrl", "uploadControlFile", "setUploadControlFile", "t1", "_jsx", "value", "useUploadControls", "context", "Error", "React", "React", "handleDragOver", "e", "preventDefault", "baseClass", "Dropzone", "children", "className", "disabled", "dropzoneStyle", "multipleFiles", "onChange", "dropRef", "addFiles", "setDragging", "useState", "useCallback", "files", "dataTransfer", "DataTransfer", "stopPropagation", "clipboardData", "e_0", "handleDragEnter", "handleDragLeave", "e_1", "handleDrop", "e_2", "useEffect", "div", "addEventListener", "removeEventListener", "handlePaste", "classes", "ref", "c", "_c", "baseClass", "DrawerCloseButton", "t0", "$", "_c", "onClick", "t", "useTranslation", "t1", "_jsx", "className", "type", "XIcon", "baseClass", "DrawerHeader", "onClose", "title", "_jsxs", "className", "_jsx", "onClick", "baseClass", "AddFilesView", "acceptMimeTypes", "onCancel", "onDrop", "t", "useTranslation", "React", "useRef", "className", "_jsx", "DrawerHeader", "onClose", "_jsxs", "Dropzone", "multipleFiles", "onChange", "Button", "buttonStyle", "iconPosition", "onClick", "inputRef", "current", "size", "accept", "hidden", "multiple", "e", "target", "ref", "c", "_c", "getTranslation", "reduceFieldsToValues", "c", "_c", "c", "_c", "formatAdminURL", "qs", "React", "import_object_to_formdata", "reduceFieldsToValues", "createFormData", "formState", "overrides", "collectionSlug", "uploadHandler", "data", "file", "filename", "name", "clientUploadContext", "updateFilename", "value", "JSON", "stringify", "mimeType", "type", "size", "dataWithOverrides", "dataToSerialize", "_payload", "serialize", "indices", "nullsAsUndefineds", "formsManagementReducer", "state", "action", "type", "newForms", "i", "forms", "length", "errorCount", "formID", "crypto", "randomUUID", "uuidv4", "formState", "initialState", "file", "initialValue", "valid", "value", "uploadEdits", "activeIndex", "remainingFormStates", "removedForm", "splice", "index", "affectedByShift", "nextIndex", "boundedActiveIndex", "Math", "min", "totalErrorCount", "count", "reduce", "acc", "form", "updatedForms", "Context", "React", "createContext", "activeIndex", "addFiles", "Promise", "resolve", "bulkUpdateForm", "collectionSlug", "docPermissions", "undefined", "documentSlots", "forms", "getFormDataRef", "current", "hasPublishPermission", "hasSavePermission", "hasSubmitted", "isInitializing", "removeFile", "saveAllDocs", "setActiveIndex", "setFormTotalErrorCount", "totalErrorCount", "updateUploadEdits", "initialState", "FormsManagerProvider", "children", "config", "useConfig", "routes", "api", "code", "useLocale", "i18n", "t", "useTranslation", "getDocumentSlots", "getFormState", "useServerFunctions", "getUploadHandler", "useUploadHandlers", "setDocumentSlots", "useState", "setHasSubmitted", "setDocPermissions", "setHasSavePermission", "setHasPublishPermission", "hasInitializedState", "setHasInitializedState", "hasInitializedDocPermissions", "setHasInitializedDocPermissions", "setIsInitializing", "state", "dispatch", "useReducer", "formsManagementReducer", "formsRef", "useRef", "toggleLoadingOverlay", "useLoadingOverlay", "closeModal", "useModal", "drawerSlug", "initialFiles", "initialForms", "onSuccess", "setInitialFiles", "setInitialForms", "setSuccessfullyUploaded", "useBulkUpload", "isUploading", "setIsUploading", "loadingText", "setLoadingText", "hasInitializedWithFiles", "initialStateRef", "baseAPIPath", "formatAdminURL", "apiRoute", "path", "actionURL", "initializeSharedDocPermissions", "useCallback", "params", "locale", "docAccessURL", "json", "fetch", "stringify", "credentials", "headers", "language", "method", "publishedAccessJSON", "body", "JSON", "_status", "then", "res", "getHasSavePermission", "isEditing", "update", "initializeSharedFormState", "abortController", "signal", "abort", "formStateWithoutFiles", "docPreferences", "fields", "operation", "renderAllFields", "schemaPath", "skipValidation", "index", "currentFormsData", "type", "map", "form", "i", "errorCount", "formID", "formState", "uploadEdits", "files", "length", "isLoading", "key", "Array", "from", "file", "addFilesEffectEvent", "useEffectEvent", "addInitialForms", "count", "overrides", "currentForms", "activeFormID", "newDocs", "fileValue", "value", "total", "actionURLWithParams", "addQueryPrefix", "req", "createFormData", "status", "doc", "push", "fieldErrors", "nonFieldErrors", "errors", "reduce", "fieldErrs", "nonFieldErrs", "err", "newFieldErrs", "newNonFieldErrs", "message", "isArray", "data", "forEach", "dataError", "missingFile", "exceedsLimit", "missingFilename", "name", "valid", "newState", "Object", "values", "acc", "toast", "error", "fieldReducer", "remainingForms", "successCount", "Math", "max", "success", "updatedFields", "afterStateUpdate", "entries", "newFormErrorCount", "resetUploadEdits", "useEffect", "_jsxs", "_jsx", "LoadingOverlay", "animationDuration", "overlayType", "show", "useFormsManager", "use", "getTranslation", "unflatten", "React", "useCallback", "useEffect", "useMemo", "useState", "c", "_c", "useState", "filterOutUploadFields", "fields", "baseUploadFieldNames", "filter", "field", "includes", "name", "fieldAffectsData", "fieldHasSubFields", "fieldIsHiddenOrDisabled", "getFieldPermissions", "fieldAffectsData", "createNestedClientFieldPath", "parentPath", "field", "name", "Fragment", "combineFieldLabel", "CustomLabel", "field", "prefix", "_jsxs", "Fragment", "_jsx", "style", "display", "RenderCustomComponent", "CustomComponent", "Fallback", "FieldLabel", "label", "reduceFieldOptions", "fields", "formState", "labelPrefix", "parentPath", "path", "permissions", "CustomLabel", "customComponents", "Label", "reduce", "fieldsToUse", "field", "operation", "hasOperationPermission", "fieldPermissions", "read", "hasReadPermission", "getFieldPermissions", "parentName", "includes", "split", "length", "fieldAffectsData", "type", "admin", "disableBulkEdit", "unique", "fieldIsHiddenOrDisabled", "readOnly", "fieldHasSubFields", "combineFieldLabel", "prefix", "createNestedClientFieldPath", "tabs", "tabFields", "tab", "isNamedTab", "name", "formattedField", "label", "value", "baseClass", "t0", "$", "_c", "FieldSelect", "fields", "onChange", "permissions", "t", "useTranslation", "dispatchFields", "getFields", "useForm", "t1", "filterOutUploadFields", "formState", "options", "useState", "t2", "t3", "selected", "_jsxs", "className", "children", "_jsx", "label", "ReactSelect", "getOptionValue", "isMulti", "_temp", "option", "EditManyBulkUploadsDrawerContent", "props", "fields", "collection", "labels", "singular", "drawerSlug", "forms", "permissions", "useAuth", "i18n", "t", "closeModal", "useModal", "bulkUpdateForm", "useFormsManager", "getFormState", "useServerFunctions", "setSelectedFields", "useState", "abortFormStateRef", "React", "select", "selectedFields", "collectionPermissions", "acc", "collections", "useMemo", "unflatten", "option", "onChange", "useCallback", "submitted", "formState", "state", "collectionSlug", "docPermissions", "docPreferences", "prevFormState", "operation", "schemaPath", "useEffect", "abortAndIgnore", "abortFormState", "handleSubmit", "pairedData", "acc_0", "option_0", "onFieldSelect", "dispatchFields", "selected", "setIsInitializing", "acc_1", "option_1", "slug", "skipValidation", "_jsxs", "baseClass", "className", "plural", "getTranslation", "length", "id", "onClick", "type", "Form", "_jsx", "isInitializing", "FieldSelect", "onSubmit", "FieldPathContext", "value", "undefined", "field", "path", "RenderField", "clientFieldConfig", "indexPath", "parentPath", "parentSchemaPath", "i", "Button", "baseClass", "props", "$", "_c", "EditManyBulkUploads", "t0", "collection", "slug", "permissions", "useAuth", "t", "useTranslation", "forms", "collectionPermissions", "collections", "hasUpdatePermission", "t1", "drawerSlug", "_jsxs", "className", "children", "DrawerToggler", "EditDepthProvider", "_jsx", "Header", "baseClass", "ActionsBar", "t0", "$", "_c", "collectionConfig", "activeIndex", "forms", "setActiveIndex", "useFormsManager", "t", "useTranslation", "t2", "t1", "t3", "nextIndex", "t4", "nextIndex_0", "_jsxs", "className", "children", "_jsx", "Button", "buttonStyle", "onClick", "type", "ChevronIcon", "EditManyBulkUploads", "collection", "Actions", "getEntityConfig", "useConfig", "collectionSlug", "hasPublishPermission", "hasSavePermission", "saveAllDocs", "overrides", "versions", "c", "_c", "discardBulkUploadModalSlug", "DiscardWithoutSaving", "$", "_c", "t", "useTranslation", "closeModal", "useModal", "drawerSlug", "useBulkUpload", "t0", "onCancel", "t1", "onConfirm", "t2", "_jsx", "ConfirmationModal", "body", "cancelLabel", "confirmLabel", "heading", "modalSlug", "c", "_c", "React", "useCallback", "useEffect", "useMemo", "fieldIsSidebar", "useMemo", "getTranslation", "TrashIcon", "className", "_jsx", "fill", "height", "viewBox", "width", "xmlns", "d", "stroke", "strokeLinecap", "baseClass", "getEntityConfig", "useConfig", "collectionSlug", "useDocumentInfo", "labels", "collectionConfig", "i18n", "useTranslation", "className", "_jsx", "children", "TrashIcon", "baseClass", "AfterFields", "BeforeFields", "docPermissions", "fields", "forceSidebarWrap", "isTrashed", "readOnly", "schemaPathSegments", "hasSidebarFields", "mainFields", "sidebarFields", "useMemo", "acc", "field", "fieldIsSidebar", "push", "_jsxs", "className", "_jsx", "Gutter", "TrashBanner", "RenderFields", "forceRender", "parentIndexPath", "parentPath", "parentSchemaPath", "permissions", "c", "_c", "getTranslation", "formatAdminURL", "React", "useId", "FolderIcon", "className", "_jsx", "fill", "height", "viewBox", "width", "xmlns", "d", "c", "_c", "getTranslation", "extractID", "React", "useRouter", "useSearchParams", "extractID", "formatAdminURL", "formatFolderOrDocumentItem", "qs", "React", "groupItemIDsByRelation", "items", "reduce", "acc", "item", "relationTo", "push", "value", "id", "Context", "React", "createContext", "activeCollectionFolderSlugs", "allCollectionFolderSlugs", "allowCreateCollectionSlugs", "breadcrumbs", "checkIfItemIsDisabled", "clearSelections", "currentFolder", "documents", "dragOverlayItem", "undefined", "focusedRowIndex", "folderCollectionConfig", "folderCollectionSlug", "folderFieldName", "folderID", "FolderResultsComponent", "folderType", "getFolderRoute", "getSelectedItems", "isDragging", "itemKeysToMove", "moveToFolder", "Promise", "resolve", "onItemClick", "onItemKeyPress", "refineFolderData", "search", "selectedFolderCollections", "selectedItemKeys", "Set", "setBreadcrumbs", "setFocusedRowIndex", "setIsDragging", "sort", "subfolders", "FolderProvider", "activeCollectionSlugs", "allowMultiSelection", "baseFolderPath", "_breadcrumbsFromProps", "children", "InitialFolderResultsComponent", "onItemClickFromProps", "parentFolderContext", "useFolder", "config", "useConfig", "routes", "drawerDepth", "useDrawerDepth", "t", "useTranslation", "router", "useRouter", "startRouteTransition", "useRouteTransition", "locale", "useLocale", "localeCode", "code", "currentlySelectedIndexes", "useRef", "setSelectedFolderCollections", "useState", "setFolderResultsComponent", "collections", "find", "collection", "folders", "slug", "rawSearchParams", "useSearchParams", "searchParams", "useMemo", "parseSearchParams", "currentQuery", "setCurrentQuery", "setSelectedItemKeys", "setDragOverlayItem", "lastClickTime", "totalCount", "length", "useCallback", "current", "mergeQuery", "newQuery", "page", "relationTo", "query", "updateURL", "queryParams", "replace", "stringify", "JSON", "addQueryPrefix", "toFolderID", "formatAdminURL", "adminRoute", "admin", "path", "getItem", "itemKey", "doc", "Array", "from", "reduce", "acc", "item", "push", "navigateAfterSelection", "collectionSlug", "docID", "handleShiftSelection", "targetIndex", "existingIndexes", "idx", "has", "firstSelectedIndex", "Math", "min", "lastSelectedIndex", "max", "isWithinBounds", "anchorIndex", "distanceToFirst", "abs", "distanceToLast", "startIndex", "endIndex", "newRangeIndexes", "_", "i", "updateSelections", "indexes", "allItems", "newSelectedFolderCollections", "newSelectedItemKeys", "index", "includes", "add", "value", "forEach", "event", "currentItem", "ctrlKey", "metaKey", "shiftKey", "isShiftPressed", "isCtrlPressed", "isCurrentlySelected", "currentItemIndex", "findIndex", "preventDefault", "newItemIndex", "selectedIndexes", "newItem", "size", "extractID", "prevIndex", "clickedItem", "doubleClicked", "overlayItemKey", "type", "now", "Date", "args", "itemsToMove", "items", "id", "depth", "fetch", "apiRoute", "api", "body", "credentials", "headers", "method", "status", "toast", "error", "ids", "Object", "entries", "groupItemIDsByRelation", "limit", "where", "in", "console", "folderAcceptsItem", "isArray", "Boolean", "some", "useEffect", "_jsx", "formatFolderOrDocumentItem", "isUpload", "useAsTitle", "context", "use", "Error", "c", "_c", "usePathname", "useRouter", "createContext", "use", "useEffect", "useRef", "Context", "createContext", "cachingEnabled", "clearRouteCache", "RouteCache", "t0", "$", "_c", "t1", "children", "undefined", "pathname", "usePathname", "router", "useRouter", "clearAfterPathnameChange", "useRef", "t2", "refresh", "t3", "Symbol", "for", "handlePopState", "current", "window", "addEventListener", "removeEventListener", "t4", "useEffect", "t5", "pathname_0", "handlePathnameChange", "useEffectEvent", "t6", "t7", "t8", "_jsx", "value", "useRouteCache", "use", "c", "_c", "baseClass", "props", "type", "id", "buttonId", "children", "disabledFromProps", "disabled", "onClick", "programmaticSubmit", "ref", "useFormProcessing", "processing", "backgroundProcessing", "useFormBackgroundProcessing", "initializing", "submit", "_jsx", "className", "Button", "handleClick", "baseClass", "t0", "$", "_c", "DrawerActionHeader", "cancelLabel", "className", "onCancel", "onSave", "saveLabel", "title", "t", "useTranslation", "t1", "t2", "t3", "_jsx", "_jsxs", "children", "Button", "buttonStyle", "onClick", "FormSubmit", "baseClass", "DrawerContentContainer", "children", "className", "_jsx", "c", "_c", "getTranslation", "React", "baseClass", "ListCreateNewDocInFolderButton", "t0", "$", "_c", "buttonLabel", "buttonSize", "t1", "buttonStyle", "t2", "collectionSlugs", "folderAssignedCollections", "onCreateSuccess", "slugPrefix", "undefined", "newDocInFolderDrawerSlug", "i18n", "useTranslation", "closeModal", "openModal", "useModal", "config", "useConfig", "folderCollectionConfig", "folderCollectionSlug", "folderFieldName", "folderID", "useFolder", "t3", "collectionSlug", "FolderDocumentDrawer", "t4", "useDocumentDrawer", "closeDrawer", "closeFolderDrawer", "openDrawer", "openFolderDrawer", "createCollectionSlug", "setCreateCollectionSlug", "React", "useState", "t5", "reduce", "acc", "collectionConfig", "collections", "find", "t6", "slug", "push", "enabledCollections", "length", "_jsxs", "Fragment", "children", "_jsx", "Button", "className", "el", "onClick", "size", "Popup", "button", "icon", "PopupList", "ButtonGroup", "map", "collection", "index", "getTranslation", "labels", "singular", "DocumentDrawer", "drawerSlug", "initialData", "onSave", "t7", "doc", "redirectAfterCreate", "includes", "folderType", "result", "React", "baseClass", "NoListResults", "Actions", "Message", "_jsxs", "className", "_jsx", "action", "index", "RecursiveTranslation", "elements", "translationString", "regex", "sections", "split", "_jsx", "map", "section", "index", "startsWith", "endsWith", "elementKey", "Element", "RegExp", "children", "replace", "_", "group", "Translation", "i18nKey", "t", "variables", "stringWithVariables", "c", "_c", "useDroppable", "baseClass", "FolderBreadcrumbs", "breadcrumbs", "className", "_jsx", "_jsxs", "map", "crumb", "DroppableBreadcrumb", "id", "onClick", "name", "direction", "t0", "$", "_c", "children", "t1", "t2", "t3", "isOver", "setNodeRef", "useDroppable", "t5", "t4", "t6", "t7", "ref", "type", "ColoredFolderIcon", "baseClass", "baseModalSlug", "confirmModalSlug", "MoveItemsToFolderDrawer", "gutter", "Header", "props", "slug", "_jsx", "LoadFolderData", "permissions", "useAuth", "setSubfolders", "React", "subfolders", "setDocuments", "useState", "documents", "breadcrumbs", "setBreadcrumbs", "FolderResultsComponent", "setFolderResultsComponent", "hasLoaded", "setFolderID", "setHasLoaded", "hasLoadedRef", "getFolderResultsComponentAndData", "useServerFunctions", "folderIDToPopulate", "populateMoveToFolderDrawer", "result", "browseByFolder", "collectionsToDisplay", "folderAssignedCollections", "folderID", "useEffect", "FolderProvider", "allCollectionFolderSlugs", "folderCollectionSlug", "allowCreateCollectionSlugs", "allowMultiSelection", "folderFieldName", "onItemClick", "item", "Content", "LoadingOverlay", "t0", "$", "drawerSlug", "fromFolderID", "fromFolderName", "itemsToMove", "onConfirm", "skipConfirmModal", "clearRouteCache", "useRouteCache", "closeModal", "isModalOpen", "openModal", "useModal", "t1", "count", "setFolderAddedToUnderlyingFolder", "i18n", "t", "useTranslation", "folderCollectionConfig", "folderType", "getSelectedItems", "useFolder", "t2", "FolderDocumentDrawer", "t3", "useDocumentDrawer", "closeFolderDrawer", "closeDrawer", "openFolderDrawer", "openDrawer", "t4", "selected", "lastCrumb", "id", "value", "getSelectedFolder", "t5", "collectionSlug", "doc", "extractID", "onCreateSuccess", "t6", "onConfirmMove", "t7", "t8", "folderAddedToUnderlyingFolder", "t9", "t10", "t11", "length", "undefined", "t12", "crumb", "name", "onClick", "_jsxs", "className", "children", "onCancel", "onSave", "saveLabel", "DrawerHeading", "title", "action", "FolderBreadcrumbs", "_Fragment", "buttonStyle", "margin", "getTranslation", "initialData", "redirectAfterCreate", "DrawerContentContainer", "NoListResults", "Actions", "ListCreateNewDocInFolderButton", "buttonLabel", "buttonSize", "collectionSlugs", "slugPrefix", "Message", "ConfirmationModal", "body", "ConfirmationMessage", "confirmLabel", "heading", "modalSlug", "fromFolder", "Translation", "elements", "1", "_temp", "i18nKey", "variables", "_temp4", "label", "children_1", "children_0", "children_4", "children_3", "children_2", "baseClass", "MoveItemsToFolderDrawer", "$", "_c", "MoveDocToFolder", "buttonProps", "t1", "className", "folderCollectionSlug", "folderFieldName", "t", "useTranslation", "useFormFields", "_temp", "t2", "t3", "fields", "currentParentFolder", "fromFolderID", "id", "collectionSlug", "initialData", "title", "useDocumentInfo", "setModified", "useForm", "fromFolderName", "setFromFolderName", "React", "config", "useConfig", "useId", "t4", "t5", "fetchFolderLabel", "folderData", "response", "fetch", "apiRoute", "path", "useEffect", "modalID", "t7", "dispatchField", "t8", "id_0", "type", "t9", "t6", "_jsx", "MoveDocToFolderButton", "docData", "docID", "docTitle", "modalSlug", "onConfirm", "t0", "dispatch", "skipConfirmModal", "getEntityConfig", "i18n", "closeModal", "openModal", "useModal", "useDrawerDepth", "drawerDepth", "drawerSlug", "slug", "titleToRender", "getTranslation", "labels", "_jsxs", "_Fragment", "children", "buttonStyle", "icon", "FolderIcon", "iconPosition", "onClick", "action", "folderAssignedCollections", "itemsToMove", "itemKey", "relationTo", "value", "args", "ue", "toast", "folderName", "success", "_", "c", "_c", "formatAdminURL", "isImage", "React", "Fragment", "useCallback", "useEffect", "useRef", "useState", "React", "useRef", "useState", "g", "E", "_", "M", "f", "s", "t", "e", "S", "P", "D", "s", "t", "e", "M", "y", "X", "o", "i", "n", "a", "w", "h", "r", "c", "p", "l", "u", "C", "R", "x", "K", "b", "v", "m", "E", "_", "P", "d", "f", "Y", "g", "S", "I", "baseClass", "Input", "name", "onChange", "ref", "value", "_jsxs", "className", "_jsx", "e", "type", "defaultCrop", "height", "unit", "width", "x", "EditUpload", "fileName", "fileSrc", "imageCacheTag", "initialCrop", "initialFocalPoint", "onSave", "showCrop", "showFocalPoint", "closeModal", "useModal", "t", "useTranslation", "useState", "defaultFocalPosition", "focalPosition", "setFocalPosition", "checkBounds", "setCheckBounds", "uncroppedPixelHeight", "setUncroppedPixelWidth", "setUncroppedPixelHeight", "focalWrapRef", "uncroppedPixelWidth", "useRef", "undefined", "imageRef", "cropRef", "heightInputRef", "widthInputRef", "setImageLoaded", "onImageLoad", "naturalHeight", "fineTuneCrop", "dimension", "intValue", "parseInt", "percentage", "setCrop", "fineTuneFocalPosition", "coordinate", "intValue_0", "value_0", "prevPosition", "saveEdits", "crop", "focalPoint", "heightInPixels", "editDrawerSlug", "onDragEnd", "React", "y", "centerFocalPoint", "containerRect", "current", "getBoundingClientRect", "boundsRect", "xCenter", "left", "fileSrcToUse", "title", "Button", "buttonStyle", "onClick", "imageLoaded", "disabled", "style", "I", "_", "c", "onComplete", "renderSelectionAddon", "alt", "onLoad", "src", "boundsRef", "containerRef", "initialPosition", "value_1", "value_2", "value_3", "toFixed", "value_4", "DraggableElement", "children", "position", "setPosition", "isDragging", "setIsDragging", "dragRef", "mouseXArg", "mouseYArg", "recenter", "getCoordinates", "useCallback", "mouseX", "mouseY", "top", "xOutOfBounds", "yOutOfBounds", "bottom", "event", "handleMouseDown", "preventDefault", "handleMouseMove", "event_0", "x_0", "onDrop", "useEffect", "x_1", "onMouseMove", "onMouseDown", "onMouseUp", "c", "_c", "baseClass", "useDocumentDrawer", "props", "$", "_c", "DraggableFileDetails", "collectionSlug", "doc", "hideRemoveFile", "imageCacheTag", "isSortable", "removeItem", "rowIndex", "uploadConfig", "id", "filename", "thumbnailURL", "url", "t0", "DocumentDrawer", "DocumentDrawerToggler", "t1", "draggableSortableItemProps", "_jsxs", "className", "ref", "style", "transform", "transition", "children", "_jsx", "attributes", "listeners", "DragHandleIcon", "Thumbnail", "fileSrc", "EditIcon", "Button", "buttonStyle", "icon", "iconStyle", "onClick", "round", "t2", "formatFilesize", "React", "c", "_c", "useState", "baseClass", "t0", "$", "_c", "CopyToClipboard", "defaultMessage", "successMessage", "value", "copied", "setCopied", "useState", "t", "useTranslation", "t1", "navigator", "t2", "t3", "Symbol", "setHovered", "t4", "hovered", "_jsxs", "className", "onClick", "onMouseEnter", "onMouseLeave", "type", "_jsx", "CopyIcon", "Tooltip", "children", "delay", "show", "baseClass", "props", "filename", "filesize", "height", "mimeType", "url", "width", "_jsxs", "className", "_jsx", "href", "rel", "target", "defaultMessage", "value", "formatFilesize", "React", "baseClass", "props", "customUploadActions", "doc", "enableAdjustments", "handleRemove", "hasImageSizes", "hideRemoveFile", "imageCacheTag", "uploadConfig", "filename", "filesize", "height", "mimeType", "thumbnailURL", "url", "width", "_jsx", "className", "_jsxs", "previewAllowed", "Thumbnail", "fileSrc", "FileMeta", "customActions", "Boolean", "enablePreviewSizes", "buttonStyle", "icon", "iconStyle", "onClick", "round", "FileDetails", "props", "hasMany", "_jsx", "DraggableFileDetails", "StaticFileDetails", "useEffect", "useMemo", "useState", "baseClass", "sizes", "imageSizes", "sortSizes", "orderedSizes", "name", "PreviewSizeCard", "active", "alt", "meta", "onClick", "_jsxs", "className", "e", "onKeyDown", "role", "tabIndex", "_jsx", "PreviewSizes", "doc", "imageCacheTag", "uploadConfig", "setOrderedSizes", "useState", "generateImageUrl", "setSelectedSize", "doc_0", "url", "useEffect", "selectedSize", "mainPreviewSrc", "useMemo", "originalImage", "filename", "filesize", "height", "mimeType", "width", "originalFilename", "src", "previewSrc", "key", "val", "Object", "selected", "baseClass", "editDrawerSlug", "validate", "sizePreviewSlug", "value", "UploadActions", "t0", "$", "_c", "customActions", "enableAdjustments", "enablePreviewSizes", "mimeType", "t", "useTranslation", "openModal", "useModal", "t1", "t2", "Symbol", "bb0", "fileTypeIsAdjustable", "isImage", "_jsxs", "className", "React", "children", "Button", "Fragment", "buttonStyle", "margin", "onClick", "size", "_jsx", "_temp", "Upload", "props", "resetUploadEdits", "updateUploadEdits", "uploadEdits", "useUploadEdits", "UploadControlsProvider", "Upload_v4", "collectionSlug", "initialState", "onChange", "uploadConfig", "UploadControls", "setUploadControlFile", "setUploadControlFileName", "setUploadControlFileUrl", "uploadControlFile", "uploadControlFileName", "uploadControlFileUrl", "useUploadControls", "config", "routes", "useConfig", "setModified", "useForm", "id", "data", "docPermissions", "setUploadStatus", "useDocumentInfo", "useFormProcessing", "isFormSubmitting", "errorMessage", "setValue", "showError", "useField", "path", "fileSrc", "setFileSrc", "useState", "removedFile", "setRemovedFile", "filename", "setFilename", "name", "showUrlInput", "setShowUrlInput", "urlInputRef", "setFileUrl", "useRef", "inputRef", "useServerSideFetch", "useCallback", "file", "isNewFile", "File", "fileToChange", "newName", "newFile", "type", "handleFileNameChange", "e", "handleFileChange", "updatedFileName", "renameFile", "files", "handleFileSelection", "fileToUpload", "handleFileRemoval", "onEditsSave", "args", "handleUrlSubmit", "clientResponse", "fileUrl", "blob", "fileName", "decodeURIComponent", "ue", "toast", "pasteURL", "formatAdminURL", "serverResponse", "apiRoute", "blob_0", "split", "_serverError", "api", "useEffect", "createObjectURL", "canRemoveUpload", "hasImageSizes", "focalPointEnabled", "showCrop", "crop", "focalPoint", "hasResizeOptions", "showFocalPoint", "acceptMimeTypes", "join", "imageCacheTag", "handleControlFileUrl", "handleControlFile", "fieldBaseClass", "filter", "message", "customUploadActions", "doc", "handleRemove", "hideRemoveFile", "hideFileInputOnCreate", "Dropzone", "current", "accept", "hidden", "e_0", "target", "ref", "e_1", "title", "icon", "iconStyle", "round", "tooltip", "Thumbnail", "Drawer", "Header", "slug", "EditUpload", "url", "initialCrop", "initialFocalPoint", "x", "focalX", "onSave", "hoverTitle", "PreviewSizes", "CustomAction", "i", "baseClass", "EditForm", "resetUploadEdits", "submitted", "updateUploadEdits", "uploadEdits", "action", "docSlug", "collectionSlug", "docPermissions", "getDocPreferences", "hasSavePermission", "initialState", "isInitializing", "Upload", "CustomUpload", "useDocumentInfo", "drawerSlug", "onSave", "onSaveFromContext", "useDocumentDrawerContext", "getFormState", "useServerFunctions", "config", "getEntityConfig", "useConfig", "React", "abortOnChangeRef", "collectionConfig", "reportUpdate", "useDocumentEvents", "schemaPath", "useState", "useCallback", "json", "doc", "entitySlug", "operation", "onChange", "formState", "prevFormState", "controller", "handleAbortRef", "docPreferences", "newFormState", "state", "signal", "useEffect", "abortOnChange", "abortAndIgnore", "_jsx", "OperationProvider", "_jsxs", "Form", "className", "disabled", "method", "onSuccess", "DocumentFields", "BeforeFields", "Fragment", "Upload_v4", "MoveDocToFolder", "customActions", "buttonProps", "buttonStyle", "folders", "folderCollectionSlug", "folderFieldName", "fieldName", "uploadConfig", "fields", "schemaPathSegments", "ReportAllErrors", "slug", "GetFieldProxy", "$", "getField", "getFields", "useForm", "getFormDataRef", "useFormsManager", "t0", "t1", "docConfig", "activeIndex", "forms", "setFormTotalErrorCount", "errorCountRef", "useMemo", "useRef", "currentForm", "fieldErrorCount", "reportFormErrorCount", "fileIsValid", "newErrorCount", "errorCount", "current", "WatchChildErrors", "path", "c", "_c", "dist_exports", "__export", "WindowInfo", "WindowInfoContext", "WindowInfoProvider", "useWindowInfo", "withWindowInfo", "useContext", "createContext", "WindowInfoContext", "useWindowInfo", "useContext", "WindowInfoContext", "React", "Fragment", "WindowInfo", "props", "children", "windowInfo", "useWindowInfo", "React", "Fragment", "React", "useCallback", "useEffect", "useReducer", "useRef", "reducer", "state", "action", "breakpoints", "animationRef", "prevEventsFired", "style", "clientWidth", "clientHeight", "windowWidth", "windowHeight", "viewportWidth", "viewportHeight", "watchedBreakpoints", "matchMediaBreakpoints", "key", "newState", "WindowInfoProvider", "props", "children", "useRef", "dispatch", "useReducer", "requestAnimation", "useCallback", "requestThrottledAnimation", "useEffect", "React", "WindowInfoContext", "React", "withWindowInfo", "PassedComponent", "props", "windowInfoContext", "useWindowInfo", "React", "isImage", "React", "createThumbnail", "file", "Promise", "resolve", "reject", "img", "Image", "src", "URL", "createObjectURL", "onload", "drawHeight", "drawWidth", "aspectRatio", "width", "height", "maxDimension", "canvas", "OffscreenCanvas", "ctx", "getContext", "outputFormat", "type", "quality", "undefined", "drawImage", "convertToBlob", "then", "blob", "revokeObjectURL", "reader", "FileReader", "result", "onerror", "readAsDataURL", "catch", "error", "addMoreFilesDrawerSlug", "baseClass", "FileSidebar", "$", "_c", "activeIndex", "addFiles", "forms", "isInitializing", "removeFile", "setActiveIndex", "totalErrorCount", "useFormsManager", "initialFiles", "initialForms", "maxFiles", "useBulkUpload", "i18n", "t", "useTranslation", "closeModal", "openModal", "useModal", "setShowFiles", "React", "breakpoints", "useWindowInfo", "t0", "indexToRemove", "handleRemoveFile", "t1", "filelist", "handleAddFiles", "_temp", "getFileSize", "totalFileCount", "bulkUploadCollectionSlug", "collectionSlug", "selectableCollections", "setCollectionSlug", "getEntityConfig", "useConfig", "t3", "t2", "t4", "t5", "showFiles", "t6", "_temp2", "t7", "t8", "t9", "index_0", "errorCount", "formID", "formState", "currentFile", "className", "_jsxs", "children", "onClick", "type", "_jsx", "SidebarThumbnail", "file", "title", "name", "XIcon", "ErrorPill", "count", "SelectInput", "isClearable", "e", "onChange", "val", "coll", "options", "config", "map", "label", "labels", "path", "required", "value", "withMessage", "Pill", "size", "Button", "buttonStyle", "ChevronIcon", "direction", "Drawer", "gutter", "Header", "slug", "onCancel", "AnimateHeight", "height", "_temp3", "ShimmerEffect", "index", "animationDelay", "prev", "i", "Math", "decimals", "thumbnailURL", "setThumbnailURL", "useState", "setIsLoading", "useEffect", "generateThumbnail", "isImage", "isCancelled", "url", "Thumbnail", "fileSrc", "baseClass", "AddingFilesView", "$", "_c", "activeIndex", "collectionSlug", "docPermissions", "documentSlots", "forms", "hasPublishPermission", "hasSavePermission", "hasSubmitted", "resetUploadEdits", "updateUploadEdits", "useFormsManager", "activeForm", "getEntityConfig", "useConfig", "i18n", "useTranslation", "user", "useAuth", "openModal", "useModal", "t0", "collectionConfig", "t1", "discardBulkUploadModalSlug", "_jsxs", "className", "children", "_jsx", "FileSidebar", "onClose", "getTranslation", "title", "DocumentInfoProvider", "labels", "currentEditor", "hasPublishedDoc", "id", "reduceFieldsToValues", "initialData", "initialState", "isLocked", "lastUpdateTime", "mostRecentVersionIsAutosaved", "unpublishedVersionCount", "Upload", "versionCount", "ActionsBar", "submitted", "uploadEdits", "length", "drawerSlug", "DrawerContent", "addFiles", "forms", "isInitializing", "useFormsManager", "closeModal", "useModal", "collectionSlug", "useBulkUpload", "getEntityConfig", "useConfig", "t", "useTranslation", "uploadMimeTypes", "upload", "mimeTypes", "onDrop", "React", "useCallback", "acceptedFiles", "fileTransfer", "DataTransfer", "candidateFile", "undefined", "length", "validateMimeType", "type", "items", "add", "files", "toast", "error", "_jsx", "AddFilesView", "acceptMimeTypes", "join", "onCancel", "AddingFilesView", "BulkUploadDrawer", "$", "_c", "setInitialFiles", "setInitialForms", "setOnCancel", "setOnSuccess", "setSelectableCollections", "setSuccessfullyUploaded", "successfullyUploaded", "modalState", "previousModalStateRef", "useRef", "t0", "modalState_0", "previousModalState", "current", "currentModalState", "isOpen", "_temp2", "_temp4", "onModalStateChanged", "useEffectEvent", "t1", "t2", "useEffect", "t3", "Drawer", "gutter", "Header", "slug", "children", "FormsManagerProvider", "UploadControlsProvider", "EditDepthProvider", "_temp3", "_temp", "Context", "createContext", "initialFiles", "initialForms", "maxFiles", "onSuccess", "selectableCollections", "setCollectionSlug", "setMaxFiles", "BulkUploadProvider", "drawerSlugPrefix", "useState", "collection", "setCollection", "onSuccessFunction", "setOnSuccessFunction", "onCancelFunction", "setOnCancelFunction", "useBulkUploadDrawerSlug", "Symbol", "for", "t4", "newDocs", "errorCount", "t5", "value", "_jsxs", "Fragment", "use", "depth", "useDrawerDepth", "formatAdminURL", "qs", "React", "useCallback", "useEffect", "useMemo", "normalizeRelationshipValue", "value", "relationTo", "isPoly", "Array", "isArray", "idValue", "id", "c", "_c", "c", "_c", "getTranslation", "formatFilesize", "baseClass", "useTranslation", "RelationshipContent", "props", "$", "_c", "id", "allowEdit", "allowRemove", "alt", "byteSize", "className", "collectionSlug", "displayPreview", "filename", "mimeType", "onRemove", "reloadDoc", "t0", "showCollectionSlug", "src", "thumbnailSrc", "updatedAt", "t1", "withMeta", "x", "y", "undefined", "config", "useConfig", "i18n", "collection", "collectionConfig", "t3", "t2", "DocumentDrawer", "t4", "useDocumentDrawer", "openDrawer", "t5", "doc", "onSave", "t6", "mimeType_0", "size", "sections", "generateMetaText", "formatFilesize", "metaText", "t7", "_jsxs", "join", "children", "previewAllowed", "_jsx", "ThumbnailComponent", "fileSrc", "imageCacheTag", "Pill", "getTranslation", "href", "target", "Button", "buttonStyle", "icon", "iconStyle", "onClick", "baseClass", "UploadCard", "children", "className", "size", "_jsx", "getBestFitFromSizes", "isImage", "baseClass", "UploadComponentHasMany", "props", "$", "_c", "className", "displayPreview", "fileDocs", "isSortable", "onRemove", "onReorder", "readonly", "reloadDoc", "serverURL", "t0", "showCollectionSlug", "t1", "moveFromIndex", "moveToIndex", "updatedArray", "splice", "moveRow", "t2", "index", "updatedArray_0", "removeItem", "t3", "t4", "t5", "t6", "t7", "moveFromIndex_0", "moveToIndex_0", "t8", "index_0", "relationTo", "value", "id", "value_0", "src", "thumbnailSrc", "thumbnailURL", "url", "_jsx", "DraggableSortableItem", "disabled", "draggableSortableItemProps", "children", "ref", "style", "transform", "transition", "_jsxs", "UploadCard", "size", "attributes", "listeners", "DragHandleIcon", "RelationshipContent", "allowEdit", "allowRemove", "alt", "byteSize", "collectionSlug", "filename", "mimeType", "updatedAt", "withMeta", "x", "width", "y", "DraggableSortable", "ids", "onDragEnd", "getBestFitFromSizes", "isImage", "baseClass", "UploadCard", "UploadComponentHasOne", "props", "className", "displayPreview", "fileDoc", "onRemove", "readonly", "reloadDoc", "serverURL", "showCollectionSlug", "relationTo", "value", "src", "thumbnailSrc", "isImage", "getBestFitFromSizes", "sizes", "thumbnailURL", "url", "_jsx", "allowEdit", "allowRemove", "alt", "byteSize", "filesize", "collectionSlug", "filename", "id", "mimeType", "updatedAt", "x", "width", "UploadComponentHasOne", "baseClass", "props", "AfterInput", "allowCreate", "api", "BeforeInput", "className", "Description", "description", "displayPreview", "Error", "filterOptionsFromProps", "filterOptions", "hasMany", "isSortable", "Label", "label", "localized", "maxRows", "onChangeFromProps", "onChange", "path", "readOnly", "relationTo", "required", "serverURL", "showError", "style", "value", "setPopulatedDocs", "React", "populatedDocs", "useState", "openModal", "useModal", "drawerSlug", "setCollectionSlug", "setInitialFiles", "setMaxFiles", "setOnSuccess", "setSelectableCollections", "useBulkUpload", "permissions", "useAuth", "code", "useLocale", "i18n", "t", "collectionSlugsWithCreatePermission", "useMemo", "relation", "existingIdsByRelation", "values", "Array", "isPoly", "val", "collection", "id", "newFilterOptions", "relations", "relation_0", "existingIds", "ListDrawer", "closeDrawer", "openListDrawer", "openDrawer", "collectionSlugs", "CreateDocDrawer", "openCreateDocDrawer", "useDocumentDrawer", "loadedValueRef", "canCreate", "activeRelationTo", "newValue", "items", "populateDocs", "grouped", "relationTo_0", "idValue", "value_0", "fetches", "collection_0", "ids", "Object", "query", "depth", "draft", "limit", "locale", "where", "and", "response", "formatAdminURL", "apiRoute", "body", "stringify", "credentials", "headers", "docs", "docsById", "acc", "doc", "results", "lookup", "forEach", "docsById_0", "collection_1", "sortedDocs", "doc_0", "relationTo_1", "value_1", "filename", "language", "value_2", "normalizeRelationshipValue", "normalizeValue", "useCallback", "onUploadSuccess", "uploadedForms", "form", "isPoly_0", "newValues", "normalizedExisting", "map", "mergedValue", "currentDocs", "form_0", "firstDoc", "onLocalFileSelection", "fileListToUse", "fileList", "dataTransfer", "DataTransfer", "collectionToUse", "isArray", "onListBulkSelect", "docs_0", "selectedDocIDs", "isSelected", "id_0", "itemsToLoad", "id_1", "loadedDocs", "currentDocs_0", "newValues_0", "id_2", "isPoly_1", "normalizedExisting_0", "closeListDrawer", "data_0", "onDocCreate", "data", "currentDocs_1", "newValue_1", "isPoly_2", "closeCreateDocDrawer", "collectionSlug", "isPoly_3", "selectedDoc", "currentDocs_2", "valueToUse", "valueToUse_0", "docID", "reloadDoc", "collectionSlug_0", "docs_1", "updatedDocsToPropogate", "doc_2", "findIndex", "existingDocIndex", "currentDocs_3", "updatedDocs", "doc_3", "onReorder", "newValue_3", "newValueToSave", "rel", "newValue_4", "onRemove", "length", "newValueToSave_0", "rel_0", "useEffect", "loadInitialDocs", "itemsToLoad_0", "v", "v_0", "idValue_0", "idValue_1", "id_3", "loadedDocs_1", "valueChanged", "_jsxs", "fieldBaseClass", "_jsx", "RenderCustomComponent", "CustomComponent", "FieldLabel", "Fallback", "FieldError", "_Fragment", "UploadComponentHasMany", "fileDocs", "readonly", "showCollectionSlug", "ShimmerEffect", "height", "id_4", "fileDoc", "showDropzone", "disabled", "multipleFiles", "Button", "buttonStyle", "size", "onClick", "enableRowSelections", "onBulkSelect", "onSelect", "FieldDescription", "baseClass", "props", "field", "admin", "allowCreate", "className", "description", "isSortable", "hasMany", "label", "localized", "maxRows", "relationToFromProps", "relationTo", "pathFromProps", "path", "readOnly", "validate", "config", "useConfig", "displayPreview", "value", "options", "memoizedValidate", "React", "required", "customComponents", "AfterInput", "BeforeInput", "Description", "Error", "Label", "disabled", "filterOptions", "setValue", "showError", "potentiallyStalePath", "isPolymorphic", "Array", "isArray", "memoizedValue", "value_0", "val", "useMemo", "BulkUploadProvider", "_jsx", "drawerSlugPrefix", "api", "routes", "onChange", "serverURL", "style", "styles", "UploadField", "withCondition", "UploadComponent", "RenderField", "t0", "$", "_c", "clientFieldConfig", "forceRender", "indexPath", "parentPath", "parentSchemaPath", "path", "permissions", "readOnly", "schemaPath", "t1", "t2", "fields", "customComponents", "Field", "CustomField", "useFormFields", "Symbol", "for", "baseFieldProps", "admin", "hidden", "_jsx", "HiddenField", "undefined", "bb0", "iterableFieldProps", "type", "ArrayField", "field", "BlocksField", "CheckboxField", "CodeField", "CollapsibleField", "DateTimeField", "EmailField", "GroupField", "JoinField", "JSONField", "NumberField", "PointField", "RadioGroupField", "RelationshipField", "RichTextField", "RowField", "SelectField", "TabsField", "TextField", "TextareaField", "UIField", "UploadField", "baseClass", "RenderField", "props", "$", "_c", "RenderFields", "className", "fields", "forceRender", "margins", "parentIndexPath", "parentPath", "parentSchemaPath", "permissions", "readOnly", "useOperation", "operation", "length", "t0", "t2", "t1", "t3", "t4", "readOnlyFromParent", "t5", "field", "fieldIsHiddenOrDisabled", "hasOperationPermission", "read", "hasReadPermission", "parentName", "isReadOnly", "indexPath", "path", "schemaPath", "i", "index", "_jsx", "FieldPathContext", "value", "children", "clientFieldConfig", "fieldPermissions", "RenderIfInViewport", "baseClass", "t0", "$", "_c", "ArrayRow", "addRow", "attributes", "copyRow", "CustomRowLabel", "duplicateRow", "errorCount", "fields", "t1", "forceRender", "hasMaxRows", "isDragging", "isLoadingFromProps", "isLoading", "isSortable", "labels", "listeners", "moveRow", "parentPath", "pasteRow", "path", "permissions", "readOnly", "removeRow", "row", "rowCount", "rowIndex", "schemaPath", "scrollIdPrefix", "setCollapse", "setNodeRef", "transform", "transition", "useThrottledValue", "i18n", "useTranslation", "useFormSubmitted", "hasSubmitted", "fallbackLabel", "getTranslation", "fieldHasErrors", "t3", "t2", "classNames", "join", "t4", "split", "t6", "t5", "t7", "collapsed", "_jsx", "id", "ref", "style", "Collapsible", "children", "ArrayAction", "actions", "index", "className", "collapsibleStyle", "dragHandleProps", "undefined", "header", "ShimmerEffect", "height", "width", "RowLabel", "CustomComponent", "label", "rowNumber", "count", "withMessage", "onToggle", "RenderFields", "margins", "parentIndexPath", "parentSchemaPath", "baseClass", "props", "field", "name", "type", "admin", "className", "description", "isSortable", "fields", "label", "localized", "maxRows", "minRowsProp", "minRows", "forceRender", "path", "permissions", "readOnly", "schemaPathFromProps", "schemaPath", "validate", "setDocFieldPreferences", "useDocumentInfo", "addFieldRow", "dispatchFields", "getFields", "moveFieldRow", "removeFieldRow", "replaceState", "setModified", "useForm", "useFormSubmitted", "submitted", "locale", "code", "useLocale", "i18n", "t", "useTranslation", "config", "useConfig", "editingDefaultLocale", "localization", "fallback", "defaultLocale", "labels", "p", "getLabels", "plural", "undefined", "value", "options", "required", "customComponents", "AfterInput", "BeforeInput", "Description", "Error", "Label", "disabled", "errorPaths", "rows", "showError", "valid", "value_0", "useField", "hasRows", "pathFromProps", "potentiallyStalePath", "componentId", "useId", "scrollIdPrefix", "useMemo", "rowIndex", "setTimeout", "scrollToID", "useCallback", "rowIndex_0", "duplicateRow", "rowIndex_1", "moveFromIndex", "moveToIndex", "collapsed", "toggleCollapseAll", "collapsedIDs", "updatedRows", "setCollapse", "collapsedIDs_0", "updatedRows_0", "extractRowsAndCollapsedIDs", "rowID", "copyRow", "clipboardResult", "clipboardCopy", "reduceFormStateByPath", "getDataToCopy", "formState", "rowIndex_2", "ue", "pasteRow", "clipboardResult_0", "clipboardPaste", "pasteArgs", "onPaste", "newState", "dataFromClipboard", "rowIndex_3", "schemaFields", "pasteField", "newState_0", "mergeFormStateFromClipboard", "hasMaxRows", "length", "fieldErrorCount", "fieldHasErrors", "showRequired", "showMinRows", "mergeFieldStyles", "fieldBaseClass", "id", "styles", "style", "_jsx", "RenderCustomComponent", "CustomComponent", "FieldError", "Fallback", "_jsxs", "FieldLabel", "as", "count", "withMessage", "Fragment", "onClick", "ClipboardAction", "allowCopy", "allowPaste", "FieldDescription", "fieldValue", "ids", "map", "onDragEnd", "moveFromIndex_0", "moveToIndex_0", "moveRow", "i", "rowID_0", "isLoading", "rowData", "rowPath", "errorPath", "DraggableSortableItem", "ArrayRow", "draggableSortableItemProps", "addRow", "CustomRowLabel", "rowErrorCount", "errorCount", "parentPath", "removeRow", "row", "rowCount", "React", "Banner", "buttonStyle", "icon", "iconPosition", "iconStyle", "ArrayField", "withCondition", "ArrayFieldComponent", "c", "_c", "confirmPassword", "ConfirmPasswordField", "props", "$", "_c", "disabledFromProps", "disabled", "path", "t0", "t", "useTranslation", "t1", "_temp", "setValue", "showError", "value", "value_0", "useField", "t3", "t2", "fieldBaseClass", "t4", "t5", "_jsxs", "className", "FieldLabel", "children", "_jsx", "htmlFor", "label", "required", "autoComplete", "id", "name", "onChange", "type", "options", "confirmPassword", "password", "useCallback", "useMemo", "c", "_c", "getTranslation", "PasswordInput", "props", "$", "_c", "AfterInput", "t0", "autoComplete", "BeforeInput", "className", "description", "Description", "Error", "inputRef", "Label", "label", "localized", "onChange", "onKeyDown", "path", "placeholder", "readOnly", "required", "rtl", "showError", "style", "value", "width", "i18n", "useTranslation", "t1", "t3", "t2", "fieldBaseClass", "t4", "t5", "_jsxs", "_jsx", "RenderCustomComponent", "children", "CustomComponent", "FieldLabel", "Fallback", "FieldError", "disabled", "id", "name", "getTranslation", "ref", "type", "FieldDescription", "PasswordFieldComponent", "props", "autoComplete", "field", "admin", "className", "disabledFromProps", "disabled", "placeholder", "rtl", "label", "localized", "required", "inputRef", "path", "validate", "t", "useTranslation", "locale", "config", "useConfig", "useCallback", "value", "options", "memoizedValidate", "pathSegments", "password", "name", "type", "blockData", "data", "event", "preferences", "req", "payload", "customComponents", "AfterInput", "BeforeInput", "Description", "Error", "Label", "setValue", "showError", "renderRTL", "isFieldRTL", "fieldLocalized", "fieldRTL", "styles", "useMemo", "mergeFieldStyles", "PasswordInput", "e", "onChange", "readOnly", "style", "PasswordField", "withCondition", "fieldComponents", "array", "ArrayField", "blocks", "BlocksField", "checkbox", "CheckboxField", "code", "CodeField", "collapsible", "CollapsibleField", "confirmPassword", "ConfirmPasswordField", "date", "DateTimeField", "email", "EmailField", "group", "GroupField", "hidden", "HiddenField", "join", "JoinField", "json", "JSONField", "number", "NumberField", "password", "PasswordField", "point", "PointField", "radio", "RadioGroupField", "relationship", "RelationshipField", "richText", "RichTextField", "row", "RowField", "select", "SelectField", "tabs", "TabsField", "text", "TextField", "textarea", "TextareaField", "ui", "UIField", "upload", "UploadField", "allFieldComponents", "Description", "FieldDescription", "Error", "FieldError", "Label", "FieldLabel", "RowLabel", "c", "_c", "setsAreEqual", "useEffect", "pressedKeys", "Map", "map", "altleft", "altright", "controlleft", "controlright", "ctrlleft", "ctrlright", "escape", "metaleft", "metaright", "osleft", "osright", "shiftleft", "shiftright", "stripKey", "key", "toLowerCase", "trim", "replace", "pushToKeys", "code", "forEach", "time", "pressedKey", "delete", "set", "Date", "now", "removeFromKeys", "clear", "useHotkey", "options", "func", "$", "_c", "cmdCtrlKey", "editDepth", "keyCodes", "modalState", "useModal", "t0", "event", "e", "detail", "undefined", "_temp", "hasCmd", "window", "navigator", "userAgent", "includes", "pressedWithoutModifier", "keys", "filter", "_temp2", "Set", "has", "ctrlKey", "Object", "key_1", "isOpen", "length", "keydown", "keyup", "_temp3", "t1", "t2", "document", "addEventListener", "removeEventListener", "key_0", "e_0", "c", "_c", "qs", "useEffect", "useRef", "useState", "usePayloadAPI", "url", "t0", "$", "_c", "t1", "undefined", "options", "initialData", "initialParams", "t2", "t3", "i18n", "useTranslation", "t4", "data", "setData", "useState", "params", "setParams", "isLoading", "setIsLoading", "isError", "setIsError", "code", "locale", "useLocale", "hasInitialized", "useRef", "t5", "stringify", "addQueryPrefix", "search", "t6", "language", "current", "abortController", "AbortController", "response", "requests", "get", "headers", "signal", "status", "json", "aborted", "abort", "t8", "_err", "t7", "useEffect", "t9", "t10", "t11", "Symbol", "for", "t12", "c", "_c", "useEffect", "useState", "useResize", "element", "$", "size", "setSize", "t0", "t1", "observer", "entries", "forEach", "entry", "contentBoxSize", "contentRect", "newWidth", "newHeight", "newSize", "Array", "isArray", "blockSize", "inlineSize", "height", "width", "observe", "unobserve", "t2", "c", "_c", "flattenTopLevelFields", "useUseTitleField", "collection", "$", "_c", "admin", "t0", "fields", "useAsTitle", "i18n", "useTranslation", "t1", "flattenTopLevelFields", "moveSubFieldsToTop", "find", "field", "name", "c", "_c", "SortDownIcon", "className", "fill", "height", "viewBox", "width", "xmlns", "_jsx", "d", "stroke", "strokeLinecap", "baseClass", "useTranslation", "$", "useSort", "handleSortChange", "orderableFieldName", "query", "querySort", "t0", "isActive", "handleSortPress", "t1", "SortHeader", "props", "_c", "appearance", "t", "t2", "t3", "_jsx", "className", "children", "direction", "onClick", "type", "SortDownIcon", "c", "_c", "baseClass", "useListQuery", "$", "_c", "SortRow", "orderableFieldName", "query", "isActive", "sort", "t1", "t0", "_jsx", "className", "role", "tabIndex", "DragHandleIcon", "children", "DragOverlay", "formatAdminURL", "useState", "OrderableRow", "cellMap", "columns", "dragAttributes", "dragListeners", "rowId", "rest", "_jsx", "map", "col", "colIndex", "accessor", "cell", "renderedCells", "className", "OrderableRowDragPreview", "children", "className", "rowId", "_jsx", "cellPadding", "cellSpacing", "baseClass", "OrderableRowDragPreview", "appearance", "OrderableTable", "BeforeTable", "collection", "columns", "config", "useConfig", "listQueryData", "data", "orderableFieldName", "query", "useListQuery", "localeCode", "code", "serverData", "initialData", "localData", "setLocalData", "useState", "cellMap", "setCellMap", "useEffect", "item", "index", "Object", "col", "activeColumns", "filter", "col_0", "active", "handleDragEnd", "moveFromIndex", "moveToIndex", "ue", "toast", "setDragActiveRowId", "movedId", "_id", "newBeforeRow", "previousData", "currentData", "newData", "target", "id", "key", "newAfterRow", "newKeyWillBe", "collectionSlug", "docsToMove", "response", "formatAdminURL", "fetch", "apiRoute", "api", "path", "jsonBody", "body", "stringify", "credentials", "headers", "status", "err", "error", "handleDragStart", "rowIds", "row", "map", "className", "_jsxs", "ids", "onDragEnd", "onDragStart", "cellPadding", "cellSpacing", "_jsx", "col_1", "i", "row_0", "rowIndex", "DraggableSortableItem", "attributes", "isDragging", "listeners", "setNodeRef", "transform", "transition", "dragAttributes", "dragListeners", "ref", "rowId", "style", "opacity", "DragOverlay", "OrderableRow", "dragActiveRowId", "toWords", "transformColumnsToSearchParams", "baseClass", "cellData", "_jsx", "className", "transformColumnsToSearchParams", "column", "i", "isColumnActive", "Pill", "pillStyle", "size", "toWords", "toWords", "transformWhereToNaturalLanguage", "where", "or", "length", "and", "andQuery", "key", "Object", "keys", "operator", "value", "Array", "isArray", "map", "val", "join", "QueryPresetsWhereCell", "cellData", "_jsx", "toWords", "Fragment", "QueryPresetsAccessCell", "cellData", "operations", "_jsx", "reduce", "acc", "operation", "index", "operationData", "constraint", "push", "_jsxs", "length", "toWords", "useMemo", "getTranslation", "fieldAffectsData", "fieldIsHiddenOrDisabled", "fieldIsID", "tabHasName", "equalsOperators", "label", "value", "arrayOperators", "exists", "base", "numeric", "geo", "within", "intersects", "like", "notLike", "contains", "fieldTypeConditions", "checkbox", "component", "operators", "code", "date", "email", "json", "number", "point", "radio", "relationship", "richText", "select", "text", "textarea", "upload", "getValidFieldOperators", "field", "operator", "validOperators", "type", "Array", "isArray", "relationTo", "hasMany", "validOperator", "find", "reduceFieldsToOptions", "fieldPermissions", "fields", "i18n", "labelPrefix", "pathPrefix", "pathPrefixFromArgs", "reduce", "reduced", "field", "fieldIsHiddenOrDisabled", "fieldIsID", "virtual", "shouldIgnoreFieldName", "fieldAffectsData", "type", "tabs", "forEach", "tab", "label", "localizedTabLabel", "getTranslation", "labelWithPrefix", "tabPathPrefix", "tabHasName", "name", "push", "translatedLabel", "pathWithPrefix", "fieldTypeConditions", "read", "operatorKeys", "Set", "validOperators", "getValidFieldOperators", "operators", "acc", "operator", "has", "value", "add", "operatorKey", "t", "localizedLabel", "formattedLabel", "combineFieldLabel", "prefix", "fieldPath", "createNestedClientFieldPath", "formattedField", "plainTextLabel", "QueryPresetsGroupByCell", "cellData", "rowData", "i18n", "useTranslation", "permissions", "useAuth", "config", "useConfig", "relatedCollection", "collectionConfig", "useMemo", "collections", "find", "col", "slug", "reducedFields", "fieldPermissions", "fields", "reduceFieldsToOptions", "_jsx", "isDescending", "startsWith", "fieldName", "slice", "direction", "displayLabel", "field", "value", "label", "toWords", "_jsxs", "c", "_c", "toWords", "transformColumnsToSearchParams", "QueryPresetsColumnField", "t0", "$", "_c", "t1", "field", "label", "required", "path", "value", "useField", "t2", "_jsxs", "className", "_jsx", "FieldLabel", "children", "as", "transformColumnsToSearchParams", "_temp", "column", "i", "isColumnActive", "Pill", "pillStyle", "size", "toWords", "getTranslation", "toWords", "React", "transformWhereToNaturalLanguage", "where", "collectionLabel", "renderCondition", "condition", "key", "Object", "operator", "formatValue", "val", "value", "operatorValue", "isArray", "pillStyle", "size", "_jsx", "renderWhere", "or", "length", "className", "orCondition", "orIndex", "React", "Fragment", "andCondition", "andIndex", "_jsxs", "QueryPresetsWhereField", "t0", "t1", "field", "label", "required", "path", "useField", "collectionSlug", "useListQuery", "getEntityConfig", "useConfig", "i18n", "useTranslation", "FieldLabel", "children", "as", "getTranslation", "collectionConfig", "toWords", "useMemo", "QueryPresetsGroupByField", "field", "label", "path", "value", "useField", "i18n", "useTranslation", "permissions", "useAuth", "config", "relatedCollection", "relatedCollectionField", "collectionConfig", "useMemo", "col", "collections", "find", "reducedFields", "fieldPermissions", "fields", "_jsxs", "className", "_jsx", "FieldLabel", "as", "required", "renderGroupBy", "groupByValue", "isDescending", "fieldName", "slice", "fieldOption", "pillStyle", "size", "displayLabel", "c", "_c", "React", "c", "_c", "useRouter", "useEffect", "useRef", "on", "obj", "args", "addEventListener", "off", "removeEventListener", "useBeforeUnload", "t0", "message", "$", "_c", "enabled", "undefined", "t1", "event", "preventDefault", "returnValue", "handler", "t2", "t3", "window", "useEffect", "usePreventLeave", "hasAccepted", "onAccept", "onPrevent", "prevent", "startRouteTransition", "useRouteTransition", "router", "useRouter", "cancelledURL", "useRef", "isAnchorOfCurrentUrl", "currentUrl", "newUrl", "currentUrlObj", "URL", "newUrlObj", "hostname", "pathname", "search", "currentHash", "hash", "newHash", "href", "replace", "err", "console", "log", "findClosestAnchor", "element", "tagName", "toLowerCase", "parentElement", "handleClick", "target", "anchor", "location", "isAnchor", "isDownloadLink", "download", "isNewTab", "metaKey", "ctrlKey", "confirm", "current", "stopPropagation", "document", "push", "leaveWithoutSavingModalSlug", "LeaveWithoutSaving", "t0", "$", "_c", "disablePreventLeave", "t1", "onConfirm", "onPrevent", "undefined", "modalSlug", "closeModal", "openModal", "useModal", "modified", "useFormModified", "isValid", "useForm", "user", "useAuth", "hasAccepted", "setHasAccepted", "React", "useState", "prevent", "Boolean", "t2", "activeHref", "document", "activeElement", "href", "handlePrevent", "t3", "handleAccept", "t4", "onAccept", "usePreventLeave", "t5", "onCancel", "t6", "t7", "console", "error", "err", "handleConfirm", "_jsx", "LeaveWithoutSavingModal", "t", "useTranslation", "ConfirmationModal", "body", "cancelLabel", "confirmLabel", "heading", "c", "_c", "useEffect", "modalSlug", "baseClass", "t0", "$", "_c", "DocumentTakeOver", "handleBackToDashboard", "isActive", "onReadOnly", "closeModal", "openModal", "useModal", "t", "useTranslation", "startRouteTransition", "useRouteTransition", "clearRouteCache", "useRouteCache", "t1", "t2", "useEffect", "t3", "t4", "t5", "_jsx", "Modal", "className", "closeOnBlur", "slug", "children", "_jsxs", "buttonStyle", "id", "onClick", "size", "c", "_c", "useEffect", "isClientUserObject", "user", "modalSlug", "baseClass", "date", "formatDate", "day", "hour", "hour12", "minute", "month", "year", "DocumentLocked", "t0", "$", "_c", "handleGoBack", "isActive", "onReadOnly", "onTakeOver", "updatedAt", "user", "closeModal", "openModal", "useModal", "t", "useTranslation", "clearRouteCache", "useRouteCache", "startRouteTransition", "useRouteTransition", "t1", "t2", "useEffect", "t3", "t4", "t5", "isClientUserObject", "t6", "t7", "t8", "_jsx", "Modal", "className", "closeOnBlur", "onClose", "slug", "children", "_jsxs", "buttonStyle", "id", "onClick", "size", "c", "_c", "getTranslation", "React", "ViewDescription", "props", "$", "_c", "i18n", "useTranslation", "description", "t0", "_jsx", "className", "children", "getTranslation", "formatAdminURL", "useEffect", "useRef", "useState", "c", "_c", "usePathname", "formatAdminURL", "baseClass", "props", "_jsxs", "DefaultAccountIcon", "className", "height", "viewBox", "width", "xmlns", "_jsx", "cx", "cy", "d", "import_md5", "c", "_c", "GravatarAccountIcon", "$", "_c", "user", "useAuth", "hash", "md5", "email", "trim", "toLowerCase", "query", "URLSearchParams", "default", "r", "s", "toString", "t0", "t1", "_jsx", "alt", "className", "height", "src", "style", "borderRadius", "width", "Account", "$", "_c", "config", "t0", "useConfig", "admin", "t1", "routes", "t2", "avatar", "t3", "account", "accountRoute", "adminRoute", "user", "useAuth", "isOnAccountPage", "usePathname", "formatAdminURL", "path", "email", "t4", "_jsx", "DefaultAccountIcon", "active", "Symbol", "for", "GravatarAccountIcon", "c", "_c", "createContext", "use", "useState", "ActionsContext", "Actions", "setViewActions", "useActions", "ActionsProvider", "t0", "$", "children", "viewActions", "t1", "_jsx", "value", "c", "_c", "CloseMenuIcon", "_jsx", "className", "viewBox", "xmlns", "d", "MenuIcon", "_jsx", "className", "fill", "height", "viewBox", "width", "xmlns", "d", "baseClass", "props", "$", "_c", "Hamburger", "t", "useTranslation", "t0", "closeIcon", "t1", "isActive", "t2", "_jsxs", "className", "_jsx", "children", "title", "MenuIcon", "CloseMenuIcon", "ChevronIcon", "direction", "c", "_c", "getTranslation", "useRouter", "qs", "Fragment", "c", "_c", "getTranslation", "baseClass", "props", "$", "_c", "LocalizerLabel", "ariaLabel", "className", "useLocale", "locale", "i18n", "t", "useTranslation", "t0", "t1", "_jsxs", "join", "children", "_jsx", "getTranslation", "ChevronIcon", "baseClass", "LocalizerLabel", "props", "$", "_c", "Localizer", "className", "t0", "config", "useConfig", "localization", "router", "useRouter", "startRouteTransition", "useRouteTransition", "setLocaleIsLoading", "useLocaleLoading", "i18n", "useTranslation", "useLocale", "locales", "t1", "t2", "t3", "locale", "t4", "t5", "close", "_jsx", "PopupButtonList_exports", "PopupList", "ButtonGroup", "children", "localeOptionLabel", "localeOption", "getTranslation", "Button", "active", "code", "disabled", "onClick", "searchParams", "URLSearchParams", "url", "parse", "depth", "_jsxs", "Fragment", "Popup", "button", "horizontalAlign", "render", "usePathname", "PREFERENCE_KEYS", "React", "useEffect", "useRef", "NavContext", "React", "createContext", "hydrated", "navOpen", "navRef", "setNavOpen", "shouldAnimate", "useNav", "use", "getNavPreference", "getPreference", "preferredState", "PREFERENCE_KEYS", "NAV", "open", "NavProvider", "children", "initialIsOpen", "breakpoints", "l", "largeBreak", "m", "midBreak", "s", "smallBreak", "useWindowInfo", "pathname", "usePathname", "usePreferences", "useRef", "useState", "setShouldAnimate", "setHydrated", "useEffect", "current", "style", "overscrollBehavior", "timeout", "setTimeout", "clearTimeout", "_jsx", "value", "c", "_c", "PREFERENCE_KEYS", "baseClass", "props", "$", "_c", "NavToggler", "id", "children", "className", "t0", "tabIndex", "t", "useTranslation", "setPreference", "usePreferences", "navOpen", "setNavOpen", "useNav", "t1", "breakpoints", "useWindowInfo", "largeBreak", "t2", "t4", "t3", "t5", "t6", "PREFERENCE_KEYS", "open", "t7", "_jsx", "onClick", "type", "c", "_c", "getTranslation", "Fragment", "PayloadIcon", "fill", "fillFromProps", "_jsxs", "className", "height", "viewBox", "width", "xmlns", "_jsx", "d", "c", "_c", "createContext", "use", "useState", "useStepNav", "Context", "setStepNav", "stepNav", "StepNavProvider", "t0", "$", "children", "t1", "Symbol", "for", "t2", "_jsx", "value", "c", "_c", "useEffect", "SetStepNav", "t0", "$", "_c", "nav", "setStepNav", "useStepNav", "t1", "t2", "useEffect", "baseClass", "SetStepNav", "t0", "StepNav", "$", "className", "CustomIcon", "i18n", "useTranslation", "stepNav", "useStepNav", "t1", "config", "useConfig", "t2", "routes", "admin", "t", "t3", "_jsx", "Fragment", "_jsxs", "children", "Link", "href", "prefetch", "tabIndex", "title", "RenderCustomComponent", "CustomComponent", "PayloadIcon", "item", "i", "getTranslation", "label", "length", "isLast", "StepLabel", "baseClass", "AppHeader", "CustomAvatar", "CustomIcon", "t", "useTranslation", "Actions", "useActions", "config", "admin", "routes", "accountRoute", "localization", "adminRoute", "serverURL", "useConfig", "navOpen", "useNav", "useRef", "customControlsRef", "useState", "useEffect", "isScrollable", "checkIsScrollable", "el", "scrollable", "setIsScrollable", "scrollWidth", "addEventListener", "ActionComponents", "Object", "className", "_jsx", "_jsxs", "NavToggler", "tabIndex", "Hamburger", "StepNav", "ref", "Action", "i", "map", "ariaLabel", "href", "prefetch", "RenderCustomComponent", "CustomComponent", "Localizer", "baseClass", "props", "id", "actions", "buttonAriaLabel", "href", "onClick", "title", "titleAs", "_jsxs", "classes", "className", "_jsx", "buttonStyle", "el", "to", "c", "_c", "getTranslation", "useRouter", "formatAdminURL", "React", "baseClass", "drawerSlug", "$", "_c", "CopyLocaleData", "t0", "config", "useConfig", "localization", "routes", "admin", "code", "useLocale", "id", "collectionSlug", "globalSlug", "useDocumentInfo", "i18n", "t", "useTranslation", "modified", "toggleModal", "useModal", "copyDataFromLocale", "useServerFunctions", "router", "startRouteTransition", "useRouteTransition", "_temp", "t2", "locale_0", "localeOptionsWithoutCurrent", "localeOptions", "t3", "code_0", "l", "locale_1", "locales", "getLocaleLabel", "React", "copying", "setCopying", "useState", "toLocale", "setToLocale", "fromLocale", "setFromLocale", "t4", "t5", "t6", "overwriteExisting", "from", "to", "docID", "overrideData", "formatAdminURL", "adminRoute", "path", "error", "t8", "errorMessage", "ue", "translatedMessage", "copyLocaleData", "t7", "t9", "toast", "t10", "selectedOption", "t11", "selectedOption_0", "t12", "_jsxs", "PopupButtonList_exports", "children", "PopupList", "onClick", "Drawer", "className", "gutter", "_jsx", "DrawerHeader", "Header", "onClose", "Button", "buttonStyle", "disabled", "iconPosition", "size", "label", "name", "onChange", "options", "readOnly", "value", "SelectInput", "CheckboxField", "checked", "field", "locale", "c", "_c", "getTranslation", "useRouter", "useSearchParams", "formatAdminURL", "mergeListSearchAndWhere", "qs", "React", "useSearchParams", "qs", "createContext", "use", "useCallback", "useEffect", "useMemo", "useRef", "useState", "SelectAllStatus", "Context", "createContext", "count", "undefined", "getQueryParams", "additionalParams", "getSelectedIds", "selectAll", "selected", "Map", "selectedIDs", "setSelection", "id", "toggleAll", "totalDocs", "reduceActiveSelections", "ids", "key", "value", "push", "SelectionProvider", "children", "docs", "contextRef", "useRef", "user", "useAuth", "code", "locale", "useLocale", "setSelected", "useState", "rows", "forEach", "set", "setSelectAll", "setCount", "searchParams", "useSearchParams", "query", "useListQuery", "useCallback", "allAvailable", "_isLocked", "_userEditing", "shouldSelect", "size", "length", "doc", "find", "existingValue", "get", "isSelected", "newMap", "additionalWhereParams", "where", "parseSearchParams", "not_equals", "in", "and", "stringify", "addQueryPrefix", "useEffect", "some", "all", "_", "newCount", "useMemo", "current", "_jsx", "useSelection", "use", "c", "_c", "React", "baseClass", "ListSelection_v4", "t0", "$", "_c", "count", "ListActions", "SelectionActions", "t", "useTranslation", "t1", "_jsxs", "className", "children", "_jsx", "React", "Button", "props", "buttonStyle", "DeleteMany", "props", "$", "_c", "viewType", "t0", "collection", "modalPrefix", "slug", "trash", "permissions", "useAuth", "count", "selectAll", "selectedIDs", "toggleAll", "useSelection", "router", "useRouter", "searchParams", "clearRouteCache", "collectionPermissions", "collections", "hasDeletePermission", "delete", "selectingAll", "baseWhere", "parseSearchParams", "finalWhere", "and", "Array", "deletedAt", "t1", "stringify", "page", "addQueryPrefix", "_jsx", "React", "DeleteMany_v4", "children", "afterDelete", "search", "selections", "SelectAllStatus", "all", "ids", "where", "t", "useTranslation", "config", "routes", "serverURL", "useConfig", "locale", "code", "useLocale", "i18n", "openModal", "useModal", "setDeletePermanently", "confirmManyDeleteDrawerSlug", "useState", "handleDelete", "useCallback", "deletingOneCollection", "result", "relationTo", "Object", "collectionConfig", "whereConstraint", "url", "formatAdminURL", "apiRoute", "api", "path", "limit", "select", "mergeListSearchAndWhere", "deleteManyResponse", "deletePermanently", "requests", "headers", "patch", "body", "plural", "singular", "json", "deletedDocs", "length", "successKey", "ue", "toast", "success", "successLabel", "label", "errors", "message", "error", "deletedCount", "doc", "docs", "map", "_err", "labelString", "labelCount", "acc", "key", "slug_0", "collectionConfig_0", "value", "undefined", "totalCount", "getTranslation", "newLabel", "array", "index", "collectionLabel", "_jsxs", "ListSelectionButton", "className", "onClick", "ConfirmationModal", "Fragment", "Translation", "elements", "children_0", "i18nKey", "variables", "labelCount_0", "CheckboxInput", "checked", "id", "name", "e", "confirmingLabel", "heading", "modalSlug", "onConfirm", "c", "_c", "getTranslation", "formatAdminURL", "hasAutosaveEnabled", "hasDraftsEnabled", "React", "Fragment", "useEffect", "createContext", "use", "LivePreviewContext", "appIsReady", "breakpoint", "undefined", "breakpoints", "iframeRef", "isLivePreviewEnabled", "isLivePreviewing", "isPopupOpen", "isPreviewEnabled", "measuredDeviceSize", "height", "width", "openPopupWindow", "popupRef", "previewURL", "previewWindowType", "setAppIsReady", "setBreakpoint", "setHeight", "setIsLivePreviewing", "setLoadedURL", "setMeasuredDeviceSize", "setPreviewURL", "setPreviewWindowType", "setSize", "setToolbarPosition", "setURL", "setWidth", "setZoom", "size", "toolbarPosition", "x", "y", "typeofLivePreviewURL", "url", "zoom", "useLivePreviewContext", "usePreviewURL", "dequal", "formatAdminURL", "getAutosaveInterval", "hasDraftValidationEnabled", "reduceFieldsToValues", "qs", "React", "useDeferredValue", "useEffect", "useRef", "useState", "unflatten", "flatleyUnflatten", "reduceFieldsToValuesWithValidation", "fields", "ignoreDisableFormData", "state", "data", "valid", "Object", "keys", "forEach", "key", "disableFormData", "value", "baseClass", "minimumAnimationTime", "id", "collection", "global", "config", "routes", "useConfig", "docConfig", "lastUpdateTime", "mostRecentVersionIsAutosaved", "setMostRecentVersionIsAutosaved", "setUnpublishedVersionCount", "useDocumentInfo", "isValid", "setBackgroundProcessing", "submit", "useForm", "useAllFormFields", "modified", "useFormModified", "submitted", "locale", "code", "useLocale", "i18n", "t", "useTranslation", "interval", "getAutosaveInterval", "validateOnDraft", "hasDraftValidationEnabled", "saving", "useDeferredValue", "useState", "formState", "debouncedFormState", "queueTask", "useQueue", "useRef", "autosaveTimeoutRef", "useEffectEvent", "startTimestamp", "endTimestamp", "undefined", "setSaving", "stopAutoSaveIndicator", "url", "method", "entitySlug", "autosave", "depth", "draft", "formatAdminURL", "apiRoute", "api", "params", "globalDoc", "valid", "reduceFieldsToValuesWithValidation", "skipSubmission", "acceptValues", "action", "context", "getDocPermissions", "disableFormWhileProcessing", "disableSuccessStatus", "overrides", "result", "prev", "afterProcess", "beforeProcess", "didMount", "reduceFieldsToValues", "useEffect", "_", "updatedAt", "formData", "__", "previousDebouncedData", "prevFormData", "handleAutosave", "_jsxs", "className", "_jsx", "LeaveWithoutSaving", "React", "formatTimeToNow", "distance", "date", "getTranslation", "useRouter", "formatAdminURL", "Fragment", "useCallback", "useState", "baseClass", "props", "id", "buttonId", "collectionSlug", "onDelete", "redirectAfterDelete", "singularLabel", "title", "config", "routes", "adminRoute", "admin", "getEntityConfig", "useConfig", "setModified", "useForm", "useRouter", "router", "i18n", "t", "useTranslation", "useDocumentTitle", "startRouteTransition", "useRouteTransition", "openModal", "useModal", "modalSlug", "setDeletePermanently", "useState", "addDefaultError", "useCallback", "ue", "toast", "handleDelete", "url", "formatAdminURL", "apiRoute", "api", "res", "deletePermanently", "collectionConfig", "requests", "headers", "patch", "body", "stringify", "json", "status", "success", "label", "path", "errors", "error", "_err", "_jsxs", "Fragment", "onClick", "_jsx", "ConfirmationModal", "elements", "children", "i18nKey", "variables", "getTranslation", "trash", "className", "CheckboxInput", "checked", "name", "e", "confirmingLabel", "heading", "onConfirm", "getTranslation", "useRouter", "formatAdminURL", "hasDraftsEnabled", "qs", "React", "useCallback", "useMemo", "traverseForLocalizedFields", "fields", "field", "localized", "type", "blocks", "block", "tabs", "tab", "getTranslation", "setsAreEqual", "useCallback", "useMemo", "useState", "getLocaleOptions", "i18n", "localization", "locale", "locales", "label", "getTranslation", "value", "baseClass", "slug", "onConfirm", "t", "useTranslation", "toggleModal", "useModal", "setSelectedLocales", "useState", "localeOptions", "useMemo", "allLocales", "selectedLocales", "allLocalesSelected", "useCallback", "setsAreEqual", "localeValue", "handleToggleLocale", "prev", "l", "handleConfirm", "className", "gutter", "_jsx", "DrawerHeader", "Header", "onClose", "_jsxs", "Button", "buttonStyle", "disabled", "iconPosition", "id", "onClick", "size", "CheckboxInput", "checked", "count", "handleSelectAll", "includes", "locale_0", "DuplicateDocument", "id", "slug", "onDuplicate", "redirectAfterDuplicate", "selectLocales", "singularLabel", "router", "useRouter", "modified", "useFormModified", "openModal", "useModal", "code", "localeCode", "useLocale", "setModified", "useForm", "startRouteTransition", "useRouteTransition", "config", "localization", "routes", "admin", "adminRoute", "api", "apiRoute", "getEntityConfig", "useConfig", "collectionConfig", "collectionSlug", "i18n", "t", "useTranslation", "modalSlug", "drawerSlug", "isDuplicateByLocaleEnabled", "useMemo", "traverseForLocalizedFields", "fields", "handleDuplicate", "useCallback", "args", "selectedLocales", "hasSelectedLocales", "length", "queryParams", "locale", "headers", "language", "credentials", "res", "requests", "post", "formatAdminURL", "path", "stringify", "addQueryPrefix", "body", "JSON", "hasDraftsEnabled", "_status", "doc", "errors", "message", "json", "status", "toast", "success", "label", "getTranslation", "push", "error", "handleConfirmWithoutSaving", "buttonLabel", "_jsxs", "React", "Fragment", "_jsx", "PopupList", "Button", "onClick", "ConfirmationModal", "confirmLabel", "heading", "onConfirm", "SelectLocalesDrawer", "Fragment", "EyeIcon", "active", "className", "viewBox", "xmlns", "_jsxs", "_jsx", "cx", "cy", "d", "baseClass", "isLivePreviewing", "setIsLivePreviewing", "url", "livePreviewURL", "useLivePreviewContext", "t", "useTranslation", "_jsx", "className", "id", "onClick", "title", "type", "EyeIcon", "c", "_c", "useState", "LockIcon", "className", "fill", "height", "viewBox", "width", "xmlns", "_jsx", "d", "strokeLinecap", "strokeLinejoin", "stopOpacity", "baseClass", "t0", "$", "_c", "Locked", "className", "user", "hovered", "setHovered", "useState", "t", "useTranslation", "isClientUserObject", "t1", "t2", "t3", "t4", "Symbol", "t5", "userToUse", "t6", "_jsxs", "onMouseEnter", "onMouseLeave", "role", "tabIndex", "_jsx", "Tooltip", "children", "alignCaret", "position", "show", "getTranslation", "useRouter", "formatAdminURL", "qs", "Fragment", "useCallback", "PermanentlyDeleteButton", "props", "id", "buttonId", "collectionSlug", "onDelete", "redirectAfterDelete", "singularLabel", "title", "titleFromProps", "config", "routes", "admin", "adminRoute", "api", "serverURL", "getEntityConfig", "useConfig", "collectionConfig", "router", "useRouter", "i18n", "t", "useTranslation", "useDocumentTitle", "startRouteTransition", "useRouteTransition", "openModal", "useModal", "modalSlug", "addDefaultError", "useCallback", "toast", "error", "handleDelete", "url", "formatAdminURL", "apiRoute", "path", "stringify", "trash", "where", "and", "equals", "deletedAt", "exists", "addQueryPrefix", "res", "requests", "delete", "headers", "language", "json", "status", "success", "label", "getTranslation", "message", "push", "errors", "forEach", "_jsxs", "Fragment", "_jsx", "Button", "buttonStyle", "onClick", "ConfirmationModal", "body", "Translation", "elements", "1", "children", "i18nKey", "variables", "confirmingLabel", "heading", "onConfirm", "c", "_c", "ExternalLinkIcon", "props", "className", "_jsx", "viewBox", "xmlns", "d", "baseClass", "useTranslation", "PreviewButton", "props", "$", "_c", "previewURL", "usePreviewURL", "t", "t0", "_jsx", "className", "href", "id", "target", "title", "ExternalLinkIcon", "getTranslation", "formatAdminURL", "hasAutosaveEnabled", "hasLocalizeStatusEnabled", "hasScheduledPublishEnabled", "qs", "React", "useCallback", "useEffect", "useState", "getTranslation", "formatAdminURL", "qs", "React", "useCallback", "useMemo", "baseClass", "appearance", "BeforeTable", "columns", "data", "activeColumns", "col", "filter", "_jsxs", "className", "cellPadding", "cellSpacing", "_jsx", "id", "row", "rowIndex", "colIndex", "accessor", "replace", "getTranslation", "buildUpcomingColumns", "dateFormat", "deleteHandler", "docs", "i18n", "localization", "supportedTimezones", "t", "columns", "accessor", "active", "field", "name", "type", "Heading", "_jsx", "renderedCells", "map", "doc", "input", "_jsxs", "Pill", "pillStyle", "size", "id", "formatDate", "date", "waitUntil", "pattern", "timezone", "find", "value", "label", "push", "locale", "matchedLocale", "locales", "code", "getTranslation", "Button", "buttonStyle", "className", "icon", "onClick", "e", "preventDefault", "tooltip", "baseClass", "buildUpcomingColumns", "defaultLocaleOption", "label", "ScheduleDrawer", "slug", "defaultType", "schedulePublishConfig", "toggleModal", "useModal", "config", "admin", "dateFormat", "timezones", "defaultTimezone", "localization", "routes", "useConfig", "id", "collectionSlug", "globalSlug", "useDocumentInfo", "title", "useDocumentTitle", "i18n", "t", "useTranslation", "schedulePublish", "useServerFunctions", "React", "type", "setType", "useState", "date", "setDate", "timezone", "setLocale", "setTimezone", "locale", "modalTitle", "setProcessing", "upcoming", "setUpcoming", "deleteHandlerRef", "setUpcomingColumns", "userTimezone", "Intl", "DateTimeFormat", "localeOptions", "code", "getTranslation", "value", "options", "fetchUpcoming", "query", "sort", "where", "and", "taskSlug", "waitUntil", "push", "docs", "requests", "apiRoute", "path", "body", "stringify", "headers", "res", "json", "deleteHandler", "supportedTimezones", "api", "ue", "success", "err", "console", "error", "handleSave", "localeToPublish", "doc", "relationTo", "undefined", "global", "err_0", "useMemo", "displayedValue", "DateWithOriginalTz", "TZDateMini", "TZDate", "DateWithUserTz", "dateWithTimezone", "transpose", "modifiedDate", "incomingDate", "onChangeDate", "tzDateWithUTC", "dateToUserTz", "dateWithTimezone_0", "useEffect", "fetchInitialUpcoming", "minTime", "isToday", "startOfDay", "_jsxs", "Drawer", "className", "gutter", "Header", "_jsx", "DrawerCloseButton", "onClick", "Gutter", "FieldLabel", "Radio", "isSelected", "onChange", "option", "DatePickerField", "endOfToday", "maxTime", "minDate", "e", "pickerAppearance", "readOnly", "processing", "timeFormat", "timeIntervals", "selectedTimezone", "ReactSelect", "Button", "buttonStyle", "disabled", "ShimmerEffect", "Banner", "Table", "length", "appearance", "columns", "data", "PublishButton", "label", "labelProp", "id", "collectionSlug", "globalSlug", "hasPublishedDoc", "hasPublishPermission", "setHasPublishedDoc", "setMostRecentVersionIsAutosaved", "setUnpublishedVersionCount", "unpublishedVersionCount", "uploadStatus", "useDocumentInfo", "config", "getEntityConfig", "useConfig", "submit", "useForm", "modified", "useFormModified", "editDepth", "useEditDepth", "code", "localeCode", "useLocale", "isModalOpen", "toggleModal", "useModal", "drawerSlug", "localization", "routes", "api", "i18n", "t", "useTranslation", "entityConfig", "React", "useMemo", "hasNewerVersions", "canPublish", "scheduledPublishEnabled", "hasScheduledPublishEnabled", "hasAutosave", "hasAutosaveEnabled", "canSchedulePublish", "Boolean", "hasLocalizedFields", "setHasLocalizedFields", "useState", "useEffect", "hasLocalizedField", "traverseForLocalizedFields", "fields", "isSpecificLocalePublishEnabled", "disabled", "useOperation", "saveDraft", "useCallback", "params", "stringify", "depth", "draft", "locale", "addQueryPrefix", "action", "method", "formatAdminURL", "apiRoute", "path", "overrides", "_status", "skipValidation", "useHotkey", "cmdCtrlKey", "keyCodes", "e", "preventDefault", "stopPropagation", "localizeStatusEnabled", "hasLocalizeStatusEnabled", "publish", "publishAllLocales", "publishSpecificLocale", "pathSegment", "isDefaultPublishAll", "defaultLocalePublishOption", "activeLocale", "locales", "find", "activeLocaleLabel", "getTranslation", "_jsxs", "Fragment", "_jsx", "FormSubmit", "buttonId", "enableSubMenu", "onClick", "size", "SubMenuPopupContent", "close", "PopupList", "ButtonGroup", "Button", "undefined", "type", "ScheduleDrawer", "defaultType", "schedulePublishConfig", "versions", "drafts", "schedulePublish", "slug", "getTranslation", "useRouter", "formatAdminURL", "qs", "Fragment", "useCallback", "useState", "baseClass", "props", "id", "buttonId", "collectionSlug", "onRestore", "redirectAfterRestore", "singularLabel", "title", "config", "routes", "adminRoute", "admin", "serverURL", "getEntityConfig", "useConfig", "router", "useRouter", "i18n", "t", "useTranslation", "useDocumentTitle", "startRouteTransition", "useRouteTransition", "openModal", "useModal", "modalSlug", "setRestoreAsPublished", "useState", "addDefaultError", "restoreAsPublished", "ue", "toast", "handleRestore", "useCallback", "url", "formatAdminURL", "apiRoute", "api", "path", "trash", "where", "and", "deletedAt", "addQueryPrefix", "body", "collectionConfig", "res", "requests", "patch", "JSON", "headers", "json", "status", "success", "label", "errors", "error", "_jsxs", "Fragment", "buttonStyle", "onClick", "_jsx", "ConfirmationModal", "elements", "children", "i18nKey", "variables", "getTranslation", "versions", "className", "CheckboxInput", "checked", "name", "e", "confirmingLabel", "heading", "onConfirm", "useRef", "SaveButton", "label", "labelProp", "uploadStatus", "useDocumentInfo", "t", "useTranslation", "submit", "useForm", "modified", "useFormModified", "ref", "useRef", "editDepth", "useEditDepth", "disabled", "useOperation", "useHotkey", "cmdCtrlKey", "keyCodes", "e", "preventDefault", "stopPropagation", "current", "click", "_jsx", "FormSubmit", "buttonId", "onClick", "handleSubmit", "size", "type", "formatAdminURL", "useCallback", "useRef", "baseClass", "SaveDraftButton", "props", "config", "routes", "api", "useConfig", "id", "collectionSlug", "globalSlug", "setUnpublishedVersionCount", "uploadStatus", "useDocumentInfo", "modified", "useFormModified", "code", "locale", "useLocale", "ref", "useRef", "editDepth", "useEditDepth", "t", "useTranslation", "submit", "useForm", "disabled", "useOperation", "saveDraft", "useCallback", "search", "action", "method", "formatAdminURL", "apiRoute", "path", "overrides", "_status", "skipValidation", "count", "useHotkey", "cmdCtrlKey", "keyCodes", "e", "preventDefault", "stopPropagation", "current", "click", "_jsx", "FormSubmit", "buttonId", "buttonStyle", "className", "onClick", "size", "type", "formatAdminURL", "React", "useCallback", "baseClass", "id", "collectionSlug", "docPermissions", "globalSlug", "hasPublishedDoc", "incrementVersionCount", "isTrashed", "setMostRecentVersionIsAutosaved", "setUnpublishedVersionCount", "unpublishedVersionCount", "useDocumentInfo", "toggleModal", "useModal", "config", "routes", "useConfig", "resetForm", "reset", "useForm", "locale", "code", "useLocale", "i18n", "t", "useTranslation", "statusToRender", "displayStatusKey", "useCallback", "performAction", "url", "method", "formatAdminURL", "apiRoute", "api", "then", "requests", "publishedDoc", "headers", "res", "body", "JSON", "res_0", "data", "json", "toast", "message", "json_0", "ue", "errors", "error", "_jsx", "className", "title", "_jsxs", "canUpdate", "React", "buttonStyle", "revertModalSlug", "onClick", "ConfirmationModal", "confirmingLabel", "heading", "modalSlug", "onConfirm", "getTranslation", "formatAdminURL", "qs", "React", "useCallback", "useEffect", "useState", "UnpublishButton", "label", "labelProp", "id", "collectionSlug", "data", "dataFromProps", "globalSlug", "hasPublishedDoc", "hasPublishPermission", "incrementVersionCount", "isTrashed", "setHasPublishedDoc", "setMostRecentVersionIsAutosaved", "setUnpublishedVersionCount", "useDocumentInfo", "toggleModal", "useModal", "config", "getEntityConfig", "useConfig", "reset", "resetForm", "useForm", "code", "localeCode", "localeLabel", "useLocale", "unpublishAll", "setUnpublishAll", "useState", "hasLocalizedFields", "setHasLocalizedFields", "unPublishModalSlug", "routes", "api", "serverURL", "i18n", "t", "useTranslation", "entityConfig", "React", "useMemo", "unpublish", "useCallback", "url", "method", "queryString", "stringify", "depth", "locale", "undefined", "unpublishAllLocales", "addQueryPrefix", "formatAdminURL", "apiRoute", "path", "res", "requests", "body", "JSON", "_status", "headers", "language", "status", "toast", "success", "json", "errors", "message", "error", "catch", "useEffect", "hasLocalizedField", "traverseForLocalizedFields", "fields", "drafts", "versions", "hasDraftsEnabled", "canUnpublish", "canUnpublishCurrentLocale", "isLocalizeStatusEnabled", "localizeStatus", "isExperimentalEnabled", "experimental", "getTranslation", "_jsxs", "Fragment", "_jsx", "PopupList", "Button", "onClick", "ConfirmationModal", "confirmingLabel", "heading", "modalSlug", "onConfirm", "baseClass", "UnpublishButton", "props", "$", "_c", "DocumentControls", "id", "slug", "BeforeDocumentControls", "customComponents", "data", "disableActions", "disableCreate", "EditMenuItems", "hasSavePermission", "isAccountView", "isEditing", "isInDrawer", "isTrashed", "onDelete", "onDrawerCreateNew", "onDuplicate", "onRestore", "onTakeOver", "permissions", "readOnlyForIncomingUser", "redirectAfterDelete", "redirectAfterDuplicate", "redirectAfterRestore", "user", "CustomPreviewButton", "PreviewButton", "PublishButton", "SaveButton", "CustomSaveButton", "SaveDraftButton", "Status", "CustomStatus", "CustomUnpublishButton", "i18n", "t", "useTranslation", "useEditDepth", "editDepth", "config", "getEntityConfig", "useConfig", "collectionConfig", "globalConfig", "isLivePreviewEnabled", "useLivePreviewContext", "t1", "admin", "localization", "routes", "dateFormat", "adminRoute", "updatedAt", "setUpdatedAt", "React", "useState", "processing", "setCreatedAt", "useFormProcessing", "t3", "t4", "formatDate", "date", "pattern", "createdAt", "useEffect", "hasCreatePermission", "create", "hasDeletePermission", "showDotMenu", "unsavedDraftWithValidations", "globalHasDraftsEnabled", "hasDraftsEnabled", "collectionHasDraftsEnabled", "hasAutosaveEnabled", "collectionAutosaveEnabled", "globalAutosaveEnabled", "autosaveEnabled", "showSaveDraftButton", "showCopyToLocale", "showFolderMetaIcon", "showLockedMetaIcon", "Gutter", "className", "children", "_jsxs", "_jsx", "Locked", "folders", "folderCollectionSlug", "folderFieldName", "getTranslation", "Fragment", "RenderCustomComponent", "CustomComponent", "collection", "global", "timestamps", "title", "LivePreviewToggler", "Fallback", "CustomSaveDraftButton", "CustomPublishButton", "PermanentlyDeleteButton", "buttonId", "collectionSlug", "singularLabel", "labels", "singular", "buttonStyle", "onClick", "size", "type", "Popup", "button", "disabled", "initializing", "horizontalAlign", "verticalAlign", "PopupButtonList_exports", "ButtonGroup", "CopyLocaleData", "Button", "href", "_Fragment", "DuplicateDocument", "selectLocales", "useAsTitle", "htmlStartTagReg", "htmlTagWithNameReg", "htmlTagReg", "htmlImgTagReg", "htmlVideoTagReg", "HtmlDiff", "config", "leastCommonLength", "Infinity", "matchedBlockList", "newTokens", "oldTokens", "operationList", "sideBySideContents", "unifiedContent", "constructor", "oldHtml", "newHtml", "classNames", "createBlock", "createInline", "deleteBlock", "deleteInline", "greedyBoundary", "greedyMatch", "minMatchedSize", "tokenizeByCharacter", "trim", "equalSequence", "content", "replace", "match", "name", "tagNameLength", "length", "slice", "tokenizeFn", "tokenizeByWord", "getMatchedBlockList", "getOperationList", "computeBestMatchedBlock", "oldStart", "oldEnd", "newStart", "newEnd", "bestMatchedBlock", "i", "len", "Math", "min", "ret", "slideBestMatchedBlock", "size", "j", "computeMatchedBlockList", "matchBlock", "push", "dressUpBlockTag", "type", "token", "dressUpDiffContent", "tokens", "tokensLength", "result", "textStartIndex", "isMatchElement", "includes", "isMatchExplicitlyDisabled", "isHtmlTag", "dressUpText", "newToken", "dressupMatchEnabledHtmlTag", "dressUpInlineTag", "tagName", "groups", "matchType", "text", "join", "n1", "n2", "start", "end", "e1", "e2", "commonLength", "floor", "unshift", "walkIndexOld", "walkIndexNew", "matchedBlock", "isOldStartIndexMatched", "isNewStartIndexMatched", "operationBase", "Object", "assign", "maxIndexOld", "maxIndexNew", "tailOperationBase", "isOldFinished", "isNewFinished", "addA", "addB", "maxSize", "continuousSize", "html", "currentPos", "tagRegex", "exec", "beforeTag", "substring", "index", "char", "remaining", "getSideBySideContents", "undefined", "forEach", "operation", "deletedTokens", "equalTokens", "equalString", "startTagMatch", "console", "error", "String", "getUnifiedContent", "olds", "news", "createdTokens", "createIndex", "deleteIndex", "deletedToken", "matchTagResultD", "some", "item", "splice", "isTagInNewFind", "tempCreateIndex", "createdToken", "matchTagResultC", "isEnd", "baseClass", "fromHTML", "toHTML", "tokenizeByCharacter", "diffHTML", "HtmlDiff", "oldHTML", "newHTML", "From", "getSideBySideContents", "className", "dangerouslySetInnerHTML", "To", "_jsx", "useEffect", "createContext", "use", "useEffect", "useRef", "ClickOutsideContext", "ClickOutsideProvider", "children", "listeners", "Set", "handleClick", "event", "current", "forEach", "handler", "ref", "contains", "target", "document", "addEventListener", "removeEventListener", "_jsx", "value", "register", "listener", "add", "unregister", "delete", "useClickOutsideContext", "context", "Error", "useClickOutside", "ref", "handler", "enabled", "register", "unregister", "useClickOutsideContext", "useEffect", "current", "listener", "c", "_c", "useState", "c", "_c", "getTranslation", "useRouter", "useSearchParams", "combineWhereConstraints", "formatAdminURL", "mergeListSearchAndWhere", "unflatten", "qs", "React", "useCallback", "useEffect", "useMemo", "useState", "Submit", "t0", "$", "baseClass", "action", "disabled", "submit", "useForm", "t", "useTranslation", "t1", "save", "t2", "_jsx", "FormSubmit", "className", "children", "_c", "PublishButton", "method", "overrides", "SaveDraftButton", "buttonStyle", "collection", "fields", "labels", "singular", "drawerSlug", "count", "onSuccessFromProps", "ids", "onSuccess", "selectAll", "selectedFields", "setSelectedFields", "where", "permissions", "user", "useAuth", "useLocale", "closeModal", "useModal", "config", "apiRoute", "routes", "useConfig", "getFormState", "useServerFunctions", "i18n", "abortFormStateRef", "setIsInitializing", "router", "useRef", "collectionPermissions", "searchParams", "useSearchParams", "acc", "option", "select", "useMemo", "unflatten", "onChange", "useCallback", "submitted", "formState", "state", "collectionSlug", "docPermissions", "docPreferences", "prevFormState", "operation", "schemaPath", "useEffect", "abortAndIgnore", "abortFormState", "queryString", "whereConstraints", "queryWithSearch", "mergeListSearchAndWhere", "search", "parseSearchParams", "id", "locale", "stringify", "combineWhereConstraints", "addQueryPrefix", "replace", "qs", "_r", "page", "onFieldSelect", "dispatchFields", "selected", "acc_0", "option_0", "slug", "skipValidation", "DocumentInfoProvider", "currentEditor", "hasPublishedDoc", "initialData", "isLocked", "lastUpdateTime", "mostRecentVersionIsAutosaved", "unpublishedVersionCount", "OperationContext", "versionCount", "value", "_jsxs", "plural", "getTranslation", "onClick", "type", "Form", "isInitializing", "FieldSelect", "option_1", "i", "field", "path", "RenderField", "clientFieldConfig", "indexPath", "parentPath", "parentSchemaPath", "React", "versions", "formatAdminURL", "length", "baseClass", "props", "$", "_c", "EditMany", "count", "selectAll", "selectedIDs", "toggleAll", "useSelection", "t0", "t1", "SelectAllStatus", "t2", "_jsx", "EditMany_v4", "ids", "onSuccess", "collection", "modalPrefix", "where", "permissions", "useAuth", "openModal", "useModal", "t", "useTranslation", "selectedFields", "setSelectedFields", "useState", "collectionPermissions", "collections", "drawerSlug", "for", "t3", "t4", "_jsxs", "className", "join", "children", "ListSelectionButton", "onClick", "EditDepthProvider", "Header", "slug", "c", "_c", "FullscreenModal", "props", "$", "_c", "currentDepth", "useEditDepth", "t0", "_jsx", "Modal", "closeOnBlur", "style", "zIndex", "c", "_c", "React", "GenerateConfirmation", "props", "$", "_c", "highlightField", "setKey", "id", "useDocumentInfo", "toggleModal", "useModal", "t", "useTranslation", "modalSlug", "t0", "toast", "success", "handleGenerate", "t1", "t2", "_jsxs", "React", "Fragment", "children", "_jsx", "Button", "buttonStyle", "onClick", "size", "ConfirmationModal", "body", "Translation", "elements", "1", "_temp", "i18nKey", "heading", "onConfirm", "c", "_c", "useEffect", "HydrateAuthProvider", "t0", "$", "_c", "permissions", "setPermissions", "useAuth", "t1", "t2", "useEffect", "getTranslation", "validateWhereQuery", "React", "Fragment", "useEffect", "useRef", "useState", "baseClass", "ariaLabel", "className", "noBackground", "_jsxs", "orientation", "useMemo", "baseClass", "ReactSelect", "supportedFieldTypes", "collectionSlug", "fields", "i18n", "t", "useTranslation", "permissions", "useAuth", "fieldPermissions", "useMemo", "reduceFieldsToOptions", "query", "refineListData", "useListQuery", "groupByFieldName", "groupBy", "replace", "field", "_jsxs", "reducedFields", "className", "_jsx", "id", "onClick", "type", "option", "inputValue", "filterOption", "isClearable", "isMulti", "v", "onChange", "value", "field_0", "options", "groupByField", "label", "SelectInput", "name", "value_0", "path", "readOnly", "getTranslation", "formatAdminURL", "transformColumnsToPreferences", "transformColumnsToSearchParams", "Fragment", "useCallback", "useMemo", "c", "_c", "getTranslation", "PeopleIcon", "className", "_jsx", "fill", "height", "viewBox", "width", "xmlns", "d", "strokeLinecap", "baseClass", "QueryPresetToggler", "t0", "$", "_c", "activePreset", "openPresetListDrawer", "resetPreset", "i18n", "t", "useTranslation", "getEntityConfig", "useConfig", "t1", "presetsConfig", "t2", "t3", "t4", "_jsx", "Pill", "className", "id", "onClick", "pillStyle", "size", "_jsxs", "children", "PeopleIcon", "isShared", "getTranslation", "title", "e", "stopPropagation", "e_0", "onKeyDown", "role", "tabIndex", "XIcon", "confirmDeletePresetModalSlug", "queryPresetsSlug", "baseClass", "activePreset", "collectionSlug", "queryPresetPermissions", "modified", "query", "refineListData", "setModified", "setQueryModified", "useListQuery", "i18n", "t", "useTranslation", "openModal", "useModal", "config", "routes", "apiRoute", "getEntityConfig", "useConfig", "PresetDocumentDrawer", "openDrawer", "openDocumentDrawer", "useDocumentDrawer", "id", "CreateNewPresetDrawer", "closeDrawer", "openCreateNewDrawer", "filterOptions", "useMemo", "isTemp", "relatedCollection", "ListDrawer", "openListDrawer", "collectionSlugs", "handlePresetChange", "useCallback", "preset", "transformColumnsToSearchParams", "columns", "groupBy", "where", "resetQueryPreset", "handleDeletePreset", "formatAdminURL", "path", "method", "res", "then", "json", "ue", "status", "toast", "success", "presetConfig", "label", "getTranslation", "title", "errors", "error", "saveCurrentChanges", "body", "stringify", "transformColumnsToPreferences", "credentials", "headers", "hasModifiedPreset", "Fragment", "className", "_jsxs", "_jsx", "QueryPresetToggler", "openPresetListDrawer", "PlusIcon", "icon", "onClick", "size", "ListSelectionButton", "type", "isShared", "delete", "initialData", "onSave", "doc", "closeCreateNewDrawer", "redirectAfterCreate", "ConfirmationModal", "elements", "children", "i18nKey", "variables", "labels", "confirmingLabel", "heading", "modalSlug", "onDuplicate", "allowCreate", "disableQueryPresets", "onSelect", "closeListDrawer", "useEffect", "useRef", "useState", "baseClass", "SearchFilter", "props", "handleChange", "initialParams", "label", "searchQueryParam", "searchParam", "search", "previousSearch", "useRef", "useEffect", "debouncedSearch", "shouldUpdateState", "current", "setSearch", "_jsx", "className", "id", "e", "onChange", "placeholder", "type", "baseClass", "SearchBar", "Actions", "className", "label", "onSearchChange", "searchQueryParam", "_jsxs", "Boolean", "_jsx", "SearchFilter", "handleChange", "length", "getTranslation", "dequal", "transformWhereQuery", "validateWhereQuery", "React", "useMemo", "useCallback", "useEffect", "useState", "getTranslation", "baseClass", "DateFilter", "t0", "disabled", "field", "t1", "onChange", "value", "admin", "date", "i18n", "t", "useTranslation", "_jsx", "className", "children", "DatePickerField", "placeholder", "getTranslation", "readOnly", "c", "_c", "getTranslation", "React", "baseClass", "props", "$", "_c", "NumberFilter", "disabled", "field", "onChange", "operator", "value", "admin", "hasMany", "i18n", "t", "useTranslation", "t1", "isMulti", "t2", "valueToRender", "setValueToRender", "React", "t3", "selectedOption", "newValue", "isArray", "_temp", "onSelect", "t4", "t5", "_temp2", "t6", "placeholder", "getTranslation", "isClearable", "isCreatable", "isSortable", "numberOnly", "options", "className", "e", "type", "option", "val", "index", "id", "label", "toString", "formatAdminURL", "qs", "React", "useCallback", "useEffect", "useReducer", "useState", "getTranslation", "reduceToIDs", "options", "reduce", "ids", "option", "id", "optionsReducer", "state", "action", "type", "collection", "data", "hasMultipleRelations", "i18n", "relation", "labelKey", "admin", "useAsTitle", "loadedIDs", "docs", "doc", "indexOf", "push", "label", "value", "newOptions", "optionsToAddTo", "find", "optionGroup", "labels", "plural", "newSubOptions", "relationTo", "undefined", "required", "t", "optionsReducer_default", "baseClass", "optionsReducer", "maxResultsPerRequest", "props", "disabled", "field", "admin", "hasMany", "filterOptions", "onChange", "value", "placeholder", "isSortable", "config", "routes", "getEntityConfig", "useConfig", "relationTo", "hasMultipleRelations", "Array", "isArray", "options", "setSearch", "dispatchOptions", "useReducer", "debouncedSearch", "useDebounce", "search", "setErrorLoading", "errorLoading", "useState", "i18n", "t", "useTranslation", "locale", "useLocale", "relationSlugs", "relation", "loadedRelationships", "hasLoadedAll", "nextPage", "addOptions", "useCallback", "data", "relation_0", "type", "collection", "abortController", "relationSlug", "loadedRelationship", "fieldToSearch", "where", "query", "depth", "limit", "page", "select", "push", "response", "formatAdminURL", "apiRoute", "api", "path", "addQueryPrefix", "credentials", "headers", "data_0", "docs", "length", "e", "setHasLoadedFirstOptions", "handleScrollToBottom", "React", "relationshipToLoad", "current", "next", "loadOptions", "abortController_0", "findOptionsByValue", "matchedOption", "forEach", "opt", "subOpt", "some", "val", "opt_0", "valueWithRelation", "opt_1", "subOpt_0", "matchedOption_0", "opt_2", "undefined", "handleInputChange", "relationSlugs_0", "input", "id", "relation_2", "addOptionByID", "response_0", "console", "useEffect", "relations", "abortControllers", "abortController_1", "controller", "abort", "hasLoadedFirstOptions", "matchedOptions", "option", "i", "valueWithRelation_0", "classes", "_jsx", "className", "isMulti", "selected", "option_0", "onInputChange", "onMenuScrollToBottom", "c", "_c", "getTranslation", "React", "Select", "t0", "$", "_c", "disabled", "field", "t1", "isClearable", "onChange", "operator", "options", "optionsFromProps", "value", "admin", "t2", "placeholder", "i18n", "useTranslation", "t3", "formatOptions", "setOptions", "React", "useState", "t4", "Symbol", "for", "isMulti", "includes", "valueToRender", "Array", "isArray", "t5", "val", "matchingOption", "find", "option", "label", "getTranslation", "map", "option_0", "matchingOption_0", "selectedOption", "newValue", "_temp", "onSelect", "t6", "t7", "useEffect", "t8", "t9", "t10", "option_2", "_jsx", "ReactSelect", "option_1", "c", "_c", "React", "baseClass", "props", "$", "_c", "Text", "disabled", "field", "onChange", "operator", "value", "hasMany", "t", "useTranslation", "t1", "isMulti", "t2", "valueToRender", "setValueToRender", "React", "t3", "selectedOption", "newValue", "isArray", "_temp", "onSelect", "t4", "t5", "_temp2", "t6", "ReactSelect", "isClearable", "isCreatable", "isSortable", "options", "placeholder", "className", "e", "type", "option", "val", "index", "id", "label", "toString", "DefaultFilter", "booleanSelect", "disabled", "filterOptions", "internalField", "onChange", "operator", "options", "value", "includes", "field", "type", "_jsx", "Select", "isClearable", "DateFilter", "NumberFilter", "RelationshipFilter", "Text", "getOperatorValueTypes", "fieldType", "all", "contains", "equals", "exists", "greater_than", "greater_than_equal", "in", "intersects", "less_than", "less_than_equal", "like", "near", "not_equals", "not_in", "not_like", "within", "baseClass", "props", "addCondition", "andIndex", "fieldPath", "filterOptions", "operator", "orIndex", "reducedFields", "removeCondition", "RenderedFilter", "updateCondition", "value", "t", "useTranslation", "field", "reducedField", "find", "debouncedValue", "setInternalValue", "useDebounce", "internalValue", "valueOptions", "label", "updateValue", "useEffectEvent", "debouncedValue_0", "type", "useEffect", "disabled", "field_0", "handleFieldChange", "useCallback", "undefined", "option", "operator_0", "operatorValueTypes", "getOperatorValueTypes", "validOperatorValue", "isValidValue", "className", "_jsxs", "_jsx", "ReactSelect", "inputValue", "option_0", "filterOption", "isClearable", "onChange", "field_1", "options", "filter", "handleOperatorChange", "operators", "o", "DefaultFilter", "booleanSelect", "internalField", "Button", "buttonStyle", "icon", "iconStyle", "onClick", "field_2", "round", "baseClass", "fieldTypeConditions", "collectionPluralLabel", "collectionSlug", "fields", "renderedFilters", "resolvedFilterOptions", "props", "i18n", "t", "useTranslation", "permissions", "useAuth", "fieldPermissions", "useMemo", "reduceFieldsToOptions", "handleWhereChange", "query", "useListQuery", "conditions", "whereFromSearch", "validateWhereQuery", "transformedWhere", "transformWhereQuery", "React", "andIndex", "field", "orIndex", "relation", "newConditions", "defaultOperator", "and", "String", "value", "updateCondition", "operator", "orIndex_0", "existingCondition", "andIndex_0", "validOperator", "getValidFieldOperators", "existingValue", "field_0", "newRowCondition", "dequal", "newConditions_0", "removeCondition", "orIndex_1", "newConditions_1", "andIndex_1", "splice", "length", "className", "_jsxs", "_jsx", "or", "orIndex_2", "_", "andIndex_2", "isArray", "condition", "fieldPath", "Condition", "addCondition", "filterOptions", "reducedFields", "RenderedFilter", "Button", "buttonStyle", "icon", "iconPosition", "iconStyle", "onClick", "field_1", "field_2", "fieldAffectsData", "flattenTopLevelFields", "getTextFieldsToBeSearched", "listSearchableFields", "fields", "i18n", "flattenedFields", "moveSubFieldsToTop", "searchableFieldNames", "Set", "matchingFields", "field", "has", "name", "push", "delete", "baseClass", "beforeActions", "collectionConfig", "collectionSlug", "disableQueryPresets", "enableColumns", "enableFilters", "enableSort", "listMenuItems", "activePreset", "queryPreset", "queryPresetPermissions", "renderedFilters", "resolvedFilterOptions", "props", "handleSearchChange", "query", "useListQuery", "useUseTitleField", "titleField", "i18n", "t", "useTranslation", "breakpoints", "useWindowInfo", "getTranslation", "searchLabel", "listSearchableFields", "getTextFieldsToBeSearched", "searchLabelTranslated", "label", "hasWhereParam", "useRef", "validateWhereQuery", "shouldInitializeWhereOpened", "useEffect", "visibleDrawer", "current", "setVisibleDrawer", "placeholderText", "field", "i", "reduce", "length", "className", "_jsx", "QueryPresetBar", "React", "Actions", "smallBreak", "ChevronIcon", "icon", "id", "onClick", "pillStyle", "size", "Pill", "Popup", "button", "horizontalAlign", "verticalAlign", "PopupButtonList_exports", "PopupList", "i_0", "Fragment", "item", "Boolean", "onSearchChange", "searchQueryParam", "search", "height", "ColumnSelector", "AnimateHeight", "WhereBuilder", "collectionPluralLabel", "fields", "admin", "GroupByBuilder", "c", "_c", "Fragment", "c", "_c", "React", "getTranslation", "useRouter", "useSearchParams", "combineWhereConstraints", "formatAdminURL", "mergeListSearchAndWhere", "qs", "React", "useCallback", "PublishManyDrawerContent", "props", "collection", "slug", "labels", "plural", "singular", "drawerSlug", "ids", "onSuccess", "selectAll", "where", "clearRouteCache", "useRouteCache", "config", "routes", "api", "useConfig", "code", "locale", "useLocale", "router", "useRouter", "searchParams", "useSearchParams", "i18n", "t", "useTranslation", "addDefaultError", "useCallback", "toast", "error", "queryString", "React", "useMemo", "whereConstraints", "_status", "not_equals", "push", "queryWithSearch", "mergeListSearchAndWhere", "collectionConfig", "search", "get", "parseSearchParams", "id", "in", "stringify", "select", "combineWhereConstraints", "addQueryPrefix", "handlePublish", "url", "formatAdminURL", "apiRoute", "path", "requests", "patch", "body", "JSON", "headers", "language", "then", "res", "json", "deletedDocs", "docs", "length", "successLabel", "status", "success", "count", "label", "getTranslation", "errors", "message", "description", "map", "join", "replace", "page", "undefined", "forEach", "_jsx", "ConfirmationModal", "cancelLabel", "confirmingLabel", "confirmLabel", "heading", "modalSlug", "onConfirm", "PublishMany", "props", "$", "_c", "count", "selectAll", "selectedIDs", "toggleAll", "useSelection", "t0", "t1", "SelectAllStatus", "AllAvailable", "t2", "_jsx", "PublishMany_v4", "ids", "onSuccess", "collection", "modalPrefix", "where", "slug", "versions", "undefined", "permissions", "useAuth", "t", "useTranslation", "openModal", "useModal", "hasPermission", "collections", "update", "drawerSlug", "drafts", "_jsxs", "React", "Fragment", "children", "ListSelectionButton", "onClick", "PublishManyDrawerContent", "getTranslation", "useRouter", "useSearchParams", "formatAdminURL", "mergeListSearchAndWhere", "qs", "React", "confirmManyRestoreDrawerSlug", "baseClass", "props", "collection", "slug", "viewType", "permissions", "useAuth", "config", "collections", "routes", "useConfig", "locale", "code", "useLocale", "useRouter", "router", "clearRouteCache", "useRouteCache", "useSearchParams", "searchParams", "count", "getSelectedIds", "selectAll", "toggleAll", "useSelection", "openModal", "useModal", "i18n", "t", "useTranslation", "setRestoreAsPublished", "React", "collectionPermissions", "useState", "hasUpdatePermission", "selectingAll", "SelectAllStatus", "AllAvailable", "selectedIDs", "parseSearchParams", "baseWhere", "finalWhere", "and", "Array", "deletedAt", "handleRestore", "c", "collectionConfig", "whereConstraint", "url", "formatAdminURL", "apiRoute", "path", "limit", "select", "trash", "mergeListSearchAndWhere", "where", "search", "addQueryPrefix", "body", "restoreManyResponse", "requests", "JSON", "headers", "plural", "singular", "json", "restoredDocs", "length", "ue", "toast", "success", "successLabel", "label", "errors", "message", "e", "stringify", "page", "collectionConfig_0", "s", "getTranslation", "ListSelectionButton", "className", "onClick", "_jsx", "ConfirmationModal", "_jsxs", "Fragment", "labelString", "versions", "CheckboxInput", "restoreAsPublished", "checked", "id", "name", "e_0", "confirmingLabel", "heading", "modalSlug", "onConfirm", "c", "_c", "React", "getTranslation", "useRouter", "useSearchParams", "combineWhereConstraints", "formatAdminURL", "mergeListSearchAndWhere", "qs", "React", "useCallback", "UnpublishManyDrawerContent", "props", "collection", "slug", "labels", "plural", "singular", "drawerSlug", "ids", "onSuccess", "selectAll", "where", "config", "routes", "api", "useConfig", "code", "locale", "useLocale", "i18n", "t", "useTranslation", "searchParams", "useSearchParams", "router", "useRouter", "clearRouteCache", "useRouteCache", "addDefaultError", "useCallback", "toast", "error", "queryString", "React", "useMemo", "whereConstraints", "_status", "not_equals", "push", "queryWithSearch", "mergeListSearchAndWhere", "collectionConfig", "search", "get", "id", "in", "stringify", "select", "combineWhereConstraints", "addQueryPrefix", "handleUnpublish", "url", "formatAdminURL", "apiRoute", "path", "requests", "patch", "body", "JSON", "headers", "language", "then", "res", "json", "deletedDocs", "docs", "length", "successLabel", "status", "success", "count", "label", "getTranslation", "errors", "message", "description", "map", "join", "replace", "parseSearchParams", "page", "undefined", "forEach", "_jsx", "ConfirmationModal", "confirmingLabel", "heading", "modalSlug", "onConfirm", "UnpublishMany", "props", "$", "_c", "count", "selectAll", "selectedIDs", "toggleAll", "useSelection", "t0", "t1", "SelectAllStatus", "AllAvailable", "t2", "_jsx", "UnpublishMany_v4", "ids", "onSuccess", "collection", "modalPrefix", "where", "slug", "versions", "undefined", "t", "useTranslation", "permissions", "useAuth", "toggleModal", "useModal", "hasPermission", "collections", "update", "drawerSlug", "drafts", "_jsxs", "React", "Fragment", "children", "ListSelectionButton", "onClick", "UnpublishManyDrawerContent", "ListSelection", "t0", "$", "_c", "collectionConfig", "disableBulkDelete", "disableBulkEdit", "label", "modalPrefix", "showSelectAllAcrossPages", "t1", "viewType", "where", "undefined", "count", "selectAll", "selectedIDs", "toggleAll", "totalDocs", "useSelection", "t", "useTranslation", "t2", "onActionSuccess", "isTrashView", "trash", "t3", "_jsx", "ListSelection_v4", "ListActions", "SelectAllStatus", "AllAvailable", "ListSelectionButton", "id", "onClick", "children", "filter", "Boolean", "SelectionActions", "_jsxs", "Fragment", "EditMany_v4", "collection", "ids", "onSuccess", "PublishMany_v4", "UnpublishMany_v4", "RestoreMany", "DeleteMany", "getTranslation", "baseClass", "CloseModalButton", "slug", "className", "closeModal", "useModal", "t", "_jsx", "onClick", "type", "XIcon", "c", "_c", "getTranslation", "useRouter", "formatAdminURL", "baseClass", "t0", "$", "_c", "DefaultListViewTabs", "collectionConfig", "config", "onChange", "viewType", "i18n", "t", "useTranslation", "setPreference", "usePreferences", "router", "useRouter", "isTrashEnabled", "trash", "isFoldersEnabled", "t1", "newViewType", "path", "bb21", "url", "formatAdminURL", "adminRoute", "handleViewChange", "getTranslation", "t2", "allButtonLabel", "t3", "allButtonId", "toLowerCase", "t5", "t4", "t6", "_jsxs", "className", "children", "buttonStyle", "disabled", "el", "id", "onClick", "_jsx", "Button", "c", "_c", "getTranslation", "listHeaderClass", "ListHeader", "props", "className", "title", "TitleActions", "_jsx", "Actions", "AfterListHeaderContent", "drawerBaseClass", "DrawerRelationshipSelect", "$", "_c", "i18n", "t", "useTranslation", "config", "t0", "getEntityConfig", "useConfig", "collections", "enabledCollections", "selectedOption", "setSelectedOption", "useListDrawerContext", "t1", "Symbol", "for", "t2", "t3", "slug", "includes", "enabledCollectionConfigs", "filter", "length", "activeCollectionConfig", "collectionSlug", "value", "coll", "label", "getTranslation", "labels", "singular", "_jsxs", "className", "children", "_jsx", "FieldLabel", "ReactSelect", "listHeaderClass", "isClearable", "onChange", "options", "map", "c", "_c", "baseClass", "ListDrawerCreateNewDocButton", "t0", "$", "_c", "hasCreatePermission", "DocumentDrawerToggler", "useListDrawerContext", "t", "useTranslation", "t1", "_jsx", "className", "children", "Pill", "size", "c", "_c", "useRouter", "ListBulkUploadButton", "t0", "$", "_c", "collectionSlug", "hasCreatePermission", "isBulkUploadEnabled", "onBulkUploadSuccess", "openBulkUpload", "openBulkUploadFromProps", "drawerSlug", "bulkUploadDrawerSlug", "setCollectionSlug", "setOnSuccess", "useBulkUpload", "t", "useTranslation", "openModal", "useModal", "router", "useRouter", "t1", "refresh", "t2", "_jsx", "Button", "buttonStyle", "onClick", "size", "children", "c", "_c", "getTranslation", "baseClass", "ListCreateNewButton", "t0", "$", "_c", "collectionConfig", "hasCreatePermission", "newDocumentURL", "i18n", "t", "useTranslation", "t1", "labels", "singular", "t2", "_jsx", "Button", "label", "getTranslation", "buttonStyle", "className", "el", "size", "to", "children", "getTranslation", "useRouter", "useSearchParams", "formatAdminURL", "qs", "React", "confirmEmptyTrashSlug", "ListEmptyTrashButton", "collectionConfig", "hasDeletePermission", "i18n", "t", "useTranslation", "code", "locale", "useLocale", "config", "useConfig", "openModal", "useModal", "router", "useRouter", "searchParams", "useSearchParams", "clearRouteCache", "useRouteCache", "trashCount", "setTrashCount", "React", "useState", "useEffect", "queryString", "stringify", "depth", "limit", "trash", "where", "deletedAt", "exists", "addQueryPrefix", "json", "requests", "get", "formatAdminURL", "apiRoute", "routes", "api", "path", "slug", "headers", "language", "totalDocs", "handleEmptyTrash", "useCallback", "labels", "res", "delete", "deletedCount", "docs", "length", "status", "toast", "success", "count", "label", "getTranslation", "plural", "errors", "error", "message", "description", "map", "err", "join", "replace", "Object", "fromEntries", "entries", "page", "_jsxs", "Fragment", "_jsx", "Button", "buttonStyle", "disabled", "id", "onClick", "size", "ConfirmationModal", "body", "Translation", "elements", "0", "children", "1", "i18nKey", "variables", "singular", "confirmingLabel", "heading", "modalSlug", "onConfirm", "drawerBaseClass", "className", "collectionConfig", "Description", "disableBulkDelete", "disableBulkEdit", "hasCreatePermission", "hasDeletePermission", "i18n", "isBulkUploadEnabled", "isTrashEnabled", "newDocumentURL", "onBulkUploadSuccess", "openBulkUpload", "smallBreak", "viewType", "config", "getEntityConfig", "useConfig", "drawerSlug", "isInDrawer", "selectedOption", "useListDrawerContext", "isTrashRoute", "isGroupingBy", "useListQuery", "_jsx", "ListHeader", "Actions", "CloseModalButton", "slug", "_jsxs", "_Fragment", "AfterListHeaderContent", "title", "getTranslation", "collectionSlug", "plural", "ListDrawerCreateNewDocButton", "TitleActions", "ListSelection", "label", "showSelectAllAcrossPages", "ListCreateNewButton", "baseClass", "collectionConfig", "groupByFieldPath", "groupByValue", "_jsxs", "className", "_jsx", "heading", "label", "modalPrefix", "where", "c", "_c", "isNumber", "Fragment", "c", "_c", "collectionDefaults", "isNumber", "baseClass", "collectionDefaults", "defaultLimits", "$", "_c", "PerPage", "t1", "defaultLimit", "handleChange", "limit", "t2", "limits", "undefined", "t", "useTranslation", "isNumber", "t3", "limitToUse", "t4", "t5", "close", "_jsx", "PopupButtonList_exports", "PopupList", "ButtonGroup", "i", "_jsxs", "children", "map", "limitNumber", "className", "onClick", "direction", "Popup", "button", "ChevronIcon", "render", "baseClass", "$", "_c", "PageControlsComponent", "AfterPageControls", "collectionConfig", "data", "handlePageChange", "handlePerPageChange", "limit", "i18n", "useTranslation", "t1", "_jsxs", "className", "children", "Pagination", "hasNextPage", "hasPrevPage", "nextPage", "numberOfNeighbors", "onChange", "page", "prevPage", "totalPages", "totalDocs", "handleChange", "limits", "admin", "pagination", "resetPage", "PageControls", "initialLimit", "defaultLimit", "query", "useListQuery", "isNumber", "t2", "_jsx", "baseClass", "children", "className", "c", "_c", "GroupByPageControls", "t0", "$", "_c", "AfterPageControls", "collectionConfig", "data", "groupByValue", "refineListData", "useListQuery", "t1", "page", "queryByGroup", "handlePageChange", "t2", "limit", "handlePerPageChange", "t3", "_jsx", "PageControlsComponent", "c", "_c", "formatAdminURL", "LogOutIcon", "_jsx", "className", "fill", "height", "viewBox", "width", "xmlns", "d", "baseClass", "Logout", "t0", "$", "_c", "tabIndex", "t1", "undefined", "t", "useTranslation", "config", "useConfig", "admin", "t2", "routes", "t3", "t4", "logout", "logoutRoute", "adminRoute", "t5", "_jsx", "Link", "className", "href", "formatAdminURL", "path", "prefetch", "title", "children", "LogOutIcon", "c", "_c", "PREFERENCE_KEYS", "React", "useState", "baseClass", "t0", "$", "_c", "NavGroup", "children", "isOpenFromProps", "isOpen", "label", "collapsed", "setCollapsed", "useState", "setAnimate", "setPreference", "usePreferences", "navOpen", "useNav", "t1", "newGroupPrefs", "PREFERENCE_KEYS", "groups", "toggleCollapsed", "t2", "t4", "t3", "t5", "t6", "t8", "t7", "t9", "t11", "animate", "t10", "_jsxs", "className", "id", "onClick", "tabIndex", "type", "_jsx", "ChevronIcon", "AnimateHeight", "duration", "height", "React", "useMemo", "useRef", "useState", "baseClass", "entries", "minEntriesForSearch", "onSelect", "onToggleClose", "onToggleOpen", "searchPlaceholder", "props", "setSearchValue", "useState", "isOpenRef", "useRef", "searchInputRef", "filteredEntries", "searchValue", "search", "toLowerCase", "entry", "showSearch", "hasResults", "active", "handleToggleOpen", "current", "setTimeout", "handleToggleClose", "_jsx", "Popup", "popupProps", "className", "render", "close", "e", "onChange", "placeholder", "ref", "type", "PopupList", "ButtonGroup", "map", "handleClick", "onClick", "onKeyDown", "e_0", "preventDefault", "role", "tabIndex", "entry_0", "Component", "formatAdminURL", "baseClass", "BrowseByFolderButton", "active", "t", "useTranslation", "config", "useConfig", "admin", "routes", "foldersRoute", "adminRoute", "_jsxs", "Link", "className", "href", "id", "prefetch", "_jsx", "ColoredFolderIcon", "React", "FolderTypeField", "props", "field", "name", "admin", "className", "isClearable", "isSortable", "placeholder", "hasMany", "label", "localized", "options", "allSelectOptions", "required", "onChange", "onChangeFromProps", "path", "pathFromProps", "readOnly", "validate", "t", "useTranslation", "folderType", "useFolder", "React", "useMemo", "length", "formatOptions", "filter", "option", "value", "includes", "memoizedValidate", "useCallback", "validationOptions", "customComponents", "AfterInput", "BeforeInput", "Description", "Error", "Label", "disabled", "selectFilterOptions", "setValue", "showError", "useField", "potentiallyStalePath", "selectedOption", "newValue", "Array", "isArray", "map", "styles", "mergeFieldStyles", "_jsx", "SelectInput", "description", "filterOption", "some", "undefined", "style", "c", "_c", "getTranslation", "extractID", "React", "DocumentIcon", "className", "fill", "height", "viewBox", "width", "xmlns", "_jsx", "clipRule", "d", "useDroppable", "React", "useDraggable", "useId", "useRef", "baseClass", "as", "children", "className", "disabled", "onClick", "onKeyDown", "ref", "thresholdPixels", "id", "attributes", "listeners", "setNodeRef", "initialPos", "x", "isDragging", "e", "handlePointerDown", "clientX", "moveEvent", "handlePointerMove", "deltaX", "Math", "abs", "current", "onPointerDown", "cleanup", "window", "removeEventListener", "handlePointerUp", "upEvent", "addEventListener", "_jsx", "role", "tabIndex", "undefined", "node", "baseClass", "appearance", "className", "headers", "headerCells", "rows", "_jsx", "cellPadding", "cellSpacing", "TableHead", "children", "TableBody", "TableRow", "TableCell", "TableHeader", "HiddenCell", "baseClass", "DraggableTableRow", "id", "columns", "disabled", "dragData", "_isDroppable", "isDroppable", "isFocused", "isSelected", "isSelecting", "itemKey", "onClick", "onKeyDown", "isOver", "setNodeRef", "data", "ref", "React", "useRef", "useEffect", "current", "copyOfRef", "_jsxs", "DraggableWithClick", "as", "className", "col", "i", "_jsx", "TableCell", "baseClass", "FolderFileTable", "t0", "$", "_c", "t1", "showRelationCell", "checkIfItemIsDisabled", "documents", "focusedRowIndex", "onItemClick", "onItemKeyPress", "selectedItemKeys", "subfolders", "useFolder", "config", "useConfig", "i18n", "t", "useTranslation", "t2", "map", "collection", "collections", "forEach", "plural", "getTranslation", "labels", "relationToMap", "React", "t3", "columnsToShow", "name", "label", "columns", "t4", "t5", "subfolder", "itemKey", "relationTo", "value", "extractID", "subfolderID", "DraggableTableRow", "name_0", "t6", "cellValue", "formatDate", "_jsxs", "_Fragment", "index", "slug", "index_0", "acc", "className", "_jsx", "children", "ColoredFolderIcon", "disabled", "dragData", "id", "isDroppable", "rowIndex", "isFocused", "isSelected", "has", "isSelecting", "event", "onClick", "event_0", "onKeyDown", "document", "itemKey_0", "value_0", "documentID", "rowIndex_0", "unadjustedIndex", "name_1", "t7", "cellValue_0", "relationTo_0", "index_1", "DocumentIcon", "event_1", "event_2", "SimpleTable", "_temp", "headerCells", "TableHeader", "c", "_c", "useDroppable", "getTranslation", "React", "ThreeDotsIcon", "className", "_jsxs", "_jsx", "baseClass", "FolderFileCard", "id", "type", "className", "disabled", "folderType", "isDeleting", "isFocused", "isSelected", "itemKey", "onClick", "onKeyDown", "PopupActions", "previewUrl", "selectedCount", "title", "disableDrop", "isOver", "setNodeRef", "useDroppable", "data", "ref", "React", "useRef", "useEffect", "current", "copyOfRef", "_jsxs", "DraggableWithClick", "_jsx", "Thumbnail", "DocumentIcon", "ColoredFolderIcon", "Popup", "ThreeDotsIcon", "button", "horizontalAlign", "size", "verticalAlign", "AssignedCollections", "config", "useConfig", "i18n", "useTranslation", "collectionsDisplayText", "acc", "collection", "c", "collectionConfig", "collections", "label", "index", "ContextFolderFileCard", "t0", "$", "_c", "item", "checkIfItemIsDisabled", "focusedRowIndex", "onItemClick", "onItemKeyPress", "selectedItemKeys", "useFolder", "t1", "t2", "event", "t3", "event_0", "isDisabled", "value", "baseClass", "ItemCardGrid", "type", "items", "subfolderCount", "title", "_jsxs", "_Fragment", "_jsx", "className", "item", "_index", "index", "itemKey", "ContextFolderFileCard", "c", "_c", "Fragment", "c", "_c", "sanitizeID", "id", "undefined", "decodeURIComponent", "baseClass", "useDrawerDepth", "t0", "$", "_c", "IDLabel", "id", "className", "prefix", "t1", "t2", "config", "useConfig", "t3", "routes", "adminRoute", "admin", "collectionSlug", "globalSlug", "useDocumentInfo", "drawerDepth", "t5", "t4", "docPath", "t6", "_jsxs", "title", "_jsx", "Link", "children", "href", "sanitizeID", "baseClass", "props", "$", "_c", "RenderTitle", "className", "t0", "element", "fallback", "title", "id", "isInitializing", "useDocumentInfo", "titleFromContext", "useDocumentTitle", "titleFromProps", "idAsTitle", "t1", "Tag", "EmptySpace", "_jsx", "Fragment", "t2", "t3", "join", "children", "c", "_c", "baseClass", "props", "$", "_c", "SortColumn", "name", "appearance", "disable", "Label", "label", "t0", "handleSortChange", "query", "useListQuery", "t", "useTranslation", "sort", "desc", "ascClasses", "asc", "descClasses", "t1", "t2", "t3", "t4", "_jsxs", "className", "children", "_jsx", "FieldLabel", "hideLocale", "direction", "onClick", "type", "ChevronIcon", "getTranslation", "toWords", "useEffect", "useMemo", "useState", "c", "_c", "useId", "baseClass", "t0", "$", "_c", "ItemSearch", "placeholder", "setSearchTerm", "inputId", "useId", "t1", "e", "handleChange", "t2", "labelId", "_jsxs", "className", "children", "_jsx", "htmlFor", "id", "onChange", "type", "SearchIcon", "baseClass", "ItemSearch", "item", "i18n", "singular", "labels", "getTranslation", "label", "toWords", "getItemImageInfo", "item", "imageAltText", "getItemDisplayLabel", "i18n", "getTranslation", "labels", "label", "toWords", "ItemsDrawer", "props", "addRowIndex", "drawerSlug", "items", "onItemClick", "searchPlaceholder", "title", "setSearchTerm", "useState", "searchTerm", "closeModal", "isModalOpen", "useModal", "t", "useTranslation", "config", "useConfig", "useMemo", "itemGroups", "groups", "filteredItems", "group", "admin", "Object", "hasOwn", "useEffect", "searchTermToUse", "toLowerCase", "_item", "matchingItems", "item_0", "getItemLabel", "itemLabel", "matchedItems", "includes", "setFilteredItems", "blocksMap", "finalTitle", "_jsxs", "Drawer", "slug", "_jsx", "ItemSearch", "placeholder", "className", "baseClass", "groupLabel", "groupItems", "entries", "_item_0", "index", "item_1", "imageURL", "ThumbnailCard", "alignLabel", "displayLabel", "thumbnail", "alt", "c", "_c", "useState", "$", "_c", "SlugField", "field", "path", "readOnlyFromProps", "readOnly", "useAsSlug", "label", "t", "useTranslation", "collectionSlug", "globalSlug", "useDocumentInfo", "slugify", "useServerFunctions", "t2", "t1", "setValue", "value", "useField", "getData", "getDataByPath", "useForm", "setIsLocked", "useState", "t3", "e", "preventDefault", "valueToSlugify", "data", "formattedSlug", "handleGenerate", "t4", "e_0", "Symbol", "toggleLock", "t6", "isLocked", "t5", "_jsxs", "name", "className", "children", "_jsx", "FieldLabel", "htmlFor", "buttonStyle", "onClick", "TextInput", "onChange", "_temp", "prev", "CodeBlockIcon", "_jsx", "className", "focusable", "viewBox", "xmlns", "d", "strokeLinecap", "baseClass", "MinimizeMaximizeIcon", "className", "isMinimized", "classes", "filter", "Boolean", "join", "_jsx", "height", "stroke", "viewBox", "width", "xmlns", "d", "baseClass", "ariaLabel", "className", "filter", "fill", "height", "viewBox", "width", "xmlns", "_jsx", "d", "strokeLinecap", "MoveFolderIcon", "className", "fill", "height", "viewBox", "width", "xmlns", "_jsx", "filter", "d", "stroke", "strokeLinecap", "colorInterpolationFilters", "filterUnits", "id", "x", "y", "in", "in2", "mode", "GridViewIcon", "className", "fill", "height", "viewBox", "width", "xmlns", "_jsx", "d", "stroke", "strokeLinecap", "strokeLinejoin", "ListViewIcon", "className", "fill", "height", "viewBox", "width", "xmlns", "_jsx", "d", "stroke", "strokeLinecap", "Error", "_jsxs", "fill", "height", "viewBox", "width", "xmlns", "_jsx", "d", "stroke", "strokeLinecap", "strokeLinejoin", "Info", "_jsxs", "fill", "height", "viewBox", "width", "xmlns", "_jsx", "d", "stroke", "strokeLinecap", "strokeLinejoin", "Success", "_jsxs", "fill", "height", "viewBox", "width", "xmlns", "_jsx", "d", "stroke", "strokeLinecap", "strokeLinejoin", "Warning", "_jsxs", "fill", "height", "viewBox", "width", "xmlns", "_jsx", "d", "stroke", "strokeLinecap", "strokeLinejoin", "c", "_c", "React", "ModifyClientFunctionContext", "createContext", "addClientFunction", "removeClientFunction", "ClientFunctionsContext", "ClientFunctionProvider", "t0", "$", "children", "t1", "Symbol", "for", "clientFunctions", "setClientFunctions", "useState", "t2", "args", "state", "newState", "key", "func", "t3", "args_0", "state_0", "newState_0", "t4", "_jsx", "value", "useAddClientFunction", "use", "useEffect", "useClientFunctions", "DndContext", "React", "useCallback", "useEffect", "useId", "useMemo", "useRef", "useState", "c", "_c", "useEffect", "useRef", "useState", "usePopupWindow", "props", "$", "_c", "eventType", "onMessage", "url", "isReceivingMessage", "useRef", "isOpen", "setIsOpen", "useState", "config", "t0", "useConfig", "serverURL", "popupRef", "t1", "t2", "receiveMessage", "event", "origin", "window", "location", "data", "type", "current", "searchParams", "addEventListener", "removeEventListener", "useEffect", "t3", "e", "preventDefault", "features", "height", "left", "menubar", "popup", "toolbar", "top", "width", "popupOptions", "Object", "entries", "reduce", "str", "t4", "key", "value", "strCopy", "v", "Math", "round", "innerHeight", "v_0", "innerWidth", "slice", "newWindow", "open", "openPopupWindow", "t5", "timer", "closed", "clearInterval", "t6", "isPopupOpen", "getAbsoluteUrl", "url", "URL", "window", "location", "origin", "href", "formatAbsoluteURL", "incomingURL", "startsWith", "rectIntersection", "customCollisionDetection", "collisionRect", "droppableContainers", "args", "droppableContainer", "find", "id", "rectIntersectionCollisions", "length", "previewAreaRect", "rect", "current", "top", "left", "bottom", "right", "sizeReducer", "state", "action", "type", "height", "value", "width", "LivePreviewProvider", "breakpoints", "incomingBreakpoints", "children", "isLivePreviewEnabled", "isLivePreviewing", "incomingIsLivePreviewing", "isPreviewEnabled", "previewURL", "previewURLFromProps", "typeofLivePreviewURL", "url", "urlFromProps", "previewWindowType", "setPreviewWindowType", "useState", "setIsLivePreviewing", "useMemo", "name", "height", "label", "width", "setURL", "setPreviewURL", "isPopupOpen", "openPopupWindow", "popupRef", "usePopupWindow", "eventType", "appIsReady", "setAppIsReady", "listeningForMessages", "setListeningForMessages", "collectionSlug", "globalSlug", "useDocumentInfo", "isFirstRender", "useRef", "setPreference", "usePreferences", "iframeRef", "React", "loadedURL", "setLoadedURL", "zoom", "setZoom", "position", "setPosition", "x", "y", "size", "setSize", "useReducer", "sizeReducer", "measuredDeviceSize", "setMeasuredDeviceSize", "breakpoint", "setBreakpoint", "setLivePreviewURL", "useCallback", "_incomingURL", "incomingURL", "formatAbsoluteURL", "useEffect", "handleDragEnd", "ev", "over", "id", "newPos", "delta", "setWidth", "type", "value", "setHeight", "foundBreakpoint", "find", "bp", "handleMessage", "event", "startsWith", "origin", "data", "ready", "window", "addEventListener", "removeEventListener", "handleWindowChange", "current", "editViewType", "dndContextID", "useId", "_jsx", "LivePreviewContext", "setToolbarPosition", "toolbarPosition", "DndContext", "collisionDetection", "customCollisionDetection", "onDragEnd", "c", "_c", "React", "useEffect", "useRef", "transitionDuration", "baseClass", "$", "_c", "ProgressBar", "isTransitioning", "transitionProgress", "useRouteTransition", "setProgressToShow", "React", "shouldDelayProgress", "t0", "useEffect", "t1", "clearTimerID", "delayTimerID", "current", "clearTimeout", "t2", "progressToShow", "t3", "t4", "t5", "_jsx", "className", "style", "children", "c", "_c", "createContext", "use", "EntityVisibilityContext", "EntityVisibilityProvider", "t0", "$", "children", "visibleEntities", "t1", "t2", "collectionSlug", "globalSlug", "collections", "includes", "globals", "isEntityVisible", "_jsx", "value", "useEntityVisibility", "c", "_c", "useParams", "useNextParams", "createContext", "use", "Context", "ParamsProvider", "t0", "$", "children", "params", "t1", "_jsx", "value", "c", "_c", "DndContext", "pointerWithin", "React", "Fragment", "useContext", "createContext", "ScrollInfoContext", "useScrollInfo", "useContext", "ScrollInfoContext", "React", "useCallback", "useEffect", "useReducer", "useRef", "reducer", "state", "payload", "timestamp", "animationRef", "prevScrollX", "prevScrollY", "prevXDirection", "prevYDirection", "prevEventsFired", "prevHasScrolled", "hasScrolled", "currentScrollX", "currentScrollY", "eventsFired", "xDifference", "yDifference", "xPercentage", "yPercentage", "totalPercentage", "xDirection", "yDirection", "ScrollInfoProvider", "props", "children", "useRef", "dispatch", "useReducer", "requestAnimation", "useCallback", "e", "useEffect", "React", "ScrollInfoContext", "React", "React", "c", "_c", "usePathname", "useEffect", "useRef", "CloseModalOnRouteChange", "$", "_c", "closeAllModals", "useModal", "pathname", "usePathname", "t0", "closeAllModalsEffectEvent", "useEffectEvent", "initialRenderRef", "useRef", "t1", "current", "t2", "useEffect", "WindowInfoProvider", "facelessUIImport", "undefined", "useWindowInfo", "useSearchParams", "useNextSearchParams", "qs", "React", "createContext", "use", "initialContext", "searchParams", "stringifyParams", "Context", "SearchParamsProvider", "children", "searchString", "toString", "useMemo", "parse", "depth", "ignoreQueryPrefix", "useCallback", "params", "replace", "stringify", "addQueryPrefix", "_jsx", "value", "ToastContainer", "config", "admin", "toast", "duration", "expand", "limit", "position", "_jsx", "Toaster", "className", "closeButton", "dir", "gap", "icons", "error", "Error", "info", "Info", "success", "Success", "warning", "Warning", "offset", "toastOptions", "classNames", "content", "icon", "title", "unstyled", "visibleToasts", "RootProvider", "t0", "$", "_c", "children", "config", "dateFNSKey", "fallbackLang", "isNavOpen", "languageCode", "languageOptions", "locale", "permissions", "serverFunction", "switchLanguageServerAction", "theme", "translations", "user", "dndContextID", "React", "useId", "t1", "_jsxs", "ClickOutsideProvider", "_jsx", "ServerFunctionsProvider", "RouteTransitionProvider", "RouteCache", "cachingEnabled", "process", "env", "NEXT_PUBLIC_ENABLE_ROUTER_CACHE_REFRESH", "ConfigProvider", "ClientFunctionProvider", "TranslationProvider", "language", "WindowInfoProvider", "breakpoints", "l", "m", "s", "xs", "ScrollInfoProvider", "SearchParamsProvider", "ModalProvider", "classPrefix", "transTime", "zIndex", "CloseModalOnRouteChange", "AuthProvider", "PreferencesProvider", "ThemeProvider", "ParamsProvider", "LocaleProvider", "StepNavProvider", "LoadingOverlayProvider", "DocumentEventsProvider", "NavProvider", "initialIsOpen", "UploadHandlersProvider", "DndContext", "collisionDetection", "pointerWithin", "id", "ModalContainer", "StayLoggedInModal", "ToastContainer", "email", "getFieldPermissions", "username", "baseClass", "FieldPathContext", "EmailAndUsernameFields", "props", "className", "loginWithUsername", "operation", "permissions", "readOnly", "t", "getAuthFieldPermission", "fieldName", "permissionsResult", "field", "name", "operationFromProps", "parentName", "hasEmailFieldOverride", "hasUsernameFieldOverride", "emailPermissions", "read", "update", "usernamePermissions", "showEmailField", "requireEmail", "showUsernameField", "join", "value", "_jsx", "EmailField", "admin", "label", "path", "schemaPath", "email", "TextField", "username", "c", "_c", "baseClass", "$", "_c", "SelectAll", "selectAll", "toggleAll", "useSelection", "i18n", "useTranslation", "t0", "t1", "for", "t2", "_jsx", "CheckboxInput", "SelectAllStatus", "checked", "className", "id", "name", "onToggle", "c", "_c", "baseClass", "t0", "$", "_c", "SelectRow", "rowData", "user", "useAuth", "selected", "setSelection", "useSelection", "t1", "Symbol", "_isLocked", "_userEditing", "documentIsLocked", "_jsx", "bb0", "t2", "get", "t3", "t4", "for", "t5", "t6", "CheckboxInput", "checked", "className", "SelectMany", "props", "onClick", "count", "selected", "useSelection", "t", "useTranslation", "_jsxs", "Pill", "pillStyle", "size", "getTranslation", "useRouter", "formatAdminURL", "formatFilesize", "React", "Fragment", "useEffect", "baseClass", "DefaultListView", "props", "AfterList", "AfterListTable", "beforeActions", "BeforeList", "BeforeListTable", "collectionSlug", "columnState", "Description", "disableBulkDelete", "disableBulkEdit", "disableQueryPresets", "enableRowSelections", "hasCreatePermissionFromProps", "hasCreatePermission", "hasDeletePermission", "listMenuItems", "newDocumentURL", "queryPreset", "queryPresetPermissions", "renderedFilters", "resolvedFilterOptions", "Table", "viewType", "useControllableState", "InitialTable", "allowCreate", "createNewDrawerSlug", "isInDrawer", "onBulkSelect", "useListDrawerContext", "config", "routes", "adminRoute", "serverURL", "getEntityConfig", "useConfig", "useRouter", "router", "data", "isGroupingBy", "useListQuery", "openModal", "useModal", "bulkUploadDrawerSlug", "drawerSlug", "setCollectionSlug", "setOnSuccess", "useBulkUpload", "labels", "upload", "collectionConfig", "isUploadCollection", "Boolean", "isBulkUploadEnabled", "isTrashEnabled", "i18n", "useTranslation", "setStepNav", "useStepNav", "breakpoints", "useWindowInfo", "docs", "doc", "formatFilesize", "useCallback", "refresh", "useEffect", "baseLabel", "label", "formatAdminURL", "url", "path", "trashLabel", "Fragment", "_jsx", "className", "_jsxs", "totalDocs", "Gutter", "CollectionListHeader", "RenderCustomComponent", "CustomComponent", "ViewDescription", "Fallback", "openBulkUpload", "smallBreak", "SelectMany", "onClick", "RelationshipProvider", "length", "NoListResults", "Button", "Actions", "el", "to", "Message", "_Fragment", "t", "AfterPageControls", "ListSelection", "showSelectAllAcrossPages", "c", "_c", "useDndMonitor", "getTranslation", "useRouter", "formatAdminURL", "React", "Fragment", "getTranslation", "useRouter", "formatAdminURL", "React", "moveToFolderDrawerSlug", "confirmDeleteDrawerSlug", "baseClass", "CurrentFolderActions", "className", "router", "useRouter", "startRouteTransition", "useRouteTransition", "breadcrumbs", "currentFolder", "folderCollectionConfig", "folderCollectionSlug", "folderFieldName", "folderID", "getFolderRoute", "moveToFolder", "useFolder", "FolderDocumentDrawer", "closeDrawer", "closeFolderDrawer", "openDrawer", "openFolderDrawer", "useDocumentDrawer", "id", "collectionSlug", "clearRouteCache", "useRouteCache", "config", "useConfig", "routes", "closeModal", "openModal", "useModal", "i18n", "t", "useTranslation", "deleteCurrentFolder", "React", "useCallback", "fetch", "formatAdminURL", "apiRoute", "api", "path", "credentials", "method", "push", "length", "_jsxs", "_Fragment", "_jsx", "Popup", "button", "Dots", "filter", "Boolean", "join", "render", "PopupList", "ButtonGroup", "Button", "onClick", "label", "getTranslation", "labels", "singular", "MoveItemsToFolderDrawer", "action", "drawerSlug", "folderAssignedCollections", "value", "folderType", "fromFolderID", "fromFolderName", "_folderOrDocumentTitle", "itemsToMove", "onConfirm", "name", "toFolderID", "toast", "success", "folderName", "title", "ConfirmationModal", "body", "Translation", "elements", "1", "children", "i18nKey", "variables", "confirmingLabel", "heading", "modalSlug", "onSave", "DragOverlay", "baseClass", "DragOverlaySelection", "item", "selectedCount", "_jsx", "DragOverlay", "dropAnimation", "modifiers", "style", "height", "_jsxs", "className", "length", "_", "index", "right", "FolderFileCard", "id", "isSelected", "itemKey", "title", "snapTopLeftToCursor", "activatorEvent", "draggingNodeRect", "transform", "activatorCoordinates", "offsetX", "x", "left", "offsetY", "baseClass", "sortOnOptions", "label", "t", "value", "orderOnOptions", "_jsxs", "_Fragment", "SortByPill", "refineFolderData", "sort", "useFolder", "useTranslation", "sortDirection", "startsWith", "slice", "_jsx", "Popup", "button", "className", "ChevronIcon", "icon", "size", "SortUpIcon", "SortDownIcon", "horizontalAlign", "render", "close", "PopupButtonList_exports", "PopupList", "selectedSortOption", "active", "onClick", "query", "page", "ButtonGroup", "selectedOrderOption", "showScrollbar", "baseClass", "ToggleViewButtons", "activeView", "setActiveView", "_jsxs", "_Fragment", "buttonStyle", "className", "icon", "margin", "onClick", "_jsx", "Button", "c", "_c", "extractID", "React", "Fragment", "EditFolderAction", "id", "folderCollectionSlug", "clearRouteCache", "useRouteCache", "t", "useTranslation", "FolderDocumentDrawer", "closeDrawer", "openDrawer", "useDocumentDrawer", "collectionSlug", "_jsxs", "_Fragment", "_jsx", "ListSelectionButton", "onClick", "type", "onSave", "moveToFolderDrawerSlug", "ListSelection", "t0", "$", "_c", "disableBulkDelete", "disableBulkEdit", "folderAssignedCollections", "clearSelections", "currentFolder", "folderCollectionSlug", "folderFieldName", "folderID", "getSelectedItems", "moveToFolder", "useFolder", "clearRouteCache", "useRouteCache", "config", "useConfig", "t", "useTranslation", "closeModal", "openModal", "useModal", "t1", "t2", "value", "_folderOrDocumentTitle", "Symbol", "for", "bb0", "items", "groupedSelections", "reduce", "_temp", "count", "length", "singleNonFolderCollectionSelected", "Object", "keys", "collectionConfig", "collections", "find", "collection", "slug", "ids", "_jsx", "ListSelection_v4", "ListActions", "ListSelectionButton", "onClick", "children", "filter", "Boolean", "SelectionActions", "_jsxs", "Fragment", "EditMany_v4", "selectAll", "PublishMany_v4", "UnpublishMany_v4", "EditFolderAction", "id", "React", "type", "MoveItemsToFolderDrawer", "action", "drawerSlug", "fromFolderID", "fromFolderName", "itemsToMove", "onConfirm", "t3", "name", "toFolderID", "toast", "success", "folderName", "title", "DeleteMany_v4", "afterDelete", "selections", "acc", "item", "relationTo", "push", "extractID", "totalCount", "baseClass", "ListSelection", "DefaultCollectionFolderView", "allCollectionFolderSlugs", "allowCreateCollectionSlugs", "baseFolderPath", "breadcrumbs", "documents", "folderFieldName", "folderID", "FolderResultsComponent", "search", "sort", "subfolders", "_jsx", "FolderProvider", "folderCollectionSlugs", "CollectionFolderViewInContext", "props", "$", "AfterFolderList", "AfterFolderListTable", "BeforeFolderList", "BeforeFolderListTable", "collectionSlug", "Description", "disableBulkDelete", "disableBulkEdit", "viewPreference", "config", "getEntityConfig", "useConfig", "i18n", "t", "useTranslation", "useEditDepth", "drawerDepth", "setStepNav", "useStepNav", "setPreference", "usePreferences", "dragOverlayItem", "folderCollectionConfig", "folderCollectionSlug", "folderType", "getSelectedItems", "moveToFolder", "refineFolderData", "selectedItemKeys", "setIsDragging", "useFolder", "useRouter", "router", "startRouteTransition", "useRouteTransition", "clearRouteCache", "useRouteCache", "labels", "upload", "isUploadCollection", "collectionConfig", "isBulkUploadEnabled", "t0", "breakpoints", "useWindowInfo", "smallBreak", "t1", "event", "itemsToMove", "t2", "error", "onDragEnd", "view", "handleSetViewType", "React", "useEffect", "_jsxs", "DroppableBreadcrumb", "label", "className", "id", "onClick", "folders", "formatAdminURL", "adminRoute", "routes", "path", "ColoredFolderIcon", "getTranslation", "children", "crumb", "crumbIndex", "search_0", "query", "Fragment", "Actions", "folderAssignedCollections", "DefaultListViewTabs", "viewType", "AfterListHeaderContent", "title", "ListCreateNewDocInFolderButton", "TitleActions", "length", "buttonLabel", "collectionSlugs", "onCreateSuccess", "slugPrefix", "ListBulkUploadButton", "hasCreatePermission", "SearchBar", "ToggleViewButtons", "activeView", "setActiveView", "onSearchChange", "searchQueryParam", "totalDocsAndSubfolders", "includes", "buttonSize", "buttonStyle", "slug", "_Fragment", "filter", "Message", "DragOverlaySelection", "item", "selectedCount", "DndEventListener", "onDragCancel", "onDragStart", "useDndMonitor", "c", "_c", "useDndMonitor", "getTranslation", "useRouter", "PREFERENCE_KEYS", "React", "Fragment", "c", "_c", "getTranslation", "React", "baseClass", "CheckboxPopup", "Button", "className", "onChange", "options", "selectedValues", "_jsx", "Popup", "button", "horizontalAlign", "render", "close", "label", "value", "CheckboxInput", "checked", "onToggle", "newSelectedValues", "v", "showScrollbar", "verticalAlign", "baseClass", "FilterFolderTypePill", "$", "_c", "visibleCollectionSlugs", "activeCollectionFolderSlugs", "allCollectionFolderSlugs", "folderCollectionSlug", "refineFolderData", "useFolder", "i18n", "t", "useTranslation", "config", "getEntityConfig", "useConfig", "t0", "folderCollectionSlugs", "collection", "collections", "acc", "getTranslation", "label", "collectionSlug", "labels", "value", "allCollectionOptions", "React", "t1", "t2", "t3", "relationTo", "selectedValues", "query", "_jsx", "CheckboxPopup", "Button", "buttonStyle", "el", "icon", "margin", "size", "children", "className", "options", "baseClass", "DefaultBrowseByFolderView", "activeCollectionFolderSlugs", "allCollectionFolderSlugs", "allowCreateCollectionSlugs", "baseFolderPath", "breadcrumbs", "documents", "folderFieldName", "folderID", "FolderResultsComponent", "search", "subfolders", "_jsx", "FolderProvider", "BrowseByFolderViewInContext", "props", "$", "AfterFolderList", "AfterFolderListTable", "BeforeFolderList", "BeforeFolderListTable", "Description", "disableBulkDelete", "disableBulkEdit", "folderAssignedCollections", "viewPreference", "useRouter", "router", "i18n", "t", "useTranslation", "useEditDepth", "drawerDepth", "setStepNav", "useStepNav", "startRouteTransition", "useRouteTransition", "clearRouteCache", "useRouteCache", "t0", "breakpoints", "useWindowInfo", "smallBreak", "setPreference", "usePreferences", "dragOverlayItem", "folderCollectionConfig", "folderType", "getFolderRoute", "getSelectedItems", "moveToFolder", "refineFolderData", "selectedItemKeys", "setIsDragging", "useFolder", "setActiveView", "React", "t1", "locationLabel", "getTranslation", "searchPlaceholder", "t2", "event", "current", "itemsToMove", "onDragEnd", "totalDocsAndSubfolders", "length", "listHeaderTitle", "handleSetViewType", "PREFERENCE_KEYS", "view", "t3", "t4", "_jsxs", "DroppableBreadcrumb", "label", "className", "id", "onClick", "ColoredFolderIcon", "children", "crumb", "crumbIndex", "useEffect", "slug", "t5", "search_0", "query", "Fragment", "ListSelection", "Actions", "filter", "AfterListHeaderContent", "title", "ListCreateNewDocInFolderButton", "TitleActions", "buttonLabel", "collectionSlugs", "onCreateSuccess", "slugPrefix", "SearchBar", "FilterFolderTypePill", "ToggleViewButtons", "activeView", "onSearchChange", "searchQueryParam", "items", "_Fragment", "subfolderCount", "NoListResults", "includes", "buttonSize", "buttonStyle", "nonFolderCollectionSlugs", "Message", "DragOverlaySelection", "item", "selectedCount", "DndEventListener", "onDragCancel", "onDragStart", "useDndMonitor", "useRouter", "useSearchParams", "formatAdminURL", "hasAutosaveEnabled", "React", "Fragment", "useCallback", "useEffect", "useMemo", "useRef", "useState", "c", "_c", "leaveWithoutSavingModalSlug", "t0", "$", "_c", "DocumentDrawerHeader", "AfterHeader", "drawerSlug", "t1", "showDocumentID", "closeModal", "openModal", "useModal", "t", "useTranslation", "useFormModified", "t2", "isModified", "handleOnClose", "t3", "t4", "_jsxs", "Gutter", "className", "documentDrawerBaseClass", "children", "_jsx", "onClick", "type", "XIcon", "DocumentID", "modalSlug", "onConfirm", "id", "useDocumentInfo", "title", "useDocumentTitle", "IDLabel", "c", "_c", "reduceFieldsToValues", "useEffect", "React", "useEffect", "DeviceContainer", "props", "children", "deviceFrameRef", "React", "useRef", "outerFrameRef", "breakpoint", "setMeasuredDeviceSize", "size", "desiredSize", "zoom", "useLivePreviewContext", "measuredDeviceSize", "useResize", "current", "outerFrameSize", "deviceIsLargerThanFrame", "useEffect", "x", "margin", "width", "height", "scaledDesiredWidth", "scaledDeviceWidth", "scaledDeviceDifferencePixels", "differenceFromDeviceToFrame", "_jsx", "ref", "style", "transform", "c", "_c", "baseClass", "$", "_c", "IFrame", "iframeRef", "setLoadedURL", "url", "zoom", "useLivePreviewContext", "t0", "t1", "t2", "_jsx", "className", "onLoad", "ref", "src", "style", "title", "c", "_c", "useDraggable", "c", "_c", "React", "c", "_c", "React", "useEffect", "baseClass", "props", "$", "_c", "PreviewFrameSizeInput", "axis", "breakpoint", "measuredDeviceSize", "setBreakpoint", "setSize", "size", "zoom", "useLivePreviewContext", "React", "t0", "e", "newValue", "Number", "setInternalState", "type", "value", "height", "toFixed", "handleChange", "t1", "t2", "useEffect", "t3", "t5", "t4", "_jsx", "className", "min", "name", "onChange", "step", "baseClass", "zoomOptions", "$", "_c", "ToolbarControls", "breakpoint", "breakpoints", "setBreakpoint", "setPreviewWindowType", "setZoom", "url", "zoom", "useLivePreviewContext", "t", "useTranslation", "t0", "customOption", "label", "t2", "t3", "close_0", "close", "_jsx", "PopupButtonList_exports", "PopupList", "ButtonGroup", "children", "Fragment", "_jsxs", "map", "active", "onClick", "zoomValue", "e", "className", "Popup", "button", "React", "bp", "ChevronIcon", "horizontalAlign", "render", "t1", "bp_0", "name", "axis", "href", "target", "title", "type", "ExternalLinkIcon", "baseClass", "props", "DraggableToolbar", "$", "toolbarPosition", "useLivePreviewContext", "t0", "attributes", "listeners", "setNodeRef", "transform", "useDraggable", "t1", "for", "t2", "x", "t4", "t3", "_jsxs", "className", "style", "left", "top", "_jsx", "children", "ref", "type", "DragHandleIcon", "StaticToolbar", "LivePreviewToolbar", "draggable", "baseClass", "props", "$", "_c", "LivePreviewWindow", "appIsReady", "breakpoint", "iframeRef", "isLivePreviewing", "loadedURL", "popupRef", "previewWindowType", "url", "useLivePreviewContext", "locale", "mostRecentUpdate", "useDocumentEvents", "id", "collectionSlug", "globalSlug", "useDocumentInfo", "t0", "formState", "reduceFieldsToValues", "values", "message", "type", "data", "externallyUpdatedRelationship", "t1", "useEffect", "t2", "message_0", "t3", "t4", "t6", "t5", "t7", "t8", "_jsx", "className", "_jsxs", "children", "DeviceContainer", "ShimmerEffect", "formatAdminURL", "handleBackToDashboard", "adminRoute", "router", "serverURL", "redirectRoute", "path", "push", "formatAdminURL", "handleGoBack", "adminRoute", "collectionSlug", "router", "serverURL", "redirectRoute", "path", "push", "handleTakeOver", "id", "clearRouteCache", "collectionSlug", "documentLockStateRef", "globalSlug", "isLockingEnabled", "isWithinDoc", "setCurrentEditor", "setIsReadOnlyForIncomingUser", "updateDocumentEditor", "user", "current", "hasShownLockedModal", "isLocked", "error", "console", "c", "_c", "formatAdminURL", "getFieldPermissions", "React", "Fragment", "useEffect", "useState", "getTranslation", "text", "React", "useEffect", "useMemo", "useState", "path", "baseClass", "fieldBaseClass", "APIKey", "enabled", "readOnly", "initialAPIKey", "useState", "uuidv4", "highlightedField", "setHighlightedField", "showKey", "setShowKey", "i18n", "t", "useTranslation", "config", "getEntityConfig", "useConfig", "collectionSlug", "useDocumentInfo", "apiKey", "useFormFields", "fields", "apiKeyField", "find", "field", "name", "validate", "val", "text", "type", "blockData", "data", "event", "maxLength", "minLength", "preferences", "req", "payload", "siblingData", "apiKeyValue", "value", "apiKeyLabel", "useMemo", "label", "getTranslation", "APIKeyLabel", "_jsxs", "className", "htmlFor", "_jsx", "CopyToClipboard", "fieldType", "useField", "highlightField", "setTimeout", "setValue", "useEffect", "React", "Fragment", "filter", "Boolean", "join", "undefined", "disabled", "id", "Button", "buttonStyle", "icon", "EyeIcon", "active", "onClick", "prev", "GenerateConfirmation", "setKey", "baseClass", "props", "$", "_c", "Auth", "className", "collectionSlug", "disableLocalStrategy", "email", "loginWithUsername", "operation", "readOnly", "requirePassword", "setValidateBeforeSubmit", "useAPIKey", "username", "verify", "setChangingPassword", "useState", "enableAPIKey", "changingPassword", "useFormFields", "_temp", "dispatchFields", "modified", "i18n", "t", "useTranslation", "docPermissions", "isEditing", "isInitializing", "isTrashed", "useDocumentInfo", "t0", "config", "useConfig", "t1", "routes", "api", "showPasswordFields", "showUnlock", "hasPasswordFieldOverride", "passwordPermissions", "permissions", "getFieldPermissions", "field", "name", "parentName", "hasLoginFieldOverride", "t2", "emailPermission", "t3", "usernamePermission", "hasEmailAndUsernameFields", "enableFields", "disabled", "apiKeyPermissions", "fields", "apiKeyReadOnly", "enableAPIKeyReadOnly", "bb0", "Boolean", "hasPermissionToUnlock", "changingPassword_0", "type", "errorMessage", "path", "handleChangePassword", "t4", "url", "formatAdminURL", "apiRoute", "response", "body", "credentials", "headers", "ue", "status", "unlock", "t5", "t6", "useEffect", "canReadApiKey", "showAuthBlock", "t7", "_jsxs", "React", "children", "Fragment", "_jsx", "PasswordField", "autoComplete", "label", "indexPath", "parentPath", "parentSchemaPath", "schemaPath", "ConfirmPasswordField", "Button", "buttonStyle", "id", "onClick", "size", "admin", "APIKey", "enabled", "_temp2", "reducer", "c", "_c", "getTranslation", "formatAdminURL", "useEffect", "SetDocumentStepNav", "props", "$", "_c", "id", "collectionSlug", "globalSlug", "isTrashed", "pluralLabel", "useAsTitle", "view", "undefined", "isEditing", "isInitializing", "useDocumentInfo", "title", "useDocumentTitle", "isEntityVisible", "useEntityVisibility", "t0", "isVisible", "setStepNav", "useStepNav", "i18n", "t", "useTranslation", "config", "t1", "useConfig", "routes", "t2", "serverURL", "admin", "adminRoute", "t3", "nav", "push", "label", "getTranslation", "url", "formatAdminURL", "path", "t4", "useEffect", "c", "_c", "useEffect", "useRef", "SetDocumentTitle", "props", "$", "_c", "collectionConfig", "config", "fallback", "globalConfig", "useAsTitle", "admin", "t0", "t1", "fields", "field", "useFormFields", "hasInitialized", "useRef", "i18n", "useTranslation", "setDocumentTitle", "useDocumentTitle", "dateFormatFromConfig", "dateFormat", "value", "t2", "formatDocTitle", "data", "id", "title", "t3", "t4", "current", "useEffect", "baseClass", "DefaultEditView", "BeforeDocumentControls", "Description", "EditMenuItems", "CustomLivePreview", "LivePreview", "PreviewButton", "PublishButton", "SaveButton", "SaveDraftButton", "Status", "UnpublishButton", "Upload", "UploadControls", "id", "action", "AfterDocument", "AfterFields", "apiURL", "BeforeFields", "collectionSlug", "currentEditor", "data", "disableActions", "disableCreate", "disableLeaveWithoutSaving", "docPermissions", "documentIsLocked", "documentLockState", "getDocPermissions", "getDocPreferences", "globalSlug", "hasPublishPermission", "hasSavePermission", "incrementVersionCount", "initialState", "isEditing", "isInitializing", "isLocked", "isTrashed", "lastUpdateTime", "redirectAfterCreate", "redirectAfterDelete", "redirectAfterDuplicate", "redirectAfterRestore", "setCurrentEditor", "setData", "setDocumentIsLocked", "setLastUpdateTime", "unlockDocument", "updateDocumentEditor", "useDocumentInfo", "clearDoc", "drawerSlug", "onDelete", "onDuplicate", "onRestore", "onSave", "onSaveFromContext", "useDocumentDrawerContext", "isInDrawer", "refreshCookieAsync", "user", "useAuth", "config", "admin", "userSlug", "routes", "adminRoute", "serverURL", "getEntityConfig", "useConfig", "globalConfig", "depth", "useEditDepth", "router", "useRouter", "params", "reportUpdate", "useDocumentEvents", "resetUploadEdits", "useUploadEdits", "getFormState", "useServerFunctions", "startRouteTransition", "useRouteTransition", "clearRouteCache", "useRouteCache", "isLivePreviewEnabled", "isLivePreviewing", "previewWindowType", "setURL", "typeofLivePreviewURL", "url", "livePreviewURL", "useLivePreviewContext", "isPreviewEnabled", "setPreviewURL", "usePreviewURL", "useRef", "abortOnChangeRef", "abortOnSaveRef", "locale", "entitySlug", "slug", "operation", "collectionConfig", "auth", "undefined", "upload", "docConfig", "lockDocumentsProp", "lockDocuments", "lockDuration", "lockDurationInMilliseconds", "autosaveEnabled", "hasAutosaveEnabled", "useState", "isReadOnlyForIncomingUser", "setIsReadOnlyForIncomingUser", "showTakeOverModal", "setShowTakeOverModal", "lockExpiryTime", "editSessionStartTime", "setEditSessionStartTime", "isLockExpired", "preventLeaveWithoutSaving", "schemaPathSegments", "useMemo", "validateBeforeSubmit", "setValidateBeforeSubmit", "nextHrefRef", "React", "lockedState", "handleDocumentLocking", "previousOwnerID", "current", "lockedUserID", "hasShownLockedModal", "lastEditedAt", "useCallback", "handlePrevent", "handleLeaveConfirm", "lockUser", "isLockingEnabled", "isLockOwnedByCurrentUser", "nextPath", "URL", "pathname", "path", "isInternalView", "err", "context", "formState", "ctx", "handleAbortRef", "controller", "json", "document", "result", "updatedAt", "operation_0", "message", "window", "redirectRoute", "formatAdminURL", "docPreferences", "livePreviewURL_0", "previewURL", "state", "renderAllFields", "returnLivePreviewURL", "returnLockStatus", "returnPreviewURL", "schemaPath", "signal", "setLivePreviewURL", "doc", "onChange", "submitted", "controller_0", "currentTime", "timeSinceLastUpdate", "updateLastEdited", "docPreferences_0", "skipValidation", "lockedState_0", "useEffect", "abortOnChange", "abortOnSave", "abortAndIgnore", "PENDING_SUCCESS_TOAST_KEY", "pendingMessage", "sessionStorage", "removeItem", "shouldShowDocumentLockedModal", "isFolderCollection", "className", "_jsx", "OperationProvider", "_jsxs", "Form", "disabled", "disableSuccessStatus", "disableValidationOnSubmit", "isDocumentForm", "method", "onSuccess", "DocumentDrawerHeader", "AfterHeader", "showDocumentID", "handleGoBack", "isActive", "onReadOnly", "handleTakeOver", "onTakeOver", "documentLockStateRef", "isWithinDoc", "handleBackToDashboard", "LeaveWithoutSaving", "onConfirm", "onPrevent", "pluralLabel", "useAsTitle", "fallback", "customComponents", "onDrawerCreateNew", "permissions", "readOnlyForIncomingUser", "DocumentFields", "Fragment", "Auth", "disableLocalStrategy", "email", "loginWithUsername", "readOnly", "requirePassword", "useAPIKey", "username", "verify", "CustomUpload", "UploadControlsProvider", "uploadConfig", "fields", "forceSidebarWrap", "_Fragment", "baseClass", "children", "className", "getTranslation", "baseClass", "FieldDiffLabel", "args", "className", "From", "i18n", "label", "nestingLevel", "To", "_jsxs", "locale", "style", "gridTemplateColumns", "undefined"]
}