@blokkli/editor 2.0.0-alpha.36 → 2.0.0-alpha.37

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 (218) hide show
  1. package/dist/global/types/blockOptions.d.ts +4 -3
  2. package/dist/module.d.mts +2 -2
  3. package/dist/module.json +1 -1
  4. package/dist/module.mjs +71 -4
  5. package/dist/modules/agent/index.d.mts +1 -1
  6. package/dist/modules/agent/index.mjs +236 -6
  7. package/dist/modules/agent/runtime/app/composables/agentProvider.js +31 -14
  8. package/dist/modules/agent/runtime/app/composables/defineBlokkliAgentTool.d.ts +2 -20
  9. package/dist/modules/agent/runtime/app/composables/defineBlokkliAgentTool.js +0 -3
  10. package/dist/modules/agent/runtime/app/features/agent/Panel/Conversation/Item/Assistant/index.vue +2 -2
  11. package/dist/modules/agent/runtime/app/features/agent/Panel/Conversation/Item/User/index.vue +1 -2
  12. package/dist/modules/agent/runtime/app/features/agent/Panel/DebugGallery/index.vue +1 -2
  13. package/dist/modules/agent/runtime/app/features/agent/Panel/Input/Actions/index.d.vue.ts +1 -0
  14. package/dist/modules/agent/runtime/app/features/agent/Panel/Input/Actions/index.vue +66 -59
  15. package/dist/modules/agent/runtime/app/features/agent/Panel/Input/Actions/index.vue.d.ts +1 -0
  16. package/dist/modules/agent/runtime/app/features/agent/Panel/Input/index.vue +10 -12
  17. package/dist/modules/agent/runtime/app/features/agent/Panel/Welcome/de.md +2 -2
  18. package/dist/modules/agent/runtime/app/features/agent/Panel/Welcome/en.md +2 -2
  19. package/dist/modules/agent/runtime/app/features/agent/Panel/index.vue +1 -5
  20. package/dist/modules/agent/runtime/app/features/agent/index.vue +89 -37
  21. package/dist/modules/agent/runtime/app/helpers/index.d.ts +16 -19
  22. package/dist/modules/agent/runtime/app/helpers/index.js +22 -46
  23. package/dist/modules/agent/runtime/app/helpers/pageStructure.js +1 -1
  24. package/dist/modules/agent/runtime/app/tools/add_content_search_paragraph/index.js +5 -9
  25. package/dist/modules/agent/runtime/app/tools/add_fragment/index.js +2 -6
  26. package/dist/modules/agent/runtime/app/tools/add_media_paragraph/index.js +2 -6
  27. package/dist/modules/agent/runtime/app/tools/add_paragraphs/index.js +2 -3
  28. package/dist/modules/agent/runtime/app/tools/add_reusable_paragraph/index.js +2 -6
  29. package/dist/modules/agent/runtime/app/tools/add_template/index.js +2 -6
  30. package/dist/modules/agent/runtime/app/tools/analyze_content/index.d.ts +2 -0
  31. package/dist/modules/agent/runtime/app/tools/analyze_content/index.js +120 -0
  32. package/dist/modules/agent/runtime/app/tools/check_readability/index.d.ts +2 -0
  33. package/dist/modules/agent/runtime/app/tools/check_readability/index.js +57 -0
  34. package/dist/modules/agent/runtime/app/tools/duplicate_paragraphs/index.js +2 -6
  35. package/dist/modules/agent/runtime/app/tools/get_all_page_content/index.js +1 -1
  36. package/dist/modules/agent/runtime/app/tools/get_bundle_info/index.js +2 -1
  37. package/dist/modules/agent/runtime/app/tools/get_content_fields/index.js +1 -1
  38. package/dist/modules/agent/runtime/app/tools/get_paragraph_context/index.js +2 -5
  39. package/dist/modules/agent/runtime/app/tools/get_paragraph_options/index.js +2 -1
  40. package/dist/modules/agent/runtime/app/tools/get_selected_paragraphs/index.js +2 -3
  41. package/dist/modules/agent/runtime/app/tools/helpers.d.ts +53 -0
  42. package/dist/modules/agent/runtime/app/tools/helpers.js +187 -0
  43. package/dist/modules/agent/runtime/app/tools/move_paragraphs/index.js +2 -6
  44. package/dist/modules/agent/runtime/app/tools/schemas.d.ts +0 -52
  45. package/dist/modules/agent/runtime/app/tools/schemas.js +0 -187
  46. package/dist/modules/agent/runtime/app/tools/search_content/index.js +40 -47
  47. package/dist/modules/agent/runtime/app/tools/set_paragraph_options/index.js +2 -5
  48. package/dist/modules/agent/runtime/app/types/index.d.ts +0 -61
  49. package/dist/modules/agent/runtime/server/Session.d.ts +25 -6
  50. package/dist/modules/agent/runtime/server/Session.js +109 -30
  51. package/dist/modules/agent/runtime/server/SessionManager.d.ts +3 -0
  52. package/dist/modules/agent/runtime/server/SessionManager.js +4 -1
  53. package/dist/modules/agent/runtime/server/agent.js +3 -2
  54. package/dist/modules/agent/runtime/server/default-skills/fixReadability.d.ts +2 -0
  55. package/dist/modules/agent/runtime/server/default-skills/fixReadability.js +69 -0
  56. package/dist/modules/agent/runtime/server/default-system-prompts/page-context.js +28 -0
  57. package/dist/modules/agent/runtime/server/server-tools/index.d.ts +10 -2
  58. package/dist/modules/agent/runtime/server/server-tools/index.js +1 -1
  59. package/dist/modules/agent/runtime/server/server-tools/load_tools/index.js +1 -1
  60. package/dist/modules/agent/runtime/shared/types.d.ts +46 -11
  61. package/dist/modules/agent/runtime/shared/types.js +22 -10
  62. package/dist/modules/charts/index.d.mts +1 -1
  63. package/dist/modules/charts/index.mjs +21 -7
  64. package/dist/modules/charts/runtime/blokkli/skills/charts.js +6 -6
  65. package/dist/modules/charts/runtime/blokkli/tools/chart_schemas.d.ts +25 -2
  66. package/dist/modules/charts/runtime/blokkli/tools/chart_schemas.js +39 -1
  67. package/dist/modules/charts/runtime/blokkli/tools/create_chart/index.js +24 -17
  68. package/dist/modules/charts/runtime/blokkli/tools/get_chart_data/index.js +11 -19
  69. package/dist/modules/charts/runtime/blokkli/tools/get_chart_type_options/index.js +2 -4
  70. package/dist/modules/charts/runtime/blokkli/tools/update_chart/index.js +8 -20
  71. package/dist/modules/charts/runtime/chartTypes/area.d.ts +6 -1
  72. package/dist/modules/charts/runtime/chartTypes/bar.d.ts +7 -1
  73. package/dist/modules/charts/runtime/chartTypes/define.d.ts +1 -1
  74. package/dist/modules/charts/runtime/chartTypes/donut.d.ts +5 -1
  75. package/dist/modules/charts/runtime/chartTypes/heatmap.d.ts +3 -1
  76. package/dist/modules/charts/runtime/chartTypes/index.d.ts +18 -0
  77. package/dist/modules/charts/runtime/chartTypes/line.d.ts +6 -1
  78. package/dist/modules/charts/runtime/chartTypes/pie.d.ts +4 -1
  79. package/dist/modules/charts/runtime/chartTypes/radar.d.ts +6 -1
  80. package/dist/modules/charts/runtime/chartTypes/radialBar.d.ts +5 -1
  81. package/dist/modules/charts/runtime/chartTypes/shared.d.ts +20 -5
  82. package/dist/modules/charts/runtime/chartTypes/types.d.ts +6 -6
  83. package/dist/modules/charts/runtime/components/ChartRenderer/index.d.vue.ts +145 -2
  84. package/dist/modules/charts/runtime/components/ChartRenderer/index.vue +2 -2
  85. package/dist/modules/charts/runtime/components/ChartRenderer/index.vue.d.ts +145 -2
  86. package/dist/modules/charts/runtime/components/index.d.ts +1 -0
  87. package/dist/modules/charts/runtime/components/index.js +1 -0
  88. package/dist/modules/charts/runtime/features/charts/Editor/ChartTypeOptions/index.d.vue.ts +3 -2
  89. package/dist/modules/charts/runtime/features/charts/Editor/ChartTypeOptions/index.vue.d.ts +3 -2
  90. package/dist/modules/charts/runtime/features/charts/Editor/CsvImport/index.vue +1 -2
  91. package/dist/modules/charts/runtime/features/charts/Editor/FootnoteEditor/index.vue +1 -1
  92. package/dist/modules/charts/runtime/features/charts/Editor/Preview/index.d.vue.ts +2 -0
  93. package/dist/modules/charts/runtime/features/charts/Editor/Preview/index.vue +35 -13
  94. package/dist/modules/charts/runtime/features/charts/Editor/Preview/index.vue.d.ts +2 -0
  95. package/dist/modules/charts/runtime/features/charts/Editor/index.d.vue.ts +1 -0
  96. package/dist/modules/charts/runtime/features/charts/Editor/index.vue +9 -3
  97. package/dist/modules/charts/runtime/features/charts/Editor/index.vue.d.ts +1 -0
  98. package/dist/modules/charts/runtime/features/charts/Editor/useChartEditorState.js +1 -1
  99. package/dist/modules/charts/runtime/features/charts/index.vue +6 -6
  100. package/dist/modules/charts/runtime/helpers/index.d.ts +25 -0
  101. package/dist/modules/charts/runtime/helpers/index.js +63 -0
  102. package/dist/modules/charts/runtime/types.d.ts +10 -28
  103. package/dist/modules/charts/runtime/types.js +0 -64
  104. package/dist/modules/drupal/index.d.mts +1 -1
  105. package/dist/modules/drupal/runtime/adapter/index.d.ts +3 -1
  106. package/dist/modules/drupal/runtime/adapter/index.js +4 -4
  107. package/dist/modules/table-of-contents/index.d.mts +1 -1
  108. package/dist/runtime/components/BlokkliItem.vue +1 -1
  109. package/dist/runtime/composables/defineBlokkli.js +1 -1
  110. package/dist/runtime/editor/components/AnimationCanvas/index.vue +13 -7
  111. package/dist/runtime/editor/components/Banner/index.d.vue.ts +1 -0
  112. package/dist/runtime/editor/components/Banner/index.vue +1 -1
  113. package/dist/runtime/editor/components/Banner/index.vue.d.ts +1 -0
  114. package/dist/runtime/editor/components/DropdownItem/index.d.vue.ts +1 -0
  115. package/dist/runtime/editor/components/DropdownItem/index.vue +3 -2
  116. package/dist/runtime/editor/components/DropdownItem/index.vue.d.ts +1 -0
  117. package/dist/runtime/editor/components/EditProvider.vue +7 -4
  118. package/dist/runtime/editor/components/FlexTextarea/index.d.vue.ts +5 -1
  119. package/dist/runtime/editor/components/FlexTextarea/index.vue +24 -101
  120. package/dist/runtime/editor/components/FlexTextarea/index.vue.d.ts +5 -1
  121. package/dist/runtime/editor/components/NestedEditorOverlay/index.vue +28 -9
  122. package/dist/runtime/editor/components/Popup/index.d.vue.ts +30 -0
  123. package/dist/runtime/editor/components/Popup/index.vue +82 -0
  124. package/dist/runtime/editor/components/Popup/index.vue.d.ts +30 -0
  125. package/dist/runtime/editor/components/Resizable/index.vue +4 -1
  126. package/dist/runtime/editor/components/Toolbar/index.vue +107 -6
  127. package/dist/runtime/editor/components/index.d.ts +4 -3
  128. package/dist/runtime/editor/components/index.js +6 -4
  129. package/dist/runtime/editor/composables/defineDropAreas.js +3 -3
  130. package/dist/runtime/editor/composables/defineDropHandler.d.ts +3 -0
  131. package/dist/runtime/editor/composables/defineDropHandler.js +10 -0
  132. package/dist/runtime/editor/composables/index.d.ts +1 -0
  133. package/dist/runtime/editor/composables/index.js +1 -0
  134. package/dist/runtime/editor/css/output.css +1 -1
  135. package/dist/runtime/editor/events/index.d.ts +9 -0
  136. package/dist/runtime/editor/features/add-list/index.vue +58 -1
  137. package/dist/runtime/editor/features/analyze/Main.d.vue.ts +3 -2
  138. package/dist/runtime/editor/features/analyze/Main.vue +28 -44
  139. package/dist/runtime/editor/features/analyze/Main.vue.d.ts +3 -2
  140. package/dist/runtime/editor/features/analyze/analyzers/readability.js +65 -0
  141. package/dist/runtime/editor/features/analyze/analyzers/types.d.ts +19 -0
  142. package/dist/runtime/editor/features/analyze/index.vue +18 -15
  143. package/dist/runtime/editor/features/clipboard/DropElement/Video.d.vue.ts +8 -0
  144. package/dist/runtime/editor/features/clipboard/{List/Item → DropElement}/Video.vue +1 -5
  145. package/dist/runtime/editor/features/clipboard/DropElement/Video.vue.d.ts +8 -0
  146. package/dist/runtime/editor/features/clipboard/DropElement/helpers.d.ts +1 -0
  147. package/dist/runtime/editor/features/clipboard/DropElement/helpers.js +14 -0
  148. package/dist/runtime/editor/features/clipboard/DropElement/index.d.vue.ts +16 -0
  149. package/dist/runtime/editor/features/clipboard/DropElement/index.vue +97 -0
  150. package/dist/runtime/editor/features/clipboard/DropElement/index.vue.d.ts +16 -0
  151. package/dist/runtime/editor/features/clipboard/helpers.d.ts +15 -0
  152. package/dist/runtime/editor/features/clipboard/helpers.js +62 -0
  153. package/dist/runtime/editor/features/clipboard/index.vue +585 -337
  154. package/dist/runtime/editor/features/clipboard/types.d.ts +14 -2
  155. package/dist/runtime/editor/features/dragging-overlay/DragItems/index.vue +17 -5
  156. package/dist/runtime/editor/features/dragging-overlay/Renderer/index.vue +2 -2
  157. package/dist/runtime/editor/features/dragging-overlay/index.vue +125 -219
  158. package/dist/runtime/editor/features/editable-field/Overlay/Plaintext/index.vue +4 -4
  159. package/dist/runtime/editor/features/editable-field/Overlay/index.vue +6 -0
  160. package/dist/runtime/editor/features/library/index.vue +14 -0
  161. package/dist/runtime/editor/features/media-library/index.vue +32 -1
  162. package/dist/runtime/editor/features/options/Form/ComplexType/index.d.vue.ts +11 -0
  163. package/dist/runtime/editor/features/options/Form/ComplexType/index.vue +36 -0
  164. package/dist/runtime/editor/features/options/Form/ComplexType/index.vue.d.ts +11 -0
  165. package/dist/runtime/editor/features/options/Form/Item.d.vue.ts +3 -2
  166. package/dist/runtime/editor/features/options/Form/Item.vue +10 -2
  167. package/dist/runtime/editor/features/options/Form/Item.vue.d.ts +3 -2
  168. package/dist/runtime/editor/features/options/Form/index.vue +5 -0
  169. package/dist/runtime/editor/features/search/index.vue +25 -1
  170. package/dist/runtime/editor/features/structure/index.vue +25 -1
  171. package/dist/runtime/editor/features/tour/index.vue +22 -12
  172. package/dist/runtime/editor/helpers/clipboardData/index.d.ts +11 -0
  173. package/dist/runtime/editor/helpers/clipboardData/index.js +157 -0
  174. package/dist/runtime/editor/helpers/options/index.js +5 -0
  175. package/dist/runtime/editor/icons/svg/stars.svg +5 -1
  176. package/dist/runtime/editor/plugins/Sidebar/Detached/index.d.vue.ts +1 -1
  177. package/dist/runtime/editor/plugins/Sidebar/Detached/index.vue.d.ts +1 -1
  178. package/dist/runtime/editor/plugins/Sidebar/index.d.vue.ts +14 -3
  179. package/dist/runtime/editor/plugins/Sidebar/index.vue +4 -2
  180. package/dist/runtime/editor/plugins/Sidebar/index.vue.d.ts +14 -3
  181. package/dist/runtime/editor/providers/analyze.d.ts +43 -0
  182. package/dist/runtime/editor/providers/analyze.js +78 -0
  183. package/dist/runtime/editor/providers/animation.d.ts +4 -0
  184. package/dist/runtime/editor/providers/animation.js +6 -0
  185. package/dist/runtime/editor/providers/dragdrop.d.ts +55 -0
  186. package/dist/runtime/editor/providers/dragdrop.js +37 -0
  187. package/dist/runtime/editor/providers/storage.js +15 -0
  188. package/dist/runtime/editor/providers/ui.d.ts +6 -0
  189. package/dist/runtime/editor/providers/ui.js +19 -0
  190. package/dist/runtime/editor/translations/de.json +73 -61
  191. package/dist/runtime/editor/translations/fr.json +67 -55
  192. package/dist/runtime/editor/translations/gsw_CH.json +71 -59
  193. package/dist/runtime/editor/translations/it.json +67 -55
  194. package/dist/runtime/editor/types/app.d.ts +4 -2
  195. package/dist/runtime/editor/types/draggable.d.ts +1 -0
  196. package/dist/runtime/editor/types/ui.d.ts +1 -1
  197. package/dist/runtime/helpers/injections.d.ts +1 -1
  198. package/dist/runtime/types/blockOptions.d.ts +2 -1
  199. package/dist/runtime/types/definitions.d.ts +4 -0
  200. package/dist/shared/{editor.CWQIFIEQ.d.mts → editor.BdBm1Z7C.d.mts} +12 -0
  201. package/dist/types.d.mts +1 -1
  202. package/package.json +5 -3
  203. package/dist/modules/charts/runtime/components/Fragment/BlokkliChart.d.vue.ts +0 -3
  204. package/dist/modules/charts/runtime/components/Fragment/BlokkliChart.vue +0 -29
  205. package/dist/modules/charts/runtime/components/Fragment/BlokkliChart.vue.d.ts +0 -3
  206. package/dist/runtime/editor/features/clipboard/List/Item/File.d.vue.ts +0 -4
  207. package/dist/runtime/editor/features/clipboard/List/Item/File.vue +0 -60
  208. package/dist/runtime/editor/features/clipboard/List/Item/File.vue.d.ts +0 -4
  209. package/dist/runtime/editor/features/clipboard/List/Item/Video.d.vue.ts +0 -4
  210. package/dist/runtime/editor/features/clipboard/List/Item/Video.vue.d.ts +0 -4
  211. package/dist/runtime/editor/features/clipboard/List/index.d.vue.ts +0 -11
  212. package/dist/runtime/editor/features/clipboard/List/index.vue +0 -72
  213. package/dist/runtime/editor/features/clipboard/List/index.vue.d.ts +0 -11
  214. package/dist/runtime/editor/features/tour/Popup/index.d.vue.ts +0 -9
  215. package/dist/runtime/editor/features/tour/Popup/index.vue +0 -34
  216. package/dist/runtime/editor/features/tour/Popup/index.vue.d.ts +0 -9
  217. package/dist/runtime/editor/providers/dropArea.d.ts +0 -48
  218. package/dist/runtime/editor/providers/dropArea.js +0 -22
@@ -1,10 +1,14 @@
1
+ import { ClipboardData } from '#blokkli/editor/helpers/clipboardData';
1
2
  type __VLS_Props = {
2
3
  maxHeight?: number;
3
4
  minHeight?: number;
4
5
  submitOnEnter?: boolean;
5
6
  /** When true, convert pasted HTML to markdown */
6
7
  pasteMarkdown?: boolean;
8
+ /** Called before the built-in paste handling. Return true to skip it. */
9
+ onBeforePaste?: (data: ClipboardData) => boolean;
7
10
  textareaClass?: boolean;
11
+ autofocus?: boolean;
8
12
  };
9
13
  type __VLS_ModelProps = {
10
14
  modelValue: string;
@@ -24,8 +28,8 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_PublicProps, {
24
28
  onSubmit?: (() => any) | undefined;
25
29
  "onUpdate:modelValue"?: ((value: string) => any) | undefined;
26
30
  }>, {
27
- maxHeight: number;
28
31
  minHeight: number;
32
+ maxHeight: number;
29
33
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
30
34
  declare const _default: typeof __VLS_export;
31
35
  export default _default;
@@ -15,14 +15,16 @@
15
15
  }"
16
16
  @keydown.capture.stop="onKeydown"
17
17
  @keyup.capture.stop
18
+ @pointerdown="onPointerDown"
18
19
  @paste="onPaste"
19
20
  />
20
21
  </div>
21
22
  </template>
22
23
 
23
24
  <script setup>
24
- import { useTemplateRef, ref, computed, watch } from "#imports";
25
+ import { useTemplateRef, ref, computed, watch, onMounted } from "#imports";
25
26
  import { onBlokkliEvent } from "#blokkli/editor/composables";
27
+ import { ClipboardData } from "#blokkli/editor/helpers/clipboardData";
26
28
  defineOptions({
27
29
  inheritAttrs: false
28
30
  });
@@ -31,7 +33,9 @@ const props = defineProps({
31
33
  minHeight: { type: Number, required: false, default: 70 },
32
34
  submitOnEnter: { type: Boolean, required: false },
33
35
  pasteMarkdown: { type: Boolean, required: false },
34
- textareaClass: { type: Boolean, required: false }
36
+ onBeforePaste: { type: Function, required: false },
37
+ textareaClass: { type: Boolean, required: false },
38
+ autofocus: { type: Boolean, required: false }
35
39
  });
36
40
  const emit = defineEmits(["submit", "keydown"]);
37
41
  const modelValue = defineModel({ type: String, ...{ required: true } });
@@ -41,6 +45,11 @@ const isScrollable = computed(() => {
41
45
  if (!props.maxHeight) return false;
42
46
  return height.value >= props.maxHeight;
43
47
  });
48
+ function onPointerDown(e) {
49
+ if (e.target instanceof HTMLElement) {
50
+ e.target.setPointerCapture(e.pointerId);
51
+ }
52
+ }
44
53
  function onKeydown(e) {
45
54
  emit("keydown", e);
46
55
  if (props.submitOnEnter && e.key === "Enter" && !e.shiftKey) {
@@ -48,107 +57,16 @@ function onKeydown(e) {
48
57
  emit("submit");
49
58
  }
50
59
  }
51
- function convertNode(node) {
52
- if (node.nodeType === Node.TEXT_NODE) {
53
- return node.textContent || "";
54
- }
55
- if (node.nodeType !== Node.ELEMENT_NODE) {
56
- return "";
57
- }
58
- const el = node;
59
- const tag = el.tagName.toLowerCase();
60
- const children = Array.from(el.childNodes).map(convertNode).join("");
61
- switch (tag) {
62
- case "br":
63
- return "\n";
64
- case "p":
65
- case "div":
66
- return children + "\n\n";
67
- case "strong":
68
- case "b":
69
- return `**${children}**`;
70
- case "em":
71
- case "i":
72
- return `*${children}*`;
73
- case "del":
74
- case "s":
75
- return `~~${children}~~`;
76
- case "code":
77
- if (el.parentElement?.tagName.toLowerCase() === "pre") {
78
- return children;
79
- }
80
- return `\`${children}\``;
81
- case "pre": {
82
- const codeEl = el.querySelector("code");
83
- const content = codeEl ? convertNode(codeEl) : children;
84
- return `
85
- \`\`\`
86
- ${content}
87
- \`\`\`
88
- `;
89
- }
90
- case "h1":
91
- return `# ${children}
92
-
93
- `;
94
- case "h2":
95
- return `## ${children}
96
-
97
- `;
98
- case "h3":
99
- return `### ${children}
100
-
101
- `;
102
- case "h4":
103
- return `#### ${children}
104
-
105
- `;
106
- case "h5":
107
- return `##### ${children}
108
-
109
- `;
110
- case "h6":
111
- return `###### ${children}
112
-
113
- `;
114
- case "a": {
115
- const href = el.getAttribute("href");
116
- return href ? `[${children}](${href})` : children;
117
- }
118
- case "ul":
119
- case "ol":
120
- return "\n" + children + "\n";
121
- case "li": {
122
- const parent = el.parentElement;
123
- if (parent?.tagName.toLowerCase() === "ol") {
124
- const index = Array.from(parent.children).indexOf(el) + 1;
125
- return `${index}. ${children.trim()}
126
- `;
127
- }
128
- return `- ${children.trim()}
129
- `;
130
- }
131
- case "blockquote":
132
- return children.trim().split("\n").map((line) => `> ${line}`).join("\n") + "\n";
133
- case "hr":
134
- return "\n---\n";
135
- case "style":
136
- case "script":
137
- return "";
138
- default:
139
- return children;
140
- }
141
- }
142
- function htmlToMarkdown(html) {
143
- const doc = new DOMParser().parseFromString(html, "text/html");
144
- return convertNode(doc.body).replace(/\n{3,}/g, "\n\n").trim();
145
- }
146
60
  function onPaste(e) {
147
- if (!props.pasteMarkdown) return;
148
- const html = e.clipboardData?.getData("text/html");
149
- if (!html) return;
61
+ if (!e.clipboardData) return;
62
+ const data = new ClipboardData(e.clipboardData);
63
+ if (props.onBeforePaste?.(data)) {
64
+ e.preventDefault();
65
+ return;
66
+ }
67
+ if (!props.pasteMarkdown || !data.hasHtml()) return;
150
68
  e.preventDefault();
151
- const markdown = htmlToMarkdown(html);
69
+ const markdown = data.toMarkdown();
152
70
  const el = textarea.value;
153
71
  if (!el) return;
154
72
  const start = el.selectionStart;
@@ -171,6 +89,11 @@ onBlokkliEvent("animationFrame", () => {
171
89
  const newHeight = Math.max(scrollHeight, props.minHeight);
172
90
  height.value = props.maxHeight ? Math.min(newHeight, props.maxHeight) : newHeight;
173
91
  });
92
+ onMounted(() => {
93
+ if (props.autofocus && textarea.value) {
94
+ textarea.value.focus();
95
+ }
96
+ });
174
97
  defineExpose({
175
98
  focus: () => textarea.value?.focus(),
176
99
  blur: () => textarea.value?.blur(),
@@ -1,10 +1,14 @@
1
+ import { ClipboardData } from '#blokkli/editor/helpers/clipboardData';
1
2
  type __VLS_Props = {
2
3
  maxHeight?: number;
3
4
  minHeight?: number;
4
5
  submitOnEnter?: boolean;
5
6
  /** When true, convert pasted HTML to markdown */
6
7
  pasteMarkdown?: boolean;
8
+ /** Called before the built-in paste handling. Return true to skip it. */
9
+ onBeforePaste?: (data: ClipboardData) => boolean;
7
10
  textareaClass?: boolean;
11
+ autofocus?: boolean;
8
12
  };
9
13
  type __VLS_ModelProps = {
10
14
  modelValue: string;
@@ -24,8 +28,8 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_PublicProps, {
24
28
  onSubmit?: (() => any) | undefined;
25
29
  "onUpdate:modelValue"?: ((value: string) => any) | undefined;
26
30
  }>, {
27
- maxHeight: number;
28
31
  minHeight: number;
32
+ maxHeight: number;
29
33
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
30
34
  declare const _default: typeof __VLS_export;
31
35
  export default _default;
@@ -132,19 +132,28 @@ function onEnter(el, done) {
132
132
  const overlayRect = el.getBoundingClientRect();
133
133
  const scaleX = originatingRect.width / overlayRect.width;
134
134
  const scaleY = originatingRect.height / overlayRect.height;
135
- const offsetX = originatingRect.x - overlayRect.x;
136
- const offsetY = originatingRect.y - overlayRect.y;
135
+ const scale = Math.max(scaleX, scaleY);
136
+ const scaledW = overlayRect.width * scale;
137
+ const scaledH = overlayRect.height * scale;
138
+ const centerX = originatingRect.x + originatingRect.width / 2;
139
+ const centerY = originatingRect.y + originatingRect.height / 2;
140
+ const offsetX = centerX - scaledW / 2 - overlayRect.x;
141
+ const offsetY = centerY - scaledH / 2 - overlayRect.y;
142
+ const clipY = (overlayRect.height - originatingRect.height / scale) / 2;
143
+ const clipX = (overlayRect.width - originatingRect.width / scale) / 2;
137
144
  el.style.transition = "none";
138
145
  el.style.opacity = "0";
139
146
  el.style.transformOrigin = "0px 0px";
140
- el.style.transform = `translate(${offsetX}px, ${offsetY}px) scale(${scaleX}, ${scaleY})`;
147
+ el.style.transform = `translate(${offsetX}px, ${offsetY}px) scale(${scale})`;
148
+ el.style.clipPath = `inset(${clipY}px ${clipX}px ${clipY}px ${clipX}px round 4px)`;
141
149
  el.getBoundingClientRect();
142
150
  raf = requestAnimationFrame(() => {
143
151
  el.style.transition = `opacity ${FADE_DURATION}ms ease-out`;
144
152
  el.style.opacity = "1";
145
153
  withTimeout(() => {
146
- el.style.transition = `transform ${DURATION}ms ${EASING}`;
147
- el.style.transform = "translate(0px, 0px) scale(1, 1)";
154
+ el.style.transition = `transform ${DURATION}ms ${EASING}, clip-path ${DURATION}ms ${EASING}`;
155
+ el.style.transform = "translate(0px, 0px) scale(1)";
156
+ el.style.clipPath = "inset(0px 0px 0px 0px round 0px)";
148
157
  withTimeout(() => {
149
158
  pendingTimeouts = [];
150
159
  done();
@@ -158,6 +167,7 @@ function onAfter(el) {
158
167
  el.style.transition = "";
159
168
  el.style.opacity = "";
160
169
  el.style.transformOrigin = "";
170
+ el.style.clipPath = "";
161
171
  }
162
172
  pendingTimeouts = [];
163
173
  }
@@ -166,6 +176,7 @@ function onBeforeLeave(el) {
166
176
  if (el instanceof HTMLElement) {
167
177
  el.style.transform = "none";
168
178
  el.style.opacity = "1";
179
+ el.style.clipPath = "inset(0px 0px 0px 0px round 0px)";
169
180
  }
170
181
  }
171
182
  function onLeave(el, done) {
@@ -185,11 +196,19 @@ function onLeave(el, done) {
185
196
  const overlayRect = el.getBoundingClientRect();
186
197
  const scaleX = originatingRect.width / overlayRect.width;
187
198
  const scaleY = originatingRect.height / overlayRect.height;
188
- const offsetX = originatingRect.x - overlayRect.x;
189
- const offsetY = originatingRect.y - overlayRect.y;
190
- el.style.transition = `transform ${DURATION}ms ${EASING}`;
199
+ const scale = Math.max(scaleX, scaleY);
200
+ const scaledW = overlayRect.width * scale;
201
+ const scaledH = overlayRect.height * scale;
202
+ const centerX = originatingRect.x + originatingRect.width / 2;
203
+ const centerY = originatingRect.y + originatingRect.height / 2;
204
+ const offsetX = centerX - scaledW / 2 - overlayRect.x;
205
+ const offsetY = centerY - scaledH / 2 - overlayRect.y;
206
+ const clipY = (overlayRect.height - originatingRect.height / scale) / 2;
207
+ const clipX = (overlayRect.width - originatingRect.width / scale) / 2;
208
+ el.style.transition = `transform ${DURATION}ms ${EASING}, clip-path ${DURATION}ms ${EASING}`;
191
209
  el.style.transformOrigin = "0px 0px";
192
- el.style.transform = `translate(${offsetX}px, ${offsetY}px) scale(${scaleX}, ${scaleY})`;
210
+ el.style.transform = `translate(${offsetX}px, ${offsetY}px) scale(${scale})`;
211
+ el.style.clipPath = `inset(${clipY}px ${clipX}px ${clipY}px ${clipX}px round 4px)`;
193
212
  withTimeout(() => {
194
213
  el.style.transition = `opacity ${FADE_DURATION}ms ease-out`;
195
214
  el.style.opacity = "0";
@@ -0,0 +1,30 @@
1
+ type __VLS_Props = {
2
+ id: string;
3
+ title: string;
4
+ text?: string;
5
+ cta: string;
6
+ theme: 'default' | 'warning' | 'primary' | 'danger' | 'lime';
7
+ position: 'top-left' | 'bottom-right';
8
+ };
9
+ declare function closePopup(): void;
10
+ declare var __VLS_25: {};
11
+ type __VLS_Slots = {} & {
12
+ default?: (props: typeof __VLS_25) => any;
13
+ };
14
+ declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {
15
+ closePopup: typeof closePopup;
16
+ }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
17
+ close: (...args: any[]) => void;
18
+ submit: (...args: any[]) => void;
19
+ }, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
20
+ onClose?: ((...args: any[]) => any) | undefined;
21
+ onSubmit?: ((...args: any[]) => any) | undefined;
22
+ }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
23
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
24
+ declare const _default: typeof __VLS_export;
25
+ export default _default;
26
+ type __VLS_WithSlots<T, S> = T & {
27
+ new (): {
28
+ $slots: S;
29
+ };
30
+ };
@@ -0,0 +1,82 @@
1
+ <template>
2
+ <Teleport :to="ui.mainLayoutElement.value">
3
+ <BlokkliTransition name="drop-up">
4
+ <ViewportBlockingRect
5
+ v-if="shouldRender"
6
+ :id="'popup-' + id"
7
+ class="bk bk-popup"
8
+ :class="['bk-is-' + position, 'bk-is-' + id]"
9
+ >
10
+ <div class="bk-popup-title">
11
+ <h2>{{ title }}</h2>
12
+ <button class="bk-popup-close" @click="onClose">
13
+ <Icon name="bk_mdi_close" />
14
+ </button>
15
+ </div>
16
+
17
+ <div class="bk-popup-content">
18
+ <div class="bk-popup-content-text">
19
+ <slot>
20
+ <p v-if="text" v-html="text" />
21
+ </slot>
22
+ </div>
23
+
24
+ <button class="bk-button" :class="'bk-is-' + theme" @click="onSubmit">
25
+ {{ cta }}
26
+ </button>
27
+ </div>
28
+ </ViewportBlockingRect>
29
+ </BlokkliTransition>
30
+ </Teleport>
31
+ </template>
32
+
33
+ <script setup>
34
+ import {
35
+ Icon,
36
+ ViewportBlockingRect,
37
+ BlokkliTransition
38
+ } from "#blokkli/editor/components";
39
+ import { onBeforeUnmount, onMounted, ref, useBlokkli } from "#imports";
40
+ const props = defineProps({
41
+ id: { type: String, required: true },
42
+ title: { type: String, required: true },
43
+ text: { type: String, required: false },
44
+ cta: { type: String, required: true },
45
+ theme: { type: String, required: true },
46
+ position: { type: String, required: true }
47
+ });
48
+ const { ui, storage } = useBlokkli();
49
+ const hasClosed = storage.use(`popup:${props.id}:closed`, false);
50
+ const shouldRender = ref(false);
51
+ let timeout = null;
52
+ const emit = defineEmits(["submit", "close"]);
53
+ function closePopup() {
54
+ hasClosed.value = true;
55
+ shouldRender.value = false;
56
+ }
57
+ function onSubmit() {
58
+ closePopup();
59
+ emit("submit");
60
+ }
61
+ function onClose() {
62
+ closePopup();
63
+ emit("close");
64
+ }
65
+ defineExpose({
66
+ closePopup
67
+ });
68
+ onMounted(() => {
69
+ if (hasClosed.value) {
70
+ return;
71
+ }
72
+ timeout = window.setTimeout(() => {
73
+ shouldRender.value = true;
74
+ }, 1e3);
75
+ });
76
+ onBeforeUnmount(() => {
77
+ if (timeout) {
78
+ window.clearTimeout(timeout);
79
+ timeout = null;
80
+ }
81
+ });
82
+ </script>
@@ -0,0 +1,30 @@
1
+ type __VLS_Props = {
2
+ id: string;
3
+ title: string;
4
+ text?: string;
5
+ cta: string;
6
+ theme: 'default' | 'warning' | 'primary' | 'danger' | 'lime';
7
+ position: 'top-left' | 'bottom-right';
8
+ };
9
+ declare function closePopup(): void;
10
+ declare var __VLS_25: {};
11
+ type __VLS_Slots = {} & {
12
+ default?: (props: typeof __VLS_25) => any;
13
+ };
14
+ declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {
15
+ closePopup: typeof closePopup;
16
+ }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
17
+ close: (...args: any[]) => void;
18
+ submit: (...args: any[]) => void;
19
+ }, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
20
+ onClose?: ((...args: any[]) => any) | undefined;
21
+ onSubmit?: ((...args: any[]) => any) | undefined;
22
+ }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
23
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
24
+ declare const _default: typeof __VLS_export;
25
+ export default _default;
26
+ type __VLS_WithSlots<T, S> = T & {
27
+ new (): {
28
+ $slots: S;
29
+ };
30
+ };
@@ -8,7 +8,10 @@
8
8
  <div class="bk-resizable-inner">
9
9
  <slot />
10
10
  </div>
11
- <button class="bk-resizable-handle" @mousedown="onMouseDown" />
11
+ <button
12
+ class="bk-resizable-handle bk-is-vertical"
13
+ @mousedown="onMouseDown"
14
+ />
12
15
  </div>
13
16
  </template>
14
17
 
@@ -7,11 +7,39 @@
7
7
  />
8
8
 
9
9
  <div
10
- v-show="activeSidebarRight"
11
- id="bk-sidebar-content-right"
12
- class="bk-sidebar bk-is-right"
13
- :class="{ 'bk-is-hidden': !sidebarVisible }"
14
- />
10
+ v-show="activeSidebarRight || activeSidebarRightBottom"
11
+ ref="sidebarRightWrapper"
12
+ class="bk-sidebar-right-wrapper"
13
+ :class="{
14
+ 'bk-is-resizing-split': isResizingSplit,
15
+ 'bk-is-split': activeSidebarRightBottom
16
+ }"
17
+ >
18
+ <div
19
+ v-show="activeSidebarRight"
20
+ id="bk-sidebar-content-right"
21
+ class="bk-sidebar bk-is-right"
22
+ :class="{ 'bk-is-hidden': !sidebarVisible }"
23
+ :style="rightSidebarStyle"
24
+ />
25
+ <div
26
+ v-show="activeSidebarRight && activeSidebarRightBottom"
27
+ class="bk bk-sidebar-resize"
28
+ @mousedown.prevent.stop="onSplitMouseDown"
29
+ >
30
+ <div>
31
+ <hr />
32
+ <hr />
33
+ <hr />
34
+ </div>
35
+ </div>
36
+ <div
37
+ v-show="activeSidebarRightBottom"
38
+ id="bk-sidebar-content-right-bottom"
39
+ class="bk-sidebar bk-is-right-bottom"
40
+ :class="{ 'bk-is-hidden': !sidebarVisible }"
41
+ />
42
+ </div>
15
43
 
16
44
  <AppMenu />
17
45
 
@@ -44,12 +72,23 @@
44
72
  id="bk-sidebar-tabs-right"
45
73
  class="bk-sidebar-container-tabs bk-is-right"
46
74
  />
75
+ <div
76
+ id="bk-sidebar-tabs-right-bottom"
77
+ class="bk-sidebar-container-tabs bk-is-right"
78
+ />
47
79
  </div>
48
80
  </template>
49
81
 
50
82
  <script setup>
51
83
  import { Icon } from "#blokkli/editor/components";
52
- import { onMounted, useBlokkli, onBeforeUnmount, computed } from "#imports";
84
+ import {
85
+ onMounted,
86
+ useBlokkli,
87
+ onBeforeUnmount,
88
+ computed,
89
+ ref,
90
+ useTemplateRef
91
+ } from "#imports";
53
92
  import AppMenu from "./../AppMenu/index.vue";
54
93
  import { onBlokkliEvent } from "#blokkli/editor/composables";
55
94
  const { ui, selection, storage, eventBus } = useBlokkli();
@@ -65,7 +104,67 @@ const sidebarVisible = computed(() => {
65
104
  });
66
105
  const activeSidebarLeft = storage.use("sidebar:active:left", "");
67
106
  const activeSidebarRight = storage.use("sidebar:active:right", "");
107
+ const activeSidebarRightBottom = storage.use("sidebar:active:right-bottom", "");
68
108
  const focusedSidebar = storage.use("sidebar:focused", "");
109
+ const splitPercent = storage.use("sidebar:right:split-percent", 50);
110
+ const sidebarRightWrapper = useTemplateRef("sidebarRightWrapper");
111
+ const activeSplitHeight = ref(null);
112
+ const isResizingSplit = ref(false);
113
+ const splitStartY = ref(0);
114
+ const splitStartHeight = ref(0);
115
+ const bothSidebarsVisible = computed(
116
+ () => !!activeSidebarRight.value && !!activeSidebarRightBottom.value
117
+ );
118
+ const rightSidebarStyle = computed(() => {
119
+ if (!bothSidebarsVisible.value) {
120
+ return {};
121
+ }
122
+ if (activeSplitHeight.value !== null) {
123
+ return { flex: `0 0 ${activeSplitHeight.value}px` };
124
+ }
125
+ return { flex: `0 0 ${splitPercent.value}%` };
126
+ });
127
+ function onSplitPointerMove(e) {
128
+ const wrapper = sidebarRightWrapper.value;
129
+ if (!wrapper) {
130
+ return;
131
+ }
132
+ const wrapperHeight = wrapper.clientHeight;
133
+ const delta = e.clientY - splitStartY.value;
134
+ const newHeight = Math.min(
135
+ Math.max(splitStartHeight.value + delta, 100),
136
+ wrapperHeight - 100
137
+ );
138
+ activeSplitHeight.value = newHeight;
139
+ }
140
+ function onSplitPointerUp() {
141
+ const wrapper = sidebarRightWrapper.value;
142
+ if (wrapper && activeSplitHeight.value !== null) {
143
+ const wrapperHeight = wrapper.clientHeight;
144
+ splitPercent.value = activeSplitHeight.value / wrapperHeight * 100;
145
+ }
146
+ activeSplitHeight.value = null;
147
+ isResizingSplit.value = false;
148
+ document.documentElement.style.cursor = "";
149
+ window.removeEventListener("mousemove", onSplitPointerMove);
150
+ window.removeEventListener("mouseup", onSplitPointerUp);
151
+ }
152
+ function onSplitMouseDown(e) {
153
+ if (ui.isMobile.value || e.button !== 0) {
154
+ return;
155
+ }
156
+ const wrapper = sidebarRightWrapper.value;
157
+ if (!wrapper) {
158
+ return;
159
+ }
160
+ const wrapperHeight = wrapper.clientHeight;
161
+ splitStartY.value = e.clientY;
162
+ splitStartHeight.value = splitPercent.value / 100 * wrapperHeight;
163
+ isResizingSplit.value = true;
164
+ document.documentElement.style.cursor = "ns-resize";
165
+ window.addEventListener("mousemove", onSplitPointerMove);
166
+ window.addEventListener("mouseup", onSplitPointerUp);
167
+ }
69
168
  const emit = defineEmits(["loaded"]);
70
169
  const onWindowMouseDown = (e) => {
71
170
  if ((e.target instanceof HTMLElement || e.target instanceof SVGElement) && !e.target.closest(".bk-sidebar-detached")) {
@@ -79,6 +178,8 @@ onMounted(() => {
79
178
  });
80
179
  onBeforeUnmount(() => {
81
180
  document.documentElement.removeEventListener("mousedown", onWindowMouseDown);
181
+ window.removeEventListener("mousemove", onSplitPointerMove);
182
+ window.removeEventListener("mouseup", onSplitPointerUp);
82
183
  });
83
184
  </script>
84
185
 
@@ -7,11 +7,11 @@ import BlockPreviewRenderer from './BlockPreviewRenderer/index.vue.js';
7
7
  import BlokkliTransition from './Transition/index.vue.js';
8
8
  import BundleSelector from './BundleSelector/index.vue.js';
9
9
  import ConfigForm from './PluginConfigForm/index.vue.js';
10
- import Dropdown from './Dropdown/index.vue.js';
11
- import DropdownItem from './DropdownItem/index.vue.js';
12
10
  import DialogModal from './Dialog/index.vue.js';
13
11
  import DiffValue from './DiffViewer/DiffValue.vue.js';
14
12
  import DiffViewerState from './DiffViewer/State.vue.js';
13
+ import Dropdown from './Dropdown/index.vue.js';
14
+ import DropdownItem from './DropdownItem/index.vue.js';
15
15
  import ErrorBoundary from './BlokkliErrorBoundary.vue.js';
16
16
  import FlexTextarea from './FlexTextarea/index.vue.js';
17
17
  import FormCheckboxes from './Form/Checkboxes/index.vue.js';
@@ -33,6 +33,7 @@ import ItemIconBox from './ItemIconBox/index.vue.js';
33
33
  import Loading from './Loading/index.vue.js';
34
34
  import NestedEditorOverlay from './NestedEditorOverlay/index.vue.js';
35
35
  import Pagination from './Pagination/index.vue.js';
36
+ import Popup from './Popup/index.vue.js';
36
37
  import RelativeTime from './RelativeTime/index.vue.js';
37
38
  import Resizable from './Resizable/index.vue.js';
38
39
  import ScaleToFit from './ScaleToFit/index.vue.js';
@@ -43,4 +44,4 @@ import Sortli from './Sortli/index.vue.js';
43
44
  import StatusIcon from './StatusIcon/index.vue.js';
44
45
  import TransitionHeight from './Transition/Height.vue.js';
45
46
  import ViewportBlockingRect from './ViewportBlockingRect/index.vue.js';
46
- export { AddListItem, ArtboardTooltip, AutoHeight, Banner, BlockPreviewItem, BlockPreviewRenderer, BlokkliTransition, BundleSelector, ConfigForm, Dropdown, DropdownItem, DialogModal, DiffValue, DiffViewerState, ErrorBoundary, FlexTextarea, FormCheckboxes, FormDatepicker, FormGroup, FormItem, FormOverlay, FormRadio, FormRadioTabs, FormSelect, FormText, FormTextarea, FormToggle, Highlight, Icon, InfoBox, ItemIcon, ItemIconBox, Loading, NestedEditorOverlay, Pagination, RelativeTime, Resizable, ScaleToFit, ScheduleDate, ScrollBoundary, ShortcutIndicator, Sortli, StatusIcon, TransitionHeight, ViewportBlockingRect, };
47
+ export { AddListItem, ArtboardTooltip, AutoHeight, Banner, BlockPreviewItem, BlockPreviewRenderer, BlokkliTransition, BundleSelector, ConfigForm, DialogModal, DiffValue, DiffViewerState, Dropdown, DropdownItem, ErrorBoundary, FlexTextarea, FormCheckboxes, FormDatepicker, FormGroup, FormItem, FormOverlay, FormRadio, FormRadioTabs, FormSelect, FormText, FormTextarea, FormToggle, Highlight, Icon, InfoBox, ItemIcon, ItemIconBox, Loading, NestedEditorOverlay, Pagination, Popup, RelativeTime, Resizable, ScaleToFit, ScheduleDate, ScrollBoundary, ShortcutIndicator, Sortli, StatusIcon, TransitionHeight, ViewportBlockingRect, };
@@ -7,11 +7,11 @@ import BlockPreviewRenderer from "./BlockPreviewRenderer/index.vue";
7
7
  import BlokkliTransition from "./Transition/index.vue";
8
8
  import BundleSelector from "./BundleSelector/index.vue";
9
9
  import ConfigForm from "./PluginConfigForm/index.vue";
10
- import Dropdown from "./Dropdown/index.vue";
11
- import DropdownItem from "./DropdownItem/index.vue";
12
10
  import DialogModal from "./Dialog/index.vue";
13
11
  import DiffValue from "./DiffViewer/DiffValue.vue";
14
12
  import DiffViewerState from "./DiffViewer/State.vue";
13
+ import Dropdown from "./Dropdown/index.vue";
14
+ import DropdownItem from "./DropdownItem/index.vue";
15
15
  import ErrorBoundary from "./BlokkliErrorBoundary.vue";
16
16
  import FlexTextarea from "./FlexTextarea/index.vue";
17
17
  import FormCheckboxes from "./Form/Checkboxes/index.vue";
@@ -33,6 +33,7 @@ import ItemIconBox from "./ItemIconBox/index.vue";
33
33
  import Loading from "./Loading/index.vue";
34
34
  import NestedEditorOverlay from "./NestedEditorOverlay/index.vue";
35
35
  import Pagination from "./Pagination/index.vue";
36
+ import Popup from "./Popup/index.vue";
36
37
  import RelativeTime from "./RelativeTime/index.vue";
37
38
  import Resizable from "./Resizable/index.vue";
38
39
  import ScaleToFit from "./ScaleToFit/index.vue";
@@ -53,11 +54,11 @@ export {
53
54
  BlokkliTransition,
54
55
  BundleSelector,
55
56
  ConfigForm,
56
- Dropdown,
57
- DropdownItem,
58
57
  DialogModal,
59
58
  DiffValue,
60
59
  DiffViewerState,
60
+ Dropdown,
61
+ DropdownItem,
61
62
  ErrorBoundary,
62
63
  FlexTextarea,
63
64
  FormCheckboxes,
@@ -79,6 +80,7 @@ export {
79
80
  Loading,
80
81
  NestedEditorOverlay,
81
82
  Pagination,
83
+ Popup,
82
84
  RelativeTime,
83
85
  Resizable,
84
86
  ScaleToFit,
@@ -1,10 +1,10 @@
1
1
  import { onBeforeUnmount, onMounted, useBlokkli } from "#imports";
2
2
  export function defineDropAreas(cb) {
3
- const { dropAreas } = useBlokkli();
3
+ const { dragdrop } = useBlokkli();
4
4
  onMounted(() => {
5
- dropAreas.add(cb);
5
+ dragdrop.addDropArea(cb);
6
6
  });
7
7
  onBeforeUnmount(() => {
8
- dropAreas.remove(cb);
8
+ dragdrop.removeDropArea(cb);
9
9
  });
10
10
  }