@frontify/guideline-blocks-settings 0.33.4 → 0.34.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (498) hide show
  1. package/dist/components/Attachments/AttachmentItem.es.js +174 -0
  2. package/dist/components/Attachments/AttachmentItem.es.js.map +1 -0
  3. package/dist/components/Attachments/Attachments.es.js +160 -0
  4. package/dist/components/Attachments/Attachments.es.js.map +1 -0
  5. package/dist/components/Attachments/AttachmentsButtonTrigger.es.js +29 -0
  6. package/dist/components/Attachments/AttachmentsButtonTrigger.es.js.map +1 -0
  7. package/dist/components/BlockInjectButton/BlockInjectButton.es.js +150 -0
  8. package/dist/components/BlockInjectButton/BlockInjectButton.es.js.map +1 -0
  9. package/dist/components/BlockItemWrapper/BlockItemWrapper.es.js +71 -0
  10. package/dist/components/BlockItemWrapper/BlockItemWrapper.es.js.map +1 -0
  11. package/dist/components/BlockItemWrapper/Toolbar/AttachmentsToolbarButton/AttachmentsToolbarButton.es.js +33 -0
  12. package/dist/components/BlockItemWrapper/Toolbar/AttachmentsToolbarButton/AttachmentsToolbarButton.es.js.map +1 -0
  13. package/dist/components/BlockItemWrapper/Toolbar/AttachmentsToolbarButton/AttachmentsToolbarButtonTrigger.es.js +26 -0
  14. package/dist/components/BlockItemWrapper/Toolbar/AttachmentsToolbarButton/AttachmentsToolbarButtonTrigger.es.js.map +1 -0
  15. package/dist/components/BlockItemWrapper/Toolbar/BaseToolbarButton.es.js +28 -0
  16. package/dist/components/BlockItemWrapper/Toolbar/BaseToolbarButton.es.js.map +1 -0
  17. package/dist/components/BlockItemWrapper/Toolbar/DragHandleToolbarButton/DragHandleToolbarButton.es.js +35 -0
  18. package/dist/components/BlockItemWrapper/Toolbar/DragHandleToolbarButton/DragHandleToolbarButton.es.js.map +1 -0
  19. package/dist/components/BlockItemWrapper/Toolbar/FlyoutToolbarButton/FlyoutToolbarButton.es.js +44 -0
  20. package/dist/components/BlockItemWrapper/Toolbar/FlyoutToolbarButton/FlyoutToolbarButton.es.js.map +1 -0
  21. package/dist/components/BlockItemWrapper/Toolbar/MenuToolbarButton/MenuToolbarButton.es.js +25 -0
  22. package/dist/components/BlockItemWrapper/Toolbar/MenuToolbarButton/MenuToolbarButton.es.js.map +1 -0
  23. package/dist/components/BlockItemWrapper/Toolbar/MenuToolbarButton/ToolbarFlyoutMenu.es.js +29 -0
  24. package/dist/components/BlockItemWrapper/Toolbar/MenuToolbarButton/ToolbarFlyoutMenu.es.js.map +1 -0
  25. package/dist/components/BlockItemWrapper/Toolbar/Toolbar.es.js +22 -0
  26. package/dist/components/BlockItemWrapper/Toolbar/Toolbar.es.js.map +1 -0
  27. package/dist/components/BlockItemWrapper/Toolbar/ToolbarButton/ToolbarButton.es.js +12 -0
  28. package/dist/components/BlockItemWrapper/Toolbar/ToolbarButton/ToolbarButton.es.js.map +1 -0
  29. package/dist/components/BlockItemWrapper/Toolbar/ToolbarButtonTooltip.es.js +20 -0
  30. package/dist/components/BlockItemWrapper/Toolbar/ToolbarButtonTooltip.es.js.map +1 -0
  31. package/dist/components/BlockItemWrapper/Toolbar/ToolbarSegment.es.js +6 -0
  32. package/dist/components/BlockItemWrapper/Toolbar/ToolbarSegment.es.js.map +1 -0
  33. package/dist/components/BlockItemWrapper/Toolbar/context/DragPreviewContext.es.js +11 -0
  34. package/dist/components/BlockItemWrapper/Toolbar/context/DragPreviewContext.es.js.map +1 -0
  35. package/dist/components/BlockItemWrapper/Toolbar/context/MultiFlyoutContext.es.js +18 -0
  36. package/dist/components/BlockItemWrapper/Toolbar/context/MultiFlyoutContext.es.js.map +1 -0
  37. package/dist/components/BlockItemWrapper/Toolbar/helpers.es.js +26 -0
  38. package/dist/components/BlockItemWrapper/Toolbar/helpers.es.js.map +1 -0
  39. package/dist/components/BlockItemWrapper/Toolbar/hooks/useMultiFlyoutState.es.js +18 -0
  40. package/dist/components/BlockItemWrapper/Toolbar/hooks/useMultiFlyoutState.es.js.map +1 -0
  41. package/dist/components/BlockItemWrapper/constants.es.js +6 -0
  42. package/dist/components/BlockItemWrapper/constants.es.js.map +1 -0
  43. package/dist/components/DownloadButton/DownloadButton.es.js +39 -0
  44. package/dist/components/DownloadButton/DownloadButton.es.js.map +1 -0
  45. package/dist/components/Link/LinkInput.es.js +63 -0
  46. package/dist/components/Link/LinkInput.es.js.map +1 -0
  47. package/dist/components/Link/LinkSelector/DocumentLink.es.js +68 -0
  48. package/dist/components/Link/LinkSelector/DocumentLink.es.js.map +1 -0
  49. package/dist/components/Link/LinkSelector/DocumentLinks.es.js +60 -0
  50. package/dist/components/Link/LinkSelector/DocumentLinks.es.js.map +1 -0
  51. package/dist/components/Link/LinkSelector/LinkSelector.es.js +86 -0
  52. package/dist/components/Link/LinkSelector/LinkSelector.es.js.map +1 -0
  53. package/dist/components/Link/LinkSelector/LoadingIndicator.es.js +7 -0
  54. package/dist/components/Link/LinkSelector/LoadingIndicator.es.js.map +1 -0
  55. package/dist/components/Link/LinkSelector/PageLink.es.js +70 -0
  56. package/dist/components/Link/LinkSelector/PageLink.es.js.map +1 -0
  57. package/dist/components/Link/LinkSelector/PageLinks.es.js +38 -0
  58. package/dist/components/Link/LinkSelector/PageLinks.es.js.map +1 -0
  59. package/dist/components/Link/LinkSelector/SectionLink.es.js +25 -0
  60. package/dist/components/Link/LinkSelector/SectionLink.es.js.map +1 -0
  61. package/dist/components/Link/utils/getUrl.es.js +18 -0
  62. package/dist/components/Link/utils/getUrl.es.js.map +1 -0
  63. package/dist/components/Link/utils/relativeUrlRegex.es.js +5 -0
  64. package/dist/components/Link/utils/relativeUrlRegex.es.js.map +1 -0
  65. package/dist/components/Link/utils/url.es.js +17 -0
  66. package/dist/components/Link/utils/url.es.js.map +1 -0
  67. package/dist/components/RichTextEditor/RichTextEditor.es.js +42 -0
  68. package/dist/components/RichTextEditor/RichTextEditor.es.js.map +1 -0
  69. package/dist/components/RichTextEditor/SerializedText.es.js +20 -0
  70. package/dist/components/RichTextEditor/SerializedText.es.js.map +1 -0
  71. package/dist/components/RichTextEditor/constants.es.js +5 -0
  72. package/dist/components/RichTextEditor/constants.es.js.map +1 -0
  73. package/dist/components/RichTextEditor/pluginPresets/defaultPluginsWithLinkChooser.es.js +35 -0
  74. package/dist/components/RichTextEditor/pluginPresets/defaultPluginsWithLinkChooser.es.js.map +1 -0
  75. package/dist/components/RichTextEditor/plugins/ButtonPlugin/ButtonMarkupElement/ButtonMarkupElementNode.es.js +41 -0
  76. package/dist/components/RichTextEditor/plugins/ButtonPlugin/ButtonMarkupElement/ButtonMarkupElementNode.es.js.map +1 -0
  77. package/dist/components/RichTextEditor/plugins/ButtonPlugin/ButtonMarkupElement/index.es.js +12 -0
  78. package/dist/components/RichTextEditor/plugins/ButtonPlugin/ButtonMarkupElement/index.es.js.map +1 -0
  79. package/dist/components/RichTextEditor/plugins/ButtonPlugin/components/ButtonButton.es.js +24 -0
  80. package/dist/components/RichTextEditor/plugins/ButtonPlugin/components/ButtonButton.es.js.map +1 -0
  81. package/dist/components/RichTextEditor/plugins/ButtonPlugin/components/ButtonToolbarButton.es.js +26 -0
  82. package/dist/components/RichTextEditor/plugins/ButtonPlugin/components/ButtonToolbarButton.es.js.map +1 -0
  83. package/dist/components/RichTextEditor/plugins/ButtonPlugin/components/FloatingButton/CustomFloatingButton.es.js +28 -0
  84. package/dist/components/RichTextEditor/plugins/ButtonPlugin/components/FloatingButton/CustomFloatingButton.es.js.map +1 -0
  85. package/dist/components/RichTextEditor/plugins/ButtonPlugin/components/FloatingButton/EditButtonModal/EditModal.es.js +48 -0
  86. package/dist/components/RichTextEditor/plugins/ButtonPlugin/components/FloatingButton/EditButtonModal/EditModal.es.js.map +1 -0
  87. package/dist/components/RichTextEditor/plugins/ButtonPlugin/components/FloatingButton/InsertButtonModal/InsertButtonModal.es.js +69 -0
  88. package/dist/components/RichTextEditor/plugins/ButtonPlugin/components/FloatingButton/InsertButtonModal/InsertButtonModal.es.js.map +1 -0
  89. package/dist/components/RichTextEditor/plugins/ButtonPlugin/components/FloatingButton/InsertButtonModal/useInsertModal.es.js +104 -0
  90. package/dist/components/RichTextEditor/plugins/ButtonPlugin/components/FloatingButton/InsertButtonModal/useInsertModal.es.js.map +1 -0
  91. package/dist/components/RichTextEditor/plugins/ButtonPlugin/components/FloatingButton/floatingButtonStore.es.js +32 -0
  92. package/dist/components/RichTextEditor/plugins/ButtonPlugin/components/FloatingButton/floatingButtonStore.es.js.map +1 -0
  93. package/dist/components/RichTextEditor/plugins/ButtonPlugin/components/FloatingButton/useFloatingButtonEdit.es.js +57 -0
  94. package/dist/components/RichTextEditor/plugins/ButtonPlugin/components/FloatingButton/useFloatingButtonEdit.es.js.map +1 -0
  95. package/dist/components/RichTextEditor/plugins/ButtonPlugin/components/FloatingButton/useFloatingButtonEnter.es.js +19 -0
  96. package/dist/components/RichTextEditor/plugins/ButtonPlugin/components/FloatingButton/useFloatingButtonEnter.es.js.map +1 -0
  97. package/dist/components/RichTextEditor/plugins/ButtonPlugin/components/FloatingButton/useFloatingButtonEscape.es.js +26 -0
  98. package/dist/components/RichTextEditor/plugins/ButtonPlugin/components/FloatingButton/useFloatingButtonEscape.es.js.map +1 -0
  99. package/dist/components/RichTextEditor/plugins/ButtonPlugin/components/FloatingButton/useFloatingButtonInsert.es.js +41 -0
  100. package/dist/components/RichTextEditor/plugins/ButtonPlugin/components/FloatingButton/useFloatingButtonInsert.es.js.map +1 -0
  101. package/dist/components/RichTextEditor/plugins/ButtonPlugin/components/FloatingButton/useVirtualFloatingButton.es.js +18 -0
  102. package/dist/components/RichTextEditor/plugins/ButtonPlugin/components/FloatingButton/useVirtualFloatingButton.es.js.map +1 -0
  103. package/dist/components/RichTextEditor/plugins/ButtonPlugin/createButtonPlugin.es.js +67 -0
  104. package/dist/components/RichTextEditor/plugins/ButtonPlugin/createButtonPlugin.es.js.map +1 -0
  105. package/dist/components/RichTextEditor/plugins/ButtonPlugin/transforms/insertButton.es.js +13 -0
  106. package/dist/components/RichTextEditor/plugins/ButtonPlugin/transforms/insertButton.es.js.map +1 -0
  107. package/dist/components/RichTextEditor/plugins/ButtonPlugin/transforms/submitFloatingButton.es.js +25 -0
  108. package/dist/components/RichTextEditor/plugins/ButtonPlugin/transforms/submitFloatingButton.es.js.map +1 -0
  109. package/dist/components/RichTextEditor/plugins/ButtonPlugin/transforms/unwrapButton.es.js +35 -0
  110. package/dist/components/RichTextEditor/plugins/ButtonPlugin/transforms/unwrapButton.es.js.map +1 -0
  111. package/dist/components/RichTextEditor/plugins/ButtonPlugin/transforms/upsertButton.es.js +86 -0
  112. package/dist/components/RichTextEditor/plugins/ButtonPlugin/transforms/upsertButton.es.js.map +1 -0
  113. package/dist/components/RichTextEditor/plugins/ButtonPlugin/transforms/upsertButtonText.es.js +24 -0
  114. package/dist/components/RichTextEditor/plugins/ButtonPlugin/transforms/upsertButtonText.es.js.map +1 -0
  115. package/dist/components/RichTextEditor/plugins/ButtonPlugin/transforms/wrapButton.es.js +19 -0
  116. package/dist/components/RichTextEditor/plugins/ButtonPlugin/transforms/wrapButton.es.js.map +1 -0
  117. package/dist/components/RichTextEditor/plugins/ButtonPlugin/utils/createButtonNode.es.js +13 -0
  118. package/dist/components/RichTextEditor/plugins/ButtonPlugin/utils/createButtonNode.es.js.map +1 -0
  119. package/dist/components/RichTextEditor/plugins/ButtonPlugin/utils/getButtonStyle.es.js +11 -0
  120. package/dist/components/RichTextEditor/plugins/ButtonPlugin/utils/getButtonStyle.es.js.map +1 -0
  121. package/dist/components/RichTextEditor/plugins/ButtonPlugin/utils/getUrl.es.js +10 -0
  122. package/dist/components/RichTextEditor/plugins/ButtonPlugin/utils/getUrl.es.js.map +1 -0
  123. package/dist/components/RichTextEditor/plugins/ButtonPlugin/utils/styles.es.js +81 -0
  124. package/dist/components/RichTextEditor/plugins/ButtonPlugin/utils/styles.es.js.map +1 -0
  125. package/dist/components/RichTextEditor/plugins/ButtonPlugin/utils/triggerFloatingButton.es.js +18 -0
  126. package/dist/components/RichTextEditor/plugins/ButtonPlugin/utils/triggerFloatingButton.es.js.map +1 -0
  127. package/dist/components/RichTextEditor/plugins/ButtonPlugin/utils/triggerFloatingButtonEdit.es.js +17 -0
  128. package/dist/components/RichTextEditor/plugins/ButtonPlugin/utils/triggerFloatingButtonEdit.es.js.map +1 -0
  129. package/dist/components/RichTextEditor/plugins/ButtonPlugin/utils/triggerFloatingButtonInsert.es.js +14 -0
  130. package/dist/components/RichTextEditor/plugins/ButtonPlugin/utils/triggerFloatingButtonInsert.es.js.map +1 -0
  131. package/dist/components/RichTextEditor/plugins/ButtonPlugin/withButton.es.js +52 -0
  132. package/dist/components/RichTextEditor/plugins/ButtonPlugin/withButton.es.js.map +1 -0
  133. package/dist/components/RichTextEditor/plugins/LinkPlugin/FloatingLink/CustomFloatingLink.es.js +32 -0
  134. package/dist/components/RichTextEditor/plugins/LinkPlugin/FloatingLink/CustomFloatingLink.es.js.map +1 -0
  135. package/dist/components/RichTextEditor/plugins/LinkPlugin/FloatingLink/EditLinkModal/EditModal.es.js +35 -0
  136. package/dist/components/RichTextEditor/plugins/LinkPlugin/FloatingLink/EditLinkModal/EditModal.es.js.map +1 -0
  137. package/dist/components/RichTextEditor/plugins/LinkPlugin/FloatingLink/InsertLinkModal/InsertLinkModal.es.js +8 -0
  138. package/dist/components/RichTextEditor/plugins/LinkPlugin/FloatingLink/InsertLinkModal/InsertLinkModal.es.js.map +1 -0
  139. package/dist/components/RichTextEditor/plugins/LinkPlugin/FloatingLink/InsertLinkModal/InsertModal.es.js +66 -0
  140. package/dist/components/RichTextEditor/plugins/LinkPlugin/FloatingLink/InsertLinkModal/InsertModal.es.js.map +1 -0
  141. package/dist/components/RichTextEditor/plugins/LinkPlugin/FloatingLink/InsertLinkModal/useInsertModal.es.js +79 -0
  142. package/dist/components/RichTextEditor/plugins/LinkPlugin/FloatingLink/InsertLinkModal/useInsertModal.es.js.map +1 -0
  143. package/dist/components/RichTextEditor/plugins/LinkPlugin/LinkButton.es.js +22 -0
  144. package/dist/components/RichTextEditor/plugins/LinkPlugin/LinkButton.es.js.map +1 -0
  145. package/dist/components/RichTextEditor/plugins/LinkPlugin/LinkMarkupElement/LinkMarkupElementNode.es.js +12 -0
  146. package/dist/components/RichTextEditor/plugins/LinkPlugin/LinkMarkupElement/LinkMarkupElementNode.es.js.map +1 -0
  147. package/dist/components/RichTextEditor/plugins/LinkPlugin/LinkMarkupElement/index.es.js +11 -0
  148. package/dist/components/RichTextEditor/plugins/LinkPlugin/LinkMarkupElement/index.es.js.map +1 -0
  149. package/dist/components/RichTextEditor/plugins/LinkPlugin/LinkToolbarButton.es.js +25 -0
  150. package/dist/components/RichTextEditor/plugins/LinkPlugin/LinkToolbarButton.es.js.map +1 -0
  151. package/dist/components/RichTextEditor/plugins/LinkPlugin/id.es.js +5 -0
  152. package/dist/components/RichTextEditor/plugins/LinkPlugin/id.es.js.map +1 -0
  153. package/dist/components/RichTextEditor/plugins/LinkPlugin/index.es.js +45 -0
  154. package/dist/components/RichTextEditor/plugins/LinkPlugin/index.es.js.map +1 -0
  155. package/dist/components/RichTextEditor/plugins/LinkPlugin/utils/getUrl.es.js +13 -0
  156. package/dist/components/RichTextEditor/plugins/LinkPlugin/utils/getUrl.es.js.map +1 -0
  157. package/dist/components/RichTextEditor/plugins/TextStylePlugins/custom1Plugin.es.js +50 -0
  158. package/dist/components/RichTextEditor/plugins/TextStylePlugins/custom1Plugin.es.js.map +1 -0
  159. package/dist/components/RichTextEditor/plugins/TextStylePlugins/custom2Plugin.es.js +50 -0
  160. package/dist/components/RichTextEditor/plugins/TextStylePlugins/custom2Plugin.es.js.map +1 -0
  161. package/dist/components/RichTextEditor/plugins/TextStylePlugins/custom3Plugin.es.js +50 -0
  162. package/dist/components/RichTextEditor/plugins/TextStylePlugins/custom3Plugin.es.js.map +1 -0
  163. package/dist/components/RichTextEditor/plugins/TextStylePlugins/heading1Plugin.es.js +51 -0
  164. package/dist/components/RichTextEditor/plugins/TextStylePlugins/heading1Plugin.es.js.map +1 -0
  165. package/dist/components/RichTextEditor/plugins/TextStylePlugins/heading2Plugin.es.js +51 -0
  166. package/dist/components/RichTextEditor/plugins/TextStylePlugins/heading2Plugin.es.js.map +1 -0
  167. package/dist/components/RichTextEditor/plugins/TextStylePlugins/heading3Plugin.es.js +51 -0
  168. package/dist/components/RichTextEditor/plugins/TextStylePlugins/heading3Plugin.es.js.map +1 -0
  169. package/dist/components/RichTextEditor/plugins/TextStylePlugins/heading4Plugin.es.js +51 -0
  170. package/dist/components/RichTextEditor/plugins/TextStylePlugins/heading4Plugin.es.js.map +1 -0
  171. package/dist/components/RichTextEditor/plugins/TextStylePlugins/helpers.es.js +40 -0
  172. package/dist/components/RichTextEditor/plugins/TextStylePlugins/helpers.es.js.map +1 -0
  173. package/dist/components/RichTextEditor/plugins/TextStylePlugins/imageCaptionPlugin.es.js +51 -0
  174. package/dist/components/RichTextEditor/plugins/TextStylePlugins/imageCaptionPlugin.es.js.map +1 -0
  175. package/dist/components/RichTextEditor/plugins/TextStylePlugins/imageTitlePlugin.es.js +51 -0
  176. package/dist/components/RichTextEditor/plugins/TextStylePlugins/imageTitlePlugin.es.js.map +1 -0
  177. package/dist/components/RichTextEditor/plugins/TextStylePlugins/paragraphPlugin.es.js +45 -0
  178. package/dist/components/RichTextEditor/plugins/TextStylePlugins/paragraphPlugin.es.js.map +1 -0
  179. package/dist/components/RichTextEditor/plugins/TextStylePlugins/quotePlugin.es.js +53 -0
  180. package/dist/components/RichTextEditor/plugins/TextStylePlugins/quotePlugin.es.js.map +1 -0
  181. package/dist/components/RichTextEditor/plugins/styles.es.js +167 -0
  182. package/dist/components/RichTextEditor/plugins/styles.es.js.map +1 -0
  183. package/dist/helpers/addHttps.es.js +14 -0
  184. package/dist/helpers/addHttps.es.js.map +1 -0
  185. package/dist/helpers/convertToRichTextValue.es.js +6 -0
  186. package/dist/helpers/convertToRichTextValue.es.js.map +1 -0
  187. package/dist/helpers/customCoordinatesGetterFactory.es.js +32 -0
  188. package/dist/helpers/customCoordinatesGetterFactory.es.js.map +1 -0
  189. package/dist/helpers/hasRichTextValue.es.js +15 -0
  190. package/dist/helpers/hasRichTextValue.es.js.map +1 -0
  191. package/dist/helpers/isDownloadable.es.js +6 -0
  192. package/dist/helpers/isDownloadable.es.js.map +1 -0
  193. package/dist/helpers/mapColorPalettes.es.js +28 -0
  194. package/dist/helpers/mapColorPalettes.es.js.map +1 -0
  195. package/dist/hooks/useAttachments.es.js +53 -0
  196. package/dist/hooks/useAttachments.es.js.map +1 -0
  197. package/dist/hooks/useDndSensors.es.js +20 -0
  198. package/dist/hooks/useDndSensors.es.js.map +1 -0
  199. package/dist/index.cjs.js +4 -0
  200. package/dist/index.cjs.js.map +1 -0
  201. package/dist/index.d.ts +1190 -0
  202. package/dist/index.es.js +217 -0
  203. package/dist/index.es.js.map +1 -0
  204. package/dist/index.umd.js +4 -0
  205. package/dist/index.umd.js.map +1 -0
  206. package/dist/settings/background.es.js +22 -0
  207. package/dist/settings/background.es.js.map +1 -0
  208. package/dist/settings/border.es.js +61 -0
  209. package/dist/settings/border.es.js.map +1 -0
  210. package/dist/settings/borderRadius.es.js +56 -0
  211. package/dist/settings/borderRadius.es.js.map +1 -0
  212. package/dist/settings/borderRadiusExtended.es.js +64 -0
  213. package/dist/settings/borderRadiusExtended.es.js.map +1 -0
  214. package/dist/settings/defaultValues.es.js +19 -0
  215. package/dist/settings/defaultValues.es.js.map +1 -0
  216. package/dist/settings/gutter.es.js +56 -0
  217. package/dist/settings/gutter.es.js.map +1 -0
  218. package/dist/settings/margin.es.js +53 -0
  219. package/dist/settings/margin.es.js.map +1 -0
  220. package/dist/settings/marginExtended.es.js +65 -0
  221. package/dist/settings/marginExtended.es.js.map +1 -0
  222. package/dist/settings/padding.es.js +53 -0
  223. package/dist/settings/padding.es.js.map +1 -0
  224. package/dist/settings/paddingExtended.es.js +65 -0
  225. package/dist/settings/paddingExtended.es.js.map +1 -0
  226. package/dist/settings/securityDownloadable.es.js +19 -0
  227. package/dist/settings/securityDownloadable.es.js.map +1 -0
  228. package/dist/settings/securityGlobalControl.es.js +33 -0
  229. package/dist/settings/securityGlobalControl.es.js.map +1 -0
  230. package/dist/settings/types.es.js +48 -0
  231. package/dist/settings/types.es.js.map +1 -0
  232. package/dist/styles.css +1 -0
  233. package/dist/styles.css.es.js +2 -0
  234. package/dist/styles.css.es.js.map +1 -0
  235. package/dist/utilities/color/getReadableColor.es.js +14 -0
  236. package/dist/utilities/color/getReadableColor.es.js.map +1 -0
  237. package/dist/utilities/color/isDark.es.js +10 -0
  238. package/dist/utilities/color/isDark.es.js.map +1 -0
  239. package/dist/utilities/color/setAlpha.es.js +6 -0
  240. package/dist/utilities/color/setAlpha.es.js.map +1 -0
  241. package/dist/utilities/color/toColorObject.es.js +9 -0
  242. package/dist/utilities/color/toColorObject.es.js.map +1 -0
  243. package/dist/utilities/color/toHex8String.es.js +7 -0
  244. package/dist/utilities/color/toHex8String.es.js.map +1 -0
  245. package/dist/utilities/color/toHexString.es.js +7 -0
  246. package/dist/utilities/color/toHexString.es.js.map +1 -0
  247. package/dist/utilities/color/toRgbaString.es.js +7 -0
  248. package/dist/utilities/color/toRgbaString.es.js.map +1 -0
  249. package/dist/utilities/color/toShortRgba.es.js +11 -0
  250. package/dist/utilities/color/toShortRgba.es.js.map +1 -0
  251. package/dist/utilities/moveItemInArray.es.js +12 -0
  252. package/dist/utilities/moveItemInArray.es.js.map +1 -0
  253. package/dist/utilities/react/getBackgroundColorStyles.es.js +8 -0
  254. package/dist/utilities/react/getBackgroundColorStyles.es.js.map +1 -0
  255. package/dist/utilities/react/getBorderStyles.es.js +12 -0
  256. package/dist/utilities/react/getBorderStyles.es.js.map +1 -0
  257. package/dist/utilities/react/getRadiusStyles.es.js +8 -0
  258. package/dist/utilities/react/getRadiusStyles.es.js.map +1 -0
  259. package/dist/utilities/react/joinClassNames.es.js +5 -0
  260. package/dist/utilities/react/joinClassNames.es.js.map +1 -0
  261. package/package.json +9 -6
  262. package/.eslintrc.cjs +0 -27
  263. package/.prettierrc +0 -7
  264. package/CHANGELOG.md +0 -787
  265. package/postcss.config.cjs +0 -8
  266. package/setupTests.ts +0 -23
  267. package/src/components/Attachments/AttachmentItem.tsx +0 -247
  268. package/src/components/Attachments/Attachments.spec.ct.tsx +0 -165
  269. package/src/components/Attachments/Attachments.tsx +0 -241
  270. package/src/components/Attachments/AttachmentsButtonTrigger.tsx +0 -30
  271. package/src/components/Attachments/index.ts +0 -4
  272. package/src/components/Attachments/types.ts +0 -40
  273. package/src/components/BlockInjectButton/BlockInjectButton.spec.ct.tsx +0 -48
  274. package/src/components/BlockInjectButton/BlockInjectButton.tsx +0 -212
  275. package/src/components/BlockInjectButton/index.ts +0 -4
  276. package/src/components/BlockInjectButton/types.ts +0 -18
  277. package/src/components/BlockItemWrapper/BlockItemWrapper.spec.ct.tsx +0 -145
  278. package/src/components/BlockItemWrapper/BlockItemWrapper.tsx +0 -76
  279. package/src/components/BlockItemWrapper/Toolbar/AttachmentsToolbarButton/AttachmentsToolbarButton.spec.tsx +0 -96
  280. package/src/components/BlockItemWrapper/Toolbar/AttachmentsToolbarButton/AttachmentsToolbarButton.tsx +0 -42
  281. package/src/components/BlockItemWrapper/Toolbar/AttachmentsToolbarButton/AttachmentsToolbarButtonTrigger.spec.tsx +0 -44
  282. package/src/components/BlockItemWrapper/Toolbar/AttachmentsToolbarButton/AttachmentsToolbarButtonTrigger.tsx +0 -24
  283. package/src/components/BlockItemWrapper/Toolbar/AttachmentsToolbarButton/index.ts +0 -3
  284. package/src/components/BlockItemWrapper/Toolbar/BaseToolbarButton.spec.tsx +0 -40
  285. package/src/components/BlockItemWrapper/Toolbar/BaseToolbarButton.tsx +0 -37
  286. package/src/components/BlockItemWrapper/Toolbar/DragHandleToolbarButton/DragHandleToolbarButton.spec.tsx +0 -89
  287. package/src/components/BlockItemWrapper/Toolbar/DragHandleToolbarButton/DragHandleToolbarButton.tsx +0 -40
  288. package/src/components/BlockItemWrapper/Toolbar/DragHandleToolbarButton/index.ts +0 -3
  289. package/src/components/BlockItemWrapper/Toolbar/FlyoutToolbarButton/FlyoutToolbarButton.spec.tsx +0 -140
  290. package/src/components/BlockItemWrapper/Toolbar/FlyoutToolbarButton/FlyoutToolbarButton.tsx +0 -61
  291. package/src/components/BlockItemWrapper/Toolbar/FlyoutToolbarButton/index.ts +0 -3
  292. package/src/components/BlockItemWrapper/Toolbar/MenuToolbarButton/MenuToolbarButton.spec.tsx +0 -77
  293. package/src/components/BlockItemWrapper/Toolbar/MenuToolbarButton/MenuToolbarButton.tsx +0 -30
  294. package/src/components/BlockItemWrapper/Toolbar/MenuToolbarButton/ToolbarFlyoutMenu.spec.tsx +0 -63
  295. package/src/components/BlockItemWrapper/Toolbar/MenuToolbarButton/ToolbarFlyoutMenu.tsx +0 -40
  296. package/src/components/BlockItemWrapper/Toolbar/MenuToolbarButton/index.ts +0 -4
  297. package/src/components/BlockItemWrapper/Toolbar/Toolbar.spec.tsx +0 -259
  298. package/src/components/BlockItemWrapper/Toolbar/Toolbar.tsx +0 -36
  299. package/src/components/BlockItemWrapper/Toolbar/ToolbarButton/ToolbarButton.spec.tsx +0 -70
  300. package/src/components/BlockItemWrapper/Toolbar/ToolbarButton/ToolbarButton.tsx +0 -19
  301. package/src/components/BlockItemWrapper/Toolbar/ToolbarButton/index.ts +0 -3
  302. package/src/components/BlockItemWrapper/Toolbar/ToolbarButtonTooltip.tsx +0 -25
  303. package/src/components/BlockItemWrapper/Toolbar/ToolbarSegment.tsx +0 -9
  304. package/src/components/BlockItemWrapper/Toolbar/context/DragPreviewContext.tsx +0 -15
  305. package/src/components/BlockItemWrapper/Toolbar/context/MultiFlyoutContext.tsx +0 -25
  306. package/src/components/BlockItemWrapper/Toolbar/context/index.ts +0 -4
  307. package/src/components/BlockItemWrapper/Toolbar/helpers.ts +0 -33
  308. package/src/components/BlockItemWrapper/Toolbar/hooks/index.ts +0 -3
  309. package/src/components/BlockItemWrapper/Toolbar/hooks/useMultiFlyoutState.spec.tsx +0 -59
  310. package/src/components/BlockItemWrapper/Toolbar/hooks/useMultiFlyoutState.ts +0 -24
  311. package/src/components/BlockItemWrapper/Toolbar/index.ts +0 -10
  312. package/src/components/BlockItemWrapper/Toolbar/types.ts +0 -18
  313. package/src/components/BlockItemWrapper/constants.ts +0 -4
  314. package/src/components/BlockItemWrapper/index.ts +0 -6
  315. package/src/components/BlockItemWrapper/types.ts +0 -24
  316. package/src/components/DownloadButton/DownloadButton.spec.ct.tsx +0 -20
  317. package/src/components/DownloadButton/DownloadButton.tsx +0 -36
  318. package/src/components/DownloadButton/index.ts +0 -3
  319. package/src/components/DownloadButton/types.ts +0 -5
  320. package/src/components/Link/LinkInput.spec.ct.tsx +0 -142
  321. package/src/components/Link/LinkInput.tsx +0 -86
  322. package/src/components/Link/LinkSelector/DocumentLink.tsx +0 -81
  323. package/src/components/Link/LinkSelector/DocumentLinks.tsx +0 -102
  324. package/src/components/Link/LinkSelector/LinkSelector.spec.ct.tsx +0 -196
  325. package/src/components/Link/LinkSelector/LinkSelector.tsx +0 -96
  326. package/src/components/Link/LinkSelector/LoadingIndicator.tsx +0 -11
  327. package/src/components/Link/LinkSelector/PageLink.tsx +0 -96
  328. package/src/components/Link/LinkSelector/PageLinks.tsx +0 -71
  329. package/src/components/Link/LinkSelector/SectionLink.tsx +0 -36
  330. package/src/components/Link/LinkSelector/index.ts +0 -3
  331. package/src/components/Link/index.ts +0 -6
  332. package/src/components/Link/types.ts +0 -6
  333. package/src/components/Link/utils/getUrl.ts +0 -30
  334. package/src/components/Link/utils/index.ts +0 -5
  335. package/src/components/Link/utils/relativeUrlRegex.spec.ts +0 -32
  336. package/src/components/Link/utils/relativeUrlRegex.ts +0 -3
  337. package/src/components/Link/utils/url.spec.ts +0 -75
  338. package/src/components/Link/utils/url.ts +0 -21
  339. package/src/components/RichTextEditor/RichTextEditor.spec.ct.tsx +0 -231
  340. package/src/components/RichTextEditor/RichTextEditor.tsx +0 -62
  341. package/src/components/RichTextEditor/SerializedText.tsx +0 -29
  342. package/src/components/RichTextEditor/constants.ts +0 -3
  343. package/src/components/RichTextEditor/index.ts +0 -6
  344. package/src/components/RichTextEditor/pluginPresets/defaultPluginsWithLinkChooser.tsx +0 -55
  345. package/src/components/RichTextEditor/pluginPresets/index.ts +0 -3
  346. package/src/components/RichTextEditor/plugins/ButtonPlugin/ButtonMarkupElement/ButtonMarkupElementNode.tsx +0 -74
  347. package/src/components/RichTextEditor/plugins/ButtonPlugin/ButtonMarkupElement/index.ts +0 -11
  348. package/src/components/RichTextEditor/plugins/ButtonPlugin/components/ButtonButton.tsx +0 -20
  349. package/src/components/RichTextEditor/plugins/ButtonPlugin/components/ButtonToolbarButton.tsx +0 -56
  350. package/src/components/RichTextEditor/plugins/ButtonPlugin/components/FloatingButton/CustomFloatingButton.tsx +0 -19
  351. package/src/components/RichTextEditor/plugins/ButtonPlugin/components/FloatingButton/EditButtonModal/EditModal.tsx +0 -42
  352. package/src/components/RichTextEditor/plugins/ButtonPlugin/components/FloatingButton/FloatingButton.tsx +0 -37
  353. package/src/components/RichTextEditor/plugins/ButtonPlugin/components/FloatingButton/FloatingButtonEditButton.tsx +0 -22
  354. package/src/components/RichTextEditor/plugins/ButtonPlugin/components/FloatingButton/FloatingButtonUrlInput.tsx +0 -30
  355. package/src/components/RichTextEditor/plugins/ButtonPlugin/components/FloatingButton/InsertButtonModal/InsertButtonModal.tsx +0 -81
  356. package/src/components/RichTextEditor/plugins/ButtonPlugin/components/FloatingButton/InsertButtonModal/types.ts +0 -13
  357. package/src/components/RichTextEditor/plugins/ButtonPlugin/components/FloatingButton/InsertButtonModal/useInsertModal.ts +0 -143
  358. package/src/components/RichTextEditor/plugins/ButtonPlugin/components/FloatingButton/UnlinkButton.tsx +0 -31
  359. package/src/components/RichTextEditor/plugins/ButtonPlugin/components/FloatingButton/floatingButtonStore.ts +0 -46
  360. package/src/components/RichTextEditor/plugins/ButtonPlugin/components/FloatingButton/index.ts +0 -12
  361. package/src/components/RichTextEditor/plugins/ButtonPlugin/components/FloatingButton/useFloatingButtonEdit.ts +0 -113
  362. package/src/components/RichTextEditor/plugins/ButtonPlugin/components/FloatingButton/useFloatingButtonEnter.ts +0 -21
  363. package/src/components/RichTextEditor/plugins/ButtonPlugin/components/FloatingButton/useFloatingButtonEscape.ts +0 -30
  364. package/src/components/RichTextEditor/plugins/ButtonPlugin/components/FloatingButton/useFloatingButtonInsert.ts +0 -71
  365. package/src/components/RichTextEditor/plugins/ButtonPlugin/components/FloatingButton/useVirtualFloatingButton.ts +0 -22
  366. package/src/components/RichTextEditor/plugins/ButtonPlugin/components/index.ts +0 -3
  367. package/src/components/RichTextEditor/plugins/ButtonPlugin/createButtonPlugin.ts +0 -118
  368. package/src/components/RichTextEditor/plugins/ButtonPlugin/index.ts +0 -7
  369. package/src/components/RichTextEditor/plugins/ButtonPlugin/transforms/index.ts +0 -8
  370. package/src/components/RichTextEditor/plugins/ButtonPlugin/transforms/insertButton.ts +0 -17
  371. package/src/components/RichTextEditor/plugins/ButtonPlugin/transforms/submitFloatingButton.ts +0 -40
  372. package/src/components/RichTextEditor/plugins/ButtonPlugin/transforms/unwrapButton.ts +0 -68
  373. package/src/components/RichTextEditor/plugins/ButtonPlugin/transforms/upsertButton.ts +0 -198
  374. package/src/components/RichTextEditor/plugins/ButtonPlugin/transforms/upsertButtonText.ts +0 -40
  375. package/src/components/RichTextEditor/plugins/ButtonPlugin/transforms/wrapButton.ts +0 -30
  376. package/src/components/RichTextEditor/plugins/ButtonPlugin/types.ts +0 -13
  377. package/src/components/RichTextEditor/plugins/ButtonPlugin/utils/createButtonNode.ts +0 -28
  378. package/src/components/RichTextEditor/plugins/ButtonPlugin/utils/getButtonStyle.ts +0 -14
  379. package/src/components/RichTextEditor/plugins/ButtonPlugin/utils/getUrl.ts +0 -18
  380. package/src/components/RichTextEditor/plugins/ButtonPlugin/utils/index.ts +0 -8
  381. package/src/components/RichTextEditor/plugins/ButtonPlugin/utils/styles.ts +0 -83
  382. package/src/components/RichTextEditor/plugins/ButtonPlugin/utils/triggerFloatingButton.ts +0 -23
  383. package/src/components/RichTextEditor/plugins/ButtonPlugin/utils/triggerFloatingButtonEdit.ts +0 -30
  384. package/src/components/RichTextEditor/plugins/ButtonPlugin/utils/triggerFloatingButtonInsert.ts +0 -45
  385. package/src/components/RichTextEditor/plugins/ButtonPlugin/withButton.ts +0 -106
  386. package/src/components/RichTextEditor/plugins/LinkPlugin/FloatingLink/CustomFloatingLink.tsx +0 -26
  387. package/src/components/RichTextEditor/plugins/LinkPlugin/FloatingLink/EditLinkModal/EditModal.tsx +0 -43
  388. package/src/components/RichTextEditor/plugins/LinkPlugin/FloatingLink/EditLinkModal/index.ts +0 -4
  389. package/src/components/RichTextEditor/plugins/LinkPlugin/FloatingLink/EditLinkModal/useFloatingLinkEdit.ts +0 -113
  390. package/src/components/RichTextEditor/plugins/LinkPlugin/FloatingLink/FloatingLink.tsx +0 -45
  391. package/src/components/RichTextEditor/plugins/LinkPlugin/FloatingLink/InsertLinkModal/InsertLinkModal.tsx +0 -5
  392. package/src/components/RichTextEditor/plugins/LinkPlugin/FloatingLink/InsertLinkModal/InsertModal.tsx +0 -88
  393. package/src/components/RichTextEditor/plugins/LinkPlugin/FloatingLink/InsertLinkModal/index.ts +0 -4
  394. package/src/components/RichTextEditor/plugins/LinkPlugin/FloatingLink/InsertLinkModal/types.ts +0 -11
  395. package/src/components/RichTextEditor/plugins/LinkPlugin/FloatingLink/InsertLinkModal/useFloatingLinkInsert.ts +0 -73
  396. package/src/components/RichTextEditor/plugins/LinkPlugin/FloatingLink/InsertLinkModal/useInsertModal.ts +0 -136
  397. package/src/components/RichTextEditor/plugins/LinkPlugin/LinkButton.tsx +0 -38
  398. package/src/components/RichTextEditor/plugins/LinkPlugin/LinkMarkupElement/LinkMarkupElementNode.tsx +0 -36
  399. package/src/components/RichTextEditor/plugins/LinkPlugin/LinkMarkupElement/index.ts +0 -11
  400. package/src/components/RichTextEditor/plugins/LinkPlugin/id.ts +0 -3
  401. package/src/components/RichTextEditor/plugins/LinkPlugin/index.ts +0 -49
  402. package/src/components/RichTextEditor/plugins/LinkPlugin/types.ts +0 -12
  403. package/src/components/RichTextEditor/plugins/TextStylePlugins/custom1Plugin.tsx +0 -62
  404. package/src/components/RichTextEditor/plugins/TextStylePlugins/custom2Plugin.tsx +0 -62
  405. package/src/components/RichTextEditor/plugins/TextStylePlugins/custom3Plugin.tsx +0 -63
  406. package/src/components/RichTextEditor/plugins/TextStylePlugins/heading1Plugin.tsx +0 -62
  407. package/src/components/RichTextEditor/plugins/TextStylePlugins/heading2Plugin.tsx +0 -62
  408. package/src/components/RichTextEditor/plugins/TextStylePlugins/heading3Plugin.tsx +0 -62
  409. package/src/components/RichTextEditor/plugins/TextStylePlugins/heading4Plugin.tsx +0 -63
  410. package/src/components/RichTextEditor/plugins/TextStylePlugins/helpers.tsx +0 -44
  411. package/src/components/RichTextEditor/plugins/TextStylePlugins/imageCaptionPlugin.tsx +0 -62
  412. package/src/components/RichTextEditor/plugins/TextStylePlugins/imageTitlePlugin.tsx +0 -62
  413. package/src/components/RichTextEditor/plugins/TextStylePlugins/index.ts +0 -15
  414. package/src/components/RichTextEditor/plugins/TextStylePlugins/paragraphPlugin.tsx +0 -58
  415. package/src/components/RichTextEditor/plugins/TextStylePlugins/quotePlugin.tsx +0 -63
  416. package/src/components/RichTextEditor/plugins/index.ts +0 -6
  417. package/src/components/RichTextEditor/plugins/styles.ts +0 -178
  418. package/src/components/RichTextEditor/types.ts +0 -23
  419. package/src/components/index.ts +0 -8
  420. package/src/helpers/addHttps.spec.ts +0 -42
  421. package/src/helpers/addHttps.ts +0 -15
  422. package/src/helpers/convertToRichTextValue.spec.ts +0 -32
  423. package/src/helpers/convertToRichTextValue.ts +0 -6
  424. package/src/helpers/customCoordinatesGetterFactory.spec.ts +0 -69
  425. package/src/helpers/customCoordinatesGetterFactory.ts +0 -39
  426. package/src/helpers/hasRichTextValue.spec.ts +0 -63
  427. package/src/helpers/hasRichTextValue.ts +0 -29
  428. package/src/helpers/index.ts +0 -8
  429. package/src/helpers/isDownloadable.spec.ts +0 -47
  430. package/src/helpers/isDownloadable.ts +0 -7
  431. package/src/helpers/mapColorPalettes.spec.ts +0 -47
  432. package/src/helpers/mapColorPalettes.ts +0 -65
  433. package/src/hooks/index.ts +0 -4
  434. package/src/hooks/useAttachments.spec.tsx +0 -127
  435. package/src/hooks/useAttachments.tsx +0 -90
  436. package/src/hooks/useDndSensors.spec.ts +0 -40
  437. package/src/hooks/useDndSensors.ts +0 -23
  438. package/src/index.ts +0 -138
  439. package/src/settings/background.spec.ts +0 -173
  440. package/src/settings/background.ts +0 -52
  441. package/src/settings/border.spec.ts +0 -76
  442. package/src/settings/border.ts +0 -90
  443. package/src/settings/borderRadius.spec.ts +0 -30
  444. package/src/settings/borderRadius.ts +0 -73
  445. package/src/settings/borderRadiusExtended.spec.ts +0 -52
  446. package/src/settings/borderRadiusExtended.ts +0 -84
  447. package/src/settings/defaultValues.ts +0 -21
  448. package/src/settings/gutter.spec.ts +0 -60
  449. package/src/settings/gutter.ts +0 -75
  450. package/src/settings/index.ts +0 -14
  451. package/src/settings/margin.spec.ts +0 -42
  452. package/src/settings/margin.ts +0 -72
  453. package/src/settings/marginExtended.spec.ts +0 -45
  454. package/src/settings/marginExtended.ts +0 -91
  455. package/src/settings/padding.spec.ts +0 -42
  456. package/src/settings/padding.ts +0 -73
  457. package/src/settings/paddingExtended.spec.ts +0 -45
  458. package/src/settings/paddingExtended.ts +0 -91
  459. package/src/settings/security.spec.ts +0 -87
  460. package/src/settings/security.ts +0 -61
  461. package/src/settings/securityDownloadable.spec.ts +0 -46
  462. package/src/settings/securityDownloadable.ts +0 -33
  463. package/src/settings/securityGlobalControl.ts +0 -42
  464. package/src/settings/types.ts +0 -128
  465. package/src/styles.css +0 -3
  466. package/src/utilities/color/getReadableColor.spec.ts +0 -32
  467. package/src/utilities/color/getReadableColor.ts +0 -34
  468. package/src/utilities/color/index.ts +0 -10
  469. package/src/utilities/color/isDark.spec.ts +0 -33
  470. package/src/utilities/color/isDark.ts +0 -29
  471. package/src/utilities/color/setAlpha.spec.ts +0 -28
  472. package/src/utilities/color/setAlpha.ts +0 -14
  473. package/src/utilities/color/toColorObject.spec.ts +0 -19
  474. package/src/utilities/color/toColorObject.ts +0 -16
  475. package/src/utilities/color/toHex8String.spec.ts +0 -17
  476. package/src/utilities/color/toHex8String.ts +0 -14
  477. package/src/utilities/color/toHexString.spec.ts +0 -17
  478. package/src/utilities/color/toHexString.ts +0 -10
  479. package/src/utilities/color/toRgbaString.spec.ts +0 -12
  480. package/src/utilities/color/toRgbaString.ts +0 -14
  481. package/src/utilities/color/toShortRgba.spec.ts +0 -16
  482. package/src/utilities/color/toShortRgba.ts +0 -35
  483. package/src/utilities/index.ts +0 -5
  484. package/src/utilities/moveItemInArray.spec.ts +0 -17
  485. package/src/utilities/moveItemInArray.ts +0 -21
  486. package/src/utilities/react/getBackgroundColorStyles.spec.ts +0 -18
  487. package/src/utilities/react/getBackgroundColorStyles.ts +0 -10
  488. package/src/utilities/react/getBorderStyles.spec.ts +0 -39
  489. package/src/utilities/react/getBorderStyles.ts +0 -20
  490. package/src/utilities/react/getRadiusStyles.spec.ts +0 -25
  491. package/src/utilities/react/getRadiusStyles.ts +0 -8
  492. package/src/utilities/react/index.ts +0 -6
  493. package/src/utilities/react/joinClassNames.spec.ts +0 -18
  494. package/src/utilities/react/joinClassNames.ts +0 -10
  495. package/tailwind.config.ts +0 -27
  496. package/tsconfig.json +0 -24
  497. package/tsconfig.node.json +0 -12
  498. package/vite.config.ts +0 -71
@@ -0,0 +1,174 @@
1
+ import { jsxs as b, jsx as t } from "react/jsx-runtime";
2
+ import { forwardRef as A, useState as j, useEffect as I } from "react";
3
+ import { useFileInput as D, useAssetUpload as E } from "@frontify/app-bridge";
4
+ import { useSortable as M } from "@dnd-kit/sortable";
5
+ import { LoadingCircle as P, LoadingCircleSize as V, FOCUS_STYLE as B, IconGrabHandle20 as L, Flyout as U, FlyoutPlacement as $, Button as O, IconPen20 as T, ButtonEmphasis as X, ActionMenu as G, MenuItemContentSize as f, IconArrowCircleUp20 as H, IconImageStack20 as _, MenuItemStyle as Y, IconTrashBin20 as q, IconImage24 as J, IconPlayFrame24 as K, IconMusicNote24 as Q, IconDocument24 as W } from "@frontify/fondue";
6
+ import { useFocusRing as Z } from "@react-aria/focus";
7
+ import { joinClassNames as h } from "../../utilities/react/joinClassNames.es.js";
8
+ const tt = (e) => e === "IMAGE" ? /* @__PURE__ */ t(J, {}) : e === "VIDEO" ? /* @__PURE__ */ t(K, {}) : e === "AUDIO" ? /* @__PURE__ */ t(Q, {}) : /* @__PURE__ */ t(W, {}), y = A(
9
+ ({
10
+ item: e,
11
+ isEditing: s,
12
+ draggableProps: c,
13
+ transformStyle: u,
14
+ isDragging: o,
15
+ isOverlay: a,
16
+ isLoading: n,
17
+ onDelete: d,
18
+ onReplaceWithBrowse: m,
19
+ onReplaceWithUpload: S,
20
+ onDownload: w
21
+ }, k) => {
22
+ const [r, i] = j(), [C, { selectedFiles: l }] = D({ multiple: !0, accept: "image/*" }), [N, { results: g, doneAll: p }] = E(), { focusProps: F, isFocusVisible: v } = Z();
23
+ I(() => {
24
+ l && N(l[0]);
25
+ }, [l]), I(() => {
26
+ p && S(g[0]);
27
+ }, [p, g]);
28
+ const z = n || l && !p;
29
+ return /* @__PURE__ */ b(
30
+ "button",
31
+ {
32
+ "aria-label": "Download attachment",
33
+ "data-test-id": "attachments-item",
34
+ onClick: () => w == null ? void 0 : w(),
35
+ ref: k,
36
+ style: {
37
+ ...u,
38
+ opacity: o && !a ? 0.3 : 1,
39
+ fontFamily: "var(-f-theme-settings-body-font-family)"
40
+ },
41
+ className: h([
42
+ "tw-cursor-pointer tw-text-left tw-w-full tw-relative tw-flex tw-gap-3 tw-px-5 tw-py-3 tw-items-center tw-group hover:tw-bg-box-neutral-hover",
43
+ o ? "tw-bg-box-neutral-hover" : ""
44
+ ]),
45
+ children: [
46
+ /* @__PURE__ */ t("div", { className: "tw-text-text-weak group-hover:tw-text-box-neutral-inverse-hover", children: z ? /* @__PURE__ */ t(P, { size: V.Small }) : tt(e.objectType) }),
47
+ /* @__PURE__ */ b("div", { className: "tw-text-s tw-flex-1 tw-min-w-0", children: [
48
+ /* @__PURE__ */ t("div", { className: "tw-whitespace-nowrap tw-overflow-hidden tw-text-ellipsis tw-font-bold tw-text-text-weak group-hover:tw-text-box-neutral-inverse-hover", children: e.title }),
49
+ /* @__PURE__ */ t("div", { className: "tw-text-text-weak", children: `${e.fileSizeHumanReadable} - ${e.extension}` })
50
+ ] }),
51
+ s && /* @__PURE__ */ b(
52
+ "div",
53
+ {
54
+ "data-test-id": "attachments-actionbar",
55
+ className: h([
56
+ "tw-flex tw-gap-0.5 group-focus:tw-opacity-100 focus-visible:tw-opacity-100 focus-within:tw-opacity-100 group-hover:tw-opacity-100",
57
+ a || (r == null ? void 0 : r.id) === e.id ? "tw-opacity-100" : "tw-opacity-0"
58
+ ]),
59
+ children: [
60
+ /* @__PURE__ */ t(
61
+ "button",
62
+ {
63
+ ...F,
64
+ ...c,
65
+ "aria-label": "Drag attachment",
66
+ className: h([
67
+ " tw-border-button-border tw-bg-button-background active:tw-bg-button-background-pressed tw-group tw-border tw-box-box tw-relative tw-flex tw-items-center tw-justify-center tw-outline-none tw-font-medium tw-rounded tw-h-9 tw-w-9 ",
68
+ o || a ? "tw-cursor-grabbing tw-bg-button-background-pressed hover:tw-bg-button-background-pressed" : "tw-cursor-grab hover:tw-bg-button-background-hover",
69
+ v && B,
70
+ v && "tw-z-[2]"
71
+ ]),
72
+ children: /* @__PURE__ */ t(L, {})
73
+ }
74
+ ),
75
+ /* @__PURE__ */ t("div", { "data-test-id": "attachments-actionbar-flyout", children: /* @__PURE__ */ t(
76
+ U,
77
+ {
78
+ placement: $.Right,
79
+ isOpen: (r == null ? void 0 : r.id) === e.id,
80
+ fitContent: !0,
81
+ legacyFooter: !1,
82
+ onOpenChange: (x) => i(x ? e : void 0),
83
+ trigger: (x, R) => /* @__PURE__ */ t(
84
+ O,
85
+ {
86
+ ref: R,
87
+ icon: /* @__PURE__ */ t(T, {}),
88
+ emphasis: X.Default,
89
+ onClick: () => i(e)
90
+ }
91
+ ),
92
+ children: /* @__PURE__ */ t(
93
+ G,
94
+ {
95
+ menuBlocks: [
96
+ {
97
+ id: "menu",
98
+ menuItems: [
99
+ {
100
+ id: "upload",
101
+ size: f.XSmall,
102
+ title: "Replace with upload",
103
+ onClick: () => {
104
+ C(), i(void 0);
105
+ },
106
+ initialValue: !0,
107
+ decorator: /* @__PURE__ */ t("div", { className: "tw-mr-2", children: /* @__PURE__ */ t(H, {}) })
108
+ },
109
+ {
110
+ id: "asset",
111
+ size: f.XSmall,
112
+ title: "Replace with asset",
113
+ onClick: () => {
114
+ m(), i(void 0);
115
+ },
116
+ initialValue: !0,
117
+ decorator: /* @__PURE__ */ t("div", { className: "tw-mr-2", children: /* @__PURE__ */ t(_, {}) })
118
+ }
119
+ ]
120
+ },
121
+ {
122
+ id: "menu-delete",
123
+ menuItems: [
124
+ {
125
+ id: "delete",
126
+ size: f.XSmall,
127
+ title: "Delete",
128
+ style: Y.Danger,
129
+ onClick: () => {
130
+ d(), i(void 0);
131
+ },
132
+ initialValue: !0,
133
+ decorator: /* @__PURE__ */ t("div", { className: "tw-mr-2", children: /* @__PURE__ */ t(q, {}) })
134
+ }
135
+ ]
136
+ }
137
+ ]
138
+ }
139
+ )
140
+ }
141
+ ) })
142
+ ]
143
+ }
144
+ )
145
+ ]
146
+ }
147
+ );
148
+ }
149
+ );
150
+ y.displayName = "AttachmentItem";
151
+ const st = (e) => {
152
+ const { attributes: s, listeners: c, setNodeRef: u, transform: o, transition: a, isDragging: n } = M({
153
+ id: e.item.id
154
+ }), d = {
155
+ transform: o ? `translate(${o.x}px, ${o.y}px)` : "",
156
+ transition: a,
157
+ zIndex: n ? 2 : 1
158
+ }, m = { ...s, ...c };
159
+ return /* @__PURE__ */ t(
160
+ y,
161
+ {
162
+ ref: u,
163
+ isDragging: n,
164
+ transformStyle: d,
165
+ draggableProps: m,
166
+ ...e
167
+ }
168
+ );
169
+ };
170
+ export {
171
+ y as AttachmentItem,
172
+ st as SortableAttachmentItem
173
+ };
174
+ //# sourceMappingURL=AttachmentItem.es.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AttachmentItem.es.js","sources":["../../../src/components/Attachments/AttachmentItem.tsx"],"sourcesContent":["/* (c) Copyright Frontify Ltd., all rights reserved. */\n\nimport { MutableRefObject, forwardRef, useEffect, useState } from 'react';\nimport { Asset, useAssetUpload, useFileInput } from '@frontify/app-bridge';\nimport { useSortable } from '@dnd-kit/sortable';\n\nimport {\n ActionMenu,\n Button,\n ButtonEmphasis,\n FOCUS_STYLE,\n Flyout,\n FlyoutPlacement,\n IconArrowCircleUp20,\n IconDocument24,\n IconGrabHandle20,\n IconImage24,\n IconImageStack20,\n IconMusicNote24,\n IconPen20,\n IconPlayFrame24,\n IconTrashBin20,\n LoadingCircle,\n LoadingCircleSize,\n MenuItemContentSize,\n MenuItemStyle,\n} from '@frontify/fondue';\nimport { AttachmentItemProps, SortableAttachmentItemProps } from './types';\nimport { joinClassNames } from '../../utilities';\nimport { useFocusRing } from '@react-aria/focus';\n\nconst getDecorator = (type: string) => {\n if (type === 'IMAGE') {\n return <IconImage24 />;\n } else if (type === 'VIDEO') {\n return <IconPlayFrame24 />;\n } else if (type === 'AUDIO') {\n return <IconMusicNote24 />;\n } else {\n return <IconDocument24 />;\n }\n};\n\nexport const AttachmentItem = forwardRef<HTMLButtonElement, AttachmentItemProps>(\n (\n {\n item,\n isEditing,\n draggableProps,\n transformStyle,\n isDragging,\n isOverlay,\n isLoading,\n onDelete,\n onReplaceWithBrowse,\n onReplaceWithUpload,\n onDownload,\n },\n ref,\n ) => {\n const [selectedAsset, setSelectedAsset] = useState<Asset | undefined>();\n const [openFileDialog, { selectedFiles }] = useFileInput({ multiple: true, accept: 'image/*' });\n const [uploadFile, { results: uploadResults, doneAll }] = useAssetUpload();\n\n const { focusProps, isFocusVisible } = useFocusRing();\n\n useEffect(() => {\n if (selectedFiles) {\n uploadFile(selectedFiles[0]);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [selectedFiles]);\n\n useEffect(() => {\n if (doneAll) {\n onReplaceWithUpload(uploadResults[0]);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [doneAll, uploadResults]);\n\n const showLoadingCircle = isLoading || (selectedFiles && !doneAll);\n\n return (\n <button\n aria-label=\"Download attachment\"\n data-test-id=\"attachments-item\"\n onClick={() => onDownload?.()}\n ref={ref}\n style={{\n ...transformStyle,\n opacity: isDragging && !isOverlay ? 0.3 : 1,\n fontFamily: 'var(-f-theme-settings-body-font-family)',\n }}\n className={joinClassNames([\n 'tw-cursor-pointer tw-text-left tw-w-full tw-relative tw-flex tw-gap-3 tw-px-5 tw-py-3 tw-items-center tw-group hover:tw-bg-box-neutral-hover',\n isDragging ? 'tw-bg-box-neutral-hover' : '',\n ])}\n >\n <div className=\"tw-text-text-weak group-hover:tw-text-box-neutral-inverse-hover\">\n {showLoadingCircle ? (\n <LoadingCircle size={LoadingCircleSize.Small} />\n ) : (\n getDecorator(item.objectType)\n )}\n </div>\n <div className=\"tw-text-s tw-flex-1 tw-min-w-0\">\n <div className=\"tw-whitespace-nowrap tw-overflow-hidden tw-text-ellipsis tw-font-bold tw-text-text-weak group-hover:tw-text-box-neutral-inverse-hover\">\n {item.title}\n </div>\n <div className=\"tw-text-text-weak\">{`${item.fileSizeHumanReadable} - ${item.extension}`}</div>\n </div>\n {isEditing && (\n <div\n data-test-id=\"attachments-actionbar\"\n className={joinClassNames([\n 'tw-flex tw-gap-0.5 group-focus:tw-opacity-100 focus-visible:tw-opacity-100 focus-within:tw-opacity-100 group-hover:tw-opacity-100',\n isOverlay || selectedAsset?.id === item.id ? 'tw-opacity-100' : 'tw-opacity-0',\n ])}\n >\n <button\n {...focusProps}\n {...draggableProps}\n aria-label=\"Drag attachment\"\n className={joinClassNames([\n ' tw-border-button-border tw-bg-button-background active:tw-bg-button-background-pressed tw-group tw-border tw-box-box tw-relative tw-flex tw-items-center tw-justify-center tw-outline-none tw-font-medium tw-rounded tw-h-9 tw-w-9 ',\n isDragging || isOverlay\n ? 'tw-cursor-grabbing tw-bg-button-background-pressed hover:tw-bg-button-background-pressed'\n : 'tw-cursor-grab hover:tw-bg-button-background-hover',\n isFocusVisible && FOCUS_STYLE,\n isFocusVisible && 'tw-z-[2]',\n ])}\n >\n <IconGrabHandle20 />\n </button>\n <div data-test-id=\"attachments-actionbar-flyout\">\n <Flyout\n placement={FlyoutPlacement.Right}\n isOpen={selectedAsset?.id === item.id}\n fitContent\n legacyFooter={false}\n onOpenChange={(isOpen) => setSelectedAsset(isOpen ? item : undefined)}\n trigger={(_, ref) => (\n <Button\n ref={ref as MutableRefObject<HTMLButtonElement>}\n icon={<IconPen20 />}\n emphasis={ButtonEmphasis.Default}\n onClick={() => setSelectedAsset(item)}\n />\n )}\n >\n <ActionMenu\n menuBlocks={[\n {\n id: 'menu',\n menuItems: [\n {\n id: 'upload',\n size: MenuItemContentSize.XSmall,\n title: 'Replace with upload',\n onClick: () => {\n openFileDialog();\n setSelectedAsset(undefined);\n },\n\n initialValue: true,\n decorator: (\n <div className=\"tw-mr-2\">\n <IconArrowCircleUp20 />\n </div>\n ),\n },\n\n {\n id: 'asset',\n size: MenuItemContentSize.XSmall,\n title: 'Replace with asset',\n onClick: () => {\n onReplaceWithBrowse();\n setSelectedAsset(undefined);\n },\n initialValue: true,\n decorator: (\n <div className=\"tw-mr-2\">\n <IconImageStack20 />\n </div>\n ),\n },\n ],\n },\n {\n id: 'menu-delete',\n menuItems: [\n {\n id: 'delete',\n size: MenuItemContentSize.XSmall,\n title: 'Delete',\n style: MenuItemStyle.Danger,\n onClick: () => {\n onDelete();\n setSelectedAsset(undefined);\n },\n\n initialValue: true,\n decorator: (\n <div className=\"tw-mr-2\">\n <IconTrashBin20 />\n </div>\n ),\n },\n ],\n },\n ]}\n />\n </Flyout>\n </div>\n </div>\n )}\n </button>\n );\n },\n);\n\nAttachmentItem.displayName = 'AttachmentItem';\n\nexport const SortableAttachmentItem = (props: SortableAttachmentItemProps) => {\n const { attributes, listeners, setNodeRef, transform, transition, isDragging } = useSortable({\n id: props.item.id,\n });\n\n const transformStyle = {\n transform: transform ? `translate(${transform.x}px, ${transform.y}px)` : '',\n transition,\n zIndex: isDragging ? 2 : 1,\n };\n\n const draggableProps = { ...attributes, ...listeners };\n\n return (\n <AttachmentItem\n ref={setNodeRef}\n isDragging={isDragging}\n transformStyle={transformStyle}\n draggableProps={draggableProps}\n {...props}\n />\n );\n};\n"],"names":["getDecorator","type","IconImage24","IconPlayFrame24","IconMusicNote24","IconDocument24","AttachmentItem","forwardRef","item","isEditing","draggableProps","transformStyle","isDragging","isOverlay","isLoading","onDelete","onReplaceWithBrowse","onReplaceWithUpload","onDownload","ref","selectedAsset","setSelectedAsset","useState","openFileDialog","selectedFiles","useFileInput","uploadFile","uploadResults","doneAll","useAssetUpload","focusProps","isFocusVisible","useFocusRing","useEffect","showLoadingCircle","jsxs","joinClassNames","jsx","LoadingCircle","LoadingCircleSize","FOCUS_STYLE","IconGrabHandle20","Flyout","FlyoutPlacement","isOpen","_","Button","IconPen20","ButtonEmphasis","ActionMenu","MenuItemContentSize","IconArrowCircleUp20","IconImageStack20","MenuItemStyle","IconTrashBin20","SortableAttachmentItem","props","attributes","listeners","setNodeRef","transform","transition","useSortable"],"mappings":"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"}
@@ -0,0 +1,160 @@
1
+ import { jsx as n, jsxs as y } from "react/jsx-runtime";
2
+ import { useState as d, useEffect as w } from "react";
3
+ import { useSensors as Z, useSensor as T, PointerSensor as _, KeyboardSensor as $, DndContext as tt, closestCenter as et, DragOverlay as ot } from "@dnd-kit/core";
4
+ import { restrictToWindowEdges as nt } from "@dnd-kit/modifiers";
5
+ import { SortableContext as st, rectSortingStrategy as it, arrayMove as dt } from "@dnd-kit/sortable";
6
+ import { useEditorState as at, useAssetChooser as lt, useAssetUpload as rt } from "@frontify/app-bridge";
7
+ import { LegacyTooltip as ct, TooltipPosition as ut, Flyout as gt, FlyoutPlacement as pt, AssetInput as ht, AssetInputSize as mt } from "@frontify/fondue";
8
+ import { SortableAttachmentItem as ft, AttachmentItem as yt } from "./AttachmentItem.es.js";
9
+ import { AttachmentsButtonTrigger as wt } from "./AttachmentsButtonTrigger.es.js";
10
+ const Et = ({
11
+ items: a = [],
12
+ onDelete: I,
13
+ onReplaceWithBrowse: N,
14
+ onReplaceWithUpload: P,
15
+ onBrowse: R,
16
+ onUpload: B,
17
+ onSorted: j,
18
+ appBridge: g,
19
+ triggerComponent: k = wt,
20
+ isOpen: A,
21
+ onOpenChange: z
22
+ }) => {
23
+ const [o, S] = d(a), [V, K] = d(!1), M = Z(T(_), T($)), [v, x] = d(void 0), [C, p] = d(!1), [l, c] = d([]), [h, q] = d(null), u = at(g), { openAssetChooser: D, closeAssetChooser: b } = lt(g), F = A !== void 0, m = F ? A : V, i = o == null ? void 0 : o.find((t) => t.id === v), [G, { results: E, doneAll: L }] = rt({
24
+ onUploadProgress: () => !C && p(!0)
25
+ }), r = (t) => {
26
+ const e = F ? z : K;
27
+ e == null || e(t);
28
+ };
29
+ w(() => {
30
+ S(a);
31
+ }, [a]), w(() => {
32
+ h && (p(!0), G(h));
33
+ }, [h]), w(() => {
34
+ (async () => {
35
+ L && (await B(E), p(!1));
36
+ })();
37
+ }, [L, E]);
38
+ const H = () => {
39
+ r(!1), D(
40
+ (t) => {
41
+ R(t), b(), r(!0);
42
+ },
43
+ {
44
+ multiSelection: !0,
45
+ selectedValueIds: o.map((t) => t.id)
46
+ }
47
+ );
48
+ }, O = (t) => {
49
+ r(!1), D(
50
+ async (e) => {
51
+ r(!0), b(), c([...l, t.id]), await N(t, e[0]), c(l.filter((s) => s !== t.id));
52
+ },
53
+ {
54
+ multiSelection: !1,
55
+ selectedValueIds: o.map((e) => e.id)
56
+ }
57
+ );
58
+ }, U = async (t, e) => {
59
+ c([...l, t.id]), await P(t, e), c(l.filter((s) => s !== t.id));
60
+ }, J = (t) => {
61
+ const { active: e } = t;
62
+ x(e.id);
63
+ }, Q = (t) => {
64
+ const { active: e, over: s } = t;
65
+ if (s && e.id !== s.id && o) {
66
+ const X = o.findIndex((f) => f.id === e.id), Y = o.findIndex((f) => f.id === s.id), W = dt(o, X, Y);
67
+ S(W), j(W);
68
+ }
69
+ x(void 0);
70
+ };
71
+ return u || ((o == null ? void 0 : o.length) ?? 0) > 0 ? /* @__PURE__ */ n(
72
+ ct,
73
+ {
74
+ withArrow: !0,
75
+ position: ut.Top,
76
+ content: "Attachments",
77
+ disabled: m,
78
+ enterDelay: 500,
79
+ triggerElement: /* @__PURE__ */ n("div", { "data-test-id": "attachments-flyout-button", children: /* @__PURE__ */ n(
80
+ gt,
81
+ {
82
+ placement: pt.BottomRight,
83
+ onOpenChange: (t) => r(i ? !0 : t),
84
+ isOpen: m,
85
+ hug: !1,
86
+ fitContent: !0,
87
+ legacyFooter: !1,
88
+ trigger: (t, e) => /* @__PURE__ */ n(
89
+ k,
90
+ {
91
+ isFlyoutOpen: m,
92
+ triggerProps: t,
93
+ triggerRef: e,
94
+ children: /* @__PURE__ */ n("div", { children: a.length > 0 ? a.length : "Add" })
95
+ }
96
+ ),
97
+ children: /* @__PURE__ */ y("div", { className: "tw-w-[300px]", "data-test-id": "attachments-flyout-content", children: [
98
+ o.length > 0 && /* @__PURE__ */ y(
99
+ tt,
100
+ {
101
+ sensors: M,
102
+ collisionDetection: et,
103
+ onDragStart: J,
104
+ onDragEnd: Q,
105
+ modifiers: [nt],
106
+ children: [
107
+ /* @__PURE__ */ n(st, { items: o, strategy: it, children: /* @__PURE__ */ n("div", { className: "tw-border-b tw-border-b-line", children: o.map((t) => /* @__PURE__ */ n(
108
+ ft,
109
+ {
110
+ isEditing: u,
111
+ isLoading: l.includes(t.id),
112
+ item: t,
113
+ onDelete: () => I(t),
114
+ onReplaceWithBrowse: () => O(t),
115
+ onReplaceWithUpload: (e) => U(t, e),
116
+ onDownload: () => g.dispatch({
117
+ name: "downloadAsset",
118
+ payload: t
119
+ })
120
+ },
121
+ t.id
122
+ )) }) }),
123
+ /* @__PURE__ */ n(ot, { children: i && /* @__PURE__ */ n(
124
+ yt,
125
+ {
126
+ isOverlay: !0,
127
+ isEditing: u,
128
+ item: i,
129
+ isDragging: !0,
130
+ onDelete: () => I(i),
131
+ onReplaceWithBrowse: () => O(i),
132
+ onReplaceWithUpload: (t) => U(i, t)
133
+ },
134
+ v
135
+ ) })
136
+ ]
137
+ }
138
+ ),
139
+ u && /* @__PURE__ */ y("div", { className: "tw-px-5 tw-py-3", children: [
140
+ /* @__PURE__ */ n("div", { className: "tw-font-body tw-font-medium tw-text-text tw-text-s tw-my-4", children: "Add attachments" }),
141
+ /* @__PURE__ */ n(
142
+ ht,
143
+ {
144
+ isLoading: C,
145
+ size: mt.Small,
146
+ onUploadClick: (t) => q(t),
147
+ onLibraryClick: H
148
+ }
149
+ )
150
+ ] })
151
+ ] })
152
+ }
153
+ ) })
154
+ }
155
+ ) : null;
156
+ };
157
+ export {
158
+ Et as Attachments
159
+ };
160
+ //# sourceMappingURL=Attachments.es.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Attachments.es.js","sources":["../../../src/components/Attachments/Attachments.tsx"],"sourcesContent":["/* (c) Copyright Frontify Ltd., all rights reserved. */\n\nimport { MutableRefObject, useEffect, useState } from 'react';\nimport {\n DndContext,\n DragEndEvent,\n DragOverlay,\n DragStartEvent,\n KeyboardSensor,\n PointerSensor,\n closestCenter,\n useSensor,\n useSensors,\n} from '@dnd-kit/core';\nimport { restrictToWindowEdges } from '@dnd-kit/modifiers';\nimport { SortableContext, arrayMove, rectSortingStrategy } from '@dnd-kit/sortable';\nimport { Asset, useAssetChooser, useAssetUpload, useEditorState } from '@frontify/app-bridge';\nimport {\n AssetInput,\n AssetInputSize,\n Flyout,\n FlyoutPlacement,\n LegacyTooltip as Tooltip,\n TooltipPosition,\n} from '@frontify/fondue';\n\nimport { AttachmentItem, SortableAttachmentItem } from './AttachmentItem';\nimport { type AttachmentsProps } from './types';\nimport { AttachmentsButtonTrigger } from './AttachmentsButtonTrigger';\n\nexport const Attachments = ({\n items = [],\n onDelete,\n onReplaceWithBrowse,\n onReplaceWithUpload,\n onBrowse,\n onUpload,\n onSorted,\n appBridge,\n triggerComponent: TriggerComponent = AttachmentsButtonTrigger,\n isOpen,\n onOpenChange,\n}: AttachmentsProps) => {\n const [internalItems, setInternalItems] = useState<Asset[]>(items);\n const [isFlyoutOpenInternal, setIsFlyoutOpenInternal] = useState(false);\n const sensors = useSensors(useSensor(PointerSensor), useSensor(KeyboardSensor));\n const [draggedAssetId, setDraggedAssetId] = useState<number | undefined>(undefined);\n const [isUploadLoading, setIsUploadLoading] = useState(false);\n const [assetIdsLoading, setAssetIdsLoading] = useState<number[]>([]);\n const [selectedFiles, setSelectedFiles] = useState<FileList | null>(null);\n const isEditing = useEditorState(appBridge);\n const { openAssetChooser, closeAssetChooser } = useAssetChooser(appBridge);\n const isControllingStateExternally = isOpen !== undefined;\n const isFlyoutOpen = isControllingStateExternally ? isOpen : isFlyoutOpenInternal;\n\n const draggedItem = internalItems?.find((item) => item.id === draggedAssetId);\n\n const [uploadFile, { results: uploadResults, doneAll }] = useAssetUpload({\n onUploadProgress: () => !isUploadLoading && setIsUploadLoading(true),\n });\n\n const handleFlyoutOpenChange = (isOpen: boolean) => {\n const stateSetter = isControllingStateExternally ? onOpenChange : setIsFlyoutOpenInternal;\n\n stateSetter?.(isOpen);\n };\n\n useEffect(() => {\n setInternalItems(items);\n }, [items]);\n\n useEffect(() => {\n if (selectedFiles) {\n setIsUploadLoading(true);\n uploadFile(selectedFiles);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [selectedFiles]);\n\n useEffect(() => {\n const uploadDone = async () => {\n if (doneAll) {\n await onUpload(uploadResults);\n setIsUploadLoading(false);\n }\n };\n uploadDone();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [doneAll, uploadResults]);\n\n const onOpenAssetChooser = () => {\n handleFlyoutOpenChange(false);\n openAssetChooser(\n (result: Asset[]) => {\n onBrowse(result);\n closeAssetChooser();\n handleFlyoutOpenChange(true);\n },\n {\n multiSelection: true,\n selectedValueIds: internalItems.map((internalItem) => internalItem.id),\n },\n );\n };\n\n const onReplaceItemWithBrowse = (toReplace: Asset) => {\n handleFlyoutOpenChange(false);\n openAssetChooser(\n async (result: Asset[]) => {\n handleFlyoutOpenChange(true);\n closeAssetChooser();\n setAssetIdsLoading([...assetIdsLoading, toReplace.id]);\n await onReplaceWithBrowse(toReplace, result[0]);\n setAssetIdsLoading(assetIdsLoading.filter((id) => id !== toReplace.id));\n },\n {\n multiSelection: false,\n selectedValueIds: internalItems.map((internalItem) => internalItem.id),\n },\n );\n };\n\n const onReplaceItemWithUpload = async (toReplace: Asset, uploadedAsset: Asset) => {\n setAssetIdsLoading([...assetIdsLoading, toReplace.id]);\n await onReplaceWithUpload(toReplace, uploadedAsset);\n setAssetIdsLoading(assetIdsLoading.filter((id) => id !== toReplace.id));\n };\n\n const handleDragStart = (event: DragStartEvent) => {\n const { active } = event;\n setDraggedAssetId(active.id as number);\n };\n\n const handleDragEnd = (event: DragEndEvent) => {\n const { active, over } = event;\n if (over && active.id !== over.id && internalItems) {\n const oldIndex = internalItems.findIndex((i) => i.id === active.id);\n const newIndex = internalItems.findIndex((i) => i.id === over.id);\n const sortedItems = arrayMove(internalItems, oldIndex, newIndex);\n setInternalItems(sortedItems);\n onSorted(sortedItems);\n }\n setDraggedAssetId(undefined);\n };\n\n return isEditing || (internalItems?.length ?? 0) > 0 ? (\n <Tooltip\n withArrow\n position={TooltipPosition.Top}\n content=\"Attachments\"\n disabled={isFlyoutOpen}\n enterDelay={500}\n triggerElement={\n <div data-test-id=\"attachments-flyout-button\">\n <Flyout\n placement={FlyoutPlacement.BottomRight}\n onOpenChange={(isOpen) => handleFlyoutOpenChange(!!draggedItem ? true : isOpen)}\n isOpen={isFlyoutOpen}\n hug={false}\n fitContent\n legacyFooter={false}\n trigger={(triggerProps, triggerRef) => (\n <TriggerComponent\n isFlyoutOpen={isFlyoutOpen}\n triggerProps={triggerProps}\n triggerRef={triggerRef as MutableRefObject<HTMLButtonElement>}\n >\n <div>{items.length > 0 ? items.length : 'Add'}</div>\n </TriggerComponent>\n )}\n >\n <div className=\"tw-w-[300px]\" data-test-id=\"attachments-flyout-content\">\n {internalItems.length > 0 && (\n <DndContext\n sensors={sensors}\n collisionDetection={closestCenter}\n onDragStart={handleDragStart}\n onDragEnd={handleDragEnd}\n modifiers={[restrictToWindowEdges]}\n >\n <SortableContext items={internalItems} strategy={rectSortingStrategy}>\n <div className=\"tw-border-b tw-border-b-line\">\n {internalItems.map((item) => (\n <SortableAttachmentItem\n isEditing={isEditing}\n isLoading={assetIdsLoading.includes(item.id)}\n key={item.id}\n item={item}\n onDelete={() => onDelete(item)}\n onReplaceWithBrowse={() => onReplaceItemWithBrowse(item)}\n onReplaceWithUpload={(uploadedAsset: Asset) =>\n onReplaceItemWithUpload(item, uploadedAsset)\n }\n onDownload={() =>\n appBridge.dispatch({\n name: 'downloadAsset',\n payload: item,\n })\n }\n />\n ))}\n </div>\n </SortableContext>\n <DragOverlay>\n {draggedItem && (\n <AttachmentItem\n isOverlay={true}\n isEditing={isEditing}\n key={draggedAssetId}\n item={draggedItem}\n isDragging={true}\n onDelete={() => onDelete(draggedItem)}\n onReplaceWithBrowse={() => onReplaceItemWithBrowse(draggedItem)}\n onReplaceWithUpload={(uploadedAsset: Asset) =>\n onReplaceItemWithUpload(draggedItem, uploadedAsset)\n }\n />\n )}\n </DragOverlay>\n </DndContext>\n )}\n {isEditing && (\n <div className=\"tw-px-5 tw-py-3\">\n <div className=\"tw-font-body tw-font-medium tw-text-text tw-text-s tw-my-4\">\n Add attachments\n </div>\n <AssetInput\n isLoading={isUploadLoading}\n size={AssetInputSize.Small}\n onUploadClick={(fileList) => setSelectedFiles(fileList)}\n onLibraryClick={onOpenAssetChooser}\n />\n </div>\n )}\n </div>\n </Flyout>\n </div>\n }\n />\n ) : null;\n};\n"],"names":["Attachments","items","onDelete","onReplaceWithBrowse","onReplaceWithUpload","onBrowse","onUpload","onSorted","appBridge","TriggerComponent","AttachmentsButtonTrigger","isOpen","onOpenChange","internalItems","setInternalItems","useState","isFlyoutOpenInternal","setIsFlyoutOpenInternal","sensors","useSensors","useSensor","PointerSensor","KeyboardSensor","draggedAssetId","setDraggedAssetId","isUploadLoading","setIsUploadLoading","assetIdsLoading","setAssetIdsLoading","selectedFiles","setSelectedFiles","isEditing","useEditorState","openAssetChooser","closeAssetChooser","useAssetChooser","isControllingStateExternally","isFlyoutOpen","draggedItem","item","uploadFile","uploadResults","doneAll","useAssetUpload","handleFlyoutOpenChange","stateSetter","useEffect","onOpenAssetChooser","result","internalItem","onReplaceItemWithBrowse","toReplace","id","onReplaceItemWithUpload","uploadedAsset","handleDragStart","event","active","handleDragEnd","over","oldIndex","i","newIndex","sortedItems","arrayMove","jsx","Tooltip","TooltipPosition","Flyout","FlyoutPlacement","triggerProps","triggerRef","jsxs","DndContext","closestCenter","restrictToWindowEdges","SortableContext","rectSortingStrategy","SortableAttachmentItem","DragOverlay","AttachmentItem","AssetInput","AssetInputSize","fileList"],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ import { jsxs as s, jsx as t } from "react/jsx-runtime";
2
+ import { IconPaperclip16 as a, IconCaretDown12 as i } from "@frontify/fondue";
3
+ import { joinClassNames as w } from "../../utilities/react/joinClassNames.es.js";
4
+ const b = ({
5
+ children: e,
6
+ isFlyoutOpen: r,
7
+ triggerProps: o,
8
+ triggerRef: n
9
+ }) => /* @__PURE__ */ s(
10
+ "button",
11
+ {
12
+ className: w([
13
+ "tw-flex tw-text-xs tw-font-body tw-items-center tw-gap-1 tw-rounded-full tw-outline tw-outline-1 tw-outline-offset-1 tw-p-1.5 tw-outline-line",
14
+ r ? "tw-bg-box-neutral-pressed tw-text-box-neutral-inverse-pressed" : "tw-bg-base hover:tw-bg-box-neutral-hover active:tw-bg-box-neutral-pressed tw-text-box-neutral-inverse hover:tw-text-box-neutral-inverse-hover active:tw-text-box-neutral-inverse-pressed"
15
+ ]),
16
+ ...o,
17
+ ref: n,
18
+ "data-test-id": "attachments-button-trigger",
19
+ children: [
20
+ /* @__PURE__ */ t(a, {}),
21
+ e,
22
+ /* @__PURE__ */ t(i, {})
23
+ ]
24
+ }
25
+ );
26
+ export {
27
+ b as AttachmentsButtonTrigger
28
+ };
29
+ //# sourceMappingURL=AttachmentsButtonTrigger.es.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AttachmentsButtonTrigger.es.js","sources":["../../../src/components/Attachments/AttachmentsButtonTrigger.tsx"],"sourcesContent":["/* (c) Copyright Frontify Ltd., all rights reserved. */\n\nimport { IconCaretDown12, IconPaperclip16 } from '@frontify/fondue';\n\nimport { joinClassNames } from '../../utilities';\n\nimport { type AttachmentsTriggerProps } from './types';\n\nexport const AttachmentsButtonTrigger = ({\n children,\n isFlyoutOpen,\n triggerProps,\n triggerRef,\n}: AttachmentsTriggerProps) => (\n <button\n className={joinClassNames([\n 'tw-flex tw-text-xs tw-font-body tw-items-center tw-gap-1 tw-rounded-full tw-outline tw-outline-1 tw-outline-offset-1 tw-p-1.5 tw-outline-line',\n isFlyoutOpen\n ? 'tw-bg-box-neutral-pressed tw-text-box-neutral-inverse-pressed'\n : 'tw-bg-base hover:tw-bg-box-neutral-hover active:tw-bg-box-neutral-pressed tw-text-box-neutral-inverse hover:tw-text-box-neutral-inverse-hover active:tw-text-box-neutral-inverse-pressed',\n ])}\n {...triggerProps}\n ref={triggerRef}\n data-test-id=\"attachments-button-trigger\"\n >\n <IconPaperclip16 />\n {children}\n <IconCaretDown12 />\n </button>\n);\n"],"names":["AttachmentsButtonTrigger","children","isFlyoutOpen","triggerProps","triggerRef","jsxs","joinClassNames","jsx","IconPaperclip16","IconCaretDown12"],"mappings":";;;AAQO,MAAMA,IAA2B,CAAC;AAAA,EACrC,UAAAC;AAAA,EACA,cAAAC;AAAA,EACA,cAAAC;AAAA,EACA,YAAAC;AACJ,MACI,gBAAAC;AAAA,EAAC;AAAA,EAAA;AAAA,IACG,WAAWC,EAAe;AAAA,MACtB;AAAA,MACAJ,IACM,kEACA;AAAA,IAAA,CACT;AAAA,IACA,GAAGC;AAAA,IACJ,KAAKC;AAAA,IACL,gBAAa;AAAA,IAEb,UAAA;AAAA,MAAA,gBAAAG,EAACC,GAAgB,EAAA;AAAA,MAChBP;AAAA,wBACAQ,GAAgB,EAAA;AAAA,IAAA;AAAA,EAAA;AACrB;"}
@@ -0,0 +1,150 @@
1
+ import { jsxs as c, jsx as e, Fragment as z } from "react/jsx-runtime";
2
+ import { LoadingCircle as O, IconExclamationMarkTriangle as X, Flyout as A, ActionMenu as F, MenuItemContentSize as I, IconArrowCircleUp20 as R, IconImageStack20 as T } from "@frontify/fondue";
3
+ import { useState as g, useRef as V } from "react";
4
+ import { joinClassNames as P } from "../../utilities/react/joinClassNames.es.js";
5
+ import { FileExtensionSets as Y } from "@frontify/app-bridge";
6
+ const H = ({
7
+ onDrop: s,
8
+ label: u,
9
+ icon: p,
10
+ secondaryLabel: f,
11
+ isLoading: l,
12
+ fillParentContainer: N,
13
+ onAssetChooseClick: x,
14
+ onUploadClick: k,
15
+ withMenu: j = !0,
16
+ onClick: m,
17
+ validFileType: v,
18
+ verticalLayout: M
19
+ }) => {
20
+ const [d, b] = g(!1), [i, w] = g(), h = V(null), [o, a] = g(void 0), S = (t) => {
21
+ if (t.preventDefault(), b(!1), !B(t.dataTransfer.files)) {
22
+ a("Invalid"), setTimeout(() => {
23
+ a(void 0);
24
+ }, 1e3);
25
+ return;
26
+ }
27
+ s == null || s(t.dataTransfer.files);
28
+ }, B = (t) => {
29
+ if (!v)
30
+ return !0;
31
+ for (let r = 0; r < t.length; r++) {
32
+ const n = t[r].name.split(".").pop() ?? "";
33
+ if (!Y[v].includes(n))
34
+ return !1;
35
+ }
36
+ return !0;
37
+ }, C = (t) => {
38
+ if (!h.current || l)
39
+ return;
40
+ const { left: r, top: n } = h.current.getBoundingClientRect(), E = t.clientX - r, y = t.clientY - n;
41
+ w([E, y]);
42
+ };
43
+ return /* @__PURE__ */ c(
44
+ "button",
45
+ {
46
+ ref: h,
47
+ "data-test-id": "block-inject-button",
48
+ className: P([
49
+ "tw-font-body tw-relative tw-text-sm tw-leading-4 tw-border tw-flex tw-items-center tw-justify-center tw-cursor-pointer tw-gap-3 tw-w-full first:tw-rounded-tl last:tw-rounded-br",
50
+ M ? "[&:not(:first-child)]:tw-border-t-0 first:tw-rounded-tr last:tw-rounded-bl" : "[&:not(:first-child)]:tw-border-l-0 first:tw-rounded-bl last:tw-rounded-tr",
51
+ N ? "tw-h-full" : "tw-h-[72px]",
52
+ d && !l ? "tw-border-dashed" : "tw-border-solid",
53
+ i && "tw-bg-blank-state-pressed-inverse",
54
+ d && "tw-bg-blank-state-weak-inverse",
55
+ o ? "!tw-border-red-50 !tw-cursor-not-allowed" : " tw-border-blank-state-line",
56
+ l || i || d || o ? "" : "tw-text-text-weak hover:tw-text-blank-state-hover hover:tw-bg-blank-state-hover-inverse hover:tw-border-blank-state-line-hover active:tw-text-blank-state-pressed active:tw-bg-blank-state-pressed-inverse active:tw-border-blank-state-line-hover",
57
+ (d || i) && !o ? "[&>*]:tw-pointer-events-none tw-border-blank-state-line-hover" : "tw-bg-blank-state-shaded-inverse tw-text-blank-state-shaded"
58
+ ]),
59
+ onDragEnter: s ? (t) => {
60
+ var r;
61
+ if (b(!0), v === "Images")
62
+ for (const n of Array.from(t.dataTransfer.items))
63
+ (r = n == null ? void 0 : n.type) != null && r.startsWith("image/") ? a(void 0) : a("Invalid");
64
+ } : void 0,
65
+ onDragLeave: s ? () => {
66
+ b(!1), a(void 0);
67
+ } : void 0,
68
+ onDrop: s ? S : void 0,
69
+ onClick: (t) => {
70
+ j && C(t), m == null || m();
71
+ },
72
+ children: [
73
+ l ? /* @__PURE__ */ e(O, {}) : (
74
+ // eslint-disable-next-line unicorn/no-nested-ternary
75
+ o ? /* @__PURE__ */ c("div", { className: " tw-flex tw-items-center tw-justify-center tw-text-red-60 tw-font-medium", children: [
76
+ /* @__PURE__ */ e(X, {}),
77
+ o
78
+ ] }) : /* @__PURE__ */ c(z, { children: [
79
+ p && /* @__PURE__ */ e("div", { children: p }),
80
+ (u || f) && /* @__PURE__ */ c("div", { className: "tw-flex tw-flex-col tw-items-start", children: [
81
+ u && /* @__PURE__ */ e("div", { className: "tw-font-medium", children: u }),
82
+ f && /* @__PURE__ */ e("div", { className: "tw-font-normal", children: f })
83
+ ] })
84
+ ] })
85
+ ),
86
+ i && /* @__PURE__ */ e(
87
+ "div",
88
+ {
89
+ className: "tw-absolute tw-left-0 tw-top-full tw-z-20",
90
+ style: {
91
+ left: i[0],
92
+ top: i[1]
93
+ },
94
+ children: /* @__PURE__ */ e(
95
+ A,
96
+ {
97
+ onOpenChange: (t) => !t && w(void 0),
98
+ isOpen: !0,
99
+ fitContent: !0,
100
+ hug: !1,
101
+ legacyFooter: !1,
102
+ trigger: /* @__PURE__ */ e("div", {}),
103
+ children: /* @__PURE__ */ e(
104
+ F,
105
+ {
106
+ menuBlocks: [
107
+ {
108
+ id: "menu",
109
+ menuItems: [
110
+ ...k ? [
111
+ {
112
+ id: "upload",
113
+ size: I.XSmall,
114
+ title: "Upload asset",
115
+ onClick: () => {
116
+ k(), w(void 0);
117
+ },
118
+ initialValue: !0,
119
+ decorator: /* @__PURE__ */ e("div", { className: "tw-mr-2", children: /* @__PURE__ */ e(R, {}) })
120
+ }
121
+ ] : [],
122
+ ...x ? [
123
+ {
124
+ id: "asset",
125
+ size: I.XSmall,
126
+ title: "Browse asset",
127
+ onClick: () => {
128
+ x(), w(void 0);
129
+ },
130
+ initialValue: !0,
131
+ decorator: /* @__PURE__ */ e("div", { className: "tw-mr-2", children: /* @__PURE__ */ e(T, {}) })
132
+ }
133
+ ] : []
134
+ ]
135
+ }
136
+ ]
137
+ }
138
+ )
139
+ }
140
+ )
141
+ }
142
+ )
143
+ ]
144
+ }
145
+ );
146
+ };
147
+ export {
148
+ H as BlockInjectButton
149
+ };
150
+ //# sourceMappingURL=BlockInjectButton.es.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BlockInjectButton.es.js","sources":["../../../src/components/BlockInjectButton/BlockInjectButton.tsx"],"sourcesContent":["/* (c) Copyright Frontify Ltd., all rights reserved. */\n\nimport {\n ActionMenu,\n Flyout,\n IconArrowCircleUp20,\n IconExclamationMarkTriangle,\n IconImageStack20,\n LoadingCircle,\n MenuItemContentSize,\n} from '@frontify/fondue';\nimport { DragEventHandler, MouseEventHandler, useRef, useState } from 'react';\nimport { joinClassNames } from '../../utilities/react/joinClassNames';\nimport { BlockInjectButtonProps } from './types';\nimport { FileExtension, FileExtensionSets } from '@frontify/app-bridge';\n\nexport const BlockInjectButton = ({\n onDrop,\n label,\n icon,\n secondaryLabel,\n isLoading,\n fillParentContainer,\n onAssetChooseClick,\n onUploadClick,\n withMenu = true,\n onClick,\n validFileType,\n verticalLayout,\n}: BlockInjectButtonProps) => {\n const [isDraggingOver, setIsDraggingOver] = useState(false);\n const [menuPosition, setMenuPosition] = useState<[number, number] | undefined>();\n const buttonRef = useRef<HTMLButtonElement>(null);\n const [errorMsg, setErrorMsg] = useState<string | undefined>(undefined);\n\n const handleDrop: DragEventHandler<HTMLButtonElement> = (event) => {\n event.preventDefault();\n setIsDraggingOver(false);\n if (!isValidAsset(event.dataTransfer.files)) {\n setErrorMsg('Invalid');\n setTimeout(() => {\n setErrorMsg(undefined);\n }, 1000);\n return;\n }\n onDrop?.(event.dataTransfer.files);\n };\n\n const isValidAsset = (files: FileList) => {\n if (!validFileType) {\n return true;\n }\n for (let i = 0; i < files.length; i++) {\n const droppedFileExtension = (files[i].name.split('.').pop() ?? '') as FileExtension;\n if (!FileExtensionSets[validFileType].includes(droppedFileExtension)) {\n return false;\n }\n }\n return true;\n };\n\n const openMenu: MouseEventHandler<HTMLButtonElement> = (event) => {\n if (!buttonRef.current || isLoading) {\n return;\n }\n const { left, top } = buttonRef.current.getBoundingClientRect();\n const XInsideComponent = event.clientX - left;\n const YInsideComponent = event.clientY - top;\n setMenuPosition([XInsideComponent, YInsideComponent]);\n };\n\n return (\n <button\n ref={buttonRef}\n data-test-id=\"block-inject-button\"\n className={joinClassNames([\n 'tw-font-body tw-relative tw-text-sm tw-leading-4 tw-border tw-flex tw-items-center tw-justify-center tw-cursor-pointer tw-gap-3 tw-w-full first:tw-rounded-tl last:tw-rounded-br',\n verticalLayout\n ? '[&:not(:first-child)]:tw-border-t-0 first:tw-rounded-tr last:tw-rounded-bl'\n : '[&:not(:first-child)]:tw-border-l-0 first:tw-rounded-bl last:tw-rounded-tr',\n fillParentContainer ? 'tw-h-full' : 'tw-h-[72px]',\n isDraggingOver && !isLoading ? 'tw-border-dashed' : 'tw-border-solid',\n menuPosition && 'tw-bg-blank-state-pressed-inverse',\n isDraggingOver && 'tw-bg-blank-state-weak-inverse',\n errorMsg ? '!tw-border-red-50 !tw-cursor-not-allowed' : ' tw-border-blank-state-line',\n isLoading || menuPosition || isDraggingOver || errorMsg\n ? ''\n : 'tw-text-text-weak hover:tw-text-blank-state-hover hover:tw-bg-blank-state-hover-inverse hover:tw-border-blank-state-line-hover active:tw-text-blank-state-pressed active:tw-bg-blank-state-pressed-inverse active:tw-border-blank-state-line-hover',\n (isDraggingOver || !!menuPosition) && !errorMsg\n ? '[&>*]:tw-pointer-events-none tw-border-blank-state-line-hover'\n : 'tw-bg-blank-state-shaded-inverse tw-text-blank-state-shaded',\n ])}\n onDragEnter={\n onDrop\n ? (event) => {\n setIsDraggingOver(true);\n // is now only used for images, can be adapted if needed\n if (validFileType === 'Images') {\n for (const item of Array.from(event.dataTransfer.items)) {\n if (!item?.type?.startsWith('image/')) {\n setErrorMsg('Invalid');\n } else {\n setErrorMsg(undefined);\n }\n }\n }\n }\n : undefined\n }\n onDragLeave={\n onDrop\n ? () => {\n setIsDraggingOver(false);\n setErrorMsg(undefined);\n }\n : undefined\n }\n onDrop={onDrop ? handleDrop : undefined}\n onClick={(event) => {\n withMenu && openMenu(event);\n onClick?.();\n }}\n >\n {isLoading ? (\n <LoadingCircle />\n ) : // eslint-disable-next-line unicorn/no-nested-ternary\n errorMsg ? (\n <div className=\" tw-flex tw-items-center tw-justify-center tw-text-red-60 tw-font-medium\">\n <IconExclamationMarkTriangle />\n {errorMsg}\n </div>\n ) : (\n <>\n {icon && <div>{icon}</div>}\n {(label || secondaryLabel) && (\n <div className=\"tw-flex tw-flex-col tw-items-start\">\n {label && <div className=\"tw-font-medium\">{label}</div>}\n {secondaryLabel && <div className=\"tw-font-normal\">{secondaryLabel}</div>}\n </div>\n )}\n </>\n )}\n {menuPosition && (\n <div\n className=\"tw-absolute tw-left-0 tw-top-full tw-z-20\"\n style={{\n left: menuPosition[0],\n top: menuPosition[1],\n }}\n >\n <Flyout\n onOpenChange={(isOpen) => !isOpen && setMenuPosition(undefined)}\n isOpen={true}\n fitContent\n hug={false}\n legacyFooter={false}\n trigger={<div />}\n >\n <ActionMenu\n menuBlocks={[\n {\n id: 'menu',\n menuItems: [\n ...(onUploadClick\n ? [\n {\n id: 'upload',\n size: MenuItemContentSize.XSmall,\n title: 'Upload asset',\n onClick: () => {\n onUploadClick();\n setMenuPosition(undefined);\n },\n\n initialValue: true,\n decorator: (\n <div className=\"tw-mr-2\">\n <IconArrowCircleUp20 />\n </div>\n ),\n },\n ]\n : []),\n ...(onAssetChooseClick\n ? [\n {\n id: 'asset',\n size: MenuItemContentSize.XSmall,\n title: 'Browse asset',\n onClick: () => {\n onAssetChooseClick();\n setMenuPosition(undefined);\n },\n initialValue: true,\n decorator: (\n <div className=\"tw-mr-2\">\n <IconImageStack20 />\n </div>\n ),\n },\n ]\n : []),\n ],\n },\n ]}\n />\n </Flyout>\n </div>\n )}\n </button>\n );\n};\n"],"names":["BlockInjectButton","onDrop","label","icon","secondaryLabel","isLoading","fillParentContainer","onAssetChooseClick","onUploadClick","withMenu","onClick","validFileType","verticalLayout","isDraggingOver","setIsDraggingOver","useState","menuPosition","setMenuPosition","buttonRef","useRef","errorMsg","setErrorMsg","handleDrop","event","isValidAsset","files","i","droppedFileExtension","FileExtensionSets","openMenu","left","top","XInsideComponent","YInsideComponent","jsxs","joinClassNames","item","_a","LoadingCircle","jsx","IconExclamationMarkTriangle","Fragment","Flyout","isOpen","ActionMenu","MenuItemContentSize","IconArrowCircleUp20","IconImageStack20"],"mappings":"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"}