@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.
- package/dist/global/types/blockOptions.d.ts +4 -3
- package/dist/module.d.mts +2 -2
- package/dist/module.json +1 -1
- package/dist/module.mjs +71 -4
- package/dist/modules/agent/index.d.mts +1 -1
- package/dist/modules/agent/index.mjs +236 -6
- package/dist/modules/agent/runtime/app/composables/agentProvider.js +31 -14
- package/dist/modules/agent/runtime/app/composables/defineBlokkliAgentTool.d.ts +2 -20
- package/dist/modules/agent/runtime/app/composables/defineBlokkliAgentTool.js +0 -3
- package/dist/modules/agent/runtime/app/features/agent/Panel/Conversation/Item/Assistant/index.vue +2 -2
- package/dist/modules/agent/runtime/app/features/agent/Panel/Conversation/Item/User/index.vue +1 -2
- package/dist/modules/agent/runtime/app/features/agent/Panel/DebugGallery/index.vue +1 -2
- package/dist/modules/agent/runtime/app/features/agent/Panel/Input/Actions/index.d.vue.ts +1 -0
- package/dist/modules/agent/runtime/app/features/agent/Panel/Input/Actions/index.vue +66 -59
- package/dist/modules/agent/runtime/app/features/agent/Panel/Input/Actions/index.vue.d.ts +1 -0
- package/dist/modules/agent/runtime/app/features/agent/Panel/Input/index.vue +10 -12
- package/dist/modules/agent/runtime/app/features/agent/Panel/Welcome/de.md +2 -2
- package/dist/modules/agent/runtime/app/features/agent/Panel/Welcome/en.md +2 -2
- package/dist/modules/agent/runtime/app/features/agent/Panel/index.vue +1 -5
- package/dist/modules/agent/runtime/app/features/agent/index.vue +89 -37
- package/dist/modules/agent/runtime/app/helpers/index.d.ts +16 -19
- package/dist/modules/agent/runtime/app/helpers/index.js +22 -46
- package/dist/modules/agent/runtime/app/helpers/pageStructure.js +1 -1
- package/dist/modules/agent/runtime/app/tools/add_content_search_paragraph/index.js +5 -9
- package/dist/modules/agent/runtime/app/tools/add_fragment/index.js +2 -6
- package/dist/modules/agent/runtime/app/tools/add_media_paragraph/index.js +2 -6
- package/dist/modules/agent/runtime/app/tools/add_paragraphs/index.js +2 -3
- package/dist/modules/agent/runtime/app/tools/add_reusable_paragraph/index.js +2 -6
- package/dist/modules/agent/runtime/app/tools/add_template/index.js +2 -6
- package/dist/modules/agent/runtime/app/tools/analyze_content/index.d.ts +2 -0
- package/dist/modules/agent/runtime/app/tools/analyze_content/index.js +120 -0
- package/dist/modules/agent/runtime/app/tools/check_readability/index.d.ts +2 -0
- package/dist/modules/agent/runtime/app/tools/check_readability/index.js +57 -0
- package/dist/modules/agent/runtime/app/tools/duplicate_paragraphs/index.js +2 -6
- package/dist/modules/agent/runtime/app/tools/get_all_page_content/index.js +1 -1
- package/dist/modules/agent/runtime/app/tools/get_bundle_info/index.js +2 -1
- package/dist/modules/agent/runtime/app/tools/get_content_fields/index.js +1 -1
- package/dist/modules/agent/runtime/app/tools/get_paragraph_context/index.js +2 -5
- package/dist/modules/agent/runtime/app/tools/get_paragraph_options/index.js +2 -1
- package/dist/modules/agent/runtime/app/tools/get_selected_paragraphs/index.js +2 -3
- package/dist/modules/agent/runtime/app/tools/helpers.d.ts +53 -0
- package/dist/modules/agent/runtime/app/tools/helpers.js +187 -0
- package/dist/modules/agent/runtime/app/tools/move_paragraphs/index.js +2 -6
- package/dist/modules/agent/runtime/app/tools/schemas.d.ts +0 -52
- package/dist/modules/agent/runtime/app/tools/schemas.js +0 -187
- package/dist/modules/agent/runtime/app/tools/search_content/index.js +40 -47
- package/dist/modules/agent/runtime/app/tools/set_paragraph_options/index.js +2 -5
- package/dist/modules/agent/runtime/app/types/index.d.ts +0 -61
- package/dist/modules/agent/runtime/server/Session.d.ts +25 -6
- package/dist/modules/agent/runtime/server/Session.js +109 -30
- package/dist/modules/agent/runtime/server/SessionManager.d.ts +3 -0
- package/dist/modules/agent/runtime/server/SessionManager.js +4 -1
- package/dist/modules/agent/runtime/server/agent.js +3 -2
- package/dist/modules/agent/runtime/server/default-skills/fixReadability.d.ts +2 -0
- package/dist/modules/agent/runtime/server/default-skills/fixReadability.js +69 -0
- package/dist/modules/agent/runtime/server/default-system-prompts/page-context.js +28 -0
- package/dist/modules/agent/runtime/server/server-tools/index.d.ts +10 -2
- package/dist/modules/agent/runtime/server/server-tools/index.js +1 -1
- package/dist/modules/agent/runtime/server/server-tools/load_tools/index.js +1 -1
- package/dist/modules/agent/runtime/shared/types.d.ts +46 -11
- package/dist/modules/agent/runtime/shared/types.js +22 -10
- package/dist/modules/charts/index.d.mts +1 -1
- package/dist/modules/charts/index.mjs +21 -7
- package/dist/modules/charts/runtime/blokkli/skills/charts.js +6 -6
- package/dist/modules/charts/runtime/blokkli/tools/chart_schemas.d.ts +25 -2
- package/dist/modules/charts/runtime/blokkli/tools/chart_schemas.js +39 -1
- package/dist/modules/charts/runtime/blokkli/tools/create_chart/index.js +24 -17
- package/dist/modules/charts/runtime/blokkli/tools/get_chart_data/index.js +11 -19
- package/dist/modules/charts/runtime/blokkli/tools/get_chart_type_options/index.js +2 -4
- package/dist/modules/charts/runtime/blokkli/tools/update_chart/index.js +8 -20
- package/dist/modules/charts/runtime/chartTypes/area.d.ts +6 -1
- package/dist/modules/charts/runtime/chartTypes/bar.d.ts +7 -1
- package/dist/modules/charts/runtime/chartTypes/define.d.ts +1 -1
- package/dist/modules/charts/runtime/chartTypes/donut.d.ts +5 -1
- package/dist/modules/charts/runtime/chartTypes/heatmap.d.ts +3 -1
- package/dist/modules/charts/runtime/chartTypes/index.d.ts +18 -0
- package/dist/modules/charts/runtime/chartTypes/line.d.ts +6 -1
- package/dist/modules/charts/runtime/chartTypes/pie.d.ts +4 -1
- package/dist/modules/charts/runtime/chartTypes/radar.d.ts +6 -1
- package/dist/modules/charts/runtime/chartTypes/radialBar.d.ts +5 -1
- package/dist/modules/charts/runtime/chartTypes/shared.d.ts +20 -5
- package/dist/modules/charts/runtime/chartTypes/types.d.ts +6 -6
- package/dist/modules/charts/runtime/components/ChartRenderer/index.d.vue.ts +145 -2
- package/dist/modules/charts/runtime/components/ChartRenderer/index.vue +2 -2
- package/dist/modules/charts/runtime/components/ChartRenderer/index.vue.d.ts +145 -2
- package/dist/modules/charts/runtime/components/index.d.ts +1 -0
- package/dist/modules/charts/runtime/components/index.js +1 -0
- package/dist/modules/charts/runtime/features/charts/Editor/ChartTypeOptions/index.d.vue.ts +3 -2
- package/dist/modules/charts/runtime/features/charts/Editor/ChartTypeOptions/index.vue.d.ts +3 -2
- package/dist/modules/charts/runtime/features/charts/Editor/CsvImport/index.vue +1 -2
- package/dist/modules/charts/runtime/features/charts/Editor/FootnoteEditor/index.vue +1 -1
- package/dist/modules/charts/runtime/features/charts/Editor/Preview/index.d.vue.ts +2 -0
- package/dist/modules/charts/runtime/features/charts/Editor/Preview/index.vue +35 -13
- package/dist/modules/charts/runtime/features/charts/Editor/Preview/index.vue.d.ts +2 -0
- package/dist/modules/charts/runtime/features/charts/Editor/index.d.vue.ts +1 -0
- package/dist/modules/charts/runtime/features/charts/Editor/index.vue +9 -3
- package/dist/modules/charts/runtime/features/charts/Editor/index.vue.d.ts +1 -0
- package/dist/modules/charts/runtime/features/charts/Editor/useChartEditorState.js +1 -1
- package/dist/modules/charts/runtime/features/charts/index.vue +6 -6
- package/dist/modules/charts/runtime/helpers/index.d.ts +25 -0
- package/dist/modules/charts/runtime/helpers/index.js +63 -0
- package/dist/modules/charts/runtime/types.d.ts +10 -28
- package/dist/modules/charts/runtime/types.js +0 -64
- package/dist/modules/drupal/index.d.mts +1 -1
- package/dist/modules/drupal/runtime/adapter/index.d.ts +3 -1
- package/dist/modules/drupal/runtime/adapter/index.js +4 -4
- package/dist/modules/table-of-contents/index.d.mts +1 -1
- package/dist/runtime/components/BlokkliItem.vue +1 -1
- package/dist/runtime/composables/defineBlokkli.js +1 -1
- package/dist/runtime/editor/components/AnimationCanvas/index.vue +13 -7
- package/dist/runtime/editor/components/Banner/index.d.vue.ts +1 -0
- package/dist/runtime/editor/components/Banner/index.vue +1 -1
- package/dist/runtime/editor/components/Banner/index.vue.d.ts +1 -0
- package/dist/runtime/editor/components/DropdownItem/index.d.vue.ts +1 -0
- package/dist/runtime/editor/components/DropdownItem/index.vue +3 -2
- package/dist/runtime/editor/components/DropdownItem/index.vue.d.ts +1 -0
- package/dist/runtime/editor/components/EditProvider.vue +7 -4
- package/dist/runtime/editor/components/FlexTextarea/index.d.vue.ts +5 -1
- package/dist/runtime/editor/components/FlexTextarea/index.vue +24 -101
- package/dist/runtime/editor/components/FlexTextarea/index.vue.d.ts +5 -1
- package/dist/runtime/editor/components/NestedEditorOverlay/index.vue +28 -9
- package/dist/runtime/editor/components/Popup/index.d.vue.ts +30 -0
- package/dist/runtime/editor/components/Popup/index.vue +82 -0
- package/dist/runtime/editor/components/Popup/index.vue.d.ts +30 -0
- package/dist/runtime/editor/components/Resizable/index.vue +4 -1
- package/dist/runtime/editor/components/Toolbar/index.vue +107 -6
- package/dist/runtime/editor/components/index.d.ts +4 -3
- package/dist/runtime/editor/components/index.js +6 -4
- package/dist/runtime/editor/composables/defineDropAreas.js +3 -3
- package/dist/runtime/editor/composables/defineDropHandler.d.ts +3 -0
- package/dist/runtime/editor/composables/defineDropHandler.js +10 -0
- package/dist/runtime/editor/composables/index.d.ts +1 -0
- package/dist/runtime/editor/composables/index.js +1 -0
- package/dist/runtime/editor/css/output.css +1 -1
- package/dist/runtime/editor/events/index.d.ts +9 -0
- package/dist/runtime/editor/features/add-list/index.vue +58 -1
- package/dist/runtime/editor/features/analyze/Main.d.vue.ts +3 -2
- package/dist/runtime/editor/features/analyze/Main.vue +28 -44
- package/dist/runtime/editor/features/analyze/Main.vue.d.ts +3 -2
- package/dist/runtime/editor/features/analyze/analyzers/readability.js +65 -0
- package/dist/runtime/editor/features/analyze/analyzers/types.d.ts +19 -0
- package/dist/runtime/editor/features/analyze/index.vue +18 -15
- package/dist/runtime/editor/features/clipboard/DropElement/Video.d.vue.ts +8 -0
- package/dist/runtime/editor/features/clipboard/{List/Item → DropElement}/Video.vue +1 -5
- package/dist/runtime/editor/features/clipboard/DropElement/Video.vue.d.ts +8 -0
- package/dist/runtime/editor/features/clipboard/DropElement/helpers.d.ts +1 -0
- package/dist/runtime/editor/features/clipboard/DropElement/helpers.js +14 -0
- package/dist/runtime/editor/features/clipboard/DropElement/index.d.vue.ts +16 -0
- package/dist/runtime/editor/features/clipboard/DropElement/index.vue +97 -0
- package/dist/runtime/editor/features/clipboard/DropElement/index.vue.d.ts +16 -0
- package/dist/runtime/editor/features/clipboard/helpers.d.ts +15 -0
- package/dist/runtime/editor/features/clipboard/helpers.js +62 -0
- package/dist/runtime/editor/features/clipboard/index.vue +585 -337
- package/dist/runtime/editor/features/clipboard/types.d.ts +14 -2
- package/dist/runtime/editor/features/dragging-overlay/DragItems/index.vue +17 -5
- package/dist/runtime/editor/features/dragging-overlay/Renderer/index.vue +2 -2
- package/dist/runtime/editor/features/dragging-overlay/index.vue +125 -219
- package/dist/runtime/editor/features/editable-field/Overlay/Plaintext/index.vue +4 -4
- package/dist/runtime/editor/features/editable-field/Overlay/index.vue +6 -0
- package/dist/runtime/editor/features/library/index.vue +14 -0
- package/dist/runtime/editor/features/media-library/index.vue +32 -1
- package/dist/runtime/editor/features/options/Form/ComplexType/index.d.vue.ts +11 -0
- package/dist/runtime/editor/features/options/Form/ComplexType/index.vue +36 -0
- package/dist/runtime/editor/features/options/Form/ComplexType/index.vue.d.ts +11 -0
- package/dist/runtime/editor/features/options/Form/Item.d.vue.ts +3 -2
- package/dist/runtime/editor/features/options/Form/Item.vue +10 -2
- package/dist/runtime/editor/features/options/Form/Item.vue.d.ts +3 -2
- package/dist/runtime/editor/features/options/Form/index.vue +5 -0
- package/dist/runtime/editor/features/search/index.vue +25 -1
- package/dist/runtime/editor/features/structure/index.vue +25 -1
- package/dist/runtime/editor/features/tour/index.vue +22 -12
- package/dist/runtime/editor/helpers/clipboardData/index.d.ts +11 -0
- package/dist/runtime/editor/helpers/clipboardData/index.js +157 -0
- package/dist/runtime/editor/helpers/options/index.js +5 -0
- package/dist/runtime/editor/icons/svg/stars.svg +5 -1
- package/dist/runtime/editor/plugins/Sidebar/Detached/index.d.vue.ts +1 -1
- package/dist/runtime/editor/plugins/Sidebar/Detached/index.vue.d.ts +1 -1
- package/dist/runtime/editor/plugins/Sidebar/index.d.vue.ts +14 -3
- package/dist/runtime/editor/plugins/Sidebar/index.vue +4 -2
- package/dist/runtime/editor/plugins/Sidebar/index.vue.d.ts +14 -3
- package/dist/runtime/editor/providers/analyze.d.ts +43 -0
- package/dist/runtime/editor/providers/analyze.js +78 -0
- package/dist/runtime/editor/providers/animation.d.ts +4 -0
- package/dist/runtime/editor/providers/animation.js +6 -0
- package/dist/runtime/editor/providers/dragdrop.d.ts +55 -0
- package/dist/runtime/editor/providers/dragdrop.js +37 -0
- package/dist/runtime/editor/providers/storage.js +15 -0
- package/dist/runtime/editor/providers/ui.d.ts +6 -0
- package/dist/runtime/editor/providers/ui.js +19 -0
- package/dist/runtime/editor/translations/de.json +73 -61
- package/dist/runtime/editor/translations/fr.json +67 -55
- package/dist/runtime/editor/translations/gsw_CH.json +71 -59
- package/dist/runtime/editor/translations/it.json +67 -55
- package/dist/runtime/editor/types/app.d.ts +4 -2
- package/dist/runtime/editor/types/draggable.d.ts +1 -0
- package/dist/runtime/editor/types/ui.d.ts +1 -1
- package/dist/runtime/helpers/injections.d.ts +1 -1
- package/dist/runtime/types/blockOptions.d.ts +2 -1
- package/dist/runtime/types/definitions.d.ts +4 -0
- package/dist/shared/{editor.CWQIFIEQ.d.mts → editor.BdBm1Z7C.d.mts} +12 -0
- package/dist/types.d.mts +1 -1
- package/package.json +5 -3
- package/dist/modules/charts/runtime/components/Fragment/BlokkliChart.d.vue.ts +0 -3
- package/dist/modules/charts/runtime/components/Fragment/BlokkliChart.vue +0 -29
- package/dist/modules/charts/runtime/components/Fragment/BlokkliChart.vue.d.ts +0 -3
- package/dist/runtime/editor/features/clipboard/List/Item/File.d.vue.ts +0 -4
- package/dist/runtime/editor/features/clipboard/List/Item/File.vue +0 -60
- package/dist/runtime/editor/features/clipboard/List/Item/File.vue.d.ts +0 -4
- package/dist/runtime/editor/features/clipboard/List/Item/Video.d.vue.ts +0 -4
- package/dist/runtime/editor/features/clipboard/List/Item/Video.vue.d.ts +0 -4
- package/dist/runtime/editor/features/clipboard/List/index.d.vue.ts +0 -11
- package/dist/runtime/editor/features/clipboard/List/index.vue +0 -72
- package/dist/runtime/editor/features/clipboard/List/index.vue.d.ts +0 -11
- package/dist/runtime/editor/features/tour/Popup/index.d.vue.ts +0 -9
- package/dist/runtime/editor/features/tour/Popup/index.vue +0 -34
- package/dist/runtime/editor/features/tour/Popup/index.vue.d.ts +0 -9
- package/dist/runtime/editor/providers/dropArea.d.ts +0 -48
- 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
|
-
|
|
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 (!
|
|
148
|
-
const
|
|
149
|
-
if (
|
|
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 =
|
|
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
|
|
136
|
-
const
|
|
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(${
|
|
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
|
|
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
|
|
189
|
-
const
|
|
190
|
-
|
|
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(${
|
|
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
|
+
};
|
|
@@ -7,11 +7,39 @@
|
|
|
7
7
|
/>
|
|
8
8
|
|
|
9
9
|
<div
|
|
10
|
-
v-show="activeSidebarRight"
|
|
11
|
-
|
|
12
|
-
class="bk-sidebar
|
|
13
|
-
:class="{
|
|
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 {
|
|
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,
|
|
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 {
|
|
3
|
+
const { dragdrop } = useBlokkli();
|
|
4
4
|
onMounted(() => {
|
|
5
|
-
|
|
5
|
+
dragdrop.addDropArea(cb);
|
|
6
6
|
});
|
|
7
7
|
onBeforeUnmount(() => {
|
|
8
|
-
|
|
8
|
+
dragdrop.removeDropArea(cb);
|
|
9
9
|
});
|
|
10
10
|
}
|