@blokkli/editor 2.0.0-alpha.13 → 2.0.0-alpha.14

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 (272) hide show
  1. package/dist/module.d.mts +1 -1
  2. package/dist/module.json +1 -1
  3. package/dist/module.mjs +4003 -1162
  4. package/dist/modules/drupal/graphql/base/fragment.ParagraphsBlokkliConfigInput.graphql +31 -0
  5. package/dist/modules/drupal/graphql/base/fragment.blokkliProps.graphql +1 -0
  6. package/dist/modules/drupal/graphql/base/fragment.paragraphsBlokkliEditState.graphql +1 -0
  7. package/dist/modules/drupal/graphql/base/query.pbEntityConfig.graphql +5 -0
  8. package/dist/modules/drupal/graphql/features/transform.graphql +9 -1
  9. package/dist/modules/drupal/graphql/features/transform_host.graphql +38 -0
  10. package/dist/modules/drupal/graphql/mutations/update_host_options.graphql +15 -0
  11. package/dist/modules/drupal/index.d.mts +1 -1
  12. package/dist/modules/drupal/index.mjs +20 -7
  13. package/dist/modules/drupal/runtime/adapter/index.js +109 -4
  14. package/dist/runtime/adapter/index.d.ts +54 -1
  15. package/dist/runtime/blokkliPlugins/AddAction/index.vue +27 -3
  16. package/dist/runtime/blokkliPlugins/BlockIndicator/index.vue +65 -0
  17. package/dist/runtime/blokkliPlugins/BlockIndicator/index.vue.d.ts +26 -0
  18. package/dist/runtime/blokkliPlugins/ContextMenu/Menu/index.vue +3 -0
  19. package/dist/runtime/blokkliPlugins/ContextMenu/index.vue +3 -2
  20. package/dist/runtime/blokkliPlugins/DroppableEdit/index.vue +3 -3
  21. package/dist/runtime/blokkliPlugins/ItemDropdown/index.vue +49 -11
  22. package/dist/runtime/blokkliPlugins/ItemDropdown/index.vue.d.ts +29 -15
  23. package/dist/runtime/blokkliPlugins/Sidebar/Detached/index.vue +6 -7
  24. package/dist/runtime/blokkliPlugins/Sidebar/index.vue +2 -9
  25. package/dist/runtime/blokkliPlugins/Sidebar/index.vue.d.ts +1 -1
  26. package/dist/runtime/blokkliPlugins/ViewOption/index.vue +6 -3
  27. package/dist/runtime/blokkliPlugins/index.d.ts +8 -7
  28. package/dist/runtime/blokkliPlugins/index.js +15 -13
  29. package/dist/runtime/components/Blocks/Fragment/icon.svg +1 -1
  30. package/dist/runtime/components/BlokkliProvider.vue +1 -0
  31. package/dist/runtime/components/BlokkliProvider.vue.d.ts +1 -0
  32. package/dist/runtime/components/Edit/Actions/index.vue +39 -67
  33. package/dist/runtime/components/Edit/AddListItem/index.vue +2 -5
  34. package/dist/runtime/components/Edit/AddListItem/index.vue.d.ts +1 -1
  35. package/dist/runtime/components/Edit/AddListItemIcon/index.vue +19 -0
  36. package/dist/runtime/components/Edit/AddListItemIcon/index.vue.d.ts +15 -0
  37. package/dist/runtime/components/Edit/AppMenu/index.vue +5 -5
  38. package/dist/runtime/components/Edit/Dialog/index.vue +5 -1
  39. package/dist/runtime/components/Edit/Dialog/index.vue.d.ts +1 -1
  40. package/dist/runtime/components/Edit/DiffViewer/State.vue +276 -0
  41. package/dist/runtime/components/Edit/DiffViewer/State.vue.d.ts +16 -0
  42. package/dist/runtime/components/Edit/DragInteractions/index.vue +35 -6
  43. package/dist/runtime/components/Edit/EditProvider.vue +46 -35
  44. package/dist/runtime/components/Edit/Features/AddList/index.vue +15 -25
  45. package/dist/runtime/components/Edit/Features/Analyze/Overlay/fragment.glsl +58 -0
  46. package/dist/runtime/components/Edit/Features/Analyze/Overlay/index.vue +168 -0
  47. package/dist/runtime/components/Edit/Features/Analyze/Overlay/index.vue.d.ts +9 -0
  48. package/dist/runtime/components/Edit/Features/Analyze/Overlay/vertex.glsl +72 -0
  49. package/dist/runtime/components/Edit/Features/Analyze/Renderer.vue +159 -0
  50. package/dist/runtime/components/Edit/Features/Analyze/Renderer.vue.d.ts +7 -0
  51. package/dist/runtime/components/Edit/Features/Analyze/Results/Results.vue +100 -0
  52. package/dist/runtime/components/Edit/Features/Analyze/Results/Results.vue.d.ts +6 -0
  53. package/dist/runtime/components/Edit/Features/Analyze/Results/ResultsItem.vue +56 -0
  54. package/dist/runtime/components/Edit/Features/Analyze/Results/ResultsItem.vue.d.ts +3 -0
  55. package/dist/runtime/components/Edit/Features/Analyze/Results/ResultsItemNodes.vue +87 -0
  56. package/dist/runtime/components/Edit/Features/Analyze/Results/ResultsItemNodes.vue.d.ts +7 -0
  57. package/dist/runtime/components/Edit/Features/Analyze/Results/ResultsItemNodesTarget.vue +101 -0
  58. package/dist/runtime/components/Edit/Features/Analyze/Results/ResultsItemNodesTarget.vue.d.ts +8 -0
  59. package/dist/runtime/components/Edit/Features/Analyze/Results/Status.vue +18 -0
  60. package/dist/runtime/components/Edit/Features/Analyze/Results/Status.vue.d.ts +8 -0
  61. package/dist/runtime/components/Edit/Features/Analyze/Summary/Chart.vue +92 -0
  62. package/dist/runtime/components/Edit/Features/Analyze/Summary/Chart.vue.d.ts +17 -0
  63. package/dist/runtime/components/Edit/Features/Analyze/Summary/index.vue +77 -0
  64. package/dist/runtime/components/Edit/Features/Analyze/Summary/index.vue.d.ts +6 -0
  65. package/dist/runtime/components/Edit/Features/Analyze/analyzers/axe.d.ts +12 -0
  66. package/dist/runtime/components/Edit/Features/Analyze/analyzers/axe.js +75 -0
  67. package/dist/runtime/components/Edit/Features/Analyze/analyzers/defineAnalyzer.d.ts +4 -0
  68. package/dist/runtime/components/Edit/Features/Analyze/analyzers/defineAnalyzer.js +5 -0
  69. package/dist/runtime/components/Edit/Features/Analyze/analyzers/helpers/Context.d.ts +32 -0
  70. package/dist/runtime/components/Edit/Features/Analyze/analyzers/helpers/Context.js +45 -0
  71. package/dist/runtime/components/Edit/Features/Analyze/analyzers/helpers/collectTextElements.d.ts +5 -0
  72. package/dist/runtime/components/Edit/Features/Analyze/analyzers/helpers/collectTextElements.js +95 -0
  73. package/dist/runtime/components/Edit/Features/Analyze/analyzers/helpers/normalizeArray.d.ts +3 -0
  74. package/dist/runtime/components/Edit/Features/Analyze/analyzers/helpers/normalizeArray.js +13 -0
  75. package/dist/runtime/components/Edit/Features/Analyze/analyzers/index.d.ts +2 -0
  76. package/dist/runtime/components/Edit/Features/Analyze/analyzers/index.js +2 -0
  77. package/dist/runtime/components/Edit/Features/Analyze/analyzers/readability.d.ts +2 -0
  78. package/dist/runtime/components/Edit/Features/Analyze/analyzers/readability.js +165 -0
  79. package/dist/runtime/components/Edit/Features/Analyze/analyzers/types.d.ts +44 -0
  80. package/dist/runtime/components/Edit/Features/Analyze/analyzers/types.js +0 -0
  81. package/dist/runtime/components/Edit/Features/Analyze/helper.d.ts +5 -0
  82. package/dist/runtime/components/Edit/Features/Analyze/helper.js +28 -0
  83. package/dist/runtime/components/Edit/Features/Analyze/index.vue +44 -0
  84. package/dist/runtime/components/Edit/Features/Anchors/Renderer.vue +136 -0
  85. package/dist/runtime/components/Edit/Features/Anchors/index.vue +32 -0
  86. package/dist/runtime/components/Edit/Features/Anchors/index.vue.d.ts +2 -0
  87. package/dist/runtime/components/Edit/Features/Artboard/Overview/index.vue +25 -13
  88. package/dist/runtime/components/Edit/Features/Artboard/Renderer.vue +296 -0
  89. package/dist/runtime/components/Edit/Features/Artboard/Renderer.vue.d.ts +7 -0
  90. package/dist/runtime/components/Edit/Features/Artboard/index.vue +10 -245
  91. package/dist/runtime/components/Edit/Features/Assistant/index.vue +3 -2
  92. package/dist/runtime/components/Edit/Features/BlockAddList/index.vue +4 -4
  93. package/dist/runtime/components/Edit/Features/Clipboard/index.vue +161 -28
  94. package/dist/runtime/components/Edit/Features/CommandPalette/Palette/Group/index.vue +16 -4
  95. package/dist/runtime/components/Edit/Features/CommandPalette/Palette/Group/index.vue.d.ts +0 -1
  96. package/dist/runtime/components/Edit/Features/CommandPalette/Palette/index.vue +4 -53
  97. package/dist/runtime/components/Edit/Features/CommandPalette/index.vue +3 -2
  98. package/dist/runtime/components/Edit/Features/Conversions/index.vue +12 -14
  99. package/dist/runtime/components/Edit/Features/Debug/Viewport/index.vue +14 -0
  100. package/dist/runtime/components/Edit/Features/Debug/index.vue +27 -24
  101. package/dist/runtime/components/Edit/Features/Diff/DiffView/index.vue +13 -190
  102. package/dist/runtime/components/Edit/Features/Diff/index.vue +2 -2
  103. package/dist/runtime/components/Edit/Features/DraggingOverlay/DragItems/index.vue +4 -4
  104. package/dist/runtime/components/Edit/Features/DraggingOverlay/DropTargets/fragment.glsl +1 -1
  105. package/dist/runtime/components/Edit/Features/DraggingOverlay/DropTargets/index.vue +35 -71
  106. package/dist/runtime/components/Edit/Features/DraggingOverlay/DropTargets/vertex.glsl +1 -1
  107. package/dist/runtime/components/Edit/Features/DraggingOverlay/index.vue +62 -48
  108. package/dist/runtime/components/Edit/Features/EditForm/Frame/index.vue +3 -3
  109. package/dist/runtime/components/Edit/Features/EditForm/index.vue +3 -3
  110. package/dist/runtime/components/Edit/Features/EditableField/index.vue +6 -2
  111. package/dist/runtime/components/Edit/Features/EditableMask/index.vue +3 -20
  112. package/dist/runtime/components/Edit/Features/Fragments/index.vue +3 -2
  113. package/dist/runtime/components/Edit/Features/History/index.vue +35 -12
  114. package/dist/runtime/components/Edit/Features/ImportExisting/Dialog/index.vue +6 -2
  115. package/dist/runtime/components/Edit/Features/ImportExisting/index.vue +3 -2
  116. package/dist/runtime/components/Edit/Features/Library/index.vue +11 -9
  117. package/dist/runtime/components/Edit/Features/MediaLibrary/Library/index.vue +5 -8
  118. package/dist/runtime/components/Edit/Features/MultiSelect/Overlay/fragment.glsl +1 -1
  119. package/dist/runtime/components/Edit/Features/MultiSelect/Overlay/index.vue +9 -4
  120. package/dist/runtime/components/Edit/Features/MultiSelect/Overlay/vertex.glsl +1 -1
  121. package/dist/runtime/components/Edit/Features/MultiSelect/index.vue +8 -14
  122. package/dist/runtime/components/Edit/Features/Options/Form/Checkbox/index.vue +3 -2
  123. package/dist/runtime/components/Edit/Features/Options/Form/Checkbox/index.vue.d.ts +2 -0
  124. package/dist/runtime/components/Edit/Features/Options/Form/Item.vue +9 -3
  125. package/dist/runtime/components/Edit/Features/Options/Form/Item.vue.d.ts +0 -1
  126. package/dist/runtime/components/Edit/Features/Options/Form/Radios/index.vue +37 -19
  127. package/dist/runtime/components/Edit/Features/Options/Form/Radios/index.vue.d.ts +8 -2
  128. package/dist/runtime/components/Edit/Features/Options/Form/index.vue +81 -37
  129. package/dist/runtime/components/Edit/Features/Options/Form/index.vue.d.ts +5 -5
  130. package/dist/runtime/components/Edit/Features/Options/index.vue +30 -6
  131. package/dist/runtime/components/Edit/Features/PreviewGrant/index.vue +3 -3
  132. package/dist/runtime/components/Edit/Features/Publish/Dialog/index.vue +1 -0
  133. package/dist/runtime/components/Edit/Features/Publish/index.vue +3 -2
  134. package/dist/runtime/components/Edit/Features/Revert/index.vue +3 -3
  135. package/dist/runtime/components/Edit/Features/Search/index.vue +3 -2
  136. package/dist/runtime/components/Edit/Features/Selection/AddButtons/AddButtonsField.vue +54 -0
  137. package/dist/runtime/components/Edit/Features/Selection/AddButtons/AddButtonsField.vue.d.ts +14 -0
  138. package/dist/runtime/components/Edit/Features/Selection/AddButtons/Overlay/index.vue +120 -0
  139. package/dist/runtime/components/Edit/Features/Selection/AddButtons/Overlay/index.vue.d.ts +15 -0
  140. package/dist/runtime/components/Edit/Features/Selection/AddButtons/index.vue +459 -0
  141. package/dist/runtime/components/Edit/Features/Selection/AddButtons/index.vue.d.ts +6 -0
  142. package/dist/runtime/components/Edit/Features/Selection/Overlay/fragment.glsl +14 -9
  143. package/dist/runtime/components/Edit/Features/Selection/Overlay/index.vue +32 -11
  144. package/dist/runtime/components/Edit/Features/Selection/Overlay/vertex.glsl +1 -1
  145. package/dist/runtime/components/Edit/Features/Selection/index.vue +76 -7
  146. package/dist/runtime/components/Edit/Features/Settings/Dialog/FeatureSetting/index.vue +12 -17
  147. package/dist/runtime/components/Edit/Features/Settings/index.vue +11 -25
  148. package/dist/runtime/components/Edit/Features/Theme/Color/index.vue +5 -1
  149. package/dist/runtime/components/Edit/Features/Theme/index.vue +2 -1
  150. package/dist/runtime/components/Edit/Features/TouchActionBar/index.vue +3 -2
  151. package/dist/runtime/components/Edit/Features/Transform/Dialog/index.vue +198 -0
  152. package/dist/runtime/components/Edit/Features/Transform/Dialog/index.vue.d.ts +13 -0
  153. package/dist/runtime/components/Edit/Features/Transform/index.vue +155 -44
  154. package/dist/runtime/components/Edit/Form/Radio/index.vue +33 -0
  155. package/dist/runtime/components/Edit/Form/Radio/index.vue.d.ts +20 -0
  156. package/dist/runtime/components/Edit/Form/RadioTabs/index.vue +37 -0
  157. package/dist/runtime/components/Edit/Form/RadioTabs/index.vue.d.ts +22 -0
  158. package/dist/runtime/components/Edit/Form/Select/index.vue +29 -0
  159. package/dist/runtime/components/Edit/Form/Select/index.vue.d.ts +20 -0
  160. package/dist/runtime/components/Edit/Form/Text/index.vue +33 -0
  161. package/dist/runtime/components/Edit/Form/Text/index.vue.d.ts +19 -0
  162. package/dist/runtime/components/Edit/Form/Textarea/index.vue +13 -6
  163. package/dist/runtime/components/Edit/Form/Textarea/index.vue.d.ts +4 -0
  164. package/dist/runtime/components/Edit/FormOverlay/index.vue +1 -1
  165. package/dist/runtime/components/Edit/Indicators/index.vue +123 -0
  166. package/dist/runtime/components/Edit/Indicators/index.vue.d.ts +2 -0
  167. package/dist/runtime/components/Edit/ItemIcon/index.vue +2 -1
  168. package/dist/runtime/components/Edit/Konami/Game/PixelGrid.vue +66 -0
  169. package/dist/runtime/components/Edit/Konami/Game/PixelGrid.vue.d.ts +7 -0
  170. package/dist/runtime/components/Edit/Konami/Game/blokkli.png +0 -0
  171. package/dist/runtime/components/Edit/Konami/Game/charmap.d.ts +2 -0
  172. package/dist/runtime/components/Edit/Konami/Game/charmap.js +168 -0
  173. package/dist/runtime/components/Edit/Konami/Game/index.vue +745 -0
  174. package/dist/runtime/components/Edit/Konami/Game/index.vue.d.ts +6 -0
  175. package/dist/runtime/components/Edit/Konami/Game/textRendering.d.ts +8 -0
  176. package/dist/runtime/components/Edit/Konami/Game/textRendering.js +138 -0
  177. package/dist/runtime/components/Edit/Konami/Game/useIconRendering.d.ts +9 -0
  178. package/dist/runtime/components/Edit/Konami/Game/useIconRendering.js +130 -0
  179. package/dist/runtime/components/Edit/Konami/index.vue +44 -0
  180. package/dist/runtime/components/Edit/Konami/index.vue.d.ts +2 -0
  181. package/dist/runtime/components/Edit/Loading/index.vue +6 -2
  182. package/dist/runtime/components/Edit/Loading/index.vue.d.ts +2 -0
  183. package/dist/runtime/components/Edit/Messages/index.vue +8 -3
  184. package/dist/runtime/components/Edit/PluginConfigForm/Checkbox/index.vue +17 -0
  185. package/dist/runtime/components/Edit/PluginConfigForm/Checkbox/index.vue.d.ts +11 -0
  186. package/dist/runtime/components/Edit/PluginConfigForm/Options/index.vue +37 -0
  187. package/dist/runtime/components/Edit/PluginConfigForm/Options/index.vue.d.ts +11 -0
  188. package/dist/runtime/components/Edit/PluginConfigForm/Text/index.vue +43 -0
  189. package/dist/runtime/components/Edit/PluginConfigForm/Text/index.vue.d.ts +11 -0
  190. package/dist/runtime/components/Edit/PluginConfigForm/index.vue +57 -0
  191. package/dist/runtime/components/Edit/PluginConfigForm/index.vue.d.ts +16 -0
  192. package/dist/runtime/components/Edit/PreviewProvider.vue +3 -4
  193. package/dist/runtime/components/Edit/RelativeTime/index.vue +3 -2
  194. package/dist/runtime/components/Edit/ShortcutIndicator/index.vue +8 -3
  195. package/dist/runtime/components/Edit/SystemRequirements/index.vue +3 -3
  196. package/dist/runtime/components/Edit/Toolbar/index.vue +3 -2
  197. package/dist/runtime/components/Edit/Transition/index.vue +41 -0
  198. package/dist/runtime/components/Edit/Transition/index.vue.d.ts +19 -0
  199. package/dist/runtime/components/Edit/index.d.ts +23 -15
  200. package/dist/runtime/components/Edit/index.js +44 -28
  201. package/dist/runtime/composables/defineBlokkli.js +7 -3
  202. package/dist/runtime/composables/defineBlokkliFeature.d.ts +4 -7
  203. package/dist/runtime/composables/defineBlokkliProvider.d.ts +11 -0
  204. package/dist/runtime/composables/defineBlokkliProvider.js +46 -0
  205. package/dist/runtime/composables/useBlokkliHelper.js +1 -1
  206. package/dist/runtime/constants/index.d.ts +3 -0
  207. package/dist/runtime/constants/index.js +3 -0
  208. package/dist/runtime/css/output.css +1 -1
  209. package/dist/runtime/helpers/addElementClasses.d.ts +2 -0
  210. package/dist/runtime/helpers/addElementClasses.js +24 -0
  211. package/dist/runtime/helpers/animationProvider.d.ts +4 -2
  212. package/dist/runtime/helpers/animationProvider.js +7 -2
  213. package/dist/runtime/helpers/bundles/index.d.ts +1 -0
  214. package/dist/runtime/helpers/bundles/index.js +4 -0
  215. package/dist/runtime/helpers/composables/useStickyToolbar.d.ts +20 -0
  216. package/dist/runtime/helpers/composables/useStickyToolbar.js +215 -0
  217. package/dist/runtime/helpers/definitionProvider.d.ts +2 -1
  218. package/dist/runtime/helpers/definitionProvider.js +17 -0
  219. package/dist/runtime/helpers/domProvider.d.ts +2 -1
  220. package/dist/runtime/helpers/domProvider.js +89 -43
  221. package/dist/runtime/helpers/dropTargets/index.d.ts +6 -0
  222. package/dist/runtime/helpers/dropTargets/index.js +49 -0
  223. package/dist/runtime/helpers/eventBus.d.ts +1 -1
  224. package/dist/runtime/helpers/eventBus.js +2 -2
  225. package/dist/runtime/helpers/index.d.ts +10 -1
  226. package/dist/runtime/helpers/index.js +57 -0
  227. package/dist/runtime/helpers/indicatorsProvider.d.ts +10 -0
  228. package/dist/runtime/helpers/indicatorsProvider.js +23 -0
  229. package/dist/runtime/helpers/keyboardProvider.d.ts +2 -0
  230. package/dist/runtime/helpers/keyboardProvider.js +17 -1
  231. package/dist/runtime/helpers/pluginProvider.d.ts +10 -0
  232. package/dist/runtime/helpers/pluginProvider.js +33 -0
  233. package/dist/runtime/helpers/renderCycle.d.ts +1 -0
  234. package/dist/runtime/helpers/renderCycle.js +10 -0
  235. package/dist/runtime/helpers/runtimeHelpers/index.js +14 -11
  236. package/dist/runtime/helpers/selectionProvider.d.ts +16 -0
  237. package/dist/runtime/helpers/selectionProvider.js +47 -35
  238. package/dist/runtime/helpers/stateProvider.d.ts +6 -2
  239. package/dist/runtime/helpers/stateProvider.js +58 -14
  240. package/dist/runtime/helpers/storageProvider.d.ts +4 -3
  241. package/dist/runtime/helpers/storageProvider.js +56 -3
  242. package/dist/runtime/helpers/symbols.d.ts +1 -0
  243. package/dist/runtime/helpers/symbols.js +1 -0
  244. package/dist/runtime/helpers/textProvider.js +6 -0
  245. package/dist/runtime/helpers/themeProvider.d.ts +2 -0
  246. package/dist/runtime/helpers/themeProvider.js +4 -1
  247. package/dist/runtime/helpers/transform.js +1 -3
  248. package/dist/runtime/helpers/uiProvider.d.ts +7 -2
  249. package/dist/runtime/helpers/uiProvider.js +49 -47
  250. package/dist/runtime/helpers/useTransitionedValue.d.ts +18 -0
  251. package/dist/runtime/helpers/useTransitionedValue.js +57 -0
  252. package/dist/runtime/icons/anchor.svg +1 -0
  253. package/dist/runtime/icons/arrow-left.svg +1 -1
  254. package/dist/runtime/icons/arrow-right.svg +1 -1
  255. package/dist/runtime/icons/arrow-top-right.svg +1 -0
  256. package/dist/runtime/icons/chart.svg +1 -0
  257. package/dist/runtime/icons/copy.svg +1 -0
  258. package/dist/runtime/icons/cursor-move.svg +1 -1
  259. package/dist/runtime/icons/diff.svg +1 -1
  260. package/dist/runtime/icons/eye.svg +1 -1
  261. package/dist/runtime/icons/info.svg +1 -1
  262. package/dist/runtime/icons/link.svg +1 -0
  263. package/dist/runtime/icons/speedometer.svg +1 -0
  264. package/dist/runtime/types/blokkOptions.d.ts +8 -0
  265. package/dist/runtime/types/index.d.ts +163 -5
  266. package/dist/runtime/types/theme.d.ts +2 -1
  267. package/dist/shared/{editor.gz_ac6uT.d.mts → editor.CKsrTpc1.d.mts} +1 -1
  268. package/package.json +20 -5
  269. package/dist/runtime/components/Edit/Features/FieldAreas/Overlay/index.vue +0 -22
  270. package/dist/runtime/components/Edit/Features/FieldAreas/index.vue +0 -41
  271. /package/dist/runtime/components/Edit/Features/{FieldAreas/Overlay → Analyze}/index.vue.d.ts +0 -0
  272. /package/dist/runtime/components/Edit/Features/{FieldAreas/index.vue.d.ts → Anchors/Renderer.vue.d.ts} +0 -0
@@ -0,0 +1,2 @@
1
+ import { type Ref } from '#imports';
2
+ export declare function addElementClasses(element: HTMLElement, classesArg: string | string[], watchSource?: Ref<string | boolean | null | undefined>): void;
@@ -0,0 +1,24 @@
1
+ import { onBeforeUnmount, watch } from "#imports";
2
+ export function addElementClasses(element, classesArg, watchSource) {
3
+ const classes = Array.isArray(classesArg) ? classesArg : [classesArg];
4
+ if (watchSource) {
5
+ watch(
6
+ watchSource,
7
+ function(value) {
8
+ if (value) {
9
+ element.classList.add(...classes);
10
+ } else {
11
+ element.classList.remove(...classes);
12
+ }
13
+ },
14
+ {
15
+ immediate: true
16
+ }
17
+ );
18
+ } else {
19
+ element.classList.add(...classes);
20
+ }
21
+ onBeforeUnmount(() => {
22
+ element.classList.remove(...classes);
23
+ });
24
+ }
@@ -1,6 +1,7 @@
1
- import { type ComputedRef } from '#imports';
1
+ import { type ComputedRef, type WritableComputedRef } from '#imports';
2
2
  import type { UiProvider } from './uiProvider.js';
3
3
  import { type ProgramInfo } from 'twgl.js';
4
+ import type { StorageProvider } from './storageProvider.js';
4
5
  export type AnimationProvider = {
5
6
  /**
6
7
  * Request an animation loop. Should be called when UI state changes.
@@ -13,6 +14,7 @@ export type AnimationProvider = {
13
14
  setSharedUniforms: (gl: WebGLRenderingContext, programInfo: ProgramInfo) => void;
14
15
  dpi: ComputedRef<number>;
15
16
  webglSupported: ComputedRef<boolean | null>;
17
+ webglEnabled: WritableComputedRef<boolean>;
16
18
  getCanvasElement: () => HTMLCanvasElement;
17
19
  /**
18
20
  * Register a WebGL program.
@@ -22,4 +24,4 @@ export type AnimationProvider = {
22
24
  registerProgram: (id: string, gl: WebGLRenderingContext, shaders: string[]) => ProgramInfo;
23
25
  setMouseCoords: (x: number, y: number) => void;
24
26
  };
25
- export default function (ui: UiProvider): AnimationProvider;
27
+ export default function (ui: UiProvider, storage: StorageProvider): AnimationProvider;
@@ -8,7 +8,8 @@ import {
8
8
  } from "#imports";
9
9
  import { eventBus } from "#blokkli/helpers/eventBus";
10
10
  import { createProgramInfo } from "twgl.js";
11
- export default function(ui) {
11
+ export default function(ui, storage) {
12
+ const webglEnabled = storage.use("webglEnabled", true);
12
13
  let mouseX = 0;
13
14
  let mouseY = 0;
14
15
  let iterator = 120;
@@ -99,6 +100,9 @@ export default function(ui) {
99
100
  return {
100
101
  requestDraw,
101
102
  gl: function() {
103
+ if (!webglEnabled.value) {
104
+ return;
105
+ }
102
106
  if (webglSupported.value === false) {
103
107
  return;
104
108
  }
@@ -117,7 +121,8 @@ export default function(ui) {
117
121
  dpi,
118
122
  registerProgram,
119
123
  setMouseCoords,
120
- webglSupported: computed(() => webglSupported.value),
124
+ webglSupported: computed(() => webglSupported.value && webglEnabled.value),
125
+ webglEnabled,
121
126
  getCanvasElement
122
127
  };
123
128
  }
@@ -0,0 +1 @@
1
+ export declare function isInternalBundle(bundle: string): boolean;
@@ -0,0 +1,4 @@
1
+ import { INTERNAL_BUNDLES } from "#blokkli/constants";
2
+ export function isInternalBundle(bundle) {
3
+ return INTERNAL_BUNDLES.includes(bundle);
4
+ }
@@ -0,0 +1,20 @@
1
+ import type { ComputedRef, ShallowRef } from 'vue';
2
+ type PlacementVertical = 'top' | 'bottom' | 'auto';
3
+ type PlacementHorizontal = 'left' | 'center';
4
+ type UseStickyToolbarOptions = {
5
+ getPlacementY?: () => PlacementVertical;
6
+ getPlacementX?: () => PlacementHorizontal;
7
+ shouldUpdate?: () => boolean;
8
+ getWidth?: () => number;
9
+ getHeight?: () => number;
10
+ getMargin?: () => number;
11
+ getAnchorElement?: () => HTMLElement | null;
12
+ getCaretWidth?: () => number;
13
+ };
14
+ type UseStickyToolbar = {
15
+ shouldRender: ComputedRef<boolean>;
16
+ placementY: ComputedRef<'top' | 'bottom'>;
17
+ caretX: ComputedRef<number>;
18
+ };
19
+ export default function (el: Readonly<ShallowRef<HTMLElement | null>>, options?: UseStickyToolbarOptions): UseStickyToolbar;
20
+ export {};
@@ -0,0 +1,215 @@
1
+ import onBlokkliEvent from "./onBlokkliEvent.js";
2
+ import { computed, ref, useBlokkli } from "#imports";
3
+ import { falsy, findIdealRectPosition } from "../index.js";
4
+ const limitPlacedRect = (rect, padding) => {
5
+ return {
6
+ width: rect.width,
7
+ height: rect.height,
8
+ x: Math.min(
9
+ Math.max(rect.x, padding.x),
10
+ padding.x + padding.width - rect.width
11
+ ),
12
+ y: Math.min(
13
+ Math.max(padding.y, rect.y),
14
+ padding.height + padding.y - rect.height
15
+ )
16
+ };
17
+ };
18
+ export default function(el, options) {
19
+ const { ui, selection, dom } = useBlokkli();
20
+ const shouldRender = ref(false);
21
+ const actualPlacement = ref("bottom");
22
+ const caretXPosition = ref(0);
23
+ function getMargin() {
24
+ if (options && options.getMargin) {
25
+ return options.getMargin();
26
+ }
27
+ return 15;
28
+ }
29
+ function getCaretWidth() {
30
+ if (options && options.getCaretWidth) {
31
+ return options.getCaretWidth();
32
+ }
33
+ return 0;
34
+ }
35
+ let anchorRect = null;
36
+ function getCoords(width, height, placementY, placementX, offset, scale) {
37
+ let minX = 0;
38
+ let maxX = 0;
39
+ let minY = 0;
40
+ let maxY = 0;
41
+ let hasRects = false;
42
+ if (options && options.getAnchorElement) {
43
+ const anchorElement = options.getAnchorElement();
44
+ if (anchorElement) {
45
+ anchorRect ||= ui.getAbsoluteElementRect(
46
+ anchorElement.getBoundingClientRect(),
47
+ scale,
48
+ offset
49
+ );
50
+ const rectX = (anchorRect.x + offset.x / scale) * scale;
51
+ const rectY = (anchorRect.y + offset.y / scale) * scale;
52
+ const rectRight = rectX + anchorRect.width * scale;
53
+ const rectBottom = rectY + anchorRect.height * scale;
54
+ minX = rectX;
55
+ maxX = rectRight;
56
+ minY = rectY;
57
+ maxY = rectBottom;
58
+ hasRects = true;
59
+ }
60
+ } else {
61
+ const rects = selection.blocks.value.map((block) => dom.getBlockRect(block.uuid)).filter(falsy).filter((rect2) => rect2.height || rect2.width);
62
+ hasRects = !!rects.length;
63
+ if (hasRects) {
64
+ for (let i = 0; i < rects.length; i++) {
65
+ const { x: x2, y: y2, height: height2, width: rectWidth } = rects[i];
66
+ const rectX = (x2 + offset.x / scale) * scale;
67
+ const rectY = (y2 + offset.y / scale) * scale;
68
+ const rectRight = rectX + rectWidth * scale;
69
+ const rectBottom = rectY + height2 * scale;
70
+ if (i === 0 || rectX < minX) {
71
+ minX = rectX;
72
+ }
73
+ if (i === 0 || rectRight > maxX) {
74
+ maxX = rectRight;
75
+ }
76
+ if (i === 0 || rectY < minY) {
77
+ minY = rectY;
78
+ }
79
+ if (i === 0 || rectBottom > maxY) {
80
+ maxY = rectBottom;
81
+ }
82
+ }
83
+ } else {
84
+ if (!selection.hasHostSelected.value) {
85
+ return;
86
+ }
87
+ minX = offset.x;
88
+ maxX = minX + ui.artboardSize.value.width;
89
+ minY = offset.y;
90
+ maxY = minY + ui.artboardSize.value.height;
91
+ }
92
+ }
93
+ const padding = ui.visibleViewportPadded.value;
94
+ const xSubtract = hasRects ? 5 * Math.min(scale, 1) : 0;
95
+ const margin = getMargin() * Math.min(scale, 1);
96
+ let actualPlacementY = placementY === "auto" ? "bottom" : placementY;
97
+ if (placementY === "auto") {
98
+ const spaceAbove = minY - padding.y;
99
+ const spaceBelow = padding.y + padding.height - maxY;
100
+ const requiredSpace = height + margin;
101
+ if (spaceBelow >= requiredSpace) {
102
+ actualPlacementY = "bottom";
103
+ } else if (spaceAbove >= requiredSpace) {
104
+ actualPlacementY = "top";
105
+ } else {
106
+ actualPlacementY = spaceAbove > spaceBelow ? "top" : "bottom";
107
+ }
108
+ }
109
+ const y = actualPlacementY === "top" ? minY - height - margin : maxY + margin;
110
+ const centerX = (minX + maxX) / 2;
111
+ let x;
112
+ if (placementX === "center") {
113
+ x = centerX - width / 2;
114
+ } else {
115
+ x = minX - xSubtract;
116
+ }
117
+ const rect = limitPlacedRect(
118
+ {
119
+ x,
120
+ y,
121
+ width,
122
+ height
123
+ },
124
+ padding
125
+ );
126
+ const idealPosition = findIdealRectPosition(
127
+ ui.viewportBlockingRects.value,
128
+ rect,
129
+ padding
130
+ );
131
+ if (!idealPosition) {
132
+ return void 0;
133
+ }
134
+ const caretWidth = getCaretWidth();
135
+ const caretHalfWidth = caretWidth / 2;
136
+ const minCaretX = caretHalfWidth;
137
+ const maxCaretX = width - caretHalfWidth;
138
+ const caretX = Math.max(
139
+ minCaretX,
140
+ Math.min(centerX - idealPosition.x, maxCaretX)
141
+ );
142
+ return { ...idealPosition, actualPlacementY, caretX };
143
+ }
144
+ function getWidth() {
145
+ if (options && options.getWidth) {
146
+ return options.getWidth();
147
+ }
148
+ if (el.value) {
149
+ return el.value.clientWidth;
150
+ }
151
+ return null;
152
+ }
153
+ function getHeight() {
154
+ if (options && options.getHeight) {
155
+ return options.getHeight();
156
+ }
157
+ if (el.value) {
158
+ return el.value.clientHeight;
159
+ }
160
+ return null;
161
+ }
162
+ function getPlacementVertical() {
163
+ if (options && options.getPlacementY) {
164
+ return options.getPlacementY();
165
+ }
166
+ return "top";
167
+ }
168
+ function getPlacementHorizontal() {
169
+ if (options && options.getPlacementX) {
170
+ return options.getPlacementX();
171
+ }
172
+ return "left";
173
+ }
174
+ onBlokkliEvent("canvas:draw", (ctx) => {
175
+ if (!el.value) {
176
+ return;
177
+ }
178
+ if (ui.isMobile.value) {
179
+ el.value.style.transform = "";
180
+ shouldRender.value = true;
181
+ return;
182
+ }
183
+ if (options && options.shouldUpdate && !options.shouldUpdate()) {
184
+ return;
185
+ }
186
+ const width = getWidth();
187
+ const height = getHeight();
188
+ if (width === null || height === null) {
189
+ return;
190
+ }
191
+ const placementY = getPlacementVertical();
192
+ const placementX = getPlacementHorizontal();
193
+ const coords = getCoords(
194
+ width,
195
+ height,
196
+ placementY,
197
+ placementX,
198
+ ctx.artboardOffset,
199
+ ctx.artboardScale
200
+ );
201
+ if (!coords) {
202
+ shouldRender.value = false;
203
+ return;
204
+ }
205
+ el.value.style.transform = `translate3d(${coords.x}px, ${coords.y}px, 0)`;
206
+ actualPlacement.value = coords.actualPlacementY;
207
+ caretXPosition.value = coords.caretX;
208
+ shouldRender.value = true;
209
+ });
210
+ return {
211
+ shouldRender: computed(() => shouldRender.value),
212
+ placementY: computed(() => actualPlacement.value),
213
+ caretX: computed(() => caretXPosition.value)
214
+ };
215
+ }
@@ -1,5 +1,5 @@
1
1
  import { type Ref, type ComputedRef } from '#imports';
2
- import type { BlockDefinition, FragmentDefinition } from '#blokkli-build/definitions';
2
+ import type { BlockDefinition, FragmentDefinition, ProviderDefinition } from '#blokkli-build/definitions';
3
3
  import type { ValidFieldListTypes, BlockBundleWithNested } from '#blokkli-build/generated-types';
4
4
  import type { DeepReadonly } from 'vue';
5
5
  import type { BlockDefinitionOptionsInput } from '../types/index.js';
@@ -8,6 +8,7 @@ export type DefinitionProvider = {
8
8
  getBlockDefinition: (bundle: string, fieldListType: ValidFieldListTypes, parentBundle?: BlockBundleWithNested) => BlockDefinition | undefined;
9
9
  getDefaultDefinition: (bundle: string) => BlockDefinition | undefined;
10
10
  getFragmentDefinition: (name: string) => FragmentDefinition | undefined;
11
+ getProviderDefinition: (entityType: string, entityBundle: string) => ProviderDefinition | undefined;
11
12
  getBlockIcon: (bundle: string) => string | undefined;
12
13
  fragmentDefinitions: ComputedRef<FragmentDefinition[]>;
13
14
  blockDefinitions: ComputedRef<BlockDefinition[]>;
@@ -6,6 +6,7 @@ import {
6
6
  export default function() {
7
7
  const blocks = ref(definitions.blocks);
8
8
  const fragments = ref(definitions.fragments);
9
+ const providers = ref(definitions.providers);
9
10
  const renderKey = ref(definitions.renderKey);
10
11
  const blockIcons = ref(definitions.icons);
11
12
  const allGlobalOptions = ref(
@@ -18,6 +19,7 @@ export default function() {
18
19
  renderKey.value = newDefinitions?.default.renderKey || "";
19
20
  blocks.value = newDefinitions?.default?.blocks || [];
20
21
  fragments.value = newDefinitions?.default?.fragments || [];
22
+ providers.value = newDefinitions?.default?.providers || [];
21
23
  blockIcons.value = newDefinitions?.default?.icons || {};
22
24
  allGlobalOptions.value = newDefinitions?.default?.globalOptions || {};
23
25
  });
@@ -57,6 +59,16 @@ export default function() {
57
59
  {}
58
60
  )
59
61
  );
62
+ const providersByName = computed(
63
+ () => providers.value.reduce(
64
+ (acc, definition) => {
65
+ const key = `${definition.entityType}:${definition.bundle}`;
66
+ acc[key] = definition;
67
+ return acc;
68
+ },
69
+ {}
70
+ )
71
+ );
60
72
  function getBlockDefinition(bundle, fieldListType, parentBundle) {
61
73
  const forFieldListType = bundle + "__field:" + fieldListType;
62
74
  if (blocksByKey.value[forFieldListType]) {
@@ -73,6 +85,10 @@ export default function() {
73
85
  function getFragmentDefinition(name) {
74
86
  return fragmentsByName.value[name];
75
87
  }
88
+ function getProviderDefinition(entityType, entityBundle) {
89
+ const key = `${entityType}:${entityBundle}`;
90
+ return providersByName.value[key];
91
+ }
76
92
  function getDefaultDefinition(bundle) {
77
93
  return blocksByKey.value[bundle];
78
94
  }
@@ -82,6 +98,7 @@ export default function() {
82
98
  return {
83
99
  getBlockDefinition,
84
100
  getFragmentDefinition,
101
+ getProviderDefinition,
85
102
  getDefaultDefinition,
86
103
  getBlockIcon,
87
104
  fragmentDefinitions: computed(() => fragments.value),
@@ -26,6 +26,7 @@ export type DomProvider = {
26
26
  updateFieldElement: (entity: EntityContext, fieldName: string, element: HTMLElement) => void;
27
27
  unregisterField: (entity: EntityContext, fieldName: string) => void;
28
28
  registeredFieldTypes: ComputedRef<RegisteredFieldType[]>;
29
+ registeredBlockUuids: ComputedRef<string[]>;
29
30
  /**
30
31
  * Get all droppable entity fields.
31
32
  */
@@ -36,7 +37,7 @@ export type DomProvider = {
36
37
  isBlockVisible(uuid: string): boolean;
37
38
  getActiveProviderElement: () => HTMLElement;
38
39
  getBlockRects: () => Record<string, MeasuredBlockRect>;
39
- getBlockRect: (uuid: string) => MeasuredBlockRect | undefined;
40
+ getBlockRect: (uuid: string, refresh?: boolean) => MeasuredBlockRect | undefined;
40
41
  refreshBlockRect: (uuid: string) => void;
41
42
  getFieldRect: (key: string) => Rectangle | undefined;
42
43
  updateVisibleRects: () => void;
@@ -52,12 +52,25 @@ export default function(ui, debug, definitions) {
52
52
  const logger = debug.createLogger("DomProvider");
53
53
  const mutationsReady = ref(true);
54
54
  const intersectionReady = ref(false);
55
+ const registeredBlocks = reactive({});
56
+ const registeredFields = reactive({});
55
57
  const visibleBlocks = /* @__PURE__ */ new Set();
56
58
  const visibleFields = /* @__PURE__ */ new Set();
57
59
  const blockRects = {};
58
60
  const fieldRects = {};
59
61
  const blockUuidCurrentKey = {};
60
62
  let draggableBlockCache = {};
63
+ let initTimeout = null;
64
+ const isInitalizing = ref(true);
65
+ const observedElementCache = /* @__PURE__ */ new Map();
66
+ const registeredBlockUuids = computed(() => {
67
+ return Object.entries(registeredBlocks).map(([uuid, element]) => {
68
+ if (element) {
69
+ return uuid;
70
+ }
71
+ return null;
72
+ }).filter(falsy);
73
+ });
61
74
  const resizeObserver = new ResizeObserver(function(entries) {
62
75
  for (const entry of entries) {
63
76
  if (!(entry.target instanceof HTMLElement)) {
@@ -127,8 +140,6 @@ export default function(ui, debug, definitions) {
127
140
  }
128
141
  }
129
142
  const intersectionObserver = useDelayedIntersectionObserver(intersectionCallback);
130
- const registeredBlocks = reactive({});
131
- const registeredFields = reactive({});
132
143
  const registeredFieldTypes = computed(() => {
133
144
  const fields = Object.values(registeredFields);
134
145
  const found = /* @__PURE__ */ new Set();
@@ -172,10 +183,15 @@ export default function(ui, debug, definitions) {
172
183
  visibleFields.delete(key);
173
184
  registeredFields[key] = void 0;
174
185
  };
175
- function getElementToObserve(el, bundle, fieldListType, parentBlockBundle) {
186
+ function getElementToObserve(uuid, el, bundle, fieldListType, parentBlockBundle) {
176
187
  if (el.classList.contains("bk-block-proxy")) {
177
188
  return el;
178
189
  }
190
+ const key = `${uuid}${bundle}${fieldListType}${parentBlockBundle ?? "none"}`;
191
+ const cached = observedElementCache.get(key);
192
+ if (cached) {
193
+ return cached;
194
+ }
179
195
  const definition = definitions.getBlockDefinition(
180
196
  bundle,
181
197
  fieldListType,
@@ -186,8 +202,10 @@ export default function(ui, debug, definitions) {
186
202
  }
187
203
  const observableElement = (definition.editor?.getDraggableElement ? definition.editor.getDraggableElement(el) : el) || el;
188
204
  if (observableElement instanceof HTMLElement) {
205
+ observedElementCache.set(key, observableElement);
189
206
  return observableElement;
190
207
  }
208
+ observedElementCache.set(key, el);
191
209
  return el;
192
210
  }
193
211
  const findBlock = (uuid) => {
@@ -261,23 +279,41 @@ export default function(ui, debug, definitions) {
261
279
  function getBlockRects() {
262
280
  return blockRects;
263
281
  }
264
- function getBlockRect(uuid) {
282
+ function getBlockRect(uuid, refresh) {
283
+ if (refresh) {
284
+ refreshBlockRect(uuid);
285
+ }
265
286
  return blockRects[uuid];
266
287
  }
267
288
  function getFieldRect(key) {
268
289
  return fieldRects[key];
269
290
  }
270
- function refreshBlockRect(uuid) {
271
- const block = findBlock(uuid);
272
- if (!block) {
291
+ function refreshBlockRect(uuid, providedOffset, providedScale) {
292
+ const offset = providedOffset ?? ui.artboardOffset.value;
293
+ const scale = providedScale ?? ui.artboardScale.value;
294
+ const el = registeredBlocks[uuid];
295
+ if (!el) {
273
296
  return;
274
297
  }
275
- const el = getDragElement(block);
276
- if (!el) {
298
+ const bundle = el.dataset.itemBundle;
299
+ const hostBundle = el.dataset.hostBundle;
300
+ const hostFieldListType = el.dataset.hostFieldListType;
301
+ if (!bundle || !hostFieldListType) {
277
302
  return;
278
303
  }
304
+ const observableElement = getElementToObserve(
305
+ uuid,
306
+ el,
307
+ bundle,
308
+ hostFieldListType,
309
+ hostBundle
310
+ );
279
311
  blockRects[uuid] = rectWithTime(
280
- ui.getAbsoluteElementRect(el.getBoundingClientRect())
312
+ ui.getAbsoluteElementRect(
313
+ observableElement.getBoundingClientRect(),
314
+ scale,
315
+ offset
316
+ )
281
317
  );
282
318
  }
283
319
  function refreshFieldRect(key) {
@@ -298,34 +334,15 @@ export default function(ui, debug, definitions) {
298
334
  return getVisibleBlocks();
299
335
  }
300
336
  function updateVisibleRects() {
337
+ logger.log("Update visible rects");
301
338
  const toUpdate = getUuidsToUpdateRectsFor();
302
339
  const offset = ui.artboardOffset.value;
303
340
  const scale = ui.artboardScale.value;
304
341
  for (let i = 0; i < toUpdate.length; i++) {
305
342
  const uuid = toUpdate[i];
306
- const el = registeredBlocks[uuid];
307
- if (!el) {
308
- continue;
343
+ if (uuid) {
344
+ refreshBlockRect(uuid, offset, scale);
309
345
  }
310
- const bundle = el.dataset.itemBundle;
311
- const hostBundle = el.dataset.hostBundle;
312
- const hostFieldListType = el.dataset.hostFieldListType;
313
- if (!bundle || !hostFieldListType) {
314
- continue;
315
- }
316
- const observableElement = getElementToObserve(
317
- el,
318
- bundle,
319
- hostFieldListType,
320
- hostBundle
321
- );
322
- blockRects[uuid] = rectWithTime(
323
- ui.getAbsoluteElementRect(
324
- observableElement.getBoundingClientRect(),
325
- scale,
326
- offset
327
- )
328
- );
329
346
  }
330
347
  const visibleFieldKeys = getVisibleFields();
331
348
  for (let i = 0; i < visibleFieldKeys.length; i++) {
@@ -342,10 +359,15 @@ export default function(ui, debug, definitions) {
342
359
  }
343
360
  }
344
361
  onBlokkliEvent("state:reloaded", () => {
362
+ observedElementCache.clear();
345
363
  draggableBlockCache = {};
346
364
  if (stateReloadTimeout) {
347
365
  window.clearTimeout(stateReloadTimeout);
348
366
  }
367
+ const allUuids = Object.keys(registeredBlocks);
368
+ if (allUuids.length < 150) {
369
+ updateVisibleRects();
370
+ }
349
371
  stateReloadTimeout = window.setTimeout(updateVisibleRects, 300);
350
372
  });
351
373
  onBlokkliEvent("ui:resized", function() {
@@ -361,24 +383,45 @@ export default function(ui, debug, definitions) {
361
383
  const dragElementUuidMap = /* @__PURE__ */ new WeakMap();
362
384
  const dragElementCache = /* @__PURE__ */ new Map();
363
385
  function getDragElement(block) {
364
- const cached = dragElementCache.get(block.uuid);
365
- if (cached && document.body.contains(cached)) {
366
- return cached;
367
- }
368
386
  const el = block.element();
369
387
  if (!el) {
370
- return;
388
+ return void 0;
371
389
  }
372
- dragElementUuidMap.set(el, block.uuid);
373
- dragElementCache.set(block.uuid, el);
374
- return el;
390
+ return getElementToObserve(
391
+ block.uuid,
392
+ el,
393
+ block.itemBundle,
394
+ block.hostFieldListType,
395
+ block.hostBundle
396
+ );
375
397
  }
376
398
  function isBlockVisible(uuid) {
377
399
  return visibleBlocks.has(uuid);
378
400
  }
401
+ function refreshAllBlockRects() {
402
+ const uuids = Object.keys(blockRects);
403
+ if (uuids.length < 200) {
404
+ for (let i = 0; i < uuids.length; i++) {
405
+ const uuid = uuids[i];
406
+ if (!uuid) {
407
+ continue;
408
+ }
409
+ refreshBlockRect(uuid);
410
+ }
411
+ }
412
+ }
379
413
  function registerBlock(key, uuid, el) {
380
414
  logger.log("registerBlock: " + uuid);
381
415
  blockUuidCurrentKey[uuid] = key;
416
+ if (initTimeout) {
417
+ window.clearTimeout(initTimeout);
418
+ }
419
+ if (isInitalizing.value) {
420
+ initTimeout = window.setTimeout(() => {
421
+ isInitalizing.value = false;
422
+ refreshAllBlockRects();
423
+ }, 500);
424
+ }
382
425
  if (!el) {
383
426
  logger.log("registerBlock call unregisterBlock because no element", uuid);
384
427
  unregisterBlock(key, uuid);
@@ -394,6 +437,7 @@ export default function(ui, debug, definitions) {
394
437
  const item = buildDraggableItem(el);
395
438
  if (item && item.itemType === "existing") {
396
439
  const observableElement = getElementToObserve(
440
+ item.uuid,
397
441
  el,
398
442
  item.itemBundle,
399
443
  item.hostFieldListType,
@@ -415,7 +459,6 @@ export default function(ui, debug, definitions) {
415
459
  intersectionObserver.unobserve(el);
416
460
  resizeObserver.unobserve(el);
417
461
  dragElementUuidMap.delete(el);
418
- dragElementUuidMap.delete(el);
419
462
  }
420
463
  dragElementCache.delete(uuid);
421
464
  registeredBlocks[uuid] = void 0;
@@ -441,12 +484,15 @@ export default function(ui, debug, definitions) {
441
484
  getFieldRect,
442
485
  refreshBlockRect,
443
486
  isBlockVisible,
444
- isReady: computed(() => mutationsReady.value && intersectionReady.value),
487
+ isReady: computed(
488
+ () => mutationsReady.value && intersectionReady.value && !isInitalizing.value
489
+ ),
445
490
  init,
446
491
  getDragElement,
447
492
  updateVisibleRects,
448
493
  registeredFieldTypes,
449
494
  registerBlock,
450
- unregisterBlock
495
+ unregisterBlock,
496
+ registeredBlockUuids
451
497
  };
452
498
  }
@@ -0,0 +1,6 @@
1
+ import type { BlokkliFieldElement } from '#blokkli/types';
2
+ export type Orientation = 'horizontal' | 'vertical';
3
+ export declare const MIN_GAP = 20;
4
+ export declare function getGapSize(orientation: Orientation, element: HTMLElement): number;
5
+ export declare function getChildrenOrientation(element: HTMLElement): Orientation;
6
+ export declare function determineCanAddChildren(field: BlokkliFieldElement, children: HTMLElement[], uuids: string[], currentCount: number, itemsToAdd: number, draggingBundles?: string[]): boolean;