@payloadcms/ui 4.0.0-canary.1 → 4.0.0-canary.2

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 (213) hide show
  1. package/dist/css/radius.css +1 -3
  2. package/dist/css/theme.css +4 -0
  3. package/dist/css/utilities.css +5 -0
  4. package/dist/elements/APIKeyInput/index.css +92 -0
  5. package/dist/elements/APIKeyInput/index.d.ts +14 -0
  6. package/dist/elements/APIKeyInput/index.d.ts.map +1 -0
  7. package/dist/elements/APIKeyInput/index.js +86 -0
  8. package/dist/elements/APIKeyInput/index.js.map +1 -0
  9. package/dist/elements/BulkUpload/ActionsBar/index.css +10 -4
  10. package/dist/elements/BulkUpload/ActionsBar/index.d.ts.map +1 -1
  11. package/dist/elements/BulkUpload/ActionsBar/index.js +43 -40
  12. package/dist/elements/BulkUpload/ActionsBar/index.js.map +1 -1
  13. package/dist/elements/BulkUpload/AddFilesView/index.js +1 -1
  14. package/dist/elements/BulkUpload/AddFilesView/index.js.map +1 -1
  15. package/dist/elements/BulkUpload/AddingFilesView/index.css +25 -0
  16. package/dist/elements/BulkUpload/AddingFilesView/index.d.ts +1 -1
  17. package/dist/elements/BulkUpload/AddingFilesView/index.d.ts.map +1 -1
  18. package/dist/elements/BulkUpload/AddingFilesView/index.js +1 -1
  19. package/dist/elements/BulkUpload/AddingFilesView/index.js.map +1 -1
  20. package/dist/elements/BulkUpload/EditForm/index.css +9 -0
  21. package/dist/elements/BulkUpload/EditForm/index.d.ts +1 -1
  22. package/dist/elements/BulkUpload/EditForm/index.d.ts.map +1 -1
  23. package/dist/elements/BulkUpload/EditForm/index.js +1 -1
  24. package/dist/elements/BulkUpload/EditForm/index.js.map +1 -1
  25. package/dist/elements/BulkUpload/EditMany/DrawerContent.d.ts +1 -1
  26. package/dist/elements/BulkUpload/EditMany/DrawerContent.d.ts.map +1 -1
  27. package/dist/elements/BulkUpload/EditMany/DrawerContent.js +59 -55
  28. package/dist/elements/BulkUpload/EditMany/DrawerContent.js.map +1 -1
  29. package/dist/elements/BulkUpload/EditMany/index.css +71 -0
  30. package/dist/elements/BulkUpload/EditMany/index.d.ts +1 -1
  31. package/dist/elements/BulkUpload/EditMany/index.d.ts.map +1 -1
  32. package/dist/elements/BulkUpload/EditMany/index.js +1 -1
  33. package/dist/elements/BulkUpload/EditMany/index.js.map +1 -1
  34. package/dist/elements/BulkUpload/FileSidebar/index.css +54 -75
  35. package/dist/elements/BulkUpload/FileSidebar/index.d.ts.map +1 -1
  36. package/dist/elements/BulkUpload/FileSidebar/index.js +60 -50
  37. package/dist/elements/BulkUpload/FileSidebar/index.js.map +1 -1
  38. package/dist/elements/ColumnSelector/index.js +1 -1
  39. package/dist/elements/ColumnSelector/index.js.map +1 -1
  40. package/dist/elements/DocumentFields/index.css +1 -1
  41. package/dist/elements/Drawer/index.d.ts +25 -0
  42. package/dist/elements/Drawer/index.d.ts.map +1 -1
  43. package/dist/elements/Drawer/index.js +134 -62
  44. package/dist/elements/Drawer/index.js.map +1 -1
  45. package/dist/elements/FileDetails/DraggableFileDetails/index.css +32 -0
  46. package/dist/elements/FileDetails/DraggableFileDetails/index.d.ts +1 -1
  47. package/dist/elements/FileDetails/DraggableFileDetails/index.d.ts.map +1 -1
  48. package/dist/elements/FileDetails/DraggableFileDetails/index.js +19 -18
  49. package/dist/elements/FileDetails/DraggableFileDetails/index.js.map +1 -1
  50. package/dist/elements/Hierarchy/Field/SelectedHierarchies.css +36 -0
  51. package/dist/elements/Hierarchy/Field/SelectedHierarchies.d.ts +1 -1
  52. package/dist/elements/Hierarchy/Field/SelectedHierarchies.d.ts.map +1 -1
  53. package/dist/elements/Hierarchy/Field/SelectedHierarchies.js +1 -1
  54. package/dist/elements/Hierarchy/Field/SelectedHierarchies.js.map +1 -1
  55. package/dist/elements/Hierarchy/Field/index.client.d.ts +1 -1
  56. package/dist/elements/Hierarchy/Field/index.client.d.ts.map +1 -1
  57. package/dist/elements/Hierarchy/Field/index.client.js +5 -2
  58. package/dist/elements/Hierarchy/Field/index.client.js.map +1 -1
  59. package/dist/elements/Hierarchy/Field/index.css +37 -0
  60. package/dist/elements/Hierarchy/MoveMany/index.d.ts +0 -1
  61. package/dist/elements/Hierarchy/MoveMany/index.d.ts.map +1 -1
  62. package/dist/elements/Hierarchy/MoveMany/index.js +0 -1
  63. package/dist/elements/Hierarchy/MoveMany/index.js.map +1 -1
  64. package/dist/elements/Hierarchy/Tree/LoadMore/index.css +27 -0
  65. package/dist/elements/Hierarchy/Tree/LoadMore/index.d.ts +1 -1
  66. package/dist/elements/Hierarchy/Tree/LoadMore/index.d.ts.map +1 -1
  67. package/dist/elements/Hierarchy/Tree/LoadMore/index.js +1 -1
  68. package/dist/elements/Hierarchy/Tree/LoadMore/index.js.map +1 -1
  69. package/dist/elements/Hierarchy/Tree/TreeFocusContext.d.ts.map +1 -1
  70. package/dist/elements/Hierarchy/Tree/TreeFocusContext.js +36 -16
  71. package/dist/elements/Hierarchy/Tree/TreeFocusContext.js.map +1 -1
  72. package/dist/elements/Hierarchy/Tree/TreeNode/index.d.ts.map +1 -1
  73. package/dist/elements/Hierarchy/Tree/TreeNode/index.js +20 -15
  74. package/dist/elements/Hierarchy/Tree/TreeNode/index.js.map +1 -1
  75. package/dist/elements/LoadMoreRow/index.css +34 -0
  76. package/dist/elements/LoadMoreRow/index.d.ts +1 -1
  77. package/dist/elements/LoadMoreRow/index.d.ts.map +1 -1
  78. package/dist/elements/LoadMoreRow/index.js +4 -8
  79. package/dist/elements/LoadMoreRow/index.js.map +1 -1
  80. package/dist/elements/Popup/PopupGroupLabel/index.css +12 -0
  81. package/dist/elements/PublishButton/ScheduleDrawer/buildUpcomingScheduleWhere.d.ts +13 -0
  82. package/dist/elements/PublishButton/ScheduleDrawer/buildUpcomingScheduleWhere.d.ts.map +1 -0
  83. package/dist/elements/PublishButton/ScheduleDrawer/buildUpcomingScheduleWhere.js +41 -0
  84. package/dist/elements/PublishButton/ScheduleDrawer/buildUpcomingScheduleWhere.js.map +1 -0
  85. package/dist/elements/PublishButton/ScheduleDrawer/index.d.ts +1 -0
  86. package/dist/elements/PublishButton/ScheduleDrawer/index.d.ts.map +1 -1
  87. package/dist/elements/PublishButton/ScheduleDrawer/index.js +9 -31
  88. package/dist/elements/PublishButton/ScheduleDrawer/index.js.map +1 -1
  89. package/dist/elements/PublishButton/index.d.ts.map +1 -1
  90. package/dist/elements/PublishButton/index.js +4 -5
  91. package/dist/elements/PublishButton/index.js.map +1 -1
  92. package/dist/elements/ReactSelect/MultiValue/index.css +1 -1
  93. package/dist/elements/ReactSelect/index.d.ts.map +1 -1
  94. package/dist/elements/ReactSelect/index.js +12 -4
  95. package/dist/elements/ReactSelect/index.js.map +1 -1
  96. package/dist/elements/SchedulePublishButton/index.d.ts.map +1 -1
  97. package/dist/elements/SchedulePublishButton/index.js +6 -1
  98. package/dist/elements/SchedulePublishButton/index.js.map +1 -1
  99. package/dist/elements/SelectMany/index.js +1 -1
  100. package/dist/elements/SelectMany/index.js.map +1 -1
  101. package/dist/elements/Table/index.css +7 -5
  102. package/dist/elements/Tabs/index.css +100 -0
  103. package/dist/elements/Tabs/index.d.ts +32 -0
  104. package/dist/elements/Tabs/index.d.ts.map +1 -0
  105. package/dist/elements/Tabs/index.js +62 -0
  106. package/dist/elements/Tabs/index.js.map +1 -0
  107. package/dist/elements/TimezonePicker/index.css +0 -15
  108. package/dist/elements/UnpublishButton/index.d.ts.map +1 -1
  109. package/dist/elements/UnpublishButton/index.js +5 -13
  110. package/dist/elements/UnpublishButton/index.js.map +1 -1
  111. package/dist/exports/client/index.d.ts +6 -0
  112. package/dist/exports/client/index.d.ts.map +1 -1
  113. package/dist/exports/client/index.js +14 -14
  114. package/dist/exports/client/index.js.map +4 -4
  115. package/dist/fields/Tabs/Tab/index.d.ts +0 -1
  116. package/dist/fields/Tabs/Tab/index.d.ts.map +1 -1
  117. package/dist/fields/Tabs/Tab/index.js +12 -23
  118. package/dist/fields/Tabs/Tab/index.js.map +1 -1
  119. package/dist/fields/Tabs/index.d.ts.map +1 -1
  120. package/dist/fields/Tabs/index.js +37 -37
  121. package/dist/fields/Tabs/index.js.map +1 -1
  122. package/dist/fields/Upload/HasMany/index.css +4 -0
  123. package/dist/forms/RenderFields/RenderField.d.ts +1 -1
  124. package/dist/icons/Gear/index.d.ts.map +1 -1
  125. package/dist/icons/Gear/index.js +8 -1
  126. package/dist/icons/Gear/index.js.map +1 -1
  127. package/dist/icons/{Write → Key}/index.css +1 -1
  128. package/dist/icons/Key/index.d.ts +7 -0
  129. package/dist/icons/Key/index.d.ts.map +1 -0
  130. package/dist/icons/Key/index.js +24 -0
  131. package/dist/icons/Key/index.js.map +1 -0
  132. package/dist/icons/Schedule/index.d.ts.map +1 -1
  133. package/dist/icons/Schedule/index.js +38 -39
  134. package/dist/icons/Schedule/index.js.map +1 -1
  135. package/dist/icons/WarningTriangle/index.css +5 -0
  136. package/dist/icons/WarningTriangle/index.d.ts +6 -0
  137. package/dist/icons/WarningTriangle/index.d.ts.map +1 -0
  138. package/dist/icons/WarningTriangle/index.js +21 -0
  139. package/dist/icons/WarningTriangle/index.js.map +1 -0
  140. package/dist/icons/Write/index.d.ts +0 -1
  141. package/dist/icons/Write/index.d.ts.map +1 -1
  142. package/dist/icons/Write/index.js +1 -2
  143. package/dist/icons/Write/index.js.map +1 -1
  144. package/dist/providers/DocumentInfo/index.d.ts.map +1 -1
  145. package/dist/providers/DocumentInfo/index.js +4 -0
  146. package/dist/providers/DocumentInfo/index.js.map +1 -1
  147. package/dist/providers/DocumentInfo/types.d.ts +4 -0
  148. package/dist/providers/DocumentInfo/types.d.ts.map +1 -1
  149. package/dist/providers/DocumentInfo/types.js.map +1 -1
  150. package/dist/providers/Root/index.d.ts.map +1 -1
  151. package/dist/providers/Root/index.js +27 -24
  152. package/dist/providers/Root/index.js.map +1 -1
  153. package/dist/providers/TableColumns/RenderDefaultCell/index.css +1 -0
  154. package/dist/styles.css +1 -1
  155. package/dist/utilities/getHasScheduledPublish.d.ts +12 -0
  156. package/dist/utilities/getHasScheduledPublish.d.ts.map +1 -0
  157. package/dist/utilities/getHasScheduledPublish.js +38 -0
  158. package/dist/utilities/getHasScheduledPublish.js.map +1 -0
  159. package/dist/utilities/getVersions.d.ts.map +1 -1
  160. package/dist/utilities/getVersions.js +1 -21
  161. package/dist/utilities/getVersions.js.map +1 -1
  162. package/dist/views/Document/index.d.ts.map +1 -1
  163. package/dist/views/Document/index.js +10 -1
  164. package/dist/views/Document/index.js.map +1 -1
  165. package/dist/views/Edit/Auth/APIKey.d.ts.map +1 -1
  166. package/dist/views/Edit/Auth/APIKey.js +10 -32
  167. package/dist/views/Edit/Auth/APIKey.js.map +1 -1
  168. package/dist/views/Edit/Auth/index.css +0 -67
  169. package/dist/views/List/handleGroupBy.d.ts.map +1 -1
  170. package/dist/views/List/handleGroupBy.js +9 -0
  171. package/dist/views/List/handleGroupBy.js.map +1 -1
  172. package/dist/views/List/index.client.d.ts.map +1 -1
  173. package/dist/views/List/index.client.js +3 -2
  174. package/dist/views/List/index.client.js.map +1 -1
  175. package/dist/views/List/index.css +1 -1
  176. package/dist/views/List/index.d.ts.map +1 -1
  177. package/dist/views/List/index.js +2 -1
  178. package/dist/views/List/index.js.map +1 -1
  179. package/dist/views/List/renderListViewSlots.d.ts.map +1 -1
  180. package/dist/views/List/renderListViewSlots.js +8 -0
  181. package/dist/views/List/renderListViewSlots.js.map +1 -1
  182. package/dist/views/Version/SelectComparison/VersionDrawer/index.css +5 -0
  183. package/dist/views/Version/SelectComparison/VersionDrawer/index.d.ts +1 -1
  184. package/dist/views/Version/SelectComparison/VersionDrawer/index.d.ts.map +1 -1
  185. package/dist/views/Version/SelectComparison/VersionDrawer/index.js +1 -2
  186. package/dist/views/Version/SelectComparison/VersionDrawer/index.js.map +1 -1
  187. package/dist/views/Version/SelectComparison/index.css +5 -0
  188. package/dist/views/Version/SelectComparison/index.d.ts +1 -1
  189. package/dist/views/Version/SelectComparison/index.d.ts.map +1 -1
  190. package/dist/views/Version/SelectComparison/index.js +1 -1
  191. package/dist/views/Version/SelectComparison/index.js.map +1 -1
  192. package/dist/views/Versions/index.css +2 -2
  193. package/dist/views/Versions/index.d.ts +1 -1
  194. package/dist/views/Versions/index.d.ts.map +1 -1
  195. package/dist/views/Versions/index.js +3 -26
  196. package/dist/views/Versions/index.js.map +1 -1
  197. package/package.json +5 -5
  198. package/dist/elements/BulkUpload/AddingFilesView/index.scss +0 -25
  199. package/dist/elements/BulkUpload/EditForm/index.scss +0 -11
  200. package/dist/elements/BulkUpload/EditMany/index.scss +0 -171
  201. package/dist/elements/FileDetails/DraggableFileDetails/index.scss +0 -35
  202. package/dist/elements/Hierarchy/Field/SelectedHierarchies.scss +0 -78
  203. package/dist/elements/Hierarchy/Field/index.scss +0 -41
  204. package/dist/elements/Hierarchy/MoveMany/index.scss +0 -7
  205. package/dist/elements/Hierarchy/Tree/LoadMore/index.scss +0 -26
  206. package/dist/elements/Hierarchy/Tree/TreeConnector.d.ts +0 -7
  207. package/dist/elements/Hierarchy/Tree/TreeConnector.d.ts.map +0 -1
  208. package/dist/elements/Hierarchy/Tree/TreeConnector.js +0 -23
  209. package/dist/elements/Hierarchy/Tree/TreeConnector.js.map +0 -1
  210. package/dist/elements/LoadMoreRow/index.scss +0 -45
  211. package/dist/fields/Tabs/Tab/index.css +0 -82
  212. package/dist/views/Version/SelectComparison/VersionDrawer/index.scss +0 -18
  213. package/dist/views/Version/SelectComparison/index.scss +0 -9
@@ -159,14 +159,13 @@ export function PublishButton({
159
159
  setHasPublishedDoc(true);
160
160
  }
161
161
  }, [localeCode, localizeStatusEnabled, api, collectionSlug, globalSlug, id, setHasPublishedDoc, submit, setUnpublishedVersionCount, uploadStatus, setMostRecentVersionIsAutosaved]);
162
- const publishSpecificLocale = useCallback(async locale => {
162
+ const publishLocale = useCallback(async locale => {
163
163
  if (uploadStatus === 'uploading') {
164
164
  return;
165
165
  }
166
166
  const params_1 = qs.stringify({
167
167
  depth: 0,
168
- locale,
169
- publishSpecificLocale: locale
168
+ locale
170
169
  }, {
171
170
  addQueryPrefix: true
172
171
  });
@@ -198,7 +197,7 @@ export function PublishButton({
198
197
  children: /*#__PURE__*/_jsx(FormSubmit, {
199
198
  buttonId: "action-save",
200
199
  disabled: !canPublish,
201
- onClick: isDefaultPublishAll ? publish : () => publishSpecificLocale(activeLocale.code),
200
+ onClick: isDefaultPublishAll ? publish : () => publishLocale(activeLocale.code),
202
201
  size: "medium",
203
202
  SubMenuPopupContent: isSpecificLocalePublishEnabled ? ({
204
203
  close
@@ -207,7 +206,7 @@ export function PublishButton({
207
206
  children: isSpecificLocalePublishEnabled && /*#__PURE__*/_jsx(PopupList.ButtonGroup, {
208
207
  children: /*#__PURE__*/_jsx(PopupList.Button, {
209
208
  id: "publish-locale",
210
- onClick: isDefaultPublishAll ? () => publishSpecificLocale(activeLocale.code) : publish,
209
+ onClick: isDefaultPublishAll ? () => publishLocale(activeLocale.code) : publish,
211
210
  children: isDefaultPublishAll ? t('version:publishIn', {
212
211
  locale: activeLocaleLabel
213
212
  }) : t('version:publishAllLocales')
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["getTranslation","formatAdminURL","hasAutosaveEnabled","hasLocalizeStatusEnabled","qs","React","useCallback","useEffect","useState","useForm","useFormModified","FormSubmit","useHotkey","useConfig","useDocumentInfo","useEditDepth","useLocale","useOperation","useTranslation","traverseForLocalizedFields","PopupList","PublishButton","label","labelProp","id","collectionSlug","globalSlug","hasPublishedDoc","hasPublishPermission","setHasPublishedDoc","setMostRecentVersionIsAutosaved","setUnpublishedVersionCount","unpublishedVersionCount","uploadStatus","config","getEntityConfig","submit","modified","editDepth","code","localeCode","localization","routes","api","i18n","t","shortLabel","entityConfig","useMemo","hasNewerVersions","canPublish","hasLocalizedFields","setHasLocalizedFields","hasLocalizedField","fields","isSpecificLocalePublishEnabled","operation","disabled","hasAutosave","saveDraft","params","stringify","depth","draft","locale","addQueryPrefix","action","method","apiRoute","path","overrides","_status","skipValidation","cmdCtrlKey","keyCodes","e","preventDefault","stopPropagation","localizeStatusEnabled","publish","publishAllLocales","result","publishSpecificLocale","pathSegment","isDefaultPublishAll","defaultLocalePublishOption","activeLocale","locales","find","activeLocaleLabel","_jsx","Fragment","buttonId","onClick","size","SubMenuPopupContent","close","ButtonGroup","Button","undefined","type","_jsxs","className"],"sources":["../../../src/elements/PublishButton/index.tsx"],"sourcesContent":["'use client'\n\nimport type { PublishButtonClientProps } from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport { formatAdminURL, hasAutosaveEnabled, hasLocalizeStatusEnabled } from 'payload/shared'\nimport * as qs from 'qs-esm'\nimport React, { useCallback, useEffect, useState } from 'react'\n\nimport { useForm, useFormModified } from '../../forms/Form/context.js'\nimport { FormSubmit } from '../../forms/Submit/index.js'\nimport { useHotkey } from '../../hooks/useHotkey.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useDocumentInfo } from '../../providers/DocumentInfo/index.js'\nimport { useEditDepth } from '../../providers/EditDepth/index.js'\nimport { useLocale } from '../../providers/Locale/index.js'\nimport { useOperation } from '../../providers/Operation/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { traverseForLocalizedFields } from '../../utilities/traverseForLocalizedFields.js'\nimport { PopupList } from '../Popup/index.js'\nimport './index.css'\n\nexport function PublishButton({\n label: labelProp,\n}: { label?: string } & PublishButtonClientProps = {}) {\n const {\n id,\n collectionSlug,\n globalSlug,\n hasPublishedDoc,\n hasPublishPermission,\n setHasPublishedDoc,\n setMostRecentVersionIsAutosaved,\n setUnpublishedVersionCount,\n unpublishedVersionCount,\n uploadStatus,\n } = useDocumentInfo()\n\n const { config, getEntityConfig } = useConfig()\n const { submit } = useForm()\n const modified = useFormModified()\n const editDepth = useEditDepth()\n const { code: localeCode } = useLocale()\n const {\n localization,\n routes: { api },\n } = config\n\n const { i18n, t } = useTranslation()\n const label = labelProp || t('version:publishChanges')\n const shortLabel = labelProp || t('version:publish')\n\n const entityConfig = React.useMemo(() => {\n if (collectionSlug) {\n return getEntityConfig({ collectionSlug })\n }\n\n if (globalSlug) {\n return getEntityConfig({ globalSlug })\n }\n }, [collectionSlug, globalSlug, getEntityConfig])\n\n const hasNewerVersions = unpublishedVersionCount > 0\n\n const canPublish =\n hasPublishPermission &&\n (modified || hasNewerVersions || !hasPublishedDoc) &&\n uploadStatus !== 'uploading'\n\n const [hasLocalizedFields, setHasLocalizedFields] = useState(false)\n\n useEffect(() => {\n const hasLocalizedField = traverseForLocalizedFields(entityConfig?.fields)\n setHasLocalizedFields(hasLocalizedField)\n }, [entityConfig?.fields])\n\n const isSpecificLocalePublishEnabled = localization && hasLocalizedFields && hasPublishPermission\n\n const operation = useOperation()\n\n const disabled = operation === 'update' && !modified\n\n // If autosave is enabled the modified will always be true so only conditionally check on modified state\n const hasAutosave = hasAutosaveEnabled(entityConfig)\n\n const saveDraft = useCallback(async () => {\n if (disabled) {\n return\n }\n\n const params = qs.stringify(\n {\n depth: 0,\n draft: true,\n 'fallback-locale': 'null',\n locale: localeCode,\n },\n { addQueryPrefix: true },\n )\n\n let action\n let method = 'POST'\n\n if (collectionSlug) {\n action = formatAdminURL({\n apiRoute: api,\n path: `/${collectionSlug}${id ? `/${id}` : ''}${params}`,\n })\n if (id) {\n method = 'PATCH'\n }\n }\n\n if (globalSlug) {\n action = formatAdminURL({\n apiRoute: api,\n path: `/globals/${globalSlug}${params}`,\n })\n }\n\n await submit({\n action,\n method,\n overrides: {\n _status: 'draft',\n },\n skipValidation: true,\n })\n }, [disabled, localeCode, collectionSlug, globalSlug, submit, api, id])\n\n useHotkey({ cmdCtrlKey: true, editDepth, keyCodes: ['s'] }, (e) => {\n e.preventDefault()\n e.stopPropagation()\n\n if (saveDraft && hasAutosave) {\n void saveDraft()\n }\n })\n\n const localizeStatusEnabled = hasLocalizeStatusEnabled(entityConfig)\n\n const publish = useCallback(async () => {\n if (uploadStatus === 'uploading') {\n return\n }\n\n const params = qs.stringify(\n {\n depth: 0,\n locale: localeCode,\n ...(localizeStatusEnabled && { publishAllLocales: true }),\n },\n { addQueryPrefix: true },\n )\n\n const action = formatAdminURL({\n apiRoute: api,\n path: `${\n globalSlug ? `/globals/${globalSlug}` : `/${collectionSlug}${id ? `/${id}` : ''}`\n }${params}` as `/${string}`,\n })\n\n const result = await submit({\n action,\n overrides: {\n _status: 'published',\n },\n })\n\n if (result) {\n setUnpublishedVersionCount(0)\n setMostRecentVersionIsAutosaved(false)\n setHasPublishedDoc(true)\n }\n }, [\n localeCode,\n localizeStatusEnabled,\n api,\n collectionSlug,\n globalSlug,\n id,\n setHasPublishedDoc,\n submit,\n setUnpublishedVersionCount,\n uploadStatus,\n setMostRecentVersionIsAutosaved,\n ])\n\n const publishSpecificLocale = useCallback(\n async (locale) => {\n if (uploadStatus === 'uploading') {\n return\n }\n\n const params = qs.stringify(\n {\n depth: 0,\n locale,\n publishSpecificLocale: locale,\n },\n { addQueryPrefix: true },\n )\n\n const pathSegment = globalSlug\n ? `/globals/${globalSlug}`\n : `/${collectionSlug}${id ? `/${id}` : ''}`\n const action = formatAdminURL({\n apiRoute: api,\n path: `${pathSegment}${params}` as `/${string}`,\n })\n\n const result = await submit({\n action,\n overrides: {\n _status: 'published',\n },\n })\n\n if (result) {\n setUnpublishedVersionCount(0)\n setMostRecentVersionIsAutosaved(false)\n setHasPublishedDoc(true)\n }\n },\n [\n api,\n collectionSlug,\n globalSlug,\n id,\n setHasPublishedDoc,\n setMostRecentVersionIsAutosaved,\n setUnpublishedVersionCount,\n submit,\n uploadStatus,\n ],\n )\n\n // Publish to all locales unless there are localized fields AND defaultLocalePublishOption is 'active'\n const isDefaultPublishAll =\n !isSpecificLocalePublishEnabled ||\n (localization && localization?.defaultLocalePublishOption !== 'active')\n\n const activeLocale =\n localization &&\n localization?.locales.find((locale) =>\n typeof locale === 'string' ? locale === localeCode : locale.code === localeCode,\n )\n\n const activeLocaleLabel = activeLocale && getTranslation(activeLocale.label, i18n)\n\n if (!hasPublishPermission) {\n return null\n }\n\n return (\n <React.Fragment>\n <FormSubmit\n buttonId=\"action-save\"\n disabled={!canPublish}\n onClick={isDefaultPublishAll ? publish : () => publishSpecificLocale(activeLocale.code)}\n size=\"medium\"\n SubMenuPopupContent={\n isSpecificLocalePublishEnabled\n ? ({ close }) => {\n return (\n <React.Fragment>\n {isSpecificLocalePublishEnabled && (\n <PopupList.ButtonGroup>\n <PopupList.Button\n id=\"publish-locale\"\n onClick={\n isDefaultPublishAll\n ? () => publishSpecificLocale(activeLocale.code)\n : publish\n }\n >\n {isDefaultPublishAll\n ? t('version:publishIn', { locale: activeLocaleLabel })\n : t('version:publishAllLocales')}\n </PopupList.Button>\n </PopupList.ButtonGroup>\n )}\n </React.Fragment>\n )\n }\n : undefined\n }\n type=\"button\"\n >\n {!isDefaultPublishAll ? (\n t('version:publishIn', { locale: activeLocaleLabel })\n ) : (\n <React.Fragment>\n <span className=\"publish-button__label--full\">{label}</span>\n <span className=\"publish-button__label--short\">{shortLabel}</span>\n </React.Fragment>\n )}\n </FormSubmit>\n </React.Fragment>\n )\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["getTranslation","formatAdminURL","hasAutosaveEnabled","hasLocalizeStatusEnabled","qs","React","useCallback","useEffect","useState","useForm","useFormModified","FormSubmit","useHotkey","useConfig","useDocumentInfo","useEditDepth","useLocale","useOperation","useTranslation","traverseForLocalizedFields","PopupList","PublishButton","label","labelProp","id","collectionSlug","globalSlug","hasPublishedDoc","hasPublishPermission","setHasPublishedDoc","setMostRecentVersionIsAutosaved","setUnpublishedVersionCount","unpublishedVersionCount","uploadStatus","config","getEntityConfig","submit","modified","editDepth","code","localeCode","localization","routes","api","i18n","t","shortLabel","entityConfig","useMemo","hasNewerVersions","canPublish","hasLocalizedFields","setHasLocalizedFields","hasLocalizedField","fields","isSpecificLocalePublishEnabled","operation","disabled","hasAutosave","saveDraft","params","stringify","depth","draft","locale","addQueryPrefix","action","method","apiRoute","path","overrides","_status","skipValidation","cmdCtrlKey","keyCodes","e","preventDefault","stopPropagation","localizeStatusEnabled","publish","publishAllLocales","result","publishLocale","pathSegment","isDefaultPublishAll","defaultLocalePublishOption","activeLocale","locales","find","activeLocaleLabel","_jsx","Fragment","buttonId","onClick","size","SubMenuPopupContent","close","ButtonGroup","Button","undefined","type","_jsxs","className"],"sources":["../../../src/elements/PublishButton/index.tsx"],"sourcesContent":["'use client'\n\nimport type { PublishButtonClientProps } from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport { formatAdminURL, hasAutosaveEnabled, hasLocalizeStatusEnabled } from 'payload/shared'\nimport * as qs from 'qs-esm'\nimport React, { useCallback, useEffect, useState } from 'react'\n\nimport { useForm, useFormModified } from '../../forms/Form/context.js'\nimport { FormSubmit } from '../../forms/Submit/index.js'\nimport { useHotkey } from '../../hooks/useHotkey.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useDocumentInfo } from '../../providers/DocumentInfo/index.js'\nimport { useEditDepth } from '../../providers/EditDepth/index.js'\nimport { useLocale } from '../../providers/Locale/index.js'\nimport { useOperation } from '../../providers/Operation/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { traverseForLocalizedFields } from '../../utilities/traverseForLocalizedFields.js'\nimport { PopupList } from '../Popup/index.js'\nimport './index.css'\n\nexport function PublishButton({\n label: labelProp,\n}: { label?: string } & PublishButtonClientProps = {}) {\n const {\n id,\n collectionSlug,\n globalSlug,\n hasPublishedDoc,\n hasPublishPermission,\n setHasPublishedDoc,\n setMostRecentVersionIsAutosaved,\n setUnpublishedVersionCount,\n unpublishedVersionCount,\n uploadStatus,\n } = useDocumentInfo()\n\n const { config, getEntityConfig } = useConfig()\n const { submit } = useForm()\n const modified = useFormModified()\n const editDepth = useEditDepth()\n const { code: localeCode } = useLocale()\n const {\n localization,\n routes: { api },\n } = config\n\n const { i18n, t } = useTranslation()\n const label = labelProp || t('version:publishChanges')\n const shortLabel = labelProp || t('version:publish')\n\n const entityConfig = React.useMemo(() => {\n if (collectionSlug) {\n return getEntityConfig({ collectionSlug })\n }\n\n if (globalSlug) {\n return getEntityConfig({ globalSlug })\n }\n }, [collectionSlug, globalSlug, getEntityConfig])\n\n const hasNewerVersions = unpublishedVersionCount > 0\n\n const canPublish =\n hasPublishPermission &&\n (modified || hasNewerVersions || !hasPublishedDoc) &&\n uploadStatus !== 'uploading'\n\n const [hasLocalizedFields, setHasLocalizedFields] = useState(false)\n\n useEffect(() => {\n const hasLocalizedField = traverseForLocalizedFields(entityConfig?.fields)\n setHasLocalizedFields(hasLocalizedField)\n }, [entityConfig?.fields])\n\n const isSpecificLocalePublishEnabled = localization && hasLocalizedFields && hasPublishPermission\n\n const operation = useOperation()\n\n const disabled = operation === 'update' && !modified\n\n // If autosave is enabled the modified will always be true so only conditionally check on modified state\n const hasAutosave = hasAutosaveEnabled(entityConfig)\n\n const saveDraft = useCallback(async () => {\n if (disabled) {\n return\n }\n\n const params = qs.stringify(\n {\n depth: 0,\n draft: true,\n 'fallback-locale': 'null',\n locale: localeCode,\n },\n { addQueryPrefix: true },\n )\n\n let action\n let method = 'POST'\n\n if (collectionSlug) {\n action = formatAdminURL({\n apiRoute: api,\n path: `/${collectionSlug}${id ? `/${id}` : ''}${params}`,\n })\n if (id) {\n method = 'PATCH'\n }\n }\n\n if (globalSlug) {\n action = formatAdminURL({\n apiRoute: api,\n path: `/globals/${globalSlug}${params}`,\n })\n }\n\n await submit({\n action,\n method,\n overrides: {\n _status: 'draft',\n },\n skipValidation: true,\n })\n }, [disabled, localeCode, collectionSlug, globalSlug, submit, api, id])\n\n useHotkey({ cmdCtrlKey: true, editDepth, keyCodes: ['s'] }, (e) => {\n e.preventDefault()\n e.stopPropagation()\n\n if (saveDraft && hasAutosave) {\n void saveDraft()\n }\n })\n\n const localizeStatusEnabled = hasLocalizeStatusEnabled(entityConfig)\n\n const publish = useCallback(async () => {\n if (uploadStatus === 'uploading') {\n return\n }\n\n const params = qs.stringify(\n {\n depth: 0,\n locale: localeCode,\n ...(localizeStatusEnabled && { publishAllLocales: true }),\n },\n { addQueryPrefix: true },\n )\n\n const action = formatAdminURL({\n apiRoute: api,\n path: `${\n globalSlug ? `/globals/${globalSlug}` : `/${collectionSlug}${id ? `/${id}` : ''}`\n }${params}` as `/${string}`,\n })\n\n const result = await submit({\n action,\n overrides: {\n _status: 'published',\n },\n })\n\n if (result) {\n setUnpublishedVersionCount(0)\n setMostRecentVersionIsAutosaved(false)\n setHasPublishedDoc(true)\n }\n }, [\n localeCode,\n localizeStatusEnabled,\n api,\n collectionSlug,\n globalSlug,\n id,\n setHasPublishedDoc,\n submit,\n setUnpublishedVersionCount,\n uploadStatus,\n setMostRecentVersionIsAutosaved,\n ])\n\n const publishLocale = useCallback(\n async (locale) => {\n if (uploadStatus === 'uploading') {\n return\n }\n\n const params = qs.stringify(\n {\n depth: 0,\n locale,\n },\n { addQueryPrefix: true },\n )\n\n const pathSegment = globalSlug\n ? `/globals/${globalSlug}`\n : `/${collectionSlug}${id ? `/${id}` : ''}`\n const action = formatAdminURL({\n apiRoute: api,\n path: `${pathSegment}${params}` as `/${string}`,\n })\n\n const result = await submit({\n action,\n overrides: {\n _status: 'published',\n },\n })\n\n if (result) {\n setUnpublishedVersionCount(0)\n setMostRecentVersionIsAutosaved(false)\n setHasPublishedDoc(true)\n }\n },\n [\n api,\n collectionSlug,\n globalSlug,\n id,\n setHasPublishedDoc,\n setMostRecentVersionIsAutosaved,\n setUnpublishedVersionCount,\n submit,\n uploadStatus,\n ],\n )\n\n // Publish to all locales unless there are localized fields AND defaultLocalePublishOption is 'active'\n const isDefaultPublishAll =\n !isSpecificLocalePublishEnabled ||\n (localization && localization?.defaultLocalePublishOption !== 'active')\n\n const activeLocale =\n localization &&\n localization?.locales.find((locale) =>\n typeof locale === 'string' ? locale === localeCode : locale.code === localeCode,\n )\n\n const activeLocaleLabel = activeLocale && getTranslation(activeLocale.label, i18n)\n\n if (!hasPublishPermission) {\n return null\n }\n\n return (\n <React.Fragment>\n <FormSubmit\n buttonId=\"action-save\"\n disabled={!canPublish}\n onClick={isDefaultPublishAll ? publish : () => publishLocale(activeLocale.code)}\n size=\"medium\"\n SubMenuPopupContent={\n isSpecificLocalePublishEnabled\n ? ({ close }) => {\n return (\n <React.Fragment>\n {isSpecificLocalePublishEnabled && (\n <PopupList.ButtonGroup>\n <PopupList.Button\n id=\"publish-locale\"\n onClick={\n isDefaultPublishAll ? () => publishLocale(activeLocale.code) : publish\n }\n >\n {isDefaultPublishAll\n ? t('version:publishIn', { locale: activeLocaleLabel })\n : t('version:publishAllLocales')}\n </PopupList.Button>\n </PopupList.ButtonGroup>\n )}\n </React.Fragment>\n )\n }\n : undefined\n }\n type=\"button\"\n >\n {!isDefaultPublishAll ? (\n t('version:publishIn', { locale: activeLocaleLabel })\n ) : (\n <React.Fragment>\n <span className=\"publish-button__label--full\">{label}</span>\n <span className=\"publish-button__label--short\">{shortLabel}</span>\n </React.Fragment>\n )}\n </FormSubmit>\n </React.Fragment>\n )\n}\n"],"mappings":"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","ignoreList":[]}
@@ -4,7 +4,7 @@
4
4
  display: flex;
5
5
  padding: 0;
6
6
  border: var(--stroke-width-small) solid var(--color-border);
7
- border-radius: 0.1875rem;
7
+ border-radius: var(--radius-chip);
8
8
  background: var(--color-bg);
9
9
  height: 1.25rem;
10
10
  margin: 0;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/ReactSelect/index.tsx"],"names":[],"mappings":"AAMA,OAAO,KAA2B,MAAM,OAAO,CAAA;AAI/C,OAAO,KAAK,EAAU,uBAAuB,EAAE,MAAM,YAAY,CAAA;AACjE,YAAY,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AAgBxC,OAAO,aAAa,CAAA;AAwSpB,eAAO,MAAM,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC,uBAAuB,CAQzD,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/ReactSelect/index.tsx"],"names":[],"mappings":"AAMA,OAAO,KAA2B,MAAM,OAAO,CAAA;AAI/C,OAAO,KAAK,EAAU,uBAAuB,EAAE,MAAM,YAAY,CAAA;AACjE,YAAY,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AAgBxC,OAAO,aAAa,CAAA;AAgTpB,eAAO,MAAM,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC,uBAAuB,CAQzD,CAAA"}
@@ -150,6 +150,10 @@ const SelectAdapter = props => {
150
150
  const placement = state_3.placement ? `rs__menu--placement-${state_3.placement}` : '';
151
151
  const external = externalClassNames?.menu?.(state_3) ?? '';
152
152
  return [placement, external].filter(Boolean).join(' ');
153
+ },
154
+ menuList: state_4 => {
155
+ const external_0 = externalClassNames?.menuList?.(state_4) ?? '';
156
+ return ['scrollbar-thin', external_0].filter(Boolean).join(' ');
153
157
  }
154
158
  },
155
159
  components: {
@@ -224,10 +228,14 @@ const SelectAdapter = props => {
224
228
  classNamePrefix: "rs",
225
229
  classNames: {
226
230
  ...externalClassNames,
227
- menu: state_4 => {
228
- const placement_0 = state_4.placement ? `rs__menu--placement-${state_4.placement}` : '';
229
- const external_0 = externalClassNames?.menu?.(state_4) ?? '';
230
- return [placement_0, external_0].filter(Boolean).join(' ');
231
+ menu: state_5 => {
232
+ const placement_0 = state_5.placement ? `rs__menu--placement-${state_5.placement}` : '';
233
+ const external_1 = externalClassNames?.menu?.(state_5) ?? '';
234
+ return [placement_0, external_1].filter(Boolean).join(' ');
235
+ },
236
+ menuList: state_6 => {
237
+ const external_2 = externalClassNames?.menuList?.(state_6) ?? '';
238
+ return ['scrollbar-thin', external_2].filter(Boolean).join(' ');
231
239
  }
232
240
  },
233
241
  components: {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["c","_c","arrayMove","getTranslation","React","useEffect","useId","Select","components","rsComponents","CreatableSelect","useDebouncedEffect","useTheme","useTranslation","DraggableSortable","ShimmerEffect","ClearIndicator","Control","DropdownIndicator","Input","generateMultiValueDraggableID","MultiValue","MultiValueLabel","MultiValueRemove","SingleValue","ValueContainer","createOption","label","value","ThemedMenuPortal","props","$","theme","menuPortalTheme","selectProps","customProps","t0","t1","_jsx","MenuPortal","innerProps","SelectAdapter","i18n","t","inputValue","setInputValue","useState","uuid","hasMounted","setHasMounted","className","classNames","externalClassNames","disabled","filterOption","undefined","getOptionValue","isClearable","isCreatable","isLoading","isSearchable","menuPortalTarget","menuPortalTargetProp","menuPosition","menuPositionProp","noOptionsMessage","numberOnly","onChange","onMenuClose","onMenuOpen","options","placeholder","showError","styles","externalStyles","document","body","isLoadingDebounced","setIsLoadingDebounced","loadingMessage","classes","filter","Boolean","join","menu","rsStyles","state","zIndex","menuPortal","control","minHeight","option","height","captureMenuScroll","classNamePrefix","placement","external","instanceId","isDisabled","menuPlacement","unstyled","handleKeyDown","event","acceptableKeys","isNumber","test","key","isActionKey","includes","preventDefault","trim","nativeEvent","isComposing","onInputChange","newValue","onKeyDown","SortableSelect","draggableIDs","Array","isArray","map","optionValue","ids","onDragEnd","moveFromIndex","moveToIndex","sorted","ReactSelect","isMulti","isSortable"],"sources":["../../../src/elements/ReactSelect/index.tsx"],"sourcesContent":["'use client'\nimport type { JSX, KeyboardEventHandler } from 'react'\nimport type { GroupBase, MenuProps, StylesConfig } from 'react-select'\n\nimport { arrayMove } from '@dnd-kit/sortable'\nimport { getTranslation } from '@payloadcms/translations'\nimport React, { useEffect, useId } from 'react'\nimport Select, { components as rsComponents } from 'react-select'\nimport CreatableSelect from 'react-select/creatable'\n\nimport type { Option, ReactSelectAdapterProps } from './types.js'\nexport type { Option } from './types.js'\n\nimport { useDebouncedEffect } from '../../hooks/useDebouncedEffect.js'\nimport { useTheme } from '../../providers/Theme/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { DraggableSortable } from '../DraggableSortable/index.js'\nimport { ShimmerEffect } from '../ShimmerEffect/index.js'\nimport { ClearIndicator } from './ClearIndicator/index.js'\nimport { Control } from './Control/index.js'\nimport { DropdownIndicator } from './DropdownIndicator/index.js'\nimport { Input } from './Input/index.js'\nimport { generateMultiValueDraggableID, MultiValue } from './MultiValue/index.js'\nimport { MultiValueLabel } from './MultiValueLabel/index.js'\nimport { MultiValueRemove } from './MultiValueRemove/index.js'\nimport { SingleValue } from './SingleValue/index.js'\nimport { ValueContainer } from './ValueContainer/index.js'\nimport './index.css'\n\nconst createOption = (label: string) => ({\n label,\n value: label,\n})\n\n// Propagates the nearest scoped theme (via ThemeProvider) into the portal div,\n// falling back to the global theme. Ensures dropdown menus portaled to\n// document.body inherit the correct theme (e.g. dark Popup).\nfunction ThemedMenuPortal<Opt, IsMulti extends boolean, Group extends GroupBase<Opt>>(\n props: React.ComponentProps<typeof rsComponents.MenuPortal<Opt, IsMulti, Group>>,\n) {\n const { theme } = useTheme()\n const menuPortalTheme = (props.selectProps as any)?.customProps?.menuPortalTheme\n return (\n <rsComponents.MenuPortal\n {...props}\n innerProps={{ 'data-theme': menuPortalTheme ?? theme } as JSX.IntrinsicElements['div']}\n />\n )\n}\n\nconst SelectAdapter: React.FC<ReactSelectAdapterProps> = (props) => {\n const { i18n, t } = useTranslation()\n const [inputValue, setInputValue] = React.useState('') // for creatable select\n const uuid = useId()\n const [hasMounted, setHasMounted] = React.useState(false)\n\n useEffect(() => {\n setHasMounted(true)\n }, [])\n\n const {\n className,\n classNames: externalClassNames,\n components,\n customProps,\n disabled = false,\n filterOption = undefined,\n getOptionValue,\n isClearable = true,\n isCreatable,\n isLoading,\n isSearchable = true,\n menuPortalTarget: menuPortalTargetProp,\n menuPosition: menuPositionProp,\n noOptionsMessage = () => t('general:noOptions'),\n numberOnly = false,\n onChange,\n onMenuClose,\n onMenuOpen,\n options,\n placeholder = t('general:selectValue'),\n showError,\n styles: externalStyles,\n value,\n } = props\n\n const menuPortalTarget =\n menuPortalTargetProp === undefined\n ? typeof document !== 'undefined'\n ? document.body\n : null\n : menuPortalTargetProp\n\n const menuPosition = menuPositionProp ?? (menuPortalTarget ? 'fixed' : undefined)\n\n // Debounce the loading state so that fast option fetches (e.g. relationship\n // fields that resolve almost instantly) don't cause the clear indicator to\n // flash to react-select's loading indicator and back. The loading indicator\n // only appears once a load takes longer than the threshold below.\n const [isLoadingDebounced, setIsLoadingDebounced] = React.useState(false)\n\n useDebouncedEffect(\n () => {\n setIsLoadingDebounced(isLoading)\n },\n [isLoading],\n 250,\n )\n\n const loadingMessage = () => t('general:loading') + '...'\n\n const classes = [className, 'react-select', showError && 'react-select--error']\n .filter(Boolean)\n .join(' ')\n\n const styles: StylesConfig<Option> = {\n // Remove the default react-select z-index from the menu so that our custom\n // z-index in the \"payload-default\" css layer can take effect, in such a way\n // that end users can easily override it as with other styles.\n menu: (rsStyles, state) => ({\n ...rsStyles,\n zIndex: undefined,\n ...externalStyles?.menu?.(rsStyles, state),\n }),\n // When portaling to document.body, the portal container needs an explicit\n // z-index so the menu appears above drawers and dialogs. unstyled={true}\n // strips react-select's default zIndex:9999 from the portal container.\n ...(menuPortalTarget && {\n menuPortal: (rsStyles, state) => ({\n ...rsStyles,\n zIndex: 9999,\n ...externalStyles?.menuPortal?.(rsStyles, state),\n }),\n }),\n // Remove the default react-select min-height so our CSS can control it\n control: (rsStyles, state) => ({\n ...rsStyles,\n minHeight: undefined,\n ...externalStyles?.control?.(rsStyles, state),\n }),\n // Allow external option styles to override emotion defaults\n option: (rsStyles, state) => ({\n ...rsStyles,\n ...externalStyles?.option?.(rsStyles, state),\n }),\n }\n\n if (!hasMounted) {\n return <ShimmerEffect height=\"var(--field-min-height)\" />\n }\n\n if (!isCreatable) {\n return (\n <Select<Option, boolean, GroupBase<Option>>\n captureMenuScroll\n customProps={customProps}\n {...props}\n className={classes}\n classNamePrefix=\"rs\"\n classNames={{\n ...externalClassNames,\n menu: (state: MenuProps<Option, boolean, GroupBase<Option>>) => {\n const placement = state.placement ? `rs__menu--placement-${state.placement}` : ''\n const external = externalClassNames?.menu?.(state) ?? ''\n return [placement, external].filter(Boolean).join(' ')\n },\n }}\n components={{\n ClearIndicator,\n Control,\n DropdownIndicator,\n Input,\n MenuPortal: ThemedMenuPortal,\n MultiValue,\n MultiValueLabel,\n MultiValueRemove,\n SingleValue,\n ValueContainer,\n ...components,\n }}\n filterOption={filterOption}\n getOptionValue={getOptionValue}\n instanceId={uuid}\n isClearable={isClearable}\n isDisabled={disabled}\n isLoading={isLoadingDebounced}\n isSearchable={isSearchable}\n loadingMessage={loadingMessage}\n menuPlacement=\"auto\"\n menuPortalTarget={menuPortalTarget}\n menuPosition={menuPosition}\n noOptionsMessage={noOptionsMessage}\n onChange={onChange}\n onMenuClose={onMenuClose}\n onMenuOpen={onMenuOpen}\n options={options}\n placeholder={getTranslation(placeholder, i18n)}\n styles={styles}\n unstyled={true}\n value={value}\n />\n )\n }\n const handleKeyDown: KeyboardEventHandler = (event) => {\n if (numberOnly === true) {\n const acceptableKeys = [\n 'Tab',\n 'Escape',\n 'Backspace',\n 'Enter',\n 'ArrowRight',\n 'ArrowLeft',\n 'ArrowUp',\n 'ArrowDown',\n ]\n const isNumber = !/\\D/.test(event.key)\n const isActionKey = acceptableKeys.includes(event.key)\n if (!isNumber && !isActionKey) {\n event.preventDefault()\n return\n }\n }\n if (!value || !inputValue || inputValue.trim() === '') {\n return\n }\n if (filterOption && !filterOption(null, inputValue)) {\n return\n }\n if (event.nativeEvent.isComposing) {\n return\n }\n switch (event.key) {\n case 'Enter':\n case 'Tab':\n onChange([...(value as Option[]), createOption(inputValue)])\n setInputValue('')\n event.preventDefault()\n break\n default:\n break\n }\n }\n\n return (\n <CreatableSelect<Option, boolean, GroupBase<Option>>\n captureMenuScroll\n {...props}\n className={classes}\n classNamePrefix=\"rs\"\n classNames={{\n ...externalClassNames,\n menu: (state: MenuProps<Option, boolean, GroupBase<Option>>) => {\n const placement = state.placement ? `rs__menu--placement-${state.placement}` : ''\n const external = externalClassNames?.menu?.(state) ?? ''\n return [placement, external].filter(Boolean).join(' ')\n },\n }}\n components={{\n ClearIndicator,\n Control,\n DropdownIndicator,\n Input,\n MenuPortal: ThemedMenuPortal,\n MultiValue,\n MultiValueLabel,\n MultiValueRemove,\n SingleValue,\n ValueContainer,\n ...components,\n }}\n filterOption={filterOption}\n inputValue={inputValue}\n instanceId={uuid}\n isClearable={isClearable}\n isDisabled={disabled}\n isLoading={isLoadingDebounced}\n isSearchable={isSearchable}\n loadingMessage={loadingMessage}\n menuPlacement=\"auto\"\n menuPortalTarget={menuPortalTarget}\n menuPosition={menuPosition}\n noOptionsMessage={noOptionsMessage}\n onChange={onChange}\n onInputChange={(newValue) => setInputValue(newValue)}\n onKeyDown={handleKeyDown}\n onMenuClose={onMenuClose}\n onMenuOpen={onMenuOpen}\n options={options}\n placeholder={getTranslation(placeholder, i18n)}\n styles={styles}\n unstyled={true}\n value={value}\n />\n )\n}\n\nconst SortableSelect: React.FC<ReactSelectAdapterProps> = (props) => {\n const { getOptionValue, onChange, value } = props\n\n let draggableIDs: string[] = []\n if (value) {\n draggableIDs = (Array.isArray(value) ? value : [value]).map((optionValue) => {\n return generateMultiValueDraggableID(optionValue, getOptionValue)\n })\n }\n\n return (\n <DraggableSortable\n className=\"react-select-container\"\n ids={draggableIDs}\n onDragEnd={({ moveFromIndex, moveToIndex }) => {\n let sorted = value\n if (value && Array.isArray(value)) {\n sorted = arrayMove(value, moveFromIndex, moveToIndex)\n }\n onChange(sorted)\n }}\n >\n <SelectAdapter {...props} />\n </DraggableSortable>\n )\n}\n\nexport const ReactSelect: React.FC<ReactSelectAdapterProps> = (props) => {\n const { isMulti, isSortable } = props\n\n if (isMulti && isSortable) {\n return <SortableSelect {...props} />\n }\n\n return <SelectAdapter {...props} />\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["c","_c","arrayMove","getTranslation","React","useEffect","useId","Select","components","rsComponents","CreatableSelect","useDebouncedEffect","useTheme","useTranslation","DraggableSortable","ShimmerEffect","ClearIndicator","Control","DropdownIndicator","Input","generateMultiValueDraggableID","MultiValue","MultiValueLabel","MultiValueRemove","SingleValue","ValueContainer","createOption","label","value","ThemedMenuPortal","props","$","theme","menuPortalTheme","selectProps","customProps","t0","t1","_jsx","MenuPortal","innerProps","SelectAdapter","i18n","t","inputValue","setInputValue","useState","uuid","hasMounted","setHasMounted","className","classNames","externalClassNames","disabled","filterOption","undefined","getOptionValue","isClearable","isCreatable","isLoading","isSearchable","menuPortalTarget","menuPortalTargetProp","menuPosition","menuPositionProp","noOptionsMessage","numberOnly","onChange","onMenuClose","onMenuOpen","options","placeholder","showError","styles","externalStyles","document","body","isLoadingDebounced","setIsLoadingDebounced","loadingMessage","classes","filter","Boolean","join","menu","rsStyles","state","zIndex","menuPortal","control","minHeight","option","height","captureMenuScroll","classNamePrefix","placement","external","menuList","instanceId","isDisabled","menuPlacement","unstyled","handleKeyDown","event","acceptableKeys","isNumber","test","key","isActionKey","includes","preventDefault","trim","nativeEvent","isComposing","onInputChange","newValue","onKeyDown","SortableSelect","draggableIDs","Array","isArray","map","optionValue","ids","onDragEnd","moveFromIndex","moveToIndex","sorted","ReactSelect","isMulti","isSortable"],"sources":["../../../src/elements/ReactSelect/index.tsx"],"sourcesContent":["'use client'\nimport type { JSX, KeyboardEventHandler } from 'react'\nimport type { GroupBase, MenuListProps, MenuProps, StylesConfig } from 'react-select'\n\nimport { arrayMove } from '@dnd-kit/sortable'\nimport { getTranslation } from '@payloadcms/translations'\nimport React, { useEffect, useId } from 'react'\nimport Select, { components as rsComponents } from 'react-select'\nimport CreatableSelect from 'react-select/creatable'\n\nimport type { Option, ReactSelectAdapterProps } from './types.js'\nexport type { Option } from './types.js'\n\nimport { useDebouncedEffect } from '../../hooks/useDebouncedEffect.js'\nimport { useTheme } from '../../providers/Theme/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { DraggableSortable } from '../DraggableSortable/index.js'\nimport { ShimmerEffect } from '../ShimmerEffect/index.js'\nimport { ClearIndicator } from './ClearIndicator/index.js'\nimport { Control } from './Control/index.js'\nimport { DropdownIndicator } from './DropdownIndicator/index.js'\nimport { Input } from './Input/index.js'\nimport { generateMultiValueDraggableID, MultiValue } from './MultiValue/index.js'\nimport { MultiValueLabel } from './MultiValueLabel/index.js'\nimport { MultiValueRemove } from './MultiValueRemove/index.js'\nimport { SingleValue } from './SingleValue/index.js'\nimport { ValueContainer } from './ValueContainer/index.js'\nimport './index.css'\n\nconst createOption = (label: string) => ({\n label,\n value: label,\n})\n\n// Propagates the nearest scoped theme (via ThemeProvider) into the portal div,\n// falling back to the global theme. Ensures dropdown menus portaled to\n// document.body inherit the correct theme (e.g. dark Popup).\nfunction ThemedMenuPortal<Opt, IsMulti extends boolean, Group extends GroupBase<Opt>>(\n props: React.ComponentProps<typeof rsComponents.MenuPortal<Opt, IsMulti, Group>>,\n) {\n const { theme } = useTheme()\n const menuPortalTheme = (props.selectProps as any)?.customProps?.menuPortalTheme\n return (\n <rsComponents.MenuPortal\n {...props}\n innerProps={{ 'data-theme': menuPortalTheme ?? theme } as JSX.IntrinsicElements['div']}\n />\n )\n}\n\nconst SelectAdapter: React.FC<ReactSelectAdapterProps> = (props) => {\n const { i18n, t } = useTranslation()\n const [inputValue, setInputValue] = React.useState('') // for creatable select\n const uuid = useId()\n const [hasMounted, setHasMounted] = React.useState(false)\n\n useEffect(() => {\n setHasMounted(true)\n }, [])\n\n const {\n className,\n classNames: externalClassNames,\n components,\n customProps,\n disabled = false,\n filterOption = undefined,\n getOptionValue,\n isClearable = true,\n isCreatable,\n isLoading,\n isSearchable = true,\n menuPortalTarget: menuPortalTargetProp,\n menuPosition: menuPositionProp,\n noOptionsMessage = () => t('general:noOptions'),\n numberOnly = false,\n onChange,\n onMenuClose,\n onMenuOpen,\n options,\n placeholder = t('general:selectValue'),\n showError,\n styles: externalStyles,\n value,\n } = props\n\n const menuPortalTarget =\n menuPortalTargetProp === undefined\n ? typeof document !== 'undefined'\n ? document.body\n : null\n : menuPortalTargetProp\n\n const menuPosition = menuPositionProp ?? (menuPortalTarget ? 'fixed' : undefined)\n\n // Debounce the loading state so that fast option fetches (e.g. relationship\n // fields that resolve almost instantly) don't cause the clear indicator to\n // flash to react-select's loading indicator and back. The loading indicator\n // only appears once a load takes longer than the threshold below.\n const [isLoadingDebounced, setIsLoadingDebounced] = React.useState(false)\n\n useDebouncedEffect(\n () => {\n setIsLoadingDebounced(isLoading)\n },\n [isLoading],\n 250,\n )\n\n const loadingMessage = () => t('general:loading') + '...'\n\n const classes = [className, 'react-select', showError && 'react-select--error']\n .filter(Boolean)\n .join(' ')\n\n const styles: StylesConfig<Option> = {\n // Remove the default react-select z-index from the menu so that our custom\n // z-index in the \"payload-default\" css layer can take effect, in such a way\n // that end users can easily override it as with other styles.\n menu: (rsStyles, state) => ({\n ...rsStyles,\n zIndex: undefined,\n ...externalStyles?.menu?.(rsStyles, state),\n }),\n // When portaling to document.body, the portal container needs an explicit\n // z-index so the menu appears above drawers and dialogs. unstyled={true}\n // strips react-select's default zIndex:9999 from the portal container.\n ...(menuPortalTarget && {\n menuPortal: (rsStyles, state) => ({\n ...rsStyles,\n zIndex: 9999,\n ...externalStyles?.menuPortal?.(rsStyles, state),\n }),\n }),\n // Remove the default react-select min-height so our CSS can control it\n control: (rsStyles, state) => ({\n ...rsStyles,\n minHeight: undefined,\n ...externalStyles?.control?.(rsStyles, state),\n }),\n // Allow external option styles to override emotion defaults\n option: (rsStyles, state) => ({\n ...rsStyles,\n ...externalStyles?.option?.(rsStyles, state),\n }),\n }\n\n if (!hasMounted) {\n return <ShimmerEffect height=\"var(--field-min-height)\" />\n }\n\n if (!isCreatable) {\n return (\n <Select<Option, boolean, GroupBase<Option>>\n captureMenuScroll\n customProps={customProps}\n {...props}\n className={classes}\n classNamePrefix=\"rs\"\n classNames={{\n ...externalClassNames,\n menu: (state: MenuProps<Option, boolean, GroupBase<Option>>) => {\n const placement = state.placement ? `rs__menu--placement-${state.placement}` : ''\n const external = externalClassNames?.menu?.(state) ?? ''\n return [placement, external].filter(Boolean).join(' ')\n },\n menuList: (state: MenuListProps<Option, boolean, GroupBase<Option>>) => {\n const external = externalClassNames?.menuList?.(state) ?? ''\n return ['scrollbar-thin', external].filter(Boolean).join(' ')\n },\n }}\n components={{\n ClearIndicator,\n Control,\n DropdownIndicator,\n Input,\n MenuPortal: ThemedMenuPortal,\n MultiValue,\n MultiValueLabel,\n MultiValueRemove,\n SingleValue,\n ValueContainer,\n ...components,\n }}\n filterOption={filterOption}\n getOptionValue={getOptionValue}\n instanceId={uuid}\n isClearable={isClearable}\n isDisabled={disabled}\n isLoading={isLoadingDebounced}\n isSearchable={isSearchable}\n loadingMessage={loadingMessage}\n menuPlacement=\"auto\"\n menuPortalTarget={menuPortalTarget}\n menuPosition={menuPosition}\n noOptionsMessage={noOptionsMessage}\n onChange={onChange}\n onMenuClose={onMenuClose}\n onMenuOpen={onMenuOpen}\n options={options}\n placeholder={getTranslation(placeholder, i18n)}\n styles={styles}\n unstyled={true}\n value={value}\n />\n )\n }\n const handleKeyDown: KeyboardEventHandler = (event) => {\n if (numberOnly === true) {\n const acceptableKeys = [\n 'Tab',\n 'Escape',\n 'Backspace',\n 'Enter',\n 'ArrowRight',\n 'ArrowLeft',\n 'ArrowUp',\n 'ArrowDown',\n ]\n const isNumber = !/\\D/.test(event.key)\n const isActionKey = acceptableKeys.includes(event.key)\n if (!isNumber && !isActionKey) {\n event.preventDefault()\n return\n }\n }\n if (!value || !inputValue || inputValue.trim() === '') {\n return\n }\n if (filterOption && !filterOption(null, inputValue)) {\n return\n }\n if (event.nativeEvent.isComposing) {\n return\n }\n switch (event.key) {\n case 'Enter':\n case 'Tab':\n onChange([...(value as Option[]), createOption(inputValue)])\n setInputValue('')\n event.preventDefault()\n break\n default:\n break\n }\n }\n\n return (\n <CreatableSelect<Option, boolean, GroupBase<Option>>\n captureMenuScroll\n {...props}\n className={classes}\n classNamePrefix=\"rs\"\n classNames={{\n ...externalClassNames,\n menu: (state: MenuProps<Option, boolean, GroupBase<Option>>) => {\n const placement = state.placement ? `rs__menu--placement-${state.placement}` : ''\n const external = externalClassNames?.menu?.(state) ?? ''\n return [placement, external].filter(Boolean).join(' ')\n },\n menuList: (state: MenuListProps<Option, boolean, GroupBase<Option>>) => {\n const external = externalClassNames?.menuList?.(state) ?? ''\n return ['scrollbar-thin', external].filter(Boolean).join(' ')\n },\n }}\n components={{\n ClearIndicator,\n Control,\n DropdownIndicator,\n Input,\n MenuPortal: ThemedMenuPortal,\n MultiValue,\n MultiValueLabel,\n MultiValueRemove,\n SingleValue,\n ValueContainer,\n ...components,\n }}\n filterOption={filterOption}\n inputValue={inputValue}\n instanceId={uuid}\n isClearable={isClearable}\n isDisabled={disabled}\n isLoading={isLoadingDebounced}\n isSearchable={isSearchable}\n loadingMessage={loadingMessage}\n menuPlacement=\"auto\"\n menuPortalTarget={menuPortalTarget}\n menuPosition={menuPosition}\n noOptionsMessage={noOptionsMessage}\n onChange={onChange}\n onInputChange={(newValue) => setInputValue(newValue)}\n onKeyDown={handleKeyDown}\n onMenuClose={onMenuClose}\n onMenuOpen={onMenuOpen}\n options={options}\n placeholder={getTranslation(placeholder, i18n)}\n styles={styles}\n unstyled={true}\n value={value}\n />\n )\n}\n\nconst SortableSelect: React.FC<ReactSelectAdapterProps> = (props) => {\n const { getOptionValue, onChange, value } = props\n\n let draggableIDs: string[] = []\n if (value) {\n draggableIDs = (Array.isArray(value) ? value : [value]).map((optionValue) => {\n return generateMultiValueDraggableID(optionValue, getOptionValue)\n })\n }\n\n return (\n <DraggableSortable\n className=\"react-select-container\"\n ids={draggableIDs}\n onDragEnd={({ moveFromIndex, moveToIndex }) => {\n let sorted = value\n if (value && Array.isArray(value)) {\n sorted = arrayMove(value, moveFromIndex, moveToIndex)\n }\n onChange(sorted)\n }}\n >\n <SelectAdapter {...props} />\n </DraggableSortable>\n )\n}\n\nexport const ReactSelect: React.FC<ReactSelectAdapterProps> = (props) => {\n const { isMulti, isSortable } = props\n\n if (isMulti && isSortable) {\n return <SortableSelect {...props} />\n }\n\n return <SelectAdapter {...props} />\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;;AAIA,SAASC,SAAS,QAAQ;AAC1B,SAASC,cAAc,QAAQ;AAC/B,OAAOC,KAAA,IAASC,SAAS,EAAEC,KAAK,QAAQ;AACxC,OAAOC,MAAA,IAAUC,UAAA,IAAcC,YAAY,QAAQ;AACnD,OAAOC,eAAA,MAAqB;AAK5B,SAASC,kBAAkB,QAAQ;AACnC,SAASC,QAAQ,QAAQ;AACzB,SAASC,cAAc,QAAQ;AAC/B,SAASC,iBAAiB,QAAQ;AAClC,SAASC,aAAa,QAAQ;AAC9B,SAASC,cAAc,QAAQ;AAC/B,SAASC,OAAO,QAAQ;AACxB,SAASC,iBAAiB,QAAQ;AAClC,SAASC,KAAK,QAAQ;AACtB,SAASC,6BAA6B,EAAEC,UAAU,QAAQ;AAC1D,SAASC,eAAe,QAAQ;AAChC,SAASC,gBAAgB,QAAQ;AACjC,SAASC,WAAW,QAAQ;AAC5B,SAASC,cAAc,QAAQ;AAC/B,OAAO;AAEP,MAAMC,YAAA,GAAgBC,KAAA,KAAmB;EACvCA,KAAA;EACAC,KAAA,EAAOD;AACT;AAEA;AACA;AACA;AACA,SAAAE,iBAAAC,KAAA;EAAA,MAAAC,CAAA,GAAA9B,EAAA;EAGE;IAAA+B;EAAA,IAAkBpB,QAAA;EAClB,MAAAqB,eAAA,GAAyBH,KAAA,CAAAI,WAAA,EAAAC,WAAA,EAAAF,eAAA;EAIO,MAAAG,EAAA,GAAAH,eAAA,IAAmBD,KAAA;EAAA,IAAAK,EAAA;EAAA,IAAAN,CAAA,QAAAD,KAAA,IAAAC,CAAA,QAAAK,EAAA;IAFjDC,EAAA,GAAAC,IAAA,CAAA7B,YAAA,CAAA8B,UAAA;MAAA,GACMT,KAAK;MAAAU,UAAA;QAAA,cACmBJ;MAAmB;IAAA,C;;;;;;;SAFjDC,E;;AAOJ,MAAMI,aAAA,GAAoDX,KAAA;EACxD,MAAM;IAAEY,IAAI;IAAEC;EAAC,CAAE,GAAG9B,cAAA;EACpB,MAAM,CAAC+B,UAAA,EAAYC,aAAA,CAAc,GAAGzC,KAAA,CAAM0C,QAAQ,CAAC,IAAI;AAAA;EACvD,MAAMC,IAAA,GAAOzC,KAAA;EACb,MAAM,CAAC0C,UAAA,EAAYC,aAAA,CAAc,GAAG7C,KAAA,CAAM0C,QAAQ,CAAC;EAEnDzC,SAAA,CAAU;IACR4C,aAAA,CAAc;EAChB,GAAG,EAAE;EAEL,MAAM;IACJC,SAAS;IACTC,UAAA,EAAYC,kBAAkB;IAC9B5C,UAAU;IACV2B,WAAW;IACXkB,QAAA,GAAW,KAAK;IAChBC,YAAA,GAAeC,SAAS;IACxBC,cAAc;IACdC,WAAA,GAAc,IAAI;IAClBC,WAAW;IACXC,SAAS;IACTC,YAAA,GAAe,IAAI;IACnBC,gBAAA,EAAkBC,oBAAoB;IACtCC,YAAA,EAAcC,gBAAgB;IAC9BC,gBAAA,GAAmBA,CAAA,KAAMtB,CAAA,CAAE,oBAAoB;IAC/CuB,UAAA,GAAa,KAAK;IAClBC,QAAQ;IACRC,WAAW;IACXC,UAAU;IACVC,OAAO;IACPC,WAAA,GAAc5B,CAAA,CAAE,sBAAsB;IACtC6B,SAAS;IACTC,MAAA,EAAQC,cAAc;IACtB9C;EAAK,CACN,GAAGE,KAAA;EAEJ,MAAM+B,gBAAA,GACJC,oBAAA,KAAyBP,SAAA,GACrB,OAAOoB,QAAA,KAAa,cAClBA,QAAA,CAASC,IAAI,GACb,OACFd,oBAAA;EAEN,MAAMC,YAAA,GAAeC,gBAAA,KAAqBH,gBAAA,GAAmB,UAAUN,SAAQ;EAE/E;EACA;EACA;EACA;EACA,MAAM,CAACsB,kBAAA,EAAoBC,qBAAA,CAAsB,GAAG1E,KAAA,CAAM0C,QAAQ,CAAC;EAEnEnC,kBAAA,CACE;IACEmE,qBAAA,CAAsBnB,SAAA;EACxB,GACA,CAACA,SAAA,CAAU,EACX;EAGF,MAAMoB,cAAA,GAAiBA,CAAA,KAAMpC,CAAA,CAAE,qBAAqB;EAEpD,MAAMqC,OAAA,GAAU,CAAC9B,SAAA,EAAW,gBAAgBsB,SAAA,IAAa,sBAAsB,CAC5ES,MAAM,CAACC,OAAA,EACPC,IAAI,CAAC;EAER,MAAMV,MAAA,GAA+B;IACnC;IACA;IACA;IACAW,IAAA,EAAMA,CAACC,QAAA,EAAUC,KAAA,MAAW;MAC1B,GAAGD,QAAQ;MACXE,MAAA,EAAQhC,SAAA;MACR,GAAGmB,cAAA,EAAgBU,IAAA,GAAOC,QAAA,EAAUC,KAAA;IACtC;IACA;IACA;IACA;IACA,IAAIzB,gBAAA,IAAoB;MACtB2B,UAAA,EAAYA,CAACH,UAAA,EAAUC,OAAA,MAAW;QAChC,GAAGD,UAAQ;QACXE,MAAA,EAAQ;QACR,GAAGb,cAAA,EAAgBc,UAAA,GAAaH,UAAA,EAAUC,OAAA;MAC5C;IACF,CAAC;IACD;IACAG,OAAA,EAASA,CAACJ,UAAA,EAAUC,OAAA,MAAW;MAC7B,GAAGD,UAAQ;MACXK,SAAA,EAAWnC,SAAA;MACX,GAAGmB,cAAA,EAAgBe,OAAA,GAAUJ,UAAA,EAAUC,OAAA;IACzC;IACA;IACAK,MAAA,EAAQA,CAACN,UAAA,EAAUC,OAAA,MAAW;MAC5B,GAAGD,UAAQ;MACX,GAAGX,cAAA,EAAgBiB,MAAA,GAASN,UAAA,EAAUC,OAAA;IACxC;EACF;EAEA,IAAI,CAACtC,UAAA,EAAY;IACf,oBAAOV,IAAA,CAACvB,aAAA;MAAc6E,MAAA,EAAO;;EAC/B;EAEA,IAAI,CAAClC,WAAA,EAAa;IAChB,oBACEpB,IAAA,CAAC/B,MAAA;MACCsF,iBAAiB;MACjB1D,WAAA,EAAaA,WAAA;MACZ,GAAGL,KAAK;MACToB,SAAA,EAAW8B,OAAA;MACXc,eAAA,EAAgB;MAChB3C,UAAA,EAAY;QACV,GAAGC,kBAAkB;QACrBgC,IAAA,EAAOE,OAAA;UACL,MAAMS,SAAA,GAAYT,OAAA,CAAMS,SAAS,GAAG,uBAAuBT,OAAA,CAAMS,SAAS,EAAE,GAAG;UAC/E,MAAMC,QAAA,GAAW5C,kBAAA,EAAoBgC,IAAA,GAAOE,OAAA,KAAU;UACtD,OAAO,CAACS,SAAA,EAAWC,QAAA,CAAS,CAACf,MAAM,CAACC,OAAA,EAASC,IAAI,CAAC;QACpD;QACAc,QAAA,EAAWX,OAAA;UACT,MAAMU,UAAA,GAAW5C,kBAAA,EAAoB6C,QAAA,GAAWX,OAAA,KAAU;UAC1D,OAAO,CAAC,kBAAkBU,UAAA,CAAS,CAACf,MAAM,CAACC,OAAA,EAASC,IAAI,CAAC;QAC3D;MACF;MACA3E,UAAA,EAAY;QACVQ,cAAA;QACAC,OAAA;QACAC,iBAAA;QACAC,KAAA;QACAoB,UAAA,EAAYV,gBAAA;QACZR,UAAA;QACAC,eAAA;QACAC,gBAAA;QACAC,WAAA;QACAC,cAAA;QACA,GAAGjB;MACL;MACA8C,YAAA,EAAcA,YAAA;MACdE,cAAA,EAAgBA,cAAA;MAChB0C,UAAA,EAAYnD,IAAA;MACZU,WAAA,EAAaA,WAAA;MACb0C,UAAA,EAAY9C,QAAA;MACZM,SAAA,EAAWkB,kBAAA;MACXjB,YAAA,EAAcA,YAAA;MACdmB,cAAA,EAAgBA,cAAA;MAChBqB,aAAA,EAAc;MACdvC,gBAAA,EAAkBA,gBAAA;MAClBE,YAAA,EAAcA,YAAA;MACdE,gBAAA,EAAkBA,gBAAA;MAClBE,QAAA,EAAUA,QAAA;MACVC,WAAA,EAAaA,WAAA;MACbC,UAAA,EAAYA,UAAA;MACZC,OAAA,EAASA,OAAA;MACTC,WAAA,EAAapE,cAAA,CAAeoE,WAAA,EAAa7B,IAAA;MACzC+B,MAAA,EAAQA,MAAA;MACR4B,QAAA,EAAU;MACVzE,KAAA,EAAOA;;EAGb;EACA,MAAM0E,aAAA,GAAuCC,KAAA;IAC3C,IAAIrC,UAAA,KAAe,MAAM;MACvB,MAAMsC,cAAA,GAAiB,CACrB,OACA,UACA,aACA,SACA,cACA,aACA,WACA,YACD;MACD,MAAMC,QAAA,GAAW,CAAC,KAAKC,IAAI,CAACH,KAAA,CAAMI,GAAG;MACrC,MAAMC,WAAA,GAAcJ,cAAA,CAAeK,QAAQ,CAACN,KAAA,CAAMI,GAAG;MACrD,IAAI,CAACF,QAAA,IAAY,CAACG,WAAA,EAAa;QAC7BL,KAAA,CAAMO,cAAc;QACpB;MACF;IACF;IACA,IAAI,CAAClF,KAAA,IAAS,CAACgB,UAAA,IAAcA,UAAA,CAAWmE,IAAI,OAAO,IAAI;MACrD;IACF;IACA,IAAIzD,YAAA,IAAgB,CAACA,YAAA,CAAa,MAAMV,UAAA,GAAa;MACnD;IACF;IACA,IAAI2D,KAAA,CAAMS,WAAW,CAACC,WAAW,EAAE;MACjC;IACF;IACA,QAAQV,KAAA,CAAMI,GAAG;MACf,KAAK;MACL,KAAK;QACHxC,QAAA,CAAS,C,GAAKvC,KAAA,EAAoBF,YAAA,CAAakB,UAAA,EAAY;QAC3DC,aAAA,CAAc;QACd0D,KAAA,CAAMO,cAAc;QACpB;MACF;QACE;IACJ;EACF;EAEA,oBACExE,IAAA,CAAC5B,eAAA;IACCmF,iBAAiB;IAChB,GAAG/D,KAAK;IACToB,SAAA,EAAW8B,OAAA;IACXc,eAAA,EAAgB;IAChB3C,UAAA,EAAY;MACV,GAAGC,kBAAkB;MACrBgC,IAAA,EAAOE,OAAA;QACL,MAAMS,WAAA,GAAYT,OAAA,CAAMS,SAAS,GAAG,uBAAuBT,OAAA,CAAMS,SAAS,EAAE,GAAG;QAC/E,MAAMC,UAAA,GAAW5C,kBAAA,EAAoBgC,IAAA,GAAOE,OAAA,KAAU;QACtD,OAAO,CAACS,WAAA,EAAWC,UAAA,CAAS,CAACf,MAAM,CAACC,OAAA,EAASC,IAAI,CAAC;MACpD;MACAc,QAAA,EAAWX,OAAA;QACT,MAAMU,UAAA,GAAW5C,kBAAA,EAAoB6C,QAAA,GAAWX,OAAA,KAAU;QAC1D,OAAO,CAAC,kBAAkBU,UAAA,CAAS,CAACf,MAAM,CAACC,OAAA,EAASC,IAAI,CAAC;MAC3D;IACF;IACA3E,UAAA,EAAY;MACVQ,cAAA;MACAC,OAAA;MACAC,iBAAA;MACAC,KAAA;MACAoB,UAAA,EAAYV,gBAAA;MACZR,UAAA;MACAC,eAAA;MACAC,gBAAA;MACAC,WAAA;MACAC,cAAA;MACA,GAAGjB;IACL;IACA8C,YAAA,EAAcA,YAAA;IACdV,UAAA,EAAYA,UAAA;IACZsD,UAAA,EAAYnD,IAAA;IACZU,WAAA,EAAaA,WAAA;IACb0C,UAAA,EAAY9C,QAAA;IACZM,SAAA,EAAWkB,kBAAA;IACXjB,YAAA,EAAcA,YAAA;IACdmB,cAAA,EAAgBA,cAAA;IAChBqB,aAAA,EAAc;IACdvC,gBAAA,EAAkBA,gBAAA;IAClBE,YAAA,EAAcA,YAAA;IACdE,gBAAA,EAAkBA,gBAAA;IAClBE,QAAA,EAAUA,QAAA;IACV+C,aAAA,EAAgBC,QAAA,IAAatE,aAAA,CAAcsE,QAAA;IAC3CC,SAAA,EAAWd,aAAA;IACXlC,WAAA,EAAaA,WAAA;IACbC,UAAA,EAAYA,UAAA;IACZC,OAAA,EAASA,OAAA;IACTC,WAAA,EAAapE,cAAA,CAAeoE,WAAA,EAAa7B,IAAA;IACzC+B,MAAA,EAAQA,MAAA;IACR4B,QAAA,EAAU;IACVzE,KAAA,EAAOA;;AAGb;AAEA,MAAMyF,cAAA,GAAqDvF,KAAA;EACzD,MAAM;IAAE0B,cAAc;IAAEW,QAAQ;IAAEvC;EAAK,CAAE,GAAGE,KAAA;EAE5C,IAAIwF,YAAA,GAAyB,EAAE;EAC/B,IAAI1F,KAAA,EAAO;IACT0F,YAAA,GAAe,CAACC,KAAA,CAAMC,OAAO,CAAC5F,KAAA,IAASA,KAAA,GAAQ,CAACA,KAAA,CAAM,EAAE6F,GAAG,CAAEC,WAAA;MAC3D,OAAOtG,6BAAA,CAA8BsG,WAAA,EAAalE,cAAA;IACpD;EACF;EAEA,oBACElB,IAAA,CAACxB,iBAAA;IACCoC,SAAA,EAAU;IACVyE,GAAA,EAAKL,YAAA;IACLM,SAAA,EAAWA,CAAC;MAAEC,aAAa;MAAEC;IAAW,CAAE;MACxC,IAAIC,MAAA,GAASnG,KAAA;MACb,IAAIA,KAAA,IAAS2F,KAAA,CAAMC,OAAO,CAAC5F,KAAA,GAAQ;QACjCmG,MAAA,GAAS7H,SAAA,CAAU0B,KAAA,EAAOiG,aAAA,EAAeC,WAAA;MAC3C;MACA3D,QAAA,CAAS4D,MAAA;IACX;cAEA,aAAAzF,IAAA,CAACG,aAAA;MAAe,GAAGX;;;AAGzB;AAEA,OAAO,MAAMkG,WAAA,GAAkDlG,KAAA;EAC7D,MAAM;IAAEmG,OAAO;IAAEC;EAAU,CAAE,GAAGpG,KAAA;EAEhC,IAAImG,OAAA,IAAWC,UAAA,EAAY;IACzB,oBAAO5F,IAAA,CAAC+E,cAAA;MAAgB,GAAGvF;;EAC7B;EAEA,oBAAOQ,IAAA,CAACG,aAAA;IAAe,GAAGX;;AAC5B","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/SchedulePublishButton/index.tsx"],"names":[],"mappings":"AAIA,OAAO,KAA4B,MAAM,OAAO,CAAA;AAWhD,eAAO,MAAM,qBAAqB,EAAE,KAAK,CAAC,EAAE,CAAC;IAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE,CAsElE,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/SchedulePublishButton/index.tsx"],"names":[],"mappings":"AAIA,OAAO,KAA4B,MAAM,OAAO,CAAA;AAWhD,eAAO,MAAM,qBAAqB,EAAE,KAAK,CAAC,EAAE,CAAC;IAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE,CA8ElE,CAAA"}
@@ -20,6 +20,8 @@ export const SchedulePublishButton = ({
20
20
  collectionSlug,
21
21
  globalSlug,
22
22
  hasPublishPermission,
23
+ hasScheduledPublish,
24
+ setHasScheduledPublish,
23
25
  unpublishedVersionCount
24
26
  } = useDocumentInfo();
25
27
  const {
@@ -65,7 +67,9 @@ export const SchedulePublishButton = ({
65
67
  children: [/*#__PURE__*/_jsx(Button, {
66
68
  buttonStyle: "ghost",
67
69
  disabled: disabled,
68
- icon: /*#__PURE__*/_jsx(ScheduleIcon, {}),
70
+ icon: /*#__PURE__*/_jsx(ScheduleIcon, {
71
+ active: hasScheduledPublish
72
+ }),
69
73
  id: "schedule-publish-button",
70
74
  onClick: () => toggleModal(drawerSlug)
71
75
  }), /*#__PURE__*/_jsx(Tooltip, {
@@ -75,6 +79,7 @@ export const SchedulePublishButton = ({
75
79
  })]
76
80
  }), isModalOpen(drawerSlug) && /*#__PURE__*/_jsx(ScheduleDrawer, {
77
81
  defaultType: !hasNewerVersions ? 'unpublish' : 'publish',
82
+ onUpcomingChange: setHasScheduledPublish,
78
83
  schedulePublishConfig: scheduledPublishEnabled && typeof entityConfig.versions.drafts.schedulePublish === 'object' ? entityConfig.versions.drafts.schedulePublish : undefined,
79
84
  slug: drawerSlug
80
85
  })]
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["useModal","hasAutosaveEnabled","hasScheduledPublishEnabled","React","useMemo","useState","useFormModified","ScheduleIcon","useConfig","useDocumentInfo","useTranslation","Button","ScheduleDrawer","Tooltip","SchedulePublishButton","disabled","id","collectionSlug","globalSlug","hasPublishPermission","unpublishedVersionCount","getEntityConfig","isModalOpen","toggleModal","t","modified","hovered","setHovered","entityConfig","scheduledPublishEnabled","hasAutosave","canSchedulePublish","Boolean","drawerSlug","hasNewerVersions","label","_jsxs","Fragment","onPointerEnter","onPointerLeave","style","position","_jsx","buttonStyle","icon","onClick","delay","show","defaultType","schedulePublishConfig","versions","drafts","schedulePublish","undefined","slug"],"sources":["../../../src/elements/SchedulePublishButton/index.tsx"],"sourcesContent":["'use client'\n\nimport { useModal } from '@faceless-ui/modal'\nimport { hasAutosaveEnabled, hasScheduledPublishEnabled } from 'payload/shared'\nimport React, { useMemo, useState } from 'react'\n\nimport { useFormModified } from '../../forms/Form/context.js'\nimport { ScheduleIcon } from '../../icons/Schedule/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useDocumentInfo } from '../../providers/DocumentInfo/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { Button } from '../Button/index.js'\nimport { ScheduleDrawer } from '../PublishButton/ScheduleDrawer/index.js'\nimport { Tooltip } from '../Tooltip/index.js'\n\nexport const SchedulePublishButton: React.FC<{ disabled?: boolean }> = ({ disabled }) => {\n const { id, collectionSlug, globalSlug, hasPublishPermission, unpublishedVersionCount } =\n useDocumentInfo()\n\n const { getEntityConfig } = useConfig()\n const { isModalOpen, toggleModal } = useModal()\n const { t } = useTranslation()\n const modified = useFormModified()\n const [hovered, setHovered] = useState(false)\n\n const entityConfig = useMemo(() => {\n if (collectionSlug) {\n return getEntityConfig({ collectionSlug })\n }\n if (globalSlug) {\n return getEntityConfig({ globalSlug })\n }\n }, [collectionSlug, globalSlug, getEntityConfig])\n\n const scheduledPublishEnabled = hasScheduledPublishEnabled(entityConfig)\n const hasAutosave = hasAutosaveEnabled(entityConfig)\n\n const canSchedulePublish = Boolean(\n scheduledPublishEnabled &&\n hasPublishPermission &&\n (globalSlug || (collectionSlug && id)) &&\n (hasAutosave || !modified),\n )\n\n const drawerSlug = `schedule-publish-${id}`\n const hasNewerVersions = unpublishedVersionCount > 0\n\n if (!canSchedulePublish) {\n return null\n }\n\n const label = t('version:schedulePublish')\n\n return (\n <React.Fragment>\n <span\n onPointerEnter={() => setHovered(true)}\n onPointerLeave={() => setHovered(false)}\n style={{ position: 'relative' }}\n >\n <Button\n buttonStyle=\"ghost\"\n disabled={disabled}\n icon={<ScheduleIcon />}\n id=\"schedule-publish-button\"\n onClick={() => toggleModal(drawerSlug)}\n />\n <Tooltip delay={0} show={hovered}>\n {label}\n </Tooltip>\n </span>\n {isModalOpen(drawerSlug) && (\n <ScheduleDrawer\n defaultType={!hasNewerVersions ? 'unpublish' : 'publish'}\n schedulePublishConfig={\n scheduledPublishEnabled &&\n typeof entityConfig.versions.drafts.schedulePublish === 'object'\n ? entityConfig.versions.drafts.schedulePublish\n : undefined\n }\n slug={drawerSlug}\n />\n )}\n </React.Fragment>\n )\n}\n"],"mappings":"AAAA;;;AAEA,SAASA,QAAQ,QAAQ;AACzB,SAASC,kBAAkB,EAAEC,0BAA0B,QAAQ;AAC/D,OAAOC,KAAA,IAASC,OAAO,EAAEC,QAAQ,QAAQ;AAEzC,SAASC,eAAe,QAAQ;AAChC,SAASC,YAAY,QAAQ;AAC7B,SAASC,SAAS,QAAQ;AAC1B,SAASC,eAAe,QAAQ;AAChC,SAASC,cAAc,QAAQ;AAC/B,SAASC,MAAM,QAAQ;AACvB,SAASC,cAAc,QAAQ;AAC/B,SAASC,OAAO,QAAQ;AAExB,OAAO,MAAMC,qBAAA,GAA0DA,CAAC;EAAEC;AAAQ,CAAE;EAClF,MAAM;IAAEC,EAAE;IAAEC,cAAc;IAAEC,UAAU;IAAEC,oBAAoB;IAAEC;EAAuB,CAAE,GACrFX,eAAA;EAEF,MAAM;IAAEY;EAAe,CAAE,GAAGb,SAAA;EAC5B,MAAM;IAAEc,WAAW;IAAEC;EAAW,CAAE,GAAGvB,QAAA;EACrC,MAAM;IAAEwB;EAAC,CAAE,GAAGd,cAAA;EACd,MAAMe,QAAA,GAAWnB,eAAA;EACjB,MAAM,CAACoB,OAAA,EAASC,UAAA,CAAW,GAAGtB,QAAA,CAAS;EAEvC,MAAMuB,YAAA,GAAexB,OAAA,CAAQ;IAC3B,IAAIa,cAAA,EAAgB;MAClB,OAAOI,eAAA,CAAgB;QAAEJ;MAAe;IAC1C;IACA,IAAIC,UAAA,EAAY;MACd,OAAOG,eAAA,CAAgB;QAAEH;MAAW;IACtC;EACF,GAAG,CAACD,cAAA,EAAgBC,UAAA,EAAYG,eAAA,CAAgB;EAEhD,MAAMQ,uBAAA,GAA0B3B,0BAAA,CAA2B0B,YAAA;EAC3D,MAAME,WAAA,GAAc7B,kBAAA,CAAmB2B,YAAA;EAEvC,MAAMG,kBAAA,GAAqBC,OAAA,CACzBH,uBAAA,IACEV,oBAAA,KACCD,UAAA,IAAeD,cAAA,IAAkBD,EAAE,MACnCc,WAAA,IAAe,CAACL,QAAO;EAG5B,MAAMQ,UAAA,GAAa,oBAAoBjB,EAAA,EAAI;EAC3C,MAAMkB,gBAAA,GAAmBd,uBAAA,GAA0B;EAEnD,IAAI,CAACW,kBAAA,EAAoB;IACvB,OAAO;EACT;EAEA,MAAMI,KAAA,GAAQX,CAAA,CAAE;EAEhB,oBACEY,KAAA,CAACjC,KAAA,CAAMkC,QAAQ;4BACbD,KAAA,CAAC;MACCE,cAAA,EAAgBA,CAAA,KAAMX,UAAA,CAAW;MACjCY,cAAA,EAAgBA,CAAA,KAAMZ,UAAA,CAAW;MACjCa,KAAA,EAAO;QAAEC,QAAA,EAAU;MAAW;8BAE9BC,IAAA,CAAC/B,MAAA;QACCgC,WAAA,EAAY;QACZ5B,QAAA,EAAUA,QAAA;QACV6B,IAAA,eAAMF,IAAA,CAACnC,YAAA;QACPS,EAAA,EAAG;QACH6B,OAAA,EAASA,CAAA,KAAMtB,WAAA,CAAYU,UAAA;uBAE7BS,IAAA,CAAC7B,OAAA;QAAQiC,KAAA,EAAO;QAAGC,IAAA,EAAMrB,OAAA;kBACtBS;;QAGJb,WAAA,CAAYW,UAAA,kBACXS,IAAA,CAAC9B,cAAA;MACCoC,WAAA,EAAa,CAACd,gBAAA,GAAmB,cAAc;MAC/Ce,qBAAA,EACEpB,uBAAA,IACA,OAAOD,YAAA,CAAasB,QAAQ,CAACC,MAAM,CAACC,eAAe,KAAK,WACpDxB,YAAA,CAAasB,QAAQ,CAACC,MAAM,CAACC,eAAe,GAC5CC,SAAA;MAENC,IAAA,EAAMrB;;;AAKhB","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["useModal","hasAutosaveEnabled","hasScheduledPublishEnabled","React","useMemo","useState","useFormModified","ScheduleIcon","useConfig","useDocumentInfo","useTranslation","Button","ScheduleDrawer","Tooltip","SchedulePublishButton","disabled","id","collectionSlug","globalSlug","hasPublishPermission","hasScheduledPublish","setHasScheduledPublish","unpublishedVersionCount","getEntityConfig","isModalOpen","toggleModal","t","modified","hovered","setHovered","entityConfig","scheduledPublishEnabled","hasAutosave","canSchedulePublish","Boolean","drawerSlug","hasNewerVersions","label","_jsxs","Fragment","onPointerEnter","onPointerLeave","style","position","_jsx","buttonStyle","icon","active","onClick","delay","show","defaultType","onUpcomingChange","schedulePublishConfig","versions","drafts","schedulePublish","undefined","slug"],"sources":["../../../src/elements/SchedulePublishButton/index.tsx"],"sourcesContent":["'use client'\n\nimport { useModal } from '@faceless-ui/modal'\nimport { hasAutosaveEnabled, hasScheduledPublishEnabled } from 'payload/shared'\nimport React, { useMemo, useState } from 'react'\n\nimport { useFormModified } from '../../forms/Form/context.js'\nimport { ScheduleIcon } from '../../icons/Schedule/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useDocumentInfo } from '../../providers/DocumentInfo/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { Button } from '../Button/index.js'\nimport { ScheduleDrawer } from '../PublishButton/ScheduleDrawer/index.js'\nimport { Tooltip } from '../Tooltip/index.js'\n\nexport const SchedulePublishButton: React.FC<{ disabled?: boolean }> = ({ disabled }) => {\n const {\n id,\n collectionSlug,\n globalSlug,\n hasPublishPermission,\n hasScheduledPublish,\n setHasScheduledPublish,\n unpublishedVersionCount,\n } = useDocumentInfo()\n\n const { getEntityConfig } = useConfig()\n const { isModalOpen, toggleModal } = useModal()\n const { t } = useTranslation()\n const modified = useFormModified()\n const [hovered, setHovered] = useState(false)\n\n const entityConfig = useMemo(() => {\n if (collectionSlug) {\n return getEntityConfig({ collectionSlug })\n }\n if (globalSlug) {\n return getEntityConfig({ globalSlug })\n }\n }, [collectionSlug, globalSlug, getEntityConfig])\n\n const scheduledPublishEnabled = hasScheduledPublishEnabled(entityConfig)\n const hasAutosave = hasAutosaveEnabled(entityConfig)\n\n const canSchedulePublish = Boolean(\n scheduledPublishEnabled &&\n hasPublishPermission &&\n (globalSlug || (collectionSlug && id)) &&\n (hasAutosave || !modified),\n )\n\n const drawerSlug = `schedule-publish-${id}`\n const hasNewerVersions = unpublishedVersionCount > 0\n\n if (!canSchedulePublish) {\n return null\n }\n\n const label = t('version:schedulePublish')\n\n return (\n <React.Fragment>\n <span\n onPointerEnter={() => setHovered(true)}\n onPointerLeave={() => setHovered(false)}\n style={{ position: 'relative' }}\n >\n <Button\n buttonStyle=\"ghost\"\n disabled={disabled}\n icon={<ScheduleIcon active={hasScheduledPublish} />}\n id=\"schedule-publish-button\"\n onClick={() => toggleModal(drawerSlug)}\n />\n <Tooltip delay={0} show={hovered}>\n {label}\n </Tooltip>\n </span>\n {isModalOpen(drawerSlug) && (\n <ScheduleDrawer\n defaultType={!hasNewerVersions ? 'unpublish' : 'publish'}\n onUpcomingChange={setHasScheduledPublish}\n schedulePublishConfig={\n scheduledPublishEnabled &&\n typeof entityConfig.versions.drafts.schedulePublish === 'object'\n ? entityConfig.versions.drafts.schedulePublish\n : undefined\n }\n slug={drawerSlug}\n />\n )}\n </React.Fragment>\n )\n}\n"],"mappings":"AAAA;;;AAEA,SAASA,QAAQ,QAAQ;AACzB,SAASC,kBAAkB,EAAEC,0BAA0B,QAAQ;AAC/D,OAAOC,KAAA,IAASC,OAAO,EAAEC,QAAQ,QAAQ;AAEzC,SAASC,eAAe,QAAQ;AAChC,SAASC,YAAY,QAAQ;AAC7B,SAASC,SAAS,QAAQ;AAC1B,SAASC,eAAe,QAAQ;AAChC,SAASC,cAAc,QAAQ;AAC/B,SAASC,MAAM,QAAQ;AACvB,SAASC,cAAc,QAAQ;AAC/B,SAASC,OAAO,QAAQ;AAExB,OAAO,MAAMC,qBAAA,GAA0DA,CAAC;EAAEC;AAAQ,CAAE;EAClF,MAAM;IACJC,EAAE;IACFC,cAAc;IACdC,UAAU;IACVC,oBAAoB;IACpBC,mBAAmB;IACnBC,sBAAsB;IACtBC;EAAuB,CACxB,GAAGb,eAAA;EAEJ,MAAM;IAAEc;EAAe,CAAE,GAAGf,SAAA;EAC5B,MAAM;IAAEgB,WAAW;IAAEC;EAAW,CAAE,GAAGzB,QAAA;EACrC,MAAM;IAAE0B;EAAC,CAAE,GAAGhB,cAAA;EACd,MAAMiB,QAAA,GAAWrB,eAAA;EACjB,MAAM,CAACsB,OAAA,EAASC,UAAA,CAAW,GAAGxB,QAAA,CAAS;EAEvC,MAAMyB,YAAA,GAAe1B,OAAA,CAAQ;IAC3B,IAAIa,cAAA,EAAgB;MAClB,OAAOM,eAAA,CAAgB;QAAEN;MAAe;IAC1C;IACA,IAAIC,UAAA,EAAY;MACd,OAAOK,eAAA,CAAgB;QAAEL;MAAW;IACtC;EACF,GAAG,CAACD,cAAA,EAAgBC,UAAA,EAAYK,eAAA,CAAgB;EAEhD,MAAMQ,uBAAA,GAA0B7B,0BAAA,CAA2B4B,YAAA;EAC3D,MAAME,WAAA,GAAc/B,kBAAA,CAAmB6B,YAAA;EAEvC,MAAMG,kBAAA,GAAqBC,OAAA,CACzBH,uBAAA,IACEZ,oBAAA,KACCD,UAAA,IAAeD,cAAA,IAAkBD,EAAE,MACnCgB,WAAA,IAAe,CAACL,QAAO;EAG5B,MAAMQ,UAAA,GAAa,oBAAoBnB,EAAA,EAAI;EAC3C,MAAMoB,gBAAA,GAAmBd,uBAAA,GAA0B;EAEnD,IAAI,CAACW,kBAAA,EAAoB;IACvB,OAAO;EACT;EAEA,MAAMI,KAAA,GAAQX,CAAA,CAAE;EAEhB,oBACEY,KAAA,CAACnC,KAAA,CAAMoC,QAAQ;4BACbD,KAAA,CAAC;MACCE,cAAA,EAAgBA,CAAA,KAAMX,UAAA,CAAW;MACjCY,cAAA,EAAgBA,CAAA,KAAMZ,UAAA,CAAW;MACjCa,KAAA,EAAO;QAAEC,QAAA,EAAU;MAAW;8BAE9BC,IAAA,CAACjC,MAAA;QACCkC,WAAA,EAAY;QACZ9B,QAAA,EAAUA,QAAA;QACV+B,IAAA,eAAMF,IAAA,CAACrC,YAAA;UAAawC,MAAA,EAAQ3B;;QAC5BJ,EAAA,EAAG;QACHgC,OAAA,EAASA,CAAA,KAAMvB,WAAA,CAAYU,UAAA;uBAE7BS,IAAA,CAAC/B,OAAA;QAAQoC,KAAA,EAAO;QAAGC,IAAA,EAAMtB,OAAA;kBACtBS;;QAGJb,WAAA,CAAYW,UAAA,kBACXS,IAAA,CAAChC,cAAA;MACCuC,WAAA,EAAa,CAACf,gBAAA,GAAmB,cAAc;MAC/CgB,gBAAA,EAAkB/B,sBAAA;MAClBgC,qBAAA,EACEtB,uBAAA,IACA,OAAOD,YAAA,CAAawB,QAAQ,CAACC,MAAM,CAACC,eAAe,KAAK,WACpD1B,YAAA,CAAawB,QAAQ,CAACC,MAAM,CAACC,eAAe,GAC5CC,SAAA;MAENC,IAAA,EAAMvB;;;AAKhB","ignoreList":[]}
@@ -18,7 +18,7 @@ export const SelectMany = props => {
18
18
  return null;
19
19
  }
20
20
  return /*#__PURE__*/_jsxs(Button, {
21
- buttonStyle: "pill",
21
+ buttonStyle: "primary",
22
22
  onClick: () => {
23
23
  if (typeof onClick === 'function') {
24
24
  onClick(selected);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["React","useSelection","useTranslation","Button","SelectMany","props","onClick","count","selected","t","_jsxs","buttonStyle","size"],"sources":["../../../src/elements/SelectMany/index.tsx"],"sourcesContent":["import React from 'react'\n\nimport { useSelection } from '../../providers/Selection/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { Button } from '../Button/index.js'\n\nexport const SelectMany: React.FC<{\n onClick?: (ids: ReturnType<typeof useSelection>['selected']) => void\n}> = (props) => {\n const { onClick } = props\n\n const { count, selected } = useSelection()\n const { t } = useTranslation()\n\n if (!selected || !count) {\n return null\n }\n\n return (\n <Button\n buttonStyle=\"pill\"\n onClick={() => {\n if (typeof onClick === 'function') {\n onClick(selected)\n }\n }}\n size=\"medium\"\n >\n {t('general:select')} {count}\n </Button>\n )\n}\n"],"mappings":";AAAA,OAAOA,KAAA,MAAW;AAElB,SAASC,YAAY,QAAQ;AAC7B,SAASC,cAAc,QAAQ;AAC/B,SAASC,MAAM,QAAQ;AAEvB,OAAO,MAAMC,UAAA,GAEPC,KAAA;EACJ,MAAM;IAAEC;EAAO,CAAE,GAAGD,KAAA;EAEpB,MAAM;IAAEE,KAAK;IAAEC;EAAQ,CAAE,GAAGP,YAAA;EAC5B,MAAM;IAAEQ;EAAC,CAAE,GAAGP,cAAA;EAEd,IAAI,CAACM,QAAA,IAAY,CAACD,KAAA,EAAO;IACvB,OAAO;EACT;EAEA,oBACEG,KAAA,CAACP,MAAA;IACCQ,WAAA,EAAY;IACZL,OAAA,EAASA,CAAA;MACP,IAAI,OAAOA,OAAA,KAAY,YAAY;QACjCA,OAAA,CAAQE,QAAA;MACV;IACF;IACAI,IAAA,EAAK;eAEJH,CAAA,CAAE,mBAAkB,KAAEF,KAAA;;AAG7B","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["React","useSelection","useTranslation","Button","SelectMany","props","onClick","count","selected","t","_jsxs","buttonStyle","size"],"sources":["../../../src/elements/SelectMany/index.tsx"],"sourcesContent":["import React from 'react'\n\nimport { useSelection } from '../../providers/Selection/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { Button } from '../Button/index.js'\n\nexport const SelectMany: React.FC<{\n onClick?: (ids: ReturnType<typeof useSelection>['selected']) => void\n}> = (props) => {\n const { onClick } = props\n\n const { count, selected } = useSelection()\n const { t } = useTranslation()\n\n if (!selected || !count) {\n return null\n }\n\n return (\n <Button\n buttonStyle=\"primary\"\n onClick={() => {\n if (typeof onClick === 'function') {\n onClick(selected)\n }\n }}\n size=\"medium\"\n >\n {t('general:select')} {count}\n </Button>\n )\n}\n"],"mappings":";AAAA,OAAOA,KAAA,MAAW;AAElB,SAASC,YAAY,QAAQ;AAC7B,SAASC,cAAc,QAAQ;AAC/B,SAASC,MAAM,QAAQ;AAEvB,OAAO,MAAMC,UAAA,GAEPC,KAAA;EACJ,MAAM;IAAEC;EAAO,CAAE,GAAGD,KAAA;EAEpB,MAAM;IAAEE,KAAK;IAAEC;EAAQ,CAAE,GAAGP,YAAA;EAC5B,MAAM;IAAEQ;EAAC,CAAE,GAAGP,cAAA;EAEd,IAAI,CAACM,QAAA,IAAY,CAACD,KAAA,EAAO;IACvB,OAAO;EACT;EAEA,oBACEG,KAAA,CAACP,MAAA;IACCQ,WAAA,EAAY;IACZL,OAAA,EAASA,CAAA;MACP,IAAI,OAAOA,OAAA,KAAY,YAAY;QACjCA,OAAA,CAAQE,QAAA;MACV;IACF;IACAI,IAAA,EAAK;eAEJH,CAAA,CAAE,mBAAkB,KAAEF,KAAA;;AAG7B","ignoreList":[]}
@@ -48,15 +48,16 @@
48
48
  padding-inline-end: var(--spacer-3);
49
49
  }
50
50
 
51
- /* Linked cells: move padding to the anchor for full-cell clickability */
51
+ /* Linked cells: move padding to the anchor/button for full-cell clickability */
52
52
  .cell--linked {
53
53
  padding: 0;
54
54
 
55
- > a {
55
+ > :is(a, button) {
56
56
  display: flex;
57
57
  align-items: center;
58
58
  padding: var(--spacer-2) var(--spacer-2-5);
59
59
  min-height: calc(var(--spacer-4) * 2);
60
+ cursor: pointer;
60
61
  }
61
62
  }
62
63
 
@@ -176,16 +177,17 @@
176
177
  }
177
178
  }
178
179
 
179
- /* Linked cells: move padding to the anchor for full-cell clickability */
180
+ /* Linked cells: move padding to the anchor/button for full-cell clickability */
180
181
  .cell--linked {
181
182
  padding: 0;
182
183
 
183
- > a {
184
+ > :is(a, button) {
184
185
  padding: 0 var(--spacer-2-5);
185
186
  min-height: var(--spacer-5);
187
+ cursor: pointer;
186
188
  }
187
189
 
188
- &:first-child > a {
190
+ &:first-child > :is(a, button) {
189
191
  padding-inline-start: var(--spacer-2-5);
190
192
  }
191
193
  }
@@ -0,0 +1,100 @@
1
+ @layer payload-default {
2
+ .tabs__tabs-wrap {
3
+ overflow-x: auto;
4
+ overflow-y: hidden;
5
+ margin-bottom: var(--spacer-2);
6
+ position: relative;
7
+ padding-bottom: 2px;
8
+ }
9
+
10
+ .tabs__tabs {
11
+ display: inline-flex;
12
+ min-width: 100%;
13
+ vertical-align: bottom;
14
+ position: relative;
15
+ z-index: 1;
16
+ box-shadow: inset 0px -1px var(--color-border);
17
+ }
18
+
19
+ .tabs__tab-button {
20
+ appearance: none;
21
+ background: none;
22
+ border: none;
23
+ display: flex;
24
+ align-items: center;
25
+ justify-content: center;
26
+ gap: var(--spacer-1);
27
+ padding: var(--spacer-1) var(--spacer-2);
28
+ margin: 0;
29
+ margin-bottom: var(--spacer-2);
30
+ cursor: pointer;
31
+ position: relative;
32
+ white-space: nowrap;
33
+ flex-shrink: 0;
34
+ font-family: var(--text-body-medium-font-family);
35
+ font-size: var(--text-body-medium-font-size);
36
+ font-weight: var(--text-body-medium-font-weight);
37
+ line-height: var(--text-body-medium-line-height);
38
+ letter-spacing: var(--text-letter-spacing);
39
+ color: var(--color-text-secondary);
40
+ }
41
+
42
+ .tabs__tab-button:after {
43
+ content: '';
44
+ position: absolute;
45
+ left: var(--spacer-2);
46
+ right: var(--spacer-2);
47
+ bottom: calc(-1 * var(--spacer-2) - 1px);
48
+ height: 3px;
49
+ background: var(--color-icon-brand);
50
+ border-radius: var(--radius-full);
51
+ opacity: 0;
52
+ z-index: 1;
53
+ }
54
+
55
+ .tabs__tab-button:hover:after {
56
+ background: var(--color-bg-tertiary);
57
+ opacity: 1;
58
+ }
59
+
60
+ .tabs__tab-button:focus-visible {
61
+ outline-offset: -1px;
62
+ }
63
+
64
+ .tabs__tab-button--hidden {
65
+ display: none;
66
+ }
67
+
68
+ .tabs__tab-button--active {
69
+ font-weight: var(--text-body-medium-strong-font-weight);
70
+ color: var(--color-text);
71
+ }
72
+
73
+ .tabs__tab-button--active:after {
74
+ background: var(--color-icon-brand);
75
+ opacity: 1;
76
+ }
77
+
78
+ .tabs__tab-button--active:hover:after {
79
+ background: var(--color-icon-brand);
80
+ }
81
+
82
+ .tabs__tab-button--has-error {
83
+ color: var(--color-text-danger);
84
+ }
85
+
86
+ .tabs__tab-button--has-error:after {
87
+ background: var(--field-color-border-error);
88
+ opacity: 1;
89
+ }
90
+
91
+ .tabs__tab-button--has-error:hover:after {
92
+ background: var(--field-color-border-error);
93
+ }
94
+
95
+ @media (max-width: 768px) {
96
+ .tabs__tab-button {
97
+ padding-bottom: var(--spacer-2);
98
+ }
99
+ }
100
+ }
@@ -0,0 +1,32 @@
1
+ import React from 'react';
2
+ import './index.css';
3
+ export type TabsTab<TValue extends string = string> = {
4
+ disabled?: boolean;
5
+ hidden?: boolean;
6
+ label: React.ReactNode;
7
+ value: TValue;
8
+ };
9
+ export type TabsProps<TValue extends string = string> = {
10
+ className?: string;
11
+ onChange: (value: TValue) => void;
12
+ tabs: TabsTab<TValue>[];
13
+ value: TValue;
14
+ };
15
+ export declare const Tabs: <TValue extends string = string>({ className, onChange, tabs, value, }: TabsProps<TValue>) => React.JSX.Element;
16
+ export declare const TabsList: React.FC<{
17
+ children: React.ReactNode;
18
+ className?: string;
19
+ tabsClassName?: string;
20
+ tabsWrapClassName?: string;
21
+ }>;
22
+ export declare const TabButton: React.FC<{
23
+ children: React.ReactNode;
24
+ className?: string;
25
+ disabled?: boolean;
26
+ hasError?: boolean;
27
+ hidden?: boolean;
28
+ isActive?: boolean;
29
+ modifierClassName?: string;
30
+ onClick: () => void;
31
+ }>;
32
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/Tabs/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,aAAa,CAAA;AAIpB,MAAM,MAAM,OAAO,CAAC,MAAM,SAAS,MAAM,GAAG,MAAM,IAAI;IACpD,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,KAAK,EAAE,KAAK,CAAC,SAAS,CAAA;IACtB,KAAK,EAAE,MAAM,CAAA;CACd,CAAA;AAED,MAAM,MAAM,SAAS,CAAC,MAAM,SAAS,MAAM,GAAG,MAAM,IAAI;IACtD,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IACjC,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,EAAE,CAAA;IACvB,KAAK,EAAE,MAAM,CAAA;CACd,CAAA;AAED,eAAO,MAAM,IAAI,GAAI,MAAM,SAAS,MAAM,GAAG,MAAM,EAAE,uCAKlD,SAAS,CAAC,MAAM,CAAC,sBAgBnB,CAAA;AAED,eAAO,MAAM,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC;IAC9B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;IACzB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,iBAAiB,CAAC,EAAE,MAAM,CAAA;CAC3B,CAaA,CAAA;AAED,eAAO,MAAM,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC;IAC/B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;IACzB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,OAAO,EAAE,MAAM,IAAI,CAAA;CACpB,CAiCA,CAAA"}
@@ -0,0 +1,62 @@
1
+ 'use client';
2
+
3
+ import { jsx as _jsx } from "react/jsx-runtime";
4
+ import React from 'react';
5
+ import './index.css';
6
+ const baseClass = 'tabs';
7
+ export const Tabs = ({
8
+ className,
9
+ onChange,
10
+ tabs,
11
+ value
12
+ }) => {
13
+ return /*#__PURE__*/_jsx(TabsList, {
14
+ className: className,
15
+ children: tabs.map(tab => /*#__PURE__*/_jsx(TabButton, {
16
+ disabled: tab.disabled,
17
+ hidden: tab.hidden,
18
+ isActive: tab.value === value,
19
+ onClick: () => onChange(tab.value),
20
+ children: tab.label
21
+ }, tab.value))
22
+ });
23
+ };
24
+ export const TabsList = ({
25
+ children,
26
+ className,
27
+ tabsClassName,
28
+ tabsWrapClassName
29
+ }) => {
30
+ return /*#__PURE__*/_jsx("div", {
31
+ className: [baseClass, className].filter(Boolean).join(' '),
32
+ children: /*#__PURE__*/_jsx("div", {
33
+ className: [`${baseClass}__tabs-wrap`, tabsWrapClassName].filter(Boolean).join(' '),
34
+ children: /*#__PURE__*/_jsx("div", {
35
+ className: [`${baseClass}__tabs`, tabsClassName].filter(Boolean).join(' '),
36
+ role: "tablist",
37
+ children: children
38
+ })
39
+ })
40
+ });
41
+ };
42
+ export const TabButton = ({
43
+ children,
44
+ className,
45
+ disabled,
46
+ hasError,
47
+ hidden,
48
+ isActive,
49
+ modifierClassName,
50
+ onClick
51
+ }) => {
52
+ return /*#__PURE__*/_jsx("button", {
53
+ "aria-selected": isActive,
54
+ className: [`${baseClass}__tab-button`, className, hasError && `${baseClass}__tab-button--has-error`, hasError && modifierClassName && `${modifierClassName}--has-error`, isActive && `${baseClass}__tab-button--active`, isActive && modifierClassName && `${modifierClassName}--active`, hidden && `${baseClass}__tab-button--hidden`, hidden && modifierClassName && `${modifierClassName}--hidden`].filter(Boolean).join(' '),
55
+ disabled: disabled,
56
+ onClick: onClick,
57
+ role: "tab",
58
+ type: "button",
59
+ children: children
60
+ });
61
+ };
62
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":["React","baseClass","Tabs","className","onChange","tabs","value","_jsx","TabsList","map","tab","TabButton","disabled","hidden","isActive","onClick","label","children","tabsClassName","tabsWrapClassName","filter","Boolean","join","role","hasError","modifierClassName","type"],"sources":["../../../src/elements/Tabs/index.tsx"],"sourcesContent":["'use client'\n\nimport React from 'react'\n\nimport './index.css'\n\nconst baseClass = 'tabs'\n\nexport type TabsTab<TValue extends string = string> = {\n disabled?: boolean\n hidden?: boolean\n label: React.ReactNode\n value: TValue\n}\n\nexport type TabsProps<TValue extends string = string> = {\n className?: string\n onChange: (value: TValue) => void\n tabs: TabsTab<TValue>[]\n value: TValue\n}\n\nexport const Tabs = <TValue extends string = string>({\n className,\n onChange,\n tabs,\n value,\n}: TabsProps<TValue>) => {\n return (\n <TabsList className={className}>\n {tabs.map((tab) => (\n <TabButton\n disabled={tab.disabled}\n hidden={tab.hidden}\n isActive={tab.value === value}\n key={tab.value}\n onClick={() => onChange(tab.value)}\n >\n {tab.label}\n </TabButton>\n ))}\n </TabsList>\n )\n}\n\nexport const TabsList: React.FC<{\n children: React.ReactNode\n className?: string\n tabsClassName?: string\n tabsWrapClassName?: string\n}> = ({ children, className, tabsClassName, tabsWrapClassName }) => {\n return (\n <div className={[baseClass, className].filter(Boolean).join(' ')}>\n <div className={[`${baseClass}__tabs-wrap`, tabsWrapClassName].filter(Boolean).join(' ')}>\n <div\n className={[`${baseClass}__tabs`, tabsClassName].filter(Boolean).join(' ')}\n role=\"tablist\"\n >\n {children}\n </div>\n </div>\n </div>\n )\n}\n\nexport const TabButton: React.FC<{\n children: React.ReactNode\n className?: string\n disabled?: boolean\n hasError?: boolean\n hidden?: boolean\n isActive?: boolean\n modifierClassName?: string\n onClick: () => void\n}> = ({\n children,\n className,\n disabled,\n hasError,\n hidden,\n isActive,\n modifierClassName,\n onClick,\n}) => {\n return (\n <button\n aria-selected={isActive}\n className={[\n `${baseClass}__tab-button`,\n className,\n hasError && `${baseClass}__tab-button--has-error`,\n hasError && modifierClassName && `${modifierClassName}--has-error`,\n isActive && `${baseClass}__tab-button--active`,\n isActive && modifierClassName && `${modifierClassName}--active`,\n hidden && `${baseClass}__tab-button--hidden`,\n hidden && modifierClassName && `${modifierClassName}--hidden`,\n ]\n .filter(Boolean)\n .join(' ')}\n disabled={disabled}\n onClick={onClick}\n role=\"tab\"\n type=\"button\"\n >\n {children}\n </button>\n )\n}\n"],"mappings":"AAAA;;;AAEA,OAAOA,KAAA,MAAW;AAElB,OAAO;AAEP,MAAMC,SAAA,GAAY;AAgBlB,OAAO,MAAMC,IAAA,GAAOA,CAAiC;EACnDC,SAAS;EACTC,QAAQ;EACRC,IAAI;EACJC;AAAK,CACa;EAClB,oBACEC,IAAA,CAACC,QAAA;IAASL,SAAA,EAAWA,SAAA;cAClBE,IAAA,CAAKI,GAAG,CAAEC,GAAA,iBACTH,IAAA,CAACI,SAAA;MACCC,QAAA,EAAUF,GAAA,CAAIE,QAAQ;MACtBC,MAAA,EAAQH,GAAA,CAAIG,MAAM;MAClBC,QAAA,EAAUJ,GAAA,CAAIJ,KAAK,KAAKA,KAAA;MAExBS,OAAA,EAASA,CAAA,KAAMX,QAAA,CAASM,GAAA,CAAIJ,KAAK;gBAEhCI,GAAA,CAAIM;OAHAN,GAAA,CAAIJ,KAAK;;AAQxB;AAEA,OAAO,MAAME,QAAA,GAKRA,CAAC;EAAES,QAAQ;EAAEd,SAAS;EAAEe,aAAa;EAAEC;AAAiB,CAAE;EAC7D,oBACEZ,IAAA,CAAC;IAAIJ,SAAA,EAAW,CAACF,SAAA,EAAWE,SAAA,CAAU,CAACiB,MAAM,CAACC,OAAA,EAASC,IAAI,CAAC;cAC1D,aAAAf,IAAA,CAAC;MAAIJ,SAAA,EAAW,CAAC,GAAGF,SAAA,aAAsB,EAAEkB,iBAAA,CAAkB,CAACC,MAAM,CAACC,OAAA,EAASC,IAAI,CAAC;gBAClF,aAAAf,IAAA,CAAC;QACCJ,SAAA,EAAW,CAAC,GAAGF,SAAA,QAAiB,EAAEiB,aAAA,CAAc,CAACE,MAAM,CAACC,OAAA,EAASC,IAAI,CAAC;QACtEC,IAAA,EAAK;kBAEJN;;;;AAKX;AAEA,OAAO,MAAMN,SAAA,GASRA,CAAC;EACJM,QAAQ;EACRd,SAAS;EACTS,QAAQ;EACRY,QAAQ;EACRX,MAAM;EACNC,QAAQ;EACRW,iBAAiB;EACjBV;AAAO,CACR;EACC,oBACER,IAAA,CAAC;IACC,iBAAeO,QAAA;IACfX,SAAA,EAAW,CACT,GAAGF,SAAA,cAAuB,EAC1BE,SAAA,EACAqB,QAAA,IAAY,GAAGvB,SAAA,yBAAkC,EACjDuB,QAAA,IAAYC,iBAAA,IAAqB,GAAGA,iBAAA,aAA8B,EAClEX,QAAA,IAAY,GAAGb,SAAA,sBAA+B,EAC9Ca,QAAA,IAAYW,iBAAA,IAAqB,GAAGA,iBAAA,UAA2B,EAC/DZ,MAAA,IAAU,GAAGZ,SAAA,sBAA+B,EAC5CY,MAAA,IAAUY,iBAAA,IAAqB,GAAGA,iBAAA,UAA2B,CAC9D,CACEL,MAAM,CAACC,OAAA,EACPC,IAAI,CAAC;IACRV,QAAA,EAAUA,QAAA;IACVG,OAAA,EAASA,OAAA;IACTQ,IAAA,EAAK;IACLG,IAAA,EAAK;cAEJT;;AAGP","ignoreList":[]}