@payloadcms/ui 3.28.0-internal.c4e1bed → 3.28.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (40) hide show
  1. package/dist/elements/CodeEditor/CodeEditor.d.ts.map +1 -1
  2. package/dist/elements/CodeEditor/CodeEditor.js +19 -16
  3. package/dist/elements/CodeEditor/CodeEditor.js.map +1 -1
  4. package/dist/elements/Thumbnail/index.d.ts.map +1 -1
  5. package/dist/elements/Thumbnail/index.js +2 -0
  6. package/dist/elements/Thumbnail/index.js.map +1 -1
  7. package/dist/exports/client/{CodeEditor-L6GW2VQ6.js → CodeEditor-TQ5ADFPC.js} +2 -2
  8. package/dist/exports/client/{chunk-ZZDNSFEW.js → chunk-LMYT7O7U.js} +6 -6
  9. package/dist/exports/client/chunk-LMYT7O7U.js.map +7 -0
  10. package/dist/exports/client/index.js +23 -23
  11. package/dist/exports/client/index.js.map +4 -4
  12. package/dist/fields/Array/index.js +1 -1
  13. package/dist/fields/Array/index.js.map +1 -1
  14. package/dist/fields/Blocks/index.js +1 -1
  15. package/dist/fields/Blocks/index.js.map +1 -1
  16. package/dist/fields/Password/index.d.ts.map +1 -1
  17. package/dist/fields/Password/index.js +3 -1
  18. package/dist/fields/Password/index.js.map +1 -1
  19. package/dist/forms/Form/index.d.ts.map +1 -1
  20. package/dist/forms/Form/index.js +18 -22
  21. package/dist/forms/Form/index.js.map +1 -1
  22. package/dist/forms/NullifyField/index.d.ts.map +1 -1
  23. package/dist/forms/NullifyField/index.js +4 -2
  24. package/dist/forms/NullifyField/index.js.map +1 -1
  25. package/dist/forms/useField/index.d.ts.map +1 -1
  26. package/dist/forms/useField/index.js +102 -91
  27. package/dist/forms/useField/index.js.map +1 -1
  28. package/dist/hooks/useQueues.d.ts +4 -0
  29. package/dist/hooks/useQueues.d.ts.map +1 -0
  30. package/dist/hooks/useQueues.js +43 -0
  31. package/dist/hooks/useQueues.js.map +1 -0
  32. package/dist/providers/Locale/index.d.ts.map +1 -1
  33. package/dist/providers/Locale/index.js +8 -6
  34. package/dist/providers/Locale/index.js.map +1 -1
  35. package/dist/views/Edit/Auth/APIKey.d.ts.map +1 -1
  36. package/dist/views/Edit/Auth/APIKey.js +1 -0
  37. package/dist/views/Edit/Auth/APIKey.js.map +1 -1
  38. package/package.json +4 -4
  39. package/dist/exports/client/chunk-ZZDNSFEW.js.map +0 -7
  40. /package/dist/exports/client/{CodeEditor-L6GW2VQ6.js.map → CodeEditor-TQ5ADFPC.js.map} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["c","_c","useCallback","useMemo","useRef","useThrottledEffect","useAuth","useConfig","useDocumentInfo","useOperation","useTranslation","useDocumentForm","useForm","useFormFields","useFormInitializing","useFormModified","useFormProcessing","useFormSubmitted","useField","options","$","disableFormData","t0","hasRows","path","validate","undefined","submitted","processing","initializing","user","id","collectionSlug","operation","dispatchField","_temp","t1","t2","fields","field","t","config","getData","getDataByPath","getSiblingData","setModified","documentForm","modified","filterOptions","value","initialValue","valid","showError","prevValid","prevErrorMessage","errorMessage","e","t3","disableModifyingForm","val","target","type","setTimeout","setValue","t4","customComponents","t5","t6","errorPaths","t7","rows","t8","t9","formInitializing","formProcessing","formSubmitted","result","t10","validateField","valueToValidate","Array","isArray","current","valid_0","data","isValid","blockData","event","preferences","req","payload","siblingData","update","t11","t12","dispatch"],"sources":["../../../src/forms/useField/index.tsx"],"sourcesContent":["'use client'\nimport type { PayloadRequest } from 'payload'\n\nimport { 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 useFormModified,\n useFormProcessing,\n useFormSubmitted,\n} from '../Form/context.js'\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 { disableFormData = false, hasRows, path, validate } = options\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 const modified = useFormModified()\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 // Method to return from `useField`, used to\n // update field values from field component(s)\n const setValue = useCallback(\n (e, disableModifyingForm = false) => {\n const val = e && e.target ? e.target.value : e\n dispatchField({\n type: 'UPDATE',\n disableFormData: disableFormData || (hasRows && val > 0),\n path,\n value: val,\n })\n\n if (!disableModifyingForm) {\n if (typeof setModified === 'function') {\n // Only update setModified to true if the form is not already set to modified. Otherwise the following could happen:\n // 1. Text field: someone types in it in an unmodified form\n // 2. After setTimeout triggers setModified(true): form is set to modified. Save Button becomes available. Good!\n // 3. Type something in text field\n // 4. Click on save button before setTimeout in useField has finished (so setModified(true) has not been run yet)\n // 5. Form is saved, setModified(false) is set in the Form/index.tsx `submit` function, \"saved successfully\" toast appears\n // 6. setModified(true) inside the timeout is run, form is set to modified again, even though it was already saved and thus set to unmodified. Bad! This should have happened before the form is saved. Now the form should be unmodified and stay that way\n // until a NEW change happens. Due to this, the \"Leave without saving\" modal appears even though it should not when leaving the page fast immediately after saving the document.\n // This is only an issue for forms which have already been set to modified true, as that causes the save button to be enabled. If we prevent this setTimeout to be run\n // for already-modified forms first place (which is unnecessary), we can avoid this issue. As for unmodified forms, this race issue will not happen, because you cannot click the save button faster\n // than the timeout in useField is run. That's because the save button won't even be enabled for clicking until the setTimeout in useField has run.\n // This fixes e2e test flakes, as e2e tests were often so fast that they were saving the form before the timeout in useField has run.\n // Specifically, this fixes the 'should not warn about unsaved changes when navigating to lexical editor with blocks node and then leaving the page after making a change and saving' lexical e2e test.\n if (modified === false) {\n // Update modified state after field value comes back\n // to avoid cursor jump caused by state value / DOM mismatch\n setTimeout(() => {\n setModified(true)\n }, 10)\n }\n }\n }\n },\n [setModified, path, dispatchField, disableFormData, hasRows, modified],\n )\n\n // Store result from hook as ref\n // to prevent unnecessary rerenders\n const result: FieldType<TValue> = useMemo(\n () => ({\n customComponents: field?.customComponents,\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 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 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"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["c","_c","useCallback","useMemo","useRef","useThrottledEffect","useAuth","useConfig","useDocumentInfo","useOperation","useTranslation","useDocumentForm","useForm","useFormFields","useFormInitializing","useFormModified","useFormProcessing","useFormSubmitted","useField","options","$","disableFormData","t0","hasRows","path","validate","undefined","submitted","processing","initializing","user","id","collectionSlug","operation","dispatchField","_temp","t1","t2","fields","field","t","config","getData","getDataByPath","getSiblingData","setModified","documentForm","modified","filterOptions","value","initialValue","valid","showError","prevValid","prevErrorMessage","errorMessage","split","pathSegments","t3","e","t4","disableModifyingForm","val","target","type","setTimeout","setValue","t5","customComponents","t6","t7","errorPaths","t8","rows","t9","t10","formInitializing","formProcessing","formSubmitted","result","t11","validateField","valueToValidate","Array","isArray","current","valid_0","data","isValid","blockData","event","preferences","req","payload","siblingData","update","t12","t13","dispatch"],"sources":["../../../src/forms/useField/index.tsx"],"sourcesContent":["'use client'\nimport type { PayloadRequest } from 'payload'\n\nimport { 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 useFormModified,\n useFormProcessing,\n useFormSubmitted,\n} from '../Form/context.js'\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 { disableFormData = false, hasRows, path, validate } = options\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 const modified = useFormModified()\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 const val = e && e.target ? e.target.value : e\n dispatchField({\n type: 'UPDATE',\n disableFormData: disableFormData || (hasRows && val > 0),\n path,\n value: val,\n })\n\n if (!disableModifyingForm) {\n if (typeof setModified === 'function') {\n // Only update setModified to true if the form is not already set to modified. Otherwise the following could happen:\n // 1. Text field: someone types in it in an unmodified form\n // 2. After setTimeout triggers setModified(true): form is set to modified. Save Button becomes available. Good!\n // 3. Type something in text field\n // 4. Click on save button before setTimeout in useField has finished (so setModified(true) has not been run yet)\n // 5. Form is saved, setModified(false) is set in the Form/index.tsx `submit` function, \"saved successfully\" toast appears\n // 6. setModified(true) inside the timeout is run, form is set to modified again, even though it was already saved and thus set to unmodified. Bad! This should have happened before the form is saved. Now the form should be unmodified and stay that way\n // until a NEW change happens. Due to this, the \"Leave without saving\" modal appears even though it should not when leaving the page fast immediately after saving the document.\n // This is only an issue for forms which have already been set to modified true, as that causes the save button to be enabled. If we prevent this setTimeout to be run\n // for already-modified forms first place (which is unnecessary), we can avoid this issue. As for unmodified forms, this race issue will not happen, because you cannot click the save button faster\n // than the timeout in useField is run. That's because the save button won't even be enabled for clicking until the setTimeout in useField has run.\n // This fixes e2e test flakes, as e2e tests were often so fast that they were saving the form before the timeout in useField has run.\n // Specifically, this fixes the 'should not warn about unsaved changes when navigating to lexical editor with blocks node and then leaving the page after making a change and saving' lexical e2e test.\n if (modified === false) {\n // Update modified state after field value comes back\n // to avoid cursor jump caused by state value / DOM mismatch\n setTimeout(() => {\n setModified(true)\n }, 10)\n }\n }\n }\n },\n [setModified, path, dispatchField, disableFormData, hasRows, modified],\n )\n\n // Store result from hook as ref\n // to prevent unnecessary rerenders\n const result: FieldType<TValue> = useMemo(\n () => ({\n customComponents: field?.customComponents,\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 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"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,4 @@
1
+ export declare function useQueues(): {
2
+ queueTask: (fn: (signal: AbortSignal) => Promise<void>) => void;
3
+ };
4
+ //# sourceMappingURL=useQueues.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useQueues.d.ts","sourceRoot":"","sources":["../../src/hooks/useQueues.ts"],"names":[],"mappings":"AAEA,wBAAgB,SAAS,IAAI;IAC3B,SAAS,EAAE,CAAC,EAAE,EAAE,CAAC,MAAM,EAAE,WAAW,KAAK,OAAO,CAAC,IAAI,CAAC,KAAK,IAAI,CAAA;CAChE,CA2CA"}
@@ -0,0 +1,43 @@
1
+ import { useRef } from 'react';
2
+ export function useQueues() {
3
+ const runningTaskRef = useRef(null);
4
+ const queuedTask = useRef(null);
5
+ const abortControllerRef = useRef(null);
6
+ const queueTask = fn => {
7
+ // Overwrite the queued task every time a new one arrives
8
+ queuedTask.current = fn;
9
+ // If a task is already running, abort it and return
10
+ if (runningTaskRef.current !== null) {
11
+ if (abortControllerRef.current) {
12
+ abortControllerRef.current.abort();
13
+ }
14
+ return;
15
+ }
16
+ const executeTask = async () => {
17
+ while (queuedTask.current) {
18
+ const taskToRun = queuedTask.current;
19
+ queuedTask.current = null // Reset latest task before running
20
+ ;
21
+ const controller = new AbortController();
22
+ abortControllerRef.current = controller;
23
+ try {
24
+ runningTaskRef.current = taskToRun(controller.signal);
25
+ await runningTaskRef.current // Wait for the task to complete
26
+ ;
27
+ } catch (err) {
28
+ if (err.name !== 'AbortError') {
29
+ console.error('Error in queued function:', err) // eslint-disable-line no-console
30
+ ;
31
+ }
32
+ } finally {
33
+ runningTaskRef.current = null;
34
+ }
35
+ }
36
+ };
37
+ void executeTask();
38
+ };
39
+ return {
40
+ queueTask
41
+ };
42
+ }
43
+ //# sourceMappingURL=useQueues.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useQueues.js","names":["useRef","useQueues","runningTaskRef","queuedTask","abortControllerRef","queueTask","fn","current","abort","executeTask","taskToRun","controller","AbortController","signal","err","name","console","error"],"sources":["../../src/hooks/useQueues.ts"],"sourcesContent":["import { useRef } from 'react'\n\nexport function useQueues(): {\n queueTask: (fn: (signal: AbortSignal) => Promise<void>) => void\n} {\n const runningTaskRef = useRef<null | Promise<void>>(null)\n const queuedTask = useRef<((signal: AbortSignal) => Promise<void>) | null>(null)\n const abortControllerRef = useRef<AbortController | null>(null)\n\n const queueTask = (fn: (signal: AbortSignal) => Promise<void>) => {\n // Overwrite the queued task every time a new one arrives\n queuedTask.current = fn\n\n // If a task is already running, abort it and return\n if (runningTaskRef.current !== null) {\n if (abortControllerRef.current) {\n abortControllerRef.current.abort()\n }\n\n return\n }\n\n const executeTask = async () => {\n while (queuedTask.current) {\n const taskToRun = queuedTask.current\n queuedTask.current = null // Reset latest task before running\n\n const controller = new AbortController()\n abortControllerRef.current = controller\n\n try {\n runningTaskRef.current = taskToRun(controller.signal)\n await runningTaskRef.current // Wait for the task to complete\n } catch (err) {\n if (err.name !== 'AbortError') {\n console.error('Error in queued function:', err) // eslint-disable-line no-console\n }\n } finally {\n runningTaskRef.current = null\n }\n }\n }\n\n void executeTask()\n }\n\n return { queueTask }\n}\n"],"mappings":"AAAA,SAASA,MAAM,QAAQ;AAEvB,OAAO,SAASC,UAAA;EAGd,MAAMC,cAAA,GAAiBF,MAAA,CAA6B;EACpD,MAAMG,UAAA,GAAaH,MAAA,CAAwD;EAC3E,MAAMI,kBAAA,GAAqBJ,MAAA,CAA+B;EAE1D,MAAMK,SAAA,GAAaC,EAAA;IACjB;IACAH,UAAA,CAAWI,OAAO,GAAGD,EAAA;IAErB;IACA,IAAIJ,cAAA,CAAeK,OAAO,KAAK,MAAM;MACnC,IAAIH,kBAAA,CAAmBG,OAAO,EAAE;QAC9BH,kBAAA,CAAmBG,OAAO,CAACC,KAAK;MAClC;MAEA;IACF;IAEA,MAAMC,WAAA,GAAc,MAAAA,CAAA;MAClB,OAAON,UAAA,CAAWI,OAAO,EAAE;QACzB,MAAMG,SAAA,GAAYP,UAAA,CAAWI,OAAO;QACpCJ,UAAA,CAAWI,OAAO,GAAG,KAAK;QAAA;QAE1B,MAAMI,UAAA,GAAa,IAAIC,eAAA;QACvBR,kBAAA,CAAmBG,OAAO,GAAGI,UAAA;QAE7B,IAAI;UACFT,cAAA,CAAeK,OAAO,GAAGG,SAAA,CAAUC,UAAA,CAAWE,MAAM;UACpD,MAAMX,cAAA,CAAeK,OAAO,CAAC;UAAA;QAC/B,EAAE,OAAOO,GAAA,EAAK;UACZ,IAAIA,GAAA,CAAIC,IAAI,KAAK,cAAc;YAC7BC,OAAA,CAAQC,KAAK,CAAC,6BAA6BH,GAAA,EAAK;YAAA;UAClD;QACF,UAAU;UACRZ,cAAA,CAAeK,OAAO,GAAG;QAC3B;MACF;IACF;IAEA,KAAKE,WAAA;EACP;EAEA,OAAO;IAAEJ;EAAU;AACrB","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/Locale/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,SAAS,CAAA;AAGrC,OAAO,KAAiE,MAAM,OAAO,CAAA;AASrF,eAAO,MAAM,oBAAoB;;4BAEP,OAAO;EAC/B,CAAA;AAcF,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC;IAAE,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,CAAA;CAAE,CAyF5F,CAAA;AAED,eAAO,MAAM,gBAAgB;;4BA1GH,OAAO;CA0GqC,CAAA;AAEtE;;;GAGG;AACH,eAAO,MAAM,SAAS,QAAO,MAAmC,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/Locale/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,SAAS,CAAA;AAGrC,OAAO,KAAiE,MAAM,OAAO,CAAA;AASrF,eAAO,MAAM,oBAAoB;;4BAEP,OAAO;EAC/B,CAAA;AAcF,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC;IAAE,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,CAAA;CAAE,CA2F5F,CAAA;AAED,eAAO,MAAM,gBAAgB;;4BA5GH,OAAO;CA4GqC,CAAA;AAEtE;;;GAGG;AACH,eAAO,MAAM,SAAS,QAAO,MAAmC,CAAA"}
@@ -41,7 +41,7 @@ export const LocaleProvider = t0 => {
41
41
  const {
42
42
  user
43
43
  } = useAuth();
44
- const defaultLocale = localization && localization.defaultLocale ? localization.defaultLocale : "en";
44
+ const defaultLocale = localization ? localization.defaultLocale : "en";
45
45
  const {
46
46
  getPreference
47
47
  } = usePreferences();
@@ -58,10 +58,10 @@ export const LocaleProvider = t0 => {
58
58
  let t6;
59
59
  if ($[2] !== defaultLocale || $[3] !== initialLocaleFromPrefs || $[4] !== localeFromParams || $[5] !== localization) {
60
60
  t6 = () => {
61
- if (!localization) {
61
+ if (!localization || localization && !localization.locales.length) {
62
62
  return {};
63
63
  }
64
- return findLocaleFromCode(localization, localeFromParams) || findLocaleFromCode(localization, initialLocaleFromPrefs) || findLocaleFromCode(localization, defaultLocale);
64
+ return findLocaleFromCode(localization, localeFromParams) || findLocaleFromCode(localization, initialLocaleFromPrefs) || findLocaleFromCode(localization, defaultLocale) || findLocaleFromCode(localization, localization.locales[0].code);
65
65
  };
66
66
  $[2] = defaultLocale;
67
67
  $[3] = initialLocaleFromPrefs;
@@ -98,9 +98,11 @@ export const LocaleProvider = t0 => {
98
98
  t9 = () => {
99
99
  const resetLocale = async function resetLocale() {
100
100
  if (localization && user?.id) {
101
- const localeToUse = localeFromParams || (await fetchPreferences("locale", fetchURL)?.then(_temp)) || defaultLocale;
102
- const newLocale = findLocaleFromCode(localization, localeToUse) || findLocaleFromCode(localization, defaultLocale);
103
- setLocale(newLocale);
101
+ const localeToUse = localeFromParams || (await fetchPreferences("locale", fetchURL)?.then(_temp));
102
+ const newLocale = findLocaleFromCode(localization, localeToUse) || findLocaleFromCode(localization, defaultLocale) || findLocaleFromCode(localization, localization?.locales?.[0]?.code);
103
+ if (newLocale) {
104
+ setLocale(newLocale);
105
+ }
104
106
  }
105
107
  };
106
108
  resetLocale();
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["c","_c","useSearchParams","React","createContext","useContext","useEffect","useRef","useState","findLocaleFromCode","useAuth","useConfig","usePreferences","LocaleContext","LocaleLoadingContext","localeIsLoading","setLocaleIsLoading","_","undefined","fetchPreferences","key","baseURL","fetch","credentials","headers","method","then","res","json","LocaleProvider","t0","$","children","locale","initialLocaleFromPrefs","config","t1","localization","t2","routes","t3","serverURL","api","apiRoute","user","defaultLocale","getPreference","t4","t5","get","localeFromParams","t6","setLocale","isLoading","prevLocale","t7","t8","code","current","fetchURL","t9","id","resetLocale","localeToUse","_temp","newLocale","t10","t11","t12","_jsx","Provider","value","useLocaleLoading","useLocale"],"sources":["../../../src/providers/Locale/index.tsx"],"sourcesContent":["'use client'\n\nimport type { Locale } from 'payload'\n\nimport { useSearchParams } from 'next/navigation.js'\nimport React, { createContext, useContext, useEffect, useRef, useState } from 'react'\n\nimport { findLocaleFromCode } from '../../utilities/findLocaleFromCode.js'\nimport { useAuth } from '../Auth/index.js'\nimport { useConfig } from '../Config/index.js'\nimport { usePreferences } from '../Preferences/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 serverURL,\n },\n } = useConfig()\n\n const { user } = useAuth()\n\n const defaultLocale =\n localization && localization.defaultLocale ? localization.defaultLocale : 'en'\n\n const { getPreference, setPreference } = usePreferences()\n const localeFromParams = useSearchParams().get('locale')\n\n const [locale, setLocale] = React.useState<Locale>(() => {\n if (!localization) {\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 )\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 = `${serverURL}${apiRoute}`\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 defaultLocale\n\n const newLocale =\n findLocaleFromCode(localization, localeToUse) ||\n findLocaleFromCode(localization, defaultLocale)\n\n setLocale(newLocale)\n }\n }\n\n void resetLocale()\n }, [defaultLocale, getPreference, localization, fetchURL, localeFromParams, user?.id])\n\n return (\n <LocaleContext.Provider value={locale}>\n <LocaleLoadingContext.Provider value={{ localeIsLoading: isLoading, setLocaleIsLoading }}>\n {children}\n </LocaleLoadingContext.Provider>\n </LocaleContext.Provider>\n )\n}\n\nexport const useLocaleLoading = () => useContext(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 => useContext(LocaleContext)\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["c","_c","useSearchParams","React","createContext","useContext","useEffect","useRef","useState","findLocaleFromCode","useAuth","useConfig","usePreferences","LocaleContext","LocaleLoadingContext","localeIsLoading","setLocaleIsLoading","_","undefined","fetchPreferences","key","baseURL","fetch","credentials","headers","method","then","res","json","LocaleProvider","t0","$","children","locale","initialLocaleFromPrefs","config","t1","localization","t2","routes","t3","serverURL","api","apiRoute","user","defaultLocale","getPreference","t4","t5","get","localeFromParams","t6","locales","length","code","setLocale","isLoading","prevLocale","t7","t8","current","fetchURL","t9","id","resetLocale","localeToUse","_temp","newLocale","t10","t11","t12","_jsx","Provider","value","useLocaleLoading","useLocale"],"sources":["../../../src/providers/Locale/index.tsx"],"sourcesContent":["'use client'\n\nimport type { Locale } from 'payload'\n\nimport { useSearchParams } from 'next/navigation.js'\nimport React, { createContext, useContext, useEffect, useRef, useState } from 'react'\n\nimport { findLocaleFromCode } from '../../utilities/findLocaleFromCode.js'\nimport { useAuth } from '../Auth/index.js'\nimport { useConfig } from '../Config/index.js'\nimport { usePreferences } from '../Preferences/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 serverURL,\n },\n } = useConfig()\n\n const { user } = useAuth()\n\n const defaultLocale = localization ? localization.defaultLocale : 'en'\n\n const { getPreference, setPreference } = usePreferences()\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 = `${serverURL}${apiRoute}`\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, getPreference, localization, fetchURL, localeFromParams, user?.id])\n\n return (\n <LocaleContext.Provider value={locale}>\n <LocaleLoadingContext.Provider value={{ localeIsLoading: isLoading, setLocaleIsLoading }}>\n {children}\n </LocaleLoadingContext.Provider>\n </LocaleContext.Provider>\n )\n}\n\nexport const useLocaleLoading = () => useContext(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 => useContext(LocaleContext)\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"APIKey.d.ts","sourceRoot":"","sources":["../../../../src/views/Edit/Auth/APIKey.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAuC,MAAM,OAAO,CAAA;AAe3D,eAAO,MAAM,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC;IAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE,CAiHvF,CAAA"}
1
+ {"version":3,"file":"APIKey.d.ts","sourceRoot":"","sources":["../../../../src/views/Edit/Auth/APIKey.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAuC,MAAM,OAAO,CAAA;AAe3D,eAAO,MAAM,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC;IAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE,CAkHvF,CAAA"}
@@ -44,6 +44,7 @@ export const APIKey = ({
44
44
  event: 'onChange',
45
45
  maxLength: 48,
46
46
  minLength: 24,
47
+ path: ['apiKey'],
47
48
  preferences: {
48
49
  fields: {}
49
50
  },
@@ -1 +1 @@
1
- {"version":3,"file":"APIKey.js","names":["getTranslation","text","React","useEffect","useMemo","useState","v4","uuidv4","CopyToClipboard","GenerateConfirmation","useFormFields","useField","useConfig","useDocumentInfo","useTranslation","path","baseClass","fieldBaseClass","APIKey","enabled","readOnly","initialAPIKey","highlightedField","setHighlightedField","i18n","t","config","getEntityConfig","collectionSlug","apiKey","fields","apiKeyField","find","field","name","validate","val","type","blockData","data","event","maxLength","minLength","preferences","req","payload","siblingData","apiKeyValue","value","apiKeyLabel","label","APIKeyLabel","_jsxs","className","_jsx","fieldType","highlightField","setTimeout","setValue","Fragment","filter","Boolean","join","undefined","disabled","id","setKey"],"sources":["../../../../src/views/Edit/Auth/APIKey.tsx"],"sourcesContent":["'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 { 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 { 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 { 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 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 <div className={`${baseClass}__label`}>\n <span>{apiKeyLabel}</span>\n <CopyToClipboard value={apiKeyValue as string} />\n </div>\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 <input\n aria-label={apiKeyLabel}\n className={highlightedField ? 'highlight' : undefined}\n disabled\n id=\"apiKey\"\n name=\"apiKey\"\n type=\"text\"\n value={(value as string) || ''}\n />\n </div>\n {!readOnly && (\n <GenerateConfirmation highlightField={highlightField} setKey={() => setValue(uuidv4())} />\n )}\n </React.Fragment>\n )\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"APIKey.js","names":["getTranslation","text","React","useEffect","useMemo","useState","v4","uuidv4","CopyToClipboard","GenerateConfirmation","useFormFields","useField","useConfig","useDocumentInfo","useTranslation","path","baseClass","fieldBaseClass","APIKey","enabled","readOnly","initialAPIKey","highlightedField","setHighlightedField","i18n","t","config","getEntityConfig","collectionSlug","apiKey","fields","apiKeyField","find","field","name","validate","val","type","blockData","data","event","maxLength","minLength","preferences","req","payload","siblingData","apiKeyValue","value","apiKeyLabel","label","APIKeyLabel","_jsxs","className","_jsx","fieldType","highlightField","setTimeout","setValue","Fragment","filter","Boolean","join","undefined","disabled","id","setKey"],"sources":["../../../../src/views/Edit/Auth/APIKey.tsx"],"sourcesContent":["'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 { 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 { 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 { 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 <div className={`${baseClass}__label`}>\n <span>{apiKeyLabel}</span>\n <CopyToClipboard value={apiKeyValue as string} />\n </div>\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 <input\n aria-label={apiKeyLabel}\n className={highlightedField ? 'highlight' : undefined}\n disabled\n id=\"apiKey\"\n name=\"apiKey\"\n type=\"text\"\n value={(value as string) || ''}\n />\n </div>\n {!readOnly && (\n <GenerateConfirmation highlightField={highlightField} setKey={() => setValue(uuidv4())} />\n )}\n </React.Fragment>\n )\n}\n"],"mappings":"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","ignoreList":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@payloadcms/ui",
3
- "version": "3.28.0-internal.c4e1bed",
3
+ "version": "3.28.0",
4
4
  "homepage": "https://payloadcms.com",
5
5
  "repository": {
6
6
  "type": "git",
@@ -132,7 +132,7 @@
132
132
  "ts-essentials": "10.0.3",
133
133
  "use-context-selector": "2.0.0",
134
134
  "uuid": "10.0.0",
135
- "@payloadcms/translations": "3.28.0-internal.c4e1bed"
135
+ "@payloadcms/translations": "3.28.0"
136
136
  },
137
137
  "devDependencies": {
138
138
  "@babel/cli": "7.26.4",
@@ -149,13 +149,13 @@
149
149
  "esbuild-sass-plugin": "3.3.1",
150
150
  "eslint-plugin-react-compiler": "19.0.0-beta-714736e-20250131",
151
151
  "@payloadcms/eslint-config": "3.9.0",
152
- "payload": "3.28.0-internal.c4e1bed"
152
+ "payload": "3.28.0"
153
153
  },
154
154
  "peerDependencies": {
155
155
  "next": "^15.0.0",
156
156
  "react": "^19.0.0 || ^19.0.0-rc-65a56d0e-20241020",
157
157
  "react-dom": "^19.0.0 || ^19.0.0-rc-65a56d0e-20241020",
158
- "payload": "3.28.0-internal.c4e1bed"
158
+ "payload": "3.28.0"
159
159
  },
160
160
  "engines": {
161
161
  "node": "^18.20.2 || >=20.9.0"
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/elements/CodeEditor/CodeEditor.tsx", "../../../../../node_modules/.pnpm/@monaco-editor+loader@1.5.0/node_modules/@monaco-editor/loader/lib/es/_virtual/_rollupPluginBabelHelpers.js", "../../../../../node_modules/.pnpm/state-local@1.0.7/node_modules/state-local/lib/es/state-local.js", "../../../../../node_modules/.pnpm/@monaco-editor+loader@1.5.0/node_modules/@monaco-editor/loader/lib/es/config/index.js", "../../../../../node_modules/.pnpm/@monaco-editor+loader@1.5.0/node_modules/@monaco-editor/loader/lib/es/utils/curry.js", "../../../../../node_modules/.pnpm/@monaco-editor+loader@1.5.0/node_modules/@monaco-editor/loader/lib/es/utils/isObject.js", "../../../../../node_modules/.pnpm/@monaco-editor+loader@1.5.0/node_modules/@monaco-editor/loader/lib/es/validators/index.js", "../../../../../node_modules/.pnpm/@monaco-editor+loader@1.5.0/node_modules/@monaco-editor/loader/lib/es/utils/compose.js", "../../../../../node_modules/.pnpm/@monaco-editor+loader@1.5.0/node_modules/@monaco-editor/loader/lib/es/utils/deepMerge.js", "../../../../../node_modules/.pnpm/@monaco-editor+loader@1.5.0/node_modules/@monaco-editor/loader/lib/es/utils/makeCancelable.js", "../../../../../node_modules/.pnpm/@monaco-editor+loader@1.5.0/node_modules/@monaco-editor/loader/lib/es/loader/index.js", "../../../../../node_modules/.pnpm/@monaco-editor+react@4.7.0_monaco-editor@0.52.0_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@monaco-editor/react/src/index.ts", "../../../../../node_modules/.pnpm/@monaco-editor+react@4.7.0_monaco-editor@0.52.0_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@monaco-editor/react/src/DiffEditor/index.ts", "../../../../../node_modules/.pnpm/@monaco-editor+react@4.7.0_monaco-editor@0.52.0_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@monaco-editor/react/src/DiffEditor/DiffEditor.tsx", "../../../../../node_modules/.pnpm/@monaco-editor+react@4.7.0_monaco-editor@0.52.0_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@monaco-editor/react/src/MonacoContainer/index.ts", "../../../../../node_modules/.pnpm/@monaco-editor+react@4.7.0_monaco-editor@0.52.0_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@monaco-editor/react/src/MonacoContainer/MonacoContainer.tsx", "../../../../../node_modules/.pnpm/@monaco-editor+react@4.7.0_monaco-editor@0.52.0_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@monaco-editor/react/src/MonacoContainer/styles.ts", "../../../../../node_modules/.pnpm/@monaco-editor+react@4.7.0_monaco-editor@0.52.0_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@monaco-editor/react/src/Loading/Loading.tsx", "../../../../../node_modules/.pnpm/@monaco-editor+react@4.7.0_monaco-editor@0.52.0_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@monaco-editor/react/src/Loading/styles.ts", "../../../../../node_modules/.pnpm/@monaco-editor+react@4.7.0_monaco-editor@0.52.0_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@monaco-editor/react/src/Loading/index.ts", "../../../../../node_modules/.pnpm/@monaco-editor+react@4.7.0_monaco-editor@0.52.0_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@monaco-editor/react/src/hooks/useMount/index.ts", "../../../../../node_modules/.pnpm/@monaco-editor+react@4.7.0_monaco-editor@0.52.0_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@monaco-editor/react/src/hooks/useUpdate/index.ts", "../../../../../node_modules/.pnpm/@monaco-editor+react@4.7.0_monaco-editor@0.52.0_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@monaco-editor/react/src/utils/index.ts", "../../../../../node_modules/.pnpm/@monaco-editor+react@4.7.0_monaco-editor@0.52.0_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@monaco-editor/react/src/hooks/useMonaco/index.ts", "../../../../../node_modules/.pnpm/@monaco-editor+react@4.7.0_monaco-editor@0.52.0_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@monaco-editor/react/src/Editor/index.ts", "../../../../../node_modules/.pnpm/@monaco-editor+react@4.7.0_monaco-editor@0.52.0_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@monaco-editor/react/src/Editor/Editor.tsx", "../../../../../node_modules/.pnpm/@monaco-editor+react@4.7.0_monaco-editor@0.52.0_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@monaco-editor/react/src/hooks/usePrevious/index.ts", "../../../src/providers/Theme/index.tsx", "../../../src/providers/Config/index.tsx", "../../../src/elements/ShimmerEffect/index.tsx", "../../../src/hooks/useDelay.ts"],
4
- "sourcesContent": ["'use client'\nimport EditorImport from '@monaco-editor/react'\nimport React, { useState } from 'react'\n\nimport type { Props } from './types.js'\n\nimport { useTheme } from '../../providers/Theme/index.js'\nimport { ShimmerEffect } from '../ShimmerEffect/index.js'\nimport './index.scss'\n\nconst Editor = (EditorImport.default || EditorImport) as unknown as typeof EditorImport.default\n\nconst baseClass = 'code-editor'\n\nconst CodeEditor: React.FC<Props> = (props) => {\n const { className, maxHeight, minHeight, options, readOnly, ...rest } = props\n const MIN_HEIGHT = minHeight ?? 56 // equivalent to 3 lines\n\n const [dynamicHeight, setDynamicHeight] = useState(MIN_HEIGHT)\n const { theme } = useTheme()\n\n const classes = [\n baseClass,\n className,\n rest?.defaultLanguage ? `language--${rest.defaultLanguage}` : '',\n readOnly && 'read-only',\n ]\n .filter(Boolean)\n .join(' ')\n\n return (\n <Editor\n className={classes}\n loading={<ShimmerEffect height={dynamicHeight} />}\n options={{\n detectIndentation: true,\n hideCursorInOverviewRuler: true,\n minimap: {\n enabled: false,\n },\n overviewRulerBorder: false,\n readOnly: Boolean(readOnly),\n scrollbar: {\n alwaysConsumeMouseWheel: false,\n },\n scrollBeyondLastLine: false,\n tabSize: 2,\n wordWrap: 'on',\n ...options,\n }}\n theme={theme === 'dark' ? 'vs-dark' : 'vs'}\n {...rest}\n // Since we are not building an IDE and the container\n // can already have scrolling, we want the height of the\n // editor to fit its content.\n // See: https://github.com/microsoft/monaco-editor/discussions/3677\n height={maxHeight ? Math.min(dynamicHeight, maxHeight) : dynamicHeight}\n onChange={(value, ev) => {\n rest.onChange?.(value, ev)\n setDynamicHeight(Math.max(MIN_HEIGHT, value.split('\\n').length * 18 + 2))\n }}\n onMount={(editor, monaco) => {\n rest.onMount?.(editor, monaco)\n setDynamicHeight(Math.max(MIN_HEIGHT, editor.getValue().split('\\n').length * 18 + 2))\n }}\n />\n )\n}\n\n// eslint-disable-next-line no-restricted-exports\nexport default CodeEditor\n", "function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n\n var target = _objectWithoutPropertiesLoose(source, excluded);\n\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\nfunction _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n}\n\nfunction _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\n\nfunction _iterableToArrayLimit(arr, i) {\n if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\n\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n\n return arr2;\n}\n\nfunction _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}\n\nexport { _arrayLikeToArray as arrayLikeToArray, _arrayWithHoles as arrayWithHoles, _defineProperty as defineProperty, _iterableToArrayLimit as iterableToArrayLimit, _nonIterableRest as nonIterableRest, _objectSpread2 as objectSpread2, _objectWithoutProperties as objectWithoutProperties, _objectWithoutPropertiesLoose as objectWithoutPropertiesLoose, _slicedToArray as slicedToArray, _unsupportedIterableToArray as unsupportedIterableToArray };\n", "function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}\n\nfunction compose() {\n for (var _len = arguments.length, fns = new Array(_len), _key = 0; _key < _len; _key++) {\n fns[_key] = arguments[_key];\n }\n\n return function (x) {\n return fns.reduceRight(function (y, f) {\n return f(y);\n }, x);\n };\n}\n\nfunction curry(fn) {\n return function curried() {\n var _this = this;\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 args.length >= fn.length ? fn.apply(this, args) : function () {\n for (var _len3 = arguments.length, nextArgs = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n nextArgs[_key3] = arguments[_key3];\n }\n\n return curried.apply(_this, [].concat(args, nextArgs));\n };\n };\n}\n\nfunction isObject(value) {\n return {}.toString.call(value).includes('Object');\n}\n\nfunction isEmpty(obj) {\n return !Object.keys(obj).length;\n}\n\nfunction isFunction(value) {\n return typeof value === 'function';\n}\n\nfunction hasOwnProperty(object, property) {\n return Object.prototype.hasOwnProperty.call(object, property);\n}\n\nfunction validateChanges(initial, changes) {\n if (!isObject(changes)) errorHandler('changeType');\n if (Object.keys(changes).some(function (field) {\n return !hasOwnProperty(initial, field);\n })) errorHandler('changeField');\n return changes;\n}\n\nfunction validateSelector(selector) {\n if (!isFunction(selector)) errorHandler('selectorType');\n}\n\nfunction validateHandler(handler) {\n if (!(isFunction(handler) || isObject(handler))) errorHandler('handlerType');\n if (isObject(handler) && Object.values(handler).some(function (_handler) {\n return !isFunction(_handler);\n })) errorHandler('handlersType');\n}\n\nfunction validateInitial(initial) {\n if (!initial) errorHandler('initialIsRequired');\n if (!isObject(initial)) errorHandler('initialType');\n if (isEmpty(initial)) errorHandler('initialContent');\n}\n\nfunction throwError(errorMessages, type) {\n throw new Error(errorMessages[type] || errorMessages[\"default\"]);\n}\n\nvar errorMessages = {\n initialIsRequired: 'initial state is required',\n initialType: 'initial state should be an object',\n initialContent: 'initial state shouldn\\'t be an empty object',\n handlerType: 'handler should be an object or a function',\n handlersType: 'all handlers should be a functions',\n selectorType: 'selector should be a function',\n changeType: 'provided value of changes should be an object',\n changeField: 'it seams you want to change a field in the state which is not specified in the \"initial\" state',\n \"default\": 'an unknown error accured in `state-local` package'\n};\nvar errorHandler = curry(throwError)(errorMessages);\nvar validators = {\n changes: validateChanges,\n selector: validateSelector,\n handler: validateHandler,\n initial: validateInitial\n};\n\nfunction create(initial) {\n var handler = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n validators.initial(initial);\n validators.handler(handler);\n var state = {\n current: initial\n };\n var didUpdate = curry(didStateUpdate)(state, handler);\n var update = curry(updateState)(state);\n var validate = curry(validators.changes)(initial);\n var getChanges = curry(extractChanges)(state);\n\n function getState() {\n var selector = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : function (state) {\n return state;\n };\n validators.selector(selector);\n return selector(state.current);\n }\n\n function setState(causedChanges) {\n compose(didUpdate, update, validate, getChanges)(causedChanges);\n }\n\n return [getState, setState];\n}\n\nfunction extractChanges(state, causedChanges) {\n return isFunction(causedChanges) ? causedChanges(state.current) : causedChanges;\n}\n\nfunction updateState(state, changes) {\n state.current = _objectSpread2(_objectSpread2({}, state.current), changes);\n return changes;\n}\n\nfunction didStateUpdate(state, handler, changes) {\n isFunction(handler) ? handler(state.current) : Object.keys(changes).forEach(function (field) {\n var _handler$field;\n\n return (_handler$field = handler[field]) === null || _handler$field === void 0 ? void 0 : _handler$field.call(handler, state.current[field]);\n });\n return changes;\n}\n\nvar index = {\n create: create\n};\n\nexport default index;\n", "var config = {\n paths: {\n vs: 'https://cdn.jsdelivr.net/npm/monaco-editor@0.52.2/min/vs'\n }\n};\n\nexport default config;\n", "function curry(fn) {\n return function curried() {\n var _this = 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 return args.length >= fn.length ? fn.apply(this, args) : function () {\n for (var _len2 = arguments.length, nextArgs = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n nextArgs[_key2] = arguments[_key2];\n }\n\n return curried.apply(_this, [].concat(args, nextArgs));\n };\n };\n}\n\nexport default curry;\n", "function isObject(value) {\n return {}.toString.call(value).includes('Object');\n}\n\nexport default isObject;\n", "import curry from '../utils/curry.js';\nimport isObject from '../utils/isObject.js';\n\n/**\n * validates the configuration object and informs about deprecation\n * @param {Object} config - the configuration object \n * @return {Object} config - the validated configuration object\n */\n\nfunction validateConfig(config) {\n if (!config) errorHandler('configIsRequired');\n if (!isObject(config)) errorHandler('configType');\n\n if (config.urls) {\n informAboutDeprecation();\n return {\n paths: {\n vs: config.urls.monacoBase\n }\n };\n }\n\n return config;\n}\n/**\n * logs deprecation message\n */\n\n\nfunction informAboutDeprecation() {\n console.warn(errorMessages.deprecation);\n}\n\nfunction throwError(errorMessages, type) {\n throw new Error(errorMessages[type] || errorMessages[\"default\"]);\n}\n\nvar errorMessages = {\n configIsRequired: 'the configuration object is required',\n configType: 'the configuration object should be an object',\n \"default\": 'an unknown error accured in `@monaco-editor/loader` package',\n deprecation: \"Deprecation warning!\\n You are using deprecated way of configuration.\\n\\n Instead of using\\n monaco.config({ urls: { monacoBase: '...' } })\\n use\\n monaco.config({ paths: { vs: '...' } })\\n\\n For more please check the link https://github.com/suren-atoyan/monaco-loader#config\\n \"\n};\nvar errorHandler = curry(throwError)(errorMessages);\nvar validators = {\n config: validateConfig\n};\n\nexport default validators;\nexport { errorHandler, errorMessages };\n", "var compose = function compose() {\n for (var _len = arguments.length, fns = new Array(_len), _key = 0; _key < _len; _key++) {\n fns[_key] = arguments[_key];\n }\n\n return function (x) {\n return fns.reduceRight(function (y, f) {\n return f(y);\n }, x);\n };\n};\n\nexport default compose;\n", "import { objectSpread2 as _objectSpread2 } from '../_virtual/_rollupPluginBabelHelpers.js';\n\nfunction merge(target, source) {\n Object.keys(source).forEach(function (key) {\n if (source[key] instanceof Object) {\n if (target[key]) {\n Object.assign(source[key], merge(target[key], source[key]));\n }\n }\n });\n return _objectSpread2(_objectSpread2({}, target), source);\n}\n\nexport default merge;\n", "// The source (has been changed) is https://github.com/facebook/react/issues/5465#issuecomment-157888325\nvar CANCELATION_MESSAGE = {\n type: 'cancelation',\n msg: 'operation is manually canceled'\n};\n\nfunction makeCancelable(promise) {\n var hasCanceled_ = false;\n var wrappedPromise = new Promise(function (resolve, reject) {\n promise.then(function (val) {\n return hasCanceled_ ? reject(CANCELATION_MESSAGE) : resolve(val);\n });\n promise[\"catch\"](reject);\n });\n return wrappedPromise.cancel = function () {\n return hasCanceled_ = true;\n }, wrappedPromise;\n}\n\nexport default makeCancelable;\nexport { CANCELATION_MESSAGE };\n", "import { slicedToArray as _slicedToArray, objectWithoutProperties as _objectWithoutProperties } from '../_virtual/_rollupPluginBabelHelpers.js';\nimport state from 'state-local';\nimport config$1 from '../config/index.js';\nimport validators from '../validators/index.js';\nimport compose from '../utils/compose.js';\nimport merge from '../utils/deepMerge.js';\nimport makeCancelable from '../utils/makeCancelable.js';\n\n/** the local state of the module */\n\nvar _state$create = state.create({\n config: config$1,\n isInitialized: false,\n resolve: null,\n reject: null,\n monaco: null\n}),\n _state$create2 = _slicedToArray(_state$create, 2),\n getState = _state$create2[0],\n setState = _state$create2[1];\n/**\n * set the loader configuration\n * @param {Object} config - the configuration object\n */\n\n\nfunction config(globalConfig) {\n var _validators$config = validators.config(globalConfig),\n monaco = _validators$config.monaco,\n config = _objectWithoutProperties(_validators$config, [\"monaco\"]);\n\n setState(function (state) {\n return {\n config: merge(state.config, config),\n monaco: monaco\n };\n });\n}\n/**\n * handles the initialization of the monaco-editor\n * @return {Promise} - returns an instance of monaco (with a cancelable promise)\n */\n\n\nfunction init() {\n var state = getState(function (_ref) {\n var monaco = _ref.monaco,\n isInitialized = _ref.isInitialized,\n resolve = _ref.resolve;\n return {\n monaco: monaco,\n isInitialized: isInitialized,\n resolve: resolve\n };\n });\n\n if (!state.isInitialized) {\n setState({\n isInitialized: true\n });\n\n if (state.monaco) {\n state.resolve(state.monaco);\n return makeCancelable(wrapperPromise);\n }\n\n if (window.monaco && window.monaco.editor) {\n storeMonacoInstance(window.monaco);\n state.resolve(window.monaco);\n return makeCancelable(wrapperPromise);\n }\n\n compose(injectScripts, getMonacoLoaderScript)(configureLoader);\n }\n\n return makeCancelable(wrapperPromise);\n}\n/**\n * injects provided scripts into the document.body\n * @param {Object} script - an HTML script element\n * @return {Object} - the injected HTML script element\n */\n\n\nfunction injectScripts(script) {\n return document.body.appendChild(script);\n}\n/**\n * creates an HTML script element with/without provided src\n * @param {string} [src] - the source path of the script\n * @return {Object} - the created HTML script element\n */\n\n\nfunction createScript(src) {\n var script = document.createElement('script');\n return src && (script.src = src), script;\n}\n/**\n * creates an HTML script element with the monaco loader src\n * @return {Object} - the created HTML script element\n */\n\n\nfunction getMonacoLoaderScript(configureLoader) {\n var state = getState(function (_ref2) {\n var config = _ref2.config,\n reject = _ref2.reject;\n return {\n config: config,\n reject: reject\n };\n });\n var loaderScript = createScript(\"\".concat(state.config.paths.vs, \"/loader.js\"));\n\n loaderScript.onload = function () {\n return configureLoader();\n };\n\n loaderScript.onerror = state.reject;\n return loaderScript;\n}\n/**\n * configures the monaco loader\n */\n\n\nfunction configureLoader() {\n var state = getState(function (_ref3) {\n var config = _ref3.config,\n resolve = _ref3.resolve,\n reject = _ref3.reject;\n return {\n config: config,\n resolve: resolve,\n reject: reject\n };\n });\n var require = window.require;\n\n require.config(state.config);\n\n require(['vs/editor/editor.main'], function (monaco) {\n storeMonacoInstance(monaco);\n state.resolve(monaco);\n }, function (error) {\n state.reject(error);\n });\n}\n/**\n * store monaco instance in local state\n */\n\n\nfunction storeMonacoInstance(monaco) {\n if (!getState().monaco) {\n setState({\n monaco: monaco\n });\n }\n}\n/**\n * internal helper function\n * extracts stored monaco instance\n * @return {Object|null} - the monaco instance\n */\n\n\nfunction __getMonacoInstance() {\n return getState(function (_ref4) {\n var monaco = _ref4.monaco;\n return monaco;\n });\n}\n\nvar wrapperPromise = new Promise(function (resolve, reject) {\n return setState({\n resolve: resolve,\n reject: reject\n });\n});\nvar loader = {\n config: config,\n init: init,\n __getMonacoInstance: __getMonacoInstance\n};\n\nexport default loader;\n", "import loader from '@monaco-editor/loader';\nexport { loader };\n\nimport DiffEditor from './DiffEditor';\nexport * from './DiffEditor/types';\nexport { DiffEditor };\n\nimport useMonaco from './hooks/useMonaco';\nexport { useMonaco };\n\nimport Editor from './Editor';\nexport * from './Editor/types';\nexport { Editor };\nexport default Editor;\n\n// Monaco\nimport type * as monaco from 'monaco-editor/esm/vs/editor/editor.api';\nexport type Monaco = typeof monaco;\n\n// Default themes\nexport type Theme = 'vs-dark' | 'light';\n", "import { memo } from 'react';\n\nimport DiffEditor from './DiffEditor';\n\nexport * from './types';\n\nexport default memo(DiffEditor);\n", "'use client';\n\nimport React, { useState, useRef, useCallback, useEffect } from 'react';\nimport loader from '@monaco-editor/loader';\n\nimport MonacoContainer from '../MonacoContainer';\nimport useMount from '../hooks/useMount';\nimport useUpdate from '../hooks/useUpdate';\nimport { noop, getOrCreateModel } from '../utils';\nimport { type DiffEditorProps, type MonacoDiffEditor } from './types';\nimport { type Monaco } from '..';\n\nfunction DiffEditor({\n original,\n modified,\n language,\n originalLanguage,\n modifiedLanguage,\n originalModelPath,\n modifiedModelPath,\n keepCurrentOriginalModel = false,\n keepCurrentModifiedModel = false,\n theme = 'light',\n loading = 'Loading...',\n options = {},\n height = '100%',\n width = '100%',\n className,\n wrapperProps = {},\n beforeMount = noop,\n onMount = noop,\n}: DiffEditorProps) {\n const [isEditorReady, setIsEditorReady] = useState(false);\n const [isMonacoMounting, setIsMonacoMounting] = useState(true);\n const editorRef = useRef<MonacoDiffEditor | null>(null);\n const monacoRef = useRef<Monaco | null>(null);\n const containerRef = useRef<HTMLDivElement>(null);\n const onMountRef = useRef(onMount);\n const beforeMountRef = useRef(beforeMount);\n const preventCreation = useRef(false);\n\n useMount(() => {\n const cancelable = loader.init();\n\n cancelable\n .then((monaco) => (monacoRef.current = monaco) && setIsMonacoMounting(false))\n .catch(\n (error) =>\n error?.type !== 'cancelation' && console.error('Monaco initialization: error:', error),\n );\n\n return () => (editorRef.current ? disposeEditor() : cancelable.cancel());\n });\n\n useUpdate(\n () => {\n if (editorRef.current && monacoRef.current) {\n const originalEditor = editorRef.current.getOriginalEditor();\n const model = getOrCreateModel(\n monacoRef.current,\n original || '',\n originalLanguage || language || 'text',\n originalModelPath || '',\n );\n\n if (model !== originalEditor.getModel()) {\n originalEditor.setModel(model);\n }\n }\n },\n [originalModelPath],\n isEditorReady,\n );\n\n useUpdate(\n () => {\n if (editorRef.current && monacoRef.current) {\n const modifiedEditor = editorRef.current.getModifiedEditor();\n const model = getOrCreateModel(\n monacoRef.current,\n modified || '',\n modifiedLanguage || language || 'text',\n modifiedModelPath || '',\n );\n\n if (model !== modifiedEditor.getModel()) {\n modifiedEditor.setModel(model);\n }\n }\n },\n [modifiedModelPath],\n isEditorReady,\n );\n\n useUpdate(\n () => {\n const modifiedEditor = editorRef.current!.getModifiedEditor();\n if (modifiedEditor.getOption(monacoRef.current!.editor.EditorOption.readOnly)) {\n modifiedEditor.setValue(modified || '');\n } else {\n if (modified !== modifiedEditor.getValue()) {\n modifiedEditor.executeEdits('', [\n {\n range: modifiedEditor.getModel()!.getFullModelRange(),\n text: modified || '',\n forceMoveMarkers: true,\n },\n ]);\n\n modifiedEditor.pushUndoStop();\n }\n }\n },\n [modified],\n isEditorReady,\n );\n\n useUpdate(\n () => {\n editorRef.current?.getModel()?.original.setValue(original || '');\n },\n [original],\n isEditorReady,\n );\n\n useUpdate(\n () => {\n const { original, modified } = editorRef.current!.getModel()!;\n\n monacoRef.current!.editor.setModelLanguage(original, originalLanguage || language || 'text');\n monacoRef.current!.editor.setModelLanguage(modified, modifiedLanguage || language || 'text');\n },\n [language, originalLanguage, modifiedLanguage],\n isEditorReady,\n );\n\n useUpdate(\n () => {\n monacoRef.current?.editor.setTheme(theme);\n },\n [theme],\n isEditorReady,\n );\n\n useUpdate(\n () => {\n editorRef.current?.updateOptions(options);\n },\n [options],\n isEditorReady,\n );\n\n const setModels = useCallback(() => {\n if (!monacoRef.current) return;\n beforeMountRef.current(monacoRef.current);\n const originalModel = getOrCreateModel(\n monacoRef.current,\n original || '',\n originalLanguage || language || 'text',\n originalModelPath || '',\n );\n\n const modifiedModel = getOrCreateModel(\n monacoRef.current,\n modified || '',\n modifiedLanguage || language || 'text',\n modifiedModelPath || '',\n );\n\n editorRef.current?.setModel({\n original: originalModel,\n modified: modifiedModel,\n });\n }, [\n language,\n modified,\n modifiedLanguage,\n original,\n originalLanguage,\n originalModelPath,\n modifiedModelPath,\n ]);\n\n const createEditor = useCallback(() => {\n if (!preventCreation.current && containerRef.current) {\n editorRef.current = monacoRef.current!.editor.createDiffEditor(containerRef.current, {\n automaticLayout: true,\n ...options,\n });\n\n setModels();\n\n monacoRef.current?.editor.setTheme(theme);\n\n setIsEditorReady(true);\n preventCreation.current = true;\n }\n }, [options, theme, setModels]);\n\n useEffect(() => {\n if (isEditorReady) {\n onMountRef.current(editorRef.current!, monacoRef.current!);\n }\n }, [isEditorReady]);\n\n useEffect(() => {\n !isMonacoMounting && !isEditorReady && createEditor();\n }, [isMonacoMounting, isEditorReady, createEditor]);\n\n function disposeEditor() {\n const models = editorRef.current?.getModel();\n\n if (!keepCurrentOriginalModel) {\n models?.original?.dispose();\n }\n\n if (!keepCurrentModifiedModel) {\n models?.modified?.dispose();\n }\n\n editorRef.current?.dispose();\n }\n\n return (\n <MonacoContainer\n width={width}\n height={height}\n isEditorReady={isEditorReady}\n loading={loading}\n _ref={containerRef}\n className={className}\n wrapperProps={wrapperProps}\n />\n );\n}\n\nexport default DiffEditor;\n", "import { memo } from 'react';\n\nimport MonacoContainer from './MonacoContainer';\n\nexport default memo(MonacoContainer);\n", "import React from 'react';\n\nimport styles from './styles';\nimport Loading from '../Loading';\nimport { type ContainerProps } from './types';\n\n// ** forwardref render functions do not support proptypes or defaultprops **\n// one of the reasons why we use a separate prop for passing ref instead of using forwardref\n\nfunction MonacoContainer({\n width,\n height,\n isEditorReady,\n loading,\n _ref,\n className,\n wrapperProps,\n}: ContainerProps) {\n return (\n <section style={{ ...styles.wrapper, width, height }} {...wrapperProps}>\n {!isEditorReady && <Loading>{loading}</Loading>}\n <div\n ref={_ref}\n style={{ ...styles.fullWidth, ...(!isEditorReady && styles.hide) }}\n className={className}\n />\n </section>\n );\n}\n\nexport default MonacoContainer;\n", "import { type CSSProperties } from 'react';\n\nconst styles: Record<string, CSSProperties> = {\n wrapper: {\n display: 'flex',\n position: 'relative',\n textAlign: 'initial',\n },\n fullWidth: {\n width: '100%',\n },\n hide: {\n display: 'none',\n },\n};\n\nexport default styles;\n", "import React, { type PropsWithChildren } from 'react';\n\nimport styles from './styles';\n\nfunction Loading({ children }: PropsWithChildren) {\n return <div style={styles.container}>{children}</div>;\n}\n\nexport default Loading;\n", "import { type CSSProperties } from 'react';\n\nconst styles: Record<string, CSSProperties> = {\n container: {\n display: 'flex',\n height: '100%',\n width: '100%',\n justifyContent: 'center',\n alignItems: 'center',\n },\n};\n\nexport default styles;\n", "import Loading from './Loading';\n\nexport default Loading;\n", "import { useEffect, type EffectCallback } from 'react';\n\nfunction useMount(effect: EffectCallback) {\n useEffect(effect, []);\n}\n\nexport default useMount;\n", "import { useEffect, useRef, type DependencyList, type EffectCallback } from 'react';\n\nfunction useUpdate(effect: EffectCallback, deps: DependencyList, applyChanges = true) {\n const isInitialMount = useRef(true);\n\n useEffect(\n isInitialMount.current || !applyChanges\n ? () => {\n isInitialMount.current = false;\n }\n : effect,\n deps,\n );\n}\n\nexport default useUpdate;\n", "import { type Monaco } from '..';\n\n/**\n * noop is a helper function that does nothing\n * @returns undefined\n */\nfunction noop() {\n /** no-op */\n}\n\n/**\n * getOrCreateModel is a helper function that will return a model if it exists\n * or create a new model if it does not exist.\n * This is useful for when you want to create a model for a file that may or may not exist yet.\n * @param monaco The monaco instance\n * @param value The value of the model\n * @param language The language of the model\n * @param path The path of the model\n * @returns The model that was found or created\n */\nfunction getOrCreateModel(monaco: Monaco, value: string, language: string, path: string) {\n return getModel(monaco, path) || createModel(monaco, value, language, path);\n}\n\n/**\n * getModel is a helper function that will return a model if it exists\n * or return undefined if it does not exist.\n * @param monaco The monaco instance\n * @param path The path of the model\n * @returns The model that was found or undefined\n */\nfunction getModel(monaco: Monaco, path: string) {\n return monaco.editor.getModel(createModelUri(monaco, path));\n}\n\n/**\n * createModel is a helper function that will create a new model\n * @param monaco The monaco instance\n * @param value The value of the model\n * @param language The language of the model\n * @param path The path of the model\n * @returns The model that was created\n */\nfunction createModel(monaco: Monaco, value: string, language?: string, path?: string) {\n return monaco.editor.createModel(\n value,\n language,\n path ? createModelUri(monaco, path) : undefined,\n );\n}\n\n/**\n * createModelUri is a helper function that will create a new model uri\n * @param monaco The monaco instance\n * @param path The path of the model\n * @returns The model uri that was created\n */\nfunction createModelUri(monaco: Monaco, path: string) {\n return monaco.Uri.parse(path);\n}\n\nexport { noop, getOrCreateModel };\n", "import { useState } from 'react';\nimport loader from '@monaco-editor/loader';\n\nimport useMount from '../useMount';\n\nfunction useMonaco() {\n const [monaco, setMonaco] = useState(loader.__getMonacoInstance());\n\n useMount(() => {\n let cancelable: ReturnType<typeof loader.init>;\n\n if (!monaco) {\n cancelable = loader.init();\n\n cancelable.then((monaco) => {\n setMonaco(monaco);\n });\n }\n\n return () => cancelable?.cancel();\n });\n\n return monaco;\n}\n\nexport default useMonaco;\n", "import { memo } from 'react';\n\nimport Editor from './Editor';\n\nexport * from './types';\n\nexport default memo(Editor);\n", "'use client';\n\nimport React, { useState, useEffect, useRef, useCallback } from 'react';\nimport loader from '@monaco-editor/loader';\nimport useMount from '../hooks/useMount';\nimport useUpdate from '../hooks/useUpdate';\nimport usePrevious from '../hooks/usePrevious';\nimport { type IDisposable, type editor } from 'monaco-editor';\nimport { noop, getOrCreateModel } from '../utils';\nimport { type EditorProps } from './types';\nimport { type Monaco } from '..';\nimport MonacoContainer from '../MonacoContainer';\n\nconst viewStates = new Map();\n\nfunction Editor({\n defaultValue,\n defaultLanguage,\n defaultPath,\n value,\n language,\n path,\n /* === */\n theme = 'light',\n line,\n loading = 'Loading...',\n options = {},\n overrideServices = {},\n saveViewState = true,\n keepCurrentModel = false,\n /* === */\n width = '100%',\n height = '100%',\n className,\n wrapperProps = {},\n /* === */\n beforeMount = noop,\n onMount = noop,\n onChange,\n onValidate = noop,\n}: EditorProps) {\n const [isEditorReady, setIsEditorReady] = useState(false);\n const [isMonacoMounting, setIsMonacoMounting] = useState(true);\n const monacoRef = useRef<Monaco | null>(null);\n const editorRef = useRef<editor.IStandaloneCodeEditor | null>(null);\n const containerRef = useRef<HTMLDivElement>(null);\n const onMountRef = useRef(onMount);\n const beforeMountRef = useRef(beforeMount);\n const subscriptionRef = useRef<IDisposable>();\n const valueRef = useRef(value);\n const previousPath = usePrevious(path);\n const preventCreation = useRef(false);\n const preventTriggerChangeEvent = useRef<boolean>(false);\n\n useMount(() => {\n const cancelable = loader.init();\n\n cancelable\n .then((monaco) => (monacoRef.current = monaco) && setIsMonacoMounting(false))\n .catch(\n (error) =>\n error?.type !== 'cancelation' && console.error('Monaco initialization: error:', error),\n );\n\n return () => (editorRef.current ? disposeEditor() : cancelable.cancel());\n });\n\n useUpdate(\n () => {\n const model = getOrCreateModel(\n monacoRef.current!,\n defaultValue || value || '',\n defaultLanguage || language || '',\n path || defaultPath || '',\n );\n\n if (model !== editorRef.current?.getModel()) {\n if (saveViewState) viewStates.set(previousPath, editorRef.current?.saveViewState());\n editorRef.current?.setModel(model);\n if (saveViewState) editorRef.current?.restoreViewState(viewStates.get(path));\n }\n },\n [path],\n isEditorReady,\n );\n\n useUpdate(\n () => {\n editorRef.current?.updateOptions(options);\n },\n [options],\n isEditorReady,\n );\n\n useUpdate(\n () => {\n if (!editorRef.current || value === undefined) return;\n if (editorRef.current.getOption(monacoRef.current!.editor.EditorOption.readOnly)) {\n editorRef.current.setValue(value);\n } else if (value !== editorRef.current.getValue()) {\n preventTriggerChangeEvent.current = true;\n editorRef.current.executeEdits('', [\n {\n range: editorRef.current.getModel()!.getFullModelRange(),\n text: value,\n forceMoveMarkers: true,\n },\n ]);\n\n editorRef.current.pushUndoStop();\n preventTriggerChangeEvent.current = false;\n }\n },\n [value],\n isEditorReady,\n );\n\n useUpdate(\n () => {\n const model = editorRef.current?.getModel();\n if (model && language) monacoRef.current?.editor.setModelLanguage(model, language);\n },\n [language],\n isEditorReady,\n );\n\n useUpdate(\n () => {\n // reason for undefined check: https://github.com/suren-atoyan/monaco-react/pull/188\n if (line !== undefined) {\n editorRef.current?.revealLine(line);\n }\n },\n [line],\n isEditorReady,\n );\n\n useUpdate(\n () => {\n monacoRef.current?.editor.setTheme(theme);\n },\n [theme],\n isEditorReady,\n );\n\n const createEditor = useCallback(() => {\n if (!containerRef.current || !monacoRef.current) return;\n if (!preventCreation.current) {\n beforeMountRef.current(monacoRef.current);\n const autoCreatedModelPath = path || defaultPath;\n\n const defaultModel = getOrCreateModel(\n monacoRef.current,\n value || defaultValue || '',\n defaultLanguage || language || '',\n autoCreatedModelPath || '',\n );\n\n editorRef.current = monacoRef.current?.editor.create(\n containerRef.current,\n {\n model: defaultModel,\n automaticLayout: true,\n ...options,\n },\n overrideServices,\n );\n\n saveViewState && editorRef.current.restoreViewState(viewStates.get(autoCreatedModelPath));\n\n monacoRef.current.editor.setTheme(theme);\n\n if (line !== undefined) {\n editorRef.current.revealLine(line);\n }\n\n setIsEditorReady(true);\n preventCreation.current = true;\n }\n }, [\n defaultValue,\n defaultLanguage,\n defaultPath,\n value,\n language,\n path,\n options,\n overrideServices,\n saveViewState,\n theme,\n line,\n ]);\n\n useEffect(() => {\n if (isEditorReady) {\n onMountRef.current(editorRef.current!, monacoRef.current!);\n }\n }, [isEditorReady]);\n\n useEffect(() => {\n !isMonacoMounting && !isEditorReady && createEditor();\n }, [isMonacoMounting, isEditorReady, createEditor]);\n\n // subscription\n // to avoid unnecessary updates (attach - dispose listener) in subscription\n valueRef.current = value;\n\n // onChange\n useEffect(() => {\n if (isEditorReady && onChange) {\n subscriptionRef.current?.dispose();\n subscriptionRef.current = editorRef.current?.onDidChangeModelContent((event) => {\n if (!preventTriggerChangeEvent.current) {\n onChange(editorRef.current!.getValue(), event);\n }\n });\n }\n }, [isEditorReady, onChange]);\n\n // onValidate\n useEffect(() => {\n if (isEditorReady) {\n const changeMarkersListener = monacoRef.current!.editor.onDidChangeMarkers((uris) => {\n const editorUri = editorRef.current!.getModel()?.uri;\n\n if (editorUri) {\n const currentEditorHasMarkerChanges = uris.find((uri) => uri.path === editorUri.path);\n if (currentEditorHasMarkerChanges) {\n const markers = monacoRef.current!.editor.getModelMarkers({\n resource: editorUri,\n });\n onValidate?.(markers);\n }\n }\n });\n\n return () => {\n changeMarkersListener?.dispose();\n };\n }\n return () => {\n // eslint happy\n };\n }, [isEditorReady, onValidate]);\n\n function disposeEditor() {\n subscriptionRef.current?.dispose();\n\n if (keepCurrentModel) {\n saveViewState && viewStates.set(path, editorRef.current!.saveViewState());\n } else {\n editorRef.current!.getModel()?.dispose();\n }\n\n editorRef.current!.dispose();\n }\n\n return (\n <MonacoContainer\n width={width}\n height={height}\n isEditorReady={isEditorReady}\n loading={loading}\n _ref={containerRef}\n className={className}\n wrapperProps={wrapperProps}\n />\n );\n}\n\nexport default Editor;\n", "import { useEffect, useRef } from 'react';\n\nfunction 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\nexport default usePrevious;\n", "'use client'\nimport React, { createContext, useCallback, useContext, useEffect, useState } from 'react'\n\nimport { useConfig } from '../Config/index.js'\n\nexport type Theme = 'dark' | 'light'\n\nexport type ThemeContext = {\n autoMode: boolean\n setTheme: (theme: Theme) => void\n theme: Theme\n}\n\nconst initialContext: ThemeContext = {\n autoMode: true,\n setTheme: () => null,\n theme: 'light',\n}\n\nconst Context = createContext(initialContext)\n\nfunction setCookie(cname, cvalue, exdays) {\n const d = new Date()\n d.setTime(d.getTime() + exdays * 24 * 60 * 60 * 1000)\n const expires = 'expires=' + d.toUTCString()\n document.cookie = cname + '=' + cvalue + ';' + expires + ';path=/'\n}\n\nconst getTheme = (\n cookieKey,\n): {\n theme: Theme\n themeFromCookies: null | string\n} => {\n let theme: Theme\n\n const themeFromCookies = window.document.cookie\n .split('; ')\n .find((row) => row.startsWith(`${cookieKey}=`))\n ?.split('=')[1]\n\n if (themeFromCookies === 'light' || themeFromCookies === 'dark') {\n theme = themeFromCookies\n } else {\n theme =\n window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches\n ? 'dark'\n : 'light'\n }\n\n document.documentElement.setAttribute('data-theme', theme)\n\n return { theme, themeFromCookies }\n}\n\nexport const defaultTheme = 'light'\n\nexport const ThemeProvider: React.FC<{\n children?: React.ReactNode\n theme?: Theme\n}> = ({ children, theme: initialTheme }) => {\n const { config } = useConfig()\n\n const preselectedTheme = config.admin.theme\n const cookieKey = `${config.cookiePrefix || 'payload'}-theme`\n\n const [theme, setThemeState] = useState<Theme>(initialTheme || defaultTheme)\n\n const [autoMode, setAutoMode] = useState<boolean>()\n\n useEffect(() => {\n if (preselectedTheme !== 'all') {\n return\n }\n\n const { theme, themeFromCookies } = getTheme(cookieKey)\n setThemeState(theme)\n setAutoMode(!themeFromCookies)\n }, [preselectedTheme, cookieKey])\n\n const setTheme = useCallback(\n (themeToSet: 'auto' | Theme) => {\n if (themeToSet === 'light' || themeToSet === 'dark') {\n setThemeState(themeToSet)\n setAutoMode(false)\n setCookie(cookieKey, themeToSet, 365)\n document.documentElement.setAttribute('data-theme', themeToSet)\n } else if (themeToSet === 'auto') {\n // to delete the cookie, we set an expired date\n setCookie(cookieKey, themeToSet, -1)\n const themeFromOS =\n window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches\n ? 'dark'\n : 'light'\n document.documentElement.setAttribute('data-theme', themeFromOS)\n setAutoMode(true)\n setThemeState(themeFromOS)\n }\n },\n [cookieKey],\n )\n\n return <Context.Provider value={{ autoMode, setTheme, theme }}>{children}</Context.Provider>\n}\n\nexport const useTheme = (): ThemeContext => useContext(Context)\n", "/* eslint-disable perfectionist/sort-object-types */ // Need to disable this rule because the order of the overloads is important\n'use client'\nimport type {\n ClientCollectionConfig,\n ClientConfig,\n ClientGlobalConfig,\n CollectionSlug,\n GlobalSlug,\n UnsanitizedClientConfig,\n} from 'payload'\n\nimport React, { createContext, useCallback, useContext, useEffect, useMemo, useState } from 'react'\n\ntype GetEntityConfigFn = {\n // Overload #1: collectionSlug only\n // @todo remove \"{} |\" in 4.0, which would be a breaking change\n (args: { collectionSlug: {} | CollectionSlug; globalSlug?: never }): ClientCollectionConfig\n\n // Overload #2: globalSlug only\n // @todo remove \"{} |\" in 4.0, which would be a breaking change\n (args: { collectionSlug?: never; globalSlug: {} | GlobalSlug }): ClientGlobalConfig\n\n // Overload #3: both/none (fall back to union | null)\n (args: {\n collectionSlug?: {} | CollectionSlug\n globalSlug?: {} | GlobalSlug\n }): ClientCollectionConfig | ClientGlobalConfig | null\n}\n\nexport type ClientConfigContext = {\n config: ClientConfig\n /**\n * Get a collection or global config by its slug. This is preferred over\n * using `config.collections.find` or `config.globals.find`, because\n * getEntityConfig uses a lookup map for O(1) lookups.\n */\n getEntityConfig: GetEntityConfigFn\n setConfig: (config: ClientConfig) => void\n}\n\nconst RootConfigContext = createContext<ClientConfigContext | undefined>(undefined)\n\nfunction sanitizeClientConfig(\n unSanitizedConfig: ClientConfig | UnsanitizedClientConfig,\n): ClientConfig {\n if (!unSanitizedConfig?.blocks?.length || (unSanitizedConfig as ClientConfig).blocksMap) {\n ;(unSanitizedConfig as ClientConfig).blocksMap = {}\n return unSanitizedConfig as ClientConfig\n }\n const sanitizedConfig: ClientConfig = { ...unSanitizedConfig } as ClientConfig\n\n sanitizedConfig.blocksMap = {}\n\n for (const block of unSanitizedConfig.blocks) {\n sanitizedConfig.blocksMap[block.slug] = block\n }\n\n return sanitizedConfig\n}\n\nexport const ConfigProvider: React.FC<{\n readonly children: React.ReactNode\n readonly config: ClientConfig | UnsanitizedClientConfig\n}> = ({ children, config: configFromProps }) => {\n const [config, setConfig] = useState<ClientConfig>(() => sanitizeClientConfig(configFromProps))\n\n // Need to update local config state if config from props changes, for HMR.\n // That way, config changes will be updated in the UI immediately without needing a refresh.\n useEffect(() => {\n setConfig(sanitizeClientConfig(configFromProps))\n }, [configFromProps])\n\n // Build lookup maps for collections and globals so we can do O(1) lookups by slug\n const { collectionsBySlug, globalsBySlug } = useMemo(() => {\n const collectionsBySlug: Record<string, ClientCollectionConfig> = {}\n const globalsBySlug: Record<string, ClientGlobalConfig> = {}\n\n for (const collection of config.collections) {\n collectionsBySlug[collection.slug] = collection\n }\n for (const global of config.globals) {\n globalsBySlug[global.slug] = global\n }\n\n return { collectionsBySlug, globalsBySlug }\n }, [config])\n\n const getEntityConfig = useCallback<GetEntityConfigFn>(\n (args) => {\n if ('collectionSlug' in args) {\n return collectionsBySlug[args.collectionSlug] ?? null\n }\n if ('globalSlug' in args) {\n return globalsBySlug[args.globalSlug] ?? null\n }\n return null as any\n },\n [collectionsBySlug, globalsBySlug],\n )\n\n return (\n <RootConfigContext.Provider value={{ config, getEntityConfig, setConfig }}>\n {children}\n </RootConfigContext.Provider>\n )\n}\n\nexport const useConfig = (): ClientConfigContext => useContext(RootConfigContext)\n", "'use client'\nimport * as React from 'react'\n\nimport { useDelay } from '../../hooks/useDelay.js'\nimport './index.scss'\n\nexport type ShimmerEffectProps = {\n readonly animationDelay?: string\n readonly height?: number | string\n readonly width?: number | string\n}\n\nexport const ShimmerEffect: React.FC<ShimmerEffectProps> = ({\n animationDelay = '0ms',\n height = '60px',\n width = '100%',\n}) => {\n return (\n <div\n className=\"shimmer-effect\"\n style={{\n height: typeof height === 'number' ? `${height}px` : height,\n width: typeof width === 'number' ? `${width}px` : width,\n }}\n >\n <div\n className=\"shimmer-effect__shine\"\n style={{\n animationDelay,\n }}\n />\n </div>\n )\n}\n\nexport type StaggeredShimmersProps = {\n className?: string\n count: number\n height?: number | string\n renderDelay?: number\n shimmerDelay?: number | string\n shimmerItemClassName?: string\n width?: number | string\n}\n\nexport const StaggeredShimmers: React.FC<StaggeredShimmersProps> = ({\n className,\n count,\n height,\n renderDelay = 500,\n shimmerDelay = 25,\n shimmerItemClassName,\n width,\n}) => {\n const shimmerDelayToPass = typeof shimmerDelay === 'number' ? `${shimmerDelay}ms` : shimmerDelay\n const [hasDelayed] = useDelay(renderDelay, true)\n\n if (!hasDelayed) {\n return null\n }\n\n return (\n <div className={className}>\n {[...Array(count)].map((_, i) => (\n <div className={shimmerItemClassName} key={i}>\n <ShimmerEffect\n animationDelay={`calc(${i} * ${shimmerDelayToPass})`}\n height={height}\n width={width}\n />\n </div>\n ))}\n </div>\n )\n}\n", "'use client'\nimport * as React from 'react'\n\ntype Result = [boolean, () => void]\nexport const useDelay = (delay: number, triggerOnMount = false): Result => {\n const [hasDelayed, setHasDelayed] = React.useState(false)\n const triggerTimeoutRef = React.useRef<NodeJS.Timeout>(undefined)\n\n const triggerDelay = React.useCallback(() => {\n setHasDelayed(false)\n clearTimeout(triggerTimeoutRef.current)\n triggerTimeoutRef.current = setTimeout(() => {\n setHasDelayed(true)\n }, delay)\n\n return () => {\n clearTimeout(triggerTimeoutRef.current)\n }\n }, [delay])\n\n React.useEffect(() => {\n if (triggerOnMount) {\n triggerDelay()\n }\n }, [triggerDelay, triggerOnMount])\n\n return [hasDelayed, triggerDelay]\n}\n"],
5
- "mappings": ";;;;;;;;;;;AAAA,OAAAA,KAAAC,OAAA,kECAA,SAASC,GAAgBC,EAAKC,EAAKC,EAAO,CACxC,OAAID,KAAOD,EACT,OAAO,eAAeA,EAAKC,EAAK,CAC9B,MAAOC,EACP,WAAY,GACZ,aAAc,GACd,SAAU,EACZ,CAAC,EAEDF,EAAIC,CAAG,EAAIC,EAGNF,CACT,CAEA,SAASG,GAAQC,EAAQC,EAAgB,CACvC,IAAIC,EAAO,OAAO,KAAKF,CAAM,EAE7B,GAAI,OAAO,sBAAuB,CAChC,IAAIG,EAAU,OAAO,sBAAsBH,CAAM,EAC7CC,IAAgBE,EAAUA,EAAQ,OAAO,SAAUC,EAAK,CAC1D,OAAO,OAAO,yBAAyBJ,EAAQI,CAAG,EAAE,UACtD,CAAC,GACDF,EAAK,KAAK,MAAMA,EAAMC,CAAO,CAC/B,CAEA,OAAOD,CACT,CAEA,SAASG,GAAeC,EAAQ,CAC9B,QAASC,EAAI,EAAGA,EAAI,UAAU,OAAQA,IAAK,CACzC,IAAIC,EAAS,UAAUD,CAAC,GAAK,KAAO,UAAUA,CAAC,EAAI,CAAC,EAEhDA,EAAI,EACNR,GAAQ,OAAOS,CAAM,EAAG,EAAI,EAAE,QAAQ,SAAUX,EAAK,CACnDF,GAAgBW,EAAQT,EAAKW,EAAOX,CAAG,CAAC,CAC1C,CAAC,EACQ,OAAO,0BAChB,OAAO,iBAAiBS,EAAQ,OAAO,0BAA0BE,CAAM,CAAC,EAExET,GAAQ,OAAOS,CAAM,CAAC,EAAE,QAAQ,SAAUX,EAAK,CAC7C,OAAO,eAAeS,EAAQT,EAAK,OAAO,yBAAyBW,EAAQX,CAAG,CAAC,CACjF,CAAC,CAEL,CAEA,OAAOS,CACT,CAEA,SAASG,GAA8BD,EAAQE,EAAU,CACvD,GAAIF,GAAU,KAAM,MAAO,CAAC,EAC5B,IAAIF,EAAS,CAAC,EACVK,EAAa,OAAO,KAAKH,CAAM,EAC/BX,EAAK,EAET,IAAK,EAAI,EAAG,EAAIc,EAAW,OAAQ,IACjCd,EAAMc,EAAW,CAAC,EACd,EAAAD,EAAS,QAAQb,CAAG,GAAK,KAC7BS,EAAOT,CAAG,EAAIW,EAAOX,CAAG,GAG1B,OAAOS,CACT,CAEA,SAASM,GAAyBJ,EAAQE,EAAU,CAClD,GAAIF,GAAU,KAAM,MAAO,CAAC,EAE5B,IAAIF,EAASG,GAA8BD,EAAQE,CAAQ,EAEvDb,EAAKU,EAET,GAAI,OAAO,sBAAuB,CAChC,IAAIM,EAAmB,OAAO,sBAAsBL,CAAM,EAE1D,IAAKD,EAAI,EAAGA,EAAIM,EAAiB,OAAQN,IACvCV,EAAMgB,EAAiBN,CAAC,EACpB,EAAAG,EAAS,QAAQb,CAAG,GAAK,IACxB,OAAO,UAAU,qBAAqB,KAAKW,EAAQX,CAAG,IAC3DS,EAAOT,CAAG,EAAIW,EAAOX,CAAG,EAE5B,CAEA,OAAOS,CACT,CAEA,SAASQ,GAAeC,EAAKR,EAAG,CAC9B,OAAOS,GAAgBD,CAAG,GAAKE,GAAsBF,EAAKR,CAAC,GAAKW,GAA4BH,EAAKR,CAAC,GAAKY,GAAiB,CAC1H,CAEA,SAASH,GAAgBD,EAAK,CAC5B,GAAI,MAAM,QAAQA,CAAG,EAAG,OAAOA,CACjC,CAEA,SAASE,GAAsBF,EAAKR,EAAG,CACrC,GAAI,SAAO,OAAW,KAAe,EAAE,OAAO,YAAY,OAAOQ,CAAG,IACpE,KAAIK,EAAO,CAAC,EACRC,EAAK,GACLC,EAAK,GACLC,EAAK,OAET,GAAI,CACF,QAASC,EAAKT,EAAI,OAAO,QAAQ,EAAE,EAAGU,EAAI,EAAEJ,GAAMI,EAAKD,EAAG,KAAK,GAAG,QAChEJ,EAAK,KAAKK,EAAG,KAAK,EAEd,EAAAlB,GAAKa,EAAK,SAAWb,IAH8Cc,EAAK,GAG5E,CAEJ,OAASK,EAAK,CACZJ,EAAK,GACLC,EAAKG,CACP,QAAE,CACA,GAAI,CACE,CAACL,GAAMG,EAAG,QAAa,MAAMA,EAAG,OAAU,CAChD,QAAE,CACA,GAAIF,EAAI,MAAMC,CAChB,CACF,CAEA,OAAOH,EACT,CAEA,SAASF,GAA4BS,EAAGC,EAAQ,CAC9C,GAAKD,EACL,IAAI,OAAOA,GAAM,SAAU,OAAOE,GAAkBF,EAAGC,CAAM,EAC7D,IAAIE,EAAI,OAAO,UAAU,SAAS,KAAKH,CAAC,EAAE,MAAM,EAAG,EAAE,EAErD,GADIG,IAAM,UAAYH,EAAE,cAAaG,EAAIH,EAAE,YAAY,MACnDG,IAAM,OAASA,IAAM,MAAO,OAAO,MAAM,KAAKH,CAAC,EACnD,GAAIG,IAAM,aAAe,2CAA2C,KAAKA,CAAC,EAAG,OAAOD,GAAkBF,EAAGC,CAAM,EACjH,CAEA,SAASC,GAAkBd,EAAKgB,EAAK,EAC/BA,GAAO,MAAQA,EAAMhB,EAAI,UAAQgB,EAAMhB,EAAI,QAE/C,QAASR,EAAI,EAAGyB,EAAO,IAAI,MAAMD,CAAG,EAAGxB,EAAIwB,EAAKxB,IAAKyB,EAAKzB,CAAC,EAAIQ,EAAIR,CAAC,EAEpE,OAAOyB,CACT,CAEA,SAASb,IAAmB,CAC1B,MAAM,IAAI,UAAU;AAAA,mFAA2I,CACjK,CC3IA,SAASc,GAAgBC,EAAKC,EAAKC,EAAO,CACxC,OAAID,KAAOD,EACT,OAAO,eAAeA,EAAKC,EAAK,CAC9B,MAAOC,EACP,WAAY,GACZ,aAAc,GACd,SAAU,EACZ,CAAC,EAEDF,EAAIC,CAAG,EAAIC,EAGNF,CACT,CAEA,SAASG,GAAQC,EAAQC,EAAgB,CACvC,IAAIC,EAAO,OAAO,KAAKF,CAAM,EAE7B,GAAI,OAAO,sBAAuB,CAChC,IAAIG,EAAU,OAAO,sBAAsBH,CAAM,EAC7CC,IAAgBE,EAAUA,EAAQ,OAAO,SAAUC,EAAK,CAC1D,OAAO,OAAO,yBAAyBJ,EAAQI,CAAG,EAAE,UACtD,CAAC,GACDF,EAAK,KAAK,MAAMA,EAAMC,CAAO,CAC/B,CAEA,OAAOD,CACT,CAEA,SAASG,GAAeC,EAAQ,CAC9B,QAASC,EAAI,EAAGA,EAAI,UAAU,OAAQA,IAAK,CACzC,IAAIC,EAAS,UAAUD,CAAC,GAAK,KAAO,UAAUA,CAAC,EAAI,CAAC,EAEhDA,EAAI,EACNR,GAAQ,OAAOS,CAAM,EAAG,EAAI,EAAE,QAAQ,SAAUX,EAAK,CACnDF,GAAgBW,EAAQT,EAAKW,EAAOX,CAAG,CAAC,CAC1C,CAAC,EACQ,OAAO,0BAChB,OAAO,iBAAiBS,EAAQ,OAAO,0BAA0BE,CAAM,CAAC,EAExET,GAAQ,OAAOS,CAAM,CAAC,EAAE,QAAQ,SAAUX,EAAK,CAC7C,OAAO,eAAeS,EAAQT,EAAK,OAAO,yBAAyBW,EAAQX,CAAG,CAAC,CACjF,CAAC,CAEL,CAEA,OAAOS,CACT,CAEA,SAASG,IAAU,CACjB,QAASC,EAAO,UAAU,OAAQC,EAAM,IAAI,MAAMD,CAAI,EAAGE,EAAO,EAAGA,EAAOF,EAAME,IAC9ED,EAAIC,CAAI,EAAI,UAAUA,CAAI,EAG5B,OAAO,SAAUC,EAAG,CAClB,OAAOF,EAAI,YAAY,SAAUG,EAAGC,EAAG,CACrC,OAAOA,EAAED,CAAC,CACZ,EAAGD,CAAC,CACN,CACF,CAEA,SAASG,EAAMC,EAAI,CACjB,OAAO,SAASC,GAAU,CAGxB,QAFIC,EAAQ,KAEHC,EAAQ,UAAU,OAAQC,EAAO,IAAI,MAAMD,CAAK,EAAGE,EAAQ,EAAGA,EAAQF,EAAOE,IACpFD,EAAKC,CAAK,EAAI,UAAUA,CAAK,EAG/B,OAAOD,EAAK,QAAUJ,EAAG,OAASA,EAAG,MAAM,KAAMI,CAAI,EAAI,UAAY,CACnE,QAASE,EAAQ,UAAU,OAAQC,EAAW,IAAI,MAAMD,CAAK,EAAGE,EAAQ,EAAGA,EAAQF,EAAOE,IACxFD,EAASC,CAAK,EAAI,UAAUA,CAAK,EAGnC,OAAOP,EAAQ,MAAMC,EAAO,CAAC,EAAE,OAAOE,EAAMG,CAAQ,CAAC,CACvD,CACF,CACF,CAEA,SAASE,EAAS5B,EAAO,CACvB,MAAO,CAAC,EAAE,SAAS,KAAKA,CAAK,EAAE,SAAS,QAAQ,CAClD,CAEA,SAAS6B,GAAQ/B,EAAK,CACpB,MAAO,CAAC,OAAO,KAAKA,CAAG,EAAE,MAC3B,CAEA,SAASgC,EAAW9B,EAAO,CACzB,OAAO,OAAOA,GAAU,UAC1B,CAEA,SAAS+B,GAAe7B,EAAQ8B,EAAU,CACxC,OAAO,OAAO,UAAU,eAAe,KAAK9B,EAAQ8B,CAAQ,CAC9D,CAEA,SAASC,GAAgBC,EAASC,EAAS,CACzC,OAAKP,EAASO,CAAO,GAAGC,EAAa,YAAY,EAC7C,OAAO,KAAKD,CAAO,EAAE,KAAK,SAAUE,EAAO,CAC7C,MAAO,CAACN,GAAeG,EAASG,CAAK,CACvC,CAAC,GAAGD,EAAa,aAAa,EACvBD,CACT,CAEA,SAASG,GAAiBC,EAAU,CAC7BT,EAAWS,CAAQ,GAAGH,EAAa,cAAc,CACxD,CAEA,SAASI,GAAgBC,EAAS,CAC1BX,EAAWW,CAAO,GAAKb,EAASa,CAAO,GAAIL,EAAa,aAAa,EACvER,EAASa,CAAO,GAAK,OAAO,OAAOA,CAAO,EAAE,KAAK,SAAUC,EAAU,CACvE,MAAO,CAACZ,EAAWY,CAAQ,CAC7B,CAAC,GAAGN,EAAa,cAAc,CACjC,CAEA,SAASO,GAAgBT,EAAS,CAC3BA,GAASE,EAAa,mBAAmB,EACzCR,EAASM,CAAO,GAAGE,EAAa,aAAa,EAC9CP,GAAQK,CAAO,GAAGE,EAAa,gBAAgB,CACrD,CAEA,SAASQ,GAAWC,EAAeC,EAAM,CACvC,MAAM,IAAI,MAAMD,EAAcC,CAAI,GAAKD,EAAc,OAAU,CACjE,CAEA,IAAIA,GAAgB,CAClB,kBAAmB,4BACnB,YAAa,oCACb,eAAgB,6CAChB,YAAa,4CACb,aAAc,qCACd,aAAc,gCACd,WAAY,gDACZ,YAAa,iGACb,QAAW,mDACb,EACIT,EAAelB,EAAM0B,EAAU,EAAEC,EAAa,EAC9CE,EAAa,CACf,QAASd,GACT,SAAUK,GACV,QAASE,GACT,QAASG,EACX,EAEA,SAASK,GAAOd,EAAS,CACvB,IAAIO,EAAU,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,CAAC,EACnFM,EAAW,QAAQb,CAAO,EAC1Ba,EAAW,QAAQN,CAAO,EAC1B,IAAIQ,EAAQ,CACV,QAASf,CACX,EACIgB,EAAYhC,EAAMiC,EAAc,EAAEF,EAAOR,CAAO,EAChDW,EAASlC,EAAMmC,EAAW,EAAEJ,CAAK,EACjCK,EAAWpC,EAAM6B,EAAW,OAAO,EAAEb,CAAO,EAC5CqB,EAAarC,EAAMsC,EAAc,EAAEP,CAAK,EAE5C,SAASQ,GAAW,CAClB,IAAIlB,EAAW,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,SAAUU,EAAO,CAClG,OAAOA,CACT,EACA,OAAAF,EAAW,SAASR,CAAQ,EACrBA,EAASU,EAAM,OAAO,CAC/B,CAEA,SAASS,EAASC,EAAe,CAC/BhD,GAAQuC,EAAWE,EAAQE,EAAUC,CAAU,EAAEI,CAAa,CAChE,CAEA,MAAO,CAACF,EAAUC,CAAQ,CAC5B,CAEA,SAASF,GAAeP,EAAOU,EAAe,CAC5C,OAAO7B,EAAW6B,CAAa,EAAIA,EAAcV,EAAM,OAAO,EAAIU,CACpE,CAEA,SAASN,GAAYJ,EAAOd,EAAS,CACnC,OAAAc,EAAM,QAAU1C,GAAeA,GAAe,CAAC,EAAG0C,EAAM,OAAO,EAAGd,CAAO,EAClEA,CACT,CAEA,SAASgB,GAAeF,EAAOR,EAASN,EAAS,CAC/C,OAAAL,EAAWW,CAAO,EAAIA,EAAQQ,EAAM,OAAO,EAAI,OAAO,KAAKd,CAAO,EAAE,QAAQ,SAAUE,EAAO,CAC3F,IAAIuB,EAEJ,OAAQA,EAAiBnB,EAAQJ,CAAK,KAAO,MAAQuB,IAAmB,OAAS,OAASA,EAAe,KAAKnB,EAASQ,EAAM,QAAQZ,CAAK,CAAC,CAC7I,CAAC,EACMF,CACT,CAEA,IAAI0B,GAAQ,CACV,OAAQb,EACV,EAEOc,GAAQD,GChMf,IAAIE,GAAS,CACX,MAAO,CACL,GAAI,0DACN,CACF,EAEOC,GAAQD,GCNf,SAASE,GAAMC,EAAI,CACjB,OAAO,SAASC,GAAU,CAGxB,QAFIC,EAAQ,KAEHC,EAAO,UAAU,OAAQC,EAAO,IAAI,MAAMD,CAAI,EAAGE,EAAO,EAAGA,EAAOF,EAAME,IAC/ED,EAAKC,CAAI,EAAI,UAAUA,CAAI,EAG7B,OAAOD,EAAK,QAAUJ,EAAG,OAASA,EAAG,MAAM,KAAMI,CAAI,EAAI,UAAY,CACnE,QAASE,EAAQ,UAAU,OAAQC,EAAW,IAAI,MAAMD,CAAK,EAAGE,EAAQ,EAAGA,EAAQF,EAAOE,IACxFD,EAASC,CAAK,EAAI,UAAUA,CAAK,EAGnC,OAAOP,EAAQ,MAAMC,EAAO,CAAC,EAAE,OAAOE,EAAMG,CAAQ,CAAC,CACvD,CACF,CACF,CAEA,IAAOE,GAAQV,GClBf,SAASW,GAASC,EAAO,CACvB,MAAO,CAAC,EAAE,SAAS,KAAKA,CAAK,EAAE,SAAS,QAAQ,CAClD,CAEA,IAAOC,GAAQF,GCKf,SAASG,GAAeC,EAAQ,CAI9B,OAHKA,GAAQC,GAAa,kBAAkB,EACvCC,GAASF,CAAM,GAAGC,GAAa,YAAY,EAE5CD,EAAO,MACTG,GAAuB,EAChB,CACL,MAAO,CACL,GAAIH,EAAO,KAAK,UAClB,CACF,GAGKA,CACT,CAMA,SAASG,IAAyB,CAChC,QAAQ,KAAKC,GAAc,WAAW,CACxC,CAEA,SAASC,GAAWD,EAAeE,EAAM,CACvC,MAAM,IAAI,MAAMF,EAAcE,CAAI,GAAKF,EAAc,OAAU,CACjE,CAEA,IAAIA,GAAgB,CAClB,iBAAkB,uCAClB,WAAY,+CACZ,QAAW,8DACX,YAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GACf,EACIH,GAAeM,GAAMF,EAAU,EAAED,EAAa,EAC9CI,GAAa,CACf,OAAQT,EACV,EAEOU,GAAQD,GChDf,IAAIE,GAAU,UAAmB,CAC/B,QAASC,EAAO,UAAU,OAAQC,EAAM,IAAI,MAAMD,CAAI,EAAGE,EAAO,EAAGA,EAAOF,EAAME,IAC9ED,EAAIC,CAAI,EAAI,UAAUA,CAAI,EAG5B,OAAO,SAAUC,EAAG,CAClB,OAAOF,EAAI,YAAY,SAAUG,EAAGC,EAAG,CACrC,OAAOA,EAAED,CAAC,CACZ,EAAGD,CAAC,CACN,CACF,EAEOG,GAAQP,GCVf,SAASQ,GAAMC,EAAQC,EAAQ,CAC7B,cAAO,KAAKA,CAAM,EAAE,QAAQ,SAAUC,EAAK,CACrCD,EAAOC,CAAG,YAAa,QACrBF,EAAOE,CAAG,GACZ,OAAO,OAAOD,EAAOC,CAAG,EAAGH,GAAMC,EAAOE,CAAG,EAAGD,EAAOC,CAAG,CAAC,CAAC,CAGhE,CAAC,EACMC,GAAeA,GAAe,CAAC,EAAGH,CAAM,EAAGC,CAAM,CAC1D,CAEA,IAAOG,GAAQL,GCZf,IAAIM,GAAsB,CACxB,KAAM,cACN,IAAK,gCACP,EAEA,SAASC,GAAeC,EAAS,CAC/B,IAAIC,EAAe,GACfC,EAAiB,IAAI,QAAQ,SAAUC,EAASC,EAAQ,CAC1DJ,EAAQ,KAAK,SAAUK,EAAK,CAC1B,OAAOJ,EAAeG,EAAON,EAAmB,EAAIK,EAAQE,CAAG,CACjE,CAAC,EACDL,EAAQ,MAASI,CAAM,CACzB,CAAC,EACD,OAAOF,EAAe,OAAS,UAAY,CACzC,OAAOD,EAAe,EACxB,EAAGC,CACL,CAEA,IAAOI,EAAQP,GCTf,IAAIQ,GAAgBC,GAAM,OAAO,CAC/B,OAAQC,GACR,cAAe,GACf,QAAS,KACT,OAAQ,KACR,OAAQ,IACV,CAAC,EACGC,GAAiBC,GAAeJ,GAAe,CAAC,EAChDK,EAAWF,GAAe,CAAC,EAC3BG,EAAWH,GAAe,CAAC,EAO/B,SAASI,GAAOC,EAAc,CAC5B,IAAIC,EAAqBC,GAAW,OAAOF,CAAY,EACnDG,EAASF,EAAmB,OAC5BF,EAASK,GAAyBH,EAAoB,CAAC,QAAQ,CAAC,EAEpEH,EAAS,SAAUO,EAAO,CACxB,MAAO,CACL,OAAQC,GAAMD,EAAM,OAAQN,CAAM,EAClC,OAAQI,CACV,CACF,CAAC,CACH,CAOA,SAASI,IAAO,CACd,IAAIF,EAAQR,EAAS,SAAUW,EAAM,CACnC,IAAIL,EAASK,EAAK,OACdC,EAAgBD,EAAK,cACrBE,EAAUF,EAAK,QACnB,MAAO,CACL,OAAQL,EACR,cAAeM,EACf,QAASC,CACX,CACF,CAAC,EAED,GAAI,CAACL,EAAM,cAAe,CAKxB,GAJAP,EAAS,CACP,cAAe,EACjB,CAAC,EAEGO,EAAM,OACR,OAAAA,EAAM,QAAQA,EAAM,MAAM,EACnBM,EAAeC,EAAc,EAGtC,GAAI,OAAO,QAAU,OAAO,OAAO,OACjC,OAAAC,GAAoB,OAAO,MAAM,EACjCR,EAAM,QAAQ,OAAO,MAAM,EACpBM,EAAeC,EAAc,EAGtCE,GAAQC,GAAeC,EAAqB,EAAEC,EAAe,CAC/D,CAEA,OAAON,EAAeC,EAAc,CACtC,CAQA,SAASG,GAAcG,EAAQ,CAC7B,OAAO,SAAS,KAAK,YAAYA,CAAM,CACzC,CAQA,SAASC,GAAaC,EAAK,CACzB,IAAIF,EAAS,SAAS,cAAc,QAAQ,EAC5C,OAAOE,IAAQF,EAAO,IAAME,GAAMF,CACpC,CAOA,SAASF,GAAsBC,EAAiB,CAC9C,IAAIZ,EAAQR,EAAS,SAAUwB,EAAO,CACpC,IAAItB,EAASsB,EAAM,OACfC,EAASD,EAAM,OACnB,MAAO,CACL,OAAQtB,EACR,OAAQuB,CACV,CACF,CAAC,EACGC,EAAeJ,GAAa,GAAG,OAAOd,EAAM,OAAO,MAAM,GAAI,YAAY,CAAC,EAE9E,OAAAkB,EAAa,OAAS,UAAY,CAChC,OAAON,EAAgB,CACzB,EAEAM,EAAa,QAAUlB,EAAM,OACtBkB,CACT,CAMA,SAASN,IAAkB,CACzB,IAAIZ,EAAQR,EAAS,SAAU2B,EAAO,CACpC,IAAIzB,EAASyB,EAAM,OACfd,EAAUc,EAAM,QAChBF,EAASE,EAAM,OACnB,MAAO,CACL,OAAQzB,EACR,QAASW,EACT,OAAQY,CACV,CACF,CAAC,EACGG,EAAU,OAAO,QAErBA,EAAQ,OAAOpB,EAAM,MAAM,EAE3BoB,EAAQ,CAAC,uBAAuB,EAAG,SAAUtB,EAAQ,CACnDU,GAAoBV,CAAM,EAC1BE,EAAM,QAAQF,CAAM,CACtB,EAAG,SAAUuB,EAAO,CAClBrB,EAAM,OAAOqB,CAAK,CACpB,CAAC,CACH,CAMA,SAASb,GAAoBV,EAAQ,CAC9BN,EAAS,EAAE,QACdC,EAAS,CACP,OAAQK,CACV,CAAC,CAEL,CAQA,SAASwB,IAAsB,CAC7B,OAAO9B,EAAS,SAAU+B,EAAO,CAC/B,IAAIzB,EAASyB,EAAM,OACnB,OAAOzB,CACT,CAAC,CACH,CAEA,IAAIS,GAAiB,IAAI,QAAQ,SAAUF,EAASY,EAAQ,CAC1D,OAAOxB,EAAS,CACd,QAASY,EACT,OAAQY,CACV,CAAC,CACH,CAAC,EACGO,GAAS,CACX,OAAQ9B,GACR,KAAMQ,GACN,oBAAqBoB,EACvB,EAEOG,EAAQD,GE3Lf,OAAS,QAAAE,OAAY,QCErB,OAAOC,IAAS,YAAAC,GAAU,UAAAC,EAAQ,eAAAC,GAAa,aAAAC,OAAiB,QCFhE,OAAS,QAAAC,OAAY,QCArB,OAAOC,OAAW,QEAlB,OAAOA,OAAuC,QGA9C,OAAS,aAAAC,OAAsC,QCA/C,OAAS,aAAAA,GAAW,UAAAC,OAAwD,QEA5E,OAAS,YAAAC,OAAgB,QCAzB,OAAS,QAAAC,OAAY,QCErB,OAAOC,IAAS,YAAAC,GAAU,aAAAC,EAAW,UAAAC,EAAQ,eAAAC,OAAmB,QCFhE,OAAS,aAAAC,GAAW,UAAAC,OAAc,QVElC,IAAMC,GAAwC,CAC5C,QAAS,CACP,QAAS,OACT,SAAU,WACV,UAAW,SACb,EACA,UAAW,CACT,MAAO,MACT,EACA,KAAM,CACJ,QAAS,MACX,CACF,EAEOC,GAAQD,GEdTA,GAAwC,CAC5C,UAAW,CACT,QAAS,OACT,OAAQ,OACR,MAAO,OACP,eAAgB,SAChB,WAAY,QACd,CACF,EAEOC,GAAQD,GDRf,SAASE,GAAQ,CAAE,SAAAC,CAAS,EAAsB,CAChD,OAAOC,GAAA,cAAC,MAAA,CAAI,MAAOH,GAAO,SAAA,EAAYE,CAAS,CACjD,CAEA,IAAOE,GAAQH,GENRG,GAAQA,GJOf,SAASC,GAAgB,CACvB,MAAAC,EACA,OAAAC,EACA,cAAAC,EACA,QAAAC,EACA,KAAAC,EACA,UAAAC,EACA,aAAAC,CACF,EAAmB,CACjB,OACET,GAAA,cAAC,UAAA,CAAQ,MAAO,CAAE,GAAGH,GAAO,QAAS,MAAAM,EAAO,OAAAC,CAAO,EAAI,GAAGK,CAAAA,EACvD,CAACJ,GAAiBL,GAAA,cAACC,GAAA,KAASK,CAAQ,EACrCN,GAAA,cAAC,MAAA,CACC,IAAKO,EACL,MAAO,CAAE,GAAGV,GAAO,UAAW,GAAI,CAACQ,GAAiBR,GAAO,IAAM,EACjE,UAAWW,CAAAA,CACb,CACF,CAEJ,CAEA,IAAOE,GAAQR,GD1BRQ,GAAQC,GAAKD,EAAe,EMFnC,SAASE,GAASC,EAAwB,CACxCnB,GAAUmB,EAAQ,CAAC,CAAC,CACtB,CAEA,IAAOC,GAAQF,GCJf,SAASG,GAAUF,EAAwBG,EAAsBC,EAAe,GAAM,CACpF,IAAMC,EAAiBvB,GAAO,EAAI,EAElCD,GACEwB,EAAe,SAAW,CAACD,EACvB,IAAM,CACJC,EAAe,QAAU,EAC3B,EACAL,EACJG,CACF,CACF,CAEA,IAAOG,EAAQJ,GCTf,SAASK,GAAO,CAEhB,CAYA,SAASC,EAAiBC,EAAgBC,EAAeC,EAAkBC,EAAc,CACvF,OAAOC,GAASJ,EAAQG,CAAI,GAAKE,GAAYL,EAAQC,EAAOC,EAAUC,CAAI,CAC5E,CASA,SAASC,GAASJ,EAAgBG,EAAc,CAC9C,OAAOH,EAAO,OAAO,SAASM,GAAeN,EAAQG,CAAI,CAAC,CAC5D,CAUA,SAASE,GAAYL,EAAgBC,EAAeC,EAAmBC,EAAe,CACpF,OAAOH,EAAO,OAAO,YACnBC,EACAC,EACAC,EAAOG,GAAeN,EAAQG,CAAI,EAAI,MACxC,CACF,CAQA,SAASG,GAAeN,EAAgBG,EAAc,CACpD,OAAOH,EAAO,IAAI,MAAMG,CAAI,CAC9B,CT/CA,SAASI,GAAW,CAClB,SAAAC,EACA,SAAAC,EACA,SAAAP,EACA,iBAAAQ,EACA,iBAAAC,EACA,kBAAAC,EACA,kBAAAC,EACA,yBAAAC,EAA2B,GAC3B,yBAAAC,EAA2B,GAC3B,MAAAC,EAAQ,QACR,QAAAhC,EAAU,aACV,QAAAiC,EAAU,CAAC,EACX,OAAAnC,EAAS,OACT,MAAAD,EAAQ,OACR,UAAAK,EACA,aAAAC,EAAe,CAAC,EAChB,YAAA+B,EAAcpB,EACd,QAAAqB,EAAUrB,CACZ,EAAoB,CAClB,GAAM,CAACf,EAAeqC,CAAgB,EAAIC,GAAS,EAAK,EAClD,CAACC,EAAkBC,CAAmB,EAAIF,GAAS,EAAI,EACvDG,EAAYnD,EAAgC,IAAI,EAChDoD,EAAYpD,EAAsB,IAAI,EACtCqD,EAAerD,EAAuB,IAAI,EAC1CsD,EAAatD,EAAO8C,CAAO,EAC3BS,EAAiBvD,EAAO6C,CAAW,EACnCW,EAAkBxD,EAAO,EAAK,EAEpCmB,GAAS,IAAM,CACb,IAAMsC,EAAaC,EAAO,KAAK,EAE/B,OAAAD,EACG,KAAM9B,IAAYyB,EAAU,QAAUzB,IAAWuB,EAAoB,EAAK,CAAC,EAC3E,MACES,GACCA,GAAO,OAAS,eAAiB,QAAQ,MAAM,gCAAiCA,CAAK,CACzF,EAEK,IAAOR,EAAU,QAAUS,EAAc,EAAIH,EAAW,OAAO,CACxE,CAAC,EAEDjC,EACE,IAAM,CACJ,GAAI2B,EAAU,SAAWC,EAAU,QAAS,CAC1C,IAAMS,EAAiBV,EAAU,QAAQ,kBAAkB,EACrDW,EAAQpC,EACZ0B,EAAU,QACVjB,GAAY,GACZE,GAAoBR,GAAY,OAChCU,GAAqB,EACvB,EAEIuB,IAAUD,EAAe,SAAS,GACpCA,EAAe,SAASC,CAAK,CAAA,CAGnC,EACA,CAACvB,CAAiB,EAClB7B,CACF,EAEAc,EACE,IAAM,CACJ,GAAI2B,EAAU,SAAWC,EAAU,QAAS,CAC1C,IAAMW,EAAiBZ,EAAU,QAAQ,kBAAkB,EACrDW,EAAQpC,EACZ0B,EAAU,QACVhB,GAAY,GACZE,GAAoBT,GAAY,OAChCW,GAAqB,EACvB,EAEIsB,IAAUC,EAAe,SAAS,GACpCA,EAAe,SAASD,CAAK,CAAA,CAGnC,EACA,CAACtB,CAAiB,EAClB9B,CACF,EAEAc,EACE,IAAM,CACJ,IAAMuC,EAAiBZ,EAAU,QAAS,kBAAkB,EACxDY,EAAe,UAAUX,EAAU,QAAS,OAAO,aAAa,QAAQ,EAC1EW,EAAe,SAAS3B,GAAY,EAAE,EAElCA,IAAa2B,EAAe,SAAS,IACvCA,EAAe,aAAa,GAAI,CAC9B,CACE,MAAOA,EAAe,SAAS,EAAG,kBAAkB,EACpD,KAAM3B,GAAY,GAClB,iBAAkB,EACpB,CACF,CAAC,EAED2B,EAAe,aAAa,EAGlC,EACA,CAAC3B,CAAQ,EACT1B,CACF,EAEAc,EACE,IAAM,CACJ2B,EAAU,SAAS,SAAS,GAAG,SAAS,SAAShB,GAAY,EAAE,CACjE,EACA,CAACA,CAAQ,EACTzB,CACF,EAEAc,EACE,IAAM,CACJ,GAAM,CAAE,SAAAW,EAAU,SAAAC,CAAS,EAAIe,EAAU,QAAS,SAAS,EAE3DC,EAAU,QAAS,OAAO,iBAAiBjB,EAAUE,GAAoBR,GAAY,MAAM,EAC3FuB,EAAU,QAAS,OAAO,iBAAiBhB,EAAUE,GAAoBT,GAAY,MAAM,CAC7F,EACA,CAACA,EAAUQ,EAAkBC,CAAgB,EAC7C5B,CACF,EAEAc,EACE,IAAM,CACJ4B,EAAU,SAAS,OAAO,SAAST,CAAK,CAC1C,EACA,CAACA,CAAK,EACNjC,CACF,EAEAc,EACE,IAAM,CACJ2B,EAAU,SAAS,cAAcP,CAAO,CAC1C,EACA,CAACA,CAAO,EACRlC,CACF,EAEA,IAAMsD,EAAYC,GAAY,IAAM,CAClC,GAAI,CAACb,EAAU,QAAS,OACxBG,EAAe,QAAQH,EAAU,OAAO,EACxC,IAAMc,EAAgBxC,EACpB0B,EAAU,QACVjB,GAAY,GACZE,GAAoBR,GAAY,OAChCU,GAAqB,EACvB,EAEM4B,EAAgBzC,EACpB0B,EAAU,QACVhB,GAAY,GACZE,GAAoBT,GAAY,OAChCW,GAAqB,EACvB,EAEAW,EAAU,SAAS,SAAS,CAC1B,SAAUe,EACV,SAAUC,CACZ,CAAC,CACH,EAAG,CACDtC,EACAO,EACAE,EACAH,EACAE,EACAE,EACAC,CACF,CAAC,EAEK4B,EAAeH,GAAY,IAAM,CACjC,CAACT,EAAgB,SAAWH,EAAa,UAC3CF,EAAU,QAAUC,EAAU,QAAS,OAAO,iBAAiBC,EAAa,QAAS,CACnF,gBAAiB,GACjB,GAAGT,CACL,CAAC,EAEDoB,EAAU,EAEVZ,EAAU,SAAS,OAAO,SAAST,CAAK,EAExCI,EAAiB,EAAI,EACrBS,EAAgB,QAAU,GAE9B,EAAG,CAACZ,EAASD,EAAOqB,CAAS,CAAC,EAE9BjE,GAAU,IAAM,CACVW,GACF4C,EAAW,QAAQH,EAAU,QAAUC,EAAU,OAAQ,CAE7D,EAAG,CAAC1C,CAAa,CAAC,EAElBX,GAAU,IAAM,CACd,CAACkD,GAAoB,CAACvC,GAAiB0D,EAAa,CACtD,EAAG,CAACnB,EAAkBvC,EAAe0D,CAAY,CAAC,EAElD,SAASR,GAAgB,CACvB,IAAMS,EAASlB,EAAU,SAAS,SAAS,EAEtCV,GACH4B,GAAQ,UAAU,QAAQ,EAGvB3B,GACH2B,GAAQ,UAAU,QAAQ,EAG5BlB,EAAU,SAAS,QAAQ,CAC7B,CAEA,OACE9C,GAAA,cAACU,GAAA,CACC,MAAOP,EACP,OAAQC,EACR,cAAeC,EACf,QAASC,EACT,KAAM0C,EACN,UAAWxC,EACX,aAAcC,CAAAA,CAChB,CAEJ,CAEA,IAAOwD,GAAQpC,GDtORoC,GAAQtD,GAAKsD,EAAU,EcJ9B,SAASC,GAAeC,EAAU,CAChC,IAAMC,EAAMC,GAAU,EAEtB,OAAAC,GAAU,IAAM,CACdF,EAAI,QAAUD,CAChB,EAAG,CAACA,CAAK,CAAC,EAEHC,EAAI,OACb,CAEA,IAAOG,GAAQL,GDCTM,EAAa,IAAI,IAEvB,SAASC,GAAO,CACd,aAAAC,EACA,gBAAAC,EACA,YAAAC,EACA,MAAAT,EACA,SAAAU,EACA,KAAAC,EAEA,MAAAC,EAAQ,QACR,KAAAC,EACA,QAAAC,EAAU,aACV,QAAAC,EAAU,CAAC,EACX,iBAAAC,EAAmB,CAAC,EACpB,cAAAC,EAAgB,GAChB,iBAAAC,EAAmB,GAEnB,MAAAC,EAAQ,OACR,OAAAC,EAAS,OACT,UAAAC,EACA,aAAAC,EAAe,CAAC,EAEhB,YAAAC,EAAcC,EACd,QAAAC,EAAUD,EACV,SAAAE,EACA,WAAAC,EAAaH,CACf,EAAgB,CACd,GAAM,CAACI,EAAeC,CAAgB,EAAIC,GAAS,EAAK,EAClD,CAACC,EAAkBC,CAAmB,EAAIF,GAAS,EAAI,EACvDG,EAAY/B,EAAsB,IAAI,EACtCgC,EAAYhC,EAA4C,IAAI,EAC5DiC,EAAejC,EAAuB,IAAI,EAC1CkC,EAAalC,EAAOuB,CAAO,EAC3BY,EAAiBnC,EAAOqB,CAAW,EACnCe,EAAkBpC,EAAoB,EACtCqC,EAAWrC,EAAOF,CAAK,EACvBwC,EAAepC,GAAYO,CAAI,EAC/B8B,GAAkBvC,EAAO,EAAK,EAC9BwC,EAA4BxC,EAAgB,EAAK,EAEvDyC,GAAS,IAAM,CACb,IAAMC,EAAaC,EAAO,KAAK,EAE/B,OAAAD,EACG,KAAME,IAAYb,EAAU,QAAUa,IAAWd,EAAoB,EAAK,CAAC,EAC3E,MACEe,GACCA,GAAO,OAAS,eAAiB,QAAQ,MAAM,gCAAiCA,CAAK,CACzF,EAEK,IAAOb,EAAU,QAAUc,GAAc,EAAIJ,EAAW,OAAO,CACxE,CAAC,EAEDK,EACE,IAAM,CACJ,IAAMC,EAAQC,EACZlB,EAAU,QACV1B,GAAgBP,GAAS,GACzBQ,GAAmBE,GAAY,GAC/BC,GAAQF,GAAe,EACzB,EAEIyC,IAAUhB,EAAU,SAAS,SAAS,IACpCjB,GAAeZ,EAAW,IAAImC,EAAcN,EAAU,SAAS,cAAc,CAAC,EAClFA,EAAU,SAAS,SAASgB,CAAK,EAC7BjC,GAAeiB,EAAU,SAAS,iBAAiB7B,EAAW,IAAIM,CAAI,CAAC,EAE/E,EACA,CAACA,CAAI,EACLiB,CACF,EAEAqB,EACE,IAAM,CACJf,EAAU,SAAS,cAAcnB,CAAO,CAC1C,EACA,CAACA,CAAO,EACRa,CACF,EAEAqB,EACE,IAAM,CACA,CAACf,EAAU,SAAWlC,IAAU,SAChCkC,EAAU,QAAQ,UAAUD,EAAU,QAAS,OAAO,aAAa,QAAQ,EAC7EC,EAAU,QAAQ,SAASlC,CAAK,EACvBA,IAAUkC,EAAU,QAAQ,SAAS,IAC9CQ,EAA0B,QAAU,GACpCR,EAAU,QAAQ,aAAa,GAAI,CACjC,CACE,MAAOA,EAAU,QAAQ,SAAS,EAAG,kBAAkB,EACvD,KAAMlC,EACN,iBAAkB,EACpB,CACF,CAAC,EAEDkC,EAAU,QAAQ,aAAa,EAC/BQ,EAA0B,QAAU,IAExC,EACA,CAAC1C,CAAK,EACN4B,CACF,EAEAqB,EACE,IAAM,CACJ,IAAMC,EAAQhB,EAAU,SAAS,SAAS,EACtCgB,GAASxC,GAAUuB,EAAU,SAAS,OAAO,iBAAiBiB,EAAOxC,CAAQ,CACnF,EACA,CAACA,CAAQ,EACTkB,CACF,EAEAqB,EACE,IAAM,CAEApC,IAAS,QACXqB,EAAU,SAAS,WAAWrB,CAAI,CAEtC,EACA,CAACA,CAAI,EACLe,CACF,EAEAqB,EACE,IAAM,CACJhB,EAAU,SAAS,OAAO,SAASrB,CAAK,CAC1C,EACA,CAACA,CAAK,EACNgB,CACF,EAEA,IAAMwB,GAAeC,GAAY,IAAM,CACrC,GAAI,EAAA,CAAClB,EAAa,SAAW,CAACF,EAAU,UACpC,CAACQ,GAAgB,QAAS,CAC5BJ,EAAe,QAAQJ,EAAU,OAAO,EACxC,IAAMqB,EAAuB3C,GAAQF,EAE/B8C,EAAeJ,EACnBlB,EAAU,QACVjC,GAASO,GAAgB,GACzBC,GAAmBE,GAAY,GAC/B4C,GAAwB,EAC1B,EAEApB,EAAU,QAAUD,EAAU,SAAS,OAAO,OAC5CE,EAAa,QACb,CACE,MAAOoB,EACP,gBAAiB,GACjB,GAAGxC,CACL,EACAC,CACF,EAEAC,GAAiBiB,EAAU,QAAQ,iBAAiB7B,EAAW,IAAIiD,CAAoB,CAAC,EAExFrB,EAAU,QAAQ,OAAO,SAASrB,CAAK,EAEnCC,IAAS,QACXqB,EAAU,QAAQ,WAAWrB,CAAI,EAGnCgB,EAAiB,EAAI,EACrBY,GAAgB,QAAU,EAAA,CAE9B,EAAG,CACDlC,EACAC,EACAC,EACAT,EACAU,EACAC,EACAI,EACAC,EACAC,EACAL,EACAC,CACF,CAAC,EAEDV,EAAU,IAAM,CACVyB,GACFQ,EAAW,QAAQF,EAAU,QAAUD,EAAU,OAAQ,CAE7D,EAAG,CAACL,CAAa,CAAC,EAElBzB,EAAU,IAAM,CACd,CAAC4B,GAAoB,CAACH,GAAiBwB,GAAa,CACtD,EAAG,CAACrB,EAAkBH,EAAewB,EAAY,CAAC,EAIlDb,EAAS,QAAUvC,EAGnBG,EAAU,IAAM,CACVyB,GAAiBF,IACnBY,EAAgB,SAAS,QAAQ,EACjCA,EAAgB,QAAUJ,EAAU,SAAS,wBAAyBsB,GAAU,CACzEd,EAA0B,SAC7BhB,EAASQ,EAAU,QAAS,SAAS,EAAGsB,CAAK,CAEjD,CAAC,EAEL,EAAG,CAAC5B,EAAeF,CAAQ,CAAC,EAG5BvB,EAAU,IAAM,CACd,GAAIyB,EAAe,CACjB,IAAM6B,EAAwBxB,EAAU,QAAS,OAAO,mBAAoByB,GAAS,CACnF,IAAMC,GAAYzB,EAAU,QAAS,SAAS,GAAG,IAEjD,GAAIyB,IACoCD,EAAK,KAAME,IAAQA,GAAI,OAASD,GAAU,IAAI,EACjD,CACjC,IAAME,GAAU5B,EAAU,QAAS,OAAO,gBAAgB,CACxD,SAAU0B,EACZ,CAAC,EACDhC,IAAakC,EAAO,CAAA,CAG1B,CAAC,EAED,MAAO,IAAM,CACXJ,GAAuB,QAAQ,CACjC,CAAA,CAEF,MAAO,IAAM,CAEb,CACF,EAAG,CAAC7B,EAAeD,CAAU,CAAC,EAE9B,SAASqB,IAAgB,CACvBV,EAAgB,SAAS,QAAQ,EAE7BpB,EACFD,GAAiBZ,EAAW,IAAIM,EAAMuB,EAAU,QAAS,cAAc,CAAC,EAExEA,EAAU,QAAS,SAAS,GAAG,QAAQ,EAGzCA,EAAU,QAAS,QAAQ,CAC7B,CAEA,OACE4B,GAAA,cAACC,GAAA,CACC,MAAO5C,EACP,OAAQC,EACR,cAAeQ,EACf,QAASd,EACT,KAAMqB,EACN,UAAWd,EACX,aAAcC,CAAAA,CAChB,CAEJ,CAEA,IAAO0C,GAAQ1D,GDxQR0D,GAAQC,GAAKD,EAAM,EbOnBE,GAAQF,GXXf,OAAgBG,YAAAA,OAAgB,Q2BFhC,OAAAC,KAAAC,OAAA,kEACA,OAAgBC,iBAAAA,GAA4BC,cAAAA,GAAYC,aAAAA,GAAWC,YAAAA,OAAgB,iDCUnF,OAAgBC,iBAAAA,GAAeC,eAAAA,GAAaC,cAAAA,GAAYC,aAAAA,GAAWC,WAAAA,GAASC,YAAAA,OAAgB,QA6B5F,IAAMC,GAAoBN,GAA+CO,MAAA,EAEzE,SAASC,GACPC,EAAyD,CAEzD,GAAI,CAACA,GAAmBC,QAAQC,QAAUF,EAAoCG,UAC1EH,OAAAA,EAAmCG,UAAY,CAAC,EAC3CH,EAET,IAAMI,EAAgC,CAAE,GAAGJ,CAAkB,EAE7DI,EAAgBD,UAAY,CAAC,EAE7B,QAAWE,KAASL,EAAkBC,OACpCG,EAAgBD,UAAUE,EAAMC,IAAI,EAAID,EAG1C,OAAOD,CACT,CAEO,IAAMG,GAGRA,CAAC,CAAEC,SAAAA,EAAUC,OAAQC,CAAe,IAAE,CACzC,GAAM,CAACD,EAAQE,CAAA,EAAaf,GAAuB,IAAMG,GAAqBW,CAAA,CAAA,EAI9EhB,GAAU,IAAA,CACRiB,EAAUZ,GAAqBW,CAAA,CAAA,CACjC,EAAG,CAACA,CAAA,CAAgB,EAGpB,GAAM,CAAEE,kBAAAA,EAAmBC,cAAAA,CAAa,EAAKlB,GAAQ,IAAA,CACnD,IAAMiB,EAA4D,CAAC,EAC7DC,EAAoD,CAAC,EAE3D,QAAWC,KAAcL,EAAOM,YAC9BH,EAAkBE,EAAWR,IAAI,EAAIQ,EAEvC,QAAWE,KAAUP,EAAOQ,QAC1BJ,EAAcG,EAAOV,IAAI,EAAIU,EAG/B,MAAO,CAAEJ,kBAAAA,EAAmBC,cAAAA,CAAc,CAC5C,EAAG,CAACJ,CAAA,CAAO,EAELS,EAAkB1B,GACrB2B,GACK,mBAAoBA,EACfP,EAAkBO,EAAKC,cAAc,GAAK,KAE/C,eAAgBD,EACXN,EAAcM,EAAKE,UAAU,GAAK,KAEpC,KAET,CAACT,EAAmBC,CAAA,CAAc,EAGpC,OACES,GAACzB,GAAkB0B,SAAQ,CAACC,MAAO,CAAEf,OAAAA,EAAQS,gBAAAA,EAAiBP,UAAAA,CAAU,WACrEH,GAGP,EAEaiB,GAAYA,IAA2BhC,GAAAI,EAAW,ED9F/D,IAAM6B,GAA+B,CACnCC,SAAU,GACVC,SAAUA,IAAM,KAChBC,MAAO,OACT,EAEMC,GAAUC,GAAcL,EAAA,EAE9B,SAASM,GAAUC,EAAOC,EAAQC,EAAM,CACtC,IAAMC,EAAI,IAAIC,KACdD,EAAEE,QAAQF,EAAEG,QAAO,EAAKJ,EAAS,GAAK,GAAK,GAAK,GAAA,EAChD,IAAMK,EAAU,WAAaJ,EAAEK,YAAW,EAC1CC,SAASC,OAASV,EAAQ,IAAMC,EAAS,IAAMM,EAAU,SAC3D,CAEA,IAAMI,GACJC,GAAA,CAKA,IAAIhB,EAEEiB,EAAmBC,OAAOL,SAASC,OACtCK,MAAM,IAAA,EACNC,KAAMC,GAAQA,EAAIC,WAAW,GAAGN,CAAA,GAAY,CAAA,GAC3CG,MAAM,GAAA,EAAK,CAAA,EAEf,OAAIF,IAAqB,SAAWA,IAAqB,OACvDjB,EAAQiB,EAERjB,EACEkB,OAAOK,YAAcL,OAAOK,WAAW,8BAAA,EAAgCC,QACnE,OACA,QAGRX,SAASY,gBAAgBC,aAAa,aAAc1B,CAAA,EAE7C,CAAEA,MAAAA,EAAOiB,iBAAAA,CAAiB,CACnC,EAEaU,GAAe,QAEfC,GAGRC,GAAA,CAAA,IAAAC,EAAAC,GAAA,EAAA,EAAC,CAAAC,SAAAA,EAAAhC,MAAAiC,CAAA,EAAAJ,EACJ,CAAAK,OAAAA,CAAA,EAAmBC,GAAA,EAEnBC,EAAyBF,EAAAG,MAAArC,MACzBgB,EAAkB,GAAGkB,EAAAI,cAAuB,SAAA,SAE5C,CAAAtC,EAAAuC,CAAA,EAA+BC,GAAgBP,GAAAN,EAAgB,EAE/D,CAAA7B,EAAA2C,CAAA,EAAgCD,GAAA,EAAAE,EAAAC,EAAAb,EAAA,CAAA,IAAAd,GAAAc,EAAA,CAAA,IAAAM,GAEtBM,EAAAA,IAAA,CAAA,GACJN,IAAqB,MAAA,OAIzB,GAAA,CAAApC,MAAA4C,EAAA3B,iBAAAA,CAAA,EAAoCF,GAASC,CAAA,EAC7CuB,EAAcvC,CAAA,EACdyC,EAAA,CAAaxB,CAAA,CAAA,EACZ0B,EAAA,CAACP,EAAkBpB,CAAA,EAAUc,EAAA,CAAA,EAAAd,EAAAc,EAAA,CAAA,EAAAM,EAAAN,EAAA,CAAA,EAAAY,EAAAZ,EAAA,CAAA,EAAAa,IAAAD,EAAAZ,EAAA,CAAA,EAAAa,EAAAb,EAAA,CAAA,GARhCe,GAAUH,EAQPC,CAA6B,EAAA,IAAAG,EAAAhB,EAAA,CAAA,IAAAd,GAG9B8B,EAAAC,GAAA,CAAA,GACMA,IAAe,SAAWA,IAAe,OAC3CR,EAAcQ,CAAA,EACdN,EAAA,EAAY,EACZtC,GAAUa,EAAW+B,EAAA,GAAY,EACjClC,SAAAY,gBAAAC,aAAsC,aAAcqB,CAAA,UAC3CA,IAAe,OAAA,CAExB5C,GAAUa,EAAW+B,EAAA,EAAa,EAClC,IAAAC,EACE9B,OAAAK,YAAqBL,OAAAK,WAAkB,8BAAA,EAAAC,QACnC,OACA,QACNX,SAAAY,gBAAAC,aAAsC,aAAcsB,CAAA,EACpDP,EAAA,EAAY,EACZF,EAAcS,CAAA,CAAA,CAAA,EAElBlB,EAAA,CAAA,EAAAd,EAAAc,EAAA,CAAA,EAAAgB,GAAAA,EAAAhB,EAAA,CAAA,EAlBF,IAAA/B,EAAiB+C,EAmBJG,EAAA,OAAAnB,EAAA,CAAA,IAAAhC,GAAAgC,EAAA,CAAA,IAAAE,GAAAF,EAAA,CAAA,IAAA/B,GAAA+B,EAAA,CAAA,IAAA9B,GAGNiD,EAAAC,GAAAjD,GAAAkD,SAAA,CAAAC,MAAA,CAAAtD,SAAAA,EAAAC,SAAAA,EAAAC,MAAAA,CAAA,EAAAgC,SAAAA,CAAA,CAAA,+CAAAiB,GAGII,GAAWA,IAAoBC,GAAArD,EAAW,EEzGvD,OAAAsD,KAAAC,OAAA,iEACA,MAAuB,QCDvB,OAAAC,KAAAC,OAAA,yBACA,UAAYC,MAAW,QAGhB,IAAMC,GAAWA,CAAAC,EAAAC,IAAA,CAAA,IAAAC,EAAAL,GAAA,CAAA,EAAgBM,EAAAF,IAAsBG,OAAA,GAAtBH,EACtC,CAAAI,EAAAC,CAAA,EAAoCC,WAAA,EAAe,EACnDC,EAA0BC,SAAAL,MAA6B,EAAAM,EAAAR,EAAA,CAAA,IAAAF,GAEhBU,EAAAA,KACrCJ,EAAA,EAAc,EACdK,aAAaH,EAAAI,OAAyB,EACtCJ,EAAAI,QAA4BC,WAAA,IAAA,CAC1BP,EAAA,EAAc,CAAA,EACbN,CAAA,EAAA,IAAA,CAGDW,aAAaH,EAAAI,OAAyB,CAAA,GAE1CV,EAAA,CAAA,EAAAF,EAAAE,EAAA,CAAA,EAAAQ,GAAAA,EAAAR,EAAA,CAAA,EAVA,IAAAY,EAAqBJ,EAUXK,EAAAC,EAAAd,EAAA,CAAA,IAAAY,GAAAZ,EAAA,CAAA,IAAAC,GAEMY,EAAAA,IAAA,CACVZ,GACFW,EAAA,CAAA,EAEDE,EAAA,CAACF,EAAcX,CAAA,EAAeD,EAAA,CAAA,EAAAY,EAAAZ,EAAA,CAAA,EAAAC,EAAAD,EAAA,CAAA,EAAAa,EAAAb,EAAA,CAAA,EAAAc,IAAAD,EAAAb,EAAA,CAAA,EAAAc,EAAAd,EAAA,CAAA,GAJjCe,YAAgBF,EAIbC,CAA8B,EAAA,IAAAE,EAAA,OAAAhB,EAAA,CAAA,IAAAG,GAAAH,EAAA,CAAA,IAAAY,GAE1BI,EAAA,CAACb,EAAYS,CAAA,EAAaZ,EAAA,CAAA,EAAAG,EAAAH,EAAA,CAAA,EAAAY,EAAAZ,EAAA,CAAA,EAAAgB,GAAAA,EAAAhB,EAAA,CAAA,EAA1BgB,CAA0B,EDtB5B,IAAAC,GAAA,CAAA,CAQP,eAAAC,EAAaD,MACXC,OAAAA,EAAAA,OACAC,MAAAA,EAAA,UAEDC,EAAA,MAAA,CACC,UAAA,iBAEIC,MAAAA,CACAC,OAAO,OAAAH,GAAA,SAAA,GAAAA,CAAA,KAAAA,EACLA,MAAA,OAAQI,GAAO,SAAW,GAAWA,CAAGJ,KAAUI,GAEpD,SAAAH,EAAA,MAAA,WAEA,wBACEC,MAAAA,CACAC,eAAAA,OAMRE,GAAAC,GAAA,CAYA,IAAOC,EAAAC,GAAMH,CAAAA,EAAsDE,CAAC,UAAAL,EAAAA,MAAAA,EAAAO,OAAAA,EAAAT,YAAAU,EAAAC,aAAAD,EAAAE,qBAAAA,EAAAC,MAAAA,GAAAT,EAQnEO,EAAAD,IAAA,OAAA,IAAAA,EAJCC,EAAAD,IAAiBI,OAAA,GAAjBJ,EACAE,EAAiB,OAAAE,GAAA,SAAA,GAAAF,CAAA,KAAAA,EAIjBG,CAAAA,CAAAA,EAAAA,GAA2BJ,EAAOC,EAAA,EAClC,GAAA,CAAAI,EAA2C,OAEtCA,KAAA,IAAAC,EAAA,OAAAA,EAAA,CAAA,IAAAf,GAAAK,EAAA,CAAA,IAAAE,GAAAF,EAAA,CAAA,IAAAP,GAAAO,EAAA,CAAA,IAAAQ,GAAAR,EAAA,CAAA,IAAAM,GAAAN,EAAA,CAAA,IAAAH,GAAAa,EAAAhB,EAAA,MAAAC,CAKH,UAAAA,EAACA,SAAA,CAAA,GAAA,MAAAO,CAAA,CAAA,EAAA,IAAA,CAAAS,EAAAC,IAAAlB,EAAA,MAAA,CAAAmB,UACEP,EACEX,SAAAD,EAAeY,GAAAA,CAAAO,eACdtB,QAAAA,CAAAA,MAAAiB,CAAA,IAAAhB,OAAAA,EACsDC,MAAAA,KAAAmB,CAAA,CAAA,IAFbZ,EAAA,CAAA,EAAAL,uD7BxDnD,IAAAmB,GAAOC,GAAA,SAAAA,GAEDD,GAAUE,cAEVC,GAAYC,GAAA,CAElB,IAAMC,EAAAA,GAAAA,EAAA,EAA8BC,EAAAA,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAA,CAAAA,IAAAP,GAAA,CAClC,UAAAE,EAAAA,UAAAA,EAAAC,UAAAA,EAAAC,QAAAA,EAAAC,SAAAA,EAAAC,GAAAA,GAAAN,EAAAQ,EAAA,CAAA,EAAwER,EAAAQ,EAAA,CAAA,EAAAR,EAAAQ,EAAA,CAAA,EAAAN,EAAAM,EAAA,CAAA,EAAAL,EAAAK,EAAA,CAAA,EAAAJ,EAAAI,EAAA,CAAA,EAAAH,EAAAG,EAAA,CAAA,EAAAF,IAAAJ,EAAAM,EAAA,CAAA,EAAAN,EAAAM,EAAA,CAAA,EAAAL,EAAAK,EAAA,CAAA,EAAAJ,EAAAI,EAAAA,CAAA,EAAAH,EAAAG,EAAA,CAAA,EAAAF,EAAAA,EAAA,CAAA,GAAA,IAAAG,EAAAL,GAAA,GACxEK,CAAAA,EAAmBL,CAAa,EAAAM,GAAAD,CAAA,EAEhC,CACA,MAAAE,GAAAA,GAAAA,EAAkBC,EAAAA,GAAA,gBAAA,aAAAL,EAAA,eAAA,GAAA,GAKhBM,EAAAN,GAAAO,YACAC,EAAYA,EAAA,CAAA,IAAAb,GAAAM,EAAA,CAAA,IAAAK,GAAAL,EAAA,CAAA,IAAAQ,GAAAD,EAAA,CAAAhB,GAAAG,EAAAW,EAAAG,CAAAH,EAAA,OAAA,OAAA,EAJEE,EAAA,CAAA,EAAAhB,EAMNS,EAAA,CAAA,EAAAN,EAAAM,EAAA,CAAA,EAAAK,EAAAL,EAAA,EAAA,EAAAQ,GAAAD,EAAAP,EAAA,EAAA,EAAA,IAAAS,EAAAF,EAAA,KAAA,GAAA,EANVG,EAOQ,GAAAA,EAAA,EAAA,IAAAT,GAAAD,EAAA,EAAA,IAAAS,GAAAT,EAAA,EAAA,IAAAW,GAAAX,EAAA,EAAA,IAAAL,GAAAK,EAAA,EAAA,IAAAH,GAAAG,EAAA,EAAA,IAAAF,GAAAE,EAAA,EAAA,IAAAD,GAAAC,EAAA,EAAA,IAAAG,EAAA,CAAA,IAAAS,EAAAA,EAAAC,EAAA,EAAA,IAAAZ,GAAAD,EAAA,EAAA,IAAAD,GAAAa,EAAA,CAAAE,EAAAb,IAAAA,CA6BMF,EAAAe,WAAAA,EAAAC,CAAA,EACRhB,EAAgBe,KAAA,IAAOb,EAAAa,EAAA,MAAA;CAAA,EAAA,OAAA,GAAA,CAAA,CAAA,GAC+CD,EAAA,CAAAG,EAAAC,IAAA,CAE/DlB,EAAAiB,UAAAC,EAAAA,CAAA,EACPlB,EAAeiB,KAAA,IAAQC,EAAAD,EAAA,SAAA,EAAA,MAAA;CAAA,EAAA,OAAA,GAAA,CAAA,CAAA,GAC2DhB,EAAA,EAAA,EAAAC,EACpFD,EAAA,EAAA,EAAAC,EAAAD,EAAA,EAAA,EAAAD,EAAAC,EAAA,EAAA,EAAAY,IAAAA,EAAAZ,EAAA,EAAA,EAAAY,EAAAZ,EAAA,EAAA,GAAAU,EAAAQ,GAAA9B,GAAA,CAjCF,UAAAA,EAAAM,QAAAwB,GACaT,GAAA,CAAAU,OACFD,IAAuB,QAAA,sHAQpBE,CAAQC,wBAAA,IAAA,qBAAA,GAAAC,QAAAA,EAAAC,SAAA,KAAAC,GAAAA,GAOR,MAAArB,IAAA,OAAA,UAAA,KAAAA,GAAAA,EAE0B,OAC9BR,EAAA,KAAA,IAAAgB,EAAAhB,CAAA,EAAAgB,EAAAc,SAKA9B,EAAiD+B,QAAAb,IAQzDb,EAAA,EAAA,EAAAC,yFAKN0B,GAAAlC",
6
- "names": ["c", "_c", "_defineProperty", "obj", "key", "value", "ownKeys", "object", "enumerableOnly", "keys", "symbols", "sym", "_objectSpread2", "target", "i", "source", "_objectWithoutPropertiesLoose", "excluded", "sourceKeys", "_objectWithoutProperties", "sourceSymbolKeys", "_slicedToArray", "arr", "_arrayWithHoles", "_iterableToArrayLimit", "_unsupportedIterableToArray", "_nonIterableRest", "_arr", "_n", "_d", "_e", "_i", "_s", "err", "o", "minLen", "_arrayLikeToArray", "n", "len", "arr2", "_defineProperty", "obj", "key", "value", "ownKeys", "object", "enumerableOnly", "keys", "symbols", "sym", "_objectSpread2", "target", "i", "source", "compose", "_len", "fns", "_key", "x", "y", "f", "curry", "fn", "curried", "_this", "_len2", "args", "_key2", "_len3", "nextArgs", "_key3", "isObject", "isEmpty", "isFunction", "hasOwnProperty", "property", "validateChanges", "initial", "changes", "errorHandler", "field", "validateSelector", "selector", "validateHandler", "handler", "_handler", "validateInitial", "throwError", "errorMessages", "type", "validators", "create", "state", "didUpdate", "didStateUpdate", "update", "updateState", "validate", "getChanges", "extractChanges", "getState", "setState", "causedChanges", "_handler$field", "index", "state_local_default", "config", "config_default", "curry", "fn", "curried", "_this", "_len", "args", "_key", "_len2", "nextArgs", "_key2", "curry_default", "isObject", "value", "isObject_default", "validateConfig", "config", "errorHandler", "isObject_default", "informAboutDeprecation", "errorMessages", "throwError", "type", "curry_default", "validators", "validators_default", "compose", "_len", "fns", "_key", "x", "y", "f", "compose_default", "merge", "target", "source", "key", "_objectSpread2", "deepMerge_default", "CANCELATION_MESSAGE", "makeCancelable", "promise", "hasCanceled_", "wrappedPromise", "resolve", "reject", "val", "makeCancelable_default", "_state$create", "state_local_default", "config_default", "_state$create2", "_slicedToArray", "getState", "setState", "config", "globalConfig", "_validators$config", "validators_default", "monaco", "_objectWithoutProperties", "state", "deepMerge_default", "init", "_ref", "isInitialized", "resolve", "makeCancelable_default", "wrapperPromise", "storeMonacoInstance", "compose_default", "injectScripts", "getMonacoLoaderScript", "configureLoader", "script", "createScript", "src", "_ref2", "reject", "loaderScript", "_ref3", "require", "error", "__getMonacoInstance", "_ref4", "loader", "loader_default", "memo", "React", "useState", "useRef", "useCallback", "useEffect", "memo", "React", "useEffect", "useRef", "useState", "memo", "React", "useState", "useEffect", "useRef", "useCallback", "useEffect", "useRef", "styles", "styles_default", "Loading", "children", "React", "Loading_default", "MonacoContainer", "width", "height", "isEditorReady", "loading", "_ref", "className", "wrapperProps", "MonacoContainer_default", "memo", "useMount", "effect", "useMount_default", "useUpdate", "deps", "applyChanges", "isInitialMount", "useUpdate_default", "noop", "getOrCreateModel", "monaco", "value", "language", "path", "getModel", "createModel", "createModelUri", "DiffEditor", "original", "modified", "originalLanguage", "modifiedLanguage", "originalModelPath", "modifiedModelPath", "keepCurrentOriginalModel", "keepCurrentModifiedModel", "theme", "options", "beforeMount", "onMount", "setIsEditorReady", "useState", "isMonacoMounting", "setIsMonacoMounting", "editorRef", "monacoRef", "containerRef", "onMountRef", "beforeMountRef", "preventCreation", "cancelable", "loader", "error", "disposeEditor", "originalEditor", "model", "modifiedEditor", "setModels", "useCallback", "originalModel", "modifiedModel", "createEditor", "models", "DiffEditor_default", "usePrevious", "value", "ref", "useRef", "useEffect", "usePrevious_default", "viewStates", "Editor", "defaultValue", "defaultLanguage", "defaultPath", "language", "path", "theme", "line", "loading", "options", "overrideServices", "saveViewState", "keepCurrentModel", "width", "height", "className", "wrapperProps", "beforeMount", "noop", "onMount", "onChange", "onValidate", "isEditorReady", "setIsEditorReady", "useState", "isMonacoMounting", "setIsMonacoMounting", "monacoRef", "editorRef", "containerRef", "onMountRef", "beforeMountRef", "subscriptionRef", "valueRef", "previousPath", "preventCreation", "preventTriggerChangeEvent", "useMount_default", "cancelable", "loader", "monaco", "error", "disposeEditor", "useUpdate_default", "model", "getOrCreateModel", "createEditor", "useCallback", "autoCreatedModelPath", "defaultModel", "event", "changeMarkersListener", "uris", "editorUri", "uri", "markers", "React", "MonacoContainer_default", "Editor_default", "memo", "src_default", "useState", "c", "_c", "createContext", "useContext", "useEffect", "useState", "createContext", "useCallback", "useContext", "useEffect", "useMemo", "useState", "RootConfigContext", "undefined", "sanitizeClientConfig", "unSanitizedConfig", "blocks", "length", "blocksMap", "sanitizedConfig", "block", "slug", "ConfigProvider", "children", "config", "configFromProps", "setConfig", "collectionsBySlug", "globalsBySlug", "collection", "collections", "global", "globals", "getEntityConfig", "args", "collectionSlug", "globalSlug", "_jsx", "Provider", "value", "useConfig", "initialContext", "autoMode", "setTheme", "theme", "Context", "createContext", "setCookie", "cname", "cvalue", "exdays", "d", "Date", "setTime", "getTime", "expires", "toUTCString", "document", "cookie", "getTheme", "cookieKey", "themeFromCookies", "window", "split", "find", "row", "startsWith", "matchMedia", "matches", "documentElement", "setAttribute", "defaultTheme", "ThemeProvider", "t0", "$", "_c", "children", "initialTheme", "config", "useConfig", "preselectedTheme", "admin", "cookiePrefix", "setThemeState", "useState", "setAutoMode", "t1", "t2", "theme_0", "useEffect", "t3", "themeToSet", "themeFromOS", "t4", "_jsx", "Provider", "value", "useTheme", "useContext", "c", "_c", "c", "_c", "React", "useDelay", "delay", "t0", "$", "triggerOnMount", "undefined", "hasDelayed", "setHasDelayed", "useState", "triggerTimeoutRef", "useRef", "t1", "clearTimeout", "current", "setTimeout", "triggerDelay", "t2", "t3", "useEffect", "t4", "ShimmerEffect", "animationDelay", "height", "_jsx", "className", "style", "width", "StaggeredShimmers", "t0", "$", "_c", "count", "t1", "renderDelay", "shimmerDelay", "shimmerItemClassName", "undefined", "shimmerDelayToPass", "hasDelayed", "t3", "_", "i", "children", "Editor", "Ft", "EditorImport", "baseClass", "props", "CodeEditor", "className", "maxHeight", "minHeight", "options", "readOnly", "rest", "$", "MIN_HEIGHT", "useState", "theme", "useTheme", "t0", "defaultLanguage", "t2", "t1", "classes", "t3", "dynamicHeight", "t4", "t5", "value", "ev", "editor", "monaco", "_jsx", "loading", "Boolean", "scrollbar", "scrollBeyondLastLine", "tabSize", "wordWrap", "height", "onChange", "CodeEditor_default"]
7
- }