@milkdown/crepe 7.19.1 → 7.20.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.
Files changed (100) hide show
  1. package/lib/cjs/builder.js +43 -1
  2. package/lib/cjs/builder.js.map +1 -1
  3. package/lib/cjs/feature/block-edit/index.js +8 -2
  4. package/lib/cjs/feature/block-edit/index.js.map +1 -1
  5. package/lib/cjs/feature/code-mirror/index.js +1 -0
  6. package/lib/cjs/feature/code-mirror/index.js.map +1 -1
  7. package/lib/cjs/feature/cursor/index.js +1 -0
  8. package/lib/cjs/feature/cursor/index.js.map +1 -1
  9. package/lib/cjs/feature/image-block/index.js +4 -1
  10. package/lib/cjs/feature/image-block/index.js.map +1 -1
  11. package/lib/cjs/feature/latex/index.js +5 -0
  12. package/lib/cjs/feature/latex/index.js.map +1 -1
  13. package/lib/cjs/feature/link-tooltip/index.js +1 -0
  14. package/lib/cjs/feature/link-tooltip/index.js.map +1 -1
  15. package/lib/cjs/feature/list-item/index.js +1 -0
  16. package/lib/cjs/feature/list-item/index.js.map +1 -1
  17. package/lib/cjs/feature/placeholder/index.js +1 -0
  18. package/lib/cjs/feature/placeholder/index.js.map +1 -1
  19. package/lib/cjs/feature/table/index.js +1 -0
  20. package/lib/cjs/feature/table/index.js.map +1 -1
  21. package/lib/cjs/feature/toolbar/index.js +9 -2
  22. package/lib/cjs/feature/toolbar/index.js.map +1 -1
  23. package/lib/cjs/feature/top-bar/index.js +790 -0
  24. package/lib/cjs/feature/top-bar/index.js.map +1 -0
  25. package/lib/cjs/index.js +630 -142
  26. package/lib/cjs/index.js.map +1 -1
  27. package/lib/esm/builder.js +43 -1
  28. package/lib/esm/builder.js.map +1 -1
  29. package/lib/esm/feature/block-edit/index.js +8 -2
  30. package/lib/esm/feature/block-edit/index.js.map +1 -1
  31. package/lib/esm/feature/code-mirror/index.js +1 -0
  32. package/lib/esm/feature/code-mirror/index.js.map +1 -1
  33. package/lib/esm/feature/cursor/index.js +1 -0
  34. package/lib/esm/feature/cursor/index.js.map +1 -1
  35. package/lib/esm/feature/image-block/index.js +4 -1
  36. package/lib/esm/feature/image-block/index.js.map +1 -1
  37. package/lib/esm/feature/latex/index.js +5 -0
  38. package/lib/esm/feature/latex/index.js.map +1 -1
  39. package/lib/esm/feature/link-tooltip/index.js +1 -0
  40. package/lib/esm/feature/link-tooltip/index.js.map +1 -1
  41. package/lib/esm/feature/list-item/index.js +1 -0
  42. package/lib/esm/feature/list-item/index.js.map +1 -1
  43. package/lib/esm/feature/placeholder/index.js +1 -0
  44. package/lib/esm/feature/placeholder/index.js.map +1 -1
  45. package/lib/esm/feature/table/index.js +1 -0
  46. package/lib/esm/feature/table/index.js.map +1 -1
  47. package/lib/esm/feature/toolbar/index.js +9 -2
  48. package/lib/esm/feature/toolbar/index.js.map +1 -1
  49. package/lib/esm/feature/top-bar/index.js +788 -0
  50. package/lib/esm/feature/top-bar/index.js.map +1 -0
  51. package/lib/esm/index.js +631 -143
  52. package/lib/esm/index.js.map +1 -1
  53. package/lib/theme/common/style.css +1 -0
  54. package/lib/theme/common/top-bar.css +152 -0
  55. package/lib/tsconfig.tsbuildinfo +1 -1
  56. package/lib/types/core/builder.d.ts +2 -1
  57. package/lib/types/core/builder.d.ts.map +1 -1
  58. package/lib/types/feature/block-edit/handle/component.d.ts.map +1 -1
  59. package/lib/types/feature/block-edit/menu/component.d.ts.map +1 -1
  60. package/lib/types/feature/image-block/index.d.ts +2 -0
  61. package/lib/types/feature/image-block/index.d.ts.map +1 -1
  62. package/lib/types/feature/index.d.ts +4 -1
  63. package/lib/types/feature/index.d.ts.map +1 -1
  64. package/lib/types/feature/latex/inline-tooltip/component.d.ts.map +1 -1
  65. package/lib/types/feature/loader.d.ts.map +1 -1
  66. package/lib/types/feature/toolbar/component.d.ts.map +1 -1
  67. package/lib/types/feature/toolbar/config.d.ts +1 -1
  68. package/lib/types/feature/top-bar/component.d.ts +11 -0
  69. package/lib/types/feature/top-bar/component.d.ts.map +1 -0
  70. package/lib/types/feature/top-bar/config.d.ts +34 -0
  71. package/lib/types/feature/top-bar/config.d.ts.map +1 -0
  72. package/lib/types/feature/top-bar/index.d.ts +26 -0
  73. package/lib/types/feature/top-bar/index.d.ts.map +1 -0
  74. package/lib/types/icons/code-block.d.ts +2 -0
  75. package/lib/types/icons/code-block.d.ts.map +1 -0
  76. package/lib/types/icons/index.d.ts +1 -0
  77. package/lib/types/icons/index.d.ts.map +1 -1
  78. package/lib/types/utils/group-builder.d.ts +1 -1
  79. package/lib/types/utils/group-builder.d.ts.map +1 -1
  80. package/lib/types/utils/keep-alive.d.ts +2 -0
  81. package/lib/types/utils/keep-alive.d.ts.map +1 -0
  82. package/package.json +18 -13
  83. package/src/core/builder.ts +39 -2
  84. package/src/feature/block-edit/handle/component.tsx +3 -2
  85. package/src/feature/block-edit/menu/component.tsx +3 -2
  86. package/src/feature/block-edit/menu/config.ts +1 -1
  87. package/src/feature/image-block/index.ts +4 -0
  88. package/src/feature/index.ts +6 -0
  89. package/src/feature/latex/inline-tooltip/component.tsx +4 -2
  90. package/src/feature/loader.ts +4 -0
  91. package/src/feature/toolbar/component.tsx +7 -5
  92. package/src/feature/top-bar/component.tsx +198 -0
  93. package/src/feature/top-bar/config.ts +367 -0
  94. package/src/feature/top-bar/index.ts +113 -0
  95. package/src/icons/code-block.ts +12 -0
  96. package/src/icons/index.ts +1 -0
  97. package/src/theme/common/style.css +1 -0
  98. package/src/theme/common/top-bar.css +156 -0
  99. package/src/utils/group-builder.ts +1 -1
  100. package/src/utils/keep-alive.ts +3 -0
@@ -1,7 +1,8 @@
1
1
  import { type DefaultValue, Editor } from '@milkdown/kit/core';
2
2
  import { type ListenerManager } from '@milkdown/kit/plugin/listener';
3
- import type { CrepeFeature, CrepeFeatureConfig } from '../feature';
3
+ import type { CrepeFeatureConfig } from '../feature';
4
4
  import type { DefineFeature } from '../feature/shared';
5
+ import { CrepeFeature } from '../feature';
5
6
  export interface CrepeBuilderConfig {
6
7
  root?: Node | string | null;
7
8
  defaultValue?: DefaultValue;
@@ -1 +1 @@
1
- {"version":3,"file":"builder.d.ts","sourceRoot":"","sources":["../../../src/core/builder.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,YAAY,EAEjB,MAAM,EAKP,MAAM,oBAAoB,CAAA;AAI3B,OAAO,EAGL,KAAK,eAAe,EACrB,MAAM,+BAA+B,CAAA;AAMtC,OAAO,KAAK,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAA;AAClE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAKtD,MAAM,WAAW,kBAAkB;IAIjC,IAAI,CAAC,EAAE,IAAI,GAAG,MAAM,GAAG,IAAI,CAAA;IAG3B,YAAY,CAAC,EAAE,YAAY,CAAA;CAC5B;AAID,qBAAa,YAAY;;gBAYX,EAAE,IAAI,EAAE,YAAiB,EAAE,GAAE,kBAAuB;IA8BhE,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,EAAE,GAAI,IAAI,CAAC,GAAG,EAAE,eAAe,KAAK,IAAI,UAavC;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,oBAAoB,CAAA;AAI3B,OAAO,EAGL,KAAK,eAAe,EACrB,MAAM,+BAA+B,CAAA;AAOtC,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;AAIzC,MAAM,WAAW,kBAAkB;IAIjC,IAAI,CAAC,EAAE,IAAI,GAAG,MAAM,GAAG,IAAI,CAAA;IAG3B,YAAY,CAAC,EAAE,YAAY,CAAA;CAC5B;AAID,qBAAa,YAAY;;gBAYX,EAAE,IAAI,EAAE,YAAiB,EAAE,GAAE,kBAAuB;IAgEhE,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,EAAE,GAAI,IAAI,CAAC,GAAG,EAAE,eAAe,KAAK,IAAI,UAavC;CACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"component.d.ts","sourceRoot":"","sources":["../../../../../src/feature/block-edit/handle/component.tsx"],"names":[],"mappings":"AAMA,UAAU,gBAAgB;IACxB,KAAK,EAAE,MAAM,IAAI,CAAA;IACjB,OAAO,EAAE,MAAM,CAAA;IACf,UAAU,EAAE,MAAM,CAAA;CACnB;AAED,eAAO,MAAM,WAAW,4SA6CtB,CAAA"}
1
+ {"version":3,"file":"component.d.ts","sourceRoot":"","sources":["../../../../../src/feature/block-edit/handle/component.tsx"],"names":[],"mappings":"AAOA,UAAU,gBAAgB;IACxB,KAAK,EAAE,MAAM,IAAI,CAAA;IACjB,OAAO,EAAE,MAAM,CAAA;IACf,UAAU,EAAE,MAAM,CAAA;CACnB;AAED,eAAO,MAAM,WAAW,4SA6CtB,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"component.d.ts","sourceRoot":"","sources":["../../../../../src/feature/block-edit/menu/component.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAA;AAG5C,OAAO,EAOL,KAAK,GAAG,EAET,MAAM,KAAK,CAAA;AAEZ,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,IAAI,CAAA;AAMhD,KAAK,SAAS,GAAG;IACf,GAAG,EAAE,GAAG,CAAA;IACR,IAAI,EAAE,GAAG,CAAC,OAAO,CAAC,CAAA;IAClB,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IACnB,IAAI,EAAE,MAAM,IAAI,CAAA;IAChB,MAAM,CAAC,EAAE,sBAAsB,CAAA;CAChC,CAAA;AAED,eAAO,MAAM,IAAI,8RAgNf,CAAA"}
1
+ {"version":3,"file":"component.d.ts","sourceRoot":"","sources":["../../../../../src/feature/block-edit/menu/component.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAA;AAG5C,OAAO,EAOL,KAAK,GAAG,EAET,MAAM,KAAK,CAAA;AAEZ,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,IAAI,CAAA;AAOhD,KAAK,SAAS,GAAG;IACf,GAAG,EAAE,GAAG,CAAA;IACR,IAAI,EAAE,GAAG,CAAC,OAAO,CAAC,CAAA;IAClB,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IACnB,IAAI,EAAE,MAAM,IAAI,CAAA;IAChB,MAAM,CAAC,EAAE,sBAAsB,CAAA;CAChC,CAAA;AAED,eAAO,MAAM,IAAI,8RAgNf,CAAA"}
@@ -15,6 +15,8 @@ interface ImageBlockConfig {
15
15
  blockUploadPlaceholderText: string;
16
16
  blockOnUpload: (file: File) => Promise<string>;
17
17
  onImageLoadError: (event: Event) => void | Promise<void>;
18
+ maxWidth: number;
19
+ maxHeight: number;
18
20
  }
19
21
  export type ImageBlockFeatureConfig = Partial<ImageBlockConfig>;
20
22
  export declare const imageBlock: DefineFeature<ImageBlockFeatureConfig>;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/feature/image-block/index.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,WAAW,CAAA;AAM9C,UAAU,gBAAgB;IACxB,QAAQ,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC,MAAM,CAAC,CAAA;IACzC,WAAW,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,GAAG,MAAM,CAAA;IAEtD,eAAe,EAAE,MAAM,CAAA;IACvB,mBAAmB,EAAE,MAAM,CAAA;IAC3B,kBAAkB,EAAE,MAAM,CAAA;IAC1B,2BAA2B,EAAE,MAAM,CAAA;IACnC,cAAc,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC,MAAM,CAAC,CAAA;IAE/C,cAAc,EAAE,MAAM,CAAA;IACtB,kBAAkB,EAAE,MAAM,CAAA;IAC1B,gBAAgB,EAAE,MAAM,CAAA;IACxB,iBAAiB,EAAE,MAAM,CAAA;IACzB,2BAA2B,EAAE,MAAM,CAAA;IACnC,0BAA0B,EAAE,MAAM,CAAA;IAClC,aAAa,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC,MAAM,CAAC,CAAA;IAC9C,gBAAgB,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CACzD;AAED,MAAM,MAAM,uBAAuB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAA;AAE/D,eAAO,MAAM,UAAU,EAAE,aAAa,CAAC,uBAAuB,CAgC7D,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/feature/image-block/index.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,WAAW,CAAA;AAM9C,UAAU,gBAAgB;IACxB,QAAQ,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC,MAAM,CAAC,CAAA;IACzC,WAAW,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,GAAG,MAAM,CAAA;IAEtD,eAAe,EAAE,MAAM,CAAA;IACvB,mBAAmB,EAAE,MAAM,CAAA;IAC3B,kBAAkB,EAAE,MAAM,CAAA;IAC1B,2BAA2B,EAAE,MAAM,CAAA;IACnC,cAAc,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC,MAAM,CAAC,CAAA;IAE/C,cAAc,EAAE,MAAM,CAAA;IACtB,kBAAkB,EAAE,MAAM,CAAA;IAC1B,gBAAgB,EAAE,MAAM,CAAA;IACxB,iBAAiB,EAAE,MAAM,CAAA;IACzB,2BAA2B,EAAE,MAAM,CAAA;IACnC,0BAA0B,EAAE,MAAM,CAAA;IAClC,aAAa,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC,MAAM,CAAC,CAAA;IAC9C,gBAAgB,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACxD,QAAQ,EAAE,MAAM,CAAA;IAChB,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,MAAM,uBAAuB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAA;AAE/D,eAAO,MAAM,UAAU,EAAE,aAAa,CAAC,uBAAuB,CAkC7D,CAAA"}
@@ -8,6 +8,7 @@ import type { ListItemFeatureConfig } from './list-item';
8
8
  import type { PlaceholderFeatureConfig } from './placeholder';
9
9
  import type { TableFeatureConfig } from './table';
10
10
  import type { ToolbarFeatureConfig } from './toolbar';
11
+ import type { TopBarFeatureConfig } from './top-bar';
11
12
  export declare enum CrepeFeature {
12
13
  CodeMirror = "code-mirror",
13
14
  ListItem = "list-item",
@@ -18,7 +19,8 @@ export declare enum CrepeFeature {
18
19
  Toolbar = "toolbar",
19
20
  Placeholder = "placeholder",
20
21
  Table = "table",
21
- Latex = "latex"
22
+ Latex = "latex",
23
+ TopBar = "top-bar"
22
24
  }
23
25
  export interface CrepeFeatureConfig {
24
26
  [CrepeFeature.Cursor]?: CursorFeatureConfig;
@@ -31,6 +33,7 @@ export interface CrepeFeatureConfig {
31
33
  [CrepeFeature.CodeMirror]?: CodeMirrorFeatureConfig;
32
34
  [CrepeFeature.Table]?: TableFeatureConfig;
33
35
  [CrepeFeature.Latex]?: LatexFeatureConfig;
36
+ [CrepeFeature.TopBar]?: TopBarFeatureConfig;
34
37
  }
35
38
  export declare const defaultFeatures: Record<CrepeFeature, boolean>;
36
39
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/feature/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAA;AAC1D,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAA;AAC5D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAA;AACnD,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAA;AAC5D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAA;AACjD,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAA;AAC9D,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAA;AACxD,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAA;AAC7D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAA;AACjD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAA;AAKrD,oBAAY,YAAY;IAEtB,UAAU,gBAAgB;IAG1B,QAAQ,cAAc;IAGtB,WAAW,iBAAiB;IAG5B,MAAM,WAAW;IAGjB,UAAU,gBAAgB;IAG1B,SAAS,eAAe;IAGxB,OAAO,YAAY;IAGnB,WAAW,gBAAgB;IAG3B,KAAK,UAAU;IAGf,KAAK,UAAU;CAChB;AAED,MAAM,WAAW,kBAAkB;IACjC,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,EAAE,mBAAmB,CAAA;IAC3C,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,EAAE,qBAAqB,CAAA;IAC/C,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC,EAAE,wBAAwB,CAAA;IACrD,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,EAAE,uBAAuB,CAAA;IACnD,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,EAAE,sBAAsB,CAAA;IACjD,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC,EAAE,wBAAwB,CAAA;IACrD,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,EAAE,oBAAoB,CAAA;IAC7C,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,EAAE,uBAAuB,CAAA;IACnD,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,kBAAkB,CAAA;IACzC,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,kBAAkB,CAAA;CAC1C;AAED,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,YAAY,EAAE,OAAO,CAWzD,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/feature/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAA;AAC1D,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAA;AAC5D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAA;AACnD,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAA;AAC5D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAA;AACjD,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAA;AAC9D,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAA;AACxD,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAA;AAC7D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAA;AACjD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAA;AACrD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAA;AAKpD,oBAAY,YAAY;IAEtB,UAAU,gBAAgB;IAG1B,QAAQ,cAAc;IAGtB,WAAW,iBAAiB;IAG5B,MAAM,WAAW;IAGjB,UAAU,gBAAgB;IAG1B,SAAS,eAAe;IAGxB,OAAO,YAAY;IAGnB,WAAW,gBAAgB;IAG3B,KAAK,UAAU;IAGf,KAAK,UAAU;IAGf,MAAM,YAAY;CACnB;AAED,MAAM,WAAW,kBAAkB;IACjC,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,EAAE,mBAAmB,CAAA;IAC3C,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,EAAE,qBAAqB,CAAA;IAC/C,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC,EAAE,wBAAwB,CAAA;IACrD,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,EAAE,uBAAuB,CAAA;IACnD,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,EAAE,sBAAsB,CAAA;IACjD,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC,EAAE,wBAAwB,CAAA;IACrD,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,EAAE,oBAAoB,CAAA;IAC7C,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,EAAE,uBAAuB,CAAA;IACnD,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,kBAAkB,CAAA;IACzC,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,kBAAkB,CAAA;IACzC,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,EAAE,mBAAmB,CAAA;CAC5C;AAED,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,YAAY,EAAE,OAAO,CAYzD,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"component.d.ts","sourceRoot":"","sources":["../../../../../src/feature/latex/inline-tooltip/component.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AAG1D,OAAO,EAAmB,KAAK,UAAU,EAAoB,MAAM,KAAK,CAAA;AAExE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,IAAI,CAAA;AAErC,KAAK,iBAAiB,GAAG;IACvB,MAAM,EAAE,OAAO,CAAC,WAAW,CAAC,CAAA;IAC5B,SAAS,EAAE,UAAU,CAAC,UAAU,GAAG,IAAI,CAAC,CAAA;IACxC,WAAW,EAAE,UAAU,CAAC,MAAM,IAAI,CAAC,CAAA;CACpC,CAAA;AAID,eAAO,MAAM,YAAY,8SAyCvB,CAAA"}
1
+ {"version":3,"file":"component.d.ts","sourceRoot":"","sources":["../../../../../src/feature/latex/inline-tooltip/component.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AAG1D,OAAO,EAAmB,KAAK,UAAU,EAAoB,MAAM,KAAK,CAAA;AAExE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,IAAI,CAAA;AAMrC,KAAK,iBAAiB,GAAG;IACvB,MAAM,EAAE,OAAO,CAAC,WAAW,CAAC,CAAA;IAC5B,SAAS,EAAE,UAAU,CAAC,UAAU,GAAG,IAAI,CAAC,CAAA;IACxC,WAAW,EAAE,UAAU,CAAC,MAAM,IAAI,CAAC,CAAA;CACpC,CAAA;AAED,eAAO,MAAM,YAAY,8SAyCvB,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../../src/feature/loader.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAMhD,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAQtC,wBAAgB,WAAW,CACzB,OAAO,EAAE,YAAY,EACrB,MAAM,EAAE,MAAM,EACd,MAAM,CAAC,EAAE,KAAK,QAkCf"}
1
+ {"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../../src/feature/loader.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAMhD,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAStC,wBAAgB,WAAW,CACzB,OAAO,EAAE,YAAY,EACrB,MAAM,EAAE,MAAM,EACd,MAAM,CAAC,EAAE,KAAK,QAqCf"}
@@ -1 +1 @@
1
- {"version":3,"file":"component.d.ts","sourceRoot":"","sources":["../../../../src/feature/toolbar/component.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAA;AAC5C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAA;AAK1D,OAAO,EAEL,KAAK,GAAG,EACR,KAAK,UAAU,EAIhB,MAAM,KAAK,CAAA;AAEZ,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,GAAG,CAAA;AAO7C,KAAK,YAAY,GAAG;IAClB,GAAG,EAAE,GAAG,CAAA;IACR,IAAI,EAAE,MAAM,IAAI,CAAA;IAChB,IAAI,EAAE,GAAG,CAAC,OAAO,CAAC,CAAA;IAClB,SAAS,EAAE,UAAU,CAAC,SAAS,CAAC,CAAA;IAChC,MAAM,CAAC,EAAE,oBAAoB,CAAA;CAC9B,CAAA;AAED,eAAO,MAAM,OAAO,oSA2ElB,CAAA"}
1
+ {"version":3,"file":"component.d.ts","sourceRoot":"","sources":["../../../../src/feature/toolbar/component.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAA;AAC5C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAA;AAK1D,OAAO,EAEL,KAAK,GAAG,EACR,KAAK,UAAU,EAIhB,MAAM,KAAK,CAAA;AAEZ,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,GAAG,CAAA;AAO7C,KAAK,YAAY,GAAG;IAClB,GAAG,EAAE,GAAG,CAAA;IACR,IAAI,EAAE,MAAM,IAAI,CAAA;IAChB,IAAI,EAAE,GAAG,CAAC,OAAO,CAAC,CAAA;IAClB,SAAS,EAAE,UAAU,CAAC,SAAS,CAAC,CAAA;IAChC,MAAM,CAAC,EAAE,oBAAoB,CAAA;CAC9B,CAAA;AAED,eAAO,MAAM,OAAO,oSA6ElB,CAAA"}
@@ -10,7 +10,7 @@ export declare function getGroups(config?: ToolbarFeatureConfig, ctx?: Ctx): {
10
10
  items: Omit<{
11
11
  index: number;
12
12
  key: string;
13
- onRun: (ctx: Ctx) => void;
13
+ onRun?: (ctx: Ctx) => void;
14
14
  } & ToolbarItem, "index">[];
15
15
  }[];
16
16
  //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1,11 @@
1
+ import type { Ctx } from '@milkdown/kit/ctx';
2
+ import { type Ref } from 'vue';
3
+ import type { TopBarFeatureConfig } from '.';
4
+ type TopBarProps = {
5
+ ctx: Ctx;
6
+ version: Ref<number>;
7
+ config?: TopBarFeatureConfig;
8
+ };
9
+ export declare const TopBar: import("vue").DefineComponent<TopBarProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<TopBarProps> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
10
+ export {};
11
+ //# sourceMappingURL=component.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"component.d.ts","sourceRoot":"","sources":["../../../../src/feature/top-bar/component.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAA;AAK5C,OAAO,EAEL,KAAK,GAAG,EAQT,MAAM,KAAK,CAAA;AAEZ,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,GAAG,CAAA;AAO5C,KAAK,WAAW,GAAG;IACjB,GAAG,EAAE,GAAG,CAAA;IACR,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IACpB,MAAM,CAAC,EAAE,mBAAmB,CAAA;CAC7B,CAAA;AAED,eAAO,MAAM,MAAM,kSAuKjB,CAAA"}
@@ -0,0 +1,34 @@
1
+ import type { Ctx } from '@milkdown/kit/ctx';
2
+ import type { TopBarFeatureConfig } from '.';
3
+ export interface TopBarSelectorOption {
4
+ label: string;
5
+ onSelect: (ctx: Ctx) => void;
6
+ }
7
+ export interface TopBarSelector {
8
+ options: TopBarSelectorOption[];
9
+ activeLabel: (ctx: Ctx) => string;
10
+ chevronIcon?: string;
11
+ }
12
+ export type TopBarItem = {
13
+ active: (ctx: Ctx) => boolean;
14
+ icon: string;
15
+ selector?: TopBarSelector;
16
+ };
17
+ export type HeadingOption = {
18
+ label: string;
19
+ level: number | null;
20
+ };
21
+ export declare const defaultHeadingOptions: HeadingOption[];
22
+ export declare function getCurrentHeading(ctx: Ctx, options?: HeadingOption[]): HeadingOption;
23
+ export declare function setHeading(ctx: Ctx, level: number | null): void;
24
+ export declare function buildHeadingSelector(headingOptions?: HeadingOption[], chevronIcon?: string): TopBarItem;
25
+ export declare function getGroups(config?: TopBarFeatureConfig, ctx?: Ctx): {
26
+ key: string;
27
+ label: string;
28
+ items: Omit<{
29
+ index: number;
30
+ key: string;
31
+ onRun?: (ctx: Ctx) => void;
32
+ } & TopBarItem, "index">[];
33
+ }[];
34
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../../src/feature/top-bar/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAA;AAmC5C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,GAAG,CAAA;AAuB5C,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,IAAI,CAAA;CAC7B;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,oBAAoB,EAAE,CAAA;IAC/B,WAAW,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,MAAM,CAAA;IACjC,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB;AAED,MAAM,MAAM,UAAU,GAAG;IACvB,MAAM,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,OAAO,CAAA;IAC7B,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,CAAC,EAAE,cAAc,CAAA;CAC1B,CAAA;AAED,MAAM,MAAM,aAAa,GAAG;IAC1B,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;CACrB,CAAA;AAED,eAAO,MAAM,qBAAqB,EAAE,aAAa,EAQhD,CAAA;AAED,wBAAgB,iBAAiB,CAC/B,GAAG,EAAE,GAAG,EACR,OAAO,CAAC,EAAE,aAAa,EAAE,GACxB,aAAa,CAef;AAED,wBAAgB,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,QAYxD;AA0BD,wBAAgB,oBAAoB,CAClC,cAAc,CAAC,EAAE,aAAa,EAAE,EAChC,WAAW,CAAC,EAAE,MAAM,GACnB,UAAU,CAcZ;AAED,wBAAgB,SAAS,CAAC,MAAM,CAAC,EAAE,mBAAmB,EAAE,GAAG,CAAC,EAAE,GAAG;;;;;;;;IAuMhE"}
@@ -0,0 +1,26 @@
1
+ import type { GroupBuilder } from '../../utils';
2
+ import type { DefineFeature } from '../shared';
3
+ import type { HeadingOption, TopBarItem } from './config';
4
+ interface TopBarConfig {
5
+ headingOptions: HeadingOption[];
6
+ boldIcon: string;
7
+ italicIcon: string;
8
+ strikethroughIcon: string;
9
+ codeIcon: string;
10
+ linkIcon: string;
11
+ imageIcon: string;
12
+ tableIcon: string;
13
+ codeBlockIcon: string;
14
+ mathIcon: string;
15
+ quoteIcon: string;
16
+ hrIcon: string;
17
+ bulletListIcon: string;
18
+ orderedListIcon: string;
19
+ taskListIcon: string;
20
+ chevronDownIcon: string;
21
+ buildTopBar: (builder: GroupBuilder<TopBarItem>) => void;
22
+ }
23
+ export type TopBarFeatureConfig = Partial<TopBarConfig>;
24
+ export declare const topBar: DefineFeature<TopBarFeatureConfig>;
25
+ export {};
26
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/feature/top-bar/index.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAC/C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,WAAW,CAAA;AAC9C,OAAO,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA;AAMzD,UAAU,YAAY;IACpB,cAAc,EAAE,aAAa,EAAE,CAAA;IAC/B,QAAQ,EAAE,MAAM,CAAA;IAChB,UAAU,EAAE,MAAM,CAAA;IAClB,iBAAiB,EAAE,MAAM,CAAA;IACzB,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,EAAE,MAAM,CAAA;IAChB,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,aAAa,EAAE,MAAM,CAAA;IACrB,QAAQ,EAAE,MAAM,CAAA;IAChB,SAAS,EAAE,MAAM,CAAA;IACjB,MAAM,EAAE,MAAM,CAAA;IACd,cAAc,EAAE,MAAM,CAAA;IACtB,eAAe,EAAE,MAAM,CAAA;IACvB,YAAY,EAAE,MAAM,CAAA;IACpB,eAAe,EAAE,MAAM,CAAA;IACvB,WAAW,EAAE,CAAC,OAAO,EAAE,YAAY,CAAC,UAAU,CAAC,KAAK,IAAI,CAAA;CACzD;AAED,MAAM,MAAM,mBAAmB,GAAG,OAAO,CAAC,YAAY,CAAC,CAAA;AAkEvD,eAAO,MAAM,MAAM,EAAE,aAAa,CAAC,mBAAmB,CAUrD,CAAA"}
@@ -0,0 +1,2 @@
1
+ export declare const codeBlockIcon = "\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n >\n <path\n d=\"M3 3h18a1 1 0 0 1 1 1v16a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1zm1 2v14h16V5H4zm8 10h6v2h-6v-2zm-3.333-3L5.838 9.172l1.415-1.415L11.495 12l-4.242 4.243-1.415-1.415L8.667 12z\"\n />\n </svg>\n";
2
+ //# sourceMappingURL=code-block.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"code-block.d.ts","sourceRoot":"","sources":["../../../src/icons/code-block.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,aAAa,6VAWzB,CAAA"}
@@ -10,6 +10,7 @@ export * from './check-box-unchecked';
10
10
  export * from './chevron-down';
11
11
  export * from './clear';
12
12
  export * from './code';
13
+ export * from './code-block';
13
14
  export * from './confirm';
14
15
  export * from './copy';
15
16
  export * from './divider';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/icons/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAA;AAC9B,cAAc,cAAc,CAAA;AAC5B,cAAc,eAAe,CAAA;AAC7B,cAAc,QAAQ,CAAA;AACtB,cAAc,UAAU,CAAA;AACxB,cAAc,eAAe,CAAA;AAC7B,cAAc,WAAW,CAAA;AACzB,cAAc,qBAAqB,CAAA;AACnC,cAAc,uBAAuB,CAAA;AACrC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,SAAS,CAAA;AACvB,cAAc,QAAQ,CAAA;AACtB,cAAc,WAAW,CAAA;AACzB,cAAc,QAAQ,CAAA;AACtB,cAAc,WAAW,CAAA;AACzB,cAAc,eAAe,CAAA;AAC7B,cAAc,QAAQ,CAAA;AACtB,cAAc,MAAM,CAAA;AACpB,cAAc,MAAM,CAAA;AACpB,cAAc,MAAM,CAAA;AACpB,cAAc,MAAM,CAAA;AACpB,cAAc,MAAM,CAAA;AACpB,cAAc,MAAM,CAAA;AACpB,cAAc,SAAS,CAAA;AACvB,cAAc,UAAU,CAAA;AACxB,cAAc,QAAQ,CAAA;AACtB,cAAc,QAAQ,CAAA;AACtB,cAAc,gBAAgB,CAAA;AAC9B,cAAc,QAAQ,CAAA;AACtB,cAAc,SAAS,CAAA;AACvB,cAAc,UAAU,CAAA;AACxB,cAAc,UAAU,CAAA;AACxB,cAAc,iBAAiB,CAAA;AAC/B,cAAc,SAAS,CAAA;AACvB,cAAc,QAAQ,CAAA;AACtB,cAAc,aAAa,CAAA;AAC3B,cAAc,aAAa,CAAA;AAC3B,cAAc,kBAAkB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/icons/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAA;AAC9B,cAAc,cAAc,CAAA;AAC5B,cAAc,eAAe,CAAA;AAC7B,cAAc,QAAQ,CAAA;AACtB,cAAc,UAAU,CAAA;AACxB,cAAc,eAAe,CAAA;AAC7B,cAAc,WAAW,CAAA;AACzB,cAAc,qBAAqB,CAAA;AACnC,cAAc,uBAAuB,CAAA;AACrC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,SAAS,CAAA;AACvB,cAAc,QAAQ,CAAA;AACtB,cAAc,cAAc,CAAA;AAC5B,cAAc,WAAW,CAAA;AACzB,cAAc,QAAQ,CAAA;AACtB,cAAc,WAAW,CAAA;AACzB,cAAc,eAAe,CAAA;AAC7B,cAAc,QAAQ,CAAA;AACtB,cAAc,MAAM,CAAA;AACpB,cAAc,MAAM,CAAA;AACpB,cAAc,MAAM,CAAA;AACpB,cAAc,MAAM,CAAA;AACpB,cAAc,MAAM,CAAA;AACpB,cAAc,MAAM,CAAA;AACpB,cAAc,SAAS,CAAA;AACvB,cAAc,UAAU,CAAA;AACxB,cAAc,QAAQ,CAAA;AACtB,cAAc,QAAQ,CAAA;AACtB,cAAc,gBAAgB,CAAA;AAC9B,cAAc,QAAQ,CAAA;AACtB,cAAc,SAAS,CAAA;AACvB,cAAc,UAAU,CAAA;AACxB,cAAc,UAAU,CAAA;AACxB,cAAc,iBAAiB,CAAA;AAC/B,cAAc,SAAS,CAAA;AACvB,cAAc,QAAQ,CAAA;AACtB,cAAc,aAAa,CAAA;AAC3B,cAAc,aAAa,CAAA;AAC3B,cAAc,kBAAkB,CAAA"}
@@ -2,7 +2,7 @@ import type { Ctx } from '@milkdown/kit/ctx';
2
2
  type MenuItem<T> = {
3
3
  index: number;
4
4
  key: string;
5
- onRun: (ctx: Ctx) => void;
5
+ onRun?: (ctx: Ctx) => void;
6
6
  } & T;
7
7
  type WithRange<T, HasIndex extends true | false = true> = HasIndex extends true ? T & {
8
8
  range: [start: number, end: number];
@@ -1 +1 @@
1
- {"version":3,"file":"group-builder.d.ts","sourceRoot":"","sources":["../../../src/utils/group-builder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAA;AAE5C,KAAK,QAAQ,CAAC,CAAC,IAAI;IACjB,KAAK,EAAE,MAAM,CAAA;IACb,GAAG,EAAE,MAAM,CAAA;IACX,KAAK,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,IAAI,CAAA;CAC1B,GAAG,CAAC,CAAA;AAEL,KAAK,SAAS,CAAC,CAAC,EAAE,QAAQ,SAAS,IAAI,GAAG,KAAK,GAAG,IAAI,IAAI,QAAQ,SAAS,IAAI,GAC3E,CAAC,GAAG;IAAE,KAAK,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,CAAA;CAAE,GAC3C,CAAC,CAAA;AAEL,MAAM,MAAM,aAAa,CAAC,CAAC,EAAE,QAAQ,SAAS,IAAI,GAAG,KAAK,GAAG,IAAI,IAAI,SAAS,CAC5E;IACE,GAAG,EAAE,MAAM,CAAA;IACX,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,QAAQ,SAAS,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,CAAA;CAC5E,EACD,QAAQ,CACT,CAAA;AAED,qBAAa,YAAY,CAAC,CAAC;;IAGzB,KAAK,aAGJ;IAkBD,QAAQ,GAAI,KAAK,MAAM,EAAE,OAAO,MAAM;;iBA/B/B,MAAM;mBACJ,MAAM;;;uBAiBI,MAAM,QAAQ,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,KAAK,GAAG,OAAO,CAAC;;MAuBlE;IAED,QAAQ,GAAI,KAAK,MAAM;;iBA3ChB,MAAM;mBACJ,MAAM;;;uBAiBI,MAAM,QAAQ,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,KAAK,GAAG,OAAO,CAAC;;MA8BlE;IAED,KAAK;aAlDE,MAAM;eACJ,MAAM;;QAmDd;CACF"}
1
+ {"version":3,"file":"group-builder.d.ts","sourceRoot":"","sources":["../../../src/utils/group-builder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAA;AAE5C,KAAK,QAAQ,CAAC,CAAC,IAAI;IACjB,KAAK,EAAE,MAAM,CAAA;IACb,GAAG,EAAE,MAAM,CAAA;IACX,KAAK,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,IAAI,CAAA;CAC3B,GAAG,CAAC,CAAA;AAEL,KAAK,SAAS,CAAC,CAAC,EAAE,QAAQ,SAAS,IAAI,GAAG,KAAK,GAAG,IAAI,IAAI,QAAQ,SAAS,IAAI,GAC3E,CAAC,GAAG;IAAE,KAAK,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,CAAA;CAAE,GAC3C,CAAC,CAAA;AAEL,MAAM,MAAM,aAAa,CAAC,CAAC,EAAE,QAAQ,SAAS,IAAI,GAAG,KAAK,GAAG,IAAI,IAAI,SAAS,CAC5E;IACE,GAAG,EAAE,MAAM,CAAA;IACX,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,QAAQ,SAAS,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,CAAA;CAC5E,EACD,QAAQ,CACT,CAAA;AAED,qBAAa,YAAY,CAAC,CAAC;;IAGzB,KAAK,aAGJ;IAkBD,QAAQ,GAAI,KAAK,MAAM,EAAE,OAAO,MAAM;;iBA/B/B,MAAM;mBACJ,MAAM;;;uBAiBI,MAAM,QAAQ,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,KAAK,GAAG,OAAO,CAAC;;MAuBlE;IAED,QAAQ,GAAI,KAAK,MAAM;;iBA3ChB,MAAM;mBACJ,MAAM;;;uBAiBI,MAAM,QAAQ,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,KAAK,GAAG,OAAO,CAAC;;MA8BlE;IAED,KAAK;aAlDE,MAAM;eACJ,MAAM;;QAmDd;CACF"}
@@ -0,0 +1,2 @@
1
+ export declare function keepAlive(..._args: unknown[]): void;
2
+ //# sourceMappingURL=keep-alive.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keep-alive.d.ts","sourceRoot":"","sources":["../../../src/utils/keep-alive.ts"],"names":[],"mappings":"AAEA,wBAAgB,SAAS,CAAC,GAAG,KAAK,EAAE,OAAO,EAAE,QAAI"}
package/package.json CHANGED
@@ -1,20 +1,25 @@
1
1
  {
2
2
  "name": "@milkdown/crepe",
3
- "type": "module",
4
- "version": "7.19.1",
3
+ "version": "7.20.0",
4
+ "keywords": [
5
+ "crepe",
6
+ "editor",
7
+ "milkdown",
8
+ "milkdown plugin"
9
+ ],
5
10
  "license": "MIT",
6
11
  "repository": {
7
12
  "type": "git",
8
13
  "url": "git+https://github.com/Milkdown/milkdown.git",
9
14
  "directory": "packages/crepe"
10
15
  },
11
- "keywords": [
12
- "milkdown",
13
- "milkdown plugin",
14
- "crepe",
15
- "editor"
16
+ "files": [
17
+ "lib",
18
+ "src"
16
19
  ],
20
+ "type": "module",
17
21
  "sideEffects": false,
22
+ "main": "./lib/esm/index.js",
18
23
  "exports": {
19
24
  ".": {
20
25
  "import": "./lib/esm/index.js",
@@ -76,6 +81,11 @@
76
81
  "require": "./lib/cjs/feature/toolbar/index.js",
77
82
  "types": "./lib/types/feature/toolbar/index.d.ts"
78
83
  },
84
+ "./feature/top-bar": {
85
+ "import": "./lib/esm/feature/top-bar/index.js",
86
+ "require": "./lib/cjs/feature/top-bar/index.js",
87
+ "types": "./lib/types/feature/top-bar/index.d.ts"
88
+ },
79
89
  "./theme/common/*": "./lib/theme/common/*",
80
90
  "./theme/classic.css": "./lib/theme/crepe/style.css",
81
91
  "./theme/classic-dark.css": "./lib/theme/crepe-dark/style.css",
@@ -84,11 +94,6 @@
84
94
  "./theme/frame.css": "./lib/theme/frame/style.css",
85
95
  "./theme/frame-dark.css": "./lib/theme/frame-dark/style.css"
86
96
  },
87
- "main": "./lib/esm/index.js",
88
- "files": [
89
- "lib",
90
- "src"
91
- ],
92
97
  "dependencies": {
93
98
  "@codemirror/commands": "^6.2.4",
94
99
  "@codemirror/language": "^6.10.1",
@@ -105,7 +110,7 @@
105
110
  "remark-math": "^6.0.0",
106
111
  "unist-util-visit": "^5.0.0",
107
112
  "vue": "^3.5.20",
108
- "@milkdown/kit": "7.19.1"
113
+ "@milkdown/kit": "7.20.0"
109
114
  },
110
115
  "scripts": {
111
116
  "build": "pnpm run build:es && pnpm run build:theme && echo",
@@ -1,3 +1,4 @@
1
+ import { imageBlockConfig } from '@milkdown/kit/component/image-block'
1
2
  import {
2
3
  type DefaultValue,
3
4
  defaultValueCtx,
@@ -16,14 +17,16 @@ import {
16
17
  type ListenerManager,
17
18
  } from '@milkdown/kit/plugin/listener'
18
19
  import { trailing } from '@milkdown/kit/plugin/trailing'
20
+ import { upload, uploadConfig } from '@milkdown/kit/plugin/upload'
19
21
  import { commonmark } from '@milkdown/kit/preset/commonmark'
20
22
  import { gfm } from '@milkdown/kit/preset/gfm'
21
23
  import { getMarkdown } from '@milkdown/kit/utils'
22
24
 
23
- import type { CrepeFeature, CrepeFeatureConfig } from '../feature'
25
+ import type { CrepeFeatureConfig } from '../feature'
24
26
  import type { DefineFeature } from '../feature/shared'
25
27
 
26
- import { CrepeCtx, FeaturesCtx } from './slice'
28
+ import { CrepeFeature } from '../feature'
29
+ import { CrepeCtx, FeaturesCtx, useCrepeFeatures } from './slice'
27
30
 
28
31
  /// The crepe builder configuration.
29
32
  export interface CrepeBuilderConfig {
@@ -69,6 +72,39 @@ export class CrepeBuilder {
69
72
  ...value,
70
73
  size: 4,
71
74
  }))
75
+ ctx.update(uploadConfig.key, (prev) => ({
76
+ ...prev,
77
+ uploader: async (files, schema, ctx) => {
78
+ const features = useCrepeFeatures(ctx).get()
79
+ const hasImageBlock = features.includes(CrepeFeature.ImageBlock)
80
+ const nodeType = hasImageBlock
81
+ ? schema.nodes['image-block']
82
+ : schema.nodes['image']
83
+
84
+ if (!nodeType) return []
85
+
86
+ const onUpload = hasImageBlock
87
+ ? ctx.get(imageBlockConfig.key).onUpload
88
+ : undefined
89
+
90
+ const images: File[] = []
91
+ for (let i = 0; i < files.length; i++) {
92
+ const file = files.item(i)
93
+ if (file && file.type.includes('image')) images.push(file)
94
+ }
95
+
96
+ const nodes = await Promise.all(
97
+ images.map(async (file) => {
98
+ const src = onUpload
99
+ ? await onUpload(file)
100
+ : URL.createObjectURL(file)
101
+ return nodeType.createAndFill({ src })!
102
+ })
103
+ )
104
+
105
+ return nodes
106
+ },
107
+ }))
72
108
  })
73
109
  .use(commonmark)
74
110
  .use(listener)
@@ -76,6 +112,7 @@ export class CrepeBuilder {
76
112
  .use(indent)
77
113
  .use(trailing)
78
114
  .use(clipboard)
115
+ .use(upload)
79
116
  .use(gfm)
80
117
  }
81
118
 
@@ -1,8 +1,9 @@
1
1
  import { Icon } from '@milkdown/kit/component'
2
2
  import { defineComponent, ref, h, Fragment } from 'vue'
3
3
 
4
- h
5
- Fragment
4
+ import { keepAlive } from '../../../utils/keep-alive'
5
+
6
+ keepAlive(h, Fragment)
6
7
 
7
8
  interface BlockHandleProps {
8
9
  onAdd: () => void
@@ -14,9 +14,10 @@ import {
14
14
 
15
15
  import type { BlockEditFeatureConfig } from '..'
16
16
 
17
+ import { keepAlive } from '../../../utils/keep-alive'
17
18
  import { getGroups } from './config'
18
19
 
19
- h
20
+ keepAlive(h)
20
21
 
21
22
  type MenuProps = {
22
23
  ctx: Ctx
@@ -91,7 +92,7 @@ export const Menu = defineComponent<MenuProps>({
91
92
  const item = groupInfo.value.groups
92
93
  .flatMap((group) => group.items)
93
94
  .at(index)
94
- if (item && ctx) item.onRun(ctx)
95
+ if (item?.onRun && ctx) item.onRun(ctx)
95
96
 
96
97
  hide()
97
98
  }
@@ -350,7 +350,7 @@ export function getGroups(
350
350
  commands.call(clearTextInCurrentBlockCommand.key)
351
351
  commands.call(addBlockTypeCommand.key, {
352
352
  nodeType: codeBlock,
353
- attrs: { language: 'LaTex' },
353
+ attrs: { language: 'LaTeX' },
354
354
  })
355
355
  },
356
356
  })
@@ -31,6 +31,8 @@ interface ImageBlockConfig {
31
31
  blockUploadPlaceholderText: string
32
32
  blockOnUpload: (file: File) => Promise<string>
33
33
  onImageLoadError: (event: Event) => void | Promise<void>
34
+ maxWidth: number
35
+ maxHeight: number
34
36
  }
35
37
 
36
38
  export type ImageBlockFeatureConfig = Partial<ImageBlockConfig>
@@ -63,6 +65,8 @@ export const imageBlock: DefineFeature<ImageBlockFeatureConfig> = (
63
65
  onUpload: config?.blockOnUpload ?? config?.onUpload ?? value.onUpload,
64
66
  proxyDomURL: config?.proxyDomURL,
65
67
  onImageLoadError: config?.onImageLoadError ?? value.onImageLoadError,
68
+ maxWidth: config?.maxWidth,
69
+ maxHeight: config?.maxHeight,
66
70
  }))
67
71
  })
68
72
  .use(imageBlockComponent)
@@ -8,6 +8,7 @@ import type { ListItemFeatureConfig } from './list-item'
8
8
  import type { PlaceholderFeatureConfig } from './placeholder'
9
9
  import type { TableFeatureConfig } from './table'
10
10
  import type { ToolbarFeatureConfig } from './toolbar'
11
+ import type { TopBarFeatureConfig } from './top-bar'
11
12
 
12
13
  /// The crepe editor feature flags.
13
14
  /// Every feature is enabled by default.
@@ -42,6 +43,9 @@ export enum CrepeFeature {
42
43
 
43
44
  /// Mathematical formula support with both inline and block math rendering using KaTeX.
44
45
  Latex = 'latex',
46
+
47
+ /// Fixed top toolbar with heading selector, formatting buttons, insert actions, and block commands.
48
+ TopBar = 'top-bar',
45
49
  }
46
50
 
47
51
  export interface CrepeFeatureConfig {
@@ -55,6 +59,7 @@ export interface CrepeFeatureConfig {
55
59
  [CrepeFeature.CodeMirror]?: CodeMirrorFeatureConfig
56
60
  [CrepeFeature.Table]?: TableFeatureConfig
57
61
  [CrepeFeature.Latex]?: LatexFeatureConfig
62
+ [CrepeFeature.TopBar]?: TopBarFeatureConfig
58
63
  }
59
64
 
60
65
  export const defaultFeatures: Record<CrepeFeature, boolean> = {
@@ -68,4 +73,5 @@ export const defaultFeatures: Record<CrepeFeature, boolean> = {
68
73
  [CrepeFeature.CodeMirror]: true,
69
74
  [CrepeFeature.Table]: true,
70
75
  [CrepeFeature.Latex]: true,
76
+ [CrepeFeature.TopBar]: false,
71
77
  }
@@ -5,14 +5,16 @@ import { defineComponent, type ShallowRef, type VNodeRef, h } from 'vue'
5
5
 
6
6
  import type { LatexConfig } from '..'
7
7
 
8
+ import { keepAlive } from '../../../utils/keep-alive'
9
+
10
+ keepAlive(h)
11
+
8
12
  type LatexTooltipProps = {
9
13
  config: Partial<LatexConfig>
10
14
  innerView: ShallowRef<EditorView | null>
11
15
  updateValue: ShallowRef<() => void>
12
16
  }
13
17
 
14
- h
15
-
16
18
  export const LatexTooltip = defineComponent<LatexTooltipProps>({
17
19
  props: {
18
20
  config: {
@@ -11,6 +11,7 @@ import { listItem } from './list-item'
11
11
  import { placeholder } from './placeholder'
12
12
  import { table } from './table'
13
13
  import { toolbar } from './toolbar'
14
+ import { topBar } from './top-bar'
14
15
 
15
16
  export function loadFeature(
16
17
  feature: CrepeFeature,
@@ -48,5 +49,8 @@ export function loadFeature(
48
49
  case CrepeFeature.Latex: {
49
50
  return latex(editor, config)
50
51
  }
52
+ case CrepeFeature.TopBar: {
53
+ return topBar(editor, config)
54
+ }
51
55
  }
52
56
  }
@@ -15,10 +15,10 @@ import {
15
15
 
16
16
  import type { ToolbarFeatureConfig } from '.'
17
17
 
18
+ import { keepAlive } from '../../utils/keep-alive'
18
19
  import { getGroups, type ToolbarItem } from './config'
19
20
 
20
- h
21
- Fragment
21
+ keepAlive(h, Fragment)
22
22
 
23
23
  type ToolbarProps = {
24
24
  ctx: Ctx
@@ -54,14 +54,16 @@ export const Toolbar = defineComponent<ToolbarProps>({
54
54
  setup(props) {
55
55
  const { ctx, config } = props
56
56
 
57
- const onClick = (fn: (ctx: Ctx) => void) => (e: MouseEvent) => {
57
+ const onClick = (fn?: (ctx: Ctx) => void) => (e: MouseEvent) => {
58
58
  e.preventDefault()
59
- ctx && fn(ctx)
59
+ if (ctx) {
60
+ fn?.(ctx)
61
+ }
60
62
  }
61
63
 
62
64
  function checkActive(checker: ToolbarItem['active']) {
63
65
  // make sure the function subscribed to vue reactive
64
- props.selection.value
66
+ keepAlive(props.selection.value)
65
67
  // Check if the edtior is ready
66
68
  const status = ctx.get(editorCtx).status
67
69
  if (status !== EditorStatus.Created) return false