@jvs-milkdown/crepe 1.2.23 → 1.2.25

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.
@@ -3,6 +3,7 @@ import { type ListenerManager } from '@jvs-milkdown/kit/plugin/listener';
3
3
  import type { CrepeFeatureConfig } from '../feature';
4
4
  import type { DefineFeature } from '../feature/shared';
5
5
  import { CrepeFeature } from '../feature';
6
+ import { type ViewMenuState } from '../feature/fixed-toolbar/view-menu-state';
6
7
  import { type CrepeTranslations } from './locale';
7
8
  export interface CrepeBuilderConfig {
8
9
  root?: Node | string | null;
@@ -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;AAW7D,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;CACF"}
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;AAEzC,OAAO,EAEL,KAAK,aAAa,EACnB,MAAM,0CAA0C,CAAA;AAEjD,OAAO,EAAc,KAAK,iBAAiB,EAAE,MAAM,UAAU,CAAA;AAU7D,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;AAYpD,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;CACZ;AAED,MAAM,MAAM,yBAAyB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAA;AAEnE,eAAO,MAAM,kBAAkB,0FAG9B,CAAA;AAED,eAAO,MAAM,eAAe,gBAA0C,CAAA;AAsWtE,eAAO,MAAM,kBAAkB,sCAK7B,CAAA;AAEF,eAAO,MAAM,YAAY,EAAE,aAAa,CAAC,yBAAyB,CA6BjE,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,EAGL,KAAK,WAAW,EACjB,MAAM,mBAAmB,CAAA;AAE1B,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;AAoXtE,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.23",
3
+ "version": "1.2.25",
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.23",
111
- "@jvs-milkdown/prose": "^1.2.23",
112
- "@jvs-milkdown/utils": "^1.2.23",
110
+ "@jvs-milkdown/kit": "^1.2.25",
111
+ "@jvs-milkdown/prose": "^1.2.25",
112
+ "@jvs-milkdown/utils": "^1.2.25",
113
113
  "@types/lodash-es": "^4.17.12",
114
114
  "clsx": "^2.0.0",
115
115
  "codemirror": "^6.0.1",
@@ -27,6 +27,10 @@ import type { DefineFeature } from '../feature/shared'
27
27
 
28
28
  import { CrepeFeature } from '../feature'
29
29
  import { attachmentConfig } from '../feature/attachment/config'
30
+ import {
31
+ viewMenuStateCtx,
32
+ type ViewMenuState,
33
+ } from '../feature/fixed-toolbar/view-menu-state'
30
34
  import { inlineDiffApiCtx } from '../feature/inline-diff/config'
31
35
  import { zhCN, enUS, type CrepeTranslations } from './locale'
32
36
  import {
@@ -36,7 +40,6 @@ import {
36
40
  translationsCtx,
37
41
  useCrepeFeatures,
38
42
  } from './slice'
39
- import { viewMenuStateCtx } from '../feature/fixed-toolbar/view-menu-state'
40
43
 
41
44
  /// The crepe builder configuration.
42
45
  export interface CrepeBuilderConfig {
@@ -314,4 +317,48 @@ export class CrepeBuilder {
314
317
  })
315
318
  return this
316
319
  }
320
+
321
+ /// Get the configuration/state of the view menu (outline, background, title, cover, width, etc.)
322
+ getViewMenuState = () => {
323
+ let state: any = null
324
+ this.#editor.action((ctx) => {
325
+ if (this.#editor.status === EditorStatus.Created) {
326
+ try {
327
+ const viewState = ctx.get(viewMenuStateCtx.key)
328
+ if (viewState) {
329
+ state = {
330
+ outlineVisible: viewState.outlineVisible,
331
+ outlinePosition: viewState.outlinePosition,
332
+ outlineWidth: viewState.outlineWidth,
333
+ documentBackground: viewState.documentBackground,
334
+ showTitle: viewState.showTitle,
335
+ showCover: viewState.showCover,
336
+ coverUrl: viewState.coverUrl,
337
+ editorWidth: viewState.editorWidth,
338
+ }
339
+ }
340
+ } catch (e) {
341
+ // Ignore if FixedToolbar feature is not loaded
342
+ }
343
+ }
344
+ })
345
+ return state
346
+ }
347
+
348
+ /// Update/set the state of the view menu
349
+ setViewMenuState = (state: Partial<ViewMenuState>) => {
350
+ this.#editor.action((ctx) => {
351
+ if (this.#editor.status === EditorStatus.Created) {
352
+ try {
353
+ const viewState = ctx.get(viewMenuStateCtx.key)
354
+ if (viewState) {
355
+ Object.assign(viewState, state)
356
+ }
357
+ } catch (e) {
358
+ // Ignore if FixedToolbar feature is not loaded
359
+ }
360
+ }
361
+ })
362
+ return this
363
+ }
317
364
  }
@@ -29,7 +29,11 @@ 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 {
33
+ viewMenuStateCtx,
34
+ editorWidthMap,
35
+ type EditorWidth,
36
+ } from './view-menu-state'
33
37
 
34
38
  export interface FixedToolbarConfig {
35
39
  boldIcon?: string
@@ -60,6 +64,13 @@ export interface FixedToolbarConfig {
60
64
  onImport?: (replaceContent: (markdown: string) => void, ctx: Ctx) => void
61
65
  useLocalStorage?: boolean
62
66
  id?: string
67
+ outlineVisible?: boolean
68
+ outlineWidth?: number
69
+ documentBackground?: string | null
70
+ showTitle?: boolean
71
+ showCover?: boolean
72
+ coverUrl?: string
73
+ editorWidth?: EditorWidth
63
74
  }
64
75
 
65
76
  export type FixedToolbarFeatureConfig = Partial<FixedToolbarConfig>
@@ -95,6 +106,20 @@ class FixedToolbarView implements PluginView {
95
106
  const config = ctx.get(fixedToolbarConfig.key)
96
107
  const viewState = ctx.get(viewMenuStateCtx.key)
97
108
 
109
+ if (config?.outlineVisible !== undefined)
110
+ viewState.outlineVisible = config.outlineVisible
111
+ if (config?.outlinePosition !== undefined)
112
+ viewState.outlinePosition = config.outlinePosition
113
+ if (config?.outlineWidth !== undefined)
114
+ viewState.outlineWidth = config.outlineWidth
115
+ if (config?.documentBackground !== undefined)
116
+ viewState.documentBackground = config.documentBackground
117
+ if (config?.showTitle !== undefined) viewState.showTitle = config.showTitle
118
+ if (config?.showCover !== undefined) viewState.showCover = config.showCover
119
+ if (config?.coverUrl !== undefined) viewState.coverUrl = config.coverUrl
120
+ if (config?.editorWidth !== undefined)
121
+ viewState.editorWidth = config.editorWidth
122
+
98
123
  // Load initial view menu state from localStorage if useLocalStorage is enabled
99
124
  if (config?.useLocalStorage) {
100
125
  try {
@@ -93,7 +93,7 @@
93
93
  color-mix(in srgb, var(--crepe-color-outline), transparent 80%)
94
94
  );
95
95
  padding: 0 10px;
96
- z-index: 101;
96
+ z-index: 150;
97
97
  position: sticky;
98
98
  top: 0;
99
99
  flex-shrink: 0;