@blokkli/editor 2.0.0-alpha.2 → 2.0.0-alpha.21

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 (428) hide show
  1. package/dist/module.d.mts +1 -1
  2. package/dist/module.json +5 -5
  3. package/dist/module.mjs +5549 -1269
  4. package/dist/modules/drupal/graphql/base/fragment.ParagraphsBlokkliConfigInput.graphql +31 -0
  5. package/dist/modules/drupal/graphql/base/fragment.blokkliProps.graphql +9 -0
  6. package/dist/modules/drupal/graphql/base/fragment.paragraphsBlokkliEditState.graphql +5 -0
  7. package/dist/modules/drupal/graphql/base/fragment.paragraphsFieldItem.graphql +9 -0
  8. package/dist/modules/drupal/graphql/base/query.pbConfig.graphql +1 -10
  9. package/dist/modules/drupal/graphql/base/query.pbEntityConfig.graphql +5 -0
  10. package/dist/modules/drupal/graphql/features/comments.graphql +11 -8
  11. package/dist/modules/drupal/graphql/features/publishNew.graphql +1 -4
  12. package/dist/modules/drupal/graphql/features/scheduler.graphql +31 -0
  13. package/dist/modules/drupal/graphql/features/transform.graphql +9 -1
  14. package/dist/modules/drupal/graphql/features/transform_host.graphql +38 -0
  15. package/dist/modules/drupal/graphql/mutations/set_paragraph_schedule.graphql +15 -0
  16. package/dist/modules/drupal/graphql/mutations/update_host_options.graphql +15 -0
  17. package/dist/modules/drupal/index.d.mts +1 -1
  18. package/dist/modules/drupal/index.mjs +79 -9
  19. package/dist/modules/drupal/runtime/adapter/index.d.ts +3 -0
  20. package/dist/modules/drupal/{adapter/index.mjs → runtime/adapter/index.js} +166 -20
  21. package/dist/runtime/adapter/index.d.ts +111 -1
  22. package/dist/runtime/blokkliPlugins/AddAction/index.vue +27 -3
  23. package/dist/runtime/blokkliPlugins/BlockIndicator/index.vue +65 -0
  24. package/dist/runtime/blokkliPlugins/BlockIndicator/index.vue.d.ts +26 -0
  25. package/dist/runtime/blokkliPlugins/ContextMenu/Menu/index.vue +6 -0
  26. package/dist/runtime/blokkliPlugins/ContextMenu/index.vue +3 -2
  27. package/dist/runtime/blokkliPlugins/ContextMenu/index.vue.d.ts +2 -19
  28. package/dist/runtime/blokkliPlugins/DebugOverlay/index.vue.d.ts +2 -7
  29. package/dist/runtime/blokkliPlugins/DroppableEdit/index.vue +3 -3
  30. package/dist/runtime/blokkliPlugins/DroppableEdit/index.vue.d.ts +2 -19
  31. package/dist/runtime/blokkliPlugins/ItemAction/index.vue +23 -15
  32. package/dist/runtime/blokkliPlugins/ItemAction/index.vue.d.ts +21 -44
  33. package/dist/runtime/blokkliPlugins/ItemDropdown/index.vue +49 -11
  34. package/dist/runtime/blokkliPlugins/ItemDropdown/index.vue.d.ts +29 -15
  35. package/dist/runtime/blokkliPlugins/MenuButton/index.vue.d.ts +3 -3
  36. package/dist/runtime/blokkliPlugins/Sidebar/Detached/index.vue +6 -7
  37. package/dist/runtime/blokkliPlugins/Sidebar/Detached/index.vue.d.ts +2 -51
  38. package/dist/runtime/blokkliPlugins/Sidebar/index.vue +2 -9
  39. package/dist/runtime/blokkliPlugins/Sidebar/index.vue.d.ts +15 -9
  40. package/dist/runtime/blokkliPlugins/ToolbarButton/index.vue.d.ts +1 -1
  41. package/dist/runtime/blokkliPlugins/TourItem/index.vue +10 -5
  42. package/dist/runtime/blokkliPlugins/TourItem/index.vue.d.ts +2 -4
  43. package/dist/runtime/blokkliPlugins/ViewOption/index.vue +6 -3
  44. package/dist/runtime/blokkliPlugins/ViewOption/index.vue.d.ts +4 -3
  45. package/dist/runtime/blokkliPlugins/index.d.ts +8 -7
  46. package/dist/runtime/blokkliPlugins/index.js +15 -13
  47. package/dist/runtime/components/Blocks/Fragment/icon.svg +1 -1
  48. package/dist/runtime/components/Blocks/FromLibrary/index.vue +4 -2
  49. package/dist/runtime/components/BlokkliEditable.vue +34 -16
  50. package/dist/runtime/components/BlokkliEditable.vue.d.ts +2 -1
  51. package/dist/runtime/components/BlokkliField.vue +31 -27
  52. package/dist/runtime/components/BlokkliField.vue.d.ts +61 -17
  53. package/dist/runtime/components/BlokkliItem.vue +2 -2
  54. package/dist/runtime/components/BlokkliItem.vue.d.ts +4 -2
  55. package/dist/runtime/components/BlokkliProvider.vue +60 -45
  56. package/dist/runtime/components/BlokkliProvider.vue.d.ts +45 -7
  57. package/dist/runtime/components/Edit/Actions/index.vue +69 -78
  58. package/dist/runtime/components/Edit/AddListItem/index.vue +2 -5
  59. package/dist/runtime/components/Edit/AddListItem/index.vue.d.ts +1 -1
  60. package/dist/runtime/components/Edit/AddListItemIcon/index.vue +19 -0
  61. package/dist/runtime/components/Edit/AddListItemIcon/index.vue.d.ts +15 -0
  62. package/dist/runtime/components/Edit/AnimationCanvas/index.vue +436 -25
  63. package/dist/runtime/components/Edit/AppMenu/index.vue +5 -5
  64. package/dist/runtime/components/Edit/ArtboardTooltip/index.vue +83 -0
  65. package/dist/runtime/components/Edit/ArtboardTooltip/index.vue.d.ts +32 -0
  66. package/dist/runtime/components/Edit/Banner/index.vue +51 -0
  67. package/dist/runtime/components/Edit/Banner/index.vue.d.ts +18 -0
  68. package/dist/runtime/components/Edit/BlockProxy/index.vue +3 -1
  69. package/dist/runtime/components/Edit/BlokkliErrorBoundary.vue.d.ts +2 -13
  70. package/dist/runtime/components/Edit/Dialog/index.vue +14 -5
  71. package/dist/runtime/components/Edit/Dialog/index.vue.d.ts +4 -2
  72. package/dist/runtime/components/Edit/DiffViewer/State.vue +276 -0
  73. package/dist/runtime/components/Edit/DiffViewer/State.vue.d.ts +16 -0
  74. package/dist/runtime/components/Edit/DraggableList.vue +20 -50
  75. package/dist/runtime/components/Edit/DraggableList.vue.d.ts +7 -7
  76. package/dist/runtime/components/Edit/EditIndicator.vue +118 -44
  77. package/dist/runtime/components/Edit/EditIndicator.vue.d.ts +3 -0
  78. package/dist/runtime/components/Edit/EditProvider.vue +192 -80
  79. package/dist/runtime/components/Edit/EditProvider.vue.d.ts +3 -0
  80. package/dist/runtime/components/Edit/Features/AddList/index.vue +24 -36
  81. package/dist/runtime/components/Edit/Features/Analyze/Overlay/fragment.glsl +58 -0
  82. package/dist/runtime/components/Edit/Features/Analyze/Overlay/index.vue +170 -0
  83. package/dist/runtime/components/Edit/Features/Analyze/Overlay/index.vue.d.ts +9 -0
  84. package/dist/runtime/components/Edit/Features/Analyze/Overlay/vertex.glsl +72 -0
  85. package/dist/runtime/components/Edit/Features/Analyze/Renderer.vue +159 -0
  86. package/dist/runtime/components/Edit/Features/Analyze/Renderer.vue.d.ts +7 -0
  87. package/dist/runtime/components/Edit/Features/Analyze/Results/Results.vue +100 -0
  88. package/dist/runtime/components/Edit/Features/Analyze/Results/Results.vue.d.ts +6 -0
  89. package/dist/runtime/components/Edit/Features/Analyze/Results/ResultsItem.vue +56 -0
  90. package/dist/runtime/components/Edit/Features/Analyze/Results/ResultsItem.vue.d.ts +3 -0
  91. package/dist/runtime/components/Edit/Features/Analyze/Results/ResultsItemNodes.vue +87 -0
  92. package/dist/runtime/components/Edit/Features/Analyze/Results/ResultsItemNodes.vue.d.ts +7 -0
  93. package/dist/runtime/components/Edit/Features/Analyze/Results/ResultsItemNodesTarget.vue +105 -0
  94. package/dist/runtime/components/Edit/Features/Analyze/Results/ResultsItemNodesTarget.vue.d.ts +8 -0
  95. package/dist/runtime/components/Edit/Features/Analyze/Results/Status.vue +18 -0
  96. package/dist/runtime/components/Edit/Features/Analyze/Results/Status.vue.d.ts +8 -0
  97. package/dist/runtime/components/Edit/Features/Analyze/Summary/Chart.vue +92 -0
  98. package/dist/runtime/components/Edit/Features/Analyze/Summary/Chart.vue.d.ts +17 -0
  99. package/dist/runtime/components/Edit/Features/Analyze/Summary/index.vue +77 -0
  100. package/dist/runtime/components/Edit/Features/Analyze/Summary/index.vue.d.ts +6 -0
  101. package/dist/runtime/components/Edit/Features/Analyze/analyzers/axe.d.ts +12 -0
  102. package/dist/runtime/components/Edit/Features/Analyze/analyzers/axe.js +75 -0
  103. package/dist/runtime/components/Edit/Features/Analyze/analyzers/defineAnalyzer.d.ts +4 -0
  104. package/dist/runtime/components/Edit/Features/Analyze/analyzers/defineAnalyzer.js +5 -0
  105. package/dist/runtime/components/Edit/Features/Analyze/analyzers/helpers/Context.d.ts +32 -0
  106. package/dist/runtime/components/Edit/Features/Analyze/analyzers/helpers/Context.js +45 -0
  107. package/dist/runtime/components/Edit/Features/Analyze/analyzers/helpers/collectTextElements.d.ts +5 -0
  108. package/dist/runtime/components/Edit/Features/Analyze/analyzers/helpers/collectTextElements.js +95 -0
  109. package/dist/runtime/components/Edit/Features/Analyze/analyzers/helpers/normalizeArray.d.ts +3 -0
  110. package/dist/runtime/components/Edit/Features/Analyze/analyzers/helpers/normalizeArray.js +13 -0
  111. package/dist/runtime/components/Edit/Features/Analyze/analyzers/index.d.ts +2 -0
  112. package/dist/runtime/components/Edit/Features/Analyze/analyzers/index.js +2 -0
  113. package/dist/runtime/components/Edit/Features/Analyze/analyzers/readability.d.ts +2 -0
  114. package/dist/runtime/components/Edit/Features/Analyze/analyzers/readability.js +165 -0
  115. package/dist/runtime/components/Edit/Features/Analyze/analyzers/types.d.ts +44 -0
  116. package/dist/runtime/components/Edit/Features/Analyze/analyzers/types.js +0 -0
  117. package/dist/runtime/components/Edit/Features/Analyze/helper.d.ts +5 -0
  118. package/dist/runtime/components/Edit/Features/Analyze/helper.js +28 -0
  119. package/dist/runtime/components/Edit/Features/Analyze/index.vue +44 -0
  120. package/dist/runtime/components/Edit/Features/Anchors/Renderer.vue +53 -0
  121. package/dist/runtime/components/Edit/Features/Anchors/index.vue +32 -0
  122. package/dist/runtime/components/Edit/Features/Artboard/Overview/index.vue +25 -13
  123. package/dist/runtime/components/Edit/Features/Artboard/Renderer.vue +299 -0
  124. package/dist/runtime/components/Edit/Features/Artboard/Renderer.vue.d.ts +7 -0
  125. package/dist/runtime/components/Edit/Features/Artboard/index.vue +10 -217
  126. package/dist/runtime/components/Edit/Features/Assistant/index.vue +5 -3
  127. package/dist/runtime/components/Edit/Features/BlockAddList/index.vue +33 -57
  128. package/dist/runtime/components/Edit/Features/BlockScheduler/Dialog/ScheduleSection.vue +154 -0
  129. package/dist/runtime/components/Edit/Features/BlockScheduler/Dialog/ScheduleSection.vue.d.ts +27 -0
  130. package/dist/runtime/components/Edit/Features/BlockScheduler/Dialog/index.vue +222 -0
  131. package/dist/runtime/components/Edit/Features/BlockScheduler/Dialog/index.vue.d.ts +11 -0
  132. package/dist/runtime/components/Edit/Features/BlockScheduler/index.vue +96 -0
  133. package/dist/runtime/components/Edit/Features/BlockScheduler/index.vue.d.ts +2 -0
  134. package/dist/runtime/components/Edit/Features/Clipboard/index.vue +177 -46
  135. package/dist/runtime/components/Edit/Features/CommandPalette/Palette/Item/index.vue +51 -0
  136. package/dist/runtime/components/Edit/Features/CommandPalette/Palette/Item/index.vue.d.ts +17 -0
  137. package/dist/runtime/components/Edit/Features/CommandPalette/Palette/index.vue +48 -117
  138. package/dist/runtime/components/Edit/Features/CommandPalette/index.vue +5 -2
  139. package/dist/runtime/components/Edit/Features/Comments/AddForm/index.vue +35 -20
  140. package/dist/runtime/components/Edit/Features/Comments/AddForm/index.vue.d.ts +5 -3
  141. package/dist/runtime/components/Edit/Features/Comments/CommentInput/index.vue +29 -0
  142. package/dist/runtime/components/Edit/Features/Comments/CommentInput/index.vue.d.ts +13 -0
  143. package/dist/runtime/components/Edit/Features/Comments/Overlay/Item/index.vue +22 -16
  144. package/dist/runtime/components/Edit/Features/Comments/Overlay/Item/index.vue.d.ts +1 -0
  145. package/dist/runtime/components/Edit/Features/Comments/Overlay/index.vue +15 -6
  146. package/dist/runtime/components/Edit/Features/Comments/index.vue +21 -9
  147. package/dist/runtime/components/Edit/Features/Conversions/index.vue +16 -21
  148. package/dist/runtime/components/Edit/Features/Debug/Rects/index.vue +26 -35
  149. package/dist/runtime/components/Edit/Features/Debug/Renderer.vue +240 -0
  150. package/dist/runtime/components/Edit/Features/Debug/Renderer.vue.d.ts +6 -0
  151. package/dist/runtime/components/Edit/Features/Debug/Viewport/index.vue +14 -0
  152. package/dist/runtime/components/Edit/Features/Debug/index.vue +7 -162
  153. package/dist/runtime/components/Edit/Features/Delete/index.vue +1 -1
  154. package/dist/runtime/components/Edit/Features/Diff/DiffView/index.vue +13 -190
  155. package/dist/runtime/components/Edit/Features/Diff/index.vue +2 -2
  156. package/dist/runtime/components/Edit/Features/DraggingOverlay/DragItems/index.vue +18 -10
  157. package/dist/runtime/components/Edit/Features/DraggingOverlay/DropTargets/fragment.glsl +8 -2
  158. package/dist/runtime/components/Edit/Features/DraggingOverlay/DropTargets/index.vue +111 -121
  159. package/dist/runtime/components/Edit/Features/DraggingOverlay/DropTargets/index.vue.d.ts +3 -132
  160. package/dist/runtime/components/Edit/Features/DraggingOverlay/DropTargets/vertex.glsl +2 -1
  161. package/dist/runtime/components/Edit/Features/DraggingOverlay/index.vue +87 -61
  162. package/dist/runtime/components/Edit/Features/Duplicate/index.vue +6 -8
  163. package/dist/runtime/components/Edit/Features/Edit/index.vue +16 -22
  164. package/dist/runtime/components/Edit/Features/EditForm/Frame/index.vue +3 -3
  165. package/dist/runtime/components/Edit/Features/EditForm/index.vue +10 -9
  166. package/dist/runtime/components/Edit/Features/EditableField/Overlay/Frame/index.vue +69 -4
  167. package/dist/runtime/components/Edit/Features/EditableField/Overlay/Frame/index.vue.d.ts +2 -2
  168. package/dist/runtime/components/Edit/Features/EditableField/Overlay/Plaintext/index.vue +13 -9
  169. package/dist/runtime/components/Edit/Features/EditableField/Overlay/index.vue +45 -87
  170. package/dist/runtime/components/Edit/Features/EditableField/Overlay/index.vue.d.ts +2 -2
  171. package/dist/runtime/components/Edit/Features/EditableField/index.vue +45 -43
  172. package/dist/runtime/components/Edit/Features/EditableMask/index.vue +3 -20
  173. package/dist/runtime/components/Edit/Features/EntityTitle/index.vue +33 -1
  174. package/dist/runtime/components/Edit/Features/Fragments/Dialog/index.vue +11 -9
  175. package/dist/runtime/components/Edit/Features/Fragments/index.vue +8 -6
  176. package/dist/runtime/components/Edit/Features/History/index.vue +39 -13
  177. package/dist/runtime/components/Edit/Features/Hover/Overlay/fragment.glsl +139 -0
  178. package/dist/runtime/components/Edit/Features/Hover/Overlay/index.vue +261 -0
  179. package/dist/runtime/components/Edit/Features/Hover/Overlay/index.vue.d.ts +6 -0
  180. package/dist/runtime/components/Edit/Features/Hover/Overlay/vertex.glsl +117 -0
  181. package/dist/runtime/components/Edit/Features/Hover/index.vue +25 -0
  182. package/dist/runtime/components/Edit/Features/Hover/index.vue.d.ts +2 -0
  183. package/dist/runtime/components/Edit/Features/ImportExisting/Dialog/index.vue +6 -2
  184. package/dist/runtime/components/Edit/Features/ImportExisting/index.vue +3 -2
  185. package/dist/runtime/components/Edit/Features/Library/EditReusable/index.vue +5 -7
  186. package/dist/runtime/components/Edit/Features/Library/LibraryDialog/index.vue +19 -27
  187. package/dist/runtime/components/Edit/Features/Library/ReusableDialog/index.vue +32 -28
  188. package/dist/runtime/components/Edit/Features/Library/index.vue +40 -32
  189. package/dist/runtime/components/Edit/Features/MediaLibrary/Library/index.vue +11 -11
  190. package/dist/runtime/components/Edit/Features/MediaLibrary/index.vue +15 -12
  191. package/dist/runtime/components/Edit/Features/MultiSelect/Overlay/fragment.glsl +1 -1
  192. package/dist/runtime/components/Edit/Features/MultiSelect/Overlay/index.vue +44 -32
  193. package/dist/runtime/components/Edit/Features/MultiSelect/Overlay/vertex.glsl +1 -1
  194. package/dist/runtime/components/Edit/Features/MultiSelect/index.vue +10 -18
  195. package/dist/runtime/components/Edit/Features/Options/Form/Checkbox/index.vue +3 -2
  196. package/dist/runtime/components/Edit/Features/Options/Form/Checkbox/index.vue.d.ts +2 -0
  197. package/dist/runtime/components/Edit/Features/Options/Form/Group.vue.d.ts +2 -11
  198. package/dist/runtime/components/Edit/Features/Options/Form/Item.vue +14 -3
  199. package/dist/runtime/components/Edit/Features/Options/Form/Item.vue.d.ts +0 -1
  200. package/dist/runtime/components/Edit/Features/Options/Form/Radios/index.vue +37 -19
  201. package/dist/runtime/components/Edit/Features/Options/Form/Radios/index.vue.d.ts +8 -2
  202. package/dist/runtime/components/Edit/Features/Options/Form/index.vue +88 -42
  203. package/dist/runtime/components/Edit/Features/Options/Form/index.vue.d.ts +5 -5
  204. package/dist/runtime/components/Edit/Features/Options/index.vue +35 -11
  205. package/dist/runtime/components/Edit/Features/Ownership/Renderer.vue +35 -0
  206. package/dist/runtime/components/Edit/Features/Ownership/Renderer.vue.d.ts +6 -0
  207. package/dist/runtime/components/Edit/Features/Ownership/index.vue +7 -25
  208. package/dist/runtime/components/Edit/Features/PreviewGrant/index.vue +3 -3
  209. package/dist/runtime/components/Edit/Features/ProxyView/index.vue +5 -1
  210. package/dist/runtime/components/Edit/Features/Publish/Dialog/Item.vue +41 -14
  211. package/dist/runtime/components/Edit/Features/Publish/Dialog/Item.vue.d.ts +2 -0
  212. package/dist/runtime/components/Edit/Features/Publish/Dialog/PublishOption.vue +47 -0
  213. package/dist/runtime/components/Edit/Features/Publish/Dialog/PublishOption.vue.d.ts +19 -0
  214. package/dist/runtime/components/Edit/Features/Publish/Dialog/Summary.vue +83 -0
  215. package/dist/runtime/components/Edit/Features/Publish/Dialog/Summary.vue.d.ts +9 -0
  216. package/dist/runtime/components/Edit/Features/Publish/Dialog/index.vue +439 -123
  217. package/dist/runtime/components/Edit/Features/Publish/Dialog/index.vue.d.ts +3 -14
  218. package/dist/runtime/components/Edit/Features/Publish/index.vue +57 -24
  219. package/dist/runtime/components/Edit/Features/ResponsivePreview/Frame/index.vue.d.ts +2 -13
  220. package/dist/runtime/components/Edit/Features/Revert/index.vue +3 -3
  221. package/dist/runtime/components/Edit/Features/Search/Overlay/Results/Page/index.vue +15 -15
  222. package/dist/runtime/components/Edit/Features/Search/index.vue +7 -3
  223. package/dist/runtime/components/Edit/Features/Selection/AddButtons/Overlay/index.vue +85 -0
  224. package/dist/runtime/components/Edit/Features/{CommandPalette/Palette/Group → Selection/AddButtons/Overlay}/index.vue.d.ts +8 -13
  225. package/dist/runtime/components/Edit/Features/Selection/AddButtons/Renderer/fragment.glsl +106 -0
  226. package/dist/runtime/components/Edit/Features/Selection/AddButtons/Renderer/index.vue +440 -0
  227. package/dist/runtime/components/Edit/Features/Selection/AddButtons/Renderer/index.vue.d.ts +32 -0
  228. package/dist/runtime/components/Edit/Features/Selection/AddButtons/Renderer/vertex.glsl +102 -0
  229. package/dist/runtime/components/Edit/Features/Selection/AddButtons/index.vue +387 -0
  230. package/dist/runtime/components/Edit/Features/Selection/AddButtons/index.vue.d.ts +6 -0
  231. package/dist/runtime/components/Edit/Features/Selection/Overlay/fragment.glsl +15 -10
  232. package/dist/runtime/components/Edit/Features/Selection/Overlay/index.vue +105 -25
  233. package/dist/runtime/components/Edit/Features/Selection/Overlay/index.vue.d.ts +5 -3
  234. package/dist/runtime/components/Edit/Features/Selection/Overlay/vertex.glsl +12 -3
  235. package/dist/runtime/components/Edit/Features/Selection/OverlayFallback/index.vue +2 -2
  236. package/dist/runtime/components/Edit/Features/Selection/index.vue +135 -25
  237. package/dist/runtime/components/Edit/Features/Settings/Dialog/FeatureSetting/index.vue +12 -17
  238. package/dist/runtime/components/Edit/Features/Settings/index.vue +11 -25
  239. package/dist/runtime/components/Edit/Features/Structure/List/Field/index.vue +2 -2
  240. package/dist/runtime/components/Edit/Features/Structure/List/Item/index.vue +13 -6
  241. package/dist/runtime/components/Edit/Features/Theme/Color/index.vue +5 -1
  242. package/dist/runtime/components/Edit/Features/Theme/index.vue +2 -1
  243. package/dist/runtime/components/Edit/Features/TouchActionBar/index.vue +3 -2
  244. package/dist/runtime/components/Edit/Features/Tour/Overlay/index.vue +3 -0
  245. package/dist/runtime/components/Edit/Features/Transform/Dialog/index.vue +198 -0
  246. package/dist/runtime/components/Edit/Features/Transform/Dialog/index.vue.d.ts +13 -0
  247. package/dist/runtime/components/Edit/Features/Transform/index.vue +156 -70
  248. package/dist/runtime/components/Edit/Features/Translations/Banner/index.vue +17 -11
  249. package/dist/runtime/components/Edit/Features/Translations/index.vue +20 -23
  250. package/dist/runtime/components/Edit/Features/Validations/SidebarItem/index.vue +5 -5
  251. package/dist/runtime/components/Edit/Features/index.vue +17 -7
  252. package/dist/runtime/components/Edit/Form/Datepicker/index.vue +198 -0
  253. package/dist/runtime/components/Edit/Form/Datepicker/index.vue.d.ts +15 -0
  254. package/dist/runtime/components/Edit/Form/Group/index.vue.d.ts +2 -4
  255. package/dist/runtime/components/Edit/Form/Item/index.vue.d.ts +2 -4
  256. package/dist/runtime/components/Edit/Form/Radio/index.vue +33 -0
  257. package/dist/runtime/components/Edit/Form/Radio/index.vue.d.ts +20 -0
  258. package/dist/runtime/components/Edit/Form/RadioTabs/index.vue +37 -0
  259. package/dist/runtime/components/Edit/Form/RadioTabs/index.vue.d.ts +22 -0
  260. package/dist/runtime/components/Edit/Form/Select/index.vue +29 -0
  261. package/dist/runtime/components/Edit/Form/Select/index.vue.d.ts +20 -0
  262. package/dist/runtime/components/Edit/Form/Text/index.vue +34 -0
  263. package/dist/runtime/components/Edit/Form/Text/index.vue.d.ts +20 -0
  264. package/dist/runtime/components/Edit/Form/Textarea/index.vue +13 -6
  265. package/dist/runtime/components/Edit/Form/Textarea/index.vue.d.ts +4 -0
  266. package/dist/runtime/components/Edit/Form/Toggle/index.vue +4 -3
  267. package/dist/runtime/components/Edit/Form/Toggle/index.vue.d.ts +12 -2
  268. package/dist/runtime/components/Edit/FormOverlay/index.vue +1 -1
  269. package/dist/runtime/components/Edit/FormOverlay/index.vue.d.ts +3 -2
  270. package/dist/runtime/components/Edit/Indicators/index.vue +123 -0
  271. package/dist/runtime/components/Edit/Indicators/index.vue.d.ts +2 -0
  272. package/dist/runtime/components/Edit/InfoBox/index.vue +6 -2
  273. package/dist/runtime/components/Edit/InfoBox/index.vue.d.ts +12 -2
  274. package/dist/runtime/components/Edit/ItemIcon/index.vue +2 -1
  275. package/dist/runtime/components/Edit/Konami/Game/PixelGrid.vue +66 -0
  276. package/dist/runtime/components/Edit/Konami/Game/PixelGrid.vue.d.ts +7 -0
  277. package/dist/runtime/components/Edit/Konami/Game/blokkli.png +0 -0
  278. package/dist/runtime/components/Edit/Konami/Game/charmap.d.ts +2 -0
  279. package/dist/runtime/components/Edit/Konami/Game/charmap.js +168 -0
  280. package/dist/runtime/components/Edit/Konami/Game/index.vue +752 -0
  281. package/dist/runtime/components/Edit/Konami/Game/index.vue.d.ts +6 -0
  282. package/dist/runtime/components/Edit/Konami/Game/textRendering.d.ts +8 -0
  283. package/dist/runtime/components/Edit/Konami/Game/textRendering.js +138 -0
  284. package/dist/runtime/components/Edit/Konami/Game/useIconRendering.d.ts +9 -0
  285. package/dist/runtime/components/Edit/Konami/Game/useIconRendering.js +130 -0
  286. package/dist/runtime/components/Edit/Konami/index.vue +44 -0
  287. package/dist/runtime/components/Edit/Konami/index.vue.d.ts +2 -0
  288. package/dist/runtime/components/Edit/Loading/index.vue +6 -2
  289. package/dist/runtime/components/Edit/Loading/index.vue.d.ts +2 -0
  290. package/dist/runtime/components/Edit/Messages/index.vue +8 -3
  291. package/dist/runtime/components/Edit/PluginConfigForm/Checkbox/index.vue +17 -0
  292. package/dist/runtime/components/Edit/PluginConfigForm/Checkbox/index.vue.d.ts +11 -0
  293. package/dist/runtime/components/Edit/PluginConfigForm/Options/index.vue +37 -0
  294. package/dist/runtime/components/Edit/PluginConfigForm/Options/index.vue.d.ts +11 -0
  295. package/dist/runtime/components/Edit/PluginConfigForm/Text/index.vue +43 -0
  296. package/dist/runtime/components/Edit/PluginConfigForm/Text/index.vue.d.ts +11 -0
  297. package/dist/runtime/components/Edit/PluginConfigForm/index.vue +57 -0
  298. package/dist/runtime/components/Edit/PluginConfigForm/index.vue.d.ts +16 -0
  299. package/dist/runtime/components/Edit/PreviewProvider.vue +3 -4
  300. package/dist/runtime/components/Edit/RelativeTime/index.vue +3 -2
  301. package/dist/runtime/components/Edit/RelativeTime/index.vue.d.ts +2 -2
  302. package/dist/runtime/components/Edit/Resizable/index.vue.d.ts +1 -1
  303. package/dist/runtime/components/Edit/ScaleToFit/index.vue.d.ts +1 -1
  304. package/dist/runtime/components/Edit/ScheduleDate/index.vue +131 -0
  305. package/dist/runtime/components/Edit/ScheduleDate/index.vue.d.ts +23 -0
  306. package/dist/runtime/components/Edit/ScrollBoundary/index.vue.d.ts +2 -7
  307. package/dist/runtime/components/Edit/ShortcutIndicator/index.vue +11 -3
  308. package/dist/runtime/components/Edit/Sortli/index.vue.d.ts +1 -1
  309. package/dist/runtime/components/Edit/SystemRequirements/index.vue +3 -3
  310. package/dist/runtime/components/Edit/Toolbar/index.vue +3 -2
  311. package/dist/runtime/components/Edit/Transition/Height.vue +95 -0
  312. package/dist/runtime/components/Edit/Transition/Height.vue.d.ts +36 -0
  313. package/dist/runtime/components/Edit/Transition/index.vue +41 -0
  314. package/dist/runtime/components/Edit/Transition/index.vue.d.ts +19 -0
  315. package/dist/runtime/components/Edit/ViewportBlockingRect/index.vue.d.ts +2 -7
  316. package/dist/runtime/components/Edit/index.d.ts +28 -15
  317. package/dist/runtime/components/Edit/index.js +54 -28
  318. package/dist/runtime/composables/defineBlokkli.js +16 -3
  319. package/dist/runtime/composables/defineBlokkliFeature.d.ts +4 -7
  320. package/dist/runtime/composables/defineBlokkliFragment.js +8 -1
  321. package/dist/runtime/composables/defineBlokkliProvider.d.ts +11 -0
  322. package/dist/runtime/composables/defineBlokkliProvider.js +46 -0
  323. package/dist/runtime/composables/useBlokkliHelper.d.ts +19 -0
  324. package/dist/runtime/composables/useBlokkliHelper.js +95 -0
  325. package/dist/runtime/constants/index.d.ts +3 -0
  326. package/dist/runtime/constants/index.js +3 -0
  327. package/dist/runtime/css/output.css +1 -1
  328. package/dist/runtime/helpers/addElementClasses.d.ts +2 -0
  329. package/dist/runtime/helpers/addElementClasses.js +24 -0
  330. package/dist/runtime/helpers/animationProvider.d.ts +38 -2
  331. package/dist/runtime/helpers/animationProvider.js +188 -47
  332. package/dist/runtime/helpers/bundles/index.d.ts +1 -0
  333. package/dist/runtime/helpers/bundles/index.js +4 -0
  334. package/dist/runtime/helpers/composables/defineRenderer.d.ts +8 -0
  335. package/dist/runtime/helpers/composables/defineRenderer.js +8 -0
  336. package/dist/runtime/helpers/composables/useBlockRegistration.d.ts +5 -0
  337. package/dist/runtime/helpers/composables/useBlockRegistration.js +23 -0
  338. package/dist/runtime/helpers/composables/useDelayedIntersectionObserver.d.ts +1 -1
  339. package/dist/runtime/helpers/composables/useDelayedIntersectionObserver.js +3 -2
  340. package/dist/runtime/helpers/composables/useStateBasedCache.d.ts +4 -0
  341. package/dist/runtime/helpers/composables/useStateBasedCache.js +13 -0
  342. package/dist/runtime/helpers/composables/useStickyToolbar.d.ts +23 -0
  343. package/dist/runtime/helpers/composables/useStickyToolbar.js +233 -0
  344. package/dist/runtime/helpers/definitionProvider.d.ts +3 -2
  345. package/dist/runtime/helpers/definitionProvider.js +17 -0
  346. package/dist/runtime/helpers/dom/index.d.ts +60 -0
  347. package/dist/runtime/helpers/dom/index.js +48 -0
  348. package/dist/runtime/helpers/domProvider.d.ts +58 -17
  349. package/dist/runtime/helpers/domProvider.js +320 -245
  350. package/dist/runtime/helpers/dropTargets/index.d.ts +6 -0
  351. package/dist/runtime/helpers/dropTargets/index.js +49 -0
  352. package/dist/runtime/helpers/eventBus.d.ts +1 -1
  353. package/dist/runtime/helpers/eventBus.js +2 -2
  354. package/dist/runtime/helpers/index.d.ts +10 -14
  355. package/dist/runtime/helpers/index.js +58 -121
  356. package/dist/runtime/helpers/indicatorsProvider.d.ts +10 -0
  357. package/dist/runtime/helpers/indicatorsProvider.js +23 -0
  358. package/dist/runtime/helpers/keyboardProvider.d.ts +2 -0
  359. package/dist/runtime/helpers/keyboardProvider.js +17 -1
  360. package/dist/runtime/helpers/pluginProvider.d.ts +10 -0
  361. package/dist/runtime/helpers/pluginProvider.js +33 -0
  362. package/dist/runtime/helpers/providers/blocks.d.ts +10 -0
  363. package/dist/runtime/helpers/providers/blocks.js +91 -0
  364. package/dist/runtime/helpers/providers/directive.d.ts +25 -0
  365. package/dist/runtime/helpers/providers/directive.js +208 -0
  366. package/dist/runtime/helpers/providers/element.d.ts +6 -0
  367. package/dist/runtime/helpers/providers/element.js +35 -0
  368. package/dist/runtime/helpers/providers/fields.d.ts +8 -0
  369. package/dist/runtime/helpers/providers/fields.js +47 -0
  370. package/dist/runtime/helpers/renderCycle.d.ts +1 -0
  371. package/dist/runtime/helpers/renderCycle.js +10 -0
  372. package/dist/runtime/helpers/runtimeHelpers/index.js +15 -12
  373. package/dist/runtime/helpers/selectionProvider.d.ts +27 -11
  374. package/dist/runtime/helpers/selectionProvider.js +79 -74
  375. package/dist/runtime/helpers/stateProvider.d.ts +12 -2
  376. package/dist/runtime/helpers/stateProvider.js +164 -20
  377. package/dist/runtime/helpers/storageProvider.d.ts +5 -3
  378. package/dist/runtime/helpers/storageProvider.js +61 -4
  379. package/dist/runtime/helpers/symbols.d.ts +2 -0
  380. package/dist/runtime/helpers/symbols.js +2 -0
  381. package/dist/runtime/helpers/textProvider.js +6 -0
  382. package/dist/runtime/helpers/themeProvider.d.ts +4 -1
  383. package/dist/runtime/helpers/themeProvider.js +28 -15
  384. package/dist/runtime/helpers/transform.js +1 -3
  385. package/dist/runtime/helpers/typesProvider.js +10 -26
  386. package/dist/runtime/helpers/uiProvider.d.ts +18 -3
  387. package/dist/runtime/helpers/uiProvider.js +114 -61
  388. package/dist/runtime/helpers/useTransitionedValue.d.ts +18 -0
  389. package/dist/runtime/helpers/useTransitionedValue.js +57 -0
  390. package/dist/runtime/helpers/webgl/index.d.ts +11 -2
  391. package/dist/runtime/helpers/webgl/index.js +162 -7
  392. package/dist/runtime/icons/anchor.svg +1 -0
  393. package/dist/runtime/icons/arrow-left.svg +1 -1
  394. package/dist/runtime/icons/arrow-right.svg +1 -1
  395. package/dist/runtime/icons/arrow-top-right.svg +1 -0
  396. package/dist/runtime/icons/calendar-clock.svg +1 -0
  397. package/dist/runtime/icons/calendar.svg +1 -0
  398. package/dist/runtime/icons/chart.svg +1 -0
  399. package/dist/runtime/icons/clock.svg +1 -0
  400. package/dist/runtime/icons/comment_add.svg +1 -5
  401. package/dist/runtime/icons/copy.svg +1 -0
  402. package/dist/runtime/icons/cursor-move.svg +1 -1
  403. package/dist/runtime/icons/delete.svg +1 -8
  404. package/dist/runtime/icons/diff.svg +1 -1
  405. package/dist/runtime/icons/duplicate.svg +1 -12
  406. package/dist/runtime/icons/edit.svg +1 -8
  407. package/dist/runtime/icons/eye-off.svg +1 -0
  408. package/dist/runtime/icons/eye.svg +1 -1
  409. package/dist/runtime/icons/info.svg +1 -1
  410. package/dist/runtime/icons/link.svg +1 -0
  411. package/dist/runtime/icons/reusable.svg +1 -5
  412. package/dist/runtime/icons/speedometer.svg +1 -0
  413. package/dist/runtime/plugins/blokkliDirectives.js +109 -0
  414. package/dist/runtime/types/blokkOptions.d.ts +8 -0
  415. package/dist/runtime/types/index.d.ts +278 -42
  416. package/dist/runtime/types/theme.d.ts +2 -1
  417. package/dist/shared/{editor.gz_ac6uT.d.mts → editor.CKsrTpc1.d.mts} +1 -1
  418. package/package.json +55 -38
  419. package/dist/modules/drupal/adapter/index.d.mts +0 -6
  420. package/dist/runtime/components/Edit/DragInteractions/index.vue +0 -364
  421. package/dist/runtime/components/Edit/Features/CommandPalette/Palette/Group/index.vue +0 -51
  422. package/dist/runtime/components/Edit/Features/FieldAreas/Overlay/index.vue +0 -22
  423. package/dist/runtime/components/Edit/Features/FieldAreas/index.vue +0 -41
  424. package/dist/runtime/plugins/blokkliEditable.js +0 -31
  425. /package/dist/runtime/components/Edit/{DragInteractions → Features/Analyze}/index.vue.d.ts +0 -0
  426. /package/dist/runtime/components/Edit/Features/{FieldAreas/Overlay/index.vue.d.ts → Anchors/Renderer.vue.d.ts} +0 -0
  427. /package/dist/runtime/components/Edit/Features/{FieldAreas → Anchors}/index.vue.d.ts +0 -0
  428. /package/dist/runtime/plugins/{blokkliEditable.d.ts → blokkliDirectives.d.ts} +0 -0
@@ -0,0 +1,208 @@
1
+ import { falsy } from "#blokkli/helpers";
2
+ import useDelayedIntersectionObserver from "./../composables/useDelayedIntersectionObserver.js";
3
+ import { computed, onBeforeUnmount, ref } from "#imports";
4
+ import onBlokkliEvent from "./../composables/onBlokkliEvent.js";
5
+ import { itemEntityType } from "#blokkli-build/config";
6
+ export default function(debug, ui) {
7
+ const logger = debug.createLogger("DirectiveProvider");
8
+ let initTimeout = null;
9
+ const isInitalizing = ref(true);
10
+ let stateReloadTimeout = null;
11
+ const elementMap = /* @__PURE__ */ new WeakMap();
12
+ const elements = /* @__PURE__ */ new Map();
13
+ const fieldData = /* @__PURE__ */ new Map();
14
+ const rects = {};
15
+ const visible = /* @__PURE__ */ new Set();
16
+ const editablesByUuid = {};
17
+ function doInitTimeout() {
18
+ if (initTimeout) {
19
+ window.clearTimeout(initTimeout);
20
+ }
21
+ if (isInitalizing.value) {
22
+ initTimeout = window.setTimeout(() => {
23
+ isInitalizing.value = false;
24
+ }, 500);
25
+ }
26
+ }
27
+ function getVisible(directiveType) {
28
+ return [...visible.keys()].map((key) => {
29
+ if (key.startsWith(directiveType)) {
30
+ return rects[key];
31
+ }
32
+ }).filter(falsy);
33
+ }
34
+ function getEditableKey(fieldName, entity, directiveType) {
35
+ return `${directiveType}:${entity.type}:${entity.uuid}:${fieldName}`;
36
+ }
37
+ function intersectionCallback(entries) {
38
+ const scale = ui.artboardScale.value;
39
+ const offset = ui.artboardOffset.value;
40
+ for (const entry of entries) {
41
+ if (entry.target instanceof HTMLElement) {
42
+ const data = elementMap.get(entry.target);
43
+ if (!data) {
44
+ continue;
45
+ }
46
+ const key = getEditableKey(data.fieldName, data, data.directiveType);
47
+ const domRect = entry.target.getBoundingClientRect();
48
+ rects[key] ||= {
49
+ width: 0,
50
+ height: 0,
51
+ x: 0,
52
+ y: 0,
53
+ key
54
+ };
55
+ const newRect = ui.getAbsoluteElementRect(domRect, scale, offset);
56
+ rects[key].width = newRect.width;
57
+ rects[key].height = newRect.height;
58
+ rects[key].x = newRect.x;
59
+ rects[key].y = newRect.y;
60
+ if (entry.isIntersecting) {
61
+ visible.add(key);
62
+ } else {
63
+ visible.delete(key);
64
+ }
65
+ }
66
+ }
67
+ }
68
+ const intersectionObserver = useDelayedIntersectionObserver(
69
+ intersectionCallback,
70
+ {
71
+ rootMargin: "400px 0px 400px 0px"
72
+ }
73
+ );
74
+ function registerDirectiveElement(el, fieldName, entity, directiveType) {
75
+ const key = getEditableKey(fieldName, entity, directiveType);
76
+ const data = {
77
+ ...entity,
78
+ fieldName,
79
+ directiveType,
80
+ key
81
+ };
82
+ elementMap.set(el, data);
83
+ fieldData.set(key, data);
84
+ intersectionObserver.observe(el);
85
+ elements.set(key, el);
86
+ if (directiveType === "editable" && entity.type === itemEntityType) {
87
+ editablesByUuid[entity.uuid] ||= {};
88
+ editablesByUuid[entity.uuid][fieldName] = data;
89
+ }
90
+ logger.log("Registered directive element", data);
91
+ doInitTimeout();
92
+ }
93
+ function unregisterDirectiveElement(el, fieldName, entity, directiveType) {
94
+ const key = getEditableKey(fieldName, entity, directiveType);
95
+ logger.log("Unregistered directive element", key);
96
+ intersectionObserver.unobserve(el);
97
+ elementMap.delete(el);
98
+ fieldData.delete(key);
99
+ delete rects[key];
100
+ visible.delete(key);
101
+ elements.delete(key);
102
+ if (directiveType === "editable" && entity.type === itemEntityType) {
103
+ if (editablesByUuid[entity.uuid]) {
104
+ editablesByUuid[entity.uuid][fieldName] = void 0;
105
+ }
106
+ }
107
+ }
108
+ function init() {
109
+ intersectionObserver.init();
110
+ }
111
+ function getEditableAtPoint(x, y) {
112
+ const scale = ui.artboardScale.value;
113
+ const offset = ui.artboardOffset.value;
114
+ const artboardX = x / scale - offset.x / scale;
115
+ const artboardY = y / scale - offset.y / scale;
116
+ for (const key of visible) {
117
+ if (!key.startsWith("editable:")) continue;
118
+ const rect = rects[key];
119
+ if (!rect) continue;
120
+ if (artboardX >= rect.x && artboardX <= rect.x + rect.width && artboardY >= rect.y && artboardY <= rect.y + rect.height) {
121
+ return fieldData.get(key);
122
+ }
123
+ }
124
+ return void 0;
125
+ }
126
+ function updateRects() {
127
+ const scale = ui.artboardScale.value;
128
+ const offset = ui.artboardOffset.value;
129
+ const keysToUpdate = elements.size < 150 ? Array.from(elements.keys()) : Array.from(visible);
130
+ for (let i = 0; i < keysToUpdate.length; i++) {
131
+ const key = keysToUpdate[i];
132
+ const el = elements.get(key);
133
+ if (!el) continue;
134
+ const domRect = el.getBoundingClientRect();
135
+ const newRect = ui.getAbsoluteElementRect(domRect, scale, offset);
136
+ if (rects[key]) {
137
+ rects[key].width = newRect.width;
138
+ rects[key].height = newRect.height;
139
+ rects[key].x = newRect.x;
140
+ rects[key].y = newRect.y;
141
+ } else {
142
+ rects[key] = {
143
+ width: newRect.width,
144
+ height: newRect.height,
145
+ x: newRect.x,
146
+ y: newRect.y,
147
+ key
148
+ };
149
+ }
150
+ }
151
+ }
152
+ function handleRefresh() {
153
+ if (stateReloadTimeout) {
154
+ window.clearTimeout(stateReloadTimeout);
155
+ }
156
+ if (visible.size < 150) {
157
+ updateRects();
158
+ }
159
+ stateReloadTimeout = window.setTimeout(updateRects, 300);
160
+ }
161
+ function getEditablesForBlock(uuid) {
162
+ const editables = editablesByUuid[uuid];
163
+ if (!editables) {
164
+ return [];
165
+ }
166
+ return Object.values(editables).filter(falsy);
167
+ }
168
+ function getDroppableElements() {
169
+ const droppableElements = [];
170
+ for (const item of fieldData.values()) {
171
+ if (item.directiveType !== "droppable") {
172
+ continue;
173
+ }
174
+ const element = elements.get(item.key);
175
+ if (!element) {
176
+ continue;
177
+ }
178
+ droppableElements.push({
179
+ ...item,
180
+ element
181
+ });
182
+ }
183
+ return droppableElements;
184
+ }
185
+ function findEditableElement(fieldName, host) {
186
+ const key = getEditableKey(fieldName, host, "editable");
187
+ return elements.get(key);
188
+ }
189
+ onBlokkliEvent("state:reloaded", handleRefresh);
190
+ onBlokkliEvent("ui:resized", handleRefresh);
191
+ onBlokkliEvent("option:finish-change", handleRefresh);
192
+ onBeforeUnmount(() => {
193
+ if (stateReloadTimeout) {
194
+ window.clearTimeout(stateReloadTimeout);
195
+ }
196
+ });
197
+ return {
198
+ registerDirectiveElement,
199
+ unregisterDirectiveElement,
200
+ init,
201
+ getVisible,
202
+ getEditableAtPoint,
203
+ getEditablesForBlock,
204
+ findEditableElement,
205
+ getDroppableElements,
206
+ isReady: computed(() => !isInitalizing.value)
207
+ };
208
+ }
@@ -0,0 +1,6 @@
1
+ import type { DebugProvider } from '../debugProvider.js';
2
+ export type ElementProvider = {
3
+ queryAll: <T = HTMLElement>(target: HTMLElement | Document, query: string, reason: string, map?: (v: HTMLElement) => T | null | undefined) => T[];
4
+ query: <T = HTMLElement>(target: HTMLElement | Document, query: string, reason: string, map?: (v: HTMLElement) => T | null | undefined) => T | null;
5
+ };
6
+ export default function (debug: DebugProvider): ElementProvider;
@@ -0,0 +1,35 @@
1
+ export default function(debug) {
2
+ const logger = debug.createLogger("ElementProvider");
3
+ function queryAll(target, query2, reason, map) {
4
+ const results = [];
5
+ logger.log(`querySelectorAll - "${query2}" - ${reason}`);
6
+ for (const element of target.querySelectorAll(query2)) {
7
+ if (element instanceof HTMLElement) {
8
+ if (map) {
9
+ const result = map(element);
10
+ if (result) {
11
+ results.push(result);
12
+ }
13
+ } else {
14
+ results.push(element);
15
+ }
16
+ }
17
+ }
18
+ return results;
19
+ }
20
+ function query(target, query2, reason, map) {
21
+ logger.log(`querySelector - "${query2}" - ${reason}`);
22
+ const match = target.querySelector(query2);
23
+ if (!(match instanceof HTMLElement)) {
24
+ return null;
25
+ }
26
+ if (map) {
27
+ return map(match) ?? null;
28
+ }
29
+ return match;
30
+ }
31
+ return {
32
+ query,
33
+ queryAll
34
+ };
35
+ }
@@ -0,0 +1,8 @@
1
+ import type { BlokkliFieldElement } from '#blokkli/types';
2
+ import type { DomProvider } from '../domProvider.js';
3
+ import type { StateProvider } from '../stateProvider.js';
4
+ import type { BlockDefinitionProvider } from '../typesProvider.js';
5
+ export type FieldsProvider = {
6
+ find: (uuid: string, fieldName: string) => BlokkliFieldElement | undefined;
7
+ };
8
+ export default function (state: StateProvider, dom: DomProvider, types: BlockDefinitionProvider): FieldsProvider;
@@ -0,0 +1,47 @@
1
+ import onBlokkliEvent from "../composables/onBlokkliEvent.js";
2
+ export default function(state, dom, types) {
3
+ const fieldCache = /* @__PURE__ */ new Map();
4
+ function find(uuid, fieldName) {
5
+ const key = uuid + ":" + fieldName;
6
+ const cached = fieldCache.get(key);
7
+ if (cached) {
8
+ return cached;
9
+ }
10
+ const registeredField = dom.getRegisteredField(uuid, fieldName);
11
+ if (!registeredField) {
12
+ return;
13
+ }
14
+ const definition = types.getFieldConfig(
15
+ registeredField.entity.type,
16
+ registeredField.entity.bundle,
17
+ registeredField.fieldName
18
+ );
19
+ if (!definition) {
20
+ return;
21
+ }
22
+ const fieldElement = {
23
+ key,
24
+ name: registeredField.fieldName,
25
+ label: definition.label,
26
+ isNested: registeredField.isNested,
27
+ nestingLevel: registeredField.nestingLevel,
28
+ fieldListType: registeredField.fieldListType,
29
+ hostEntityType: registeredField.entity.type,
30
+ hostEntityBundle: registeredField.entity.bundle,
31
+ hostEntityUuid: registeredField.entity.uuid,
32
+ allowedBundles: definition.allowedBundles,
33
+ allowedFragments: registeredField.allowedFragments,
34
+ cardinality: definition.cardinality,
35
+ element: registeredField.element,
36
+ dropAlignment: registeredField.dropAlignment
37
+ };
38
+ fieldCache.set(key, fieldElement);
39
+ return fieldElement;
40
+ }
41
+ onBlokkliEvent("state:reloaded", () => {
42
+ fieldCache.clear();
43
+ });
44
+ return {
45
+ find
46
+ };
47
+ }
@@ -0,0 +1 @@
1
+ export declare function renderCycle(): Promise<void>;
@@ -0,0 +1,10 @@
1
+ import { nextTick } from "#imports";
2
+ export function renderCycle() {
3
+ return new Promise((resolve) => {
4
+ nextTick(() => {
5
+ window.requestAnimationFrame(() => {
6
+ resolve();
7
+ });
8
+ });
9
+ });
10
+ }
@@ -6,6 +6,7 @@ import {
6
6
  bundlesWithHiddenGlobally
7
7
  } from "#blokkli-build/default-global-options";
8
8
  import { BK_HIDDEN_GLOBALLY, BK_VISIBLE_LANGUAGES } from "../symbols.js";
9
+ import { BUNDLE_FROM_LIBRARY } from "#blokkli/constants";
9
10
  export function mapCheckboxTrue(v) {
10
11
  return v === true || v === "1" || v === 1 || v === "true" ? "1" : "0";
11
12
  }
@@ -82,16 +83,18 @@ export function isVisibleByOptions(item, language) {
82
83
  return true;
83
84
  }
84
85
  export function getRuntimeOptions(item, context, fromLibraryOptions) {
85
- if (item.bundle === "from_library" && "libraryItem" in item.props) {
86
- const actualBlock = item.props.libraryItem?.block;
87
- if (!actualBlock) {
88
- throw new Error("Missing block");
86
+ if (item.bundle === BUNDLE_FROM_LIBRARY) {
87
+ if ("props" in item && item.props && "libraryItem" in item.props) {
88
+ const actualBlock = item.props.libraryItem?.block;
89
+ if (actualBlock) {
90
+ return getRuntimeOptions(
91
+ actualBlock,
92
+ context,
93
+ item.options
94
+ );
95
+ }
89
96
  }
90
- return getRuntimeOptions(
91
- actualBlock,
92
- context,
93
- item.options
94
- );
97
+ throw new Error("Missing block");
95
98
  }
96
99
  const availableOptions = OPTIONS["block:" + item.bundle] || {};
97
100
  return Object.entries(availableOptions).reduce(
@@ -99,7 +102,7 @@ export function getRuntimeOptions(item, context, fromLibraryOptions) {
99
102
  if (fromLibraryOptions && fromLibraryOptions[key] !== void 0 && fromLibraryOptions[key] !== null) {
100
103
  acc[key] = getRuntimeOptionValue(
101
104
  definition,
102
- fromLibraryOptions.value[key]
105
+ fromLibraryOptions.value?.[key]
103
106
  );
104
107
  return acc;
105
108
  }
@@ -114,7 +117,7 @@ export function getRuntimeOptions(item, context, fromLibraryOptions) {
114
117
  );
115
118
  }
116
119
  export function getActualBlock(item) {
117
- if (item.bundle === "from_library") {
120
+ if (item.bundle === BUNDLE_FROM_LIBRARY) {
118
121
  const block = item.props.libraryItem?.block;
119
122
  if (!block) {
120
123
  return null;
@@ -131,7 +134,7 @@ export function getItemsforBundles(items, bundles) {
131
134
  const filtered = [];
132
135
  for (let i = 0; i < items.length; i++) {
133
136
  const item = items[i];
134
- if (item.bundle === "from_library") {
137
+ if (item.bundle === BUNDLE_FROM_LIBRARY) {
135
138
  const actual = getActualBlock(item);
136
139
  if (actual && bundles.includes(actual.bundle)) {
137
140
  filtered.push(actual);
@@ -1,23 +1,35 @@
1
- import type { DomProvider } from './domProvider.js';
2
1
  import { type Ref, type ComputedRef } from '#imports';
3
- import type { DraggableExistingBlock, DraggableItem, InteractionMode } from '#blokkli/types';
2
+ import type { DraggableItem, InteractionMode, RenderedFieldListItem } from '#blokkli/types';
3
+ import type { BlocksProvider } from './providers/blocks.js';
4
4
  export type SelectionProvider = {
5
5
  /**
6
6
  * The currently selected UUIDs.
7
7
  */
8
8
  uuids: Readonly<Ref<string[]>>;
9
+ /**
10
+ * Whether the host is currently selected.
11
+ */
12
+ hasHostSelected: ComputedRef<boolean>;
13
+ /**
14
+ * Whether anything is selected.
15
+ */
16
+ hasAnythingSelected: ComputedRef<boolean>;
17
+ /**
18
+ * The selected bundles.
19
+ */
20
+ bundles: ComputedRef<string[]>;
9
21
  /**
10
22
  * The currently selected UUIDs as a Set.
11
23
  */
12
24
  uuidsSet: ComputedRef<Set<string>>;
13
25
  /**
14
- * The currently selected blocks.
26
+ * The currently selected field list items.
15
27
  */
16
- blocks: ComputedRef<DraggableExistingBlock[]>;
28
+ items: ComputedRef<RenderedFieldListItem[]>;
17
29
  /**
18
- * The active field key.
30
+ * The currently selected field list item, if only a single item is selected.
19
31
  */
20
- activeFieldKey: Readonly<Ref<string>>;
32
+ item: ComputedRef<RenderedFieldListItem | null>;
21
33
  /**
22
34
  * Whether the user is currently dragging a block.
23
35
  */
@@ -38,10 +50,6 @@ export type SelectionProvider = {
38
50
  * Whether the user is currently in multi select mode.
39
51
  */
40
52
  isMultiSelecting: Ref<boolean>;
41
- /**
42
- * Update the active field key.
43
- */
44
- setActiveFieldKey: (key: string) => void;
45
53
  /**
46
54
  * Whether an editable field is currently being edited.
47
55
  */
@@ -59,5 +67,13 @@ export type SelectionProvider = {
59
67
  */
60
68
  dragItemsBundles: ComputedRef<string[]>;
61
69
  isBlockSelected(uuid: string): boolean;
70
+ /**
71
+ * Lock selection.
72
+ */
73
+ lockSelection: (key: string) => void;
74
+ /**
75
+ * Unlock selection.
76
+ */
77
+ unlockSelection: (key: string) => void;
62
78
  };
63
- export default function (dom: DomProvider): SelectionProvider;
79
+ export default function (blocks: BlocksProvider): SelectionProvider;
@@ -1,88 +1,83 @@
1
1
  import onBlokkliEvent from "./composables/onBlokkliEvent.js";
2
2
  import { computed, ref } from "#imports";
3
- import {
4
- findElement,
5
- buildDraggableItem,
6
- falsy,
7
- modulo,
8
- onlyUnique
9
- } from "#blokkli/helpers";
10
- import { eventBus } from "#blokkli/helpers/eventBus";
11
- export default function(dom) {
3
+ import { falsy, onlyUnique } from "#blokkli/helpers";
4
+ export default function(blocks) {
12
5
  const selectedUuids = ref([]);
13
- const activeFieldKey = ref("");
6
+ const hasHostSelected = ref(false);
14
7
  const draggingMode = ref(null);
15
8
  const editableActive = ref(false);
16
9
  const isChangingOptions = ref(false);
17
10
  const isMultiSelecting = ref(false);
18
11
  const interactionMode = ref("mouse");
12
+ const selectionLocks = ref([]);
13
+ const selectedRenderedItems = computed(() => {
14
+ const items = [];
15
+ for (let i = 0; i < selectedUuids.value.length; i++) {
16
+ const uuid = selectedUuids.value[i];
17
+ if (!uuid) {
18
+ continue;
19
+ }
20
+ const item2 = blocks.getBlock(uuid);
21
+ if (!item2) {
22
+ continue;
23
+ }
24
+ items.push(item2);
25
+ }
26
+ return items;
27
+ });
28
+ const item = computed(() => {
29
+ if (selectedRenderedItems.value.length === 1) {
30
+ return selectedRenderedItems.value[0] ?? null;
31
+ }
32
+ return null;
33
+ });
34
+ const bundles = computed(() => {
35
+ return selectedRenderedItems.value.map((v) => v.bundle).filter(onlyUnique);
36
+ });
37
+ const selectionIsLocked = computed(() => !!selectionLocks.value.length);
19
38
  const dragItems = ref([]);
20
39
  const dragItemsBundles = computed(
21
- () => dragItems.value.map((v) => v.itemBundle).filter(falsy)
40
+ () => dragItems.value.map((v) => {
41
+ if (v.itemType === "existing") {
42
+ return v.block.bundle;
43
+ } else if ("itemBundle" in v) {
44
+ return v.itemBundle;
45
+ }
46
+ }).filter(falsy)
22
47
  );
23
48
  const uuidsSet = computed(() => new Set(selectedUuids.value));
24
49
  const isDragging = computed(() => !!draggingMode.value);
25
- const blocks = computed(
26
- () => selectedUuids.value.map((uuid) => {
27
- return dom.findBlock(uuid);
28
- }).filter(falsy)
29
- );
30
- function selectItems(uuids) {
31
- unselectItems();
32
- const items = uuids.map((uuid) => {
33
- const element = findElement(uuid);
34
- if (element) {
35
- const item = buildDraggableItem(element);
36
- if (item && item.itemType === "existing") {
37
- return item;
38
- }
39
- }
40
- }).filter(falsy);
41
- selectedUuids.value = items.map((v) => v.uuid);
50
+ function updateSelectedUuids(uuids, force) {
51
+ if (selectionIsLocked.value && !force) {
52
+ return;
53
+ }
54
+ selectedUuids.value = uuids;
42
55
  }
43
56
  function unselectItems() {
44
- activeFieldKey.value = "";
45
57
  if (selectedUuids.value.length === 0) {
46
58
  return;
47
59
  }
48
- selectedUuids.value = [];
60
+ updateSelectedUuids([]);
49
61
  }
50
- function onSelect(v) {
62
+ function onSelect(v, force) {
51
63
  if (typeof v === "string") {
52
- selectItems([v]);
64
+ updateSelectedUuids([v], force);
53
65
  } else {
54
- selectItems(v.filter(onlyUnique));
66
+ updateSelectedUuids(v.filter(onlyUnique), force);
55
67
  }
56
68
  }
57
- const selectInList = (prev) => {
58
- const items = dom.getAllBlocks();
59
- if (!items.length) {
60
- return;
61
- }
62
- const currentIndex = blocks.value[0] ? items.findIndex((v) => v.uuid === blocks.value[0].uuid) : -1;
63
- const targetIndex = modulo(
64
- prev ? currentIndex - 1 : currentIndex + 1,
65
- items.length
66
- );
67
- const targetItem = items[targetIndex];
68
- if (!targetItem) {
69
- return;
70
- }
71
- onSelect(targetItem.uuid);
72
- dom.refreshBlockRect(targetItem.uuid);
73
- eventBus.emit("scrollIntoView", { uuid: targetItem.uuid });
74
- };
75
- const setActiveFieldKey = (key) => activeFieldKey.value = key;
76
69
  onBlokkliEvent("select", onSelect);
70
+ onBlokkliEvent("select:force", (arg) => {
71
+ onSelect(arg, true);
72
+ });
77
73
  onBlokkliEvent("select:start", (e) => {
78
- selectedUuids.value = (e.uuids || []).filter(onlyUnique);
74
+ updateSelectedUuids((e.uuids || []).filter(onlyUnique));
79
75
  isMultiSelecting.value = true;
80
76
  interactionMode.value = e.mode;
81
- activeFieldKey.value = "";
82
77
  });
83
78
  onBlokkliEvent("select:toggle", (uuid) => {
84
79
  if (selectedUuids.value.includes(uuid)) {
85
- selectedUuids.value = selectedUuids.value.filter((v) => v !== uuid);
80
+ updateSelectedUuids(selectedUuids.value.filter((v) => v !== uuid));
86
81
  } else {
87
82
  selectedUuids.value.push(uuid);
88
83
  }
@@ -92,36 +87,31 @@ export default function(dom) {
92
87
  if (!uuids || uuids.length === 0 && selectedUuids.value.length === 0) {
93
88
  return;
94
89
  }
95
- selectItems(uuids);
96
- });
97
- onBlokkliEvent("select:previous", () => selectInList(true));
98
- onBlokkliEvent("select:next", selectInList);
99
- onBlokkliEvent("setActiveFieldKey", setActiveFieldKey);
100
- onBlokkliEvent("state:reloaded", () => {
101
- selectedUuids.value = selectedUuids.value.filter((uuid) => {
102
- return !!dom.findBlock(uuid);
103
- });
90
+ updateSelectedUuids(uuids);
104
91
  });
105
92
  onBlokkliEvent("dragging:start", (e) => {
106
93
  draggingMode.value = e.mode;
107
94
  isMultiSelecting.value = false;
108
95
  dragItems.value = e.items;
109
- const blocks2 = e.items.filter(
110
- (v) => v.itemType === "existing"
111
- );
96
+ const blocks2 = e.items.filter((v) => v.itemType === "existing");
112
97
  if (blocks2.length) {
113
- selectItems(blocks2.map((v) => v.uuid));
98
+ updateSelectedUuids(blocks2.map((v) => v.block.uuid));
114
99
  }
115
100
  });
116
101
  onBlokkliEvent("dragging:end", () => {
117
102
  draggingMode.value = null;
118
103
  });
119
104
  onBlokkliEvent("select:unselect", () => {
120
- selectedUuids.value = [];
105
+ updateSelectedUuids([]);
106
+ });
107
+ onBlokkliEvent("select:host", () => {
108
+ hasHostSelected.value = true;
109
+ });
110
+ onBlokkliEvent("select:host:unselect", () => {
111
+ hasHostSelected.value = false;
121
112
  });
122
113
  onBlokkliEvent("window:clickAway", () => {
123
114
  unselectItems();
124
- activeFieldKey.value = "";
125
115
  if (document.activeElement instanceof HTMLElement) {
126
116
  document.activeElement.blur();
127
117
  }
@@ -131,16 +121,25 @@ export default function(dom) {
131
121
  (v) => v.itemType === "existing" || v.itemType === "existing_structure"
132
122
  );
133
123
  });
124
+ const hasAnythingSelected = computed(() => {
125
+ return hasHostSelected.value || !!selectedUuids.value.length;
126
+ });
134
127
  function isBlockSelected(uuid) {
135
128
  return uuidsSet.value.has(uuid);
136
129
  }
130
+ function lockSelection(key) {
131
+ selectionLocks.value.push(key);
132
+ }
133
+ function unlockSelection(key) {
134
+ selectionLocks.value = selectionLocks.value.filter((v) => v !== key);
135
+ }
137
136
  return {
138
137
  uuids: selectedUuids,
139
- blocks,
140
- activeFieldKey,
138
+ bundles,
139
+ items: selectedRenderedItems,
140
+ item,
141
141
  isDragging,
142
142
  isDraggingExisting,
143
- setActiveFieldKey,
144
143
  editableActive,
145
144
  isChangingOptions,
146
145
  isMultiSelecting,
@@ -149,6 +148,12 @@ export default function(dom) {
149
148
  dragItems,
150
149
  uuidsSet,
151
150
  dragItemsBundles,
152
- isBlockSelected
151
+ isBlockSelected,
152
+ hasHostSelected: computed(() => {
153
+ return hasHostSelected.value && !selectedUuids.value.length;
154
+ }),
155
+ hasAnythingSelected,
156
+ lockSelection,
157
+ unlockSelection
153
158
  };
154
159
  }