@payloadcms/ui 3.65.0-internal.ef335bd → 3.65.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (46) hide show
  1. package/dist/elements/AppHeader/index.scss +2 -2
  2. package/dist/elements/CloseModalOnRouteChange/index.d.ts +2 -0
  3. package/dist/elements/CloseModalOnRouteChange/index.d.ts.map +1 -0
  4. package/dist/elements/CloseModalOnRouteChange/index.js +51 -0
  5. package/dist/elements/CloseModalOnRouteChange/index.js.map +1 -0
  6. package/dist/elements/QueryPresets/cells/WhereCell/index.js +2 -2
  7. package/dist/elements/QueryPresets/cells/WhereCell/index.js.map +1 -1
  8. package/dist/elements/QueryPresets/fields/WhereField/index.d.ts.map +1 -1
  9. package/dist/elements/QueryPresets/fields/WhereField/index.js +4 -1
  10. package/dist/elements/QueryPresets/fields/WhereField/index.js.map +1 -1
  11. package/dist/exports/client/{CodeEditor-IVFMKS4Z.js → CodeEditor-ORMD3ID3.js} +2 -2
  12. package/dist/exports/client/{chunk-XUCNM5EK.js → chunk-PXD7OIXB.js} +1 -1
  13. package/dist/exports/client/{chunk-XUCNM5EK.js.map → chunk-PXD7OIXB.js.map} +2 -2
  14. package/dist/exports/client/index.d.ts +1 -0
  15. package/dist/exports/client/index.d.ts.map +1 -1
  16. package/dist/exports/client/index.js +12 -12
  17. package/dist/exports/client/index.js.map +4 -4
  18. package/dist/fields/Array/index.js +1 -1
  19. package/dist/fields/Array/index.js.map +1 -1
  20. package/dist/fields/Blocks/BlockSelector/BlockSearch/index.d.ts.map +1 -0
  21. package/dist/fields/Blocks/BlockSelector/BlockSearch/index.js.map +1 -0
  22. package/dist/fields/Blocks/BlockSelector/index.d.ts +13 -0
  23. package/dist/fields/Blocks/BlockSelector/index.d.ts.map +1 -0
  24. package/dist/fields/Blocks/BlockSelector/index.js +116 -0
  25. package/dist/fields/Blocks/BlockSelector/index.js.map +1 -0
  26. package/dist/fields/Blocks/BlocksDrawer/index.d.ts +0 -1
  27. package/dist/fields/Blocks/BlocksDrawer/index.d.ts.map +1 -1
  28. package/dist/fields/Blocks/BlocksDrawer/index.js +62 -105
  29. package/dist/fields/Blocks/BlocksDrawer/index.js.map +1 -1
  30. package/dist/hooks/useControllableState.d.ts.map +1 -1
  31. package/dist/hooks/useControllableState.js.map +1 -1
  32. package/dist/providers/ListQuery/sanitizeQuery.d.ts.map +1 -1
  33. package/dist/providers/ListQuery/sanitizeQuery.js +1 -1
  34. package/dist/providers/ListQuery/sanitizeQuery.js.map +1 -1
  35. package/dist/providers/Root/index.d.ts.map +1 -1
  36. package/dist/providers/Root/index.js +4 -3
  37. package/dist/providers/Root/index.js.map +1 -1
  38. package/dist/styles.css +1 -1
  39. package/package.json +5 -5
  40. package/dist/fields/Blocks/BlocksDrawer/BlockSearch/index.d.ts.map +0 -1
  41. package/dist/fields/Blocks/BlocksDrawer/BlockSearch/index.js.map +0 -1
  42. /package/dist/exports/client/{CodeEditor-IVFMKS4Z.js.map → CodeEditor-ORMD3ID3.js.map} +0 -0
  43. /package/dist/fields/Blocks/{BlocksDrawer → BlockSelector}/BlockSearch/index.d.ts +0 -0
  44. /package/dist/fields/Blocks/{BlocksDrawer → BlockSelector}/BlockSearch/index.js +0 -0
  45. /package/dist/fields/Blocks/{BlocksDrawer → BlockSelector}/BlockSearch/index.scss +0 -0
  46. /package/dist/fields/Blocks/{BlocksDrawer → BlockSelector}/index.scss +0 -0
@@ -57,7 +57,7 @@ export const ArrayFieldComponent = props => {
57
57
  validate
58
58
  } = props;
59
59
  const schemaPath = schemaPathFromProps ?? name;
60
- const minRows = minRowsProp ?? required ? 1 : 0;
60
+ const minRows = minRowsProp ?? (required ? 1 : 0);
61
61
  const {
62
62
  setDocFieldPreferences
63
63
  } = useDocumentInfo();
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["getTranslation","React","Fragment","useCallback","useMemo","toast","Banner","Button","clipboardCopy","clipboardPaste","ClipboardAction","mergeFormStateFromClipboard","reduceFormStateByPath","DraggableSortableItem","DraggableSortable","ErrorPill","RenderCustomComponent","FieldDescription","FieldError","FieldLabel","useForm","useFormSubmitted","extractRowsAndCollapsedIDs","toggleAllRows","NullifyLocaleField","useField","withCondition","useConfig","useDocumentInfo","useLocale","useTranslation","scrollToID","mergeFieldStyles","fieldBaseClass","ArrayRow","baseClass","ArrayFieldComponent","props","field","name","type","admin","className","description","isSortable","fields","label","localized","maxRows","minRows","minRowsProp","required","forceRender","path","pathFromProps","permissions","readOnly","schemaPath","schemaPathFromProps","validate","setDocFieldPreferences","addFieldRow","dispatchFields","getFields","moveFieldRow","removeFieldRow","replaceState","setModified","submitted","code","locale","i18n","t","config","localization","editingDefaultLocale","fallback","defaultLocale","getLabels","p","labels","plural","singular","undefined","memoizedValidate","value","options","customComponents","AfterInput","BeforeInput","Description","Error","Label","disabled","errorPaths","rows","showError","valid","hasRows","potentiallyStalePath","addRow","rowIndex","setTimeout","duplicateRow","removeRow","moveRow","moveFromIndex","moveToIndex","toggleCollapseAll","collapsed","collapsedIDs","updatedRows","setCollapse","rowID","copyRow","formState","clipboardResult","getDataToCopy","error","success","pasteRow","pasteArgs","onPaste","dataFromClipboard","newState","schemaFields","pasteField","hasMaxRows","length","fieldErrorCount","fieldHasErrors","showRequired","showMinRows","styles","_jsxs","filter","Boolean","join","id","replace","style","_jsx","CustomComponent","Fallback","as","count","withMessage","onClick","allowCopy","allowPaste","fieldValue","ids","map","row","onDragEnd","rowData","i","isLoading","rowPath","rowErrorCount","errorPath","startsWith","draggableSortableItemProps","CustomRowLabel","RowLabel","errorCount","parentPath","rowCount","buttonStyle","icon","iconPosition","iconStyle","ArrayField"],"sources":["../../../src/fields/Array/index.tsx"],"sourcesContent":["'use client'\nimport type {\n ArrayFieldClientComponent,\n ArrayFieldClientProps,\n ArrayField as ArrayFieldType,\n} from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport React, { Fragment, useCallback, useMemo } from 'react'\nimport { toast } from 'sonner'\n\nimport type { ClipboardPasteData } from '../../elements/ClipboardAction/types.js'\n\nimport { Banner } from '../../elements/Banner/index.js'\nimport { Button } from '../../elements/Button/index.js'\nimport { clipboardCopy, clipboardPaste } from '../../elements/ClipboardAction/clipboardUtilities.js'\nimport { ClipboardAction } from '../../elements/ClipboardAction/index.js'\nimport {\n mergeFormStateFromClipboard,\n reduceFormStateByPath,\n} from '../../elements/ClipboardAction/mergeFormStateFromClipboard.js'\nimport { DraggableSortableItem } from '../../elements/DraggableSortable/DraggableSortableItem/index.js'\nimport { DraggableSortable } from '../../elements/DraggableSortable/index.js'\nimport { ErrorPill } from '../../elements/ErrorPill/index.js'\nimport { RenderCustomComponent } from '../../elements/RenderCustomComponent/index.js'\nimport { FieldDescription } from '../../fields/FieldDescription/index.js'\nimport { FieldError } from '../../fields/FieldError/index.js'\nimport { FieldLabel } from '../../fields/FieldLabel/index.js'\nimport { useForm, useFormSubmitted } from '../../forms/Form/context.js'\nimport { extractRowsAndCollapsedIDs, toggleAllRows } from '../../forms/Form/rowHelpers.js'\nimport { NullifyLocaleField } from '../../forms/NullifyField/index.js'\nimport { useField } from '../../forms/useField/index.js'\nimport { withCondition } from '../../forms/withCondition/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useDocumentInfo } from '../../providers/DocumentInfo/index.js'\nimport { useLocale } from '../../providers/Locale/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { scrollToID } from '../../utilities/scrollToID.js'\nimport { mergeFieldStyles } from '../mergeFieldStyles.js'\nimport { fieldBaseClass } from '../shared/index.js'\nimport { ArrayRow } from './ArrayRow.js'\nimport './index.scss'\n\nconst baseClass = 'array-field'\n\nexport const ArrayFieldComponent: ArrayFieldClientComponent = (props) => {\n const {\n field,\n field: {\n name,\n type,\n admin: { className, description, isSortable = true } = {},\n fields,\n label,\n localized,\n maxRows,\n minRows: minRowsProp,\n required,\n },\n forceRender = false,\n path: pathFromProps,\n permissions,\n readOnly,\n schemaPath: schemaPathFromProps,\n validate,\n } = props\n\n const schemaPath = schemaPathFromProps ?? name\n\n const minRows = (minRowsProp ?? required) ? 1 : 0\n\n const { setDocFieldPreferences } = useDocumentInfo()\n const {\n addFieldRow,\n dispatchFields,\n getFields,\n moveFieldRow,\n removeFieldRow,\n replaceState,\n setModified,\n } = useForm()\n const submitted = useFormSubmitted()\n const { code: locale } = useLocale()\n const { i18n, t } = useTranslation()\n\n const {\n config: { localization },\n } = useConfig()\n\n const editingDefaultLocale = (() => {\n if (localization && localization.fallback) {\n const defaultLocale = localization.defaultLocale\n return locale === defaultLocale\n }\n\n return true\n })()\n\n // Handle labeling for Arrays, Global Arrays, and Blocks\n const getLabels = (p: ArrayFieldClientProps): Partial<ArrayFieldType['labels']> => {\n if ('labels' in p && p?.labels) {\n return p.labels\n }\n\n if ('labels' in p.field && p.field.labels) {\n return { plural: p.field.labels?.plural, singular: p.field.labels?.singular }\n }\n\n if ('label' in p.field && p.field.label) {\n return { plural: undefined, singular: p.field.label }\n }\n\n return { plural: t('general:rows'), singular: t('general:row') }\n }\n\n const labels = getLabels(props)\n\n const memoizedValidate = useCallback(\n (value, options) => {\n // alternative locales can be null\n if (!editingDefaultLocale && value === null) {\n return true\n }\n\n if (typeof validate === 'function') {\n return validate(value, { ...options, maxRows, minRows, required })\n }\n },\n [maxRows, minRows, required, validate, editingDefaultLocale],\n )\n\n const {\n customComponents: { AfterInput, BeforeInput, Description, Error, Label } = {},\n disabled,\n errorPaths,\n path,\n rows = [],\n showError,\n valid,\n value,\n } = useField<number>({\n hasRows: true,\n potentiallyStalePath: pathFromProps,\n validate: memoizedValidate,\n })\n\n const addRow = useCallback(\n (rowIndex: number) => {\n addFieldRow({\n path,\n rowIndex,\n schemaPath,\n })\n\n setTimeout(() => {\n scrollToID(`${path}-row-${rowIndex}`)\n }, 0)\n },\n [addFieldRow, path, schemaPath],\n )\n\n const duplicateRow = useCallback(\n (rowIndex: number) => {\n dispatchFields({ type: 'DUPLICATE_ROW', path, rowIndex })\n\n setModified(true)\n\n setTimeout(() => {\n scrollToID(`${path}-row-${rowIndex}`)\n }, 0)\n },\n [dispatchFields, path, setModified],\n )\n\n const removeRow = useCallback(\n (rowIndex: number) => {\n removeFieldRow({ path, rowIndex })\n },\n [removeFieldRow, path],\n )\n\n const moveRow = useCallback(\n (moveFromIndex: number, moveToIndex: number) => {\n moveFieldRow({\n moveFromIndex,\n moveToIndex,\n path,\n })\n },\n [path, moveFieldRow],\n )\n\n const toggleCollapseAll = useCallback(\n (collapsed: boolean) => {\n const { collapsedIDs, updatedRows } = toggleAllRows({\n collapsed,\n rows,\n })\n setDocFieldPreferences(path, { collapsed: collapsedIDs })\n dispatchFields({ type: 'SET_ALL_ROWS_COLLAPSED', path, updatedRows })\n },\n [dispatchFields, path, rows, setDocFieldPreferences],\n )\n\n const setCollapse = useCallback(\n (rowID: string, collapsed: boolean) => {\n const { collapsedIDs, updatedRows } = extractRowsAndCollapsedIDs({\n collapsed,\n rowID,\n rows,\n })\n\n dispatchFields({ type: 'SET_ROW_COLLAPSED', path, updatedRows })\n setDocFieldPreferences(path, { collapsed: collapsedIDs })\n },\n [dispatchFields, path, rows, setDocFieldPreferences],\n )\n\n const copyRow = useCallback(\n (rowIndex: number) => {\n const formState = { ...getFields() }\n const clipboardResult = clipboardCopy({\n type,\n fields,\n getDataToCopy: () =>\n reduceFormStateByPath({\n formState,\n path,\n rowIndex,\n }),\n path,\n rowIndex,\n t,\n })\n\n if (typeof clipboardResult === 'string') {\n toast.error(clipboardResult)\n } else {\n toast.success(t('general:copied'))\n }\n },\n [fields, getFields, path, t, type],\n )\n\n const pasteRow = useCallback(\n (rowIndex: number) => {\n const formState = { ...getFields() }\n const pasteArgs = {\n onPaste: (dataFromClipboard: ClipboardPasteData) => {\n const newState = mergeFormStateFromClipboard({\n dataFromClipboard,\n formState,\n path,\n rowIndex,\n })\n replaceState(newState)\n setModified(true)\n },\n path,\n schemaFields: fields,\n t,\n }\n\n const clipboardResult = clipboardPaste(pasteArgs)\n\n if (typeof clipboardResult === 'string') {\n toast.error(clipboardResult)\n }\n },\n [fields, getFields, path, replaceState, setModified, t],\n )\n\n const pasteField = useCallback(\n (dataFromClipboard: ClipboardPasteData) => {\n const formState = { ...getFields() }\n const newState = mergeFormStateFromClipboard({\n dataFromClipboard,\n formState,\n path,\n })\n replaceState(newState)\n setModified(true)\n },\n [getFields, path, replaceState, setModified],\n )\n\n const getDataToCopy = useCallback(\n () =>\n reduceFormStateByPath({\n formState: { ...getFields() },\n path,\n }),\n [getFields, path],\n )\n\n const hasMaxRows = maxRows && rows.length >= maxRows\n\n const fieldErrorCount = errorPaths.length\n const fieldHasErrors = submitted && errorPaths.length > 0\n\n const showRequired = (readOnly || disabled) && rows.length === 0\n const showMinRows = (rows.length && rows.length < minRows) || (required && rows.length === 0)\n\n const styles = useMemo(() => mergeFieldStyles(field), [field])\n\n return (\n <div\n className={[\n fieldBaseClass,\n baseClass,\n className,\n fieldHasErrors ? `${baseClass}--has-error` : `${baseClass}--has-no-error`,\n ]\n .filter(Boolean)\n .join(' ')}\n id={`field-${path.replace(/\\./g, '__')}`}\n style={styles}\n >\n {showError && (\n <RenderCustomComponent\n CustomComponent={Error}\n Fallback={<FieldError path={path} showError={showError} />}\n />\n )}\n <header className={`${baseClass}__header`}>\n <div className={`${baseClass}__header-wrap`}>\n <div className={`${baseClass}__header-content`}>\n <h3 className={`${baseClass}__title`}>\n <RenderCustomComponent\n CustomComponent={Label}\n Fallback={\n <FieldLabel\n as=\"span\"\n label={label}\n localized={localized}\n path={path}\n required={required}\n />\n }\n />\n </h3>\n {fieldHasErrors && fieldErrorCount > 0 && (\n <ErrorPill count={fieldErrorCount} i18n={i18n} withMessage />\n )}\n </div>\n <ul className={`${baseClass}__header-actions`}>\n {rows?.length > 0 && (\n <Fragment>\n <li>\n <button\n className={`${baseClass}__header-action`}\n onClick={() => toggleCollapseAll(true)}\n type=\"button\"\n >\n {t('fields:collapseAll')}\n </button>\n </li>\n <li>\n <button\n className={`${baseClass}__header-action`}\n onClick={() => toggleCollapseAll(false)}\n type=\"button\"\n >\n {t('fields:showAll')}\n </button>\n </li>\n </Fragment>\n )}\n <li>\n <ClipboardAction\n allowCopy={rows?.length > 0}\n allowPaste={!readOnly}\n className={`${baseClass}__header-action`}\n disabled={disabled}\n fields={fields}\n getDataToCopy={getDataToCopy}\n onPaste={pasteField}\n path={path}\n type={type}\n />\n </li>\n </ul>\n </div>\n <RenderCustomComponent\n CustomComponent={Description}\n Fallback={<FieldDescription description={description} path={path} />}\n />\n </header>\n <NullifyLocaleField\n fieldValue={value}\n localized={localized}\n path={path}\n readOnly={readOnly}\n />\n {BeforeInput}\n {(rows?.length > 0 || (!valid && (showRequired || showMinRows))) && (\n <DraggableSortable\n className={`${baseClass}__draggable-rows`}\n ids={rows.map((row) => row.id)}\n onDragEnd={({ moveFromIndex, moveToIndex }) => moveRow(moveFromIndex, moveToIndex)}\n >\n {rows.map((rowData, i) => {\n const { id: rowID, isLoading } = rowData\n\n const rowPath = `${path}.${i}`\n\n const rowErrorCount = errorPaths?.filter((errorPath) =>\n errorPath.startsWith(rowPath + '.'),\n ).length\n\n return (\n <DraggableSortableItem\n disabled={readOnly || disabled || !isSortable}\n id={rowID}\n key={rowID}\n >\n {(draggableSortableItemProps) => (\n <ArrayRow\n {...draggableSortableItemProps}\n addRow={addRow}\n copyRow={copyRow}\n CustomRowLabel={rows?.[i]?.customComponents?.RowLabel}\n duplicateRow={duplicateRow}\n errorCount={rowErrorCount}\n fields={fields}\n forceRender={forceRender}\n hasMaxRows={hasMaxRows}\n isLoading={isLoading}\n isSortable={isSortable}\n labels={labels}\n moveRow={moveRow}\n parentPath={path}\n pasteRow={pasteRow}\n path={rowPath}\n permissions={permissions}\n readOnly={readOnly || disabled}\n removeRow={removeRow}\n row={rowData}\n rowCount={rows?.length}\n rowIndex={i}\n schemaPath={schemaPath}\n setCollapse={setCollapse}\n />\n )}\n </DraggableSortableItem>\n )\n })}\n {!valid && (\n <React.Fragment>\n {showRequired && (\n <Banner>\n {t('validation:fieldHasNo', { label: getTranslation(labels.plural, i18n) })}\n </Banner>\n )}\n {showMinRows && (\n <Banner type=\"error\">\n {t('validation:requiresAtLeast', {\n count: minRows,\n label:\n getTranslation(minRows > 1 ? labels.plural : labels.singular, i18n) ||\n t(minRows > 1 ? 'general:rows' : 'general:row'),\n })}\n </Banner>\n )}\n </React.Fragment>\n )}\n </DraggableSortable>\n )}\n {!hasMaxRows && !readOnly && (\n <Button\n buttonStyle=\"icon-label\"\n className={`${baseClass}__add-row`}\n disabled={disabled}\n icon=\"plus\"\n iconPosition=\"left\"\n iconStyle=\"with-border\"\n onClick={() => {\n void addRow(value || 0)\n }}\n >\n {t('fields:addLabel', { label: getTranslation(labels.singular, i18n) })}\n </Button>\n )}\n {AfterInput}\n </div>\n )\n}\n\nexport const ArrayField = withCondition(ArrayFieldComponent)\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["getTranslation","React","Fragment","useCallback","useMemo","toast","Banner","Button","clipboardCopy","clipboardPaste","ClipboardAction","mergeFormStateFromClipboard","reduceFormStateByPath","DraggableSortableItem","DraggableSortable","ErrorPill","RenderCustomComponent","FieldDescription","FieldError","FieldLabel","useForm","useFormSubmitted","extractRowsAndCollapsedIDs","toggleAllRows","NullifyLocaleField","useField","withCondition","useConfig","useDocumentInfo","useLocale","useTranslation","scrollToID","mergeFieldStyles","fieldBaseClass","ArrayRow","baseClass","ArrayFieldComponent","props","field","name","type","admin","className","description","isSortable","fields","label","localized","maxRows","minRows","minRowsProp","required","forceRender","path","pathFromProps","permissions","readOnly","schemaPath","schemaPathFromProps","validate","setDocFieldPreferences","addFieldRow","dispatchFields","getFields","moveFieldRow","removeFieldRow","replaceState","setModified","submitted","code","locale","i18n","t","config","localization","editingDefaultLocale","fallback","defaultLocale","getLabels","p","labels","plural","singular","undefined","memoizedValidate","value","options","customComponents","AfterInput","BeforeInput","Description","Error","Label","disabled","errorPaths","rows","showError","valid","hasRows","potentiallyStalePath","addRow","rowIndex","setTimeout","duplicateRow","removeRow","moveRow","moveFromIndex","moveToIndex","toggleCollapseAll","collapsed","collapsedIDs","updatedRows","setCollapse","rowID","copyRow","formState","clipboardResult","getDataToCopy","error","success","pasteRow","pasteArgs","onPaste","dataFromClipboard","newState","schemaFields","pasteField","hasMaxRows","length","fieldErrorCount","fieldHasErrors","showRequired","showMinRows","styles","_jsxs","filter","Boolean","join","id","replace","style","_jsx","CustomComponent","Fallback","as","count","withMessage","onClick","allowCopy","allowPaste","fieldValue","ids","map","row","onDragEnd","rowData","i","isLoading","rowPath","rowErrorCount","errorPath","startsWith","draggableSortableItemProps","CustomRowLabel","RowLabel","errorCount","parentPath","rowCount","buttonStyle","icon","iconPosition","iconStyle","ArrayField"],"sources":["../../../src/fields/Array/index.tsx"],"sourcesContent":["'use client'\nimport type {\n ArrayFieldClientComponent,\n ArrayFieldClientProps,\n ArrayField as ArrayFieldType,\n} from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport React, { Fragment, useCallback, useMemo } from 'react'\nimport { toast } from 'sonner'\n\nimport type { ClipboardPasteData } from '../../elements/ClipboardAction/types.js'\n\nimport { Banner } from '../../elements/Banner/index.js'\nimport { Button } from '../../elements/Button/index.js'\nimport { clipboardCopy, clipboardPaste } from '../../elements/ClipboardAction/clipboardUtilities.js'\nimport { ClipboardAction } from '../../elements/ClipboardAction/index.js'\nimport {\n mergeFormStateFromClipboard,\n reduceFormStateByPath,\n} from '../../elements/ClipboardAction/mergeFormStateFromClipboard.js'\nimport { DraggableSortableItem } from '../../elements/DraggableSortable/DraggableSortableItem/index.js'\nimport { DraggableSortable } from '../../elements/DraggableSortable/index.js'\nimport { ErrorPill } from '../../elements/ErrorPill/index.js'\nimport { RenderCustomComponent } from '../../elements/RenderCustomComponent/index.js'\nimport { FieldDescription } from '../../fields/FieldDescription/index.js'\nimport { FieldError } from '../../fields/FieldError/index.js'\nimport { FieldLabel } from '../../fields/FieldLabel/index.js'\nimport { useForm, useFormSubmitted } from '../../forms/Form/context.js'\nimport { extractRowsAndCollapsedIDs, toggleAllRows } from '../../forms/Form/rowHelpers.js'\nimport { NullifyLocaleField } from '../../forms/NullifyField/index.js'\nimport { useField } from '../../forms/useField/index.js'\nimport { withCondition } from '../../forms/withCondition/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useDocumentInfo } from '../../providers/DocumentInfo/index.js'\nimport { useLocale } from '../../providers/Locale/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { scrollToID } from '../../utilities/scrollToID.js'\nimport { mergeFieldStyles } from '../mergeFieldStyles.js'\nimport { fieldBaseClass } from '../shared/index.js'\nimport { ArrayRow } from './ArrayRow.js'\nimport './index.scss'\n\nconst baseClass = 'array-field'\n\nexport const ArrayFieldComponent: ArrayFieldClientComponent = (props) => {\n const {\n field,\n field: {\n name,\n type,\n admin: { className, description, isSortable = true } = {},\n fields,\n label,\n localized,\n maxRows,\n minRows: minRowsProp,\n required,\n },\n forceRender = false,\n path: pathFromProps,\n permissions,\n readOnly,\n schemaPath: schemaPathFromProps,\n validate,\n } = props\n\n const schemaPath = schemaPathFromProps ?? name\n\n const minRows = minRowsProp ?? (required ? 1 : 0)\n\n const { setDocFieldPreferences } = useDocumentInfo()\n const {\n addFieldRow,\n dispatchFields,\n getFields,\n moveFieldRow,\n removeFieldRow,\n replaceState,\n setModified,\n } = useForm()\n const submitted = useFormSubmitted()\n const { code: locale } = useLocale()\n const { i18n, t } = useTranslation()\n\n const {\n config: { localization },\n } = useConfig()\n\n const editingDefaultLocale = (() => {\n if (localization && localization.fallback) {\n const defaultLocale = localization.defaultLocale\n return locale === defaultLocale\n }\n\n return true\n })()\n\n // Handle labeling for Arrays, Global Arrays, and Blocks\n const getLabels = (p: ArrayFieldClientProps): Partial<ArrayFieldType['labels']> => {\n if ('labels' in p && p?.labels) {\n return p.labels\n }\n\n if ('labels' in p.field && p.field.labels) {\n return { plural: p.field.labels?.plural, singular: p.field.labels?.singular }\n }\n\n if ('label' in p.field && p.field.label) {\n return { plural: undefined, singular: p.field.label }\n }\n\n return { plural: t('general:rows'), singular: t('general:row') }\n }\n\n const labels = getLabels(props)\n\n const memoizedValidate = useCallback(\n (value, options) => {\n // alternative locales can be null\n if (!editingDefaultLocale && value === null) {\n return true\n }\n\n if (typeof validate === 'function') {\n return validate(value, { ...options, maxRows, minRows, required })\n }\n },\n [maxRows, minRows, required, validate, editingDefaultLocale],\n )\n\n const {\n customComponents: { AfterInput, BeforeInput, Description, Error, Label } = {},\n disabled,\n errorPaths,\n path,\n rows = [],\n showError,\n valid,\n value,\n } = useField<number>({\n hasRows: true,\n potentiallyStalePath: pathFromProps,\n validate: memoizedValidate,\n })\n\n const addRow = useCallback(\n (rowIndex: number) => {\n addFieldRow({\n path,\n rowIndex,\n schemaPath,\n })\n\n setTimeout(() => {\n scrollToID(`${path}-row-${rowIndex}`)\n }, 0)\n },\n [addFieldRow, path, schemaPath],\n )\n\n const duplicateRow = useCallback(\n (rowIndex: number) => {\n dispatchFields({ type: 'DUPLICATE_ROW', path, rowIndex })\n\n setModified(true)\n\n setTimeout(() => {\n scrollToID(`${path}-row-${rowIndex}`)\n }, 0)\n },\n [dispatchFields, path, setModified],\n )\n\n const removeRow = useCallback(\n (rowIndex: number) => {\n removeFieldRow({ path, rowIndex })\n },\n [removeFieldRow, path],\n )\n\n const moveRow = useCallback(\n (moveFromIndex: number, moveToIndex: number) => {\n moveFieldRow({\n moveFromIndex,\n moveToIndex,\n path,\n })\n },\n [path, moveFieldRow],\n )\n\n const toggleCollapseAll = useCallback(\n (collapsed: boolean) => {\n const { collapsedIDs, updatedRows } = toggleAllRows({\n collapsed,\n rows,\n })\n setDocFieldPreferences(path, { collapsed: collapsedIDs })\n dispatchFields({ type: 'SET_ALL_ROWS_COLLAPSED', path, updatedRows })\n },\n [dispatchFields, path, rows, setDocFieldPreferences],\n )\n\n const setCollapse = useCallback(\n (rowID: string, collapsed: boolean) => {\n const { collapsedIDs, updatedRows } = extractRowsAndCollapsedIDs({\n collapsed,\n rowID,\n rows,\n })\n\n dispatchFields({ type: 'SET_ROW_COLLAPSED', path, updatedRows })\n setDocFieldPreferences(path, { collapsed: collapsedIDs })\n },\n [dispatchFields, path, rows, setDocFieldPreferences],\n )\n\n const copyRow = useCallback(\n (rowIndex: number) => {\n const formState = { ...getFields() }\n const clipboardResult = clipboardCopy({\n type,\n fields,\n getDataToCopy: () =>\n reduceFormStateByPath({\n formState,\n path,\n rowIndex,\n }),\n path,\n rowIndex,\n t,\n })\n\n if (typeof clipboardResult === 'string') {\n toast.error(clipboardResult)\n } else {\n toast.success(t('general:copied'))\n }\n },\n [fields, getFields, path, t, type],\n )\n\n const pasteRow = useCallback(\n (rowIndex: number) => {\n const formState = { ...getFields() }\n const pasteArgs = {\n onPaste: (dataFromClipboard: ClipboardPasteData) => {\n const newState = mergeFormStateFromClipboard({\n dataFromClipboard,\n formState,\n path,\n rowIndex,\n })\n replaceState(newState)\n setModified(true)\n },\n path,\n schemaFields: fields,\n t,\n }\n\n const clipboardResult = clipboardPaste(pasteArgs)\n\n if (typeof clipboardResult === 'string') {\n toast.error(clipboardResult)\n }\n },\n [fields, getFields, path, replaceState, setModified, t],\n )\n\n const pasteField = useCallback(\n (dataFromClipboard: ClipboardPasteData) => {\n const formState = { ...getFields() }\n const newState = mergeFormStateFromClipboard({\n dataFromClipboard,\n formState,\n path,\n })\n replaceState(newState)\n setModified(true)\n },\n [getFields, path, replaceState, setModified],\n )\n\n const getDataToCopy = useCallback(\n () =>\n reduceFormStateByPath({\n formState: { ...getFields() },\n path,\n }),\n [getFields, path],\n )\n\n const hasMaxRows = maxRows && rows.length >= maxRows\n\n const fieldErrorCount = errorPaths.length\n const fieldHasErrors = submitted && errorPaths.length > 0\n\n const showRequired = (readOnly || disabled) && rows.length === 0\n const showMinRows = (rows.length && rows.length < minRows) || (required && rows.length === 0)\n\n const styles = useMemo(() => mergeFieldStyles(field), [field])\n\n return (\n <div\n className={[\n fieldBaseClass,\n baseClass,\n className,\n fieldHasErrors ? `${baseClass}--has-error` : `${baseClass}--has-no-error`,\n ]\n .filter(Boolean)\n .join(' ')}\n id={`field-${path.replace(/\\./g, '__')}`}\n style={styles}\n >\n {showError && (\n <RenderCustomComponent\n CustomComponent={Error}\n Fallback={<FieldError path={path} showError={showError} />}\n />\n )}\n <header className={`${baseClass}__header`}>\n <div className={`${baseClass}__header-wrap`}>\n <div className={`${baseClass}__header-content`}>\n <h3 className={`${baseClass}__title`}>\n <RenderCustomComponent\n CustomComponent={Label}\n Fallback={\n <FieldLabel\n as=\"span\"\n label={label}\n localized={localized}\n path={path}\n required={required}\n />\n }\n />\n </h3>\n {fieldHasErrors && fieldErrorCount > 0 && (\n <ErrorPill count={fieldErrorCount} i18n={i18n} withMessage />\n )}\n </div>\n <ul className={`${baseClass}__header-actions`}>\n {rows?.length > 0 && (\n <Fragment>\n <li>\n <button\n className={`${baseClass}__header-action`}\n onClick={() => toggleCollapseAll(true)}\n type=\"button\"\n >\n {t('fields:collapseAll')}\n </button>\n </li>\n <li>\n <button\n className={`${baseClass}__header-action`}\n onClick={() => toggleCollapseAll(false)}\n type=\"button\"\n >\n {t('fields:showAll')}\n </button>\n </li>\n </Fragment>\n )}\n <li>\n <ClipboardAction\n allowCopy={rows?.length > 0}\n allowPaste={!readOnly}\n className={`${baseClass}__header-action`}\n disabled={disabled}\n fields={fields}\n getDataToCopy={getDataToCopy}\n onPaste={pasteField}\n path={path}\n type={type}\n />\n </li>\n </ul>\n </div>\n <RenderCustomComponent\n CustomComponent={Description}\n Fallback={<FieldDescription description={description} path={path} />}\n />\n </header>\n <NullifyLocaleField\n fieldValue={value}\n localized={localized}\n path={path}\n readOnly={readOnly}\n />\n {BeforeInput}\n {(rows?.length > 0 || (!valid && (showRequired || showMinRows))) && (\n <DraggableSortable\n className={`${baseClass}__draggable-rows`}\n ids={rows.map((row) => row.id)}\n onDragEnd={({ moveFromIndex, moveToIndex }) => moveRow(moveFromIndex, moveToIndex)}\n >\n {rows.map((rowData, i) => {\n const { id: rowID, isLoading } = rowData\n\n const rowPath = `${path}.${i}`\n\n const rowErrorCount = errorPaths?.filter((errorPath) =>\n errorPath.startsWith(rowPath + '.'),\n ).length\n\n return (\n <DraggableSortableItem\n disabled={readOnly || disabled || !isSortable}\n id={rowID}\n key={rowID}\n >\n {(draggableSortableItemProps) => (\n <ArrayRow\n {...draggableSortableItemProps}\n addRow={addRow}\n copyRow={copyRow}\n CustomRowLabel={rows?.[i]?.customComponents?.RowLabel}\n duplicateRow={duplicateRow}\n errorCount={rowErrorCount}\n fields={fields}\n forceRender={forceRender}\n hasMaxRows={hasMaxRows}\n isLoading={isLoading}\n isSortable={isSortable}\n labels={labels}\n moveRow={moveRow}\n parentPath={path}\n pasteRow={pasteRow}\n path={rowPath}\n permissions={permissions}\n readOnly={readOnly || disabled}\n removeRow={removeRow}\n row={rowData}\n rowCount={rows?.length}\n rowIndex={i}\n schemaPath={schemaPath}\n setCollapse={setCollapse}\n />\n )}\n </DraggableSortableItem>\n )\n })}\n {!valid && (\n <React.Fragment>\n {showRequired && (\n <Banner>\n {t('validation:fieldHasNo', { label: getTranslation(labels.plural, i18n) })}\n </Banner>\n )}\n {showMinRows && (\n <Banner type=\"error\">\n {t('validation:requiresAtLeast', {\n count: minRows,\n label:\n getTranslation(minRows > 1 ? labels.plural : labels.singular, i18n) ||\n t(minRows > 1 ? 'general:rows' : 'general:row'),\n })}\n </Banner>\n )}\n </React.Fragment>\n )}\n </DraggableSortable>\n )}\n {!hasMaxRows && !readOnly && (\n <Button\n buttonStyle=\"icon-label\"\n className={`${baseClass}__add-row`}\n disabled={disabled}\n icon=\"plus\"\n iconPosition=\"left\"\n iconStyle=\"with-border\"\n onClick={() => {\n void addRow(value || 0)\n }}\n >\n {t('fields:addLabel', { label: getTranslation(labels.singular, i18n) })}\n </Button>\n )}\n {AfterInput}\n </div>\n )\n}\n\nexport const ArrayField = withCondition(ArrayFieldComponent)\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/fields/Blocks/BlockSelector/BlockSearch/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAA;AAIzB,OAAO,cAAc,CAAA;AAIrB,eAAO,MAAM,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC;IAAE,aAAa,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;CAAE,CAkB3E,CAAA"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":["c","_c","React","SearchIcon","useTranslation","baseClass","BlockSearch","props","$","setSearchTerm","t","t0","e","target","value","handleChange","t1","_jsxs","className","children","_jsx","onChange","placeholder"],"sources":["../../../../../src/fields/Blocks/BlockSelector/BlockSearch/index.tsx"],"sourcesContent":["'use client'\nimport React from 'react'\n\nimport { SearchIcon } from '../../../../icons/Search/index.js'\nimport { useTranslation } from '../../../../providers/Translation/index.js'\nimport './index.scss'\n\nconst baseClass = 'block-search'\n\nexport const BlockSearch: React.FC<{ setSearchTerm: (term: string) => void }> = (props) => {\n const { setSearchTerm } = props\n const { t } = useTranslation()\n\n const handleChange = (e) => {\n setSearchTerm(e.target.value)\n }\n\n return (\n <div className={baseClass}>\n <input\n className={`${baseClass}__input`}\n onChange={handleChange}\n placeholder={t('fields:searchForBlock')}\n />\n <SearchIcon />\n </div>\n )\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;;AACA,OAAOC,KAAA,MAAW;AAElB,SAASC,UAAU,QAAQ;AAC3B,SAASC,cAAc,QAAQ;AAC/B,OAAO;AAEP,MAAMC,SAAA,GAAY;AAElB,OAAO,MAAMC,WAAA,GAAmEC,KAAA;EAAA,MAAAC,CAAA,GAAAP,EAAA;EAC9E;IAAAQ;EAAA,IAA0BF,KAAA;EAC1B;IAAAG;EAAA,IAAcN,cAAA;EAAA,IAAAO,EAAA;EAAA,IAAAH,CAAA,QAAAC,aAAA;IAEOE,EAAA,GAAAC,CAAA;MACnBH,aAAA,CAAcG,CAAA,CAAAC,MAAA,CAAAC,KAAc;IAAA;IAC9BN,CAAA,MAAAC,aAAA;IAAAD,CAAA,MAAAG,EAAA;EAAA;IAAAA,EAAA,GAAAH,CAAA;EAAA;EAFA,MAAAO,YAAA,GAAqBJ,EAErB;EAAA,IAAAK,EAAA;EAAA,IAAAR,CAAA,QAAAO,YAAA,IAAAP,CAAA,QAAAE,CAAA;IAGEM,EAAA,GAAAC,KAAA,CAAC;MAAAC,SAAA,EAAAb,SAAA;MAAAc,QAAA,GACCC,IAAA,CAAC;QAAAF,SAAA,EACY,GAAAb,SAAA,SAAqB;QAAAgB,QAAA,EACtBN,YAAA;QAAAO,WAAA,EACGZ,CAAA,CAAE;MAAA,C,GAEjBU,IAAA,CAAAjB,UAAA,IAAC;IAAA,C;;;;;;;SANHa,E;CASJ","ignoreList":[]}
@@ -0,0 +1,13 @@
1
+ import type { ClientBlock } from 'payload';
2
+ import React from 'react';
3
+ import './index.scss';
4
+ export type Props = {
5
+ readonly blocks: (ClientBlock | string)[];
6
+ readonly onSelect?: (blockType: string) => void;
7
+ /**
8
+ * Control the search term state externally
9
+ */
10
+ searchTerm?: string;
11
+ };
12
+ export declare const BlockSelector: React.FC<Props>;
13
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/fields/Blocks/BlockSelector/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAG1C,OAAO,KAAiD,MAAM,OAAO,CAAA;AAQrE,OAAO,cAAc,CAAA;AAErB,MAAM,MAAM,KAAK,GAAG;IAClB,QAAQ,CAAC,MAAM,EAAE,CAAC,WAAW,GAAG,MAAM,CAAC,EAAE,CAAA;IACzC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAA;IAC/C;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB,CAAA;AAcD,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAuGzC,CAAA"}
@@ -0,0 +1,116 @@
1
+ 'use client';
2
+
3
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
4
+ import { getTranslation } from '@payloadcms/translations';
5
+ import React, { Fragment, useEffect, useMemo, useState } from 'react';
6
+ import { ThumbnailCard } from '../../../elements/ThumbnailCard/index.js';
7
+ import { DefaultBlockImage } from '../../../graphics/DefaultBlockImage/index.js';
8
+ import { useControllableState } from '../../../hooks/useControllableState.js';
9
+ import { useConfig } from '../../../providers/Config/index.js';
10
+ import { useTranslation } from '../../../providers/Translation/index.js';
11
+ import { BlockSearch } from './BlockSearch/index.js';
12
+ import './index.scss';
13
+ const baseClass = 'blocks-drawer';
14
+ const getBlockLabel = (block, i18n) => {
15
+ if (typeof block.labels.singular === 'string') {
16
+ return block.labels.singular.toLowerCase();
17
+ }
18
+ if (typeof block.labels.singular === 'object') {
19
+ return getTranslation(block.labels.singular, i18n).toLowerCase();
20
+ }
21
+ return '';
22
+ };
23
+ export const BlockSelector = props => {
24
+ const {
25
+ blocks,
26
+ onSelect,
27
+ searchTerm: searchTermFromProps
28
+ } = props;
29
+ const [searchTerm, setSearchTerm] = useControllableState(searchTermFromProps ?? '');
30
+ const [filteredBlocks, setFilteredBlocks] = useState(blocks);
31
+ const {
32
+ i18n
33
+ } = useTranslation();
34
+ const {
35
+ config
36
+ } = useConfig();
37
+ const blockGroups = useMemo(() => {
38
+ const groups = {
39
+ _none: []
40
+ };
41
+ filteredBlocks.forEach(block => {
42
+ if (typeof block === 'object' && block.admin?.group) {
43
+ const group = block.admin.group;
44
+ const label = typeof group === 'string' ? group : getTranslation(group, i18n);
45
+ if (Object.hasOwn(groups, label)) {
46
+ groups[label].push(block);
47
+ } else {
48
+ groups[label] = [block];
49
+ }
50
+ } else {
51
+ groups._none.push(block);
52
+ }
53
+ });
54
+ return groups;
55
+ }, [filteredBlocks, i18n]);
56
+ useEffect(() => {
57
+ const searchTermToUse = searchTerm.toLowerCase();
58
+ const matchingBlocks = blocks?.reduce((matchedBlocks, _block) => {
59
+ const block_0 = typeof _block === 'string' ? config.blocksMap[_block] : _block;
60
+ const blockLabel = getBlockLabel(block_0, i18n);
61
+ if (blockLabel.includes(searchTermToUse)) {
62
+ matchedBlocks.push(block_0);
63
+ }
64
+ return matchedBlocks;
65
+ }, []);
66
+ setFilteredBlocks(matchingBlocks);
67
+ }, [searchTerm, blocks, i18n, config.blocksMap]);
68
+ return /*#__PURE__*/_jsxs(Fragment, {
69
+ children: [/*#__PURE__*/_jsx(BlockSearch, {
70
+ setSearchTerm: setSearchTerm
71
+ }), /*#__PURE__*/_jsx("div", {
72
+ className: `${baseClass}__blocks-wrapper`,
73
+ children: /*#__PURE__*/_jsx("ul", {
74
+ className: `${baseClass}__block-groups`,
75
+ children: Object.entries(blockGroups).map(([groupLabel, groupBlocks]) => !groupBlocks.length ? null : /*#__PURE__*/_jsxs("li", {
76
+ className: [`${baseClass}__block-group`, groupLabel === '_none' && `${baseClass}__block-group-none`].filter(Boolean).join(' '),
77
+ children: [groupLabel !== '_none' && /*#__PURE__*/_jsx("h3", {
78
+ className: `${baseClass}__block-group-label`,
79
+ children: groupLabel
80
+ }), /*#__PURE__*/_jsx("ul", {
81
+ className: `${baseClass}__blocks`,
82
+ children: groupBlocks.map((_block_0, index) => {
83
+ const block_1 = typeof _block_0 === 'string' ? config.blocksMap[_block_0] : _block_0;
84
+ const {
85
+ slug,
86
+ imageAltText,
87
+ imageURL,
88
+ labels: blockLabels
89
+ } = block_1;
90
+ return /*#__PURE__*/_jsx("li", {
91
+ className: `${baseClass}__block`,
92
+ children: /*#__PURE__*/_jsx(ThumbnailCard, {
93
+ alignLabel: "center",
94
+ label: getTranslation(blockLabels?.singular, i18n),
95
+ onClick: () => {
96
+ if (typeof onSelect === 'function') {
97
+ onSelect(slug);
98
+ }
99
+ },
100
+ thumbnail: /*#__PURE__*/_jsx("div", {
101
+ className: `${baseClass}__default-image`,
102
+ children: imageURL ? /*#__PURE__*/_jsx("img", {
103
+ alt: imageAltText,
104
+ src: imageURL
105
+ }) : /*#__PURE__*/_jsx(DefaultBlockImage, {})
106
+ })
107
+ })
108
+ }, index);
109
+ })
110
+ })]
111
+ }, groupLabel))
112
+ })
113
+ })]
114
+ });
115
+ };
116
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":["getTranslation","React","Fragment","useEffect","useMemo","useState","ThumbnailCard","DefaultBlockImage","useControllableState","useConfig","useTranslation","BlockSearch","baseClass","getBlockLabel","block","i18n","labels","singular","toLowerCase","BlockSelector","props","blocks","onSelect","searchTerm","searchTermFromProps","setSearchTerm","filteredBlocks","setFilteredBlocks","config","blockGroups","groups","_none","forEach","admin","group","label","Object","hasOwn","push","searchTermToUse","matchingBlocks","reduce","matchedBlocks","_block","blocksMap","blockLabel","includes","_jsxs","_jsx","className","entries","map","groupLabel","groupBlocks","length","filter","Boolean","join","index","slug","imageAltText","imageURL","blockLabels","alignLabel","onClick","thumbnail","alt","src"],"sources":["../../../../src/fields/Blocks/BlockSelector/index.tsx"],"sourcesContent":["'use client'\nimport type { I18nClient } from '@payloadcms/translations'\nimport type { ClientBlock } from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport React, { Fragment, useEffect, useMemo, useState } from 'react'\n\nimport { ThumbnailCard } from '../../../elements/ThumbnailCard/index.js'\nimport { DefaultBlockImage } from '../../../graphics/DefaultBlockImage/index.js'\nimport { useControllableState } from '../../../hooks/useControllableState.js'\nimport { useConfig } from '../../../providers/Config/index.js'\nimport { useTranslation } from '../../../providers/Translation/index.js'\nimport { BlockSearch } from './BlockSearch/index.js'\nimport './index.scss'\n\nexport type Props = {\n readonly blocks: (ClientBlock | string)[]\n readonly onSelect?: (blockType: string) => void\n /**\n * Control the search term state externally\n */\n searchTerm?: string\n}\n\nconst baseClass = 'blocks-drawer'\n\nconst getBlockLabel = (block: ClientBlock, i18n: I18nClient) => {\n if (typeof block.labels.singular === 'string') {\n return block.labels.singular.toLowerCase()\n }\n if (typeof block.labels.singular === 'object') {\n return getTranslation(block.labels.singular, i18n).toLowerCase()\n }\n return ''\n}\n\nexport const BlockSelector: React.FC<Props> = (props) => {\n const { blocks, onSelect, searchTerm: searchTermFromProps } = props\n\n const [searchTerm, setSearchTerm] = useControllableState(searchTermFromProps ?? '')\n\n const [filteredBlocks, setFilteredBlocks] = useState(blocks)\n const { i18n } = useTranslation()\n const { config } = useConfig()\n\n const blockGroups = useMemo(() => {\n const groups: Record<string, (ClientBlock | string)[]> = {\n _none: [],\n }\n\n filteredBlocks.forEach((block) => {\n if (typeof block === 'object' && block.admin?.group) {\n const group = block.admin.group\n const label = typeof group === 'string' ? group : getTranslation(group, i18n)\n\n if (Object.hasOwn(groups, label)) {\n groups[label].push(block)\n } else {\n groups[label] = [block]\n }\n } else {\n groups._none.push(block)\n }\n })\n\n return groups\n }, [filteredBlocks, i18n])\n\n useEffect(() => {\n const searchTermToUse = searchTerm.toLowerCase()\n\n const matchingBlocks = blocks?.reduce((matchedBlocks, _block) => {\n const block = typeof _block === 'string' ? config.blocksMap[_block] : _block\n const blockLabel = getBlockLabel(block, i18n)\n if (blockLabel.includes(searchTermToUse)) {\n matchedBlocks.push(block)\n }\n return matchedBlocks\n }, [])\n\n setFilteredBlocks(matchingBlocks)\n }, [searchTerm, blocks, i18n, config.blocksMap])\n\n return (\n <Fragment>\n <BlockSearch setSearchTerm={setSearchTerm} />\n <div className={`${baseClass}__blocks-wrapper`}>\n <ul className={`${baseClass}__block-groups`}>\n {Object.entries(blockGroups).map(([groupLabel, groupBlocks]) =>\n !groupBlocks.length ? null : (\n <li\n className={[\n `${baseClass}__block-group`,\n groupLabel === '_none' && `${baseClass}__block-group-none`,\n ]\n .filter(Boolean)\n .join(' ')}\n key={groupLabel}\n >\n {groupLabel !== '_none' && (\n <h3 className={`${baseClass}__block-group-label`}>{groupLabel}</h3>\n )}\n <ul className={`${baseClass}__blocks`}>\n {groupBlocks.map((_block, index) => {\n const block = typeof _block === 'string' ? config.blocksMap[_block] : _block\n\n const { slug, imageAltText, imageURL, labels: blockLabels } = block\n\n return (\n <li className={`${baseClass}__block`} key={index}>\n <ThumbnailCard\n alignLabel=\"center\"\n label={getTranslation(blockLabels?.singular, i18n)}\n onClick={() => {\n if (typeof onSelect === 'function') {\n onSelect(slug)\n }\n }}\n thumbnail={\n <div className={`${baseClass}__default-image`}>\n {imageURL ? (\n <img alt={imageAltText} src={imageURL} />\n ) : (\n <DefaultBlockImage />\n )}\n </div>\n }\n />\n </li>\n )\n })}\n </ul>\n </li>\n ),\n )}\n </ul>\n </div>\n </Fragment>\n )\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,6 +1,5 @@
1
1
  import type { ClientBlock, Labels } from 'payload';
2
2
  import React from 'react';
3
- import './index.scss';
4
3
  export type Props = {
5
4
  readonly addRow: (index: number, blockType?: string) => Promise<void> | void;
6
5
  readonly addRowIndex: number;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/fields/Blocks/BlocksDrawer/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,SAAS,CAAA;AAIlD,OAAO,KAAuC,MAAM,OAAO,CAAA;AAO3D,OAAO,cAAc,CAAA;AAGrB,MAAM,MAAM,KAAK,GAAG;IAClB,QAAQ,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;IAC5E,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,MAAM,EAAE,CAAC,WAAW,GAAG,MAAM,CAAC,EAAE,CAAA;IACzC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CACxB,CAAA;AAcD,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CA6GxC,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/fields/Blocks/BlocksDrawer/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,SAAS,CAAA;AAIlD,OAAO,KAAoB,MAAM,OAAO,CAAA;AAMxC,MAAM,MAAM,KAAK,GAAG;IAClB,QAAQ,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;IAC5E,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,MAAM,EAAE,CAAC,WAAW,GAAG,MAAM,CAAC,EAAE,CAAA;IACzC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CACxB,CAAA;AAED,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CA4BxC,CAAA"}
@@ -1,27 +1,15 @@
1
1
  'use client';
2
2
 
3
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { c as _c } from "react/compiler-runtime";
4
+ import { jsx as _jsx } from "react/jsx-runtime";
4
5
  import { useModal } from '@faceless-ui/modal';
5
6
  import { getTranslation } from '@payloadcms/translations';
6
- import React, { useEffect, useMemo, useState } from 'react';
7
+ import React, { useEffect } from 'react';
7
8
  import { Drawer } from '../../../elements/Drawer/index.js';
8
- import { ThumbnailCard } from '../../../elements/ThumbnailCard/index.js';
9
- import { DefaultBlockImage } from '../../../graphics/DefaultBlockImage/index.js';
10
- import { useConfig } from '../../../providers/Config/index.js';
11
9
  import { useTranslation } from '../../../providers/Translation/index.js';
12
- import './index.scss';
13
- import { BlockSearch } from './BlockSearch/index.js';
14
- const baseClass = 'blocks-drawer';
15
- const getBlockLabel = (block, i18n) => {
16
- if (typeof block.labels.singular === 'string') {
17
- return block.labels.singular.toLowerCase();
18
- }
19
- if (typeof block.labels.singular === 'object') {
20
- return getTranslation(block.labels.singular, i18n).toLowerCase();
21
- }
22
- return '';
23
- };
10
+ import { BlockSelector } from '../BlockSelector/index.js';
24
11
  export const BlocksDrawer = props => {
12
+ const $ = _c(19);
25
13
  const {
26
14
  addRow,
27
15
  addRowIndex,
@@ -29,8 +17,6 @@ export const BlocksDrawer = props => {
29
17
  drawerSlug,
30
18
  labels
31
19
  } = props;
32
- const [searchTerm, setSearchTerm] = useState('');
33
- const [filteredBlocks, setFilteredBlocks] = useState(blocks);
34
20
  const {
35
21
  closeModal,
36
22
  isModalOpen
@@ -39,94 +25,65 @@ export const BlocksDrawer = props => {
39
25
  i18n,
40
26
  t
41
27
  } = useTranslation();
42
- const {
43
- config
44
- } = useConfig();
45
- const blockGroups = useMemo(() => {
46
- const groups = {
47
- _none: []
48
- };
49
- filteredBlocks.forEach(block => {
50
- if (typeof block === 'object' && block.admin?.group) {
51
- const group = block.admin.group;
52
- const label = typeof group === 'string' ? group : getTranslation(group, i18n);
53
- if (Object.hasOwn(groups, label)) {
54
- groups[label].push(block);
55
- } else {
56
- groups[label] = [block];
57
- }
58
- } else {
59
- groups._none.push(block);
28
+ const [searchTermOverride, setSearchTermOverride] = React.useState("");
29
+ let t0;
30
+ let t1;
31
+ if ($[0] !== drawerSlug || $[1] !== isModalOpen) {
32
+ t0 = () => {
33
+ if (!isModalOpen(drawerSlug)) {
34
+ setSearchTermOverride("");
60
35
  }
61
- });
62
- return groups;
63
- }, [filteredBlocks, i18n]);
64
- useEffect(() => {
65
- if (!isModalOpen(drawerSlug)) {
66
- setSearchTerm('');
36
+ };
37
+ t1 = [isModalOpen, drawerSlug];
38
+ $[0] = drawerSlug;
39
+ $[1] = isModalOpen;
40
+ $[2] = t0;
41
+ $[3] = t1;
42
+ } else {
43
+ t0 = $[2];
44
+ t1 = $[3];
45
+ }
46
+ useEffect(t0, t1);
47
+ let t2;
48
+ if ($[4] !== addRow || $[5] !== addRowIndex || $[6] !== blocks || $[7] !== closeModal || $[8] !== drawerSlug || $[9] !== i18n || $[10] !== labels.singular || $[11] !== searchTermOverride || $[12] !== t) {
49
+ let t3;
50
+ if ($[14] !== addRow || $[15] !== addRowIndex || $[16] !== closeModal || $[17] !== drawerSlug) {
51
+ t3 = slug => {
52
+ addRow(addRowIndex, slug);
53
+ closeModal(drawerSlug);
54
+ };
55
+ $[14] = addRow;
56
+ $[15] = addRowIndex;
57
+ $[16] = closeModal;
58
+ $[17] = drawerSlug;
59
+ $[18] = t3;
60
+ } else {
61
+ t3 = $[18];
67
62
  }
68
- }, [isModalOpen, drawerSlug]);
69
- useEffect(() => {
70
- const searchTermToUse = searchTerm.toLowerCase();
71
- const matchingBlocks = blocks?.reduce((matchedBlocks, _block) => {
72
- const block_0 = typeof _block === 'string' ? config.blocksMap[_block] : _block;
73
- const blockLabel = getBlockLabel(block_0, i18n);
74
- if (blockLabel.includes(searchTermToUse)) {
75
- matchedBlocks.push(block_0);
76
- }
77
- return matchedBlocks;
78
- }, []);
79
- setFilteredBlocks(matchingBlocks);
80
- }, [searchTerm, blocks, i18n, config.blocksMap]);
81
- return /*#__PURE__*/_jsxs(Drawer, {
82
- slug: drawerSlug,
83
- title: t('fields:addLabel', {
84
- label: getTranslation(labels.singular, i18n)
85
- }),
86
- children: [/*#__PURE__*/_jsx(BlockSearch, {
87
- setSearchTerm: setSearchTerm
88
- }), /*#__PURE__*/_jsx("div", {
89
- className: `${baseClass}__blocks-wrapper`,
90
- children: /*#__PURE__*/_jsx("ul", {
91
- className: `${baseClass}__block-groups`,
92
- children: Object.entries(blockGroups).map(([groupLabel, groupBlocks]) => !groupBlocks.length ? null : /*#__PURE__*/_jsxs("li", {
93
- className: [`${baseClass}__block-group`, groupLabel === '_none' && `${baseClass}__block-group-none`].filter(Boolean).join(' '),
94
- children: [groupLabel !== '_none' && /*#__PURE__*/_jsx("h3", {
95
- className: `${baseClass}__block-group-label`,
96
- children: groupLabel
97
- }), /*#__PURE__*/_jsx("ul", {
98
- className: `${baseClass}__blocks`,
99
- children: groupBlocks.map((_block_0, index) => {
100
- const block_1 = typeof _block_0 === 'string' ? config.blocksMap[_block_0] : _block_0;
101
- const {
102
- slug,
103
- imageAltText,
104
- imageURL,
105
- labels: blockLabels
106
- } = block_1;
107
- return /*#__PURE__*/_jsx("li", {
108
- className: `${baseClass}__block`,
109
- children: /*#__PURE__*/_jsx(ThumbnailCard, {
110
- alignLabel: "center",
111
- label: getTranslation(blockLabels?.singular, i18n),
112
- onClick: () => {
113
- void addRow(addRowIndex, slug);
114
- closeModal(drawerSlug);
115
- },
116
- thumbnail: /*#__PURE__*/_jsx("div", {
117
- className: `${baseClass}__default-image`,
118
- children: imageURL ? /*#__PURE__*/_jsx("img", {
119
- alt: imageAltText,
120
- src: imageURL
121
- }) : /*#__PURE__*/_jsx(DefaultBlockImage, {})
122
- })
123
- })
124
- }, index);
125
- })
126
- })]
127
- }, groupLabel))
63
+ t2 = _jsx(Drawer, {
64
+ slug: drawerSlug,
65
+ title: t("fields:addLabel", {
66
+ label: getTranslation(labels.singular, i18n)
67
+ }),
68
+ children: _jsx(BlockSelector, {
69
+ blocks,
70
+ onSelect: t3,
71
+ searchTerm: searchTermOverride
128
72
  })
129
- })]
130
- });
73
+ });
74
+ $[4] = addRow;
75
+ $[5] = addRowIndex;
76
+ $[6] = blocks;
77
+ $[7] = closeModal;
78
+ $[8] = drawerSlug;
79
+ $[9] = i18n;
80
+ $[10] = labels.singular;
81
+ $[11] = searchTermOverride;
82
+ $[12] = t;
83
+ $[13] = t2;
84
+ } else {
85
+ t2 = $[13];
86
+ }
87
+ return t2;
131
88
  };
132
89
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["useModal","getTranslation","React","useEffect","useMemo","useState","Drawer","ThumbnailCard","DefaultBlockImage","useConfig","useTranslation","BlockSearch","baseClass","getBlockLabel","block","i18n","labels","singular","toLowerCase","BlocksDrawer","props","addRow","addRowIndex","blocks","drawerSlug","searchTerm","setSearchTerm","filteredBlocks","setFilteredBlocks","closeModal","isModalOpen","t","config","blockGroups","groups","_none","forEach","admin","group","label","Object","hasOwn","push","searchTermToUse","matchingBlocks","reduce","matchedBlocks","_block","blocksMap","blockLabel","includes","_jsxs","slug","title","_jsx","className","entries","map","groupLabel","groupBlocks","length","filter","Boolean","join","index","imageAltText","imageURL","blockLabels","alignLabel","onClick","thumbnail","alt","src"],"sources":["../../../../src/fields/Blocks/BlocksDrawer/index.tsx"],"sourcesContent":["'use client'\nimport type { I18nClient } from '@payloadcms/translations'\nimport type { ClientBlock, Labels } from 'payload'\n\nimport { useModal } from '@faceless-ui/modal'\nimport { getTranslation } from '@payloadcms/translations'\nimport React, { useEffect, useMemo, useState } from 'react'\n\nimport { Drawer } from '../../../elements/Drawer/index.js'\nimport { ThumbnailCard } from '../../../elements/ThumbnailCard/index.js'\nimport { DefaultBlockImage } from '../../../graphics/DefaultBlockImage/index.js'\nimport { useConfig } from '../../../providers/Config/index.js'\nimport { useTranslation } from '../../../providers/Translation/index.js'\nimport './index.scss'\nimport { BlockSearch } from './BlockSearch/index.js'\n\nexport type Props = {\n readonly addRow: (index: number, blockType?: string) => Promise<void> | void\n readonly addRowIndex: number\n readonly blocks: (ClientBlock | string)[]\n readonly drawerSlug: string\n readonly labels: Labels\n}\n\nconst baseClass = 'blocks-drawer'\n\nconst getBlockLabel = (block: ClientBlock, i18n: I18nClient) => {\n if (typeof block.labels.singular === 'string') {\n return block.labels.singular.toLowerCase()\n }\n if (typeof block.labels.singular === 'object') {\n return getTranslation(block.labels.singular, i18n).toLowerCase()\n }\n return ''\n}\n\nexport const BlocksDrawer: React.FC<Props> = (props) => {\n const { addRow, addRowIndex, blocks, drawerSlug, labels } = props\n\n const [searchTerm, setSearchTerm] = useState('')\n const [filteredBlocks, setFilteredBlocks] = useState(blocks)\n const { closeModal, isModalOpen } = useModal()\n const { i18n, t } = useTranslation()\n const { config } = useConfig()\n\n const blockGroups = useMemo(() => {\n const groups: Record<string, (ClientBlock | string)[]> = {\n _none: [],\n }\n filteredBlocks.forEach((block) => {\n if (typeof block === 'object' && block.admin?.group) {\n const group = block.admin.group\n const label = typeof group === 'string' ? group : getTranslation(group, i18n)\n\n if (Object.hasOwn(groups, label)) {\n groups[label].push(block)\n } else {\n groups[label] = [block]\n }\n } else {\n groups._none.push(block)\n }\n })\n return groups\n }, [filteredBlocks, i18n])\n\n useEffect(() => {\n if (!isModalOpen(drawerSlug)) {\n setSearchTerm('')\n }\n }, [isModalOpen, drawerSlug])\n\n useEffect(() => {\n const searchTermToUse = searchTerm.toLowerCase()\n\n const matchingBlocks = blocks?.reduce((matchedBlocks, _block) => {\n const block = typeof _block === 'string' ? config.blocksMap[_block] : _block\n const blockLabel = getBlockLabel(block, i18n)\n if (blockLabel.includes(searchTermToUse)) {\n matchedBlocks.push(block)\n }\n return matchedBlocks\n }, [])\n\n setFilteredBlocks(matchingBlocks)\n }, [searchTerm, blocks, i18n, config.blocksMap])\n\n return (\n <Drawer\n slug={drawerSlug}\n title={t('fields:addLabel', { label: getTranslation(labels.singular, i18n) })}\n >\n <BlockSearch setSearchTerm={setSearchTerm} />\n <div className={`${baseClass}__blocks-wrapper`}>\n <ul className={`${baseClass}__block-groups`}>\n {Object.entries(blockGroups).map(([groupLabel, groupBlocks]) =>\n !groupBlocks.length ? null : (\n <li\n className={[\n `${baseClass}__block-group`,\n groupLabel === '_none' && `${baseClass}__block-group-none`,\n ]\n .filter(Boolean)\n .join(' ')}\n key={groupLabel}\n >\n {groupLabel !== '_none' && (\n <h3 className={`${baseClass}__block-group-label`}>{groupLabel}</h3>\n )}\n <ul className={`${baseClass}__blocks`}>\n {groupBlocks.map((_block, index) => {\n const block = typeof _block === 'string' ? config.blocksMap[_block] : _block\n\n const { slug, imageAltText, imageURL, labels: blockLabels } = block\n\n return (\n <li className={`${baseClass}__block`} key={index}>\n <ThumbnailCard\n alignLabel=\"center\"\n label={getTranslation(blockLabels?.singular, i18n)}\n onClick={() => {\n void addRow(addRowIndex, slug)\n closeModal(drawerSlug)\n }}\n thumbnail={\n <div className={`${baseClass}__default-image`}>\n {imageURL ? (\n <img alt={imageAltText} src={imageURL} />\n ) : (\n <DefaultBlockImage />\n )}\n </div>\n }\n />\n </li>\n )\n })}\n </ul>\n </li>\n ),\n )}\n </ul>\n </div>\n </Drawer>\n )\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["c","_c","useModal","getTranslation","React","useEffect","Drawer","useTranslation","BlockSelector","BlocksDrawer","props","$","addRow","addRowIndex","blocks","drawerSlug","labels","closeModal","isModalOpen","i18n","t","searchTermOverride","setSearchTermOverride","useState","t0","t1","t2","singular","t3","slug","_jsx","title","label","children","onSelect","searchTerm"],"sources":["../../../../src/fields/Blocks/BlocksDrawer/index.tsx"],"sourcesContent":["'use client'\nimport type { ClientBlock, Labels } from 'payload'\n\nimport { useModal } from '@faceless-ui/modal'\nimport { getTranslation } from '@payloadcms/translations'\nimport React, { useEffect } from 'react'\n\nimport { Drawer } from '../../../elements/Drawer/index.js'\nimport { useTranslation } from '../../../providers/Translation/index.js'\nimport { BlockSelector } from '../BlockSelector/index.js'\n\nexport type Props = {\n readonly addRow: (index: number, blockType?: string) => Promise<void> | void\n readonly addRowIndex: number\n readonly blocks: (ClientBlock | string)[]\n readonly drawerSlug: string\n readonly labels: Labels\n}\n\nexport const BlocksDrawer: React.FC<Props> = (props) => {\n const { addRow, addRowIndex, blocks, drawerSlug, labels } = props\n\n const { closeModal, isModalOpen } = useModal()\n const { i18n, t } = useTranslation()\n const [searchTermOverride, setSearchTermOverride] = React.useState('')\n\n useEffect(() => {\n if (!isModalOpen(drawerSlug)) {\n setSearchTermOverride('')\n }\n }, [isModalOpen, drawerSlug])\n\n return (\n <Drawer\n slug={drawerSlug}\n title={t('fields:addLabel', { label: getTranslation(labels.singular, i18n) })}\n >\n <BlockSelector\n blocks={blocks}\n onSelect={(slug) => {\n void addRow(addRowIndex, slug)\n closeModal(drawerSlug)\n }}\n searchTerm={searchTermOverride}\n />\n </Drawer>\n )\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;;AAGA,SAASC,QAAQ,QAAQ;AACzB,SAASC,cAAc,QAAQ;AAC/B,OAAOC,KAAA,IAASC,SAAS,QAAQ;AAEjC,SAASC,MAAM,QAAQ;AACvB,SAASC,cAAc,QAAQ;AAC/B,SAASC,aAAa,QAAQ;AAU9B,OAAO,MAAMC,YAAA,GAAgCC,KAAA;EAAA,MAAAC,CAAA,GAAAV,EAAA;EAC3C;IAAAW,MAAA;IAAAC,WAAA;IAAAC,MAAA;IAAAC,UAAA;IAAAC;EAAA,IAA4DN,KAAA;EAE5D;IAAAO,UAAA;IAAAC;EAAA,IAAoChB,QAAA;EACpC;IAAAiB,IAAA;IAAAC;EAAA,IAAoBb,cAAA;EACpB,OAAAc,kBAAA,EAAAC,qBAAA,IAAoDlB,KAAA,CAAAmB,QAAA,CAAe;EAAA,IAAAC,EAAA;EAAA,IAAAC,EAAA;EAAA,IAAAd,CAAA,QAAAI,UAAA,IAAAJ,CAAA,QAAAO,WAAA;IAEzDM,EAAA,GAAAA,CAAA;MAAA,KACHN,WAAA,CAAYH,UAAA;QACfO,qBAAA,CAAsB;MAAA;IAAA;IAEvBG,EAAA,IAACP,WAAA,EAAaH,UAAA;IAAWJ,CAAA,MAAAI,UAAA;IAAAJ,CAAA,MAAAO,WAAA;IAAAP,CAAA,MAAAa,EAAA;IAAAb,CAAA,MAAAc,EAAA;EAAA;IAAAD,EAAA,GAAAb,CAAA;IAAAc,EAAA,GAAAd,CAAA;EAAA;EAJ5BN,SAAA,CAAUmB,EAIV,EAAGC,EAAyB;EAAA,IAAAC,EAAA;EAAA,IAAAf,CAAA,QAAAC,MAAA,IAAAD,CAAA,QAAAE,WAAA,IAAAF,CAAA,QAAAG,MAAA,IAAAH,CAAA,QAAAM,UAAA,IAAAN,CAAA,QAAAI,UAAA,IAAAJ,CAAA,QAAAQ,IAAA,IAAAR,CAAA,SAAAK,MAAA,CAAAW,QAAA,IAAAhB,CAAA,SAAAU,kBAAA,IAAAV,CAAA,SAAAS,CAAA;IAAA,IAAAQ,EAAA;IAAA,IAAAjB,CAAA,SAAAC,MAAA,IAAAD,CAAA,SAAAE,WAAA,IAAAF,CAAA,SAAAM,UAAA,IAAAN,CAAA,SAAAI,UAAA;MASZa,EAAA,GAAAC,IAAA;QACHjB,MAAA,CAAOC,WAAA,EAAagB,IAAA;QACzBZ,UAAA,CAAWF,UAAA;MAAA;MACbJ,CAAA,OAAAC,MAAA;MAAAD,CAAA,OAAAE,WAAA;MAAAF,CAAA,OAAAM,UAAA;MAAAN,CAAA,OAAAI,UAAA;MAAAJ,CAAA,OAAAiB,EAAA;IAAA;MAAAA,EAAA,GAAAjB,CAAA;IAAA;IATJe,EAAA,GAAAI,IAAA,CAAAxB,MAAA;MAAAuB,IAAA,EACQd,UAAA;MAAAgB,KAAA,EACCX,CAAA,CAAE;QAAAY,KAAA,EAA4B7B,cAAA,CAAea,MAAA,CAAAW,QAAA,EAAiBR,IAAA;MAAA,CAAM;MAAAc,QAAA,EAE3EH,IAAA,CAAAtB,aAAA;QAAAM,MAAA;QAAAoB,QAAA,EAEYN,EAGV;QAAAO,UAAA,EACYd;MAAA,C;;;;;;;;;;;;;;;SAVhBK,E;CAcJ","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"useControllableState.d.ts","sourceRoot":"","sources":["../../src/hooks/useControllableState.ts"],"names":[],"mappings":"AAGA;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,CAAC,EACvC,SAAS,EAAE,CAAC,EACZ,aAAa,EAAE,CAAC,GACf,CAAC,CAAC,SAAS,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,CAAA;AAC7F,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,CAAA"}
1
+ {"version":3,"file":"useControllableState.d.ts","sourceRoot":"","sources":["../../src/hooks/useControllableState.ts"],"names":[],"mappings":"AAGA;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,CAAC,EACvC,SAAS,EAAE,CAAC,EACZ,aAAa,EAAE,CAAC,GACf,CAAC,CAAC,SAAS,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,CAAA;AAE7F,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"useControllableState.js","names":["c","_c","useEffect","useRef","useState","useControllableState","propValue","fallbackValue","$","localValue","setLocalValue","initialRenderRef","t0","t1","current","t2","t3"],"sources":["../../src/hooks/useControllableState.ts"],"sourcesContent":["'use client'\nimport { useEffect, useRef, useState } from 'react'\n\n/**\n * A hook for managing state that can be controlled by props but also overridden locally.\n * Props always take precedence if they change, but local state can override them temporarily.\n *\n * @param propValue - The controlled value from props\n * @param fallbackValue - Value to use when propValue is null or undefined\n *\n * @internal - may change or be removed without a major version bump\n */\nexport function useControllableState<T, D>(\n propValue: T,\n fallbackValue: D,\n): [T extends NonNullable<T> ? T : D | NonNullable<T>, (value: ((prev: T) => T) | T) => void]\nexport function useControllableState<T>(propValue: T): [T, (value: ((prev: T) => T) | T) => void]\nexport function useControllableState<T, D>(\n propValue: T,\n fallbackValue?: D,\n): [T extends NonNullable<T> ? T : D | NonNullable<T>, (value: ((prev: T) => T) | T) => void] {\n const [localValue, setLocalValue] = useState<T>(propValue)\n const initialRenderRef = useRef(true)\n\n useEffect(() => {\n if (initialRenderRef.current) {\n initialRenderRef.current = false\n return\n }\n\n setLocalValue(propValue)\n }, [propValue])\n\n return [localValue ?? fallbackValue, setLocalValue] as [\n T extends NonNullable<T> ? T : D | NonNullable<T>,\n (value: ((prev: T) => T) | T) => void,\n ]\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;AACA,SAASC,SAAS,EAAEC,MAAM,EAAEC,QAAQ,QAAQ;AAgB5C,OAAO,SAAAC,qBAAAC,SAAA,EAAAC,aAAA;EAAA,MAAAC,CAAA,GAAAP,EAAA;EAIL,OAAAQ,UAAA,EAAAC,aAAA,IAAoCN,QAAA,CAAYE,SAAA;EAChD,MAAAK,gBAAA,GAAyBR,MAAA,KAAO;EAAA,IAAAS,EAAA;EAAA,IAAAC,EAAA;EAAA,IAAAL,CAAA,QAAAF,SAAA;IAEtBM,EAAA,GAAAA,CAAA;MAAA,IACJD,gBAAA,CAAAG,OAAA;QACFH,gBAAA,CAAAG,OAAA;QAAA;MAAA;MAIFJ,aAAA,CAAcJ,SAAA;IAAA;IACbO,EAAA,IAACP,SAAA;IAAUE,CAAA,MAAAF,SAAA;IAAAE,CAAA,MAAAI,EAAA;IAAAJ,CAAA,MAAAK,EAAA;EAAA;IAAAD,EAAA,GAAAJ,CAAA;IAAAK,EAAA,GAAAL,CAAA;EAAA;EAPdN,SAAA,CAAUU,EAOV,EAAGC,EAAW;EAEN,MAAAE,EAAA,GAAAN,UAAA,IAAcF,aAAA;EAAA,IAAAS,EAAA;EAAA,IAAAR,CAAA,QAAAO,EAAA;IAAfC,EAAA,IAACD,EAAc,EAAeL,aAAA;IAAcF,CAAA,MAAAO,EAAA;IAAAP,CAAA,MAAAQ,EAAA;EAAA;IAAAA,EAAA,GAAAR,CAAA;EAAA;EAAA,OAA5CQ,EAA4C;AAAA","ignoreList":[]}
1
+ {"version":3,"file":"useControllableState.js","names":["c","_c","useEffect","useRef","useState","useControllableState","propValue","fallbackValue","$","localValue","setLocalValue","initialRenderRef","t0","t1","current","t2","t3"],"sources":["../../src/hooks/useControllableState.ts"],"sourcesContent":["'use client'\nimport { useEffect, useRef, useState } from 'react'\n\n/**\n * A hook for managing state that can be controlled by props but also overridden locally.\n * Props always take precedence if they change, but local state can override them temporarily.\n *\n * @param propValue - The controlled value from props\n * @param fallbackValue - Value to use when propValue is null or undefined\n *\n * @internal - may change or be removed without a major version bump\n */\nexport function useControllableState<T, D>(\n propValue: T,\n fallbackValue: D,\n): [T extends NonNullable<T> ? T : D | NonNullable<T>, (value: ((prev: T) => T) | T) => void]\n\nexport function useControllableState<T>(propValue: T): [T, (value: ((prev: T) => T) | T) => void]\n\nexport function useControllableState<T, D>(\n propValue: T,\n fallbackValue?: D,\n): [T extends NonNullable<T> ? T : D | NonNullable<T>, (value: ((prev: T) => T) | T) => void] {\n const [localValue, setLocalValue] = useState<T>(propValue)\n const initialRenderRef = useRef(true)\n\n useEffect(() => {\n if (initialRenderRef.current) {\n initialRenderRef.current = false\n return\n }\n\n setLocalValue(propValue)\n }, [propValue])\n\n return [localValue ?? fallbackValue, setLocalValue] as [\n T extends NonNullable<T> ? T : D | NonNullable<T>,\n (value: ((prev: T) => T) | T) => void,\n ]\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;AACA,SAASC,SAAS,EAAEC,MAAM,EAAEC,QAAQ,QAAQ;AAkB5C,OAAO,SAAAC,qBAAAC,SAAA,EAAAC,aAAA;EAAA,MAAAC,CAAA,GAAAP,EAAA;EAIL,OAAAQ,UAAA,EAAAC,aAAA,IAAoCN,QAAA,CAAYE,SAAA;EAChD,MAAAK,gBAAA,GAAyBR,MAAA,KAAO;EAAA,IAAAS,EAAA;EAAA,IAAAC,EAAA;EAAA,IAAAL,CAAA,QAAAF,SAAA;IAEtBM,EAAA,GAAAA,CAAA;MAAA,IACJD,gBAAA,CAAAG,OAAA;QACFH,gBAAA,CAAAG,OAAA;QAAA;MAAA;MAIFJ,aAAA,CAAcJ,SAAA;IAAA;IACbO,EAAA,IAACP,SAAA;IAAUE,CAAA,MAAAF,SAAA;IAAAE,CAAA,MAAAI,EAAA;IAAAJ,CAAA,MAAAK,EAAA;EAAA;IAAAD,EAAA,GAAAJ,CAAA;IAAAK,EAAA,GAAAL,CAAA;EAAA;EAPdN,SAAA,CAAUU,EAOV,EAAGC,EAAW;EAEN,MAAAE,EAAA,GAAAN,UAAA,IAAcF,aAAA;EAAA,IAAAS,EAAA;EAAA,IAAAR,CAAA,QAAAO,EAAA;IAAfC,EAAA,IAACD,EAAc,EAAeL,aAAA;IAAcF,CAAA,MAAAO,EAAA;IAAAP,CAAA,MAAAQ,EAAA;EAAA;IAAAA,EAAA,GAAAR,CAAA;EAAA;EAAA,OAA5CQ,EAA4C;AAAA","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"sanitizeQuery.d.ts","sourceRoot":"","sources":["../../../src/providers/ListQuery/sanitizeQuery.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAS,MAAM,SAAS,CAAA;AAE/C;;;;GAIG;AACH,eAAO,MAAM,aAAa,eAAgB,SAAS,KAAG,SA8BrD,CAAA"}
1
+ {"version":3,"file":"sanitizeQuery.d.ts","sourceRoot":"","sources":["../../../src/providers/ListQuery/sanitizeQuery.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAS,MAAM,SAAS,CAAA;AAE/C;;;;GAIG;AACH,eAAO,MAAM,aAAa,eAAgB,SAAS,KAAG,SAmCrD,CAAA"}