@pranaysahith/decap-cms-core 3.9.1

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 (299) hide show
  1. package/README.md +9 -0
  2. package/dist/@pranaysahith/decap-cms-core.js +52 -0
  3. package/dist/@pranaysahith/decap-cms-core.js.LICENSE.txt +141 -0
  4. package/dist/@pranaysahith/decap-cms-core.js.map +1 -0
  5. package/dist/decap-cms-core.js +47 -0
  6. package/dist/decap-cms-core.js.LICENSE.txt +116 -0
  7. package/dist/decap-cms-core.js.map +1 -0
  8. package/dist/esm/actions/auth.js +97 -0
  9. package/dist/esm/actions/collections.js +15 -0
  10. package/dist/esm/actions/config.js +493 -0
  11. package/dist/esm/actions/deploys.js +79 -0
  12. package/dist/esm/actions/editorialWorkflow.js +480 -0
  13. package/dist/esm/actions/entries.js +865 -0
  14. package/dist/esm/actions/media.js +147 -0
  15. package/dist/esm/actions/mediaLibrary.js +552 -0
  16. package/dist/esm/actions/notifications.js +21 -0
  17. package/dist/esm/actions/search.js +149 -0
  18. package/dist/esm/actions/status.js +74 -0
  19. package/dist/esm/actions/waitUntil.js +32 -0
  20. package/dist/esm/backend.js +1082 -0
  21. package/dist/esm/bootstrap.js +101 -0
  22. package/dist/esm/components/App/App.js +289 -0
  23. package/dist/esm/components/App/Header.js +172 -0
  24. package/dist/esm/components/App/NotFoundPage.js +19 -0
  25. package/dist/esm/components/Collection/Collection.js +198 -0
  26. package/dist/esm/components/Collection/CollectionControls.js +46 -0
  27. package/dist/esm/components/Collection/CollectionSearch.js +222 -0
  28. package/dist/esm/components/Collection/CollectionTop.js +68 -0
  29. package/dist/esm/components/Collection/ControlButton.js +17 -0
  30. package/dist/esm/components/Collection/Entries/Entries.js +73 -0
  31. package/dist/esm/components/Collection/Entries/EntriesCollection.js +241 -0
  32. package/dist/esm/components/Collection/Entries/EntriesSearch.js +113 -0
  33. package/dist/esm/components/Collection/Entries/EntryCard.js +177 -0
  34. package/dist/esm/components/Collection/Entries/EntryListing.js +143 -0
  35. package/dist/esm/components/Collection/FilterControl.js +33 -0
  36. package/dist/esm/components/Collection/FolderRenameControl.js +403 -0
  37. package/dist/esm/components/Collection/GroupControl.js +33 -0
  38. package/dist/esm/components/Collection/NestedCollection.js +308 -0
  39. package/dist/esm/components/Collection/Sidebar.js +91 -0
  40. package/dist/esm/components/Collection/SortControl.js +59 -0
  41. package/dist/esm/components/Collection/ViewStyleControl.js +38 -0
  42. package/dist/esm/components/Editor/Editor.js +466 -0
  43. package/dist/esm/components/Editor/EditorControlPane/EditorControl.js +395 -0
  44. package/dist/esm/components/Editor/EditorControlPane/EditorControlPane.js +254 -0
  45. package/dist/esm/components/Editor/EditorControlPane/Widget.js +374 -0
  46. package/dist/esm/components/Editor/EditorInterface.js +386 -0
  47. package/dist/esm/components/Editor/EditorPreviewPane/EditorPreview.js +47 -0
  48. package/dist/esm/components/Editor/EditorPreviewPane/EditorPreviewContent.js +66 -0
  49. package/dist/esm/components/Editor/EditorPreviewPane/EditorPreviewPane.js +288 -0
  50. package/dist/esm/components/Editor/EditorPreviewPane/PreviewHOC.js +27 -0
  51. package/dist/esm/components/Editor/EditorToolbar.js +536 -0
  52. package/dist/esm/components/Editor/EntryPathEditor.js +272 -0
  53. package/dist/esm/components/Editor/withWorkflow.js +56 -0
  54. package/dist/esm/components/EditorWidgets/Unknown/UnknownControl.js +18 -0
  55. package/dist/esm/components/EditorWidgets/Unknown/UnknownPreview.js +20 -0
  56. package/dist/esm/components/EditorWidgets/index.js +4 -0
  57. package/dist/esm/components/MediaLibrary/EmptyMessage.js +22 -0
  58. package/dist/esm/components/MediaLibrary/MediaLibrary.js +446 -0
  59. package/dist/esm/components/MediaLibrary/MediaLibraryButtons.js +93 -0
  60. package/dist/esm/components/MediaLibrary/MediaLibraryCard.js +99 -0
  61. package/dist/esm/components/MediaLibrary/MediaLibraryCardGrid.js +198 -0
  62. package/dist/esm/components/MediaLibrary/MediaLibraryHeader.js +32 -0
  63. package/dist/esm/components/MediaLibrary/MediaLibraryModal.js +156 -0
  64. package/dist/esm/components/MediaLibrary/MediaLibrarySearch.js +51 -0
  65. package/dist/esm/components/MediaLibrary/MediaLibraryTop.js +123 -0
  66. package/dist/esm/components/UI/DragDrop.js +67 -0
  67. package/dist/esm/components/UI/ErrorBoundary.js +173 -0
  68. package/dist/esm/components/UI/FileUploadButton.js +27 -0
  69. package/dist/esm/components/UI/Modal.js +104 -0
  70. package/dist/esm/components/UI/Notifications.js +62 -0
  71. package/dist/esm/components/UI/SettingsDropdown.js +107 -0
  72. package/dist/esm/components/UI/index.js +6 -0
  73. package/dist/esm/components/Workflow/Workflow.js +133 -0
  74. package/dist/esm/components/Workflow/WorkflowCard.js +128 -0
  75. package/dist/esm/components/Workflow/WorkflowList.js +204 -0
  76. package/dist/esm/constants/collectionTypes.js +2 -0
  77. package/dist/esm/constants/collectionViews.js +2 -0
  78. package/dist/esm/constants/commitProps.js +2 -0
  79. package/dist/esm/constants/configSchema.js +644 -0
  80. package/dist/esm/constants/fieldInference.js +57 -0
  81. package/dist/esm/constants/publishModes.js +18 -0
  82. package/dist/esm/constants/validationErrorTypes.js +6 -0
  83. package/dist/esm/formats/formats.js +83 -0
  84. package/dist/esm/formats/frontmatter.js +146 -0
  85. package/dist/esm/formats/helpers.js +12 -0
  86. package/dist/esm/formats/json.js +8 -0
  87. package/dist/esm/formats/toml.js +32 -0
  88. package/dist/esm/formats/yaml.js +51 -0
  89. package/dist/esm/index.js +7 -0
  90. package/dist/esm/integrations/index.js +28 -0
  91. package/dist/esm/integrations/providers/algolia/implementation.js +174 -0
  92. package/dist/esm/integrations/providers/assetStore/implementation.js +165 -0
  93. package/dist/esm/lib/consoleError.js +3 -0
  94. package/dist/esm/lib/formatters.js +191 -0
  95. package/dist/esm/lib/i18n.js +367 -0
  96. package/dist/esm/lib/phrases.js +6 -0
  97. package/dist/esm/lib/polyfill.js +8 -0
  98. package/dist/esm/lib/registry.js +329 -0
  99. package/dist/esm/lib/serializeEntryValues.js +67 -0
  100. package/dist/esm/lib/stega.js +142 -0
  101. package/dist/esm/lib/textHelper.js +9 -0
  102. package/dist/esm/lib/urlHelper.js +111 -0
  103. package/dist/esm/mediaLibrary.js +37 -0
  104. package/dist/esm/reducers/auth.js +27 -0
  105. package/dist/esm/reducers/collections.js +428 -0
  106. package/dist/esm/reducers/combinedReducer.js +8 -0
  107. package/dist/esm/reducers/config.js +29 -0
  108. package/dist/esm/reducers/cursors.js +31 -0
  109. package/dist/esm/reducers/deploys.js +45 -0
  110. package/dist/esm/reducers/editorialWorkflow.js +83 -0
  111. package/dist/esm/reducers/entries.js +568 -0
  112. package/dist/esm/reducers/entryDraft.js +212 -0
  113. package/dist/esm/reducers/globalUI.js +25 -0
  114. package/dist/esm/reducers/index.js +66 -0
  115. package/dist/esm/reducers/integrations.js +53 -0
  116. package/dist/esm/reducers/mediaLibrary.js +252 -0
  117. package/dist/esm/reducers/medias.js +68 -0
  118. package/dist/esm/reducers/notifications.js +23 -0
  119. package/dist/esm/reducers/search.js +92 -0
  120. package/dist/esm/reducers/status.js +30 -0
  121. package/dist/esm/redux/index.js +7 -0
  122. package/dist/esm/redux/middleware/waitUntilAction.js +48 -0
  123. package/dist/esm/routing/history.js +12 -0
  124. package/dist/esm/types/diacritics.d.js +0 -0
  125. package/dist/esm/types/global.d.js +1 -0
  126. package/dist/esm/types/immutable.js +7 -0
  127. package/dist/esm/types/redux.js +14 -0
  128. package/dist/esm/types/tomlify-j0.4.d.js +0 -0
  129. package/dist/esm/valueObjects/AssetProxy.js +44 -0
  130. package/dist/esm/valueObjects/EditorComponent.js +34 -0
  131. package/dist/esm/valueObjects/Entry.js +20 -0
  132. package/index.d.ts +618 -0
  133. package/package.json +106 -0
  134. package/src/__tests__/backend.spec.js +1161 -0
  135. package/src/actions/__tests__/config.spec.js +1009 -0
  136. package/src/actions/__tests__/editorialWorkflow.spec.js +216 -0
  137. package/src/actions/__tests__/entries.spec.js +596 -0
  138. package/src/actions/__tests__/media.spec.ts +171 -0
  139. package/src/actions/__tests__/mediaLibrary.spec.js +327 -0
  140. package/src/actions/__tests__/search.spec.js +209 -0
  141. package/src/actions/auth.ts +127 -0
  142. package/src/actions/collections.ts +18 -0
  143. package/src/actions/config.ts +565 -0
  144. package/src/actions/deploys.ts +104 -0
  145. package/src/actions/editorialWorkflow.ts +567 -0
  146. package/src/actions/entries.ts +1055 -0
  147. package/src/actions/media.ts +139 -0
  148. package/src/actions/mediaLibrary.ts +574 -0
  149. package/src/actions/notifications.ts +36 -0
  150. package/src/actions/search.ts +221 -0
  151. package/src/actions/status.ts +99 -0
  152. package/src/actions/waitUntil.ts +49 -0
  153. package/src/backend.ts +1400 -0
  154. package/src/bootstrap.js +104 -0
  155. package/src/components/App/App.js +286 -0
  156. package/src/components/App/Header.js +266 -0
  157. package/src/components/App/NotFoundPage.js +23 -0
  158. package/src/components/Collection/Collection.js +210 -0
  159. package/src/components/Collection/CollectionControls.js +58 -0
  160. package/src/components/Collection/CollectionSearch.js +243 -0
  161. package/src/components/Collection/CollectionTop.js +81 -0
  162. package/src/components/Collection/ControlButton.js +27 -0
  163. package/src/components/Collection/Entries/Entries.js +82 -0
  164. package/src/components/Collection/Entries/EntriesCollection.js +277 -0
  165. package/src/components/Collection/Entries/EntriesSearch.js +102 -0
  166. package/src/components/Collection/Entries/EntryCard.js +246 -0
  167. package/src/components/Collection/Entries/EntryListing.js +151 -0
  168. package/src/components/Collection/Entries/__tests__/EntriesCollection.spec.js +163 -0
  169. package/src/components/Collection/Entries/__tests__/__snapshots__/EntriesCollection.spec.js.snap +46 -0
  170. package/src/components/Collection/FilterControl.js +39 -0
  171. package/src/components/Collection/GroupControl.js +39 -0
  172. package/src/components/Collection/NestedCollection.js +330 -0
  173. package/src/components/Collection/Sidebar.js +136 -0
  174. package/src/components/Collection/SortControl.js +68 -0
  175. package/src/components/Collection/ViewStyleControl.js +50 -0
  176. package/src/components/Collection/__tests__/Collection.spec.js +75 -0
  177. package/src/components/Collection/__tests__/NestedCollection.spec.js +445 -0
  178. package/src/components/Collection/__tests__/Sidebar.spec.js +87 -0
  179. package/src/components/Collection/__tests__/__snapshots__/Collection.spec.js.snap +144 -0
  180. package/src/components/Collection/__tests__/__snapshots__/NestedCollection.spec.js.snap +550 -0
  181. package/src/components/Collection/__tests__/__snapshots__/Sidebar.spec.js.snap +312 -0
  182. package/src/components/Editor/Editor.js +497 -0
  183. package/src/components/Editor/EditorControlPane/EditorControl.js +452 -0
  184. package/src/components/Editor/EditorControlPane/EditorControlPane.js +269 -0
  185. package/src/components/Editor/EditorControlPane/Widget.js +384 -0
  186. package/src/components/Editor/EditorInterface.js +444 -0
  187. package/src/components/Editor/EditorPreviewPane/EditorPreview.js +40 -0
  188. package/src/components/Editor/EditorPreviewPane/EditorPreviewContent.js +74 -0
  189. package/src/components/Editor/EditorPreviewPane/EditorPreviewPane.js +333 -0
  190. package/src/components/Editor/EditorPreviewPane/PreviewHOC.js +33 -0
  191. package/src/components/Editor/EditorToolbar.js +691 -0
  192. package/src/components/Editor/__tests__/Editor.spec.js +221 -0
  193. package/src/components/Editor/__tests__/EditorToolbar.spec.js +120 -0
  194. package/src/components/Editor/__tests__/__snapshots__/Editor.spec.js.snap +45 -0
  195. package/src/components/Editor/__tests__/__snapshots__/EditorToolbar.spec.js.snap +4233 -0
  196. package/src/components/Editor/withWorkflow.js +61 -0
  197. package/src/components/EditorWidgets/Unknown/UnknownControl.js +17 -0
  198. package/src/components/EditorWidgets/Unknown/UnknownPreview.js +19 -0
  199. package/src/components/EditorWidgets/index.js +5 -0
  200. package/src/components/MediaLibrary/EmptyMessage.js +28 -0
  201. package/src/components/MediaLibrary/MediaLibrary.js +411 -0
  202. package/src/components/MediaLibrary/MediaLibraryButtons.js +136 -0
  203. package/src/components/MediaLibrary/MediaLibraryCard.js +128 -0
  204. package/src/components/MediaLibrary/MediaLibraryCardGrid.js +199 -0
  205. package/src/components/MediaLibrary/MediaLibraryHeader.js +48 -0
  206. package/src/components/MediaLibrary/MediaLibraryModal.js +200 -0
  207. package/src/components/MediaLibrary/MediaLibrarySearch.js +61 -0
  208. package/src/components/MediaLibrary/MediaLibraryTop.js +143 -0
  209. package/src/components/MediaLibrary/__tests__/MediaLibraryButtons.spec.js +45 -0
  210. package/src/components/MediaLibrary/__tests__/MediaLibraryCard.spec.js +49 -0
  211. package/src/components/MediaLibrary/__tests__/__snapshots__/MediaLibraryCard.spec.js.snap +264 -0
  212. package/src/components/UI/DragDrop.js +66 -0
  213. package/src/components/UI/ErrorBoundary.js +214 -0
  214. package/src/components/UI/FileUploadButton.js +24 -0
  215. package/src/components/UI/Modal.js +112 -0
  216. package/src/components/UI/Notifications.tsx +83 -0
  217. package/src/components/UI/SettingsDropdown.js +103 -0
  218. package/src/components/UI/__tests__/ErrorBoundary.spec.js +57 -0
  219. package/src/components/UI/index.js +6 -0
  220. package/src/components/Workflow/Workflow.js +169 -0
  221. package/src/components/Workflow/WorkflowCard.js +177 -0
  222. package/src/components/Workflow/WorkflowList.js +272 -0
  223. package/src/constants/__tests__/configSchema.spec.js +611 -0
  224. package/src/constants/collectionTypes.ts +2 -0
  225. package/src/constants/collectionViews.js +2 -0
  226. package/src/constants/commitProps.ts +2 -0
  227. package/src/constants/configSchema.js +441 -0
  228. package/src/constants/fieldInference.tsx +78 -0
  229. package/src/constants/publishModes.ts +22 -0
  230. package/src/constants/validationErrorTypes.js +6 -0
  231. package/src/formats/__tests__/formats.spec.js +87 -0
  232. package/src/formats/__tests__/frontmatter.spec.js +429 -0
  233. package/src/formats/__tests__/toml.spec.js +9 -0
  234. package/src/formats/__tests__/yaml.spec.js +162 -0
  235. package/src/formats/formats.ts +97 -0
  236. package/src/formats/frontmatter.ts +150 -0
  237. package/src/formats/helpers.ts +14 -0
  238. package/src/formats/json.ts +9 -0
  239. package/src/formats/toml.ts +33 -0
  240. package/src/formats/yaml.ts +58 -0
  241. package/src/index.js +8 -0
  242. package/src/integrations/index.js +35 -0
  243. package/src/integrations/providers/algolia/implementation.js +176 -0
  244. package/src/integrations/providers/assetStore/implementation.js +148 -0
  245. package/src/lib/__tests__/formatters.spec.js +751 -0
  246. package/src/lib/__tests__/i18n.spec.js +792 -0
  247. package/src/lib/__tests__/phrases.spec.js +119 -0
  248. package/src/lib/__tests__/registry.spec.js +261 -0
  249. package/src/lib/__tests__/serializeEntryValues.spec.js +22 -0
  250. package/src/lib/__tests__/urlHelper.spec.js +138 -0
  251. package/src/lib/consoleError.js +7 -0
  252. package/src/lib/formatters.ts +286 -0
  253. package/src/lib/i18n.ts +454 -0
  254. package/src/lib/phrases.js +8 -0
  255. package/src/lib/polyfill.js +9 -0
  256. package/src/lib/registry.js +312 -0
  257. package/src/lib/serializeEntryValues.js +75 -0
  258. package/src/lib/stega.ts +145 -0
  259. package/src/lib/textHelper.js +11 -0
  260. package/src/lib/urlHelper.ts +128 -0
  261. package/src/mediaLibrary.ts +51 -0
  262. package/src/reducers/__tests__/auth.spec.ts +38 -0
  263. package/src/reducers/__tests__/collections.spec.js +610 -0
  264. package/src/reducers/__tests__/config.spec.js +38 -0
  265. package/src/reducers/__tests__/entries.spec.js +694 -0
  266. package/src/reducers/__tests__/entryDraft.spec.js +297 -0
  267. package/src/reducers/__tests__/globalUI.js +43 -0
  268. package/src/reducers/__tests__/integrations.spec.ts +76 -0
  269. package/src/reducers/__tests__/mediaLibrary.spec.js +154 -0
  270. package/src/reducers/__tests__/medias.spec.ts +49 -0
  271. package/src/reducers/auth.ts +46 -0
  272. package/src/reducers/collections.ts +535 -0
  273. package/src/reducers/combinedReducer.ts +11 -0
  274. package/src/reducers/config.ts +38 -0
  275. package/src/reducers/cursors.js +36 -0
  276. package/src/reducers/deploys.ts +52 -0
  277. package/src/reducers/editorialWorkflow.ts +163 -0
  278. package/src/reducers/entries.ts +819 -0
  279. package/src/reducers/entryDraft.js +260 -0
  280. package/src/reducers/globalUI.ts +45 -0
  281. package/src/reducers/index.ts +82 -0
  282. package/src/reducers/integrations.ts +59 -0
  283. package/src/reducers/mediaLibrary.ts +296 -0
  284. package/src/reducers/medias.ts +66 -0
  285. package/src/reducers/notifications.ts +52 -0
  286. package/src/reducers/search.ts +111 -0
  287. package/src/reducers/status.ts +40 -0
  288. package/src/redux/index.ts +18 -0
  289. package/src/redux/middleware/waitUntilAction.ts +64 -0
  290. package/src/routing/__tests__/history.spec.ts +49 -0
  291. package/src/routing/history.ts +17 -0
  292. package/src/types/diacritics.d.ts +1 -0
  293. package/src/types/global.d.ts +8 -0
  294. package/src/types/immutable.ts +49 -0
  295. package/src/types/redux.ts +827 -0
  296. package/src/types/tomlify-j0.4.d.ts +13 -0
  297. package/src/valueObjects/AssetProxy.ts +48 -0
  298. package/src/valueObjects/EditorComponent.js +38 -0
  299. package/src/valueObjects/Entry.ts +63 -0
@@ -0,0 +1,22 @@
1
+ import _styled from "@emotion/styled/base";
2
+ import React from 'react';
3
+ import PropTypes from 'prop-types';
4
+ import { colors } from 'decap-cms-ui-default';
5
+ import { jsx as ___EmotionJSX } from "@emotion/react";
6
+ const EmptyMessageContainer = /*#__PURE__*/_styled("div", {
7
+ target: "e1c5jk640",
8
+ label: "EmptyMessageContainer"
9
+ })("height:100%;width:100%;display:flex;justify-content:center;align-items:center;color:", props => props.isPrivate && colors.textFieldBorder, ";" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL01lZGlhTGlicmFyeS9FbXB0eU1lc3NhZ2UuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBS3dDIiwiZmlsZSI6Ii4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL01lZGlhTGlicmFyeS9FbXB0eU1lc3NhZ2UuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCBzdHlsZWQgZnJvbSAnQGVtb3Rpb24vc3R5bGVkJztcbmltcG9ydCB7IGNvbG9ycyB9IGZyb20gJ2RlY2FwLWNtcy11aS1kZWZhdWx0JztcblxuY29uc3QgRW1wdHlNZXNzYWdlQ29udGFpbmVyID0gc3R5bGVkLmRpdmBcbiAgaGVpZ2h0OiAxMDAlO1xuICB3aWR0aDogMTAwJTtcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGNvbG9yOiAke3Byb3BzID0+IHByb3BzLmlzUHJpdmF0ZSAmJiBjb2xvcnMudGV4dEZpZWxkQm9yZGVyfTtcbmA7XG5cbmZ1bmN0aW9uIEVtcHR5TWVzc2FnZSh7IGNvbnRlbnQsIGlzUHJpdmF0ZSB9KSB7XG4gIHJldHVybiAoXG4gICAgPEVtcHR5TWVzc2FnZUNvbnRhaW5lciBpc1ByaXZhdGU9e2lzUHJpdmF0ZX0+XG4gICAgICA8aDE+e2NvbnRlbnR9PC9oMT5cbiAgICA8L0VtcHR5TWVzc2FnZUNvbnRhaW5lcj5cbiAgKTtcbn1cblxuRW1wdHlNZXNzYWdlLnByb3BUeXBlcyA9IHtcbiAgY29udGVudDogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICBpc1ByaXZhdGU6IFByb3BUeXBlcy5ib29sLFxufTtcblxuZXhwb3J0IGRlZmF1bHQgRW1wdHlNZXNzYWdlO1xuIl19 */"));
10
+ function EmptyMessage({
11
+ content,
12
+ isPrivate
13
+ }) {
14
+ return ___EmotionJSX(EmptyMessageContainer, {
15
+ isPrivate: isPrivate
16
+ }, ___EmotionJSX("h1", null, content));
17
+ }
18
+ EmptyMessage.propTypes = {
19
+ content: PropTypes.string.isRequired,
20
+ isPrivate: PropTypes.bool
21
+ };
22
+ export default EmptyMessage;
@@ -0,0 +1,446 @@
1
+ import React from 'react';
2
+ import PropTypes from 'prop-types';
3
+ import ImmutablePropTypes from 'react-immutable-proptypes';
4
+ import { connect } from 'react-redux';
5
+ import orderBy from 'lodash/orderBy';
6
+ import map from 'lodash/map';
7
+ import { translate } from 'react-polyglot';
8
+ import fuzzy from 'fuzzy';
9
+ import { fileExtension } from 'decap-cms-lib-util';
10
+ import { loadMedia as loadMediaAction, persistMedia as persistMediaAction, deleteMedia as deleteMediaAction, insertMedia as insertMediaAction, loadMediaDisplayURL as loadMediaDisplayURLAction, closeMediaLibrary as closeMediaLibraryAction } from '../../actions/mediaLibrary';
11
+ import { selectMediaFiles } from '../../reducers/mediaLibrary';
12
+ import MediaLibraryModal, { fileShape } from './MediaLibraryModal';
13
+
14
+ /**
15
+ * Extensions used to determine which files to show when the media library is
16
+ * accessed from an image insertion field.
17
+ */
18
+ import { jsx as ___EmotionJSX } from "@emotion/react";
19
+ const IMAGE_EXTENSIONS_VIEWABLE = ['jpg', 'jpeg', 'webp', 'gif', 'png', 'bmp', 'tiff', 'svg', 'avif'];
20
+ const IMAGE_EXTENSIONS = [...IMAGE_EXTENSIONS_VIEWABLE];
21
+ class MediaLibrary extends React.Component {
22
+ static propTypes = {
23
+ isVisible: PropTypes.bool,
24
+ loadMediaDisplayURL: PropTypes.func,
25
+ displayURLs: ImmutablePropTypes.map,
26
+ canInsert: PropTypes.bool,
27
+ files: PropTypes.arrayOf(PropTypes.shape(fileShape)).isRequired,
28
+ dynamicSearch: PropTypes.bool,
29
+ dynamicSearchActive: PropTypes.bool,
30
+ forImage: PropTypes.bool,
31
+ isLoading: PropTypes.bool,
32
+ isPersisting: PropTypes.bool,
33
+ isDeleting: PropTypes.bool,
34
+ hasNextPage: PropTypes.bool,
35
+ isPaginating: PropTypes.bool,
36
+ privateUpload: PropTypes.bool,
37
+ config: ImmutablePropTypes.map,
38
+ loadMedia: PropTypes.func.isRequired,
39
+ dynamicSearchQuery: PropTypes.string,
40
+ page: PropTypes.number,
41
+ persistMedia: PropTypes.func.isRequired,
42
+ deleteMedia: PropTypes.func.isRequired,
43
+ insertMedia: PropTypes.func.isRequired,
44
+ closeMediaLibrary: PropTypes.func.isRequired,
45
+ t: PropTypes.func.isRequired
46
+ };
47
+ static defaultProps = {
48
+ files: []
49
+ };
50
+
51
+ /**
52
+ * The currently selected file and query are tracked in component state as
53
+ * they do not impact the rest of the application.
54
+ */
55
+ state = {
56
+ selectedFile: {},
57
+ query: '',
58
+ isPersisted: false
59
+ };
60
+ componentDidMount() {
61
+ // Manually validate PropTypes - React 19 breaking change
62
+ PropTypes.checkPropTypes(MediaLibrary.propTypes, this.props, 'prop', 'MediaLibrary');
63
+ this.props.loadMedia();
64
+ }
65
+ UNSAFE_componentWillReceiveProps(nextProps) {
66
+ /**
67
+ * We clear old state from the media library when it's being re-opened
68
+ * because, when doing so on close, the state is cleared while the media
69
+ * library is still fading away.
70
+ */
71
+ const isOpening = !this.props.isVisible && nextProps.isVisible;
72
+ if (isOpening) {
73
+ this.setState({
74
+ selectedFile: {},
75
+ query: ''
76
+ });
77
+ }
78
+ if (this.state.isPersisted) {
79
+ this.setState({
80
+ selectedFile: nextProps.files[0],
81
+ isPersisted: false
82
+ });
83
+ }
84
+ }
85
+ componentDidUpdate(prevProps) {
86
+ const isOpening = !prevProps.isVisible && this.props.isVisible;
87
+ if (isOpening && prevProps.privateUpload !== this.props.privateUpload) {
88
+ this.props.loadMedia({
89
+ privateUpload: this.props.privateUpload
90
+ });
91
+ }
92
+ if (this.state.isPersisted) {
93
+ this.setState({
94
+ selectedFile: this.props.files[0],
95
+ isPersisted: false
96
+ });
97
+ }
98
+ }
99
+ loadDisplayURL = file => {
100
+ const {
101
+ loadMediaDisplayURL
102
+ } = this.props;
103
+ loadMediaDisplayURL(file);
104
+ };
105
+
106
+ /**
107
+ * Filter an array of file data to include only images.
108
+ */
109
+ filterImages = files => {
110
+ return files.filter(file => {
111
+ const ext = fileExtension(file.name).toLowerCase();
112
+ return IMAGE_EXTENSIONS.includes(ext);
113
+ });
114
+ };
115
+
116
+ /**
117
+ * Transform file data for table display.
118
+ */
119
+ toTableData = files => {
120
+ const tableData = files && files.map(({
121
+ key,
122
+ name,
123
+ id,
124
+ size,
125
+ path,
126
+ queryOrder,
127
+ displayURL,
128
+ draft
129
+ }) => {
130
+ const ext = fileExtension(name).toLowerCase();
131
+ return {
132
+ key,
133
+ id,
134
+ name,
135
+ path,
136
+ type: ext.toUpperCase(),
137
+ size,
138
+ queryOrder,
139
+ displayURL,
140
+ draft,
141
+ isImage: IMAGE_EXTENSIONS.includes(ext),
142
+ isViewableImage: IMAGE_EXTENSIONS_VIEWABLE.includes(ext)
143
+ };
144
+ });
145
+
146
+ /**
147
+ * Get the sort order for use with `lodash.orderBy`, and always add the
148
+ * `queryOrder` sort as the lowest priority sort order.
149
+ */
150
+ const {
151
+ sortFields
152
+ } = this.state;
153
+ const fieldNames = map(sortFields, 'fieldName').concat('queryOrder');
154
+ const directions = map(sortFields, 'direction').concat('asc');
155
+ return orderBy(tableData, fieldNames, directions);
156
+ };
157
+ handleClose = () => {
158
+ this.props.closeMediaLibrary();
159
+ };
160
+
161
+ /**
162
+ * Toggle asset selection on click.
163
+ */
164
+ handleAssetClick = asset => {
165
+ const selectedFile = this.state.selectedFile.key === asset.key ? {} : asset;
166
+ this.setState({
167
+ selectedFile
168
+ });
169
+ };
170
+
171
+ /**
172
+ * Upload a file.
173
+ */
174
+ handlePersist = async event => {
175
+ /**
176
+ * Stop the browser from automatically handling the file input click, and
177
+ * get the file for upload, and retain the synthetic event for access after
178
+ * the asynchronous persist operation.
179
+ */
180
+ event.persist();
181
+ event.stopPropagation();
182
+ event.preventDefault();
183
+ const {
184
+ persistMedia,
185
+ privateUpload,
186
+ config,
187
+ t,
188
+ field
189
+ } = this.props;
190
+ const {
191
+ files: fileList
192
+ } = event.dataTransfer || event.target;
193
+ const files = [...fileList];
194
+ const file = files[0];
195
+ const maxFileSize = config.get('max_file_size');
196
+ if (maxFileSize && file.size > maxFileSize) {
197
+ window.alert(t('mediaLibrary.mediaLibrary.fileTooLarge', {
198
+ size: Math.floor(maxFileSize / 1000)
199
+ }));
200
+ } else {
201
+ await persistMedia(file, {
202
+ privateUpload,
203
+ field
204
+ });
205
+ this.setState({
206
+ isPersisted: true
207
+ });
208
+ this.scrollToTop();
209
+ }
210
+ event.target.value = null;
211
+ };
212
+
213
+ /**
214
+ * Stores the public path of the file in the application store, where the
215
+ * editor field that launched the media library can retrieve it.
216
+ */
217
+ handleInsert = () => {
218
+ const {
219
+ selectedFile
220
+ } = this.state;
221
+ const {
222
+ path
223
+ } = selectedFile;
224
+ const {
225
+ insertMedia,
226
+ field
227
+ } = this.props;
228
+ insertMedia(path, field);
229
+ this.handleClose();
230
+ };
231
+
232
+ /**
233
+ * Removes the selected file from the backend.
234
+ */
235
+ handleDelete = () => {
236
+ const {
237
+ selectedFile
238
+ } = this.state;
239
+ const {
240
+ files,
241
+ deleteMedia,
242
+ privateUpload,
243
+ t
244
+ } = this.props;
245
+ if (!window.confirm(t('mediaLibrary.mediaLibrary.onDelete'))) {
246
+ return;
247
+ }
248
+ const file = files.find(file => selectedFile.key === file.key);
249
+ deleteMedia(file, {
250
+ privateUpload
251
+ }).then(() => {
252
+ this.setState({
253
+ selectedFile: {}
254
+ });
255
+ });
256
+ };
257
+
258
+ /**
259
+ * Downloads the selected file.
260
+ */
261
+ handleDownload = () => {
262
+ const {
263
+ selectedFile
264
+ } = this.state;
265
+ const {
266
+ displayURLs
267
+ } = this.props;
268
+ const url = displayURLs.getIn([selectedFile.id, 'url']) || selectedFile.url;
269
+ if (!url) {
270
+ return;
271
+ }
272
+ const filename = selectedFile.name;
273
+ const element = document.createElement('a');
274
+ element.setAttribute('href', url);
275
+ element.setAttribute('download', filename);
276
+ element.style.display = 'none';
277
+ document.body.appendChild(element);
278
+ element.click();
279
+ document.body.removeChild(element);
280
+ this.setState({
281
+ selectedFile: {}
282
+ });
283
+ };
284
+
285
+ /**
286
+ *
287
+ */
288
+
289
+ handleLoadMore = () => {
290
+ const {
291
+ loadMedia,
292
+ dynamicSearchQuery,
293
+ page,
294
+ privateUpload
295
+ } = this.props;
296
+ loadMedia({
297
+ query: dynamicSearchQuery,
298
+ page: page + 1,
299
+ privateUpload
300
+ });
301
+ };
302
+
303
+ /**
304
+ * Executes media library search for implementations that support dynamic
305
+ * search via request. For these implementations, the Enter key must be
306
+ * pressed to execute search. If assets are being stored directly through
307
+ * the GitHub backend, search is in-memory and occurs as the query is typed,
308
+ * so this handler has no impact.
309
+ */
310
+ handleSearchKeyDown = async event => {
311
+ const {
312
+ dynamicSearch,
313
+ loadMedia,
314
+ privateUpload
315
+ } = this.props;
316
+ if (event.key === 'Enter' && dynamicSearch) {
317
+ await loadMedia({
318
+ query: this.state.query,
319
+ privateUpload
320
+ });
321
+ this.scrollToTop();
322
+ }
323
+ };
324
+ scrollToTop = () => {
325
+ this.scrollContainerRef.scrollTop = 0;
326
+ };
327
+
328
+ /**
329
+ * Updates query state as the user types in the search field.
330
+ */
331
+ handleSearchChange = event => {
332
+ this.setState({
333
+ query: event.target.value
334
+ });
335
+ };
336
+
337
+ /**
338
+ * Filters files that do not match the query. Not used for dynamic search.
339
+ */
340
+ queryFilter = (query, files) => {
341
+ /**
342
+ * Because file names don't have spaces, typing a space eliminates all
343
+ * potential matches, so we strip them all out internally before running the
344
+ * query.
345
+ */
346
+ const strippedQuery = query.replace(/ /g, '');
347
+ const matches = fuzzy.filter(strippedQuery, files, {
348
+ extract: file => file.name
349
+ });
350
+ const matchFiles = matches.map((match, queryIndex) => {
351
+ const file = files[match.index];
352
+ return {
353
+ ...file,
354
+ queryIndex
355
+ };
356
+ });
357
+ return matchFiles;
358
+ };
359
+ render() {
360
+ const {
361
+ isVisible,
362
+ canInsert,
363
+ files,
364
+ dynamicSearch,
365
+ dynamicSearchActive,
366
+ forImage,
367
+ isLoading,
368
+ isPersisting,
369
+ isDeleting,
370
+ hasNextPage,
371
+ isPaginating,
372
+ privateUpload,
373
+ displayURLs,
374
+ t
375
+ } = this.props;
376
+ return ___EmotionJSX(MediaLibraryModal, {
377
+ isVisible: isVisible,
378
+ canInsert: canInsert,
379
+ files: files,
380
+ dynamicSearch: dynamicSearch,
381
+ dynamicSearchActive: dynamicSearchActive,
382
+ forImage: forImage,
383
+ isLoading: isLoading,
384
+ isPersisting: isPersisting,
385
+ isDeleting: isDeleting,
386
+ hasNextPage: hasNextPage,
387
+ isPaginating: isPaginating,
388
+ privateUpload: privateUpload,
389
+ query: this.state.query,
390
+ selectedFile: this.state.selectedFile,
391
+ handleFilter: this.filterImages,
392
+ handleQuery: this.queryFilter,
393
+ toTableData: this.toTableData,
394
+ handleClose: this.handleClose,
395
+ handleSearchChange: this.handleSearchChange,
396
+ handleSearchKeyDown: this.handleSearchKeyDown,
397
+ handlePersist: this.handlePersist,
398
+ handleDelete: this.handleDelete,
399
+ handleInsert: this.handleInsert,
400
+ handleDownload: this.handleDownload,
401
+ setScrollContainerRef: ref => this.scrollContainerRef = ref,
402
+ handleAssetClick: this.handleAssetClick,
403
+ handleLoadMore: this.handleLoadMore,
404
+ displayURLs: displayURLs,
405
+ loadDisplayURL: this.loadDisplayURL,
406
+ t: t
407
+ });
408
+ }
409
+ }
410
+ function mapStateToProps(state) {
411
+ const {
412
+ mediaLibrary
413
+ } = state;
414
+ const field = mediaLibrary.get('field');
415
+ const mediaLibraryProps = {
416
+ isVisible: mediaLibrary.get('isVisible'),
417
+ canInsert: mediaLibrary.get('canInsert'),
418
+ files: selectMediaFiles(state, field),
419
+ displayURLs: mediaLibrary.get('displayURLs'),
420
+ dynamicSearch: mediaLibrary.get('dynamicSearch'),
421
+ dynamicSearchActive: mediaLibrary.get('dynamicSearchActive'),
422
+ dynamicSearchQuery: mediaLibrary.get('dynamicSearchQuery'),
423
+ forImage: mediaLibrary.get('forImage'),
424
+ isLoading: mediaLibrary.get('isLoading'),
425
+ isPersisting: mediaLibrary.get('isPersisting'),
426
+ isDeleting: mediaLibrary.get('isDeleting'),
427
+ privateUpload: mediaLibrary.get('privateUpload'),
428
+ config: mediaLibrary.get('config'),
429
+ page: mediaLibrary.get('page'),
430
+ hasNextPage: mediaLibrary.get('hasNextPage'),
431
+ isPaginating: mediaLibrary.get('isPaginating'),
432
+ field
433
+ };
434
+ return {
435
+ ...mediaLibraryProps
436
+ };
437
+ }
438
+ const mapDispatchToProps = {
439
+ loadMedia: loadMediaAction,
440
+ persistMedia: persistMediaAction,
441
+ deleteMedia: deleteMediaAction,
442
+ insertMedia: insertMediaAction,
443
+ loadMediaDisplayURL: loadMediaDisplayURLAction,
444
+ closeMediaLibrary: closeMediaLibraryAction
445
+ };
446
+ export default connect(mapStateToProps, mapDispatchToProps)(translate()(MediaLibrary));
@@ -0,0 +1,93 @@
1
+ import _styled from "@emotion/styled/base";
2
+ import React from 'react';
3
+ import PropTypes from 'prop-types';
4
+ import { css } from '@emotion/react';
5
+ import copyToClipboard from 'copy-text-to-clipboard';
6
+ import { isAbsolutePath } from 'decap-cms-lib-util';
7
+ import { buttons, shadows, zIndex } from 'decap-cms-ui-default';
8
+ import { FileUploadButton } from '../UI';
9
+ import { jsx as ___EmotionJSX } from "@emotion/react";
10
+ const styles = {
11
+ button: /*#__PURE__*/css(buttons.button, ";", buttons.default, ";display:inline-block;margin-left:15px;margin-right:2px;&[disabled]{", buttons.disabled, ";cursor:default;};label:button;" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL01lZGlhTGlicmFyeS9NZWRpYUxpYnJhcnlCdXR0b25zLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVdhIiwiZmlsZSI6Ii4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL01lZGlhTGlicmFyeS9NZWRpYUxpYnJhcnlCdXR0b25zLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgeyBjc3MgfSBmcm9tICdAZW1vdGlvbi9yZWFjdCc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCc7XG5pbXBvcnQgY29weVRvQ2xpcGJvYXJkIGZyb20gJ2NvcHktdGV4dC10by1jbGlwYm9hcmQnO1xuaW1wb3J0IHsgaXNBYnNvbHV0ZVBhdGggfSBmcm9tICdkZWNhcC1jbXMtbGliLXV0aWwnO1xuaW1wb3J0IHsgYnV0dG9ucywgc2hhZG93cywgekluZGV4IH0gZnJvbSAnZGVjYXAtY21zLXVpLWRlZmF1bHQnO1xuXG5pbXBvcnQgeyBGaWxlVXBsb2FkQnV0dG9uIH0gZnJvbSAnLi4vVUknO1xuXG5jb25zdCBzdHlsZXMgPSB7XG4gIGJ1dHRvbjogY3NzYFxuICAgICR7YnV0dG9ucy5idXR0b259O1xuICAgICR7YnV0dG9ucy5kZWZhdWx0fTtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgbWFyZ2luLWxlZnQ6IDE1cHg7XG4gICAgbWFyZ2luLXJpZ2h0OiAycHg7XG5cbiAgICAmW2Rpc2FibGVkXSB7XG4gICAgICAke2J1dHRvbnMuZGlzYWJsZWR9O1xuICAgICAgY3Vyc29yOiBkZWZhdWx0O1xuICAgIH1cbiAgYCxcbn07XG5cbmV4cG9ydCBjb25zdCBVcGxvYWRCdXR0b24gPSBzdHlsZWQoRmlsZVVwbG9hZEJ1dHRvbilgXG4gICR7c3R5bGVzLmJ1dHRvbn07XG4gICR7YnV0dG9ucy5ncmF5fTtcbiAgJHtzaGFkb3dzLmRyb3BNYWlufTtcbiAgbWFyZ2luLWJvdHRvbTogMDtcblxuICBzcGFuIHtcbiAgICBmb250LXNpemU6IDE0cHg7XG4gICAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIH1cblxuICBpbnB1dCB7XG4gICAgaGVpZ2h0OiAwLjFweDtcbiAgICB3aWR0aDogMC4xcHg7XG4gICAgbWFyZ2luOiAwO1xuICAgIHBhZGRpbmc6IDA7XG4gICAgb3BhY2l0eTogMDtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB6LWluZGV4OiAke3pJbmRleC56SW5kZXgwfTtcbiAgICBvdXRsaW5lOiBub25lO1xuICB9XG5gO1xuXG5leHBvcnQgY29uc3QgRGVsZXRlQnV0dG9uID0gc3R5bGVkLmJ1dHRvbmBcbiAgJHtzdHlsZXMuYnV0dG9ufTtcbiAgJHtidXR0b25zLmxpZ2h0UmVkfTtcbmA7XG5cbmV4cG9ydCBjb25zdCBJbnNlcnRCdXR0b24gPSBzdHlsZWQuYnV0dG9uYFxuICAke3N0eWxlcy5idXR0b259O1xuICAke2J1dHRvbnMuZ3JlZW59O1xuYDtcblxuY29uc3QgQWN0aW9uQnV0dG9uID0gc3R5bGVkLmJ1dHRvbmBcbiAgJHtzdHlsZXMuYnV0dG9ufTtcbiAgJHtwcm9wcyA9PlxuICAgICFwcm9wcy5kaXNhYmxlZCAmJlxuICAgIGNzc2BcbiAgICAgICR7YnV0dG9ucy5ncmF5fVxuICAgIGB9XG5gO1xuXG5leHBvcnQgY29uc3QgRG93bmxvYWRCdXR0b24gPSBBY3Rpb25CdXR0b247XG5cbmV4cG9ydCBjbGFzcyBDb3B5VG9DbGlwQm9hcmRCdXR0b24gZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xuICBtb3VudGVkID0gZmFsc2U7XG4gIHRpbWVvdXQ7XG5cbiAgc3RhdGUgPSB7XG4gICAgY29waWVkOiBmYWxzZSxcbiAgfTtcblxuICBjb21wb25lbnREaWRNb3VudCgpIHtcbiAgICB0aGlzLm1vdW50ZWQgPSB0cnVlO1xuICB9XG5cbiAgY29tcG9uZW50V2lsbFVubW91bnQoKSB7XG4gICAgdGhpcy5tb3VudGVkID0gZmFsc2U7XG4gIH1cblxuICBoYW5kbGVDb3B5ID0gKCkgPT4ge1xuICAgIGNsZWFyVGltZW91dCh0aGlzLnRpbWVvdXQpO1xuICAgIGNvbnN0IHsgcGF0aCwgZHJhZnQsIG5hbWUgfSA9IHRoaXMucHJvcHM7XG4gICAgY29weVRvQ2xpcGJvYXJkKGlzQWJzb2x1dGVQYXRoKHBhdGgpIHx8ICFkcmFmdCA/IHBhdGggOiBuYW1lKTtcbiAgICB0aGlzLnNldFN0YXRlKHsgY29waWVkOiB0cnVlIH0pO1xuICAgIHRoaXMudGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4gdGhpcy5tb3VudGVkICYmIHRoaXMuc2V0U3RhdGUoeyBjb3BpZWQ6IGZhbHNlIH0pLCAxNTAwKTtcbiAgfTtcblxuICBnZXRUaXRsZSA9ICgpID0+IHtcbiAgICBjb25zdCB7IHQsIHBhdGgsIGRyYWZ0IH0gPSB0aGlzLnByb3BzO1xuICAgIGlmICh0aGlzLnN0YXRlLmNvcGllZCkge1xuICAgICAgcmV0dXJuIHQoJ21lZGlhTGlicmFyeS5tZWRpYUxpYnJhcnlDYXJkLmNvcGllZCcpO1xuICAgIH1cblxuICAgIGlmICghcGF0aCkge1xuICAgICAgcmV0dXJuIHQoJ21lZGlhTGlicmFyeS5tZWRpYUxpYnJhcnlDYXJkLmNvcHknKTtcbiAgICB9XG5cbiAgICBpZiAoaXNBYnNvbHV0ZVBhdGgocGF0aCkpIHtcbiAgICAgIHJldHVybiB0KCdtZWRpYUxpYnJhcnkubWVkaWFMaWJyYXJ5Q2FyZC5jb3B5VXJsJyk7XG4gICAgfVxuXG4gICAgaWYgKGRyYWZ0KSB7XG4gICAgICByZXR1cm4gdCgnbWVkaWFMaWJyYXJ5Lm1lZGlhTGlicmFyeUNhcmQuY29weU5hbWUnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdCgnbWVkaWFMaWJyYXJ5Lm1lZGlhTGlicmFyeUNhcmQuY29weVBhdGgnKTtcbiAgfTtcblxuICByZW5kZXIoKSB7XG4gICAgY29uc3QgeyBkaXNhYmxlZCB9ID0gdGhpcy5wcm9wcztcblxuICAgIHJldHVybiAoXG4gICAgICA8QWN0aW9uQnV0dG9uIGRpc2FibGVkPXtkaXNhYmxlZH0gb25DbGljaz17dGhpcy5oYW5kbGVDb3B5fT5cbiAgICAgICAge3RoaXMuZ2V0VGl0bGUoKX1cbiAgICAgIDwvQWN0aW9uQnV0dG9uPlxuICAgICk7XG4gIH1cbn1cblxuQ29weVRvQ2xpcEJvYXJkQnV0dG9uLnByb3BUeXBlcyA9IHtcbiAgZGlzYWJsZWQ6IFByb3BUeXBlcy5ib29sLmlzUmVxdWlyZWQsXG4gIGRyYWZ0OiBQcm9wVHlwZXMuYm9vbCxcbiAgcGF0aDogUHJvcFR5cGVzLnN0cmluZyxcbiAgbmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgdDogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbn07XG4iXX0= */"))
12
+ };
13
+ export const UploadButton = /*#__PURE__*/_styled(FileUploadButton, {
14
+ target: "ewxvqon3",
15
+ label: "UploadButton"
16
+ })(styles.button, ";", buttons.gray, ";", shadows.dropMain, ";margin-bottom:0;span{font-size:14px;font-weight:500;display:flex;justify-content:center;align-items:center;}input{height:0.1px;width:0.1px;margin:0;padding:0;opacity:0;overflow:hidden;position:absolute;z-index:", zIndex.zIndex0, ";outline:none;}" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL01lZGlhTGlicmFyeS9NZWRpYUxpYnJhcnlCdXR0b25zLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQXlCb0QiLCJmaWxlIjoiLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvTWVkaWFMaWJyYXJ5L01lZGlhTGlicmFyeUJ1dHRvbnMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCB7IGNzcyB9IGZyb20gJ0BlbW90aW9uL3JlYWN0JztcbmltcG9ydCBzdHlsZWQgZnJvbSAnQGVtb3Rpb24vc3R5bGVkJztcbmltcG9ydCBjb3B5VG9DbGlwYm9hcmQgZnJvbSAnY29weS10ZXh0LXRvLWNsaXBib2FyZCc7XG5pbXBvcnQgeyBpc0Fic29sdXRlUGF0aCB9IGZyb20gJ2RlY2FwLWNtcy1saWItdXRpbCc7XG5pbXBvcnQgeyBidXR0b25zLCBzaGFkb3dzLCB6SW5kZXggfSBmcm9tICdkZWNhcC1jbXMtdWktZGVmYXVsdCc7XG5cbmltcG9ydCB7IEZpbGVVcGxvYWRCdXR0b24gfSBmcm9tICcuLi9VSSc7XG5cbmNvbnN0IHN0eWxlcyA9IHtcbiAgYnV0dG9uOiBjc3NgXG4gICAgJHtidXR0b25zLmJ1dHRvbn07XG4gICAgJHtidXR0b25zLmRlZmF1bHR9O1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICBtYXJnaW4tbGVmdDogMTVweDtcbiAgICBtYXJnaW4tcmlnaHQ6IDJweDtcblxuICAgICZbZGlzYWJsZWRdIHtcbiAgICAgICR7YnV0dG9ucy5kaXNhYmxlZH07XG4gICAgICBjdXJzb3I6IGRlZmF1bHQ7XG4gICAgfVxuICBgLFxufTtcblxuZXhwb3J0IGNvbnN0IFVwbG9hZEJ1dHRvbiA9IHN0eWxlZChGaWxlVXBsb2FkQnV0dG9uKWBcbiAgJHtzdHlsZXMuYnV0dG9ufTtcbiAgJHtidXR0b25zLmdyYXl9O1xuICAke3NoYWRvd3MuZHJvcE1haW59O1xuICBtYXJnaW4tYm90dG9tOiAwO1xuXG4gIHNwYW4ge1xuICAgIGZvbnQtc2l6ZTogMTRweDtcbiAgICBmb250LXdlaWdodDogNTAwO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgfVxuXG4gIGlucHV0IHtcbiAgICBoZWlnaHQ6IDAuMXB4O1xuICAgIHdpZHRoOiAwLjFweDtcbiAgICBtYXJnaW46IDA7XG4gICAgcGFkZGluZzogMDtcbiAgICBvcGFjaXR5OiAwO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHotaW5kZXg6ICR7ekluZGV4LnpJbmRleDB9O1xuICAgIG91dGxpbmU6IG5vbmU7XG4gIH1cbmA7XG5cbmV4cG9ydCBjb25zdCBEZWxldGVCdXR0b24gPSBzdHlsZWQuYnV0dG9uYFxuICAke3N0eWxlcy5idXR0b259O1xuICAke2J1dHRvbnMubGlnaHRSZWR9O1xuYDtcblxuZXhwb3J0IGNvbnN0IEluc2VydEJ1dHRvbiA9IHN0eWxlZC5idXR0b25gXG4gICR7c3R5bGVzLmJ1dHRvbn07XG4gICR7YnV0dG9ucy5ncmVlbn07XG5gO1xuXG5jb25zdCBBY3Rpb25CdXR0b24gPSBzdHlsZWQuYnV0dG9uYFxuICAke3N0eWxlcy5idXR0b259O1xuICAke3Byb3BzID0+XG4gICAgIXByb3BzLmRpc2FibGVkICYmXG4gICAgY3NzYFxuICAgICAgJHtidXR0b25zLmdyYXl9XG4gICAgYH1cbmA7XG5cbmV4cG9ydCBjb25zdCBEb3dubG9hZEJ1dHRvbiA9IEFjdGlvbkJ1dHRvbjtcblxuZXhwb3J0IGNsYXNzIENvcHlUb0NsaXBCb2FyZEJ1dHRvbiBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XG4gIG1vdW50ZWQgPSBmYWxzZTtcbiAgdGltZW91dDtcblxuICBzdGF0ZSA9IHtcbiAgICBjb3BpZWQ6IGZhbHNlLFxuICB9O1xuXG4gIGNvbXBvbmVudERpZE1vdW50KCkge1xuICAgIHRoaXMubW91bnRlZCA9IHRydWU7XG4gIH1cblxuICBjb21wb25lbnRXaWxsVW5tb3VudCgpIHtcbiAgICB0aGlzLm1vdW50ZWQgPSBmYWxzZTtcbiAgfVxuXG4gIGhhbmRsZUNvcHkgPSAoKSA9PiB7XG4gICAgY2xlYXJUaW1lb3V0KHRoaXMudGltZW91dCk7XG4gICAgY29uc3QgeyBwYXRoLCBkcmFmdCwgbmFtZSB9ID0gdGhpcy5wcm9wcztcbiAgICBjb3B5VG9DbGlwYm9hcmQoaXNBYnNvbHV0ZVBhdGgocGF0aCkgfHwgIWRyYWZ0ID8gcGF0aCA6IG5hbWUpO1xuICAgIHRoaXMuc2V0U3RhdGUoeyBjb3BpZWQ6IHRydWUgfSk7XG4gICAgdGhpcy50aW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB0aGlzLm1vdW50ZWQgJiYgdGhpcy5zZXRTdGF0ZSh7IGNvcGllZDogZmFsc2UgfSksIDE1MDApO1xuICB9O1xuXG4gIGdldFRpdGxlID0gKCkgPT4ge1xuICAgIGNvbnN0IHsgdCwgcGF0aCwgZHJhZnQgfSA9IHRoaXMucHJvcHM7XG4gICAgaWYgKHRoaXMuc3RhdGUuY29waWVkKSB7XG4gICAgICByZXR1cm4gdCgnbWVkaWFMaWJyYXJ5Lm1lZGlhTGlicmFyeUNhcmQuY29waWVkJyk7XG4gICAgfVxuXG4gICAgaWYgKCFwYXRoKSB7XG4gICAgICByZXR1cm4gdCgnbWVkaWFMaWJyYXJ5Lm1lZGlhTGlicmFyeUNhcmQuY29weScpO1xuICAgIH1cblxuICAgIGlmIChpc0Fic29sdXRlUGF0aChwYXRoKSkge1xuICAgICAgcmV0dXJuIHQoJ21lZGlhTGlicmFyeS5tZWRpYUxpYnJhcnlDYXJkLmNvcHlVcmwnKTtcbiAgICB9XG5cbiAgICBpZiAoZHJhZnQpIHtcbiAgICAgIHJldHVybiB0KCdtZWRpYUxpYnJhcnkubWVkaWFMaWJyYXJ5Q2FyZC5jb3B5TmFtZScpO1xuICAgIH1cblxuICAgIHJldHVybiB0KCdtZWRpYUxpYnJhcnkubWVkaWFMaWJyYXJ5Q2FyZC5jb3B5UGF0aCcpO1xuICB9O1xuXG4gIHJlbmRlcigpIHtcbiAgICBjb25zdCB7IGRpc2FibGVkIH0gPSB0aGlzLnByb3BzO1xuXG4gICAgcmV0dXJuIChcbiAgICAgIDxBY3Rpb25CdXR0b24gZGlzYWJsZWQ9e2Rpc2FibGVkfSBvbkNsaWNrPXt0aGlzLmhhbmRsZUNvcHl9PlxuICAgICAgICB7dGhpcy5nZXRUaXRsZSgpfVxuICAgICAgPC9BY3Rpb25CdXR0b24+XG4gICAgKTtcbiAgfVxufVxuXG5Db3B5VG9DbGlwQm9hcmRCdXR0b24ucHJvcFR5cGVzID0ge1xuICBkaXNhYmxlZDogUHJvcFR5cGVzLmJvb2wuaXNSZXF1aXJlZCxcbiAgZHJhZnQ6IFByb3BUeXBlcy5ib29sLFxuICBwYXRoOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBuYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICB0OiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxufTtcbiJdfQ== */"));
17
+ export const DeleteButton = /*#__PURE__*/_styled("button", {
18
+ target: "ewxvqon2",
19
+ label: "DeleteButton"
20
+ })(styles.button, ";", buttons.lightRed, ";" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL01lZGlhTGlicmFyeS9NZWRpYUxpYnJhcnlCdXR0b25zLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQW9EeUMiLCJmaWxlIjoiLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvTWVkaWFMaWJyYXJ5L01lZGlhTGlicmFyeUJ1dHRvbnMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCB7IGNzcyB9IGZyb20gJ0BlbW90aW9uL3JlYWN0JztcbmltcG9ydCBzdHlsZWQgZnJvbSAnQGVtb3Rpb24vc3R5bGVkJztcbmltcG9ydCBjb3B5VG9DbGlwYm9hcmQgZnJvbSAnY29weS10ZXh0LXRvLWNsaXBib2FyZCc7XG5pbXBvcnQgeyBpc0Fic29sdXRlUGF0aCB9IGZyb20gJ2RlY2FwLWNtcy1saWItdXRpbCc7XG5pbXBvcnQgeyBidXR0b25zLCBzaGFkb3dzLCB6SW5kZXggfSBmcm9tICdkZWNhcC1jbXMtdWktZGVmYXVsdCc7XG5cbmltcG9ydCB7IEZpbGVVcGxvYWRCdXR0b24gfSBmcm9tICcuLi9VSSc7XG5cbmNvbnN0IHN0eWxlcyA9IHtcbiAgYnV0dG9uOiBjc3NgXG4gICAgJHtidXR0b25zLmJ1dHRvbn07XG4gICAgJHtidXR0b25zLmRlZmF1bHR9O1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICBtYXJnaW4tbGVmdDogMTVweDtcbiAgICBtYXJnaW4tcmlnaHQ6IDJweDtcblxuICAgICZbZGlzYWJsZWRdIHtcbiAgICAgICR7YnV0dG9ucy5kaXNhYmxlZH07XG4gICAgICBjdXJzb3I6IGRlZmF1bHQ7XG4gICAgfVxuICBgLFxufTtcblxuZXhwb3J0IGNvbnN0IFVwbG9hZEJ1dHRvbiA9IHN0eWxlZChGaWxlVXBsb2FkQnV0dG9uKWBcbiAgJHtzdHlsZXMuYnV0dG9ufTtcbiAgJHtidXR0b25zLmdyYXl9O1xuICAke3NoYWRvd3MuZHJvcE1haW59O1xuICBtYXJnaW4tYm90dG9tOiAwO1xuXG4gIHNwYW4ge1xuICAgIGZvbnQtc2l6ZTogMTRweDtcbiAgICBmb250LXdlaWdodDogNTAwO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgfVxuXG4gIGlucHV0IHtcbiAgICBoZWlnaHQ6IDAuMXB4O1xuICAgIHdpZHRoOiAwLjFweDtcbiAgICBtYXJnaW46IDA7XG4gICAgcGFkZGluZzogMDtcbiAgICBvcGFjaXR5OiAwO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHotaW5kZXg6ICR7ekluZGV4LnpJbmRleDB9O1xuICAgIG91dGxpbmU6IG5vbmU7XG4gIH1cbmA7XG5cbmV4cG9ydCBjb25zdCBEZWxldGVCdXR0b24gPSBzdHlsZWQuYnV0dG9uYFxuICAke3N0eWxlcy5idXR0b259O1xuICAke2J1dHRvbnMubGlnaHRSZWR9O1xuYDtcblxuZXhwb3J0IGNvbnN0IEluc2VydEJ1dHRvbiA9IHN0eWxlZC5idXR0b25gXG4gICR7c3R5bGVzLmJ1dHRvbn07XG4gICR7YnV0dG9ucy5ncmVlbn07XG5gO1xuXG5jb25zdCBBY3Rpb25CdXR0b24gPSBzdHlsZWQuYnV0dG9uYFxuICAke3N0eWxlcy5idXR0b259O1xuICAke3Byb3BzID0+XG4gICAgIXByb3BzLmRpc2FibGVkICYmXG4gICAgY3NzYFxuICAgICAgJHtidXR0b25zLmdyYXl9XG4gICAgYH1cbmA7XG5cbmV4cG9ydCBjb25zdCBEb3dubG9hZEJ1dHRvbiA9IEFjdGlvbkJ1dHRvbjtcblxuZXhwb3J0IGNsYXNzIENvcHlUb0NsaXBCb2FyZEJ1dHRvbiBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XG4gIG1vdW50ZWQgPSBmYWxzZTtcbiAgdGltZW91dDtcblxuICBzdGF0ZSA9IHtcbiAgICBjb3BpZWQ6IGZhbHNlLFxuICB9O1xuXG4gIGNvbXBvbmVudERpZE1vdW50KCkge1xuICAgIHRoaXMubW91bnRlZCA9IHRydWU7XG4gIH1cblxuICBjb21wb25lbnRXaWxsVW5tb3VudCgpIHtcbiAgICB0aGlzLm1vdW50ZWQgPSBmYWxzZTtcbiAgfVxuXG4gIGhhbmRsZUNvcHkgPSAoKSA9PiB7XG4gICAgY2xlYXJUaW1lb3V0KHRoaXMudGltZW91dCk7XG4gICAgY29uc3QgeyBwYXRoLCBkcmFmdCwgbmFtZSB9ID0gdGhpcy5wcm9wcztcbiAgICBjb3B5VG9DbGlwYm9hcmQoaXNBYnNvbHV0ZVBhdGgocGF0aCkgfHwgIWRyYWZ0ID8gcGF0aCA6IG5hbWUpO1xuICAgIHRoaXMuc2V0U3RhdGUoeyBjb3BpZWQ6IHRydWUgfSk7XG4gICAgdGhpcy50aW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB0aGlzLm1vdW50ZWQgJiYgdGhpcy5zZXRTdGF0ZSh7IGNvcGllZDogZmFsc2UgfSksIDE1MDApO1xuICB9O1xuXG4gIGdldFRpdGxlID0gKCkgPT4ge1xuICAgIGNvbnN0IHsgdCwgcGF0aCwgZHJhZnQgfSA9IHRoaXMucHJvcHM7XG4gICAgaWYgKHRoaXMuc3RhdGUuY29waWVkKSB7XG4gICAgICByZXR1cm4gdCgnbWVkaWFMaWJyYXJ5Lm1lZGlhTGlicmFyeUNhcmQuY29waWVkJyk7XG4gICAgfVxuXG4gICAgaWYgKCFwYXRoKSB7XG4gICAgICByZXR1cm4gdCgnbWVkaWFMaWJyYXJ5Lm1lZGlhTGlicmFyeUNhcmQuY29weScpO1xuICAgIH1cblxuICAgIGlmIChpc0Fic29sdXRlUGF0aChwYXRoKSkge1xuICAgICAgcmV0dXJuIHQoJ21lZGlhTGlicmFyeS5tZWRpYUxpYnJhcnlDYXJkLmNvcHlVcmwnKTtcbiAgICB9XG5cbiAgICBpZiAoZHJhZnQpIHtcbiAgICAgIHJldHVybiB0KCdtZWRpYUxpYnJhcnkubWVkaWFMaWJyYXJ5Q2FyZC5jb3B5TmFtZScpO1xuICAgIH1cblxuICAgIHJldHVybiB0KCdtZWRpYUxpYnJhcnkubWVkaWFMaWJyYXJ5Q2FyZC5jb3B5UGF0aCcpO1xuICB9O1xuXG4gIHJlbmRlcigpIHtcbiAgICBjb25zdCB7IGRpc2FibGVkIH0gPSB0aGlzLnByb3BzO1xuXG4gICAgcmV0dXJuIChcbiAgICAgIDxBY3Rpb25CdXR0b24gZGlzYWJsZWQ9e2Rpc2FibGVkfSBvbkNsaWNrPXt0aGlzLmhhbmRsZUNvcHl9PlxuICAgICAgICB7dGhpcy5nZXRUaXRsZSgpfVxuICAgICAgPC9BY3Rpb25CdXR0b24+XG4gICAgKTtcbiAgfVxufVxuXG5Db3B5VG9DbGlwQm9hcmRCdXR0b24ucHJvcFR5cGVzID0ge1xuICBkaXNhYmxlZDogUHJvcFR5cGVzLmJvb2wuaXNSZXF1aXJlZCxcbiAgZHJhZnQ6IFByb3BUeXBlcy5ib29sLFxuICBwYXRoOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBuYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICB0OiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxufTtcbiJdfQ== */"));
21
+ export const InsertButton = /*#__PURE__*/_styled("button", {
22
+ target: "ewxvqon1",
23
+ label: "InsertButton"
24
+ })(styles.button, ";", buttons.green, ";" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL01lZGlhTGlicmFyeS9NZWRpYUxpYnJhcnlCdXR0b25zLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQXlEeUMiLCJmaWxlIjoiLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvTWVkaWFMaWJyYXJ5L01lZGlhTGlicmFyeUJ1dHRvbnMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCB7IGNzcyB9IGZyb20gJ0BlbW90aW9uL3JlYWN0JztcbmltcG9ydCBzdHlsZWQgZnJvbSAnQGVtb3Rpb24vc3R5bGVkJztcbmltcG9ydCBjb3B5VG9DbGlwYm9hcmQgZnJvbSAnY29weS10ZXh0LXRvLWNsaXBib2FyZCc7XG5pbXBvcnQgeyBpc0Fic29sdXRlUGF0aCB9IGZyb20gJ2RlY2FwLWNtcy1saWItdXRpbCc7XG5pbXBvcnQgeyBidXR0b25zLCBzaGFkb3dzLCB6SW5kZXggfSBmcm9tICdkZWNhcC1jbXMtdWktZGVmYXVsdCc7XG5cbmltcG9ydCB7IEZpbGVVcGxvYWRCdXR0b24gfSBmcm9tICcuLi9VSSc7XG5cbmNvbnN0IHN0eWxlcyA9IHtcbiAgYnV0dG9uOiBjc3NgXG4gICAgJHtidXR0b25zLmJ1dHRvbn07XG4gICAgJHtidXR0b25zLmRlZmF1bHR9O1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICBtYXJnaW4tbGVmdDogMTVweDtcbiAgICBtYXJnaW4tcmlnaHQ6IDJweDtcblxuICAgICZbZGlzYWJsZWRdIHtcbiAgICAgICR7YnV0dG9ucy5kaXNhYmxlZH07XG4gICAgICBjdXJzb3I6IGRlZmF1bHQ7XG4gICAgfVxuICBgLFxufTtcblxuZXhwb3J0IGNvbnN0IFVwbG9hZEJ1dHRvbiA9IHN0eWxlZChGaWxlVXBsb2FkQnV0dG9uKWBcbiAgJHtzdHlsZXMuYnV0dG9ufTtcbiAgJHtidXR0b25zLmdyYXl9O1xuICAke3NoYWRvd3MuZHJvcE1haW59O1xuICBtYXJnaW4tYm90dG9tOiAwO1xuXG4gIHNwYW4ge1xuICAgIGZvbnQtc2l6ZTogMTRweDtcbiAgICBmb250LXdlaWdodDogNTAwO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgfVxuXG4gIGlucHV0IHtcbiAgICBoZWlnaHQ6IDAuMXB4O1xuICAgIHdpZHRoOiAwLjFweDtcbiAgICBtYXJnaW46IDA7XG4gICAgcGFkZGluZzogMDtcbiAgICBvcGFjaXR5OiAwO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHotaW5kZXg6ICR7ekluZGV4LnpJbmRleDB9O1xuICAgIG91dGxpbmU6IG5vbmU7XG4gIH1cbmA7XG5cbmV4cG9ydCBjb25zdCBEZWxldGVCdXR0b24gPSBzdHlsZWQuYnV0dG9uYFxuICAke3N0eWxlcy5idXR0b259O1xuICAke2J1dHRvbnMubGlnaHRSZWR9O1xuYDtcblxuZXhwb3J0IGNvbnN0IEluc2VydEJ1dHRvbiA9IHN0eWxlZC5idXR0b25gXG4gICR7c3R5bGVzLmJ1dHRvbn07XG4gICR7YnV0dG9ucy5ncmVlbn07XG5gO1xuXG5jb25zdCBBY3Rpb25CdXR0b24gPSBzdHlsZWQuYnV0dG9uYFxuICAke3N0eWxlcy5idXR0b259O1xuICAke3Byb3BzID0+XG4gICAgIXByb3BzLmRpc2FibGVkICYmXG4gICAgY3NzYFxuICAgICAgJHtidXR0b25zLmdyYXl9XG4gICAgYH1cbmA7XG5cbmV4cG9ydCBjb25zdCBEb3dubG9hZEJ1dHRvbiA9IEFjdGlvbkJ1dHRvbjtcblxuZXhwb3J0IGNsYXNzIENvcHlUb0NsaXBCb2FyZEJ1dHRvbiBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XG4gIG1vdW50ZWQgPSBmYWxzZTtcbiAgdGltZW91dDtcblxuICBzdGF0ZSA9IHtcbiAgICBjb3BpZWQ6IGZhbHNlLFxuICB9O1xuXG4gIGNvbXBvbmVudERpZE1vdW50KCkge1xuICAgIHRoaXMubW91bnRlZCA9IHRydWU7XG4gIH1cblxuICBjb21wb25lbnRXaWxsVW5tb3VudCgpIHtcbiAgICB0aGlzLm1vdW50ZWQgPSBmYWxzZTtcbiAgfVxuXG4gIGhhbmRsZUNvcHkgPSAoKSA9PiB7XG4gICAgY2xlYXJUaW1lb3V0KHRoaXMudGltZW91dCk7XG4gICAgY29uc3QgeyBwYXRoLCBkcmFmdCwgbmFtZSB9ID0gdGhpcy5wcm9wcztcbiAgICBjb3B5VG9DbGlwYm9hcmQoaXNBYnNvbHV0ZVBhdGgocGF0aCkgfHwgIWRyYWZ0ID8gcGF0aCA6IG5hbWUpO1xuICAgIHRoaXMuc2V0U3RhdGUoeyBjb3BpZWQ6IHRydWUgfSk7XG4gICAgdGhpcy50aW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB0aGlzLm1vdW50ZWQgJiYgdGhpcy5zZXRTdGF0ZSh7IGNvcGllZDogZmFsc2UgfSksIDE1MDApO1xuICB9O1xuXG4gIGdldFRpdGxlID0gKCkgPT4ge1xuICAgIGNvbnN0IHsgdCwgcGF0aCwgZHJhZnQgfSA9IHRoaXMucHJvcHM7XG4gICAgaWYgKHRoaXMuc3RhdGUuY29waWVkKSB7XG4gICAgICByZXR1cm4gdCgnbWVkaWFMaWJyYXJ5Lm1lZGlhTGlicmFyeUNhcmQuY29waWVkJyk7XG4gICAgfVxuXG4gICAgaWYgKCFwYXRoKSB7XG4gICAgICByZXR1cm4gdCgnbWVkaWFMaWJyYXJ5Lm1lZGlhTGlicmFyeUNhcmQuY29weScpO1xuICAgIH1cblxuICAgIGlmIChpc0Fic29sdXRlUGF0aChwYXRoKSkge1xuICAgICAgcmV0dXJuIHQoJ21lZGlhTGlicmFyeS5tZWRpYUxpYnJhcnlDYXJkLmNvcHlVcmwnKTtcbiAgICB9XG5cbiAgICBpZiAoZHJhZnQpIHtcbiAgICAgIHJldHVybiB0KCdtZWRpYUxpYnJhcnkubWVkaWFMaWJyYXJ5Q2FyZC5jb3B5TmFtZScpO1xuICAgIH1cblxuICAgIHJldHVybiB0KCdtZWRpYUxpYnJhcnkubWVkaWFMaWJyYXJ5Q2FyZC5jb3B5UGF0aCcpO1xuICB9O1xuXG4gIHJlbmRlcigpIHtcbiAgICBjb25zdCB7IGRpc2FibGVkIH0gPSB0aGlzLnByb3BzO1xuXG4gICAgcmV0dXJuIChcbiAgICAgIDxBY3Rpb25CdXR0b24gZGlzYWJsZWQ9e2Rpc2FibGVkfSBvbkNsaWNrPXt0aGlzLmhhbmRsZUNvcHl9PlxuICAgICAgICB7dGhpcy5nZXRUaXRsZSgpfVxuICAgICAgPC9BY3Rpb25CdXR0b24+XG4gICAgKTtcbiAgfVxufVxuXG5Db3B5VG9DbGlwQm9hcmRCdXR0b24ucHJvcFR5cGVzID0ge1xuICBkaXNhYmxlZDogUHJvcFR5cGVzLmJvb2wuaXNSZXF1aXJlZCxcbiAgZHJhZnQ6IFByb3BUeXBlcy5ib29sLFxuICBwYXRoOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBuYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICB0OiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxufTtcbiJdfQ== */"));
25
+ const ActionButton = /*#__PURE__*/_styled("button", {
26
+ target: "ewxvqon0",
27
+ label: "ActionButton"
28
+ })(styles.button, ";", props => !props.disabled && /*#__PURE__*/css(buttons.gray, ";;label:ActionButton;" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL01lZGlhTGlicmFyeS9NZWRpYUxpYnJhcnlCdXR0b25zLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWtFTyIsImZpbGUiOiIuLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9NZWRpYUxpYnJhcnkvTWVkaWFMaWJyYXJ5QnV0dG9ucy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IHsgY3NzIH0gZnJvbSAnQGVtb3Rpb24vcmVhY3QnO1xuaW1wb3J0IHN0eWxlZCBmcm9tICdAZW1vdGlvbi9zdHlsZWQnO1xuaW1wb3J0IGNvcHlUb0NsaXBib2FyZCBmcm9tICdjb3B5LXRleHQtdG8tY2xpcGJvYXJkJztcbmltcG9ydCB7IGlzQWJzb2x1dGVQYXRoIH0gZnJvbSAnZGVjYXAtY21zLWxpYi11dGlsJztcbmltcG9ydCB7IGJ1dHRvbnMsIHNoYWRvd3MsIHpJbmRleCB9IGZyb20gJ2RlY2FwLWNtcy11aS1kZWZhdWx0JztcblxuaW1wb3J0IHsgRmlsZVVwbG9hZEJ1dHRvbiB9IGZyb20gJy4uL1VJJztcblxuY29uc3Qgc3R5bGVzID0ge1xuICBidXR0b246IGNzc2BcbiAgICAke2J1dHRvbnMuYnV0dG9ufTtcbiAgICAke2J1dHRvbnMuZGVmYXVsdH07XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIG1hcmdpbi1sZWZ0OiAxNXB4O1xuICAgIG1hcmdpbi1yaWdodDogMnB4O1xuXG4gICAgJltkaXNhYmxlZF0ge1xuICAgICAgJHtidXR0b25zLmRpc2FibGVkfTtcbiAgICAgIGN1cnNvcjogZGVmYXVsdDtcbiAgICB9XG4gIGAsXG59O1xuXG5leHBvcnQgY29uc3QgVXBsb2FkQnV0dG9uID0gc3R5bGVkKEZpbGVVcGxvYWRCdXR0b24pYFxuICAke3N0eWxlcy5idXR0b259O1xuICAke2J1dHRvbnMuZ3JheX07XG4gICR7c2hhZG93cy5kcm9wTWFpbn07XG4gIG1hcmdpbi1ib3R0b206IDA7XG5cbiAgc3BhbiB7XG4gICAgZm9udC1zaXplOiAxNHB4O1xuICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICB9XG5cbiAgaW5wdXQge1xuICAgIGhlaWdodDogMC4xcHg7XG4gICAgd2lkdGg6IDAuMXB4O1xuICAgIG1hcmdpbjogMDtcbiAgICBwYWRkaW5nOiAwO1xuICAgIG9wYWNpdHk6IDA7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgei1pbmRleDogJHt6SW5kZXguekluZGV4MH07XG4gICAgb3V0bGluZTogbm9uZTtcbiAgfVxuYDtcblxuZXhwb3J0IGNvbnN0IERlbGV0ZUJ1dHRvbiA9IHN0eWxlZC5idXR0b25gXG4gICR7c3R5bGVzLmJ1dHRvbn07XG4gICR7YnV0dG9ucy5saWdodFJlZH07XG5gO1xuXG5leHBvcnQgY29uc3QgSW5zZXJ0QnV0dG9uID0gc3R5bGVkLmJ1dHRvbmBcbiAgJHtzdHlsZXMuYnV0dG9ufTtcbiAgJHtidXR0b25zLmdyZWVufTtcbmA7XG5cbmNvbnN0IEFjdGlvbkJ1dHRvbiA9IHN0eWxlZC5idXR0b25gXG4gICR7c3R5bGVzLmJ1dHRvbn07XG4gICR7cHJvcHMgPT5cbiAgICAhcHJvcHMuZGlzYWJsZWQgJiZcbiAgICBjc3NgXG4gICAgICAke2J1dHRvbnMuZ3JheX1cbiAgICBgfVxuYDtcblxuZXhwb3J0IGNvbnN0IERvd25sb2FkQnV0dG9uID0gQWN0aW9uQnV0dG9uO1xuXG5leHBvcnQgY2xhc3MgQ29weVRvQ2xpcEJvYXJkQnV0dG9uIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcbiAgbW91bnRlZCA9IGZhbHNlO1xuICB0aW1lb3V0O1xuXG4gIHN0YXRlID0ge1xuICAgIGNvcGllZDogZmFsc2UsXG4gIH07XG5cbiAgY29tcG9uZW50RGlkTW91bnQoKSB7XG4gICAgdGhpcy5tb3VudGVkID0gdHJ1ZTtcbiAgfVxuXG4gIGNvbXBvbmVudFdpbGxVbm1vdW50KCkge1xuICAgIHRoaXMubW91bnRlZCA9IGZhbHNlO1xuICB9XG5cbiAgaGFuZGxlQ29weSA9ICgpID0+IHtcbiAgICBjbGVhclRpbWVvdXQodGhpcy50aW1lb3V0KTtcbiAgICBjb25zdCB7IHBhdGgsIGRyYWZ0LCBuYW1lIH0gPSB0aGlzLnByb3BzO1xuICAgIGNvcHlUb0NsaXBib2FyZChpc0Fic29sdXRlUGF0aChwYXRoKSB8fCAhZHJhZnQgPyBwYXRoIDogbmFtZSk7XG4gICAgdGhpcy5zZXRTdGF0ZSh7IGNvcGllZDogdHJ1ZSB9KTtcbiAgICB0aGlzLnRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHRoaXMubW91bnRlZCAmJiB0aGlzLnNldFN0YXRlKHsgY29waWVkOiBmYWxzZSB9KSwgMTUwMCk7XG4gIH07XG5cbiAgZ2V0VGl0bGUgPSAoKSA9PiB7XG4gICAgY29uc3QgeyB0LCBwYXRoLCBkcmFmdCB9ID0gdGhpcy5wcm9wcztcbiAgICBpZiAodGhpcy5zdGF0ZS5jb3BpZWQpIHtcbiAgICAgIHJldHVybiB0KCdtZWRpYUxpYnJhcnkubWVkaWFMaWJyYXJ5Q2FyZC5jb3BpZWQnKTtcbiAgICB9XG5cbiAgICBpZiAoIXBhdGgpIHtcbiAgICAgIHJldHVybiB0KCdtZWRpYUxpYnJhcnkubWVkaWFMaWJyYXJ5Q2FyZC5jb3B5Jyk7XG4gICAgfVxuXG4gICAgaWYgKGlzQWJzb2x1dGVQYXRoKHBhdGgpKSB7XG4gICAgICByZXR1cm4gdCgnbWVkaWFMaWJyYXJ5Lm1lZGlhTGlicmFyeUNhcmQuY29weVVybCcpO1xuICAgIH1cblxuICAgIGlmIChkcmFmdCkge1xuICAgICAgcmV0dXJuIHQoJ21lZGlhTGlicmFyeS5tZWRpYUxpYnJhcnlDYXJkLmNvcHlOYW1lJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHQoJ21lZGlhTGlicmFyeS5tZWRpYUxpYnJhcnlDYXJkLmNvcHlQYXRoJyk7XG4gIH07XG5cbiAgcmVuZGVyKCkge1xuICAgIGNvbnN0IHsgZGlzYWJsZWQgfSA9IHRoaXMucHJvcHM7XG5cbiAgICByZXR1cm4gKFxuICAgICAgPEFjdGlvbkJ1dHRvbiBkaXNhYmxlZD17ZGlzYWJsZWR9IG9uQ2xpY2s9e3RoaXMuaGFuZGxlQ29weX0+XG4gICAgICAgIHt0aGlzLmdldFRpdGxlKCl9XG4gICAgICA8L0FjdGlvbkJ1dHRvbj5cbiAgICApO1xuICB9XG59XG5cbkNvcHlUb0NsaXBCb2FyZEJ1dHRvbi5wcm9wVHlwZXMgPSB7XG4gIGRpc2FibGVkOiBQcm9wVHlwZXMuYm9vbC5pc1JlcXVpcmVkLFxuICBkcmFmdDogUHJvcFR5cGVzLmJvb2wsXG4gIHBhdGg6IFByb3BUeXBlcy5zdHJpbmcsXG4gIG5hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIHQ6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG59O1xuIl19 */")), ";" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL01lZGlhTGlicmFyeS9NZWRpYUxpYnJhcnlCdXR0b25zLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQThEa0MiLCJmaWxlIjoiLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvTWVkaWFMaWJyYXJ5L01lZGlhTGlicmFyeUJ1dHRvbnMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCB7IGNzcyB9IGZyb20gJ0BlbW90aW9uL3JlYWN0JztcbmltcG9ydCBzdHlsZWQgZnJvbSAnQGVtb3Rpb24vc3R5bGVkJztcbmltcG9ydCBjb3B5VG9DbGlwYm9hcmQgZnJvbSAnY29weS10ZXh0LXRvLWNsaXBib2FyZCc7XG5pbXBvcnQgeyBpc0Fic29sdXRlUGF0aCB9IGZyb20gJ2RlY2FwLWNtcy1saWItdXRpbCc7XG5pbXBvcnQgeyBidXR0b25zLCBzaGFkb3dzLCB6SW5kZXggfSBmcm9tICdkZWNhcC1jbXMtdWktZGVmYXVsdCc7XG5cbmltcG9ydCB7IEZpbGVVcGxvYWRCdXR0b24gfSBmcm9tICcuLi9VSSc7XG5cbmNvbnN0IHN0eWxlcyA9IHtcbiAgYnV0dG9uOiBjc3NgXG4gICAgJHtidXR0b25zLmJ1dHRvbn07XG4gICAgJHtidXR0b25zLmRlZmF1bHR9O1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICBtYXJnaW4tbGVmdDogMTVweDtcbiAgICBtYXJnaW4tcmlnaHQ6IDJweDtcblxuICAgICZbZGlzYWJsZWRdIHtcbiAgICAgICR7YnV0dG9ucy5kaXNhYmxlZH07XG4gICAgICBjdXJzb3I6IGRlZmF1bHQ7XG4gICAgfVxuICBgLFxufTtcblxuZXhwb3J0IGNvbnN0IFVwbG9hZEJ1dHRvbiA9IHN0eWxlZChGaWxlVXBsb2FkQnV0dG9uKWBcbiAgJHtzdHlsZXMuYnV0dG9ufTtcbiAgJHtidXR0b25zLmdyYXl9O1xuICAke3NoYWRvd3MuZHJvcE1haW59O1xuICBtYXJnaW4tYm90dG9tOiAwO1xuXG4gIHNwYW4ge1xuICAgIGZvbnQtc2l6ZTogMTRweDtcbiAgICBmb250LXdlaWdodDogNTAwO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgfVxuXG4gIGlucHV0IHtcbiAgICBoZWlnaHQ6IDAuMXB4O1xuICAgIHdpZHRoOiAwLjFweDtcbiAgICBtYXJnaW46IDA7XG4gICAgcGFkZGluZzogMDtcbiAgICBvcGFjaXR5OiAwO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHotaW5kZXg6ICR7ekluZGV4LnpJbmRleDB9O1xuICAgIG91dGxpbmU6IG5vbmU7XG4gIH1cbmA7XG5cbmV4cG9ydCBjb25zdCBEZWxldGVCdXR0b24gPSBzdHlsZWQuYnV0dG9uYFxuICAke3N0eWxlcy5idXR0b259O1xuICAke2J1dHRvbnMubGlnaHRSZWR9O1xuYDtcblxuZXhwb3J0IGNvbnN0IEluc2VydEJ1dHRvbiA9IHN0eWxlZC5idXR0b25gXG4gICR7c3R5bGVzLmJ1dHRvbn07XG4gICR7YnV0dG9ucy5ncmVlbn07XG5gO1xuXG5jb25zdCBBY3Rpb25CdXR0b24gPSBzdHlsZWQuYnV0dG9uYFxuICAke3N0eWxlcy5idXR0b259O1xuICAke3Byb3BzID0+XG4gICAgIXByb3BzLmRpc2FibGVkICYmXG4gICAgY3NzYFxuICAgICAgJHtidXR0b25zLmdyYXl9XG4gICAgYH1cbmA7XG5cbmV4cG9ydCBjb25zdCBEb3dubG9hZEJ1dHRvbiA9IEFjdGlvbkJ1dHRvbjtcblxuZXhwb3J0IGNsYXNzIENvcHlUb0NsaXBCb2FyZEJ1dHRvbiBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XG4gIG1vdW50ZWQgPSBmYWxzZTtcbiAgdGltZW91dDtcblxuICBzdGF0ZSA9IHtcbiAgICBjb3BpZWQ6IGZhbHNlLFxuICB9O1xuXG4gIGNvbXBvbmVudERpZE1vdW50KCkge1xuICAgIHRoaXMubW91bnRlZCA9IHRydWU7XG4gIH1cblxuICBjb21wb25lbnRXaWxsVW5tb3VudCgpIHtcbiAgICB0aGlzLm1vdW50ZWQgPSBmYWxzZTtcbiAgfVxuXG4gIGhhbmRsZUNvcHkgPSAoKSA9PiB7XG4gICAgY2xlYXJUaW1lb3V0KHRoaXMudGltZW91dCk7XG4gICAgY29uc3QgeyBwYXRoLCBkcmFmdCwgbmFtZSB9ID0gdGhpcy5wcm9wcztcbiAgICBjb3B5VG9DbGlwYm9hcmQoaXNBYnNvbHV0ZVBhdGgocGF0aCkgfHwgIWRyYWZ0ID8gcGF0aCA6IG5hbWUpO1xuICAgIHRoaXMuc2V0U3RhdGUoeyBjb3BpZWQ6IHRydWUgfSk7XG4gICAgdGhpcy50aW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB0aGlzLm1vdW50ZWQgJiYgdGhpcy5zZXRTdGF0ZSh7IGNvcGllZDogZmFsc2UgfSksIDE1MDApO1xuICB9O1xuXG4gIGdldFRpdGxlID0gKCkgPT4ge1xuICAgIGNvbnN0IHsgdCwgcGF0aCwgZHJhZnQgfSA9IHRoaXMucHJvcHM7XG4gICAgaWYgKHRoaXMuc3RhdGUuY29waWVkKSB7XG4gICAgICByZXR1cm4gdCgnbWVkaWFMaWJyYXJ5Lm1lZGlhTGlicmFyeUNhcmQuY29waWVkJyk7XG4gICAgfVxuXG4gICAgaWYgKCFwYXRoKSB7XG4gICAgICByZXR1cm4gdCgnbWVkaWFMaWJyYXJ5Lm1lZGlhTGlicmFyeUNhcmQuY29weScpO1xuICAgIH1cblxuICAgIGlmIChpc0Fic29sdXRlUGF0aChwYXRoKSkge1xuICAgICAgcmV0dXJuIHQoJ21lZGlhTGlicmFyeS5tZWRpYUxpYnJhcnlDYXJkLmNvcHlVcmwnKTtcbiAgICB9XG5cbiAgICBpZiAoZHJhZnQpIHtcbiAgICAgIHJldHVybiB0KCdtZWRpYUxpYnJhcnkubWVkaWFMaWJyYXJ5Q2FyZC5jb3B5TmFtZScpO1xuICAgIH1cblxuICAgIHJldHVybiB0KCdtZWRpYUxpYnJhcnkubWVkaWFMaWJyYXJ5Q2FyZC5jb3B5UGF0aCcpO1xuICB9O1xuXG4gIHJlbmRlcigpIHtcbiAgICBjb25zdCB7IGRpc2FibGVkIH0gPSB0aGlzLnByb3BzO1xuXG4gICAgcmV0dXJuIChcbiAgICAgIDxBY3Rpb25CdXR0b24gZGlzYWJsZWQ9e2Rpc2FibGVkfSBvbkNsaWNrPXt0aGlzLmhhbmRsZUNvcHl9PlxuICAgICAgICB7dGhpcy5nZXRUaXRsZSgpfVxuICAgICAgPC9BY3Rpb25CdXR0b24+XG4gICAgKTtcbiAgfVxufVxuXG5Db3B5VG9DbGlwQm9hcmRCdXR0b24ucHJvcFR5cGVzID0ge1xuICBkaXNhYmxlZDogUHJvcFR5cGVzLmJvb2wuaXNSZXF1aXJlZCxcbiAgZHJhZnQ6IFByb3BUeXBlcy5ib29sLFxuICBwYXRoOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBuYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICB0OiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxufTtcbiJdfQ== */"));
29
+ export const DownloadButton = ActionButton;
30
+ export class CopyToClipBoardButton extends React.Component {
31
+ mounted = false;
32
+ timeout;
33
+ state = {
34
+ copied: false
35
+ };
36
+ componentDidMount() {
37
+ this.mounted = true;
38
+ }
39
+ componentWillUnmount() {
40
+ this.mounted = false;
41
+ }
42
+ handleCopy = () => {
43
+ clearTimeout(this.timeout);
44
+ const {
45
+ path,
46
+ draft,
47
+ name
48
+ } = this.props;
49
+ copyToClipboard(isAbsolutePath(path) || !draft ? path : name);
50
+ this.setState({
51
+ copied: true
52
+ });
53
+ this.timeout = setTimeout(() => this.mounted && this.setState({
54
+ copied: false
55
+ }), 1500);
56
+ };
57
+ getTitle = () => {
58
+ const {
59
+ t,
60
+ path,
61
+ draft
62
+ } = this.props;
63
+ if (this.state.copied) {
64
+ return t('mediaLibrary.mediaLibraryCard.copied');
65
+ }
66
+ if (!path) {
67
+ return t('mediaLibrary.mediaLibraryCard.copy');
68
+ }
69
+ if (isAbsolutePath(path)) {
70
+ return t('mediaLibrary.mediaLibraryCard.copyUrl');
71
+ }
72
+ if (draft) {
73
+ return t('mediaLibrary.mediaLibraryCard.copyName');
74
+ }
75
+ return t('mediaLibrary.mediaLibraryCard.copyPath');
76
+ };
77
+ render() {
78
+ const {
79
+ disabled
80
+ } = this.props;
81
+ return ___EmotionJSX(ActionButton, {
82
+ disabled: disabled,
83
+ onClick: this.handleCopy
84
+ }, this.getTitle());
85
+ }
86
+ }
87
+ CopyToClipBoardButton.propTypes = {
88
+ disabled: PropTypes.bool.isRequired,
89
+ draft: PropTypes.bool,
90
+ path: PropTypes.string,
91
+ name: PropTypes.string,
92
+ t: PropTypes.func.isRequired
93
+ };