@payloadcms/ui 3.53.0-internal.2dadf5b → 3.53.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 (108) hide show
  1. package/dist/elements/Autosave/index.d.ts.map +1 -1
  2. package/dist/elements/Autosave/index.js +2 -3
  3. package/dist/elements/Autosave/index.js.map +1 -1
  4. package/dist/elements/CodeEditor/CodeEditor.js +1 -1
  5. package/dist/elements/CodeEditor/CodeEditor.js.map +1 -1
  6. package/dist/elements/CopyToClipboard/index.d.ts.map +1 -1
  7. package/dist/elements/CopyToClipboard/index.js +78 -33
  8. package/dist/elements/CopyToClipboard/index.js.map +1 -1
  9. package/dist/elements/CopyToClipboard/index.scss +0 -8
  10. package/dist/elements/DatePicker/DatePicker.d.ts.map +1 -1
  11. package/dist/elements/DatePicker/DatePicker.js +1 -1
  12. package/dist/elements/DatePicker/DatePicker.js.map +1 -1
  13. package/dist/elements/Link/index.d.ts +29 -2
  14. package/dist/elements/Link/index.d.ts.map +1 -1
  15. package/dist/elements/Link/index.js +1 -1
  16. package/dist/elements/Link/index.js.map +1 -1
  17. package/dist/elements/Upload/index.js +31 -15
  18. package/dist/elements/Upload/index.js.map +1 -1
  19. package/dist/exports/client/{CodeEditor-YP63NRLU.js → CodeEditor-POJ47VX6.js} +2 -2
  20. package/dist/exports/client/{DatePicker-QBWPYX2E.js → DatePicker-NMDEHPWL.js} +2 -2
  21. package/dist/exports/client/{chunk-TIQCV7VX.js → chunk-7RGKTZG2.js} +2 -2
  22. package/dist/exports/client/{chunk-TIQCV7VX.js.map → chunk-7RGKTZG2.js.map} +2 -2
  23. package/dist/exports/client/{chunk-5EP6VERX.js → chunk-PLMZTUXI.js} +3 -3
  24. package/dist/exports/client/chunk-PLMZTUXI.js.map +7 -0
  25. package/dist/exports/client/index.js +12 -12
  26. package/dist/exports/client/index.js.map +3 -3
  27. package/dist/exports/shared/index.js +2 -2
  28. package/dist/exports/shared/index.js.map +3 -3
  29. package/dist/fields/Array/index.d.ts +1 -1
  30. package/dist/fields/Blocks/index.d.ts +1 -1
  31. package/dist/fields/Blocks/index.d.ts.map +1 -1
  32. package/dist/fields/Blocks/index.js +4 -0
  33. package/dist/fields/Blocks/index.js.map +1 -1
  34. package/dist/fields/Checkbox/index.d.ts +1 -1
  35. package/dist/fields/Code/index.d.ts +1 -1
  36. package/dist/fields/Collapsible/index.d.ts +1 -1
  37. package/dist/fields/DateTime/index.d.ts +1 -1
  38. package/dist/fields/Email/index.d.ts +1 -1
  39. package/dist/fields/Group/index.d.ts +1 -1
  40. package/dist/fields/JSON/index.d.ts +1 -1
  41. package/dist/fields/Join/index.d.ts +1 -1
  42. package/dist/fields/Join/index.d.ts.map +1 -1
  43. package/dist/fields/Join/index.js +1 -1
  44. package/dist/fields/Join/index.js.map +1 -1
  45. package/dist/fields/Number/index.d.ts +1 -1
  46. package/dist/fields/Point/index.d.ts +1 -1
  47. package/dist/fields/Relationship/index.d.ts +1 -1
  48. package/dist/fields/Row/index.d.ts +1 -1
  49. package/dist/fields/Select/index.d.ts +2 -2
  50. package/dist/fields/Tabs/index.d.ts +1 -1
  51. package/dist/fields/Text/index.d.ts +1 -1
  52. package/dist/fields/Textarea/index.d.ts +1 -1
  53. package/dist/forms/Form/fieldReducer.d.ts.map +1 -1
  54. package/dist/forms/Form/fieldReducer.js +1 -1
  55. package/dist/forms/Form/fieldReducer.js.map +1 -1
  56. package/dist/forms/Form/index.d.ts.map +1 -1
  57. package/dist/forms/Form/index.js +3 -2
  58. package/dist/forms/Form/index.js.map +1 -1
  59. package/dist/forms/Form/mergeServerFormState.d.ts +4 -1
  60. package/dist/forms/Form/mergeServerFormState.d.ts.map +1 -1
  61. package/dist/forms/Form/mergeServerFormState.js +37 -19
  62. package/dist/forms/Form/mergeServerFormState.js.map +1 -1
  63. package/dist/forms/Form/types.d.ts +15 -10
  64. package/dist/forms/Form/types.d.ts.map +1 -1
  65. package/dist/forms/Form/types.js.map +1 -1
  66. package/dist/forms/fieldSchemasToFormState/addFieldStatePromise.d.ts.map +1 -1
  67. package/dist/forms/fieldSchemasToFormState/addFieldStatePromise.js +1 -1
  68. package/dist/forms/fieldSchemasToFormState/addFieldStatePromise.js.map +1 -1
  69. package/dist/graphics/Account/Gravatar/index.js +1 -1
  70. package/dist/graphics/Account/Gravatar/index.js.map +1 -1
  71. package/dist/graphics/Account/index.d.ts.map +1 -1
  72. package/dist/graphics/Account/index.js +0 -1
  73. package/dist/graphics/Account/index.js.map +1 -1
  74. package/dist/graphics/File/index.d.ts.map +1 -1
  75. package/dist/graphics/File/index.js +4 -6
  76. package/dist/graphics/File/index.js.map +1 -1
  77. package/dist/providers/Auth/index.d.ts.map +1 -1
  78. package/dist/providers/Auth/index.js +12 -12
  79. package/dist/providers/Auth/index.js.map +1 -1
  80. package/dist/providers/DocumentInfo/types.d.ts +2 -1
  81. package/dist/providers/DocumentInfo/types.d.ts.map +1 -1
  82. package/dist/providers/DocumentInfo/types.js.map +1 -1
  83. package/dist/providers/DocumentInfo/useGetDocPermissions.d.ts +2 -1
  84. package/dist/providers/DocumentInfo/useGetDocPermissions.d.ts.map +1 -1
  85. package/dist/providers/DocumentInfo/useGetDocPermissions.js +1 -1
  86. package/dist/providers/DocumentInfo/useGetDocPermissions.js.map +1 -1
  87. package/dist/providers/ServerFunctions/index.d.ts +1 -0
  88. package/dist/providers/ServerFunctions/index.d.ts.map +1 -1
  89. package/dist/providers/ServerFunctions/index.js.map +1 -1
  90. package/dist/providers/TableColumns/buildColumnState/filterFields.d.ts +2 -2
  91. package/dist/providers/TableColumns/buildColumnState/filterFields.d.ts.map +1 -1
  92. package/dist/providers/TableColumns/buildColumnState/filterFields.js +26 -13
  93. package/dist/providers/TableColumns/buildColumnState/filterFields.js.map +1 -1
  94. package/dist/styles.css +1 -1
  95. package/dist/utilities/buildFormState.d.ts.map +1 -1
  96. package/dist/utilities/buildFormState.js +3 -6
  97. package/dist/utilities/buildFormState.js.map +1 -1
  98. package/dist/utilities/copyDataFromLocale.d.ts.map +1 -1
  99. package/dist/utilities/copyDataFromLocale.js +1 -1
  100. package/dist/utilities/copyDataFromLocale.js.map +1 -1
  101. package/dist/views/Edit/index.d.ts +4 -0
  102. package/dist/views/Edit/index.d.ts.map +1 -1
  103. package/dist/views/Edit/index.js +7 -4
  104. package/dist/views/Edit/index.js.map +1 -1
  105. package/package.json +5 -5
  106. package/dist/exports/client/chunk-5EP6VERX.js.map +0 -7
  107. /package/dist/exports/client/{CodeEditor-YP63NRLU.js.map → CodeEditor-POJ47VX6.js.map} +0 -0
  108. /package/dist/exports/client/{DatePicker-QBWPYX2E.js.map → DatePicker-NMDEHPWL.js.map} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/Autosave/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAA;AAIzE,OAAO,KAAwD,MAAM,OAAO,CAAA;AAkB5E,OAAO,cAAc,CAAA;AAMrB,MAAM,MAAM,KAAK,GAAG;IAClB,UAAU,CAAC,EAAE,sBAAsB,CAAA;IACnC,MAAM,CAAC,EAAE,kBAAkB,CAAA;IAC3B,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACpB,qBAAqB,EAAE,MAAM,CAAA;CAC9B,CAAA;AAED,eAAO,MAAM,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CA0NpC,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/Autosave/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAA;AAIzE,OAAO,KAAwD,MAAM,OAAO,CAAA;AAoB5E,OAAO,cAAc,CAAA;AAMrB,MAAM,MAAM,KAAK,GAAG;IAClB,UAAU,CAAC,EAAE,sBAAsB,CAAA;IACnC,MAAM,CAAC,EAAE,kBAAkB,CAAA;IAC3B,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACpB,qBAAqB,EAAE,MAAM,CAAA;CAC9B,CAAA;AAED,eAAO,MAAM,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAuNpC,CAAA"}
@@ -34,7 +34,6 @@ export const Autosave = ({
34
34
  } = useConfig();
35
35
  const {
36
36
  docConfig,
37
- incrementVersionCount,
38
37
  lastUpdateTime,
39
38
  mostRecentVersionIsAutosaved,
40
39
  setMostRecentVersionIsAutosaved,
@@ -125,7 +124,8 @@ export const Autosave = ({
125
124
  },
126
125
  action: url,
127
126
  context: {
128
- incrementVersionCount: false
127
+ getDocPermissions: false,
128
+ incrementVersionCount: !mostRecentVersionIsAutosaved
129
129
  },
130
130
  disableFormWhileProcessing: false,
131
131
  disableSuccessStatus: true,
@@ -136,7 +136,6 @@ export const Autosave = ({
136
136
  skipValidation: versionsConfig?.drafts && !versionsConfig?.drafts?.validate
137
137
  });
138
138
  if (result && result?.res?.ok && !mostRecentVersionIsAutosaved) {
139
- incrementVersionCount();
140
139
  setMostRecentVersionIsAutosaved(true);
141
140
  setUnpublishedVersionCount(prev => prev + 1);
142
141
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["dequal","reduceFieldsToValues","versionDefaults","React","useDeferredValue","useEffect","useRef","useState","useAllFormFields","useForm","useFormModified","useFormSubmitted","useDebounce","useEffectEvent","useQueues","useConfig","useDocumentInfo","useLocale","useTranslation","formatTimeToNow","reduceFieldsToValuesWithValidation","LeaveWithoutSaving","baseClass","minimumAnimationTime","Autosave","id","collection","global","globalDoc","config","routes","api","serverURL","docConfig","incrementVersionCount","lastUpdateTime","mostRecentVersionIsAutosaved","setMostRecentVersionIsAutosaved","setUnpublishedVersionCount","isValid","setBackgroundProcessing","submit","formState","modified","submitted","code","locale","i18n","t","versionsConfig","versions","interval","autosaveInterval","drafts","autosave","validateOnDraft","Boolean","validate","_saving","setSaving","saving","debouncedFormState","formStateRef","modifiedRef","localeRef","current","queueTask","autosaveTimeoutRef","handleAutosave","undefined","startTimestamp","endTimestamp","hideIndicator","setTimeout","stopAutoSaveIndicator","Date","getTime","url","method","entitySlug","slug","valid","skipSubmission","result","acceptValues","overrideLocalChanges","action","context","disableFormWhileProcessing","disableSuccessStatus","overrides","_status","skipValidation","res","ok","prev","newDate","afterProcess","beforeProcess","didMount","previousDebouncedData","updatedAt","_","formData","__","prevFormData","clearTimeout","_jsxs","className","_jsx","Fragment","distance","date"],"sources":["../../../src/elements/Autosave/index.tsx"],"sourcesContent":["'use client'\n// TODO: abstract the `next/navigation` dependency out from this component\nimport type { ClientCollectionConfig, ClientGlobalConfig } from 'payload'\n\nimport { dequal } from 'dequal/lite'\nimport { reduceFieldsToValues, versionDefaults } from 'payload/shared'\nimport React, { useDeferredValue, useEffect, useRef, useState } from 'react'\n\nimport {\n useAllFormFields,\n useForm,\n useFormModified,\n useFormSubmitted,\n} from '../../forms/Form/context.js'\nimport { useDebounce } from '../../hooks/useDebounce.js'\nimport { useEffectEvent } from '../../hooks/useEffectEvent.js'\nimport { useQueues } from '../../hooks/useQueues.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useDocumentInfo } from '../../providers/DocumentInfo/index.js'\nimport { useLocale } from '../../providers/Locale/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { formatTimeToNow } from '../../utilities/formatDocTitle/formatDateTitle.js'\nimport { reduceFieldsToValuesWithValidation } from '../../utilities/reduceFieldsToValuesWithValidation.js'\nimport { LeaveWithoutSaving } from '../LeaveWithoutSaving/index.js'\nimport './index.scss'\n\nconst baseClass = 'autosave'\n// The minimum time the saving state should be shown\nconst minimumAnimationTime = 1000\n\nexport type Props = {\n collection?: ClientCollectionConfig\n global?: ClientGlobalConfig\n id?: number | string\n publishedDocUpdatedAt: string\n}\n\nexport const Autosave: React.FC<Props> = ({ id, collection, global: globalDoc }) => {\n const {\n config: {\n routes: { api },\n serverURL,\n },\n } = useConfig()\n\n const {\n docConfig,\n incrementVersionCount,\n lastUpdateTime,\n mostRecentVersionIsAutosaved,\n setMostRecentVersionIsAutosaved,\n setUnpublishedVersionCount,\n } = useDocumentInfo()\n\n const { isValid, setBackgroundProcessing, submit } = useForm()\n\n const [formState] = useAllFormFields()\n const modified = useFormModified()\n const submitted = useFormSubmitted()\n\n const { code: locale } = useLocale()\n const { i18n, t } = useTranslation()\n\n const versionsConfig = docConfig?.versions\n let interval = versionDefaults.autosaveInterval\n\n if (versionsConfig.drafts && versionsConfig.drafts.autosave) {\n interval = versionsConfig.drafts.autosave.interval\n }\n\n const validateOnDraft = Boolean(\n docConfig?.versions?.drafts && docConfig?.versions?.drafts.validate,\n )\n\n const [_saving, setSaving] = useState(false)\n\n const saving = useDeferredValue(_saving)\n\n const debouncedFormState = useDebounce(formState, interval)\n\n const formStateRef = useRef(formState)\n const modifiedRef = useRef(modified)\n const localeRef = useRef(locale)\n\n // Store fields in ref so the autosave func\n // can always retrieve the most to date copies\n // after the timeout has executed\n formStateRef.current = formState\n\n // Store modified in ref so the autosave func\n // can bail out if modified becomes false while\n // timing out during autosave\n modifiedRef.current = modified\n\n // Store locale in ref so the autosave func\n // can always retrieve the most to date locale\n localeRef.current = locale\n\n const { queueTask } = useQueues()\n\n const autosaveTimeoutRef = useRef<NodeJS.Timeout | null>(null)\n\n const handleAutosave = useEffectEvent(() => {\n autosaveTimeoutRef.current = undefined\n // We need to log the time in order to figure out if we need to trigger the state off later\n let startTimestamp = undefined\n let endTimestamp = undefined\n\n const hideIndicator = () => {\n // If request was faster than minimum animation time, animate the difference\n if (endTimestamp - startTimestamp < minimumAnimationTime) {\n autosaveTimeoutRef.current = setTimeout(\n () => {\n setSaving(false)\n },\n minimumAnimationTime - (endTimestamp - startTimestamp),\n )\n } else {\n stopAutoSaveIndicator()\n }\n }\n\n queueTask(\n async () => {\n if (modified) {\n startTimestamp = new Date().getTime()\n\n setSaving(true)\n\n let url: string\n let method: string\n let entitySlug: string\n\n if (collection && id) {\n entitySlug = collection.slug\n url = `${serverURL}${api}/${entitySlug}/${id}?draft=true&autosave=true&locale=${localeRef.current}`\n method = 'PATCH'\n }\n\n if (globalDoc) {\n entitySlug = globalDoc.slug\n url = `${serverURL}${api}/globals/${entitySlug}?draft=true&autosave=true&locale=${localeRef.current}`\n method = 'POST'\n }\n\n const { valid } = reduceFieldsToValuesWithValidation(formStateRef.current, true)\n\n const skipSubmission =\n submitted && !valid && versionsConfig?.drafts && versionsConfig?.drafts?.validate\n\n if (!skipSubmission && modifiedRef.current && url) {\n const result = await submit<{\n incrementVersionCount: boolean\n }>({\n acceptValues: {\n overrideLocalChanges: false,\n },\n action: url,\n context: {\n incrementVersionCount: false,\n },\n disableFormWhileProcessing: false,\n disableSuccessStatus: true,\n method,\n overrides: {\n _status: 'draft',\n },\n skipValidation: versionsConfig?.drafts && !versionsConfig?.drafts?.validate,\n })\n\n if (result && result?.res?.ok && !mostRecentVersionIsAutosaved) {\n incrementVersionCount()\n setMostRecentVersionIsAutosaved(true)\n setUnpublishedVersionCount((prev) => prev + 1)\n }\n\n const newDate = new Date()\n\n // We need to log the time in order to figure out if we need to trigger the state off later\n endTimestamp = newDate.getTime()\n\n hideIndicator()\n }\n }\n },\n {\n afterProcess: () => {\n setBackgroundProcessing(false)\n },\n beforeProcess: () => {\n setBackgroundProcessing(true)\n },\n },\n )\n })\n\n const didMount = useRef(false)\n const previousDebouncedData = useRef(reduceFieldsToValues(debouncedFormState))\n\n // When debounced fields change, autosave\n useEffect(() => {\n /**\n * Ensure autosave doesn't run on mount\n */\n if (!didMount.current) {\n didMount.current = true\n return\n }\n\n /**\n * Ensure autosave only runs if the form data changes, not every time the entire form state changes\n * Remove `updatedAt` from comparison as it changes on every autosave interval.\n */\n const { updatedAt: _, ...formData } = reduceFieldsToValues(debouncedFormState)\n const { updatedAt: __, ...prevFormData } = previousDebouncedData.current\n\n if (dequal(formData, prevFormData)) {\n return\n }\n\n previousDebouncedData.current = formData\n\n handleAutosave()\n }, [debouncedFormState])\n\n /**\n * If component unmounts, clear the autosave timeout\n */\n useEffect(() => {\n return () => {\n stopAutoSaveIndicator()\n }\n }, [])\n\n const stopAutoSaveIndicator = useEffectEvent(() => {\n if (autosaveTimeoutRef.current) {\n clearTimeout(autosaveTimeoutRef.current)\n }\n\n setSaving(false)\n })\n\n return (\n <div className={baseClass}>\n {validateOnDraft && !isValid && <LeaveWithoutSaving />}\n {saving && t('general:saving')}\n {!saving && Boolean(lastUpdateTime) && (\n <React.Fragment>\n {t('version:lastSavedAgo', {\n distance: formatTimeToNow({ date: lastUpdateTime, i18n }),\n })}\n </React.Fragment>\n )}\n </div>\n )\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["dequal","reduceFieldsToValues","versionDefaults","React","useDeferredValue","useEffect","useRef","useState","useAllFormFields","useForm","useFormModified","useFormSubmitted","useDebounce","useEffectEvent","useQueues","useConfig","useDocumentInfo","useLocale","useTranslation","formatTimeToNow","reduceFieldsToValuesWithValidation","LeaveWithoutSaving","baseClass","minimumAnimationTime","Autosave","id","collection","global","globalDoc","config","routes","api","serverURL","docConfig","lastUpdateTime","mostRecentVersionIsAutosaved","setMostRecentVersionIsAutosaved","setUnpublishedVersionCount","isValid","setBackgroundProcessing","submit","formState","modified","submitted","code","locale","i18n","t","versionsConfig","versions","interval","autosaveInterval","drafts","autosave","validateOnDraft","Boolean","validate","_saving","setSaving","saving","debouncedFormState","formStateRef","modifiedRef","localeRef","current","queueTask","autosaveTimeoutRef","handleAutosave","undefined","startTimestamp","endTimestamp","hideIndicator","setTimeout","stopAutoSaveIndicator","Date","getTime","url","method","entitySlug","slug","valid","skipSubmission","result","acceptValues","overrideLocalChanges","action","context","getDocPermissions","incrementVersionCount","disableFormWhileProcessing","disableSuccessStatus","overrides","_status","skipValidation","res","ok","prev","newDate","afterProcess","beforeProcess","didMount","previousDebouncedData","updatedAt","_","formData","__","prevFormData","clearTimeout","_jsxs","className","_jsx","Fragment","distance","date"],"sources":["../../../src/elements/Autosave/index.tsx"],"sourcesContent":["'use client'\n// TODO: abstract the `next/navigation` dependency out from this component\nimport type { ClientCollectionConfig, ClientGlobalConfig } from 'payload'\n\nimport { dequal } from 'dequal/lite'\nimport { reduceFieldsToValues, versionDefaults } from 'payload/shared'\nimport React, { useDeferredValue, useEffect, useRef, useState } from 'react'\n\nimport type { OnSaveContext } from '../../views/Edit/index.js'\n\nimport {\n useAllFormFields,\n useForm,\n useFormModified,\n useFormSubmitted,\n} from '../../forms/Form/context.js'\nimport { useDebounce } from '../../hooks/useDebounce.js'\nimport { useEffectEvent } from '../../hooks/useEffectEvent.js'\nimport { useQueues } from '../../hooks/useQueues.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useDocumentInfo } from '../../providers/DocumentInfo/index.js'\nimport { useLocale } from '../../providers/Locale/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { formatTimeToNow } from '../../utilities/formatDocTitle/formatDateTitle.js'\nimport { reduceFieldsToValuesWithValidation } from '../../utilities/reduceFieldsToValuesWithValidation.js'\nimport { LeaveWithoutSaving } from '../LeaveWithoutSaving/index.js'\nimport './index.scss'\n\nconst baseClass = 'autosave'\n// The minimum time the saving state should be shown\nconst minimumAnimationTime = 1000\n\nexport type Props = {\n collection?: ClientCollectionConfig\n global?: ClientGlobalConfig\n id?: number | string\n publishedDocUpdatedAt: string\n}\n\nexport const Autosave: React.FC<Props> = ({ id, collection, global: globalDoc }) => {\n const {\n config: {\n routes: { api },\n serverURL,\n },\n } = useConfig()\n\n const {\n docConfig,\n lastUpdateTime,\n mostRecentVersionIsAutosaved,\n setMostRecentVersionIsAutosaved,\n setUnpublishedVersionCount,\n } = useDocumentInfo()\n\n const { isValid, setBackgroundProcessing, submit } = useForm()\n\n const [formState] = useAllFormFields()\n const modified = useFormModified()\n const submitted = useFormSubmitted()\n\n const { code: locale } = useLocale()\n const { i18n, t } = useTranslation()\n\n const versionsConfig = docConfig?.versions\n let interval = versionDefaults.autosaveInterval\n\n if (versionsConfig.drafts && versionsConfig.drafts.autosave) {\n interval = versionsConfig.drafts.autosave.interval\n }\n\n const validateOnDraft = Boolean(\n docConfig?.versions?.drafts && docConfig?.versions?.drafts.validate,\n )\n\n const [_saving, setSaving] = useState(false)\n\n const saving = useDeferredValue(_saving)\n\n const debouncedFormState = useDebounce(formState, interval)\n\n const formStateRef = useRef(formState)\n const modifiedRef = useRef(modified)\n const localeRef = useRef(locale)\n\n // Store fields in ref so the autosave func\n // can always retrieve the most to date copies\n // after the timeout has executed\n formStateRef.current = formState\n\n // Store modified in ref so the autosave func\n // can bail out if modified becomes false while\n // timing out during autosave\n modifiedRef.current = modified\n\n // Store locale in ref so the autosave func\n // can always retrieve the most to date locale\n localeRef.current = locale\n\n const { queueTask } = useQueues()\n\n const autosaveTimeoutRef = useRef<NodeJS.Timeout | null>(null)\n\n const handleAutosave = useEffectEvent(() => {\n autosaveTimeoutRef.current = undefined\n // We need to log the time in order to figure out if we need to trigger the state off later\n let startTimestamp = undefined\n let endTimestamp = undefined\n\n const hideIndicator = () => {\n // If request was faster than minimum animation time, animate the difference\n if (endTimestamp - startTimestamp < minimumAnimationTime) {\n autosaveTimeoutRef.current = setTimeout(\n () => {\n setSaving(false)\n },\n minimumAnimationTime - (endTimestamp - startTimestamp),\n )\n } else {\n stopAutoSaveIndicator()\n }\n }\n\n queueTask(\n async () => {\n if (modified) {\n startTimestamp = new Date().getTime()\n\n setSaving(true)\n\n let url: string\n let method: string\n let entitySlug: string\n\n if (collection && id) {\n entitySlug = collection.slug\n url = `${serverURL}${api}/${entitySlug}/${id}?draft=true&autosave=true&locale=${localeRef.current}`\n method = 'PATCH'\n }\n\n if (globalDoc) {\n entitySlug = globalDoc.slug\n url = `${serverURL}${api}/globals/${entitySlug}?draft=true&autosave=true&locale=${localeRef.current}`\n method = 'POST'\n }\n\n const { valid } = reduceFieldsToValuesWithValidation(formStateRef.current, true)\n\n const skipSubmission =\n submitted && !valid && versionsConfig?.drafts && versionsConfig?.drafts?.validate\n\n if (!skipSubmission && modifiedRef.current && url) {\n const result = await submit<any, OnSaveContext>({\n acceptValues: {\n overrideLocalChanges: false,\n },\n action: url,\n context: {\n getDocPermissions: false,\n incrementVersionCount: !mostRecentVersionIsAutosaved,\n },\n disableFormWhileProcessing: false,\n disableSuccessStatus: true,\n method,\n overrides: {\n _status: 'draft',\n },\n skipValidation: versionsConfig?.drafts && !versionsConfig?.drafts?.validate,\n })\n\n if (result && result?.res?.ok && !mostRecentVersionIsAutosaved) {\n setMostRecentVersionIsAutosaved(true)\n setUnpublishedVersionCount((prev) => prev + 1)\n }\n\n const newDate = new Date()\n\n // We need to log the time in order to figure out if we need to trigger the state off later\n endTimestamp = newDate.getTime()\n\n hideIndicator()\n }\n }\n },\n {\n afterProcess: () => {\n setBackgroundProcessing(false)\n },\n beforeProcess: () => {\n setBackgroundProcessing(true)\n },\n },\n )\n })\n\n const didMount = useRef(false)\n const previousDebouncedData = useRef(reduceFieldsToValues(debouncedFormState))\n\n // When debounced fields change, autosave\n useEffect(() => {\n /**\n * Ensure autosave doesn't run on mount\n */\n if (!didMount.current) {\n didMount.current = true\n return\n }\n\n /**\n * Ensure autosave only runs if the form data changes, not every time the entire form state changes\n * Remove `updatedAt` from comparison as it changes on every autosave interval.\n */\n const { updatedAt: _, ...formData } = reduceFieldsToValues(debouncedFormState)\n const { updatedAt: __, ...prevFormData } = previousDebouncedData.current\n\n if (dequal(formData, prevFormData)) {\n return\n }\n\n previousDebouncedData.current = formData\n\n handleAutosave()\n }, [debouncedFormState])\n\n /**\n * If component unmounts, clear the autosave timeout\n */\n useEffect(() => {\n return () => {\n stopAutoSaveIndicator()\n }\n }, [])\n\n const stopAutoSaveIndicator = useEffectEvent(() => {\n if (autosaveTimeoutRef.current) {\n clearTimeout(autosaveTimeoutRef.current)\n }\n\n setSaving(false)\n })\n\n return (\n <div className={baseClass}>\n {validateOnDraft && !isValid && <LeaveWithoutSaving />}\n {saving && t('general:saving')}\n {!saving && Boolean(lastUpdateTime) && (\n <React.Fragment>\n {t('version:lastSavedAgo', {\n distance: formatTimeToNow({ date: lastUpdateTime, i18n }),\n })}\n </React.Fragment>\n )}\n </div>\n )\n}\n"],"mappings":"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","ignoreList":[]}
@@ -7,7 +7,7 @@ import React, { useState } from 'react';
7
7
  import { useTheme } from '../../providers/Theme/index.js';
8
8
  import { ShimmerEffect } from '../ShimmerEffect/index.js';
9
9
  import './index.scss';
10
- const Editor = EditorImport.default || EditorImport;
10
+ const Editor = 'default' in EditorImport ? EditorImport.default : EditorImport;
11
11
  const baseClass = 'code-editor';
12
12
  const CodeEditor = props => {
13
13
  const $ = _c(26);
@@ -1 +1 @@
1
- {"version":3,"file":"CodeEditor.js","names":["c","_c","EditorImport","React","useState","useTheme","ShimmerEffect","Editor","default","baseClass","CodeEditor","props","$","className","maxHeight","minHeight","options","readOnly","rest","MIN_HEIGHT","paddingFromProps","padding","top","bottom","dynamicHeight","setDynamicHeight","theme","t0","defaultLanguage","t1","t2","filter","Boolean","classes","join","t3","t4","t5","value","ev","onChange","Math","max","split","length","editor","monaco","onMount","getValue","_jsx","loading","height","scrollbar","alwaysConsumeMouseWheel","scrollBeyondLastLine","tabSize","wordWrap","min"],"sources":["../../../src/elements/CodeEditor/CodeEditor.tsx"],"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 const paddingFromProps = options?.padding\n ? (options.padding.top || 0) + (options.padding?.bottom || 0)\n : 0\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 + paddingFromProps))\n }}\n onMount={(editor, monaco) => {\n rest.onMount?.(editor, monaco)\n setDynamicHeight(\n Math.max(MIN_HEIGHT, editor.getValue().split('\\n').length * 18 + 2 + paddingFromProps),\n )\n }}\n />\n )\n}\n\n// eslint-disable-next-line no-restricted-exports\nexport default CodeEditor\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"CodeEditor.js","names":["c","_c","EditorImport","React","useState","useTheme","ShimmerEffect","Editor","default","baseClass","CodeEditor","props","$","className","maxHeight","minHeight","options","readOnly","rest","MIN_HEIGHT","paddingFromProps","padding","top","bottom","dynamicHeight","setDynamicHeight","theme","t0","defaultLanguage","t1","t2","filter","Boolean","classes","join","t3","t4","t5","value","ev","onChange","Math","max","split","length","editor","monaco","onMount","getValue","_jsx","loading","height","scrollbar","alwaysConsumeMouseWheel","scrollBeyondLastLine","tabSize","wordWrap","min"],"sources":["../../../src/elements/CodeEditor/CodeEditor.tsx"],"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 = 'default' in EditorImport ? EditorImport.default : EditorImport\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 const paddingFromProps = options?.padding\n ? (options.padding.top || 0) + (options.padding?.bottom || 0)\n : 0\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 + paddingFromProps))\n }}\n onMount={(editor, monaco) => {\n rest.onMount?.(editor, monaco)\n setDynamicHeight(\n Math.max(MIN_HEIGHT, editor.getValue().split('\\n').length * 18 + 2 + paddingFromProps),\n )\n }}\n />\n )\n}\n\n// eslint-disable-next-line no-restricted-exports\nexport default CodeEditor\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/CopyToClipboard/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAA2B,MAAM,OAAO,CAAA;AAK/C,OAAO,cAAc,CAAA;AAIrB,MAAM,MAAM,KAAK,GAAG;IAClB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,KAAK,CAAC,EAAE,MAAM,CAAA;CACf,CAAA;AAED,eAAO,MAAM,eAAe,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAuC3C,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/CopyToClipboard/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAmB,MAAM,OAAO,CAAA;AAKvC,OAAO,cAAc,CAAA;AAIrB,MAAM,MAAM,KAAK,GAAG;IAClB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,KAAK,CAAC,EAAE,MAAM,CAAA;CACf,CAAA;AAED,eAAO,MAAM,eAAe,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAiC3C,CAAA"}
@@ -1,54 +1,99 @@
1
1
  'use client';
2
2
 
3
+ import { c as _c } from "react/compiler-runtime";
3
4
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
4
- import React, { useRef, useState } from 'react';
5
+ import React, { useState } from 'react';
5
6
  import { CopyIcon } from '../../icons/Copy/index.js';
6
7
  import { useTranslation } from '../../providers/Translation/index.js';
7
8
  import { Tooltip } from '../Tooltip/index.js';
8
9
  import './index.scss';
9
10
  const baseClass = 'copy-to-clipboard';
10
- export const CopyToClipboard = ({
11
- defaultMessage,
12
- successMessage,
13
- value
14
- }) => {
15
- const ref = useRef(null);
11
+ export const CopyToClipboard = t0 => {
12
+ const $ = _c(19);
13
+ const {
14
+ defaultMessage,
15
+ successMessage,
16
+ value
17
+ } = t0;
16
18
  const [copied, setCopied] = useState(false);
17
19
  const [hovered, setHovered] = useState(false);
18
20
  const {
19
21
  t
20
22
  } = useTranslation();
21
23
  if (value) {
22
- return /*#__PURE__*/_jsxs("button", {
23
- className: baseClass,
24
- onClick: () => {
25
- if (ref && ref.current) {
26
- ref.current.select();
27
- ref.current.setSelectionRange(0, value.length + 1);
28
- document.execCommand('copy');
29
- setCopied(true);
30
- }
31
- },
32
- onMouseEnter: () => {
24
+ let t1;
25
+ if ($[0] !== value) {
26
+ t1 = async () => {
27
+ await navigator.clipboard.writeText(value);
28
+ setCopied(true);
29
+ };
30
+ $[0] = value;
31
+ $[1] = t1;
32
+ } else {
33
+ t1 = $[1];
34
+ }
35
+ let t2;
36
+ let t3;
37
+ if ($[2] === Symbol.for("react.memo_cache_sentinel")) {
38
+ t2 = () => {
33
39
  setHovered(true);
34
40
  setCopied(false);
35
- },
36
- onMouseLeave: () => {
41
+ };
42
+ t3 = () => {
37
43
  setHovered(false);
38
44
  setCopied(false);
39
- },
40
- type: "button",
41
- children: [/*#__PURE__*/_jsx(CopyIcon, {}), /*#__PURE__*/_jsxs(Tooltip, {
42
- delay: copied ? 0 : undefined,
43
- show: hovered || copied,
44
- children: [copied && (successMessage ?? t('general:copied')), !copied && (defaultMessage ?? t('general:copy'))]
45
- }), /*#__PURE__*/_jsx("textarea", {
46
- readOnly: true,
47
- ref: ref,
48
- tabIndex: -1,
49
- value: value
50
- })]
51
- });
45
+ };
46
+ $[2] = t2;
47
+ $[3] = t3;
48
+ } else {
49
+ t2 = $[2];
50
+ t3 = $[3];
51
+ }
52
+ let t4;
53
+ if ($[4] !== copied || $[5] !== defaultMessage || $[6] !== hovered || $[7] !== successMessage || $[8] !== t || $[9] !== t1) {
54
+ let t5;
55
+ if ($[11] !== copied || $[12] !== successMessage || $[13] !== t) {
56
+ t5 = copied && (successMessage ?? t("general:copied"));
57
+ $[11] = copied;
58
+ $[12] = successMessage;
59
+ $[13] = t;
60
+ $[14] = t5;
61
+ } else {
62
+ t5 = $[14];
63
+ }
64
+ let t6;
65
+ if ($[15] !== copied || $[16] !== defaultMessage || $[17] !== t) {
66
+ t6 = !copied && (defaultMessage ?? t("general:copy"));
67
+ $[15] = copied;
68
+ $[16] = defaultMessage;
69
+ $[17] = t;
70
+ $[18] = t6;
71
+ } else {
72
+ t6 = $[18];
73
+ }
74
+ t4 = _jsxs("button", {
75
+ className: baseClass,
76
+ onClick: t1,
77
+ onMouseEnter: t2,
78
+ onMouseLeave: t3,
79
+ type: "button",
80
+ children: [_jsx(CopyIcon, {}), _jsxs(Tooltip, {
81
+ delay: copied ? 0 : undefined,
82
+ show: hovered || copied,
83
+ children: [t5, t6]
84
+ })]
85
+ });
86
+ $[4] = copied;
87
+ $[5] = defaultMessage;
88
+ $[6] = hovered;
89
+ $[7] = successMessage;
90
+ $[8] = t;
91
+ $[9] = t1;
92
+ $[10] = t4;
93
+ } else {
94
+ t4 = $[10];
95
+ }
96
+ return t4;
52
97
  }
53
98
  return null;
54
99
  };
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["React","useRef","useState","CopyIcon","useTranslation","Tooltip","baseClass","CopyToClipboard","defaultMessage","successMessage","value","ref","copied","setCopied","hovered","setHovered","t","_jsxs","className","onClick","current","select","setSelectionRange","length","document","execCommand","onMouseEnter","onMouseLeave","type","_jsx","delay","undefined","show","readOnly","tabIndex"],"sources":["../../../src/elements/CopyToClipboard/index.tsx"],"sourcesContent":["'use client'\nimport React, { useRef, useState } from 'react'\n\nimport { CopyIcon } from '../../icons/Copy/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { Tooltip } from '../Tooltip/index.js'\nimport './index.scss'\n\nconst baseClass = 'copy-to-clipboard'\n\nexport type Props = {\n defaultMessage?: string\n successMessage?: string\n value?: string\n}\n\nexport const CopyToClipboard: React.FC<Props> = ({ defaultMessage, successMessage, value }) => {\n const ref = useRef(null)\n const [copied, setCopied] = useState(false)\n const [hovered, setHovered] = useState(false)\n const { t } = useTranslation()\n\n if (value) {\n return (\n <button\n className={baseClass}\n onClick={() => {\n if (ref && ref.current) {\n ref.current.select()\n ref.current.setSelectionRange(0, value.length + 1)\n document.execCommand('copy')\n setCopied(true)\n }\n }}\n onMouseEnter={() => {\n setHovered(true)\n setCopied(false)\n }}\n onMouseLeave={() => {\n setHovered(false)\n setCopied(false)\n }}\n type=\"button\"\n >\n <CopyIcon />\n <Tooltip delay={copied ? 0 : undefined} show={hovered || copied}>\n {copied && (successMessage ?? t('general:copied'))}\n {!copied && (defaultMessage ?? t('general:copy'))}\n </Tooltip>\n <textarea readOnly ref={ref} tabIndex={-1} value={value} />\n </button>\n )\n }\n\n return null\n}\n"],"mappings":"AAAA;;;AACA,OAAOA,KAAA,IAASC,MAAM,EAAEC,QAAQ,QAAQ;AAExC,SAASC,QAAQ,QAAQ;AACzB,SAASC,cAAc,QAAQ;AAC/B,SAASC,OAAO,QAAQ;AACxB,OAAO;AAEP,MAAMC,SAAA,GAAY;AAQlB,OAAO,MAAMC,eAAA,GAAmCA,CAAC;EAAEC,cAAc;EAAEC,cAAc;EAAEC;AAAK,CAAE;EACxF,MAAMC,GAAA,GAAMV,MAAA,CAAO;EACnB,MAAM,CAACW,MAAA,EAAQC,SAAA,CAAU,GAAGX,QAAA,CAAS;EACrC,MAAM,CAACY,OAAA,EAASC,UAAA,CAAW,GAAGb,QAAA,CAAS;EACvC,MAAM;IAAEc;EAAC,CAAE,GAAGZ,cAAA;EAEd,IAAIM,KAAA,EAAO;IACT,oBACEO,KAAA,CAAC;MACCC,SAAA,EAAWZ,SAAA;MACXa,OAAA,EAASA,CAAA;QACP,IAAIR,GAAA,IAAOA,GAAA,CAAIS,OAAO,EAAE;UACtBT,GAAA,CAAIS,OAAO,CAACC,MAAM;UAClBV,GAAA,CAAIS,OAAO,CAACE,iBAAiB,CAAC,GAAGZ,KAAA,CAAMa,MAAM,GAAG;UAChDC,QAAA,CAASC,WAAW,CAAC;UACrBZ,SAAA,CAAU;QACZ;MACF;MACAa,YAAA,EAAcA,CAAA;QACZX,UAAA,CAAW;QACXF,SAAA,CAAU;MACZ;MACAc,YAAA,EAAcA,CAAA;QACZZ,UAAA,CAAW;QACXF,SAAA,CAAU;MACZ;MACAe,IAAA,EAAK;8BAELC,IAAA,CAAC1B,QAAA,O,aACDc,KAAA,CAACZ,OAAA;QAAQyB,KAAA,EAAOlB,MAAA,GAAS,IAAImB,SAAA;QAAWC,IAAA,EAAMlB,OAAA,IAAWF,MAAA;mBACtDA,MAAA,KAAWH,cAAA,IAAkBO,CAAA,CAAE,iBAAgB,GAC/C,CAACJ,MAAA,KAAWJ,cAAA,IAAkBQ,CAAA,CAAE,eAAc;uBAEjDa,IAAA,CAAC;QAASI,QAAQ;QAACtB,GAAA,EAAKA,GAAA;QAAKuB,QAAA,EAAU,CAAC;QAAGxB,KAAA,EAAOA;;;EAGxD;EAEA,OAAO;AACT","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["c","_c","React","useState","CopyIcon","useTranslation","Tooltip","baseClass","CopyToClipboard","t0","$","defaultMessage","successMessage","value","copied","setCopied","hovered","setHovered","t","t1","navigator","clipboard","writeText","t2","t3","Symbol","for","t4","t5","t6","_jsxs","className","onClick","onMouseEnter","onMouseLeave","type","children","_jsx","delay","undefined","show"],"sources":["../../../src/elements/CopyToClipboard/index.tsx"],"sourcesContent":["'use client'\nimport React, { useState } from 'react'\n\nimport { CopyIcon } from '../../icons/Copy/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { Tooltip } from '../Tooltip/index.js'\nimport './index.scss'\n\nconst baseClass = 'copy-to-clipboard'\n\nexport type Props = {\n defaultMessage?: string\n successMessage?: string\n value?: string\n}\n\nexport const CopyToClipboard: React.FC<Props> = ({ defaultMessage, successMessage, value }) => {\n const [copied, setCopied] = useState(false)\n const [hovered, setHovered] = useState(false)\n const { t } = useTranslation()\n\n if (value) {\n return (\n <button\n className={baseClass}\n onClick={async () => {\n await navigator.clipboard.writeText(value)\n setCopied(true)\n }}\n onMouseEnter={() => {\n setHovered(true)\n setCopied(false)\n }}\n onMouseLeave={() => {\n setHovered(false)\n setCopied(false)\n }}\n type=\"button\"\n >\n <CopyIcon />\n <Tooltip delay={copied ? 0 : undefined} show={hovered || copied}>\n {copied && (successMessage ?? t('general:copied'))}\n {!copied && (defaultMessage ?? t('general:copy'))}\n </Tooltip>\n </button>\n )\n }\n\n return null\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;;AACA,OAAOC,KAAA,IAASC,QAAQ,QAAQ;AAEhC,SAASC,QAAQ,QAAQ;AACzB,SAASC,cAAc,QAAQ;AAC/B,SAASC,OAAO,QAAQ;AACxB,OAAO;AAEP,MAAMC,SAAA,GAAY;AAQlB,OAAO,MAAMC,eAAA,GAAmCC,EAAA;EAAA,MAAAC,CAAA,GAAAT,EAAA;EAAC;IAAAU,cAAA;IAAAC,cAAA;IAAAC;EAAA,IAAAJ,EAAyC;EACxF,OAAAK,MAAA,EAAAC,SAAA,IAA4BZ,QAAA,MAAS;EACrC,OAAAa,OAAA,EAAAC,UAAA,IAA8Bd,QAAA,MAAS;EACvC;IAAAe;EAAA,IAAcb,cAAA;EAAA,IAEVQ,KAAA;IAAA,IAAAM,EAAA;IAAA,IAAAT,CAAA,QAAAG,KAAA;MAIWM,EAAA,SAAAA,CAAA;QAAA,MACDC,SAAA,CAAAC,SAAA,CAAAC,SAAA,CAA8BT,KAAA;QACpCE,SAAA,KAAU;MAAA;MACZL,CAAA,MAAAG,KAAA;MAAAH,CAAA,MAAAS,EAAA;IAAA;MAAAA,EAAA,GAAAT,CAAA;IAAA;IAAA,IAAAa,EAAA;IAAA,IAAAC,EAAA;IAAA,IAAAd,CAAA,QAAAe,MAAA,CAAAC,GAAA;MACcH,EAAA,GAAAA,CAAA;QACZN,UAAA,KAAW;QACXF,SAAA,MAAU;MAAA;MAEES,EAAA,GAAAA,CAAA;QACZP,UAAA,MAAW;QACXF,SAAA,MAAU;MAAA;MACZL,CAAA,MAAAa,EAAA;MAAAb,CAAA,MAAAc,EAAA;IAAA;MAAAD,EAAA,GAAAb,CAAA;MAAAc,EAAA,GAAAd,CAAA;IAAA;IAAA,IAAAiB,EAAA;IAAA,IAAAjB,CAAA,QAAAI,MAAA,IAAAJ,CAAA,QAAAC,cAAA,IAAAD,CAAA,QAAAM,OAAA,IAAAN,CAAA,QAAAE,cAAA,IAAAF,CAAA,QAAAQ,CAAA,IAAAR,CAAA,QAAAS,EAAA;MAAA,IAAAS,EAAA;MAAA,IAAAlB,CAAA,SAAAI,MAAA,IAAAJ,CAAA,SAAAE,cAAA,IAAAF,CAAA,SAAAQ,CAAA;QAKGU,EAAA,GAAAd,MAAA,KAAWF,cAAA,IAAkBM,CAAA,CAAE,iBAAgB;QAAAR,CAAA,OAAAI,MAAA;QAAAJ,CAAA,OAAAE,cAAA;QAAAF,CAAA,OAAAQ,CAAA;QAAAR,CAAA,OAAAkB,EAAA;MAAA;QAAAA,EAAA,GAAAlB,CAAA;MAAA;MAAA,IAAAmB,EAAA;MAAA,IAAAnB,CAAA,SAAAI,MAAA,IAAAJ,CAAA,SAAAC,cAAA,IAAAD,CAAA,SAAAQ,CAAA;QAC/CW,EAAA,IAACf,MAAA,KAAWH,cAAA,IAAkBO,CAAA,CAAE,eAAc;QAAAR,CAAA,OAAAI,MAAA;QAAAJ,CAAA,OAAAC,cAAA;QAAAD,CAAA,OAAAQ,CAAA;QAAAR,CAAA,OAAAmB,EAAA;MAAA;QAAAA,EAAA,GAAAnB,CAAA;MAAA;MAnBnDiB,EAAA,GAAAG,KAAA,CAAC;QAAAC,SAAA,EAAAxB,SAAA;QAAAyB,OAAA,EAEUb,EAGT;QAAAc,YAAA,EACcV,EAGd;QAAAW,YAAA,EACcV,EAGd;QAAAW,IAAA,EACK;QAAAC,QAAA,GAELC,IAAA,CAAAjC,QAAA,IAAC,GACD0B,KAAA,CAAAxB,OAAA;UAAAgC,KAAA,EAAgBxB,MAAA,OAAAyB,SAAa;UAAAC,IAAA,EAAiBxB,OAAA,IAAWF,MAAA;UAAAsB,QAAA,GACtDR,EAA+C,EAC/CC,EAA8C;QAAA,C;;;;;;;;;;;;WAnBnDF,E;;;CA0BN","ignoreList":[]}
@@ -8,14 +8,6 @@
8
8
  vertical-align: middle;
9
9
  border-radius: 100%;
10
10
 
11
- textarea {
12
- position: absolute;
13
- opacity: 0;
14
- z-index: -1;
15
- height: 0px;
16
- width: 0px;
17
- }
18
-
19
11
  &:focus,
20
12
  &:active {
21
13
  outline: none;
@@ -1 +1 @@
1
- {"version":3,"file":"DatePicker.d.ts","sourceRoot":"","sources":["../../../src/elements/DatePicker/DatePicker.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,MAAM,OAAO,CAAA;AAKzB,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAKvC,OAAO,gBAAgB,CAAA;AACvB,OAAO,cAAc,CAAA;AAKrB,QAAA,MAAM,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CA+H/B,CAAA;AAGD,eAAe,UAAU,CAAA"}
1
+ {"version":3,"file":"DatePicker.d.ts","sourceRoot":"","sources":["../../../src/elements/DatePicker/DatePicker.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,MAAM,OAAO,CAAA;AAOzB,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAKvC,OAAO,gBAAgB,CAAA;AACvB,OAAO,cAAc,CAAA;AAKrB,QAAA,MAAM,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CA+H/B,CAAA;AAGD,eAAe,UAAU,CAAA"}
@@ -4,7 +4,7 @@ import { c as _c } from "react/compiler-runtime";
4
4
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
5
5
  import React from 'react';
6
6
  import ReactDatePickerDefaultImport, { registerLocale, setDefaultLocale } from 'react-datepicker';
7
- const ReactDatePicker = ReactDatePickerDefaultImport.default || ReactDatePickerDefaultImport;
7
+ const ReactDatePicker = 'default' in ReactDatePickerDefaultImport ? ReactDatePickerDefaultImport.default : ReactDatePickerDefaultImport;
8
8
  import { CalendarIcon } from '../../icons/Calendar/index.js';
9
9
  import { XIcon } from '../../icons/X/index.js';
10
10
  import { useTranslation } from '../../providers/Translation/index.js';
@@ -1 +1 @@
1
- {"version":3,"file":"DatePicker.js","names":["c","_c","React","ReactDatePickerDefaultImport","registerLocale","setDefaultLocale","ReactDatePicker","default","CalendarIcon","XIcon","useTranslation","getFormattedLocale","baseClass","DatePicker","props","$","id","displayFormat","customDisplayFormat","maxDate","maxTime","minDate","minTime","monthsToShow","t0","onChange","onChangeFromProps","overrides","pickerAppearance","t1","placeholder","placeholderText","readOnly","timeFormat","t2","timeIntervals","t3","value","undefined","i18n","dateFormat","incomingDate","newDate","Date","includes","tzOffset","getTimezoneOffset","setHours","setMilliseconds","dateTimePickerProps","customInputRef","disabled","monthsShown","Math","min","popperPlacement","selected","showMonthYearPicker","showPopperArrow","showTimeSelect","t4","t5","filter","Boolean","classes","join","t6","t7","dateFNS","language","datepickerLocale","t8","console","warn","useEffect","_jsxs","className","children","_jsx","onClick","type","dropdownMode","showMonthDropdown","showYearDropdown"],"sources":["../../../src/elements/DatePicker/DatePicker.tsx"],"sourcesContent":["'use client'\nimport type { DatePickerProps } from 'react-datepicker'\n\nimport React from 'react'\nimport ReactDatePickerDefaultImport, { registerLocale, setDefaultLocale } from 'react-datepicker'\nconst ReactDatePicker = (ReactDatePickerDefaultImport.default ||\n ReactDatePickerDefaultImport) as unknown as typeof ReactDatePickerDefaultImport.default\n\nimport type { Props } from './types.js'\n\nimport { CalendarIcon } from '../../icons/Calendar/index.js'\nimport { XIcon } from '../../icons/X/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport './library.scss'\nimport './index.scss'\nimport { getFormattedLocale } from './getFormattedLocale.js'\n\nconst baseClass = 'date-time-picker'\n\nconst DatePicker: React.FC<Props> = (props) => {\n const {\n id,\n displayFormat: customDisplayFormat,\n maxDate,\n maxTime,\n minDate,\n minTime,\n monthsToShow = 1,\n onChange: onChangeFromProps,\n overrides,\n pickerAppearance = 'default',\n placeholder: placeholderText,\n readOnly,\n timeFormat = 'h:mm aa',\n timeIntervals = 30,\n value,\n } = props\n\n // Use the user's AdminUI language preference for the locale\n const { i18n } = useTranslation()\n\n let dateFormat = customDisplayFormat\n\n if (!customDisplayFormat) {\n // when no displayFormat is provided, determine format based on the picker appearance\n if (pickerAppearance === 'default') {\n dateFormat = 'MM/dd/yyyy'\n } else if (pickerAppearance === 'dayAndTime') {\n dateFormat = 'MMM d, yyy h:mm a'\n } else if (pickerAppearance === 'timeOnly') {\n dateFormat = 'h:mm a'\n } else if (pickerAppearance === 'dayOnly') {\n dateFormat = 'MMM dd'\n } else if (pickerAppearance === 'monthOnly') {\n dateFormat = 'MMMM'\n }\n }\n\n const onChange: Extract<\n DatePickerProps,\n { selectsMultiple?: never; selectsRange?: never }\n >['onChange'] = (incomingDate) => {\n const newDate = incomingDate\n if (newDate instanceof Date && ['dayOnly', 'default', 'monthOnly'].includes(pickerAppearance)) {\n const tzOffset = incomingDate.getTimezoneOffset() / 60\n newDate.setHours(12 - tzOffset, 0)\n }\n\n if (newDate instanceof Date && !dateFormat.includes('SSS')) {\n // Unless the dateFormat includes milliseconds, set milliseconds to 0\n // This is to ensure that the timestamp is consistent with the displayFormat\n newDate.setMilliseconds(0)\n }\n\n if (typeof onChangeFromProps === 'function') {\n onChangeFromProps(newDate)\n }\n }\n\n const dateTimePickerProps: Extract<\n DatePickerProps,\n { selectsMultiple?: never; selectsRange?: never }\n > = {\n customInputRef: 'ref',\n dateFormat,\n disabled: readOnly,\n maxDate,\n maxTime,\n minDate,\n minTime,\n monthsShown: Math.min(2, monthsToShow),\n onChange,\n placeholderText,\n popperPlacement: 'bottom-start',\n selected: value && new Date(value),\n showMonthYearPicker: pickerAppearance === 'monthOnly',\n showPopperArrow: false,\n showTimeSelect: pickerAppearance === 'dayAndTime' || pickerAppearance === 'timeOnly',\n timeFormat,\n timeIntervals,\n ...(overrides as Extract<\n DatePickerProps,\n { selectsMultiple?: never; selectsRange?: never } // to satisfy TypeScript. Overrides can enable selectsMultiple or selectsRange but then it's up to the user to ensure they pass in the correct onChange\n >),\n }\n\n const classes = [baseClass, `${baseClass}__appearance--${pickerAppearance}`]\n .filter(Boolean)\n .join(' ')\n\n React.useEffect(() => {\n if (i18n.dateFNS) {\n try {\n const datepickerLocale = getFormattedLocale(i18n.language)\n registerLocale(datepickerLocale, i18n.dateFNS)\n setDefaultLocale(datepickerLocale)\n } catch (e) {\n console.warn(`Could not find DatePicker locale for ${i18n.language}`)\n }\n }\n }, [i18n.language, i18n.dateFNS])\n\n return (\n <div className={classes} id={id}>\n <div className={`${baseClass}__icon-wrap`}>\n {dateTimePickerProps.selected && (\n <button\n className={`${baseClass}__clear-button`}\n onClick={() => onChange(null)}\n type=\"button\"\n >\n <XIcon />\n </button>\n )}\n <CalendarIcon />\n </div>\n <div className={`${baseClass}__input-wrapper`}>\n <ReactDatePicker\n {...dateTimePickerProps}\n dropdownMode=\"select\"\n showMonthDropdown\n showYearDropdown\n />\n </div>\n </div>\n )\n}\n\n// eslint-disable-next-line no-restricted-exports\nexport default DatePicker\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"DatePicker.js","names":["c","_c","React","ReactDatePickerDefaultImport","registerLocale","setDefaultLocale","ReactDatePicker","default","CalendarIcon","XIcon","useTranslation","getFormattedLocale","baseClass","DatePicker","props","$","id","displayFormat","customDisplayFormat","maxDate","maxTime","minDate","minTime","monthsToShow","t0","onChange","onChangeFromProps","overrides","pickerAppearance","t1","placeholder","placeholderText","readOnly","timeFormat","t2","timeIntervals","t3","value","undefined","i18n","dateFormat","incomingDate","newDate","Date","includes","tzOffset","getTimezoneOffset","setHours","setMilliseconds","dateTimePickerProps","customInputRef","disabled","monthsShown","Math","min","popperPlacement","selected","showMonthYearPicker","showPopperArrow","showTimeSelect","t4","t5","filter","Boolean","classes","join","t6","t7","dateFNS","language","datepickerLocale","t8","console","warn","useEffect","_jsxs","className","children","_jsx","onClick","type","dropdownMode","showMonthDropdown","showYearDropdown"],"sources":["../../../src/elements/DatePicker/DatePicker.tsx"],"sourcesContent":["'use client'\nimport type { DatePickerProps } from 'react-datepicker'\n\nimport React from 'react'\nimport ReactDatePickerDefaultImport, { registerLocale, setDefaultLocale } from 'react-datepicker'\nconst ReactDatePicker =\n 'default' in ReactDatePickerDefaultImport\n ? ReactDatePickerDefaultImport.default\n : ReactDatePickerDefaultImport\n\nimport type { Props } from './types.js'\n\nimport { CalendarIcon } from '../../icons/Calendar/index.js'\nimport { XIcon } from '../../icons/X/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport './library.scss'\nimport './index.scss'\nimport { getFormattedLocale } from './getFormattedLocale.js'\n\nconst baseClass = 'date-time-picker'\n\nconst DatePicker: React.FC<Props> = (props) => {\n const {\n id,\n displayFormat: customDisplayFormat,\n maxDate,\n maxTime,\n minDate,\n minTime,\n monthsToShow = 1,\n onChange: onChangeFromProps,\n overrides,\n pickerAppearance = 'default',\n placeholder: placeholderText,\n readOnly,\n timeFormat = 'h:mm aa',\n timeIntervals = 30,\n value,\n } = props\n\n // Use the user's AdminUI language preference for the locale\n const { i18n } = useTranslation()\n\n let dateFormat = customDisplayFormat\n\n if (!customDisplayFormat) {\n // when no displayFormat is provided, determine format based on the picker appearance\n if (pickerAppearance === 'default') {\n dateFormat = 'MM/dd/yyyy'\n } else if (pickerAppearance === 'dayAndTime') {\n dateFormat = 'MMM d, yyy h:mm a'\n } else if (pickerAppearance === 'timeOnly') {\n dateFormat = 'h:mm a'\n } else if (pickerAppearance === 'dayOnly') {\n dateFormat = 'MMM dd'\n } else if (pickerAppearance === 'monthOnly') {\n dateFormat = 'MMMM'\n }\n }\n\n const onChange: Extract<\n DatePickerProps,\n { selectsMultiple?: never; selectsRange?: never }\n >['onChange'] = (incomingDate) => {\n const newDate = incomingDate\n if (newDate instanceof Date && ['dayOnly', 'default', 'monthOnly'].includes(pickerAppearance)) {\n const tzOffset = incomingDate.getTimezoneOffset() / 60\n newDate.setHours(12 - tzOffset, 0)\n }\n\n if (newDate instanceof Date && !dateFormat.includes('SSS')) {\n // Unless the dateFormat includes milliseconds, set milliseconds to 0\n // This is to ensure that the timestamp is consistent with the displayFormat\n newDate.setMilliseconds(0)\n }\n\n if (typeof onChangeFromProps === 'function') {\n onChangeFromProps(newDate)\n }\n }\n\n const dateTimePickerProps: Extract<\n DatePickerProps,\n { selectsMultiple?: never; selectsRange?: never }\n > = {\n customInputRef: 'ref',\n dateFormat,\n disabled: readOnly,\n maxDate,\n maxTime,\n minDate,\n minTime,\n monthsShown: Math.min(2, monthsToShow),\n onChange,\n placeholderText,\n popperPlacement: 'bottom-start',\n selected: value && new Date(value),\n showMonthYearPicker: pickerAppearance === 'monthOnly',\n showPopperArrow: false,\n showTimeSelect: pickerAppearance === 'dayAndTime' || pickerAppearance === 'timeOnly',\n timeFormat,\n timeIntervals,\n ...(overrides as Extract<\n DatePickerProps,\n { selectsMultiple?: never; selectsRange?: never } // to satisfy TypeScript. Overrides can enable selectsMultiple or selectsRange but then it's up to the user to ensure they pass in the correct onChange\n >),\n }\n\n const classes = [baseClass, `${baseClass}__appearance--${pickerAppearance}`]\n .filter(Boolean)\n .join(' ')\n\n React.useEffect(() => {\n if (i18n.dateFNS) {\n try {\n const datepickerLocale = getFormattedLocale(i18n.language)\n registerLocale(datepickerLocale, i18n.dateFNS)\n setDefaultLocale(datepickerLocale)\n } catch (e) {\n console.warn(`Could not find DatePicker locale for ${i18n.language}`)\n }\n }\n }, [i18n.language, i18n.dateFNS])\n\n return (\n <div className={classes} id={id}>\n <div className={`${baseClass}__icon-wrap`}>\n {dateTimePickerProps.selected && (\n <button\n className={`${baseClass}__clear-button`}\n onClick={() => onChange(null)}\n type=\"button\"\n >\n <XIcon />\n </button>\n )}\n <CalendarIcon />\n </div>\n <div className={`${baseClass}__input-wrapper`}>\n <ReactDatePicker\n {...dateTimePickerProps}\n dropdownMode=\"select\"\n showMonthDropdown\n showYearDropdown\n />\n </div>\n </div>\n )\n}\n\n// eslint-disable-next-line no-restricted-exports\nexport default DatePicker\n"],"mappings":"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","ignoreList":[]}
@@ -1,6 +1,33 @@
1
- import NextLinkImport from 'next/link.js';
2
1
  import React from 'react';
3
- declare const NextLink: typeof NextLinkImport.default;
2
+ declare const NextLink: React.ForwardRefExoticComponent<Omit<React.AnchorHTMLAttributes<HTMLAnchorElement>, keyof {
3
+ href: string | import("url").UrlObject;
4
+ as?: string | import("url").UrlObject;
5
+ replace?: boolean;
6
+ scroll?: boolean;
7
+ shallow?: boolean;
8
+ passHref?: boolean;
9
+ prefetch?: boolean | null;
10
+ locale?: string | false;
11
+ legacyBehavior?: boolean;
12
+ onMouseEnter?: React.MouseEventHandler<HTMLAnchorElement>;
13
+ onTouchStart?: React.TouchEventHandler<HTMLAnchorElement>;
14
+ onClick?: React.MouseEventHandler<HTMLAnchorElement>;
15
+ }> & {
16
+ href: string | import("url").UrlObject;
17
+ as?: string | import("url").UrlObject;
18
+ replace?: boolean;
19
+ scroll?: boolean;
20
+ shallow?: boolean;
21
+ passHref?: boolean;
22
+ prefetch?: boolean | null;
23
+ locale?: string | false;
24
+ legacyBehavior?: boolean;
25
+ onMouseEnter?: React.MouseEventHandler<HTMLAnchorElement>;
26
+ onTouchStart?: React.TouchEventHandler<HTMLAnchorElement>;
27
+ onClick?: React.MouseEventHandler<HTMLAnchorElement>;
28
+ } & {
29
+ children?: React.ReactNode | undefined;
30
+ } & React.RefAttributes<HTMLAnchorElement>>;
4
31
  type Props = {
5
32
  /**
6
33
  * Disable the e.preventDefault() call on click if you want to handle it yourself via onClick
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/Link/index.tsx"],"names":[],"mappings":"AACA,OAAO,cAAc,MAAM,cAAc,CAAA;AAEzC,OAAO,KAAK,MAAM,OAAO,CAAA;AAKzB,QAAA,MAAM,QAAQ,EACkB,OAAO,cAAc,CAAC,OAAO,CAAA;AAgB7D,KAAK,KAAK,GAAG;IACX;;;;OAIG;IACH,cAAc,CAAC,EAAE,OAAO,CAAA;CACzB,GAAG,UAAU,CAAC,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAA;AAElC,eAAO,MAAM,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CA+ChC,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/Link/index.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,MAAM,OAAO,CAAA;AAKzB,QAAA,MAAM,QAAQ;;;;;;;;;;mBAyEsgD,MAAO,iBAAiB;mBAA+G,MAAO,iBAAiB;cAA0G,MAAO,iBAAiB;;;;;;;;;;;mBAAjS,MAAO,iBAAiB;mBAA+G,MAAO,iBAAiB;cAA0G,MAAO,iBAAiB;;eAAopB,MAAO,SAAS;2CAzEn4E,CAAA;AAgBtF,KAAK,KAAK,GAAG;IACX;;;;OAIG;IACH,cAAc,CAAC,EAAE,OAAO,CAAA;CACzB,GAAG,UAAU,CAAC,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAA;AAElC,eAAO,MAAM,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CA+ChC,CAAA"}
@@ -6,7 +6,7 @@ import { useRouter } from 'next/navigation.js';
6
6
  import React from 'react';
7
7
  import { useRouteTransition } from '../../providers/RouteTransition/index.js';
8
8
  import { formatUrl } from './formatUrl.js';
9
- const NextLink = NextLinkImport.default || NextLinkImport;
9
+ const NextLink = 'default' in NextLinkImport ? NextLinkImport.default : NextLinkImport;
10
10
  // Copied from https://github.com/vercel/next.js/blob/canary/packages/next/src/client/link.tsx#L180-L191
11
11
  function isModifiedEvent(event) {
12
12
  const eventTarget = event.currentTarget;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["NextLinkImport","useRouter","React","useRouteTransition","formatUrl","NextLink","default","isModifiedEvent","event","eventTarget","currentTarget","target","getAttribute","metaKey","ctrlKey","shiftKey","altKey","nativeEvent","which","Link","children","href","onClick","preventDefault","ref","replace","scroll","rest","router","startRouteTransition","_jsx","e","url","push"],"sources":["../../../src/elements/Link/index.tsx"],"sourcesContent":["'use client'\nimport NextLinkImport from 'next/link.js'\nimport { useRouter } from 'next/navigation.js'\nimport React from 'react'\n\nimport { useRouteTransition } from '../../providers/RouteTransition/index.js'\nimport { formatUrl } from './formatUrl.js'\n\nconst NextLink = (NextLinkImport.default ||\n NextLinkImport) as unknown as typeof NextLinkImport.default\n\n// Copied from https://github.com/vercel/next.js/blob/canary/packages/next/src/client/link.tsx#L180-L191\nfunction isModifiedEvent(event: React.MouseEvent): boolean {\n const eventTarget = event.currentTarget as HTMLAnchorElement | SVGAElement\n const target = eventTarget.getAttribute('target')\n return (\n (target && target !== '_self') ||\n event.metaKey ||\n event.ctrlKey ||\n event.shiftKey ||\n event.altKey || // triggers resource download\n (event.nativeEvent && event.nativeEvent.which === 2)\n )\n}\n\ntype Props = {\n /**\n * Disable the e.preventDefault() call on click if you want to handle it yourself via onClick\n *\n * @default true\n */\n preventDefault?: boolean\n} & Parameters<typeof NextLink>[0]\n\nexport const Link: React.FC<Props> = ({\n children,\n href,\n onClick,\n preventDefault = true,\n ref,\n replace,\n scroll,\n ...rest\n}) => {\n const router = useRouter()\n const { startRouteTransition } = useRouteTransition()\n\n return (\n <NextLink\n href={href}\n onClick={(e) => {\n if (isModifiedEvent(e)) {\n return\n }\n\n if (onClick) {\n onClick(e)\n }\n\n // We need a preventDefault here so that a clicked link doesn't trigger twice,\n // once for default browser navigation and once for startRouteTransition\n if (preventDefault) {\n e.preventDefault()\n }\n\n startRouteTransition(() => {\n const url = typeof href === 'string' ? href : formatUrl(href)\n\n if (replace) {\n void router.replace(url, { scroll })\n } else {\n void router.push(url, { scroll })\n }\n })\n }}\n ref={ref}\n {...rest}\n >\n {children}\n </NextLink>\n )\n}\n"],"mappings":"AAAA;;;AACA,OAAOA,cAAA,MAAoB;AAC3B,SAASC,SAAS,QAAQ;AAC1B,OAAOC,KAAA,MAAW;AAElB,SAASC,kBAAkB,QAAQ;AACnC,SAASC,SAAS,QAAQ;AAE1B,MAAMC,QAAA,GAAYL,cAAA,CAAeM,OAAO,IACtCN,cAAA;AAEF;AACA,SAASO,gBAAgBC,KAAuB;EAC9C,MAAMC,WAAA,GAAcD,KAAA,CAAME,aAAa;EACvC,MAAMC,MAAA,GAASF,WAAA,CAAYG,YAAY,CAAC;EACxC,OACED,MAAC,IAAUA,MAAA,KAAW,WACtBH,KAAA,CAAMK,OAAO,IACbL,KAAA,CAAMM,OAAO,IACbN,KAAA,CAAMO,QAAQ,IACdP,KAAA,CAAMQ,MAAM;EAAI;EACfR,KAAA,CAAMS,WAAW,IAAIT,KAAA,CAAMS,WAAW,CAACC,KAAK,KAAK;AAEtD;AAWA,OAAO,MAAMC,IAAA,GAAwBA,CAAC;EACpCC,QAAQ;EACRC,IAAI;EACJC,OAAO;EACPC,cAAA,GAAiB,IAAI;EACrBC,GAAG;EACHC,OAAO;EACPC,MAAM;EACN,GAAGC;AAAA,CACJ;EACC,MAAMC,MAAA,GAAS3B,SAAA;EACf,MAAM;IAAE4B;EAAoB,CAAE,GAAG1B,kBAAA;EAEjC,oBACE2B,IAAA,CAACzB,QAAA;IACCgB,IAAA,EAAMA,IAAA;IACNC,OAAA,EAAUS,CAAA;MACR,IAAIxB,eAAA,CAAgBwB,CAAA,GAAI;QACtB;MACF;MAEA,IAAIT,OAAA,EAAS;QACXA,OAAA,CAAQS,CAAA;MACV;MAEA;MACA;MACA,IAAIR,cAAA,EAAgB;QAClBQ,CAAA,CAAER,cAAc;MAClB;MAEAM,oBAAA,CAAqB;QACnB,MAAMG,GAAA,GAAM,OAAOX,IAAA,KAAS,WAAWA,IAAA,GAAOjB,SAAA,CAAUiB,IAAA;QAExD,IAAII,OAAA,EAAS;UACX,KAAKG,MAAA,CAAOH,OAAO,CAACO,GAAA,EAAK;YAAEN;UAAO;QACpC,OAAO;UACL,KAAKE,MAAA,CAAOK,IAAI,CAACD,GAAA,EAAK;YAAEN;UAAO;QACjC;MACF;IACF;IACAF,GAAA,EAAKA,GAAA;IACJ,GAAGG,IAAI;cAEPP;;AAGP","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["NextLinkImport","useRouter","React","useRouteTransition","formatUrl","NextLink","default","isModifiedEvent","event","eventTarget","currentTarget","target","getAttribute","metaKey","ctrlKey","shiftKey","altKey","nativeEvent","which","Link","children","href","onClick","preventDefault","ref","replace","scroll","rest","router","startRouteTransition","_jsx","e","url","push"],"sources":["../../../src/elements/Link/index.tsx"],"sourcesContent":["'use client'\nimport NextLinkImport from 'next/link.js'\nimport { useRouter } from 'next/navigation.js'\nimport React from 'react'\n\nimport { useRouteTransition } from '../../providers/RouteTransition/index.js'\nimport { formatUrl } from './formatUrl.js'\n\nconst NextLink = 'default' in NextLinkImport ? NextLinkImport.default : NextLinkImport\n\n// Copied from https://github.com/vercel/next.js/blob/canary/packages/next/src/client/link.tsx#L180-L191\nfunction isModifiedEvent(event: React.MouseEvent): boolean {\n const eventTarget = event.currentTarget as HTMLAnchorElement | SVGAElement\n const target = eventTarget.getAttribute('target')\n return (\n (target && target !== '_self') ||\n event.metaKey ||\n event.ctrlKey ||\n event.shiftKey ||\n event.altKey || // triggers resource download\n (event.nativeEvent && event.nativeEvent.which === 2)\n )\n}\n\ntype Props = {\n /**\n * Disable the e.preventDefault() call on click if you want to handle it yourself via onClick\n *\n * @default true\n */\n preventDefault?: boolean\n} & Parameters<typeof NextLink>[0]\n\nexport const Link: React.FC<Props> = ({\n children,\n href,\n onClick,\n preventDefault = true,\n ref,\n replace,\n scroll,\n ...rest\n}) => {\n const router = useRouter()\n const { startRouteTransition } = useRouteTransition()\n\n return (\n <NextLink\n href={href}\n onClick={(e) => {\n if (isModifiedEvent(e)) {\n return\n }\n\n if (onClick) {\n onClick(e)\n }\n\n // We need a preventDefault here so that a clicked link doesn't trigger twice,\n // once for default browser navigation and once for startRouteTransition\n if (preventDefault) {\n e.preventDefault()\n }\n\n startRouteTransition(() => {\n const url = typeof href === 'string' ? href : formatUrl(href)\n\n if (replace) {\n void router.replace(url, { scroll })\n } else {\n void router.push(url, { scroll })\n }\n })\n }}\n ref={ref}\n {...rest}\n >\n {children}\n </NextLink>\n )\n}\n"],"mappings":"AAAA;;;AACA,OAAOA,cAAA,MAAoB;AAC3B,SAASC,SAAS,QAAQ;AAC1B,OAAOC,KAAA,MAAW;AAElB,SAASC,kBAAkB,QAAQ;AACnC,SAASC,SAAS,QAAQ;AAE1B,MAAMC,QAAA,GAAW,aAAaL,cAAA,GAAiBA,cAAA,CAAeM,OAAO,GAAGN,cAAA;AAExE;AACA,SAASO,gBAAgBC,KAAuB;EAC9C,MAAMC,WAAA,GAAcD,KAAA,CAAME,aAAa;EACvC,MAAMC,MAAA,GAASF,WAAA,CAAYG,YAAY,CAAC;EACxC,OACED,MAAC,IAAUA,MAAA,KAAW,WACtBH,KAAA,CAAMK,OAAO,IACbL,KAAA,CAAMM,OAAO,IACbN,KAAA,CAAMO,QAAQ,IACdP,KAAA,CAAMQ,MAAM;EAAI;EACfR,KAAA,CAAMS,WAAW,IAAIT,KAAA,CAAMS,WAAW,CAACC,KAAK,KAAK;AAEtD;AAWA,OAAO,MAAMC,IAAA,GAAwBA,CAAC;EACpCC,QAAQ;EACRC,IAAI;EACJC,OAAO;EACPC,cAAA,GAAiB,IAAI;EACrBC,GAAG;EACHC,OAAO;EACPC,MAAM;EACN,GAAGC;AAAA,CACJ;EACC,MAAMC,MAAA,GAAS3B,SAAA;EACf,MAAM;IAAE4B;EAAoB,CAAE,GAAG1B,kBAAA;EAEjC,oBACE2B,IAAA,CAACzB,QAAA;IACCgB,IAAA,EAAMA,IAAA;IACNC,OAAA,EAAUS,CAAA;MACR,IAAIxB,eAAA,CAAgBwB,CAAA,GAAI;QACtB;MACF;MAEA,IAAIT,OAAA,EAAS;QACXA,OAAA,CAAQS,CAAA;MACV;MAEA;MACA;MACA,IAAIR,cAAA,EAAgB;QAClBQ,CAAA,CAAER,cAAc;MAClB;MAEAM,oBAAA,CAAqB;QACnB,MAAMG,GAAA,GAAM,OAAOX,IAAA,KAAS,WAAWA,IAAA,GAAOjB,SAAA,CAAUiB,IAAA;QAExD,IAAII,OAAA,EAAS;UACX,KAAKG,MAAA,CAAOH,OAAO,CAACO,GAAA,EAAK;YAAEN;UAAO;QACpC,OAAO;UACL,KAAKE,MAAA,CAAOK,IAAI,CAACD,GAAA,EAAK;YAAEN;UAAO;QACjC;MACF;IACF;IACAF,GAAA,EAAKA,GAAA;IACJ,GAAGG,IAAI;cAEPP;;AAGP","ignoreList":[]}
@@ -195,41 +195,51 @@ export const Upload_v4 = props => {
195
195
  const urlInputRef = useRef(null);
196
196
  const inputRef = useRef(null);
197
197
  const useServerSideFetch = typeof uploadConfig?.pasteURL === 'object' && uploadConfig.pasteURL.allowList?.length > 0;
198
- const handleFileChange = useCallback(newFile => {
199
- if (newFile instanceof File) {
200
- setFileSrc(URL.createObjectURL(newFile));
198
+ const handleFileChange = useCallback(({
199
+ file,
200
+ isNewFile = true
201
+ }) => {
202
+ if (isNewFile && file instanceof File) {
203
+ setFileSrc(URL.createObjectURL(file));
201
204
  }
202
- setValue(newFile);
205
+ setValue(file);
203
206
  setShowUrlInput(false);
204
207
  setUploadControlFileUrl('');
205
208
  setUploadControlFileName(null);
206
209
  setUploadControlFile(null);
207
210
  if (typeof onChange === 'function') {
208
- onChange(newFile);
211
+ onChange(file);
209
212
  }
210
213
  }, [onChange, setValue, setUploadControlFile, setUploadControlFileName, setUploadControlFileUrl]);
211
214
  const renameFile = (fileToChange, newName) => {
212
215
  // Creating a new File object with updated properties
213
- const newFile_0 = new File([fileToChange], newName, {
216
+ const newFile = new File([fileToChange], newName, {
214
217
  type: fileToChange.type,
215
218
  lastModified: fileToChange.lastModified
216
219
  });
217
- return newFile_0;
220
+ return newFile;
218
221
  };
219
222
  const handleFileNameChange = React.useCallback(e => {
220
223
  const updatedFileName = e.target.value;
221
224
  if (value) {
222
- handleFileChange(renameFile(value, updatedFileName));
225
+ handleFileChange({
226
+ file: renameFile(value, updatedFileName),
227
+ isNewFile: false
228
+ });
223
229
  setFilename(updatedFileName);
224
230
  }
225
231
  }, [handleFileChange, value]);
226
232
  const handleFileSelection = useCallback(files => {
227
233
  const fileToUpload = files?.[0];
228
- handleFileChange(fileToUpload);
234
+ handleFileChange({
235
+ file: fileToUpload
236
+ });
229
237
  }, [handleFileChange]);
230
238
  const handleFileRemoval = useCallback(() => {
231
239
  setRemovedFile(true);
232
- handleFileChange(null);
240
+ handleFileChange({
241
+ file: null
242
+ });
233
243
  setFileSrc('');
234
244
  setFileUrl('');
235
245
  resetUploadEdits();
@@ -255,10 +265,12 @@ export const Upload_v4 = props => {
255
265
  }
256
266
  const blob = await clientResponse.blob();
257
267
  const fileName = uploadControlFileName || decodeURIComponent(fileUrl.split('/').pop() || '');
258
- const file = new File([blob], fileName, {
268
+ const file_0 = new File([blob], fileName, {
259
269
  type: blob.type
260
270
  });
261
- handleFileChange(file);
271
+ handleFileChange({
272
+ file: file_0
273
+ });
262
274
  setUploadStatus('idle');
263
275
  return; // Exit if client-side fetch succeeds
264
276
  } catch (_clientError) {
@@ -278,10 +290,12 @@ export const Upload_v4 = props => {
278
290
  }
279
291
  const blob_0 = await serverResponse.blob();
280
292
  const fileName_0 = decodeURIComponent(fileUrl.split('/').pop() || '');
281
- const file_0 = new File([blob_0], fileName_0, {
293
+ const file_1 = new File([blob_0], fileName_0, {
282
294
  type: blob_0.type
283
295
  });
284
- handleFileChange(file_0);
296
+ handleFileChange({
297
+ file: file_1
298
+ });
285
299
  setUploadStatus('idle');
286
300
  } catch (_serverError) {
287
301
  toast.error('The provided URL is not allowed.');
@@ -328,7 +342,9 @@ export const Upload_v4 = props => {
328
342
  useEffect(() => {
329
343
  const handleControlFile = () => {
330
344
  if (uploadControlFile) {
331
- handleFileChange(uploadControlFile);
345
+ handleFileChange({
346
+ file: uploadControlFile
347
+ });
332
348
  }
333
349
  };
334
350
  void handleControlFile();