@blokkli/editor 2.0.0-alpha.13 → 2.0.0-alpha.14

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 (272) hide show
  1. package/dist/module.d.mts +1 -1
  2. package/dist/module.json +1 -1
  3. package/dist/module.mjs +4003 -1162
  4. package/dist/modules/drupal/graphql/base/fragment.ParagraphsBlokkliConfigInput.graphql +31 -0
  5. package/dist/modules/drupal/graphql/base/fragment.blokkliProps.graphql +1 -0
  6. package/dist/modules/drupal/graphql/base/fragment.paragraphsBlokkliEditState.graphql +1 -0
  7. package/dist/modules/drupal/graphql/base/query.pbEntityConfig.graphql +5 -0
  8. package/dist/modules/drupal/graphql/features/transform.graphql +9 -1
  9. package/dist/modules/drupal/graphql/features/transform_host.graphql +38 -0
  10. package/dist/modules/drupal/graphql/mutations/update_host_options.graphql +15 -0
  11. package/dist/modules/drupal/index.d.mts +1 -1
  12. package/dist/modules/drupal/index.mjs +20 -7
  13. package/dist/modules/drupal/runtime/adapter/index.js +109 -4
  14. package/dist/runtime/adapter/index.d.ts +54 -1
  15. package/dist/runtime/blokkliPlugins/AddAction/index.vue +27 -3
  16. package/dist/runtime/blokkliPlugins/BlockIndicator/index.vue +65 -0
  17. package/dist/runtime/blokkliPlugins/BlockIndicator/index.vue.d.ts +26 -0
  18. package/dist/runtime/blokkliPlugins/ContextMenu/Menu/index.vue +3 -0
  19. package/dist/runtime/blokkliPlugins/ContextMenu/index.vue +3 -2
  20. package/dist/runtime/blokkliPlugins/DroppableEdit/index.vue +3 -3
  21. package/dist/runtime/blokkliPlugins/ItemDropdown/index.vue +49 -11
  22. package/dist/runtime/blokkliPlugins/ItemDropdown/index.vue.d.ts +29 -15
  23. package/dist/runtime/blokkliPlugins/Sidebar/Detached/index.vue +6 -7
  24. package/dist/runtime/blokkliPlugins/Sidebar/index.vue +2 -9
  25. package/dist/runtime/blokkliPlugins/Sidebar/index.vue.d.ts +1 -1
  26. package/dist/runtime/blokkliPlugins/ViewOption/index.vue +6 -3
  27. package/dist/runtime/blokkliPlugins/index.d.ts +8 -7
  28. package/dist/runtime/blokkliPlugins/index.js +15 -13
  29. package/dist/runtime/components/Blocks/Fragment/icon.svg +1 -1
  30. package/dist/runtime/components/BlokkliProvider.vue +1 -0
  31. package/dist/runtime/components/BlokkliProvider.vue.d.ts +1 -0
  32. package/dist/runtime/components/Edit/Actions/index.vue +39 -67
  33. package/dist/runtime/components/Edit/AddListItem/index.vue +2 -5
  34. package/dist/runtime/components/Edit/AddListItem/index.vue.d.ts +1 -1
  35. package/dist/runtime/components/Edit/AddListItemIcon/index.vue +19 -0
  36. package/dist/runtime/components/Edit/AddListItemIcon/index.vue.d.ts +15 -0
  37. package/dist/runtime/components/Edit/AppMenu/index.vue +5 -5
  38. package/dist/runtime/components/Edit/Dialog/index.vue +5 -1
  39. package/dist/runtime/components/Edit/Dialog/index.vue.d.ts +1 -1
  40. package/dist/runtime/components/Edit/DiffViewer/State.vue +276 -0
  41. package/dist/runtime/components/Edit/DiffViewer/State.vue.d.ts +16 -0
  42. package/dist/runtime/components/Edit/DragInteractions/index.vue +35 -6
  43. package/dist/runtime/components/Edit/EditProvider.vue +46 -35
  44. package/dist/runtime/components/Edit/Features/AddList/index.vue +15 -25
  45. package/dist/runtime/components/Edit/Features/Analyze/Overlay/fragment.glsl +58 -0
  46. package/dist/runtime/components/Edit/Features/Analyze/Overlay/index.vue +168 -0
  47. package/dist/runtime/components/Edit/Features/Analyze/Overlay/index.vue.d.ts +9 -0
  48. package/dist/runtime/components/Edit/Features/Analyze/Overlay/vertex.glsl +72 -0
  49. package/dist/runtime/components/Edit/Features/Analyze/Renderer.vue +159 -0
  50. package/dist/runtime/components/Edit/Features/Analyze/Renderer.vue.d.ts +7 -0
  51. package/dist/runtime/components/Edit/Features/Analyze/Results/Results.vue +100 -0
  52. package/dist/runtime/components/Edit/Features/Analyze/Results/Results.vue.d.ts +6 -0
  53. package/dist/runtime/components/Edit/Features/Analyze/Results/ResultsItem.vue +56 -0
  54. package/dist/runtime/components/Edit/Features/Analyze/Results/ResultsItem.vue.d.ts +3 -0
  55. package/dist/runtime/components/Edit/Features/Analyze/Results/ResultsItemNodes.vue +87 -0
  56. package/dist/runtime/components/Edit/Features/Analyze/Results/ResultsItemNodes.vue.d.ts +7 -0
  57. package/dist/runtime/components/Edit/Features/Analyze/Results/ResultsItemNodesTarget.vue +101 -0
  58. package/dist/runtime/components/Edit/Features/Analyze/Results/ResultsItemNodesTarget.vue.d.ts +8 -0
  59. package/dist/runtime/components/Edit/Features/Analyze/Results/Status.vue +18 -0
  60. package/dist/runtime/components/Edit/Features/Analyze/Results/Status.vue.d.ts +8 -0
  61. package/dist/runtime/components/Edit/Features/Analyze/Summary/Chart.vue +92 -0
  62. package/dist/runtime/components/Edit/Features/Analyze/Summary/Chart.vue.d.ts +17 -0
  63. package/dist/runtime/components/Edit/Features/Analyze/Summary/index.vue +77 -0
  64. package/dist/runtime/components/Edit/Features/Analyze/Summary/index.vue.d.ts +6 -0
  65. package/dist/runtime/components/Edit/Features/Analyze/analyzers/axe.d.ts +12 -0
  66. package/dist/runtime/components/Edit/Features/Analyze/analyzers/axe.js +75 -0
  67. package/dist/runtime/components/Edit/Features/Analyze/analyzers/defineAnalyzer.d.ts +4 -0
  68. package/dist/runtime/components/Edit/Features/Analyze/analyzers/defineAnalyzer.js +5 -0
  69. package/dist/runtime/components/Edit/Features/Analyze/analyzers/helpers/Context.d.ts +32 -0
  70. package/dist/runtime/components/Edit/Features/Analyze/analyzers/helpers/Context.js +45 -0
  71. package/dist/runtime/components/Edit/Features/Analyze/analyzers/helpers/collectTextElements.d.ts +5 -0
  72. package/dist/runtime/components/Edit/Features/Analyze/analyzers/helpers/collectTextElements.js +95 -0
  73. package/dist/runtime/components/Edit/Features/Analyze/analyzers/helpers/normalizeArray.d.ts +3 -0
  74. package/dist/runtime/components/Edit/Features/Analyze/analyzers/helpers/normalizeArray.js +13 -0
  75. package/dist/runtime/components/Edit/Features/Analyze/analyzers/index.d.ts +2 -0
  76. package/dist/runtime/components/Edit/Features/Analyze/analyzers/index.js +2 -0
  77. package/dist/runtime/components/Edit/Features/Analyze/analyzers/readability.d.ts +2 -0
  78. package/dist/runtime/components/Edit/Features/Analyze/analyzers/readability.js +165 -0
  79. package/dist/runtime/components/Edit/Features/Analyze/analyzers/types.d.ts +44 -0
  80. package/dist/runtime/components/Edit/Features/Analyze/analyzers/types.js +0 -0
  81. package/dist/runtime/components/Edit/Features/Analyze/helper.d.ts +5 -0
  82. package/dist/runtime/components/Edit/Features/Analyze/helper.js +28 -0
  83. package/dist/runtime/components/Edit/Features/Analyze/index.vue +44 -0
  84. package/dist/runtime/components/Edit/Features/Anchors/Renderer.vue +136 -0
  85. package/dist/runtime/components/Edit/Features/Anchors/index.vue +32 -0
  86. package/dist/runtime/components/Edit/Features/Anchors/index.vue.d.ts +2 -0
  87. package/dist/runtime/components/Edit/Features/Artboard/Overview/index.vue +25 -13
  88. package/dist/runtime/components/Edit/Features/Artboard/Renderer.vue +296 -0
  89. package/dist/runtime/components/Edit/Features/Artboard/Renderer.vue.d.ts +7 -0
  90. package/dist/runtime/components/Edit/Features/Artboard/index.vue +10 -245
  91. package/dist/runtime/components/Edit/Features/Assistant/index.vue +3 -2
  92. package/dist/runtime/components/Edit/Features/BlockAddList/index.vue +4 -4
  93. package/dist/runtime/components/Edit/Features/Clipboard/index.vue +161 -28
  94. package/dist/runtime/components/Edit/Features/CommandPalette/Palette/Group/index.vue +16 -4
  95. package/dist/runtime/components/Edit/Features/CommandPalette/Palette/Group/index.vue.d.ts +0 -1
  96. package/dist/runtime/components/Edit/Features/CommandPalette/Palette/index.vue +4 -53
  97. package/dist/runtime/components/Edit/Features/CommandPalette/index.vue +3 -2
  98. package/dist/runtime/components/Edit/Features/Conversions/index.vue +12 -14
  99. package/dist/runtime/components/Edit/Features/Debug/Viewport/index.vue +14 -0
  100. package/dist/runtime/components/Edit/Features/Debug/index.vue +27 -24
  101. package/dist/runtime/components/Edit/Features/Diff/DiffView/index.vue +13 -190
  102. package/dist/runtime/components/Edit/Features/Diff/index.vue +2 -2
  103. package/dist/runtime/components/Edit/Features/DraggingOverlay/DragItems/index.vue +4 -4
  104. package/dist/runtime/components/Edit/Features/DraggingOverlay/DropTargets/fragment.glsl +1 -1
  105. package/dist/runtime/components/Edit/Features/DraggingOverlay/DropTargets/index.vue +35 -71
  106. package/dist/runtime/components/Edit/Features/DraggingOverlay/DropTargets/vertex.glsl +1 -1
  107. package/dist/runtime/components/Edit/Features/DraggingOverlay/index.vue +62 -48
  108. package/dist/runtime/components/Edit/Features/EditForm/Frame/index.vue +3 -3
  109. package/dist/runtime/components/Edit/Features/EditForm/index.vue +3 -3
  110. package/dist/runtime/components/Edit/Features/EditableField/index.vue +6 -2
  111. package/dist/runtime/components/Edit/Features/EditableMask/index.vue +3 -20
  112. package/dist/runtime/components/Edit/Features/Fragments/index.vue +3 -2
  113. package/dist/runtime/components/Edit/Features/History/index.vue +35 -12
  114. package/dist/runtime/components/Edit/Features/ImportExisting/Dialog/index.vue +6 -2
  115. package/dist/runtime/components/Edit/Features/ImportExisting/index.vue +3 -2
  116. package/dist/runtime/components/Edit/Features/Library/index.vue +11 -9
  117. package/dist/runtime/components/Edit/Features/MediaLibrary/Library/index.vue +5 -8
  118. package/dist/runtime/components/Edit/Features/MultiSelect/Overlay/fragment.glsl +1 -1
  119. package/dist/runtime/components/Edit/Features/MultiSelect/Overlay/index.vue +9 -4
  120. package/dist/runtime/components/Edit/Features/MultiSelect/Overlay/vertex.glsl +1 -1
  121. package/dist/runtime/components/Edit/Features/MultiSelect/index.vue +8 -14
  122. package/dist/runtime/components/Edit/Features/Options/Form/Checkbox/index.vue +3 -2
  123. package/dist/runtime/components/Edit/Features/Options/Form/Checkbox/index.vue.d.ts +2 -0
  124. package/dist/runtime/components/Edit/Features/Options/Form/Item.vue +9 -3
  125. package/dist/runtime/components/Edit/Features/Options/Form/Item.vue.d.ts +0 -1
  126. package/dist/runtime/components/Edit/Features/Options/Form/Radios/index.vue +37 -19
  127. package/dist/runtime/components/Edit/Features/Options/Form/Radios/index.vue.d.ts +8 -2
  128. package/dist/runtime/components/Edit/Features/Options/Form/index.vue +81 -37
  129. package/dist/runtime/components/Edit/Features/Options/Form/index.vue.d.ts +5 -5
  130. package/dist/runtime/components/Edit/Features/Options/index.vue +30 -6
  131. package/dist/runtime/components/Edit/Features/PreviewGrant/index.vue +3 -3
  132. package/dist/runtime/components/Edit/Features/Publish/Dialog/index.vue +1 -0
  133. package/dist/runtime/components/Edit/Features/Publish/index.vue +3 -2
  134. package/dist/runtime/components/Edit/Features/Revert/index.vue +3 -3
  135. package/dist/runtime/components/Edit/Features/Search/index.vue +3 -2
  136. package/dist/runtime/components/Edit/Features/Selection/AddButtons/AddButtonsField.vue +54 -0
  137. package/dist/runtime/components/Edit/Features/Selection/AddButtons/AddButtonsField.vue.d.ts +14 -0
  138. package/dist/runtime/components/Edit/Features/Selection/AddButtons/Overlay/index.vue +120 -0
  139. package/dist/runtime/components/Edit/Features/Selection/AddButtons/Overlay/index.vue.d.ts +15 -0
  140. package/dist/runtime/components/Edit/Features/Selection/AddButtons/index.vue +459 -0
  141. package/dist/runtime/components/Edit/Features/Selection/AddButtons/index.vue.d.ts +6 -0
  142. package/dist/runtime/components/Edit/Features/Selection/Overlay/fragment.glsl +14 -9
  143. package/dist/runtime/components/Edit/Features/Selection/Overlay/index.vue +32 -11
  144. package/dist/runtime/components/Edit/Features/Selection/Overlay/vertex.glsl +1 -1
  145. package/dist/runtime/components/Edit/Features/Selection/index.vue +76 -7
  146. package/dist/runtime/components/Edit/Features/Settings/Dialog/FeatureSetting/index.vue +12 -17
  147. package/dist/runtime/components/Edit/Features/Settings/index.vue +11 -25
  148. package/dist/runtime/components/Edit/Features/Theme/Color/index.vue +5 -1
  149. package/dist/runtime/components/Edit/Features/Theme/index.vue +2 -1
  150. package/dist/runtime/components/Edit/Features/TouchActionBar/index.vue +3 -2
  151. package/dist/runtime/components/Edit/Features/Transform/Dialog/index.vue +198 -0
  152. package/dist/runtime/components/Edit/Features/Transform/Dialog/index.vue.d.ts +13 -0
  153. package/dist/runtime/components/Edit/Features/Transform/index.vue +155 -44
  154. package/dist/runtime/components/Edit/Form/Radio/index.vue +33 -0
  155. package/dist/runtime/components/Edit/Form/Radio/index.vue.d.ts +20 -0
  156. package/dist/runtime/components/Edit/Form/RadioTabs/index.vue +37 -0
  157. package/dist/runtime/components/Edit/Form/RadioTabs/index.vue.d.ts +22 -0
  158. package/dist/runtime/components/Edit/Form/Select/index.vue +29 -0
  159. package/dist/runtime/components/Edit/Form/Select/index.vue.d.ts +20 -0
  160. package/dist/runtime/components/Edit/Form/Text/index.vue +33 -0
  161. package/dist/runtime/components/Edit/Form/Text/index.vue.d.ts +19 -0
  162. package/dist/runtime/components/Edit/Form/Textarea/index.vue +13 -6
  163. package/dist/runtime/components/Edit/Form/Textarea/index.vue.d.ts +4 -0
  164. package/dist/runtime/components/Edit/FormOverlay/index.vue +1 -1
  165. package/dist/runtime/components/Edit/Indicators/index.vue +123 -0
  166. package/dist/runtime/components/Edit/Indicators/index.vue.d.ts +2 -0
  167. package/dist/runtime/components/Edit/ItemIcon/index.vue +2 -1
  168. package/dist/runtime/components/Edit/Konami/Game/PixelGrid.vue +66 -0
  169. package/dist/runtime/components/Edit/Konami/Game/PixelGrid.vue.d.ts +7 -0
  170. package/dist/runtime/components/Edit/Konami/Game/blokkli.png +0 -0
  171. package/dist/runtime/components/Edit/Konami/Game/charmap.d.ts +2 -0
  172. package/dist/runtime/components/Edit/Konami/Game/charmap.js +168 -0
  173. package/dist/runtime/components/Edit/Konami/Game/index.vue +745 -0
  174. package/dist/runtime/components/Edit/Konami/Game/index.vue.d.ts +6 -0
  175. package/dist/runtime/components/Edit/Konami/Game/textRendering.d.ts +8 -0
  176. package/dist/runtime/components/Edit/Konami/Game/textRendering.js +138 -0
  177. package/dist/runtime/components/Edit/Konami/Game/useIconRendering.d.ts +9 -0
  178. package/dist/runtime/components/Edit/Konami/Game/useIconRendering.js +130 -0
  179. package/dist/runtime/components/Edit/Konami/index.vue +44 -0
  180. package/dist/runtime/components/Edit/Konami/index.vue.d.ts +2 -0
  181. package/dist/runtime/components/Edit/Loading/index.vue +6 -2
  182. package/dist/runtime/components/Edit/Loading/index.vue.d.ts +2 -0
  183. package/dist/runtime/components/Edit/Messages/index.vue +8 -3
  184. package/dist/runtime/components/Edit/PluginConfigForm/Checkbox/index.vue +17 -0
  185. package/dist/runtime/components/Edit/PluginConfigForm/Checkbox/index.vue.d.ts +11 -0
  186. package/dist/runtime/components/Edit/PluginConfigForm/Options/index.vue +37 -0
  187. package/dist/runtime/components/Edit/PluginConfigForm/Options/index.vue.d.ts +11 -0
  188. package/dist/runtime/components/Edit/PluginConfigForm/Text/index.vue +43 -0
  189. package/dist/runtime/components/Edit/PluginConfigForm/Text/index.vue.d.ts +11 -0
  190. package/dist/runtime/components/Edit/PluginConfigForm/index.vue +57 -0
  191. package/dist/runtime/components/Edit/PluginConfigForm/index.vue.d.ts +16 -0
  192. package/dist/runtime/components/Edit/PreviewProvider.vue +3 -4
  193. package/dist/runtime/components/Edit/RelativeTime/index.vue +3 -2
  194. package/dist/runtime/components/Edit/ShortcutIndicator/index.vue +8 -3
  195. package/dist/runtime/components/Edit/SystemRequirements/index.vue +3 -3
  196. package/dist/runtime/components/Edit/Toolbar/index.vue +3 -2
  197. package/dist/runtime/components/Edit/Transition/index.vue +41 -0
  198. package/dist/runtime/components/Edit/Transition/index.vue.d.ts +19 -0
  199. package/dist/runtime/components/Edit/index.d.ts +23 -15
  200. package/dist/runtime/components/Edit/index.js +44 -28
  201. package/dist/runtime/composables/defineBlokkli.js +7 -3
  202. package/dist/runtime/composables/defineBlokkliFeature.d.ts +4 -7
  203. package/dist/runtime/composables/defineBlokkliProvider.d.ts +11 -0
  204. package/dist/runtime/composables/defineBlokkliProvider.js +46 -0
  205. package/dist/runtime/composables/useBlokkliHelper.js +1 -1
  206. package/dist/runtime/constants/index.d.ts +3 -0
  207. package/dist/runtime/constants/index.js +3 -0
  208. package/dist/runtime/css/output.css +1 -1
  209. package/dist/runtime/helpers/addElementClasses.d.ts +2 -0
  210. package/dist/runtime/helpers/addElementClasses.js +24 -0
  211. package/dist/runtime/helpers/animationProvider.d.ts +4 -2
  212. package/dist/runtime/helpers/animationProvider.js +7 -2
  213. package/dist/runtime/helpers/bundles/index.d.ts +1 -0
  214. package/dist/runtime/helpers/bundles/index.js +4 -0
  215. package/dist/runtime/helpers/composables/useStickyToolbar.d.ts +20 -0
  216. package/dist/runtime/helpers/composables/useStickyToolbar.js +215 -0
  217. package/dist/runtime/helpers/definitionProvider.d.ts +2 -1
  218. package/dist/runtime/helpers/definitionProvider.js +17 -0
  219. package/dist/runtime/helpers/domProvider.d.ts +2 -1
  220. package/dist/runtime/helpers/domProvider.js +89 -43
  221. package/dist/runtime/helpers/dropTargets/index.d.ts +6 -0
  222. package/dist/runtime/helpers/dropTargets/index.js +49 -0
  223. package/dist/runtime/helpers/eventBus.d.ts +1 -1
  224. package/dist/runtime/helpers/eventBus.js +2 -2
  225. package/dist/runtime/helpers/index.d.ts +10 -1
  226. package/dist/runtime/helpers/index.js +57 -0
  227. package/dist/runtime/helpers/indicatorsProvider.d.ts +10 -0
  228. package/dist/runtime/helpers/indicatorsProvider.js +23 -0
  229. package/dist/runtime/helpers/keyboardProvider.d.ts +2 -0
  230. package/dist/runtime/helpers/keyboardProvider.js +17 -1
  231. package/dist/runtime/helpers/pluginProvider.d.ts +10 -0
  232. package/dist/runtime/helpers/pluginProvider.js +33 -0
  233. package/dist/runtime/helpers/renderCycle.d.ts +1 -0
  234. package/dist/runtime/helpers/renderCycle.js +10 -0
  235. package/dist/runtime/helpers/runtimeHelpers/index.js +14 -11
  236. package/dist/runtime/helpers/selectionProvider.d.ts +16 -0
  237. package/dist/runtime/helpers/selectionProvider.js +47 -35
  238. package/dist/runtime/helpers/stateProvider.d.ts +6 -2
  239. package/dist/runtime/helpers/stateProvider.js +58 -14
  240. package/dist/runtime/helpers/storageProvider.d.ts +4 -3
  241. package/dist/runtime/helpers/storageProvider.js +56 -3
  242. package/dist/runtime/helpers/symbols.d.ts +1 -0
  243. package/dist/runtime/helpers/symbols.js +1 -0
  244. package/dist/runtime/helpers/textProvider.js +6 -0
  245. package/dist/runtime/helpers/themeProvider.d.ts +2 -0
  246. package/dist/runtime/helpers/themeProvider.js +4 -1
  247. package/dist/runtime/helpers/transform.js +1 -3
  248. package/dist/runtime/helpers/uiProvider.d.ts +7 -2
  249. package/dist/runtime/helpers/uiProvider.js +49 -47
  250. package/dist/runtime/helpers/useTransitionedValue.d.ts +18 -0
  251. package/dist/runtime/helpers/useTransitionedValue.js +57 -0
  252. package/dist/runtime/icons/anchor.svg +1 -0
  253. package/dist/runtime/icons/arrow-left.svg +1 -1
  254. package/dist/runtime/icons/arrow-right.svg +1 -1
  255. package/dist/runtime/icons/arrow-top-right.svg +1 -0
  256. package/dist/runtime/icons/chart.svg +1 -0
  257. package/dist/runtime/icons/copy.svg +1 -0
  258. package/dist/runtime/icons/cursor-move.svg +1 -1
  259. package/dist/runtime/icons/diff.svg +1 -1
  260. package/dist/runtime/icons/eye.svg +1 -1
  261. package/dist/runtime/icons/info.svg +1 -1
  262. package/dist/runtime/icons/link.svg +1 -0
  263. package/dist/runtime/icons/speedometer.svg +1 -0
  264. package/dist/runtime/types/blokkOptions.d.ts +8 -0
  265. package/dist/runtime/types/index.d.ts +163 -5
  266. package/dist/runtime/types/theme.d.ts +2 -1
  267. package/dist/shared/{editor.gz_ac6uT.d.mts → editor.CKsrTpc1.d.mts} +1 -1
  268. package/package.json +20 -5
  269. package/dist/runtime/components/Edit/Features/FieldAreas/Overlay/index.vue +0 -22
  270. package/dist/runtime/components/Edit/Features/FieldAreas/index.vue +0 -41
  271. /package/dist/runtime/components/Edit/Features/{FieldAreas/Overlay → Analyze}/index.vue.d.ts +0 -0
  272. /package/dist/runtime/components/Edit/Features/{FieldAreas/index.vue.d.ts → Anchors/Renderer.vue.d.ts} +0 -0
@@ -5,13 +5,17 @@ import {
5
5
  readonly,
6
6
  provide
7
7
  } from "vue";
8
- import { refreshNuxtData } from "nuxt/app";
8
+ import { refreshNuxtData, useState } from "nuxt/app";
9
9
  import { INJECT_MUTATED_FIELDS_MAP } from "./symbols.js";
10
10
  import onBlokkliEvent from "./composables/onBlokkliEvent.js";
11
11
  import { falsy, getFieldKey } from "#blokkli/helpers";
12
12
  import { eventBus, emitMessage } from "#blokkli/helpers/eventBus";
13
13
  import { nextTick } from "#imports";
14
- export default async function(adapter, context, $t) {
14
+ import { addElementClasses } from "./addElementClasses.js";
15
+ const HOST_OPTION_KEY = "HOST";
16
+ export default async function(adapter, context, $t, providerKey) {
17
+ let _mappedState = null;
18
+ const overrideHostOptions = useState("options:" + providerKey);
15
19
  const stateLoaded = ref(false);
16
20
  const stateLoadError = ref(false);
17
21
  const owner = ref(null);
@@ -32,9 +36,10 @@ export default async function(adapter, context, $t) {
32
36
  });
33
37
  let fieldBlockCount = {};
34
38
  const blockBundleCount = ref({});
35
- const fieldListItemMap = {};
39
+ const fieldListItemMap = /* @__PURE__ */ new Map();
40
+ let bundleToUuids = {};
36
41
  function getFieldListItem(uuid) {
37
- const fieldKey = fieldListItemMap[uuid];
42
+ const fieldKey = fieldListItemMap.get(uuid);
38
43
  if (!fieldKey) {
39
44
  return;
40
45
  }
@@ -45,7 +50,7 @@ export default async function(adapter, context, $t) {
45
50
  return field.list.find((v) => v.uuid === uuid);
46
51
  }
47
52
  function getFieldListForBlock(uuid) {
48
- const fieldKey = fieldListItemMap[uuid];
53
+ const fieldKey = fieldListItemMap.get(uuid);
49
54
  if (!fieldKey) {
50
55
  return;
51
56
  }
@@ -58,17 +63,26 @@ export default async function(adapter, context, $t) {
58
63
  availableLanguages: [],
59
64
  translations: []
60
65
  });
61
- function setContext(context2) {
66
+ function setContext(context2, override) {
67
+ if (!override) {
68
+ _mappedState = context2 ?? null;
69
+ }
62
70
  const options = context2?.mutatedState?.mutatedOptions || {};
63
71
  const optionKeys = Object.keys(options);
64
72
  for (let i = 0; i < optionKeys.length; i++) {
65
73
  const key = optionKeys[i];
66
74
  const newOptions = options[key];
67
- const existing = mutatedOptions[key];
68
- if (!existing || JSON.stringify(existing) !== JSON.stringify(newOptions)) {
75
+ const existing2 = mutatedOptions[key];
76
+ if (!existing2 || JSON.stringify(existing2) !== JSON.stringify(newOptions)) {
69
77
  mutatedOptions[key] = newOptions;
70
78
  }
71
79
  }
80
+ const hostOptions = context2?.mutatedState?.mutatedHostOptions ?? {};
81
+ const existing = mutatedOptions[HOST_OPTION_KEY];
82
+ if (!existing || JSON.stringify(existing) !== JSON.stringify(hostOptions)) {
83
+ mutatedOptions[HOST_OPTION_KEY] = hostOptions ?? "";
84
+ overrideHostOptions.value = hostOptions;
85
+ }
72
86
  mutations.value = context2?.mutations || [];
73
87
  violations.value = context2?.mutatedState?.violations || [];
74
88
  const currentIndex = context2?.currentIndex;
@@ -96,13 +110,15 @@ export default async function(adapter, context, $t) {
96
110
  mutatedEntity.value = context2?.mutatedEntity;
97
111
  const visitedFieldKeys = [];
98
112
  const newBlockBundleCount = {};
113
+ fieldListItemMap.clear();
99
114
  fieldBlockCount = {};
115
+ bundleToUuids = {};
100
116
  for (let i = 0; i < newMutatedFields.length; i++) {
101
117
  const field = newMutatedFields[i];
102
118
  const key = getFieldKey(field.entityUuid, field.name);
103
119
  visitedFieldKeys.push(key);
104
- const existing = mutatedFieldsMap[key];
105
- if (!existing || existing.list.length !== field.list.length || JSON.stringify(existing.list) !== JSON.stringify(field.list)) {
120
+ const existing2 = mutatedFieldsMap[key];
121
+ if (!existing2 || existing2.list.length !== field.list.length || JSON.stringify(existing2.list) !== JSON.stringify(field.list)) {
106
122
  mutatedFieldsMap[key] = field;
107
123
  }
108
124
  for (let j = 0; j < field.list.length; j++) {
@@ -111,7 +127,11 @@ export default async function(adapter, context, $t) {
111
127
  newBlockBundleCount[item.bundle] = 0;
112
128
  }
113
129
  newBlockBundleCount[item.bundle]++;
114
- fieldListItemMap[item.uuid] = key;
130
+ fieldListItemMap.set(item.uuid, key);
131
+ if (!bundleToUuids[item.bundle]) {
132
+ bundleToUuids[item.bundle] = [];
133
+ }
134
+ bundleToUuids[item.bundle].push(item.uuid);
115
135
  }
116
136
  }
117
137
  blockBundleCount.value = newBlockBundleCount;
@@ -144,13 +164,18 @@ export default async function(adapter, context, $t) {
144
164
  return count;
145
165
  }
146
166
  function lockBody() {
147
- document.body.classList.add("bk-body-loading");
148
167
  isLoading.value = true;
149
168
  }
150
169
  function unlockBody() {
151
- document.body.classList.remove("bk-body-loading");
152
170
  isLoading.value = false;
153
171
  }
172
+ function getAllUuids(bundle) {
173
+ if (!bundle) {
174
+ return [...fieldListItemMap.keys()];
175
+ }
176
+ return bundleToUuids[bundle] ?? [];
177
+ }
178
+ addElementClasses(document.body, "bk-body-loading", isLoading);
154
179
  const mutateWithLoadingState = async (callback, errorMessage, successMessage) => {
155
180
  if (!callback) {
156
181
  return true;
@@ -228,8 +253,24 @@ export default async function(adapter, context, $t) {
228
253
  const stateAvailable = computed(
229
254
  () => stateLoaded.value && !stateLoadError.value
230
255
  );
256
+ function getMappedState() {
257
+ if (!_mappedState) {
258
+ throw new Error("Called getMappedState() before a state is available.");
259
+ }
260
+ return _mappedState;
261
+ }
262
+ function setOverrideState(state) {
263
+ setContext(state, true);
264
+ }
265
+ function clearOverrideState() {
266
+ if (!_mappedState) {
267
+ throw new Error("Missing previous state.");
268
+ }
269
+ setContext(_mappedState);
270
+ }
231
271
  return {
232
272
  stateAvailable,
273
+ getMappedState,
233
274
  refreshKey,
234
275
  owner: readonly(owner),
235
276
  mutatedFields,
@@ -248,6 +289,9 @@ export default async function(adapter, context, $t) {
248
289
  getBlockBundleCount,
249
290
  getFieldListItem,
250
291
  getMutatedField,
251
- getFieldListForBlock
292
+ getFieldListForBlock,
293
+ getAllUuids,
294
+ setOverrideState,
295
+ clearOverrideState
252
296
  };
253
297
  }
@@ -1,6 +1,7 @@
1
- import { type ComputedRef, type WritableComputedRef } from 'vue';
1
+ import { type ComputedRef, type WritableComputedRef } from '#imports';
2
+ import type { BlokkliAdapter } from '#blokkli/adapter';
2
3
  export type StorageProvider = {
3
- use: <T>(key: string | ComputedRef<string>, defaultValue: T) => WritableComputedRef<T>;
4
+ use: <T>(key: string | ComputedRef<string>, defaultValue: T, persist?: boolean) => WritableComputedRef<T>;
4
5
  clearAll: () => void;
5
6
  clear: (key: string) => void;
6
7
  };
@@ -12,4 +13,4 @@ export type StorageProvider = {
12
13
  * This composable can be used to keep state across page navigations and
13
14
  * even after a refresh.
14
15
  */
15
- export default function (): StorageProvider;
16
+ export default function (adapter: BlokkliAdapter<any>): Promise<StorageProvider>;
@@ -1,4 +1,9 @@
1
- import { computed, ref } from "vue";
1
+ import {
2
+ computed,
3
+ onBeforeUnmount,
4
+ ref,
5
+ watch
6
+ } from "#imports";
2
7
  import { storageDefaults } from "#blokkli-build/config";
3
8
  const PREFIX = "blokkli:";
4
9
  const getExisting = (key) => {
@@ -10,10 +15,53 @@ const getExisting = (key) => {
10
15
  } catch {
11
16
  }
12
17
  };
13
- export default function() {
18
+ export default async function(adapter) {
14
19
  const values = ref({});
15
20
  const defaults = ref({});
16
- const use = (key, providedDefaultValue) => {
21
+ let timeout = null;
22
+ const persistableKeys = ref([]);
23
+ onBeforeUnmount(() => {
24
+ if (timeout) {
25
+ window.clearTimeout(timeout);
26
+ }
27
+ });
28
+ const persistedValues = adapter.userSettings ? await adapter.userSettings.load().then((v) => {
29
+ if (typeof v === "object" && v !== null) {
30
+ return JSON.stringify(v);
31
+ }
32
+ return v;
33
+ }) : null;
34
+ if (persistedValues) {
35
+ values.value = JSON.parse(persistedValues);
36
+ }
37
+ const persistableData = computed(() => {
38
+ const mapped = [...persistableKeys.value].sort().reduce((acc, key) => {
39
+ const value = values.value[key];
40
+ if (value !== void 0) {
41
+ acc[key] = value;
42
+ }
43
+ return acc;
44
+ }, {});
45
+ return JSON.stringify(mapped);
46
+ });
47
+ function persistUserSettings() {
48
+ if (timeout) {
49
+ window.clearTimeout(timeout);
50
+ }
51
+ timeout = window.setTimeout(async () => {
52
+ if (!adapter.userSettings) {
53
+ return;
54
+ }
55
+ if (persistableData.value === persistedValues) {
56
+ return;
57
+ }
58
+ await adapter.userSettings.persist(persistableData.value);
59
+ }, 1e3);
60
+ }
61
+ if (adapter.userSettings) {
62
+ watch(persistableData, persistUserSettings);
63
+ }
64
+ const use = (key, providedDefaultValue, persist) => {
17
65
  const storageKey = computed(
18
66
  () => PREFIX + (typeof key === "string" ? key : key.value)
19
67
  );
@@ -30,6 +78,11 @@ export default function() {
30
78
  values.value[storageKey.value] = defaultValue;
31
79
  }
32
80
  }
81
+ if (persist) {
82
+ if (!persistableKeys.value.includes(storageKey.value)) {
83
+ persistableKeys.value.push(storageKey.value);
84
+ }
85
+ }
33
86
  return computed({
34
87
  get() {
35
88
  const v = values.value[storageKey.value];
@@ -17,6 +17,7 @@ export declare const INJECT_MUTATED_FIELDS_MAP: unique symbol;
17
17
  export declare const INJECT_ENTITY_CONTEXT: unique symbol;
18
18
  export declare const INJECT_PROVIDER_CONTEXT: unique symbol;
19
19
  export declare const INJECT_FRAGMENT_CONTEXT: unique symbol;
20
+ export declare const INJECT_PROVIDER_KEY: unique symbol;
20
21
  export declare const INJECT_EDIT_FIELD_LIST_COMPONENT: unique symbol;
21
22
  export declare const INJECT_EDIT_LOGGER: unique symbol;
22
23
  export declare const BK_HIDDEN_GLOBALLY = "bkHiddenGlobally";
@@ -17,6 +17,7 @@ export const INJECT_MUTATED_FIELDS_MAP = Symbol("blokkli_mutated_fields_map");
17
17
  export const INJECT_ENTITY_CONTEXT = Symbol("blokkli_entity_context");
18
18
  export const INJECT_PROVIDER_CONTEXT = Symbol("blokkli_provider_context");
19
19
  export const INJECT_FRAGMENT_CONTEXT = Symbol("blokkli_fragment_context");
20
+ export const INJECT_PROVIDER_KEY = Symbol("blokkli_provider_key");
20
21
  export const INJECT_EDIT_FIELD_LIST_COMPONENT = Symbol(
21
22
  "blokkli_edit_field_list_component"
22
23
  );
@@ -1,6 +1,7 @@
1
1
  import { computed } from "vue";
2
2
  import { translations } from "#blokkli-build/translations";
3
3
  import { defaultLanguage, forceDefaultLanguage } from "#blokkli-build/config";
4
+ const DEBUG_SWISS_GERMAN = false;
4
5
  export default function(context) {
5
6
  const language = computed(() => {
6
7
  if (forceDefaultLanguage) {
@@ -12,6 +13,11 @@ export default function(context) {
12
13
  return defaultLanguage;
13
14
  });
14
15
  const currentTranslations = computed(() => {
16
+ const today = /* @__PURE__ */ new Date();
17
+ const isAprilFirst = today.getMonth() === 3 && today.getDate() === 1;
18
+ if (isAprilFirst && language.value === "de" || DEBUG_SWISS_GERMAN && import.meta.dev) {
19
+ return translations.gsw_CH || translations[language.value] || {};
20
+ }
15
21
  return translations[language.value] || {};
16
22
  });
17
23
  return (key, defaultValue) => {
@@ -8,6 +8,7 @@ type ThemeMap = {
8
8
  yellow: Ref<ThemeContextColors>;
9
9
  red: Ref<ThemeContextColors>;
10
10
  lime: Ref<ThemeContextColors>;
11
+ orange: Ref<ThemeContextColors>;
11
12
  };
12
13
  export type ThemeProvider = {
13
14
  accent: Ref<ThemeColors>;
@@ -16,6 +17,7 @@ export type ThemeProvider = {
16
17
  yellow: Ref<ThemeContextColors>;
17
18
  red: Ref<ThemeContextColors>;
18
19
  lime: Ref<ThemeContextColors>;
20
+ orange: Ref<ThemeContextColors>;
19
21
  getDraggableStyle: (el: HTMLElement | SVGElement) => DraggableStyle;
20
22
  setColor: <Group extends ThemeColorGroup | ThemeContextColorGroup>(group: Group, shade: Group extends ThemeColorGroup ? ThemeColorShade : ThemeContextColorShade, value: RGB) => void;
21
23
  applyTheme: (name: ThemeName | 'custom') => void;
@@ -12,13 +12,15 @@ export default function() {
12
12
  const yellow = ref(theme.yellow);
13
13
  const red = ref(theme.red);
14
14
  const lime = ref(theme.lime);
15
+ const orange = ref(theme.orange);
15
16
  const themeMap = {
16
17
  accent,
17
18
  mono,
18
19
  teal,
19
20
  yellow,
20
21
  red,
21
- lime
22
+ lime,
23
+ orange
22
24
  };
23
25
  function getColor(color, key) {
24
26
  return themeMap[color].value[key];
@@ -115,6 +117,7 @@ export default function() {
115
117
  yellow,
116
118
  red,
117
119
  lime,
120
+ orange,
118
121
  getDraggableStyle: function(el) {
119
122
  return dragStyle.getStyle(el, theme.accent[700]);
120
123
  },
@@ -6,9 +6,7 @@ export function filterTransforms(plugins, selectedItems, selectedBundles, allowe
6
6
  if (plugin.max !== -1 && selectedItems.length > plugin.max) {
7
7
  return false;
8
8
  }
9
- const allAllowedInList = plugin.targetBundles.every(
10
- (bundle) => allowedBundles.includes(bundle)
11
- );
9
+ const allAllowedInList = !plugin.targetBundles || plugin.targetBundles.every((bundle) => allowedBundles.includes(bundle));
12
10
  if (!allAllowedInList) {
13
11
  return false;
14
12
  }
@@ -3,6 +3,7 @@ import type { StorageProvider } from './storageProvider.js';
3
3
  import type { AddListOrientation, Coord, Rectangle, Size } from '#blokkli/types';
4
4
  import type { Viewport } from '#blokkli/constants';
5
5
  import type { StateProvider } from './stateProvider.js';
6
+ import type { AdapterContext } from '#blokkli/adapter';
6
7
  export type UiProvider = {
7
8
  rootElement: () => HTMLElement;
8
9
  artboardElement: () => HTMLElement;
@@ -14,9 +15,12 @@ export type UiProvider = {
14
15
  };
15
16
  isMobile: ComputedRef<boolean>;
16
17
  isDesktop: ComputedRef<boolean>;
17
- isArtboard: () => boolean;
18
18
  isAnimating: Ref<boolean>;
19
+ isAnalyzing: Ref<boolean>;
19
20
  isProxyMode: Ref<boolean>;
21
+ hasDialogOpen: Ref<boolean>;
22
+ hasAddTooltipOpen: Ref<boolean>;
23
+ hasTransformOverlayOpen: Ref<boolean>;
20
24
  isTransforming: ComputedRef<boolean>;
21
25
  setTransform: (label?: string | null | undefined) => void;
22
26
  transformLabel: ComputedRef<string>;
@@ -35,7 +39,8 @@ export type UiProvider = {
35
39
  artboardScale: Ref<number>;
36
40
  artboardOffset: Ref<Coord>;
37
41
  selectionTopLeft: Ref<Coord>;
42
+ interfaceLanguage: ComputedRef<string>;
38
43
  getAbsoluteElementRect: (v: HTMLElement | Rectangle, scale?: number, offset?: Coord) => Rectangle;
39
44
  getViewportRelativeRect: (rect: Rectangle, scale?: number, offset?: Coord) => Rectangle;
40
45
  };
41
- export default function (storage: StorageProvider, state: StateProvider): UiProvider;
46
+ export default function (storage: StorageProvider, state: StateProvider, context: ComputedRef<AdapterContext>): UiProvider;
@@ -2,29 +2,37 @@ import {
2
2
  onMounted,
3
3
  onBeforeUnmount,
4
4
  ref,
5
- computed,
6
- watch
5
+ computed
7
6
  } from "vue";
8
7
  import { eventBus } from "./eventBus.js";
9
8
  import { falsy } from "./index.js";
10
- const ARTBOARD_CLASS = "bk-is-artboard";
9
+ import { addElementClasses } from "./addElementClasses.js";
10
+ import { defaultLanguage, forceDefaultLanguage } from "#blokkli-build/config";
11
11
  const CLASS_PROXY_MODE = "bk-is-proxy-mode";
12
- export default function(storage, state) {
12
+ export default function(storage, state, context) {
13
13
  let cachedRootElement = null;
14
14
  let cachedArtboardElement = null;
15
15
  let cachedProviderElement = null;
16
+ const interfaceLanguage = computed(() => {
17
+ return forceDefaultLanguage ? defaultLanguage : context.value.language;
18
+ });
16
19
  const isProxyMode = ref(false);
17
20
  const menuIsOpen = ref(false);
21
+ const hasDialogOpen = ref(false);
22
+ const hasAddTooltipOpen = ref(false);
23
+ const hasTransformOverlayOpen = ref(false);
18
24
  const isAnimating = ref(false);
25
+ const isAnalyzing = ref(false);
19
26
  const transformLabel = ref("");
20
27
  const openContextMenu = ref("");
21
28
  const selectionTopLeft = ref({ x: 0, y: 0 });
22
- const useAnimationsSetting = storage.use("useAnimations", true);
23
- const useAnimations = computed(() => useAnimationsSetting.value);
24
29
  const baseSettings = storage.use("feature:settings:settings", {});
25
30
  const lowPerformanceMode = computed(
26
31
  () => baseSettings.value.lowPerformanceMode
27
32
  );
33
+ const useAnimations = computed(
34
+ () => baseSettings.value.useAnimations !== false
35
+ );
28
36
  const viewportBlockingRectsMap = ref(
29
37
  {}
30
38
  );
@@ -109,16 +117,6 @@ export default function(storage, state) {
109
117
  eventBus.emit("ui:resized");
110
118
  }, 400);
111
119
  };
112
- const isArtboard = () => {
113
- return document.documentElement.classList.contains(ARTBOARD_CLASS);
114
- };
115
- watch(isAnimating, (is) => {
116
- if (is) {
117
- document.documentElement.classList.add("bk-is-animating");
118
- } else {
119
- document.documentElement.classList.remove("bk-is-animating");
120
- }
121
- });
122
120
  const toolbarHeight = computed(() => {
123
121
  if (isMobile.value) {
124
122
  return 80;
@@ -200,35 +198,6 @@ export default function(storage, state) {
200
198
  height: visibleViewportHeight.value - 20
201
199
  };
202
200
  });
203
- function setProxyModeClass() {
204
- document.documentElement.classList.remove(CLASS_PROXY_MODE);
205
- if (isProxyMode.value) {
206
- document.documentElement.classList.add(CLASS_PROXY_MODE);
207
- }
208
- }
209
- watch(isProxyMode, setProxyModeClass);
210
- onMounted(() => {
211
- document.documentElement.classList.add("bk-html-root");
212
- document.body.classList.add("bk-body");
213
- document.documentElement.classList.add(ARTBOARD_CLASS);
214
- setProxyModeClass();
215
- viewportWidth.value = window.innerWidth;
216
- viewportHeight.value = window.innerHeight;
217
- window.addEventListener("resize", onResize);
218
- const artboard = artboardElement();
219
- resizeObserver.observe(artboard);
220
- });
221
- onBeforeUnmount(() => {
222
- window.removeEventListener("resize", onResize);
223
- document.documentElement.classList.remove("bk-html-root");
224
- document.body.classList.remove("bk-body");
225
- document.documentElement.classList.remove(ARTBOARD_CLASS);
226
- document.documentElement.classList.remove(CLASS_PROXY_MODE);
227
- clearTimeout(resizeTimeout);
228
- const artboard = artboardElement();
229
- resizeObserver.unobserve(artboard);
230
- resizeObserver.disconnect();
231
- });
232
201
  const viewport = computed(() => {
233
202
  return {
234
203
  width: viewportWidth.value,
@@ -260,6 +229,35 @@ export default function(storage, state) {
260
229
  function setTransform(label) {
261
230
  transformLabel.value = label || "";
262
231
  }
232
+ addElementClasses(document.documentElement, "bk-is-animating", isAnimating);
233
+ addElementClasses(
234
+ document.documentElement,
235
+ "bk-has-sidebar-left",
236
+ activeSidebarLeft
237
+ );
238
+ addElementClasses(
239
+ document.documentElement,
240
+ "bk-has-sidebar-right",
241
+ activeSidebarRight
242
+ );
243
+ addElementClasses(document.documentElement, ["bk-html-root"]);
244
+ addElementClasses(document.body, "bk-body");
245
+ addElementClasses(document.documentElement, CLASS_PROXY_MODE, isProxyMode);
246
+ addElementClasses(document.documentElement, "bk-is-analyzing", isAnalyzing);
247
+ onMounted(() => {
248
+ viewportWidth.value = window.innerWidth;
249
+ viewportHeight.value = window.innerHeight;
250
+ window.addEventListener("resize", onResize);
251
+ const artboard = artboardElement();
252
+ resizeObserver.observe(artboard);
253
+ });
254
+ onBeforeUnmount(() => {
255
+ window.removeEventListener("resize", onResize);
256
+ clearTimeout(resizeTimeout);
257
+ const artboard = artboardElement();
258
+ resizeObserver.unobserve(artboard);
259
+ resizeObserver.disconnect();
260
+ });
263
261
  return {
264
262
  menu: {
265
263
  isOpen: menuIsOpen,
@@ -271,8 +269,8 @@ export default function(storage, state) {
271
269
  providerElement,
272
270
  isMobile,
273
271
  isDesktop,
274
- isArtboard,
275
272
  isAnimating,
273
+ isAnalyzing,
276
274
  isTransforming,
277
275
  setTransform,
278
276
  transformLabel: computed(() => transformLabel.value),
@@ -293,6 +291,10 @@ export default function(storage, state) {
293
291
  selectionTopLeft,
294
292
  lowPerformanceMode,
295
293
  getAbsoluteElementRect,
296
- getViewportRelativeRect
294
+ getViewportRelativeRect,
295
+ interfaceLanguage,
296
+ hasDialogOpen,
297
+ hasTransformOverlayOpen,
298
+ hasAddTooltipOpen
297
299
  };
298
300
  }
@@ -0,0 +1,18 @@
1
+ import type { RGB } from '#blokkli/types/theme';
2
+ interface TransitionOptions {
3
+ /**
4
+ * Duration in milliseconds.
5
+ */
6
+ duration?: number;
7
+ /**
8
+ * The easing method. Defaults to "ease out quad".
9
+ */
10
+ easing?: (t: number) => number;
11
+ }
12
+ /**
13
+ * Creates a computed property from the given callback and transitions between values.
14
+ *
15
+ * Returns a method that, when called, will return the current transitioned value.
16
+ */
17
+ export declare function useTransitionedValue<T extends RGB | number>(valueCallback: () => T, options?: TransitionOptions): () => T;
18
+ export {};
@@ -0,0 +1,57 @@
1
+ import { computed, watch } from "vue";
2
+ import { easeOutQuad } from "./easing.js";
3
+ function isRGB(value) {
4
+ return Array.isArray(value) && value.length === 3;
5
+ }
6
+ function lerp(start, end, t) {
7
+ return start + (end - start) * t;
8
+ }
9
+ function interpolateColor(from, to, t) {
10
+ return [
11
+ lerp(from[0], to[0], t),
12
+ lerp(from[1], to[1], t),
13
+ lerp(from[2], to[2], t)
14
+ ];
15
+ }
16
+ function interpolateValue(from, to, t) {
17
+ if (isRGB(from) && isRGB(to)) {
18
+ return interpolateColor(from, to, t);
19
+ } else if (typeof from === "number" && typeof to === "number") {
20
+ return lerp(from, to, t);
21
+ }
22
+ return to;
23
+ }
24
+ function cloneValue(value) {
25
+ if (isRGB(value)) {
26
+ return [...value];
27
+ }
28
+ return value;
29
+ }
30
+ export function useTransitionedValue(valueCallback, options = {}) {
31
+ const { duration = 300, easing = easeOutQuad } = options;
32
+ const value = computed(valueCallback);
33
+ const initial = value.value;
34
+ let current = cloneValue(initial);
35
+ let target = cloneValue(initial);
36
+ let from = cloneValue(initial);
37
+ let startTime = null;
38
+ watch(value, (newValue) => {
39
+ from = cloneValue(current);
40
+ target = cloneValue(newValue);
41
+ startTime = Date.now();
42
+ });
43
+ return function getCurrentValue() {
44
+ if (startTime !== null) {
45
+ const elapsed = Date.now() - startTime;
46
+ const rawProgress = Math.min(elapsed / duration, 1);
47
+ if (rawProgress >= 1) {
48
+ current = cloneValue(target);
49
+ startTime = null;
50
+ } else {
51
+ const easedProgress = easing(rawProgress);
52
+ current = interpolateValue(from, target, easedProgress);
53
+ }
54
+ }
55
+ return current;
56
+ };
57
+ }
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 2A3 3 0 0 0 9 5A3 3 0 0 0 11 7.83V9H8V11H11V19.92C10.26 19.79 9.5 19.58 8.79 19.27C8.05 18.95 7.4 18.56 6.82 18.09C6.24 17.62 5.78 17.11 5.44 16.55L7 15L3 12V15C3 15.97 3.27 16.88 3.82 17.72C4.37 18.56 5.09 19.31 6 19.95C6.87 20.59 7.84 21.09 8.88 21.45C9.93 21.81 10.97 22 12 22C13.03 22 14.07 21.8 15.12 21.44C16.16 21.08 17.13 20.58 18 19.95C18.92 19.31 19.63 18.57 20.18 17.72C20.73 16.88 21 15.97 21 15V12L17 15L18.56 16.55C18.22 17.11 17.76 17.62 17.18 18.09C16.6 18.56 15.95 18.95 15.21 19.27C14.5 19.58 13.74 19.79 13 19.92V11H16V9H13V7.82A3 3 0 0 0 15 5A3 3 0 0 0 12 2M12 4A1 1 0 0 1 13 5A1 1 0 0 1 12 6A1 1 0 0 1 11 5A1 1 0 0 1 12 4Z" /></svg>
@@ -1 +1 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>arrow-left</title><path d="M20,11V13H8L13.5,18.5L12.08,19.92L4.16,12L12.08,4.08L13.5,5.5L8,11H20Z" /></svg>
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20,11V13H8L13.5,18.5L12.08,19.92L4.16,12L12.08,4.08L13.5,5.5L8,11H20Z" /></svg>
@@ -1 +1 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>arrow-right</title><path d="M4,11V13H16L10.5,18.5L11.92,19.92L19.84,12L11.92,4.08L10.5,5.5L16,11H4Z" /></svg>
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M4,11V13H16L10.5,18.5L11.92,19.92L19.84,12L11.92,4.08L10.5,5.5L16,11H4Z" /></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M5,17.59L15.59,7H9V5H19V15H17V8.41L6.41,19L5,17.59Z" /></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M22,21H2V3H4V19H6V10H10V19H12V6H16V19H18V14H22V21Z" /></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z" /></svg>
@@ -1 +1 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>cursor-move</title><path d="M13,6V11H18V7.75L22.25,12L18,16.25V13H13V18H16.25L12,22.25L7.75,18H11V13H6V16.25L1.75,12L6,7.75V11H11V6H7.75L12,1.75L16.25,6H13Z" /></svg>
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M13,6V11H18V7.75L22.25,12L18,16.25V13H13V18H16.25L12,22.25L7.75,18H11V13H6V16.25L1.75,12L6,7.75V11H11V6H7.75L12,1.75L16.25,6H13Z" /></svg>
@@ -1 +1 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>select-compare</title><path d="M13,23H11V1H13V23M9,19H5V5H9V3H5C3.89,3 3,3.89 3,5V19C3,20.11 3.9,21 5,21H9V19M19,7V9H21V7H19M19,5H21C21,3.89 20.1,3 19,3V5M21,15H19V17H21V15M19,11V13H21V11H19M17,3H15V5H17V3M19,21C20.11,21 21,20.11 21,19H19V21M17,19H15V21H17V19Z" /></svg>
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M13,23H11V1H13V23M9,19H5V5H9V3H5C3.89,3 3,3.89 3,5V19C3,20.11 3.9,21 5,21H9V19M19,7V9H21V7H19M19,5H21C21,3.89 20.1,3 19,3V5M21,15H19V17H21V15M19,11V13H21V11H19M17,3H15V5H17V3M19,21C20.11,21 21,20.11 21,19H19V21M17,19H15V21H17V19Z" /></svg>
@@ -1 +1 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>eye</title><path d="M12,9A3,3 0 0,0 9,12A3,3 0 0,0 12,15A3,3 0 0,0 15,12A3,3 0 0,0 12,9M12,17A5,5 0 0,1 7,12A5,5 0 0,1 12,7A5,5 0 0,1 17,12A5,5 0 0,1 12,17M12,4.5C7,4.5 2.73,7.61 1,12C2.73,16.39 7,19.5 12,19.5C17,19.5 21.27,16.39 23,12C21.27,7.61 17,4.5 12,4.5Z" /></svg>
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12,9A3,3 0 0,0 9,12A3,3 0 0,0 12,15A3,3 0 0,0 15,12A3,3 0 0,0 12,9M12,17A5,5 0 0,1 7,12A5,5 0 0,1 12,7A5,5 0 0,1 17,12A5,5 0 0,1 12,17M12,4.5C7,4.5 2.73,7.61 1,12C2.73,16.39 7,19.5 12,19.5C17,19.5 21.27,16.39 23,12C21.27,7.61 17,4.5 12,4.5Z" /></svg>
@@ -1 +1 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>information-slab-circle</title><path d="M12 22C17.5 22 22 17.5 22 12C22 6.5 17.5 2 12 2C6.5 2 2 6.5 2 12C2 17.5 6.5 22 12 22M11 7H13V9H11V7M14 17H10V15H11V13H10V11H13V15H14V17Z" /></svg>
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 22C17.5 22 22 17.5 22 12C22 6.5 17.5 2 12 2C6.5 2 2 6.5 2 12C2 17.5 6.5 22 12 22M11 7H13V9H11V7M14 17H10V15H11V13H10V11H13V15H14V17Z" /></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M10.59,13.41C11,13.8 11,14.44 10.59,14.83C10.2,15.22 9.56,15.22 9.17,14.83C7.22,12.88 7.22,9.71 9.17,7.76V7.76L12.71,4.22C14.66,2.27 17.83,2.27 19.78,4.22C21.73,6.17 21.73,9.34 19.78,11.29L18.29,12.78C18.3,11.96 18.17,11.14 17.89,10.36L18.36,9.88C19.54,8.71 19.54,6.81 18.36,5.64C17.19,4.46 15.29,4.46 14.12,5.64L10.59,9.17C9.41,10.34 9.41,12.24 10.59,13.41M13.41,9.17C13.8,8.78 14.44,8.78 14.83,9.17C16.78,11.12 16.78,14.29 14.83,16.24V16.24L11.29,19.78C9.34,21.73 6.17,21.73 4.22,19.78C2.27,17.83 2.27,14.66 4.22,12.71L5.71,11.22C5.7,12.04 5.83,12.86 6.11,13.65L5.64,14.12C4.46,15.29 4.46,17.19 5.64,18.36C6.81,19.54 8.71,19.54 9.88,18.36L13.41,14.83C14.59,13.66 14.59,11.76 13.41,10.59C13,10.2 13,9.56 13.41,9.17Z" /></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12,16A3,3 0 0,1 9,13C9,11.88 9.61,10.9 10.5,10.39L20.21,4.77L14.68,14.35C14.18,15.33 13.17,16 12,16M12,3C13.81,3 15.5,3.5 16.97,4.32L14.87,5.53C14,5.19 13,5 12,5A8,8 0 0,0 4,13C4,15.21 4.89,17.21 6.34,18.65H6.35C6.74,19.04 6.74,19.67 6.35,20.06C5.96,20.45 5.32,20.45 4.93,20.07V20.07C3.12,18.26 2,15.76 2,13A10,10 0 0,1 12,3M22,13C22,15.76 20.88,18.26 19.07,20.07V20.07C18.68,20.45 18.05,20.45 17.66,20.06C17.27,19.67 17.27,19.04 17.66,18.65V18.65C19.11,17.2 20,15.21 20,13C20,12 19.81,11 19.46,10.1L20.67,8C21.5,9.5 22,11.18 22,13Z" /></svg>