@payloadcms/ui 3.0.0-canary.e198dc5 → 3.0.0-canary.e1fc0e0

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 (70) hide show
  1. package/dist/elements/AppHeader/index.scss +0 -1
  2. package/dist/elements/BulkUpload/AddFilesView/index.d.ts +2 -1
  3. package/dist/elements/BulkUpload/AddFilesView/index.d.ts.map +1 -1
  4. package/dist/elements/BulkUpload/AddFilesView/index.js +2 -0
  5. package/dist/elements/BulkUpload/AddFilesView/index.js.map +1 -1
  6. package/dist/elements/BulkUpload/index.d.ts.map +1 -1
  7. package/dist/elements/BulkUpload/index.js +22 -42
  8. package/dist/elements/BulkUpload/index.js.map +1 -1
  9. package/dist/elements/DatePicker/DatePicker.d.ts +1 -1
  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/DatePicker/library.scss +859 -0
  14. package/dist/elements/DeleteMany/index.d.ts.map +1 -1
  15. package/dist/elements/DeleteMany/index.js +16 -5
  16. package/dist/elements/DeleteMany/index.js.map +1 -1
  17. package/dist/elements/ListDrawer/DrawerContent.d.ts.map +1 -1
  18. package/dist/elements/ListDrawer/DrawerContent.js +61 -57
  19. package/dist/elements/ListDrawer/DrawerContent.js.map +1 -1
  20. package/dist/elements/PublishMany/index.d.ts.map +1 -1
  21. package/dist/elements/PublishMany/index.js +16 -5
  22. package/dist/elements/PublishMany/index.js.map +1 -1
  23. package/dist/elements/ReactSelect/index.d.ts.map +1 -1
  24. package/dist/elements/ReactSelect/index.js +1 -0
  25. package/dist/elements/ReactSelect/index.js.map +1 -1
  26. package/dist/elements/ReactSelect/index.scss +6 -1
  27. package/dist/elements/Table/DefaultCell/index.js +2 -2
  28. package/dist/elements/Table/DefaultCell/index.js.map +1 -1
  29. package/dist/elements/UnpublishMany/index.d.ts.map +1 -1
  30. package/dist/elements/UnpublishMany/index.js +16 -5
  31. package/dist/elements/UnpublishMany/index.js.map +1 -1
  32. package/dist/elements/Upload/index.d.ts.map +1 -1
  33. package/dist/elements/Upload/index.js +2 -0
  34. package/dist/elements/Upload/index.js.map +1 -1
  35. package/dist/exports/client/{CodeEditor-4A6256PR.js → CodeEditor-VPUKDCXS.js} +1 -1
  36. package/dist/exports/client/{CodeEditor-4A6256PR.js.map → CodeEditor-VPUKDCXS.js.map} +1 -1
  37. package/dist/exports/client/{DatePicker-HNJMUG32.js → DatePicker-FUJV23KL.js} +2 -2
  38. package/dist/exports/client/{chunk-IHJK2MAT.js → chunk-UMJJTMDP.js} +2 -2
  39. package/dist/exports/client/{chunk-IHJK2MAT.js.map → chunk-UMJJTMDP.js.map} +4 -4
  40. package/dist/exports/client/index.d.ts +2 -1
  41. package/dist/exports/client/index.d.ts.map +1 -1
  42. package/dist/exports/client/index.js +22 -19
  43. package/dist/exports/client/index.js.map +4 -4
  44. package/dist/fields/Collapsible/index.d.ts.map +1 -1
  45. package/dist/fields/Tabs/index.d.ts.map +1 -1
  46. package/dist/fields/Tabs/index.js +69 -53
  47. package/dist/fields/Tabs/index.js.map +1 -1
  48. package/dist/fields/Upload/Input.d.ts.map +1 -1
  49. package/dist/fields/Upload/Input.js +39 -36
  50. package/dist/fields/Upload/Input.js.map +1 -1
  51. package/dist/forms/Form/fieldReducer.d.ts.map +1 -1
  52. package/dist/forms/Form/fieldReducer.js +7 -0
  53. package/dist/forms/Form/fieldReducer.js.map +1 -1
  54. package/dist/forms/useField/index.d.ts.map +1 -1
  55. package/dist/forms/useField/index.js +1 -1
  56. package/dist/forms/useField/index.js.map +1 -1
  57. package/dist/providers/Auth/index.d.ts +10 -6
  58. package/dist/providers/Auth/index.d.ts.map +1 -1
  59. package/dist/providers/Auth/index.js.map +1 -1
  60. package/dist/providers/Config/createClientConfig/fields.d.ts.map +1 -1
  61. package/dist/providers/Config/createClientConfig/fields.js +21 -3
  62. package/dist/providers/Config/createClientConfig/fields.js.map +1 -1
  63. package/dist/providers/DocumentInfo/index.d.ts.map +1 -1
  64. package/dist/providers/DocumentInfo/index.js +4 -0
  65. package/dist/providers/DocumentInfo/index.js.map +1 -1
  66. package/dist/providers/Selection/index.js +3 -3
  67. package/dist/providers/Selection/index.js.map +1 -1
  68. package/dist/styles.css +1 -1
  69. package/package.json +8 -8
  70. /package/dist/exports/client/{DatePicker-HNJMUG32.js.map → DatePicker-FUJV23KL.js.map} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["arrayMove","getTranslation","React","useEffect","useId","Select","CreatableSelect","useTranslation","DraggableSortable","ShimmerEffect","ClearIndicator","Control","DropdownIndicator","Input","generateMultiValueDraggableID","MultiValue","MultiValueLabel","MultiValueRemove","SingleValue","ValueContainer","createOption","label","value","SelectAdapter","props","i18n","t","inputValue","setInputValue","useState","uuid","hasMounted","setHasMounted","className","components","customProps","disabled","filterOption","undefined","getOptionValue","isClearable","isCreatable","isLoading","isSearchable","noOptionsMessage","numberOnly","onChange","onMenuClose","onMenuOpen","options","placeholder","showError","loadingMessage","classes","filter","Boolean","join","_jsx","height","captureMenuScroll","classNamePrefix","instanceId","isDisabled","menuPlacement","unstyled","handleKeyDown","event","acceptableKeys","isNumber","test","key","isActionKey","includes","preventDefault","trim","onInputChange","newValue","onKeyDown","SortableSelect","draggableIDs","Array","isArray","map","optionValue","ids","onDragEnd","moveFromIndex","moveToIndex","sorted","ReactSelect","isMulti","isSortable"],"sources":["../../../src/elements/ReactSelect/index.tsx"],"sourcesContent":["'use client'\nimport type { KeyboardEventHandler } from 'react'\n\nimport { arrayMove } from '@dnd-kit/sortable'\nimport { getTranslation } from '@payloadcms/translations'\nimport React, { useEffect, useId } from 'react'\nimport Select from 'react-select'\nimport CreatableSelect from 'react-select/creatable'\n\nimport type { Option, ReactSelectAdapterProps } from './types.js'\nexport type { Option } from './types.js'\n\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { DraggableSortable } from '../DraggableSortable/index.js'\nimport { ShimmerEffect } from '../ShimmerEffect/index.js'\nimport { ClearIndicator } from './ClearIndicator/index.js'\nimport { Control } from './Control/index.js'\nimport { DropdownIndicator } from './DropdownIndicator/index.js'\nimport './index.scss'\nimport { Input } from './Input/index.js'\nimport { generateMultiValueDraggableID, MultiValue } from './MultiValue/index.js'\nimport { MultiValueLabel } from './MultiValueLabel/index.js'\nimport { MultiValueRemove } from './MultiValueRemove/index.js'\nimport { SingleValue } from './SingleValue/index.js'\nimport { ValueContainer } from './ValueContainer/index.js'\n\nconst createOption = (label: string) => ({\n label,\n value: label,\n})\n\nconst SelectAdapter: React.FC<ReactSelectAdapterProps> = (props) => {\n const { i18n, t } = useTranslation()\n const [inputValue, setInputValue] = React.useState('') // for creatable select\n const uuid = useId()\n const [hasMounted, setHasMounted] = React.useState(false)\n\n useEffect(() => {\n setHasMounted(true)\n }, [])\n\n const {\n className,\n components,\n customProps,\n disabled = false,\n filterOption = undefined,\n getOptionValue,\n isClearable = true,\n isCreatable,\n isLoading,\n isSearchable = true,\n noOptionsMessage = () => t('general:noOptions'),\n numberOnly = false,\n onChange,\n onMenuClose,\n onMenuOpen,\n options,\n placeholder = t('general:selectValue'),\n showError,\n value,\n } = props\n\n const loadingMessage = () => t('general:loading') + '...'\n\n const classes = [className, 'react-select', showError && 'react-select--error']\n .filter(Boolean)\n .join(' ')\n\n if (!hasMounted) {\n return <ShimmerEffect height=\"calc(var(--base) * 2 + 2px)\" />\n }\n\n if (!isCreatable) {\n return (\n <Select\n captureMenuScroll\n customProps={customProps}\n isLoading={isLoading}\n placeholder={getTranslation(placeholder, i18n)}\n {...props}\n className={classes}\n classNamePrefix=\"rs\"\n components={{\n ClearIndicator,\n Control,\n DropdownIndicator,\n Input,\n MultiValue,\n MultiValueLabel,\n MultiValueRemove,\n SingleValue,\n ValueContainer,\n ...components,\n }}\n filterOption={filterOption}\n getOptionValue={getOptionValue}\n instanceId={uuid}\n isClearable={isClearable}\n isDisabled={disabled}\n isSearchable={isSearchable}\n loadingMessage={loadingMessage}\n menuPlacement=\"auto\"\n noOptionsMessage={noOptionsMessage}\n onChange={onChange}\n onMenuClose={onMenuClose}\n onMenuOpen={onMenuOpen}\n options={options}\n unstyled={true}\n value={value}\n />\n )\n }\n const handleKeyDown: KeyboardEventHandler = (event) => {\n if (numberOnly === true) {\n const acceptableKeys = [\n 'Tab',\n 'Escape',\n 'Backspace',\n 'Enter',\n 'ArrowRight',\n 'ArrowLeft',\n 'ArrowUp',\n 'ArrowDown',\n ]\n const isNumber = !/\\D/.test(event.key)\n const isActionKey = acceptableKeys.includes(event.key)\n if (!isNumber && !isActionKey) {\n event.preventDefault()\n return\n }\n }\n if (!value || !inputValue || inputValue.trim() === '') {\n return\n }\n if (filterOption && !filterOption(null, inputValue)) {\n return\n }\n switch (event.key) {\n case 'Enter':\n case 'Tab':\n onChange([...(value as Option[]), createOption(inputValue)])\n setInputValue('')\n event.preventDefault()\n break\n default:\n break\n }\n }\n\n return (\n <CreatableSelect\n captureMenuScroll\n isLoading={isLoading}\n placeholder={getTranslation(placeholder, i18n)}\n {...props}\n className={classes}\n classNamePrefix=\"rs\"\n components={{\n ClearIndicator,\n Control,\n DropdownIndicator,\n Input,\n MultiValue,\n MultiValueLabel,\n MultiValueRemove,\n SingleValue,\n ValueContainer,\n ...components,\n }}\n filterOption={filterOption}\n inputValue={inputValue}\n instanceId={uuid}\n isClearable={isClearable}\n isDisabled={disabled}\n isSearchable={isSearchable}\n loadingMessage={loadingMessage}\n menuPlacement=\"auto\"\n noOptionsMessage={noOptionsMessage}\n onChange={onChange}\n onInputChange={(newValue) => setInputValue(newValue)}\n onKeyDown={handleKeyDown}\n onMenuClose={onMenuClose}\n onMenuOpen={onMenuOpen}\n options={options}\n value={value}\n />\n )\n}\n\nconst SortableSelect: React.FC<ReactSelectAdapterProps> = (props) => {\n const { getOptionValue, onChange, value } = props\n\n let draggableIDs: string[] = []\n if (value) {\n draggableIDs = (Array.isArray(value) ? value : [value]).map((optionValue) => {\n return generateMultiValueDraggableID(optionValue, getOptionValue)\n })\n }\n\n return (\n <DraggableSortable\n className=\"react-select-container\"\n ids={draggableIDs}\n onDragEnd={({ moveFromIndex, moveToIndex }) => {\n let sorted = value\n if (value && Array.isArray(value)) {\n sorted = arrayMove(value, moveFromIndex, moveToIndex)\n }\n onChange(sorted)\n }}\n >\n <SelectAdapter {...props} />\n </DraggableSortable>\n )\n}\n\nexport const ReactSelect: React.FC<ReactSelectAdapterProps> = (props) => {\n const { isMulti, isSortable } = props\n\n if (isMulti && isSortable) {\n return <SortableSelect {...props} />\n }\n\n return <SelectAdapter {...props} />\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["arrayMove","getTranslation","React","useEffect","useId","Select","CreatableSelect","useTranslation","DraggableSortable","ShimmerEffect","ClearIndicator","Control","DropdownIndicator","Input","generateMultiValueDraggableID","MultiValue","MultiValueLabel","MultiValueRemove","SingleValue","ValueContainer","createOption","label","value","SelectAdapter","props","i18n","t","inputValue","setInputValue","useState","uuid","hasMounted","setHasMounted","className","components","customProps","disabled","filterOption","undefined","getOptionValue","isClearable","isCreatable","isLoading","isSearchable","noOptionsMessage","numberOnly","onChange","onMenuClose","onMenuOpen","options","placeholder","showError","loadingMessage","classes","filter","Boolean","join","_jsx","height","captureMenuScroll","classNamePrefix","instanceId","isDisabled","menuPlacement","unstyled","handleKeyDown","event","acceptableKeys","isNumber","test","key","isActionKey","includes","preventDefault","trim","onInputChange","newValue","onKeyDown","SortableSelect","draggableIDs","Array","isArray","map","optionValue","ids","onDragEnd","moveFromIndex","moveToIndex","sorted","ReactSelect","isMulti","isSortable"],"sources":["../../../src/elements/ReactSelect/index.tsx"],"sourcesContent":["'use client'\nimport type { KeyboardEventHandler } from 'react'\n\nimport { arrayMove } from '@dnd-kit/sortable'\nimport { getTranslation } from '@payloadcms/translations'\nimport React, { useEffect, useId } from 'react'\nimport Select from 'react-select'\nimport CreatableSelect from 'react-select/creatable'\n\nimport type { Option, ReactSelectAdapterProps } from './types.js'\nexport type { Option } from './types.js'\n\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { DraggableSortable } from '../DraggableSortable/index.js'\nimport { ShimmerEffect } from '../ShimmerEffect/index.js'\nimport { ClearIndicator } from './ClearIndicator/index.js'\nimport { Control } from './Control/index.js'\nimport { DropdownIndicator } from './DropdownIndicator/index.js'\nimport './index.scss'\nimport { Input } from './Input/index.js'\nimport { generateMultiValueDraggableID, MultiValue } from './MultiValue/index.js'\nimport { MultiValueLabel } from './MultiValueLabel/index.js'\nimport { MultiValueRemove } from './MultiValueRemove/index.js'\nimport { SingleValue } from './SingleValue/index.js'\nimport { ValueContainer } from './ValueContainer/index.js'\n\nconst createOption = (label: string) => ({\n label,\n value: label,\n})\n\nconst SelectAdapter: React.FC<ReactSelectAdapterProps> = (props) => {\n const { i18n, t } = useTranslation()\n const [inputValue, setInputValue] = React.useState('') // for creatable select\n const uuid = useId()\n const [hasMounted, setHasMounted] = React.useState(false)\n\n useEffect(() => {\n setHasMounted(true)\n }, [])\n\n const {\n className,\n components,\n customProps,\n disabled = false,\n filterOption = undefined,\n getOptionValue,\n isClearable = true,\n isCreatable,\n isLoading,\n isSearchable = true,\n noOptionsMessage = () => t('general:noOptions'),\n numberOnly = false,\n onChange,\n onMenuClose,\n onMenuOpen,\n options,\n placeholder = t('general:selectValue'),\n showError,\n value,\n } = props\n\n const loadingMessage = () => t('general:loading') + '...'\n\n const classes = [className, 'react-select', showError && 'react-select--error']\n .filter(Boolean)\n .join(' ')\n\n if (!hasMounted) {\n return <ShimmerEffect height=\"calc(var(--base) * 2 + 2px)\" />\n }\n\n if (!isCreatable) {\n return (\n <Select\n captureMenuScroll\n customProps={customProps}\n isLoading={isLoading}\n placeholder={getTranslation(placeholder, i18n)}\n {...props}\n className={classes}\n classNamePrefix=\"rs\"\n components={{\n ClearIndicator,\n Control,\n DropdownIndicator,\n Input,\n MultiValue,\n MultiValueLabel,\n MultiValueRemove,\n SingleValue,\n ValueContainer,\n ...components,\n }}\n filterOption={filterOption}\n getOptionValue={getOptionValue}\n instanceId={uuid}\n isClearable={isClearable}\n isDisabled={disabled}\n isSearchable={isSearchable}\n loadingMessage={loadingMessage}\n menuPlacement=\"auto\"\n noOptionsMessage={noOptionsMessage}\n onChange={onChange}\n onMenuClose={onMenuClose}\n onMenuOpen={onMenuOpen}\n options={options}\n unstyled={true}\n value={value}\n />\n )\n }\n const handleKeyDown: KeyboardEventHandler = (event) => {\n if (numberOnly === true) {\n const acceptableKeys = [\n 'Tab',\n 'Escape',\n 'Backspace',\n 'Enter',\n 'ArrowRight',\n 'ArrowLeft',\n 'ArrowUp',\n 'ArrowDown',\n ]\n const isNumber = !/\\D/.test(event.key)\n const isActionKey = acceptableKeys.includes(event.key)\n if (!isNumber && !isActionKey) {\n event.preventDefault()\n return\n }\n }\n if (!value || !inputValue || inputValue.trim() === '') {\n return\n }\n if (filterOption && !filterOption(null, inputValue)) {\n return\n }\n switch (event.key) {\n case 'Enter':\n case 'Tab':\n onChange([...(value as Option[]), createOption(inputValue)])\n setInputValue('')\n event.preventDefault()\n break\n default:\n break\n }\n }\n\n return (\n <CreatableSelect\n captureMenuScroll\n isLoading={isLoading}\n placeholder={getTranslation(placeholder, i18n)}\n {...props}\n className={classes}\n classNamePrefix=\"rs\"\n components={{\n ClearIndicator,\n Control,\n DropdownIndicator,\n Input,\n MultiValue,\n MultiValueLabel,\n MultiValueRemove,\n SingleValue,\n ValueContainer,\n ...components,\n }}\n filterOption={filterOption}\n inputValue={inputValue}\n instanceId={uuid}\n isClearable={isClearable}\n isDisabled={disabled}\n isSearchable={isSearchable}\n loadingMessage={loadingMessage}\n menuPlacement=\"auto\"\n noOptionsMessage={noOptionsMessage}\n onChange={onChange}\n onInputChange={(newValue) => setInputValue(newValue)}\n onKeyDown={handleKeyDown}\n onMenuClose={onMenuClose}\n onMenuOpen={onMenuOpen}\n options={options}\n unstyled={true}\n value={value}\n />\n )\n}\n\nconst SortableSelect: React.FC<ReactSelectAdapterProps> = (props) => {\n const { getOptionValue, onChange, value } = props\n\n let draggableIDs: string[] = []\n if (value) {\n draggableIDs = (Array.isArray(value) ? value : [value]).map((optionValue) => {\n return generateMultiValueDraggableID(optionValue, getOptionValue)\n })\n }\n\n return (\n <DraggableSortable\n className=\"react-select-container\"\n ids={draggableIDs}\n onDragEnd={({ moveFromIndex, moveToIndex }) => {\n let sorted = value\n if (value && Array.isArray(value)) {\n sorted = arrayMove(value, moveFromIndex, moveToIndex)\n }\n onChange(sorted)\n }}\n >\n <SelectAdapter {...props} />\n </DraggableSortable>\n )\n}\n\nexport const ReactSelect: React.FC<ReactSelectAdapterProps> = (props) => {\n const { isMulti, isSortable } = props\n\n if (isMulti && isSortable) {\n return <SortableSelect {...props} />\n }\n\n return <SelectAdapter {...props} />\n}\n"],"mappings":"AAAA;;;AAGA,SAASA,SAAS,QAAQ;AAC1B,SAASC,cAAc,QAAQ;AAC/B,OAAOC,KAAA,IAASC,SAAS,EAAEC,KAAK,QAAQ;AACxC,OAAOC,MAAA,MAAY;AACnB,OAAOC,eAAA,MAAqB;AAK5B,SAASC,cAAc,QAAQ;AAC/B,SAASC,iBAAiB,QAAQ;AAClC,SAASC,aAAa,QAAQ;AAC9B,SAASC,cAAc,QAAQ;AAC/B,SAASC,OAAO,QAAQ;AACxB,SAASC,iBAAiB,QAAQ;AAClC,OAAO;AACP,SAASC,KAAK,QAAQ;AACtB,SAASC,6BAA6B,EAAEC,UAAU,QAAQ;AAC1D,SAASC,eAAe,QAAQ;AAChC,SAASC,gBAAgB,QAAQ;AACjC,SAASC,WAAW,QAAQ;AAC5B,SAASC,cAAc,QAAQ;AAE/B,MAAMC,YAAA,GAAgBC,KAAA,KAAmB;EACvCA,KAAA;EACAC,KAAA,EAAOD;AACT;AAEA,MAAME,aAAA,GAAoDC,KAAA;EACxD,MAAM;IAAEC,IAAI;IAAEC;EAAC,CAAE,GAAGnB,cAAA;EACpB,MAAM,CAACoB,UAAA,EAAYC,aAAA,CAAc,GAAG1B,KAAA,CAAM2B,QAAQ,CAAC,IAAI;EAAA;EACvD,MAAMC,IAAA,GAAO1B,KAAA;EACb,MAAM,CAAC2B,UAAA,EAAYC,aAAA,CAAc,GAAG9B,KAAA,CAAM2B,QAAQ,CAAC;EAEnD1B,SAAA,CAAU;IACR6B,aAAA,CAAc;EAChB,GAAG,EAAE;EAEL,MAAM;IACJC,SAAS;IACTC,UAAU;IACVC,WAAW;IACXC,QAAA,GAAW,KAAK;IAChBC,YAAA,GAAeC,SAAS;IACxBC,cAAc;IACdC,WAAA,GAAc,IAAI;IAClBC,WAAW;IACXC,SAAS;IACTC,YAAA,GAAe,IAAI;IACnBC,gBAAA,GAAmBA,CAAA,KAAMlB,CAAA,CAAE,oBAAoB;IAC/CmB,UAAA,GAAa,KAAK;IAClBC,QAAQ;IACRC,WAAW;IACXC,UAAU;IACVC,OAAO;IACPC,WAAA,GAAcxB,CAAA,CAAE,sBAAsB;IACtCyB,SAAS;IACT7B;EAAK,CACN,GAAGE,KAAA;EAEJ,MAAM4B,cAAA,GAAiBA,CAAA,KAAM1B,CAAA,CAAE,qBAAqB;EAEpD,MAAM2B,OAAA,GAAU,CAACpB,SAAA,EAAW,gBAAgBkB,SAAA,IAAa,sBAAsB,CAC5EG,MAAM,CAACC,OAAA,EACPC,IAAI,CAAC;EAER,IAAI,CAACzB,UAAA,EAAY;IACf,oBAAO0B,IAAA,CAAChD,aAAA;MAAciD,MAAA,EAAO;;EAC/B;EAEA,IAAI,CAACjB,WAAA,EAAa;IAChB,oBACEgB,IAAA,CAACpD,MAAA;MACCsD,iBAAiB;MACjBxB,WAAA,EAAaA,WAAA;MACbO,SAAA,EAAWA,SAAA;MACXQ,WAAA,EAAajD,cAAA,CAAeiD,WAAA,EAAazB,IAAA;MACxC,GAAGD,KAAK;MACTS,SAAA,EAAWoB,OAAA;MACXO,eAAA,EAAgB;MAChB1B,UAAA,EAAY;QACVxB,cAAA;QACAC,OAAA;QACAC,iBAAA;QACAC,KAAA;QACAE,UAAA;QACAC,eAAA;QACAC,gBAAA;QACAC,WAAA;QACAC,cAAA;QACA,GAAGe;MACL;MACAG,YAAA,EAAcA,YAAA;MACdE,cAAA,EAAgBA,cAAA;MAChBsB,UAAA,EAAY/B,IAAA;MACZU,WAAA,EAAaA,WAAA;MACbsB,UAAA,EAAY1B,QAAA;MACZO,YAAA,EAAcA,YAAA;MACdS,cAAA,EAAgBA,cAAA;MAChBW,aAAA,EAAc;MACdnB,gBAAA,EAAkBA,gBAAA;MAClBE,QAAA,EAAUA,QAAA;MACVC,WAAA,EAAaA,WAAA;MACbC,UAAA,EAAYA,UAAA;MACZC,OAAA,EAASA,OAAA;MACTe,QAAA,EAAU;MACV1C,KAAA,EAAOA;;EAGb;EACA,MAAM2C,aAAA,GAAuCC,KAAA;IAC3C,IAAIrB,UAAA,KAAe,MAAM;MACvB,MAAMsB,cAAA,GAAiB,CACrB,OACA,UACA,aACA,SACA,cACA,aACA,WACA,YACD;MACD,MAAMC,QAAA,GAAW,CAAC,KAAKC,IAAI,CAACH,KAAA,CAAMI,GAAG;MACrC,MAAMC,WAAA,GAAcJ,cAAA,CAAeK,QAAQ,CAACN,KAAA,CAAMI,GAAG;MACrD,IAAI,CAACF,QAAA,IAAY,CAACG,WAAA,EAAa;QAC7BL,KAAA,CAAMO,cAAc;QACpB;MACF;IACF;IACA,IAAI,CAACnD,KAAA,IAAS,CAACK,UAAA,IAAcA,UAAA,CAAW+C,IAAI,OAAO,IAAI;MACrD;IACF;IACA,IAAIrC,YAAA,IAAgB,CAACA,YAAA,CAAa,MAAMV,UAAA,GAAa;MACnD;IACF;IACA,QAAQuC,KAAA,CAAMI,GAAG;MACf,KAAK;MACL,KAAK;QACHxB,QAAA,CAAS,C,GAAKxB,KAAA,EAAoBF,YAAA,CAAaO,UAAA,EAAY;QAC3DC,aAAA,CAAc;QACdsC,KAAA,CAAMO,cAAc;QACpB;MACF;QACE;IACJ;EACF;EAEA,oBACEhB,IAAA,CAACnD,eAAA;IACCqD,iBAAiB;IACjBjB,SAAA,EAAWA,SAAA;IACXQ,WAAA,EAAajD,cAAA,CAAeiD,WAAA,EAAazB,IAAA;IACxC,GAAGD,KAAK;IACTS,SAAA,EAAWoB,OAAA;IACXO,eAAA,EAAgB;IAChB1B,UAAA,EAAY;MACVxB,cAAA;MACAC,OAAA;MACAC,iBAAA;MACAC,KAAA;MACAE,UAAA;MACAC,eAAA;MACAC,gBAAA;MACAC,WAAA;MACAC,cAAA;MACA,GAAGe;IACL;IACAG,YAAA,EAAcA,YAAA;IACdV,UAAA,EAAYA,UAAA;IACZkC,UAAA,EAAY/B,IAAA;IACZU,WAAA,EAAaA,WAAA;IACbsB,UAAA,EAAY1B,QAAA;IACZO,YAAA,EAAcA,YAAA;IACdS,cAAA,EAAgBA,cAAA;IAChBW,aAAA,EAAc;IACdnB,gBAAA,EAAkBA,gBAAA;IAClBE,QAAA,EAAUA,QAAA;IACV6B,aAAA,EAAgBC,QAAA,IAAahD,aAAA,CAAcgD,QAAA;IAC3CC,SAAA,EAAWZ,aAAA;IACXlB,WAAA,EAAaA,WAAA;IACbC,UAAA,EAAYA,UAAA;IACZC,OAAA,EAASA,OAAA;IACTe,QAAA,EAAU;IACV1C,KAAA,EAAOA;;AAGb;AAEA,MAAMwD,cAAA,GAAqDtD,KAAA;EACzD,MAAM;IAAEe,cAAc;IAAEO,QAAQ;IAAExB;EAAK,CAAE,GAAGE,KAAA;EAE5C,IAAIuD,YAAA,GAAyB,EAAE;EAC/B,IAAIzD,KAAA,EAAO;IACTyD,YAAA,GAAe,CAACC,KAAA,CAAMC,OAAO,CAAC3D,KAAA,IAASA,KAAA,GAAQ,CAACA,KAAA,CAAM,EAAE4D,GAAG,CAAEC,WAAA;MAC3D,OAAOrE,6BAAA,CAA8BqE,WAAA,EAAa5C,cAAA;IACpD;EACF;EAEA,oBACEkB,IAAA,CAACjD,iBAAA;IACCyB,SAAA,EAAU;IACVmD,GAAA,EAAKL,YAAA;IACLM,SAAA,EAAWA,CAAC;MAAEC,aAAa;MAAEC;IAAW,CAAE;MACxC,IAAIC,MAAA,GAASlE,KAAA;MACb,IAAIA,KAAA,IAAS0D,KAAA,CAAMC,OAAO,CAAC3D,KAAA,GAAQ;QACjCkE,MAAA,GAASxF,SAAA,CAAUsB,KAAA,EAAOgE,aAAA,EAAeC,WAAA;MAC3C;MACAzC,QAAA,CAAS0C,MAAA;IACX;cAEA,aAAA/B,IAAA,CAAClC,aAAA;MAAe,GAAGC;;;AAGzB;AAEA,OAAO,MAAMiE,WAAA,GAAkDjE,KAAA;EAC7D,MAAM;IAAEkE,OAAO;IAAEC;EAAU,CAAE,GAAGnE,KAAA;EAEhC,IAAIkE,OAAA,IAAWC,UAAA,EAAY;IACzB,oBAAOlC,IAAA,CAACqB,cAAA;MAAgB,GAAGtD;;EAC7B;EAEA,oBAAOiC,IAAA,CAAClC,aAAA;IAAe,GAAGC;;AAC5B","ignoreList":[]}
@@ -8,10 +8,15 @@
8
8
  .react-select {
9
9
  .rs__control {
10
10
  @include formInput;
11
- padding: base(0.4) base(0.6);
11
+ height: auto;
12
+ padding: base(0.35) base(0.6);
12
13
  flex-wrap: nowrap;
13
14
  }
14
15
 
16
+ .rs__menu-notice {
17
+ padding: base(0.5) base(0.6);
18
+ }
19
+
15
20
  .rs__indicators {
16
21
  gap: calc(var(--base) / 4);
17
22
  }
@@ -144,9 +144,9 @@ export const DefaultCell = props => {
144
144
  } else {
145
145
  t6 = _jsxs(WrapElement, {
146
146
  ...wrapElementProps,
147
- children: [(cellData === "" || typeof cellData === "undefined") && i18n.t("general:noLabel", {
147
+ children: [(cellData === "" || typeof cellData === "undefined" || cellData === null) && i18n.t("general:noLabel", {
148
148
  label: getTranslation(("label" in field ? field.label : null) || "data", i18n)
149
- }), typeof cellData === "string" && cellData, typeof cellData === "number" && cellData, typeof cellData === "object" && JSON.stringify(cellData)]
149
+ }), typeof cellData === "string" && cellData, typeof cellData === "number" && cellData, typeof cellData === "object" && cellData !== null && JSON.stringify(cellData)]
150
150
  });
151
151
  break bb0;
152
152
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["c","_c","LinkImport","React","getTranslation","fieldAffectsData","useConfig","useTranslation","formatAdminURL","useTableCell","CodeCell","cellComponents","Link","default","DefaultCell","props","$","className","classNameFromProps","field","onClick","onClickFromProps","i18n","config","t0","routes","t1","admin","adminRoute","cellContext","t2","cellData","cellProps","columnIndex","customCellContext","rowData","t3","classNameFromContext","t4","link","onClickFromContext","classNameFromConfigContext","undefined","WrapElement","t5","t6","Symbol","for","wrapElementProps","isLink","href","collectionSlug","path","id","type","t7","name","_jsx","children","_schemaPath","nowrap","DefaultCellComponent","CellComponent","uploadConfig","FileCellComponent","File","_jsxs","t","label","JSON","stringify"],"sources":["../../../../src/elements/Table/DefaultCell/index.tsx"],"sourcesContent":["'use client'\nimport LinkImport from 'next/link.js'\nimport React from 'react' // TODO: abstract this out to support all routers\n\nimport type {\n CellComponentProps,\n CodeFieldClient,\n DefaultCellComponentProps,\n UploadFieldClient,\n} from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport { fieldAffectsData } from 'payload/shared'\n\nimport { useConfig } from '../../../providers/Config/index.js'\nimport { useTranslation } from '../../../providers/Translation/index.js'\nimport { formatAdminURL } from '../../../utilities/formatAdminURL.js'\nimport { useTableCell } from '../TableCellProvider/index.js'\nimport { CodeCell } from './fields/Code/index.js'\nimport { cellComponents } from './fields/index.js'\n\nconst Link = (LinkImport.default || LinkImport) as unknown as typeof LinkImport.default\n\nexport const DefaultCell: React.FC<CellComponentProps> = (props) => {\n const { className: classNameFromProps, field, onClick: onClickFromProps } = props\n\n const { i18n } = useTranslation()\n\n const {\n config: {\n routes: { admin: adminRoute },\n },\n } = useConfig()\n\n const cellContext = useTableCell()\n\n const { cellData, cellProps, columnIndex, customCellContext, rowData } = cellContext || {}\n\n const {\n className: classNameFromContext,\n field: { admin },\n link,\n onClick: onClickFromContext,\n } = cellProps || {}\n\n const classNameFromConfigContext = admin && 'className' in admin ? admin.className : undefined\n\n const className =\n classNameFromProps ||\n (field.admin && 'className' in field.admin ? field.admin.className : null) ||\n classNameFromContext ||\n classNameFromConfigContext\n\n const onClick = onClickFromProps || onClickFromContext\n\n let WrapElement: React.ComponentType<any> | string = 'span'\n\n const wrapElementProps: {\n className?: string\n href?: string\n onClick?: () => void\n type?: 'button'\n } = {\n className,\n }\n\n const isLink = link !== undefined ? link : columnIndex === 0\n\n if (isLink) {\n WrapElement = Link\n wrapElementProps.href = customCellContext?.collectionSlug\n ? formatAdminURL({\n adminRoute,\n path: `/collections/${customCellContext?.collectionSlug}/${rowData.id}`,\n })\n : ''\n }\n\n if (typeof onClick === 'function') {\n WrapElement = 'button'\n wrapElementProps.type = 'button'\n wrapElementProps.onClick = () => {\n onClick({\n cellData,\n collectionSlug: customCellContext?.collectionSlug,\n rowData,\n })\n }\n }\n\n if ('name' in field && field.name === 'id') {\n return (\n <WrapElement {...wrapElementProps}>\n <CodeCell\n cellData={`ID: ${cellData}`}\n field={{\n ...(field as CodeFieldClient),\n _schemaPath: cellContext?.cellProps?.field?._schemaPath,\n }}\n nowrap\n rowData={rowData}\n />\n </WrapElement>\n )\n }\n\n const DefaultCellComponent: React.FC<DefaultCellComponentProps> =\n typeof cellData !== 'undefined' && cellComponents[field.type]\n\n let CellComponent: React.ReactNode = null\n\n if (DefaultCellComponent) {\n CellComponent = (\n <DefaultCellComponent\n cellData={cellData}\n customCellContext={customCellContext}\n rowData={rowData}\n {...props}\n />\n )\n } else if (!DefaultCellComponent) {\n // DefaultCellComponent does not exist for certain field types like `text`\n if (customCellContext.uploadConfig && fieldAffectsData(field) && field.name === 'filename') {\n const FileCellComponent = cellComponents.File\n CellComponent = (\n <FileCellComponent\n cellData={cellData}\n customCellContext={customCellContext}\n rowData={rowData}\n {...(props as CellComponentProps<UploadFieldClient>)}\n />\n )\n } else {\n return (\n <WrapElement {...wrapElementProps}>\n {(cellData === '' || typeof cellData === 'undefined') &&\n i18n.t('general:noLabel', {\n label: getTranslation(('label' in field ? field.label : null) || 'data', i18n),\n })}\n {typeof cellData === 'string' && cellData}\n {typeof cellData === 'number' && cellData}\n {typeof cellData === 'object' && JSON.stringify(cellData)}\n </WrapElement>\n )\n }\n }\n\n return <WrapElement {...wrapElementProps}>{CellComponent}</WrapElement>\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["c","_c","LinkImport","React","getTranslation","fieldAffectsData","useConfig","useTranslation","formatAdminURL","useTableCell","CodeCell","cellComponents","Link","default","DefaultCell","props","$","className","classNameFromProps","field","onClick","onClickFromProps","i18n","config","t0","routes","t1","admin","adminRoute","cellContext","t2","cellData","cellProps","columnIndex","customCellContext","rowData","t3","classNameFromContext","t4","link","onClickFromContext","classNameFromConfigContext","undefined","WrapElement","t5","t6","Symbol","for","wrapElementProps","isLink","href","collectionSlug","path","id","type","t7","name","_jsx","children","_schemaPath","nowrap","DefaultCellComponent","CellComponent","uploadConfig","FileCellComponent","File","_jsxs","t","label","JSON","stringify"],"sources":["../../../../src/elements/Table/DefaultCell/index.tsx"],"sourcesContent":["'use client'\nimport LinkImport from 'next/link.js'\nimport React from 'react' // TODO: abstract this out to support all routers\n\nimport type {\n CellComponentProps,\n CodeFieldClient,\n DefaultCellComponentProps,\n UploadFieldClient,\n} from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport { fieldAffectsData } from 'payload/shared'\n\nimport { useConfig } from '../../../providers/Config/index.js'\nimport { useTranslation } from '../../../providers/Translation/index.js'\nimport { formatAdminURL } from '../../../utilities/formatAdminURL.js'\nimport { useTableCell } from '../TableCellProvider/index.js'\nimport { CodeCell } from './fields/Code/index.js'\nimport { cellComponents } from './fields/index.js'\n\nconst Link = (LinkImport.default || LinkImport) as unknown as typeof LinkImport.default\n\nexport const DefaultCell: React.FC<CellComponentProps> = (props) => {\n const { className: classNameFromProps, field, onClick: onClickFromProps } = props\n\n const { i18n } = useTranslation()\n\n const {\n config: {\n routes: { admin: adminRoute },\n },\n } = useConfig()\n\n const cellContext = useTableCell()\n\n const { cellData, cellProps, columnIndex, customCellContext, rowData } = cellContext || {}\n\n const {\n className: classNameFromContext,\n field: { admin },\n link,\n onClick: onClickFromContext,\n } = cellProps || {}\n\n const classNameFromConfigContext = admin && 'className' in admin ? admin.className : undefined\n\n const className =\n classNameFromProps ||\n (field.admin && 'className' in field.admin ? field.admin.className : null) ||\n classNameFromContext ||\n classNameFromConfigContext\n\n const onClick = onClickFromProps || onClickFromContext\n\n let WrapElement: React.ComponentType<any> | string = 'span'\n\n const wrapElementProps: {\n className?: string\n href?: string\n onClick?: () => void\n type?: 'button'\n } = {\n className,\n }\n\n const isLink = link !== undefined ? link : columnIndex === 0\n\n if (isLink) {\n WrapElement = Link\n wrapElementProps.href = customCellContext?.collectionSlug\n ? formatAdminURL({\n adminRoute,\n path: `/collections/${customCellContext?.collectionSlug}/${rowData.id}`,\n })\n : ''\n }\n\n if (typeof onClick === 'function') {\n WrapElement = 'button'\n wrapElementProps.type = 'button'\n wrapElementProps.onClick = () => {\n onClick({\n cellData,\n collectionSlug: customCellContext?.collectionSlug,\n rowData,\n })\n }\n }\n\n if ('name' in field && field.name === 'id') {\n return (\n <WrapElement {...wrapElementProps}>\n <CodeCell\n cellData={`ID: ${cellData}`}\n field={{\n ...(field as CodeFieldClient),\n _schemaPath: cellContext?.cellProps?.field?._schemaPath,\n }}\n nowrap\n rowData={rowData}\n />\n </WrapElement>\n )\n }\n\n const DefaultCellComponent: React.FC<DefaultCellComponentProps> =\n typeof cellData !== 'undefined' && cellComponents[field.type]\n\n let CellComponent: React.ReactNode = null\n\n if (DefaultCellComponent) {\n CellComponent = (\n <DefaultCellComponent\n cellData={cellData}\n customCellContext={customCellContext}\n rowData={rowData}\n {...props}\n />\n )\n } else if (!DefaultCellComponent) {\n // DefaultCellComponent does not exist for certain field types like `text`\n if (customCellContext.uploadConfig && fieldAffectsData(field) && field.name === 'filename') {\n const FileCellComponent = cellComponents.File\n CellComponent = (\n <FileCellComponent\n cellData={cellData}\n customCellContext={customCellContext}\n rowData={rowData}\n {...(props as CellComponentProps<UploadFieldClient>)}\n />\n )\n } else {\n return (\n <WrapElement {...wrapElementProps}>\n {(cellData === '' || typeof cellData === 'undefined' || cellData === null) &&\n i18n.t('general:noLabel', {\n label: getTranslation(('label' in field ? field.label : null) || 'data', i18n),\n })}\n {typeof cellData === 'string' && cellData}\n {typeof cellData === 'number' && cellData}\n {typeof cellData === 'object' && cellData !== null && JSON.stringify(cellData)}\n </WrapElement>\n )\n }\n }\n\n return <WrapElement {...wrapElementProps}>{CellComponent}</WrapElement>\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/UnpublishMany/index.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAgC,MAAM,OAAO,CAAA;AAWpD,OAAO,cAAc,CAAA;AAIrB,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,SAAS,CAAA;AAIrD,MAAM,MAAM,kBAAkB,GAAG;IAC/B,UAAU,EAAE,sBAAsB,CAAA;CACnC,CAAA;AAED,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CA8HtD,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/UnpublishMany/index.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAgC,MAAM,OAAO,CAAA;AAWpD,OAAO,cAAc,CAAA;AAIrB,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,SAAS,CAAA;AAIrD,MAAM,MAAM,kBAAkB,GAAG;IAC/B,UAAU,EAAE,sBAAsB,CAAA;CACnC,CAAA;AAED,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CA8ItD,CAAA"}
@@ -22,7 +22,8 @@ export const UnpublishMany = props => {
22
22
  collection: {
23
23
  slug,
24
24
  labels: {
25
- plural
25
+ plural,
26
+ singular
26
27
  },
27
28
  versions
28
29
  } = {}
@@ -81,8 +82,18 @@ export const UnpublishMany = props => {
81
82
  try {
82
83
  const json = await res.json();
83
84
  toggleModal(modalSlug);
84
- if (res.status < 400) {
85
- toast.success(t('general:updatedSuccessfully'));
85
+ const deletedDocs = json?.docs.length || 0;
86
+ const successLabel = deletedDocs > 1 ? plural : singular;
87
+ if (res.status < 400 || deletedDocs > 0) {
88
+ toast.success(t('general:updatedCountSuccessfully', {
89
+ count: deletedDocs,
90
+ label: getTranslation(successLabel, i18n)
91
+ }));
92
+ if (json?.errors.length > 0) {
93
+ toast.error(json.message, {
94
+ description: json.errors.map(error => error.message).join('\n')
95
+ });
96
+ }
86
97
  router.replace(stringifyParams({
87
98
  params: {
88
99
  page: selectAll ? '1' : undefined
@@ -93,7 +104,7 @@ export const UnpublishMany = props => {
93
104
  return null;
94
105
  }
95
106
  if (json.errors) {
96
- json.errors.forEach(error => toast.error(error.message));
107
+ json.errors.forEach(error_0 => toast.error(error_0.message));
97
108
  } else {
98
109
  addDefaultError();
99
110
  }
@@ -102,7 +113,7 @@ export const UnpublishMany = props => {
102
113
  return addDefaultError();
103
114
  }
104
115
  });
105
- }, [addDefaultError, api, getQueryParams, i18n.language, modalSlug, selectAll, serverURL, slug, t, toggleModal, router, clearRouteCache, stringifyParams]);
116
+ }, [addDefaultError, api, getQueryParams, i18n, modalSlug, plural, selectAll, serverURL, singular, slug, t, toggleModal, router, clearRouteCache, stringifyParams]);
106
117
  if (!versions?.drafts || selectAll === SelectAllStatus.None || !hasPermission) {
107
118
  return null;
108
119
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["Modal","useModal","getTranslation","useRouter","React","useCallback","useState","useAuth","useConfig","useRouteCache","useSearchParams","SelectAllStatus","useSelection","useTranslation","requests","Button","Pill","baseClass","toast","UnpublishMany","props","collection","slug","labels","plural","versions","config","routes","api","serverURL","permissions","toggleModal","i18n","t","getQueryParams","selectAll","submitted","setSubmitted","stringifyParams","router","clearRouteCache","collectionPermissions","collections","hasPermission","update","permission","modalSlug","addDefaultError","error","handleUnpublish","patch","_status","not_equals","body","JSON","stringify","headers","language","then","res","json","status","success","replace","params","page","undefined","errors","forEach","message","e","drafts","None","_jsxs","Fragment","_jsx","className","onClick","label","buttonStyle","id","size","type"],"sources":["../../../src/elements/UnpublishMany/index.tsx"],"sourcesContent":["'use client'\nimport { Modal, useModal } from '@faceless-ui/modal'\nimport { getTranslation } from '@payloadcms/translations'\nimport { useRouter } from 'next/navigation.js'\nimport React, { useCallback, useState } from 'react'\n\nimport { useAuth } from '../../providers/Auth/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useRouteCache } from '../../providers/RouteCache/index.js'\nimport { useSearchParams } from '../../providers/SearchParams/index.js'\nimport { SelectAllStatus, useSelection } from '../../providers/Selection/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { requests } from '../../utilities/api.js'\nimport { Button } from '../Button/index.js'\nimport { Pill } from '../Pill/index.js'\nimport './index.scss'\n\nconst baseClass = 'unpublish-many'\n\nimport type { ClientCollectionConfig } from 'payload'\n\nimport { toast } from 'sonner'\n\nexport type UnpublishManyProps = {\n collection: ClientCollectionConfig\n}\n\nexport const UnpublishMany: React.FC<UnpublishManyProps> = (props) => {\n const { collection: { slug, labels: { plural }, versions } = {} } = props\n\n const {\n config: {\n routes: { api },\n serverURL,\n },\n } = useConfig()\n\n const { permissions } = useAuth()\n const { toggleModal } = useModal()\n const { i18n, t } = useTranslation()\n const { getQueryParams, selectAll } = useSelection()\n const [submitted, setSubmitted] = useState(false)\n const { stringifyParams } = useSearchParams()\n const router = useRouter()\n const { clearRouteCache } = useRouteCache()\n\n const collectionPermissions = permissions?.collections?.[slug]\n const hasPermission = collectionPermissions?.update?.permission\n\n const modalSlug = `unpublish-${slug}`\n\n const addDefaultError = useCallback(() => {\n toast.error(t('error:unknown'))\n }, [t])\n\n const handleUnpublish = useCallback(async () => {\n setSubmitted(true)\n await requests\n .patch(`${serverURL}${api}/${slug}${getQueryParams({ _status: { not_equals: 'draft' } })}`, {\n body: JSON.stringify({\n _status: 'draft',\n }),\n headers: {\n 'Accept-Language': i18n.language,\n 'Content-Type': 'application/json',\n },\n })\n .then(async (res) => {\n try {\n const json = await res.json()\n toggleModal(modalSlug)\n if (res.status < 400) {\n toast.success(t('general:updatedSuccessfully'))\n router.replace(\n stringifyParams({\n params: {\n page: selectAll ? '1' : undefined,\n },\n }),\n )\n clearRouteCache() // Use clearRouteCache instead of router.refresh, as we only need to clear the cache if the user has route caching enabled - clearRouteCache checks for this\n return null\n }\n\n if (json.errors) {\n json.errors.forEach((error) => toast.error(error.message))\n } else {\n addDefaultError()\n }\n return false\n } catch (e) {\n return addDefaultError()\n }\n })\n }, [\n addDefaultError,\n api,\n getQueryParams,\n i18n.language,\n modalSlug,\n selectAll,\n serverURL,\n slug,\n t,\n toggleModal,\n router,\n clearRouteCache,\n stringifyParams,\n ])\n\n if (!versions?.drafts || selectAll === SelectAllStatus.None || !hasPermission) {\n return null\n }\n\n return (\n <React.Fragment>\n <Pill\n className={`${baseClass}__toggle`}\n onClick={() => {\n setSubmitted(false)\n toggleModal(modalSlug)\n }}\n >\n {t('version:unpublish')}\n </Pill>\n <Modal className={baseClass} slug={modalSlug}>\n <div className={`${baseClass}__wrapper`}>\n <div className={`${baseClass}__content`}>\n <h1>{t('version:confirmUnpublish')}</h1>\n <p>{t('version:aboutToUnpublishSelection', { label: getTranslation(plural, i18n) })}</p>\n </div>\n <div className={`${baseClass}__controls`}>\n <Button\n buttonStyle=\"secondary\"\n id=\"confirm-cancel\"\n onClick={submitted ? undefined : () => toggleModal(modalSlug)}\n size=\"large\"\n type=\"button\"\n >\n {t('general:cancel')}\n </Button>\n <Button\n id=\"confirm-unpublish\"\n onClick={submitted ? undefined : handleUnpublish}\n size=\"large\"\n >\n {submitted ? t('version:unpublishing') : t('general:confirm')}\n </Button>\n </div>\n </div>\n </Modal>\n </React.Fragment>\n )\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["Modal","useModal","getTranslation","useRouter","React","useCallback","useState","useAuth","useConfig","useRouteCache","useSearchParams","SelectAllStatus","useSelection","useTranslation","requests","Button","Pill","baseClass","toast","UnpublishMany","props","collection","slug","labels","plural","singular","versions","config","routes","api","serverURL","permissions","toggleModal","i18n","t","getQueryParams","selectAll","submitted","setSubmitted","stringifyParams","router","clearRouteCache","collectionPermissions","collections","hasPermission","update","permission","modalSlug","addDefaultError","error","handleUnpublish","patch","_status","not_equals","body","JSON","stringify","headers","language","then","res","json","deletedDocs","docs","length","successLabel","status","success","count","label","errors","message","description","map","join","replace","params","page","undefined","forEach","e","drafts","None","_jsxs","Fragment","_jsx","className","onClick","buttonStyle","id","size","type"],"sources":["../../../src/elements/UnpublishMany/index.tsx"],"sourcesContent":["'use client'\nimport { Modal, useModal } from '@faceless-ui/modal'\nimport { getTranslation } from '@payloadcms/translations'\nimport { useRouter } from 'next/navigation.js'\nimport React, { useCallback, useState } from 'react'\n\nimport { useAuth } from '../../providers/Auth/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useRouteCache } from '../../providers/RouteCache/index.js'\nimport { useSearchParams } from '../../providers/SearchParams/index.js'\nimport { SelectAllStatus, useSelection } from '../../providers/Selection/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { requests } from '../../utilities/api.js'\nimport { Button } from '../Button/index.js'\nimport { Pill } from '../Pill/index.js'\nimport './index.scss'\n\nconst baseClass = 'unpublish-many'\n\nimport type { ClientCollectionConfig } from 'payload'\n\nimport { toast } from 'sonner'\n\nexport type UnpublishManyProps = {\n collection: ClientCollectionConfig\n}\n\nexport const UnpublishMany: React.FC<UnpublishManyProps> = (props) => {\n const { collection: { slug, labels: { plural, singular }, versions } = {} } = props\n\n const {\n config: {\n routes: { api },\n serverURL,\n },\n } = useConfig()\n\n const { permissions } = useAuth()\n const { toggleModal } = useModal()\n const { i18n, t } = useTranslation()\n const { getQueryParams, selectAll } = useSelection()\n const [submitted, setSubmitted] = useState(false)\n const { stringifyParams } = useSearchParams()\n const router = useRouter()\n const { clearRouteCache } = useRouteCache()\n\n const collectionPermissions = permissions?.collections?.[slug]\n const hasPermission = collectionPermissions?.update?.permission\n\n const modalSlug = `unpublish-${slug}`\n\n const addDefaultError = useCallback(() => {\n toast.error(t('error:unknown'))\n }, [t])\n\n const handleUnpublish = useCallback(async () => {\n setSubmitted(true)\n await requests\n .patch(`${serverURL}${api}/${slug}${getQueryParams({ _status: { not_equals: 'draft' } })}`, {\n body: JSON.stringify({\n _status: 'draft',\n }),\n headers: {\n 'Accept-Language': i18n.language,\n 'Content-Type': 'application/json',\n },\n })\n .then(async (res) => {\n try {\n const json = await res.json()\n toggleModal(modalSlug)\n\n const deletedDocs = json?.docs.length || 0\n const successLabel = deletedDocs > 1 ? plural : singular\n\n if (res.status < 400 || deletedDocs > 0) {\n toast.success(\n t('general:updatedCountSuccessfully', {\n count: deletedDocs,\n label: getTranslation(successLabel, i18n),\n }),\n )\n if (json?.errors.length > 0) {\n toast.error(json.message, {\n description: json.errors.map((error) => error.message).join('\\n'),\n })\n }\n router.replace(\n stringifyParams({\n params: {\n page: selectAll ? '1' : undefined,\n },\n }),\n )\n clearRouteCache() // Use clearRouteCache instead of router.refresh, as we only need to clear the cache if the user has route caching enabled - clearRouteCache checks for this\n return null\n }\n\n if (json.errors) {\n json.errors.forEach((error) => toast.error(error.message))\n } else {\n addDefaultError()\n }\n return false\n } catch (e) {\n return addDefaultError()\n }\n })\n }, [\n addDefaultError,\n api,\n getQueryParams,\n i18n,\n modalSlug,\n plural,\n selectAll,\n serverURL,\n singular,\n slug,\n t,\n toggleModal,\n router,\n clearRouteCache,\n stringifyParams,\n ])\n\n if (!versions?.drafts || selectAll === SelectAllStatus.None || !hasPermission) {\n return null\n }\n\n return (\n <React.Fragment>\n <Pill\n className={`${baseClass}__toggle`}\n onClick={() => {\n setSubmitted(false)\n toggleModal(modalSlug)\n }}\n >\n {t('version:unpublish')}\n </Pill>\n <Modal className={baseClass} slug={modalSlug}>\n <div className={`${baseClass}__wrapper`}>\n <div className={`${baseClass}__content`}>\n <h1>{t('version:confirmUnpublish')}</h1>\n <p>{t('version:aboutToUnpublishSelection', { label: getTranslation(plural, i18n) })}</p>\n </div>\n <div className={`${baseClass}__controls`}>\n <Button\n buttonStyle=\"secondary\"\n id=\"confirm-cancel\"\n onClick={submitted ? undefined : () => toggleModal(modalSlug)}\n size=\"large\"\n type=\"button\"\n >\n {t('general:cancel')}\n </Button>\n <Button\n id=\"confirm-unpublish\"\n onClick={submitted ? undefined : handleUnpublish}\n size=\"large\"\n >\n {submitted ? t('version:unpublishing') : t('general:confirm')}\n </Button>\n </div>\n </div>\n </Modal>\n </React.Fragment>\n )\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/Upload/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,yBAAyB,EAAe,MAAM,SAAS,CAAA;AAGhF,OAAO,KAAmD,MAAM,OAAO,CAAA;AAiBvE,OAAO,cAAc,CAAA;AAGrB,eAAO,MAAM,cAAc,gBAAgB,CAAA;AAC3C,eAAO,MAAM,eAAe,kBAAkB,CAAA;AAU9C,KAAK,iBAAiB,GAAG;IACvB,QAAQ,CAAC,aAAa,CAAC,EAAE,KAAK,CAAC,SAAS,EAAE,CAAA;IAC1C,QAAQ,CAAC,iBAAiB,EAAE,OAAO,CAAA;IACnC,QAAQ,CAAC,kBAAkB,EAAE,OAAO,CAAA;IACpC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;CAC1B,CAAA;AAED,eAAO,MAAM,aAAa,wEAKvB,iBAAiB,sBAgCnB,CAAA;AAED,MAAM,MAAM,WAAW,GAAG;IACxB,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAA;IAC/B,QAAQ,CAAC,aAAa,CAAC,EAAE,KAAK,CAAC,SAAS,EAAE,CAAA;IAC1C,QAAQ,CAAC,YAAY,CAAC,EAAE,SAAS,CAAA;IACjC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,IAAI,KAAK,IAAI,CAAA;IACzC,QAAQ,CAAC,YAAY,EAAE,yBAAyB,CAAC,QAAQ,CAAC,CAAA;CAC3D,CAAA;AAED,eAAO,MAAM,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,WAAW,CAwSxC,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/Upload/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,yBAAyB,EAAe,MAAM,SAAS,CAAA;AAGhF,OAAO,KAAmD,MAAM,OAAO,CAAA;AAiBvE,OAAO,cAAc,CAAA;AAGrB,eAAO,MAAM,cAAc,gBAAgB,CAAA;AAC3C,eAAO,MAAM,eAAe,kBAAkB,CAAA;AAU9C,KAAK,iBAAiB,GAAG;IACvB,QAAQ,CAAC,aAAa,CAAC,EAAE,KAAK,CAAC,SAAS,EAAE,CAAA;IAC1C,QAAQ,CAAC,iBAAiB,EAAE,OAAO,CAAA;IACnC,QAAQ,CAAC,kBAAkB,EAAE,OAAO,CAAA;IACpC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;CAC1B,CAAA;AAED,eAAO,MAAM,aAAa,wEAKvB,iBAAiB,sBAgCnB,CAAA;AAED,MAAM,MAAM,WAAW,GAAG;IACxB,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAA;IAC/B,QAAQ,CAAC,aAAa,CAAC,EAAE,KAAK,CAAC,SAAS,EAAE,CAAA;IAC1C,QAAQ,CAAC,YAAY,CAAC,EAAE,SAAS,CAAA;IACjC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,IAAI,KAAK,IAAI,CAAA;IACzC,QAAQ,CAAC,YAAY,EAAE,yBAAyB,CAAC,QAAQ,CAAC,CAAA;CAC3D,CAAA;AAED,eAAO,MAAM,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,WAAW,CA2SxC,CAAA"}
@@ -209,6 +209,7 @@ export const Upload = props => {
209
209
  focalPoint = true
210
210
  } = uploadConfig;
211
211
  const showFocalPoint = focalPoint && (hasImageSizes || hasResizeOptions || focalPointEnabled);
212
+ const acceptMimeTypes = uploadConfig.mimeTypes?.join(', ');
212
213
  return /*#__PURE__*/_jsxs("div", {
213
214
  className: [fieldBaseClass, baseClass].filter(Boolean).join(' '),
214
215
  children: [/*#__PURE__*/_jsx(FieldError, {
@@ -242,6 +243,7 @@ export const Upload = props => {
242
243
  size: "small",
243
244
  children: t('upload:selectFile')
244
245
  }), /*#__PURE__*/_jsx("input", {
246
+ accept: acceptMimeTypes,
245
247
  "aria-hidden": "true",
246
248
  className: `${baseClass}__hidden-input`,
247
249
  hidden: true,
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["c","_c","isImage","reduceFieldsToValues","React","useCallback","useEffect","useRef","useState","toast","FieldError","fieldBaseClass","useForm","useField","useDocumentInfo","useTranslation","useUploadEdits","Button","Drawer","DrawerToggler","Dropzone","EditUpload","FileDetails","PreviewSizes","Thumbnail","baseClass","editDrawerSlug","sizePreviewSlug","validate","value","undefined","UploadActions","t0","$","customActions","enableAdjustments","enablePreviewSizes","mimeType","t","t1","t2","Symbol","for","bb0","fileTypeIsAdjustable","length","t3","map","_temp","_jsxs","className","children","Fragment","_jsx","slug","Upload","props","collectionSlug","initialState","onChange","uploadConfig","setModified","resetUploadEdits","updateUploadEdits","uploadEdits","docPermissions","errorMessage","setValue","showError","path","doc","setDoc","fileSrc","setFileSrc","replacingFile","setReplacingFile","filename","setFilename","name","showUrlInput","setShowUrlInput","fileUrl","setFileUrl","urlInputRef","inputRef","handleFileChange","newFile","File","URL","createObjectURL","renameFile","fileToChange","newName","type","lastModified","handleFileNameChange","e","updatedFileName","target","handleFileSelection","files","fileToUpload","handleFileRemoval","onEditsSave","args","handleUrlSubmit","response","fetch","data","blob","fileName","split","pop","file","error","message","current","canRemoveUpload","update","permission","delete","hasImageSizes","imageSizes","hasResizeOptions","Boolean","resizeOptions","focalPointEnabled","focalPoint","crop","showCrop","showFocalPoint","filter","join","field","customUploadActions","handleRemove","imageCacheTag","updatedAt","buttonStyle","onClick","click","size","hidden","ref","icon","iconStyle","round","tooltip","Header","url","initialCrop","initialFocalPoint","x","focalX","y","focalY","onSave","hoverTitle","title","label","CustomAction","i"],"sources":["../../../src/elements/Upload/index.tsx"],"sourcesContent":["'use client'\nimport type { FormState, SanitizedCollectionConfig, UploadEdits } from 'payload'\n\nimport { isImage, reduceFieldsToValues } from 'payload/shared'\nimport React, { useCallback, useEffect, useRef, useState } from 'react'\nimport { toast } from 'sonner'\n\nimport { FieldError } from '../../fields/FieldError/index.js'\nimport { fieldBaseClass } from '../../fields/shared/index.js'\nimport { useForm } from '../../forms/Form/index.js'\nimport { useField } from '../../forms/useField/index.js'\nimport { useDocumentInfo } from '../../providers/DocumentInfo/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { useUploadEdits } from '../../providers/UploadEdits/index.js'\nimport { Button } from '../Button/index.js'\nimport { Drawer, DrawerToggler } from '../Drawer/index.js'\nimport { Dropzone } from '../Dropzone/index.js'\nimport { EditUpload } from '../EditUpload/index.js'\nimport { FileDetails } from '../FileDetails/index.js'\nimport { PreviewSizes } from '../PreviewSizes/index.js'\nimport { Thumbnail } from '../Thumbnail/index.js'\nimport './index.scss'\n\nconst baseClass = 'file-field'\nexport const editDrawerSlug = 'edit-upload'\nexport const sizePreviewSlug = 'preview-sizes'\n\nconst validate = (value) => {\n if (!value && value !== undefined) {\n return 'A file is required.'\n }\n\n return true\n}\n\ntype UploadActionsArgs = {\n readonly customActions?: React.ReactNode[]\n readonly enableAdjustments: boolean\n readonly enablePreviewSizes: boolean\n readonly mimeType: string\n}\n\nexport const UploadActions = ({\n customActions,\n enableAdjustments,\n enablePreviewSizes,\n mimeType,\n}: UploadActionsArgs) => {\n const { t } = useTranslation()\n\n const fileTypeIsAdjustable = isImage(mimeType) && mimeType !== 'image/svg+xml'\n\n if (!fileTypeIsAdjustable && (!customActions || customActions.length === 0)) {\n return null\n }\n\n return (\n <div className={`${baseClass}__upload-actions`}>\n {fileTypeIsAdjustable && (\n <React.Fragment>\n {enablePreviewSizes && (\n <DrawerToggler className={`${baseClass}__previewSizes`} slug={sizePreviewSlug}>\n {t('upload:previewSizes')}\n </DrawerToggler>\n )}\n {enableAdjustments && (\n <DrawerToggler className={`${baseClass}__edit`} slug={editDrawerSlug}>\n {t('upload:editImage')}\n </DrawerToggler>\n )}\n </React.Fragment>\n )}\n\n {customActions &&\n customActions.map((CustomAction, i) => {\n return <React.Fragment key={i}>{CustomAction}</React.Fragment>\n })}\n </div>\n )\n}\n\nexport type UploadProps = {\n readonly collectionSlug: string\n readonly customActions?: React.ReactNode[]\n readonly initialState?: FormState\n readonly onChange?: (file?: File) => void\n readonly uploadConfig: SanitizedCollectionConfig['upload']\n}\n\nexport const Upload: React.FC<UploadProps> = (props) => {\n const { collectionSlug, customActions, initialState, onChange, uploadConfig } = props\n\n const { t } = useTranslation()\n const { setModified } = useForm()\n const { resetUploadEdits, updateUploadEdits, uploadEdits } = useUploadEdits()\n const { docPermissions } = useDocumentInfo()\n const { errorMessage, setValue, showError, value } = useField<File>({\n path: 'file',\n validate,\n })\n\n const [doc, setDoc] = useState(reduceFieldsToValues(initialState || {}, true))\n const [fileSrc, setFileSrc] = useState<null | string>(null)\n const [replacingFile, setReplacingFile] = useState(false)\n const [filename, setFilename] = useState<string>(value?.name || '')\n const [showUrlInput, setShowUrlInput] = useState(false)\n const [fileUrl, setFileUrl] = useState<string>('')\n\n const urlInputRef = useRef<HTMLInputElement>(null)\n const inputRef = useRef<HTMLInputElement>(null)\n\n const handleFileChange = useCallback(\n (newFile: File) => {\n if (newFile instanceof File) {\n setFileSrc(URL.createObjectURL(newFile))\n }\n\n setValue(newFile)\n setShowUrlInput(false)\n\n if (typeof onChange === 'function') {\n onChange(newFile)\n }\n },\n [onChange, setValue],\n )\n\n const renameFile = (fileToChange: File, newName: string): File => {\n // Creating a new File object with updated properties\n const newFile = new File([fileToChange], newName, {\n type: fileToChange.type,\n lastModified: fileToChange.lastModified,\n })\n return newFile\n }\n\n const handleFileNameChange = React.useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n const updatedFileName = e.target.value\n\n if (value) {\n handleFileChange(renameFile(value, updatedFileName))\n setFilename(updatedFileName)\n }\n },\n [handleFileChange, value],\n )\n\n const handleFileSelection = useCallback(\n (files: FileList) => {\n const fileToUpload = files?.[0]\n handleFileChange(fileToUpload)\n },\n [handleFileChange],\n )\n\n const handleFileRemoval = useCallback(() => {\n setReplacingFile(true)\n handleFileChange(null)\n setFileSrc('')\n setFileUrl('')\n setDoc({})\n resetUploadEdits()\n setShowUrlInput(false)\n }, [handleFileChange, resetUploadEdits])\n\n const onEditsSave = useCallback(\n (args: UploadEdits) => {\n setModified(true)\n updateUploadEdits(args)\n },\n [setModified, updateUploadEdits],\n )\n\n const handleUrlSubmit = async () => {\n if (fileUrl) {\n try {\n const response = await fetch(fileUrl)\n const data = await response.blob()\n\n // Extract the file name from the URL\n const fileName = fileUrl.split('/').pop()\n\n // Create a new File object from the Blob data\n const file = new File([data], fileName, { type: data.type })\n handleFileChange(file)\n } catch (e) {\n toast.error(e.message)\n }\n }\n }\n\n useEffect(() => {\n setDoc(reduceFieldsToValues(initialState || {}, true))\n if (initialState?.file?.value instanceof File) {\n setFileSrc(URL.createObjectURL(initialState.file.value))\n }\n setReplacingFile(false)\n }, [initialState])\n\n useEffect(() => {\n if (showUrlInput && urlInputRef.current) {\n // urlInputRef.current.focus() // Focus on the remote-url input field when showUrlInput is true\n }\n }, [showUrlInput])\n\n const canRemoveUpload =\n docPermissions?.update?.permission &&\n 'delete' in docPermissions &&\n docPermissions?.delete?.permission\n\n const hasImageSizes = uploadConfig?.imageSizes?.length > 0\n const hasResizeOptions = Boolean(uploadConfig?.resizeOptions)\n // Explicity check if set to true, default is undefined\n const focalPointEnabled = uploadConfig?.focalPoint === true\n\n const { crop: showCrop = true, focalPoint = true } = uploadConfig\n\n const showFocalPoint = focalPoint && (hasImageSizes || hasResizeOptions || focalPointEnabled)\n\n return (\n <div className={[fieldBaseClass, baseClass].filter(Boolean).join(' ')}>\n <FieldError field={null} message={errorMessage} showError={showError} />\n {doc.filename && !replacingFile && (\n <FileDetails\n collectionSlug={collectionSlug}\n customUploadActions={customActions}\n doc={doc}\n enableAdjustments={showCrop || showFocalPoint}\n handleRemove={canRemoveUpload ? handleFileRemoval : undefined}\n hasImageSizes={hasImageSizes}\n imageCacheTag={doc.updatedAt}\n uploadConfig={uploadConfig}\n />\n )}\n {(!doc.filename || replacingFile) && (\n <div className={`${baseClass}__upload`}>\n {!value && !showUrlInput && (\n <Dropzone onChange={handleFileSelection}>\n <div className={`${baseClass}__dropzoneContent`}>\n <div className={`${baseClass}__dropzoneButtons`}>\n <Button\n buttonStyle=\"pill\"\n onClick={() => {\n if (inputRef.current) {\n inputRef.current.click()\n }\n }}\n size=\"small\"\n >\n {t('upload:selectFile')}\n </Button>\n <input\n aria-hidden=\"true\"\n className={`${baseClass}__hidden-input`}\n hidden\n onChange={(e) => {\n if (e.target.files && e.target.files.length > 0) {\n handleFileSelection(e.target.files)\n }\n }}\n ref={inputRef}\n type=\"file\"\n />\n <span className={`${baseClass}__orText`}>{t('general:or')}</span>\n <Button\n buttonStyle=\"pill\"\n onClick={() => {\n setShowUrlInput(true)\n }}\n size=\"small\"\n >\n {t('upload:pasteURL')}\n </Button>\n </div>\n\n <p className={`${baseClass}__dragAndDropText`}>\n {t('general:or')} {t('upload:dragAndDrop')}\n </p>\n </div>\n </Dropzone>\n )}\n {showUrlInput && (\n <React.Fragment>\n <div className={`${baseClass}__remote-file-wrap`}>\n {/* eslint-disable-next-line jsx-a11y/control-has-associated-label */}\n <input\n className={`${baseClass}__remote-file`}\n onChange={(e) => {\n setFileUrl(e.target.value)\n }}\n ref={urlInputRef}\n type=\"text\"\n value={fileUrl}\n />\n <div className={`${baseClass}__add-file-wrap`}>\n <button\n className={`${baseClass}__add-file`}\n onClick={() => {\n void handleUrlSubmit()\n }}\n type=\"button\"\n >\n {t('upload:addFile')}\n </button>\n </div>\n </div>\n <Button\n buttonStyle=\"icon-label\"\n className={`${baseClass}__remove`}\n icon=\"x\"\n iconStyle=\"with-border\"\n onClick={() => {\n setShowUrlInput(false)\n }}\n round\n tooltip={t('general:cancel')}\n />\n </React.Fragment>\n )}\n {value && fileSrc && (\n <React.Fragment>\n <div className={`${baseClass}__thumbnail-wrap`}>\n <Thumbnail\n collectionSlug={collectionSlug}\n fileSrc={isImage(value.type) ? fileSrc : null}\n />\n </div>\n <div className={`${baseClass}__file-adjustments`}>\n {/* eslint-disable-next-line jsx-a11y/control-has-associated-label */}\n <input\n className={`${baseClass}__filename`}\n onChange={handleFileNameChange}\n type=\"text\"\n value={filename || value.name}\n />\n <UploadActions\n customActions={customActions}\n enableAdjustments={showCrop || showFocalPoint}\n enablePreviewSizes={hasImageSizes && doc.filename && !replacingFile}\n mimeType={value.type}\n />\n </div>\n <Button\n buttonStyle=\"icon-label\"\n className={`${baseClass}__remove`}\n icon=\"x\"\n iconStyle=\"with-border\"\n onClick={handleFileRemoval}\n round\n tooltip={t('general:cancel')}\n />\n </React.Fragment>\n )}\n </div>\n )}\n {(value || doc.filename) && (\n <Drawer Header={null} slug={editDrawerSlug}>\n <EditUpload\n fileName={value?.name || doc?.filename}\n fileSrc={doc?.url || fileSrc}\n imageCacheTag={doc.updatedAt}\n initialCrop={uploadEdits?.crop ?? undefined}\n initialFocalPoint={{\n x: uploadEdits?.focalPoint?.x || doc.focalX || 50,\n y: uploadEdits?.focalPoint?.y || doc.focalY || 50,\n }}\n onSave={onEditsSave}\n showCrop={showCrop}\n showFocalPoint={showFocalPoint}\n />\n </Drawer>\n )}\n {doc && hasImageSizes && (\n <Drawer\n className={`${baseClass}__previewDrawer`}\n hoverTitle\n slug={sizePreviewSlug}\n title={t('upload:sizesFor', { label: doc?.filename })}\n >\n <PreviewSizes doc={doc} imageCacheTag={doc.updatedAt} uploadConfig={uploadConfig} />\n </Drawer>\n )}\n </div>\n )\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["c","_c","isImage","reduceFieldsToValues","React","useCallback","useEffect","useRef","useState","toast","FieldError","fieldBaseClass","useForm","useField","useDocumentInfo","useTranslation","useUploadEdits","Button","Drawer","DrawerToggler","Dropzone","EditUpload","FileDetails","PreviewSizes","Thumbnail","baseClass","editDrawerSlug","sizePreviewSlug","validate","value","undefined","UploadActions","t0","$","customActions","enableAdjustments","enablePreviewSizes","mimeType","t","t1","t2","Symbol","for","bb0","fileTypeIsAdjustable","length","t3","map","_temp","_jsxs","className","children","Fragment","_jsx","slug","Upload","props","collectionSlug","initialState","onChange","uploadConfig","setModified","resetUploadEdits","updateUploadEdits","uploadEdits","docPermissions","errorMessage","setValue","showError","path","doc","setDoc","fileSrc","setFileSrc","replacingFile","setReplacingFile","filename","setFilename","name","showUrlInput","setShowUrlInput","fileUrl","setFileUrl","urlInputRef","inputRef","handleFileChange","newFile","File","URL","createObjectURL","renameFile","fileToChange","newName","type","lastModified","handleFileNameChange","e","updatedFileName","target","handleFileSelection","files","fileToUpload","handleFileRemoval","onEditsSave","args","handleUrlSubmit","response","fetch","data","blob","fileName","split","pop","file","error","message","current","canRemoveUpload","update","permission","delete","hasImageSizes","imageSizes","hasResizeOptions","Boolean","resizeOptions","focalPointEnabled","focalPoint","crop","showCrop","showFocalPoint","acceptMimeTypes","mimeTypes","join","filter","field","customUploadActions","handleRemove","imageCacheTag","updatedAt","buttonStyle","onClick","click","size","accept","hidden","ref","icon","iconStyle","round","tooltip","Header","url","initialCrop","initialFocalPoint","x","focalX","y","focalY","onSave","hoverTitle","title","label","CustomAction","i"],"sources":["../../../src/elements/Upload/index.tsx"],"sourcesContent":["'use client'\nimport type { FormState, SanitizedCollectionConfig, UploadEdits } from 'payload'\n\nimport { isImage, reduceFieldsToValues } from 'payload/shared'\nimport React, { useCallback, useEffect, useRef, useState } from 'react'\nimport { toast } from 'sonner'\n\nimport { FieldError } from '../../fields/FieldError/index.js'\nimport { fieldBaseClass } from '../../fields/shared/index.js'\nimport { useForm } from '../../forms/Form/index.js'\nimport { useField } from '../../forms/useField/index.js'\nimport { useDocumentInfo } from '../../providers/DocumentInfo/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { useUploadEdits } from '../../providers/UploadEdits/index.js'\nimport { Button } from '../Button/index.js'\nimport { Drawer, DrawerToggler } from '../Drawer/index.js'\nimport { Dropzone } from '../Dropzone/index.js'\nimport { EditUpload } from '../EditUpload/index.js'\nimport { FileDetails } from '../FileDetails/index.js'\nimport { PreviewSizes } from '../PreviewSizes/index.js'\nimport { Thumbnail } from '../Thumbnail/index.js'\nimport './index.scss'\n\nconst baseClass = 'file-field'\nexport const editDrawerSlug = 'edit-upload'\nexport const sizePreviewSlug = 'preview-sizes'\n\nconst validate = (value) => {\n if (!value && value !== undefined) {\n return 'A file is required.'\n }\n\n return true\n}\n\ntype UploadActionsArgs = {\n readonly customActions?: React.ReactNode[]\n readonly enableAdjustments: boolean\n readonly enablePreviewSizes: boolean\n readonly mimeType: string\n}\n\nexport const UploadActions = ({\n customActions,\n enableAdjustments,\n enablePreviewSizes,\n mimeType,\n}: UploadActionsArgs) => {\n const { t } = useTranslation()\n\n const fileTypeIsAdjustable = isImage(mimeType) && mimeType !== 'image/svg+xml'\n\n if (!fileTypeIsAdjustable && (!customActions || customActions.length === 0)) {\n return null\n }\n\n return (\n <div className={`${baseClass}__upload-actions`}>\n {fileTypeIsAdjustable && (\n <React.Fragment>\n {enablePreviewSizes && (\n <DrawerToggler className={`${baseClass}__previewSizes`} slug={sizePreviewSlug}>\n {t('upload:previewSizes')}\n </DrawerToggler>\n )}\n {enableAdjustments && (\n <DrawerToggler className={`${baseClass}__edit`} slug={editDrawerSlug}>\n {t('upload:editImage')}\n </DrawerToggler>\n )}\n </React.Fragment>\n )}\n\n {customActions &&\n customActions.map((CustomAction, i) => {\n return <React.Fragment key={i}>{CustomAction}</React.Fragment>\n })}\n </div>\n )\n}\n\nexport type UploadProps = {\n readonly collectionSlug: string\n readonly customActions?: React.ReactNode[]\n readonly initialState?: FormState\n readonly onChange?: (file?: File) => void\n readonly uploadConfig: SanitizedCollectionConfig['upload']\n}\n\nexport const Upload: React.FC<UploadProps> = (props) => {\n const { collectionSlug, customActions, initialState, onChange, uploadConfig } = props\n\n const { t } = useTranslation()\n const { setModified } = useForm()\n const { resetUploadEdits, updateUploadEdits, uploadEdits } = useUploadEdits()\n const { docPermissions } = useDocumentInfo()\n const { errorMessage, setValue, showError, value } = useField<File>({\n path: 'file',\n validate,\n })\n\n const [doc, setDoc] = useState(reduceFieldsToValues(initialState || {}, true))\n const [fileSrc, setFileSrc] = useState<null | string>(null)\n const [replacingFile, setReplacingFile] = useState(false)\n const [filename, setFilename] = useState<string>(value?.name || '')\n const [showUrlInput, setShowUrlInput] = useState(false)\n const [fileUrl, setFileUrl] = useState<string>('')\n\n const urlInputRef = useRef<HTMLInputElement>(null)\n const inputRef = useRef<HTMLInputElement>(null)\n\n const handleFileChange = useCallback(\n (newFile: File) => {\n if (newFile instanceof File) {\n setFileSrc(URL.createObjectURL(newFile))\n }\n\n setValue(newFile)\n setShowUrlInput(false)\n\n if (typeof onChange === 'function') {\n onChange(newFile)\n }\n },\n [onChange, setValue],\n )\n\n const renameFile = (fileToChange: File, newName: string): File => {\n // Creating a new File object with updated properties\n const newFile = new File([fileToChange], newName, {\n type: fileToChange.type,\n lastModified: fileToChange.lastModified,\n })\n return newFile\n }\n\n const handleFileNameChange = React.useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n const updatedFileName = e.target.value\n\n if (value) {\n handleFileChange(renameFile(value, updatedFileName))\n setFilename(updatedFileName)\n }\n },\n [handleFileChange, value],\n )\n\n const handleFileSelection = useCallback(\n (files: FileList) => {\n const fileToUpload = files?.[0]\n handleFileChange(fileToUpload)\n },\n [handleFileChange],\n )\n\n const handleFileRemoval = useCallback(() => {\n setReplacingFile(true)\n handleFileChange(null)\n setFileSrc('')\n setFileUrl('')\n setDoc({})\n resetUploadEdits()\n setShowUrlInput(false)\n }, [handleFileChange, resetUploadEdits])\n\n const onEditsSave = useCallback(\n (args: UploadEdits) => {\n setModified(true)\n updateUploadEdits(args)\n },\n [setModified, updateUploadEdits],\n )\n\n const handleUrlSubmit = async () => {\n if (fileUrl) {\n try {\n const response = await fetch(fileUrl)\n const data = await response.blob()\n\n // Extract the file name from the URL\n const fileName = fileUrl.split('/').pop()\n\n // Create a new File object from the Blob data\n const file = new File([data], fileName, { type: data.type })\n handleFileChange(file)\n } catch (e) {\n toast.error(e.message)\n }\n }\n }\n\n useEffect(() => {\n setDoc(reduceFieldsToValues(initialState || {}, true))\n if (initialState?.file?.value instanceof File) {\n setFileSrc(URL.createObjectURL(initialState.file.value))\n }\n setReplacingFile(false)\n }, [initialState])\n\n useEffect(() => {\n if (showUrlInput && urlInputRef.current) {\n // urlInputRef.current.focus() // Focus on the remote-url input field when showUrlInput is true\n }\n }, [showUrlInput])\n\n const canRemoveUpload =\n docPermissions?.update?.permission &&\n 'delete' in docPermissions &&\n docPermissions?.delete?.permission\n\n const hasImageSizes = uploadConfig?.imageSizes?.length > 0\n const hasResizeOptions = Boolean(uploadConfig?.resizeOptions)\n // Explicity check if set to true, default is undefined\n const focalPointEnabled = uploadConfig?.focalPoint === true\n\n const { crop: showCrop = true, focalPoint = true } = uploadConfig\n\n const showFocalPoint = focalPoint && (hasImageSizes || hasResizeOptions || focalPointEnabled)\n\n const acceptMimeTypes = uploadConfig.mimeTypes?.join(', ')\n\n return (\n <div className={[fieldBaseClass, baseClass].filter(Boolean).join(' ')}>\n <FieldError field={null} message={errorMessage} showError={showError} />\n {doc.filename && !replacingFile && (\n <FileDetails\n collectionSlug={collectionSlug}\n customUploadActions={customActions}\n doc={doc}\n enableAdjustments={showCrop || showFocalPoint}\n handleRemove={canRemoveUpload ? handleFileRemoval : undefined}\n hasImageSizes={hasImageSizes}\n imageCacheTag={doc.updatedAt}\n uploadConfig={uploadConfig}\n />\n )}\n {(!doc.filename || replacingFile) && (\n <div className={`${baseClass}__upload`}>\n {!value && !showUrlInput && (\n <Dropzone onChange={handleFileSelection}>\n <div className={`${baseClass}__dropzoneContent`}>\n <div className={`${baseClass}__dropzoneButtons`}>\n <Button\n buttonStyle=\"pill\"\n onClick={() => {\n if (inputRef.current) {\n inputRef.current.click()\n }\n }}\n size=\"small\"\n >\n {t('upload:selectFile')}\n </Button>\n <input\n accept={acceptMimeTypes}\n aria-hidden=\"true\"\n className={`${baseClass}__hidden-input`}\n hidden\n onChange={(e) => {\n if (e.target.files && e.target.files.length > 0) {\n handleFileSelection(e.target.files)\n }\n }}\n ref={inputRef}\n type=\"file\"\n />\n <span className={`${baseClass}__orText`}>{t('general:or')}</span>\n <Button\n buttonStyle=\"pill\"\n onClick={() => {\n setShowUrlInput(true)\n }}\n size=\"small\"\n >\n {t('upload:pasteURL')}\n </Button>\n </div>\n\n <p className={`${baseClass}__dragAndDropText`}>\n {t('general:or')} {t('upload:dragAndDrop')}\n </p>\n </div>\n </Dropzone>\n )}\n {showUrlInput && (\n <React.Fragment>\n <div className={`${baseClass}__remote-file-wrap`}>\n {/* eslint-disable-next-line jsx-a11y/control-has-associated-label */}\n <input\n className={`${baseClass}__remote-file`}\n onChange={(e) => {\n setFileUrl(e.target.value)\n }}\n ref={urlInputRef}\n type=\"text\"\n value={fileUrl}\n />\n <div className={`${baseClass}__add-file-wrap`}>\n <button\n className={`${baseClass}__add-file`}\n onClick={() => {\n void handleUrlSubmit()\n }}\n type=\"button\"\n >\n {t('upload:addFile')}\n </button>\n </div>\n </div>\n <Button\n buttonStyle=\"icon-label\"\n className={`${baseClass}__remove`}\n icon=\"x\"\n iconStyle=\"with-border\"\n onClick={() => {\n setShowUrlInput(false)\n }}\n round\n tooltip={t('general:cancel')}\n />\n </React.Fragment>\n )}\n {value && fileSrc && (\n <React.Fragment>\n <div className={`${baseClass}__thumbnail-wrap`}>\n <Thumbnail\n collectionSlug={collectionSlug}\n fileSrc={isImage(value.type) ? fileSrc : null}\n />\n </div>\n <div className={`${baseClass}__file-adjustments`}>\n {/* eslint-disable-next-line jsx-a11y/control-has-associated-label */}\n <input\n className={`${baseClass}__filename`}\n onChange={handleFileNameChange}\n type=\"text\"\n value={filename || value.name}\n />\n <UploadActions\n customActions={customActions}\n enableAdjustments={showCrop || showFocalPoint}\n enablePreviewSizes={hasImageSizes && doc.filename && !replacingFile}\n mimeType={value.type}\n />\n </div>\n <Button\n buttonStyle=\"icon-label\"\n className={`${baseClass}__remove`}\n icon=\"x\"\n iconStyle=\"with-border\"\n onClick={handleFileRemoval}\n round\n tooltip={t('general:cancel')}\n />\n </React.Fragment>\n )}\n </div>\n )}\n {(value || doc.filename) && (\n <Drawer Header={null} slug={editDrawerSlug}>\n <EditUpload\n fileName={value?.name || doc?.filename}\n fileSrc={doc?.url || fileSrc}\n imageCacheTag={doc.updatedAt}\n initialCrop={uploadEdits?.crop ?? undefined}\n initialFocalPoint={{\n x: uploadEdits?.focalPoint?.x || doc.focalX || 50,\n y: uploadEdits?.focalPoint?.y || doc.focalY || 50,\n }}\n onSave={onEditsSave}\n showCrop={showCrop}\n showFocalPoint={showFocalPoint}\n />\n </Drawer>\n )}\n {doc && hasImageSizes && (\n <Drawer\n className={`${baseClass}__previewDrawer`}\n hoverTitle\n slug={sizePreviewSlug}\n title={t('upload:sizesFor', { label: doc?.filename })}\n >\n <PreviewSizes doc={doc} imageCacheTag={doc.updatedAt} uploadConfig={uploadConfig} />\n </Drawer>\n )}\n </div>\n )\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;;AAGA,SAASC,OAAO,EAAEC,oBAAoB,QAAQ;AAC9C,OAAOC,KAAA,IAASC,WAAW,EAAEC,SAAS,EAAEC,MAAM,EAAEC,QAAQ,QAAQ;AAChE,SAASC,KAAK,QAAQ;AAEtB,SAASC,UAAU,QAAQ;AAC3B,SAASC,cAAc,QAAQ;AAC/B,SAASC,OAAO,QAAQ;AACxB,SAASC,QAAQ,QAAQ;AACzB,SAASC,eAAe,QAAQ;AAChC,SAASC,cAAc,QAAQ;AAC/B,SAASC,cAAc,QAAQ;AAC/B,SAASC,MAAM,QAAQ;AACvB,SAASC,MAAM,EAAEC,aAAa,QAAQ;AACtC,SAASC,QAAQ,QAAQ;AACzB,SAASC,UAAU,QAAQ;AAC3B,SAASC,WAAW,QAAQ;AAC5B,SAASC,YAAY,QAAQ;AAC7B,SAASC,SAAS,QAAQ;AAC1B,OAAO;AAEP,MAAMC,SAAA,GAAY;AAClB,OAAO,MAAMC,cAAA,GAAiB;AAC9B,OAAO,MAAMC,eAAA,GAAkB;AAE/B,MAAMC,QAAA,GAAYC,KAAA;EAChB,IAAI,CAACA,KAAA,IAASA,KAAA,KAAUC,SAAA,EAAW;IACjC,OAAO;EACT;EAEA,OAAO;AACT;AASA,OAAO,MAAMC,aAAA,GAAgBC,EAAA;EAAA,MAAAC,CAAA,GAAAhC,EAAA;EAAC;IAAAiC,aAAA;IAAAC,iBAAA;IAAAC,kBAAA;IAAAC;EAAA,IAAAL,EAKV;EAClB;IAAAM;EAAA,IAAcvB,cAAA;EAAA,IAAAwB,EAAA;EAAA,IAAAC,EAAA;EAAA,IAAAP,CAAA,QAAAI,QAAA,IAAAJ,CAAA,QAAAC,aAAA,IAAAD,CAAA,QAAAG,kBAAA,IAAAH,CAAA,QAAAK,CAAA,IAAAL,CAAA,QAAAE,iBAAA;IAKLK,EAAA,GAAAC,MAAA,CAAAC,GAAA;IAAAC,GAAA;MAHT,MAAAC,oBAAA,GAA6B1C,OAAA,CAAQmC,QAAA,KAAaA,QAAA,KAAa;MAAA,IAE3D,CAACO,oBAAA,KAAyB,CAACV,aAAA,IAAiBA,aAAA,CAAAW,MAAA,MAAyB;QAChEL,EAAA;QAAA,MAAAG,GAAA;MAAA;MAAA,IAAAG,EAAA;MAAA,IAAAb,CAAA,QAAAC,aAAA;QAoBJY,EAAA,GAAAZ,aAAA,IACCA,aAAA,CAAAa,GAAA,CAAAC,KAEA;QAAAf,CAAA,MAAAC,aAAA;QAAAD,CAAA,MAAAa,EAAA;MAAA;QAAAA,EAAA,GAAAb,CAAA;MAAA;MAnBJM,EAAA,GAAAU,KAAA,CAAC;QAAAC,SAAA,EAAe,GAAAzB,SAAA,kBAA8B;QAAA0B,QAAA,GAC3CP,oBAAA,IACCK,KAAA,CAAA7C,KAAA,CAAAgD,QAAA;UAAAD,QAAA,GACGf,kBAAA,IACCiB,IAAA,CAAAlC,aAAA;YAAA+B,SAAA,EAA0B,GAAAzB,SAAA,gBAA4B;YAAA6B,IAAA,EAAA3B,eAAA;YAAAwB,QAAA,EACnDb,CAAA,CAAE;UAAA,C,GAGNH,iBAAA,IACCkB,IAAA,CAAAlC,aAAA;YAAA+B,SAAA,EAA0B,GAAAzB,SAAA,QAAoB;YAAA6B,IAAA,EAAA5B,cAAA;YAAAyB,QAAA,EAC3Cb,CAAA,CAAE;UAAA,C;YAMVQ,EAGC;MAAA,C;;;;;;;;;;;;;;;;SAnBJP,E;CAsBJ;AAUA,OAAO,MAAMgB,MAAA,GAAiCC,KAAA;EAC5C,MAAM;IAAEC,cAAc;IAAEvB,aAAa;IAAEwB,YAAY;IAAEC,QAAQ;IAAEC;EAAY,CAAE,GAAGJ,KAAA;EAEhF,MAAM;IAAElB;EAAC,CAAE,GAAGvB,cAAA;EACd,MAAM;IAAE8C;EAAW,CAAE,GAAGjD,OAAA;EACxB,MAAM;IAAEkD,gBAAgB;IAAEC,iBAAiB;IAAEC;EAAW,CAAE,GAAGhD,cAAA;EAC7D,MAAM;IAAEiD;EAAc,CAAE,GAAGnD,eAAA;EAC3B,MAAM;IAAEoD,YAAY;IAAEC,QAAQ;IAAEC,SAAS;IAAEvC;EAAK,CAAE,GAAGhB,QAAA,CAAe;IAClEwD,IAAA,EAAM;IACNzC;EACF;EAEA,MAAM,CAAC0C,GAAA,EAAKC,MAAA,CAAO,GAAG/D,QAAA,CAASL,oBAAA,CAAqBuD,YAAA,IAAgB,CAAC,GAAG;EACxE,MAAM,CAACc,OAAA,EAASC,UAAA,CAAW,GAAGjE,QAAA,CAAwB;EACtD,MAAM,CAACkE,aAAA,EAAeC,gBAAA,CAAiB,GAAGnE,QAAA,CAAS;EACnD,MAAM,CAACoE,QAAA,EAAUC,WAAA,CAAY,GAAGrE,QAAA,CAAiBqB,KAAA,EAAOiD,IAAA,IAAQ;EAChE,MAAM,CAACC,YAAA,EAAcC,eAAA,CAAgB,GAAGxE,QAAA,CAAS;EACjD,MAAM,CAACyE,OAAA,EAASC,UAAA,CAAW,GAAG1E,QAAA,CAAiB;EAE/C,MAAM2E,WAAA,GAAc5E,MAAA,CAAyB;EAC7C,MAAM6E,QAAA,GAAW7E,MAAA,CAAyB;EAE1C,MAAM8E,gBAAA,GAAmBhF,WAAA,CACtBiF,OAAA;IACC,IAAIA,OAAA,YAAmBC,IAAA,EAAM;MAC3Bd,UAAA,CAAWe,GAAA,CAAIC,eAAe,CAACH,OAAA;IACjC;IAEAnB,QAAA,CAASmB,OAAA;IACTN,eAAA,CAAgB;IAEhB,IAAI,OAAOrB,QAAA,KAAa,YAAY;MAClCA,QAAA,CAAS2B,OAAA;IACX;EACF,GACA,CAAC3B,QAAA,EAAUQ,QAAA,CAAS;EAGtB,MAAMuB,UAAA,GAAaA,CAACC,YAAA,EAAoBC,OAAA;IACtC;IACA,MAAMN,SAAA,GAAU,IAAIC,IAAA,CAAK,CAACI,YAAA,CAAa,EAAEC,OAAA,EAAS;MAChDC,IAAA,EAAMF,YAAA,CAAaE,IAAI;MACvBC,YAAA,EAAcH,YAAA,CAAaG;IAC7B;IACA,OAAOR,SAAA;EACT;EAEA,MAAMS,oBAAA,GAAuB3F,KAAA,CAAMC,WAAW,CAC3C2F,CAAA;IACC,MAAMC,eAAA,GAAkBD,CAAA,CAAEE,MAAM,CAACrE,KAAK;IAEtC,IAAIA,KAAA,EAAO;MACTwD,gBAAA,CAAiBK,UAAA,CAAW7D,KAAA,EAAOoE,eAAA;MACnCpB,WAAA,CAAYoB,eAAA;IACd;EACF,GACA,CAACZ,gBAAA,EAAkBxD,KAAA,CAAM;EAG3B,MAAMsE,mBAAA,GAAsB9F,WAAA,CACzB+F,KAAA;IACC,MAAMC,YAAA,GAAeD,KAAA,GAAQ,EAAE;IAC/Bf,gBAAA,CAAiBgB,YAAA;EACnB,GACA,CAAChB,gBAAA,CAAiB;EAGpB,MAAMiB,iBAAA,GAAoBjG,WAAA,CAAY;IACpCsE,gBAAA,CAAiB;IACjBU,gBAAA,CAAiB;IACjBZ,UAAA,CAAW;IACXS,UAAA,CAAW;IACXX,MAAA,CAAO,CAAC;IACRT,gBAAA;IACAkB,eAAA,CAAgB;EAClB,GAAG,CAACK,gBAAA,EAAkBvB,gBAAA,CAAiB;EAEvC,MAAMyC,WAAA,GAAclG,WAAA,CACjBmG,IAAA;IACC3C,WAAA,CAAY;IACZE,iBAAA,CAAkByC,IAAA;EACpB,GACA,CAAC3C,WAAA,EAAaE,iBAAA,CAAkB;EAGlC,MAAM0C,eAAA,GAAkB,MAAAA,CAAA;IACtB,IAAIxB,OAAA,EAAS;MACX,IAAI;QACF,MAAMyB,QAAA,GAAW,MAAMC,KAAA,CAAM1B,OAAA;QAC7B,MAAM2B,IAAA,GAAO,MAAMF,QAAA,CAASG,IAAI;QAEhC;QACA,MAAMC,QAAA,GAAW7B,OAAA,CAAQ8B,KAAK,CAAC,KAAKC,GAAG;QAEvC;QACA,MAAMC,IAAA,GAAO,IAAI1B,IAAA,CAAK,CAACqB,IAAA,CAAK,EAAEE,QAAA,EAAU;UAAEjB,IAAA,EAAMe,IAAA,CAAKf;QAAK;QAC1DR,gBAAA,CAAiB4B,IAAA;MACnB,EAAE,OAAOjB,GAAA,EAAG;QACVvF,KAAA,CAAMyG,KAAK,CAAClB,GAAA,CAAEmB,OAAO;MACvB;IACF;EACF;EAEA7G,SAAA,CAAU;IACRiE,MAAA,CAAOpE,oBAAA,CAAqBuD,YAAA,IAAgB,CAAC,GAAG;IAChD,IAAIA,YAAA,EAAcuD,IAAA,EAAMpF,KAAA,YAAiB0D,IAAA,EAAM;MAC7Cd,UAAA,CAAWe,GAAA,CAAIC,eAAe,CAAC/B,YAAA,CAAauD,IAAI,CAACpF,KAAK;IACxD;IACA8C,gBAAA,CAAiB;EACnB,GAAG,CAACjB,YAAA,CAAa;EAEjBpD,SAAA,CAAU;IACR,IAAIyE,YAAA,IAAgBI,WAAA,CAAYiC,OAAO,EAAE;MACvC;IAAA;EAEJ,GAAG,CAACrC,YAAA,CAAa;EAEjB,MAAMsC,eAAA,GACJpD,cAAA,EAAgBqD,MAAA,EAAQC,UAAA,IACxB,YAAYtD,cAAA,IACZA,cAAA,EAAgBuD,MAAA,EAAQD,UAAA;EAE1B,MAAME,aAAA,GAAgB7D,YAAA,EAAc8D,UAAA,EAAY7E,MAAA,GAAS;EACzD,MAAM8E,gBAAA,GAAmBC,OAAA,CAAQhE,YAAA,EAAciE,aAAA;EAC/C;EACA,MAAMC,iBAAA,GAAoBlE,YAAA,EAAcmE,UAAA,KAAe;EAEvD,MAAM;IAAEC,IAAA,EAAMC,QAAA,GAAW,IAAI;IAAEF,UAAA,GAAa;EAAI,CAAE,GAAGnE,YAAA;EAErD,MAAMsE,cAAA,GAAiBH,UAAA,KAAeN,aAAA,IAAiBE,gBAAA,IAAoBG,iBAAgB;EAE3F,MAAMK,eAAA,GAAkBvE,YAAA,CAAawE,SAAS,EAAEC,IAAA,CAAK;EAErD,oBACEpF,KAAA,CAAC;IAAIC,SAAA,EAAW,CAACvC,cAAA,EAAgBc,SAAA,CAAU,CAAC6G,MAAM,CAACV,OAAA,EAASS,IAAI,CAAC;4BAC/DhF,IAAA,CAAC3C,UAAA;MAAW6H,KAAA,EAAO;MAAMpB,OAAA,EAASjD,YAAA;MAAcE,SAAA,EAAWA;QAC1DE,GAAA,CAAIM,QAAQ,IAAI,CAACF,aAAA,iBAChBrB,IAAA,CAAC/B,WAAA;MACCmC,cAAA,EAAgBA,cAAA;MAChB+E,mBAAA,EAAqBtG,aAAA;MACrBoC,GAAA,EAAKA,GAAA;MACLnC,iBAAA,EAAmB8F,QAAA,IAAYC,cAAA;MAC/BO,YAAA,EAAcpB,eAAA,GAAkBf,iBAAA,GAAoBxE,SAAA;MACpD2F,aAAA,EAAeA,aAAA;MACfiB,aAAA,EAAepE,GAAA,CAAIqE,SAAS;MAC5B/E,YAAA,EAAcA;QAGhB,EAACU,GAAA,CAAIM,QAAQ,IAAIF,aAAY,kBAC7BzB,KAAA,CAAC;MAAIC,SAAA,EAAW,GAAGzB,SAAA,UAAmB;iBACnC,CAACI,KAAA,IAAS,CAACkD,YAAA,iBACV1B,IAAA,CAACjC,QAAA;QAASuC,QAAA,EAAUwC,mBAAA;kBAClB,aAAAlD,KAAA,CAAC;UAAIC,SAAA,EAAW,GAAGzB,SAAA,mBAA4B;kCAC7CwB,KAAA,CAAC;YAAIC,SAAA,EAAW,GAAGzB,SAAA,mBAA4B;oCAC7C4B,IAAA,CAACpC,MAAA;cACC2H,WAAA,EAAY;cACZC,OAAA,EAASA,CAAA;gBACP,IAAIzD,QAAA,CAASgC,OAAO,EAAE;kBACpBhC,QAAA,CAASgC,OAAO,CAAC0B,KAAK;gBACxB;cACF;cACAC,IAAA,EAAK;wBAEJzG,CAAA,CAAE;6BAELe,IAAA,CAAC;cACC2F,MAAA,EAAQb,eAAA;cACR,eAAY;cACZjF,SAAA,EAAW,GAAGzB,SAAA,gBAAyB;cACvCwH,MAAM;cACNtF,QAAA,EAAWqC,GAAA;gBACT,IAAIA,GAAA,CAAEE,MAAM,CAACE,KAAK,IAAIJ,GAAA,CAAEE,MAAM,CAACE,KAAK,CAACvD,MAAM,GAAG,GAAG;kBAC/CsD,mBAAA,CAAoBH,GAAA,CAAEE,MAAM,CAACE,KAAK;gBACpC;cACF;cACA8C,GAAA,EAAK9D,QAAA;cACLS,IAAA,EAAK;6BAEPxC,IAAA,CAAC;cAAKH,SAAA,EAAW,GAAGzB,SAAA,UAAmB;wBAAGa,CAAA,CAAE;6BAC5Ce,IAAA,CAACpC,MAAA;cACC2H,WAAA,EAAY;cACZC,OAAA,EAASA,CAAA;gBACP7D,eAAA,CAAgB;cAClB;cACA+D,IAAA,EAAK;wBAEJzG,CAAA,CAAE;;2BAIPW,KAAA,CAAC;YAAEC,SAAA,EAAW,GAAGzB,SAAA,mBAA4B;uBAC1Ca,CAAA,CAAE,eAAc,KAAEA,CAAA,CAAE;;;UAK5ByC,YAAA,iBACC9B,KAAA,CAAC7C,KAAA,CAAMgD,QAAQ;gCACbH,KAAA,CAAC;UAAIC,SAAA,EAAW,GAAGzB,SAAA,oBAA6B;kCAE9C4B,IAAA,CAAC;YACCH,SAAA,EAAW,GAAGzB,SAAA,eAAwB;YACtCkC,QAAA,EAAWqC,GAAA;cACTd,UAAA,CAAWc,GAAA,CAAEE,MAAM,CAACrE,KAAK;YAC3B;YACAqH,GAAA,EAAK/D,WAAA;YACLU,IAAA,EAAK;YACLhE,KAAA,EAAOoD;2BAET5B,IAAA,CAAC;YAAIH,SAAA,EAAW,GAAGzB,SAAA,iBAA0B;sBAC3C,aAAA4B,IAAA,CAAC;cACCH,SAAA,EAAW,GAAGzB,SAAA,YAAqB;cACnCoH,OAAA,EAASA,CAAA;gBACP,KAAKpC,eAAA;cACP;cACAZ,IAAA,EAAK;wBAEJvD,CAAA,CAAE;;;yBAITe,IAAA,CAACpC,MAAA;UACC2H,WAAA,EAAY;UACZ1F,SAAA,EAAW,GAAGzB,SAAA,UAAmB;UACjC0H,IAAA,EAAK;UACLC,SAAA,EAAU;UACVP,OAAA,EAASA,CAAA;YACP7D,eAAA,CAAgB;UAClB;UACAqE,KAAK;UACLC,OAAA,EAAShH,CAAA,CAAE;;UAIhBT,KAAA,IAAS2C,OAAA,iBACRvB,KAAA,CAAC7C,KAAA,CAAMgD,QAAQ;gCACbC,IAAA,CAAC;UAAIH,SAAA,EAAW,GAAGzB,SAAA,kBAA2B;oBAC5C,aAAA4B,IAAA,CAAC7B,SAAA;YACCiC,cAAA,EAAgBA,cAAA;YAChBe,OAAA,EAAStE,OAAA,CAAQ2B,KAAA,CAAMgE,IAAI,IAAIrB,OAAA,GAAU;;yBAG7CvB,KAAA,CAAC;UAAIC,SAAA,EAAW,GAAGzB,SAAA,oBAA6B;kCAE9C4B,IAAA,CAAC;YACCH,SAAA,EAAW,GAAGzB,SAAA,YAAqB;YACnCkC,QAAA,EAAUoC,oBAAA;YACVF,IAAA,EAAK;YACLhE,KAAA,EAAO+C,QAAA,IAAY/C,KAAA,CAAMiD;2BAE3BzB,IAAA,CAACtB,aAAA;YACCG,aAAA,EAAeA,aAAA;YACfC,iBAAA,EAAmB8F,QAAA,IAAYC,cAAA;YAC/B9F,kBAAA,EAAoBqF,aAAA,IAAiBnD,GAAA,CAAIM,QAAQ,IAAI,CAACF,aAAA;YACtDrC,QAAA,EAAUR,KAAA,CAAMgE;;yBAGpBxC,IAAA,CAACpC,MAAA;UACC2H,WAAA,EAAY;UACZ1F,SAAA,EAAW,GAAGzB,SAAA,UAAmB;UACjC0H,IAAA,EAAK;UACLC,SAAA,EAAU;UACVP,OAAA,EAASvC,iBAAA;UACT+C,KAAK;UACLC,OAAA,EAAShH,CAAA,CAAE;;;QAMnB,CAAAT,KAAA,IAASyC,GAAA,CAAIM,QAAQ,KAAD,aACpBvB,IAAA,CAACnC,MAAA;MAAOqI,MAAA,EAAQ;MAAMjG,IAAA,EAAM5B,cAAA;gBAC1B,aAAA2B,IAAA,CAAChC,UAAA;QACCyF,QAAA,EAAUjF,KAAA,EAAOiD,IAAA,IAAQR,GAAA,EAAKM,QAAA;QAC9BJ,OAAA,EAASF,GAAA,EAAKkF,GAAA,IAAOhF,OAAA;QACrBkE,aAAA,EAAepE,GAAA,CAAIqE,SAAS;QAC5Bc,WAAA,EAAazF,WAAA,EAAagE,IAAA,IAAQlG,SAAA;QAClC4H,iBAAA,EAAmB;UACjBC,CAAA,EAAG3F,WAAA,EAAa+D,UAAA,EAAY4B,CAAA,IAAKrF,GAAA,CAAIsF,MAAM,IAAI;UAC/CC,CAAA,EAAG7F,WAAA,EAAa+D,UAAA,EAAY8B,CAAA,IAAKvF,GAAA,CAAIwF,MAAM,IAAI;QACjD;QACAC,MAAA,EAAQxD,WAAA;QACR0B,QAAA,EAAUA,QAAA;QACVC,cAAA,EAAgBA;;QAIrB5D,GAAA,IAAOmD,aAAA,iBACNpE,IAAA,CAACnC,MAAA;MACCgC,SAAA,EAAW,GAAGzB,SAAA,iBAA0B;MACxCuI,UAAU;MACV1G,IAAA,EAAM3B,eAAA;MACNsI,KAAA,EAAO3H,CAAA,CAAE,mBAAmB;QAAE4H,KAAA,EAAO5F,GAAA,EAAKM;MAAS;gBAEnD,aAAAvB,IAAA,CAAC9B,YAAA;QAAa+C,GAAA,EAAKA,GAAA;QAAKoE,aAAA,EAAepE,GAAA,CAAIqE,SAAS;QAAE/E,YAAA,EAAcA;;;;AAK9E;AA1V6B,SAAAZ,MAAAmH,YAAA,EAAAC,CAAA;EAAA,OAiCZ/G,IAAA,CAAAjD,KAAA,CAAAgD,QAAA;IAAAD,QAAA,EAAyBgH;EAAA,GAAJC,CAAA;AAAA","ignoreList":[]}
@@ -23,4 +23,4 @@ In order to be iterable, non-array objects must have a [Symbol.iterator]() metho
23
23
  `},ye=ve(ut)(we),lt={config:at},Oe=lt;var st=function(){for(var t=arguments.length,r=new Array(t),n=0;n<t;n++)r[n]=arguments[n];return function(o){return r.reduceRight(function(i,a){return a(i)},o)}},je=st;function Me(e,t){return Object.keys(t).forEach(function(r){t[r]instanceof Object&&e[r]&&Object.assign(t[r],Me(e[r],t[r]))}),ee(ee({},e),t)}var Se=Me;var ft={type:"cancelation",msg:"operation is manually canceled"};function dt(e){var t=!1,r=new Promise(function(n,o){e.then(function(i){return t?o(ft):n(i)}),e.catch(o)});return r.cancel=function(){return t=!0},r}var K=dt;var pt=ge.create({config:he,isInitialized:!1,resolve:null,reject:null,monaco:null}),Pe=de(pt,2),_=Pe[0],G=Pe[1];function mt(e){var t=Oe.config(e),r=t.monaco,n=fe(t,["monaco"]);G(function(o){return{config:Se(o.config,n),monaco:r}})}function gt(){var e=_(function(t){var r=t.monaco,n=t.isInitialized,o=t.resolve;return{monaco:r,isInitialized:n,resolve:o}});if(!e.isInitialized){if(G({isInitialized:!0}),e.monaco)return e.resolve(e.monaco),K(te);if(window.monaco&&window.monaco.editor)return Ee(window.monaco),e.resolve(window.monaco),K(te);je(ht,bt)(yt)}return K(te)}function ht(e){return document.body.appendChild(e)}function vt(e){var t=document.createElement("script");return e&&(t.src=e),t}function bt(e){var t=_(function(n){var o=n.config,i=n.reject;return{config:o,reject:i}}),r=vt("".concat(t.config.paths.vs,"/loader.js"));return r.onload=function(){return e()},r.onerror=t.reject,r}function yt(){var e=_(function(r){var n=r.config,o=r.resolve,i=r.reject;return{config:n,resolve:o,reject:i}}),t=window.require;t.config(e.config),t(["vs/editor/editor.main"],function(r){Ee(r),e.resolve(r)},function(r){e.reject(r)})}function Ee(e){_().monaco||G({monaco:e})}function wt(){return _(function(e){var t=e.monaco;return t})}var te=new Promise(function(e,t){return G({resolve:e,reject:t})}),Ot={config:mt,init:gt,__getMonacoInstance:wt},L=Ot;import{memo as jt}from"react";import Mt,{useState as Ie,useRef as R,useCallback as Ce,useEffect as Te}from"react";import{memo as St}from"react";import re from"react";import Et from"react";import{useEffect as Dt}from"react";import{useEffect as Wt,useRef as Nt}from"react";import{useState as Hr}from"react";import{memo as qt}from"react";import Bt,{useState as xe,useEffect as Y,useRef as M,useCallback as Ft}from"react";import{useEffect as kt,useRef as Kt}from"react";var Pt={wrapper:{display:"flex",position:"relative",textAlign:"initial"},fullWidth:{width:"100%"},hide:{display:"none"}},ne=Pt,It={container:{display:"flex",height:"100%",width:"100%",justifyContent:"center",alignItems:"center"}},Ct=It;function Tt({children:e}){return Et.createElement("div",{style:Ct.container},e)}var xt=Tt,Lt=xt;function At({width:e,height:t,isEditorReady:r,loading:n,_ref:o,className:i,wrapperProps:a}){return re.createElement("section",{style:{...ne.wrapper,width:e,height:t},...a},!r&&re.createElement(Lt,null,n),re.createElement("div",{ref:o,style:{...ne.fullWidth,...!r&&ne.hide},className:i}))}var Rt=At,Le=St(Rt);function Vt(e){Dt(e,[])}var Ae=Vt;function zt(e,t,r=!0){let n=Nt(!0);Wt(n.current||!r?()=>{n.current=!1}:e,t)}var w=zt;function $(){}function D(e,t,r,n){return Ht(e,n)||Ut(e,t,r,n)}function Ht(e,t){return e.editor.getModel(Re(e,t))}function Ut(e,t,r,n){return e.editor.createModel(t,r,n?Re(e,n):void 0)}function Re(e,t){return e.Uri.parse(t)}function _t({original:e,modified:t,language:r,originalLanguage:n,modifiedLanguage:o,originalModelPath:i,modifiedModelPath:a,keepCurrentOriginalModel:l=!1,keepCurrentModifiedModel:s=!1,theme:d="light",loading:O="Loading...",options:h={},height:T="100%",width:S="100%",className:P,wrapperProps:E={},beforeMount:j=$,onMount:x=$}){let[y,V]=Ie(!1),[W,p]=Ie(!0),m=R(null),f=R(null),N=R(null),v=R(x),c=R(j),A=R(!1);Ae(()=>{let u=L.init();return u.then(g=>(f.current=g)&&p(!1)).catch(g=>g?.type!=="cancelation"&&console.error("Monaco initialization: error:",g)),()=>m.current?z():u.cancel()}),w(()=>{if(m.current&&f.current){let u=m.current.getOriginalEditor(),g=D(f.current,e||"",n||r||"text",i||"");g!==u.getModel()&&u.setModel(g)}},[i],y),w(()=>{if(m.current&&f.current){let u=m.current.getModifiedEditor(),g=D(f.current,t||"",o||r||"text",a||"");g!==u.getModel()&&u.setModel(g)}},[a],y),w(()=>{let u=m.current.getModifiedEditor();u.getOption(f.current.editor.EditorOption.readOnly)?u.setValue(t||""):t!==u.getValue()&&(u.executeEdits("",[{range:u.getModel().getFullModelRange(),text:t||"",forceMoveMarkers:!0}]),u.pushUndoStop())},[t],y),w(()=>{m.current?.getModel()?.original.setValue(e||"")},[e],y),w(()=>{let{original:u,modified:g}=m.current.getModel();f.current.editor.setModelLanguage(u,n||r||"text"),f.current.editor.setModelLanguage(g,o||r||"text")},[r,n,o],y),w(()=>{f.current?.editor.setTheme(d)},[d],y),w(()=>{m.current?.updateOptions(h)},[h],y);let q=Ce(()=>{if(!f.current)return;c.current(f.current);let u=D(f.current,e||"",n||r||"text",i||""),g=D(f.current,t||"",o||r||"text",a||"");m.current?.setModel({original:u,modified:g})},[r,t,o,e,n,i,a]),B=Ce(()=>{!A.current&&N.current&&(m.current=f.current.editor.createDiffEditor(N.current,{automaticLayout:!0,...h}),q(),f.current?.editor.setTheme(d),V(!0),A.current=!0)},[h,d,q]);Te(()=>{y&&v.current(m.current,f.current)},[y]),Te(()=>{!W&&!y&&B()},[W,y,B]);function z(){let u=m.current?.getModel();l||u?.original?.dispose(),s||u?.modified?.dispose(),m.current?.dispose()}return Mt.createElement(Le,{width:S,height:T,isEditorReady:y,loading:O,_ref:N,className:P,wrapperProps:E})}var $t=_t,Nr=jt($t);function Gt(e){let t=Kt();return kt(()=>{t.current=e},[e]),t.current}var Yt=Gt,J=new Map;function Jt({defaultValue:e,defaultLanguage:t,defaultPath:r,value:n,language:o,path:i,theme:a="light",line:l,loading:s="Loading...",options:d={},overrideServices:O={},saveViewState:h=!0,keepCurrentModel:T=!1,width:S="100%",height:P="100%",className:E,wrapperProps:j={},beforeMount:x=$,onMount:y=$,onChange:V,onValidate:W=$}){let[p,m]=xe(!1),[f,N]=xe(!0),v=M(null),c=M(null),A=M(null),q=M(y),B=M(x),z=M(),u=M(n),g=Yt(i),ie=M(!1),Q=M(!1);Ae(()=>{let b=L.init();return b.then(I=>(v.current=I)&&N(!1)).catch(I=>I?.type!=="cancelation"&&console.error("Monaco initialization: error:",I)),()=>c.current?Ve():b.cancel()}),w(()=>{let b=D(v.current,e||n||"",t||o||"",i||r||"");b!==c.current?.getModel()&&(h&&J.set(g,c.current?.saveViewState()),c.current?.setModel(b),h&&c.current?.restoreViewState(J.get(i)))},[i],p),w(()=>{c.current?.updateOptions(d)},[d],p),w(()=>{!c.current||n===void 0||(c.current.getOption(v.current.editor.EditorOption.readOnly)?c.current.setValue(n):n!==c.current.getValue()&&(Q.current=!0,c.current.executeEdits("",[{range:c.current.getModel().getFullModelRange(),text:n,forceMoveMarkers:!0}]),c.current.pushUndoStop(),Q.current=!1))},[n],p),w(()=>{let b=c.current?.getModel();b&&o&&v.current?.editor.setModelLanguage(b,o)},[o],p),w(()=>{l!==void 0&&c.current?.revealLine(l)},[l],p),w(()=>{v.current?.editor.setTheme(a)},[a],p);let ae=Ft(()=>{if(!(!A.current||!v.current)&&!ie.current){B.current(v.current);let b=i||r,I=D(v.current,n||e||"",t||o||"",b||"");c.current=v.current?.editor.create(A.current,{model:I,automaticLayout:!0,...d},O),h&&c.current.restoreViewState(J.get(b)),v.current.editor.setTheme(a),l!==void 0&&c.current.revealLine(l),m(!0),ie.current=!0}},[e,t,r,n,o,i,d,O,h,a,l]);Y(()=>{p&&q.current(c.current,v.current)},[p]),Y(()=>{!f&&!p&&ae()},[f,p,ae]),u.current=n,Y(()=>{p&&V&&(z.current?.dispose(),z.current=c.current?.onDidChangeModelContent(b=>{Q.current||V(c.current.getValue(),b)}))},[p,V]),Y(()=>{if(p){let b=v.current.editor.onDidChangeMarkers(I=>{let X=c.current.getModel()?.uri;if(X&&I.find(Z=>Z.path===X.path)){let Z=v.current.editor.getModelMarkers({resource:X});W?.(Z)}});return()=>{b?.dispose()}}return()=>{}},[p,W]);function Ve(){z.current?.dispose(),T?h&&J.set(i,c.current.saveViewState()):c.current.getModel()?.dispose(),c.current.dispose()}return Bt.createElement(Le,{width:S,height:P,isEditorReady:p,loading:s,_ref:A,className:E,wrapperProps:j})}var Qt=Jt,Xt=qt(Qt),oe=Xt;import{useState as er}from"react";var tr=oe.default||oe,rr="code-editor",nr=e=>{let t=Zt(20),r,n,o,i;t[0]!==e?({className:o,options:i,readOnly:n,...r}=e,t[0]=e,t[1]=r,t[2]=n,t[3]=o,t[4]=i):(r=t[1],n=t[2],o=t[3],i=t[4]);let[a,l]=er(20),{theme:s}=ue(),d=r?.defaultLanguage?`language--${r.defaultLanguage}`:"",O=n&&"read-only",h;t[5]!==o||t[6]!==d||t[7]!==O?(h=[rr,o,d,O].filter(Boolean),t[5]=o,t[6]=d,t[7]=O,t[8]=h):h=t[8];let T=h.join(" "),S;if(t[9]!==a||t[10]!==n||t[11]!==i||t[12]!==s||t[13]!==r||t[14]!==T){let P;t[16]!==r.onChange?(P=(j,x)=>{r.onChange?.(j,x),l(j.split(`
24
24
  `).length*18+2)},t[16]=r.onChange,t[17]=P):P=t[17];let E;t[18]!==r.onMount?(E=(j,x)=>{r.onMount?.(j,x),l(j.getValue().split(`
25
25
  `).length*18+2)},t[18]=r.onMount,t[19]=E):E=t[19],S=De(tr,{className:T,loading:De(ce,{height:a}),options:{detectIndentation:!0,hideCursorInOverviewRuler:!0,minimap:{enabled:!1},overviewRulerBorder:!1,readOnly:!!n,scrollbar:{alwaysConsumeMouseWheel:!1},scrollBeyondLastLine:!1,tabSize:2,wordWrap:"on",...i},theme:s==="dark"?"vs-dark":"vs",...r,height:a,onChange:P,onMount:E}),t[9]=a,t[10]=n,t[11]=i,t[12]=s,t[13]=r,t[14]=T,t[15]=S}else S=t[15];return S},Zr=nr;export{Zr as default};
26
- //# sourceMappingURL=CodeEditor-4A6256PR.js.map
26
+ //# sourceMappingURL=CodeEditor-VPUKDCXS.js.map