@blokkli/editor 1.0.0

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 (395) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +64 -0
  3. package/dist/module.cjs +5 -0
  4. package/dist/module.d.mts +129 -0
  5. package/dist/module.d.ts +129 -0
  6. package/dist/module.json +12 -0
  7. package/dist/module.mjs +5430 -0
  8. package/dist/runtime/adapter/drupal/graphql/base.graphql +906 -0
  9. package/dist/runtime/adapter/drupal/graphql/comments.graphql +56 -0
  10. package/dist/runtime/adapter/drupal/graphql/fragments.graphql +25 -0
  11. package/dist/runtime/adapter/drupal/graphql/library.graphql +66 -0
  12. package/dist/runtime/adapter/drupal/graphql/search.graphql +19 -0
  13. package/dist/runtime/adapter/drupal/graphql/transform.graphql +27 -0
  14. package/dist/runtime/adapter/drupal/graphqlMiddleware.d.ts +2 -0
  15. package/dist/runtime/adapter/drupal/graphqlMiddleware.js +643 -0
  16. package/dist/runtime/adapter/index.d.ts +352 -0
  17. package/dist/runtime/adapter/index.js +3 -0
  18. package/dist/runtime/blokkliPlugins/AddAction/index.vue +87 -0
  19. package/dist/runtime/blokkliPlugins/ContextMenu/Menu/index.vue +95 -0
  20. package/dist/runtime/blokkliPlugins/ContextMenu/index.vue +49 -0
  21. package/dist/runtime/blokkliPlugins/DebugOverlay/index.vue +34 -0
  22. package/dist/runtime/blokkliPlugins/DroppableEdit/index.vue +73 -0
  23. package/dist/runtime/blokkliPlugins/ItemAction/index.vue +132 -0
  24. package/dist/runtime/blokkliPlugins/ItemDropdown/index.vue +42 -0
  25. package/dist/runtime/blokkliPlugins/MenuButton/index.vue +74 -0
  26. package/dist/runtime/blokkliPlugins/Sidebar/Detached/index.vue +334 -0
  27. package/dist/runtime/blokkliPlugins/Sidebar/index.vue +286 -0
  28. package/dist/runtime/blokkliPlugins/ToolbarButton/index.vue +104 -0
  29. package/dist/runtime/blokkliPlugins/TourItem/index.vue +45 -0
  30. package/dist/runtime/blokkliPlugins/ViewOption/index.vue +106 -0
  31. package/dist/runtime/blokkliPlugins/index.d.ts +12 -0
  32. package/dist/runtime/blokkliPlugins/index.js +24 -0
  33. package/dist/runtime/components/Blocks/Fragment/icon.svg +1 -0
  34. package/dist/runtime/components/Blocks/Fragment/index.vue +24 -0
  35. package/dist/runtime/components/Blocks/FromLibrary/index.vue +58 -0
  36. package/dist/runtime/components/BlokkliEditable.vue +73 -0
  37. package/dist/runtime/components/BlokkliField.vue +157 -0
  38. package/dist/runtime/components/BlokkliItem.vue +79 -0
  39. package/dist/runtime/components/BlokkliProvider.vue +160 -0
  40. package/dist/runtime/components/Edit/Actions/index.vue +263 -0
  41. package/dist/runtime/components/Edit/AddListItem/index.vue +116 -0
  42. package/dist/runtime/components/Edit/AnimationCanvas/index.vue +122 -0
  43. package/dist/runtime/components/Edit/AppMenu/index.vue +60 -0
  44. package/dist/runtime/components/Edit/BlokkliErrorBoundary.vue +64 -0
  45. package/dist/runtime/components/Edit/Dialog/index.vue +163 -0
  46. package/dist/runtime/components/Edit/DragInteractions/index.vue +439 -0
  47. package/dist/runtime/components/Edit/DraggableList.vue +110 -0
  48. package/dist/runtime/components/Edit/EditIndicator.vue +82 -0
  49. package/dist/runtime/components/Edit/EditProvider.vue +213 -0
  50. package/dist/runtime/components/Edit/Features/AddList/docs.md +4 -0
  51. package/dist/runtime/components/Edit/Features/AddList/index.vue +205 -0
  52. package/dist/runtime/components/Edit/Features/Artboard/Manager/Artboard.d.ts +204 -0
  53. package/dist/runtime/components/Edit/Features/Artboard/Manager/Artboard.js +748 -0
  54. package/dist/runtime/components/Edit/Features/Artboard/Manager/Scrollbar/index.vue +176 -0
  55. package/dist/runtime/components/Edit/Features/Artboard/Manager/index.vue +317 -0
  56. package/dist/runtime/components/Edit/Features/Artboard/index.vue +45 -0
  57. package/dist/runtime/components/Edit/Features/Assistant/Overlay/ResultMarkup/index.vue +17 -0
  58. package/dist/runtime/components/Edit/Features/Assistant/Overlay/index.vue +147 -0
  59. package/dist/runtime/components/Edit/Features/Assistant/docs.md +7 -0
  60. package/dist/runtime/components/Edit/Features/Assistant/index.vue +68 -0
  61. package/dist/runtime/components/Edit/Features/BlockAddList/docs.md +15 -0
  62. package/dist/runtime/components/Edit/Features/BlockAddList/index.vue +440 -0
  63. package/dist/runtime/components/Edit/Features/Clipboard/List/Item/File.vue +68 -0
  64. package/dist/runtime/components/Edit/Features/Clipboard/List/Item/Video.vue +56 -0
  65. package/dist/runtime/components/Edit/Features/Clipboard/List/index.vue +69 -0
  66. package/dist/runtime/components/Edit/Features/Clipboard/docs.md +16 -0
  67. package/dist/runtime/components/Edit/Features/Clipboard/index.vue +485 -0
  68. package/dist/runtime/components/Edit/Features/CommandPalette/Palette/Group/index.vue +61 -0
  69. package/dist/runtime/components/Edit/Features/CommandPalette/Palette/index.vue +280 -0
  70. package/dist/runtime/components/Edit/Features/CommandPalette/index.vue +51 -0
  71. package/dist/runtime/components/Edit/Features/Comments/AddForm/index.vue +32 -0
  72. package/dist/runtime/components/Edit/Features/Comments/Comment/index.vue +53 -0
  73. package/dist/runtime/components/Edit/Features/Comments/Overlay/Item/index.vue +100 -0
  74. package/dist/runtime/components/Edit/Features/Comments/Overlay/index.vue +133 -0
  75. package/dist/runtime/components/Edit/Features/Comments/docs.md +13 -0
  76. package/dist/runtime/components/Edit/Features/Comments/index.vue +110 -0
  77. package/dist/runtime/components/Edit/Features/Conversions/index.vue +98 -0
  78. package/dist/runtime/components/Edit/Features/Debug/Rects/index.vue +55 -0
  79. package/dist/runtime/components/Edit/Features/Debug/Viewport/index.vue +93 -0
  80. package/dist/runtime/components/Edit/Features/Debug/docs.md +3 -0
  81. package/dist/runtime/components/Edit/Features/Debug/index.vue +178 -0
  82. package/dist/runtime/components/Edit/Features/Delete/index.vue +43 -0
  83. package/dist/runtime/components/Edit/Features/DraggingOverlay/DragItems/index.vue +420 -0
  84. package/dist/runtime/components/Edit/Features/DraggingOverlay/DropTargets/fragment.glsl +58 -0
  85. package/dist/runtime/components/Edit/Features/DraggingOverlay/DropTargets/index.vue +808 -0
  86. package/dist/runtime/components/Edit/Features/DraggingOverlay/DropTargets/vertex.glsl +57 -0
  87. package/dist/runtime/components/Edit/Features/DraggingOverlay/index.vue +410 -0
  88. package/dist/runtime/components/Edit/Features/Duplicate/index.vue +109 -0
  89. package/dist/runtime/components/Edit/Features/Edit/index.vue +63 -0
  90. package/dist/runtime/components/Edit/Features/EditForm/Frame/index.vue +73 -0
  91. package/dist/runtime/components/Edit/Features/EditForm/index.vue +217 -0
  92. package/dist/runtime/components/Edit/Features/EditableField/Overlay/Contenteditable/index.vue +42 -0
  93. package/dist/runtime/components/Edit/Features/EditableField/Overlay/Frame/index.vue +68 -0
  94. package/dist/runtime/components/Edit/Features/EditableField/Overlay/Plaintext/index.vue +81 -0
  95. package/dist/runtime/components/Edit/Features/EditableField/Overlay/index.vue +357 -0
  96. package/dist/runtime/components/Edit/Features/EditableField/index.vue +192 -0
  97. package/dist/runtime/components/Edit/Features/EditableMask/index.vue +64 -0
  98. package/dist/runtime/components/Edit/Features/EntityTitle/index.vue +108 -0
  99. package/dist/runtime/components/Edit/Features/Exit/index.vue +38 -0
  100. package/dist/runtime/components/Edit/Features/FieldAreas/Overlay/index.vue +33 -0
  101. package/dist/runtime/components/Edit/Features/FieldAreas/index.vue +43 -0
  102. package/dist/runtime/components/Edit/Features/Fragments/Dialog/Item/index.vue +68 -0
  103. package/dist/runtime/components/Edit/Features/Fragments/Dialog/index.vue +137 -0
  104. package/dist/runtime/components/Edit/Features/Fragments/docs.md +101 -0
  105. package/dist/runtime/components/Edit/Features/Fragments/index.vue +86 -0
  106. package/dist/runtime/components/Edit/Features/Grid/index.vue +40 -0
  107. package/dist/runtime/components/Edit/Features/Help/Shortcuts/index.vue +71 -0
  108. package/dist/runtime/components/Edit/Features/Help/index.vue +53 -0
  109. package/dist/runtime/components/Edit/Features/History/index.vue +263 -0
  110. package/dist/runtime/components/Edit/Features/ImportExisting/Dialog/index.vue +140 -0
  111. package/dist/runtime/components/Edit/Features/ImportExisting/index.vue +92 -0
  112. package/dist/runtime/components/Edit/Features/Library/EditReusable/index.vue +0 -0
  113. package/dist/runtime/components/Edit/Features/Library/LibraryDialog/Item/index.vue +73 -0
  114. package/dist/runtime/components/Edit/Features/Library/LibraryDialog/index.vue +184 -0
  115. package/dist/runtime/components/Edit/Features/Library/ReusableDialog/index.vue +88 -0
  116. package/dist/runtime/components/Edit/Features/Library/docs.md +127 -0
  117. package/dist/runtime/components/Edit/Features/Library/index.vue +184 -0
  118. package/dist/runtime/components/Edit/Features/MediaLibrary/Library/index.vue +184 -0
  119. package/dist/runtime/components/Edit/Features/MediaLibrary/index.vue +182 -0
  120. package/dist/runtime/components/Edit/Features/MediaLibrary/types.d.ts +57 -0
  121. package/dist/runtime/components/Edit/Features/MediaLibrary/types.js +0 -0
  122. package/dist/runtime/components/Edit/Features/MultiSelect/Overlay/fragment.glsl +90 -0
  123. package/dist/runtime/components/Edit/Features/MultiSelect/Overlay/index.vue +289 -0
  124. package/dist/runtime/components/Edit/Features/MultiSelect/Overlay/vertex.glsl +182 -0
  125. package/dist/runtime/components/Edit/Features/MultiSelect/index.vue +76 -0
  126. package/dist/runtime/components/Edit/Features/Options/Form/Checkbox/index.vue +52 -0
  127. package/dist/runtime/components/Edit/Features/Options/Form/Checkboxes/index.vue +129 -0
  128. package/dist/runtime/components/Edit/Features/Options/Form/Color/index.vue +38 -0
  129. package/dist/runtime/components/Edit/Features/Options/Form/Group.vue +25 -0
  130. package/dist/runtime/components/Edit/Features/Options/Form/Item.vue +155 -0
  131. package/dist/runtime/components/Edit/Features/Options/Form/Number/index.vue +74 -0
  132. package/dist/runtime/components/Edit/Features/Options/Form/Radios/index.vue +135 -0
  133. package/dist/runtime/components/Edit/Features/Options/Form/Range/index.vue +47 -0
  134. package/dist/runtime/components/Edit/Features/Options/Form/Text/index.vue +38 -0
  135. package/dist/runtime/components/Edit/Features/Options/Form/index.vue +342 -0
  136. package/dist/runtime/components/Edit/Features/Options/index.vue +88 -0
  137. package/dist/runtime/components/Edit/Features/Ownership/index.vue +57 -0
  138. package/dist/runtime/components/Edit/Features/Preview/index.vue +45 -0
  139. package/dist/runtime/components/Edit/Features/PreviewGrant/QrCode/index.vue +30 -0
  140. package/dist/runtime/components/Edit/Features/PreviewGrant/index.vue +73 -0
  141. package/dist/runtime/components/Edit/Features/Publish/index.vue +50 -0
  142. package/dist/runtime/components/Edit/Features/ResponsivePreview/Frame/index.vue +81 -0
  143. package/dist/runtime/components/Edit/Features/ResponsivePreview/index.vue +217 -0
  144. package/dist/runtime/components/Edit/Features/Revert/index.vue +68 -0
  145. package/dist/runtime/components/Edit/Features/Search/Overlay/Results/Content/index.vue +165 -0
  146. package/dist/runtime/components/Edit/Features/Search/Overlay/Results/Page/index.vue +211 -0
  147. package/dist/runtime/components/Edit/Features/Search/Overlay/index.vue +214 -0
  148. package/dist/runtime/components/Edit/Features/Search/index.vue +79 -0
  149. package/dist/runtime/components/Edit/Features/Selection/Overlay/fragment.glsl +99 -0
  150. package/dist/runtime/components/Edit/Features/Selection/Overlay/index.vue +144 -0
  151. package/dist/runtime/components/Edit/Features/Selection/Overlay/vertex.glsl +85 -0
  152. package/dist/runtime/components/Edit/Features/Selection/OverlayFallback/index.vue +50 -0
  153. package/dist/runtime/components/Edit/Features/Selection/index.vue +295 -0
  154. package/dist/runtime/components/Edit/Features/Settings/Dialog/FeatureSetting/index.vue +141 -0
  155. package/dist/runtime/components/Edit/Features/Settings/Dialog/index.vue +138 -0
  156. package/dist/runtime/components/Edit/Features/Settings/index.vue +92 -0
  157. package/dist/runtime/components/Edit/Features/Structure/List/Field/index.vue +181 -0
  158. package/dist/runtime/components/Edit/Features/Structure/List/Item/index.vue +149 -0
  159. package/dist/runtime/components/Edit/Features/Structure/List/index.vue +55 -0
  160. package/dist/runtime/components/Edit/Features/Structure/index.vue +83 -0
  161. package/dist/runtime/components/Edit/Features/Theme/Color/index.vue +81 -0
  162. package/dist/runtime/components/Edit/Features/Theme/GeneratedCode/index.vue +24 -0
  163. package/dist/runtime/components/Edit/Features/Theme/index.vue +122 -0
  164. package/dist/runtime/components/Edit/Features/TouchActionBar/Bar/index.vue +26 -0
  165. package/dist/runtime/components/Edit/Features/TouchActionBar/index.vue +42 -0
  166. package/dist/runtime/components/Edit/Features/Tour/Overlay/index.vue +270 -0
  167. package/dist/runtime/components/Edit/Features/Tour/Popup/index.vue +36 -0
  168. package/dist/runtime/components/Edit/Features/Tour/docs.md +0 -0
  169. package/dist/runtime/components/Edit/Features/Tour/index.vue +46 -0
  170. package/dist/runtime/components/Edit/Features/Transform/docs.md +67 -0
  171. package/dist/runtime/components/Edit/Features/Transform/index.vue +177 -0
  172. package/dist/runtime/components/Edit/Features/Translations/Banner/index.vue +50 -0
  173. package/dist/runtime/components/Edit/Features/Translations/index.vue +193 -0
  174. package/dist/runtime/components/Edit/Features/Validations/Overlay/Item.vue +50 -0
  175. package/dist/runtime/components/Edit/Features/Validations/Overlay/index.vue +51 -0
  176. package/dist/runtime/components/Edit/Features/Validations/SidebarItem/index.vue +50 -0
  177. package/dist/runtime/components/Edit/Features/Validations/index.vue +70 -0
  178. package/dist/runtime/components/Edit/Features/index.vue +67 -0
  179. package/dist/runtime/components/Edit/FormOverlay/Header/index.vue +39 -0
  180. package/dist/runtime/components/Edit/FormOverlay/index.vue +52 -0
  181. package/dist/runtime/components/Edit/Highlight/index.vue +94 -0
  182. package/dist/runtime/components/Edit/Icon/index.vue +21 -0
  183. package/dist/runtime/components/Edit/ItemIcon/index.vue +27 -0
  184. package/dist/runtime/components/Edit/Loading/index.vue +19 -0
  185. package/dist/runtime/components/Edit/Messages/Item/index.vue +107 -0
  186. package/dist/runtime/components/Edit/Messages/index.vue +37 -0
  187. package/dist/runtime/components/Edit/PreviewProvider.vue +223 -0
  188. package/dist/runtime/components/Edit/RelativeTime/index.vue +37 -0
  189. package/dist/runtime/components/Edit/Resizable/index.vue +90 -0
  190. package/dist/runtime/components/Edit/ScaleToFit/index.vue +57 -0
  191. package/dist/runtime/components/Edit/ShortcutIndicator/index.vue +90 -0
  192. package/dist/runtime/components/Edit/Sortli/index.vue +92 -0
  193. package/dist/runtime/components/Edit/SystemRequirements/index.vue +91 -0
  194. package/dist/runtime/components/Edit/Toolbar/index.vue +106 -0
  195. package/dist/runtime/components/Edit/ViewportBlockingRect/index.vue +75 -0
  196. package/dist/runtime/components/Edit/index.d.ts +14 -0
  197. package/dist/runtime/components/Edit/index.js +28 -0
  198. package/dist/runtime/composables/defineBlokkli.d.ts +6 -0
  199. package/dist/runtime/composables/defineBlokkli.js +108 -0
  200. package/dist/runtime/composables/defineBlokkliFeature.d.ts +28 -0
  201. package/dist/runtime/composables/defineBlokkliFeature.js +62 -0
  202. package/dist/runtime/composables/defineBlokkliFragment.d.ts +3 -0
  203. package/dist/runtime/composables/defineBlokkliFragment.js +54 -0
  204. package/dist/runtime/composables/useBlokkli.d.ts +8 -0
  205. package/dist/runtime/composables/useBlokkli.js +5 -0
  206. package/dist/runtime/constants/index.d.ts +4 -0
  207. package/dist/runtime/constants/index.js +2 -0
  208. package/dist/runtime/css/output.css +1 -0
  209. package/dist/runtime/helpers/Artboard/index.d.ts +16 -0
  210. package/dist/runtime/helpers/Artboard/index.js +20 -0
  211. package/dist/runtime/helpers/DragStyle/index.d.ts +12 -0
  212. package/dist/runtime/helpers/DragStyle/index.js +86 -0
  213. package/dist/runtime/helpers/animationProvider.d.ts +25 -0
  214. package/dist/runtime/helpers/animationProvider.js +116 -0
  215. package/dist/runtime/helpers/broadcastProvider.d.ts +7 -0
  216. package/dist/runtime/helpers/broadcastProvider.js +26 -0
  217. package/dist/runtime/helpers/commandsProvider.d.ts +9 -0
  218. package/dist/runtime/helpers/commandsProvider.js +16 -0
  219. package/dist/runtime/helpers/composables/defineCommands.d.ts +2 -0
  220. package/dist/runtime/helpers/composables/defineCommands.js +10 -0
  221. package/dist/runtime/helpers/composables/defineDropAreas.d.ts +2 -0
  222. package/dist/runtime/helpers/composables/defineDropAreas.js +10 -0
  223. package/dist/runtime/helpers/composables/defineShortcut.d.ts +2 -0
  224. package/dist/runtime/helpers/composables/defineShortcut.js +19 -0
  225. package/dist/runtime/helpers/composables/defineTourItem.d.ts +2 -0
  226. package/dist/runtime/helpers/composables/defineTourItem.js +10 -0
  227. package/dist/runtime/helpers/composables/onBlokkliEvent.d.ts +2 -0
  228. package/dist/runtime/helpers/composables/onBlokkliEvent.js +10 -0
  229. package/dist/runtime/helpers/composables/useAnimationFrame.d.ts +1 -0
  230. package/dist/runtime/helpers/composables/useAnimationFrame.js +14 -0
  231. package/dist/runtime/helpers/composables/useDebugLogger.d.ts +2 -0
  232. package/dist/runtime/helpers/composables/useDebugLogger.js +5 -0
  233. package/dist/runtime/helpers/composables/useDelayedIntersectionObserver.d.ts +5 -0
  234. package/dist/runtime/helpers/composables/useDelayedIntersectionObserver.js +26 -0
  235. package/dist/runtime/helpers/debugProvider.d.ts +23 -0
  236. package/dist/runtime/helpers/debugProvider.js +65 -0
  237. package/dist/runtime/helpers/dom/index.d.ts +5 -0
  238. package/dist/runtime/helpers/dom/index.js +37 -0
  239. package/dist/runtime/helpers/domProvider.d.ts +46 -0
  240. package/dist/runtime/helpers/domProvider.js +446 -0
  241. package/dist/runtime/helpers/dropAreaProvider.d.ts +9 -0
  242. package/dist/runtime/helpers/dropAreaProvider.js +22 -0
  243. package/dist/runtime/helpers/easing.d.ts +3 -0
  244. package/dist/runtime/helpers/easing.js +16 -0
  245. package/dist/runtime/helpers/eventBus.d.ts +3 -0
  246. package/dist/runtime/helpers/eventBus.js +5 -0
  247. package/dist/runtime/helpers/featuresProvider.d.ts +23 -0
  248. package/dist/runtime/helpers/featuresProvider.js +16 -0
  249. package/dist/runtime/helpers/frameEventBus.d.ts +9 -0
  250. package/dist/runtime/helpers/frameEventBus.js +2 -0
  251. package/dist/runtime/helpers/index.d.ts +87 -0
  252. package/dist/runtime/helpers/index.js +467 -0
  253. package/dist/runtime/helpers/keyboardProvider.d.ts +17 -0
  254. package/dist/runtime/helpers/keyboardProvider.js +79 -0
  255. package/dist/runtime/helpers/options.d.ts +2 -0
  256. package/dist/runtime/helpers/options.js +21 -0
  257. package/dist/runtime/helpers/runtimeHelpers/index.d.ts +10 -0
  258. package/dist/runtime/helpers/runtimeHelpers/index.js +35 -0
  259. package/dist/runtime/helpers/selectionProvider.d.ts +62 -0
  260. package/dist/runtime/helpers/selectionProvider.js +149 -0
  261. package/dist/runtime/helpers/stateProvider.d.ts +35 -0
  262. package/dist/runtime/helpers/stateProvider.js +226 -0
  263. package/dist/runtime/helpers/storageProvider.d.ts +15 -0
  264. package/dist/runtime/helpers/storageProvider.js +61 -0
  265. package/dist/runtime/helpers/symbols.d.ts +16 -0
  266. package/dist/runtime/helpers/symbols.js +18 -0
  267. package/dist/runtime/helpers/textProvider.d.ts +4 -0
  268. package/dist/runtime/helpers/textProvider.js +20 -0
  269. package/dist/runtime/helpers/themeProvider.d.ts +27 -0
  270. package/dist/runtime/helpers/themeProvider.js +124 -0
  271. package/dist/runtime/helpers/tourProvider.d.ts +11 -0
  272. package/dist/runtime/helpers/tourProvider.js +19 -0
  273. package/dist/runtime/helpers/transform.d.ts +2 -0
  274. package/dist/runtime/helpers/transform.js +17 -0
  275. package/dist/runtime/helpers/typesProvider.d.ts +36 -0
  276. package/dist/runtime/helpers/typesProvider.js +138 -0
  277. package/dist/runtime/helpers/uiProvider.d.ts +36 -0
  278. package/dist/runtime/helpers/uiProvider.js +278 -0
  279. package/dist/runtime/helpers/webgl/index.d.ts +32 -0
  280. package/dist/runtime/helpers/webgl/index.js +132 -0
  281. package/dist/runtime/icons/alert.svg +6 -0
  282. package/dist/runtime/icons/area.svg +5 -0
  283. package/dist/runtime/icons/arrow-down.svg +1 -0
  284. package/dist/runtime/icons/arrow-left.svg +1 -0
  285. package/dist/runtime/icons/arrow-right.svg +1 -0
  286. package/dist/runtime/icons/arrow-up.svg +1 -0
  287. package/dist/runtime/icons/artboard-disabled.svg +9 -0
  288. package/dist/runtime/icons/artboard-enabled.svg +29 -0
  289. package/dist/runtime/icons/artboard.svg +1 -0
  290. package/dist/runtime/icons/bug.svg +1 -0
  291. package/dist/runtime/icons/button-pointer.svg +1 -0
  292. package/dist/runtime/icons/caret.svg +12 -0
  293. package/dist/runtime/icons/cellphone.svg +1 -0
  294. package/dist/runtime/icons/chat-question.svg +1 -0
  295. package/dist/runtime/icons/check.svg +1 -0
  296. package/dist/runtime/icons/checkbox.svg +5 -0
  297. package/dist/runtime/icons/checks.svg +1 -0
  298. package/dist/runtime/icons/chevron-left.svg +1 -0
  299. package/dist/runtime/icons/chevron-right.svg +1 -0
  300. package/dist/runtime/icons/clipboard.svg +5 -0
  301. package/dist/runtime/icons/close.svg +5 -0
  302. package/dist/runtime/icons/cog.svg +5 -0
  303. package/dist/runtime/icons/command.svg +1 -0
  304. package/dist/runtime/icons/comment.svg +5 -0
  305. package/dist/runtime/icons/comment_add.svg +5 -0
  306. package/dist/runtime/icons/convert.svg +1 -0
  307. package/dist/runtime/icons/cursor-move.svg +1 -0
  308. package/dist/runtime/icons/dead.svg +1 -0
  309. package/dist/runtime/icons/delete.svg +8 -0
  310. package/dist/runtime/icons/detach.svg +7 -0
  311. package/dist/runtime/icons/drag.svg +1 -0
  312. package/dist/runtime/icons/duplicate.svg +12 -0
  313. package/dist/runtime/icons/edit.svg +8 -0
  314. package/dist/runtime/icons/exit.svg +6 -0
  315. package/dist/runtime/icons/expand.svg +1 -0
  316. package/dist/runtime/icons/file.svg +1 -0
  317. package/dist/runtime/icons/form.svg +1 -0
  318. package/dist/runtime/icons/fragment.svg +1 -0
  319. package/dist/runtime/icons/grid.svg +13 -0
  320. package/dist/runtime/icons/group.svg +5 -0
  321. package/dist/runtime/icons/help.svg +1 -0
  322. package/dist/runtime/icons/history.svg +1 -0
  323. package/dist/runtime/icons/image.svg +1 -0
  324. package/dist/runtime/icons/import.svg +5 -0
  325. package/dist/runtime/icons/laptop.svg +1 -0
  326. package/dist/runtime/icons/list-view-grid.svg +1 -0
  327. package/dist/runtime/icons/list-view-horizontal.svg +1 -0
  328. package/dist/runtime/icons/loader.svg +1 -0
  329. package/dist/runtime/icons/logo.svg +5 -0
  330. package/dist/runtime/icons/magnifier.svg +5 -0
  331. package/dist/runtime/icons/menu.svg +1 -0
  332. package/dist/runtime/icons/minus.svg +1 -0
  333. package/dist/runtime/icons/monitor.svg +1 -0
  334. package/dist/runtime/icons/multi-select.svg +1 -0
  335. package/dist/runtime/icons/multimedia.svg +1 -0
  336. package/dist/runtime/icons/opacity.svg +5 -0
  337. package/dist/runtime/icons/open_in_new.svg +3 -0
  338. package/dist/runtime/icons/palette.svg +1 -0
  339. package/dist/runtime/icons/plus-box.svg +1 -0
  340. package/dist/runtime/icons/plus.svg +1 -0
  341. package/dist/runtime/icons/preview.svg +5 -0
  342. package/dist/runtime/icons/publish.svg +12 -0
  343. package/dist/runtime/icons/puzzle.svg +1 -0
  344. package/dist/runtime/icons/qrcode.svg +5 -0
  345. package/dist/runtime/icons/question.svg +5 -0
  346. package/dist/runtime/icons/redo.svg +12 -0
  347. package/dist/runtime/icons/resize.svg +1 -0
  348. package/dist/runtime/icons/reusable.svg +5 -0
  349. package/dist/runtime/icons/revert.svg +5 -0
  350. package/dist/runtime/icons/robot.svg +1 -0
  351. package/dist/runtime/icons/rotate-phone.svg +1 -0
  352. package/dist/runtime/icons/sad.svg +1 -0
  353. package/dist/runtime/icons/save.svg +1 -0
  354. package/dist/runtime/icons/script.svg +1 -0
  355. package/dist/runtime/icons/scrolltotop.svg +6 -0
  356. package/dist/runtime/icons/search.svg +1 -0
  357. package/dist/runtime/icons/selection.svg +5 -0
  358. package/dist/runtime/icons/spinner.svg +15 -0
  359. package/dist/runtime/icons/star.svg +1 -0
  360. package/dist/runtime/icons/swap-horizontal.svg +1 -0
  361. package/dist/runtime/icons/tablet.svg +1 -0
  362. package/dist/runtime/icons/textbox.svg +1 -0
  363. package/dist/runtime/icons/texturebox.svg +5 -0
  364. package/dist/runtime/icons/tiktok.svg +1 -0
  365. package/dist/runtime/icons/title.svg +1 -0
  366. package/dist/runtime/icons/tools.svg +1 -0
  367. package/dist/runtime/icons/translate.svg +5 -0
  368. package/dist/runtime/icons/tree.svg +5 -0
  369. package/dist/runtime/icons/tutor.svg +1 -0
  370. package/dist/runtime/icons/ui-list-horizontal.svg +19 -0
  371. package/dist/runtime/icons/ui-list-sidebar.svg +21 -0
  372. package/dist/runtime/icons/ui-list-vertical.svg +9 -0
  373. package/dist/runtime/icons/undo.svg +12 -0
  374. package/dist/runtime/icons/unstar.svg +1 -0
  375. package/dist/runtime/icons/upload.svg +1 -0
  376. package/dist/runtime/icons/user.svg +1 -0
  377. package/dist/runtime/icons/video-outline.svg +1 -0
  378. package/dist/runtime/icons/vimeo.svg +3 -0
  379. package/dist/runtime/icons/window-maximize.svg +1 -0
  380. package/dist/runtime/icons/window-minimize.svg +1 -0
  381. package/dist/runtime/icons/youtube.svg +3 -0
  382. package/dist/runtime/plugins/blokkliEditable.d.ts +2 -0
  383. package/dist/runtime/plugins/blokkliEditable.js +31 -0
  384. package/dist/runtime/public/Inter.var.woff2 +0 -0
  385. package/dist/runtime/types/blokkOptions.d.ts +83 -0
  386. package/dist/runtime/types/blokkOptions.js +0 -0
  387. package/dist/runtime/types/generatedModuleTypes.d.ts +41 -0
  388. package/dist/runtime/types/generatedModuleTypes.js +0 -0
  389. package/dist/runtime/types/index.d.ts +1052 -0
  390. package/dist/runtime/types/index.js +1 -0
  391. package/dist/runtime/types/theme.d.ts +33 -0
  392. package/dist/runtime/types/theme.js +0 -0
  393. package/dist/types.d.mts +1 -0
  394. package/dist/types.d.ts +1 -0
  395. package/package.json +103 -0
@@ -0,0 +1,420 @@
1
+ <template>
2
+ <div
3
+ class="bk-dragging-overlay"
4
+ :style="style"
5
+ :class="[{ 'bk-is-touch': isTouch }, { 'bk-is-active': !!activeLabel }]"
6
+ >
7
+ <Transition name="bk-drag-item">
8
+ <div
9
+ v-show="activeLabel"
10
+ class="bk-dragging-overlay-label"
11
+ :style="{ backgroundColor: activeColor }"
12
+ >
13
+ <Icon name="cursor-move" />
14
+ <p v-html="activeLabel" />
15
+ </div>
16
+ </Transition>
17
+ <div
18
+ v-for="(rect, i) in rects"
19
+ :key="i"
20
+ class="bk-dragging-overlay-item"
21
+ :class="{ 'bk-is-top': rect.isTop, 'bk-is-fallback': !rect.markup }"
22
+ :style="{
23
+ width: rect.width + 'px',
24
+ height: rect.height + 'px',
25
+ transform: `translate(${rect.x}px, ${rect.y}px) scale(${rect.scaleX}, ${rect.scaleY})`,
26
+ opacity: rect.opacity,
27
+ background: rect.background,
28
+ transformOrigin: rect.transformOrigin,
29
+ borderRadius: rect.borderRadius,
30
+ }"
31
+ >
32
+ <div
33
+ v-if="rect.markup"
34
+ class="bk-dragging-overlay-markup"
35
+ v-html="rect.markup"
36
+ />
37
+ <div
38
+ v-else
39
+ class="bk-dragging-overlay-fallback"
40
+ :style="{ color: rect.fallbackColor }"
41
+ >
42
+ <div :style="{ transform: `scale(${1 / rect.to.scaleX})` }">
43
+ <template v-if="rect.isTop">
44
+ <ItemIcon v-if="rect.bundle" :bundle="rect.bundle" />
45
+ <Icon v-else-if="rect.icon" :name="rect.icon as any" />
46
+ <div v-if="rect.label">{{ rect.label }}</div>
47
+ </template>
48
+ </div>
49
+ </div>
50
+ </div>
51
+ </div>
52
+ </template>
53
+
54
+ <script setup lang="ts">
55
+ import { ref, computed, useBlokkli, onMounted, onBeforeUnmount } from '#imports'
56
+ import type { Coord, DraggableItem, Rectangle } from '#blokkli/types'
57
+ import {
58
+ isInsideRect,
59
+ realBackgroundColor,
60
+ lerp,
61
+ falsy,
62
+ } from '#blokkli/helpers'
63
+ import { Icon, ItemIcon } from '#blokkli/components'
64
+ import { easeOutElastic } from '#blokkli/helpers/easing'
65
+ import onBlokkliEvent from '#blokkli/helpers/composables/onBlokkliEvent'
66
+
67
+ const { dom, ui, animation, theme, types } = useBlokkli()
68
+
69
+ const props = defineProps<{
70
+ /**
71
+ * The items being dragged/placed.
72
+ */
73
+ items: DraggableItem[]
74
+
75
+ /**
76
+ * The current x position of the cursor.
77
+ */
78
+ x: number
79
+
80
+ /**
81
+ * The current y position of the cursor.
82
+ */
83
+ y: number
84
+
85
+ /**
86
+ * The coordinates when the dragging action was started.
87
+ */
88
+ startCoords: Coord
89
+
90
+ isTouch: boolean
91
+
92
+ activeColor?: string
93
+ activeLabel?: string
94
+ }>()
95
+
96
+ const width = ref(10)
97
+ const height = ref(10)
98
+
99
+ const offsetX = ref(0)
100
+ const offsetY = ref(0)
101
+
102
+ const translateX = computed(() => {
103
+ if (props.isTouch) {
104
+ return window.innerWidth / 2 - width.value / 2
105
+ }
106
+ return props.x - offsetX.value
107
+ })
108
+
109
+ const translateY = computed(() => {
110
+ if (props.isTouch) {
111
+ // 50 is the height of the "cancel dragging" button at the bottom.
112
+ // 20 is the desired margin to the edge of the button.
113
+ // The Math.max() calculation makes sure that a maximum of 100px is visible
114
+ // of the drag items.
115
+ return -50 - 20 + Math.max(0, height.value - 100)
116
+ }
117
+ return props.y - offsetY.value
118
+ })
119
+
120
+ const style = computed(() => {
121
+ return {
122
+ width: width.value + 'px',
123
+ height: height.value + 'px',
124
+ transform: `translate(${translateX.value}px, ${translateY.value}px)`,
125
+ '--bk-active-color': props.activeColor || 'rgba(255,255,255,0)',
126
+ }
127
+ })
128
+
129
+ function getRect(): Rectangle {
130
+ return {
131
+ x: translateX.value,
132
+ y: translateY.value,
133
+ width: width.value,
134
+ height: height.value,
135
+ }
136
+ }
137
+
138
+ defineExpose({ getRect })
139
+
140
+ type AnimationRectangleValues = {
141
+ opacity: number
142
+ scaleX: number
143
+ scaleY: number
144
+ x: number
145
+ y: number
146
+ }
147
+
148
+ type AnimationRectangle = Rectangle &
149
+ AnimationRectangleValues & {
150
+ isTop: boolean
151
+ from: AnimationRectangleValues
152
+ to: AnimationRectangleValues
153
+ markup: string
154
+ background: string
155
+ prevVisibility?: string
156
+ transformOrigin: string
157
+ element: HTMLElement
158
+ borderRadius: string
159
+ bundle?: string
160
+ icon?: string
161
+ label?: string
162
+ fallbackColor: string
163
+ }
164
+
165
+ const rects = ref<AnimationRectangle[]>([])
166
+
167
+ const animationStart = Date.now()
168
+ const duration = 500
169
+ const isDone = ref(false)
170
+
171
+ onBlokkliEvent('animationFrame', () => {
172
+ if (isDone.value) {
173
+ return
174
+ }
175
+ const newRects: AnimationRectangle[] = []
176
+
177
+ const elapsed = Date.now() - animationStart
178
+ const alphaX = easeOutElastic(elapsed / duration, 1.92, 0.91)
179
+ const alphaY = easeOutElastic(elapsed / duration, 2.2, 0.76)
180
+ const opacityAlpha = Math.min(Math.max(elapsed - 300, 0) / 200, 1)
181
+
182
+ for (let i = 0; i < rects.value.length; i++) {
183
+ const rect = rects.value[i]
184
+ const newX = lerp(rect.from.x, rect.to.x, alphaX)
185
+ const newY = lerp(rect.from.y, rect.to.y, alphaY)
186
+ const newOpacity = lerp(rect.from.opacity, rect.to.opacity, opacityAlpha)
187
+
188
+ const newScaleX = lerp(rect.from.scaleX, rect.to.scaleX, alphaX)
189
+ const newScaleY = lerp(rect.from.scaleY, rect.to.scaleY, alphaY)
190
+
191
+ animation.requestDraw()
192
+
193
+ newRects.push({
194
+ ...rect,
195
+ x: newX,
196
+ y: newY,
197
+ scaleX: newScaleX,
198
+ scaleY: newScaleY,
199
+ opacity: newOpacity,
200
+ })
201
+ }
202
+
203
+ if (
204
+ elapsed > duration ||
205
+ !ui.useAnimations.value ||
206
+ ui.lowPerformanceMode.value
207
+ ) {
208
+ rects.value = newRects.map((v) => {
209
+ return {
210
+ ...v,
211
+ opacity: v.to.opacity,
212
+ scaleX: v.to.scaleX,
213
+ scaleY: v.to.scaleY,
214
+ x: v.to.x,
215
+ y: v.to.y,
216
+ }
217
+ })
218
+ isDone.value = true
219
+ return
220
+ }
221
+ rects.value = newRects
222
+ })
223
+
224
+ function getDraggingBounds(
225
+ mouse: Coord,
226
+ rect: Rectangle,
227
+ maxWidth: number,
228
+ ): Rectangle {
229
+ // The aspect ratio of the original rectangle.
230
+ const aspectRatio = rect.width / rect.height
231
+
232
+ // Apply maxWidth constraint to the rectangle's width and adjust height proportionally.
233
+ const effectiveWidth = Math.min(rect.width, maxWidth)
234
+ const effectiveHeight = effectiveWidth / aspectRatio
235
+
236
+ // Calculate the relative position of the drag start within the original rectangle.
237
+ const relativeX = mouse.x - rect.x
238
+ const relativeY = mouse.y - rect.y
239
+
240
+ // Calculate the proportional positions within the constrained rectangle
241
+ const proportionX = rect.width > 0 ? relativeX / rect.width : 0
242
+ const proportionY = rect.height > 0 ? relativeY / rect.height : 0
243
+
244
+ const effectiveRelativeX = effectiveWidth * proportionX
245
+ const effectiveRelativeY = effectiveHeight * proportionY
246
+
247
+ // Calculate final position
248
+ const finalX = mouse.x - effectiveRelativeX
249
+ const finalY = mouse.y - effectiveRelativeY
250
+
251
+ return {
252
+ x: finalX,
253
+ y: finalY,
254
+ width: effectiveWidth,
255
+ height: effectiveHeight,
256
+ }
257
+ }
258
+
259
+ onMounted(() => {
260
+ const elRects = props.items
261
+ .map((item, index) => {
262
+ const itemElement =
263
+ item.itemType === 'existing' ? dom.getDragElement(item) : item.element()
264
+ if (!itemElement) {
265
+ return
266
+ }
267
+ const element = (itemElement.querySelector('.bk-drop-element') ||
268
+ itemElement) as HTMLElement
269
+
270
+ return {
271
+ rect: element.getBoundingClientRect(),
272
+ element,
273
+ item,
274
+ index,
275
+ }
276
+ })
277
+ .filter(falsy)
278
+
279
+ // Find the matching bound rectangle that will determine the size of the box that is being dragged.
280
+ const boundRect =
281
+ elRects.find((v) =>
282
+ isInsideRect(props.startCoords.x, props.startCoords.y, v.rect),
283
+ ) || elRects[0]
284
+
285
+ const bounds = getDraggingBounds(
286
+ props.startCoords,
287
+ boundRect.rect,
288
+ // Limit width to 250px
289
+ 340,
290
+ )
291
+ const boundsX = props.isTouch ? 0 : bounds.x
292
+ const boundsY = props.isTouch ? translateY.value : bounds.y
293
+
294
+ offsetX.value = props.startCoords.x - boundsX
295
+ offsetY.value = props.startCoords.y - boundsY
296
+ width.value = bounds.width
297
+ height.value = bounds.height
298
+
299
+ rects.value = elRects
300
+ .map((item) => {
301
+ // If the item is an existing one, we have to take the current artboard
302
+ // scale into account when resizing the drag item.
303
+ // All other item types (such as clipboard or search) are always rendered
304
+ // at a 1 scale, since they are not inside the artboard.
305
+ const artboardScale =
306
+ item.item.itemType === 'existing' ? ui.artboardScale.value : 1
307
+ const isTop = item.index === boundRect.index
308
+ const rect = item.rect
309
+ const element =
310
+ item.item.itemType === 'existing'
311
+ ? dom.getDragElement(item.item)
312
+ : item.item.element()
313
+ if (!element) {
314
+ return
315
+ }
316
+ const baseRect = element.getBoundingClientRect()
317
+ const targetScaleX = Math.min(bounds.width / item.element.offsetWidth, 1)
318
+ const targetScaleY = targetScaleX
319
+
320
+ const originX = 0
321
+ const originY = 0
322
+
323
+ const from: AnimationRectangleValues = {
324
+ opacity: isTop ? 1 : 0.9,
325
+ scaleX: Math.min(baseRect.width / rect.width, 1) * artboardScale,
326
+ scaleY: Math.min(baseRect.width / rect.width, 1) * artboardScale,
327
+ x: props.isTouch ? rect.x - translateX.value : rect.x - boundsX,
328
+ y: props.isTouch
329
+ ? -rect.height -
330
+ (window.innerHeight -
331
+ bounds.height -
332
+ rect.y -
333
+ rect.height +
334
+ translateY.value)
335
+ : rect.y - boundsY,
336
+ }
337
+
338
+ const to: AnimationRectangleValues = {
339
+ opacity: isTop ? 1 : 0.1,
340
+ x: 0,
341
+ y: 0,
342
+ scaleX: targetScaleX,
343
+ scaleY: targetScaleY,
344
+ }
345
+
346
+ const style = theme.getDraggableStyle(element)
347
+ // Get the markup and let the method check the size of the clone.
348
+ // For elements with a very large DOM the cloning can become quite a
349
+ // performance issue which results in a noticeable lag. In this case
350
+ // we instead render a simple fallback.
351
+ const markup =
352
+ (elRects.length < 6 || isTop) && !ui.lowPerformanceMode.value
353
+ ? dom.getDropElementMarkup(item.item, true)
354
+ : ''
355
+ let bundle: string | undefined
356
+ let label = ''
357
+
358
+ if (!markup) {
359
+ if (item.item.itemType === 'existing' && item.item.editTitle) {
360
+ label = item.item.editTitle
361
+ }
362
+
363
+ if ('itemBundle' in item.item) {
364
+ bundle = item.item.itemBundle
365
+ if (bundle) {
366
+ const definition = types.getBlockBundleDefinition(bundle)
367
+ if (definition) {
368
+ label = definition.label
369
+ }
370
+ }
371
+ }
372
+ }
373
+
374
+ return {
375
+ isTop,
376
+ from: ui.lowPerformanceMode.value ? to : from,
377
+ to,
378
+ ...from,
379
+ width: item.element.offsetWidth,
380
+ height: item.element.offsetHeight,
381
+ opacity: 1,
382
+
383
+ transformOrigin: `${originX}px ${originY}px`,
384
+ markup,
385
+ background: realBackgroundColor(item.element),
386
+ prevVisibility:
387
+ item.item.itemType === 'existing' ||
388
+ item.item.itemType === 'existing_structure'
389
+ ? item.element.style.visibility
390
+ : undefined,
391
+ element: item.element,
392
+ borderRadius: style.radiusString,
393
+ bundle,
394
+ label,
395
+ fallbackColor: style.textColor,
396
+ }
397
+ })
398
+ .filter(falsy)
399
+
400
+ elRects.forEach((item) => {
401
+ if (
402
+ item.item.itemType === 'existing' ||
403
+ item.item.itemType === 'existing_structure'
404
+ ) {
405
+ // Set the visibility to hidden. Unlike setting opacity or filter, this
406
+ // does not trigger layout trashing and style recalculation.
407
+ item.element.style.visibility = 'hidden'
408
+ }
409
+ })
410
+ })
411
+
412
+ onBeforeUnmount(() => {
413
+ // Restore the original visibility on the blocks.
414
+ rects.value.forEach((item) => {
415
+ if (item.prevVisibility !== undefined) {
416
+ item.element.style.visibility = item.prevVisibility
417
+ }
418
+ })
419
+ })
420
+ </script>
@@ -0,0 +1,58 @@
1
+ precision mediump float;
2
+
3
+ varying float v_intersecting;
4
+ varying vec4 v_quad;
5
+ varying vec3 v_color_default;
6
+ varying vec3 v_color_active;
7
+
8
+ uniform float u_scale;
9
+ uniform float u_dpi;
10
+ uniform vec2 u_resolution;
11
+
12
+ float roundedBoxSDF(vec2 CenterPosition, vec2 Size, float Radius) {
13
+ return length(max(abs(CenterPosition) - Size + Radius, 0.0)) - Radius;
14
+ }
15
+
16
+ void main() {
17
+ float radius_base = 2.0 * u_scale;
18
+ float thickness = max(min(1.0 * u_scale, 3.0), 0.5);
19
+ float inset = max(min(2.0 * u_scale, 1.0), 2.0) * thickness;
20
+
21
+ float u_rect_x = v_quad.x + inset;
22
+ float u_rect_y = v_quad.y + inset;
23
+ float u_rectWidth = v_quad.z - 2.0 * inset;
24
+ float u_rectHeight = v_quad.w - 2.0 * inset;
25
+
26
+ vec2 size = vec2(u_rectWidth, u_rectHeight);
27
+
28
+ float x = u_rect_x;
29
+ float y = u_rect_y;
30
+ vec2 offsetPosition = vec2(x + size.x / 2.0, y + size.y / 2.0);
31
+
32
+ vec2 location = vec2(offsetPosition);
33
+
34
+ float edgeSoftness = 1.0 * u_dpi;
35
+ float radius =
36
+ min(radius_base * u_dpi, min(size.x, size.y) / 2.0) + thickness * 2.0;
37
+
38
+ float distance = roundedBoxSDF(
39
+ location - gl_FragCoord.xy,
40
+ size / 2.0,
41
+ radius
42
+ );
43
+
44
+ bool is_intersecting = v_intersecting >= 0.5;
45
+
46
+ vec3 color = is_intersecting ? v_color_active : v_color_default;
47
+ float mixedDistance = is_intersecting ? distance : abs(distance);
48
+
49
+ float smoothedAlpha =
50
+ 1.0 - smoothstep(-edgeSoftness, edgeSoftness, mixedDistance - thickness);
51
+
52
+ gl_FragColor = vec4(
53
+ color,
54
+ is_intersecting
55
+ ? smoothedAlpha - 0.4
56
+ : smoothedAlpha
57
+ );
58
+ }