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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (428) hide show
  1. package/dist/module.d.mts +1 -1
  2. package/dist/module.json +5 -5
  3. package/dist/module.mjs +5549 -1269
  4. package/dist/modules/drupal/graphql/base/fragment.ParagraphsBlokkliConfigInput.graphql +31 -0
  5. package/dist/modules/drupal/graphql/base/fragment.blokkliProps.graphql +9 -0
  6. package/dist/modules/drupal/graphql/base/fragment.paragraphsBlokkliEditState.graphql +5 -0
  7. package/dist/modules/drupal/graphql/base/fragment.paragraphsFieldItem.graphql +9 -0
  8. package/dist/modules/drupal/graphql/base/query.pbConfig.graphql +1 -10
  9. package/dist/modules/drupal/graphql/base/query.pbEntityConfig.graphql +5 -0
  10. package/dist/modules/drupal/graphql/features/comments.graphql +11 -8
  11. package/dist/modules/drupal/graphql/features/publishNew.graphql +1 -4
  12. package/dist/modules/drupal/graphql/features/scheduler.graphql +31 -0
  13. package/dist/modules/drupal/graphql/features/transform.graphql +9 -1
  14. package/dist/modules/drupal/graphql/features/transform_host.graphql +38 -0
  15. package/dist/modules/drupal/graphql/mutations/set_paragraph_schedule.graphql +15 -0
  16. package/dist/modules/drupal/graphql/mutations/update_host_options.graphql +15 -0
  17. package/dist/modules/drupal/index.d.mts +1 -1
  18. package/dist/modules/drupal/index.mjs +79 -9
  19. package/dist/modules/drupal/runtime/adapter/index.d.ts +3 -0
  20. package/dist/modules/drupal/{adapter/index.mjs → runtime/adapter/index.js} +166 -20
  21. package/dist/runtime/adapter/index.d.ts +111 -1
  22. package/dist/runtime/blokkliPlugins/AddAction/index.vue +27 -3
  23. package/dist/runtime/blokkliPlugins/BlockIndicator/index.vue +65 -0
  24. package/dist/runtime/blokkliPlugins/BlockIndicator/index.vue.d.ts +26 -0
  25. package/dist/runtime/blokkliPlugins/ContextMenu/Menu/index.vue +6 -0
  26. package/dist/runtime/blokkliPlugins/ContextMenu/index.vue +3 -2
  27. package/dist/runtime/blokkliPlugins/ContextMenu/index.vue.d.ts +2 -19
  28. package/dist/runtime/blokkliPlugins/DebugOverlay/index.vue.d.ts +2 -7
  29. package/dist/runtime/blokkliPlugins/DroppableEdit/index.vue +3 -3
  30. package/dist/runtime/blokkliPlugins/DroppableEdit/index.vue.d.ts +2 -19
  31. package/dist/runtime/blokkliPlugins/ItemAction/index.vue +23 -15
  32. package/dist/runtime/blokkliPlugins/ItemAction/index.vue.d.ts +21 -44
  33. package/dist/runtime/blokkliPlugins/ItemDropdown/index.vue +49 -11
  34. package/dist/runtime/blokkliPlugins/ItemDropdown/index.vue.d.ts +29 -15
  35. package/dist/runtime/blokkliPlugins/MenuButton/index.vue.d.ts +3 -3
  36. package/dist/runtime/blokkliPlugins/Sidebar/Detached/index.vue +6 -7
  37. package/dist/runtime/blokkliPlugins/Sidebar/Detached/index.vue.d.ts +2 -51
  38. package/dist/runtime/blokkliPlugins/Sidebar/index.vue +2 -9
  39. package/dist/runtime/blokkliPlugins/Sidebar/index.vue.d.ts +15 -9
  40. package/dist/runtime/blokkliPlugins/ToolbarButton/index.vue.d.ts +1 -1
  41. package/dist/runtime/blokkliPlugins/TourItem/index.vue +10 -5
  42. package/dist/runtime/blokkliPlugins/TourItem/index.vue.d.ts +2 -4
  43. package/dist/runtime/blokkliPlugins/ViewOption/index.vue +6 -3
  44. package/dist/runtime/blokkliPlugins/ViewOption/index.vue.d.ts +4 -3
  45. package/dist/runtime/blokkliPlugins/index.d.ts +8 -7
  46. package/dist/runtime/blokkliPlugins/index.js +15 -13
  47. package/dist/runtime/components/Blocks/Fragment/icon.svg +1 -1
  48. package/dist/runtime/components/Blocks/FromLibrary/index.vue +4 -2
  49. package/dist/runtime/components/BlokkliEditable.vue +34 -16
  50. package/dist/runtime/components/BlokkliEditable.vue.d.ts +2 -1
  51. package/dist/runtime/components/BlokkliField.vue +31 -27
  52. package/dist/runtime/components/BlokkliField.vue.d.ts +61 -17
  53. package/dist/runtime/components/BlokkliItem.vue +2 -2
  54. package/dist/runtime/components/BlokkliItem.vue.d.ts +4 -2
  55. package/dist/runtime/components/BlokkliProvider.vue +60 -45
  56. package/dist/runtime/components/BlokkliProvider.vue.d.ts +45 -7
  57. package/dist/runtime/components/Edit/Actions/index.vue +69 -78
  58. package/dist/runtime/components/Edit/AddListItem/index.vue +2 -5
  59. package/dist/runtime/components/Edit/AddListItem/index.vue.d.ts +1 -1
  60. package/dist/runtime/components/Edit/AddListItemIcon/index.vue +19 -0
  61. package/dist/runtime/components/Edit/AddListItemIcon/index.vue.d.ts +15 -0
  62. package/dist/runtime/components/Edit/AnimationCanvas/index.vue +436 -25
  63. package/dist/runtime/components/Edit/AppMenu/index.vue +5 -5
  64. package/dist/runtime/components/Edit/ArtboardTooltip/index.vue +83 -0
  65. package/dist/runtime/components/Edit/ArtboardTooltip/index.vue.d.ts +32 -0
  66. package/dist/runtime/components/Edit/Banner/index.vue +51 -0
  67. package/dist/runtime/components/Edit/Banner/index.vue.d.ts +18 -0
  68. package/dist/runtime/components/Edit/BlockProxy/index.vue +3 -1
  69. package/dist/runtime/components/Edit/BlokkliErrorBoundary.vue.d.ts +2 -13
  70. package/dist/runtime/components/Edit/Dialog/index.vue +14 -5
  71. package/dist/runtime/components/Edit/Dialog/index.vue.d.ts +4 -2
  72. package/dist/runtime/components/Edit/DiffViewer/State.vue +276 -0
  73. package/dist/runtime/components/Edit/DiffViewer/State.vue.d.ts +16 -0
  74. package/dist/runtime/components/Edit/DraggableList.vue +20 -50
  75. package/dist/runtime/components/Edit/DraggableList.vue.d.ts +7 -7
  76. package/dist/runtime/components/Edit/EditIndicator.vue +118 -44
  77. package/dist/runtime/components/Edit/EditIndicator.vue.d.ts +3 -0
  78. package/dist/runtime/components/Edit/EditProvider.vue +192 -80
  79. package/dist/runtime/components/Edit/EditProvider.vue.d.ts +3 -0
  80. package/dist/runtime/components/Edit/Features/AddList/index.vue +24 -36
  81. package/dist/runtime/components/Edit/Features/Analyze/Overlay/fragment.glsl +58 -0
  82. package/dist/runtime/components/Edit/Features/Analyze/Overlay/index.vue +170 -0
  83. package/dist/runtime/components/Edit/Features/Analyze/Overlay/index.vue.d.ts +9 -0
  84. package/dist/runtime/components/Edit/Features/Analyze/Overlay/vertex.glsl +72 -0
  85. package/dist/runtime/components/Edit/Features/Analyze/Renderer.vue +159 -0
  86. package/dist/runtime/components/Edit/Features/Analyze/Renderer.vue.d.ts +7 -0
  87. package/dist/runtime/components/Edit/Features/Analyze/Results/Results.vue +100 -0
  88. package/dist/runtime/components/Edit/Features/Analyze/Results/Results.vue.d.ts +6 -0
  89. package/dist/runtime/components/Edit/Features/Analyze/Results/ResultsItem.vue +56 -0
  90. package/dist/runtime/components/Edit/Features/Analyze/Results/ResultsItem.vue.d.ts +3 -0
  91. package/dist/runtime/components/Edit/Features/Analyze/Results/ResultsItemNodes.vue +87 -0
  92. package/dist/runtime/components/Edit/Features/Analyze/Results/ResultsItemNodes.vue.d.ts +7 -0
  93. package/dist/runtime/components/Edit/Features/Analyze/Results/ResultsItemNodesTarget.vue +105 -0
  94. package/dist/runtime/components/Edit/Features/Analyze/Results/ResultsItemNodesTarget.vue.d.ts +8 -0
  95. package/dist/runtime/components/Edit/Features/Analyze/Results/Status.vue +18 -0
  96. package/dist/runtime/components/Edit/Features/Analyze/Results/Status.vue.d.ts +8 -0
  97. package/dist/runtime/components/Edit/Features/Analyze/Summary/Chart.vue +92 -0
  98. package/dist/runtime/components/Edit/Features/Analyze/Summary/Chart.vue.d.ts +17 -0
  99. package/dist/runtime/components/Edit/Features/Analyze/Summary/index.vue +77 -0
  100. package/dist/runtime/components/Edit/Features/Analyze/Summary/index.vue.d.ts +6 -0
  101. package/dist/runtime/components/Edit/Features/Analyze/analyzers/axe.d.ts +12 -0
  102. package/dist/runtime/components/Edit/Features/Analyze/analyzers/axe.js +75 -0
  103. package/dist/runtime/components/Edit/Features/Analyze/analyzers/defineAnalyzer.d.ts +4 -0
  104. package/dist/runtime/components/Edit/Features/Analyze/analyzers/defineAnalyzer.js +5 -0
  105. package/dist/runtime/components/Edit/Features/Analyze/analyzers/helpers/Context.d.ts +32 -0
  106. package/dist/runtime/components/Edit/Features/Analyze/analyzers/helpers/Context.js +45 -0
  107. package/dist/runtime/components/Edit/Features/Analyze/analyzers/helpers/collectTextElements.d.ts +5 -0
  108. package/dist/runtime/components/Edit/Features/Analyze/analyzers/helpers/collectTextElements.js +95 -0
  109. package/dist/runtime/components/Edit/Features/Analyze/analyzers/helpers/normalizeArray.d.ts +3 -0
  110. package/dist/runtime/components/Edit/Features/Analyze/analyzers/helpers/normalizeArray.js +13 -0
  111. package/dist/runtime/components/Edit/Features/Analyze/analyzers/index.d.ts +2 -0
  112. package/dist/runtime/components/Edit/Features/Analyze/analyzers/index.js +2 -0
  113. package/dist/runtime/components/Edit/Features/Analyze/analyzers/readability.d.ts +2 -0
  114. package/dist/runtime/components/Edit/Features/Analyze/analyzers/readability.js +165 -0
  115. package/dist/runtime/components/Edit/Features/Analyze/analyzers/types.d.ts +44 -0
  116. package/dist/runtime/components/Edit/Features/Analyze/analyzers/types.js +0 -0
  117. package/dist/runtime/components/Edit/Features/Analyze/helper.d.ts +5 -0
  118. package/dist/runtime/components/Edit/Features/Analyze/helper.js +28 -0
  119. package/dist/runtime/components/Edit/Features/Analyze/index.vue +44 -0
  120. package/dist/runtime/components/Edit/Features/Anchors/Renderer.vue +53 -0
  121. package/dist/runtime/components/Edit/Features/Anchors/index.vue +32 -0
  122. package/dist/runtime/components/Edit/Features/Artboard/Overview/index.vue +25 -13
  123. package/dist/runtime/components/Edit/Features/Artboard/Renderer.vue +299 -0
  124. package/dist/runtime/components/Edit/Features/Artboard/Renderer.vue.d.ts +7 -0
  125. package/dist/runtime/components/Edit/Features/Artboard/index.vue +10 -217
  126. package/dist/runtime/components/Edit/Features/Assistant/index.vue +5 -3
  127. package/dist/runtime/components/Edit/Features/BlockAddList/index.vue +33 -57
  128. package/dist/runtime/components/Edit/Features/BlockScheduler/Dialog/ScheduleSection.vue +154 -0
  129. package/dist/runtime/components/Edit/Features/BlockScheduler/Dialog/ScheduleSection.vue.d.ts +27 -0
  130. package/dist/runtime/components/Edit/Features/BlockScheduler/Dialog/index.vue +222 -0
  131. package/dist/runtime/components/Edit/Features/BlockScheduler/Dialog/index.vue.d.ts +11 -0
  132. package/dist/runtime/components/Edit/Features/BlockScheduler/index.vue +96 -0
  133. package/dist/runtime/components/Edit/Features/BlockScheduler/index.vue.d.ts +2 -0
  134. package/dist/runtime/components/Edit/Features/Clipboard/index.vue +177 -46
  135. package/dist/runtime/components/Edit/Features/CommandPalette/Palette/Item/index.vue +51 -0
  136. package/dist/runtime/components/Edit/Features/CommandPalette/Palette/Item/index.vue.d.ts +17 -0
  137. package/dist/runtime/components/Edit/Features/CommandPalette/Palette/index.vue +48 -117
  138. package/dist/runtime/components/Edit/Features/CommandPalette/index.vue +5 -2
  139. package/dist/runtime/components/Edit/Features/Comments/AddForm/index.vue +35 -20
  140. package/dist/runtime/components/Edit/Features/Comments/AddForm/index.vue.d.ts +5 -3
  141. package/dist/runtime/components/Edit/Features/Comments/CommentInput/index.vue +29 -0
  142. package/dist/runtime/components/Edit/Features/Comments/CommentInput/index.vue.d.ts +13 -0
  143. package/dist/runtime/components/Edit/Features/Comments/Overlay/Item/index.vue +22 -16
  144. package/dist/runtime/components/Edit/Features/Comments/Overlay/Item/index.vue.d.ts +1 -0
  145. package/dist/runtime/components/Edit/Features/Comments/Overlay/index.vue +15 -6
  146. package/dist/runtime/components/Edit/Features/Comments/index.vue +21 -9
  147. package/dist/runtime/components/Edit/Features/Conversions/index.vue +16 -21
  148. package/dist/runtime/components/Edit/Features/Debug/Rects/index.vue +26 -35
  149. package/dist/runtime/components/Edit/Features/Debug/Renderer.vue +240 -0
  150. package/dist/runtime/components/Edit/Features/Debug/Renderer.vue.d.ts +6 -0
  151. package/dist/runtime/components/Edit/Features/Debug/Viewport/index.vue +14 -0
  152. package/dist/runtime/components/Edit/Features/Debug/index.vue +7 -162
  153. package/dist/runtime/components/Edit/Features/Delete/index.vue +1 -1
  154. package/dist/runtime/components/Edit/Features/Diff/DiffView/index.vue +13 -190
  155. package/dist/runtime/components/Edit/Features/Diff/index.vue +2 -2
  156. package/dist/runtime/components/Edit/Features/DraggingOverlay/DragItems/index.vue +18 -10
  157. package/dist/runtime/components/Edit/Features/DraggingOverlay/DropTargets/fragment.glsl +8 -2
  158. package/dist/runtime/components/Edit/Features/DraggingOverlay/DropTargets/index.vue +111 -121
  159. package/dist/runtime/components/Edit/Features/DraggingOverlay/DropTargets/index.vue.d.ts +3 -132
  160. package/dist/runtime/components/Edit/Features/DraggingOverlay/DropTargets/vertex.glsl +2 -1
  161. package/dist/runtime/components/Edit/Features/DraggingOverlay/index.vue +87 -61
  162. package/dist/runtime/components/Edit/Features/Duplicate/index.vue +6 -8
  163. package/dist/runtime/components/Edit/Features/Edit/index.vue +16 -22
  164. package/dist/runtime/components/Edit/Features/EditForm/Frame/index.vue +3 -3
  165. package/dist/runtime/components/Edit/Features/EditForm/index.vue +10 -9
  166. package/dist/runtime/components/Edit/Features/EditableField/Overlay/Frame/index.vue +69 -4
  167. package/dist/runtime/components/Edit/Features/EditableField/Overlay/Frame/index.vue.d.ts +2 -2
  168. package/dist/runtime/components/Edit/Features/EditableField/Overlay/Plaintext/index.vue +13 -9
  169. package/dist/runtime/components/Edit/Features/EditableField/Overlay/index.vue +45 -87
  170. package/dist/runtime/components/Edit/Features/EditableField/Overlay/index.vue.d.ts +2 -2
  171. package/dist/runtime/components/Edit/Features/EditableField/index.vue +45 -43
  172. package/dist/runtime/components/Edit/Features/EditableMask/index.vue +3 -20
  173. package/dist/runtime/components/Edit/Features/EntityTitle/index.vue +33 -1
  174. package/dist/runtime/components/Edit/Features/Fragments/Dialog/index.vue +11 -9
  175. package/dist/runtime/components/Edit/Features/Fragments/index.vue +8 -6
  176. package/dist/runtime/components/Edit/Features/History/index.vue +39 -13
  177. package/dist/runtime/components/Edit/Features/Hover/Overlay/fragment.glsl +139 -0
  178. package/dist/runtime/components/Edit/Features/Hover/Overlay/index.vue +261 -0
  179. package/dist/runtime/components/Edit/Features/Hover/Overlay/index.vue.d.ts +6 -0
  180. package/dist/runtime/components/Edit/Features/Hover/Overlay/vertex.glsl +117 -0
  181. package/dist/runtime/components/Edit/Features/Hover/index.vue +25 -0
  182. package/dist/runtime/components/Edit/Features/Hover/index.vue.d.ts +2 -0
  183. package/dist/runtime/components/Edit/Features/ImportExisting/Dialog/index.vue +6 -2
  184. package/dist/runtime/components/Edit/Features/ImportExisting/index.vue +3 -2
  185. package/dist/runtime/components/Edit/Features/Library/EditReusable/index.vue +5 -7
  186. package/dist/runtime/components/Edit/Features/Library/LibraryDialog/index.vue +19 -27
  187. package/dist/runtime/components/Edit/Features/Library/ReusableDialog/index.vue +32 -28
  188. package/dist/runtime/components/Edit/Features/Library/index.vue +40 -32
  189. package/dist/runtime/components/Edit/Features/MediaLibrary/Library/index.vue +11 -11
  190. package/dist/runtime/components/Edit/Features/MediaLibrary/index.vue +15 -12
  191. package/dist/runtime/components/Edit/Features/MultiSelect/Overlay/fragment.glsl +1 -1
  192. package/dist/runtime/components/Edit/Features/MultiSelect/Overlay/index.vue +44 -32
  193. package/dist/runtime/components/Edit/Features/MultiSelect/Overlay/vertex.glsl +1 -1
  194. package/dist/runtime/components/Edit/Features/MultiSelect/index.vue +10 -18
  195. package/dist/runtime/components/Edit/Features/Options/Form/Checkbox/index.vue +3 -2
  196. package/dist/runtime/components/Edit/Features/Options/Form/Checkbox/index.vue.d.ts +2 -0
  197. package/dist/runtime/components/Edit/Features/Options/Form/Group.vue.d.ts +2 -11
  198. package/dist/runtime/components/Edit/Features/Options/Form/Item.vue +14 -3
  199. package/dist/runtime/components/Edit/Features/Options/Form/Item.vue.d.ts +0 -1
  200. package/dist/runtime/components/Edit/Features/Options/Form/Radios/index.vue +37 -19
  201. package/dist/runtime/components/Edit/Features/Options/Form/Radios/index.vue.d.ts +8 -2
  202. package/dist/runtime/components/Edit/Features/Options/Form/index.vue +88 -42
  203. package/dist/runtime/components/Edit/Features/Options/Form/index.vue.d.ts +5 -5
  204. package/dist/runtime/components/Edit/Features/Options/index.vue +35 -11
  205. package/dist/runtime/components/Edit/Features/Ownership/Renderer.vue +35 -0
  206. package/dist/runtime/components/Edit/Features/Ownership/Renderer.vue.d.ts +6 -0
  207. package/dist/runtime/components/Edit/Features/Ownership/index.vue +7 -25
  208. package/dist/runtime/components/Edit/Features/PreviewGrant/index.vue +3 -3
  209. package/dist/runtime/components/Edit/Features/ProxyView/index.vue +5 -1
  210. package/dist/runtime/components/Edit/Features/Publish/Dialog/Item.vue +41 -14
  211. package/dist/runtime/components/Edit/Features/Publish/Dialog/Item.vue.d.ts +2 -0
  212. package/dist/runtime/components/Edit/Features/Publish/Dialog/PublishOption.vue +47 -0
  213. package/dist/runtime/components/Edit/Features/Publish/Dialog/PublishOption.vue.d.ts +19 -0
  214. package/dist/runtime/components/Edit/Features/Publish/Dialog/Summary.vue +83 -0
  215. package/dist/runtime/components/Edit/Features/Publish/Dialog/Summary.vue.d.ts +9 -0
  216. package/dist/runtime/components/Edit/Features/Publish/Dialog/index.vue +439 -123
  217. package/dist/runtime/components/Edit/Features/Publish/Dialog/index.vue.d.ts +3 -14
  218. package/dist/runtime/components/Edit/Features/Publish/index.vue +57 -24
  219. package/dist/runtime/components/Edit/Features/ResponsivePreview/Frame/index.vue.d.ts +2 -13
  220. package/dist/runtime/components/Edit/Features/Revert/index.vue +3 -3
  221. package/dist/runtime/components/Edit/Features/Search/Overlay/Results/Page/index.vue +15 -15
  222. package/dist/runtime/components/Edit/Features/Search/index.vue +7 -3
  223. package/dist/runtime/components/Edit/Features/Selection/AddButtons/Overlay/index.vue +85 -0
  224. package/dist/runtime/components/Edit/Features/{CommandPalette/Palette/Group → Selection/AddButtons/Overlay}/index.vue.d.ts +8 -13
  225. package/dist/runtime/components/Edit/Features/Selection/AddButtons/Renderer/fragment.glsl +106 -0
  226. package/dist/runtime/components/Edit/Features/Selection/AddButtons/Renderer/index.vue +440 -0
  227. package/dist/runtime/components/Edit/Features/Selection/AddButtons/Renderer/index.vue.d.ts +32 -0
  228. package/dist/runtime/components/Edit/Features/Selection/AddButtons/Renderer/vertex.glsl +102 -0
  229. package/dist/runtime/components/Edit/Features/Selection/AddButtons/index.vue +387 -0
  230. package/dist/runtime/components/Edit/Features/Selection/AddButtons/index.vue.d.ts +6 -0
  231. package/dist/runtime/components/Edit/Features/Selection/Overlay/fragment.glsl +15 -10
  232. package/dist/runtime/components/Edit/Features/Selection/Overlay/index.vue +105 -25
  233. package/dist/runtime/components/Edit/Features/Selection/Overlay/index.vue.d.ts +5 -3
  234. package/dist/runtime/components/Edit/Features/Selection/Overlay/vertex.glsl +12 -3
  235. package/dist/runtime/components/Edit/Features/Selection/OverlayFallback/index.vue +2 -2
  236. package/dist/runtime/components/Edit/Features/Selection/index.vue +135 -25
  237. package/dist/runtime/components/Edit/Features/Settings/Dialog/FeatureSetting/index.vue +12 -17
  238. package/dist/runtime/components/Edit/Features/Settings/index.vue +11 -25
  239. package/dist/runtime/components/Edit/Features/Structure/List/Field/index.vue +2 -2
  240. package/dist/runtime/components/Edit/Features/Structure/List/Item/index.vue +13 -6
  241. package/dist/runtime/components/Edit/Features/Theme/Color/index.vue +5 -1
  242. package/dist/runtime/components/Edit/Features/Theme/index.vue +2 -1
  243. package/dist/runtime/components/Edit/Features/TouchActionBar/index.vue +3 -2
  244. package/dist/runtime/components/Edit/Features/Tour/Overlay/index.vue +3 -0
  245. package/dist/runtime/components/Edit/Features/Transform/Dialog/index.vue +198 -0
  246. package/dist/runtime/components/Edit/Features/Transform/Dialog/index.vue.d.ts +13 -0
  247. package/dist/runtime/components/Edit/Features/Transform/index.vue +156 -70
  248. package/dist/runtime/components/Edit/Features/Translations/Banner/index.vue +17 -11
  249. package/dist/runtime/components/Edit/Features/Translations/index.vue +20 -23
  250. package/dist/runtime/components/Edit/Features/Validations/SidebarItem/index.vue +5 -5
  251. package/dist/runtime/components/Edit/Features/index.vue +17 -7
  252. package/dist/runtime/components/Edit/Form/Datepicker/index.vue +198 -0
  253. package/dist/runtime/components/Edit/Form/Datepicker/index.vue.d.ts +15 -0
  254. package/dist/runtime/components/Edit/Form/Group/index.vue.d.ts +2 -4
  255. package/dist/runtime/components/Edit/Form/Item/index.vue.d.ts +2 -4
  256. package/dist/runtime/components/Edit/Form/Radio/index.vue +33 -0
  257. package/dist/runtime/components/Edit/Form/Radio/index.vue.d.ts +20 -0
  258. package/dist/runtime/components/Edit/Form/RadioTabs/index.vue +37 -0
  259. package/dist/runtime/components/Edit/Form/RadioTabs/index.vue.d.ts +22 -0
  260. package/dist/runtime/components/Edit/Form/Select/index.vue +29 -0
  261. package/dist/runtime/components/Edit/Form/Select/index.vue.d.ts +20 -0
  262. package/dist/runtime/components/Edit/Form/Text/index.vue +34 -0
  263. package/dist/runtime/components/Edit/Form/Text/index.vue.d.ts +20 -0
  264. package/dist/runtime/components/Edit/Form/Textarea/index.vue +13 -6
  265. package/dist/runtime/components/Edit/Form/Textarea/index.vue.d.ts +4 -0
  266. package/dist/runtime/components/Edit/Form/Toggle/index.vue +4 -3
  267. package/dist/runtime/components/Edit/Form/Toggle/index.vue.d.ts +12 -2
  268. package/dist/runtime/components/Edit/FormOverlay/index.vue +1 -1
  269. package/dist/runtime/components/Edit/FormOverlay/index.vue.d.ts +3 -2
  270. package/dist/runtime/components/Edit/Indicators/index.vue +123 -0
  271. package/dist/runtime/components/Edit/Indicators/index.vue.d.ts +2 -0
  272. package/dist/runtime/components/Edit/InfoBox/index.vue +6 -2
  273. package/dist/runtime/components/Edit/InfoBox/index.vue.d.ts +12 -2
  274. package/dist/runtime/components/Edit/ItemIcon/index.vue +2 -1
  275. package/dist/runtime/components/Edit/Konami/Game/PixelGrid.vue +66 -0
  276. package/dist/runtime/components/Edit/Konami/Game/PixelGrid.vue.d.ts +7 -0
  277. package/dist/runtime/components/Edit/Konami/Game/blokkli.png +0 -0
  278. package/dist/runtime/components/Edit/Konami/Game/charmap.d.ts +2 -0
  279. package/dist/runtime/components/Edit/Konami/Game/charmap.js +168 -0
  280. package/dist/runtime/components/Edit/Konami/Game/index.vue +752 -0
  281. package/dist/runtime/components/Edit/Konami/Game/index.vue.d.ts +6 -0
  282. package/dist/runtime/components/Edit/Konami/Game/textRendering.d.ts +8 -0
  283. package/dist/runtime/components/Edit/Konami/Game/textRendering.js +138 -0
  284. package/dist/runtime/components/Edit/Konami/Game/useIconRendering.d.ts +9 -0
  285. package/dist/runtime/components/Edit/Konami/Game/useIconRendering.js +130 -0
  286. package/dist/runtime/components/Edit/Konami/index.vue +44 -0
  287. package/dist/runtime/components/Edit/Konami/index.vue.d.ts +2 -0
  288. package/dist/runtime/components/Edit/Loading/index.vue +6 -2
  289. package/dist/runtime/components/Edit/Loading/index.vue.d.ts +2 -0
  290. package/dist/runtime/components/Edit/Messages/index.vue +8 -3
  291. package/dist/runtime/components/Edit/PluginConfigForm/Checkbox/index.vue +17 -0
  292. package/dist/runtime/components/Edit/PluginConfigForm/Checkbox/index.vue.d.ts +11 -0
  293. package/dist/runtime/components/Edit/PluginConfigForm/Options/index.vue +37 -0
  294. package/dist/runtime/components/Edit/PluginConfigForm/Options/index.vue.d.ts +11 -0
  295. package/dist/runtime/components/Edit/PluginConfigForm/Text/index.vue +43 -0
  296. package/dist/runtime/components/Edit/PluginConfigForm/Text/index.vue.d.ts +11 -0
  297. package/dist/runtime/components/Edit/PluginConfigForm/index.vue +57 -0
  298. package/dist/runtime/components/Edit/PluginConfigForm/index.vue.d.ts +16 -0
  299. package/dist/runtime/components/Edit/PreviewProvider.vue +3 -4
  300. package/dist/runtime/components/Edit/RelativeTime/index.vue +3 -2
  301. package/dist/runtime/components/Edit/RelativeTime/index.vue.d.ts +2 -2
  302. package/dist/runtime/components/Edit/Resizable/index.vue.d.ts +1 -1
  303. package/dist/runtime/components/Edit/ScaleToFit/index.vue.d.ts +1 -1
  304. package/dist/runtime/components/Edit/ScheduleDate/index.vue +131 -0
  305. package/dist/runtime/components/Edit/ScheduleDate/index.vue.d.ts +23 -0
  306. package/dist/runtime/components/Edit/ScrollBoundary/index.vue.d.ts +2 -7
  307. package/dist/runtime/components/Edit/ShortcutIndicator/index.vue +11 -3
  308. package/dist/runtime/components/Edit/Sortli/index.vue.d.ts +1 -1
  309. package/dist/runtime/components/Edit/SystemRequirements/index.vue +3 -3
  310. package/dist/runtime/components/Edit/Toolbar/index.vue +3 -2
  311. package/dist/runtime/components/Edit/Transition/Height.vue +95 -0
  312. package/dist/runtime/components/Edit/Transition/Height.vue.d.ts +36 -0
  313. package/dist/runtime/components/Edit/Transition/index.vue +41 -0
  314. package/dist/runtime/components/Edit/Transition/index.vue.d.ts +19 -0
  315. package/dist/runtime/components/Edit/ViewportBlockingRect/index.vue.d.ts +2 -7
  316. package/dist/runtime/components/Edit/index.d.ts +28 -15
  317. package/dist/runtime/components/Edit/index.js +54 -28
  318. package/dist/runtime/composables/defineBlokkli.js +16 -3
  319. package/dist/runtime/composables/defineBlokkliFeature.d.ts +4 -7
  320. package/dist/runtime/composables/defineBlokkliFragment.js +8 -1
  321. package/dist/runtime/composables/defineBlokkliProvider.d.ts +11 -0
  322. package/dist/runtime/composables/defineBlokkliProvider.js +46 -0
  323. package/dist/runtime/composables/useBlokkliHelper.d.ts +19 -0
  324. package/dist/runtime/composables/useBlokkliHelper.js +95 -0
  325. package/dist/runtime/constants/index.d.ts +3 -0
  326. package/dist/runtime/constants/index.js +3 -0
  327. package/dist/runtime/css/output.css +1 -1
  328. package/dist/runtime/helpers/addElementClasses.d.ts +2 -0
  329. package/dist/runtime/helpers/addElementClasses.js +24 -0
  330. package/dist/runtime/helpers/animationProvider.d.ts +38 -2
  331. package/dist/runtime/helpers/animationProvider.js +188 -47
  332. package/dist/runtime/helpers/bundles/index.d.ts +1 -0
  333. package/dist/runtime/helpers/bundles/index.js +4 -0
  334. package/dist/runtime/helpers/composables/defineRenderer.d.ts +8 -0
  335. package/dist/runtime/helpers/composables/defineRenderer.js +8 -0
  336. package/dist/runtime/helpers/composables/useBlockRegistration.d.ts +5 -0
  337. package/dist/runtime/helpers/composables/useBlockRegistration.js +23 -0
  338. package/dist/runtime/helpers/composables/useDelayedIntersectionObserver.d.ts +1 -1
  339. package/dist/runtime/helpers/composables/useDelayedIntersectionObserver.js +3 -2
  340. package/dist/runtime/helpers/composables/useStateBasedCache.d.ts +4 -0
  341. package/dist/runtime/helpers/composables/useStateBasedCache.js +13 -0
  342. package/dist/runtime/helpers/composables/useStickyToolbar.d.ts +23 -0
  343. package/dist/runtime/helpers/composables/useStickyToolbar.js +233 -0
  344. package/dist/runtime/helpers/definitionProvider.d.ts +3 -2
  345. package/dist/runtime/helpers/definitionProvider.js +17 -0
  346. package/dist/runtime/helpers/dom/index.d.ts +60 -0
  347. package/dist/runtime/helpers/dom/index.js +48 -0
  348. package/dist/runtime/helpers/domProvider.d.ts +58 -17
  349. package/dist/runtime/helpers/domProvider.js +320 -245
  350. package/dist/runtime/helpers/dropTargets/index.d.ts +6 -0
  351. package/dist/runtime/helpers/dropTargets/index.js +49 -0
  352. package/dist/runtime/helpers/eventBus.d.ts +1 -1
  353. package/dist/runtime/helpers/eventBus.js +2 -2
  354. package/dist/runtime/helpers/index.d.ts +10 -14
  355. package/dist/runtime/helpers/index.js +58 -121
  356. package/dist/runtime/helpers/indicatorsProvider.d.ts +10 -0
  357. package/dist/runtime/helpers/indicatorsProvider.js +23 -0
  358. package/dist/runtime/helpers/keyboardProvider.d.ts +2 -0
  359. package/dist/runtime/helpers/keyboardProvider.js +17 -1
  360. package/dist/runtime/helpers/pluginProvider.d.ts +10 -0
  361. package/dist/runtime/helpers/pluginProvider.js +33 -0
  362. package/dist/runtime/helpers/providers/blocks.d.ts +10 -0
  363. package/dist/runtime/helpers/providers/blocks.js +91 -0
  364. package/dist/runtime/helpers/providers/directive.d.ts +25 -0
  365. package/dist/runtime/helpers/providers/directive.js +208 -0
  366. package/dist/runtime/helpers/providers/element.d.ts +6 -0
  367. package/dist/runtime/helpers/providers/element.js +35 -0
  368. package/dist/runtime/helpers/providers/fields.d.ts +8 -0
  369. package/dist/runtime/helpers/providers/fields.js +47 -0
  370. package/dist/runtime/helpers/renderCycle.d.ts +1 -0
  371. package/dist/runtime/helpers/renderCycle.js +10 -0
  372. package/dist/runtime/helpers/runtimeHelpers/index.js +15 -12
  373. package/dist/runtime/helpers/selectionProvider.d.ts +27 -11
  374. package/dist/runtime/helpers/selectionProvider.js +79 -74
  375. package/dist/runtime/helpers/stateProvider.d.ts +12 -2
  376. package/dist/runtime/helpers/stateProvider.js +164 -20
  377. package/dist/runtime/helpers/storageProvider.d.ts +5 -3
  378. package/dist/runtime/helpers/storageProvider.js +61 -4
  379. package/dist/runtime/helpers/symbols.d.ts +2 -0
  380. package/dist/runtime/helpers/symbols.js +2 -0
  381. package/dist/runtime/helpers/textProvider.js +6 -0
  382. package/dist/runtime/helpers/themeProvider.d.ts +4 -1
  383. package/dist/runtime/helpers/themeProvider.js +28 -15
  384. package/dist/runtime/helpers/transform.js +1 -3
  385. package/dist/runtime/helpers/typesProvider.js +10 -26
  386. package/dist/runtime/helpers/uiProvider.d.ts +18 -3
  387. package/dist/runtime/helpers/uiProvider.js +114 -61
  388. package/dist/runtime/helpers/useTransitionedValue.d.ts +18 -0
  389. package/dist/runtime/helpers/useTransitionedValue.js +57 -0
  390. package/dist/runtime/helpers/webgl/index.d.ts +11 -2
  391. package/dist/runtime/helpers/webgl/index.js +162 -7
  392. package/dist/runtime/icons/anchor.svg +1 -0
  393. package/dist/runtime/icons/arrow-left.svg +1 -1
  394. package/dist/runtime/icons/arrow-right.svg +1 -1
  395. package/dist/runtime/icons/arrow-top-right.svg +1 -0
  396. package/dist/runtime/icons/calendar-clock.svg +1 -0
  397. package/dist/runtime/icons/calendar.svg +1 -0
  398. package/dist/runtime/icons/chart.svg +1 -0
  399. package/dist/runtime/icons/clock.svg +1 -0
  400. package/dist/runtime/icons/comment_add.svg +1 -5
  401. package/dist/runtime/icons/copy.svg +1 -0
  402. package/dist/runtime/icons/cursor-move.svg +1 -1
  403. package/dist/runtime/icons/delete.svg +1 -8
  404. package/dist/runtime/icons/diff.svg +1 -1
  405. package/dist/runtime/icons/duplicate.svg +1 -12
  406. package/dist/runtime/icons/edit.svg +1 -8
  407. package/dist/runtime/icons/eye-off.svg +1 -0
  408. package/dist/runtime/icons/eye.svg +1 -1
  409. package/dist/runtime/icons/info.svg +1 -1
  410. package/dist/runtime/icons/link.svg +1 -0
  411. package/dist/runtime/icons/reusable.svg +1 -5
  412. package/dist/runtime/icons/speedometer.svg +1 -0
  413. package/dist/runtime/plugins/blokkliDirectives.js +109 -0
  414. package/dist/runtime/types/blokkOptions.d.ts +8 -0
  415. package/dist/runtime/types/index.d.ts +278 -42
  416. package/dist/runtime/types/theme.d.ts +2 -1
  417. package/dist/shared/{editor.gz_ac6uT.d.mts → editor.CKsrTpc1.d.mts} +1 -1
  418. package/package.json +55 -38
  419. package/dist/modules/drupal/adapter/index.d.mts +0 -6
  420. package/dist/runtime/components/Edit/DragInteractions/index.vue +0 -364
  421. package/dist/runtime/components/Edit/Features/CommandPalette/Palette/Group/index.vue +0 -51
  422. package/dist/runtime/components/Edit/Features/FieldAreas/Overlay/index.vue +0 -22
  423. package/dist/runtime/components/Edit/Features/FieldAreas/index.vue +0 -41
  424. package/dist/runtime/plugins/blokkliEditable.js +0 -31
  425. /package/dist/runtime/components/Edit/{DragInteractions → Features/Analyze}/index.vue.d.ts +0 -0
  426. /package/dist/runtime/components/Edit/Features/{FieldAreas/Overlay/index.vue.d.ts → Anchors/Renderer.vue.d.ts} +0 -0
  427. /package/dist/runtime/components/Edit/Features/{FieldAreas → Anchors}/index.vue.d.ts +0 -0
  428. /package/dist/runtime/plugins/{blokkliEditable.d.ts → blokkliDirectives.d.ts} +0 -0
@@ -0,0 +1,139 @@
1
+ precision highp float;
2
+
3
+ varying vec4 v_quad;
4
+ varying vec4 v_rect_radius;
5
+ varying vec2 v_rect_size;
6
+ varying vec2 v_rect_center;
7
+ varying float v_rect_type;
8
+ varying vec2 v_quad_artboard_pos;
9
+
10
+ uniform float u_dpi;
11
+ uniform float u_scale;
12
+ uniform float u_offset_x;
13
+ uniform float u_offset_y;
14
+ uniform vec2 u_resolution;
15
+ uniform vec3 u_color_mono;
16
+ uniform vec3 u_color_accent;
17
+ uniform vec3 u_color_teal;
18
+ uniform vec3 u_color_white;
19
+ uniform vec3 u_color_lime;
20
+
21
+ int pseudoQuadrant(vec2 p) {
22
+ return int(floor(step(0.0, p.x) + 2.0 * step(0.0, -p.y)));
23
+ }
24
+
25
+ float sdRoundBox(vec2 p, vec2 b, vec4 radii) {
26
+ int idx = pseudoQuadrant(p);
27
+ float cr;
28
+ if (idx == 0) cr = radii[0];
29
+ else if (idx == 1) cr = radii[1];
30
+ else if (idx == 2) cr = radii[3];
31
+ else cr = radii[2];
32
+ vec2 q = abs(p) - b + cr;
33
+ return min(max(q.x, q.y), 0.0) + length(max(q, 0.0)) - cr;
34
+ }
35
+
36
+ void main() {
37
+ vec2 size = v_rect_size;
38
+ vec4 u_cornerRadii = min(v_rect_radius, min(size.x, size.y) / 2.0);
39
+ vec4 r = u_cornerRadii;
40
+
41
+ vec2 posRelativeToQuad = gl_FragCoord.xy - v_rect_center;
42
+
43
+ float mainDist = sdRoundBox(posRelativeToQuad, size / 2.0, r);
44
+
45
+ // For editable fields (type 2), render both fill and solid border
46
+ if (v_rect_type > 1.5 && v_rect_type < 2.5) {
47
+ float u_edgeSoftness = 1.0;
48
+ float borderThickness = 1.5 * u_dpi;
49
+ float u_borderSoftness = 1.0;
50
+
51
+ // Render fill
52
+ float fillAlpha = 1.0 - smoothstep(-u_edgeSoftness, 0.0, mainDist);
53
+ vec4 fillColor = vec4(u_color_teal, 0.2);
54
+
55
+ // Render solid border (non-dashed)
56
+ float borderAlpha =
57
+ 1.0 - smoothstep(-u_borderSoftness, 0.0, abs(mainDist) - borderThickness);
58
+ vec4 borderColor = vec4(u_color_teal, 1.0);
59
+
60
+ // Combine fill and border
61
+ vec4 combined = mix(
62
+ vec4(fillColor.rgb, fillAlpha * fillColor.a),
63
+ borderColor,
64
+ borderAlpha * borderColor.a
65
+ );
66
+
67
+ gl_FragColor = combined;
68
+ return;
69
+ }
70
+
71
+ // For blocks (type 0, 1, and 3), render border
72
+ float borderThickness = 1.5 * u_dpi;
73
+ float u_borderSoftness = 1.0;
74
+
75
+ float borderAlpha =
76
+ 1.0 - smoothstep(-u_borderSoftness, 0.0, abs(mainDist) - borderThickness);
77
+
78
+ // Select color based on type: 0 = mono, 1 = accent, 3 = white (inverted), 4 = lime (library)
79
+ vec3 color = u_color_mono;
80
+ if (v_rect_type > 3.5) {
81
+ color = u_color_lime;
82
+ } else if (v_rect_type > 2.5) {
83
+ color = u_color_white;
84
+ } else if (v_rect_type > 0.5) {
85
+ color = u_color_accent;
86
+ }
87
+
88
+ // Apply dashed pattern for all blocks
89
+ // Calculate actual perimeter distance for proper dashing
90
+ vec2 halfSize = size / 2.0;
91
+ vec2 p = posRelativeToQuad;
92
+ vec2 absP = abs(p);
93
+
94
+ // Determine which edge/corner we're on and calculate perimeter distance
95
+ float perimeterDistance = 0.0;
96
+
97
+ // Check which edge we're closest to
98
+ float dx = absP.x - halfSize.x;
99
+ float dy = absP.y - halfSize.y;
100
+
101
+ if (dy > dx) {
102
+ // Top or bottom edge
103
+ if (p.y > 0.0) {
104
+ // Bottom edge: start at bottom-left, go right
105
+ perimeterDistance = size.x + size.y + (p.x + halfSize.x);
106
+ } else {
107
+ // Top edge: start at top-right, go left
108
+ perimeterDistance = size.x + (halfSize.x - p.x);
109
+ }
110
+ } else {
111
+ // Left or right edge
112
+ if (p.x > 0.0) {
113
+ // Right edge: start at top-right, go down
114
+ perimeterDistance = p.y + halfSize.y;
115
+ } else {
116
+ // Left edge: start at bottom-left, go up
117
+ perimeterDistance = size.x + size.y + size.x + (halfSize.y - p.y);
118
+ }
119
+ }
120
+
121
+ float dashWidth = 7.0 * u_dpi;
122
+ float dashGap = 7.0 * u_dpi;
123
+ float dashCycle = dashWidth + dashGap;
124
+
125
+ float dashPosition = mod(perimeterDistance, dashCycle);
126
+ float dashFactor = step(dashPosition, dashWidth);
127
+
128
+ // Only show dashes
129
+ borderAlpha *= dashFactor;
130
+
131
+ vec4 borderColor = vec4(color, 1.0);
132
+ vec4 finalColor = mix(
133
+ vec4(0.0, 0.0, 0.0, 0.0),
134
+ borderColor,
135
+ borderAlpha * borderColor.a
136
+ );
137
+
138
+ gl_FragColor = finalColor;
139
+ }
@@ -0,0 +1,261 @@
1
+ <template>
2
+ <div />
3
+ </template>
4
+
5
+ <script setup>
6
+ import onBlokkliEvent from "#blokkli/helpers/composables/onBlokkliEvent";
7
+ import defineRenderer from "#blokkli/helpers/composables/defineRenderer";
8
+ import { useBlokkli, computed, ref, watch } from "#imports";
9
+ import { setBuffersAndAttributes, drawBufferInfo, setUniforms } from "twgl.js";
10
+ import vs from "./vertex.glsl?raw";
11
+ import fs from "./fragment.glsl?raw";
12
+ import { RectangleBufferCollector } from "#blokkli/helpers/webgl";
13
+ import { toShaderColor, isInsideRect } from "#blokkli/helpers";
14
+ const props = defineProps({
15
+ gl: { type: null, required: true }
16
+ });
17
+ const { animation, theme, dom, selection, state, ui, directive, blocks } = useBlokkli();
18
+ const programInfo = animation.registerProgram("hover", props.gl, [vs, fs]);
19
+ const MAX_RECTS = 11;
20
+ function getDeepestUuid(uuids) {
21
+ if (uuids.length === 0) {
22
+ return null;
23
+ }
24
+ let deepestUuid = uuids[0];
25
+ let maxLevel = state.getNestingLevel(deepestUuid);
26
+ for (let i = 1; i < uuids.length; i++) {
27
+ const uuid = uuids[i];
28
+ const level = state.getNestingLevel(uuid);
29
+ if (level > maxLevel) {
30
+ maxLevel = level;
31
+ deepestUuid = uuid;
32
+ }
33
+ }
34
+ return deepestUuid;
35
+ }
36
+ function createHoverState() {
37
+ return {
38
+ positions: new Float32Array(MAX_RECTS * 4),
39
+ radii: new Float32Array(MAX_RECTS * 4),
40
+ types: new Float32Array(MAX_RECTS),
41
+ visible: new Float32Array(MAX_RECTS)
42
+ };
43
+ }
44
+ const hoverState = createHoverState();
45
+ let previousHoveredUuids = [];
46
+ let previousDeepestUuid = null;
47
+ let previousEditableFieldRect = null;
48
+ const isHoveringEditableField = ref(false);
49
+ const isHoveringSelectedBlock = ref(false);
50
+ class HoverRectangleBufferCollector extends RectangleBufferCollector {
51
+ }
52
+ const collector = new HoverRectangleBufferCollector(props.gl);
53
+ for (let i = 0; i < MAX_RECTS; i++) {
54
+ collector.addRectangle(
55
+ {
56
+ id: `hover-rect-${i}`,
57
+ x: 0,
58
+ y: 0,
59
+ width: 100,
60
+ height: 100,
61
+ radius: [0, 0, 0, 0]
62
+ },
63
+ 0
64
+ );
65
+ }
66
+ const bufferInfo = collector.createBufferInfo();
67
+ function resetHoverState() {
68
+ previousHoveredUuids = [];
69
+ previousDeepestUuid = null;
70
+ previousEditableFieldRect = null;
71
+ hoverState.visible.fill(0);
72
+ isHoveringEditableField.value = false;
73
+ isHoveringSelectedBlock.value = false;
74
+ }
75
+ watch(selection.isChangingOptions, (isChanging) => {
76
+ if (!isChanging) {
77
+ resetHoverState();
78
+ }
79
+ });
80
+ watch(selection.uuids, () => {
81
+ resetHoverState();
82
+ });
83
+ function updateHoverState(mouseX, mouseY, offset, scale, artboardSize) {
84
+ const artboardRect = {
85
+ x: offset.x,
86
+ y: offset.y,
87
+ width: artboardSize.width * scale,
88
+ height: artboardSize.height * scale
89
+ };
90
+ const isOutsideArtboard = mouseX < artboardRect.x || mouseX > artboardRect.x + artboardRect.width || mouseY < artboardRect.y || mouseY > artboardRect.y + artboardRect.height;
91
+ if (isOutsideArtboard) {
92
+ const needsUpdate = previousHoveredUuids.length > 0 || previousEditableFieldRect !== null || isHoveringEditableField.value || isHoveringSelectedBlock.value;
93
+ hoverState.visible.fill(0);
94
+ isHoveringEditableField.value = false;
95
+ isHoveringSelectedBlock.value = false;
96
+ previousHoveredUuids = [];
97
+ previousDeepestUuid = null;
98
+ previousEditableFieldRect = null;
99
+ return needsUpdate;
100
+ }
101
+ const artboardMouseX = mouseX / scale - offset.x / scale;
102
+ const artboardMouseY = mouseY / scale - offset.y / scale;
103
+ const hoveredUuids = [];
104
+ const visibleBlocks = dom.getVisibleBlocks();
105
+ for (let i = 0; i < visibleBlocks.length; i++) {
106
+ const uuid = visibleBlocks[i];
107
+ if (!uuid) continue;
108
+ const rawRect = dom.getBlockRect(uuid);
109
+ if (!rawRect) continue;
110
+ const rect = ui.getViewportRelativeRect(rawRect, scale, offset);
111
+ const blockRect = {
112
+ x: rect.x / scale - offset.x / scale,
113
+ y: rect.y / scale - offset.y / scale,
114
+ width: rect.width / scale,
115
+ height: rect.height / scale
116
+ };
117
+ if (isInsideRect(artboardMouseX, artboardMouseY, blockRect)) {
118
+ hoveredUuids.push(uuid);
119
+ }
120
+ }
121
+ const deepestUuid = getDeepestUuid(hoveredUuids);
122
+ const selectedUuids = selection.uuids.value;
123
+ const unselectedHoveredUuids = hoveredUuids.filter(
124
+ (uuid) => !selectedUuids.includes(uuid)
125
+ );
126
+ const hoveredChanged = unselectedHoveredUuids.length !== previousHoveredUuids.length || unselectedHoveredUuids.some(
127
+ (uuid, i) => uuid !== previousHoveredUuids[i]
128
+ ) || deepestUuid !== previousDeepestUuid;
129
+ let hoveredEditableFieldRect = null;
130
+ const editableRects = directive.getVisible("editable");
131
+ for (let i = 0; i < editableRects.length; i++) {
132
+ const editableRect = editableRects[i];
133
+ if (isInsideRect(artboardMouseX, artboardMouseY, editableRect)) {
134
+ hoveredEditableFieldRect = editableRect;
135
+ break;
136
+ }
137
+ }
138
+ if (!hoveredChanged) {
139
+ const editableFieldChanged = hoveredEditableFieldRect === null !== (previousEditableFieldRect === null) || hoveredEditableFieldRect && previousEditableFieldRect && (hoveredEditableFieldRect.x !== previousEditableFieldRect.x || hoveredEditableFieldRect.y !== previousEditableFieldRect.y || hoveredEditableFieldRect.width !== previousEditableFieldRect.width || hoveredEditableFieldRect.height !== previousEditableFieldRect.height);
140
+ if (!editableFieldChanged) {
141
+ return false;
142
+ }
143
+ }
144
+ const shouldHighlightDeepest = deepestUuid && unselectedHoveredUuids.includes(deepestUuid);
145
+ hoverState.visible.fill(0);
146
+ const nestingMap = /* @__PURE__ */ new Map();
147
+ for (let i = 0; i < unselectedHoveredUuids.length; i++) {
148
+ const uuid = unselectedHoveredUuids[i];
149
+ const level = Math.min(state.getNestingLevel(uuid), 9);
150
+ if (!nestingMap.has(level)) {
151
+ nestingMap.set(level, uuid);
152
+ }
153
+ }
154
+ for (const [level, uuid] of nestingMap) {
155
+ const rect = dom.getBlockRect(uuid);
156
+ const block = blocks.getBlock(uuid);
157
+ if (!rect || !block) continue;
158
+ const el = dom.getDragElement(block);
159
+ if (!el) continue;
160
+ const style = theme.getDraggableStyle(el);
161
+ const isDeepest = shouldHighlightDeepest && uuid === deepestUuid;
162
+ hoverState.positions[level * 4 + 0] = rect.x;
163
+ hoverState.positions[level * 4 + 1] = rect.y;
164
+ hoverState.positions[level * 4 + 2] = rect.width;
165
+ hoverState.positions[level * 4 + 3] = rect.height;
166
+ hoverState.radii[level * 4 + 0] = style.radius[0];
167
+ hoverState.radii[level * 4 + 1] = style.radius[1];
168
+ hoverState.radii[level * 4 + 2] = style.radius[2];
169
+ hoverState.radii[level * 4 + 3] = style.radius[3];
170
+ let type = 0;
171
+ if (isDeepest) {
172
+ const isFromLibrary = state.fromLibraryUuids.value.includes(uuid);
173
+ if (isFromLibrary) {
174
+ type = 4;
175
+ } else {
176
+ type = style.isInverted ? 3 : 1;
177
+ }
178
+ }
179
+ hoverState.types[level] = type;
180
+ hoverState.visible[level] = 1;
181
+ }
182
+ if (hoveredEditableFieldRect) {
183
+ const inset = 2;
184
+ hoverState.positions[10 * 4 + 0] = hoveredEditableFieldRect.x + inset;
185
+ hoverState.positions[10 * 4 + 1] = hoveredEditableFieldRect.y + inset;
186
+ hoverState.positions[10 * 4 + 2] = hoveredEditableFieldRect.width - inset * 2;
187
+ hoverState.positions[10 * 4 + 3] = hoveredEditableFieldRect.height - inset * 2;
188
+ hoverState.radii[10 * 4 + 0] = 0;
189
+ hoverState.radii[10 * 4 + 1] = 0;
190
+ hoverState.radii[10 * 4 + 2] = 0;
191
+ hoverState.radii[10 * 4 + 3] = 0;
192
+ hoverState.types[10] = 2;
193
+ hoverState.visible[10] = 1;
194
+ }
195
+ previousHoveredUuids = unselectedHoveredUuids;
196
+ previousDeepestUuid = deepestUuid;
197
+ previousEditableFieldRect = hoveredEditableFieldRect;
198
+ isHoveringEditableField.value = hoveredEditableFieldRect !== null;
199
+ isHoveringSelectedBlock.value = deepestUuid !== null && selectedUuids.includes(deepestUuid);
200
+ return true;
201
+ }
202
+ const uniforms = computed(() => {
203
+ return {
204
+ u_color_mono: toShaderColor(theme.mono.value[300]),
205
+ u_color_accent: toShaderColor(theme.accent.value[600]),
206
+ u_color_teal: toShaderColor(theme.teal.value.normal),
207
+ u_color_white: toShaderColor([255, 255, 255]),
208
+ u_color_lime: toShaderColor(theme.lime.value.normal)
209
+ };
210
+ });
211
+ onBlokkliEvent("state:reloaded", () => {
212
+ resetHoverState();
213
+ });
214
+ onBlokkliEvent("ui:resized", () => {
215
+ resetHoverState();
216
+ });
217
+ defineRenderer("hover-overlay", {
218
+ zIndex: 200,
219
+ enabled: () => !selection.isChangingOptions.value,
220
+ cursor: () => {
221
+ if (isHoveringEditableField.value && state.editMode.value !== "readonly") {
222
+ return "text";
223
+ }
224
+ if (isHoveringSelectedBlock.value && state.editMode.value === "editing") {
225
+ return "grab";
226
+ }
227
+ return null;
228
+ },
229
+ render: (ctx) => {
230
+ if (!bufferInfo) {
231
+ return;
232
+ }
233
+ if (!ui.openTooltip.value) {
234
+ updateHoverState(
235
+ ctx.mouseX,
236
+ ctx.mouseY,
237
+ ctx.artboardOffset,
238
+ ctx.artboardScale,
239
+ ctx.artboardSize
240
+ );
241
+ }
242
+ props.gl.useProgram(programInfo.program);
243
+ setUniforms(programInfo, uniforms.value);
244
+ setUniforms(programInfo, {
245
+ u_hover_positions: hoverState.positions,
246
+ u_hover_radii: hoverState.radii,
247
+ u_hover_types: hoverState.types,
248
+ u_hover_visible: hoverState.visible
249
+ });
250
+ animation.setSharedUniforms(props.gl, programInfo);
251
+ setBuffersAndAttributes(props.gl, programInfo, bufferInfo);
252
+ drawBufferInfo(props.gl, bufferInfo, props.gl.TRIANGLES);
253
+ }
254
+ });
255
+ </script>
256
+
257
+ <script>
258
+ export default {
259
+ name: "HoverOverlay"
260
+ };
261
+ </script>
@@ -0,0 +1,6 @@
1
+ declare const _default: import("vue").DefineComponent<{
2
+ gl: WebGLRenderingContext;
3
+ }, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{
4
+ gl: WebGLRenderingContext;
5
+ }> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
6
+ export default _default;
@@ -0,0 +1,117 @@
1
+ precision highp float;
2
+
3
+ // [x, y] position.
4
+ attribute vec2 a_position;
5
+ // The [x,y,width, height] of the quad the vertex belongs to.
6
+ attribute vec4 a_quad;
7
+ attribute float a_rect_id;
8
+ attribute float a_rect_type;
9
+ attribute vec4 a_rect_radius;
10
+
11
+ // The global scaling applied to all quads.
12
+ uniform float u_scale;
13
+ uniform float u_dpi;
14
+ // The amount of pixels to offset on the x axis.
15
+ uniform float u_offset_x;
16
+ // The amount of pixels to offset on the y axis.
17
+ uniform float u_offset_y;
18
+ uniform vec2 u_resolution;
19
+
20
+ // Hover state uniforms (11 rectangles)
21
+ uniform vec4 u_hover_positions[11]; // x, y, width, height
22
+ uniform vec4 u_hover_radii[11]; // topLeft, topRight, bottomRight, bottomLeft
23
+ uniform float u_hover_types[11]; // 0=mono, 1=accent, 2=teal fill
24
+ uniform float u_hover_visible[11]; // 0=hidden, 1=visible
25
+
26
+ // The transformed quad for the fragment shader.
27
+ varying vec4 v_quad;
28
+ varying vec4 v_rect_radius;
29
+ varying vec2 v_rect_size;
30
+ varying vec2 v_rect_center;
31
+ varying float v_rect_type;
32
+ varying vec2 v_quad_artboard_pos;
33
+
34
+ void main() {
35
+ int rectIndex = int(a_rect_id);
36
+
37
+ // If not visible, move off-screen
38
+ if (u_hover_visible[rectIndex] < 0.5) {
39
+ gl_Position = vec4(-2.0, -2.0, 0.0, 1.0);
40
+ return;
41
+ }
42
+
43
+ // Get rect data from uniforms
44
+ vec4 hoverPos = u_hover_positions[rectIndex]; // x, y, width, height
45
+ vec4 hoverRadius = u_hover_radii[rectIndex];
46
+ float hoverType = u_hover_types[rectIndex];
47
+
48
+ // Define the increase size to prevent border clipping
49
+ float borderThickness = 2.0 * u_dpi;
50
+ float increaseSize = max(borderThickness, 10.0) + 4.0;
51
+
52
+ // Calculate the new dimensions of the quad
53
+ vec4 adjusted_quad = hoverPos;
54
+ adjusted_quad.z += 2.0 * increaseSize; // increase width
55
+ adjusted_quad.w += 2.0 * increaseSize; // increase height
56
+
57
+ // Adjust vertex positions to scale from the center of the rectangle
58
+ // Calculate the center of the original quad
59
+ vec2 center = vec2(
60
+ hoverPos.x + hoverPos.z / 2.0,
61
+ hoverPos.y + hoverPos.w / 2.0
62
+ );
63
+
64
+ // Calculate vertex offset relative to dummy quad center
65
+ vec2 dummyCenter = vec2(a_quad.x + a_quad.z / 2.0, a_quad.y + a_quad.w / 2.0);
66
+ vec2 vertexOffset = a_position - dummyCenter;
67
+
68
+ // Map vertex offset to new rect
69
+ vec2 newOffset =
70
+ vertexOffset *
71
+ (vec2(adjusted_quad.z, adjusted_quad.w) / vec2(a_quad.z, a_quad.w));
72
+
73
+ // New position is center plus the new offset
74
+ vec2 newPosition = center + newOffset;
75
+
76
+ // Apply global scale and offsets
77
+ vec2 offsetPosition = newPosition * u_scale;
78
+ offsetPosition.x += u_offset_x;
79
+ offsetPosition.y += u_offset_y;
80
+
81
+ // Normalize position for rendering
82
+ vec2 normalizedPosition = offsetPosition / u_resolution;
83
+
84
+ // Transform to screen space (-1 to 1)
85
+ vec2 screenSpacePosition = normalizedPosition * 2.0 - vec2(1.0, 1.0);
86
+ screenSpacePosition.y = -screenSpacePosition.y;
87
+
88
+ // Output final position in clip space
89
+ gl_Position = vec4(screenSpacePosition, 0.0, 1.0) * u_dpi;
90
+
91
+ // Pass the dimensions to fragment shader for SDF calculations
92
+ vec4 transformed_quad = vec4(
93
+ (hoverPos.x * u_scale + u_offset_x) * u_dpi,
94
+ (u_resolution.y -
95
+ hoverPos.y * u_scale -
96
+ hoverPos.w * u_scale -
97
+ u_offset_y) *
98
+ u_dpi,
99
+ hoverPos.z * u_scale * u_dpi,
100
+ hoverPos.w * u_scale * u_dpi
101
+ );
102
+ v_quad = transformed_quad;
103
+
104
+ // Expand the rect by 2px for border rendering
105
+ float borderExpansion = 2.0 * u_dpi;
106
+
107
+ // Set varying variables
108
+ v_rect_radius = hoverRadius * u_dpi;
109
+ v_rect_size = vec2(
110
+ v_quad.z + 2.0 * borderExpansion,
111
+ v_quad.w + 2.0 * borderExpansion
112
+ );
113
+ v_rect_center = vec2(v_quad.x + v_quad.z / 2.0, v_quad.y + v_quad.w / 2.0);
114
+ v_rect_type = hoverType;
115
+ // Pass the original artboard-space quad position for stable dash pattern
116
+ v_quad_artboard_pos = vec2(hoverPos.x, hoverPos.y);
117
+ }
@@ -0,0 +1,25 @@
1
+ <template>
2
+ <Overlay v-if="isVisible && gl && animation.webglEnabled.value" :gl="gl" />
3
+ </template>
4
+
5
+ <script setup>
6
+ import Overlay from "./Overlay/index.vue";
7
+ import { computed, useBlokkli, defineBlokkliFeature } from "#imports";
8
+ defineBlokkliFeature({
9
+ id: "hover",
10
+ icon: "selection",
11
+ label: "Hover",
12
+ description: "Renders a border around blocks that are currently being hovered."
13
+ });
14
+ const { selection, ui, animation, dom } = useBlokkli();
15
+ const gl = animation.gl();
16
+ const isVisible = computed(
17
+ () => dom.isReady.value && !selection.isMultiSelecting.value && !selection.editableActive.value && !selection.isDragging.value && !ui.hasTransformOverlayOpen.value && !ui.hasDialogOpen.value && !ui.isAnimating.value
18
+ );
19
+ </script>
20
+
21
+ <script>
22
+ export default {
23
+ name: "Hover"
24
+ };
25
+ </script>
@@ -0,0 +1,2 @@
1
+ declare const _default: import("vue").DefineComponent<{}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
2
+ export default _default;
@@ -51,8 +51,12 @@
51
51
  }}
52
52
  </div>
53
53
  <div
54
- class="bk-radio-list"
55
- :style="{ opacity: searchTerm !== resultsSearchTerm ? 0.5 : 1 }"
54
+ :style="{
55
+ opacity: searchTerm !== resultsSearchTerm ? 0.5 : 1,
56
+ height: '420px',
57
+ overflow: 'auto',
58
+ marginTop: '10px'
59
+ }"
56
60
  >
57
61
  <label v-for="entity in entities" :key="entity.uuid" class="bk-radio">
58
62
  <input
@@ -13,13 +13,13 @@
13
13
  />
14
14
 
15
15
  <Teleport to="body">
16
- <transition appear name="bk-slide-up">
16
+ <BlokkliTransition name="slide-up">
17
17
  <ExistingDialog
18
18
  v-if="showModal"
19
19
  @confirm="onSubmit($event.sourceUuid, $event.fields)"
20
20
  @cancel="showModal = false"
21
21
  />
22
- </transition>
22
+ </BlokkliTransition>
23
23
  </Teleport>
24
24
  </template>
25
25
 
@@ -32,6 +32,7 @@ import {
32
32
  defineBlokkliFeature
33
33
  } from "#imports";
34
34
  import { PluginMenuButton } from "#blokkli/plugins";
35
+ import { BlokkliTransition } from "#blokkli/components";
35
36
  import ExistingDialog from "./Dialog/index.vue";
36
37
  const { adapter, settings } = defineBlokkliFeature({
37
38
  id: "import-existing",
@@ -46,16 +46,15 @@ const props = defineProps({
46
46
  uuid: { type: String, required: true },
47
47
  label: { type: String, required: false }
48
48
  });
49
+ const { $t, element } = useBlokkli();
49
50
  const DURATION = 530;
50
51
  const emit = defineEmits(["submit", "close"]);
51
52
  function getOriginatingElement() {
52
- const el = document.querySelector(
53
- `[data-bk-library-item-uuid="${props.uuid}"]`
53
+ return element.query(
54
+ document.documentElement,
55
+ `[data-bk-library-item-uuid="${props.uuid}"]`,
56
+ "Get originating library item element"
54
57
  );
55
- if (el instanceof HTMLElement) {
56
- return el;
57
- }
58
- return null;
59
58
  }
60
59
  function onEnter(el, done) {
61
60
  if (el instanceof HTMLElement) {
@@ -125,7 +124,6 @@ function onAfterLeave(el) {
125
124
  emit("close");
126
125
  }
127
126
  }
128
- const { $t } = useBlokkli();
129
127
  const iframe = ref(null);
130
128
  const isLoaded = ref(false);
131
129
  const isLoading = ref(true);