@jvs-milkdown/crepe 1.2.23 → 1.2.24
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/lib/cjs/builder.js +40 -0
- package/lib/cjs/builder.js.map +1 -1
- package/lib/cjs/index.js +48 -0
- package/lib/cjs/index.js.map +1 -1
- package/lib/esm/builder.js +40 -0
- package/lib/esm/builder.js.map +1 -1
- package/lib/esm/index.js +48 -0
- package/lib/esm/index.js.map +1 -1
- package/lib/tsconfig.tsbuildinfo +1 -1
- package/lib/types/core/builder.d.ts +3 -0
- package/lib/types/core/builder.d.ts.map +1 -1
- package/lib/types/feature/fixed-toolbar/index.d.ts +8 -0
- package/lib/types/feature/fixed-toolbar/index.d.ts.map +1 -1
- package/package.json +4 -4
- package/src/core/builder.ts +45 -1
- package/src/feature/fixed-toolbar/index.ts +17 -1
|
@@ -4,6 +4,7 @@ import type { CrepeFeatureConfig } from '../feature';
|
|
|
4
4
|
import type { DefineFeature } from '../feature/shared';
|
|
5
5
|
import { CrepeFeature } from '../feature';
|
|
6
6
|
import { type CrepeTranslations } from './locale';
|
|
7
|
+
import { type ViewMenuState } from '../feature/fixed-toolbar/view-menu-state';
|
|
7
8
|
export interface CrepeBuilderConfig {
|
|
8
9
|
root?: Node | string | null;
|
|
9
10
|
defaultValue?: DefaultValue;
|
|
@@ -28,5 +29,7 @@ export declare class CrepeBuilder {
|
|
|
28
29
|
on: (fn: (api: ListenerManager) => void) => this;
|
|
29
30
|
get outlineVisible(): boolean;
|
|
30
31
|
setOutlineVisible: (visible: boolean) => this;
|
|
32
|
+
getViewMenuState: () => any;
|
|
33
|
+
setViewMenuState: (state: Partial<ViewMenuState>) => this;
|
|
31
34
|
}
|
|
32
35
|
//# sourceMappingURL=builder.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"builder.d.ts","sourceRoot":"","sources":["../../../src/core/builder.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,YAAY,EAEjB,MAAM,EAKP,MAAM,wBAAwB,CAAA;AAI/B,OAAO,EAGL,KAAK,eAAe,EACrB,MAAM,mCAAmC,CAAA;AAO1C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAA;AACpD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAEtD,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAGzC,OAAO,EAAc,KAAK,iBAAiB,EAAE,MAAM,UAAU,CAAA;
|
|
1
|
+
{"version":3,"file":"builder.d.ts","sourceRoot":"","sources":["../../../src/core/builder.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,YAAY,EAEjB,MAAM,EAKP,MAAM,wBAAwB,CAAA;AAI/B,OAAO,EAGL,KAAK,eAAe,EACrB,MAAM,mCAAmC,CAAA;AAO1C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAA;AACpD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAEtD,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAGzC,OAAO,EAAc,KAAK,iBAAiB,EAAE,MAAM,UAAU,CAAA;AAQ7D,OAAO,EAAoB,KAAK,aAAa,EAAE,MAAM,0CAA0C,CAAA;AAG/F,MAAM,WAAW,kBAAkB;IAIjC,IAAI,CAAC,EAAE,IAAI,GAAG,MAAM,GAAG,IAAI,CAAA;IAG3B,YAAY,CAAC,EAAE,YAAY,CAAA;IAG3B,MAAM,CAAC,EAAE,MAAM,CAAA;IAGf,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAAA;CAC1D;AAID,qBAAa,YAAY;;gBAYX,EACV,IAAI,EACJ,YAAiB,EACjB,MAAgB,EAChB,YAAY,GACb,GAAE,kBAAuB;IA0H1B,UAAU,EAAE;QACV,CAAC,CAAC,SAAS,YAAY,EACrB,OAAO,EAAE,aAAa,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,EAC7C,MAAM,CAAC,EAAE,kBAAkB,CAAC,CAAC,CAAC,GAC7B,YAAY,CAAA;QACf,CAAC,CAAC,EAAE,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,CAAC,GAAG,YAAY,CAAA;KACzD,CAGA;IAGD,MAAM,wBAEL;IAGD,OAAO,wBAEN;IAGD,IAAI,MAAM,IAAI,MAAM,CAEnB;IAGD,IAAI,QAAQ,YAEX;IAGD,WAAW,GAAI,OAAO,OAAO,UAW5B;IAGD,WAAW,eAEV;IAGD,QAAQ,GAAI,aAAa,MAAM,EAAE,aAAa,MAAM,UAMnD;IAGD,QAAQ,aAMP;IAGD,EAAE,GAAI,IAAI,CAAC,GAAG,EAAE,eAAe,KAAK,IAAI,UAavC;IAGD,IAAI,cAAc,YAejB;IAGD,iBAAiB,GAAI,SAAS,OAAO,UAcpC;IAGD,gBAAgB,YAwBf;IAGD,gBAAgB,GAAI,OAAO,OAAO,CAAC,aAAa,CAAC,UAchD;CACF"}
|
|
@@ -3,6 +3,7 @@ import { PluginKey } from '@jvs-milkdown/kit/prose/state';
|
|
|
3
3
|
import type { GroupBuilder } from '../../utils';
|
|
4
4
|
import type { DefineFeature } from '../shared';
|
|
5
5
|
import type { ToolbarItem } from '../toolbar/config';
|
|
6
|
+
import { type EditorWidth } from './view-menu-state';
|
|
6
7
|
export interface FixedToolbarConfig {
|
|
7
8
|
boldIcon?: string;
|
|
8
9
|
codeIcon?: string;
|
|
@@ -32,6 +33,13 @@ export interface FixedToolbarConfig {
|
|
|
32
33
|
onImport?: (replaceContent: (markdown: string) => void, ctx: Ctx) => void;
|
|
33
34
|
useLocalStorage?: boolean;
|
|
34
35
|
id?: string;
|
|
36
|
+
outlineVisible?: boolean;
|
|
37
|
+
outlineWidth?: number;
|
|
38
|
+
documentBackground?: string | null;
|
|
39
|
+
showTitle?: boolean;
|
|
40
|
+
showCover?: boolean;
|
|
41
|
+
coverUrl?: string;
|
|
42
|
+
editorWidth?: EditorWidth;
|
|
35
43
|
}
|
|
36
44
|
export type FixedToolbarFeatureConfig = Partial<FixedToolbarConfig>;
|
|
37
45
|
export declare const fixedToolbarConfig: import("@jvs-milkdown/utils").$Ctx<Partial<FixedToolbarConfig>, "fixedToolbarConfigCtx">;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/feature/fixed-toolbar/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,uBAAuB,CAAA;AAIhD,OAAO,EAAU,SAAS,EAAiB,MAAM,+BAA+B,CAAA;AAehF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAC/C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,WAAW,CAAA;AAC9C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/feature/fixed-toolbar/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,uBAAuB,CAAA;AAIhD,OAAO,EAAU,SAAS,EAAiB,MAAM,+BAA+B,CAAA;AAehF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAC/C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,WAAW,CAAA;AAC9C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAUpD,OAAO,EAAoC,KAAK,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAEtF,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,YAAY,CAAC,WAAW,CAAC,KAAK,IAAI,CAAA;IAC3D,eAAe,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;IAClC,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC,MAAM,CAAC,CAAA;IAC/C,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAA;IAC7B,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,YAAY,CAAC,EAAE;QACb,IAAI,CAAC,EAAE,OAAO,CAAA;QACd,IAAI,CAAC,EAAE,OAAO,CAAA;QACd,IAAI,CAAC,EAAE,OAAO,CAAA;QACd,MAAM,CAAC,EAAE,OAAO,CAAA;QAChB,MAAM,CAAC,EAAE,OAAO,CAAA;KACjB,CAAA;IACD,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,QAAQ,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,KAAK,IAAI,CAAA;IAC/C,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,QAAQ,CAAC,EAAE,CAAC,cAAc,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,EAAE,GAAG,EAAE,GAAG,KAAK,IAAI,CAAA;IACzE,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,kBAAkB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAClC,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,WAAW,CAAC,EAAE,WAAW,CAAA;CAC1B;AAED,MAAM,MAAM,yBAAyB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAA;AAEnE,eAAO,MAAM,kBAAkB,0FAG9B,CAAA;AAED,eAAO,MAAM,eAAe,gBAA0C,CAAA;AA+WtE,eAAO,MAAM,kBAAkB,sCAK7B,CAAA;AAEF,eAAO,MAAM,YAAY,EAAE,aAAa,CAAC,yBAAyB,CA6BjE,CAAA"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@jvs-milkdown/crepe",
|
|
3
|
-
"version": "1.2.
|
|
3
|
+
"version": "1.2.24",
|
|
4
4
|
"keywords": [
|
|
5
5
|
"crepe",
|
|
6
6
|
"editor",
|
|
@@ -107,9 +107,9 @@
|
|
|
107
107
|
"@codemirror/theme-one-dark": "^6.1.2",
|
|
108
108
|
"@codemirror/view": "^6.26.0",
|
|
109
109
|
"@floating-ui/dom": "^1.7.6",
|
|
110
|
-
"@jvs-milkdown/kit": "^1.2.
|
|
111
|
-
"@jvs-milkdown/prose": "^1.2.
|
|
112
|
-
"@jvs-milkdown/utils": "^1.2.
|
|
110
|
+
"@jvs-milkdown/kit": "^1.2.24",
|
|
111
|
+
"@jvs-milkdown/prose": "^1.2.24",
|
|
112
|
+
"@jvs-milkdown/utils": "^1.2.24",
|
|
113
113
|
"@types/lodash-es": "^4.17.12",
|
|
114
114
|
"clsx": "^2.0.0",
|
|
115
115
|
"codemirror": "^6.0.1",
|
package/src/core/builder.ts
CHANGED
|
@@ -36,7 +36,7 @@ import {
|
|
|
36
36
|
translationsCtx,
|
|
37
37
|
useCrepeFeatures,
|
|
38
38
|
} from './slice'
|
|
39
|
-
import { viewMenuStateCtx } from '../feature/fixed-toolbar/view-menu-state'
|
|
39
|
+
import { viewMenuStateCtx, type ViewMenuState } from '../feature/fixed-toolbar/view-menu-state'
|
|
40
40
|
|
|
41
41
|
/// The crepe builder configuration.
|
|
42
42
|
export interface CrepeBuilderConfig {
|
|
@@ -314,4 +314,48 @@ export class CrepeBuilder {
|
|
|
314
314
|
})
|
|
315
315
|
return this
|
|
316
316
|
}
|
|
317
|
+
|
|
318
|
+
/// Get the configuration/state of the view menu (outline, background, title, cover, width, etc.)
|
|
319
|
+
getViewMenuState = () => {
|
|
320
|
+
let state: any = null
|
|
321
|
+
this.#editor.action((ctx) => {
|
|
322
|
+
if (this.#editor.status === EditorStatus.Created) {
|
|
323
|
+
try {
|
|
324
|
+
const viewState = ctx.get(viewMenuStateCtx.key)
|
|
325
|
+
if (viewState) {
|
|
326
|
+
state = {
|
|
327
|
+
outlineVisible: viewState.outlineVisible,
|
|
328
|
+
outlinePosition: viewState.outlinePosition,
|
|
329
|
+
outlineWidth: viewState.outlineWidth,
|
|
330
|
+
documentBackground: viewState.documentBackground,
|
|
331
|
+
showTitle: viewState.showTitle,
|
|
332
|
+
showCover: viewState.showCover,
|
|
333
|
+
coverUrl: viewState.coverUrl,
|
|
334
|
+
editorWidth: viewState.editorWidth,
|
|
335
|
+
}
|
|
336
|
+
}
|
|
337
|
+
} catch (e) {
|
|
338
|
+
// Ignore if FixedToolbar feature is not loaded
|
|
339
|
+
}
|
|
340
|
+
}
|
|
341
|
+
})
|
|
342
|
+
return state
|
|
343
|
+
}
|
|
344
|
+
|
|
345
|
+
/// Update/set the state of the view menu
|
|
346
|
+
setViewMenuState = (state: Partial<ViewMenuState>) => {
|
|
347
|
+
this.#editor.action((ctx) => {
|
|
348
|
+
if (this.#editor.status === EditorStatus.Created) {
|
|
349
|
+
try {
|
|
350
|
+
const viewState = ctx.get(viewMenuStateCtx.key)
|
|
351
|
+
if (viewState) {
|
|
352
|
+
Object.assign(viewState, state)
|
|
353
|
+
}
|
|
354
|
+
} catch (e) {
|
|
355
|
+
// Ignore if FixedToolbar feature is not loaded
|
|
356
|
+
}
|
|
357
|
+
}
|
|
358
|
+
})
|
|
359
|
+
return this
|
|
360
|
+
}
|
|
317
361
|
}
|
|
@@ -29,7 +29,7 @@ import { FixedToolbarComponent } from './component'
|
|
|
29
29
|
import { buildDefaultFixedToolbar } from './config'
|
|
30
30
|
import { DocumentHeader } from './document-header'
|
|
31
31
|
import { OutlinePanel } from './outline-panel'
|
|
32
|
-
import { viewMenuStateCtx, editorWidthMap } from './view-menu-state'
|
|
32
|
+
import { viewMenuStateCtx, editorWidthMap, type EditorWidth } from './view-menu-state'
|
|
33
33
|
|
|
34
34
|
export interface FixedToolbarConfig {
|
|
35
35
|
boldIcon?: string
|
|
@@ -60,6 +60,13 @@ export interface FixedToolbarConfig {
|
|
|
60
60
|
onImport?: (replaceContent: (markdown: string) => void, ctx: Ctx) => void
|
|
61
61
|
useLocalStorage?: boolean
|
|
62
62
|
id?: string
|
|
63
|
+
outlineVisible?: boolean
|
|
64
|
+
outlineWidth?: number
|
|
65
|
+
documentBackground?: string | null
|
|
66
|
+
showTitle?: boolean
|
|
67
|
+
showCover?: boolean
|
|
68
|
+
coverUrl?: string
|
|
69
|
+
editorWidth?: EditorWidth
|
|
63
70
|
}
|
|
64
71
|
|
|
65
72
|
export type FixedToolbarFeatureConfig = Partial<FixedToolbarConfig>
|
|
@@ -95,6 +102,15 @@ class FixedToolbarView implements PluginView {
|
|
|
95
102
|
const config = ctx.get(fixedToolbarConfig.key)
|
|
96
103
|
const viewState = ctx.get(viewMenuStateCtx.key)
|
|
97
104
|
|
|
105
|
+
if (config?.outlineVisible !== undefined) viewState.outlineVisible = config.outlineVisible
|
|
106
|
+
if (config?.outlinePosition !== undefined) viewState.outlinePosition = config.outlinePosition
|
|
107
|
+
if (config?.outlineWidth !== undefined) viewState.outlineWidth = config.outlineWidth
|
|
108
|
+
if (config?.documentBackground !== undefined) viewState.documentBackground = config.documentBackground
|
|
109
|
+
if (config?.showTitle !== undefined) viewState.showTitle = config.showTitle
|
|
110
|
+
if (config?.showCover !== undefined) viewState.showCover = config.showCover
|
|
111
|
+
if (config?.coverUrl !== undefined) viewState.coverUrl = config.coverUrl
|
|
112
|
+
if (config?.editorWidth !== undefined) viewState.editorWidth = config.editorWidth
|
|
113
|
+
|
|
98
114
|
// Load initial view menu state from localStorage if useLocalStorage is enabled
|
|
99
115
|
if (config?.useLocalStorage) {
|
|
100
116
|
try {
|