{ "version": 3, "sources": ["../../../src/elements/Translation/index.tsx", "../../../src/elements/withMergedProps/index.tsx", "../../../src/elements/WithServerSideProps/index.tsx", "../../../src/fields/mergeFieldStyles.ts", "../../../src/forms/Form/reduceToSerializableFields.ts", "../../../src/graphics/Icon/index.tsx", "../../../src/graphics/Logo/index.tsx", "../../../src/providers/TableColumns/buildColumnState/filterFields.tsx", "../../../src/providers/TableColumns/getInitialColumns.ts", "../../../src/utilities/abortAndIgnore.ts", "../../../src/utilities/api.ts", "../../../src/utilities/findLocaleFromCode.ts", "../../../src/utilities/formatAdminURL.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", "../../../src/utilities/formatDocTitle/formatDateTitle.ts", "../../../src/utilities/formatDocTitle/index.ts", "../../../src/utilities/formatDocTitle/formatLexicalDocTitle.ts", "../../../src/utilities/formatDocTitle/formatRelationshipTitle.ts", "../../../src/utilities/getGlobalData.ts", "../../../src/utilities/groupNavItems.ts", "../../../src/utilities/getNavGroups.ts", "../../../src/utilities/getVisibleEntities.ts", "../../../src/utilities/handleBackToDashboard.tsx", "../../../src/utilities/handleGoBack.tsx", "../../../src/utilities/handleTakeOver.tsx", "../../../src/utilities/hasSavePermission.ts", "../../../src/utilities/isClientUserObject.ts", "../../../src/utilities/isEditing.ts", "../../../src/utilities/sanitizeID.ts", "../../../src/utilities/traverseForLocalizedFields.ts", "../../../src/exports/shared/index.ts"], "sourcesContent": ["import type { ClientTranslationKeys, TFunction } from '@payloadcms/translations'\n\nimport * as React from 'react'\n\nconst RecursiveTranslation: React.FC<{\n elements?: Record>\n translationString: string\n}> = ({ elements, translationString }) => {\n const regex = /(<[^>]+>.*?<\\/[^>]+>)/g\n const sections = translationString.split(regex)\n\n return (\n \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 \n \n \n )\n }\n }\n\n return section\n })}\n \n )\n}\n\nexport type TranslationProps = {\n elements?: Record>\n i18nKey: ClientTranslationKeys\n t: TFunction\n variables?: Record\n}\n\nexport const Translation: React.FC = ({ elements, i18nKey, t, variables }) => {\n const stringWithVariables = t(i18nKey, variables || {})\n\n if (!elements) {\n return stringWithVariables\n }\n\n return \n}\n", "import { isReactServerComponentOrFunction, serverProps } from 'payload/shared'\nimport React from 'react'\n\n/**\n * Creates a higher-order component (HOC) that merges predefined properties (`toMergeIntoProps`)\n * with any properties passed to the resulting component.\n *\n * Use this when you want to pre-specify some props for a component, while also allowing users to\n * pass in their own props. The HOC ensures the passed props and predefined props are combined before\n * rendering the original component.\n *\n * @example\n * const PredefinedComponent = getMergedPropsComponent({\n * Component: OriginalComponent,\n * toMergeIntoProps: { someExtraValue: 5 }\n * });\n * // Using will result in\n * // \n *\n * @returns A higher-order component with combined properties.\n *\n * @param Component - The original component to wrap.\n * @param sanitizeServerOnlyProps - If true, server-only props will be removed from the merged props. @default true if the component is not a server component, false otherwise.\n * @param toMergeIntoProps - The properties to merge into the passed props.\n */\nexport function withMergedProps({\n Component,\n sanitizeServerOnlyProps,\n toMergeIntoProps,\n}: {\n Component: React.FC\n sanitizeServerOnlyProps?: boolean\n toMergeIntoProps: ToMergeIntoProps\n}): React.FC {\n if (sanitizeServerOnlyProps === undefined) {\n sanitizeServerOnlyProps = !isReactServerComponentOrFunction(Component)\n }\n // A wrapper around the args.Component to inject the args.toMergeArgs as props, which are merged with the passed props\n const MergedPropsComponent: React.FC = (passedProps) => {\n const mergedProps = simpleMergeProps(passedProps, toMergeIntoProps) as CompleteReturnProps\n\n if (sanitizeServerOnlyProps) {\n serverProps.forEach((prop) => {\n delete mergedProps[prop]\n })\n }\n\n return \n }\n\n return MergedPropsComponent\n}\n\nfunction simpleMergeProps(props, toMerge) {\n return { ...props, ...toMerge }\n}\n", "import type { WithServerSidePropsComponent } from 'payload'\n\nimport { isReactServerComponentOrFunction } from 'payload/shared'\nimport React from 'react'\n\nexport const WithServerSideProps: WithServerSidePropsComponent = ({\n Component,\n serverOnlyProps,\n ...rest\n}) => {\n if (Component) {\n const WithServerSideProps: React.FC = (passedProps) => {\n const propsWithServerOnlyProps = {\n ...passedProps,\n ...(isReactServerComponentOrFunction(Component) ? (serverOnlyProps ?? {}) : {}),\n }\n\n return \n }\n\n return WithServerSideProps(rest)\n }\n\n return null\n}\n", "import type { ClientField } from 'payload'\n\nexport const mergeFieldStyles = (\n field: ClientField | Omit,\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", "import { type FormField, type FormState } from 'payload'\n\ntype BlacklistedKeys = 'customComponents' | 'validate'\nconst blacklistedKeys: BlacklistedKeys[] = ['validate', 'customComponents']\n\nconst sanitizeField = (incomingField: FormField): FormField => {\n const field = { ...incomingField } // shallow copy, as we only need to remove top-level keys\n\n for (const key of blacklistedKeys) {\n delete field[key]\n }\n\n return field\n}\n\n/**\n * Takes in FormState and removes fields that are not serializable.\n * Returns FormState without blacklisted keys.\n */\nexport const reduceToSerializableFields = (\n fields: FormState,\n): {\n [key: string]: Omit\n} => {\n const result: Record> = {}\n\n for (const key in fields) {\n result[key] = sanitizeField(fields[key])\n }\n\n return result\n}\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 \n \n \n \n )\n}\n", "import React from 'react'\n\nconst css = `\n .graphic-logo path {\n fill: var(--theme-elevation-1000);\n }\n`\n\nexport const PayloadLogo: React.FC = () => (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n)\n", "import type { ClientField, Field } from 'payload'\n\nimport { fieldIsHiddenOrDisabled, fieldIsID } from 'payload/shared'\n\n/**\n * Filters fields that are hidden, disabled, or have `disableListColumn` set to `true`.\n * Recurses through `tabs` and any container with `.fields` (e.g., `row`, `group`, `collapsible`).\n */\nexport const filterFields = (incomingFields: T[]): T[] => {\n const shouldSkipField = (field: T): boolean =>\n (field.type !== 'ui' && fieldIsHiddenOrDisabled(field) && !fieldIsID(field)) ||\n field?.admin?.disableListColumn === true\n\n return (incomingFields ?? []).reduce((acc, field) => {\n if (shouldSkipField(field)) {\n return acc\n }\n\n // handle tabs\n if (field.type === 'tabs' && 'tabs' in field) {\n const formattedField: T = {\n ...field,\n tabs: field.tabs.map((tab) => ({\n ...tab,\n fields: filterFields(tab.fields as T[]),\n })),\n }\n acc.push(formattedField)\n return acc\n }\n\n // handle fields with subfields (row, group, collapsible, etc.)\n if ('fields' in field && Array.isArray(field.fields)) {\n const formattedField: T = {\n ...field,\n fields: filterFields(field.fields as T[]),\n }\n acc.push(formattedField)\n return acc\n }\n\n // leaf\n acc.push(field)\n return acc\n }, [])\n}\n", "import type { ClientField, CollectionConfig, CollectionPreferences, Field } from 'payload'\n\nimport { fieldAffectsData } from 'payload/shared'\n\nconst getRemainingColumns = (\n fields: T,\n useAsTitle: string,\n): CollectionPreferences['columns'] =>\n fields?.reduce((remaining, field) => {\n if (fieldAffectsData(field) && field.name === useAsTitle) {\n return remaining\n }\n\n if (!fieldAffectsData(field) && 'fields' in field) {\n return [...remaining, ...getRemainingColumns(field.fields, useAsTitle)]\n }\n\n if (field.type === 'tabs' && 'tabs' in field) {\n return [\n ...remaining,\n ...field.tabs.reduce(\n (tabFieldColumns, tab) => [\n ...tabFieldColumns,\n ...('name' in tab ? [tab.name] : getRemainingColumns(tab.fields, useAsTitle)),\n ],\n [],\n ),\n ]\n }\n\n return [...remaining, field.name]\n }, [])\n\n/**\n * Returns the initial columns to display in the table based on the following criteria:\n * 1. If `defaultColumns` is set in the collection config, use those columns\n * 2. Otherwise take `useAtTitle, if set, and the next 3 fields that are not hidden or disabled\n */\nexport const getInitialColumns = (\n fields: T,\n useAsTitle: CollectionConfig['admin']['useAsTitle'],\n defaultColumns: CollectionConfig['admin']['defaultColumns'],\n): CollectionPreferences['columns'] => {\n let initialColumns = []\n\n if (Array.isArray(defaultColumns) && defaultColumns.length >= 1) {\n initialColumns = defaultColumns\n } else {\n if (useAsTitle) {\n initialColumns.push(useAsTitle)\n }\n\n const remainingColumns = getRemainingColumns(fields, useAsTitle)\n\n initialColumns = initialColumns.concat(remainingColumns)\n initialColumns = initialColumns.slice(0, 4)\n }\n\n return initialColumns.map((column) => ({\n accessor: column,\n active: true,\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,\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 * as qs from 'qs-esm'\n\ntype GetOptions = {\n params?: Record\n} & RequestInit\n\nexport const requests = {\n delete: (url: string, options: RequestInit = { headers: {} }): Promise => {\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 => {\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 => {\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 => {\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 => {\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", "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", "/** Will read the `routes.admin` config and appropriately handle `\"/\"` admin paths */\nexport { formatAdminURL } from 'payload/shared'\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}", "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 | I18nClient\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 | I18nClient\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", "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\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", "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 { ClientUser, PayloadRequest, TypedUser } from 'payload'\n\nconst globalLockDurationDefault = 300\n\nexport async function getGlobalData(req: PayloadRequest) {\n const {\n payload: { config },\n payload,\n } = req\n // Query locked global documents only if there are globals in the config\n // This type is repeated from DashboardViewServerPropsOnly['globalData'].\n // I thought about moving it to a payload to share it, but we're already\n // exporting all the views props from the next package.\n let globalData: Array<{\n data: { _isLocked: boolean; _lastEditedAt: string; _userEditing: ClientUser | number | string }\n lockDuration?: number\n slug: string\n }> = []\n\n if (config.globals.length > 0) {\n if (payload.collections?.['payload-locked-documents']) {\n const lockedDocuments = await payload.find({\n collection: 'payload-locked-documents',\n depth: 1,\n overrideAccess: false,\n pagination: false,\n req,\n select: {\n globalSlug: true,\n updatedAt: true,\n user: true,\n },\n where: {\n globalSlug: {\n exists: true,\n },\n },\n })\n\n // Map over globals to include `lockDuration` and lock data for each global slug\n globalData = config.globals.map((global) => {\n const lockDuration =\n typeof global.lockDocuments === 'object'\n ? global.lockDocuments.duration\n : globalLockDurationDefault\n\n const lockedDoc = lockedDocuments.docs.find((doc) => doc.globalSlug === global.slug)\n\n return {\n slug: global.slug,\n data: {\n _isLocked: !!lockedDoc,\n _lastEditedAt: (lockedDoc?.updatedAt as string) ?? null,\n _userEditing: (lockedDoc?.user as { value?: TypedUser })?.value ?? null,\n },\n lockDuration,\n }\n })\n } else {\n // If locked-documents collection doesn't exist, return globals without lock data\n globalData = config.globals.map((global) => {\n const lockDuration =\n typeof global.lockDocuments === 'object'\n ? global.lockDocuments.duration\n : globalLockDurationDefault\n\n return {\n slug: global.slug,\n data: {\n _isLocked: false,\n _lastEditedAt: null,\n _userEditing: null,\n },\n lockDuration,\n }\n })\n }\n }\n\n return globalData\n}\n", "import type { I18nClient } from '@payloadcms/translations'\nimport type {\n SanitizedCollectionConfig,\n SanitizedGlobalConfig,\n SanitizedPermissions,\n StaticLabel,\n} from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\n\n/**\n * @deprecated Import from `payload` instead\n */\nexport enum EntityType {\n collection = 'collections',\n global = 'globals',\n}\n\nexport type EntityToGroup =\n | {\n entity: SanitizedCollectionConfig\n type: EntityType.collection\n }\n | {\n entity: SanitizedGlobalConfig\n type: EntityType.global\n }\n\nexport type NavGroupType = {\n entities: {\n label: StaticLabel\n slug: string\n type: EntityType\n }[]\n label: string\n}\n\nexport function groupNavItems(\n entities: EntityToGroup[],\n permissions: SanitizedPermissions,\n i18n: I18nClient,\n): NavGroupType[] {\n const result = entities.reduce(\n (groups, entityToGroup) => {\n // Skip entities where admin.group is explicitly false\n if (entityToGroup.entity?.admin?.group === false) {\n return groups\n }\n\n if (permissions?.[entityToGroup.type.toLowerCase()]?.[entityToGroup.entity.slug]?.read) {\n const translatedGroup = getTranslation(entityToGroup.entity.admin.group, i18n)\n\n const labelOrFunction =\n 'labels' in entityToGroup.entity\n ? entityToGroup.entity.labels.plural\n : entityToGroup.entity.label\n\n const label =\n typeof labelOrFunction === 'function'\n ? labelOrFunction({ i18n, t: i18n.t })\n : labelOrFunction\n\n if (entityToGroup.entity.admin.group) {\n const existingGroup = groups.find(\n (group) => getTranslation(group.label, i18n) === translatedGroup,\n ) as NavGroupType\n\n let matchedGroup: NavGroupType = existingGroup\n\n if (!existingGroup) {\n matchedGroup = { entities: [], label: translatedGroup }\n groups.push(matchedGroup)\n }\n\n matchedGroup.entities.push({\n slug: entityToGroup.entity.slug,\n type: entityToGroup.type,\n label,\n })\n } else {\n const defaultGroup = groups.find((group) => {\n return getTranslation(group.label, i18n) === i18n.t(`general:${entityToGroup.type}`)\n }) as NavGroupType\n defaultGroup.entities.push({\n slug: entityToGroup.entity.slug,\n type: entityToGroup.type,\n label,\n })\n }\n }\n\n return groups\n },\n [\n {\n entities: [],\n label: i18n.t('general:collections'),\n },\n {\n entities: [],\n label: i18n.t('general:globals'),\n },\n ],\n )\n\n return result.filter((group) => group.entities.length > 0)\n}\n", "import type { SanitizedConfig, SanitizedPermissions, VisibleEntities } from 'payload'\n\nimport { type I18nClient } from '@payloadcms/translations'\n\nimport { EntityType } from './groupNavItems.js'\nimport { type EntityToGroup, groupNavItems } from './groupNavItems.js'\n\n/** @internal */\nexport function getNavGroups(\n permissions: SanitizedPermissions,\n visibleEntities: VisibleEntities,\n config: SanitizedConfig,\n i18n: I18nClient,\n) {\n const collections = config.collections.filter(\n (collection) =>\n permissions?.collections?.[collection.slug]?.read &&\n visibleEntities.collections.includes(collection.slug),\n )\n\n const globals = config.globals.filter(\n (global) =>\n permissions?.globals?.[global.slug]?.read && visibleEntities.globals.includes(global.slug),\n )\n\n const navGroups = groupNavItems(\n [\n ...(collections.map((collection) => {\n const entityToGroup: EntityToGroup = {\n type: EntityType.collection,\n entity: collection,\n }\n\n return entityToGroup\n }) ?? []),\n ...(globals.map((global) => {\n const entityToGroup: EntityToGroup = {\n type: EntityType.global,\n entity: global,\n }\n\n return entityToGroup\n }) ?? []),\n ],\n permissions,\n i18n,\n )\n\n return navGroups\n}\n", "import type { PayloadRequest, VisibleEntities } from 'payload'\n\ntype Hidden = ((args: { user: unknown }) => boolean) | boolean\n\nfunction isHidden(hidden: Hidden | undefined, user: unknown): boolean {\n if (typeof hidden === 'function') {\n try {\n return hidden({ user })\n } catch {\n return true\n }\n }\n return !!hidden\n}\n\nexport function getVisibleEntities({ req }: { req: PayloadRequest }): VisibleEntities {\n return {\n collections: req.payload.config.collections\n .map(({ slug, admin: { hidden } }) => (!isHidden(hidden, req.user) ? slug : null))\n .filter(Boolean),\n globals: req.payload.config.globals\n .map(({ slug, admin: { hidden } }) => (!isHidden(hidden, req.user) ? slug : null))\n .filter(Boolean),\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) => void\n setIsReadOnlyForIncomingUser?: (value: React.SetStateAction) => void\n updateDocumentEditor: (\n docID: number | string,\n slug: string,\n user: ClientUser | number | string,\n ) => Promise\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 => {\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", "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", "import type { ClientUser } from 'payload'\n\nexport const isClientUserObject = (user): user is ClientUser => {\n return user && typeof user === 'object'\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", "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", "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", "export { Translation } from '../../elements/Translation/index.js'\nexport { withMergedProps } from '../../elements/withMergedProps/index.js' // cannot be within a 'use client', thus we export this from shared\nexport { WithServerSideProps } from '../../elements/WithServerSideProps/index.js'\nexport { mergeFieldStyles } from '../../fields/mergeFieldStyles.js'\nexport { reduceToSerializableFields } from '../../forms/Form/reduceToSerializableFields.js'\nexport { PayloadIcon } from '../../graphics/Icon/index.js'\nexport { PayloadLogo } from '../../graphics/Logo/index.js'\n// IMPORTANT: the shared.ts file CANNOT contain any Server Components _that import client components_.\nexport { filterFields } from '../../providers/TableColumns/buildColumnState/filterFields.js'\nexport { getInitialColumns } from '../../providers/TableColumns/getInitialColumns.js'\nexport { abortAndIgnore, handleAbortRef } from '../../utilities/abortAndIgnore.js'\nexport { requests } from '../../utilities/api.js'\nexport { findLocaleFromCode } from '../../utilities/findLocaleFromCode.js'\nexport { formatAdminURL } from '../../utilities/formatAdminURL.js'\nexport { formatDate } from '../../utilities/formatDocTitle/formatDateTitle.js'\nexport { formatDocTitle } from '../../utilities/formatDocTitle/index.js'\nexport { getGlobalData } from '../../utilities/getGlobalData.js'\nexport { getNavGroups } from '../../utilities/getNavGroups.js'\nexport { getVisibleEntities } from '../../utilities/getVisibleEntities.js'\nexport {\n type EntityToGroup,\n EntityType,\n groupNavItems,\n type NavGroupType,\n} from '../../utilities/groupNavItems.js'\nexport { handleBackToDashboard } from '../../utilities/handleBackToDashboard.js'\nexport { handleGoBack } from '../../utilities/handleGoBack.js'\nexport { handleTakeOver } from '../../utilities/handleTakeOver.js'\nexport { hasSavePermission } from '../../utilities/hasSavePermission.js'\nexport { isClientUserObject } from '../../utilities/isClientUserObject.js'\nexport { isEditing } from '../../utilities/isEditing.js'\nexport { sanitizeID } from '../../utilities/sanitizeID.js'\nexport { traverseForLocalizedFields } from '../../utilities/traverseForLocalizedFields.js'\n/**\n * @deprecated\n * The `mergeListSearchAndWhere` function is deprecated.\n * Import this from `payload/shared` instead.\n */\nexport { mergeListSearchAndWhere } from 'payload/shared'\n"], "mappings": "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", "names": ["RecursiveTranslation", "elements", "translationString", "regex", "sections", "split", "_jsx", "map", "section", "index", "startsWith", "endsWith", "elementKey", "Element", "RegExp", "children", "replace", "_", "group", "Translation", "i18nKey", "t", "variables", "stringWithVariables", "isReactServerComponentOrFunction", "serverProps", "withMergedProps", "Component", "sanitizeServerOnlyProps", "toMergeIntoProps", "undefined", "passedProps", "mergedProps", "simpleMergeProps", "forEach", "prop", "_jsx", "props", "toMerge", "isReactServerComponentOrFunction", "WithServerSideProps", "Component", "serverOnlyProps", "rest", "passedProps", "propsWithServerOnlyProps", "_jsx", "mergeFieldStyles", "field", "admin", "style", "width", "flex", "blacklistedKeys", "sanitizeField", "incomingField", "field", "key", "reduceToSerializableFields", "fields", "result", "PayloadIcon", "fill", "fillFromProps", "_jsxs", "className", "height", "viewBox", "width", "xmlns", "_jsx", "d", "css", "PayloadLogo", "_jsxs", "className", "fill", "height", "id", "viewBox", "width", "xmlns", "_jsx", "d", "fieldIsHiddenOrDisabled", "fieldIsID", "filterFields", "incomingFields", "shouldSkipField", "field", "type", "admin", "disableListColumn", "reduce", "acc", "formattedField", "tabs", "map", "tab", "fields", "push", "Array", "isArray", "fieldAffectsData", "getRemainingColumns", "fields", "useAsTitle", "reduce", "remaining", "field", "name", "type", "tabs", "tabFieldColumns", "tab", "getInitialColumns", "defaultColumns", "initialColumns", "Array", "isArray", "length", "push", "remainingColumns", "concat", "slice", "map", "column", "accessor", "active", "abortAndIgnore", "abortController", "abort", "handleAbortRef", "abortControllerRef", "newController", "AbortController", "current", "qs", "requests", "delete", "url", "options", "headers", "formattedOptions", "credentials", "method", "fetch", "get", "query", "params", "stringify", "addQueryPrefix", "patch", "post", "put", "findLocaleFromCode", "localizationConfig", "locale", "locales", "length", "find", "el", "code", "formatAdminURL", "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", "format", "formatDistanceToNow", "transpose", "formatDate", "date", "i18n", "pattern", "timezone", "theDate", "TZDate", "Date", "DateWithOriginalTz", "tz", "modifiedDate", "withTimeZone", "dateWithTimezone", "dateFNS", "locale", "t", "getTranslation", "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", "getGlobalData", "req", "payload", "config", "globalData", "globals", "length", "collections", "lockedDocuments", "find", "collection", "depth", "overrideAccess", "pagination", "select", "globalSlug", "updatedAt", "user", "where", "exists", "map", "global", "lockDuration", "lockDocuments", "duration", "globalLockDurationDefault", "lockedDoc", "docs", "doc", "slug", "data", "_isLocked", "_lastEditedAt", "_userEditing", "value", "getTranslation", "EntityType", "groupNavItems", "entities", "permissions", "i18n", "reduce", "groups", "entityToGroup", "entity", "admin", "group", "type", "toLowerCase", "slug", "read", "translatedGroup", "labelOrFunction", "labels", "plural", "label", "t", "existingGroup", "find", "matchedGroup", "push", "filter", "length", "getNavGroups", "permissions", "visibleEntities", "config", "i18n", "collections", "filter", "collection", "slug", "read", "includes", "globals", "global", "groupNavItems", "map", "type", "EntityType", "entity", "isHidden", "hidden", "user", "getVisibleEntities", "req", "collections", "payload", "config", "map", "slug", "admin", "filter", "Boolean", "globals", "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", "hasSavePermission", "args", "collectionSlug", "docPermissions", "globalSlug", "isEditing", "Boolean", "update", "create", "isClientUserObject", "user", "isEditing", "id", "collectionSlug", "globalSlug", "Boolean", "sanitizeID", "id", "undefined", "decodeURIComponent", "traverseForLocalizedFields", "fields", "field", "localized", "type", "blocks", "block", "tabs", "tab", "mergeListSearchAndWhere"] }