@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
@@ -36,7 +36,7 @@
36
36
  :key="renderKey"
37
37
  to="#blokkli-add-list-sidebar-before"
38
38
  >
39
- <div class="bk-list-sidebar-form">
39
+ <div class="bk bk-list-sidebar-form">
40
40
  <input
41
41
  id="add_block_search"
42
42
  v-model="searchText"
@@ -60,6 +60,7 @@ import {
60
60
  import { AddListItem } from "#blokkli/components";
61
61
  import defineCommands from "#blokkli/helpers/composables/defineCommands";
62
62
  import onBlokkliEvent from "#blokkli/helpers/composables/onBlokkliEvent";
63
+ import { isInternalBundle } from "#blokkli/helpers/bundles";
63
64
  import { PluginTourItem } from "#blokkli/plugins";
64
65
  import { getFieldKey, onlyUnique } from "#blokkli/helpers";
65
66
  const { settings } = defineBlokkliFeature({
@@ -79,7 +80,6 @@ const { settings } = defineBlokkliFeature({
79
80
  }
80
81
  }
81
82
  });
82
- const reservedBundles = ["from_library", "blokkli_fragment"];
83
83
  const {
84
84
  selection,
85
85
  storage,
@@ -91,53 +91,36 @@ const {
91
91
  $t,
92
92
  state,
93
93
  dom,
94
- definitions
94
+ definitions,
95
+ blocks
95
96
  } = useBlokkli();
96
97
  const shouldRender = computed(() => state.editMode.value === "editing");
97
98
  const searchText = ref("");
98
99
  const itemEntityType = runtimeConfig.itemEntityType;
99
100
  const favorites = storage.use("blockFavorites", []);
100
- const activeField = computed(() => {
101
- if (selection.activeFieldKey.value) {
102
- const el = document.querySelector(
103
- `[data-field-key="${selection.activeFieldKey.value}"]`
104
- );
105
- if (el && el instanceof HTMLElement) {
106
- const label = el.dataset.fieldLabel;
107
- const name = el.dataset.fieldName;
108
- const isNested = el.dataset.fieldIsNested === "true";
109
- const hostEntityType = el.dataset.hostEntityType;
110
- const hostEntityUuid = el.dataset.hostEntityUuid;
111
- if (label && name && hostEntityType && hostEntityUuid) {
112
- return { label, name, hostEntityType, hostEntityUuid, isNested };
113
- }
114
- }
115
- }
116
- return void 0;
117
- });
118
101
  const getAllowedTypesForSelected = (p) => {
119
- if (types.itemBundlesWithNested.includes(p.itemBundle)) {
120
- return types.fieldConfig.forEntityTypeAndBundle(itemEntityType, p.itemBundle).flatMap((v) => v.allowedBundles).filter(Boolean);
102
+ if (types.itemBundlesWithNested.includes(p.bundle)) {
103
+ return types.fieldConfig.forEntityTypeAndBundle(itemEntityType, p.bundle).flatMap((v) => v.allowedBundles).filter(Boolean);
121
104
  }
122
- if (p.hostType === itemEntityType) {
123
- return types.fieldConfig.forEntityTypeAndBundle(itemEntityType, p.hostBundle).flatMap((v) => v.allowedBundles).filter(Boolean);
105
+ if (p.host.type === itemEntityType) {
106
+ return types.fieldConfig.forEntityTypeAndBundle(itemEntityType, p.host.bundle).flatMap((v) => v.allowedBundles).filter(Boolean);
124
107
  } else {
125
108
  return types.getFieldConfig(
126
109
  context.value.entityType,
127
110
  context.value.entityBundle,
128
- p.hostFieldName
111
+ p.host.fieldName
129
112
  )?.allowedBundles || [];
130
113
  }
131
114
  };
132
- const bundlesForRenderedFields = computed(
133
- () => dom.registeredFieldTypes.value.flatMap((field) => {
115
+ const bundlesForRenderedFields = computed(() => {
116
+ return dom.registeredFieldTypes.value.flatMap((field) => {
134
117
  return types.getFieldConfig(
135
118
  field.entityType,
136
119
  field.entityBundle,
137
120
  field.fieldName
138
121
  )?.allowedBundles || [];
139
- }).filter(onlyUnique)
140
- );
122
+ }).filter(onlyUnique);
123
+ });
141
124
  const generallyAvailableBundles = computed(
142
125
  () => types.generallyAvailableBundles.filter(
143
126
  (v) => (
@@ -147,15 +130,8 @@ const generallyAvailableBundles = computed(
147
130
  )
148
131
  );
149
132
  const selectableBundles = computed(() => {
150
- if (selection.blocks.value.length) {
151
- return selection.blocks.value.flatMap((v) => getAllowedTypesForSelected(v));
152
- }
153
- if (activeField.value && activeField.value.hostEntityType === context.value.entityType) {
154
- return types.getFieldConfig(
155
- context.value.entityType,
156
- context.value.entityBundle,
157
- activeField.value.name
158
- )?.allowedBundles || [];
133
+ if (selection.items.value.length) {
134
+ return selection.items.value.flatMap((v) => getAllowedTypesForSelected(v));
159
135
  }
160
136
  return generallyAvailableBundles.value.map((v) => v.id || "");
161
137
  });
@@ -174,7 +150,7 @@ function determineVisibility(bundle, label) {
174
150
  return true;
175
151
  }
176
152
  const sortedList = computed(() => {
177
- return [...generallyAvailableBundles.value].filter((v) => !reservedBundles.includes(v.id)).map((v) => {
153
+ return [...generallyAvailableBundles.value].filter((v) => !isInternalBundle(v.id)).map((v) => {
178
154
  const isVisible = determineVisibility(v.id, v.label);
179
155
  const isDisabled = !v.id || !selectableBundles.value.includes(v.id);
180
156
  return {
@@ -191,29 +167,29 @@ const sortedList = computed(() => {
191
167
  });
192
168
  const renderKey = ref("");
193
169
  const getBundlesForAppendCommands = () => {
194
- if (selection.blocks.value.length !== 1) {
170
+ const item = selection.item.value;
171
+ if (!item) {
195
172
  return [];
196
173
  }
197
- const block = selection.blocks.value[0];
198
174
  const field = types.getFieldConfig(
199
- block.hostType,
200
- block.hostBundle,
201
- block.hostFieldName
175
+ item.host.type,
176
+ item.host.bundle,
177
+ item.host.fieldName
202
178
  );
203
179
  if (field) {
204
180
  if (field.cardinality !== -1) {
205
- const key = getFieldKey(block.hostUuid, block.hostFieldName);
181
+ const key = getFieldKey(item.host.uuid, item.host.fieldName);
206
182
  const count = state.getFieldBlockCount(key);
207
183
  if (count >= field.cardinality) {
208
184
  return [];
209
185
  }
210
186
  }
211
- return field.allowedBundles.filter((v) => !reservedBundles.includes(v));
187
+ return field.allowedBundles.filter((v) => !isInternalBundle(v));
212
188
  }
213
189
  return [];
214
190
  };
215
191
  const getAppendEndCommands = () => {
216
- if (selection.blocks.value.length !== 0) {
192
+ if (selection.items.value.length !== 0) {
217
193
  return [];
218
194
  }
219
195
  return types.fieldConfig.forEntityTypeAndBundle(
@@ -227,7 +203,7 @@ const getAppendEndCommands = () => {
227
203
  return [];
228
204
  }
229
205
  }
230
- return field.allowedBundles.filter((v) => !reservedBundles.includes(v)).map((bundle) => {
206
+ return field.allowedBundles.filter((v) => !isInternalBundle(v)).map((bundle) => {
231
207
  const definition = types.getBlockBundleDefinition(bundle);
232
208
  return {
233
209
  id: "block_add_list:append_end:" + bundle + field.name,
@@ -279,7 +255,7 @@ const getInsertCommands = (block) => {
279
255
  if (!block) {
280
256
  return [];
281
257
  }
282
- const nestedFields = types.fieldConfig.forEntityTypeAndBundle(itemEntityType, block.itemBundle).map((field) => {
258
+ const nestedFields = types.fieldConfig.forEntityTypeAndBundle(itemEntityType, block.bundle).map((field) => {
283
259
  return {
284
260
  ...field,
285
261
  uuid: block.uuid
@@ -307,8 +283,8 @@ const getInsertCommands = (block) => {
307
283
  });
308
284
  }
309
285
  );
310
- if (block.hostType === runtimeConfig.itemEntityType) {
311
- const parentBlock = dom.findBlock(block.hostUuid);
286
+ if (block.host.type === runtimeConfig.itemEntityType) {
287
+ const parentBlock = blocks.getBlock(block.host.uuid);
312
288
  if (parentBlock) {
313
289
  getInsertCommands(parentBlock).forEach((parentCommand) => {
314
290
  commands.push(parentCommand);
@@ -318,7 +294,7 @@ const getInsertCommands = (block) => {
318
294
  return commands;
319
295
  };
320
296
  const commandCallbackAppend = (bundle) => {
321
- const block = selection.blocks.value[0];
297
+ const block = selection.items.value[0];
322
298
  if (!block) {
323
299
  return;
324
300
  }
@@ -326,9 +302,9 @@ const commandCallbackAppend = (bundle) => {
326
302
  bundle,
327
303
  afterUuid: selection.uuids.value[0],
328
304
  host: {
329
- type: block.hostType,
330
- uuid: block.hostUuid,
331
- fieldName: block.hostFieldName
305
+ type: block.host.type,
306
+ uuid: block.host.uuid,
307
+ fieldName: block.host.fieldName
332
308
  }
333
309
  });
334
310
  };
@@ -353,7 +329,7 @@ defineCommands(() => {
353
329
  }
354
330
  return [
355
331
  ...getAppendCommands(),
356
- ...getInsertCommands(selection.blocks.value[0]),
332
+ ...getInsertCommands(selection.items.value[0]),
357
333
  ...getAppendEndCommands()
358
334
  ];
359
335
  });
@@ -0,0 +1,154 @@
1
+ <template>
2
+ <div class="bk-schedule-section">
3
+ <FormToggle v-model="isEnabled" :disabled="disabled">
4
+ <div class="bk-schedule-section-toggle-title">
5
+ <Icon :name="icon" />
6
+ <div class="bk-schedule-section-toggle-title-label">{{ label }}</div>
7
+ </div>
8
+ </FormToggle>
9
+
10
+ <TransitionHeight opacity>
11
+ <div v-if="isEnabled" class="bk-schedule-section-content">
12
+ <div
13
+ v-if="hasMixedDates && !overrideMode"
14
+ class="bk-schedule-section-mixed"
15
+ >
16
+ <InfoBox :text="mixedDatesMessage" />
17
+ <button type="button" class="bk-button" @click="enableOverride">
18
+ {{ $t("blockSchedulerOverride", "Set date for all") }}
19
+ </button>
20
+ </div>
21
+
22
+ <div v-if="!hasMixedDates || overrideMode">
23
+ <ScheduleDate v-model="selectedDate" />
24
+ </div>
25
+ </div>
26
+ </TransitionHeight>
27
+ </div>
28
+ </template>
29
+
30
+ <script setup>
31
+ import { ref, computed, watch, useBlokkli } from "#imports";
32
+ import {
33
+ FormToggle,
34
+ ScheduleDate,
35
+ InfoBox,
36
+ Icon,
37
+ TransitionHeight
38
+ } from "#blokkli/components";
39
+ const props = defineProps({
40
+ label: { type: String, required: true },
41
+ icon: { type: null, required: true },
42
+ items: { type: Array, required: true },
43
+ supportedBundles: { type: Array, required: true },
44
+ disabled: { type: Boolean, required: false, default: false }
45
+ });
46
+ const { $t, ui } = useBlokkli();
47
+ const modelValue = defineModel({ type: null });
48
+ const isEnabled = ref(false);
49
+ const selectedDate = ref(void 0);
50
+ const overrideMode = ref(false);
51
+ const hasMixedDates = computed(() => {
52
+ const supportedItems2 = props.items.filter(
53
+ (item) => props.supportedBundles.includes(item.bundle)
54
+ );
55
+ if (supportedItems2.length === 0) {
56
+ return false;
57
+ }
58
+ const dates = supportedItems2.map((item) => item.date);
59
+ if (dates.every((date) => date == null)) {
60
+ return false;
61
+ }
62
+ const firstDate = dates[0];
63
+ const allSame = dates.every((date) => date === firstDate);
64
+ return !allSame;
65
+ });
66
+ const commonDate = computed(() => {
67
+ if (hasMixedDates.value) {
68
+ return void 0;
69
+ }
70
+ const supportedItems2 = props.items.filter(
71
+ (item) => props.supportedBundles.includes(item.bundle)
72
+ );
73
+ const dates = supportedItems2.map((item) => item.date).filter((date) => date != null);
74
+ if (dates.length === 0) {
75
+ return void 0;
76
+ }
77
+ return dates[0] || void 0;
78
+ });
79
+ const mixedDatesMessage = computed(() => {
80
+ const supportedItems2 = props.items.filter(
81
+ (item) => props.supportedBundles.includes(item.bundle)
82
+ );
83
+ const dates = supportedItems2.map((item) => item.date).filter((date) => date != null);
84
+ const uniqueDates = [...new Set(dates)];
85
+ const formattedDates = uniqueDates.map((date) => ui.formatDate(date)).join(", ");
86
+ const message = $t(
87
+ "blockSchedulerMixedDates",
88
+ "Selected blocks have different dates: @dates"
89
+ );
90
+ return message.replace("@dates", formattedDates);
91
+ });
92
+ function getTomorrowDate() {
93
+ const tomorrow = /* @__PURE__ */ new Date();
94
+ tomorrow.setDate(tomorrow.getDate() + 1);
95
+ tomorrow.setHours(12, 0, 0, 0);
96
+ return tomorrow.toISOString();
97
+ }
98
+ function getMostCommonDate() {
99
+ const supportedItems2 = props.items.filter(
100
+ (item) => props.supportedBundles.includes(item.bundle)
101
+ );
102
+ const dates = supportedItems2.map((item) => item.date).filter((date) => date != null);
103
+ if (dates.length === 0) {
104
+ return void 0;
105
+ }
106
+ const dateCount = /* @__PURE__ */ new Map();
107
+ for (const date of dates) {
108
+ dateCount.set(date, (dateCount.get(date) || 0) + 1);
109
+ }
110
+ let mostCommonDate;
111
+ let maxCount = 0;
112
+ for (const [date, count] of dateCount.entries()) {
113
+ if (count > maxCount) {
114
+ maxCount = count;
115
+ mostCommonDate = date;
116
+ }
117
+ }
118
+ return mostCommonDate;
119
+ }
120
+ const supportedItems = props.items.filter(
121
+ (item) => props.supportedBundles.includes(item.bundle)
122
+ );
123
+ const hasAnyDate = supportedItems.some((item) => item.date != null);
124
+ if (hasAnyDate && !props.disabled) {
125
+ isEnabled.value = true;
126
+ if (commonDate.value) {
127
+ selectedDate.value = commonDate.value;
128
+ }
129
+ }
130
+ watch(isEnabled, (enabled) => {
131
+ if (!enabled) {
132
+ selectedDate.value = void 0;
133
+ overrideMode.value = false;
134
+ modelValue.value = null;
135
+ } else if (commonDate.value && !hasMixedDates.value) {
136
+ selectedDate.value = commonDate.value;
137
+ } else if (!selectedDate.value) {
138
+ selectedDate.value = getTomorrowDate();
139
+ }
140
+ });
141
+ watch(selectedDate, (date) => {
142
+ if (isEnabled.value) {
143
+ modelValue.value = date || null;
144
+ }
145
+ });
146
+ function enableOverride() {
147
+ overrideMode.value = true;
148
+ selectedDate.value = getMostCommonDate() || getTomorrowDate();
149
+ }
150
+ defineExpose({
151
+ isEnabled,
152
+ selectedDate
153
+ });
154
+ </script>
@@ -0,0 +1,27 @@
1
+ import type { BlokkliIcon } from '#blokkli-build/icons';
2
+ export type ScheduleItemData = {
3
+ uuid: string;
4
+ bundle: string;
5
+ date: string | null | undefined;
6
+ };
7
+ type __VLS_Props = {
8
+ label: string;
9
+ icon: BlokkliIcon;
10
+ items: ScheduleItemData[];
11
+ supportedBundles: string[];
12
+ disabled?: boolean;
13
+ };
14
+ type __VLS_PublicProps = __VLS_Props & {
15
+ modelValue?: string | null | undefined;
16
+ };
17
+ declare const _default: import("vue").DefineComponent<__VLS_PublicProps, {
18
+ isEnabled: import("vue").Ref<boolean, boolean>;
19
+ selectedDate: import("vue").Ref<string | undefined, string | undefined>;
20
+ }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
21
+ "update:modelValue": (value: string | null | undefined) => any;
22
+ }, string, import("vue").PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
23
+ "onUpdate:modelValue"?: ((value: string | null | undefined) => any) | undefined;
24
+ }>, {
25
+ disabled: boolean;
26
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
27
+ export default _default;
@@ -0,0 +1,222 @@
1
+ <template>
2
+ <DialogModal
3
+ :title="$t('blockSchedulerDialogTitle', 'Manage scheduling')"
4
+ :submit-label="$t('blockSchedulerDialogSubmit', 'Save schedule')"
5
+ :width="900"
6
+ :lead="
7
+ $t(
8
+ 'blockSchedulerDialogLead',
9
+ 'Schedule automatic publishing and unpublishing dates for the selected blocks.'
10
+ )
11
+ "
12
+ :is-loading
13
+ :can-submit
14
+ @cancel="$emit('close')"
15
+ @submit="onSubmit"
16
+ >
17
+ <div class="bk-block-scheduler-dialog">
18
+ <ScheduleSection
19
+ v-model="publishOn"
20
+ icon="eye"
21
+ :label="$t('blockSchedulerDialogPublishOn', 'Publish on')"
22
+ :items="publishOnItems"
23
+ :supported-bundles="bundlesWithPublish"
24
+ :disabled="publishDisabled"
25
+ />
26
+
27
+ <ScheduleSection
28
+ v-model="unpublishOn"
29
+ icon="eye-off"
30
+ :label="$t('blockSchedulerDialogUnpublishOn', 'Unpublish on')"
31
+ :items="unpublishOnItems"
32
+ :supported-bundles="bundlesWithUnpublish"
33
+ :disabled="unpublishDisabled"
34
+ />
35
+
36
+ <div class="bk-block-scheduler-table">
37
+ <h3 class="bk-block-scheduler-table-title">
38
+ <span v-if="canSubmit">{{
39
+ $t("blockSchedulerChangesPreview", "Changes to be applied")
40
+ }}</span>
41
+ <span v-else>
42
+ {{ $t("blockSchedulerNoChanges", "No changes to be applied.") }}
43
+ </span>
44
+ </h3>
45
+ <table v-if="canSubmit" class="bk-table">
46
+ <thead>
47
+ <tr>
48
+ <th>{{ $t("bundle", "Bundle") }}</th>
49
+ <th>{{ $t("blockSchedulerDialogPublishOn", "Publish on") }}</th>
50
+ <th>
51
+ {{ $t("blockSchedulerDialogUnpublishOn", "Unpublish on") }}
52
+ </th>
53
+ </tr>
54
+ </thead>
55
+ <tbody>
56
+ <tr v-for="(row, index) in tableRows" :key="index">
57
+ <td>{{ row.bundle }}</td>
58
+ <td>{{ row.publishOn }}</td>
59
+ <td>{{ row.unpublishOn }}</td>
60
+ </tr>
61
+ </tbody>
62
+ </table>
63
+ </div>
64
+ </div>
65
+ </DialogModal>
66
+ </template>
67
+
68
+ <script setup>
69
+ import { falsy } from "#blokkli/helpers";
70
+ import { computed, useBlokkli, ref } from "#imports";
71
+ import ScheduleSection from "./ScheduleSection.vue";
72
+ import { DialogModal } from "#blokkli/components";
73
+ const props = defineProps({
74
+ uuids: { type: Array, required: true },
75
+ bundlesWithPublish: { type: Array, required: true },
76
+ bundlesWithUnpublish: { type: Array, required: true }
77
+ });
78
+ const emit = defineEmits(["close"]);
79
+ const { state, $t, adapter, ui, types } = useBlokkli();
80
+ const isLoading = ref(false);
81
+ const error = ref("");
82
+ const items = computed(() => {
83
+ return props.uuids.map((uuid) => {
84
+ return state.getFieldListItem(uuid);
85
+ }).filter(falsy).map((item) => {
86
+ return {
87
+ uuid: item.uuid,
88
+ bundle: item.bundle,
89
+ isPublished: !!item.editContext?.isPublished,
90
+ publishOn: item.editContext?.publishOn,
91
+ unpublishOn: item.editContext?.unpublishOn
92
+ };
93
+ });
94
+ });
95
+ const selectedBundles = computed(() => {
96
+ const bundles = items.value.map((item) => item.bundle);
97
+ return [...new Set(bundles)];
98
+ });
99
+ const publishDisabled = computed(() => {
100
+ return !selectedBundles.value.some(
101
+ (bundle) => props.bundlesWithPublish.includes(bundle)
102
+ );
103
+ });
104
+ const unpublishDisabled = computed(() => {
105
+ return !selectedBundles.value.some(
106
+ (bundle) => props.bundlesWithUnpublish.includes(bundle)
107
+ );
108
+ });
109
+ const publishOnItems = computed(() => {
110
+ return items.value.map((item) => ({
111
+ uuid: item.uuid,
112
+ bundle: item.bundle,
113
+ date: item.publishOn
114
+ }));
115
+ });
116
+ const unpublishOnItems = computed(() => {
117
+ return items.value.map((item) => ({
118
+ uuid: item.uuid,
119
+ bundle: item.bundle,
120
+ date: item.unpublishOn
121
+ }));
122
+ });
123
+ function getCommonDate(items2, supportedBundles) {
124
+ const supportedItems = items2.filter(
125
+ (item) => supportedBundles.includes(item.bundle)
126
+ );
127
+ if (supportedItems.length === 0) {
128
+ return void 0;
129
+ }
130
+ const dates = supportedItems.map((item) => item.date);
131
+ if (dates.every((date) => date == null)) {
132
+ return null;
133
+ }
134
+ const firstDate = dates[0];
135
+ const allSame = dates.every((date) => date === firstDate);
136
+ return allSame ? firstDate ?? null : void 0;
137
+ }
138
+ const publishOn = ref(
139
+ getCommonDate(publishOnItems.value, props.bundlesWithPublish)
140
+ );
141
+ const unpublishOn = ref(
142
+ getCommonDate(unpublishOnItems.value, props.bundlesWithUnpublish)
143
+ );
144
+ const tableRows = computed(() => {
145
+ return items.value.map((item) => {
146
+ const bundleDef = types.getBlockBundleDefinition(item.bundle);
147
+ const supportsPublish = props.bundlesWithPublish.includes(item.bundle);
148
+ const supportsUnpublish = props.bundlesWithUnpublish.includes(item.bundle);
149
+ let publishOnDisplay;
150
+ if (!supportsPublish) {
151
+ publishOnDisplay = $t("notSupported", "Not supported");
152
+ } else if (publishOn.value === void 0) {
153
+ publishOnDisplay = item.publishOn ? ui.formatDate(item.publishOn) : $t("notSet", "Not set");
154
+ } else if (publishOn.value) {
155
+ publishOnDisplay = ui.formatDate(publishOn.value);
156
+ } else {
157
+ publishOnDisplay = $t("notSet", "Not set");
158
+ }
159
+ let unpublishOnDisplay;
160
+ if (!supportsUnpublish) {
161
+ unpublishOnDisplay = $t("notSupported", "Not supported");
162
+ } else if (unpublishOn.value === void 0) {
163
+ unpublishOnDisplay = item.unpublishOn ? ui.formatDate(item.unpublishOn) : $t("notSet", "Not set");
164
+ } else if (unpublishOn.value) {
165
+ unpublishOnDisplay = ui.formatDate(unpublishOn.value);
166
+ } else {
167
+ unpublishOnDisplay = $t("notSet", "Not set");
168
+ }
169
+ return {
170
+ bundle: bundleDef?.label || item.bundle,
171
+ publishOn: publishOnDisplay,
172
+ unpublishOn: unpublishOnDisplay
173
+ };
174
+ });
175
+ });
176
+ const canSubmit = computed(() => {
177
+ return items.value.some((item) => {
178
+ const supportsPublish = props.bundlesWithPublish.includes(item.bundle);
179
+ const supportsUnpublish = props.bundlesWithUnpublish.includes(item.bundle);
180
+ if (supportsPublish && publishOn.value !== void 0 && item.publishOn !== publishOn.value) {
181
+ return true;
182
+ }
183
+ if (supportsUnpublish && unpublishOn.value !== void 0 && item.unpublishOn !== unpublishOn.value) {
184
+ return true;
185
+ }
186
+ return false;
187
+ });
188
+ });
189
+ async function onSubmit() {
190
+ isLoading.value = true;
191
+ const blocks = [];
192
+ items.value.forEach((item) => {
193
+ const supportsPublish = props.bundlesWithPublish.includes(item.bundle);
194
+ const supportsUnpublish = props.bundlesWithUnpublish.includes(item.bundle);
195
+ if (supportsPublish && publishOn.value !== void 0 && item.publishOn !== publishOn.value) {
196
+ blocks.push({
197
+ uuid: item.uuid,
198
+ type: "publish",
199
+ date: publishOn.value || void 0
200
+ });
201
+ }
202
+ if (supportsUnpublish && unpublishOn.value !== void 0 && item.unpublishOn !== unpublishOn.value) {
203
+ blocks.push({
204
+ uuid: item.uuid,
205
+ type: "unpublish",
206
+ date: unpublishOn.value || void 0
207
+ });
208
+ }
209
+ });
210
+ isLoading.value = true;
211
+ const isSuccess = await state.mutateWithLoadingState(
212
+ () => adapter.setBlockScheduleDate(blocks),
213
+ false,
214
+ $t("blockSchedulerSuccessMessage", "Successfully updated schedule dates.")
215
+ );
216
+ if (!isSuccess) {
217
+ error.value = "An unexpected error happened.";
218
+ return;
219
+ }
220
+ emit("close");
221
+ }
222
+ </script>
@@ -0,0 +1,11 @@
1
+ type __VLS_Props = {
2
+ uuids: string[];
3
+ bundlesWithPublish: string[];
4
+ bundlesWithUnpublish: string[];
5
+ };
6
+ declare const _default: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {} & {
7
+ close: () => any;
8
+ }, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
9
+ onClose?: (() => any) | undefined;
10
+ }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
11
+ export default _default;