@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,26 +1,15 @@
1
1
  <template>
2
- <div
2
+ <ArtboardTooltip
3
3
  v-if="loaded"
4
- ref="root"
5
- :style="style"
6
- class="bk-editable-field bk-control"
4
+ id="editable"
5
+ :title
6
+ :anchor-el="element"
7
+ placement-y="top"
8
+ class="bk-editable-field"
9
+ close-icon="check"
10
+ @close="save"
7
11
  >
8
12
  <form ref="form" class="bk-editable-field-input" @submit.prevent="close">
9
- <div class="bk bk-editable-field-buttons">
10
- <h3>
11
- <ItemIcon :bundle="itemBundle" />
12
- <span>{{ title }}</span>
13
- </h3>
14
- <button @click.prevent="cancel">
15
- <Icon name="close" />
16
- <span>{{ $t("cancel", "Cancel") }}</span>
17
- </button>
18
- <button :disabled="!hasChanged" type="submit" @click.prevent="save">
19
- <Icon name="save" />
20
- <span>{{ $t("save", "Save") }}</span>
21
- </button>
22
- </div>
23
-
24
13
  <div ref="input">
25
14
  <InputContenteditable
26
15
  v-if="config.type === 'markup'"
@@ -50,21 +39,24 @@
50
39
  />
51
40
  </div>
52
41
 
53
- <div v-if="!isMarkup" class="bk bk-editable-field-info">
42
+ <div class="bk bk-editable-field-info">
43
+ <button :disabled="!hasChanged" @click.prevent="cancel">
44
+ {{ $t("editableFieldDiscard", "Discard") }}
45
+ </button>
54
46
  <div v-if="errorText" class="bk-editable-field-info-error">
55
47
  {{ errorText }}
56
48
  </div>
57
- <div class="bk-editable-field-info-count">
49
+ <div v-if="!isMarkup" class="bk-editable-field-info-count">
58
50
  <span>{{ count }}</span>
59
51
  <span v-if="maxlength >= 1">&nbsp;/&nbsp;{{ maxlength }}</span>
60
52
  </div>
61
53
  </div>
62
54
  </form>
63
- </div>
55
+ </ArtboardTooltip>
64
56
  </template>
65
57
 
66
58
  <script setup>
67
- import { Icon, ItemIcon } from "#blokkli/components";
59
+ import { ArtboardTooltip } from "#blokkli/components";
68
60
  import {
69
61
  computed,
70
62
  ref,
@@ -74,12 +66,21 @@ import {
74
66
  useBlokkli,
75
67
  nextTick
76
68
  } from "#imports";
77
- import { falsy, findIdealRectPosition } from "#blokkli/helpers";
69
+ import { falsy } from "#blokkli/helpers";
78
70
  import InputPlaintext from "./Plaintext/index.vue";
79
71
  import InputContenteditable from "./Contenteditable/index.vue";
80
72
  import InputFrame from "./Frame/index.vue";
81
73
  import onBlokkliEvent from "#blokkli/helpers/composables/onBlokkliEvent";
82
- const { eventBus, ui, selection, state, adapter, $t, types } = useBlokkli();
74
+ import { itemEntityType } from "#blokkli-build/config";
75
+ const {
76
+ eventBus,
77
+ selection,
78
+ state,
79
+ adapter,
80
+ $t,
81
+ types,
82
+ element: elementProvider
83
+ } = useBlokkli();
83
84
  const props = defineProps({
84
85
  fieldName: { type: String, required: true },
85
86
  host: { type: Object, required: true },
@@ -102,48 +103,15 @@ const save = () => {
102
103
  };
103
104
  onBlokkliEvent("window:clickAway", save);
104
105
  const getElement = () => props.element;
105
- const alignment = computed(() => {
106
- if (props.element) {
107
- const style2 = window.getComputedStyle(props.element);
108
- if (style2.textAlign === "left" || style2.textAlign === "center" || style2.textAlign === "right") {
109
- return style2.textAlign;
110
- } else if (style2.textAlign === "start") {
111
- return "left";
112
- } else if (style2.textAlign === "end") {
113
- return "right";
114
- }
115
- }
116
- return "center";
117
- });
118
106
  const scrollHeight = ref(0);
119
107
  const loaded = ref(false);
120
108
  const originalText = ref(props.value || "");
121
109
  const modelValue = ref("");
122
- const width = ref(320);
123
110
  const inputStyle = ref({});
124
111
  const form = ref(null);
125
- const root = ref(null);
126
112
  const input = ref(null);
127
- const x = ref(0);
128
- const y = ref(0);
129
- const style = computed(() => {
130
- if (ui.isMobile.value) {
131
- return {};
132
- } else {
133
- return {
134
- width: width.value + "px",
135
- top: y.value + "px",
136
- left: x.value + "px"
137
- };
138
- }
139
- });
140
113
  const hasChanged = computed(() => modelValue.value !== originalText.value);
141
- const itemBundle = computed(() => {
142
- if ("itemBundle" in props.host) {
143
- return props.host.itemBundle;
144
- }
145
- return void 0;
146
- });
114
+ const itemBundle = computed(() => props.host.bundle);
147
115
  const maxlength = computed(() => props.config.maxLength);
148
116
  const required = computed(() => !!props.config.required);
149
117
  const title = computed(() => {
@@ -174,7 +142,7 @@ const close = async () => {
174
142
  }
175
143
  const el = getElement();
176
144
  if (shouldSave.value && modelValue.value !== originalText.value) {
177
- if ("itemBundle" in props.host) {
145
+ if (props.host.type === itemEntityType) {
178
146
  await state.mutateWithLoadingState(
179
147
  () => adapter.updateFieldValue({
180
148
  uuid: props.host.uuid,
@@ -223,44 +191,34 @@ const focusInput = (el) => {
223
191
  if (!el) {
224
192
  return;
225
193
  }
226
- const textarea = el.querySelector("textarea");
194
+ const queryEl = el instanceof Document ? el.documentElement : el;
195
+ const textarea = elementProvider.query(
196
+ queryEl,
197
+ "textarea",
198
+ "Focus editable field textarea"
199
+ );
227
200
  if (textarea) {
228
201
  textarea.focus();
229
202
  return;
230
203
  }
231
- const editable = el.querySelector("[contenteditable]");
232
- if (editable instanceof HTMLElement) {
204
+ const editable = elementProvider.query(
205
+ queryEl,
206
+ "[contenteditable]",
207
+ "Focus editable field contenteditable"
208
+ );
209
+ if (editable) {
233
210
  editable.focus();
234
211
  return;
235
212
  }
236
- const iframe = el.querySelector("iframe");
213
+ const iframe = elementProvider.query(
214
+ queryEl,
215
+ "iframe",
216
+ "Find iframe in editable field"
217
+ );
237
218
  if (iframe?.contentDocument) {
238
219
  focusInput(iframe.contentDocument);
239
220
  }
240
221
  };
241
- const onAnimationFrame = () => {
242
- if (ui.isMobile.value) {
243
- return;
244
- }
245
- const elementRect = props.element.getBoundingClientRect();
246
- const height = form.value?.scrollHeight || 100;
247
- const newWidth = Math.min(Math.max(elementRect.width, 360), 1e3);
248
- const ideal = findIdealRectPosition(
249
- ui.viewportBlockingRects.value,
250
- {
251
- x: alignment.value === "left" ? elementRect.x : elementRect.x + (Math.max(elementRect.width, 360) - newWidth) / 2,
252
- y: elementRect.y - height - 20,
253
- height,
254
- width: newWidth
255
- },
256
- ui.visibleViewportPadded.value
257
- );
258
- x.value = ideal.x;
259
- y.value = ideal.y + height;
260
- width.value = newWidth;
261
- };
262
- onAnimationFrame();
263
- onBlokkliEvent("animationFrame", onAnimationFrame);
264
222
  onMounted(() => {
265
223
  const el = getElement();
266
224
  if (props.isComponent) {
@@ -1,7 +1,7 @@
1
- import type { DraggableExistingBlock, EntityContext, EditableFieldConfig } from '#blokkli/types';
1
+ import type { EntityContext, EditableFieldConfig } from '#blokkli/types';
2
2
  type __VLS_Props = {
3
3
  fieldName: string;
4
- host: DraggableExistingBlock | EntityContext;
4
+ host: EntityContext;
5
5
  element: HTMLElement;
6
6
  config: EditableFieldConfig;
7
7
  isComponent?: boolean;
@@ -1,8 +1,13 @@
1
1
  <template>
2
2
  <Teleport to="body">
3
- <Transition :name="hasTransition ? 'bk-editable' : void 0">
4
- <Overlay v-if="editable" v-bind="editable" :key="key" @close="close" />
5
- </Transition>
3
+ <BlokkliTransition name="caret-tooltip" :enabled="hasTransition">
4
+ <Overlay
5
+ v-if="selectedEditable"
6
+ v-bind="selectedEditable"
7
+ :key="key"
8
+ @close="close"
9
+ />
10
+ </BlokkliTransition>
6
11
  </Teleport>
7
12
  </template>
8
13
 
@@ -15,9 +20,11 @@ import {
15
20
  defineBlokkliFeature
16
21
  } from "#imports";
17
22
  import Overlay from "./Overlay/index.vue";
23
+ import { BlokkliTransition } from "#blokkli/components";
18
24
  import onBlokkliEvent from "#blokkli/helpers/composables/onBlokkliEvent";
19
25
  import defineCommands from "#blokkli/helpers/composables/defineCommands";
20
26
  import { falsy } from "#blokkli/helpers";
27
+ import { itemEntityType } from "#blokkli-build/config";
21
28
  defineBlokkliFeature({
22
29
  id: "editable-field",
23
30
  icon: "textbox",
@@ -25,38 +32,47 @@ defineBlokkliFeature({
25
32
  requiredAdapterMethods: ["updateFieldValue", "getEditableFieldConfig"],
26
33
  description: "Implements a form overlay to edit a single field of a block."
27
34
  });
28
- const { selection, adapter, types, $t, dom, runtimeConfig, state } = useBlokkli();
29
- const editable = ref(null);
35
+ const { selection, adapter, types, $t, state, directive, blocks, context } = useBlokkli();
36
+ const selectedEditable = ref(null);
30
37
  const hasTransition = ref(false);
31
38
  const key = computed(() => {
32
- if (!editable.value) {
39
+ if (!selectedEditable.value) {
33
40
  return "";
34
41
  }
35
- return editable.value.host.uuid + editable.value.fieldName;
42
+ return selectedEditable.value.host.uuid + selectedEditable.value.fieldName;
36
43
  });
37
44
  const getHost = (uuid) => {
38
45
  if (uuid) {
39
- const block = dom.findBlock(uuid);
46
+ const block = blocks.getBlock(uuid);
40
47
  if (block) {
41
- return block;
48
+ return {
49
+ type: itemEntityType,
50
+ bundle: block.bundle,
51
+ uuid: block.uuid
52
+ };
42
53
  }
43
54
  }
44
- return dom.findClosestEntityContext(dom.getActiveProviderElement());
55
+ return {
56
+ type: context.value.entityType,
57
+ bundle: context.value.entityBundle,
58
+ uuid: context.value.entityUuid
59
+ };
45
60
  };
46
61
  const buildEditable = (fieldName, uuid) => {
47
62
  const host = getHost(uuid);
48
63
  if (!host) {
49
64
  return;
50
65
  }
51
- const hostEntityType = "type" in host ? host.type : runtimeConfig.itemEntityType;
52
- const hostEntityBundle = "bundle" in host ? host.bundle : host.itemBundle;
66
+ if (host.bundle === "from_library") {
67
+ return;
68
+ }
53
69
  const config = types.editableFieldConfig.forName(
54
- hostEntityType,
55
- hostEntityBundle,
70
+ host.type,
71
+ host.bundle,
56
72
  fieldName
57
73
  );
58
74
  if (!config) {
59
- let message = `Failed to load editable field config for field "${fieldName}" on entity type "${hostEntityType}" of bundle "${hostEntityBundle}"`;
75
+ let message = `Failed to load editable field config for field "${fieldName}" on entity type "${host.type}" of bundle "${host.bundle}"`;
60
76
  if (uuid) {
61
77
  message += ` with uuid "${uuid}"`;
62
78
  }
@@ -65,10 +81,7 @@ const buildEditable = (fieldName, uuid) => {
65
81
  if (config.type === "frame" && !adapter.buildEditableFrameUrl) {
66
82
  return;
67
83
  }
68
- const hostElement = "itemBundle" in host ? host.element() : dom.getActiveProviderElement();
69
- const element = hostElement.querySelector(
70
- `[data-blokkli-editable-field="${fieldName}"]`
71
- );
84
+ const element = directive.findEditableElement(fieldName, host);
72
85
  if (!(element instanceof HTMLElement)) {
73
86
  return;
74
87
  }
@@ -85,30 +98,19 @@ onBlokkliEvent("editable:focus", (e) => {
85
98
  if (!state.canEdit.value) {
86
99
  return;
87
100
  }
88
- hasTransition.value = !editable.value;
89
- editable.value = buildEditable(e.fieldName, e.uuid) || null;
90
- if (editable.value) {
101
+ hasTransition.value = !selectedEditable.value;
102
+ selectedEditable.value = buildEditable(e.fieldName, e.uuid) || null;
103
+ if (selectedEditable.value) {
91
104
  selection.editableActive.value = true;
92
105
  }
93
106
  });
94
107
  defineCommands(() => {
95
- const editables = selection.blocks.value.flatMap((v) => {
96
- return [...v.element().querySelectorAll("[data-blokkli-editable-field]")].map((el) => {
97
- if (!(el instanceof HTMLElement)) {
98
- return;
99
- }
100
- const block = el.closest("[data-uuid]");
101
- if (!(block instanceof HTMLElement)) {
102
- return;
103
- }
104
- if (block.dataset.uuid !== v.uuid) {
105
- return;
106
- }
107
- const name = el.dataset.blokkliEditableField;
108
- if (!name) {
109
- return;
110
- }
111
- return buildEditable(name, block.dataset.uuid);
108
+ if (selection.items.value.length > 5) {
109
+ return [];
110
+ }
111
+ const editables = selection.items.value.flatMap((item) => {
112
+ return directive.getEditablesForBlock(item.uuid).map((v) => {
113
+ return buildEditable(v.fieldName, item.uuid);
112
114
  }).filter(falsy);
113
115
  });
114
116
  return editables.map((v) => {
@@ -122,7 +124,7 @@ defineCommands(() => {
122
124
  icon: "textbox",
123
125
  disabled: false,
124
126
  callback: () => {
125
- editable.value = v;
127
+ selectedEditable.value = v;
126
128
  }
127
129
  };
128
130
  });
@@ -130,16 +132,16 @@ defineCommands(() => {
130
132
  watch(selection.editableActive, (isActive) => {
131
133
  if (!isActive) {
132
134
  hasTransition.value = true;
133
- editable.value = null;
135
+ selectedEditable.value = null;
134
136
  }
135
137
  });
136
- watch(editable, (v) => {
138
+ watch(selectedEditable, (v) => {
137
139
  if (!v && selection.editableActive.value) {
138
140
  selection.editableActive.value = false;
139
141
  }
140
142
  });
141
143
  const close = () => {
142
- editable.value = null;
144
+ selectedEditable.value = null;
143
145
  selection.editableActive.value = false;
144
146
  };
145
147
  </script>
@@ -17,16 +17,9 @@
17
17
  </template>
18
18
 
19
19
  <script setup>
20
- import {
21
- useBlokkli,
22
- defineBlokkliFeature,
23
- ref,
24
- watch,
25
- onMounted,
26
- onBeforeUnmount
27
- } from "#imports";
20
+ import { useBlokkli, defineBlokkliFeature, ref } from "#imports";
28
21
  import { PluginViewOption } from "#blokkli/plugins";
29
- const HIDE_CLASS = "bk-hide-non-editable";
22
+ import { addElementClasses } from "#blokkli/helpers/addElementClasses";
30
23
  defineBlokkliFeature({
31
24
  id: "editable-mask",
32
25
  icon: "texturebox",
@@ -36,17 +29,7 @@ defineBlokkliFeature({
36
29
  });
37
30
  const { $t } = useBlokkli();
38
31
  const isActive = ref(false);
39
- const setRootClass = () => {
40
- document.documentElement.classList.remove(HIDE_CLASS);
41
- if (isActive.value) {
42
- document.documentElement.classList.add(HIDE_CLASS);
43
- }
44
- };
45
- watch(isActive, setRootClass);
46
- onMounted(setRootClass);
47
- onBeforeUnmount(() => {
48
- document.documentElement.classList.remove(HIDE_CLASS);
49
- });
32
+ addElementClasses(document.documentElement, "bk-hide-non-editable", isActive);
50
33
  </script>
51
34
 
52
35
  <script>
@@ -1,5 +1,22 @@
1
1
  <template>
2
2
  <Teleport to="#bk-toolbar-title">
3
+ <button
4
+ v-if="scheduledDate"
5
+ class="bk-toolbar-title-scheduled"
6
+ @click.prevent="eventBus.emit('publish:show-dialog')"
7
+ >
8
+ <Icon name="calendar-clock" />
9
+ <div class="bk-toolbar-title-scheduled-text">
10
+ <div>{{ formattedScheduledDate }}</div>
11
+ </div>
12
+ <div class="bk-tooltip">
13
+ <div>
14
+ {{
15
+ $t("scheduledFor", "The changes will be published on this date.")
16
+ }}
17
+ </div>
18
+ </div>
19
+ </button>
3
20
  <button
4
21
  ref="buttonEl"
5
22
  class="bk-toolbar-button"
@@ -36,15 +53,30 @@
36
53
  import defineCommands from "#blokkli/helpers/composables/defineCommands";
37
54
  import { useBlokkli, defineBlokkliFeature, ref, computed } from "#imports";
38
55
  import defineTourItem from "#blokkli/helpers/composables/defineTourItem";
56
+ import { Icon } from "#blokkli/components";
39
57
  defineBlokkliFeature({
40
58
  id: "entity-title",
41
59
  icon: "title",
42
60
  label: "Entity Title",
43
61
  description: "Renders the title and status of the page entity."
44
62
  });
45
- const { state, eventBus, $t } = useBlokkli();
63
+ const { state, eventBus, $t, ui } = useBlokkli();
46
64
  const { entity, mutations } = state;
47
65
  const buttonEl = ref(null);
66
+ const scheduledDate = computed(() => state.publishOptions.value?.publishOn);
67
+ const formattedScheduledDate = computed(() => {
68
+ if (!scheduledDate.value) {
69
+ return "";
70
+ }
71
+ return ui.formatDate(scheduledDate.value, {
72
+ weekday: "short",
73
+ year: "numeric",
74
+ month: "2-digit",
75
+ day: "2-digit",
76
+ hour: "2-digit",
77
+ minute: "2-digit"
78
+ });
79
+ });
48
80
  const statusPublished = computed(
49
81
  () => $t("pageIsPublished", "Page is published")
50
82
  );
@@ -37,14 +37,16 @@
37
37
  <ul class="bk-library-dialog-list">
38
38
  <li
39
39
  v-for="(item, index) in fragments"
40
+ v-show="visible === null || visible.includes(item.name)"
41
+ ref="itemElements"
40
42
  :key="item.name"
41
43
  :class="{
42
44
  'bk-is-selected': selectedItem === item.name
43
45
  }"
46
+ :data-bk-fragment-name="item.name"
44
47
  @click="selectedItem = item.name"
45
48
  >
46
49
  <FragmentItem
47
- v-show="visible === null || visible.includes(item.name)"
48
50
  :name="item.name"
49
51
  :label="item.label"
50
52
  :description="item.description"
@@ -65,7 +67,7 @@
65
67
  <script setup>
66
68
  import { FormOverlay } from "#blokkli/components";
67
69
  import { falsy } from "#blokkli/helpers";
68
- import { ref, useBlokkli, computed, watch } from "#imports";
70
+ import { ref, useBlokkli, computed, watch, useTemplateRef } from "#imports";
69
71
  import FragmentItem from "./Item/index.vue";
70
72
  const props = defineProps({
71
73
  field: { type: Object, required: true }
@@ -73,7 +75,7 @@ const props = defineProps({
73
75
  const { $t, definitions } = useBlokkli();
74
76
  const emit = defineEmits(["close", "submit"]);
75
77
  const searchText = ref("");
76
- const listEl = ref(null);
78
+ const itemElements = useTemplateRef("itemElements");
77
79
  const selectedItem = ref("");
78
80
  const allowedInField = computed(() => props.field.allowedFragments || []);
79
81
  const fragments = computed(
@@ -91,15 +93,15 @@ const onClose = () => {
91
93
  };
92
94
  const elements = ref([]);
93
95
  const buildElements = () => {
94
- if (!listEl.value) {
96
+ if (!itemElements.value) {
95
97
  return;
96
98
  }
97
- elements.value = [...listEl.value.querySelectorAll(".bk-library-list-item")].map((el) => {
99
+ elements.value = itemElements.value.map((el) => {
98
100
  if (el instanceof HTMLElement) {
99
- const uuid = el.dataset.libraryItemUuid;
100
- if (uuid) {
101
+ const name = el.dataset.bkFragmentName;
102
+ if (name) {
101
103
  return {
102
- uuid,
104
+ name,
103
105
  text: el.textContent?.toLowerCase() || ""
104
106
  };
105
107
  }
@@ -115,6 +117,6 @@ const visible = computed(() => {
115
117
  if (!searchText.value || !elements.value.length) {
116
118
  return null;
117
119
  }
118
- return elements.value.filter((v) => v.text.includes(searchText.value.toLowerCase())).map((v) => v.uuid);
120
+ return elements.value.filter((v) => v.text.includes(searchText.value.toLowerCase())).map((v) => v.name);
119
121
  });
120
122
  </script>
@@ -19,14 +19,14 @@
19
19
  />
20
20
 
21
21
  <Teleport to="body">
22
- <transition name="bk-slide-in" :duration="200">
22
+ <BlokkliTransition name="slide-in">
23
23
  <FragmentsDialog
24
24
  v-if="placedAction && adapter.getLibraryItems"
25
25
  :field="placedAction.field"
26
26
  @close="placedAction = null"
27
27
  @submit="onAddFragment"
28
28
  />
29
- </transition>
29
+ </BlokkliTransition>
30
30
  </Teleport>
31
31
  </template>
32
32
 
@@ -34,18 +34,20 @@
34
34
  import { ref, useBlokkli, defineBlokkliFeature, computed } from "#imports";
35
35
  import { PluginAddAction } from "#blokkli/plugins";
36
36
  import FragmentsDialog from "./Dialog/index.vue";
37
+ import { BlokkliTransition } from "#blokkli/components";
37
38
  const { adapter } = defineBlokkliFeature({
38
39
  id: "fragments",
39
40
  icon: "fragment",
40
41
  label: "Fragments",
41
42
  description: "Provides way to add content fragments defined by the frontend.",
42
- requiredAdapterMethods: ["fragmentsAddBlock"]
43
+ requiredAdapterMethods: ["fragmentsAddBlock"],
44
+ dependencies: ["add-list"]
43
45
  });
44
46
  const { state, $t, types, selection, dom } = useBlokkli();
45
47
  const isEnabled = computed(() => {
46
- if (selection.blocks.value.length === 1) {
47
- const block = selection.blocks.value[0];
48
- const field = dom.findField(block.hostUuid, block.hostFieldName);
48
+ const item = selection.item.value;
49
+ if (item) {
50
+ const field = dom.getRegisteredField(item.host.uuid, item.host.fieldName);
49
51
  return !!field?.allowedFragments.length;
50
52
  }
51
53
  return true;
@@ -3,6 +3,7 @@
3
3
  id="history"
4
4
  v-slot="{ scrolledToEnd }"
5
5
  :title="$t('history', 'History')"
6
+ edit-only
6
7
  :tour-text="
7
8
  $t(
8
9
  'historyTourText',
@@ -52,6 +53,7 @@ import {
52
53
  } from "#imports";
53
54
  import { PluginSidebar, PluginToolbarButton } from "#blokkli/plugins";
54
55
  import HistoryList from "./List/index.vue";
56
+ import { MOUSE_BUTTON } from "#blokkli/helpers/dom";
55
57
  const { adapter, settings } = defineBlokkliFeature({
56
58
  id: "history",
57
59
  icon: "history",
@@ -69,31 +71,47 @@ const { adapter, settings } = defineBlokkliFeature({
69
71
  }
70
72
  }
71
73
  });
72
- const { state, $t, ui } = useBlokkli();
74
+ const { state, $t, ui, selection, eventBus } = useBlokkli();
73
75
  const { mutations, currentMutationIndex, mutateWithLoadingState } = state;
76
+ const mutationsCount = computed(() => mutations.value.length);
74
77
  const useMouseForHistory = computed(() => settings.value.useMouseButtons);
75
- const canUndo = computed(() => currentMutationIndex.value >= 0);
78
+ const canUndo = computed(
79
+ () => currentMutationIndex.value >= 0 && state.canEdit.value
80
+ );
76
81
  const canRedo = computed(
77
- () => currentMutationIndex.value < mutations.value.length - 1
82
+ () => currentMutationIndex.value < mutationsCount.value - 1 && state.canEdit.value
78
83
  );
79
- function undo() {
80
- mutateWithLoadingState(
81
- () => adapter.setHistoryIndex(currentMutationIndex.value - 1)
82
- );
84
+ const selectionAtHistoryIndex = /* @__PURE__ */ new Map();
85
+ function updateCurrentHistorySelection() {
86
+ selectionAtHistoryIndex.set(currentMutationIndex.value, [
87
+ ...selection.uuids.value
88
+ ]);
89
+ }
90
+ function setSelectionFromHistoryIndex(index) {
91
+ const selection2 = selectionAtHistoryIndex.get(index);
92
+ if (selection2) {
93
+ eventBus.emit("select", selection2);
94
+ }
95
+ }
96
+ async function setHistoryIndex(newIndex) {
97
+ updateCurrentHistorySelection();
98
+ await mutateWithLoadingState(() => adapter.setHistoryIndex(newIndex));
99
+ setSelectionFromHistoryIndex(newIndex);
83
100
  }
84
- function redo() {
85
- mutateWithLoadingState(
86
- () => adapter.setHistoryIndex(currentMutationIndex.value + 1)
87
- );
101
+ async function undo() {
102
+ await setHistoryIndex(currentMutationIndex.value - 1);
103
+ }
104
+ async function redo() {
105
+ await setHistoryIndex(currentMutationIndex.value + 1);
88
106
  }
89
107
  const onMouseUp = (e) => {
90
- if (e.button === 3) {
108
+ if (e.button === MOUSE_BUTTON.FOURTH) {
91
109
  e.preventDefault();
92
110
  e.stopPropagation();
93
111
  if (canUndo.value) {
94
112
  undo();
95
113
  }
96
- } else if (e.button === 4) {
114
+ } else if (e.button === MOUSE_BUTTON.FIFTH) {
97
115
  e.preventDefault();
98
116
  e.stopPropagation();
99
117
  if (canRedo.value) {
@@ -108,6 +126,14 @@ const setupMouseListeners = () => {
108
126
  }
109
127
  };
110
128
  watch(useMouseForHistory, setupMouseListeners);
129
+ watch(selection.uuids, updateCurrentHistorySelection);
130
+ watch(mutationsCount, (count) => {
131
+ for (const [index] of selectionAtHistoryIndex) {
132
+ if (index >= count) {
133
+ selectionAtHistoryIndex.delete(index);
134
+ }
135
+ }
136
+ });
111
137
  onMounted(() => {
112
138
  setupMouseListeners();
113
139
  });