@cocoar/vue-markdown-editor 3.0.0 → 3.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +30 -2
- package/dist/CoarMarkdownEditor.vue.d.ts +7 -2
- package/dist/CoarMarkdownEditor.vue.d.ts.map +1 -1
- package/dist/CoarMarkdownEditorGroup.vue.d.ts +18 -0
- package/dist/CoarMarkdownEditorGroup.vue.d.ts.map +1 -0
- package/dist/CoarMarkdownToolbar.vue.d.ts +28 -0
- package/dist/CoarMarkdownToolbar.vue.d.ts.map +1 -0
- package/dist/editor-group.d.ts +22 -0
- package/dist/editor-group.d.ts.map +1 -0
- package/dist/index.css +1 -1
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +620 -537
- package/package.json +4 -4
package/README.md
CHANGED
|
@@ -47,6 +47,7 @@ const value = ref('# Hello\n\nStart typing **markdown**.');
|
|
|
47
47
|
- `floating` (default) — appears on text selection, teleported to `<body>`, context-aware (text vs. table)
|
|
48
48
|
- `fixed` — `CoarSidebar` collapsed with icon buttons and flyout submenus
|
|
49
49
|
- `both` — both active simultaneously
|
|
50
|
+
- `external` — contributes this editor's commands and tool set to one stable shared toolbar
|
|
50
51
|
|
|
51
52
|
```vue
|
|
52
53
|
<CoarMarkdownEditor
|
|
@@ -56,6 +57,33 @@ const value = ref('# Hello\n\nStart typing **markdown**.');
|
|
|
56
57
|
/>
|
|
57
58
|
```
|
|
58
59
|
|
|
60
|
+
### One toolbar for multiple editors
|
|
61
|
+
|
|
62
|
+
Wrap the toolbar and editors in `CoarMarkdownEditorGroup`, then use
|
|
63
|
+
`toolbar-mode="external"` on every participating editor. There is exactly one
|
|
64
|
+
toolbar DOM host; focus only switches its active editor controller. Each editor
|
|
65
|
+
may expose a different `tools` list without mounting, hiding, or teleporting a
|
|
66
|
+
second toolbar. When focus leaves all editors in the group, the host keeps the
|
|
67
|
+
last tool set visible but becomes inert and `aria-disabled` until an editor is
|
|
68
|
+
focused again.
|
|
69
|
+
|
|
70
|
+
```vue
|
|
71
|
+
<CoarMarkdownEditorGroup>
|
|
72
|
+
<CoarMarkdownToolbar position="top" />
|
|
73
|
+
|
|
74
|
+
<CoarMarkdownEditor
|
|
75
|
+
v-model="document"
|
|
76
|
+
toolbar-mode="external"
|
|
77
|
+
:tools="['bold', 'headings', 'embed:page']"
|
|
78
|
+
/>
|
|
79
|
+
<CoarMarkdownEditor
|
|
80
|
+
v-model="notes"
|
|
81
|
+
toolbar-mode="external"
|
|
82
|
+
:tools="['bold', 'italic', 'bulletList']"
|
|
83
|
+
/>
|
|
84
|
+
</CoarMarkdownEditorGroup>
|
|
85
|
+
```
|
|
86
|
+
|
|
59
87
|
## Props
|
|
60
88
|
|
|
61
89
|
| Prop | Type | Default | Description |
|
|
@@ -63,8 +91,8 @@ const value = ref('# Hello\n\nStart typing **markdown**.');
|
|
|
63
91
|
| `modelValue` | `string` | `''` | Markdown content (use with `v-model`) |
|
|
64
92
|
| `readonly` | `boolean` | `false` | Disable editing |
|
|
65
93
|
| `placeholder` | `string` | `''` | Markdown hint shown while empty. Overlay-only — never written to `modelValue` |
|
|
66
|
-
| `toolbarMode` | `'floating' \| 'fixed' \| 'both'` | `'floating'` | Toolbar layout |
|
|
67
|
-
| `toolbarPosition` | `'left' \| 'right'` | `'left'` | Sidebar position when `toolbarMode` is `'fixed'` or `'both'` |
|
|
94
|
+
| `toolbarMode` | `'floating' \| 'fixed' \| 'both' \| 'external'` | `'floating'` | Toolbar layout; `external` routes tools into a shared `CoarMarkdownToolbar` |
|
|
95
|
+
| `toolbarPosition` | `'left' \| 'right' \| 'top' \| 'bottom'` | `'left'` | Sidebar position when `toolbarMode` is `'fixed'` or `'both'` |
|
|
68
96
|
| `flavor` | `'commonmark' \| 'gfm' \| 'cocoar' \| { gfm?, textColor? }` | `'cocoar'` | Portability contract — hard-enforces which features can be authored (see [Flavors](#flavors-portability)) |
|
|
69
97
|
| `uploadImage` | `(file: File) => Promise<{ url: string; alt?: string }>` | _undefined_ | Enables paste / drag-drop image upload (see [Images](#images)) |
|
|
70
98
|
| `pickImage` | `(ctx: ImagePickContext) => void` | _undefined_ | Override the Insert Image button with your own asset picker (see [Custom image source](#custom-image-source-pickimage)) |
|
|
@@ -3,7 +3,7 @@ import { CoarMarkdownFlavorInput } from './flavor';
|
|
|
3
3
|
import { EmbedRegistry } from '@cocoar/vue-markdown';
|
|
4
4
|
import { ImageUploader } from './image/imageUpload';
|
|
5
5
|
import { ImagePicker } from './image/pickImage';
|
|
6
|
-
export type CoarMarkdownEditorToolbarMode = 'floating' | 'fixed' | 'both';
|
|
6
|
+
export type CoarMarkdownEditorToolbarMode = 'floating' | 'fixed' | 'both' | 'external';
|
|
7
7
|
export type CoarMarkdownEditorToolbarPosition = 'left' | 'right' | 'top' | 'bottom';
|
|
8
8
|
/**
|
|
9
9
|
* Toolbar tool identifiers — pass an array of these to the `tools` prop to
|
|
@@ -64,6 +64,11 @@ export interface CoarMarkdownEditorProps {
|
|
|
64
64
|
* `<textarea>`; switching back re-renders it. Defaults to false.
|
|
65
65
|
*/
|
|
66
66
|
sourceToggle?: boolean;
|
|
67
|
+
/**
|
|
68
|
+
* Toolbar layout. Use `'external'` inside a `CoarMarkdownEditorGroup` to
|
|
69
|
+
* route this editor's commands and tool set into one stable
|
|
70
|
+
* `CoarMarkdownToolbar` host.
|
|
71
|
+
*/
|
|
67
72
|
toolbarMode?: CoarMarkdownEditorToolbarMode;
|
|
68
73
|
toolbarPosition?: CoarMarkdownEditorToolbarPosition;
|
|
69
74
|
/**
|
|
@@ -71,7 +76,7 @@ export interface CoarMarkdownEditorProps {
|
|
|
71
76
|
* only the listed tools render (in fixed canonical order — passing order
|
|
72
77
|
* does not influence button order).
|
|
73
78
|
*/
|
|
74
|
-
tools?:
|
|
79
|
+
tools?: CoarMarkdownEditorToolEntry[];
|
|
75
80
|
/**
|
|
76
81
|
* Markdown **flavor** — the portability contract, hard-enforced. Picks which
|
|
77
82
|
* features are available: the editor only registers the matching plugins (so
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CoarMarkdownEditor.vue.d.ts","sourceRoot":"","sources":["../src/CoarMarkdownEditor.vue"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"CoarMarkdownEditor.vue.d.ts","sourceRoot":"","sources":["../src/CoarMarkdownEditor.vue"],"names":[],"mappings":"AAq9EA,OAAO,EAcL,KAAK,QAAQ,EAEd,MAAM,KAAK,CAAC;AAkBb,OAAO,EAEL,KAAK,uBAAuB,EAE7B,MAAM,UAAU,CAAC;AAMlB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAK1D,OAAO,EAAe,KAAK,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACtE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AA2CrD,MAAM,MAAM,6BAA6B,GAAG,UAAU,GAAG,OAAO,GAAG,MAAM,GAAG,UAAU,CAAC;AACvF,MAAM,MAAM,iCAAiC,GAAG,MAAM,GAAG,OAAO,GAAG,KAAK,GAAG,QAAQ,CAAC;AAEpF;;;GAGG;AACH,MAAM,MAAM,sBAAsB,GAC9B,MAAM,GACN,QAAQ,GACR,eAAe,GACf,YAAY,GACZ,WAAW,GACX,UAAU,GACV,YAAY,GACZ,aAAa,GACb,UAAU,GACV,QAAQ,GACR,SAAS,GACT,YAAY,GACZ,gBAAgB,GAChB,WAAW,GACX,OAAO,GACP,UAAU,GACV,OAAO,GACP,iBAAiB,GACjB,MAAM,GACN,MAAM,CAAC;AAEX;iFACiF;AACjF,eAAO,MAAM,8BAA8B,EAAE,SAAS,sBAAsB,EAqB3E,CAAC;AAEF;;;;;GAKG;AACH,MAAM,MAAM,yBAAyB,GAAG,sBAAsB,GAAG,SAAS,MAAM,EAAE,CAAC;AAEnF;;;GAGG;AACH,MAAM,WAAW,4BAA4B;IAC3C,MAAM,EAAE,yBAAyB,EAAE,CAAC;IACpC,oCAAoC;IACpC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,4EAA4E;IAC5E,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;;;;;GAMG;AACH,MAAM,MAAM,2BAA2B,GACnC,yBAAyB,GACzB,4BAA4B,GAC5B,SAAS,CAAC;AAEd,MAAM,WAAW,uBAAuB;IACtC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,mFAAmF;IACnF,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,6DAA6D;IAC7D,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,yFAAyF;IACzF,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,yDAAyD;IACzD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,uDAAuD;IACvD,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;OAIG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB;;;;OAIG;IACH,WAAW,CAAC,EAAE,6BAA6B,CAAC;IAC5C,eAAe,CAAC,EAAE,iCAAiC,CAAC;IACpD;;;;OAIG;IACH,KAAK,CAAC,EAAE,2BAA2B,EAAE,CAAC;IACtC;;;;;;;;;;;;;;OAcG;IACH,MAAM,CAAC,EAAE,uBAAuB,CAAC;IACjC;;;;;;;OAOG;IACH,WAAW,CAAC,EAAE,aAAa,CAAC;IAC5B;;;;;;;OAOG;IACH,SAAS,CAAC,EAAE,WAAW,CAAC;CACzB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cA6wDkC,QAAQ,CAAC,6BAA6B,CAAC;;;;cAEpD,QAAQ,CAAC,iCAAiC,CAAC;;;;cAGrC,QAAQ,CAAC,2BAA2B,EAAE,CAAC;;;;cAC3B,QAAQ,CAAC,uBAAuB,CAAC;;;;cACpC,QAAQ,CAAC,aAAa,GAAG,SAAS,CAAC;;;;cACrC,QAAQ,CAAC,WAAW,GAAG,SAAS,CAAC;;;;cACtC,QAAQ,CAAC,aAAa,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cATlB,QAAQ,CAAC,6BAA6B,CAAC;;;;cAEpD,QAAQ,CAAC,iCAAiC,CAAC;;;;cAGrC,QAAQ,CAAC,2BAA2B,EAAE,CAAC;;;;cAC3B,QAAQ,CAAC,uBAAuB,CAAC;;;;cACpC,QAAQ,CAAC,aAAa,GAAG,SAAS,CAAC;;;;cACrC,QAAQ,CAAC,WAAW,GAAG,SAAS,CAAC;;;;cACtC,QAAQ,CAAC,aAAa,CAAC;;;;;;;;;;;;;;;;;;;;;;;AArBrD,wBAuEG"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
declare function __VLS_template(): {
|
|
2
|
+
attrs: Partial<{}>;
|
|
3
|
+
slots: {
|
|
4
|
+
default?(_: {}): any;
|
|
5
|
+
};
|
|
6
|
+
refs: {};
|
|
7
|
+
rootEl: any;
|
|
8
|
+
};
|
|
9
|
+
type __VLS_TemplateResult = ReturnType<typeof __VLS_template>;
|
|
10
|
+
declare const __VLS_component: import('vue').DefineComponent<{}, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
|
|
11
|
+
declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, __VLS_TemplateResult["slots"]>;
|
|
12
|
+
export default _default;
|
|
13
|
+
type __VLS_WithTemplateSlots<T, S> = T & {
|
|
14
|
+
new (): {
|
|
15
|
+
$slots: S;
|
|
16
|
+
};
|
|
17
|
+
};
|
|
18
|
+
//# sourceMappingURL=CoarMarkdownEditorGroup.vue.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CoarMarkdownEditorGroup.vue.d.ts","sourceRoot":"","sources":["../src/CoarMarkdownEditorGroup.vue"],"names":[],"mappings":"AAiGA,iBAAS,cAAc;WAoBT,OAAO,IAA6B;;yBAVrB,GAAG;;;;EAe/B;AAOD,KAAK,oBAAoB,GAAG,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC;AAC9D,QAAA,MAAM,eAAe,+QAKnB,CAAC;wBACkB,uBAAuB,CAAC,OAAO,eAAe,EAAE,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAAnG,wBAAoG;AAEpG,KAAK,uBAAuB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG;IACxC,QAAO;QACN,MAAM,EAAE,CAAC,CAAC;KAEV,CAAA;CACD,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { PropType } from 'vue';
|
|
2
|
+
import { MarkdownEditorGroupToolbarPosition } from './editor-group';
|
|
3
|
+
declare const _default: import('vue').DefineComponent<import('vue').ExtractPropTypes<{
|
|
4
|
+
position: {
|
|
5
|
+
type: PropType<MarkdownEditorGroupToolbarPosition>;
|
|
6
|
+
default: string;
|
|
7
|
+
};
|
|
8
|
+
label: {
|
|
9
|
+
type: StringConstructor;
|
|
10
|
+
default: string;
|
|
11
|
+
};
|
|
12
|
+
}>, () => import('vue').VNode<import('vue').RendererNode, import('vue').RendererElement, {
|
|
13
|
+
[key: string]: any;
|
|
14
|
+
}>, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<import('vue').ExtractPropTypes<{
|
|
15
|
+
position: {
|
|
16
|
+
type: PropType<MarkdownEditorGroupToolbarPosition>;
|
|
17
|
+
default: string;
|
|
18
|
+
};
|
|
19
|
+
label: {
|
|
20
|
+
type: StringConstructor;
|
|
21
|
+
default: string;
|
|
22
|
+
};
|
|
23
|
+
}>> & Readonly<{}>, {
|
|
24
|
+
label: string;
|
|
25
|
+
position: MarkdownEditorGroupToolbarPosition;
|
|
26
|
+
}, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
|
|
27
|
+
export default _default;
|
|
28
|
+
//# sourceMappingURL=CoarMarkdownToolbar.vue.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CoarMarkdownToolbar.vue.d.ts","sourceRoot":"","sources":["../src/CoarMarkdownToolbar.vue"],"names":[],"mappings":"AAqEA,OAAO,EAAqC,KAAK,QAAQ,EAAE,MAAM,KAAK,CAAC;AACvE,OAAO,EAEL,KAAK,kCAAkC,EACxC,MAAM,gBAAgB,CAAC;;;cAMF,QAAQ,CAAC,kCAAkC,CAAC;;;;;;;;;;;cAA5C,QAAQ,CAAC,kCAAkC,CAAC;;;;;;;;;;;AAJlE,wBAgCG"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { InjectionKey, Ref, ShallowRef, VNodeChild } from 'vue';
|
|
2
|
+
export type MarkdownEditorGroupToolbarPosition = 'left' | 'right' | 'top' | 'bottom';
|
|
3
|
+
/** The editor-owned command/state adapter rendered by one stable toolbar host. */
|
|
4
|
+
export interface MarkdownEditorToolbarController {
|
|
5
|
+
id: string;
|
|
6
|
+
render(): VNodeChild;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Runtime coordination shared by one external toolbar and every editor in its
|
|
10
|
+
* scope. Each editor owns its Milkdown-bound commands/state; the group switches
|
|
11
|
+
* the stable toolbar host to the controller of the focused editor.
|
|
12
|
+
*/
|
|
13
|
+
export interface MarkdownEditorGroupContext {
|
|
14
|
+
position: Ref<MarkdownEditorGroupToolbarPosition>;
|
|
15
|
+
activeId: Ref<string | null>;
|
|
16
|
+
activeController: ShallowRef<MarkdownEditorToolbarController | null>;
|
|
17
|
+
register(controller: MarkdownEditorToolbarController): () => void;
|
|
18
|
+
activate(id: string): void;
|
|
19
|
+
deactivate(id: string): void;
|
|
20
|
+
}
|
|
21
|
+
export declare const MARKDOWN_EDITOR_GROUP_KEY: InjectionKey<MarkdownEditorGroupContext>;
|
|
22
|
+
//# sourceMappingURL=editor-group.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"editor-group.d.ts","sourceRoot":"","sources":["../src/editor-group.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,GAAG,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,KAAK,CAAC;AAErE,MAAM,MAAM,kCAAkC,GAAG,MAAM,GAAG,OAAO,GAAG,KAAK,GAAG,QAAQ,CAAC;AAErF,kFAAkF;AAClF,MAAM,WAAW,+BAA+B;IAC9C,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,IAAI,UAAU,CAAC;CACtB;AAED;;;;GAIG;AACH,MAAM,WAAW,0BAA0B;IACzC,QAAQ,EAAE,GAAG,CAAC,kCAAkC,CAAC,CAAC;IAClD,QAAQ,EAAE,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAC7B,gBAAgB,EAAE,UAAU,CAAC,+BAA+B,GAAG,IAAI,CAAC,CAAC;IACrE,QAAQ,CAAC,UAAU,EAAE,+BAA+B,GAAG,MAAM,IAAI,CAAC;IAClE,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AAED,eAAO,MAAM,yBAAyB,EAAE,YAAY,CAAC,0BAA0B,CACO,CAAC"}
|
package/dist/index.css
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
.coar-md-code-host{border-radius:var(--coar-radius-s);border:1px solid var(--coar-code-block-border,var(--coar-border-neutral));background:var(--coar-code-block-bg,var(--coar-background-neutral-secondary));margin:.75em 0;position:relative;overflow:hidden}.coar-md-code-host--editing{border-color:var(--coar-background-accent-primary)}.coar-md-code-render{position:relative}.coar-md-code-edit-btn{color:var(--coar-text-neutral-secondary);background:var(--coar-background-neutral-primary);border:1px solid var(--coar-border-neutral);border-radius:var(--coar-radius-s);cursor:pointer;opacity:0;z-index:1;align-items:center;gap:.25rem;padding:.25rem .5rem;font-size:.75rem;font-weight:500;transition:opacity .12s ease-out;display:inline-flex;position:absolute;top:.5rem;right:.5rem}.coar-md-code-render:hover .coar-md-code-edit-btn,.coar-md-code-edit-btn:focus-visible{opacity:1}.coar-md-code-edit-btn:hover{background:var(--coar-background-neutral-tertiary);color:var(--coar-text-neutral-primary)}.coar-md-code-lang-row{align-items:center;gap:var(--coar-spacing-s);padding:var(--coar-spacing-s) .75rem;border-bottom:1px solid var(--coar-code-block-border,var(--coar-border-neutral));background:var(--coar-code-block-header-bg,var(--coar-background-neutral-tertiary));min-height:36px;display:flex}.coar-md-code-lang-select{--coar-select-bg:transparent;--coar-select-border:transparent}.coar-md-code-content{padding:var(--coar-spacing-s) .75rem;font-family:var(--coar-font-family-code,"Cascadia Code", Consolas, Monaco, monospace);font-size:var(--coar-component-s-font-size,.85em);line-height:1.5}.coar-md-code-content>pre{white-space:pre-wrap;font-family:inherit;font-size:inherit;background:0 0;margin:0;padding:0}.coar-md-code-content>pre>code{white-space:inherit;outline:none;font-family:inherit;display:block}.coar-md-color-picker{gap:var(--coar-spacing-s);width:224px;padding:var(--coar-spacing-s);background:var(--coar-background-neutral-primary);border:1px solid var(--coar-border-neutral);border-radius:var(--coar-radius-xl);box-shadow:var(--coar-shadow-m,0 4px 12px #0000001f);flex-direction:column;display:flex}.coar-md-color-grid{grid-template-columns:repeat(5,1fr);gap:4px;display:grid}.coar-md-color-swatch{aspect-ratio:1;border:1px solid var(--coar-border-neutral);border-radius:var(--coar-radius-s);background:var(--coar-md-swatch,transparent);width:100%;color:var(--coar-text-neutral-secondary);cursor:pointer;justify-content:center;align-items:center;padding:0;transition:transform 80ms ease-out;display:inline-flex}.coar-md-color-swatch:hover{transform:scale(1.08)}.coar-md-color-swatch--active{outline:2px solid var(--coar-text-accent-primary);outline-offset:1px}.coar-md-color-swatch--clear{background:var(--coar-background-neutral-secondary)}.coar-md-color-custom{align-items:center;gap:var(--coar-spacing-s);padding-top:var(--coar-spacing-xs);border-top:1px solid var(--coar-border-neutral);display:flex}.coar-md-color-custom-label{color:var(--coar-text-neutral-secondary);flex-shrink:0;font-size:12px}.coar-md-color-custom-input{border:1px solid var(--coar-border-neutral);border-radius:var(--coar-radius-s);cursor:pointer;background:0 0;flex:1;height:28px;padding:0}.coar-md-color-custom-input::-webkit-color-swatch-wrapper{padding:2px}.coar-md-color-custom-input::-webkit-color-swatch{border:none;border-radius:2px}.coar-md-table-picker[data-v-68fa1760]{padding:var(--coar-spacing-s,8px);flex-direction:column;gap:6px;display:flex}.coar-md-table-picker__grid[data-v-68fa1760]{gap:3px;display:grid}.coar-md-table-picker__cell[data-v-68fa1760]{border:1px solid var(--coar-border-neutral);background:var(--coar-background-neutral-primary);cursor:pointer;border-radius:2px;width:18px;height:18px;padding:0}.coar-md-table-picker__cell--on[data-v-68fa1760]{background:var(--coar-background-accent-primary,#2563eb);border-color:var(--coar-background-accent-primary,#2563eb)}.coar-md-table-picker__label[data-v-68fa1760]{text-align:center;color:var(--coar-text-neutral-secondary);font-size:12px;font-weight:600}.coar-md-table-picker__hint[data-v-68fa1760]{text-align:center;color:var(--coar-text-neutral-tertiary);font-size:11px}.coar-md-table-picker__hint code[data-v-68fa1760]{background:var(--coar-background-neutral-secondary);border-radius:3px;padding:1px 4px}.coar-md-th[data-v-24e26df4]{pointer-events:none;z-index:40;position:fixed;inset:0}.coar-md-th__hl[data-v-24e26df4]{background:color-mix(in srgb, var(--coar-background-accent-primary,#2563eb) 12%, transparent);outline:1px solid color-mix(in srgb, var(--coar-background-accent-primary,#2563eb) 40%, transparent);pointer-events:none;position:fixed}.coar-md-th__bar[data-v-24e26df4]{pointer-events:none;position:fixed}.coar-md-th__grip[data-v-24e26df4]{cursor:pointer;pointer-events:auto;background:var(--coar-background-neutral-secondary,#e5e7eb);border:none;border-radius:3px;padding:0;position:absolute}.coar-md-th__bar--col .coar-md-th__grip[data-v-24e26df4]{top:2px;bottom:2px}.coar-md-th__bar--row .coar-md-th__grip[data-v-24e26df4]{left:2px;right:2px}.coar-md-th__grip[data-v-24e26df4]:hover,.coar-md-th__grip--active[data-v-24e26df4]{background:var(--coar-background-accent-primary,#2563eb)}.coar-md-th__drop[data-v-24e26df4]{background:var(--coar-background-accent-primary,#2563eb);pointer-events:none;border-radius:1px;position:fixed}.coar-md-image-dialog[data-v-a0456b93]{gap:var(--coar-spacing-m,12px);flex-direction:column;min-width:22rem;display:flex}.coar-md-image-dialog__actions[data-v-a0456b93]{justify-content:flex-end;gap:var(--coar-spacing-s,8px);margin-top:var(--coar-spacing-s,8px);display:flex}.coar-markdown{--coar-markdown-text:var(--coar-text-neutral-primary);--coar-markdown-link:var(--coar-text-brand-primary,var(--coar-text-neutral-primary));--coar-markdown-muted-text:var(--coar-text-neutral-tertiary);--coar-markdown-border:var(--coar-border-neutral-tertiary);--coar-markdown-surface:var(--coar-background-neutral-primary);--coar-markdown-surface-muted:var(--coar-background-neutral-tertiary,var(--coar-background-neutral-primary));--coar-markdown-radius:var(--coar-radius-xs);--coar-markdown-space-1:var(--coar-spacing-s,.5rem);--coar-markdown-space-2:var(--coar-spacing-m,1rem);--coar-markdown-heading-block-start:var(--coar-spacing-xl,2rem);color:var(--coar-markdown-text);display:block}.coar-markdown :where(h1,h2,h3,h4,h5,h6){font-family:var(--coar-font-family-title,inherit);color:var(--coar-markdown-text)}.coar-markdown h1{font-size:var(--coar-font-size-xl);font-weight:var(--coar-font-weight-bold);line-height:var(--coar-line-height-tight)}.coar-markdown h2{font-size:var(--coar-font-size-l);font-weight:var(--coar-font-weight-bold);line-height:1.25}.coar-markdown h3{font-size:var(--coar-font-size-m);font-weight:var(--coar-font-weight-semi-bold);line-height:var(--coar-line-height-snug)}.coar-markdown h4{font-size:var(--coar-font-size-s);font-weight:var(--coar-font-weight-semi-bold);line-height:1.35}.coar-markdown h5{font-size:var(--coar-font-size-xs);font-weight:var(--coar-font-weight-semi-bold);line-height:var(--coar-line-height-normal)}.coar-markdown h6{font-size:var(--coar-font-size-xxs);font-weight:var(--coar-font-weight-medium);line-height:1.45}.coar-markdown-heading,.coar-markdown-paragraph,.coar-markdown-blockquote,.coar-markdown-list,.coar-markdown-code-block,.coar-markdown-table,.coar-markdown-hr,.coar-markdown :where(p,blockquote,ul,ol,pre,table,hr){margin:0}.coar-markdown>:where(h1,h2,h3,h4,h5,h6,p,blockquote,ul,ol,pre,table,hr,.coar-code-block-host,.coar-table-host,.coar-markdown-frontmatter),.coar-markdown .ProseMirror>:where(h1,h2,h3,h4,h5,h6,p,blockquote,ul,ol,pre,table,hr,.coar-code-block-host,.coar-table-host,.coar-markdown-frontmatter){margin-block:0 var(--coar-markdown-space-2)}.coar-markdown>:where(h1,h2,h3,h4,h5,h6),.coar-markdown .ProseMirror>:where(h1,h2,h3,h4,h5,h6){margin-block-start:var(--coar-markdown-heading-block-start)}.coar-markdown>:where(h1,h2,h3,h4,h5,h6)+:where(h1,h2,h3,h4,h5,h6),.coar-markdown .ProseMirror>:where(h1,h2,h3,h4,h5,h6)+:where(h1,h2,h3,h4,h5,h6){margin-block-start:var(--coar-markdown-space-1)}.coar-markdown>:where(h1,h2,h3,h4,h5,h6):first-child,.coar-markdown .ProseMirror>:where(h1,h2,h3,h4,h5,h6):first-child{margin-block-start:0}.coar-markdown :where(blockquote),.coar-markdown-blockquote{padding-inline:var(--coar-markdown-space-2);border-left:2px solid var(--coar-markdown-border);color:var(--coar-text-neutral-secondary)}.coar-markdown :where(ul,ol),.coar-markdown-list{padding-inline-start:var(--coar-spacing-l,1.5rem);list-style-position:outside}.coar-markdown :where(ul),.coar-markdown-list--unordered{list-style-type:disc}.coar-markdown :where(ol),.coar-markdown-list--ordered{list-style-type:decimal}.coar-markdown :where(li),.coar-markdown-list-item{margin-block:.25em;display:list-item}.coar-markdown :where(li,td,th)>:where(p){margin-block:0}.coar-markdown :where(li[data-item-type=task]){margin-left:-1.25em;padding-left:1.5em;list-style:none;position:relative}.coar-markdown :where(li[data-item-type=task]):before{content:"";border:1.5px solid var(--coar-border-neutral-secondary,var(--coar-border-neutral));border-radius:var(--coar-radius-xs,2px);background:var(--coar-background-neutral-primary);cursor:pointer;box-sizing:border-box;width:14px;height:14px;transition:background-color .1s,border-color .1s;position:absolute;top:.45em;left:0}.coar-markdown :where(li[data-item-type=task][data-checked=true]):before{background:var(--coar-background-accent-primary);border-color:var(--coar-background-accent-primary)}.coar-markdown :where(li[data-item-type=task][data-checked=true]):after{content:"";border-left:2px solid var(--coar-text-on-bold,#fff);border-bottom:2px solid var(--coar-text-on-bold,#fff);pointer-events:none;width:8px;height:5px;position:absolute;top:calc(.45em + 2px);left:3px;transform:rotate(-45deg)}.coar-markdown :where(li[data-item-type=task][data-checked=true])>:where(p){color:var(--coar-text-neutral-tertiary);text-decoration:line-through}.coar-markdown :where(li[data-item-type=task]) input[type=checkbox]{display:none}.coar-markdown-list-item--task{align-items:flex-start;gap:var(--coar-spacing-s,.5rem);list-style:none;display:flex}.coar-markdown-list-item-content{min-width:0}.coar-markdown-task-checkbox{margin-top:.15em}.coar-markdown-code-block,.coar-markdown-code{display:block}.coar-markdown :where(:not(pre)>code),.coar-markdown-inline-code{color:var(--coar-text-accent-secondary,var(--coar-markdown-link));background:0 0;border:0;border-radius:0;padding:0}.coar-markdown :where(a),.coar-markdown-link{color:var(--coar-markdown-link);text-decoration:underline}.coar-markdown-image{vertical-align:middle;max-width:100%;height:auto}.coar-markdown :where(table),.coar-markdown-table{border-collapse:collapse;border-spacing:0;width:100%;font-size:var(--coar-body-small-base-size,.9rem);line-height:var(--coar-line-height-relaxed,1.5);display:table}.coar-markdown :where(table thead,table tr[data-is-header]),.coar-markdown-table>thead{background:var(--coar-markdown-surface-muted)}.coar-markdown :where(table th),.coar-markdown-table>thead th{padding:.625rem var(--coar-markdown-space-2);text-align:left;vertical-align:top;font-weight:var(--coar-font-weight-semi-bold,600);font-size:var(--coar-component-s-font-size,.85em);color:var(--coar-markdown-text);border-bottom:1px solid var(--coar-markdown-border);text-transform:uppercase;letter-spacing:.025em}.coar-markdown :where(table td),.coar-markdown-table>tbody td{padding:.625rem var(--coar-markdown-space-2);text-align:left;vertical-align:top;color:var(--coar-text-neutral-secondary,var(--coar-markdown-text));border-bottom:1px solid var(--coar-markdown-border)}.coar-markdown-table>tbody tr:nth-child(odd of :not([data-is-header])),.coar-markdown :where(table>tbody tr:nth-child(odd of :not([data-is-header]))){background:var(--coar-markdown-surface)}.coar-markdown-table>tbody tr:nth-child(2n of :not([data-is-header])),.coar-markdown :where(table>tbody tr:nth-child(2n of :not([data-is-header]))){background:var(--coar-markdown-surface-muted)}.coar-markdown-table>tbody tr:last-child td,.coar-markdown :where(table>tbody tr:last-child:not([data-is-header]) td){border-bottom:0}.coar-markdown-table-cell{padding:var(--coar-markdown-space-1);vertical-align:top;border-right:1px solid var(--coar-markdown-border);border-bottom:1px solid var(--coar-markdown-border)}.coar-markdown-hr{border:0;border-top:1px solid var(--coar-markdown-border)}.coar-markdown-unsupported,.coar-markdown-unsupported-inline{color:var(--coar-markdown-muted-text);font-style:italic}.coar-markdown-unsupported{padding:var(--coar-markdown-space-1);border:1px dashed var(--coar-markdown-border);border-radius:var(--coar-markdown-radius);background:var(--coar-markdown-surface)}.coar-markdown-frontmatter{color:var(--coar-color-gray-400,silver);font-style:italic}.coar-markdown-frontmatter__entry{overflow-wrap:anywhere}.coar-markdown-frontmatter__raw{font:inherit;white-space:pre-wrap;overflow-wrap:anywhere;color:inherit;margin:0;font-style:italic}.coar-markdown-embed{margin:var(--coar-markdown-block-gap,1em) 0}.coar-markdown-embed--unknown{border:1px dashed var(--coar-border-neutral,#d4d4d4);border-radius:var(--coar-markdown-radius,8px);background:var(--coar-background-neutral-secondary,#f5f5f5);color:var(--coar-text-neutral-secondary,#666);align-items:center;gap:8px;padding:10px 14px;font-size:13px;display:flex}.coar-markdown-embed__icon{font-size:16px;line-height:1}.coar-markdown-embed-host{position:relative}.coar-markdown-embed-host--selected{outline:2px solid var(--coar-border-accent,#2563eb);outline-offset:2px;border-radius:var(--coar-markdown-radius,8px)}.coar-md-root{background:var(--coar-background-neutral-primary);height:100%;color:var(--coar-text-neutral-primary);flex-direction:row;display:flex;overflow:hidden}.coar-md-root--toolbar-top,.coar-md-root--toolbar-bottom{flex-direction:column}.coar-md-root--disabled{opacity:.55;cursor:not-allowed}.coar-md-root--disabled .coar-md-area .milkdown{pointer-events:none}.coar-md-root--error{outline:1px solid var(--coar-text-semantic-error-bold,#b91c1c);outline-offset:-1px}.coar-md-area--source .milkdown{display:none}.coar-md-source-area{box-sizing:border-box;resize:none;width:100%;height:100%;padding:var(--coar-spacing-s) var(--coar-spacing-m);font-family:var(--coar-font-family-mono,monospace);font-size:var(--coar-font-size-s,.875rem);tab-size:2;background:var(--coar-background-neutral-primary);color:var(--coar-text-neutral-primary);border:none;outline:none;margin:0;line-height:1.6;position:absolute;inset:0}.coar-md-source-area:disabled{opacity:.55;cursor:not-allowed}.coar-md-source-corner{top:var(--coar-spacing-xs);right:var(--coar-spacing-xs);z-index:5;border:1px solid var(--coar-border-neutral);border-radius:var(--coar-radius-s);background:var(--coar-background-neutral-primary);width:28px;height:28px;color:var(--coar-text-neutral-secondary);cursor:pointer;justify-content:center;align-items:center;padding:0;display:flex;position:absolute}.coar-md-source-corner:hover{background:var(--coar-background-neutral-tertiary);color:var(--coar-text-neutral-primary)}.coar-md-sidebar-wrap{--coar-sidebar-collapsed-width:2.25rem;--coar-sidebar-collapsed-height:2.25rem;--coar-sidebar-item-padding:.25rem .375rem;flex-shrink:0}.coar-md-root--toolbar-left .coar-md-sidebar-wrap{border-right:1px solid var(--coar-border-neutral)}.coar-md-root--toolbar-right .coar-md-sidebar-wrap{border-left:1px solid var(--coar-border-neutral)}.coar-md-root--toolbar-top .coar-md-sidebar-wrap{border-bottom:1px solid var(--coar-border-neutral)}.coar-md-root--toolbar-bottom .coar-md-sidebar-wrap{border-top:1px solid var(--coar-border-neutral)}.coar-md-area{padding:var(--coar-spacing-s) var(--coar-spacing-m);cursor:text;flex:1;position:relative;overflow:auto}.coar-md-area .milkdown,.coar-md-area .milkdown .editor,.coar-md-area .milkdown [contenteditable]{outline:none}.coar-md-area .milkdown pre{background:var(--coar-background-neutral-secondary);padding:var(--coar-spacing-s) var(--coar-spacing-m);border-radius:var(--coar-radius-xl);margin:.5em 0;overflow-x:auto}.coar-md-area .milkdown pre code{background:0 0;padding:0}.coar-md-area .milkdown hr{border:none;border-top:1px solid var(--coar-border-neutral);margin:1em 0}.coar-md-area .milkdown img{max-width:100%;height:auto}.coar-md-image-uploading{vertical-align:text-bottom;border:2px solid var(--coar-border-neutral);border-top-color:var(--coar-text-neutral-secondary,currentColor);border-radius:50%;width:1.25em;height:1.25em;animation:.7s linear infinite coar-md-image-spin;display:inline-block}@keyframes coar-md-image-spin{to{transform:rotate(360deg)}}.coar-md-placeholder{padding:var(--coar-spacing-s) var(--coar-spacing-m);pointer-events:none;-webkit-user-select:none;user-select:none;position:absolute;inset:0;overflow:hidden}.coar-md-placeholder,.coar-md-placeholder *{color:var(--coar-text-placeholder)}.coar-md-placeholder .coar-markdown>:first-child{margin-top:0}.coar-md-floating-toolbar{padding:var(--coar-spacing-xs) 6px;background:var(--coar-background-neutral-primary);border:1px solid var(--coar-border-neutral);border-radius:var(--coar-radius-xl);box-shadow:var(--coar-shadow-m,0 4px 12px #0000001f);z-index:10000;gap:2px;animation:.12s ease-out coar-md-float-in;display:flex;position:fixed;transform:translate(-50%,-100%)}.coar-md-float-btn{border-radius:var(--coar-radius-s);width:30px;height:30px;color:var(--coar-text-neutral-secondary);cursor:pointer;-webkit-user-select:none;user-select:none;background:0 0;border:none;justify-content:center;align-items:center;padding:0;display:flex}.coar-md-float-btn:hover{background:var(--coar-background-neutral-tertiary);color:var(--coar-text-neutral-primary)}.coar-md-float-btn:active,.coar-md-float-btn--active{background:var(--coar-background-accent-tertiary);color:var(--coar-text-accent-primary)}.coar-md-float-btn--disabled,.coar-md-float-btn:disabled{opacity:.4;cursor:not-allowed}.coar-md-float-btn--disabled:hover,.coar-md-float-btn:disabled:hover{color:var(--coar-text-neutral-secondary);background:0 0}.coar-md-float-sep{background:var(--coar-border-neutral);align-self:center;width:1px;height:18px;margin:0 2px}.coar-md-float-dropdown{position:relative}.coar-md-float-submenu{padding:var(--coar-spacing-xs);background:var(--coar-background-neutral-primary);border:1px solid var(--coar-border-neutral);border-radius:var(--coar-radius-xl);box-shadow:var(--coar-shadow-m,0 4px 12px #0000001f);z-index:10001;flex-direction:column;min-width:140px;animation:.1s ease-out coar-md-float-in;display:flex;position:absolute;top:calc(100% + 6px);left:50%;transform:translate(-50%)}.coar-md-float-submenu-item{align-items:center;gap:var(--coar-spacing-s);border-radius:var(--coar-radius-m);width:100%;color:var(--coar-text-neutral-secondary);cursor:pointer;-webkit-user-select:none;user-select:none;white-space:nowrap;text-align:left;background:0 0;border:none;padding:6px 10px;font-size:13px;display:flex}.coar-md-float-submenu-item:hover{background:var(--coar-background-neutral-tertiary);color:var(--coar-text-neutral-primary)}.coar-md-float-submenu-item:active,.coar-md-float-submenu-item--active{background:var(--coar-background-accent-tertiary);color:var(--coar-text-accent-primary)}@keyframes coar-md-float-in{0%{opacity:0;transform:translate(-50%,-100%)translateY(4px)}to{opacity:1;transform:translate(-50%,-100%)translateY(0)}}.coar-md-float-btn[style*=--coar-md-color-indicator]:after{content:"";background:var(--coar-md-color-indicator);border-radius:1px;height:2px;position:absolute;bottom:3px;left:4px;right:4px}.coar-md-float-btn[style*=--coar-md-color-indicator]{position:relative}
|
|
1
|
+
.coar-md-code-host{border-radius:var(--coar-radius-s);border:1px solid var(--coar-code-block-border,var(--coar-border-neutral));background:var(--coar-code-block-bg,var(--coar-background-neutral-secondary));margin:.75em 0;position:relative;overflow:hidden}.coar-md-code-host--editing{border-color:var(--coar-background-accent-primary)}.coar-md-code-render{position:relative}.coar-md-code-edit-btn{color:var(--coar-text-neutral-secondary);background:var(--coar-background-neutral-primary);border:1px solid var(--coar-border-neutral);border-radius:var(--coar-radius-s);cursor:pointer;opacity:0;z-index:1;align-items:center;gap:.25rem;padding:.25rem .5rem;font-size:.75rem;font-weight:500;transition:opacity .12s ease-out;display:inline-flex;position:absolute;top:.5rem;right:.5rem}.coar-md-code-render:hover .coar-md-code-edit-btn,.coar-md-code-edit-btn:focus-visible{opacity:1}.coar-md-code-edit-btn:hover{background:var(--coar-background-neutral-tertiary);color:var(--coar-text-neutral-primary)}.coar-md-code-lang-row{align-items:center;gap:var(--coar-spacing-s);padding:var(--coar-spacing-s) .75rem;border-bottom:1px solid var(--coar-code-block-border,var(--coar-border-neutral));background:var(--coar-code-block-header-bg,var(--coar-background-neutral-tertiary));min-height:36px;display:flex}.coar-md-code-lang-select{--coar-select-bg:transparent;--coar-select-border:transparent}.coar-md-code-content{padding:var(--coar-spacing-s) .75rem;font-family:var(--coar-font-family-code,"Cascadia Code", Consolas, Monaco, monospace);font-size:var(--coar-component-s-font-size,.85em);line-height:1.5}.coar-md-code-content>pre{white-space:pre-wrap;font-family:inherit;font-size:inherit;background:0 0;margin:0;padding:0}.coar-md-code-content>pre>code{white-space:inherit;outline:none;font-family:inherit;display:block}.coar-md-color-picker{gap:var(--coar-spacing-s);width:224px;padding:var(--coar-spacing-s);background:var(--coar-background-neutral-primary);border:1px solid var(--coar-border-neutral);border-radius:var(--coar-radius-xl);box-shadow:var(--coar-shadow-m,0 4px 12px #0000001f);flex-direction:column;display:flex}.coar-md-color-grid{grid-template-columns:repeat(5,1fr);gap:4px;display:grid}.coar-md-color-swatch{aspect-ratio:1;border:1px solid var(--coar-border-neutral);border-radius:var(--coar-radius-s);background:var(--coar-md-swatch,transparent);width:100%;color:var(--coar-text-neutral-secondary);cursor:pointer;justify-content:center;align-items:center;padding:0;transition:transform 80ms ease-out;display:inline-flex}.coar-md-color-swatch:hover{transform:scale(1.08)}.coar-md-color-swatch--active{outline:2px solid var(--coar-text-accent-primary);outline-offset:1px}.coar-md-color-swatch--clear{background:var(--coar-background-neutral-secondary)}.coar-md-color-custom{align-items:center;gap:var(--coar-spacing-s);padding-top:var(--coar-spacing-xs);border-top:1px solid var(--coar-border-neutral);display:flex}.coar-md-color-custom-label{color:var(--coar-text-neutral-secondary);flex-shrink:0;font-size:12px}.coar-md-color-custom-input{border:1px solid var(--coar-border-neutral);border-radius:var(--coar-radius-s);cursor:pointer;background:0 0;flex:1;height:28px;padding:0}.coar-md-color-custom-input::-webkit-color-swatch-wrapper{padding:2px}.coar-md-color-custom-input::-webkit-color-swatch{border:none;border-radius:2px}.coar-md-table-picker[data-v-68fa1760]{padding:var(--coar-spacing-s,8px);flex-direction:column;gap:6px;display:flex}.coar-md-table-picker__grid[data-v-68fa1760]{gap:3px;display:grid}.coar-md-table-picker__cell[data-v-68fa1760]{border:1px solid var(--coar-border-neutral);background:var(--coar-background-neutral-primary);cursor:pointer;border-radius:2px;width:18px;height:18px;padding:0}.coar-md-table-picker__cell--on[data-v-68fa1760]{background:var(--coar-background-accent-primary,#2563eb);border-color:var(--coar-background-accent-primary,#2563eb)}.coar-md-table-picker__label[data-v-68fa1760]{text-align:center;color:var(--coar-text-neutral-secondary);font-size:12px;font-weight:600}.coar-md-table-picker__hint[data-v-68fa1760]{text-align:center;color:var(--coar-text-neutral-tertiary);font-size:11px}.coar-md-table-picker__hint code[data-v-68fa1760]{background:var(--coar-background-neutral-secondary);border-radius:3px;padding:1px 4px}.coar-md-th[data-v-24e26df4]{pointer-events:none;z-index:40;position:fixed;inset:0}.coar-md-th__hl[data-v-24e26df4]{background:color-mix(in srgb, var(--coar-background-accent-primary,#2563eb) 12%, transparent);outline:1px solid color-mix(in srgb, var(--coar-background-accent-primary,#2563eb) 40%, transparent);pointer-events:none;position:fixed}.coar-md-th__bar[data-v-24e26df4]{pointer-events:none;position:fixed}.coar-md-th__grip[data-v-24e26df4]{cursor:pointer;pointer-events:auto;background:var(--coar-background-neutral-secondary,#e5e7eb);border:none;border-radius:3px;padding:0;position:absolute}.coar-md-th__bar--col .coar-md-th__grip[data-v-24e26df4]{top:2px;bottom:2px}.coar-md-th__bar--row .coar-md-th__grip[data-v-24e26df4]{left:2px;right:2px}.coar-md-th__grip[data-v-24e26df4]:hover,.coar-md-th__grip--active[data-v-24e26df4]{background:var(--coar-background-accent-primary,#2563eb)}.coar-md-th__drop[data-v-24e26df4]{background:var(--coar-background-accent-primary,#2563eb);pointer-events:none;border-radius:1px;position:fixed}.coar-md-image-dialog[data-v-a0456b93]{gap:var(--coar-spacing-m,12px);flex-direction:column;min-width:22rem;display:flex}.coar-md-image-dialog__actions[data-v-a0456b93]{justify-content:flex-end;gap:var(--coar-spacing-s,8px);margin-top:var(--coar-spacing-s,8px);display:flex}.coar-markdown{--coar-markdown-text:var(--coar-text-neutral-primary);--coar-markdown-link:var(--coar-text-brand-primary,var(--coar-text-neutral-primary));--coar-markdown-muted-text:var(--coar-text-neutral-tertiary);--coar-markdown-border:var(--coar-border-neutral-tertiary);--coar-markdown-surface:var(--coar-background-neutral-primary);--coar-markdown-surface-muted:var(--coar-background-neutral-tertiary,var(--coar-background-neutral-primary));--coar-markdown-radius:var(--coar-radius-xs);--coar-markdown-space-1:var(--coar-spacing-s,.5rem);--coar-markdown-space-2:var(--coar-spacing-m,1rem);--coar-markdown-heading-block-start:var(--coar-spacing-xl,2rem);color:var(--coar-markdown-text);display:block}.coar-markdown :where(h1,h2,h3,h4,h5,h6){font-family:var(--coar-font-family-title,inherit);color:var(--coar-markdown-text)}.coar-markdown h1{font-size:var(--coar-font-size-xl);font-weight:var(--coar-font-weight-bold);line-height:var(--coar-line-height-tight)}.coar-markdown h2{font-size:var(--coar-font-size-l);font-weight:var(--coar-font-weight-bold);line-height:1.25}.coar-markdown h3{font-size:var(--coar-font-size-m);font-weight:var(--coar-font-weight-semi-bold);line-height:var(--coar-line-height-snug)}.coar-markdown h4{font-size:var(--coar-font-size-s);font-weight:var(--coar-font-weight-semi-bold);line-height:1.35}.coar-markdown h5{font-size:var(--coar-font-size-xs);font-weight:var(--coar-font-weight-semi-bold);line-height:var(--coar-line-height-normal)}.coar-markdown h6{font-size:var(--coar-font-size-xxs);font-weight:var(--coar-font-weight-medium);line-height:1.45}.coar-markdown-heading,.coar-markdown-paragraph,.coar-markdown-blockquote,.coar-markdown-list,.coar-markdown-code-block,.coar-markdown-table,.coar-markdown-hr,.coar-markdown :where(p,blockquote,ul,ol,pre,table,hr){margin:0}.coar-markdown>:where(h1,h2,h3,h4,h5,h6,p,blockquote,ul,ol,pre,table,hr,.coar-code-block-host,.coar-table-host,.coar-markdown-frontmatter),.coar-markdown .ProseMirror>:where(h1,h2,h3,h4,h5,h6,p,blockquote,ul,ol,pre,table,hr,.coar-code-block-host,.coar-table-host,.coar-markdown-frontmatter){margin-block:0 var(--coar-markdown-space-2)}.coar-markdown>:where(h1,h2,h3,h4,h5,h6),.coar-markdown .ProseMirror>:where(h1,h2,h3,h4,h5,h6){margin-block-start:var(--coar-markdown-heading-block-start)}.coar-markdown>:where(h1,h2,h3,h4,h5,h6)+:where(h1,h2,h3,h4,h5,h6),.coar-markdown .ProseMirror>:where(h1,h2,h3,h4,h5,h6)+:where(h1,h2,h3,h4,h5,h6){margin-block-start:var(--coar-markdown-space-1)}.coar-markdown>:where(h1,h2,h3,h4,h5,h6):first-child,.coar-markdown .ProseMirror>:where(h1,h2,h3,h4,h5,h6):first-child{margin-block-start:0}.coar-markdown :where(blockquote),.coar-markdown-blockquote{padding-inline:var(--coar-markdown-space-2);border-left:2px solid var(--coar-markdown-border);color:var(--coar-text-neutral-secondary)}.coar-markdown :where(ul,ol),.coar-markdown-list{padding-inline-start:var(--coar-spacing-l,1.5rem);list-style-position:outside}.coar-markdown :where(ul),.coar-markdown-list--unordered{list-style-type:disc}.coar-markdown :where(ol),.coar-markdown-list--ordered{list-style-type:decimal}.coar-markdown :where(li),.coar-markdown-list-item{margin-block:.25em;display:list-item}.coar-markdown :where(li,td,th)>:where(p){margin-block:0}.coar-markdown :where(li[data-item-type=task]){margin-left:-1.25em;padding-left:1.5em;list-style:none;position:relative}.coar-markdown :where(li[data-item-type=task]):before{content:"";border:1.5px solid var(--coar-border-neutral-secondary,var(--coar-border-neutral));border-radius:var(--coar-radius-xs,2px);background:var(--coar-background-neutral-primary);cursor:pointer;box-sizing:border-box;width:14px;height:14px;transition:background-color .1s,border-color .1s;position:absolute;top:.45em;left:0}.coar-markdown :where(li[data-item-type=task][data-checked=true]):before{background:var(--coar-background-accent-primary);border-color:var(--coar-background-accent-primary)}.coar-markdown :where(li[data-item-type=task][data-checked=true]):after{content:"";border-left:2px solid var(--coar-text-on-bold,#fff);border-bottom:2px solid var(--coar-text-on-bold,#fff);pointer-events:none;width:8px;height:5px;position:absolute;top:calc(.45em + 2px);left:3px;transform:rotate(-45deg)}.coar-markdown :where(li[data-item-type=task][data-checked=true])>:where(p){color:var(--coar-text-neutral-tertiary);text-decoration:line-through}.coar-markdown :where(li[data-item-type=task]) input[type=checkbox]{display:none}.coar-markdown-list-item--task{align-items:flex-start;gap:var(--coar-spacing-s,.5rem);list-style:none;display:flex}.coar-markdown-list-item-content{min-width:0}.coar-markdown-task-checkbox{margin-top:.15em}.coar-markdown-code-block,.coar-markdown-code{display:block}.coar-markdown :where(:not(pre)>code),.coar-markdown-inline-code{color:var(--coar-text-accent-secondary,var(--coar-markdown-link));background:0 0;border:0;border-radius:0;padding:0}.coar-markdown :where(a),.coar-markdown-link{color:var(--coar-markdown-link);text-decoration:underline}.coar-markdown-image{vertical-align:middle;max-width:100%;height:auto}.coar-markdown :where(table),.coar-markdown-table{border-collapse:collapse;border-spacing:0;width:100%;font-size:var(--coar-body-small-base-size,.9rem);line-height:var(--coar-line-height-relaxed,1.5);display:table}.coar-markdown :where(table thead,table tr[data-is-header]),.coar-markdown-table>thead{background:var(--coar-markdown-surface-muted)}.coar-markdown :where(table th),.coar-markdown-table>thead th{padding:.625rem var(--coar-markdown-space-2);text-align:left;vertical-align:top;font-weight:var(--coar-font-weight-semi-bold,600);font-size:var(--coar-component-s-font-size,.85em);color:var(--coar-markdown-text);border-bottom:1px solid var(--coar-markdown-border);text-transform:uppercase;letter-spacing:.025em}.coar-markdown :where(table td),.coar-markdown-table>tbody td{padding:.625rem var(--coar-markdown-space-2);text-align:left;vertical-align:top;color:var(--coar-text-neutral-secondary,var(--coar-markdown-text));border-bottom:1px solid var(--coar-markdown-border)}.coar-markdown-table>tbody tr:nth-child(odd of :not([data-is-header])),.coar-markdown :where(table>tbody tr:nth-child(odd of :not([data-is-header]))){background:var(--coar-markdown-surface)}.coar-markdown-table>tbody tr:nth-child(2n of :not([data-is-header])),.coar-markdown :where(table>tbody tr:nth-child(2n of :not([data-is-header]))){background:var(--coar-markdown-surface-muted)}.coar-markdown-table>tbody tr:last-child td,.coar-markdown :where(table>tbody tr:last-child:not([data-is-header]) td){border-bottom:0}.coar-markdown-table-cell{padding:var(--coar-markdown-space-1);vertical-align:top;border-right:1px solid var(--coar-markdown-border);border-bottom:1px solid var(--coar-markdown-border)}.coar-markdown-hr{border:0;border-top:1px solid var(--coar-markdown-border)}.coar-markdown-unsupported,.coar-markdown-unsupported-inline{color:var(--coar-markdown-muted-text);font-style:italic}.coar-markdown-unsupported{padding:var(--coar-markdown-space-1);border:1px dashed var(--coar-markdown-border);border-radius:var(--coar-markdown-radius);background:var(--coar-markdown-surface)}.coar-markdown-frontmatter{color:var(--coar-color-gray-400,silver);font-style:italic}.coar-markdown-frontmatter__entry{overflow-wrap:anywhere}.coar-markdown-frontmatter__raw{font:inherit;white-space:pre-wrap;overflow-wrap:anywhere;color:inherit;margin:0;font-style:italic}.coar-markdown-embed{margin:var(--coar-markdown-block-gap,1em) 0}.coar-markdown-embed--unknown{border:1px dashed var(--coar-border-neutral,#d4d4d4);border-radius:var(--coar-markdown-radius,8px);background:var(--coar-background-neutral-secondary,#f5f5f5);color:var(--coar-text-neutral-secondary,#666);align-items:center;gap:8px;padding:10px 14px;font-size:13px;display:flex}.coar-markdown-embed__icon{font-size:16px;line-height:1}.coar-markdown-embed-host{position:relative}.coar-markdown-embed-host--selected{outline:2px solid var(--coar-border-accent,#2563eb);outline-offset:2px;border-radius:var(--coar-markdown-radius,8px)}.coar-md-root{background:var(--coar-background-neutral-primary);height:100%;color:var(--coar-text-neutral-primary);flex-direction:row;display:flex;overflow:hidden}.coar-md-root--toolbar-top,.coar-md-root--toolbar-bottom{flex-direction:column}.coar-md-root--disabled{opacity:.55;cursor:not-allowed}.coar-md-root--disabled .coar-md-area .milkdown{pointer-events:none}.coar-md-root--error{outline:1px solid var(--coar-text-semantic-error-bold,#b91c1c);outline-offset:-1px}.coar-md-area--source .milkdown{display:none}.coar-md-source-area{box-sizing:border-box;resize:none;width:100%;height:100%;padding:var(--coar-spacing-s) var(--coar-spacing-m);font-family:var(--coar-font-family-mono,monospace);font-size:var(--coar-font-size-s,.875rem);tab-size:2;background:var(--coar-background-neutral-primary);color:var(--coar-text-neutral-primary);border:none;outline:none;margin:0;line-height:1.6;position:absolute;inset:0}.coar-md-source-area:disabled{opacity:.55;cursor:not-allowed}.coar-md-source-corner{top:var(--coar-spacing-xs);right:var(--coar-spacing-xs);z-index:5;border:1px solid var(--coar-border-neutral);border-radius:var(--coar-radius-s);background:var(--coar-background-neutral-primary);width:28px;height:28px;color:var(--coar-text-neutral-secondary);cursor:pointer;justify-content:center;align-items:center;padding:0;display:flex;position:absolute}.coar-md-source-corner:hover{background:var(--coar-background-neutral-tertiary);color:var(--coar-text-neutral-primary)}.coar-md-sidebar-wrap{--coar-sidebar-collapsed-width:2.25rem;--coar-sidebar-collapsed-height:2.25rem;--coar-sidebar-item-padding:.25rem .375rem;flex-shrink:0}.coar-md-sidebar-wrap--external{width:100%;min-width:0;display:flex}.coar-md-root--toolbar-left .coar-md-sidebar-wrap{border-right:1px solid var(--coar-border-neutral)}.coar-md-root--toolbar-right .coar-md-sidebar-wrap{border-left:1px solid var(--coar-border-neutral)}.coar-md-root--toolbar-top .coar-md-sidebar-wrap{border-bottom:1px solid var(--coar-border-neutral)}.coar-md-root--toolbar-bottom .coar-md-sidebar-wrap{border-top:1px solid var(--coar-border-neutral)}.coar-md-area{padding:var(--coar-spacing-s) var(--coar-spacing-m);cursor:text;flex:1;position:relative;overflow:auto}.coar-md-area .milkdown,.coar-md-area .milkdown .editor,.coar-md-area .milkdown [contenteditable]{outline:none}.coar-md-area .milkdown pre{background:var(--coar-background-neutral-secondary);padding:var(--coar-spacing-s) var(--coar-spacing-m);border-radius:var(--coar-radius-xl);margin:.5em 0;overflow-x:auto}.coar-md-area .milkdown pre code{background:0 0;padding:0}.coar-md-area .milkdown hr{border:none;border-top:1px solid var(--coar-border-neutral);margin:1em 0}.coar-md-area .milkdown img{max-width:100%;height:auto}.coar-md-image-uploading{vertical-align:text-bottom;border:2px solid var(--coar-border-neutral);border-top-color:var(--coar-text-neutral-secondary,currentColor);border-radius:50%;width:1.25em;height:1.25em;animation:.7s linear infinite coar-md-image-spin;display:inline-block}@keyframes coar-md-image-spin{to{transform:rotate(360deg)}}.coar-md-placeholder{padding:var(--coar-spacing-s) var(--coar-spacing-m);pointer-events:none;-webkit-user-select:none;user-select:none;position:absolute;inset:0;overflow:hidden}.coar-md-placeholder,.coar-md-placeholder *{color:var(--coar-text-placeholder)}.coar-md-placeholder .coar-markdown>:first-child{margin-top:0}.coar-md-floating-toolbar{padding:var(--coar-spacing-xs) 6px;background:var(--coar-background-neutral-primary);border:1px solid var(--coar-border-neutral);border-radius:var(--coar-radius-xl);box-shadow:var(--coar-shadow-m,0 4px 12px #0000001f);z-index:10000;gap:2px;animation:.12s ease-out coar-md-float-in;display:flex;position:fixed;transform:translate(-50%,-100%)}.coar-md-float-btn{border-radius:var(--coar-radius-s);width:30px;height:30px;color:var(--coar-text-neutral-secondary);cursor:pointer;-webkit-user-select:none;user-select:none;background:0 0;border:none;justify-content:center;align-items:center;padding:0;display:flex}.coar-md-float-btn:hover{background:var(--coar-background-neutral-tertiary);color:var(--coar-text-neutral-primary)}.coar-md-float-btn:active,.coar-md-float-btn--active{background:var(--coar-background-accent-tertiary);color:var(--coar-text-accent-primary)}.coar-md-float-btn--disabled,.coar-md-float-btn:disabled{opacity:.4;cursor:not-allowed}.coar-md-float-btn--disabled:hover,.coar-md-float-btn:disabled:hover{color:var(--coar-text-neutral-secondary);background:0 0}.coar-md-float-sep{background:var(--coar-border-neutral);align-self:center;width:1px;height:18px;margin:0 2px}.coar-md-float-dropdown{position:relative}.coar-md-float-submenu{padding:var(--coar-spacing-xs);background:var(--coar-background-neutral-primary);border:1px solid var(--coar-border-neutral);border-radius:var(--coar-radius-xl);box-shadow:var(--coar-shadow-m,0 4px 12px #0000001f);z-index:10001;flex-direction:column;min-width:140px;animation:.1s ease-out coar-md-float-in;display:flex;position:absolute;top:calc(100% + 6px);left:50%;transform:translate(-50%)}.coar-md-float-submenu-item{align-items:center;gap:var(--coar-spacing-s);border-radius:var(--coar-radius-m);width:100%;color:var(--coar-text-neutral-secondary);cursor:pointer;-webkit-user-select:none;user-select:none;white-space:nowrap;text-align:left;background:0 0;border:none;padding:6px 10px;font-size:13px;display:flex}.coar-md-float-submenu-item:hover{background:var(--coar-background-neutral-tertiary);color:var(--coar-text-neutral-primary)}.coar-md-float-submenu-item:active,.coar-md-float-submenu-item--active{background:var(--coar-background-accent-tertiary);color:var(--coar-text-accent-primary)}@keyframes coar-md-float-in{0%{opacity:0;transform:translate(-50%,-100%)translateY(4px)}to{opacity:1;transform:translate(-50%,-100%)translateY(0)}}.coar-md-float-btn[style*=--coar-md-color-indicator]:after{content:"";background:var(--coar-md-color-indicator);border-radius:1px;height:2px;position:absolute;bottom:3px;left:4px;right:4px}.coar-md-float-btn[style*=--coar-md-color-indicator]{position:relative}.coar-md-external-toolbar{background:var(--coar-background-neutral-secondary);min-width:0;min-height:2.25rem;display:flex;overflow:visible}.coar-md-external-toolbar--disabled{cursor:not-allowed;filter:saturate(.35);opacity:.42}.coar-md-external-toolbar--disabled>*{pointer-events:none}.coar-md-external-toolbar--left,.coar-md-external-toolbar--right{width:2.25rem;min-height:0}
|
|
2
2
|
/*$vite$:1*/
|
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
export { default as CoarMarkdownEditor } from './CoarMarkdownEditor.vue';
|
|
2
|
+
export { default as CoarMarkdownEditorGroup } from './CoarMarkdownEditorGroup.vue';
|
|
3
|
+
export { default as CoarMarkdownToolbar } from './CoarMarkdownToolbar.vue';
|
|
2
4
|
export { COAR_MARKDOWN_EDITOR_ALL_TOOLS } from './CoarMarkdownEditor.vue';
|
|
3
5
|
export type { CoarMarkdownEditorProps, CoarMarkdownEditorToolbarMode, CoarMarkdownEditorToolbarPosition, CoarMarkdownEditorTool, CoarMarkdownEditorToolRef, CoarMarkdownEditorToolFlyout, CoarMarkdownEditorToolEntry, } from './CoarMarkdownEditor.vue';
|
|
4
6
|
export type { ImageUploader, ImageUploadOptions } from './image/imageUpload';
|
|
@@ -6,6 +8,7 @@ export type { ImageInsertResult } from './image/ImageInsertDialog.vue';
|
|
|
6
8
|
export type { ImagePicker, ImagePickContext, ImageDescriptor } from './image/pickImage';
|
|
7
9
|
export { resolveCapabilities } from './flavor';
|
|
8
10
|
export type { CoarMarkdownFlavor, CoarMarkdownFlavorInput, CoarMarkdownCapabilities } from './flavor';
|
|
11
|
+
export type { MarkdownEditorGroupToolbarPosition, MarkdownEditorToolbarController, } from './editor-group';
|
|
9
12
|
export { EmbedRenderer, MARKDOWN_EMBEDS_KEY, resolveEmbed, } from '@cocoar/vue-markdown';
|
|
10
13
|
export type { EmbedDefinition, EmbedEditorController, EmbedEditorProps, EmbedInsertIntegration, EmbedRegistry, } from '@cocoar/vue-markdown';
|
|
11
14
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AACzE,OAAO,EAAE,8BAA8B,EAAE,MAAM,0BAA0B,CAAC;AAC1E,YAAY,EACV,uBAAuB,EACvB,6BAA6B,EAC7B,iCAAiC,EACjC,sBAAsB,EACtB,yBAAyB,EACzB,4BAA4B,EAC5B,2BAA2B,GAC5B,MAAM,0BAA0B,CAAC;AAClC,YAAY,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAC7E,YAAY,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AACvE,YAAY,EAAE,WAAW,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACxF,OAAO,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAC/C,YAAY,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,wBAAwB,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AACzE,OAAO,EAAE,OAAO,IAAI,uBAAuB,EAAE,MAAM,+BAA+B,CAAC;AACnF,OAAO,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAC3E,OAAO,EAAE,8BAA8B,EAAE,MAAM,0BAA0B,CAAC;AAC1E,YAAY,EACV,uBAAuB,EACvB,6BAA6B,EAC7B,iCAAiC,EACjC,sBAAsB,EACtB,yBAAyB,EACzB,4BAA4B,EAC5B,2BAA2B,GAC5B,MAAM,0BAA0B,CAAC;AAClC,YAAY,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAC7E,YAAY,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AACvE,YAAY,EAAE,WAAW,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACxF,OAAO,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAC/C,YAAY,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,wBAAwB,EAAE,MAAM,UAAU,CAAC;AACtG,YAAY,EACV,kCAAkC,EAClC,+BAA+B,GAChC,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EACL,aAAa,EACb,mBAAmB,EACnB,YAAY,GACb,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EACV,eAAe,EACf,qBAAqB,EACrB,gBAAgB,EAChB,sBAAsB,EACtB,aAAa,GACd,MAAM,sBAAsB,CAAC"}
|