@ibiz-template/vue3-components 0.7.41-alpha.38 → 0.7.41-alpha.39
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/ibiz-markdown-editor-D4Og0fLv.js +1 -0
- package/dist/{index-Dp8ExwuL.js → index-BewO9StC.js} +1 -1
- package/dist/{index-C28lnh2e.js → index-ClxO69TM.js} +1 -1
- package/dist/index-DHKZJQyN.js +11 -0
- package/dist/index.min.css +1 -1
- package/dist/index.system.min.js +1 -1
- package/dist/{wang-editor-DDVqSnRX.js → wang-editor-BYeoazrn.js} +1 -1
- package/dist/{xlsx-util-BMANxyk-.js → xlsx-util-DpgMzatq.js} +1 -1
- package/es/control/form/form-detail/form-item/form-item-container/form-item-container.mjs +42 -8
- package/es/editor/code/code-editor.controller.mjs +72 -25
- package/es/editor/code/monaco-editor/monaco-editor.css +1 -1
- package/es/editor/code/monaco-editor/monaco-editor.mjs +20 -8
- package/es/editor/html/html-editor.controller.mjs +49 -4
- package/es/editor/html/wang-editor/wang-editor.mjs +7 -1
- package/es/editor/markdown/ibiz-markdown-editor/custom-menu.mjs +5 -7
- package/es/editor/markdown/ibiz-markdown-editor/ibiz-markdown-editor.css +1 -1
- package/es/editor/markdown/ibiz-markdown-editor/ibiz-markdown-editor.mjs +42 -4
- package/es/editor/markdown/markdown-editor.controller.mjs +111 -6
- package/es/locale/en/index.mjs +5 -2
- package/es/locale/zh-CN/index.mjs +5 -2
- package/es/util/inline-ai-util/inline-ai-textarea/inline-ai-textarea.css +1 -1
- package/es/util/inline-ai-util/inline-ai-textarea/inline-ai-textarea.hook.mjs +76 -21
- package/es/util/inline-ai-util/inline-ai-textarea/inline-ai-textarea.mjs +48 -33
- package/lib/control/form/form-detail/form-item/form-item-container/form-item-container.cjs +42 -8
- package/lib/editor/code/code-editor.controller.cjs +72 -25
- package/lib/editor/code/monaco-editor/monaco-editor.cjs +20 -8
- package/lib/editor/code/monaco-editor/monaco-editor.css +1 -1
- package/lib/editor/html/html-editor.controller.cjs +49 -4
- package/lib/editor/html/wang-editor/wang-editor.cjs +7 -1
- package/lib/editor/markdown/ibiz-markdown-editor/custom-menu.cjs +5 -7
- package/lib/editor/markdown/ibiz-markdown-editor/ibiz-markdown-editor.cjs +42 -4
- package/lib/editor/markdown/ibiz-markdown-editor/ibiz-markdown-editor.css +1 -1
- package/lib/editor/markdown/markdown-editor.controller.cjs +111 -6
- package/lib/locale/en/index.cjs +5 -2
- package/lib/locale/zh-CN/index.cjs +5 -2
- package/lib/util/inline-ai-util/inline-ai-textarea/inline-ai-textarea.cjs +48 -33
- package/lib/util/inline-ai-util/inline-ai-textarea/inline-ai-textarea.css +1 -1
- package/lib/util/inline-ai-util/inline-ai-textarea/inline-ai-textarea.hook.cjs +76 -21
- package/package.json +4 -4
- package/dist/ibiz-markdown-editor-qRaayafj.js +0 -1
- package/dist/index-BiYphJ2f.js +0 -11
|
@@ -43,6 +43,13 @@ class CodeEditorController extends runtime.EditorController {
|
|
|
43
43
|
* @memberof CodeEditorController
|
|
44
44
|
*/
|
|
45
45
|
__publicField(this, "currentSelection");
|
|
46
|
+
/**
|
|
47
|
+
* AI 聊天自填模式
|
|
48
|
+
*
|
|
49
|
+
* @type {boolean}
|
|
50
|
+
* @memberof CodeEditorController
|
|
51
|
+
*/
|
|
52
|
+
__publicField(this, "chatCompletion", false);
|
|
46
53
|
}
|
|
47
54
|
/**
|
|
48
55
|
* 语言类型
|
|
@@ -78,6 +85,11 @@ class CodeEditorController extends runtime.EditorController {
|
|
|
78
85
|
appDataEntityId,
|
|
79
86
|
this.context.srfappid
|
|
80
87
|
);
|
|
88
|
+
if (this.deACMode) {
|
|
89
|
+
if (this.deACMode.actype === "CHATCOMPLETION") {
|
|
90
|
+
this.chatCompletion = true;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
81
93
|
}
|
|
82
94
|
/**
|
|
83
95
|
* editor 创建完成
|
|
@@ -107,33 +119,38 @@ class CodeEditorController extends runtime.EditorController {
|
|
|
107
119
|
* @param {string} text 文本
|
|
108
120
|
*/
|
|
109
121
|
insertText(text) {
|
|
110
|
-
var _a, _b, _c, _d
|
|
111
|
-
|
|
112
|
-
|
|
122
|
+
var _a, _b, _c, _d;
|
|
123
|
+
if (!this.editor || !this.monaco) {
|
|
124
|
+
throw new core.RuntimeError(ibiz.i18n.t("editor.code.editorNotInit"));
|
|
125
|
+
}
|
|
126
|
+
const selections = this.editor.getSelections();
|
|
127
|
+
if (!selections || selections.length === 0)
|
|
113
128
|
return;
|
|
114
|
-
const
|
|
115
|
-
const
|
|
116
|
-
const
|
|
117
|
-
|
|
129
|
+
const activeSelection = selections[selections.length - 1];
|
|
130
|
+
const insertLine = activeSelection.positionLineNumber;
|
|
131
|
+
const insertColumn = activeSelection.positionColumn;
|
|
132
|
+
const formattedText = "\n".concat(text, "\n");
|
|
133
|
+
(_a = this.editor) == null ? void 0 : _a.executeEdits("", [
|
|
118
134
|
{
|
|
119
135
|
range: new this.monaco.Range(
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
136
|
+
insertLine,
|
|
137
|
+
insertColumn,
|
|
138
|
+
insertLine,
|
|
139
|
+
insertColumn
|
|
140
|
+
// 光标位置纯插入,不替换任何内容
|
|
124
141
|
),
|
|
125
|
-
text
|
|
142
|
+
text: formattedText
|
|
126
143
|
}
|
|
127
144
|
]);
|
|
128
|
-
const
|
|
129
|
-
const
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
);
|
|
136
|
-
(
|
|
145
|
+
const linesInText = formattedText.split("\n");
|
|
146
|
+
const linesAdded = linesInText.length - 1;
|
|
147
|
+
const lastLineOfInsert = insertLine + linesAdded - 1;
|
|
148
|
+
const lastLineContent = linesInText[linesInText.length - 2] || "";
|
|
149
|
+
const newColumn = lastLineContent.length + 1;
|
|
150
|
+
const newPosition = new this.monaco.Position(lastLineOfInsert, newColumn);
|
|
151
|
+
(_b = this.editor) == null ? void 0 : _b.setPosition(newPosition);
|
|
152
|
+
(_c = this.editor) == null ? void 0 : _c.revealPositionInCenter(newPosition);
|
|
153
|
+
(_d = this.editor) == null ? void 0 : _d.focus();
|
|
137
154
|
}
|
|
138
155
|
/**
|
|
139
156
|
* 替换选中文本
|
|
@@ -181,11 +198,37 @@ class CodeEditorController extends runtime.EditorController {
|
|
|
181
198
|
var _a;
|
|
182
199
|
(_a = this.editor) == null ? void 0 : _a.focus();
|
|
183
200
|
}
|
|
201
|
+
/**
|
|
202
|
+
* 获取内联AI编辑器元素
|
|
203
|
+
*/
|
|
204
|
+
getInLineAiEditorElement() {
|
|
205
|
+
if (!this.editor) {
|
|
206
|
+
throw new core.RuntimeError(ibiz.i18n.t("editor.code.editorNotInit"));
|
|
207
|
+
}
|
|
208
|
+
return this.editor.getDomNode();
|
|
209
|
+
}
|
|
210
|
+
/**
|
|
211
|
+
* 获取内联AI编辑器主题
|
|
212
|
+
*/
|
|
213
|
+
getInLineAiEditorTheme() {
|
|
214
|
+
var _a, _b, _c;
|
|
215
|
+
const currentTheme = (_c = (_b = (_a = this.editor) == null ? void 0 : _a._themeService) == null ? void 0 : _b._theme) == null ? void 0 : _c.themeName;
|
|
216
|
+
switch (currentTheme) {
|
|
217
|
+
case "vs-dark":
|
|
218
|
+
return "dark";
|
|
219
|
+
case "vs":
|
|
220
|
+
default:
|
|
221
|
+
return "light";
|
|
222
|
+
}
|
|
223
|
+
}
|
|
184
224
|
/**
|
|
185
225
|
* 获取内联AI聊天参数
|
|
186
226
|
*/
|
|
187
227
|
getInLineAiChatOptions() {
|
|
188
228
|
var _a, _b, _c, _d, _e, _f;
|
|
229
|
+
if (!this.editor || !this.monaco) {
|
|
230
|
+
throw new core.RuntimeError(ibiz.i18n.t("editor.code.editorNotInit"));
|
|
231
|
+
}
|
|
189
232
|
const contentArea = (_b = (_a = this.editor) == null ? void 0 : _a.getDomNode()) == null ? void 0 : _b.querySelector(".editor-scrollable");
|
|
190
233
|
if (!contentArea) {
|
|
191
234
|
throw new core.RuntimeError(ibiz.i18n.t("editor.code.noEditorArea"));
|
|
@@ -203,12 +246,16 @@ class CodeEditorController extends runtime.EditorController {
|
|
|
203
246
|
throw new core.RuntimeError(ibiz.i18n.t("editor.code.noSelCoords"));
|
|
204
247
|
}
|
|
205
248
|
const rect = contentArea.getBoundingClientRect();
|
|
249
|
+
const layoutInfo = this.editor.getLayoutInfo();
|
|
206
250
|
return {
|
|
251
|
+
// 编辑器编辑区左侧距离
|
|
207
252
|
left: rect.left,
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
253
|
+
// 编辑器上方距离 + 选区距离编辑器上方距离 + 行高度
|
|
254
|
+
top: editorRect.top + coordinates.top + coordinates.height,
|
|
255
|
+
// 编辑器编辑区宽度 - 代码预览区宽度 - 代码预览区标尺宽度
|
|
256
|
+
width: rect.width - layoutInfo.minimap.minimapWidth - layoutInfo.overviewRuler.width,
|
|
257
|
+
editorElement: this.getInLineAiEditorElement(),
|
|
258
|
+
editorTheme: this.getInLineAiEditorTheme()
|
|
212
259
|
};
|
|
213
260
|
}
|
|
214
261
|
/**
|
|
@@ -41,6 +41,7 @@ const IBizCode = /* @__PURE__ */ vue.defineComponent({
|
|
|
41
41
|
[ns.cssVarBlockName("text-editor-toolbar-z-index")]: zIndex.increment()
|
|
42
42
|
});
|
|
43
43
|
const textTBVisible = vue.ref(false);
|
|
44
|
+
const editorTheme = vue.ref("");
|
|
44
45
|
const editorModel = c.model;
|
|
45
46
|
if (editorModel.editorParams) {
|
|
46
47
|
if (editorModel.editorParams.enableEdit) {
|
|
@@ -74,8 +75,9 @@ const IBizCode = /* @__PURE__ */ vue.defineComponent({
|
|
|
74
75
|
let decorationsCollection;
|
|
75
76
|
let chatInstance;
|
|
76
77
|
const getMonacoTheme = (name) => {
|
|
77
|
-
var _a;
|
|
78
|
-
|
|
78
|
+
var _a, _b;
|
|
79
|
+
editorTheme.value = ((_a = c == null ? void 0 : c.editorParams) == null ? void 0 : _a.customTheme) || ibiz.config.codeEditorTheme || name;
|
|
80
|
+
const customTheme = (_b = c == null ? void 0 : c.editorParams) == null ? void 0 : _b.customTheme;
|
|
79
81
|
if (customTheme) {
|
|
80
82
|
return customTheme === "dark" ? "vs-dark" : "vs";
|
|
81
83
|
}
|
|
@@ -342,13 +344,15 @@ const IBizCode = /* @__PURE__ */ vue.defineComponent({
|
|
|
342
344
|
return;
|
|
343
345
|
textTBStyle.value = {
|
|
344
346
|
...textTBStyle.value,
|
|
347
|
+
// 编辑器左侧距离 + 选区距离编辑器左侧距离
|
|
345
348
|
[ns.cssVarBlockName("text-editor-toolbar-left")]: "".concat(editorRect.left + coordinates.left, "px"),
|
|
346
|
-
|
|
349
|
+
// 编辑器上方距离 + 选区距离编辑器上方距离 + 行高度
|
|
350
|
+
[ns.cssVarBlockName("text-editor-toolbar-top")]: "".concat(editorRect.top + coordinates.top + coordinates.height, "px")
|
|
347
351
|
};
|
|
348
352
|
}
|
|
349
353
|
};
|
|
350
354
|
const setTextTBVisible = () => {
|
|
351
|
-
if (props.readonly || !enableEdit.value || !c.deACMode)
|
|
355
|
+
if (props.readonly || !enableEdit.value || !c.deACMode || !c.chatCompletion)
|
|
352
356
|
return;
|
|
353
357
|
const selection = editor == null ? void 0 : editor.getSelection();
|
|
354
358
|
textTBVisible.value = !!(selection && !selection.isEmpty());
|
|
@@ -367,14 +371,21 @@ const IBizCode = /* @__PURE__ */ vue.defineComponent({
|
|
|
367
371
|
return;
|
|
368
372
|
const coordinates = editor == null ? void 0 : editor.getScrolledVisiblePosition(position);
|
|
369
373
|
const editorRect = (_b = editor == null ? void 0 : editor.getDomNode()) == null ? void 0 : _b.getBoundingClientRect();
|
|
370
|
-
|
|
374
|
+
const textTBHeight = textTBRef.value.offsetHeight;
|
|
375
|
+
if (!coordinates || !editorRect || !textTBHeight)
|
|
371
376
|
return;
|
|
372
377
|
const items = ibiz.inLineAIUtil.calcContextMenus(c.deACMode, (tag) => {
|
|
373
378
|
c.doInLineAIUIAction(tag, c.model.appId);
|
|
374
379
|
});
|
|
375
380
|
if (items.length === 0)
|
|
376
381
|
return;
|
|
377
|
-
ibiz.inLineAIUtil.showContextMenus(
|
|
382
|
+
ibiz.inLineAIUtil.showContextMenus(
|
|
383
|
+
// 编辑器左侧距离 + 选区距离编辑器左侧距离
|
|
384
|
+
editorRect.left + coordinates.left,
|
|
385
|
+
// 编辑器上方距离 + 选区距离编辑器上方距离 + 行高度 + 工具栏高度
|
|
386
|
+
editorRect.top + coordinates.top + coordinates.height + textTBHeight,
|
|
387
|
+
items
|
|
388
|
+
);
|
|
378
389
|
};
|
|
379
390
|
const handleEditorClick = (e) => {
|
|
380
391
|
var _a;
|
|
@@ -651,6 +662,7 @@ const IBizCode = /* @__PURE__ */ vue.defineComponent({
|
|
|
651
662
|
readonlyState,
|
|
652
663
|
isLoading,
|
|
653
664
|
textTBRef,
|
|
665
|
+
editorTheme,
|
|
654
666
|
renderFooter,
|
|
655
667
|
renderHeaderToolbar,
|
|
656
668
|
renderTextEditorToolbar,
|
|
@@ -662,7 +674,7 @@ const IBizCode = /* @__PURE__ */ vue.defineComponent({
|
|
|
662
674
|
var _a, _b;
|
|
663
675
|
const isLoading = !((_b = (_a = this.controller.view) == null ? void 0 : _a.state) == null ? void 0 : _b.isLoading) && this.isLoading;
|
|
664
676
|
return !this.isFullScreen ? vue.withDirectives(vue.createVNode("div", {
|
|
665
|
-
"class": [this.ns.b(), {
|
|
677
|
+
"class": [this.ns.b(), this.ns.is(this.editorTheme, !!this.editorTheme), {
|
|
666
678
|
[this.ns.b("editor-readonly")]: this.readonlyState
|
|
667
679
|
}, {
|
|
668
680
|
[this.ns.b("editor-enable")]: !this.readonlyState
|
|
@@ -674,7 +686,7 @@ const IBizCode = /* @__PURE__ */ vue.defineComponent({
|
|
|
674
686
|
"onClose": () => this.changeFullScreenState()
|
|
675
687
|
}, {
|
|
676
688
|
default: () => [vue.withDirectives(vue.createVNode("div", {
|
|
677
|
-
"class": [this.ns.b(), {
|
|
689
|
+
"class": [this.ns.b(), this.ns.is(this.editorTheme, !!this.editorTheme), {
|
|
678
690
|
[this.ns.b("editor-readonly")]: this.readonlyState
|
|
679
691
|
}, {
|
|
680
692
|
[this.ns.b("editor-enable")]: !this.readonlyState
|
|
@@ -1 +1 @@
|
|
|
1
|
-
.ibiz-code{display:flex;flex-direction:column;width:100%;height:100%}.ibiz-code__box{width:100%;height:100%;min-height:200px;overflow:hidden}.ibiz-code__first-prompt::before{padding-right:var(--ibiz-spacing-base);content:var(--ibiz-code-placeholder)}.ibiz-code-toolbar{position:absolute;top:4px;right:18px;z-index:10;display:flex;align-items:center;justify-content:end;width:auto;height:auto;padding-right:0;font-size:var(--ibiz-font-size-header-6)}.ibiz-code-toolbar>*+*{margin-left:var(--ibiz-spacing-base-loose)}.ibiz-code-toolbar__fullscreen{height:38px;padding:0 12px;font-size:var(--ibiz-font-size-regular);font-style:normal;line-height:2.8;cursor:pointer}.ibiz-code-toolbar__fullscreen:hover{background-color:var(--ibiz-color-bg-3)}.ibiz-code-footer{
|
|
1
|
+
.ibiz-code{--ibiz-code-color-text-editor-toolbar-bg:var(--ibiz-color-bg-2);--ibiz-code-color-text-editor-toolbar-text:var(--ibiz-color-text-0);--ibiz-code-color-text-editor-toolbar-item-bg-hover:var(--ibiz-color-primary-light-default);--ibiz-code-color-text-editor-toolbar-item-text-hover:var(--ibiz-color-primary);--ibiz-code-height-text-editor-toolbar:40px;--ibiz-code-footer-toolbar-height:36px;--ibiz-code-footer-button-height:36px;--ibiz-code-spacing-code-text-editor-toolbar-padding:var(--ibiz-spacing-extra-tight);--ibiz-code-spacing-code-text-editor-toolbar-item-padding:var(--ibiz-spacing-extra-tight) var(--ibiz-spacing-tight);--ibiz-code-spacing-code-text-editor-toolbar-circle:var(--ibiz-border-radius-extra-small);--ibiz-code-spacing-code-text-editor-toolbar-item-circle:var(--ibiz-border-radius-extra-small);--ibiz-code-text-editor-toolbar-z-index:1;--ibiz-code-text-editor-toolbar-left:0;--ibiz-code-text-editor-toolbar-top:0;display:flex;flex-direction:column;width:100%;height:100%}.ibiz-code__box{width:100%;height:100%;min-height:200px;overflow:hidden}.ibiz-code__first-prompt::before{padding-right:var(--ibiz-spacing-base);content:var(--ibiz-code-placeholder)}.ibiz-code-toolbar{position:absolute;top:4px;right:18px;z-index:10;display:flex;align-items:center;justify-content:end;width:auto;height:auto;padding-right:0;font-size:var(--ibiz-font-size-header-6)}.ibiz-code-toolbar>*+*{margin-left:var(--ibiz-spacing-base-loose)}.ibiz-code-toolbar__fullscreen{height:38px;padding:0 12px;font-size:var(--ibiz-font-size-regular);font-style:normal;line-height:2.8;cursor:pointer}.ibiz-code-toolbar__fullscreen:hover{background-color:var(--ibiz-color-bg-3)}.ibiz-code-footer{display:flex;align-items:center;justify-content:end;width:100%;min-height:var(--ibiz-code-footer-toolbar-height);margin-top:var(--ibiz-spacing-base-tight);margin-right:var(--ibiz-spacing-tight)}.ibiz-code-footer>*+*{margin-left:var(--ibiz-spacing-base)}.ibiz-code-footer__cancel{height:var(--ibiz-code-footer-button-height);line-height:var(--ibiz-code-footer-button-height);color:var(--ibiz-color-text-1);cursor:pointer;opacity:.7}.ibiz-code-footer__cancel:hover{color:var(--ibiz-color-primary);opacity:1}.ibiz-code-footer__save{width:96px;height:var(--ibiz-code-footer-button-height);line-height:var(--ibiz-code-footer-button-height);color:var(--ibiz-color-primary-active-text);text-align:center;cursor:pointer;background-color:var(--ibiz-color-primary);border-radius:var(--ibiz-border-radius-small)}.ibiz-code-footer__save:hover{box-shadow:0 2px 5px 1px var(--ibiz-color-primary)}.ibiz-code-message{width:500px;max-width:unset}.ibiz-code-message__message-content--message-tip{color:var(--ibiz-color-text-3)}.ibiz-code-message__message-cancel{color:var(--ibiz-color-text-1);background-color:transparent}.ibiz-code-message__message-cancel:hover{color:var(--ibiz-color-primary);background-color:transparent}.ibiz-code-message__message-comfire{background-color:var(--ibiz-color-danger)!important}.ibiz-code-message__message-comfire:hover{box-shadow:0 2px 5px 1px var(--ibiz-color-danger)}.ibiz-code-editor-enable .ibiz-code__box{height:100%}.ibiz-code-editor-enable:has(.ibiz-code-footer) .ibiz-code__box{height:calc(100% - var(--ibiz-code-footer-toolbar-height))}.ibiz-code-dialog-full-screen{width:100%!important;height:100%!important;margin:0!important}.ibiz-code-dialog-full-screen .ibiz-code-footer{--ibiz-code-footer-toolbar-height:68px}.ibiz-code-dialog-full-screen .ibiz-code{gap:0;padding:0 var(--ibiz-spacing-extra-loose);--w-e-toolbar-bg-color:var(--ibiz-color-bg-0)}.ibiz-code-dialog-full-screen .ibiz-code .ibiz-code-toolbar{right:calc(var(--ibiz-spacing-extra-loose) + 18px)}.ibiz-code-dialog-full-screen .el-dialog__header{display:none!important}.ibiz-code-dialog-full-screen .el-dialog__body{width:100%;height:100%;padding:0 0 var(--ibiz-spacing-base)}.ibiz-code-dialog-full-screen .el-dialog__body:has(.ibiz-code-footer){padding-bottom:0}.ibiz-code-footer-dialog{margin-top:0}.ibiz-code-text-editor-toolbar{position:fixed;top:var(--ibiz-code-text-editor-toolbar-top);left:var(--ibiz-code-text-editor-toolbar-left);z-index:var(--ibiz-code-text-editor-toolbar-z-index);display:flex;gap:var(--ibiz-spacing-tight);height:var(--ibiz-code-height-text-editor-toolbar);padding:var(--ibiz-code-spacing-code-text-editor-toolbar-padding);font-size:var(--ibiz-font-size-regular);color:var(--ibiz-code-color-text-editor-toolbar-text);background-color:var(--ibiz-code-color-text-editor-toolbar-bg);border-radius:var(--ibiz-code-spacing-code-text-editor-toolbar-circle);box-shadow:var(--ibiz-shadow-elevated)}.ibiz-code-text-editor-toolbar__item{display:flex;align-items:center;justify-content:center;padding:var(--ibiz-code-spacing-code-text-editor-toolbar-item-padding);cursor:pointer;border-radius:var(--ibiz-code-spacing-code-text-editor-toolbar-item-circle)}.ibiz-code-text-editor-toolbar__item:hover{color:var(--ibiz-code-color-text-editor-toolbar-item-text-hover);background-color:var(--ibiz-code-color-text-editor-toolbar-item-bg-hover)}.ibiz-code.is-dark{--ibiz-code-color-text-editor-toolbar-bg:rgb(53, 54, 60);--ibiz-code-color-text-editor-toolbar-text:rgb(249, 249, 249);--ibiz-code-color-text-editor-toolbar-item-bg-hover:rgba(255, 255, 255, 0.12);--ibiz-code-color-text-editor-toolbar-item-text-hover:rgb(249, 249, 249)}
|
|
@@ -300,7 +300,24 @@ class HtmlEditorController extends runtime.EditorController {
|
|
|
300
300
|
*/
|
|
301
301
|
insertText(text) {
|
|
302
302
|
if (this.wangEditor) {
|
|
303
|
-
|
|
303
|
+
const newParagraph = {
|
|
304
|
+
type: "paragraph",
|
|
305
|
+
children: [{ text }]
|
|
306
|
+
};
|
|
307
|
+
const selection = this.wangEditor.selection;
|
|
308
|
+
if (selection) {
|
|
309
|
+
const collapsedSelection = {
|
|
310
|
+
anchor: selection.anchor,
|
|
311
|
+
focus: selection.anchor
|
|
312
|
+
};
|
|
313
|
+
if (selection.anchor.path !== selection.focus.path || selection.anchor.offset !== selection.focus.offset) {
|
|
314
|
+
collapsedSelection.anchor = selection.focus;
|
|
315
|
+
collapsedSelection.focus = selection.focus;
|
|
316
|
+
}
|
|
317
|
+
this.wangEditor.select(collapsedSelection);
|
|
318
|
+
}
|
|
319
|
+
this.wangEditor.insertNode(newParagraph);
|
|
320
|
+
this.wangEditor.move(1);
|
|
304
321
|
}
|
|
305
322
|
}
|
|
306
323
|
/**
|
|
@@ -309,8 +326,12 @@ class HtmlEditorController extends runtime.EditorController {
|
|
|
309
326
|
*/
|
|
310
327
|
replaceSelectionText(text) {
|
|
311
328
|
if (this.wangEditor) {
|
|
312
|
-
this.wangEditor.
|
|
313
|
-
|
|
329
|
+
if (this.wangEditor.selection) {
|
|
330
|
+
this.wangEditor.deleteFragment();
|
|
331
|
+
this.wangEditor.insertText(text);
|
|
332
|
+
} else {
|
|
333
|
+
this.wangEditor.insertText(text);
|
|
334
|
+
}
|
|
314
335
|
}
|
|
315
336
|
}
|
|
316
337
|
/**
|
|
@@ -321,6 +342,25 @@ class HtmlEditorController extends runtime.EditorController {
|
|
|
321
342
|
this.wangEditor.restoreSelection();
|
|
322
343
|
}
|
|
323
344
|
}
|
|
345
|
+
/**
|
|
346
|
+
* 获取内联AI编辑器元素
|
|
347
|
+
*/
|
|
348
|
+
getInLineAiEditorElement() {
|
|
349
|
+
if (!this.wangEditor) {
|
|
350
|
+
throw new core.RuntimeError("\u7F16\u8F91\u5668\u672A\u521D\u59CB\u5316");
|
|
351
|
+
}
|
|
352
|
+
return this.wangEditor.getEditableContainer();
|
|
353
|
+
}
|
|
354
|
+
/**
|
|
355
|
+
* 获取内联AI编辑器主题
|
|
356
|
+
*/
|
|
357
|
+
getInLineAiEditorTheme() {
|
|
358
|
+
const appTheme = ibiz.util.theme.getTheme();
|
|
359
|
+
if (appTheme.indexOf("dark") !== -1) {
|
|
360
|
+
return "dark";
|
|
361
|
+
}
|
|
362
|
+
return "light";
|
|
363
|
+
}
|
|
324
364
|
/**
|
|
325
365
|
* 获取内联AI参数
|
|
326
366
|
*/
|
|
@@ -333,9 +373,14 @@ class HtmlEditorController extends runtime.EditorController {
|
|
|
333
373
|
throw new core.RuntimeError("\u83B7\u53D6\u9009\u533A\u4F4D\u7F6E\u5931\u8D25");
|
|
334
374
|
const editorBoundingClientRect = this.wangEditor.getEditableContainer().getBoundingClientRect();
|
|
335
375
|
return {
|
|
376
|
+
// 编辑器的左侧距离 + 默认padding
|
|
336
377
|
left: editorBoundingClientRect.x + 10,
|
|
378
|
+
// 编辑器的上方距离+选区距离编辑器上方距离
|
|
337
379
|
top: editorBoundingClientRect.y + Number(selectionPosition.top.replace("px", "")),
|
|
338
|
-
|
|
380
|
+
// 编辑器的宽度 - 左右padding
|
|
381
|
+
width: editorBoundingClientRect.width - 20,
|
|
382
|
+
editorElement: this.getInLineAiEditorElement(),
|
|
383
|
+
editorTheme: this.getInLineAiEditorTheme()
|
|
339
384
|
};
|
|
340
385
|
}
|
|
341
386
|
/**
|
|
@@ -433,7 +433,13 @@ const IBizHtml = /* @__PURE__ */ vue.defineComponent({
|
|
|
433
433
|
if (items.length === 0)
|
|
434
434
|
return;
|
|
435
435
|
const editorBoundingClientRect = editor.getEditableContainer().getBoundingClientRect();
|
|
436
|
-
ibiz.inLineAIUtil.showContextMenus(
|
|
436
|
+
ibiz.inLineAIUtil.showContextMenus(
|
|
437
|
+
// 编辑器的左侧距离+选区距离编辑器左侧距离
|
|
438
|
+
editorBoundingClientRect.x + Number(selectionPosition.left.replace("px", "")),
|
|
439
|
+
// 编辑器的上方距离+选区距离编辑器上方距离+悬浮工具栏高度
|
|
440
|
+
editorBoundingClientRect.y + Number(selectionPosition.top.replace("px", "")) + 42,
|
|
441
|
+
items
|
|
442
|
+
);
|
|
437
443
|
});
|
|
438
444
|
};
|
|
439
445
|
const handleChange = (editor) => {
|
|
@@ -11,15 +11,11 @@ function initCustomMenu(c) {
|
|
|
11
11
|
content: "<svg\n viewBox='0 0 16 16'\n xmlns='http://www.w3.org/2000/svg'\n fill='currentColor'\n height='1em'\n width='1em'\n preserveAspectRatio='xMidYMid meet'\n focusable='false'\n >\n <g\n id='aae1.Base\u57FA\u7840/1.icon\u56FE\u6807/2.normal/ai-star'\n stroke-width='1'\n fill-rule='evenodd'\n >\n <path\n d='M5.817 1.53l3.158 8.797h.054v.152l1.443 4.021-1.402.001-1.041-2.982H2.495l-1.03 2.982L0 14.5 4.671 1.533l1.146-.003zm7.86 5.424V14.5h-1.213V6.954h1.212zM5.248 3.549l-2.342 6.778h4.706L5.249 3.55zM13.046 0c.075 0 .147.02.204.071a.318.318 0 01.094.181l.064.273c.097.417.17.727.255.968.084.24.177.4.31.523.134.124.318.218.599.306.281.088.65.166 1.15.265a.358.358 0 01.195.095c.056.057.083.13.083.213a.289.289 0 01-.083.21.362.362 0 01-.197.094c-.528.093-.918.167-1.214.255-.295.088-.485.187-.621.324-.137.138-.23.324-.31.606-.08.283-.145.651-.23 1.147a.329.329 0 01-.093.184.293.293 0 01-.206.075.308.308 0 01-.207-.072.322.322 0 01-.1-.188l-.006-.033c-.085-.486-.149-.845-.228-1.12-.079-.274-.17-.452-.305-.585-.135-.133-.323-.23-.618-.32s-.683-.168-1.21-.273a.353.353 0 01-.2-.096.29.29 0 01-.08-.208c0-.079.023-.153.079-.211a.35.35 0 01.2-.097c.5-.098.869-.176 1.15-.263.282-.087.465-.18.597-.302.132-.12.224-.278.306-.511.082-.236.151-.539.244-.947l.071-.312a.312.312 0 01.102-.183.311.311 0 01.205-.069z'\n id='aae\u5F62\u72B6\u7ED3\u5408'\n ></path>\n </g>\n </svg>\n "
|
|
12
12
|
},
|
|
13
13
|
onClick: (_selection, _menukey, event) => {
|
|
14
|
-
var _a, _b;
|
|
15
|
-
const startPos = (_a = c.mdeditor) == null ? void 0 : _a.editor.editor.getCursor("start");
|
|
16
|
-
const endPos = (_b = c.mdeditor) == null ? void 0 : _b.editor.editor.getCursor("end");
|
|
17
|
-
c.setCursorPos(startPos, endPos);
|
|
18
14
|
event.stopPropagation();
|
|
19
15
|
event.preventDefault();
|
|
20
16
|
vue.nextTick(() => {
|
|
21
|
-
var
|
|
22
|
-
if ((
|
|
17
|
+
var _a;
|
|
18
|
+
if ((_a = c.mdeditor) == null ? void 0 : _a.bubble) {
|
|
23
19
|
c.mdeditor.bubble.visible = true;
|
|
24
20
|
const selectionPosition = c.mdeditor.bubble.bubbleDom.getBoundingClientRect();
|
|
25
21
|
if (!selectionPosition || !selectionPosition.left || !selectionPosition.top)
|
|
@@ -33,8 +29,10 @@ function initCustomMenu(c) {
|
|
|
33
29
|
if (items.length === 0)
|
|
34
30
|
return;
|
|
35
31
|
ibiz.inLineAIUtil.showContextMenus(
|
|
32
|
+
// 浮动工具栏的左侧距离
|
|
36
33
|
selectionPosition.left,
|
|
37
|
-
|
|
34
|
+
// 浮动工具栏的顶部距离 + 浮动工具栏的高度
|
|
35
|
+
selectionPosition.top + 43,
|
|
38
36
|
items
|
|
39
37
|
);
|
|
40
38
|
}
|
|
@@ -215,12 +215,37 @@ const IBizMarkDown = /* @__PURE__ */ vue.defineComponent({
|
|
|
215
215
|
const handleKeyDown = (_e) => {
|
|
216
216
|
_e.stopPropagation();
|
|
217
217
|
if (_e.key === "Escape") {
|
|
218
|
+
_e.preventDefault();
|
|
218
219
|
if (isFullscreen()) {
|
|
219
220
|
closeFullscreen();
|
|
220
221
|
isFullScreen.value = false;
|
|
221
222
|
}
|
|
222
223
|
}
|
|
223
224
|
};
|
|
225
|
+
const changeMainTheme = (_theme) => {
|
|
226
|
+
c == null ? void 0 : c.setCurrentEditorTheme(_theme);
|
|
227
|
+
};
|
|
228
|
+
const selectionChange = (event) => {
|
|
229
|
+
var _a2, _b2;
|
|
230
|
+
const {
|
|
231
|
+
info
|
|
232
|
+
} = event;
|
|
233
|
+
let isForwardSelection = true;
|
|
234
|
+
const firstRange = info.ranges && info.ranges[0];
|
|
235
|
+
if (!firstRange) {
|
|
236
|
+
isForwardSelection = true;
|
|
237
|
+
} else {
|
|
238
|
+
const {
|
|
239
|
+
anchor,
|
|
240
|
+
head
|
|
241
|
+
} = firstRange;
|
|
242
|
+
isForwardSelection = c.isPositionBefore(anchor, head);
|
|
243
|
+
}
|
|
244
|
+
const startPos = (_a2 = c.mdeditor) == null ? void 0 : _a2.editor.editor.getCursor("start");
|
|
245
|
+
const endPos = (_b2 = c.mdeditor) == null ? void 0 : _b2.editor.editor.getCursor("end");
|
|
246
|
+
c.setCursorPos(startPos, endPos);
|
|
247
|
+
c.setSelectionDirection(isForwardSelection);
|
|
248
|
+
};
|
|
224
249
|
const editorInit = () => {
|
|
225
250
|
if (props.disabled || props.readonly || showmode === "manual") {
|
|
226
251
|
defaultModel.value = "previewOnly";
|
|
@@ -228,7 +253,7 @@ const IBizMarkDown = /* @__PURE__ */ vue.defineComponent({
|
|
|
228
253
|
vue.nextTick(() => {
|
|
229
254
|
var _a2;
|
|
230
255
|
const bubble = ["bold", "italic", "underline", "strikethrough", "sub", "sup", "|", "size", "color"];
|
|
231
|
-
if (c
|
|
256
|
+
if (c && c.chatCompletion) {
|
|
232
257
|
bubble.unshift("AI");
|
|
233
258
|
}
|
|
234
259
|
editor = new Cherry({
|
|
@@ -294,6 +319,10 @@ const IBizMarkDown = /* @__PURE__ */ vue.defineComponent({
|
|
|
294
319
|
afterChange,
|
|
295
320
|
beforeImageMounted
|
|
296
321
|
},
|
|
322
|
+
event: {
|
|
323
|
+
changeMainTheme,
|
|
324
|
+
selectionChange
|
|
325
|
+
},
|
|
297
326
|
engine: {
|
|
298
327
|
syntax: {
|
|
299
328
|
table: {
|
|
@@ -314,7 +343,7 @@ const IBizMarkDown = /* @__PURE__ */ vue.defineComponent({
|
|
|
314
343
|
span.appendChild(createCherryIcon("fullscreen"));
|
|
315
344
|
const parentElement = props.disabled ? editor.editor.options.editorDom.parentElement : (_a2 = editor.editor.options.editorDom.parentElement) == null ? void 0 : _a2.querySelector(".cherry-toolbar>.toolbar-right");
|
|
316
345
|
parentElement == null ? void 0 : parentElement.appendChild(span);
|
|
317
|
-
c.setMDEditor(editor);
|
|
346
|
+
c == null ? void 0 : c.setMDEditor(editor);
|
|
318
347
|
});
|
|
319
348
|
};
|
|
320
349
|
vue.watch(() => UIStore.theme, (newVal) => {
|
|
@@ -370,9 +399,14 @@ const IBizMarkDown = /* @__PURE__ */ vue.defineComponent({
|
|
|
370
399
|
isIgnoreChange = false;
|
|
371
400
|
onResetEditState();
|
|
372
401
|
};
|
|
402
|
+
const onFocusEditor = () => {
|
|
403
|
+
const target = document.getElementById(id);
|
|
404
|
+
target == null ? void 0 : target.focus();
|
|
405
|
+
};
|
|
373
406
|
const renderHeader = () => {
|
|
374
407
|
if (showmode === "manual" && !isEditing.value) {
|
|
375
408
|
return vue.createVNode("div", {
|
|
409
|
+
"onClick": onFocusEditor,
|
|
376
410
|
"class": [ns.e("header"), ns.is("fullscreen", isFullScreen.value)]
|
|
377
411
|
}, [!props.disabled && !props.readonly && vue.createVNode("div", {
|
|
378
412
|
"class": ns.em("header", "edit"),
|
|
@@ -398,6 +432,7 @@ const IBizMarkDown = /* @__PURE__ */ vue.defineComponent({
|
|
|
398
432
|
const renderFooter = () => {
|
|
399
433
|
if (showmode === "manual" && isEditing.value && !props.disabled && !props.readonly) {
|
|
400
434
|
return vue.createVNode("div", {
|
|
435
|
+
"onClick": onFocusEditor,
|
|
401
436
|
"class": [ns.e("footer"), ns.is("fullscreen", isFullScreen.value)]
|
|
402
437
|
}, [vue.createVNode("div", {
|
|
403
438
|
"class": ns.em("footer", "cancel"),
|
|
@@ -409,12 +444,14 @@ const IBizMarkDown = /* @__PURE__ */ vue.defineComponent({
|
|
|
409
444
|
}
|
|
410
445
|
};
|
|
411
446
|
vue.onMounted(() => {
|
|
447
|
+
var _a2;
|
|
412
448
|
editorInit();
|
|
413
449
|
calcMarkDownStyle();
|
|
414
|
-
|
|
450
|
+
(_a2 = markDownBox.value) == null ? void 0 : _a2.addEventListener("keydown", handleKeyDown.bind(this));
|
|
415
451
|
});
|
|
416
452
|
vue.onBeforeUnmount(() => {
|
|
417
|
-
|
|
453
|
+
var _a2;
|
|
454
|
+
(_a2 = markDownBox.value) == null ? void 0 : _a2.removeEventListener("keydown", handleKeyDown.bind(this));
|
|
418
455
|
});
|
|
419
456
|
vue.onUnmounted(() => {
|
|
420
457
|
editor = null;
|
|
@@ -446,6 +483,7 @@ const IBizMarkDown = /* @__PURE__ */ vue.defineComponent({
|
|
|
446
483
|
"ref": "markDownBox",
|
|
447
484
|
"class": [this.ns.b(), this.ns.is("disabled", this.disabled), this.ns.is("manual", this.showmode === "manual"), this.ns.is("editing", this.isEditing)]
|
|
448
485
|
}, [this.renderHeader(), this.renderFooter(), vue.createVNode("div", {
|
|
486
|
+
"tabindex": "-1",
|
|
449
487
|
"id": this.id,
|
|
450
488
|
"style": this.cssVars,
|
|
451
489
|
"class": this.ns.b("cherry")
|
|
@@ -1 +1 @@
|
|
|
1
|
-
.ibiz-markdown{--ibiz-markdown-width:100%;--ibiz-markdown-color-manual-toolbar-bg-save:var(--ibiz-color-primary);--ibiz-markdown-color-manual-toolbar-text-save:var(--ibiz-color-primary-active-text);--ibiz-markdown-color-manual-toolbar-text-cancel:var(--ibiz-color-text-1);--ibiz-markdown-color-manual-toolbar-text-cancel-hover:var(--ibiz-color-primary);--ibiz-markdown-spacing-manual-toolbar-height:32px;--ibiz-markdown-spacing-manual-toolbar-gap:var(--ibiz-spacing-base);--ibiz-markdown-spacing-manual-toolbar-item-padding:0 var(--ibiz-spacing-base);--ibiz-markdown-spacing-manual-toolbar-margin:var(--ibiz-spacing-base-tight) var(--ibiz-spacing-tight) 0 0;--ibiz-markdown-spacing-manual-toolbar-fullscreen-height:var(--ibiz-height-control-default);--ibiz-markdown-spacing-manual-toolbar-fullscreen-padding:0 var(--ibiz-spacing-extra-loose);--ibiz-markdown-spacing-manual-toolbar-fullscreen-height-header:var(--ibiz-spacing-super-loose);--ibiz-markdown-height-manual-toolbar-height:var(--ibiz-height-control-default);--ibiz-markdown-border-radius-manual-toolbar-item:var(--ibiz-border-radius-small);--ibiz-markdown-border-manual-toolbar-fullscreen-footer:1px solid var(--ibiz-color-border)}.ibiz-markdown__header{display:flex;flex-shrink:0;gap:var(--ibiz-markdown-spacing-manual-toolbar-gap);align-items:center;justify-content:end;height:var(--ibiz-markdown-spacing-manual-toolbar-height)}.ibiz-markdown__header--edit{cursor:pointer}.ibiz-markdown__header--full{cursor:pointer}.ibiz-markdown__header.is-fullscreen{position:fixed;top:0;right:0;left:0;z-index:999;width:100%;height:calc(var(--ibiz-markdown-spacing-manual-toolbar-fullscreen-height-header));padding:var(--ibiz-markdown-spacing-manual-toolbar-fullscreen-padding);margin-top:0;background-color:var(--ibiz-view-bg-color)}.ibiz-markdown__header.is-fullscreen+.ibiz-markdown-cherry .cherry.fullscreen{top:calc(var(--ibiz-markdown-spacing-manual-toolbar-fullscreen-height-header));height:calc(100% - var(--ibiz-markdown-spacing-manual-toolbar-fullscreen-height-header))}.ibiz-markdown__footer{display:flex;gap:var(--ibiz-markdown-spacing-manual-toolbar-gap);align-items:center;justify-content:end;height:var(--ibiz-markdown-spacing-manual-toolbar-height);margin:var(--ibiz-markdown-spacing-manual-toolbar-margin)}.ibiz-markdown__footer--save{height:var(--ibiz-markdown-height-manual-toolbar-height);padding:var(--ibiz-markdown-spacing-manual-toolbar-item-padding);line-height:var(--ibiz-markdown-height-manual-toolbar-height);color:var(--ibiz-markdown-color-manual-toolbar-text-save);text-align:center;cursor:pointer;background-color:var(--ibiz-markdown-color-manual-toolbar-bg-save);border-radius:var(--ibiz-markdown-border-radius-manual-toolbar-item)}.ibiz-markdown__footer--cancel{color:var(--ibiz-markdown-color-manual-toolbar-text-cancel);cursor:pointer}.ibiz-markdown__footer--cancel:hover{color:var(--ibiz-markdown-color-manual-toolbar-text-cancel-hover)}.ibiz-markdown__footer.is-fullscreen{position:fixed;right:0;bottom:0;left:0;z-index:999;width:100%;height:calc(var(--ibiz-markdown-spacing-manual-toolbar-fullscreen-height) * 2);padding:var(--ibiz-markdown-spacing-manual-toolbar-fullscreen-padding);margin-top:0;background-color:var(--ibiz-view-bg-color);border-top:var(--ibiz-markdown-border-manual-toolbar-fullscreen-footer)}.ibiz-markdown__footer.is-fullscreen+.ibiz-markdown-cherry .cherry.fullscreen{height:calc(100% - var(--ibiz-markdown-spacing-manual-toolbar-fullscreen-height) * 2)}.ibiz-markdown .ibiz-markdown-cherry{width:var(--ibiz-markdown-width)}.ibiz-markdown .ibiz-markdown-cherry .cherry{width:100%;border:1px solid var(--ibiz-color-border);box-shadow:none}.ibiz-markdown .ibiz-markdown-cherry .cherry .cherry-toolbar{background-color:var(--ibiz-color-bg-0);box-shadow:none}.ibiz-markdown .ibiz-markdown-cherry .cherry .cherry-editor{border-top:1px solid var(--ibiz-color-border)}.ibiz-markdown .ibiz-markdown-cherry .cherry .cherry-previewer{border-top:1px solid var(--ibiz-color-border)}.ibiz-markdown .ibiz-markdown-cherry .cherry .cherry-sidebar{border-left:1px solid var(--ibiz-color-border);box-shadow:none}.ibiz-markdown.is-disabled .cherry{min-height:auto}.ibiz-markdown.is-disabled .ibiz-markdown__fullscreen{position:absolute;top:8px;right:12px;z-index:98;font-size:var(--ibiz-font-size-regular);line-height:2.8}.ibiz-markdown.is-disabled .theme__dark .ibiz-markdown__fullscreen{color:var(--ibiz-color-text-0)}.ibiz-markdown.is-disabled .theme__dark .ibiz-markdown__fullscreen:hover{background-color:var(--ibiz-color-bg-3)}.ibiz-markdown.is-manual{display:flex;flex-direction:column}.ibiz-markdown.is-manual .ibiz-markdown-cherry{flex-grow:1;height:calc(100% - var(--ibiz-markdown-spacing-manual-toolbar-height))!important}.ibiz-markdown.is-manual.is-editing{flex-direction:column-reverse}.ibiz-markdown .cherry-preview--full{border-left:none}.ibiz-markdown .theme__dark,.ibiz-markdown .theme__light{color:var(--ibiz-form-item-text-color)}.ibiz-markdown .cherry-markdown h1 a::before,.ibiz-markdown .cherry-markdown h2 a::before,.ibiz-markdown .cherry-markdown h3 a::before,.ibiz-markdown .cherry-markdown h4 a::before,.ibiz-markdown .cherry-markdown h5 a::before,.ibiz-markdown .cherry-markdown h6 a::before{display:none}.ibiz-markdown .cherry.fullscreen{z-index:999}
|
|
1
|
+
.ibiz-markdown{--ibiz-markdown-width:100%;--ibiz-markdown-color-manual-toolbar-bg-save:var(--ibiz-color-primary);--ibiz-markdown-color-manual-toolbar-text-save:var(--ibiz-color-primary-active-text);--ibiz-markdown-color-manual-toolbar-text-cancel:var(--ibiz-color-text-1);--ibiz-markdown-color-manual-toolbar-text-cancel-hover:var(--ibiz-color-primary);--ibiz-markdown-spacing-manual-toolbar-height:32px;--ibiz-markdown-spacing-manual-toolbar-gap:var(--ibiz-spacing-base);--ibiz-markdown-spacing-manual-toolbar-item-padding:0 var(--ibiz-spacing-base);--ibiz-markdown-spacing-manual-toolbar-margin:var(--ibiz-spacing-base-tight) var(--ibiz-spacing-tight) 0 0;--ibiz-markdown-spacing-manual-toolbar-fullscreen-height:var(--ibiz-height-control-default);--ibiz-markdown-spacing-manual-toolbar-fullscreen-padding:0 var(--ibiz-spacing-extra-loose);--ibiz-markdown-spacing-manual-toolbar-fullscreen-height-header:var(--ibiz-spacing-super-loose);--ibiz-markdown-height-manual-toolbar-height:var(--ibiz-height-control-default);--ibiz-markdown-border-radius-manual-toolbar-item:var(--ibiz-border-radius-small);--ibiz-markdown-border-manual-toolbar-fullscreen-footer:1px solid var(--ibiz-color-border)}.ibiz-markdown__header{display:flex;flex-shrink:0;gap:var(--ibiz-markdown-spacing-manual-toolbar-gap);align-items:center;justify-content:end;height:var(--ibiz-markdown-spacing-manual-toolbar-height)}.ibiz-markdown__header--edit{cursor:pointer}.ibiz-markdown__header--full{cursor:pointer}.ibiz-markdown__header.is-fullscreen{position:fixed;top:0;right:0;left:0;z-index:999;width:100%;height:calc(var(--ibiz-markdown-spacing-manual-toolbar-fullscreen-height-header));padding:var(--ibiz-markdown-spacing-manual-toolbar-fullscreen-padding);margin-top:0;background-color:var(--ibiz-view-bg-color)}.ibiz-markdown__header.is-fullscreen+.ibiz-markdown-cherry .cherry.fullscreen{top:calc(var(--ibiz-markdown-spacing-manual-toolbar-fullscreen-height-header));height:calc(100% - var(--ibiz-markdown-spacing-manual-toolbar-fullscreen-height-header))}.ibiz-markdown__footer{display:flex;gap:var(--ibiz-markdown-spacing-manual-toolbar-gap);align-items:center;justify-content:end;height:var(--ibiz-markdown-spacing-manual-toolbar-height);margin:var(--ibiz-markdown-spacing-manual-toolbar-margin)}.ibiz-markdown__footer--save{height:var(--ibiz-markdown-height-manual-toolbar-height);padding:var(--ibiz-markdown-spacing-manual-toolbar-item-padding);line-height:var(--ibiz-markdown-height-manual-toolbar-height);color:var(--ibiz-markdown-color-manual-toolbar-text-save);text-align:center;cursor:pointer;background-color:var(--ibiz-markdown-color-manual-toolbar-bg-save);border-radius:var(--ibiz-markdown-border-radius-manual-toolbar-item)}.ibiz-markdown__footer--cancel{color:var(--ibiz-markdown-color-manual-toolbar-text-cancel);cursor:pointer}.ibiz-markdown__footer--cancel:hover{color:var(--ibiz-markdown-color-manual-toolbar-text-cancel-hover)}.ibiz-markdown__footer.is-fullscreen{position:fixed;right:0;bottom:0;left:0;z-index:999;width:100%;height:calc(var(--ibiz-markdown-spacing-manual-toolbar-fullscreen-height) * 2);padding:var(--ibiz-markdown-spacing-manual-toolbar-fullscreen-padding);margin-top:0;background-color:var(--ibiz-view-bg-color);border-top:var(--ibiz-markdown-border-manual-toolbar-fullscreen-footer)}.ibiz-markdown__footer.is-fullscreen+.ibiz-markdown-cherry .cherry.fullscreen{height:calc(100% - var(--ibiz-markdown-spacing-manual-toolbar-fullscreen-height) * 2)}.ibiz-markdown .ibiz-markdown-cherry{width:var(--ibiz-markdown-width);outline:0}.ibiz-markdown .ibiz-markdown-cherry .cherry{width:100%;border:1px solid var(--ibiz-color-border);box-shadow:none}.ibiz-markdown .ibiz-markdown-cherry .cherry .cherry-toolbar{background-color:var(--ibiz-color-bg-0);box-shadow:none}.ibiz-markdown .ibiz-markdown-cherry .cherry .cherry-editor{border-top:1px solid var(--ibiz-color-border)}.ibiz-markdown .ibiz-markdown-cherry .cherry .cherry-previewer{border-top:1px solid var(--ibiz-color-border)}.ibiz-markdown .ibiz-markdown-cherry .cherry .cherry-sidebar{border-left:1px solid var(--ibiz-color-border);box-shadow:none}.ibiz-markdown.is-disabled .cherry{min-height:auto}.ibiz-markdown.is-disabled .ibiz-markdown__fullscreen{position:absolute;top:8px;right:12px;z-index:98;font-size:var(--ibiz-font-size-regular);line-height:2.8}.ibiz-markdown.is-disabled .theme__dark .ibiz-markdown__fullscreen{color:var(--ibiz-color-text-0)}.ibiz-markdown.is-disabled .theme__dark .ibiz-markdown__fullscreen:hover{background-color:var(--ibiz-color-bg-3)}.ibiz-markdown.is-manual{display:flex;flex-direction:column}.ibiz-markdown.is-manual .ibiz-markdown-cherry{flex-grow:1;height:calc(100% - var(--ibiz-markdown-spacing-manual-toolbar-height))!important}.ibiz-markdown.is-manual.is-editing{flex-direction:column-reverse}.ibiz-markdown .cherry-preview--full{border-left:none}.ibiz-markdown .theme__dark,.ibiz-markdown .theme__light{color:var(--ibiz-form-item-text-color)}.ibiz-markdown .cherry-markdown h1 a::before,.ibiz-markdown .cherry-markdown h2 a::before,.ibiz-markdown .cherry-markdown h3 a::before,.ibiz-markdown .cherry-markdown h4 a::before,.ibiz-markdown .cherry-markdown h5 a::before,.ibiz-markdown .cherry-markdown h6 a::before{display:none}.ibiz-markdown .cherry.fullscreen{z-index:999}
|