@payloadcms/ui 3.55.0-canary.4 → 3.55.0-internal.d44d1d3

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 (140) hide show
  1. package/dist/elements/BulkUpload/EditForm/index.js +18 -4
  2. package/dist/elements/BulkUpload/EditForm/index.js.map +1 -1
  3. package/dist/elements/ClipboardAction/index.js +74 -173
  4. package/dist/elements/ClipboardAction/index.js.map +1 -1
  5. package/dist/elements/CodeEditor/CodeEditor.js +67 -155
  6. package/dist/elements/CodeEditor/CodeEditor.js.map +1 -1
  7. package/dist/elements/Collapsible/index.js +7 -15
  8. package/dist/elements/Collapsible/index.js.map +1 -1
  9. package/dist/elements/ConfirmationModal/index.js +8 -44
  10. package/dist/elements/ConfirmationModal/index.js.map +1 -1
  11. package/dist/elements/CopyLocaleData/index.js +89 -97
  12. package/dist/elements/CopyLocaleData/index.js.map +1 -1
  13. package/dist/elements/CopyToClipboard/index.js +2 -22
  14. package/dist/elements/CopyToClipboard/index.js.map +1 -1
  15. package/dist/elements/DeleteMany/index.js +47 -83
  16. package/dist/elements/DeleteMany/index.js.map +1 -1
  17. package/dist/elements/DocumentControls/index.js +27 -55
  18. package/dist/elements/DocumentControls/index.js.map +1 -1
  19. package/dist/elements/DocumentDrawer/DrawerHeader/index.js +2 -10
  20. package/dist/elements/DocumentDrawer/DrawerHeader/index.js.map +1 -1
  21. package/dist/elements/DocumentDrawer/index.js +47 -99
  22. package/dist/elements/DocumentDrawer/index.js.map +1 -1
  23. package/dist/elements/Drawer/index.js +23 -57
  24. package/dist/elements/Drawer/index.js.map +1 -1
  25. package/dist/elements/DrawerActionHeader/index.js +3 -21
  26. package/dist/elements/DrawerActionHeader/index.js.map +1 -1
  27. package/dist/elements/FolderView/Drawers/MoveToFolder/index.js +149 -225
  28. package/dist/elements/FolderView/Drawers/MoveToFolder/index.js.map +1 -1
  29. package/dist/elements/FolderView/FolderFileCard/index.js +19 -27
  30. package/dist/elements/FolderView/FolderFileCard/index.js.map +1 -1
  31. package/dist/elements/FolderView/MoveDocToFolder/index.js +12 -23
  32. package/dist/elements/FolderView/MoveDocToFolder/index.js.map +1 -1
  33. package/dist/elements/FullscreenModal/index.js +10 -20
  34. package/dist/elements/FullscreenModal/index.js.map +1 -1
  35. package/dist/elements/ListDrawer/index.js +18 -24
  36. package/dist/elements/ListDrawer/index.js.map +1 -1
  37. package/dist/elements/ListHeader/TitleActions/ListCreateNewDocInFolderButton.js +19 -32
  38. package/dist/elements/ListHeader/TitleActions/ListCreateNewDocInFolderButton.js.map +1 -1
  39. package/dist/elements/ListHeaderTabs/DefaultListPill.js +15 -8
  40. package/dist/elements/ListHeaderTabs/DefaultListPill.js.map +1 -1
  41. package/dist/elements/ListSelection/index.js +11 -27
  42. package/dist/elements/ListSelection/index.js.map +1 -1
  43. package/dist/elements/LivePreview/Window/index.js +68 -139
  44. package/dist/elements/LivePreview/Window/index.js.map +1 -1
  45. package/dist/elements/Loading/index.js +2 -11
  46. package/dist/elements/Loading/index.js.map +1 -1
  47. package/dist/elements/LoadingOverlay/index.js +46 -102
  48. package/dist/elements/LoadingOverlay/index.js.map +1 -1
  49. package/dist/elements/Localizer/LocalizerLabel/index.js +23 -36
  50. package/dist/elements/Localizer/LocalizerLabel/index.js.map +1 -1
  51. package/dist/elements/QueryPresets/QueryPresetToggler/index.js +41 -139
  52. package/dist/elements/QueryPresets/QueryPresetToggler/index.js.map +1 -1
  53. package/dist/elements/RenderIfInViewport/index.d.ts +2 -2
  54. package/dist/elements/RenderIfInViewport/index.d.ts.map +1 -1
  55. package/dist/elements/RenderIfInViewport/index.js.map +1 -1
  56. package/dist/elements/SelectRow/index.js +39 -40
  57. package/dist/elements/SelectRow/index.js.map +1 -1
  58. package/dist/elements/ShimmerEffect/index.js +20 -12
  59. package/dist/elements/ShimmerEffect/index.js.map +1 -1
  60. package/dist/elements/SortColumn/index.js +21 -30
  61. package/dist/elements/SortColumn/index.js.map +1 -1
  62. package/dist/elements/Table/DefaultCell/fields/Date/index.js +9 -37
  63. package/dist/elements/Table/DefaultCell/fields/Date/index.js.map +1 -1
  64. package/dist/elements/Table/DefaultCell/fields/Relationship/index.js +35 -37
  65. package/dist/elements/Table/DefaultCell/fields/Relationship/index.js.map +1 -1
  66. package/dist/elements/Table/DefaultCell/fields/Select/index.js +12 -27
  67. package/dist/elements/Table/DefaultCell/fields/Select/index.js.map +1 -1
  68. package/dist/elements/Thumbnail/index.js +35 -75
  69. package/dist/elements/Thumbnail/index.js.map +1 -1
  70. package/dist/elements/ThumbnailCard/index.js +17 -26
  71. package/dist/elements/ThumbnailCard/index.js.map +1 -1
  72. package/dist/elements/Tooltip/index.js +51 -127
  73. package/dist/elements/Tooltip/index.js.map +1 -1
  74. package/dist/elements/Upload/index.js +2 -10
  75. package/dist/elements/Upload/index.js.map +1 -1
  76. package/dist/elements/WhereBuilder/Condition/Select/index.js +31 -44
  77. package/dist/elements/WhereBuilder/Condition/Select/index.js.map +1 -1
  78. package/dist/exports/client/{CodeEditor-MIIBUJZ4.js → CodeEditor-O6BWJHD2.js} +2 -2
  79. package/dist/exports/client/{DatePicker-NMDEHPWL.js → DatePicker-F432AIH3.js} +2 -2
  80. package/dist/exports/client/{chunk-7RGKTZG2.js → chunk-AZDI6MW4.js} +1 -1
  81. package/dist/exports/client/{chunk-7RGKTZG2.js.map → chunk-AZDI6MW4.js.map} +1 -1
  82. package/dist/exports/client/{chunk-Z6O2JA43.js → chunk-FXAFULZQ.js} +6 -6
  83. package/dist/exports/client/{chunk-Z6O2JA43.js.map → chunk-FXAFULZQ.js.map} +3 -3
  84. package/dist/exports/client/index.d.ts +3 -2
  85. package/dist/exports/client/index.d.ts.map +1 -1
  86. package/dist/exports/client/index.js +12 -12
  87. package/dist/exports/client/index.js.map +4 -4
  88. package/dist/fields/Array/ArrayRow.d.ts +2 -3
  89. package/dist/fields/Array/ArrayRow.d.ts.map +1 -1
  90. package/dist/fields/Array/ArrayRow.js +13 -23
  91. package/dist/fields/Array/ArrayRow.js.map +1 -1
  92. package/dist/fields/Array/index.js +273 -477
  93. package/dist/fields/Array/index.js.map +1 -1
  94. package/dist/fields/Checkbox/Input.js +2 -19
  95. package/dist/fields/Checkbox/Input.js.map +1 -1
  96. package/dist/fields/FieldError/index.js +30 -29
  97. package/dist/fields/FieldError/index.js.map +1 -1
  98. package/dist/fields/FieldLabel/index.js +12 -64
  99. package/dist/fields/FieldLabel/index.js.map +1 -1
  100. package/dist/fields/Relationship/select-components/MultiValueLabel/index.js +45 -103
  101. package/dist/fields/Relationship/select-components/MultiValueLabel/index.js.map +1 -1
  102. package/dist/fields/Relationship/select-components/SingleValue/index.js +29 -44
  103. package/dist/fields/Relationship/select-components/SingleValue/index.js.map +1 -1
  104. package/dist/fields/Row/index.d.ts +1 -3
  105. package/dist/fields/Row/index.d.ts.map +1 -1
  106. package/dist/fields/Select/Input.js +18 -31
  107. package/dist/fields/Select/Input.js.map +1 -1
  108. package/dist/fields/Tabs/Tab/index.js +2 -11
  109. package/dist/fields/Tabs/Tab/index.js.map +1 -1
  110. package/dist/fields/Tabs/index.d.ts +2 -1
  111. package/dist/fields/Tabs/index.d.ts.map +1 -1
  112. package/dist/fields/Tabs/index.js +185 -225
  113. package/dist/fields/Tabs/index.js.map +1 -1
  114. package/dist/fields/Upload/RelationshipContent/index.js +79 -127
  115. package/dist/fields/Upload/RelationshipContent/index.js.map +1 -1
  116. package/dist/forms/RenderFields/RenderField.js +245 -237
  117. package/dist/forms/RenderFields/RenderField.js.map +1 -1
  118. package/dist/forms/RenderFields/types.d.ts +2 -10
  119. package/dist/forms/RenderFields/types.d.ts.map +1 -1
  120. package/dist/forms/RenderFields/types.js.map +1 -1
  121. package/dist/forms/useField/index.d.ts +5 -0
  122. package/dist/forms/useField/index.d.ts.map +1 -1
  123. package/dist/forms/useField/index.js +74 -45
  124. package/dist/forms/useField/index.js.map +1 -1
  125. package/dist/hooks/useIntersect.js +35 -53
  126. package/dist/hooks/useIntersect.js.map +1 -1
  127. package/dist/hooks/usePayloadAPI.js +36 -44
  128. package/dist/hooks/usePayloadAPI.js.map +1 -1
  129. package/dist/providers/ServerFunctions/index.d.ts +1 -1
  130. package/dist/providers/ServerFunctions/index.d.ts.map +1 -1
  131. package/dist/providers/ServerFunctions/index.js.map +1 -1
  132. package/dist/views/BrowseByFolder/index.js +37 -55
  133. package/dist/views/BrowseByFolder/index.js.map +1 -1
  134. package/dist/views/CollectionFolder/index.js +13 -40
  135. package/dist/views/CollectionFolder/index.js.map +1 -1
  136. package/dist/views/Edit/Auth/index.js +93 -105
  137. package/dist/views/Edit/Auth/index.js.map +1 -1
  138. package/package.json +7 -7
  139. /package/dist/exports/client/{CodeEditor-MIIBUJZ4.js.map → CodeEditor-O6BWJHD2.js.map} +0 -0
  140. /package/dist/exports/client/{DatePicker-NMDEHPWL.js.map → DatePicker-F432AIH3.js.map} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["c","_c","getTranslation","React","useEffect","useMemo","useState","useIntersect","useConfig","useTranslation","canUseDOM","formatDocTitle","useListRelationships","FileCell","baseClass","totalToShow","RelationshipCell","t0","$","cellData","cellDataFromProps","customCellProps","customCellContext","field","t1","label","relationTo","collection","t2","docs","config","getEntityConfig","collections","routes","intersectionRef","entry","t3","Symbol","for","values","setValues","documents","getRelationships","hasRequested","setHasRequested","i18n","t","isAboveViewport","boundingClientRect","top","window","innerHeight","t4","formattedValues","arrayCellData","Array","isArray","slice","length","forEach","cell","push","value","t5","api","t6","t7","t8","admin","t9","t10","i","relationTo_0","document","relatedCollection","collectionSlug","label_0","collectionConfig","data","dateFormat","fallback","fileField","type","fieldPreviewAllowed","displayPreview","undefined","previewAllowed","upload","slug","rowData","_jsxs","Fragment","children","className","ref","map","count","items"],"sources":["../../../../../../src/elements/Table/DefaultCell/fields/Relationship/index.tsx"],"sourcesContent":["'use client'\nimport type {\n DefaultCellComponentProps,\n JoinFieldClient,\n RelationshipFieldClient,\n UploadFieldClient,\n} from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport React, { useEffect, useMemo, useState } from 'react'\n\nimport { useIntersect } from '../../../../../hooks/useIntersect.js'\nimport { useConfig } from '../../../../../providers/Config/index.js'\nimport { useTranslation } from '../../../../../providers/Translation/index.js'\nimport { canUseDOM } from '../../../../../utilities/canUseDOM.js'\nimport { formatDocTitle } from '../../../../../utilities/formatDocTitle/index.js'\nimport { useListRelationships } from '../../../RelationshipProvider/index.js'\nimport { FileCell } from '../File/index.js'\nimport './index.scss'\n\ntype Value = { relationTo: string; value: number | string }\nconst baseClass = 'relationship-cell'\nconst totalToShow = 3\n\nexport type RelationshipCellProps = DefaultCellComponentProps<\n JoinFieldClient | RelationshipFieldClient | UploadFieldClient\n>\n\nexport const RelationshipCell: React.FC<RelationshipCellProps> = ({\n cellData: cellDataFromProps,\n customCellProps: customCellContext,\n field,\n field: { label },\n}) => {\n // conditionally extract relationTo both both relationship and join fields\n const relationTo =\n ('relationTo' in field && field.relationTo) || ('collection' in field && field.collection)\n\n // conditionally extract docs from join fields\n const cellData = useMemo(() => {\n return 'collection' in field ? cellDataFromProps?.docs : cellDataFromProps\n }, [cellDataFromProps, field])\n\n const { config, getEntityConfig } = useConfig()\n const { collections, routes } = config\n const [intersectionRef, entry] = useIntersect()\n const [values, setValues] = useState<Value[]>([])\n const { documents, getRelationships } = useListRelationships()\n const [hasRequested, setHasRequested] = useState(false)\n const { i18n, t } = useTranslation()\n\n const isAboveViewport = canUseDOM ? entry?.boundingClientRect?.top < window.innerHeight : false\n\n useEffect(() => {\n if ((cellData || typeof cellData === 'number') && isAboveViewport && !hasRequested) {\n const formattedValues: Value[] = []\n const arrayCellData = Array.isArray(cellData) ? cellData : [cellData]\n arrayCellData\n .slice(0, arrayCellData.length < totalToShow ? arrayCellData.length : totalToShow)\n .forEach((cell) => {\n if (typeof cell === 'object' && 'relationTo' in cell && 'value' in cell) {\n formattedValues.push(cell)\n }\n if (\n (typeof cell === 'number' || typeof cell === 'string') &&\n typeof relationTo === 'string'\n ) {\n formattedValues.push({\n relationTo,\n value: cell,\n })\n }\n })\n getRelationships(formattedValues)\n setHasRequested(true)\n setValues(formattedValues)\n }\n }, [\n cellData,\n relationTo,\n collections,\n isAboveViewport,\n routes.api,\n hasRequested,\n getRelationships,\n ])\n\n useEffect(() => {\n if (hasRequested) {\n setHasRequested(false)\n }\n }, [cellData])\n\n return (\n <div className={baseClass} ref={intersectionRef}>\n {values.map(({ relationTo, value }, i) => {\n const document = documents[relationTo][value]\n const relatedCollection = getEntityConfig({\n collectionSlug: relationTo,\n })\n\n const label = formatDocTitle({\n collectionConfig: relatedCollection,\n data: document || null,\n dateFormat: config.admin.dateFormat,\n fallback: `${t('general:untitled')} - ID: ${value}`,\n i18n,\n })\n\n let fileField = null\n\n if (field.type === 'upload') {\n const fieldPreviewAllowed = 'displayPreview' in field ? field.displayPreview : undefined\n const previewAllowed =\n fieldPreviewAllowed ?? relatedCollection.upload?.displayPreview ?? true\n\n if (previewAllowed && document) {\n fileField = (\n <FileCell\n cellData={label}\n collectionConfig={relatedCollection}\n collectionSlug={relatedCollection.slug}\n customCellProps={customCellContext}\n field={field}\n rowData={document}\n />\n )\n }\n }\n\n return (\n <React.Fragment key={i}>\n {document === false && `${t('general:untitled')} - ID: ${value}`}\n {document === null && `${t('general:loading')}...`}\n {document ? fileField || label : null}\n {values.length > i + 1 && ', '}\n </React.Fragment>\n )\n })}\n {Array.isArray(cellData) &&\n cellData.length > totalToShow &&\n t('fields:itemsAndMore', { count: cellData.length - totalToShow, items: '' })}\n {values.length === 0 && t('general:noLabel', { label: getTranslation(label || '', i18n) })}\n </div>\n )\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["c","_c","getTranslation","React","useEffect","useMemo","useState","useIntersect","useConfig","useTranslation","canUseDOM","formatDocTitle","useListRelationships","FileCell","baseClass","totalToShow","RelationshipCell","t0","$","cellData","cellDataFromProps","customCellProps","customCellContext","field","t1","label","relationTo","collection","docs","config","getEntityConfig","collections","routes","intersectionRef","entry","t2","Symbol","for","values","setValues","documents","getRelationships","hasRequested","setHasRequested","i18n","t","isAboveViewport","boundingClientRect","top","window","innerHeight","t3","formattedValues","arrayCellData","Array","isArray","slice","length","forEach","cell","push","value","t4","api","t5","t6","t7","admin","t8","t9","i","relationTo_0","document","relatedCollection","collectionSlug","label_0","collectionConfig","data","dateFormat","fallback","fileField","type","fieldPreviewAllowed","displayPreview","undefined","previewAllowed","upload","slug","rowData","_jsxs","Fragment","children","className","ref","map","count","items"],"sources":["../../../../../../src/elements/Table/DefaultCell/fields/Relationship/index.tsx"],"sourcesContent":["'use client'\nimport type {\n DefaultCellComponentProps,\n JoinFieldClient,\n RelationshipFieldClient,\n UploadFieldClient,\n} from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport React, { useEffect, useMemo, useState } from 'react'\n\nimport { useIntersect } from '../../../../../hooks/useIntersect.js'\nimport { useConfig } from '../../../../../providers/Config/index.js'\nimport { useTranslation } from '../../../../../providers/Translation/index.js'\nimport { canUseDOM } from '../../../../../utilities/canUseDOM.js'\nimport { formatDocTitle } from '../../../../../utilities/formatDocTitle/index.js'\nimport { useListRelationships } from '../../../RelationshipProvider/index.js'\nimport { FileCell } from '../File/index.js'\nimport './index.scss'\n\ntype Value = { relationTo: string; value: number | string }\nconst baseClass = 'relationship-cell'\nconst totalToShow = 3\n\nexport type RelationshipCellProps = DefaultCellComponentProps<\n JoinFieldClient | RelationshipFieldClient | UploadFieldClient\n>\n\nexport const RelationshipCell: React.FC<RelationshipCellProps> = ({\n cellData: cellDataFromProps,\n customCellProps: customCellContext,\n field,\n field: { label },\n}) => {\n // conditionally extract relationTo both both relationship and join fields\n const relationTo =\n ('relationTo' in field && field.relationTo) || ('collection' in field && field.collection)\n\n // conditionally extract docs from join fields\n const cellData = useMemo(() => {\n return 'collection' in field ? cellDataFromProps?.docs : cellDataFromProps\n }, [cellDataFromProps, field])\n\n const { config, getEntityConfig } = useConfig()\n const { collections, routes } = config\n const [intersectionRef, entry] = useIntersect()\n const [values, setValues] = useState<Value[]>([])\n const { documents, getRelationships } = useListRelationships()\n const [hasRequested, setHasRequested] = useState(false)\n const { i18n, t } = useTranslation()\n\n const isAboveViewport = canUseDOM ? entry?.boundingClientRect?.top < window.innerHeight : false\n\n useEffect(() => {\n if ((cellData || typeof cellData === 'number') && isAboveViewport && !hasRequested) {\n const formattedValues: Value[] = []\n const arrayCellData = Array.isArray(cellData) ? cellData : [cellData]\n arrayCellData\n .slice(0, arrayCellData.length < totalToShow ? arrayCellData.length : totalToShow)\n .forEach((cell) => {\n if (typeof cell === 'object' && 'relationTo' in cell && 'value' in cell) {\n formattedValues.push(cell)\n }\n if (\n (typeof cell === 'number' || typeof cell === 'string') &&\n typeof relationTo === 'string'\n ) {\n formattedValues.push({\n relationTo,\n value: cell,\n })\n }\n })\n getRelationships(formattedValues)\n setHasRequested(true)\n setValues(formattedValues)\n }\n }, [\n cellData,\n relationTo,\n collections,\n isAboveViewport,\n routes.api,\n hasRequested,\n getRelationships,\n ])\n\n useEffect(() => {\n if (hasRequested) {\n setHasRequested(false)\n }\n }, [cellData])\n\n return (\n <div className={baseClass} ref={intersectionRef}>\n {values.map(({ relationTo, value }, i) => {\n const document = documents[relationTo][value]\n const relatedCollection = getEntityConfig({\n collectionSlug: relationTo,\n })\n\n const label = formatDocTitle({\n collectionConfig: relatedCollection,\n data: document || null,\n dateFormat: config.admin.dateFormat,\n fallback: `${t('general:untitled')} - ID: ${value}`,\n i18n,\n })\n\n let fileField = null\n\n if (field.type === 'upload') {\n const fieldPreviewAllowed = 'displayPreview' in field ? field.displayPreview : undefined\n const previewAllowed =\n fieldPreviewAllowed ?? relatedCollection.upload?.displayPreview ?? true\n\n if (previewAllowed && document) {\n fileField = (\n <FileCell\n cellData={label}\n collectionConfig={relatedCollection}\n collectionSlug={relatedCollection.slug}\n customCellProps={customCellContext}\n field={field}\n rowData={document}\n />\n )\n }\n }\n\n return (\n <React.Fragment key={i}>\n {document === false && `${t('general:untitled')} - ID: ${value}`}\n {document === null && `${t('general:loading')}...`}\n {document ? fileField || label : null}\n {values.length > i + 1 && ', '}\n </React.Fragment>\n )\n })}\n {Array.isArray(cellData) &&\n cellData.length > totalToShow &&\n t('fields:itemsAndMore', { count: cellData.length - totalToShow, items: '' })}\n {values.length === 0 && t('general:noLabel', { label: getTranslation(label || '', i18n) })}\n </div>\n )\n}\n"],"mappings":"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","ignoreList":[]}
@@ -7,7 +7,7 @@ import { optionsAreObjects } from 'payload/shared';
7
7
  import React from 'react';
8
8
  import { useTranslation } from '../../../../../providers/Translation/index.js';
9
9
  export const SelectCell = t0 => {
10
- const $ = _c(10);
10
+ const $ = _c(7);
11
11
  const {
12
12
  cellData,
13
13
  field: t1
@@ -31,38 +31,23 @@ export const SelectCell = t0 => {
31
31
  t2 = $[2];
32
32
  }
33
33
  const findLabel = t2;
34
- let content;
35
- if (optionsAreObjects(options)) {
36
- let t3;
37
- if ($[3] !== cellData || $[4] !== findLabel) {
38
- t3 = Array.isArray(cellData) ? findLabel(cellData) : findLabel([cellData]);
39
- $[3] = cellData;
40
- $[4] = findLabel;
41
- $[5] = t3;
42
- } else {
43
- t3 = $[5];
44
- }
45
- content = t3;
46
- } else {
47
- let t3;
48
- if ($[6] !== cellData) {
49
- t3 = Array.isArray(cellData) ? cellData.join(", ") : cellData;
50
- $[6] = cellData;
51
- $[7] = t3;
34
+ let t3;
35
+ if ($[3] !== cellData || $[4] !== findLabel || $[5] !== options) {
36
+ let content;
37
+ if (optionsAreObjects(options)) {
38
+ content = Array.isArray(cellData) ? findLabel(cellData) : findLabel([cellData]);
52
39
  } else {
53
- t3 = $[7];
40
+ content = Array.isArray(cellData) ? cellData.join(", ") : cellData;
54
41
  }
55
- content = t3;
56
- }
57
- let t3;
58
- if ($[8] !== content) {
59
42
  t3 = _jsx("span", {
60
43
  children: content
61
44
  });
62
- $[8] = content;
63
- $[9] = t3;
45
+ $[3] = cellData;
46
+ $[4] = findLabel;
47
+ $[5] = options;
48
+ $[6] = t3;
64
49
  } else {
65
- t3 = $[9];
50
+ t3 = $[6];
66
51
  }
67
52
  return t3;
68
53
  };
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["c","_c","getTranslation","optionsAreObjects","React","useTranslation","SelectCell","t0","$","cellData","field","t1","options","i18n","t2","items","map","i","found","filter","f","value","label","join","findLabel","content","t3","Array","isArray","_jsx","children"],"sources":["../../../../../../src/elements/Table/DefaultCell/fields/Select/index.tsx"],"sourcesContent":["'use client'\nimport type { DefaultCellComponentProps, OptionObject, SelectFieldClient } from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport { optionsAreObjects } from 'payload/shared'\nimport React from 'react'\n\nimport { useTranslation } from '../../../../../providers/Translation/index.js'\n\nexport interface SelectCellProps extends DefaultCellComponentProps<SelectFieldClient> {}\n\nexport const SelectCell: React.FC<SelectCellProps> = ({ cellData, field: { options } }) => {\n const { i18n } = useTranslation()\n\n const findLabel = (items: string[]) =>\n items\n .map((i) => {\n const found = (options as OptionObject[]).filter((f: OptionObject) => f.value === i)?.[0]\n ?.label\n return getTranslation(found, i18n)\n })\n .join(', ')\n\n let content = ''\n if (optionsAreObjects(options)) {\n content = Array.isArray(cellData)\n ? findLabel(cellData) // hasMany\n : findLabel([cellData])\n } else {\n content = Array.isArray(cellData)\n ? cellData.join(', ') // hasMany\n : cellData\n }\n\n return <span>{content}</span>\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;;AAGA,SAASC,cAAc,QAAQ;AAC/B,SAASC,iBAAiB,QAAQ;AAClC,OAAOC,KAAA,MAAW;AAElB,SAASC,cAAc,QAAQ;AAI/B,OAAO,MAAMC,UAAA,GAAwCC,EAAA;EAAA,MAAAC,CAAA,GAAAP,EAAA;EAAC;IAAAQ,QAAA;IAAAC,KAAA,EAAAC;EAAA,IAAAJ,EAAgC;EAAb;IAAAK;EAAA,IAAAD,EAAW;EAClF;IAAAE;EAAA,IAAiBR,cAAA;EAAA,IAAAS,EAAA;EAAA,IAAAN,CAAA,QAAAK,IAAA,IAAAL,CAAA,QAAAI,OAAA;IAECE,EAAA,GAAAC,KAAA,IAChBA,KAAA,CAAAC,GAAA,CAAAC,CAAA;MAEI,MAAAC,KAAA,GAAcN,OAAC,CAAAO,MAAA,CAAAC,CAAA,IAAuDA,CAAA,CAAAC,KAAA,KAAYJ,CAAA,QAAAK,KAAA;MAC9E,OACGpB,cAAA,CAAegB,KAAA,EAAOL,IAAA;IAAA,CAC/B,EAAAU,IAAA,CACM;IAAAf,CAAA,MAAAK,IAAA;IAAAL,CAAA,MAAAI,OAAA;IAAAJ,CAAA,MAAAM,EAAA;EAAA;IAAAA,EAAA,GAAAN,CAAA;EAAA;EAPV,MAAAgB,SAAA,GAAkBV,EAOR;EAEV,IAAAW,OAAA;EAAc,IACVtB,iBAAA,CAAkBS,OAAA;IAAA,IAAAc,EAAA;IAAA,IAAAlB,CAAA,QAAAC,QAAA,IAAAD,CAAA,QAAAgB,SAAA;MACVE,EAAA,GAAAC,KAAA,CAAAC,OAAA,CAAcnB,QAAA,IACpBe,SAAA,CAAUf,QAAA,IACVe,SAAA,EAAWf,QAAA,CAAS;MAAAD,CAAA,MAAAC,QAAA;MAAAD,CAAA,MAAAgB,SAAA;MAAAhB,CAAA,MAAAkB,EAAA;IAAA;MAAAA,EAAA,GAAAlB,CAAA;IAAA;IAFxBiB,OAAA,CAAAA,CAAA,CAAUA,EAEc;EAFxB;IAAA,IAAAC,EAAA;IAAA,IAAAlB,CAAA,QAAAC,QAAA;MAIUiB,EAAA,GAAAC,KAAA,CAAAC,OAAA,CAAcnB,QAAA,IACpBA,QAAA,CAAAc,IAAA,CAAc,QACdd,QAAA;MAAAD,CAAA,MAAAC,QAAA;MAAAD,CAAA,MAAAkB,EAAA;IAAA;MAAAA,EAAA,GAAAlB,CAAA;IAAA;IAFJiB,OAAA,CAAAA,CAAA,CAAUA,EAEN;EAFJ;EAAA,IAAAC,EAAA;EAAA,IAAAlB,CAAA,QAAAiB,OAAA;IAKKC,EAAA,GAAAG,IAAA,CAAC;MAAAC,QAAA,EAAML;IAAA,C;;;;;;SAAPC,E;CACT","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["c","_c","getTranslation","optionsAreObjects","React","useTranslation","SelectCell","t0","$","cellData","field","t1","options","i18n","t2","items","map","i","found","filter","f","value","label","join","findLabel","t3","content","_jsx","children"],"sources":["../../../../../../src/elements/Table/DefaultCell/fields/Select/index.tsx"],"sourcesContent":["'use client'\nimport type { DefaultCellComponentProps, OptionObject, SelectFieldClient } from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport { optionsAreObjects } from 'payload/shared'\nimport React from 'react'\n\nimport { useTranslation } from '../../../../../providers/Translation/index.js'\n\nexport interface SelectCellProps extends DefaultCellComponentProps<SelectFieldClient> {}\n\nexport const SelectCell: React.FC<SelectCellProps> = ({ cellData, field: { options } }) => {\n const { i18n } = useTranslation()\n\n const findLabel = (items: string[]) =>\n items\n .map((i) => {\n const found = (options as OptionObject[]).filter((f: OptionObject) => f.value === i)?.[0]\n ?.label\n return getTranslation(found, i18n)\n })\n .join(', ')\n\n let content = ''\n if (optionsAreObjects(options)) {\n content = Array.isArray(cellData)\n ? findLabel(cellData) // hasMany\n : findLabel([cellData])\n } else {\n content = Array.isArray(cellData)\n ? cellData.join(', ') // hasMany\n : cellData\n }\n\n return <span>{content}</span>\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;;AAGA,SAASC,cAAc,QAAQ;AAC/B,SAASC,iBAAiB,QAAQ;AAClC,OAAOC,KAAA,MAAW;AAElB,SAASC,cAAc,QAAQ;AAI/B,OAAO,MAAMC,UAAA,GAAwCC,EAAA;EAAA,MAAAC,CAAA,GAAAP,EAAA;EAAC;IAAAQ,QAAA;IAAAC,KAAA,EAAAC;EAAA,IAAAJ,EAAgC;EAAb;IAAAK;EAAA,IAAAD,EAAW;EAClF;IAAAE;EAAA,IAAiBR,cAAA;EAAA,IAAAS,EAAA;EAAA,IAAAN,CAAA,QAAAK,IAAA,IAAAL,CAAA,QAAAI,OAAA;IAECE,EAAA,GAAAC,KAAA,IAChBA,KAAA,CAAAC,GAAA,CAAAC,CAAA;MAEI,MAAAC,KAAA,GAAcN,OAAC,CAAAO,MAAA,CAAAC,CAAA,IAAuDA,CAAA,CAAAC,KAAA,KAAYJ,CAAA,QAAAK,KAAA;MAC9E,OACGpB,cAAA,CAAegB,KAAA,EAAOL,IAAA;IAAA,CAC/B,EAAAU,IAAA,CACM;IAAAf,CAAA,MAAAK,IAAA;IAAAL,CAAA,MAAAI,OAAA;IAAAJ,CAAA,MAAAM,EAAA;EAAA;IAAAA,EAAA,GAAAN,CAAA;EAAA;EAPV,MAAAgB,SAAA,GAAkBV,EAOR;EAAA,IAAAW,EAAA;EAAA,IAAAjB,CAAA,QAAAC,QAAA,IAAAD,CAAA,QAAAgB,SAAA,IAAAhB,CAAA,QAAAI,OAAA;IAEV,IAAAc,OAAA;IAAc,IACVvB,iBAAA,CAAkBS,OAAA;MACpBc,OAAA,CAAAA,CAAA,CAAUA,cAAcjB,QAAA,IACpBe,SAAA,CAAUf,QAAA,IACVe,SAAA,EAAWf,QAAA,CAAS;IAFxB;MAIAiB,OAAA,CAAAA,CAAA,CAAUA,cAAcjB,QAAA,IACpBA,QAAA,CAAAc,IAAA,CAAc,QACdd,QAAA;IAFJ;IAKKgB,EAAA,GAAAE,IAAA,CAAC;MAAAC,QAAA,EAAMF;IAAA,C;;;;;;;;SAAPD,E;CACT","ignoreList":[]}
@@ -8,7 +8,7 @@ const baseClass = 'thumbnail';
8
8
  import { File } from '../../graphics/File/index.js';
9
9
  import { ShimmerEffect } from '../ShimmerEffect/index.js';
10
10
  export const Thumbnail = props => {
11
- const $ = _c(17);
11
+ const $ = _c(6);
12
12
  const {
13
13
  className: t0,
14
14
  doc: t1,
@@ -17,33 +17,25 @@ export const Thumbnail = props => {
17
17
  size
18
18
  } = props;
19
19
  const className = t0 === undefined ? "" : t0;
20
- let t2;
21
- if ($[0] !== t1) {
22
- t2 = t1 === undefined ? {} : t1;
23
- $[0] = t1;
24
- $[1] = t2;
25
- } else {
26
- t2 = $[1];
27
- }
28
20
  const {
29
21
  filename
30
- } = t2;
22
+ } = t1 === undefined ? {} : t1;
31
23
  const [fileExists, setFileExists] = React.useState(undefined);
32
- const t3 = `${baseClass}--size-${size || "medium"}`;
33
- let t4;
34
- if ($[2] !== className || $[3] !== t3) {
35
- t4 = [baseClass, t3, className];
36
- $[2] = className;
37
- $[3] = t3;
38
- $[4] = t4;
24
+ const t2 = `${baseClass}--size-${size || "medium"}`;
25
+ let t3;
26
+ if ($[0] !== className || $[1] !== t2) {
27
+ t3 = [baseClass, t2, className];
28
+ $[0] = className;
29
+ $[1] = t2;
30
+ $[2] = t3;
39
31
  } else {
40
- t4 = $[4];
32
+ t3 = $[2];
41
33
  }
42
- const classNames = t4.join(" ");
34
+ const classNames = t3.join(" ");
35
+ let t4;
43
36
  let t5;
44
- let t6;
45
- if ($[5] !== fileSrc) {
46
- t5 = () => {
37
+ if ($[3] !== fileSrc) {
38
+ t4 = () => {
47
39
  if (!fileSrc) {
48
40
  setFileExists(false);
49
41
  return;
@@ -58,53 +50,32 @@ export const Thumbnail = props => {
58
50
  setFileExists(false);
59
51
  };
60
52
  };
61
- t6 = [fileSrc];
62
- $[5] = fileSrc;
63
- $[6] = t5;
64
- $[7] = t6;
53
+ t5 = [fileSrc];
54
+ $[3] = fileSrc;
55
+ $[4] = t4;
56
+ $[5] = t5;
65
57
  } else {
66
- t5 = $[6];
67
- t6 = $[7];
58
+ t4 = $[4];
59
+ t5 = $[5];
68
60
  }
69
- React.useEffect(t5, t6);
61
+ React.useEffect(t4, t5);
70
62
  let src = null;
71
63
  if (fileSrc) {
72
64
  const queryChar = fileSrc?.includes("?") ? "&" : "?";
73
65
  src = imageCacheTag ? `${fileSrc}${queryChar}${encodeURIComponent(imageCacheTag)}` : fileSrc;
74
66
  }
75
- let t7;
76
- if ($[8] !== classNames || $[9] !== fileExists || $[10] !== filename || $[11] !== src) {
77
- let t8;
78
- if ($[13] !== fileExists || $[14] !== filename || $[15] !== src) {
79
- t8 = fileExists && _jsx("img", {
80
- alt: filename,
81
- src
82
- });
83
- $[13] = fileExists;
84
- $[14] = filename;
85
- $[15] = src;
86
- $[16] = t8;
87
- } else {
88
- t8 = $[16];
89
- }
90
- t7 = _jsxs("div", {
91
- className: classNames,
92
- children: [fileExists === undefined && _jsx(ShimmerEffect, {
93
- height: "100%"
94
- }), t8, fileExists === false && _jsx(File, {})]
95
- });
96
- $[8] = classNames;
97
- $[9] = fileExists;
98
- $[10] = filename;
99
- $[11] = src;
100
- $[12] = t7;
101
- } else {
102
- t7 = $[12];
103
- }
104
- return t7;
67
+ return _jsxs("div", {
68
+ className: classNames,
69
+ children: [fileExists === undefined && _jsx(ShimmerEffect, {
70
+ height: "100%"
71
+ }), fileExists && _jsx("img", {
72
+ alt: filename,
73
+ src
74
+ }), fileExists === false && _jsx(File, {})]
75
+ });
105
76
  };
106
77
  export function ThumbnailComponent(props) {
107
- const $ = _c(17);
78
+ const $ = _c(12);
108
79
  const {
109
80
  alt,
110
81
  className: t0,
@@ -160,25 +131,14 @@ export function ThumbnailComponent(props) {
160
131
  }
161
132
  let t5;
162
133
  if ($[6] !== alt || $[7] !== classNames || $[8] !== fileExists || $[9] !== filename || $[10] !== src) {
163
- let t6;
164
- if ($[12] !== alt || $[13] !== fileExists || $[14] !== filename || $[15] !== src) {
165
- t6 = fileExists && _jsx("img", {
166
- alt: alt || filename,
167
- src
168
- });
169
- $[12] = alt;
170
- $[13] = fileExists;
171
- $[14] = filename;
172
- $[15] = src;
173
- $[16] = t6;
174
- } else {
175
- t6 = $[16];
176
- }
177
134
  t5 = _jsxs("div", {
178
135
  className: classNames,
179
136
  children: [fileExists === undefined && _jsx(ShimmerEffect, {
180
137
  height: "100%"
181
- }), t6, fileExists === false && _jsx(File, {})]
138
+ }), fileExists && _jsx("img", {
139
+ alt: alt || filename,
140
+ src
141
+ }), fileExists === false && _jsx(File, {})]
182
142
  });
183
143
  $[6] = alt;
184
144
  $[7] = classNames;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["c","_c","React","baseClass","File","ShimmerEffect","Thumbnail","props","$","className","t0","doc","t1","fileSrc","imageCacheTag","size","undefined","t2","filename","fileExists","setFileExists","useState","t3","t4","classNames","join","t5","t6","img","Image","src","onload","onerror","useEffect","queryChar","includes","encodeURIComponent","t7","t8","_jsx","alt","_jsxs","children","height","ThumbnailComponent"],"sources":["../../../src/elements/Thumbnail/index.tsx"],"sourcesContent":["'use client'\nimport React from 'react'\n\nimport './index.scss'\n\nconst baseClass = 'thumbnail'\n\nimport type { SanitizedCollectionConfig } from 'payload'\n\nimport { File } from '../../graphics/File/index.js'\nimport { ShimmerEffect } from '../ShimmerEffect/index.js'\n\nexport type ThumbnailProps = {\n className?: string\n collectionSlug?: string\n doc?: Record<string, unknown>\n fileSrc?: string\n imageCacheTag?: string\n size?: 'expand' | 'large' | 'medium' | 'small'\n uploadConfig?: SanitizedCollectionConfig['upload']\n}\n\nexport const Thumbnail: React.FC<ThumbnailProps> = (props) => {\n const { className = '', doc: { filename } = {}, fileSrc, imageCacheTag, size } = props\n const [fileExists, setFileExists] = React.useState(undefined)\n\n const classNames = [baseClass, `${baseClass}--size-${size || 'medium'}`, className].join(' ')\n\n React.useEffect(() => {\n if (!fileSrc) {\n setFileExists(false)\n return\n }\n setFileExists(undefined)\n\n const img = new Image()\n img.src = fileSrc\n img.onload = () => {\n setFileExists(true)\n }\n img.onerror = () => {\n setFileExists(false)\n }\n }, [fileSrc])\n\n let src: null | string = null\n\n /**\n * If an imageCacheTag is provided, append it to the fileSrc\n * Check if the fileSrc already has a query string, if it does, append the imageCacheTag with an ampersand\n */\n if (fileSrc) {\n const queryChar = fileSrc?.includes('?') ? '&' : '?'\n src = imageCacheTag ? `${fileSrc}${queryChar}${encodeURIComponent(imageCacheTag)}` : fileSrc\n }\n\n return (\n <div className={classNames}>\n {fileExists === undefined && <ShimmerEffect height=\"100%\" />}\n {fileExists && <img alt={filename as string} src={src} />}\n {fileExists === false && <File />}\n </div>\n )\n}\n\ntype ThumbnailComponentProps = {\n readonly alt?: string\n readonly className?: string\n readonly filename: string\n readonly fileSrc: string\n readonly imageCacheTag?: string\n readonly size?: 'expand' | 'large' | 'medium' | 'small'\n}\nexport function ThumbnailComponent(props: ThumbnailComponentProps) {\n const { alt, className = '', filename, fileSrc, imageCacheTag, size } = props\n const [fileExists, setFileExists] = React.useState(undefined)\n\n const classNames = [baseClass, `${baseClass}--size-${size || 'medium'}`, className].join(' ')\n\n React.useEffect(() => {\n if (!fileSrc) {\n setFileExists(false)\n return\n }\n setFileExists(undefined)\n\n const img = new Image()\n img.src = fileSrc\n img.onload = () => {\n setFileExists(true)\n }\n img.onerror = () => {\n setFileExists(false)\n }\n }, [fileSrc])\n\n let src: string = ''\n\n /**\n * If an imageCacheTag is provided, append it to the fileSrc\n * Check if the fileSrc already has a query string, if it does, append the imageCacheTag with an ampersand\n */\n if (fileSrc) {\n const queryChar = fileSrc?.includes('?') ? '&' : '?'\n src = imageCacheTag ? `${fileSrc}${queryChar}${encodeURIComponent(imageCacheTag)}` : fileSrc\n }\n\n return (\n <div className={classNames}>\n {fileExists === undefined && <ShimmerEffect height=\"100%\" />}\n {fileExists && <img alt={alt || filename} src={src} />}\n {fileExists === false && <File />}\n </div>\n )\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;;AACA,OAAOC,KAAA,MAAW;AAElB,OAAO;AAEP,MAAMC,SAAA,GAAY;AAIlB,SAASC,IAAI,QAAQ;AACrB,SAASC,aAAa,QAAQ;AAY9B,OAAO,MAAMC,SAAA,GAAsCC,KAAA;EAAA,MAAAC,CAAA,GAAAP,EAAA;EACjD;IAAAQ,SAAA,EAAAC,EAAA;IAAAC,GAAA,EAAAC,EAAA;IAAAC,OAAA;IAAAC,aAAA;IAAAC;EAAA,IAAiFR,KAAA;EAAzE,MAAAE,SAAA,GAAAC,EAAc,KAAAM,SAAA,GAAF,EAAE,GAAdN,EAAc;EAAA,IAAAO,EAAA;EAAA,IAAAT,CAAA,QAAAI,EAAA;IAAOK,EAAA,GAAAL,EAAiB,KAAAI,SAAA,QAAjBJ,EAAiB;IAAAJ,CAAA,MAAAI,EAAA;IAAAJ,CAAA,MAAAS,EAAA;EAAA;IAAAA,EAAA,GAAAT,CAAA;EAAA;EAAjB;IAAAU;EAAA,IAAAD,EAAiB;EAC9C,OAAAE,UAAA,EAAAC,aAAA,IAAoClB,KAAA,CAAAmB,QAAA,CAAAL,SAAe;EAEpB,MAAAM,EAAA,MAAAnB,SAAA,UAAsBY,IAAA,IAAQ,UAAU;EAAA,IAAAQ,EAAA;EAAA,IAAAf,CAAA,QAAAC,SAAA,IAAAD,CAAA,QAAAc,EAAA;IAApDC,EAAA,IAAApB,SAAA,EAAYmB,EAAwC,EAAEb,SAAA;IAAUD,CAAA,MAAAC,SAAA;IAAAD,CAAA,MAAAc,EAAA;IAAAd,CAAA,MAAAe,EAAA;EAAA;IAAAA,EAAA,GAAAf,CAAA;EAAA;EAAnF,MAAAgB,UAAA,GAAmBD,EAAgE,CAAAE,IAAA,CAAM;EAAA,IAAAC,EAAA;EAAA,IAAAC,EAAA;EAAA,IAAAnB,CAAA,QAAAK,OAAA;IAEzEa,EAAA,GAAAA,CAAA;MAAA,KACTb,OAAA;QACHO,aAAA,MAAc;QAAA;MAAA;MAGhBA,aAAA,CAAAJ,SAAc;MAEd,MAAAY,GAAA,OAAAC,KAAA;MACAD,GAAA,CAAAE,GAAA,GAAUjB,OAAA;MACVe,GAAA,CAAAG,MAAA;QACEX,aAAA,KAAc;MAAA;MAEhBQ,GAAA,CAAAI,OAAA;QACEZ,aAAA,MAAc;MAAA;IAAA;IAEfO,EAAA,IAACd,OAAA;IAAQL,CAAA,MAAAK,OAAA;IAAAL,CAAA,MAAAkB,EAAA;IAAAlB,CAAA,MAAAmB,EAAA;EAAA;IAAAD,EAAA,GAAAlB,CAAA;IAAAmB,EAAA,GAAAnB,CAAA;EAAA;EAfZN,KAAA,CAAA+B,SAAA,CAAgBP,EAehB,EAAGC,EAAS;EAEZ,IAAAG,GAAA;EAAyB,IAMrBjB,OAAA;IACF,MAAAqB,SAAA,GAAkBrB,OAAA,EAAAsB,QAAA,CAAkB,OAAO,MAAM;IACjDL,GAAA,CAAAA,CAAA,CAAMhB,aAAA,GAAgB,GAAGD,OAAA,GAAUqB,SAAA,GAAYE,kBAAA,CAAmBtB,aAAA,GAAgB,GAAGD,OAAA;EAArF;EAAA,IAAAwB,EAAA;EAAA,IAAA7B,CAAA,QAAAgB,UAAA,IAAAhB,CAAA,QAAAW,UAAA,IAAAX,CAAA,SAAAU,QAAA,IAAAV,CAAA,SAAAsB,GAAA;IAAA,IAAAQ,EAAA;IAAA,IAAA9B,CAAA,SAAAW,UAAA,IAAAX,CAAA,SAAAU,QAAA,IAAAV,CAAA,SAAAsB,GAAA;MAMGQ,EAAA,GAAAnB,UAAA,IAAcoB,IAAA,CAAC;QAAAC,GAAA,EAAStB,QAAA;QAAAY;MAAA,C;;;;;;;;IAF3BO,EAAA,GAAAI,KAAA,CAAC;MAAAhC,SAAA,EAAee,UAAA;MAAAkB,QAAA,GACbvB,UAAA,KAAAH,SAAe,IAAauB,IAAA,CAAAlC,aAAA;QAAAsC,MAAA,EAAsB;MAAA,C,GAClDL,E,EACAnB,UAAA,UAAe,IAASoB,IAAA,CAAAnC,IAAA,IAAC;IAAA,C;;;;;;;;;SAH5BiC,E;CAMJ;AAUA,OAAO,SAAAO,mBAAArC,KAAA;EAAA,MAAAC,CAAA,GAAAP,EAAA;EACL;IAAAuC,GAAA;IAAA/B,SAAA,EAAAC,EAAA;IAAAQ,QAAA;IAAAL,OAAA;IAAAC,aAAA;IAAAC;EAAA,IAAwER,KAAA;EAA3D,MAAAE,SAAA,GAAAC,EAAc,KAAAM,SAAA,GAAF,EAAE,GAAdN,EAAc;EAC3B,OAAAS,UAAA,EAAAC,aAAA,IAAoClB,KAAA,CAAAmB,QAAA,CAAAL,SAAe;EAEpB,MAAAJ,EAAA,MAAAT,SAAA,UAAsBY,IAAA,IAAQ,UAAU;EAAA,IAAAE,EAAA;EAAA,IAAAT,CAAA,QAAAC,SAAA,IAAAD,CAAA,QAAAI,EAAA;IAApDK,EAAA,IAAAd,SAAA,EAAYS,EAAwC,EAAEH,SAAA;IAAUD,CAAA,MAAAC,SAAA;IAAAD,CAAA,MAAAI,EAAA;IAAAJ,CAAA,MAAAS,EAAA;EAAA;IAAAA,EAAA,GAAAT,CAAA;EAAA;EAAnF,MAAAgB,UAAA,GAAmBP,EAAgE,CAAAQ,IAAA,CAAM;EAAA,IAAAH,EAAA;EAAA,IAAAC,EAAA;EAAA,IAAAf,CAAA,QAAAK,OAAA;IAEzES,EAAA,GAAAA,CAAA;MAAA,KACTT,OAAA;QACHO,aAAA,MAAc;QAAA;MAAA;MAGhBA,aAAA,CAAAJ,SAAc;MAEd,MAAAY,GAAA,OAAAC,KAAA;MACAD,GAAA,CAAAE,GAAA,GAAUjB,OAAA;MACVe,GAAA,CAAAG,MAAA;QACEX,aAAA,KAAc;MAAA;MAEhBQ,GAAA,CAAAI,OAAA;QACEZ,aAAA,MAAc;MAAA;IAAA;IAEfG,EAAA,IAACV,OAAA;IAAQL,CAAA,MAAAK,OAAA;IAAAL,CAAA,MAAAc,EAAA;IAAAd,CAAA,MAAAe,EAAA;EAAA;IAAAD,EAAA,GAAAd,CAAA;IAAAe,EAAA,GAAAf,CAAA;EAAA;EAfZN,KAAA,CAAA+B,SAAA,CAAgBX,EAehB,EAAGC,EAAS;EAEZ,IAAAO,GAAA,GAAkB;EAAA,IAMdjB,OAAA;IACF,MAAAqB,SAAA,GAAkBrB,OAAA,EAAAsB,QAAA,CAAkB,OAAO,MAAM;IACjDL,GAAA,CAAAA,CAAA,CAAMhB,aAAA,GAAgB,GAAGD,OAAA,GAAUqB,SAAA,GAAYE,kBAAA,CAAmBtB,aAAA,GAAgB,GAAGD,OAAA;EAArF;EAAA,IAAAa,EAAA;EAAA,IAAAlB,CAAA,QAAAgC,GAAA,IAAAhC,CAAA,QAAAgB,UAAA,IAAAhB,CAAA,QAAAW,UAAA,IAAAX,CAAA,QAAAU,QAAA,IAAAV,CAAA,SAAAsB,GAAA;IAAA,IAAAH,EAAA;IAAA,IAAAnB,CAAA,SAAAgC,GAAA,IAAAhC,CAAA,SAAAW,UAAA,IAAAX,CAAA,SAAAU,QAAA,IAAAV,CAAA,SAAAsB,GAAA;MAMGH,EAAA,GAAAR,UAAA,IAAcoB,IAAA,CAAC;QAAAC,GAAA,EAASA,GAAA,IAAOtB,QAAA;QAAAY;MAAA,C;;;;;;;;;IAFlCJ,EAAA,GAAAe,KAAA,CAAC;MAAAhC,SAAA,EAAee,UAAA;MAAAkB,QAAA,GACbvB,UAAA,KAAAH,SAAe,IAAauB,IAAA,CAAAlC,aAAA;QAAAsC,MAAA,EAAsB;MAAA,C,GAClDhB,E,EACAR,UAAA,UAAe,IAASoB,IAAA,CAAAnC,IAAA,IAAC;IAAA,C;;;;;;;;;;SAH5BsB,E","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["c","_c","React","baseClass","File","ShimmerEffect","Thumbnail","props","$","className","t0","doc","t1","fileSrc","imageCacheTag","size","undefined","filename","fileExists","setFileExists","useState","t2","t3","classNames","join","t4","t5","img","Image","src","onload","onerror","useEffect","queryChar","includes","encodeURIComponent","_jsxs","children","_jsx","height","alt","ThumbnailComponent"],"sources":["../../../src/elements/Thumbnail/index.tsx"],"sourcesContent":["'use client'\nimport React from 'react'\n\nimport './index.scss'\n\nconst baseClass = 'thumbnail'\n\nimport type { SanitizedCollectionConfig } from 'payload'\n\nimport { File } from '../../graphics/File/index.js'\nimport { ShimmerEffect } from '../ShimmerEffect/index.js'\n\nexport type ThumbnailProps = {\n className?: string\n collectionSlug?: string\n doc?: Record<string, unknown>\n fileSrc?: string\n imageCacheTag?: string\n size?: 'expand' | 'large' | 'medium' | 'small'\n uploadConfig?: SanitizedCollectionConfig['upload']\n}\n\nexport const Thumbnail: React.FC<ThumbnailProps> = (props) => {\n const { className = '', doc: { filename } = {}, fileSrc, imageCacheTag, size } = props\n const [fileExists, setFileExists] = React.useState(undefined)\n\n const classNames = [baseClass, `${baseClass}--size-${size || 'medium'}`, className].join(' ')\n\n React.useEffect(() => {\n if (!fileSrc) {\n setFileExists(false)\n return\n }\n setFileExists(undefined)\n\n const img = new Image()\n img.src = fileSrc\n img.onload = () => {\n setFileExists(true)\n }\n img.onerror = () => {\n setFileExists(false)\n }\n }, [fileSrc])\n\n let src: null | string = null\n\n /**\n * If an imageCacheTag is provided, append it to the fileSrc\n * Check if the fileSrc already has a query string, if it does, append the imageCacheTag with an ampersand\n */\n if (fileSrc) {\n const queryChar = fileSrc?.includes('?') ? '&' : '?'\n src = imageCacheTag ? `${fileSrc}${queryChar}${encodeURIComponent(imageCacheTag)}` : fileSrc\n }\n\n return (\n <div className={classNames}>\n {fileExists === undefined && <ShimmerEffect height=\"100%\" />}\n {fileExists && <img alt={filename as string} src={src} />}\n {fileExists === false && <File />}\n </div>\n )\n}\n\ntype ThumbnailComponentProps = {\n readonly alt?: string\n readonly className?: string\n readonly filename: string\n readonly fileSrc: string\n readonly imageCacheTag?: string\n readonly size?: 'expand' | 'large' | 'medium' | 'small'\n}\nexport function ThumbnailComponent(props: ThumbnailComponentProps) {\n const { alt, className = '', filename, fileSrc, imageCacheTag, size } = props\n const [fileExists, setFileExists] = React.useState(undefined)\n\n const classNames = [baseClass, `${baseClass}--size-${size || 'medium'}`, className].join(' ')\n\n React.useEffect(() => {\n if (!fileSrc) {\n setFileExists(false)\n return\n }\n setFileExists(undefined)\n\n const img = new Image()\n img.src = fileSrc\n img.onload = () => {\n setFileExists(true)\n }\n img.onerror = () => {\n setFileExists(false)\n }\n }, [fileSrc])\n\n let src: string = ''\n\n /**\n * If an imageCacheTag is provided, append it to the fileSrc\n * Check if the fileSrc already has a query string, if it does, append the imageCacheTag with an ampersand\n */\n if (fileSrc) {\n const queryChar = fileSrc?.includes('?') ? '&' : '?'\n src = imageCacheTag ? `${fileSrc}${queryChar}${encodeURIComponent(imageCacheTag)}` : fileSrc\n }\n\n return (\n <div className={classNames}>\n {fileExists === undefined && <ShimmerEffect height=\"100%\" />}\n {fileExists && <img alt={alt || filename} src={src} />}\n {fileExists === false && <File />}\n </div>\n )\n}\n"],"mappings":"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","ignoreList":[]}
@@ -9,7 +9,7 @@ import { formatDocTitle } from '../../utilities/formatDocTitle/index.js';
9
9
  import './index.scss';
10
10
  const baseClass = 'thumbnail-card';
11
11
  export const ThumbnailCard = props => {
12
- const $ = _c(15);
12
+ const $ = _c(13);
13
13
  const {
14
14
  alignLabel,
15
15
  className,
@@ -38,31 +38,18 @@ export const ThumbnailCard = props => {
38
38
  t2 = $[3];
39
39
  }
40
40
  const classes = t2.join(" ");
41
- let title = labelFromProps;
42
- if (!title) {
43
- const t3 = doc?.filename;
44
- let t4;
45
- if ($[4] !== collection || $[5] !== config.admin.dateFormat || $[6] !== doc || $[7] !== i18n || $[8] !== t3) {
46
- t4 = formatDocTitle({
41
+ let t3;
42
+ if ($[4] !== classes || $[5] !== collection || $[6] !== config || $[7] !== doc || $[8] !== i18n || $[9] !== labelFromProps || $[10] !== onClick || $[11] !== thumbnail) {
43
+ let title = labelFromProps;
44
+ if (!title) {
45
+ title = formatDocTitle({
47
46
  collectionConfig: collection,
48
47
  data: doc,
49
48
  dateFormat: config.admin.dateFormat,
50
- fallback: t3,
49
+ fallback: doc?.filename,
51
50
  i18n
52
51
  });
53
- $[4] = collection;
54
- $[5] = config.admin.dateFormat;
55
- $[6] = doc;
56
- $[7] = i18n;
57
- $[8] = t3;
58
- $[9] = t4;
59
- } else {
60
- t4 = $[9];
61
52
  }
62
- title = t4;
63
- }
64
- let t3;
65
- if ($[10] !== classes || $[11] !== onClick || $[12] !== thumbnail || $[13] !== title) {
66
53
  t3 = _jsxs("button", {
67
54
  className: classes,
68
55
  onClick,
@@ -76,13 +63,17 @@ export const ThumbnailCard = props => {
76
63
  children: title
77
64
  })]
78
65
  });
79
- $[10] = classes;
80
- $[11] = onClick;
81
- $[12] = thumbnail;
82
- $[13] = title;
83
- $[14] = t3;
66
+ $[4] = classes;
67
+ $[5] = collection;
68
+ $[6] = config;
69
+ $[7] = doc;
70
+ $[8] = i18n;
71
+ $[9] = labelFromProps;
72
+ $[10] = onClick;
73
+ $[11] = thumbnail;
74
+ $[12] = t3;
84
75
  } else {
85
- t3 = $[14];
76
+ t3 = $[12];
86
77
  }
87
78
  return t3;
88
79
  };
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["c","_c","React","useConfig","useTranslation","formatDocTitle","baseClass","ThumbnailCard","props","$","alignLabel","className","collection","doc","label","labelFromProps","onClick","thumbnail","config","i18n","t0","t1","t2","filter","Boolean","classes","join","title","t3","filename","t4","admin","dateFormat","collectionConfig","data","fallback","_jsxs","type","children","_jsx"],"sources":["../../../src/elements/ThumbnailCard/index.tsx"],"sourcesContent":["'use client'\nimport type { ClientCollectionConfig, TypeWithID } from 'payload'\n\nimport React from 'react'\n\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { formatDocTitle } from '../../utilities/formatDocTitle/index.js'\nimport './index.scss'\n\nexport type ThumbnailCardProps = {\n alignLabel?: 'center' | 'left'\n className?: string\n collection?: ClientCollectionConfig\n doc?: { filename?: string } & TypeWithID\n label?: string\n onClick?: () => void\n onKeyDown?: () => void\n thumbnail: React.ReactNode\n}\n\nconst baseClass = 'thumbnail-card'\n\nexport const ThumbnailCard: React.FC<ThumbnailCardProps> = (props) => {\n const {\n alignLabel,\n className,\n collection,\n doc,\n label: labelFromProps,\n onClick,\n thumbnail,\n } = props\n\n const { config } = useConfig()\n\n const { i18n } = useTranslation()\n\n const classes = [\n baseClass,\n className,\n typeof onClick === 'function' && `${baseClass}--has-on-click`,\n alignLabel && `${baseClass}--align-label-${alignLabel}`,\n ]\n .filter(Boolean)\n .join(' ')\n\n let title = labelFromProps\n\n if (!title) {\n title = formatDocTitle({\n collectionConfig: collection,\n data: doc,\n dateFormat: config.admin.dateFormat,\n fallback: doc?.filename,\n i18n,\n })\n }\n\n return (\n <button className={classes} onClick={onClick} title={title} type=\"button\">\n <div className={`${baseClass}__thumbnail`}>{thumbnail}</div>\n <div className={`${baseClass}__label`}>{title}</div>\n </button>\n )\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;;AAGA,OAAOC,KAAA,MAAW;AAElB,SAASC,SAAS,QAAQ;AAC1B,SAASC,cAAc,QAAQ;AAC/B,SAASC,cAAc,QAAQ;AAC/B,OAAO;AAaP,MAAMC,SAAA,GAAY;AAElB,OAAO,MAAMC,aAAA,GAA8CC,KAAA;EAAA,MAAAC,CAAA,GAAAR,EAAA;EACzD;IAAAS,UAAA;IAAAC,SAAA;IAAAC,UAAA;IAAAC,GAAA;IAAAC,KAAA,EAAAC,cAAA;IAAAC,OAAA;IAAAC;EAAA,IAQIT,KAAA;EAEJ;IAAAU;EAAA,IAAmBf,SAAA;EAEnB;IAAAgB;EAAA,IAAiBf,cAAA;EAKf,MAAAgB,EAAA,UAAOJ,OAAA,KAAY,cAAc,GAAAV,SAAA,gBAA4B;EAC7D,MAAAe,EAAA,GAAAX,UAAA,IAAc,GAAAJ,SAAA,iBAA6BI,UAAA,EAAY;EAAA,IAAAY,EAAA;EAAA,IAAAb,CAAA,QAAAE,SAAA,IAAAF,CAAA,QAAAW,EAAA,IAAAX,CAAA,QAAAY,EAAA;IAJzCC,EAAA,IAAAhB,SAAA,EAEdK,SAAA,EACAS,EAA6D,EAC7DC,EAAuD,EAAAE,MAAA,CAAAC,OAE/C;IAAAf,CAAA,MAAAE,SAAA;IAAAF,CAAA,MAAAW,EAAA;IAAAX,CAAA,MAAAY,EAAA;IAAAZ,CAAA,MAAAa,EAAA;EAAA;IAAAA,EAAA,GAAAb,CAAA;EAAA;EANV,MAAAgB,OAAA,GAAgBH,EAMN,CAAAI,IAAA,CACF;EAER,IAAAC,KAAA,GAAYZ,cAAA;EAAA,KAEPY,KAAA;IAKS,MAAAC,EAAA,GAAAf,GAAA,EAAAgB,QAAA;IAAK,IAAAC,EAAA;IAAA,IAAArB,CAAA,QAAAG,UAAA,IAAAH,CAAA,QAAAS,MAAA,CAAAa,KAAA,CAAAC,UAAA,IAAAvB,CAAA,QAAAI,GAAA,IAAAJ,CAAA,QAAAU,IAAA,IAAAV,CAAA,QAAAmB,EAAA;MAJTE,EAAA,GAAAzB,cAAA;QAAA4B,gBAAA,EACYrB,UAAA;QAAAsB,IAAA,EACZrB,GAAA;QAAAmB,UAAA,EACMd,MAAA,CAAAa,KAAA,CAAAC,UAAA;QAAAG,QAAA,EACFP,EAAK;QAAAT;MAAA,CAEjB;MAAAV,CAAA,MAAAG,UAAA;MAAAH,CAAA,MAAAS,MAAA,CAAAa,KAAA,CAAAC,UAAA;MAAAvB,CAAA,MAAAI,GAAA;MAAAJ,CAAA,MAAAU,IAAA;MAAAV,CAAA,MAAAmB,EAAA;MAAAnB,CAAA,MAAAqB,EAAA;IAAA;MAAAA,EAAA,GAAArB,CAAA;IAAA;IANAkB,KAAA,CAAAA,CAAA,CAAQA,EAMR;EANA;EAAA,IAAAC,EAAA;EAAA,IAAAnB,CAAA,SAAAgB,OAAA,IAAAhB,CAAA,SAAAO,OAAA,IAAAP,CAAA,SAAAQ,SAAA,IAAAR,CAAA,SAAAkB,KAAA;IAUAC,EAAA,GAAAQ,KAAA,CAAC;MAAAzB,SAAA,EAAkBc,OAAA;MAAAT,OAAA;MAAAW,KAAA;MAAAU,IAAA,EAA8C;MAAAC,QAAA,GAC/DC,IAAA,CAAC;QAAA5B,SAAA,EAAe,GAAAL,SAAA,aAAyB;QAAAgC,QAAA,EAAGrB;MAAA,C,GAC5CsB,IAAA,CAAC;QAAA5B,SAAA,EAAe,GAAAL,SAAA,SAAqB;QAAAgC,QAAA,EAAGX;MAAA,C;;;;;;;;;;SAF1CC,E;CAKJ","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["c","_c","React","useConfig","useTranslation","formatDocTitle","baseClass","ThumbnailCard","props","$","alignLabel","className","collection","doc","label","labelFromProps","onClick","thumbnail","config","i18n","t0","t1","t2","filter","Boolean","classes","join","t3","title","data","dateFormat","admin","fallback","filename","_jsxs","type","children","_jsx"],"sources":["../../../src/elements/ThumbnailCard/index.tsx"],"sourcesContent":["'use client'\nimport type { ClientCollectionConfig, TypeWithID } from 'payload'\n\nimport React from 'react'\n\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { formatDocTitle } from '../../utilities/formatDocTitle/index.js'\nimport './index.scss'\n\nexport type ThumbnailCardProps = {\n alignLabel?: 'center' | 'left'\n className?: string\n collection?: ClientCollectionConfig\n doc?: { filename?: string } & TypeWithID\n label?: string\n onClick?: () => void\n onKeyDown?: () => void\n thumbnail: React.ReactNode\n}\n\nconst baseClass = 'thumbnail-card'\n\nexport const ThumbnailCard: React.FC<ThumbnailCardProps> = (props) => {\n const {\n alignLabel,\n className,\n collection,\n doc,\n label: labelFromProps,\n onClick,\n thumbnail,\n } = props\n\n const { config } = useConfig()\n\n const { i18n } = useTranslation()\n\n const classes = [\n baseClass,\n className,\n typeof onClick === 'function' && `${baseClass}--has-on-click`,\n alignLabel && `${baseClass}--align-label-${alignLabel}`,\n ]\n .filter(Boolean)\n .join(' ')\n\n let title = labelFromProps\n\n if (!title) {\n title = formatDocTitle({\n collectionConfig: collection,\n data: doc,\n dateFormat: config.admin.dateFormat,\n fallback: doc?.filename,\n i18n,\n })\n }\n\n return (\n <button className={classes} onClick={onClick} title={title} type=\"button\">\n <div className={`${baseClass}__thumbnail`}>{thumbnail}</div>\n <div className={`${baseClass}__label`}>{title}</div>\n </button>\n )\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;;AAGA,OAAOC,KAAA,MAAW;AAElB,SAASC,SAAS,QAAQ;AAC1B,SAASC,cAAc,QAAQ;AAC/B,SAASC,cAAc,QAAQ;AAC/B,OAAO;AAaP,MAAMC,SAAA,GAAY;AAElB,OAAO,MAAMC,aAAA,GAA8CC,KAAA;EAAA,MAAAC,CAAA,GAAAR,EAAA;EACzD;IAAAS,UAAA;IAAAC,SAAA;IAAAC,UAAA;IAAAC,GAAA;IAAAC,KAAA,EAAAC,cAAA;IAAAC,OAAA;IAAAC;EAAA,IAQIT,KAAA;EAEJ;IAAAU;EAAA,IAAmBf,SAAA;EAEnB;IAAAgB;EAAA,IAAiBf,cAAA;EAKf,MAAAgB,EAAA,UAAOJ,OAAA,KAAY,cAAc,GAAAV,SAAA,gBAA4B;EAC7D,MAAAe,EAAA,GAAAX,UAAA,IAAc,GAAAJ,SAAA,iBAA6BI,UAAA,EAAY;EAAA,IAAAY,EAAA;EAAA,IAAAb,CAAA,QAAAE,SAAA,IAAAF,CAAA,QAAAW,EAAA,IAAAX,CAAA,QAAAY,EAAA;IAJzCC,EAAA,IAAAhB,SAAA,EAEdK,SAAA,EACAS,EAA6D,EAC7DC,EAAuD,EAAAE,MAAA,CAAAC,OAE/C;IAAAf,CAAA,MAAAE,SAAA;IAAAF,CAAA,MAAAW,EAAA;IAAAX,CAAA,MAAAY,EAAA;IAAAZ,CAAA,MAAAa,EAAA;EAAA;IAAAA,EAAA,GAAAb,CAAA;EAAA;EANV,MAAAgB,OAAA,GAAgBH,EAMN,CAAAI,IAAA,CACF;EAAA,IAAAC,EAAA;EAAA,IAAAlB,CAAA,QAAAgB,OAAA,IAAAhB,CAAA,QAAAG,UAAA,IAAAH,CAAA,QAAAS,MAAA,IAAAT,CAAA,QAAAI,GAAA,IAAAJ,CAAA,QAAAU,IAAA,IAAAV,CAAA,QAAAM,cAAA,IAAAN,CAAA,SAAAO,OAAA,IAAAP,CAAA,SAAAQ,SAAA;IAER,IAAAW,KAAA,GAAYb,cAAA;IAAA,KAEPa,KAAA;MACHA,KAAA,CAAAA,CAAA,CAAQA;QAAAA,iBAAA,CACYhB,UAAA;QAAAiB,IAAA,EACZhB,GAAA;QAAAiB,UAAA,EACMZ,MAAA,CAAAa,KAAA,CAAAD,UAAA;QAAAE,QAAA,EACFnB,GAAA,EAAAoB,QAAA;QAAAd;MAAA,CAEZ;IANA;IAUAQ,EAAA,GAAAO,KAAA,CAAC;MAAAvB,SAAA,EAAkBc,OAAA;MAAAT,OAAA;MAAAY,KAAA;MAAAO,IAAA,EAA8C;MAAAC,QAAA,GAC/DC,IAAA,CAAC;QAAA1B,SAAA,EAAe,GAAAL,SAAA,aAAyB;QAAA8B,QAAA,EAAGnB;MAAA,C,GAC5CoB,IAAA,CAAC;QAAA1B,SAAA,EAAe,GAAAL,SAAA,SAAqB;QAAA8B,QAAA,EAAGR;MAAA,C;;;;;;;;;;;;;;SAF1CD,E;CAKJ","ignoreList":[]}
@@ -1,147 +1,71 @@
1
1
  'use client';
2
2
 
3
- import { c as _c } from "react/compiler-runtime";
4
3
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
5
4
  import React, { useEffect } from 'react';
6
5
  import { useIntersect } from '../../hooks/useIntersect.js';
7
6
  import './index.scss';
8
7
  export const Tooltip = props => {
9
- const $ = _c(26);
10
8
  const {
11
- alignCaret: t0,
9
+ alignCaret = 'center',
12
10
  boundingRef,
13
11
  children,
14
12
  className,
15
- delay: t1,
13
+ delay = 350,
16
14
  position: positionFromProps,
17
- show: t2,
18
- staticPositioning: t3
15
+ show: showFromProps = true,
16
+ staticPositioning = false
19
17
  } = props;
20
- const alignCaret = t0 === undefined ? "center" : t0;
21
- const delay = t1 === undefined ? 350 : t1;
22
- const showFromProps = t2 === undefined ? true : t2;
23
- const staticPositioning = t3 === undefined ? false : t3;
24
18
  const [show, setShow] = React.useState(showFromProps);
25
- const [position, setPosition] = React.useState("top");
26
- const getTitleAttribute = _temp;
27
- const t4 = boundingRef?.current || null;
28
- let t5;
29
- if ($[0] !== t4) {
30
- t5 = {
31
- root: t4,
32
- rootMargin: "-145px 0px 0px 100px",
33
- threshold: 0
34
- };
35
- $[0] = t4;
36
- $[1] = t5;
37
- } else {
38
- t5 = $[1];
39
- }
40
- const [ref, intersectionEntry] = useIntersect(t5, staticPositioning);
41
- let t6;
42
- let t7;
43
- if ($[2] !== delay || $[3] !== showFromProps) {
44
- t6 = () => {
45
- let timerID;
46
- if (delay && showFromProps) {
47
- timerID = setTimeout(() => {
48
- setShow(showFromProps);
49
- }, delay);
50
- } else {
19
+ const [position, setPosition] = React.useState('top');
20
+ const getTitleAttribute = content => typeof content === 'string' ? content : '';
21
+ const [ref, intersectionEntry] = useIntersect({
22
+ root: boundingRef?.current || null,
23
+ rootMargin: '-145px 0px 0px 100px',
24
+ threshold: 0
25
+ }, staticPositioning);
26
+ useEffect(() => {
27
+ let timerID;
28
+ // do not use the delay on transition-out
29
+ if (delay && showFromProps) {
30
+ timerID = setTimeout(() => {
51
31
  setShow(showFromProps);
32
+ }, delay);
33
+ } else {
34
+ setShow(showFromProps);
35
+ }
36
+ return () => {
37
+ if (timerID) {
38
+ clearTimeout(timerID);
52
39
  }
53
- return () => {
54
- if (timerID) {
55
- clearTimeout(timerID);
56
- }
57
- };
58
- };
59
- t7 = [showFromProps, delay];
60
- $[2] = delay;
61
- $[3] = showFromProps;
62
- $[4] = t6;
63
- $[5] = t7;
64
- } else {
65
- t6 = $[4];
66
- t7 = $[5];
67
- }
68
- useEffect(t6, t7);
69
- let t8;
70
- if ($[6] !== intersectionEntry?.isIntersecting || $[7] !== staticPositioning) {
71
- t8 = () => {
72
- if (staticPositioning) {
73
- return;
74
- }
75
- setPosition(intersectionEntry?.isIntersecting ? "top" : "bottom");
76
40
  };
77
- $[6] = intersectionEntry?.isIntersecting;
78
- $[7] = staticPositioning;
79
- $[8] = t8;
80
- } else {
81
- t8 = $[8];
82
- }
83
- let t9;
84
- if ($[9] !== intersectionEntry || $[10] !== staticPositioning) {
85
- t9 = [intersectionEntry, staticPositioning];
86
- $[9] = intersectionEntry;
87
- $[10] = staticPositioning;
88
- $[11] = t9;
89
- } else {
90
- t9 = $[11];
91
- }
92
- useEffect(t8, t9);
93
- let t10;
94
- if ($[12] !== alignCaret || $[13] !== children || $[14] !== className || $[15] !== position || $[16] !== positionFromProps || $[17] !== ref || $[18] !== show || $[19] !== staticPositioning) {
95
- const t11 = show && "tooltip--show";
96
- const t12 = `tooltip--caret-${alignCaret}`;
97
- const t13 = `tooltip--position-${positionFromProps || position}`;
98
- let t14;
99
- if ($[21] !== className || $[22] !== t11 || $[23] !== t12 || $[24] !== t13) {
100
- t14 = ["tooltip", className, t11, t12, t13].filter(Boolean);
101
- $[21] = className;
102
- $[22] = t11;
103
- $[23] = t12;
104
- $[24] = t13;
105
- $[25] = t14;
106
- } else {
107
- t14 = $[25];
41
+ }, [showFromProps, delay]);
42
+ useEffect(() => {
43
+ if (staticPositioning) {
44
+ return;
108
45
  }
109
- t10 = _jsxs(React.Fragment, {
110
- children: [!staticPositioning && _jsx("aside", {
111
- "aria-hidden": "true",
112
- className: ["tooltip", className, `tooltip--caret-${alignCaret}`, "tooltip--position-top"].filter(Boolean).join(" "),
113
- ref,
114
- style: {
115
- opacity: "0"
116
- },
117
- children: _jsx("div", {
118
- className: "tooltip-content",
119
- children
120
- })
121
- }), _jsx("aside", {
122
- className: t14.join(" "),
123
- title: getTitleAttribute(children),
124
- children: _jsx("div", {
125
- className: "tooltip-content",
126
- children
127
- })
128
- })]
129
- });
130
- $[12] = alignCaret;
131
- $[13] = children;
132
- $[14] = className;
133
- $[15] = position;
134
- $[16] = positionFromProps;
135
- $[17] = ref;
136
- $[18] = show;
137
- $[19] = staticPositioning;
138
- $[20] = t10;
139
- } else {
140
- t10 = $[20];
141
- }
142
- return t10;
46
+ setPosition(intersectionEntry?.isIntersecting ? 'top' : 'bottom');
47
+ }, [intersectionEntry, staticPositioning]);
48
+ // The first aside is always on top. The purpose of that is that it can reliably be used for the interaction observer (as it's not moving around), to calculate the position of the actual tooltip.
49
+ return /*#__PURE__*/_jsxs(React.Fragment, {
50
+ children: [!staticPositioning && /*#__PURE__*/_jsx("aside", {
51
+ "aria-hidden": "true",
52
+ className: ['tooltip', className, `tooltip--caret-${alignCaret}`, 'tooltip--position-top'].filter(Boolean).join(' '),
53
+ ref: ref,
54
+ style: {
55
+ opacity: '0'
56
+ },
57
+ children: /*#__PURE__*/_jsx("div", {
58
+ className: "tooltip-content",
59
+ children: children
60
+ })
61
+ }), /*#__PURE__*/_jsx("aside", {
62
+ className: ['tooltip', className, show && 'tooltip--show', `tooltip--caret-${alignCaret}`, `tooltip--position-${positionFromProps || position}`].filter(Boolean).join(' '),
63
+ title: getTitleAttribute(children),
64
+ children: /*#__PURE__*/_jsx("div", {
65
+ className: "tooltip-content",
66
+ children: children
67
+ })
68
+ })]
69
+ });
143
70
  };
144
- function _temp(content) {
145
- return typeof content === "string" ? content : "";
146
- }
147
71
  //# sourceMappingURL=index.js.map