@blokkli/editor 1.0.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 (395) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +64 -0
  3. package/dist/module.cjs +5 -0
  4. package/dist/module.d.mts +129 -0
  5. package/dist/module.d.ts +129 -0
  6. package/dist/module.json +12 -0
  7. package/dist/module.mjs +5430 -0
  8. package/dist/runtime/adapter/drupal/graphql/base.graphql +906 -0
  9. package/dist/runtime/adapter/drupal/graphql/comments.graphql +56 -0
  10. package/dist/runtime/adapter/drupal/graphql/fragments.graphql +25 -0
  11. package/dist/runtime/adapter/drupal/graphql/library.graphql +66 -0
  12. package/dist/runtime/adapter/drupal/graphql/search.graphql +19 -0
  13. package/dist/runtime/adapter/drupal/graphql/transform.graphql +27 -0
  14. package/dist/runtime/adapter/drupal/graphqlMiddleware.d.ts +2 -0
  15. package/dist/runtime/adapter/drupal/graphqlMiddleware.js +643 -0
  16. package/dist/runtime/adapter/index.d.ts +352 -0
  17. package/dist/runtime/adapter/index.js +3 -0
  18. package/dist/runtime/blokkliPlugins/AddAction/index.vue +87 -0
  19. package/dist/runtime/blokkliPlugins/ContextMenu/Menu/index.vue +95 -0
  20. package/dist/runtime/blokkliPlugins/ContextMenu/index.vue +49 -0
  21. package/dist/runtime/blokkliPlugins/DebugOverlay/index.vue +34 -0
  22. package/dist/runtime/blokkliPlugins/DroppableEdit/index.vue +73 -0
  23. package/dist/runtime/blokkliPlugins/ItemAction/index.vue +132 -0
  24. package/dist/runtime/blokkliPlugins/ItemDropdown/index.vue +42 -0
  25. package/dist/runtime/blokkliPlugins/MenuButton/index.vue +74 -0
  26. package/dist/runtime/blokkliPlugins/Sidebar/Detached/index.vue +334 -0
  27. package/dist/runtime/blokkliPlugins/Sidebar/index.vue +286 -0
  28. package/dist/runtime/blokkliPlugins/ToolbarButton/index.vue +104 -0
  29. package/dist/runtime/blokkliPlugins/TourItem/index.vue +45 -0
  30. package/dist/runtime/blokkliPlugins/ViewOption/index.vue +106 -0
  31. package/dist/runtime/blokkliPlugins/index.d.ts +12 -0
  32. package/dist/runtime/blokkliPlugins/index.js +24 -0
  33. package/dist/runtime/components/Blocks/Fragment/icon.svg +1 -0
  34. package/dist/runtime/components/Blocks/Fragment/index.vue +24 -0
  35. package/dist/runtime/components/Blocks/FromLibrary/index.vue +58 -0
  36. package/dist/runtime/components/BlokkliEditable.vue +73 -0
  37. package/dist/runtime/components/BlokkliField.vue +157 -0
  38. package/dist/runtime/components/BlokkliItem.vue +79 -0
  39. package/dist/runtime/components/BlokkliProvider.vue +160 -0
  40. package/dist/runtime/components/Edit/Actions/index.vue +263 -0
  41. package/dist/runtime/components/Edit/AddListItem/index.vue +116 -0
  42. package/dist/runtime/components/Edit/AnimationCanvas/index.vue +122 -0
  43. package/dist/runtime/components/Edit/AppMenu/index.vue +60 -0
  44. package/dist/runtime/components/Edit/BlokkliErrorBoundary.vue +64 -0
  45. package/dist/runtime/components/Edit/Dialog/index.vue +163 -0
  46. package/dist/runtime/components/Edit/DragInteractions/index.vue +439 -0
  47. package/dist/runtime/components/Edit/DraggableList.vue +110 -0
  48. package/dist/runtime/components/Edit/EditIndicator.vue +82 -0
  49. package/dist/runtime/components/Edit/EditProvider.vue +213 -0
  50. package/dist/runtime/components/Edit/Features/AddList/docs.md +4 -0
  51. package/dist/runtime/components/Edit/Features/AddList/index.vue +205 -0
  52. package/dist/runtime/components/Edit/Features/Artboard/Manager/Artboard.d.ts +204 -0
  53. package/dist/runtime/components/Edit/Features/Artboard/Manager/Artboard.js +748 -0
  54. package/dist/runtime/components/Edit/Features/Artboard/Manager/Scrollbar/index.vue +176 -0
  55. package/dist/runtime/components/Edit/Features/Artboard/Manager/index.vue +317 -0
  56. package/dist/runtime/components/Edit/Features/Artboard/index.vue +45 -0
  57. package/dist/runtime/components/Edit/Features/Assistant/Overlay/ResultMarkup/index.vue +17 -0
  58. package/dist/runtime/components/Edit/Features/Assistant/Overlay/index.vue +147 -0
  59. package/dist/runtime/components/Edit/Features/Assistant/docs.md +7 -0
  60. package/dist/runtime/components/Edit/Features/Assistant/index.vue +68 -0
  61. package/dist/runtime/components/Edit/Features/BlockAddList/docs.md +15 -0
  62. package/dist/runtime/components/Edit/Features/BlockAddList/index.vue +440 -0
  63. package/dist/runtime/components/Edit/Features/Clipboard/List/Item/File.vue +68 -0
  64. package/dist/runtime/components/Edit/Features/Clipboard/List/Item/Video.vue +56 -0
  65. package/dist/runtime/components/Edit/Features/Clipboard/List/index.vue +69 -0
  66. package/dist/runtime/components/Edit/Features/Clipboard/docs.md +16 -0
  67. package/dist/runtime/components/Edit/Features/Clipboard/index.vue +485 -0
  68. package/dist/runtime/components/Edit/Features/CommandPalette/Palette/Group/index.vue +61 -0
  69. package/dist/runtime/components/Edit/Features/CommandPalette/Palette/index.vue +280 -0
  70. package/dist/runtime/components/Edit/Features/CommandPalette/index.vue +51 -0
  71. package/dist/runtime/components/Edit/Features/Comments/AddForm/index.vue +32 -0
  72. package/dist/runtime/components/Edit/Features/Comments/Comment/index.vue +53 -0
  73. package/dist/runtime/components/Edit/Features/Comments/Overlay/Item/index.vue +100 -0
  74. package/dist/runtime/components/Edit/Features/Comments/Overlay/index.vue +133 -0
  75. package/dist/runtime/components/Edit/Features/Comments/docs.md +13 -0
  76. package/dist/runtime/components/Edit/Features/Comments/index.vue +110 -0
  77. package/dist/runtime/components/Edit/Features/Conversions/index.vue +98 -0
  78. package/dist/runtime/components/Edit/Features/Debug/Rects/index.vue +55 -0
  79. package/dist/runtime/components/Edit/Features/Debug/Viewport/index.vue +93 -0
  80. package/dist/runtime/components/Edit/Features/Debug/docs.md +3 -0
  81. package/dist/runtime/components/Edit/Features/Debug/index.vue +178 -0
  82. package/dist/runtime/components/Edit/Features/Delete/index.vue +43 -0
  83. package/dist/runtime/components/Edit/Features/DraggingOverlay/DragItems/index.vue +420 -0
  84. package/dist/runtime/components/Edit/Features/DraggingOverlay/DropTargets/fragment.glsl +58 -0
  85. package/dist/runtime/components/Edit/Features/DraggingOverlay/DropTargets/index.vue +808 -0
  86. package/dist/runtime/components/Edit/Features/DraggingOverlay/DropTargets/vertex.glsl +57 -0
  87. package/dist/runtime/components/Edit/Features/DraggingOverlay/index.vue +410 -0
  88. package/dist/runtime/components/Edit/Features/Duplicate/index.vue +109 -0
  89. package/dist/runtime/components/Edit/Features/Edit/index.vue +63 -0
  90. package/dist/runtime/components/Edit/Features/EditForm/Frame/index.vue +73 -0
  91. package/dist/runtime/components/Edit/Features/EditForm/index.vue +217 -0
  92. package/dist/runtime/components/Edit/Features/EditableField/Overlay/Contenteditable/index.vue +42 -0
  93. package/dist/runtime/components/Edit/Features/EditableField/Overlay/Frame/index.vue +68 -0
  94. package/dist/runtime/components/Edit/Features/EditableField/Overlay/Plaintext/index.vue +81 -0
  95. package/dist/runtime/components/Edit/Features/EditableField/Overlay/index.vue +357 -0
  96. package/dist/runtime/components/Edit/Features/EditableField/index.vue +192 -0
  97. package/dist/runtime/components/Edit/Features/EditableMask/index.vue +64 -0
  98. package/dist/runtime/components/Edit/Features/EntityTitle/index.vue +108 -0
  99. package/dist/runtime/components/Edit/Features/Exit/index.vue +38 -0
  100. package/dist/runtime/components/Edit/Features/FieldAreas/Overlay/index.vue +33 -0
  101. package/dist/runtime/components/Edit/Features/FieldAreas/index.vue +43 -0
  102. package/dist/runtime/components/Edit/Features/Fragments/Dialog/Item/index.vue +68 -0
  103. package/dist/runtime/components/Edit/Features/Fragments/Dialog/index.vue +137 -0
  104. package/dist/runtime/components/Edit/Features/Fragments/docs.md +101 -0
  105. package/dist/runtime/components/Edit/Features/Fragments/index.vue +86 -0
  106. package/dist/runtime/components/Edit/Features/Grid/index.vue +40 -0
  107. package/dist/runtime/components/Edit/Features/Help/Shortcuts/index.vue +71 -0
  108. package/dist/runtime/components/Edit/Features/Help/index.vue +53 -0
  109. package/dist/runtime/components/Edit/Features/History/index.vue +263 -0
  110. package/dist/runtime/components/Edit/Features/ImportExisting/Dialog/index.vue +140 -0
  111. package/dist/runtime/components/Edit/Features/ImportExisting/index.vue +92 -0
  112. package/dist/runtime/components/Edit/Features/Library/EditReusable/index.vue +0 -0
  113. package/dist/runtime/components/Edit/Features/Library/LibraryDialog/Item/index.vue +73 -0
  114. package/dist/runtime/components/Edit/Features/Library/LibraryDialog/index.vue +184 -0
  115. package/dist/runtime/components/Edit/Features/Library/ReusableDialog/index.vue +88 -0
  116. package/dist/runtime/components/Edit/Features/Library/docs.md +127 -0
  117. package/dist/runtime/components/Edit/Features/Library/index.vue +184 -0
  118. package/dist/runtime/components/Edit/Features/MediaLibrary/Library/index.vue +184 -0
  119. package/dist/runtime/components/Edit/Features/MediaLibrary/index.vue +182 -0
  120. package/dist/runtime/components/Edit/Features/MediaLibrary/types.d.ts +57 -0
  121. package/dist/runtime/components/Edit/Features/MediaLibrary/types.js +0 -0
  122. package/dist/runtime/components/Edit/Features/MultiSelect/Overlay/fragment.glsl +90 -0
  123. package/dist/runtime/components/Edit/Features/MultiSelect/Overlay/index.vue +289 -0
  124. package/dist/runtime/components/Edit/Features/MultiSelect/Overlay/vertex.glsl +182 -0
  125. package/dist/runtime/components/Edit/Features/MultiSelect/index.vue +76 -0
  126. package/dist/runtime/components/Edit/Features/Options/Form/Checkbox/index.vue +52 -0
  127. package/dist/runtime/components/Edit/Features/Options/Form/Checkboxes/index.vue +129 -0
  128. package/dist/runtime/components/Edit/Features/Options/Form/Color/index.vue +38 -0
  129. package/dist/runtime/components/Edit/Features/Options/Form/Group.vue +25 -0
  130. package/dist/runtime/components/Edit/Features/Options/Form/Item.vue +155 -0
  131. package/dist/runtime/components/Edit/Features/Options/Form/Number/index.vue +74 -0
  132. package/dist/runtime/components/Edit/Features/Options/Form/Radios/index.vue +135 -0
  133. package/dist/runtime/components/Edit/Features/Options/Form/Range/index.vue +47 -0
  134. package/dist/runtime/components/Edit/Features/Options/Form/Text/index.vue +38 -0
  135. package/dist/runtime/components/Edit/Features/Options/Form/index.vue +342 -0
  136. package/dist/runtime/components/Edit/Features/Options/index.vue +88 -0
  137. package/dist/runtime/components/Edit/Features/Ownership/index.vue +57 -0
  138. package/dist/runtime/components/Edit/Features/Preview/index.vue +45 -0
  139. package/dist/runtime/components/Edit/Features/PreviewGrant/QrCode/index.vue +30 -0
  140. package/dist/runtime/components/Edit/Features/PreviewGrant/index.vue +73 -0
  141. package/dist/runtime/components/Edit/Features/Publish/index.vue +50 -0
  142. package/dist/runtime/components/Edit/Features/ResponsivePreview/Frame/index.vue +81 -0
  143. package/dist/runtime/components/Edit/Features/ResponsivePreview/index.vue +217 -0
  144. package/dist/runtime/components/Edit/Features/Revert/index.vue +68 -0
  145. package/dist/runtime/components/Edit/Features/Search/Overlay/Results/Content/index.vue +165 -0
  146. package/dist/runtime/components/Edit/Features/Search/Overlay/Results/Page/index.vue +211 -0
  147. package/dist/runtime/components/Edit/Features/Search/Overlay/index.vue +214 -0
  148. package/dist/runtime/components/Edit/Features/Search/index.vue +79 -0
  149. package/dist/runtime/components/Edit/Features/Selection/Overlay/fragment.glsl +99 -0
  150. package/dist/runtime/components/Edit/Features/Selection/Overlay/index.vue +144 -0
  151. package/dist/runtime/components/Edit/Features/Selection/Overlay/vertex.glsl +85 -0
  152. package/dist/runtime/components/Edit/Features/Selection/OverlayFallback/index.vue +50 -0
  153. package/dist/runtime/components/Edit/Features/Selection/index.vue +295 -0
  154. package/dist/runtime/components/Edit/Features/Settings/Dialog/FeatureSetting/index.vue +141 -0
  155. package/dist/runtime/components/Edit/Features/Settings/Dialog/index.vue +138 -0
  156. package/dist/runtime/components/Edit/Features/Settings/index.vue +92 -0
  157. package/dist/runtime/components/Edit/Features/Structure/List/Field/index.vue +181 -0
  158. package/dist/runtime/components/Edit/Features/Structure/List/Item/index.vue +149 -0
  159. package/dist/runtime/components/Edit/Features/Structure/List/index.vue +55 -0
  160. package/dist/runtime/components/Edit/Features/Structure/index.vue +83 -0
  161. package/dist/runtime/components/Edit/Features/Theme/Color/index.vue +81 -0
  162. package/dist/runtime/components/Edit/Features/Theme/GeneratedCode/index.vue +24 -0
  163. package/dist/runtime/components/Edit/Features/Theme/index.vue +122 -0
  164. package/dist/runtime/components/Edit/Features/TouchActionBar/Bar/index.vue +26 -0
  165. package/dist/runtime/components/Edit/Features/TouchActionBar/index.vue +42 -0
  166. package/dist/runtime/components/Edit/Features/Tour/Overlay/index.vue +270 -0
  167. package/dist/runtime/components/Edit/Features/Tour/Popup/index.vue +36 -0
  168. package/dist/runtime/components/Edit/Features/Tour/docs.md +0 -0
  169. package/dist/runtime/components/Edit/Features/Tour/index.vue +46 -0
  170. package/dist/runtime/components/Edit/Features/Transform/docs.md +67 -0
  171. package/dist/runtime/components/Edit/Features/Transform/index.vue +177 -0
  172. package/dist/runtime/components/Edit/Features/Translations/Banner/index.vue +50 -0
  173. package/dist/runtime/components/Edit/Features/Translations/index.vue +193 -0
  174. package/dist/runtime/components/Edit/Features/Validations/Overlay/Item.vue +50 -0
  175. package/dist/runtime/components/Edit/Features/Validations/Overlay/index.vue +51 -0
  176. package/dist/runtime/components/Edit/Features/Validations/SidebarItem/index.vue +50 -0
  177. package/dist/runtime/components/Edit/Features/Validations/index.vue +70 -0
  178. package/dist/runtime/components/Edit/Features/index.vue +67 -0
  179. package/dist/runtime/components/Edit/FormOverlay/Header/index.vue +39 -0
  180. package/dist/runtime/components/Edit/FormOverlay/index.vue +52 -0
  181. package/dist/runtime/components/Edit/Highlight/index.vue +94 -0
  182. package/dist/runtime/components/Edit/Icon/index.vue +21 -0
  183. package/dist/runtime/components/Edit/ItemIcon/index.vue +27 -0
  184. package/dist/runtime/components/Edit/Loading/index.vue +19 -0
  185. package/dist/runtime/components/Edit/Messages/Item/index.vue +107 -0
  186. package/dist/runtime/components/Edit/Messages/index.vue +37 -0
  187. package/dist/runtime/components/Edit/PreviewProvider.vue +223 -0
  188. package/dist/runtime/components/Edit/RelativeTime/index.vue +37 -0
  189. package/dist/runtime/components/Edit/Resizable/index.vue +90 -0
  190. package/dist/runtime/components/Edit/ScaleToFit/index.vue +57 -0
  191. package/dist/runtime/components/Edit/ShortcutIndicator/index.vue +90 -0
  192. package/dist/runtime/components/Edit/Sortli/index.vue +92 -0
  193. package/dist/runtime/components/Edit/SystemRequirements/index.vue +91 -0
  194. package/dist/runtime/components/Edit/Toolbar/index.vue +106 -0
  195. package/dist/runtime/components/Edit/ViewportBlockingRect/index.vue +75 -0
  196. package/dist/runtime/components/Edit/index.d.ts +14 -0
  197. package/dist/runtime/components/Edit/index.js +28 -0
  198. package/dist/runtime/composables/defineBlokkli.d.ts +6 -0
  199. package/dist/runtime/composables/defineBlokkli.js +108 -0
  200. package/dist/runtime/composables/defineBlokkliFeature.d.ts +28 -0
  201. package/dist/runtime/composables/defineBlokkliFeature.js +62 -0
  202. package/dist/runtime/composables/defineBlokkliFragment.d.ts +3 -0
  203. package/dist/runtime/composables/defineBlokkliFragment.js +54 -0
  204. package/dist/runtime/composables/useBlokkli.d.ts +8 -0
  205. package/dist/runtime/composables/useBlokkli.js +5 -0
  206. package/dist/runtime/constants/index.d.ts +4 -0
  207. package/dist/runtime/constants/index.js +2 -0
  208. package/dist/runtime/css/output.css +1 -0
  209. package/dist/runtime/helpers/Artboard/index.d.ts +16 -0
  210. package/dist/runtime/helpers/Artboard/index.js +20 -0
  211. package/dist/runtime/helpers/DragStyle/index.d.ts +12 -0
  212. package/dist/runtime/helpers/DragStyle/index.js +86 -0
  213. package/dist/runtime/helpers/animationProvider.d.ts +25 -0
  214. package/dist/runtime/helpers/animationProvider.js +116 -0
  215. package/dist/runtime/helpers/broadcastProvider.d.ts +7 -0
  216. package/dist/runtime/helpers/broadcastProvider.js +26 -0
  217. package/dist/runtime/helpers/commandsProvider.d.ts +9 -0
  218. package/dist/runtime/helpers/commandsProvider.js +16 -0
  219. package/dist/runtime/helpers/composables/defineCommands.d.ts +2 -0
  220. package/dist/runtime/helpers/composables/defineCommands.js +10 -0
  221. package/dist/runtime/helpers/composables/defineDropAreas.d.ts +2 -0
  222. package/dist/runtime/helpers/composables/defineDropAreas.js +10 -0
  223. package/dist/runtime/helpers/composables/defineShortcut.d.ts +2 -0
  224. package/dist/runtime/helpers/composables/defineShortcut.js +19 -0
  225. package/dist/runtime/helpers/composables/defineTourItem.d.ts +2 -0
  226. package/dist/runtime/helpers/composables/defineTourItem.js +10 -0
  227. package/dist/runtime/helpers/composables/onBlokkliEvent.d.ts +2 -0
  228. package/dist/runtime/helpers/composables/onBlokkliEvent.js +10 -0
  229. package/dist/runtime/helpers/composables/useAnimationFrame.d.ts +1 -0
  230. package/dist/runtime/helpers/composables/useAnimationFrame.js +14 -0
  231. package/dist/runtime/helpers/composables/useDebugLogger.d.ts +2 -0
  232. package/dist/runtime/helpers/composables/useDebugLogger.js +5 -0
  233. package/dist/runtime/helpers/composables/useDelayedIntersectionObserver.d.ts +5 -0
  234. package/dist/runtime/helpers/composables/useDelayedIntersectionObserver.js +26 -0
  235. package/dist/runtime/helpers/debugProvider.d.ts +23 -0
  236. package/dist/runtime/helpers/debugProvider.js +65 -0
  237. package/dist/runtime/helpers/dom/index.d.ts +5 -0
  238. package/dist/runtime/helpers/dom/index.js +37 -0
  239. package/dist/runtime/helpers/domProvider.d.ts +46 -0
  240. package/dist/runtime/helpers/domProvider.js +446 -0
  241. package/dist/runtime/helpers/dropAreaProvider.d.ts +9 -0
  242. package/dist/runtime/helpers/dropAreaProvider.js +22 -0
  243. package/dist/runtime/helpers/easing.d.ts +3 -0
  244. package/dist/runtime/helpers/easing.js +16 -0
  245. package/dist/runtime/helpers/eventBus.d.ts +3 -0
  246. package/dist/runtime/helpers/eventBus.js +5 -0
  247. package/dist/runtime/helpers/featuresProvider.d.ts +23 -0
  248. package/dist/runtime/helpers/featuresProvider.js +16 -0
  249. package/dist/runtime/helpers/frameEventBus.d.ts +9 -0
  250. package/dist/runtime/helpers/frameEventBus.js +2 -0
  251. package/dist/runtime/helpers/index.d.ts +87 -0
  252. package/dist/runtime/helpers/index.js +467 -0
  253. package/dist/runtime/helpers/keyboardProvider.d.ts +17 -0
  254. package/dist/runtime/helpers/keyboardProvider.js +79 -0
  255. package/dist/runtime/helpers/options.d.ts +2 -0
  256. package/dist/runtime/helpers/options.js +21 -0
  257. package/dist/runtime/helpers/runtimeHelpers/index.d.ts +10 -0
  258. package/dist/runtime/helpers/runtimeHelpers/index.js +35 -0
  259. package/dist/runtime/helpers/selectionProvider.d.ts +62 -0
  260. package/dist/runtime/helpers/selectionProvider.js +149 -0
  261. package/dist/runtime/helpers/stateProvider.d.ts +35 -0
  262. package/dist/runtime/helpers/stateProvider.js +226 -0
  263. package/dist/runtime/helpers/storageProvider.d.ts +15 -0
  264. package/dist/runtime/helpers/storageProvider.js +61 -0
  265. package/dist/runtime/helpers/symbols.d.ts +16 -0
  266. package/dist/runtime/helpers/symbols.js +18 -0
  267. package/dist/runtime/helpers/textProvider.d.ts +4 -0
  268. package/dist/runtime/helpers/textProvider.js +20 -0
  269. package/dist/runtime/helpers/themeProvider.d.ts +27 -0
  270. package/dist/runtime/helpers/themeProvider.js +124 -0
  271. package/dist/runtime/helpers/tourProvider.d.ts +11 -0
  272. package/dist/runtime/helpers/tourProvider.js +19 -0
  273. package/dist/runtime/helpers/transform.d.ts +2 -0
  274. package/dist/runtime/helpers/transform.js +17 -0
  275. package/dist/runtime/helpers/typesProvider.d.ts +36 -0
  276. package/dist/runtime/helpers/typesProvider.js +138 -0
  277. package/dist/runtime/helpers/uiProvider.d.ts +36 -0
  278. package/dist/runtime/helpers/uiProvider.js +278 -0
  279. package/dist/runtime/helpers/webgl/index.d.ts +32 -0
  280. package/dist/runtime/helpers/webgl/index.js +132 -0
  281. package/dist/runtime/icons/alert.svg +6 -0
  282. package/dist/runtime/icons/area.svg +5 -0
  283. package/dist/runtime/icons/arrow-down.svg +1 -0
  284. package/dist/runtime/icons/arrow-left.svg +1 -0
  285. package/dist/runtime/icons/arrow-right.svg +1 -0
  286. package/dist/runtime/icons/arrow-up.svg +1 -0
  287. package/dist/runtime/icons/artboard-disabled.svg +9 -0
  288. package/dist/runtime/icons/artboard-enabled.svg +29 -0
  289. package/dist/runtime/icons/artboard.svg +1 -0
  290. package/dist/runtime/icons/bug.svg +1 -0
  291. package/dist/runtime/icons/button-pointer.svg +1 -0
  292. package/dist/runtime/icons/caret.svg +12 -0
  293. package/dist/runtime/icons/cellphone.svg +1 -0
  294. package/dist/runtime/icons/chat-question.svg +1 -0
  295. package/dist/runtime/icons/check.svg +1 -0
  296. package/dist/runtime/icons/checkbox.svg +5 -0
  297. package/dist/runtime/icons/checks.svg +1 -0
  298. package/dist/runtime/icons/chevron-left.svg +1 -0
  299. package/dist/runtime/icons/chevron-right.svg +1 -0
  300. package/dist/runtime/icons/clipboard.svg +5 -0
  301. package/dist/runtime/icons/close.svg +5 -0
  302. package/dist/runtime/icons/cog.svg +5 -0
  303. package/dist/runtime/icons/command.svg +1 -0
  304. package/dist/runtime/icons/comment.svg +5 -0
  305. package/dist/runtime/icons/comment_add.svg +5 -0
  306. package/dist/runtime/icons/convert.svg +1 -0
  307. package/dist/runtime/icons/cursor-move.svg +1 -0
  308. package/dist/runtime/icons/dead.svg +1 -0
  309. package/dist/runtime/icons/delete.svg +8 -0
  310. package/dist/runtime/icons/detach.svg +7 -0
  311. package/dist/runtime/icons/drag.svg +1 -0
  312. package/dist/runtime/icons/duplicate.svg +12 -0
  313. package/dist/runtime/icons/edit.svg +8 -0
  314. package/dist/runtime/icons/exit.svg +6 -0
  315. package/dist/runtime/icons/expand.svg +1 -0
  316. package/dist/runtime/icons/file.svg +1 -0
  317. package/dist/runtime/icons/form.svg +1 -0
  318. package/dist/runtime/icons/fragment.svg +1 -0
  319. package/dist/runtime/icons/grid.svg +13 -0
  320. package/dist/runtime/icons/group.svg +5 -0
  321. package/dist/runtime/icons/help.svg +1 -0
  322. package/dist/runtime/icons/history.svg +1 -0
  323. package/dist/runtime/icons/image.svg +1 -0
  324. package/dist/runtime/icons/import.svg +5 -0
  325. package/dist/runtime/icons/laptop.svg +1 -0
  326. package/dist/runtime/icons/list-view-grid.svg +1 -0
  327. package/dist/runtime/icons/list-view-horizontal.svg +1 -0
  328. package/dist/runtime/icons/loader.svg +1 -0
  329. package/dist/runtime/icons/logo.svg +5 -0
  330. package/dist/runtime/icons/magnifier.svg +5 -0
  331. package/dist/runtime/icons/menu.svg +1 -0
  332. package/dist/runtime/icons/minus.svg +1 -0
  333. package/dist/runtime/icons/monitor.svg +1 -0
  334. package/dist/runtime/icons/multi-select.svg +1 -0
  335. package/dist/runtime/icons/multimedia.svg +1 -0
  336. package/dist/runtime/icons/opacity.svg +5 -0
  337. package/dist/runtime/icons/open_in_new.svg +3 -0
  338. package/dist/runtime/icons/palette.svg +1 -0
  339. package/dist/runtime/icons/plus-box.svg +1 -0
  340. package/dist/runtime/icons/plus.svg +1 -0
  341. package/dist/runtime/icons/preview.svg +5 -0
  342. package/dist/runtime/icons/publish.svg +12 -0
  343. package/dist/runtime/icons/puzzle.svg +1 -0
  344. package/dist/runtime/icons/qrcode.svg +5 -0
  345. package/dist/runtime/icons/question.svg +5 -0
  346. package/dist/runtime/icons/redo.svg +12 -0
  347. package/dist/runtime/icons/resize.svg +1 -0
  348. package/dist/runtime/icons/reusable.svg +5 -0
  349. package/dist/runtime/icons/revert.svg +5 -0
  350. package/dist/runtime/icons/robot.svg +1 -0
  351. package/dist/runtime/icons/rotate-phone.svg +1 -0
  352. package/dist/runtime/icons/sad.svg +1 -0
  353. package/dist/runtime/icons/save.svg +1 -0
  354. package/dist/runtime/icons/script.svg +1 -0
  355. package/dist/runtime/icons/scrolltotop.svg +6 -0
  356. package/dist/runtime/icons/search.svg +1 -0
  357. package/dist/runtime/icons/selection.svg +5 -0
  358. package/dist/runtime/icons/spinner.svg +15 -0
  359. package/dist/runtime/icons/star.svg +1 -0
  360. package/dist/runtime/icons/swap-horizontal.svg +1 -0
  361. package/dist/runtime/icons/tablet.svg +1 -0
  362. package/dist/runtime/icons/textbox.svg +1 -0
  363. package/dist/runtime/icons/texturebox.svg +5 -0
  364. package/dist/runtime/icons/tiktok.svg +1 -0
  365. package/dist/runtime/icons/title.svg +1 -0
  366. package/dist/runtime/icons/tools.svg +1 -0
  367. package/dist/runtime/icons/translate.svg +5 -0
  368. package/dist/runtime/icons/tree.svg +5 -0
  369. package/dist/runtime/icons/tutor.svg +1 -0
  370. package/dist/runtime/icons/ui-list-horizontal.svg +19 -0
  371. package/dist/runtime/icons/ui-list-sidebar.svg +21 -0
  372. package/dist/runtime/icons/ui-list-vertical.svg +9 -0
  373. package/dist/runtime/icons/undo.svg +12 -0
  374. package/dist/runtime/icons/unstar.svg +1 -0
  375. package/dist/runtime/icons/upload.svg +1 -0
  376. package/dist/runtime/icons/user.svg +1 -0
  377. package/dist/runtime/icons/video-outline.svg +1 -0
  378. package/dist/runtime/icons/vimeo.svg +3 -0
  379. package/dist/runtime/icons/window-maximize.svg +1 -0
  380. package/dist/runtime/icons/window-minimize.svg +1 -0
  381. package/dist/runtime/icons/youtube.svg +3 -0
  382. package/dist/runtime/plugins/blokkliEditable.d.ts +2 -0
  383. package/dist/runtime/plugins/blokkliEditable.js +31 -0
  384. package/dist/runtime/public/Inter.var.woff2 +0 -0
  385. package/dist/runtime/types/blokkOptions.d.ts +83 -0
  386. package/dist/runtime/types/blokkOptions.js +0 -0
  387. package/dist/runtime/types/generatedModuleTypes.d.ts +41 -0
  388. package/dist/runtime/types/generatedModuleTypes.js +0 -0
  389. package/dist/runtime/types/index.d.ts +1052 -0
  390. package/dist/runtime/types/index.js +1 -0
  391. package/dist/runtime/types/theme.d.ts +33 -0
  392. package/dist/runtime/types/theme.js +0 -0
  393. package/dist/types.d.mts +1 -0
  394. package/dist/types.d.ts +1 -0
  395. package/package.json +103 -0
@@ -0,0 +1,446 @@
1
+ import { reactive, ref, computed } from "#imports";
2
+ import {
3
+ findClosestBlock,
4
+ buildDraggableItem,
5
+ falsy,
6
+ mapDroppableField,
7
+ findClosestEntityContext
8
+ } from "#blokkli/helpers";
9
+ import { cloneElementWithStyles } from "./dom/index.js";
10
+ import onBlokkliEvent from "./composables/onBlokkliEvent.js";
11
+ import useDelayedIntersectionObserver from "./composables/useDelayedIntersectionObserver.js";
12
+ import { getDefinition } from "#blokkli/definitions";
13
+ const buildFieldElement = (element) => {
14
+ const key = element.dataset.fieldKey;
15
+ const name = element.dataset.fieldName;
16
+ const label = element.dataset.fieldLabel;
17
+ const isNested = element.dataset.fieldIsNested === "true";
18
+ const fieldListType = element.dataset.fieldListType;
19
+ const hostEntityType = element.dataset.hostEntityType;
20
+ const hostEntityBundle = element.dataset.hostEntityBundle;
21
+ const hostEntityUuid = element.dataset.hostEntityUuid;
22
+ const dropAlignment = element.dataset.fieldDropAlignment;
23
+ const cardinality = Number.parseInt(element.dataset.fieldCardinality || "-1");
24
+ const allowedBundles = (element.dataset.fieldAllowedBundles || "").split(",").filter(Boolean);
25
+ const allowedFragments = (element.dataset.allowedFragments || "").split(",").filter(Boolean);
26
+ if (key && name && label && hostEntityType && hostEntityUuid && hostEntityBundle && fieldListType) {
27
+ return {
28
+ key,
29
+ name,
30
+ label,
31
+ isNested,
32
+ hostEntityType,
33
+ hostEntityUuid,
34
+ hostEntityBundle,
35
+ cardinality: Number.isNaN(cardinality) ? -1 : cardinality,
36
+ allowedBundles,
37
+ allowedFragments,
38
+ fieldListType,
39
+ element,
40
+ dropAlignment: dropAlignment === "vertical" || dropAlignment === "horizontal" ? dropAlignment : void 0
41
+ };
42
+ }
43
+ };
44
+ const getVisibleBlockElement = (instance) => {
45
+ if (instance.vnode.el instanceof HTMLElement) {
46
+ return instance.vnode.el;
47
+ } else if (instance?.vnode.el instanceof Text && instance?.vnode.el.nextElementSibling instanceof HTMLElement) {
48
+ return instance.vnode.el.nextElementSibling;
49
+ }
50
+ };
51
+ function rectWithTime(rect, time) {
52
+ return {
53
+ ...rect,
54
+ time: time || performance.now()
55
+ };
56
+ }
57
+ export default function(ui, debug) {
58
+ const logger = debug.createLogger("DomProvider");
59
+ const mutationsReady = ref(true);
60
+ const intersectionReady = ref(false);
61
+ const blockVisibility = {};
62
+ const visibleBlocks = /* @__PURE__ */ new Set();
63
+ const visibleFields = /* @__PURE__ */ new Set();
64
+ const blockRects = {};
65
+ const fieldRects = {};
66
+ let draggableBlockCache = {};
67
+ const resizeObserver = new ResizeObserver(function(entries) {
68
+ for (const entry of entries) {
69
+ if (!(entry.target instanceof HTMLElement)) {
70
+ return;
71
+ }
72
+ const uuid = entry.target.dataset.uuid || entry.target.closest("[data-uuid]")?.dataset.uuid;
73
+ if (!uuid) {
74
+ return;
75
+ }
76
+ const currentRect = blockRects[uuid];
77
+ const now = performance.now();
78
+ if (!currentRect) {
79
+ blockRects[uuid] = rectWithTime(
80
+ {
81
+ x: entry.contentRect.x,
82
+ y: entry.contentRect.y,
83
+ width: entry.borderBoxSize[0].inlineSize,
84
+ height: entry.borderBoxSize[0].blockSize
85
+ },
86
+ now
87
+ );
88
+ return;
89
+ }
90
+ if (currentRect.time > now) {
91
+ return;
92
+ }
93
+ blockRects[uuid].width = entry.borderBoxSize[0].inlineSize;
94
+ blockRects[uuid].height = entry.borderBoxSize[0].blockSize;
95
+ blockRects[uuid].time = now;
96
+ }
97
+ });
98
+ function intersectionCallback(entries) {
99
+ const scale = ui.artboardScale.value;
100
+ const offset = ui.artboardOffset.value;
101
+ for (const entry of entries) {
102
+ if (entry.target instanceof HTMLElement) {
103
+ const uuid = entry.target.dataset.uuid || entry.target.closest("[data-uuid]")?.dataset.uuid;
104
+ const fieldKey = entry.target.dataset.fieldKey;
105
+ const rect = entry.boundingClientRect;
106
+ if (fieldKey) {
107
+ if (entry.isIntersecting) {
108
+ visibleFields.add(fieldKey);
109
+ } else {
110
+ visibleFields.delete(fieldKey);
111
+ }
112
+ fieldRects[fieldKey] = ui.getAbsoluteElementRect(rect, scale, offset);
113
+ } else if (uuid) {
114
+ const newRect = ui.getAbsoluteElementRect(rect, scale, offset);
115
+ const currentRect = blockRects[uuid];
116
+ if (currentRect) {
117
+ if (currentRect.time > entry.time) {
118
+ blockRects[uuid].x = newRect.x;
119
+ blockRects[uuid].y = newRect.y;
120
+ } else {
121
+ blockRects[uuid] = rectWithTime(newRect, entry.time);
122
+ }
123
+ } else {
124
+ blockRects[uuid] = rectWithTime(newRect, entry.time);
125
+ }
126
+ if (entry.isIntersecting) {
127
+ visibleBlocks.add(uuid);
128
+ } else {
129
+ visibleBlocks.delete(uuid);
130
+ }
131
+ blockVisibility[uuid] = entry.isIntersecting;
132
+ }
133
+ }
134
+ }
135
+ }
136
+ const observer = useDelayedIntersectionObserver(intersectionCallback);
137
+ const registeredBlocks = reactive({});
138
+ const registeredFields = reactive({});
139
+ const registerField = (uuid, fieldName, element) => {
140
+ const key = `${uuid}:${fieldName}`;
141
+ registeredFields[key] = element;
142
+ observer.observe(element);
143
+ };
144
+ const unregisterField = (uuid, fieldName) => {
145
+ const key = `${uuid}:${fieldName}`;
146
+ const el = registeredFields[key];
147
+ if (el) {
148
+ observer.unobserve(el);
149
+ }
150
+ registeredFields[key] = void 0;
151
+ };
152
+ function getElementToObserve(el, bundle, fieldListType, parentBlockBundle) {
153
+ const definition = getDefinition(bundle, fieldListType, parentBlockBundle);
154
+ if (!definition) {
155
+ throw new Error("Failed to load definition for bundle: " + bundle);
156
+ }
157
+ const observableElement = (definition.editor?.getDraggableElement ? definition.editor.getDraggableElement(el) : el) || el;
158
+ if (observableElement instanceof HTMLElement) {
159
+ return observableElement;
160
+ }
161
+ return el;
162
+ }
163
+ const registerBlock = (uuid, instance, bundle, fieldListType, parentBlockBundle) => {
164
+ if (registeredBlocks[uuid]) {
165
+ console.error(
166
+ "Trying to register block with already existing UUID: " + uuid
167
+ );
168
+ }
169
+ if (!instance) {
170
+ console.error(
171
+ `Failed to get component instance of block with UUID "${uuid}"`
172
+ );
173
+ return;
174
+ }
175
+ const el = getVisibleBlockElement(instance);
176
+ if (!el) {
177
+ console.error(
178
+ `Failed to locate block component element for UUID "${uuid}". Make sure the block renders at least one root element that is always visible.`
179
+ );
180
+ return;
181
+ }
182
+ const observableElement = getElementToObserve(
183
+ el,
184
+ bundle,
185
+ fieldListType,
186
+ parentBlockBundle
187
+ );
188
+ observer.observe(observableElement);
189
+ resizeObserver.observe(observableElement);
190
+ registeredBlocks[uuid] = el;
191
+ };
192
+ const unregisterBlock = (uuid) => {
193
+ const el = registeredBlocks[uuid];
194
+ if (el) {
195
+ observer.unobserve(el);
196
+ resizeObserver.unobserve(el);
197
+ }
198
+ registeredBlocks[uuid] = void 0;
199
+ delete blockRects[uuid];
200
+ };
201
+ const findBlock = (uuid) => {
202
+ const cached = draggableBlockCache[uuid];
203
+ if (cached) {
204
+ return cached;
205
+ }
206
+ const el = registeredBlocks[uuid];
207
+ if (!el) {
208
+ return;
209
+ }
210
+ const item = buildDraggableItem(el);
211
+ if (item?.itemType === "existing") {
212
+ draggableBlockCache[uuid] = item;
213
+ return item;
214
+ }
215
+ };
216
+ const getAllBlocks = () => {
217
+ return [
218
+ ...document.querySelectorAll(
219
+ '[data-blokkli-provider-active="true"] [data-uuid]'
220
+ )
221
+ ].map((v) => {
222
+ const item = buildDraggableItem(v);
223
+ if (item?.itemType === "existing") {
224
+ return item;
225
+ }
226
+ }).filter(falsy);
227
+ };
228
+ const getAllFields = () => {
229
+ const elements = [...document.querySelectorAll(".bk-field-list")];
230
+ return elements.map((element) => {
231
+ if (element instanceof HTMLElement) {
232
+ return buildFieldElement(element);
233
+ }
234
+ }).filter(falsy);
235
+ };
236
+ const getDropElementMarkup = (item, checkSize) => {
237
+ const el = item.itemType === "existing" ? getDragElement(item) : item.element();
238
+ if (!el) {
239
+ return "";
240
+ }
241
+ const dropElement = el.querySelector(".bk-drop-element") || el;
242
+ const childCount = dropElement.querySelectorAll("*").length;
243
+ if (checkSize && childCount > 80) {
244
+ return "";
245
+ }
246
+ return cloneElementWithStyles(dropElement, true).replace(
247
+ /\sdata-\w+="[^"]*"/g,
248
+ ""
249
+ );
250
+ };
251
+ const getBlockField = (uuid) => {
252
+ const block = findBlock(uuid);
253
+ if (!block) {
254
+ throw new Error("Block does not exist: " + uuid);
255
+ }
256
+ const el = block.element().closest(".bk-field-list");
257
+ if (!(el instanceof HTMLElement)) {
258
+ throw new TypeError("Failed to locate field element for block: " + uuid);
259
+ }
260
+ const field = buildFieldElement(el);
261
+ if (!field) {
262
+ throw new Error("Failed to build field for block: " + uuid);
263
+ }
264
+ return field;
265
+ };
266
+ const findField = (uuid, fieldName) => {
267
+ const el = document.querySelector(
268
+ `[data-field-name="${fieldName}"][data-host-entity-uuid="${uuid}"]`
269
+ );
270
+ if (!(el instanceof HTMLElement)) {
271
+ return;
272
+ }
273
+ return buildFieldElement(el);
274
+ };
275
+ const getAllDroppableFields = () => [...document.querySelectorAll("[data-blokkli-droppable-field]")].map(
276
+ mapDroppableField
277
+ );
278
+ const getBlockVisibilities = () => {
279
+ return blockVisibility;
280
+ };
281
+ const getVisibleBlocks = () => Array.from(visibleBlocks);
282
+ const getVisibleFields = () => Array.from(visibleFields);
283
+ const getActiveProviderElement = () => {
284
+ const el = document.querySelector('[data-blokkli-provider-active="true"]');
285
+ if (!el) {
286
+ throw new Error("Failed to find active <BlokkliProvider> element.");
287
+ }
288
+ if (!(el instanceof HTMLElement)) {
289
+ throw new TypeError(
290
+ "The root element of the active <BlokkliProvider> is not an HTMLElement."
291
+ );
292
+ }
293
+ return el;
294
+ };
295
+ function getBlockRects() {
296
+ return blockRects;
297
+ }
298
+ function getBlockRect(uuid) {
299
+ return blockRects[uuid];
300
+ }
301
+ function getFieldRect(key) {
302
+ return fieldRects[key];
303
+ }
304
+ function refreshBlockRect(uuid) {
305
+ const block = findBlock(uuid);
306
+ if (!block) {
307
+ return;
308
+ }
309
+ const el = getDragElement(block);
310
+ if (!el) {
311
+ return;
312
+ }
313
+ blockRects[uuid] = rectWithTime(
314
+ ui.getAbsoluteElementRect(el.getBoundingClientRect())
315
+ );
316
+ }
317
+ function refreshFieldRect(key) {
318
+ const el = document.querySelector(
319
+ `.bk-draggable-list-container[data-field-key="${key}"]`
320
+ );
321
+ if (!(el instanceof HTMLElement)) {
322
+ return;
323
+ }
324
+ fieldRects[key] = ui.getAbsoluteElementRect(el.getBoundingClientRect());
325
+ }
326
+ let stateReloadTimeout = null;
327
+ function updateVisibleRects() {
328
+ const visible = getVisibleBlocks();
329
+ const offset = ui.artboardOffset.value;
330
+ const scale = ui.artboardScale.value;
331
+ for (let i = 0; i < visible.length; i++) {
332
+ const uuid = visible[i];
333
+ const el = registeredBlocks[uuid];
334
+ if (!el) {
335
+ continue;
336
+ }
337
+ const bundle = el.dataset.itemBundle;
338
+ const hostBundle = el.dataset.hostBundle;
339
+ const hostFieldListType = el.dataset.hostFieldListType;
340
+ if (!bundle || !hostFieldListType) {
341
+ continue;
342
+ }
343
+ const observableElement = getElementToObserve(
344
+ el,
345
+ bundle,
346
+ hostFieldListType,
347
+ hostBundle
348
+ );
349
+ blockRects[uuid] = rectWithTime(
350
+ ui.getAbsoluteElementRect(
351
+ observableElement.getBoundingClientRect(),
352
+ scale,
353
+ offset
354
+ )
355
+ );
356
+ }
357
+ const visibleFieldKeys = getVisibleFields();
358
+ for (let i = 0; i < visibleFieldKeys.length; i++) {
359
+ const key = visibleFieldKeys[i];
360
+ const field = registeredFields[key];
361
+ if (!field) {
362
+ continue;
363
+ }
364
+ fieldRects[key] = ui.getAbsoluteElementRect(
365
+ field.getBoundingClientRect(),
366
+ scale,
367
+ offset
368
+ );
369
+ }
370
+ }
371
+ onBlokkliEvent("state:reloaded", () => {
372
+ draggableBlockCache = {};
373
+ if (stateReloadTimeout) {
374
+ window.clearTimeout(stateReloadTimeout);
375
+ }
376
+ stateReloadTimeout = window.setTimeout(updateVisibleRects, 300);
377
+ });
378
+ onBlokkliEvent("ui:resized", function() {
379
+ getVisibleBlocks().forEach(refreshBlockRect);
380
+ getVisibleFields().forEach(refreshFieldRect);
381
+ logger.log("Refreshed all visible rects");
382
+ });
383
+ function init() {
384
+ observer.init();
385
+ intersectionReady.value = true;
386
+ logger.log("IntersectionObserver initialized");
387
+ }
388
+ const dragElementUuidMap = /* @__PURE__ */ new WeakMap();
389
+ const dragElementCache = /* @__PURE__ */ new Map();
390
+ const callback = function(mutationsList) {
391
+ for (const mutation of mutationsList) {
392
+ if (mutation.type === "childList") {
393
+ mutation.removedNodes.forEach((node) => {
394
+ const uuid = dragElementUuidMap.get(node);
395
+ dragElementUuidMap.delete(node);
396
+ if (uuid) {
397
+ dragElementCache.delete(uuid);
398
+ }
399
+ });
400
+ }
401
+ }
402
+ };
403
+ const mutationObserver = new MutationObserver(callback);
404
+ function getDragElement(block) {
405
+ const cached = dragElementCache.get(block.uuid);
406
+ if (cached && document.body.contains(cached)) {
407
+ return cached;
408
+ }
409
+ const el = block.element();
410
+ if (!el) {
411
+ return;
412
+ }
413
+ if (el.parentNode) {
414
+ mutationObserver.observe(el.parentNode, { childList: true });
415
+ }
416
+ dragElementUuidMap.set(el, block.uuid);
417
+ dragElementCache.set(block.uuid, el);
418
+ return el;
419
+ }
420
+ return {
421
+ findBlock,
422
+ getAllBlocks,
423
+ findClosestBlock,
424
+ getAllFields,
425
+ getDropElementMarkup,
426
+ getBlockField,
427
+ findField,
428
+ registerBlock,
429
+ unregisterBlock,
430
+ getAllDroppableFields,
431
+ findClosestEntityContext,
432
+ getBlockVisibilities,
433
+ getVisibleBlocks,
434
+ getVisibleFields,
435
+ registerField,
436
+ unregisterField,
437
+ getActiveProviderElement,
438
+ getBlockRects,
439
+ getBlockRect,
440
+ getFieldRect,
441
+ refreshBlockRect,
442
+ isReady: computed(() => mutationsReady.value && intersectionReady.value),
443
+ init,
444
+ getDragElement
445
+ };
446
+ }
@@ -0,0 +1,9 @@
1
+ import type { DraggableItem, DropArea } from '#blokkli/types';
2
+ type DropAreaProviderFunction = (items: DraggableItem[]) => DropArea[] | DropArea | undefined;
3
+ export type DropAreaProvider = {
4
+ add: (fn: DropAreaProviderFunction) => void;
5
+ remove: (fn: DropAreaProviderFunction) => void;
6
+ getDropAreas: (items: DraggableItem[]) => DropArea[];
7
+ };
8
+ export default function (): DropAreaProvider;
9
+ export {};
@@ -0,0 +1,22 @@
1
+ import { falsy } from "./index.js";
2
+ export default function() {
3
+ let functions = [];
4
+ const add = (fn) => {
5
+ functions.push(fn);
6
+ };
7
+ const remove = (fn) => {
8
+ functions = functions.filter((v) => v !== fn);
9
+ };
10
+ const getDropAreas = (items) => functions.flatMap((fn) => {
11
+ const v = fn(items);
12
+ if (v) {
13
+ return v;
14
+ }
15
+ return null;
16
+ }).filter(falsy);
17
+ return {
18
+ add,
19
+ remove,
20
+ getDropAreas
21
+ };
22
+ }
@@ -0,0 +1,3 @@
1
+ export declare function easeOutElastic(time: number, startIntensity?: number, elasticPeriod?: number): number;
2
+ export declare function easeOutSine(x: number): number;
3
+ export declare function easeOutQuad(x: number): number;
@@ -0,0 +1,16 @@
1
+ export function easeOutElastic(time, startIntensity = 2, elasticPeriod = 0.5) {
2
+ if (time === 0 || time === 1) {
3
+ return time;
4
+ }
5
+ const modifiedTime = Math.pow(time, startIntensity);
6
+ const amplitudeAdjustment = elasticPeriod / (2 * Math.PI) * Math.asin(1);
7
+ return Math.pow(2, -10 * modifiedTime) * Math.sin(
8
+ (modifiedTime - amplitudeAdjustment) * (2 * Math.PI) / elasticPeriod
9
+ ) + 1;
10
+ }
11
+ export function easeOutSine(x) {
12
+ return Math.sin(x * Math.PI / 2);
13
+ }
14
+ export function easeOutQuad(x) {
15
+ return 1 - (1 - x) * (1 - x);
16
+ }
@@ -0,0 +1,3 @@
1
+ import type { EventbusEvents } from '#blokkli/types';
2
+ export declare const eventBus: import("mitt").Emitter<EventbusEvents>;
3
+ export declare const emitMessage: (message: string, type?: "success" | "error", additional?: string | Error | unknown) => void;
@@ -0,0 +1,5 @@
1
+ import mitt from "mitt";
2
+ export const eventBus = mitt();
3
+ export const emitMessage = (message, type = "success", additional) => {
4
+ eventBus.emit("message", { type, message, additional });
5
+ };
@@ -0,0 +1,23 @@
1
+ import type { FeatureDefinition, AdapterMethods } from '#blokkli/types';
2
+ import type { ValidFeatureKey } from '#blokkli-runtime/features';
3
+ import { type ComputedRef } from '#imports';
4
+ export type FeaturesProvider = {
5
+ features: ComputedRef<FeatureDefinition<AdapterMethods[], ValidFeatureKey>[]>;
6
+ mount: (feature: FeatureDefinition<AdapterMethods[], ValidFeatureKey>) => void;
7
+ unmount: (id: string) => void;
8
+ };
9
+ export default function (): {
10
+ features: ComputedRef<{
11
+ id: "artboard" | "clipboard" | "delete" | "duplicate" | "edit" | "exit" | "grid" | "help" | "history" | "multi-select" | "preview" | "publish" | "revert" | "search" | "selection" | "options" | "add-list" | "assistant" | "block-add-list" | "command-palette" | "comments" | "conversions" | "debug" | "dragging-overlay" | "edit-form" | "editable-field" | "editable-mask" | "entity-title" | "field-areas" | "fragments" | "import-existing" | "library" | "media-library" | "ownership" | "preview-grant" | "responsive-preview" | "settings" | "structure" | "theme" | "touch-action-bar" | "tour" | "transform" | "translations" | "validations" | "demo-feature";
12
+ label?: string | undefined;
13
+ icon: import("../../../playground/.nuxt/blokkli/icons").BlokkliIcon;
14
+ description?: string | undefined;
15
+ dependencies?: ("artboard" | "clipboard" | "delete" | "duplicate" | "edit" | "exit" | "grid" | "help" | "history" | "multi-select" | "preview" | "publish" | "revert" | "search" | "selection" | "options" | "add-list" | "assistant" | "block-add-list" | "command-palette" | "comments" | "conversions" | "debug" | "dragging-overlay" | "edit-form" | "editable-field" | "editable-mask" | "entity-title" | "field-areas" | "fragments" | "import-existing" | "library" | "media-library" | "ownership" | "preview-grant" | "responsive-preview" | "settings" | "structure" | "theme" | "touch-action-bar" | "tour" | "transform" | "translations" | "validations" | "demo-feature")[] | undefined;
16
+ viewports?: import("../constants").Viewport[] | undefined;
17
+ requiredAdapterMethods?: (keyof import("../adapter").BlokkliAdapter<any>)[] | undefined;
18
+ settings?: Record<string, import("#blokkli/types").FeatureDefinitionSetting> | undefined;
19
+ screenshot?: string | undefined;
20
+ }[]>;
21
+ mount: (feature: FeatureDefinition<AdapterMethods[], ValidFeatureKey>) => void;
22
+ unmount: (id: string) => void;
23
+ };
@@ -0,0 +1,16 @@
1
+ import { computed, ref } from "#imports";
2
+ export default function() {
3
+ const mountedFeatures = ref([]);
4
+ const features = computed(() => mountedFeatures.value);
5
+ const unmount = (id) => {
6
+ mountedFeatures.value = mountedFeatures.value.filter((v) => v.id !== id);
7
+ };
8
+ const mount = (feature) => {
9
+ mountedFeatures.value.push(feature);
10
+ };
11
+ return {
12
+ features,
13
+ mount,
14
+ unmount
15
+ };
16
+ }
@@ -0,0 +1,9 @@
1
+ import type { MutatedField, UpdateBlockOptionEvent } from '../types.js';
2
+ type FrameEventBusEvents = {
3
+ selectItems: string[];
4
+ mutatedFields: MutatedField[];
5
+ focus: string;
6
+ updateOption: UpdateBlockOptionEvent;
7
+ };
8
+ export declare const frameEventBus: import("mitt").Emitter<FrameEventBusEvents>;
9
+ export {};
@@ -0,0 +1,2 @@
1
+ import mitt from "mitt";
2
+ export const frameEventBus = mitt();
@@ -0,0 +1,87 @@
1
+ import type { DraggableItem, Rectangle, DroppableEntityField, DraggableExistingBlock, EntityContext, Coord } from '#blokkli/types';
2
+ import type { RGB } from '#blokkli/types/theme';
3
+ /**
4
+ * Type check for falsy values.
5
+ *
6
+ * Used as the callback for array.filter, e.g.
7
+ * items.filter(falsy)
8
+ */
9
+ export declare function falsy<T>(value: T): value is NonNullable<T>;
10
+ /**
11
+ * Maps a HTML element that is draggable to a draggable item data object.
12
+ */
13
+ export declare function buildDraggableItem(element: Element | EventTarget): DraggableItem | undefined;
14
+ export declare function findElement(uuid: string): HTMLElement | undefined;
15
+ export declare function onlyUnique(value: string, index: number, self: Array<string>): boolean;
16
+ /**
17
+ * Convert a date to a relative time string, such as
18
+ * "a minute ago", "in 2 hours", "yesterday", "3 months ago", etc.
19
+ * using Intl.RelativeTimeFormat
20
+ */
21
+ export declare function getRelativeTimeString(date: Date | number, lang?: string): string;
22
+ export declare function modulo(n: number, m: number): number;
23
+ export declare function getBounds(rects: Rectangle[]): Rectangle | undefined;
24
+ export declare function intersects(a: Rectangle, b: Rectangle): boolean;
25
+ export declare function isInsideRect(x: number, y: number, rect: Rectangle): boolean;
26
+ /**
27
+ * Calculate the intersection amount of two rectangles as a value from 0 to 1.
28
+ */
29
+ export declare function calculateIntersection(rectA: Rectangle, rectB: Rectangle): number;
30
+ /**
31
+ * Return the closest rectangle.
32
+ */
33
+ export declare function findClosestRectangle<T extends Rectangle>(x: number, y: number, rects: T[]): T;
34
+ /**
35
+ * Return the distance from the given coordinates to the center of the rectangle.
36
+ */
37
+ export declare function distanceToRectangle(x: number, y: number, rect: Rectangle): number;
38
+ /**
39
+ * Return the distance from the given coordinates to the center of the rectangle.
40
+ */
41
+ export declare function distanceToClosestRectangleEdge(x: number, y: number, rect: Rectangle): number;
42
+ export declare function getDistance(a: Coord, b: Coord): number;
43
+ export declare const parseColorString: (color: string) => RGB | undefined;
44
+ /**
45
+ * Determine the visual background color of an element.
46
+ *
47
+ * If the element defines a background color itself, it will be returned.
48
+ * If the element has no explicit background color, we iterate over the
49
+ * ancestors until we find an element with a background color. If no background
50
+ * color can be determined, a transparent color is returned.
51
+ */
52
+ export declare const realBackgroundColor: (el: HTMLElement | SVGElement | null) => string;
53
+ export declare const lerp: (s: number, e: number, t: number) => number;
54
+ /**
55
+ * Calculate the ideal X coordinate for placing a rectangle.
56
+ *
57
+ * Coordinates are assumed to be 0,0 for top-left. The method returns a number that can be used to set the
58
+ */
59
+ export declare const calculateCenterPosition: (blockingRects: Rectangle[], viewport: Rectangle, widthToPlace: number) => number;
60
+ export declare function getContrastRatio(color1: RGB, color2: RGB): number;
61
+ export declare function findHighestContrastColor(colors: RGB[], backgroundColor?: RGB): RGB;
62
+ export declare const rgbaToString: (color: RGB, alpha?: number) => string;
63
+ export declare const getNumericStyleValue: (str: string, fallback?: number) => number;
64
+ /**
65
+ * Position the given rectToPlace so that it doesn't overlap with any of the blockingRects.
66
+ */
67
+ export declare function findIdealRectPosition(blockingRects: Rectangle[], rectToPlace: Rectangle, viewport: Rectangle, maxOverlap?: number): {
68
+ x: number;
69
+ y: number;
70
+ };
71
+ export declare const findClosestBlock: (el: Element | EventTarget) => DraggableExistingBlock | undefined;
72
+ /**
73
+ * Find the closest entity context from a BlokkliProvider.
74
+ */
75
+ export declare const findClosestEntityContext: (el: HTMLElement) => EntityContext | undefined;
76
+ export declare const findParentContext: (el: HTMLElement) => EntityContext | DraggableExistingBlock | undefined;
77
+ /**
78
+ * Maps a HTMLElement to a DroppableEntityField.
79
+ */
80
+ export declare const mapDroppableField: (el: Element) => DroppableEntityField;
81
+ export declare const originatesFromEditable: (e: MouseEvent | TouchEvent) => HTMLElement | undefined;
82
+ export declare const getOriginatingDroppableElement: (e: MouseEvent | TouchEvent) => HTMLElement | undefined;
83
+ export declare const originatesFromTextInput: (e: Event) => boolean;
84
+ export declare function getFieldKey(uuid: string, fieldName: string): string;
85
+ export declare function getInteractionCoordinates(e: MouseEvent | TouchEvent): Coord;
86
+ export declare function toShaderColor(rgba: RGB): RGB;
87
+ export declare function generateUUID(): string;