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

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 +51 -39
  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 +153 -64
  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 +96 -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
@@ -1,21 +1,19 @@
1
1
  <template>
2
2
  <Teleport to="body">
3
- <div v-show="isVisible" class="bk">
4
- <div class="bk-edit-indicator" :style="style">
5
- <button
6
- ref="button"
7
- class="bk-button bk-is-primary"
8
- @mouseenter="isHovering = true"
9
- @mouseleave="isHovering = false"
10
- @click="$emit('edit')"
11
- >
12
- {{ label }}
13
- </button>
14
- </div>
3
+ <div class="bk">
4
+ <button
5
+ ref="button"
6
+ class="bk-edit-indicator bk-button bk-is-primary"
7
+ @mouseenter="isHovering = true"
8
+ @mouseleave="isHovering = false"
9
+ @click="$emit('edit')"
10
+ >
11
+ {{ label }}
12
+ </button>
15
13
 
16
14
  <div
17
- v-if="overlayStyle"
18
- :style="overlayStyle"
15
+ v-show="isHovering"
16
+ ref="overlay"
19
17
  class="bk-edit-indicator-overlay"
20
18
  />
21
19
  </div>
@@ -24,47 +22,123 @@
24
22
 
25
23
  <script setup>
26
24
  import textProvider from "#blokkli/helpers/textProvider";
27
- import { ref, computed } from "#imports";
25
+ import { ref, onMounted, onBeforeUnmount, useState, computed } from "#imports";
28
26
  import "#blokkli-build/styles.css";
29
27
  import useAnimationFrame from "#blokkli/helpers/composables/useAnimationFrame";
30
28
  const props = defineProps({
31
29
  uuid: { type: String, required: true },
32
- editLabel: { type: String, required: false }
30
+ entityType: { type: String, required: true },
31
+ editLabel: { type: String, required: false },
32
+ permissions: { type: Array, required: true }
33
33
  });
34
+ const key = computed(() => props.entityType + ":" + props.uuid);
34
35
  const $t = textProvider();
35
- const label = computed(
36
- () => props.editLabel || $t("editIndicatorLabel", "Edit blocks")
37
- );
36
+ const label = computed(() => {
37
+ if (props.editLabel) {
38
+ return props.editLabel;
39
+ } else if (props.permissions.includes("edit")) {
40
+ return $t("editIndicatorLabel", "Edit blocks");
41
+ } else if (props.permissions.includes("review")) {
42
+ return $t("editIndicatorLabelReview", "Review changes");
43
+ } else if (props.permissions.includes("view")) {
44
+ return $t("editIndicatorLabelView", "View changes");
45
+ }
46
+ return null;
47
+ });
38
48
  defineEmits(["edit"]);
39
49
  const isHovering = ref(false);
40
- const style = ref({});
41
50
  const button = ref(null);
42
- const isVisible = ref(false);
43
- const overlayStyle = ref(null);
44
- function calculateIdealYPosition(elementHeight, bounds) {
45
- const idealTop = Math.min(
46
- Math.max(bounds.top, bounds.bottom - elementHeight - 20),
47
- 20
48
- );
49
- return Math.max(idealTop, bounds.y + 20);
51
+ const overlay = ref(null);
52
+ const targetElement = ref(null);
53
+ const indicatorRegistry = useState(
54
+ "blokkliEditIndicators",
55
+ () => []
56
+ );
57
+ const isManager = computed(() => {
58
+ return indicatorRegistry.value[0]?.key === key.value;
59
+ });
60
+ function calculateIdealYPosition(buttonHeight, bounds, gap) {
61
+ const elementHeight = bounds.bottom - bounds.top;
62
+ let position;
63
+ if (elementHeight < 100) {
64
+ position = bounds.top + elementHeight / 2 - buttonHeight / 2;
65
+ } else {
66
+ position = bounds.top + gap;
67
+ }
68
+ position = Math.max(position, gap);
69
+ return Math.min(position, bounds.bottom - buttonHeight - gap);
50
70
  }
51
- useAnimationFrame(() => {
52
- const el = document.querySelector(`[data-provider-uuid="${props.uuid}"]`);
53
- isVisible.value = window.innerWidth > 1024;
54
- if (isVisible.value && el && el instanceof HTMLElement && button.value) {
55
- const rect = el.getBoundingClientRect();
56
- const buttonHeight = button.value.getBoundingClientRect().height;
57
- const y = calculateIdealYPosition(buttonHeight, rect);
58
- style.value.transform = `translateY(${y}px)`;
59
- if (isHovering.value) {
60
- overlayStyle.value = {
61
- width: rect.width + "px",
62
- height: rect.height + "px",
63
- transform: `translate(${rect.x}px, ${rect.y}px)`
64
- };
65
- } else {
66
- overlayStyle.value = null;
71
+ const GAP = 15;
72
+ const indicators = computed(() => {
73
+ const indicators2 = [...indicatorRegistry.value];
74
+ return indicators2.sort((a, b) => {
75
+ const position = a.targetElement.compareDocumentPosition(b.targetElement);
76
+ if (position & Node.DOCUMENT_POSITION_FOLLOWING) {
77
+ return -1;
78
+ }
79
+ if (position & Node.DOCUMENT_POSITION_PRECEDING) {
80
+ return 1;
81
+ }
82
+ return 0;
83
+ });
84
+ });
85
+ function updateAllIndicatorPositions() {
86
+ const positions = [];
87
+ const heights = [];
88
+ for (let i = 0; i < indicators.value.length; i++) {
89
+ const data = indicators.value[i];
90
+ const rect = data.targetElement.getBoundingClientRect();
91
+ const buttonHeight = data.buttonElement.offsetHeight;
92
+ let idealY = calculateIdealYPosition(buttonHeight, rect, GAP);
93
+ for (let j = 0; j < i; j++) {
94
+ const prevRect = indicators.value[j].targetElement.getBoundingClientRect();
95
+ const prevElementTop = prevRect.top;
96
+ const prevElementHeight = prevRect.height;
97
+ const collisionPosition = prevElementTop + prevElementHeight + GAP;
98
+ if (idealY < collisionPosition) {
99
+ idealY = collisionPosition;
100
+ }
67
101
  }
102
+ const elementBottom = rect.bottom - buttonHeight - GAP;
103
+ if (elementBottom < idealY) {
104
+ idealY = elementBottom;
105
+ }
106
+ idealY = Math.round(idealY);
107
+ positions.push(idealY);
108
+ heights.push(buttonHeight);
109
+ data.buttonElement.style.transform = `translateY(${idealY}px)`;
110
+ }
111
+ }
112
+ onMounted(() => {
113
+ const el = document.querySelector(`[data-provider-uuid="${props.uuid}"]`);
114
+ if (el && el instanceof HTMLElement) {
115
+ targetElement.value = el;
116
+ }
117
+ if (button.value && targetElement.value) {
118
+ indicatorRegistry.value.push({
119
+ key: key.value,
120
+ targetElement: targetElement.value,
121
+ buttonElement: button.value
122
+ });
123
+ }
124
+ });
125
+ onBeforeUnmount(() => {
126
+ indicatorRegistry.value = indicatorRegistry.value.filter(
127
+ (i) => i.key !== key.value
128
+ );
129
+ });
130
+ useAnimationFrame(() => {
131
+ if (!button.value || !targetElement.value) {
132
+ return;
133
+ }
134
+ if (isManager.value) {
135
+ updateAllIndicatorPositions();
136
+ }
137
+ if (isHovering.value && overlay.value) {
138
+ const rect = targetElement.value.getBoundingClientRect();
139
+ overlay.value.style.width = rect.width + "px";
140
+ overlay.value.style.height = rect.height + "px";
141
+ overlay.value.style.transform = `translate(${rect.x}px, ${rect.y}px)`;
68
142
  }
69
143
  });
70
144
  </script>
@@ -1,7 +1,10 @@
1
1
  import '#blokkli-build/styles.css';
2
+ import type { EditPermission } from '#blokkli/types';
2
3
  type __VLS_Props = {
3
4
  uuid: string;
5
+ entityType: string;
4
6
  editLabel?: string;
7
+ permissions: EditPermission[];
5
8
  };
6
9
  declare const _default: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
7
10
  edit: (...args: any[]) => void;
@@ -1,41 +1,43 @@
1
1
  <template>
2
2
  <Teleport to="body">
3
- <Transition name="bk-loading">
4
- <Loading
5
- v-if="isInitializing || !toolbarLoaded || !featuresLoaded"
6
- screen
7
- />
3
+ <Transition :name="ui.useAnimations.value ? 'bk-loading' : void 0">
4
+ <Loading v-if="showLoading" screen />
8
5
  </Transition>
9
6
 
10
7
  <div id="bk-banner-container">
11
- <Messages />
12
- <div v-if="!state.stateAvailable.value" class="bk-state-unavailable">
13
- <h2>
14
- {{
15
- $t("stateUnavailableTitle", "The edit state could not be loaded.")
16
- }}
17
- </h2>
18
- <p>
19
- {{
20
- $t(
21
- "stateUnavailableText",
22
- "This could be due to missing permissions or a temporary problem. Please try again later."
23
- )
24
- }}
25
- </p>
8
+ <div id="bk-banner-list" class="bk">
9
+ <Banner
10
+ v-if="!state.stateAvailable.value"
11
+ id="state-unavailable"
12
+ icon="sad"
13
+ scheme="red"
14
+ :text="stateNotAvailableText"
15
+ />
16
+ <Banner
17
+ v-if="viewOnlyBanner"
18
+ id="view-only"
19
+ :icon="viewOnlyBanner.icon"
20
+ scheme="yellow"
21
+ :text="viewOnlyBanner.text"
22
+ />
26
23
  </div>
24
+ <Messages />
27
25
  </div>
28
26
  </Teleport>
27
+ <Teleport to="#nuxt-root">
28
+ <div id="bk-canvas-overlay" class="bk bk-canvas-overlay" />
29
+ </Teleport>
29
30
  <Actions v-if="!isInitializing" />
30
31
  <Toolbar @loaded="toolbarLoaded = true" />
31
32
  <AppMenu v-if="toolbarLoaded" />
33
+ <Indicators />
32
34
  <Features
33
- v-if="!isInitializing && toolbarLoaded"
35
+ v-if="isReady"
34
36
  :key="route.fullPath"
35
37
  @loaded="featuresLoaded = true"
36
38
  />
37
- <DragInteractions v-if="!isInitializing" />
38
39
  <AnimationCanvas v-if="!isInitializing" />
40
+ <Konami />
39
41
  <SystemRequirements />
40
42
  <slot
41
43
  v-if="!isInitializing"
@@ -46,7 +48,6 @@
46
48
 
47
49
  <script setup>
48
50
  import {
49
- watch,
50
51
  ref,
51
52
  computed,
52
53
  provide,
@@ -54,23 +55,27 @@ import {
54
55
  onBeforeUnmount,
55
56
  useRoute,
56
57
  useRuntimeConfig,
57
- nextTick
58
+ nextTick,
59
+ inject
58
60
  } from "#imports";
59
61
  import Toolbar from "./Toolbar/index.vue";
60
62
  import Actions from "./Actions/index.vue";
61
63
  import Loading from "./Loading/index.vue";
62
64
  import Messages from "./Messages/index.vue";
63
65
  import Features from "./Features/index.vue";
66
+ import Indicators from "./Indicators/index.vue";
64
67
  import AppMenu from "./AppMenu/index.vue";
65
68
  import DraggableList from "./DraggableList.vue";
66
- import DragInteractions from "./DragInteractions/index.vue";
67
69
  import AnimationCanvas from "./AnimationCanvas/index.vue";
68
70
  import SystemRequirements from "./SystemRequirements/index.vue";
71
+ import Konami from "./Konami/index.vue";
72
+ import Banner from "./Banner/index.vue";
69
73
  import animationProvider from "./../../helpers/animationProvider";
70
74
  import keyboardProvider from "./../../helpers/keyboardProvider";
71
75
  import selectionProvider from "./../../helpers/selectionProvider";
72
76
  import editStateProvider from "./../../helpers/stateProvider";
73
77
  import typesProvider from "./../../helpers/typesProvider";
78
+ import elementProvider from "./../../helpers/providers/element";
74
79
  import domProvider from "./../../helpers/domProvider";
75
80
  import textProvider from "./../../helpers/textProvider";
76
81
  import storageProvider from "./../../helpers/storageProvider";
@@ -83,6 +88,11 @@ import tourProvider from "./../../helpers/tourProvider";
83
88
  import debugProvider from "./../../helpers/debugProvider";
84
89
  import definitionProvider from "./../../helpers/definitionProvider";
85
90
  import dropAreasProvider from "./../../helpers/dropAreaProvider";
91
+ import blocksProvider from "./../../helpers/providers/blocks";
92
+ import indicatorsProvider from "./../../helpers/indicatorsProvider";
93
+ import pluginProvider from "./../../helpers/pluginProvider";
94
+ import directiveProvider from "./../../helpers/providers/directive";
95
+ import fieldsProvider from "./../../helpers/providers/fields";
86
96
  import { eventBus } from "#blokkli/helpers/eventBus";
87
97
  import "#blokkli-build/styles.css";
88
98
  import getAdapter from "#blokkli-build/edit-adapter";
@@ -92,15 +102,20 @@ import {
92
102
  INJECT_EDIT_FIELD_LIST_COMPONENT,
93
103
  INJECT_EDIT_LOGGER,
94
104
  INJECT_GLOBAL_PROXY_MODE,
95
- INJECT_IS_EDITING
105
+ INJECT_IS_EDITING,
106
+ INJECT_PROVIDER_KEY
96
107
  } from "#blokkli/helpers/symbols";
108
+ import { useBlockRegistration } from "#blokkli/helpers/composables/useBlockRegistration";
109
+ import { addElementClasses } from "#blokkli/helpers/addElementClasses";
97
110
  const props = defineProps({
98
111
  entity: { type: null, required: false, default: void 0 },
99
112
  entityType: { type: String, required: true },
100
113
  entityUuid: { type: String, required: true },
101
114
  entityBundle: { type: String, required: true },
102
115
  language: { type: String, required: false, default: "en" },
103
- isolate: { type: Boolean, required: false }
116
+ isolate: { type: Boolean, required: false },
117
+ permissions: { type: Array, required: true },
118
+ providerEl: { type: null, required: true }
104
119
  });
105
120
  defineSlots();
106
121
  const context = computed(() => {
@@ -112,6 +127,7 @@ const context = computed(() => {
112
127
  };
113
128
  });
114
129
  const adapter = await getAdapter(context);
130
+ const providerKey = inject(INJECT_PROVIDER_KEY, "");
115
131
  const route = useRoute();
116
132
  const runtimeConfig = useRuntimeConfig().public.blokkli;
117
133
  const toolbarLoaded = ref(false);
@@ -119,22 +135,45 @@ const featuresLoaded = ref(false);
119
135
  const isInitializing = ref(true);
120
136
  const definitions = definitionProvider();
121
137
  const $t = textProvider(context);
122
- const state = await editStateProvider(adapter, context, $t);
123
- const storage = storageProvider();
138
+ const state = await editStateProvider(
139
+ adapter,
140
+ context,
141
+ $t,
142
+ providerKey,
143
+ props.permissions
144
+ );
145
+ const storage = await storageProvider(adapter, context);
124
146
  const debug = debugProvider(storage);
147
+ const element = elementProvider(debug);
125
148
  const features = featuresProvider(storage);
126
- const theme = themeProvider();
127
149
  const commands = commandsProvider();
128
150
  const tour = tourProvider();
129
151
  const dropAreas = dropAreasProvider();
130
152
  const broadcast = broadcastProvider();
131
- const ui = uiProvider(storage, state);
132
- const dom = domProvider(ui, debug, definitions);
133
- const animation = animationProvider(ui);
153
+ const ui = uiProvider(props.providerEl, storage, state, context, element);
154
+ const dom = domProvider(ui, debug, definitions, state, element);
155
+ const theme = themeProvider(element);
156
+ const blocks = blocksProvider(state, dom, context);
157
+ const selection = selectionProvider(blocks);
158
+ const animation = animationProvider(ui, storage, selection, element);
134
159
  const keyboard = keyboardProvider(animation);
135
- const selection = selectionProvider(dom);
136
160
  const types = await typesProvider(adapter, selection, context);
137
- const mutatedEntity = computed(() => state.mutatedEntity.value || props.entity);
161
+ const indicators = indicatorsProvider();
162
+ const plugins = pluginProvider();
163
+ const directive = directiveProvider(debug, ui);
164
+ const fields = fieldsProvider(state, dom, types);
165
+ const mutatedEntity = computed(() => {
166
+ return {
167
+ ...props.entity ?? {},
168
+ ...state.mutatedEntity.value ?? {}
169
+ };
170
+ });
171
+ const isReady = computed(
172
+ () => !isInitializing.value && dom.isReady.value && directive.isReady.value && toolbarLoaded.value
173
+ );
174
+ const showLoading = computed(() => {
175
+ return !isReady.value || !featuresLoaded.value;
176
+ });
138
177
  const onContextMenu = (e) => {
139
178
  e.preventDefault();
140
179
  e.stopPropagation();
@@ -147,24 +186,26 @@ function onTouchStart(e) {
147
186
  e.preventDefault();
148
187
  }
149
188
  }
150
- const setRootClasses = (unmount) => {
151
- document.documentElement.classList.remove("bk-use-animations");
152
- if (ui.useAnimations.value && !unmount) {
153
- document.documentElement.classList.add("bk-use-animations");
154
- }
155
- };
156
- watch(ui.useAnimations, setRootClasses);
189
+ const shouldIsolate = computed(() => props.isolate);
190
+ addElementClasses(
191
+ document.documentElement,
192
+ "bk-use-animations",
193
+ ui.useAnimations
194
+ );
195
+ addElementClasses(
196
+ document.documentElement,
197
+ "bk-isolate-provider",
198
+ shouldIsolate
199
+ );
157
200
  const baseLogger = debug.createLogger("EditProvider");
158
- onMounted(() => {
201
+ onMounted(async () => {
159
202
  window.addEventListener("contextmenu", onContextMenu);
160
- if (props.isolate) {
161
- document.documentElement.classList.add("bk-isolate-provider");
162
- }
163
203
  document.documentElement.addEventListener("touchmove", onTouchMove);
164
204
  document.documentElement.addEventListener("touchstart", onTouchStart);
165
- setRootClasses();
166
205
  baseLogger.log("EditProvider mounted");
167
206
  dom.init();
207
+ directive.init();
208
+ await nextTick();
168
209
  isInitializing.value = false;
169
210
  broadcast.emit("editorLoaded", { uuid: props.entityUuid });
170
211
  });
@@ -172,10 +213,8 @@ onBeforeUnmount(() => {
172
213
  window.removeEventListener("contextmenu", onContextMenu);
173
214
  isInitializing.value = true;
174
215
  toolbarLoaded.value = false;
175
- document.documentElement.classList.remove("bk-isolate-provider");
176
216
  document.documentElement.removeEventListener("touchmove", onTouchMove);
177
217
  document.documentElement.removeEventListener("touchstart", onTouchStart);
178
- setRootClasses(true);
179
218
  });
180
219
  provide(INJECT_EDIT_LOGGER, baseLogger);
181
220
  provide(INJECT_EDIT_FIELD_LIST_COMPONENT, DraggableList);
@@ -184,31 +223,81 @@ provide(INJECT_EDIT_CONTEXT, {
184
223
  eventBus,
185
224
  mutatedOptions: state.mutatedOptions,
186
225
  dom,
187
- definitions
226
+ definitions,
227
+ useBlockRegistration
188
228
  });
189
229
  provide(INJECT_APP, {
230
+ $t,
190
231
  adapter,
232
+ animation,
233
+ broadcast,
234
+ commands,
235
+ context,
236
+ debug,
237
+ definitions,
238
+ dom,
239
+ dropAreas,
240
+ element,
191
241
  eventBus,
242
+ directive,
243
+ features,
244
+ indicators,
245
+ keyboard,
246
+ plugins,
192
247
  runtimeConfig,
248
+ selection,
249
+ blocks,
193
250
  state,
194
- dom,
195
251
  storage,
196
- types,
197
- selection,
198
- keyboard,
199
- ui,
200
- animation,
201
- context,
202
- $t,
203
- broadcast,
204
- features,
205
252
  theme,
206
- commands,
207
253
  tour,
208
- dropAreas,
209
- debug,
210
- definitions
254
+ types,
255
+ ui,
256
+ fields
211
257
  });
258
+ function textWithHighlight(title, text) {
259
+ return `<strong>${title}</strong> ${text}`;
260
+ }
261
+ const stateNotAvailableText = computed(() => {
262
+ return textWithHighlight(
263
+ $t("stateUnavailableTitle", "The edit state could not be loaded."),
264
+ $t(
265
+ "stateUnavailableText",
266
+ "This could be due to missing permissions or a temporary problem. Please try again later."
267
+ )
268
+ );
269
+ });
270
+ const viewOnlyBanner = computed(
271
+ () => {
272
+ if (props.permissions.includes("edit")) {
273
+ return null;
274
+ }
275
+ if (props.permissions.includes("review")) {
276
+ return {
277
+ text: textWithHighlight(
278
+ $t("viewBannerReviewTitle", "You are in review mode."),
279
+ $t(
280
+ "viewBannerReviewText",
281
+ "You can view and add comments but cannot edit content."
282
+ )
283
+ ),
284
+ icon: "comment"
285
+ };
286
+ } else if (props.permissions.includes("view")) {
287
+ return {
288
+ text: textWithHighlight(
289
+ $t("viewBannerViewTitle", "You are in view-only mode."),
290
+ $t(
291
+ "viewBannerViewText",
292
+ "You can view comments but cannot edit content."
293
+ )
294
+ ),
295
+ icon: "eye"
296
+ };
297
+ }
298
+ return null;
299
+ }
300
+ );
212
301
  const isProxyMode = computed(() => ui.isProxyMode.value);
213
302
  provide(INJECT_GLOBAL_PROXY_MODE, isProxyMode);
214
303
  if (import.meta.hot) {
@@ -1,3 +1,4 @@
1
+ import type { EditPermission } from '#blokkli/types';
1
2
  import '#blokkli-build/styles.css';
2
3
  declare const _default: <T>(__VLS_props: NonNullable<Awaited<typeof __VLS_setup>>["props"], __VLS_ctx?: __VLS_PrettifyLocal<Pick<NonNullable<Awaited<typeof __VLS_setup>>, "attrs" | "emit" | "slots">>, __VLS_expose?: NonNullable<Awaited<typeof __VLS_setup>>["expose"], __VLS_setup?: Promise<{
3
4
  props: __VLS_PrettifyLocal<Pick<Partial<{}> & Omit<{} & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, never>, never> & {
@@ -7,6 +8,8 @@ declare const _default: <T>(__VLS_props: NonNullable<Awaited<typeof __VLS_setup>
7
8
  entityBundle: string;
8
9
  language?: string;
9
10
  isolate?: boolean;
11
+ permissions: EditPermission[];
12
+ providerEl: HTMLElement;
10
13
  } & Partial<{}>> & import("vue").PublicProps;
11
14
  expose(exposed: import("vue").ShallowUnwrapRef<{}>): void;
12
15
  attrs: any;
@@ -50,13 +50,12 @@ import {
50
50
  ref,
51
51
  computed,
52
52
  useBlokkli,
53
- onMounted,
54
- onBeforeUnmount,
55
53
  nextTick,
56
54
  defineBlokkliFeature
57
55
  } from "#imports";
58
56
  import { Sortli } from "#blokkli/components";
59
57
  import { PluginSidebar, PluginTourItem } from "#blokkli/plugins";
58
+ import { addElementClasses } from "#blokkli/helpers/addElementClasses";
60
59
  const { settings } = defineBlokkliFeature({
61
60
  id: "add-list",
62
61
  icon: "plus",
@@ -87,21 +86,17 @@ const { settings } = defineBlokkliFeature({
87
86
  },
88
87
  screenshot: "feature-add-list.jpg"
89
88
  });
90
- const { state, $t, eventBus, ui } = useBlokkli();
89
+ const { state, $t, eventBus, ui, element } = useBlokkli();
91
90
  const hasContextMenuOpen = computed(
92
91
  () => ui.openContextMenu.value.startsWith("add_list_item_")
93
92
  );
94
93
  const isSidebar = computed(() => ui.addListOrientation.value === "sidebar");
95
94
  const shouldRender = computed(() => state.editMode.value === "editing");
96
95
  watch(ui.addListOrientation, () => {
97
- setRootClasses();
98
96
  nextTick(() => {
99
97
  eventBus.emit("add-list:change");
100
98
  });
101
99
  });
102
- watch(shouldRender, () => {
103
- setRootClasses();
104
- });
105
100
  const CLASS_LEFT = "bk-has-add-list-left";
106
101
  const CLASS_BOTTOM = "bk-has-add-list-bottom";
107
102
  const wrapper = ref(null);
@@ -109,17 +104,15 @@ const isActive = ref(false);
109
104
  let mouseTimeout = null;
110
105
  const style = computed(() => {
111
106
  if (settings.value.orientation === "vertical" && (isActive.value || hasContextMenuOpen.value) && wrapper.value) {
112
- const labels = [
113
- ...wrapper.value.querySelectorAll(".bk-list-item-label span")
114
- ];
115
- const width = labels.reduce((acc, el) => {
116
- if (el.offsetWidth > acc) {
117
- return el.offsetWidth;
118
- }
119
- return acc;
120
- }, 0);
107
+ const widths = element.queryAll(
108
+ wrapper.value,
109
+ ".bk-list-item-label span",
110
+ "AddList vertical sidebar style",
111
+ (el) => el.offsetWidth
112
+ );
113
+ const largestWidth = Math.max(...widths);
121
114
  return {
122
- "--bk-add-list-width": width + 90
115
+ "--bk-add-list-width": largestWidth + 90
123
116
  };
124
117
  }
125
118
  return void 0;
@@ -146,18 +139,6 @@ const onWheel = (e) => {
146
139
  e.stopPropagation();
147
140
  }
148
141
  };
149
- function setRootClasses() {
150
- document.documentElement.classList.remove(CLASS_BOTTOM);
151
- document.documentElement.classList.remove(CLASS_LEFT);
152
- if (!shouldRender.value) {
153
- return;
154
- }
155
- if (ui.addListOrientation.value === "horizontal") {
156
- document.documentElement.classList.add(CLASS_BOTTOM);
157
- } else if (ui.addListOrientation.value === "vertical") {
158
- document.documentElement.classList.add(CLASS_LEFT);
159
- }
160
- }
161
142
  const sidebarTitle = computed(() => $t("addListSidebarTitle", "Add blocks"));
162
143
  const tourText = computed(
163
144
  () => $t(
@@ -165,13 +146,20 @@ const tourText = computed(
165
146
  "<p>This shows the list of available blocks that can be placed. Add a block by dragging the icon into the page.</p><p>When an existing block is selected, some blocks may be greyed out. This indicates which blocks can be placed inside or after the selected block.</p>"
166
147
  )
167
148
  );
168
- onMounted(() => {
169
- setRootClasses();
170
- });
171
- onBeforeUnmount(() => {
172
- document.documentElement.classList.remove(CLASS_BOTTOM);
173
- document.documentElement.classList.remove(CLASS_LEFT);
174
- });
149
+ addElementClasses(
150
+ document.documentElement,
151
+ CLASS_BOTTOM,
152
+ computed(
153
+ () => ui.addListOrientation.value === "horizontal" && shouldRender.value
154
+ )
155
+ );
156
+ addElementClasses(
157
+ document.documentElement,
158
+ CLASS_LEFT,
159
+ computed(
160
+ () => ui.addListOrientation.value === "vertical" && shouldRender.value
161
+ )
162
+ );
175
163
  </script>
176
164
 
177
165
  <script>