@milkdown/crepe 7.5.5 → 7.5.7

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 (49) hide show
  1. package/lib/cjs/{index-rLAgJeYn.js → index-9Lsv_-NW.js} +2 -2
  2. package/lib/cjs/{index-rLAgJeYn.js.map → index-9Lsv_-NW.js.map} +1 -1
  3. package/lib/cjs/{index-fhKBUFkq.js → index-HAz9lsCD.js} +4 -4
  4. package/lib/cjs/index-HAz9lsCD.js.map +1 -0
  5. package/lib/cjs/{index-N1cRxqdw.js → index-KeJUBENN.js} +2 -2
  6. package/lib/cjs/{index-N1cRxqdw.js.map → index-KeJUBENN.js.map} +1 -1
  7. package/lib/cjs/{index-tlx25I_m.js → index-MLK151KV.js} +2 -2
  8. package/lib/cjs/{index-tlx25I_m.js.map → index-MLK151KV.js.map} +1 -1
  9. package/lib/cjs/{index-dEVmN_aj.js → index-YoPS8A3_.js} +3 -3
  10. package/lib/cjs/{index-dEVmN_aj.js.map → index-YoPS8A3_.js.map} +1 -1
  11. package/lib/cjs/{index-nIbM7LVc.js → index-vNNxr8yy.js} +2 -2
  12. package/lib/cjs/{index-nIbM7LVc.js.map → index-vNNxr8yy.js.map} +1 -1
  13. package/lib/cjs/{index-TGmNEvsj.js → index-wORIFtqa.js} +2 -2
  14. package/lib/cjs/{index-TGmNEvsj.js.map → index-wORIFtqa.js.map} +1 -1
  15. package/lib/cjs/index.js +7 -7
  16. package/lib/cjs/{todoList-YYRQo7wG.js → todoList-Qb2JsRGC.js} +16 -1
  17. package/lib/cjs/todoList-Qb2JsRGC.js.map +1 -0
  18. package/lib/esm/{index-fVrfHXda.js → index-HHuxH8Dm.js} +3 -3
  19. package/lib/esm/{index-fVrfHXda.js.map → index-HHuxH8Dm.js.map} +1 -1
  20. package/lib/esm/{index-jU_6odT9.js → index-I5dm1KsK.js} +4 -4
  21. package/lib/esm/index-I5dm1KsK.js.map +1 -0
  22. package/lib/esm/{index-amuALmzU.js → index-J3c6JQEf.js} +2 -2
  23. package/lib/esm/{index-amuALmzU.js.map → index-J3c6JQEf.js.map} +1 -1
  24. package/lib/esm/{index-HlPKwzLC.js → index-X2mjLDJS.js} +2 -2
  25. package/lib/esm/{index-HlPKwzLC.js.map → index-X2mjLDJS.js.map} +1 -1
  26. package/lib/esm/{index-w69wbtEZ.js → index-eZXAY3yz.js} +2 -2
  27. package/lib/esm/{index-w69wbtEZ.js.map → index-eZXAY3yz.js.map} +1 -1
  28. package/lib/esm/{index-yx-xjH7x.js → index-sE0tYrbc.js} +2 -2
  29. package/lib/esm/{index-yx-xjH7x.js.map → index-sE0tYrbc.js.map} +1 -1
  30. package/lib/esm/{index-ohmbt6Ys.js → index-uThMsyF6.js} +2 -2
  31. package/lib/esm/{index-ohmbt6Ys.js.map → index-uThMsyF6.js.map} +1 -1
  32. package/lib/esm/index.js +7 -7
  33. package/lib/esm/{todoList-9QsDDcmB.js → todoList-eAxCDaQj.js} +16 -2
  34. package/lib/esm/todoList-eAxCDaQj.js.map +1 -0
  35. package/lib/theme/common/link-tooltip.css +4 -0
  36. package/lib/types/icons/copy.d.ts +2 -0
  37. package/lib/types/icons/copy.d.ts.map +1 -0
  38. package/lib/types/icons/index.d.ts +1 -0
  39. package/lib/types/icons/index.d.ts.map +1 -1
  40. package/package.json +2 -2
  41. package/src/feature/code-mirror/index.ts +2 -2
  42. package/src/feature/link-tooltip/index.ts +2 -2
  43. package/src/icons/copy.ts +15 -0
  44. package/src/icons/index.ts +1 -0
  45. package/src/theme/common/link-tooltip.css +4 -0
  46. package/lib/cjs/index-fhKBUFkq.js.map +0 -1
  47. package/lib/cjs/todoList-YYRQo7wG.js.map +0 -1
  48. package/lib/esm/index-jU_6odT9.js.map +0 -1
  49. package/lib/esm/todoList-9QsDDcmB.js.map +0 -1
@@ -3,7 +3,7 @@
3
3
  var listItemBlock = require('@milkdown/kit/component/list-item-block');
4
4
  var atomico = require('atomico');
5
5
  var clsx = require('clsx');
6
- var todoList = require('./todoList-YYRQo7wG.js');
6
+ var todoList = require('./todoList-Qb2JsRGC.js');
7
7
 
8
8
  function configureListItem(ctx, config) {
9
9
  ctx.set(listItemBlock.listItemBlockConfig.key, {
@@ -25,4 +25,4 @@ const defineFeature = (editor, config) => {
25
25
  };
26
26
 
27
27
  exports.defineFeature = defineFeature;
28
- //# sourceMappingURL=index-rLAgJeYn.js.map
28
+ //# sourceMappingURL=index-9Lsv_-NW.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index-rLAgJeYn.js","sources":["../../src/feature/list-item/index.ts"],"sourcesContent":["import type { Ctx } from '@milkdown/kit/ctx'\nimport { listItemBlockComponent, listItemBlockConfig } from '@milkdown/kit/component/list-item-block'\nimport { html } from 'atomico'\nimport clsx from 'clsx'\nimport type { DefineFeature, Icon } from '../shared'\nimport { bulletIcon, checkBoxCheckedIcon, checkBoxUncheckedIcon } from '../../icons'\n\nexport interface ListItemConfig {\n bulletIcon: Icon\n checkBoxCheckedIcon: Icon\n checkBoxUncheckedIcon: Icon\n}\n\nexport type ListItemFeatureConfig = Partial<ListItemConfig>\n\nfunction configureListItem(ctx: Ctx, config?: ListItemFeatureConfig) {\n ctx.set(listItemBlockConfig.key, {\n renderLabel: ({ label, listType, checked, readonly }) => {\n if (checked == null) {\n if (listType === 'bullet')\n return html`<span class='label'>${config?.bulletIcon?.() ?? bulletIcon}</span>`\n\n return html`<span class='label'>${label}</span>`\n }\n\n if (checked)\n return html`<span class=${clsx('label checkbox', readonly && 'readonly')}>${config?.checkBoxCheckedIcon?.() ?? checkBoxCheckedIcon}</span>`\n\n return html`<span class=${clsx('label checkbox', readonly && 'readonly')}>${config?.checkBoxUncheckedIcon?.() ?? checkBoxUncheckedIcon}</span>`\n },\n })\n}\n\nexport const defineFeature: DefineFeature<ListItemFeatureConfig> = (editor, config) => {\n editor\n .config(ctx => configureListItem(ctx, config))\n .use(listItemBlockComponent)\n}\n"],"names":["listItemBlockConfig","html","bulletIcon","checkBoxCheckedIcon","checkBoxUncheckedIcon","listItemBlockComponent"],"mappings":";;;;;;;AAeA,SAAS,iBAAA,CAAkB,KAAU,MAAgC,EAAA;AACnE,EAAI,GAAA,CAAA,GAAA,CAAIA,kCAAoB,GAAK,EAAA;AAAA,IAC/B,aAAa,CAAC,EAAE,OAAO,QAAU,EAAA,OAAA,EAAS,UAAe,KAAA;AAjB7D,MAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,CAAA;AAkBM,MAAA,IAAI,WAAW,IAAM,EAAA;AACnB,QAAA,IAAI,QAAa,KAAA,QAAA;AACf,UAAA,OAAOC,YAA2B,CAAA,oBAAA,EAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,MAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,MAAA,CAAQ,UAAR,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAA,CAAA,MAAA,CAAA,KAAA,IAAA,GAAA,EAAA,GAA0BC,mBAAU,CAAA,OAAA,CAAA,CAAA;AAExE,QAAA,OAAOD,mCAA2B,KAAK,CAAA,OAAA,CAAA,CAAA;AAAA,OACzC;AAEA,MAAI,IAAA,OAAA;AACF,QAAO,OAAAA,YAAA,CAAA,YAAA,EAAmB,IAAK,CAAA,gBAAA,EAAkB,QAAY,IAAA,UAAU,CAAC,CAAI,CAAA,EAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,MAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,MAAA,CAAQ,mBAAR,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAA,CAAA,MAAA,CAAA,KAAA,IAAA,GAAA,EAAA,GAAmCE,4BAAmB,CAAA,OAAA,CAAA,CAAA;AAEpI,MAAO,OAAAF,YAAA,CAAA,YAAA,EAAmB,IAAK,CAAA,gBAAA,EAAkB,QAAY,IAAA,UAAU,CAAC,CAAI,CAAA,EAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,MAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,MAAA,CAAQ,qBAAR,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAA,CAAA,MAAA,CAAA,KAAA,IAAA,GAAA,EAAA,GAAqCG,8BAAqB,CAAA,OAAA,CAAA,CAAA;AAAA,KACxI;AAAA,GACD,CAAA,CAAA;AACH,CAAA;AAEa,MAAA,aAAA,GAAsD,CAAC,MAAA,EAAQ,MAAW,KAAA;AACrF,EACG,MAAA,CAAA,MAAA,CAAO,SAAO,iBAAkB,CAAA,GAAA,EAAK,MAAM,CAAC,CAAA,CAC5C,IAAIC,oCAAsB,CAAA,CAAA;AAC/B;;;;"}
1
+ {"version":3,"file":"index-9Lsv_-NW.js","sources":["../../src/feature/list-item/index.ts"],"sourcesContent":["import type { Ctx } from '@milkdown/kit/ctx'\nimport { listItemBlockComponent, listItemBlockConfig } from '@milkdown/kit/component/list-item-block'\nimport { html } from 'atomico'\nimport clsx from 'clsx'\nimport type { DefineFeature, Icon } from '../shared'\nimport { bulletIcon, checkBoxCheckedIcon, checkBoxUncheckedIcon } from '../../icons'\n\nexport interface ListItemConfig {\n bulletIcon: Icon\n checkBoxCheckedIcon: Icon\n checkBoxUncheckedIcon: Icon\n}\n\nexport type ListItemFeatureConfig = Partial<ListItemConfig>\n\nfunction configureListItem(ctx: Ctx, config?: ListItemFeatureConfig) {\n ctx.set(listItemBlockConfig.key, {\n renderLabel: ({ label, listType, checked, readonly }) => {\n if (checked == null) {\n if (listType === 'bullet')\n return html`<span class='label'>${config?.bulletIcon?.() ?? bulletIcon}</span>`\n\n return html`<span class='label'>${label}</span>`\n }\n\n if (checked)\n return html`<span class=${clsx('label checkbox', readonly && 'readonly')}>${config?.checkBoxCheckedIcon?.() ?? checkBoxCheckedIcon}</span>`\n\n return html`<span class=${clsx('label checkbox', readonly && 'readonly')}>${config?.checkBoxUncheckedIcon?.() ?? checkBoxUncheckedIcon}</span>`\n },\n })\n}\n\nexport const defineFeature: DefineFeature<ListItemFeatureConfig> = (editor, config) => {\n editor\n .config(ctx => configureListItem(ctx, config))\n .use(listItemBlockComponent)\n}\n"],"names":["listItemBlockConfig","html","bulletIcon","checkBoxCheckedIcon","checkBoxUncheckedIcon","listItemBlockComponent"],"mappings":";;;;;;;AAeA,SAAS,iBAAA,CAAkB,KAAU,MAAgC,EAAA;AACnE,EAAI,GAAA,CAAA,GAAA,CAAIA,kCAAoB,GAAK,EAAA;AAAA,IAC/B,aAAa,CAAC,EAAE,OAAO,QAAU,EAAA,OAAA,EAAS,UAAe,KAAA;AAjB7D,MAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,CAAA;AAkBM,MAAA,IAAI,WAAW,IAAM,EAAA;AACnB,QAAA,IAAI,QAAa,KAAA,QAAA;AACf,UAAA,OAAOC,YAA2B,CAAA,oBAAA,EAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,MAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,MAAA,CAAQ,UAAR,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAA,CAAA,MAAA,CAAA,KAAA,IAAA,GAAA,EAAA,GAA0BC,mBAAU,CAAA,OAAA,CAAA,CAAA;AAExE,QAAA,OAAOD,mCAA2B,KAAK,CAAA,OAAA,CAAA,CAAA;AAAA,OACzC;AAEA,MAAI,IAAA,OAAA;AACF,QAAO,OAAAA,YAAA,CAAA,YAAA,EAAmB,IAAK,CAAA,gBAAA,EAAkB,QAAY,IAAA,UAAU,CAAC,CAAI,CAAA,EAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,MAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,MAAA,CAAQ,mBAAR,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAA,CAAA,MAAA,CAAA,KAAA,IAAA,GAAA,EAAA,GAAmCE,4BAAmB,CAAA,OAAA,CAAA,CAAA;AAEpI,MAAO,OAAAF,YAAA,CAAA,YAAA,EAAmB,IAAK,CAAA,gBAAA,EAAkB,QAAY,IAAA,UAAU,CAAC,CAAI,CAAA,EAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,MAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,MAAA,CAAQ,qBAAR,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAA,CAAA,MAAA,CAAA,KAAA,IAAA,GAAA,EAAA,GAAqCG,8BAAqB,CAAA,OAAA,CAAA,CAAA;AAAA,KACxI;AAAA,GACD,CAAA,CAAA;AACH,CAAA;AAEa,MAAA,aAAA,GAAsD,CAAC,MAAA,EAAQ,MAAW,KAAA;AACrF,EACG,MAAA,CAAA,MAAA,CAAO,SAAO,iBAAkB,CAAA,GAAA,EAAK,MAAM,CAAC,CAAA,CAC5C,IAAIC,oCAAsB,CAAA,CAAA;AAC/B;;;;"}
@@ -4,7 +4,7 @@ var codeBlock = require('@milkdown/kit/component/code-block');
4
4
  var codemirror = require('codemirror');
5
5
  var view = require('@codemirror/view');
6
6
  var commands = require('@codemirror/commands');
7
- var todoList = require('./todoList-YYRQo7wG.js');
7
+ var todoList = require('./todoList-Qb2JsRGC.js');
8
8
  require('atomico');
9
9
 
10
10
  const defineFeature = (editor, config = {}) => {
@@ -18,8 +18,8 @@ const defineFeature = (editor, config = {}) => {
18
18
  languages = langList;
19
19
  }
20
20
  if (!theme) {
21
- const { nord } = await import('@uiw/codemirror-theme-nord');
22
- theme = nord;
21
+ const { oneDark } = await import('@codemirror/theme-one-dark');
22
+ theme = oneDark;
23
23
  }
24
24
  ctx.update(codeBlock.codeBlockConfig.key, (defaultConfig) => {
25
25
  var _a;
@@ -43,4 +43,4 @@ const defineFeature = (editor, config = {}) => {
43
43
  };
44
44
 
45
45
  exports.defineFeature = defineFeature;
46
- //# sourceMappingURL=index-fhKBUFkq.js.map
46
+ //# sourceMappingURL=index-HAz9lsCD.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-HAz9lsCD.js","sources":["../../src/feature/code-mirror/index.ts"],"sourcesContent":["import { codeBlockComponent, codeBlockConfig } from '@milkdown/kit/component/code-block'\nimport type { LanguageDescription } from '@codemirror/language'\nimport type { Extension } from '@codemirror/state'\nimport { basicSetup } from 'codemirror'\nimport { keymap } from '@codemirror/view'\nimport { defaultKeymap, indentWithTab } from '@codemirror/commands'\nimport type { html } from 'atomico'\nimport type { DefineFeature, Icon } from '../shared'\nimport { chevronDownIcon, clearIcon, searchIcon } from '../../icons'\n\ninterface CodeMirrorConfig {\n extensions: Extension[]\n languages: LanguageDescription[]\n theme: Extension\n\n expandIcon: Icon\n searchIcon: Icon\n clearSearchIcon: Icon\n\n searchPlaceholder: string\n noResultText: string\n\n renderLanguage: (language: string, selected: boolean) => ReturnType<typeof html> | string | HTMLElement\n}\nexport type CodeMirrorFeatureConfig = Partial<CodeMirrorConfig>\n\nexport const defineFeature: DefineFeature<CodeMirrorFeatureConfig> = (editor, config = {}) => {\n editor\n .config(async (ctx) => {\n let {\n languages,\n theme,\n } = config\n if (!languages) {\n const { languages: langList } = await import('@codemirror/language-data')\n languages = langList\n }\n if (!theme) {\n const { oneDark } = await import('@codemirror/theme-one-dark')\n theme = oneDark\n }\n ctx.update(codeBlockConfig.key, defaultConfig => ({\n extensions: [\n keymap.of(defaultKeymap.concat(indentWithTab)),\n basicSetup,\n theme,\n ...config?.extensions ?? [],\n ],\n languages,\n\n expandIcon: config.expandIcon || (() => chevronDownIcon),\n searchIcon: config.searchIcon || (() => searchIcon),\n clearSearchIcon: config.clearSearchIcon || (() => clearIcon),\n searchPlaceholder: config.searchPlaceholder || 'Search language',\n noResultText: config.noResultText || 'No result',\n renderLanguage: config.renderLanguage || defaultConfig.renderLanguage,\n }))\n })\n .use(codeBlockComponent)\n}\n"],"names":["codeBlockConfig","keymap","defaultKeymap","indentWithTab","basicSetup","chevronDownIcon","searchIcon","clearIcon","codeBlockComponent"],"mappings":";;;;;;;;;AA0BO,MAAM,aAAwD,GAAA,CAAC,MAAQ,EAAA,MAAA,GAAS,EAAO,KAAA;AAC5F,EACG,MAAA,CAAA,MAAA,CAAO,OAAO,GAAQ,KAAA;AACrB,IAAI,IAAA;AAAA,MACF,SAAA;AAAA,MACA,KAAA;AAAA,KACE,GAAA,MAAA,CAAA;AACJ,IAAA,IAAI,CAAC,SAAW,EAAA;AACd,MAAA,MAAM,EAAE,SAAW,EAAA,QAAA,EAAa,GAAA,MAAM,OAAO,2BAA2B,CAAA,CAAA;AACxE,MAAY,SAAA,GAAA,QAAA,CAAA;AAAA,KACd;AACA,IAAA,IAAI,CAAC,KAAO,EAAA;AACV,MAAA,MAAM,EAAE,OAAA,EAAY,GAAA,MAAM,OAAO,4BAA4B,CAAA,CAAA;AAC7D,MAAQ,KAAA,GAAA,OAAA,CAAA;AAAA,KACV;AACA,IAAI,GAAA,CAAA,MAAA,CAAOA,yBAAgB,CAAA,GAAA,EAAK,CAAc,aAAA,KAAA;AAzCpD,MAAA,IAAA,EAAA,CAAA;AAyCwD,MAAA,OAAA;AAAA,QAChD,UAAY,EAAA;AAAA,UACVC,WAAO,CAAA,EAAA,CAAGC,sBAAc,CAAA,MAAA,CAAOC,sBAAa,CAAC,CAAA;AAAA,UAC7CC,qBAAA;AAAA,UACA,KAAA;AAAA,UACA,GAAG,CAAA,EAAA,GAAA,MAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,MAAA,CAAQ,UAAR,KAAA,IAAA,GAAA,EAAA,GAAsB,EAAC;AAAA,SAC5B;AAAA,QACA,SAAA;AAAA,QAEA,UAAA,EAAY,MAAO,CAAA,UAAA,KAAe,MAAMC,wBAAA,CAAA;AAAA,QACxC,UAAA,EAAY,MAAO,CAAA,UAAA,KAAe,MAAMC,mBAAA,CAAA;AAAA,QACxC,eAAA,EAAiB,MAAO,CAAA,eAAA,KAAoB,MAAMC,kBAAA,CAAA;AAAA,QAClD,iBAAA,EAAmB,OAAO,iBAAqB,IAAA,iBAAA;AAAA,QAC/C,YAAA,EAAc,OAAO,YAAgB,IAAA,WAAA;AAAA,QACrC,cAAA,EAAgB,MAAO,CAAA,cAAA,IAAkB,aAAc,CAAA,cAAA;AAAA,OACzD,CAAA;AAAA,KAAE,CAAA,CAAA;AAAA,GACH,CACA,CAAA,GAAA,CAAIC,4BAAkB,CAAA,CAAA;AAC3B;;;;"}
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
3
  var tableBlock = require('@milkdown/kit/component/table-block');
4
- var todoList = require('./todoList-YYRQo7wG.js');
4
+ var todoList = require('./todoList-Qb2JsRGC.js');
5
5
  require('atomico');
6
6
 
7
7
  const defineFeature = (editor, config) => {
@@ -36,4 +36,4 @@ const defineFeature = (editor, config) => {
36
36
  };
37
37
 
38
38
  exports.defineFeature = defineFeature;
39
- //# sourceMappingURL=index-N1cRxqdw.js.map
39
+ //# sourceMappingURL=index-KeJUBENN.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index-N1cRxqdw.js","sources":["../../src/feature/table/index.ts"],"sourcesContent":["import { tableBlock, tableBlockConfig } from '@milkdown/kit/component/table-block'\nimport type { DefineFeature, Icon } from '../shared'\nimport {\n alignCenterIcon,\n alignLeftIcon,\n alignRightIcon,\n dragHandleIcon,\n plusIcon,\n removeIcon,\n} from '../../icons'\n\ninterface TableConfig {\n addRowIcon: Icon\n addColIcon: Icon\n deleteRowIcon: Icon\n deleteColIcon: Icon\n alignLeftIcon: Icon\n alignCenterIcon: Icon\n alignRightIcon: Icon\n colDragHandleIcon: Icon\n rowDragHandleIcon: Icon\n}\n\nexport type TableFeatureConfig = Partial<TableConfig>\n\nexport const defineFeature: DefineFeature<TableFeatureConfig> = (editor, config) => {\n editor.config((ctx) => {\n ctx.update(tableBlockConfig.key, defaultConfig => ({\n ...defaultConfig,\n renderButton: (renderType) => {\n switch (renderType) {\n case 'add_row':\n return config?.addRowIcon?.() ?? plusIcon\n case 'add_col':\n return config?.addColIcon?.() ?? plusIcon\n case 'delete_row':\n return config?.deleteRowIcon?.() ?? removeIcon\n case 'delete_col':\n return config?.deleteColIcon?.() ?? removeIcon\n case 'align_col_left':\n return config?.alignLeftIcon?.() ?? alignLeftIcon\n case 'align_col_center':\n return config?.alignCenterIcon?.() ?? alignCenterIcon\n case 'align_col_right':\n return config?.alignRightIcon?.() ?? alignRightIcon\n case 'col_drag_handle':\n return config?.colDragHandleIcon?.() ?? dragHandleIcon\n case 'row_drag_handle':\n return config?.rowDragHandleIcon?.() ?? dragHandleIcon\n }\n },\n }))\n }).use(tableBlock)\n}\n"],"names":["tableBlockConfig","plusIcon","removeIcon","alignLeftIcon","alignCenterIcon","alignRightIcon","dragHandleIcon","tableBlock"],"mappings":"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"}
1
+ {"version":3,"file":"index-KeJUBENN.js","sources":["../../src/feature/table/index.ts"],"sourcesContent":["import { tableBlock, tableBlockConfig } from '@milkdown/kit/component/table-block'\nimport type { DefineFeature, Icon } from '../shared'\nimport {\n alignCenterIcon,\n alignLeftIcon,\n alignRightIcon,\n dragHandleIcon,\n plusIcon,\n removeIcon,\n} from '../../icons'\n\ninterface TableConfig {\n addRowIcon: Icon\n addColIcon: Icon\n deleteRowIcon: Icon\n deleteColIcon: Icon\n alignLeftIcon: Icon\n alignCenterIcon: Icon\n alignRightIcon: Icon\n colDragHandleIcon: Icon\n rowDragHandleIcon: Icon\n}\n\nexport type TableFeatureConfig = Partial<TableConfig>\n\nexport const defineFeature: DefineFeature<TableFeatureConfig> = (editor, config) => {\n editor.config((ctx) => {\n ctx.update(tableBlockConfig.key, defaultConfig => ({\n ...defaultConfig,\n renderButton: (renderType) => {\n switch (renderType) {\n case 'add_row':\n return config?.addRowIcon?.() ?? plusIcon\n case 'add_col':\n return config?.addColIcon?.() ?? plusIcon\n case 'delete_row':\n return config?.deleteRowIcon?.() ?? removeIcon\n case 'delete_col':\n return config?.deleteColIcon?.() ?? removeIcon\n case 'align_col_left':\n return config?.alignLeftIcon?.() ?? alignLeftIcon\n case 'align_col_center':\n return config?.alignCenterIcon?.() ?? alignCenterIcon\n case 'align_col_right':\n return config?.alignRightIcon?.() ?? alignRightIcon\n case 'col_drag_handle':\n return config?.colDragHandleIcon?.() ?? dragHandleIcon\n case 'row_drag_handle':\n return config?.rowDragHandleIcon?.() ?? dragHandleIcon\n }\n },\n }))\n }).use(tableBlock)\n}\n"],"names":["tableBlockConfig","plusIcon","removeIcon","alignLeftIcon","alignCenterIcon","alignRightIcon","dragHandleIcon","tableBlock"],"mappings":"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"}
@@ -2,7 +2,7 @@
2
2
 
3
3
  var imageBlock = require('@milkdown/kit/component/image-block');
4
4
  var imageInline = require('@milkdown/kit/component/image-inline');
5
- var todoList = require('./todoList-YYRQo7wG.js');
5
+ var todoList = require('./todoList-Qb2JsRGC.js');
6
6
  require('atomico');
7
7
 
8
8
  const defineFeature = (editor, config) => {
@@ -33,4 +33,4 @@ const defineFeature = (editor, config) => {
33
33
  };
34
34
 
35
35
  exports.defineFeature = defineFeature;
36
- //# sourceMappingURL=index-tlx25I_m.js.map
36
+ //# sourceMappingURL=index-MLK151KV.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index-tlx25I_m.js","sources":["../../src/feature/image-block/index.ts"],"sourcesContent":["import { imageBlockComponent, imageBlockConfig } from '@milkdown/kit/component/image-block'\nimport { imageInlineComponent, inlineImageConfig } from '@milkdown/kit/component/image-inline'\nimport type { DefineFeature, Icon } from '../shared'\nimport { captionIcon, confirmIcon, imageIcon } from '../../icons'\n\ninterface ImageBlockConfig {\n onUpload: (file: File) => Promise<string>\n\n inlineImageIcon: Icon\n inlineConfirmButton: Icon\n inlineUploadButton: Icon\n inlineUploadPlaceholderText: string\n inlineOnUpload: (file: File) => Promise<string>\n\n blockImageIcon: Icon\n blockConfirmButton: Icon\n blockCaptionIcon: Icon\n blockUploadButton: Icon\n blockCaptionPlaceholderText: string\n blockUploadPlaceholderText: string\n blockOnUpload: (file: File) => Promise<string>\n}\n\nexport type ImageBlockFeatureConfig = Partial<ImageBlockConfig>\n\nexport const defineFeature: DefineFeature<ImageBlockFeatureConfig> = (editor, config) => {\n editor\n .config((ctx) => {\n ctx.update(inlineImageConfig.key, value => ({\n uploadButton: config?.inlineUploadButton ?? (() => 'Upload'),\n imageIcon: config?.inlineImageIcon ?? (() => imageIcon),\n confirmButton: config?.inlineConfirmButton ?? (() => confirmIcon),\n uploadPlaceholderText: config?.inlineUploadPlaceholderText ?? 'or paste link',\n onUpload: config?.inlineOnUpload ?? config?.onUpload ?? value.onUpload,\n }))\n ctx.update(imageBlockConfig.key, value => ({\n uploadButton: config?.blockUploadButton ?? (() => 'Upload file'),\n imageIcon: config?.blockImageIcon ?? (() => imageIcon),\n captionIcon: config?.blockCaptionIcon ?? (() => captionIcon),\n confirmButton: config?.blockConfirmButton ?? (() => 'Confirm'),\n captionPlaceholderText: config?.blockCaptionPlaceholderText ?? 'Write Image Caption',\n uploadPlaceholderText: config?.blockUploadPlaceholderText ?? 'or paste link',\n onUpload: config?.blockOnUpload ?? config?.onUpload ?? value.onUpload,\n }))\n })\n .use(imageBlockComponent)\n .use(imageInlineComponent)\n}\n"],"names":["inlineImageConfig","imageIcon","confirmIcon","imageBlockConfig","captionIcon","imageBlockComponent","imageInlineComponent"],"mappings":"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"}
1
+ {"version":3,"file":"index-MLK151KV.js","sources":["../../src/feature/image-block/index.ts"],"sourcesContent":["import { imageBlockComponent, imageBlockConfig } from '@milkdown/kit/component/image-block'\nimport { imageInlineComponent, inlineImageConfig } from '@milkdown/kit/component/image-inline'\nimport type { DefineFeature, Icon } from '../shared'\nimport { captionIcon, confirmIcon, imageIcon } from '../../icons'\n\ninterface ImageBlockConfig {\n onUpload: (file: File) => Promise<string>\n\n inlineImageIcon: Icon\n inlineConfirmButton: Icon\n inlineUploadButton: Icon\n inlineUploadPlaceholderText: string\n inlineOnUpload: (file: File) => Promise<string>\n\n blockImageIcon: Icon\n blockConfirmButton: Icon\n blockCaptionIcon: Icon\n blockUploadButton: Icon\n blockCaptionPlaceholderText: string\n blockUploadPlaceholderText: string\n blockOnUpload: (file: File) => Promise<string>\n}\n\nexport type ImageBlockFeatureConfig = Partial<ImageBlockConfig>\n\nexport const defineFeature: DefineFeature<ImageBlockFeatureConfig> = (editor, config) => {\n editor\n .config((ctx) => {\n ctx.update(inlineImageConfig.key, value => ({\n uploadButton: config?.inlineUploadButton ?? (() => 'Upload'),\n imageIcon: config?.inlineImageIcon ?? (() => imageIcon),\n confirmButton: config?.inlineConfirmButton ?? (() => confirmIcon),\n uploadPlaceholderText: config?.inlineUploadPlaceholderText ?? 'or paste link',\n onUpload: config?.inlineOnUpload ?? config?.onUpload ?? value.onUpload,\n }))\n ctx.update(imageBlockConfig.key, value => ({\n uploadButton: config?.blockUploadButton ?? (() => 'Upload file'),\n imageIcon: config?.blockImageIcon ?? (() => imageIcon),\n captionIcon: config?.blockCaptionIcon ?? (() => captionIcon),\n confirmButton: config?.blockConfirmButton ?? (() => 'Confirm'),\n captionPlaceholderText: config?.blockCaptionPlaceholderText ?? 'Write Image Caption',\n uploadPlaceholderText: config?.blockUploadPlaceholderText ?? 'or paste link',\n onUpload: config?.blockOnUpload ?? config?.onUpload ?? value.onUpload,\n }))\n })\n .use(imageBlockComponent)\n .use(imageInlineComponent)\n}\n"],"names":["inlineImageConfig","imageIcon","confirmIcon","imageBlockConfig","captionIcon","imageBlockComponent","imageInlineComponent"],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
3
  var linkTooltip = require('@milkdown/kit/component/link-tooltip');
4
- var todoList = require('./todoList-YYRQo7wG.js');
4
+ var todoList = require('./todoList-Qb2JsRGC.js');
5
5
  require('atomico');
6
6
 
7
7
  const defineFeature = (editor, config) => {
@@ -10,7 +10,7 @@ const defineFeature = (editor, config) => {
10
10
  var _a, _b, _c, _d, _e, _f;
11
11
  return {
12
12
  ...prev,
13
- linkIcon: (_a = config == null ? void 0 : config.linkIcon) != null ? _a : () => todoList.linkIcon,
13
+ linkIcon: (_a = config == null ? void 0 : config.linkIcon) != null ? _a : () => todoList.copyIcon,
14
14
  editButton: (_b = config == null ? void 0 : config.editButton) != null ? _b : () => todoList.editIcon,
15
15
  removeButton: (_c = config == null ? void 0 : config.removeButton) != null ? _c : () => todoList.removeIcon,
16
16
  confirmButton: (_d = config == null ? void 0 : config.confirmButton) != null ? _d : () => todoList.confirmIcon,
@@ -23,4 +23,4 @@ const defineFeature = (editor, config) => {
23
23
  };
24
24
 
25
25
  exports.defineFeature = defineFeature;
26
- //# sourceMappingURL=index-dEVmN_aj.js.map
26
+ //# sourceMappingURL=index-YoPS8A3_.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index-dEVmN_aj.js","sources":["../../src/feature/link-tooltip/index.ts"],"sourcesContent":["import { configureLinkTooltip, linkTooltipConfig, linkTooltipPlugin } from '@milkdown/kit/component/link-tooltip'\nimport type { DefineFeature, Icon } from '../shared'\nimport { confirmIcon, editIcon, linkIcon, removeIcon } from '../../icons'\n\ninterface LinkTooltipConfig {\n linkIcon: Icon\n editButton: Icon\n removeButton: Icon\n confirmButton: Icon\n inputPlaceholder: string\n onCopyLink: (link: string) => void\n}\n\nexport type LinkTooltipFeatureConfig = Partial<LinkTooltipConfig>\n\nexport const defineFeature: DefineFeature<LinkTooltipFeatureConfig> = (editor, config) => {\n editor\n .config(configureLinkTooltip)\n .config((ctx) => {\n ctx.update(linkTooltipConfig.key, prev => ({\n ...prev,\n linkIcon: config?.linkIcon ?? (() => linkIcon),\n editButton: config?.editButton ?? (() => editIcon),\n removeButton: config?.removeButton ?? (() => removeIcon),\n confirmButton: config?.confirmButton ?? (() => confirmIcon),\n inputPlaceholder: config?.inputPlaceholder ?? 'Paste link...',\n onCopyLink: config?.onCopyLink ?? (() => {}),\n }))\n })\n .use(linkTooltipPlugin)\n}\n"],"names":["configureLinkTooltip","linkTooltipConfig","linkIcon","editIcon","removeIcon","confirmIcon","linkTooltipPlugin"],"mappings":";;;;;;AAea,MAAA,aAAA,GAAyD,CAAC,MAAA,EAAQ,MAAW,KAAA;AACxF,EAAA,MAAA,CACG,MAAO,CAAAA,gCAAoB,CAC3B,CAAA,MAAA,CAAO,CAAC,GAAQ,KAAA;AACf,IAAI,GAAA,CAAA,MAAA,CAAOC,6BAAkB,CAAA,GAAA,EAAK,CAAK,IAAA,KAAA;AAnB7C,MAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,CAAA;AAmBiD,MAAA,OAAA;AAAA,QACzC,GAAG,IAAA;AAAA,QACH,QAAU,EAAA,CAAA,EAAA,GAAA,MAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,MAAA,CAAQ,QAAR,KAAA,IAAA,GAAA,EAAA,GAAqB,MAAMC,iBAAA;AAAA,QACrC,UAAY,EAAA,CAAA,EAAA,GAAA,MAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,MAAA,CAAQ,UAAR,KAAA,IAAA,GAAA,EAAA,GAAuB,MAAMC,iBAAA;AAAA,QACzC,YAAc,EAAA,CAAA,EAAA,GAAA,MAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,MAAA,CAAQ,YAAR,KAAA,IAAA,GAAA,EAAA,GAAyB,MAAMC,mBAAA;AAAA,QAC7C,aAAe,EAAA,CAAA,EAAA,GAAA,MAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,MAAA,CAAQ,aAAR,KAAA,IAAA,GAAA,EAAA,GAA0B,MAAMC,oBAAA;AAAA,QAC/C,gBAAA,EAAA,CAAkB,EAAQ,GAAA,MAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,MAAA,CAAA,gBAAA,KAAR,IAA4B,GAAA,EAAA,GAAA,eAAA;AAAA,QAC9C,UAAY,EAAA,CAAA,EAAA,GAAA,MAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,MAAA,CAAQ,UAAR,KAAA,IAAA,GAAA,EAAA,GAAuB,MAAM;AAAA,SAAC;AAAA,OAC5C,CAAA;AAAA,KAAE,CAAA,CAAA;AAAA,GACH,CACA,CAAA,GAAA,CAAIC,6BAAiB,CAAA,CAAA;AAC1B;;;;"}
1
+ {"version":3,"file":"index-YoPS8A3_.js","sources":["../../src/feature/link-tooltip/index.ts"],"sourcesContent":["import { configureLinkTooltip, linkTooltipConfig, linkTooltipPlugin } from '@milkdown/kit/component/link-tooltip'\nimport type { DefineFeature, Icon } from '../shared'\nimport { confirmIcon, copyIcon, editIcon, removeIcon } from '../../icons'\n\ninterface LinkTooltipConfig {\n linkIcon: Icon\n editButton: Icon\n removeButton: Icon\n confirmButton: Icon\n inputPlaceholder: string\n onCopyLink: (link: string) => void\n}\n\nexport type LinkTooltipFeatureConfig = Partial<LinkTooltipConfig>\n\nexport const defineFeature: DefineFeature<LinkTooltipFeatureConfig> = (editor, config) => {\n editor\n .config(configureLinkTooltip)\n .config((ctx) => {\n ctx.update(linkTooltipConfig.key, prev => ({\n ...prev,\n linkIcon: config?.linkIcon ?? (() => copyIcon),\n editButton: config?.editButton ?? (() => editIcon),\n removeButton: config?.removeButton ?? (() => removeIcon),\n confirmButton: config?.confirmButton ?? (() => confirmIcon),\n inputPlaceholder: config?.inputPlaceholder ?? 'Paste link...',\n onCopyLink: config?.onCopyLink ?? (() => {}),\n }))\n })\n .use(linkTooltipPlugin)\n}\n"],"names":["configureLinkTooltip","linkTooltipConfig","copyIcon","editIcon","removeIcon","confirmIcon","linkTooltipPlugin"],"mappings":";;;;;;AAea,MAAA,aAAA,GAAyD,CAAC,MAAA,EAAQ,MAAW,KAAA;AACxF,EAAA,MAAA,CACG,MAAO,CAAAA,gCAAoB,CAC3B,CAAA,MAAA,CAAO,CAAC,GAAQ,KAAA;AACf,IAAI,GAAA,CAAA,MAAA,CAAOC,6BAAkB,CAAA,GAAA,EAAK,CAAK,IAAA,KAAA;AAnB7C,MAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,CAAA;AAmBiD,MAAA,OAAA;AAAA,QACzC,GAAG,IAAA;AAAA,QACH,QAAU,EAAA,CAAA,EAAA,GAAA,MAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,MAAA,CAAQ,QAAR,KAAA,IAAA,GAAA,EAAA,GAAqB,MAAMC,iBAAA;AAAA,QACrC,UAAY,EAAA,CAAA,EAAA,GAAA,MAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,MAAA,CAAQ,UAAR,KAAA,IAAA,GAAA,EAAA,GAAuB,MAAMC,iBAAA;AAAA,QACzC,YAAc,EAAA,CAAA,EAAA,GAAA,MAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,MAAA,CAAQ,YAAR,KAAA,IAAA,GAAA,EAAA,GAAyB,MAAMC,mBAAA;AAAA,QAC7C,aAAe,EAAA,CAAA,EAAA,GAAA,MAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,MAAA,CAAQ,aAAR,KAAA,IAAA,GAAA,EAAA,GAA0B,MAAMC,oBAAA;AAAA,QAC/C,gBAAA,EAAA,CAAkB,EAAQ,GAAA,MAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,MAAA,CAAA,gBAAA,KAAR,IAA4B,GAAA,EAAA,GAAA,eAAA;AAAA,QAC9C,UAAY,EAAA,CAAA,EAAA,GAAA,MAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,MAAA,CAAQ,UAAR,KAAA,IAAA,GAAA,EAAA,GAAuB,MAAM;AAAA,SAAC;AAAA,OAC5C,CAAA;AAAA,KAAE,CAAA,CAAA;AAAA,GACH,CACA,CAAA,GAAA,CAAIC,6BAAiB,CAAA,CAAA;AAC1B;;;;"}
@@ -11,7 +11,7 @@ var index = require('./index-z6pe2alg.js');
11
11
  var atomico = require('atomico');
12
12
  var imageBlock = require('@milkdown/kit/component/image-block');
13
13
  var gfm = require('@milkdown/kit/preset/gfm');
14
- var todoList = require('./todoList-YYRQo7wG.js');
14
+ var todoList = require('./todoList-Qb2JsRGC.js');
15
15
  var transform = require('@milkdown/kit/prose/transform');
16
16
 
17
17
  function clearRange(tr) {
@@ -683,4 +683,4 @@ const defineFeature = (editor, config) => {
683
683
  };
684
684
 
685
685
  exports.defineFeature = defineFeature;
686
- //# sourceMappingURL=index-nIbM7LVc.js.map
686
+ //# sourceMappingURL=index-vNNxr8yy.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index-nIbM7LVc.js","sources":["../../src/feature/block-edit/menu/utils.ts","../../src/feature/block-edit/menu/group-builder.ts","../../src/feature/block-edit/menu/config.ts","../../src/feature/block-edit/menu/component.ts","../../src/feature/block-edit/menu/index.ts","../../src/feature/block-edit/handle/component.ts","../../src/feature/block-edit/handle/index.ts","../../src/feature/block-edit/index.ts"],"sourcesContent":["import type { html } from 'atomico'\nimport type { Ctx } from '@milkdown/kit/ctx'\nimport type { Command, Transaction } from '@milkdown/kit/prose/state'\nimport type { Attrs, NodeType } from '@milkdown/kit/prose/model'\nimport { findWrapping } from '@milkdown/kit/prose/transform'\n\nexport interface MenuItem {\n index: number\n key: string\n label: string\n icon: ReturnType<typeof html>\n onRun: (ctx: Ctx) => void\n}\n\ntype WithRange<T, HasIndex extends true | false = true> = HasIndex extends true ? T & { range: [start: number, end: number] } : T\n\nexport type MenuItemGroup<HasIndex extends true | false = true> = WithRange<{\n key: string\n label: string\n items: HasIndex extends true ? MenuItem[] : Omit<MenuItem, 'index'>[]\n}, HasIndex>\n\nexport function clearRange(tr: Transaction) {\n const { $from, $to } = tr.selection\n const { pos: from } = $from\n const { pos: to } = $to\n tr = tr.deleteRange(from - $from.node().content.size, to)\n return tr\n}\n\nexport function setBlockType(tr: Transaction, nodeType: NodeType, attrs: Attrs | null = null) {\n const { from, to } = tr.selection\n return tr.setBlockType(from, to, nodeType, attrs)\n}\n\nexport function wrapInBlockType(tr: Transaction, nodeType: NodeType, attrs: Attrs | null = null) {\n const { $from, $to } = tr.selection\n\n const range = $from.blockRange($to)\n const wrapping = range && findWrapping(range, nodeType, attrs)\n if (!wrapping)\n return null\n\n return tr.wrap(range, wrapping)\n}\n\nexport function addBlockType(tr: Transaction, nodeType: NodeType, attrs: Attrs | null = null) {\n const node = nodeType.createAndFill(attrs)\n if (!node)\n return null\n\n return tr.replaceSelectionWith(node)\n}\n\nexport function clearContentAndSetBlockType(nodeType: NodeType, attrs: Attrs | null = null): Command {\n return (state, dispatch) => {\n if (dispatch) {\n const tr = setBlockType(clearRange(state.tr), nodeType, attrs)\n dispatch(tr.scrollIntoView())\n }\n return true\n }\n}\n\nexport function clearContentAndWrapInBlockType(nodeType: NodeType, attrs: Attrs | null = null): Command {\n return (state, dispatch) => {\n const tr = wrapInBlockType(clearRange(state.tr), nodeType, attrs)\n if (!tr)\n return false\n\n if (dispatch)\n dispatch(tr.scrollIntoView())\n\n return true\n }\n}\n\nexport function clearContentAndAddBlockType(nodeType: NodeType, attrs: Attrs | null = null): Command {\n return (state, dispatch) => {\n const tr = addBlockType(clearRange(state.tr), nodeType, attrs)\n if (!tr)\n return false\n\n if (dispatch)\n dispatch(tr.scrollIntoView())\n\n return true\n }\n}\n","import type { MenuItem, MenuItemGroup } from './utils'\n\nexport class GroupBuilder {\n #groups: MenuItemGroup<false>[] = []\n\n clear = () => {\n this.#groups = []\n return this\n }\n\n #getGroupInstance = (group: MenuItemGroup<false>) => {\n const groupInstance = {\n group,\n addItem: (key: string, item: Omit<MenuItem, 'key' | 'index'>) => {\n const data = { key, ...item }\n group.items.push(data)\n return groupInstance\n },\n clear: () => {\n group.items = []\n return groupInstance\n },\n }\n return groupInstance\n }\n\n addGroup = (key: string, label: string) => {\n const items: Omit<MenuItem, 'index'>[] = []\n const group: MenuItemGroup<false> = {\n key,\n label,\n items,\n }\n this.#groups.push(group)\n\n return this.#getGroupInstance(group)\n }\n\n getGroup = (key: string) => {\n const group = this.#groups.find(group => group.key === key)\n if (!group)\n throw new Error(`Group with key ${key} not found`)\n\n return this.#getGroupInstance(group)\n }\n\n build = () => {\n return this.#groups\n }\n}\n","import { editorViewCtx } from '@milkdown/kit/core'\nimport {\n blockquoteSchema,\n bulletListSchema,\n codeBlockSchema,\n headingSchema,\n hrSchema,\n listItemSchema,\n orderedListSchema,\n paragraphSchema,\n} from '@milkdown/kit/preset/commonmark'\nimport { NodeSelection } from '@milkdown/kit/prose/state'\nimport { imageBlockSchema } from '@milkdown/kit/component/image-block'\nimport { createTable } from '@milkdown/kit/preset/gfm'\nimport {\n bulletListIcon,\n codeIcon,\n dividerIcon,\n h1Icon,\n h2Icon,\n h3Icon,\n h4Icon,\n h5Icon,\n h6Icon,\n imageIcon,\n orderedListIcon,\n quoteIcon,\n tableIcon,\n textIcon,\n todoListIcon,\n} from '../../../icons'\nimport type { BlockEditFeatureConfig } from '../index'\nimport type { MenuItemGroup } from './utils'\nimport {\n clearContentAndAddBlockType,\n clearContentAndSetBlockType,\n clearContentAndWrapInBlockType,\n clearRange,\n} from './utils'\nimport { GroupBuilder } from './group-builder'\n\nexport function getGroups(filter?: string, config?: BlockEditFeatureConfig) {\n const groupBuilder = new GroupBuilder()\n groupBuilder\n .addGroup('text', config?.slashMenuTextGroupLabel ?? 'Text')\n .addItem('text', {\n label: config?.slashMenuTextGroupLabel ?? 'Text',\n icon: config?.slashMenuTextIcon?.() ?? textIcon,\n onRun: (ctx) => {\n const view = ctx.get(editorViewCtx)\n const { dispatch, state } = view\n\n const command = clearContentAndSetBlockType(paragraphSchema.type(ctx))\n command(state, dispatch)\n },\n })\n .addItem('h1', {\n label: config?.slashMenuH1Label ?? 'Heading 1',\n icon: config?.slashMenuH1Icon?.() ?? h1Icon,\n onRun: (ctx) => {\n const view = ctx.get(editorViewCtx)\n const { dispatch, state } = view\n\n const command = clearContentAndSetBlockType(headingSchema.type(ctx), { level: 1 })\n command(state, dispatch)\n },\n })\n .addItem('h2', {\n label: config?.slashMenuH2Label ?? 'Heading 2',\n icon: config?.slashMenuH2Icon?.() ?? h2Icon,\n onRun: (ctx) => {\n const view = ctx.get(editorViewCtx)\n const { dispatch, state } = view\n\n const command = clearContentAndSetBlockType(headingSchema.type(ctx), { level: 2 })\n command(state, dispatch)\n },\n })\n .addItem('h3', {\n label: config?.slashMenuH3Label ?? 'Heading 3',\n icon: config?.slashMenuH3Icon?.() ?? h3Icon,\n onRun: (ctx) => {\n const view = ctx.get(editorViewCtx)\n const { dispatch, state } = view\n\n const command = clearContentAndSetBlockType(headingSchema.type(ctx), { level: 3 })\n command(state, dispatch)\n },\n })\n .addItem('h4', {\n label: config?.slashMenuH4Label ?? 'Heading 4',\n icon: config?.slashMenuH4Icon?.() ?? h4Icon,\n onRun: (ctx) => {\n const view = ctx.get(editorViewCtx)\n const { dispatch, state } = view\n\n const command = clearContentAndSetBlockType(headingSchema.type(ctx), { level: 4 })\n command(state, dispatch)\n },\n })\n .addItem('h5', {\n label: config?.slashMenuH5Label ?? 'Heading 5',\n icon: config?.slashMenuH5Icon?.() ?? h5Icon,\n onRun: (ctx) => {\n const view = ctx.get(editorViewCtx)\n const { dispatch, state } = view\n\n const command = clearContentAndSetBlockType(headingSchema.type(ctx), { level: 5 })\n command(state, dispatch)\n },\n })\n .addItem('h6', {\n label: config?.slashMenuH6Label ?? 'Heading 6',\n icon: config?.slashMenuH6Icon?.() ?? h6Icon,\n onRun: (ctx) => {\n const view = ctx.get(editorViewCtx)\n const { dispatch, state } = view\n\n const command = clearContentAndSetBlockType(headingSchema.type(ctx), { level: 6 })\n command(state, dispatch)\n },\n })\n .addItem('quote', {\n label: config?.slashMenuQuoteLabel ?? 'Quote',\n icon: config?.slashMenuQuoteIcon?.() ?? quoteIcon,\n onRun: (ctx) => {\n const view = ctx.get(editorViewCtx)\n const { dispatch, state } = view\n\n const command = clearContentAndWrapInBlockType(blockquoteSchema.type(ctx))\n command(state, dispatch)\n },\n })\n .addItem('divider', {\n label: config?.slashMenuDividerLabel ?? 'Divider',\n icon: config?.slashMenuDividerIcon?.() ?? dividerIcon,\n onRun: (ctx) => {\n const view = ctx.get(editorViewCtx)\n const { dispatch, state } = view\n\n const command = clearContentAndAddBlockType(hrSchema.type(ctx))\n command(state, dispatch)\n },\n })\n\n groupBuilder.addGroup('list', config?.slashMenuListGroupLabel ?? 'List')\n .addItem('bullet-list', {\n label: config?.slashMenuBulletListLabel ?? 'Bullet List',\n icon: config?.slashMenuBulletListIcon?.() ?? bulletListIcon,\n onRun: (ctx) => {\n const view = ctx.get(editorViewCtx)\n const { dispatch, state } = view\n\n const command = clearContentAndWrapInBlockType(bulletListSchema.type(ctx))\n command(state, dispatch)\n },\n })\n .addItem('ordered-list', {\n label: config?.slashMenuOrderedListLabel ?? 'Ordered List',\n icon: config?.slashMenuOrderedListIcon?.() ?? orderedListIcon,\n onRun: (ctx) => {\n const view = ctx.get(editorViewCtx)\n const { dispatch, state } = view\n\n const command = clearContentAndWrapInBlockType(orderedListSchema.type(ctx))\n command(state, dispatch)\n },\n })\n .addItem('todo-list', {\n label: config?.slashMenuTaskListLabel ?? 'Todo List',\n icon: config?.slashMenuTaskListIcon?.() ?? todoListIcon,\n onRun: (ctx) => {\n const view = ctx.get(editorViewCtx)\n const { dispatch, state } = view\n\n const command = clearContentAndWrapInBlockType(listItemSchema.type(ctx), { checked: false })\n command(state, dispatch)\n },\n })\n\n groupBuilder.addGroup('advanced', config?.slashMenuAdvancedGroupLabel ?? 'Advanced')\n .addItem('image', {\n label: config?.slashMenuImageLabel ?? 'Image',\n icon: config?.slashMenuImageIcon?.() ?? imageIcon,\n onRun: (ctx) => {\n const view = ctx.get(editorViewCtx)\n const { dispatch, state } = view\n\n const command = clearContentAndAddBlockType(imageBlockSchema.type(ctx))\n command(state, dispatch)\n },\n })\n .addItem('code', {\n label: config?.slashMenuCodeBlockLabel ?? 'Code',\n icon: config?.slashMenuCodeBlockIcon?.() ?? codeIcon,\n onRun: (ctx) => {\n const view = ctx.get(editorViewCtx)\n const { dispatch, state } = view\n\n const command = clearContentAndAddBlockType(codeBlockSchema.type(ctx))\n command(state, dispatch)\n },\n })\n .addItem('table', {\n label: config?.slashMenuTableLabel ?? 'Table',\n icon: config?.slashMenuTableIcon?.() ?? tableIcon,\n onRun: (ctx) => {\n const view = ctx.get(editorViewCtx)\n const { dispatch, state } = view\n const tr = clearRange(state.tr)\n const table = createTable(ctx, 3, 3)\n tr.replaceSelectionWith(table)\n const { from } = tr.selection\n const pos = from - table.nodeSize + 2\n dispatch(tr)\n requestAnimationFrame(() => {\n const selection = NodeSelection.create(view.state.tr.doc, pos)\n dispatch(view.state.tr.setSelection(selection).scrollIntoView())\n })\n },\n })\n\n config?.buildMenu?.(groupBuilder)\n\n let groups = groupBuilder.build()\n\n if (filter) {\n groups = groups\n .map((group) => {\n const items = group\n .items\n .filter(item =>\n item\n .label\n .toLowerCase()\n .includes(filter.toLowerCase()))\n\n return {\n ...group,\n items,\n }\n })\n .filter(group => group.items.length > 0)\n }\n\n const items = groups.flatMap(groups => groups.items)\n items.forEach(((item, index) => {\n Object.assign(item, { index })\n }))\n\n groups.reduce((acc, group) => {\n const end = acc + group.items.length\n Object.assign(group, {\n range: [acc, end],\n })\n return end\n }, 0)\n\n return {\n groups: groups as MenuItemGroup[],\n size: items.length,\n }\n}\n","import type { Component } from 'atomico'\nimport { c, html, useCallback, useEffect, useHost, useMemo, useRef, useState } from 'atomico'\nimport type { Ctx } from '@milkdown/kit/ctx'\nimport type { BlockEditFeatureConfig } from '../index'\nimport { getGroups } from './config'\n\nexport interface MenuProps {\n ctx: Ctx\n show: boolean\n filter: string\n hide: () => void\n config?: BlockEditFeatureConfig\n}\n\nexport const menuComponent: Component<MenuProps> = ({\n show,\n hide,\n ctx,\n filter,\n config,\n}) => {\n const { groups, size } = useMemo(() => getGroups(filter, config), [filter])\n\n const host = useHost()\n const [hoverIndex, setHoverIndex] = useState(0)\n\n const root = useMemo(() => host.current.getRootNode() as HTMLElement, [host])\n\n const prevMousePosition = useRef({ x: -999, y: -999 })\n\n const onMouseMove = useCallback((e: MouseEvent) => {\n const prevPos = prevMousePosition.current\n if (!prevPos)\n return\n\n const { x, y } = e\n prevPos.x = x\n prevPos.y = y\n }, [])\n\n useEffect(() => {\n if (size === 0 && show)\n hide?.()\n }, [size, show])\n\n const onHover = useCallback((\n index: number | ((prev: number) => number),\n after?: (index: number) => void,\n ) => {\n setHoverIndex((prev) => {\n const next = typeof index === 'function' ? index(prev) : index\n\n after?.(next)\n return next\n })\n }, [])\n\n const scrollToIndex = useCallback((index: number) => {\n const target = host\n .current\n .querySelector<HTMLElement>(`[data-index=\"${index}\"]`)\n const scrollRoot = host.current.querySelector<HTMLElement>('.menu-groups')\n\n if (!target || !scrollRoot)\n return\n\n scrollRoot.scrollTop = target.offsetTop - scrollRoot.offsetTop\n }, [])\n\n const runByIndex = useCallback((index: number) => {\n const item = groups.flatMap(group => group.items).at(index)\n if (item && ctx)\n item.onRun(ctx)\n\n hide?.()\n }, [groups])\n\n const onKeydown = useCallback((e: KeyboardEvent) => {\n if (e.key === 'Escape') {\n e.preventDefault()\n hide?.()\n return\n }\n\n if (e.key === 'ArrowDown') {\n e.preventDefault()\n return onHover(index => (index < size - 1) ? index + 1 : index, scrollToIndex)\n }\n\n if (e.key === 'ArrowUp') {\n e.preventDefault()\n return onHover(index => index <= 0 ? index : index - 1, scrollToIndex)\n }\n\n if (e.key === 'ArrowLeft') {\n e.preventDefault()\n return onHover((index) => {\n const group = groups.find(group => group.range[0] <= index && group.range[1] > index)\n if (!group)\n return index\n\n const prevGroup = groups[groups.indexOf(group) - 1]\n if (!prevGroup)\n return index\n\n return prevGroup.range[1] - 1\n }, scrollToIndex)\n }\n\n if (e.key === 'ArrowRight') {\n e.preventDefault()\n return onHover((index) => {\n const group = groups.find(group => group.range[0] <= index && group.range[1] > index)\n if (!group)\n return index\n\n const nextGroup = groups[groups.indexOf(group) + 1]\n if (!nextGroup)\n return index\n\n return nextGroup.range[0]\n }, scrollToIndex)\n }\n\n if (e.key === 'Enter') {\n e.preventDefault()\n runByIndex(hoverIndex)\n }\n }, [hide, groups, hoverIndex])\n\n const onMouseEnter = useCallback((index: number) => {\n return (e: MouseEvent) => {\n const prevPos = prevMousePosition.current\n if (!prevPos)\n return\n\n const { x, y } = e\n if (x === prevPos.x && y === prevPos.y)\n return\n\n onHover(index)\n }\n }, [])\n\n useEffect(() => {\n if (show)\n root.addEventListener('keydown', onKeydown, { capture: true })\n\n else root.removeEventListener('keydown', onKeydown, { capture: true })\n\n return () => {\n root.removeEventListener('keydown', onKeydown, { capture: true })\n }\n }, [show, onKeydown])\n\n return html`\n <host onmousedown=${(e: MouseEvent) => e.preventDefault()}>\n <nav class=\"tab-group\">\n <ul>\n ${groups.map(group =>\n html`<li\n key=${group.key}\n onmousedown=${() => onHover(group.range[0], scrollToIndex)}\n class=${hoverIndex >= group.range[0] && hoverIndex < group.range[1] ? 'selected' : ''}\n >\n ${group.label}\n </li>`)}\n </ul>\n </nav>\n <div class=\"menu-groups\" onmousemove=${onMouseMove}>\n ${groups.map((group) => {\n return html`\n <div key=${group.key} class=\"menu-group\">\n <h6>${group.label}</h6>\n <ul>\n ${group.items.map(item =>\n html`<li\n key=${item.key}\n data-index=${item.index}\n class=${hoverIndex === item.index ? 'hover' : ''}\n onmouseenter=${onMouseEnter(item.index)}\n onmousedown=${() => {\n host\n .current\n .querySelector(`[data-index=\"${item.index}\"]`)\n ?.classList.add('active')\n }}\n onmouseup=${() => {\n host\n .current\n .querySelector(`[data-index=\"${item.index}\"]`)\n ?.classList.remove('active')\n runByIndex(item.index)\n }}\n >\n ${item.icon}\n <span>${item.label}</span>\n </li>`,\n )}\n </ul>\n </div>\n `\n })}\n </div>\n </host>\n `\n}\n\nmenuComponent.props = {\n ctx: Object,\n config: Object,\n show: Boolean,\n filter: String,\n hide: Function,\n}\n\nexport const MenuElement = c(menuComponent)\n","import type { PluginView } from '@milkdown/kit/prose/state'\nimport type { EditorView } from '@milkdown/kit/prose/view'\nimport { SlashProvider, slashFactory } from '@milkdown/kit/plugin/slash'\nimport type { Ctx } from '@milkdown/kit/ctx'\nimport type { AtomicoThis } from 'atomico/types/dom'\nimport { $ctx } from '@milkdown/kit/utils'\nimport { defIfNotExists, isInCodeBlock, isInList } from '../../../utils'\nimport type { BlockEditFeatureConfig } from '../index'\nimport type { MenuProps } from './component'\nimport { MenuElement } from './component'\n\nexport const menu = slashFactory('CREPE_MENU')\n\nexport interface MenuAPI {\n show: (pos: number) => void\n hide: () => void\n}\n\nexport const menuAPI = $ctx({\n show: () => {},\n hide: () => {},\n} as MenuAPI, 'menuAPICtx')\n\ndefIfNotExists('milkdown-slash-menu', MenuElement)\nexport function configureMenu(ctx: Ctx, config?: BlockEditFeatureConfig) {\n ctx.set(menu.key, {\n view: view => new MenuView(ctx, view, config),\n })\n}\n\nclass MenuView implements PluginView {\n readonly #content: AtomicoThis<MenuProps, HTMLElement>\n readonly #slashProvider: SlashProvider\n #programmaticallyPos: number | null = null\n\n constructor(ctx: Ctx, view: EditorView, config?: BlockEditFeatureConfig) {\n this.#content = new MenuElement()\n this.#content.hide = this.hide\n this.#content.ctx = ctx\n this.#content.config = config\n // eslint-disable-next-line ts/no-this-alias\n const self = this\n this.#slashProvider = new SlashProvider({\n content: this.#content,\n debounce: 20,\n shouldShow(this: SlashProvider, view: EditorView) {\n if (isInCodeBlock(view.state.selection) || isInList(view.state.selection))\n return false\n\n const currentText = this.getContent(view, node =>\n ['paragraph', 'heading'].includes(node.type.name))\n\n if (currentText == null)\n return false\n\n const pos = self.#programmaticallyPos\n\n self.#content.filter = currentText.startsWith('/') ? currentText.slice(1) : currentText\n\n if (typeof pos === 'number') {\n if (view.state.doc.resolve(pos).node() !== view.state.doc.resolve(view.state.selection.from).node()) {\n self.#programmaticallyPos = null\n\n return false\n }\n\n return true\n }\n\n if (!currentText.startsWith('/'))\n return false\n\n return true\n },\n offset: 10,\n })\n\n this.#slashProvider.onShow = () => {\n this.#content.show = true\n }\n this.#slashProvider.onHide = () => {\n this.#content.show = false\n }\n this.update(view)\n\n ctx.set(menuAPI.key, {\n show: pos => this.show(pos),\n hide: () => this.hide(),\n })\n }\n\n update = (view: EditorView) => {\n this.#slashProvider.update(view)\n }\n\n show = (pos: number) => {\n this.#programmaticallyPos = pos\n this.#content.filter = ''\n this.#slashProvider.show()\n }\n\n hide = () => {\n this.#programmaticallyPos = null\n this.#slashProvider.hide()\n }\n\n destroy = () => {\n this.#slashProvider.destroy()\n this.#content.remove()\n }\n}\n","import { type Component, c, html, useEffect, useRef } from 'atomico'\nimport { menuIcon, plusIcon } from '../../../icons'\nimport type { Icon } from '../../shared'\n\nexport interface BlockHandleProps {\n show: boolean\n onAdd: () => void\n addIcon: Icon\n handleIcon: Icon\n}\n\nconst blockHandleComponent: Component<BlockHandleProps> = ({\n onAdd,\n addIcon,\n handleIcon,\n}) => {\n const ref = useRef<HTMLDivElement>()\n useEffect(() => {\n ref.current?.classList.remove('active')\n })\n const onMouseDown = (e: MouseEvent) => {\n e.preventDefault()\n e.stopPropagation()\n ref.current?.classList.add('active')\n }\n const onMouseUp = (e: MouseEvent) => {\n e.preventDefault()\n e.stopPropagation()\n onAdd?.()\n ref.current?.classList.remove('active')\n }\n return html`\n <host>\n <div ref=${ref} onmousedown=${onMouseDown} onmouseup=${onMouseUp} class=\"operation-item\">\n ${addIcon?.() || plusIcon}\n </div>\n <div class=\"operation-item\">\n ${handleIcon?.() || menuIcon}\n </div>\n </host>\n `\n}\n\nblockHandleComponent.props = {\n show: Boolean,\n onAdd: Function,\n addIcon: Function,\n handleIcon: Function,\n}\n\nexport const BlockHandleElement = c(blockHandleComponent)\n","import type { PluginView } from '@milkdown/kit/prose/state'\nimport { TextSelection } from '@milkdown/kit/prose/state'\nimport { BlockProvider, block, blockConfig } from '@milkdown/kit/plugin/block'\nimport type { Ctx } from '@milkdown/kit/ctx'\nimport type { AtomicoThis } from 'atomico/types/dom'\nimport { editorViewCtx } from '@milkdown/kit/core'\nimport { paragraphSchema } from '@milkdown/kit/preset/commonmark'\nimport { findParent } from '@milkdown/kit/prose'\nimport { menuAPI } from '../menu'\nimport { defIfNotExists } from '../../../utils'\nimport type { BlockEditFeatureConfig } from '../index'\nimport type { BlockHandleProps } from './component'\nimport { BlockHandleElement } from './component'\n\nexport class BlockHandleView implements PluginView {\n #content: AtomicoThis<BlockHandleProps>\n #provider: BlockProvider\n readonly #ctx: Ctx\n\n constructor(ctx: Ctx, config?: BlockEditFeatureConfig) {\n this.#ctx = ctx\n const content = new BlockHandleElement()\n this.#content = content\n this.#content.onAdd = this.onAdd\n this.#content.addIcon = config?.handleAddIcon\n this.#content.handleIcon = config?.handleDragIcon\n this.#provider = new BlockProvider({\n ctx,\n content,\n getOffset: () => 16,\n getPlacement: ({ active, blockDom }) => {\n if (active.node.type.name === 'heading')\n return 'left'\n\n let totalDescendant = 0\n active.node.descendants((node) => {\n totalDescendant += node.childCount\n })\n const dom = active.el\n const domRect = dom.getBoundingClientRect()\n const handleRect = blockDom.getBoundingClientRect()\n const style = window.getComputedStyle(dom)\n const paddingTop = Number.parseInt(style.paddingTop, 10) || 0\n const paddingBottom = Number.parseInt(style.paddingBottom, 10) || 0\n const height = domRect.height - paddingTop - paddingBottom\n const handleHeight = handleRect.height\n return totalDescendant > 2 || handleHeight < height ? 'left-start' : 'left'\n },\n })\n this.update()\n }\n\n update = () => {\n this.#provider.update()\n }\n\n destroy = () => {\n this.#provider.destroy()\n this.#content.remove()\n }\n\n onAdd = () => {\n const ctx = this.#ctx\n const view = ctx.get(editorViewCtx)\n if (!view.hasFocus())\n view.focus()\n\n const { state, dispatch } = view\n const active = this.#provider.active\n if (!active)\n return\n\n const $pos = active.$pos\n const pos = $pos.pos + active.node.nodeSize\n let tr = state.tr.insert(pos, paragraphSchema.type(ctx).create())\n tr = tr.setSelection(TextSelection.near(tr.doc.resolve(pos)))\n dispatch(tr.scrollIntoView())\n\n this.#provider.hide()\n ctx.get(menuAPI.key).show(tr.selection.from)\n }\n}\n\ndefIfNotExists('milkdown-block-handle', BlockHandleElement)\nexport function configureBlockHandle(ctx: Ctx, config?: BlockEditFeatureConfig) {\n ctx.set(blockConfig.key, {\n filterNodes: (pos) => {\n const filter = findParent(node => ['table', 'blockquote'].includes(node.type.name))(pos)\n if (filter)\n return false\n\n return true\n },\n })\n ctx.set(block.key, {\n view: () => new BlockHandleView(ctx, config),\n })\n}\n","import { block } from '@milkdown/kit/plugin/block'\nimport type { DefineFeature, Icon } from '../shared'\nimport { configureBlockHandle } from './handle'\nimport { configureMenu, menu, menuAPI } from './menu'\nimport type { GroupBuilder } from './menu/group-builder'\n\ninterface BlockEditConfig {\n handleAddIcon: Icon\n handleDragIcon: Icon\n buildMenu: (builder: GroupBuilder) => void\n\n slashMenuTextGroupLabel: string\n slashMenuTextIcon: Icon\n slashMenuTextLabel: string\n slashMenuH1Icon: Icon\n slashMenuH1Label: string\n slashMenuH2Icon: Icon\n slashMenuH2Label: string\n slashMenuH3Icon: Icon\n slashMenuH3Label: string\n slashMenuH4Icon: Icon\n slashMenuH4Label: string\n slashMenuH5Icon: Icon\n slashMenuH5Label: string\n slashMenuH6Icon: Icon\n slashMenuH6Label: string\n slashMenuQuoteIcon: Icon\n slashMenuQuoteLabel: string\n slashMenuDividerIcon: Icon\n slashMenuDividerLabel: string\n\n slashMenuListGroupLabel: string\n slashMenuBulletListIcon: Icon\n slashMenuBulletListLabel: string\n slashMenuOrderedListIcon: Icon\n slashMenuOrderedListLabel: string\n slashMenuTaskListIcon: Icon\n slashMenuTaskListLabel: string\n\n slashMenuAdvancedGroupLabel: string\n slashMenuImageIcon: Icon\n slashMenuImageLabel: string\n slashMenuCodeBlockIcon: Icon\n slashMenuCodeBlockLabel: string\n slashMenuTableIcon: Icon\n slashMenuTableLabel: string\n}\n\nexport type BlockEditFeatureConfig = Partial<BlockEditConfig>\n\nexport const defineFeature: DefineFeature<BlockEditFeatureConfig> = (editor, config) => {\n editor\n .config(ctx => configureBlockHandle(ctx, config))\n .config(ctx => configureMenu(ctx, config))\n .use(menuAPI)\n .use(block)\n .use(menu)\n}\n"],"names":["findWrapping","__privateAdd","__privateSet","__privateGet","group","textIcon","editorViewCtx","paragraphSchema","h1Icon","headingSchema","h2Icon","h3Icon","h4Icon","h5Icon","h6Icon","quoteIcon","blockquoteSchema","dividerIcon","hrSchema","bulletListIcon","bulletListSchema","orderedListIcon","orderedListSchema","todoListIcon","listItemSchema","imageIcon","imageBlockSchema","codeIcon","codeBlockSchema","tableIcon","state","createTable","NodeSelection","items","groups","useMemo","useHost","useState","useRef","useCallback","useEffect","html","c","_content","slashFactory","$ctx","defIfNotExists","SlashProvider","view","isInCodeBlock","isInList","plusIcon","menuIcon","TextSelection","BlockProvider","blockConfig","findParent","block"],"mappings":";;;;;;;;;;;;;;;;AAsBO,SAAS,WAAW,EAAiB,EAAA;AAC1C,EAAA,MAAM,EAAE,KAAA,EAAO,GAAI,EAAA,GAAI,EAAG,CAAA,SAAA,CAAA;AAC1B,EAAM,MAAA,EAAE,GAAK,EAAA,IAAA,EAAS,GAAA,KAAA,CAAA;AACtB,EAAM,MAAA,EAAE,GAAK,EAAA,EAAA,EAAO,GAAA,GAAA,CAAA;AACpB,EAAK,EAAA,GAAA,EAAA,CAAG,YAAY,IAAO,GAAA,KAAA,CAAM,MAAO,CAAA,OAAA,CAAQ,MAAM,EAAE,CAAA,CAAA;AACxD,EAAO,OAAA,EAAA,CAAA;AACT,CAAA;AAEO,SAAS,YAAa,CAAA,EAAA,EAAiB,QAAoB,EAAA,KAAA,GAAsB,IAAM,EAAA;AAC5F,EAAA,MAAM,EAAE,IAAA,EAAM,EAAG,EAAA,GAAI,EAAG,CAAA,SAAA,CAAA;AACxB,EAAA,OAAO,EAAG,CAAA,YAAA,CAAa,IAAM,EAAA,EAAA,EAAI,UAAU,KAAK,CAAA,CAAA;AAClD,CAAA;AAEO,SAAS,eAAgB,CAAA,EAAA,EAAiB,QAAoB,EAAA,KAAA,GAAsB,IAAM,EAAA;AAC/F,EAAA,MAAM,EAAE,KAAA,EAAO,GAAI,EAAA,GAAI,EAAG,CAAA,SAAA,CAAA;AAE1B,EAAM,MAAA,KAAA,GAAQ,KAAM,CAAA,UAAA,CAAW,GAAG,CAAA,CAAA;AAClC,EAAA,MAAM,QAAW,GAAA,KAAA,IAASA,sBAAa,CAAA,KAAA,EAAO,UAAU,KAAK,CAAA,CAAA;AAC7D,EAAA,IAAI,CAAC,QAAA;AACH,IAAO,OAAA,IAAA,CAAA;AAET,EAAO,OAAA,EAAA,CAAG,IAAK,CAAA,KAAA,EAAO,QAAQ,CAAA,CAAA;AAChC,CAAA;AAEO,SAAS,YAAa,CAAA,EAAA,EAAiB,QAAoB,EAAA,KAAA,GAAsB,IAAM,EAAA;AAC5F,EAAM,MAAA,IAAA,GAAO,QAAS,CAAA,aAAA,CAAc,KAAK,CAAA,CAAA;AACzC,EAAA,IAAI,CAAC,IAAA;AACH,IAAO,OAAA,IAAA,CAAA;AAET,EAAO,OAAA,EAAA,CAAG,qBAAqB,IAAI,CAAA,CAAA;AACrC,CAAA;AAEgB,SAAA,2BAAA,CAA4B,QAAoB,EAAA,KAAA,GAAsB,IAAe,EAAA;AACnG,EAAO,OAAA,CAAC,OAAO,QAAa,KAAA;AAC1B,IAAA,IAAI,QAAU,EAAA;AACZ,MAAA,MAAM,KAAK,YAAa,CAAA,UAAA,CAAW,MAAM,EAAE,CAAA,EAAG,UAAU,KAAK,CAAA,CAAA;AAC7D,MAAS,QAAA,CAAA,EAAA,CAAG,gBAAgB,CAAA,CAAA;AAAA,KAC9B;AACA,IAAO,OAAA,IAAA,CAAA;AAAA,GACT,CAAA;AACF,CAAA;AAEgB,SAAA,8BAAA,CAA+B,QAAoB,EAAA,KAAA,GAAsB,IAAe,EAAA;AACtG,EAAO,OAAA,CAAC,OAAO,QAAa,KAAA;AAC1B,IAAA,MAAM,KAAK,eAAgB,CAAA,UAAA,CAAW,MAAM,EAAE,CAAA,EAAG,UAAU,KAAK,CAAA,CAAA;AAChE,IAAA,IAAI,CAAC,EAAA;AACH,MAAO,OAAA,KAAA,CAAA;AAET,IAAI,IAAA,QAAA;AACF,MAAS,QAAA,CAAA,EAAA,CAAG,gBAAgB,CAAA,CAAA;AAE9B,IAAO,OAAA,IAAA,CAAA;AAAA,GACT,CAAA;AACF,CAAA;AAEgB,SAAA,2BAAA,CAA4B,QAAoB,EAAA,KAAA,GAAsB,IAAe,EAAA;AACnG,EAAO,OAAA,CAAC,OAAO,QAAa,KAAA;AAC1B,IAAA,MAAM,KAAK,YAAa,CAAA,UAAA,CAAW,MAAM,EAAE,CAAA,EAAG,UAAU,KAAK,CAAA,CAAA;AAC7D,IAAA,IAAI,CAAC,EAAA;AACH,MAAO,OAAA,KAAA,CAAA;AAET,IAAI,IAAA,QAAA;AACF,MAAS,QAAA,CAAA,EAAA,CAAG,gBAAgB,CAAA,CAAA;AAE9B,IAAO,OAAA,IAAA,CAAA;AAAA,GACT,CAAA;AACF;;;;;;;;;ACxFA,IAAA,OAAA,EAAA,iBAAA,CAAA;AAEO,MAAM,YAAa,CAAA;AAAA,EAAnB,WAAA,GAAA;AACL,IAAAC,cAAA,CAAA,IAAA,EAAA,OAAA,EAAkC,EAAC,CAAA,CAAA;AAEnC,IAAA,IAAA,CAAA,KAAA,GAAQ,MAAM;AACZ,MAAAC,cAAA,CAAA,IAAA,EAAK,SAAU,EAAC,CAAA,CAAA;AAChB,MAAO,OAAA,IAAA,CAAA;AAAA,KACT,CAAA;AAEA,IAAAD,cAAA,CAAA,IAAA,EAAA,iBAAA,EAAoB,CAAC,KAAgC,KAAA;AACnD,MAAA,MAAM,aAAgB,GAAA;AAAA,QACpB,KAAA;AAAA,QACA,OAAA,EAAS,CAAC,GAAA,EAAa,IAA0C,KAAA;AAC/D,UAAA,MAAM,IAAO,GAAA,EAAE,GAAK,EAAA,GAAG,IAAK,EAAA,CAAA;AAC5B,UAAM,KAAA,CAAA,KAAA,CAAM,KAAK,IAAI,CAAA,CAAA;AACrB,UAAO,OAAA,aAAA,CAAA;AAAA,SACT;AAAA,QACA,OAAO,MAAM;AACX,UAAA,KAAA,CAAM,QAAQ,EAAC,CAAA;AACf,UAAO,OAAA,aAAA,CAAA;AAAA,SACT;AAAA,OACF,CAAA;AACA,MAAO,OAAA,aAAA,CAAA;AAAA,KACT,CAAA,CAAA;AAEA,IAAW,IAAA,CAAA,QAAA,GAAA,CAAC,KAAa,KAAkB,KAAA;AACzC,MAAA,MAAM,QAAmC,EAAC,CAAA;AAC1C,MAAA,MAAM,KAA8B,GAAA;AAAA,QAClC,GAAA;AAAA,QACA,KAAA;AAAA,QACA,KAAA;AAAA,OACF,CAAA;AACA,MAAKE,cAAA,CAAA,IAAA,EAAA,OAAA,CAAA,CAAQ,KAAK,KAAK,CAAA,CAAA;AAEvB,MAAO,OAAAA,cAAA,CAAA,IAAA,EAAK,mBAAL,IAAuB,CAAA,IAAA,EAAA,KAAA,CAAA,CAAA;AAAA,KAChC,CAAA;AAEA,IAAA,IAAA,CAAA,QAAA,GAAW,CAAC,GAAgB,KAAA;AAC1B,MAAM,MAAA,KAAA,GAAQA,qBAAK,OAAQ,CAAA,CAAA,IAAA,CAAK,CAAAC,MAASA,KAAAA,MAAAA,CAAM,QAAQ,GAAG,CAAA,CAAA;AAC1D,MAAA,IAAI,CAAC,KAAA;AACH,QAAA,MAAM,IAAI,KAAA,CAAM,CAAkB,eAAA,EAAA,GAAG,CAAY,UAAA,CAAA,CAAA,CAAA;AAEnD,MAAO,OAAAD,cAAA,CAAA,IAAA,EAAK,mBAAL,IAAuB,CAAA,IAAA,EAAA,KAAA,CAAA,CAAA;AAAA,KAChC,CAAA;AAEA,IAAA,IAAA,CAAA,KAAA,GAAQ,MAAM;AACZ,MAAA,OAAOA,cAAK,CAAA,IAAA,EAAA,OAAA,CAAA,CAAA;AAAA,KACd,CAAA;AAAA,GAAA;AACF,CAAA;AA9CE,OAAA,GAAA,IAAA,OAAA,EAAA,CAAA;AAOA,iBAAA,GAAA,IAAA,OAAA,EAAA;;AC+Bc,SAAA,SAAA,CAAU,QAAiB,MAAiC,EAAA;AAzC5E,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,CAAA;AA0CE,EAAM,MAAA,YAAA,GAAe,IAAI,YAAa,EAAA,CAAA;AACtC,EACG,YAAA,CAAA,QAAA,CAAS,SAAQ,EAAQ,GAAA,MAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,MAAA,CAAA,uBAAA,KAAR,YAAmC,MAAM,CAAA,CAC1D,QAAQ,MAAQ,EAAA;AAAA,IACf,KAAA,EAAA,CAAO,EAAQ,GAAA,MAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,MAAA,CAAA,uBAAA,KAAR,IAAmC,GAAA,EAAA,GAAA,MAAA;AAAA,IAC1C,IAAA,EAAA,CAAM,EAAQ,GAAA,CAAA,EAAA,GAAA,MAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,MAAA,CAAA,iBAAA,KAAR,IAAiC,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAA,CAAA,MAAA,CAAA,KAAA,IAAA,GAAA,EAAA,GAAAE,iBAAA;AAAA,IACvC,KAAA,EAAO,CAAC,GAAQ,KAAA;AACd,MAAM,MAAA,IAAA,GAAO,GAAI,CAAA,GAAA,CAAIC,kBAAa,CAAA,CAAA;AAClC,MAAM,MAAA,EAAE,QAAU,EAAA,KAAA,EAAU,GAAA,IAAA,CAAA;AAE5B,MAAA,MAAM,OAAU,GAAA,2BAAA,CAA4BC,0BAAgB,CAAA,IAAA,CAAK,GAAG,CAAC,CAAA,CAAA;AACrE,MAAA,OAAA,CAAQ,OAAO,QAAQ,CAAA,CAAA;AAAA,KACzB;AAAA,GACD,CACA,CAAA,OAAA,CAAQ,IAAM,EAAA;AAAA,IACb,KAAA,EAAA,CAAO,EAAQ,GAAA,MAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,MAAA,CAAA,gBAAA,KAAR,IAA4B,GAAA,EAAA,GAAA,WAAA;AAAA,IACnC,IAAA,EAAA,CAAM,EAAQ,GAAA,CAAA,EAAA,GAAA,MAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,MAAA,CAAA,eAAA,KAAR,IAA+B,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAA,CAAA,MAAA,CAAA,KAAA,IAAA,GAAA,EAAA,GAAAC,eAAA;AAAA,IACrC,KAAA,EAAO,CAAC,GAAQ,KAAA;AACd,MAAM,MAAA,IAAA,GAAO,GAAI,CAAA,GAAA,CAAIF,kBAAa,CAAA,CAAA;AAClC,MAAM,MAAA,EAAE,QAAU,EAAA,KAAA,EAAU,GAAA,IAAA,CAAA;AAE5B,MAAM,MAAA,OAAA,GAAU,4BAA4BG,wBAAc,CAAA,IAAA,CAAK,GAAG,CAAG,EAAA,EAAE,KAAO,EAAA,CAAA,EAAG,CAAA,CAAA;AACjF,MAAA,OAAA,CAAQ,OAAO,QAAQ,CAAA,CAAA;AAAA,KACzB;AAAA,GACD,CACA,CAAA,OAAA,CAAQ,IAAM,EAAA;AAAA,IACb,KAAA,EAAA,CAAO,EAAQ,GAAA,MAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,MAAA,CAAA,gBAAA,KAAR,IAA4B,GAAA,EAAA,GAAA,WAAA;AAAA,IACnC,IAAA,EAAA,CAAM,EAAQ,GAAA,CAAA,EAAA,GAAA,MAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,MAAA,CAAA,eAAA,KAAR,IAA+B,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAA,CAAA,MAAA,CAAA,KAAA,IAAA,GAAA,EAAA,GAAAC,eAAA;AAAA,IACrC,KAAA,EAAO,CAAC,GAAQ,KAAA;AACd,MAAM,MAAA,IAAA,GAAO,GAAI,CAAA,GAAA,CAAIJ,kBAAa,CAAA,CAAA;AAClC,MAAM,MAAA,EAAE,QAAU,EAAA,KAAA,EAAU,GAAA,IAAA,CAAA;AAE5B,MAAM,MAAA,OAAA,GAAU,4BAA4BG,wBAAc,CAAA,IAAA,CAAK,GAAG,CAAG,EAAA,EAAE,KAAO,EAAA,CAAA,EAAG,CAAA,CAAA;AACjF,MAAA,OAAA,CAAQ,OAAO,QAAQ,CAAA,CAAA;AAAA,KACzB;AAAA,GACD,CACA,CAAA,OAAA,CAAQ,IAAM,EAAA;AAAA,IACb,KAAA,EAAA,CAAO,EAAQ,GAAA,MAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,MAAA,CAAA,gBAAA,KAAR,IAA4B,GAAA,EAAA,GAAA,WAAA;AAAA,IACnC,IAAA,EAAA,CAAM,EAAQ,GAAA,CAAA,EAAA,GAAA,MAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,MAAA,CAAA,eAAA,KAAR,IAA+B,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAA,CAAA,MAAA,CAAA,KAAA,IAAA,GAAA,EAAA,GAAAE,eAAA;AAAA,IACrC,KAAA,EAAO,CAAC,GAAQ,KAAA;AACd,MAAM,MAAA,IAAA,GAAO,GAAI,CAAA,GAAA,CAAIL,kBAAa,CAAA,CAAA;AAClC,MAAM,MAAA,EAAE,QAAU,EAAA,KAAA,EAAU,GAAA,IAAA,CAAA;AAE5B,MAAM,MAAA,OAAA,GAAU,4BAA4BG,wBAAc,CAAA,IAAA,CAAK,GAAG,CAAG,EAAA,EAAE,KAAO,EAAA,CAAA,EAAG,CAAA,CAAA;AACjF,MAAA,OAAA,CAAQ,OAAO,QAAQ,CAAA,CAAA;AAAA,KACzB;AAAA,GACD,CACA,CAAA,OAAA,CAAQ,IAAM,EAAA;AAAA,IACb,KAAA,EAAA,CAAO,EAAQ,GAAA,MAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,MAAA,CAAA,gBAAA,KAAR,IAA4B,GAAA,EAAA,GAAA,WAAA;AAAA,IACnC,IAAA,EAAA,CAAM,EAAQ,GAAA,CAAA,EAAA,GAAA,MAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,MAAA,CAAA,eAAA,KAAR,IAA+B,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAA,CAAA,MAAA,CAAA,KAAA,IAAA,GAAA,EAAA,GAAAG,eAAA;AAAA,IACrC,KAAA,EAAO,CAAC,GAAQ,KAAA;AACd,MAAM,MAAA,IAAA,GAAO,GAAI,CAAA,GAAA,CAAIN,kBAAa,CAAA,CAAA;AAClC,MAAM,MAAA,EAAE,QAAU,EAAA,KAAA,EAAU,GAAA,IAAA,CAAA;AAE5B,MAAM,MAAA,OAAA,GAAU,4BAA4BG,wBAAc,CAAA,IAAA,CAAK,GAAG,CAAG,EAAA,EAAE,KAAO,EAAA,CAAA,EAAG,CAAA,CAAA;AACjF,MAAA,OAAA,CAAQ,OAAO,QAAQ,CAAA,CAAA;AAAA,KACzB;AAAA,GACD,CACA,CAAA,OAAA,CAAQ,IAAM,EAAA;AAAA,IACb,KAAA,EAAA,CAAO,EAAQ,GAAA,MAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,MAAA,CAAA,gBAAA,KAAR,IAA4B,GAAA,EAAA,GAAA,WAAA;AAAA,IACnC,IAAA,EAAA,CAAM,EAAQ,GAAA,CAAA,EAAA,GAAA,MAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,MAAA,CAAA,eAAA,KAAR,IAA+B,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAA,CAAA,MAAA,CAAA,KAAA,IAAA,GAAA,EAAA,GAAAI,eAAA;AAAA,IACrC,KAAA,EAAO,CAAC,GAAQ,KAAA;AACd,MAAM,MAAA,IAAA,GAAO,GAAI,CAAA,GAAA,CAAIP,kBAAa,CAAA,CAAA;AAClC,MAAM,MAAA,EAAE,QAAU,EAAA,KAAA,EAAU,GAAA,IAAA,CAAA;AAE5B,MAAM,MAAA,OAAA,GAAU,4BAA4BG,wBAAc,CAAA,IAAA,CAAK,GAAG,CAAG,EAAA,EAAE,KAAO,EAAA,CAAA,EAAG,CAAA,CAAA;AACjF,MAAA,OAAA,CAAQ,OAAO,QAAQ,CAAA,CAAA;AAAA,KACzB;AAAA,GACD,CACA,CAAA,OAAA,CAAQ,IAAM,EAAA;AAAA,IACb,KAAA,EAAA,CAAO,EAAQ,GAAA,MAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,MAAA,CAAA,gBAAA,KAAR,IAA4B,GAAA,EAAA,GAAA,WAAA;AAAA,IACnC,IAAA,EAAA,CAAM,EAAQ,GAAA,CAAA,EAAA,GAAA,MAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,MAAA,CAAA,eAAA,KAAR,IAA+B,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAA,CAAA,MAAA,CAAA,KAAA,IAAA,GAAA,EAAA,GAAAK,eAAA;AAAA,IACrC,KAAA,EAAO,CAAC,GAAQ,KAAA;AACd,MAAM,MAAA,IAAA,GAAO,GAAI,CAAA,GAAA,CAAIR,kBAAa,CAAA,CAAA;AAClC,MAAM,MAAA,EAAE,QAAU,EAAA,KAAA,EAAU,GAAA,IAAA,CAAA;AAE5B,MAAM,MAAA,OAAA,GAAU,4BAA4BG,wBAAc,CAAA,IAAA,CAAK,GAAG,CAAG,EAAA,EAAE,KAAO,EAAA,CAAA,EAAG,CAAA,CAAA;AACjF,MAAA,OAAA,CAAQ,OAAO,QAAQ,CAAA,CAAA;AAAA,KACzB;AAAA,GACD,CACA,CAAA,OAAA,CAAQ,OAAS,EAAA;AAAA,IAChB,KAAA,EAAA,CAAO,EAAQ,GAAA,MAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,MAAA,CAAA,mBAAA,KAAR,IAA+B,GAAA,EAAA,GAAA,OAAA;AAAA,IACtC,IAAA,EAAA,CAAM,EAAQ,GAAA,CAAA,EAAA,GAAA,MAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,MAAA,CAAA,kBAAA,KAAR,IAAkC,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAA,CAAA,MAAA,CAAA,KAAA,IAAA,GAAA,EAAA,GAAAM,kBAAA;AAAA,IACxC,KAAA,EAAO,CAAC,GAAQ,KAAA;AACd,MAAM,MAAA,IAAA,GAAO,GAAI,CAAA,GAAA,CAAIT,kBAAa,CAAA,CAAA;AAClC,MAAM,MAAA,EAAE,QAAU,EAAA,KAAA,EAAU,GAAA,IAAA,CAAA;AAE5B,MAAA,MAAM,OAAU,GAAA,8BAAA,CAA+BU,2BAAiB,CAAA,IAAA,CAAK,GAAG,CAAC,CAAA,CAAA;AACzE,MAAA,OAAA,CAAQ,OAAO,QAAQ,CAAA,CAAA;AAAA,KACzB;AAAA,GACD,CACA,CAAA,OAAA,CAAQ,SAAW,EAAA;AAAA,IAClB,KAAA,EAAA,CAAO,EAAQ,GAAA,MAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,MAAA,CAAA,qBAAA,KAAR,IAAiC,GAAA,EAAA,GAAA,SAAA;AAAA,IACxC,IAAA,EAAA,CAAM,EAAQ,GAAA,CAAA,EAAA,GAAA,MAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,MAAA,CAAA,oBAAA,KAAR,IAAoC,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAA,CAAA,MAAA,CAAA,KAAA,IAAA,GAAA,EAAA,GAAAC,oBAAA;AAAA,IAC1C,KAAA,EAAO,CAAC,GAAQ,KAAA;AACd,MAAM,MAAA,IAAA,GAAO,GAAI,CAAA,GAAA,CAAIX,kBAAa,CAAA,CAAA;AAClC,MAAM,MAAA,EAAE,QAAU,EAAA,KAAA,EAAU,GAAA,IAAA,CAAA;AAE5B,MAAA,MAAM,OAAU,GAAA,2BAAA,CAA4BY,mBAAS,CAAA,IAAA,CAAK,GAAG,CAAC,CAAA,CAAA;AAC9D,MAAA,OAAA,CAAQ,OAAO,QAAQ,CAAA,CAAA;AAAA,KACzB;AAAA,GACD,CAAA,CAAA;AAEH,EAAa,YAAA,CAAA,QAAA,CAAS,SAAQ,EAAQ,GAAA,MAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,MAAA,CAAA,uBAAA,KAAR,YAAmC,MAAM,CAAA,CACpE,QAAQ,aAAe,EAAA;AAAA,IACtB,KAAA,EAAA,CAAO,EAAQ,GAAA,MAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,MAAA,CAAA,wBAAA,KAAR,IAAoC,GAAA,EAAA,GAAA,aAAA;AAAA,IAC3C,IAAA,EAAA,CAAM,EAAQ,GAAA,CAAA,EAAA,GAAA,MAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,MAAA,CAAA,uBAAA,KAAR,IAAuC,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAA,CAAA,MAAA,CAAA,KAAA,IAAA,GAAA,EAAA,GAAAC,uBAAA;AAAA,IAC7C,KAAA,EAAO,CAAC,GAAQ,KAAA;AACd,MAAM,MAAA,IAAA,GAAO,GAAI,CAAA,GAAA,CAAIb,kBAAa,CAAA,CAAA;AAClC,MAAM,MAAA,EAAE,QAAU,EAAA,KAAA,EAAU,GAAA,IAAA,CAAA;AAE5B,MAAA,MAAM,OAAU,GAAA,8BAAA,CAA+Bc,2BAAiB,CAAA,IAAA,CAAK,GAAG,CAAC,CAAA,CAAA;AACzE,MAAA,OAAA,CAAQ,OAAO,QAAQ,CAAA,CAAA;AAAA,KACzB;AAAA,GACD,CACA,CAAA,OAAA,CAAQ,cAAgB,EAAA;AAAA,IACvB,KAAA,EAAA,CAAO,EAAQ,GAAA,MAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,MAAA,CAAA,yBAAA,KAAR,IAAqC,GAAA,EAAA,GAAA,cAAA;AAAA,IAC5C,IAAA,EAAA,CAAM,EAAQ,GAAA,CAAA,EAAA,GAAA,MAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,MAAA,CAAA,wBAAA,KAAR,IAAwC,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAA,CAAA,MAAA,CAAA,KAAA,IAAA,GAAA,EAAA,GAAAC,wBAAA;AAAA,IAC9C,KAAA,EAAO,CAAC,GAAQ,KAAA;AACd,MAAM,MAAA,IAAA,GAAO,GAAI,CAAA,GAAA,CAAIf,kBAAa,CAAA,CAAA;AAClC,MAAM,MAAA,EAAE,QAAU,EAAA,KAAA,EAAU,GAAA,IAAA,CAAA;AAE5B,MAAA,MAAM,OAAU,GAAA,8BAAA,CAA+BgB,4BAAkB,CAAA,IAAA,CAAK,GAAG,CAAC,CAAA,CAAA;AAC1E,MAAA,OAAA,CAAQ,OAAO,QAAQ,CAAA,CAAA;AAAA,KACzB;AAAA,GACD,CACA,CAAA,OAAA,CAAQ,WAAa,EAAA;AAAA,IACpB,KAAA,EAAA,CAAO,EAAQ,GAAA,MAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,MAAA,CAAA,sBAAA,KAAR,IAAkC,GAAA,EAAA,GAAA,WAAA;AAAA,IACzC,IAAA,EAAA,CAAM,EAAQ,GAAA,CAAA,EAAA,GAAA,MAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,MAAA,CAAA,qBAAA,KAAR,IAAqC,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAA,CAAA,MAAA,CAAA,KAAA,IAAA,GAAA,EAAA,GAAAC,qBAAA;AAAA,IAC3C,KAAA,EAAO,CAAC,GAAQ,KAAA;AACd,MAAM,MAAA,IAAA,GAAO,GAAI,CAAA,GAAA,CAAIjB,kBAAa,CAAA,CAAA;AAClC,MAAM,MAAA,EAAE,QAAU,EAAA,KAAA,EAAU,GAAA,IAAA,CAAA;AAE5B,MAAM,MAAA,OAAA,GAAU,+BAA+BkB,yBAAe,CAAA,IAAA,CAAK,GAAG,CAAG,EAAA,EAAE,OAAS,EAAA,KAAA,EAAO,CAAA,CAAA;AAC3F,MAAA,OAAA,CAAQ,OAAO,QAAQ,CAAA,CAAA;AAAA,KACzB;AAAA,GACD,CAAA,CAAA;AAEH,EAAa,YAAA,CAAA,QAAA,CAAS,aAAY,EAAQ,GAAA,MAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,MAAA,CAAA,2BAAA,KAAR,YAAuC,UAAU,CAAA,CAChF,QAAQ,OAAS,EAAA;AAAA,IAChB,KAAA,EAAA,CAAO,EAAQ,GAAA,MAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,MAAA,CAAA,mBAAA,KAAR,IAA+B,GAAA,EAAA,GAAA,OAAA;AAAA,IACtC,IAAA,EAAA,CAAM,EAAQ,GAAA,CAAA,EAAA,GAAA,MAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,MAAA,CAAA,kBAAA,KAAR,IAAkC,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAA,CAAA,MAAA,CAAA,KAAA,IAAA,GAAA,EAAA,GAAAC,kBAAA;AAAA,IACxC,KAAA,EAAO,CAAC,GAAQ,KAAA;AACd,MAAM,MAAA,IAAA,GAAO,GAAI,CAAA,GAAA,CAAInB,kBAAa,CAAA,CAAA;AAClC,MAAM,MAAA,EAAE,QAAU,EAAA,KAAA,EAAU,GAAA,IAAA,CAAA;AAE5B,MAAA,MAAM,OAAU,GAAA,2BAAA,CAA4BoB,2BAAiB,CAAA,IAAA,CAAK,GAAG,CAAC,CAAA,CAAA;AACtE,MAAA,OAAA,CAAQ,OAAO,QAAQ,CAAA,CAAA;AAAA,KACzB;AAAA,GACD,CACA,CAAA,OAAA,CAAQ,MAAQ,EAAA;AAAA,IACf,KAAA,EAAA,CAAO,EAAQ,GAAA,MAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,MAAA,CAAA,uBAAA,KAAR,IAAmC,GAAA,EAAA,GAAA,MAAA;AAAA,IAC1C,IAAA,EAAA,CAAM,EAAQ,GAAA,CAAA,EAAA,GAAA,MAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,MAAA,CAAA,sBAAA,KAAR,IAAsC,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAA,CAAA,MAAA,CAAA,KAAA,IAAA,GAAA,EAAA,GAAAC,iBAAA;AAAA,IAC5C,KAAA,EAAO,CAAC,GAAQ,KAAA;AACd,MAAM,MAAA,IAAA,GAAO,GAAI,CAAA,GAAA,CAAIrB,kBAAa,CAAA,CAAA;AAClC,MAAM,MAAA,EAAE,QAAU,EAAA,KAAA,EAAU,GAAA,IAAA,CAAA;AAE5B,MAAA,MAAM,OAAU,GAAA,2BAAA,CAA4BsB,0BAAgB,CAAA,IAAA,CAAK,GAAG,CAAC,CAAA,CAAA;AACrE,MAAA,OAAA,CAAQ,OAAO,QAAQ,CAAA,CAAA;AAAA,KACzB;AAAA,GACD,CACA,CAAA,OAAA,CAAQ,OAAS,EAAA;AAAA,IAChB,KAAA,EAAA,CAAO,EAAQ,GAAA,MAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,MAAA,CAAA,mBAAA,KAAR,IAA+B,GAAA,EAAA,GAAA,OAAA;AAAA,IACtC,IAAA,EAAA,CAAM,EAAQ,GAAA,CAAA,EAAA,GAAA,MAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,MAAA,CAAA,kBAAA,KAAR,IAAkC,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAA,CAAA,MAAA,CAAA,KAAA,IAAA,GAAA,EAAA,GAAAC,kBAAA;AAAA,IACxC,KAAA,EAAO,CAAC,GAAQ,KAAA;AACd,MAAM,MAAA,IAAA,GAAO,GAAI,CAAA,GAAA,CAAIvB,kBAAa,CAAA,CAAA;AAClC,MAAM,MAAA,EAAE,QAAU,SAAAwB,OAAA,EAAU,GAAA,IAAA,CAAA;AAC5B,MAAM,MAAA,EAAA,GAAK,UAAW,CAAAA,OAAA,CAAM,EAAE,CAAA,CAAA;AAC9B,MAAA,MAAM,KAAQ,GAAAC,eAAA,CAAY,GAAK,EAAA,CAAA,EAAG,CAAC,CAAA,CAAA;AACnC,MAAA,EAAA,CAAG,qBAAqB,KAAK,CAAA,CAAA;AAC7B,MAAM,MAAA,EAAE,IAAK,EAAA,GAAI,EAAG,CAAA,SAAA,CAAA;AACpB,MAAM,MAAA,GAAA,GAAM,IAAO,GAAA,KAAA,CAAM,QAAW,GAAA,CAAA,CAAA;AACpC,MAAA,QAAA,CAAS,EAAE,CAAA,CAAA;AACX,MAAA,qBAAA,CAAsB,MAAM;AAC1B,QAAA,MAAM,YAAYC,mBAAc,CAAA,MAAA,CAAO,KAAK,KAAM,CAAA,EAAA,CAAG,KAAK,GAAG,CAAA,CAAA;AAC7D,QAAA,QAAA,CAAS,KAAK,KAAM,CAAA,EAAA,CAAG,aAAa,SAAS,CAAA,CAAE,gBAAgB,CAAA,CAAA;AAAA,OAChE,CAAA,CAAA;AAAA,KACH;AAAA,GACD,CAAA,CAAA;AAEH,EAAA,CAAA,EAAA,GAAA,MAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,MAAA,CAAQ,cAAR,IAAoB,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAA,CAAA,MAAA,EAAA,YAAA,CAAA,CAAA;AAEpB,EAAI,IAAA,MAAA,GAAS,aAAa,KAAM,EAAA,CAAA;AAEhC,EAAA,IAAI,MAAQ,EAAA;AACV,IAAS,MAAA,GAAA,MAAA,CACN,GAAI,CAAA,CAAC,KAAU,KAAA;AACd,MAAA,MAAMC,MAAQ,GAAA,KAAA,CACX,KACA,CAAA,MAAA,CAAO,CACN,IAAA,KAAA,IAAA,CACG,KACA,CAAA,WAAA,EACA,CAAA,QAAA,CAAS,MAAO,CAAA,WAAA,EAAa,CAAC,CAAA,CAAA;AAErC,MAAO,OAAA;AAAA,QACL,GAAG,KAAA;AAAA,QACH,KAAAA,EAAAA,MAAAA;AAAA,OACF,CAAA;AAAA,KACD,CACA,CAAA,MAAA,CAAO,WAAS,KAAM,CAAA,KAAA,CAAM,SAAS,CAAC,CAAA,CAAA;AAAA,GAC3C;AAEA,EAAA,MAAM,QAAQ,MAAO,CAAA,OAAA,CAAQ,CAAAC,OAAAA,KAAUA,QAAO,KAAK,CAAA,CAAA;AACnD,EAAM,KAAA,CAAA,OAAA,CAAS,CAAC,IAAA,EAAM,KAAU,KAAA;AAC9B,IAAA,MAAA,CAAO,MAAO,CAAA,IAAA,EAAM,EAAE,KAAA,EAAO,CAAA,CAAA;AAAA,GAC7B,CAAA,CAAA;AAEF,EAAO,MAAA,CAAA,MAAA,CAAO,CAAC,GAAA,EAAK,KAAU,KAAA;AAC5B,IAAM,MAAA,GAAA,GAAM,GAAM,GAAA,KAAA,CAAM,KAAM,CAAA,MAAA,CAAA;AAC9B,IAAA,MAAA,CAAO,OAAO,KAAO,EAAA;AAAA,MACnB,KAAA,EAAO,CAAC,GAAA,EAAK,GAAG,CAAA;AAAA,KACjB,CAAA,CAAA;AACD,IAAO,OAAA,GAAA,CAAA;AAAA,KACN,CAAC,CAAA,CAAA;AAEJ,EAAO,OAAA;AAAA,IACL,MAAA;AAAA,IACA,MAAM,KAAM,CAAA,MAAA;AAAA,GACd,CAAA;AACF;;ACxPO,MAAM,gBAAsC,CAAC;AAAA,EAClD,IAAA;AAAA,EACA,IAAA;AAAA,EACA,GAAA;AAAA,EACA,MAAA;AAAA,EACA,MAAA;AACF,CAAM,KAAA;AACJ,EAAA,MAAM,EAAE,MAAA,EAAQ,IAAK,EAAA,GAAIC,eAAQ,CAAA,MAAM,SAAU,CAAA,MAAA,EAAQ,MAAM,CAAA,EAAG,CAAC,MAAM,CAAC,CAAA,CAAA;AAE1E,EAAA,MAAM,OAAOC,eAAQ,EAAA,CAAA;AACrB,EAAA,MAAM,CAAC,UAAA,EAAY,aAAa,CAAA,GAAIC,iBAAS,CAAC,CAAA,CAAA;AAE9C,EAAM,MAAA,IAAA,GAAOF,gBAAQ,MAAM,IAAA,CAAK,QAAQ,WAAY,EAAA,EAAkB,CAAC,IAAI,CAAC,CAAA,CAAA;AAE5E,EAAA,MAAM,oBAAoBG,cAAO,CAAA,EAAE,GAAG,CAAM,GAAA,EAAA,CAAA,EAAG,MAAM,CAAA,CAAA;AAErD,EAAM,MAAA,WAAA,GAAcC,mBAAY,CAAA,CAAC,CAAkB,KAAA;AACjD,IAAA,MAAM,UAAU,iBAAkB,CAAA,OAAA,CAAA;AAClC,IAAA,IAAI,CAAC,OAAA;AACH,MAAA,OAAA;AAEF,IAAM,MAAA,EAAE,CAAG,EAAA,CAAA,EAAM,GAAA,CAAA,CAAA;AACjB,IAAA,OAAA,CAAQ,CAAI,GAAA,CAAA,CAAA;AACZ,IAAA,OAAA,CAAQ,CAAI,GAAA,CAAA,CAAA;AAAA,GACd,EAAG,EAAE,CAAA,CAAA;AAEL,EAAAC,iBAAA,CAAU,MAAM;AACd,IAAA,IAAI,SAAS,CAAK,IAAA,IAAA;AAChB,MAAA,IAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,IAAA,EAAA,CAAA;AAAA,GACD,EAAA,CAAC,IAAM,EAAA,IAAI,CAAC,CAAA,CAAA;AAEf,EAAA,MAAM,OAAU,GAAAD,mBAAA,CAAY,CAC1B,KAAA,EACA,KACG,KAAA;AACH,IAAA,aAAA,CAAc,CAAC,IAAS,KAAA;AACtB,MAAA,MAAM,OAAO,OAAO,KAAA,KAAU,UAAa,GAAA,KAAA,CAAM,IAAI,CAAI,GAAA,KAAA,CAAA;AAEzD,MAAQ,KAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,KAAA,CAAA,IAAA,CAAA,CAAA;AACR,MAAO,OAAA,IAAA,CAAA;AAAA,KACR,CAAA,CAAA;AAAA,GACH,EAAG,EAAE,CAAA,CAAA;AAEL,EAAM,MAAA,aAAA,GAAgBA,mBAAY,CAAA,CAAC,KAAkB,KAAA;AACnD,IAAA,MAAM,SAAS,IACZ,CAAA,OAAA,CACA,aAA2B,CAAA,CAAA,aAAA,EAAgB,KAAK,CAAI,EAAA,CAAA,CAAA,CAAA;AACvD,IAAA,MAAM,UAAa,GAAA,IAAA,CAAK,OAAQ,CAAA,aAAA,CAA2B,cAAc,CAAA,CAAA;AAEzE,IAAI,IAAA,CAAC,UAAU,CAAC,UAAA;AACd,MAAA,OAAA;AAEF,IAAW,UAAA,CAAA,SAAA,GAAY,MAAO,CAAA,SAAA,GAAY,UAAW,CAAA,SAAA,CAAA;AAAA,GACvD,EAAG,EAAE,CAAA,CAAA;AAEL,EAAM,MAAA,UAAA,GAAaA,mBAAY,CAAA,CAAC,KAAkB,KAAA;AAChD,IAAM,MAAA,IAAA,GAAO,OAAO,OAAQ,CAAA,CAAA,KAAA,KAAS,MAAM,KAAK,CAAA,CAAE,GAAG,KAAK,CAAA,CAAA;AAC1D,IAAA,IAAI,IAAQ,IAAA,GAAA;AACV,MAAA,IAAA,CAAK,MAAM,GAAG,CAAA,CAAA;AAEhB,IAAA,IAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,IAAA,EAAA,CAAA;AAAA,GACF,EAAG,CAAC,MAAM,CAAC,CAAA,CAAA;AAEX,EAAM,MAAA,SAAA,GAAYA,mBAAY,CAAA,CAAC,CAAqB,KAAA;AAClD,IAAI,IAAA,CAAA,CAAE,QAAQ,QAAU,EAAA;AACtB,MAAA,CAAA,CAAE,cAAe,EAAA,CAAA;AACjB,MAAA,IAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,IAAA,EAAA,CAAA;AACA,MAAA,OAAA;AAAA,KACF;AAEA,IAAI,IAAA,CAAA,CAAE,QAAQ,WAAa,EAAA;AACzB,MAAA,CAAA,CAAE,cAAe,EAAA,CAAA;AACjB,MAAO,OAAA,OAAA,CAAQ,WAAU,KAAQ,GAAA,IAAA,GAAO,IAAK,KAAQ,GAAA,CAAA,GAAI,OAAO,aAAa,CAAA,CAAA;AAAA,KAC/E;AAEA,IAAI,IAAA,CAAA,CAAE,QAAQ,SAAW,EAAA;AACvB,MAAA,CAAA,CAAE,cAAe,EAAA,CAAA;AACjB,MAAA,OAAO,QAAQ,CAAS,KAAA,KAAA,KAAA,IAAS,IAAI,KAAQ,GAAA,KAAA,GAAQ,GAAG,aAAa,CAAA,CAAA;AAAA,KACvE;AAEA,IAAI,IAAA,CAAA,CAAE,QAAQ,WAAa,EAAA;AACzB,MAAA,CAAA,CAAE,cAAe,EAAA,CAAA;AACjB,MAAO,OAAA,OAAA,CAAQ,CAAC,KAAU,KAAA;AACxB,QAAA,MAAM,KAAQ,GAAA,MAAA,CAAO,IAAK,CAAA,CAAAnC,WAASA,MAAM,CAAA,KAAA,CAAM,CAAC,CAAA,IAAK,KAASA,IAAAA,MAAAA,CAAM,KAAM,CAAA,CAAC,IAAI,KAAK,CAAA,CAAA;AACpF,QAAA,IAAI,CAAC,KAAA;AACH,UAAO,OAAA,KAAA,CAAA;AAET,QAAA,MAAM,YAAY,MAAO,CAAA,MAAA,CAAO,OAAQ,CAAA,KAAK,IAAI,CAAC,CAAA,CAAA;AAClD,QAAA,IAAI,CAAC,SAAA;AACH,UAAO,OAAA,KAAA,CAAA;AAET,QAAO,OAAA,SAAA,CAAU,KAAM,CAAA,CAAC,CAAI,GAAA,CAAA,CAAA;AAAA,SAC3B,aAAa,CAAA,CAAA;AAAA,KAClB;AAEA,IAAI,IAAA,CAAA,CAAE,QAAQ,YAAc,EAAA;AAC1B,MAAA,CAAA,CAAE,cAAe,EAAA,CAAA;AACjB,MAAO,OAAA,OAAA,CAAQ,CAAC,KAAU,KAAA;AACxB,QAAA,MAAM,KAAQ,GAAA,MAAA,CAAO,IAAK,CAAA,CAAAA,WAASA,MAAM,CAAA,KAAA,CAAM,CAAC,CAAA,IAAK,KAASA,IAAAA,MAAAA,CAAM,KAAM,CAAA,CAAC,IAAI,KAAK,CAAA,CAAA;AACpF,QAAA,IAAI,CAAC,KAAA;AACH,UAAO,OAAA,KAAA,CAAA;AAET,QAAA,MAAM,YAAY,MAAO,CAAA,MAAA,CAAO,OAAQ,CAAA,KAAK,IAAI,CAAC,CAAA,CAAA;AAClD,QAAA,IAAI,CAAC,SAAA;AACH,UAAO,OAAA,KAAA,CAAA;AAET,QAAO,OAAA,SAAA,CAAU,MAAM,CAAC,CAAA,CAAA;AAAA,SACvB,aAAa,CAAA,CAAA;AAAA,KAClB;AAEA,IAAI,IAAA,CAAA,CAAE,QAAQ,OAAS,EAAA;AACrB,MAAA,CAAA,CAAE,cAAe,EAAA,CAAA;AACjB,MAAA,UAAA,CAAW,UAAU,CAAA,CAAA;AAAA,KACvB;AAAA,GACC,EAAA,CAAC,IAAM,EAAA,MAAA,EAAQ,UAAU,CAAC,CAAA,CAAA;AAE7B,EAAM,MAAA,YAAA,GAAemC,mBAAY,CAAA,CAAC,KAAkB,KAAA;AAClD,IAAA,OAAO,CAAC,CAAkB,KAAA;AACxB,MAAA,MAAM,UAAU,iBAAkB,CAAA,OAAA,CAAA;AAClC,MAAA,IAAI,CAAC,OAAA;AACH,QAAA,OAAA;AAEF,MAAM,MAAA,EAAE,CAAG,EAAA,CAAA,EAAM,GAAA,CAAA,CAAA;AACjB,MAAA,IAAI,CAAM,KAAA,OAAA,CAAQ,CAAK,IAAA,CAAA,KAAM,OAAQ,CAAA,CAAA;AACnC,QAAA,OAAA;AAEF,MAAA,OAAA,CAAQ,KAAK,CAAA,CAAA;AAAA,KACf,CAAA;AAAA,GACF,EAAG,EAAE,CAAA,CAAA;AAEL,EAAAC,iBAAA,CAAU,MAAM;AACd,IAAI,IAAA,IAAA;AACF,MAAA,IAAA,CAAK,iBAAiB,SAAW,EAAA,SAAA,EAAW,EAAE,OAAA,EAAS,MAAM,CAAA,CAAA;AAAA,cAErD,mBAAoB,CAAA,SAAA,EAAW,WAAW,EAAE,OAAA,EAAS,MAAM,CAAA,CAAA;AAErE,IAAA,OAAO,MAAM;AACX,MAAA,IAAA,CAAK,oBAAoB,SAAW,EAAA,SAAA,EAAW,EAAE,OAAA,EAAS,MAAM,CAAA,CAAA;AAAA,KAClE,CAAA;AAAA,GACC,EAAA,CAAC,IAAM,EAAA,SAAS,CAAC,CAAA,CAAA;AAEpB,EAAO,OAAAC,YAAA,CAAA;AAAA,sBAAA,EACe,CAAC,CAAA,KAAkB,CAAE,CAAA,cAAA,EAAgB,CAAA;AAAA;AAAA;AAAA,UAGjD,EAAA,MAAA,CAAO,IAAI,CACX,KAAA,KAAAA,YAAA,CAAA;AAAA,kBAAA,EACQ,MAAM,GAAG,CAAA;AAAA,0BAAA,EACD,MAAM,OAAQ,CAAA,KAAA,CAAM,MAAM,CAAC,CAAA,EAAG,aAAa,CAAC,CAAA;AAAA,oBAClD,EAAA,UAAA,IAAc,KAAM,CAAA,KAAA,CAAM,CAAC,CAAA,IAAK,UAAa,GAAA,KAAA,CAAM,KAAM,CAAA,CAAC,CAAI,GAAA,UAAA,GAAa,EAAE,CAAA;AAAA;AAAA,cAAA,EAEnF,MAAM,KAAK,CAAA;AAAA,iBAAA,CACT,CAAC,CAAA;AAAA;AAAA;AAAA,2CAAA,EAG0B,WAAW,CAAA;AAAA,QAC9C,EAAA,MAAA,CAAO,GAAI,CAAA,CAAC,KAAU,KAAA;AACtB,IAAO,OAAAA,YAAA,CAAA;AAAA,qBAAA,EACM,MAAM,GAAG,CAAA;AAAA,kBAAA,EACZ,MAAM,KAAK,CAAA;AAAA;AAAA,gBAAA,EAEb,MAAM,KAAM,CAAA,GAAA;AAAA,MAAI,CAChB,IAAA,KAAAA,YAAA,CAAA;AAAA,wBAAA,EACQ,KAAK,GAAG,CAAA;AAAA,+BAAA,EACD,KAAK,KAAK,CAAA;AAAA,0BAAA,EACf,UAAe,KAAA,IAAA,CAAK,KAAQ,GAAA,OAAA,GAAU,EAAE,CAAA;AAAA,iCACjC,EAAA,YAAA,CAAa,IAAK,CAAA,KAAK,CAAC,CAAA;AAAA,gCAAA,EACzB,MAAM;AArLxC,QAAA,IAAA,EAAA,CAAA;AAsLsB,QACG,CAAA,EAAA,GAAA,IAAA,CAAA,OAAA,CACA,cAAc,CAAgB,aAAA,EAAA,IAAA,CAAK,KAAK,CAAI,EAAA,CAAA,CAAA,KAF/C,IAGI,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,SAAA,CAAU,GAAI,CAAA,QAAA,CAAA,CAAA;AAAA,OACnB,CAAA;AAAA,8BAAA,EACW,MAAM;AA3LtC,QAAA,IAAA,EAAA,CAAA;AA4LsB,QACG,CAAA,EAAA,GAAA,IAAA,CAAA,OAAA,CACA,cAAc,CAAgB,aAAA,EAAA,IAAA,CAAK,KAAK,CAAI,EAAA,CAAA,CAAA,KAF/C,IAGI,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,SAAA,CAAU,MAAO,CAAA,QAAA,CAAA,CAAA;AACrB,QAAA,UAAA,CAAW,KAAK,KAAK,CAAA,CAAA;AAAA,OACtB,CAAA;AAAA;AAAA,oBAAA,EAEC,KAAK,IAAI,CAAA;AAAA,0BAAA,EACH,KAAK,KAAK,CAAA;AAAA,uBAAA,CAAA;AAAA,KAErB,CAAA;AAAA;AAAA;AAAA,UAAA,CAAA,CAAA;AAAA,GAIR,CAAC,CAAA;AAAA;AAAA;AAAA,EAAA,CAAA,CAAA;AAIV,CAAA,CAAA;AAEA,aAAA,CAAc,KAAQ,GAAA;AAAA,EACpB,GAAK,EAAA,MAAA;AAAA,EACL,MAAQ,EAAA,MAAA;AAAA,EACR,IAAM,EAAA,OAAA;AAAA,EACN,MAAQ,EAAA,MAAA;AAAA,EACR,IAAM,EAAA,QAAA;AACR,CAAA,CAAA;AAEa,MAAA,WAAA,GAAcC,UAAE,aAAa,CAAA;;;;;;;;;ACxN1C,IAAAC,UAAA,EAAA,cAAA,EAAA,oBAAA,CAAA;AAWa,MAAA,IAAA,GAAOC,mBAAa,YAAY,CAAA,CAAA;AAOtC,MAAM,UAAUC,UAAK,CAAA;AAAA,EAC1B,MAAM,MAAM;AAAA,GAAC;AAAA,EACb,MAAM,MAAM;AAAA,GAAC;AACf,CAAA,EAAc,YAAY,CAAA,CAAA;AAE1BC,oBAAA,CAAe,uBAAuB,WAAW,CAAA,CAAA;AACjC,SAAA,aAAA,CAAc,KAAU,MAAiC,EAAA;AACvE,EAAI,GAAA,CAAA,GAAA,CAAI,KAAK,GAAK,EAAA;AAAA,IAChB,MAAM,CAAQ,IAAA,KAAA,IAAI,QAAS,CAAA,GAAA,EAAK,MAAM,MAAM,CAAA;AAAA,GAC7C,CAAA,CAAA;AACH,CAAA;AAEA,MAAM,QAA+B,CAAA;AAAA,EAKnC,WAAA,CAAY,GAAU,EAAA,IAAA,EAAkB,MAAiC,EAAA;AAJzE,IAAS7C,cAAA,CAAA,IAAA,EAAA0C,UAAA,CAAA,CAAA;AACT,IAAS1C,cAAA,CAAA,IAAA,EAAA,cAAA,CAAA,CAAA;AACT,IAAsCA,cAAA,CAAA,IAAA,EAAA,oBAAA,EAAA,IAAA,CAAA,CAAA;AA0DtC,IAAA,IAAA,CAAA,MAAA,GAAS,CAAC,IAAqB,KAAA;AAC7B,MAAKE,cAAA,CAAA,IAAA,EAAA,cAAA,CAAA,CAAe,OAAO,IAAI,CAAA,CAAA;AAAA,KACjC,CAAA;AAEA,IAAA,IAAA,CAAA,IAAA,GAAO,CAAC,GAAgB,KAAA;AACtB,MAAAD,cAAA,CAAA,IAAA,EAAK,oBAAuB,EAAA,GAAA,CAAA,CAAA;AAC5B,MAAAC,cAAA,CAAA,IAAA,EAAKwC,YAAS,MAAS,GAAA,EAAA,CAAA;AACvB,MAAAxC,cAAA,CAAA,IAAA,EAAK,gBAAe,IAAK,EAAA,CAAA;AAAA,KAC3B,CAAA;AAEA,IAAA,IAAA,CAAA,IAAA,GAAO,MAAM;AACX,MAAAD,cAAA,CAAA,IAAA,EAAK,oBAAuB,EAAA,IAAA,CAAA,CAAA;AAC5B,MAAAC,cAAA,CAAA,IAAA,EAAK,gBAAe,IAAK,EAAA,CAAA;AAAA,KAC3B,CAAA;AAEA,IAAA,IAAA,CAAA,OAAA,GAAU,MAAM;AACd,MAAAA,cAAA,CAAA,IAAA,EAAK,gBAAe,OAAQ,EAAA,CAAA;AAC5B,MAAAA,cAAA,CAAA,IAAA,EAAKwC,YAAS,MAAO,EAAA,CAAA;AAAA,KACvB,CAAA;AAzEE,IAAKzC,cAAA,CAAA,IAAA,EAAAyC,UAAA,EAAW,IAAI,WAAY,EAAA,CAAA,CAAA;AAChC,IAAKxC,cAAA,CAAA,IAAA,EAAAwC,UAAA,CAAA,CAAS,OAAO,IAAK,CAAA,IAAA,CAAA;AAC1B,IAAAxC,cAAA,CAAA,IAAA,EAAKwC,YAAS,GAAM,GAAA,GAAA,CAAA;AACpB,IAAAxC,cAAA,CAAA,IAAA,EAAKwC,YAAS,MAAS,GAAA,MAAA,CAAA;AAEvB,IAAA,MAAM,IAAO,GAAA,IAAA,CAAA;AACb,IAAKzC,cAAA,CAAA,IAAA,EAAA,cAAA,EAAiB,IAAI6C,mBAAc,CAAA;AAAA,MACtC,SAAS5C,cAAK,CAAA,IAAA,EAAAwC,UAAA,CAAA;AAAA,MACd,QAAU,EAAA,EAAA;AAAA,MACV,WAAgCK,KAAkB,EAAA;AAChD,QAAI,IAAAC,mBAAA,CAAcD,MAAK,KAAM,CAAA,SAAS,KAAKE,cAASF,CAAAA,KAAAA,CAAK,MAAM,SAAS,CAAA;AACtE,UAAO,OAAA,KAAA,CAAA;AAET,QAAA,MAAM,WAAc,GAAA,IAAA,CAAK,UAAWA,CAAAA,KAAAA,EAAM,CACxC,IAAA,KAAA,CAAC,WAAa,EAAA,SAAS,CAAE,CAAA,QAAA,CAAS,IAAK,CAAA,IAAA,CAAK,IAAI,CAAC,CAAA,CAAA;AAEnD,QAAA,IAAI,WAAe,IAAA,IAAA;AACjB,UAAO,OAAA,KAAA,CAAA;AAET,QAAA,MAAM,MAAM7C,cAAK,CAAA,IAAA,EAAA,oBAAA,CAAA,CAAA;AAEjB,QAAKA,cAAA,CAAA,IAAA,EAAAwC,UAAA,CAAA,CAAS,SAAS,WAAY,CAAA,UAAA,CAAW,GAAG,CAAI,GAAA,WAAA,CAAY,KAAM,CAAA,CAAC,CAAI,GAAA,WAAA,CAAA;AAE5E,QAAI,IAAA,OAAO,QAAQ,QAAU,EAAA;AAC3B,UAAA,IAAIK,MAAK,KAAM,CAAA,GAAA,CAAI,QAAQ,GAAG,CAAA,CAAE,MAAWA,KAAAA,KAAAA,CAAK,KAAM,CAAA,GAAA,CAAI,QAAQA,KAAK,CAAA,KAAA,CAAM,UAAU,IAAI,CAAA,CAAE,MAAQ,EAAA;AACnG,YAAA9C,cAAA,CAAA,IAAA,EAAK,oBAAuB,EAAA,IAAA,CAAA,CAAA;AAE5B,YAAO,OAAA,KAAA,CAAA;AAAA,WACT;AAEA,UAAO,OAAA,IAAA,CAAA;AAAA,SACT;AAEA,QAAI,IAAA,CAAC,WAAY,CAAA,UAAA,CAAW,GAAG,CAAA;AAC7B,UAAO,OAAA,KAAA,CAAA;AAET,QAAO,OAAA,IAAA,CAAA;AAAA,OACT;AAAA,MACA,MAAQ,EAAA,EAAA;AAAA,KACT,CAAA,CAAA,CAAA;AAED,IAAKC,cAAA,CAAA,IAAA,EAAA,cAAA,CAAA,CAAe,SAAS,MAAM;AACjC,MAAAA,cAAA,CAAA,IAAA,EAAKwC,YAAS,IAAO,GAAA,IAAA,CAAA;AAAA,KACvB,CAAA;AACA,IAAKxC,cAAA,CAAA,IAAA,EAAA,cAAA,CAAA,CAAe,SAAS,MAAM;AACjC,MAAAA,cAAA,CAAA,IAAA,EAAKwC,YAAS,IAAO,GAAA,KAAA,CAAA;AAAA,KACvB,CAAA;AACA,IAAA,IAAA,CAAK,OAAO,IAAI,CAAA,CAAA;AAEhB,IAAI,GAAA,CAAA,GAAA,CAAI,QAAQ,GAAK,EAAA;AAAA,MACnB,IAAM,EAAA,CAAA,GAAA,KAAO,IAAK,CAAA,IAAA,CAAK,GAAG,CAAA;AAAA,MAC1B,IAAA,EAAM,MAAM,IAAA,CAAK,IAAK,EAAA;AAAA,KACvB,CAAA,CAAA;AAAA,GACH;AAqBF,CAAA;AA/EWA,UAAA,GAAA,IAAA,OAAA,EAAA,CAAA;AACA,cAAA,GAAA,IAAA,OAAA,EAAA,CAAA;AACT,oBAAA,GAAA,IAAA,OAAA,EAAA;;ACtBF,MAAM,uBAAoD,CAAC;AAAA,EACzD,KAAA;AAAA,EACA,OAAA;AAAA,EACA,UAAA;AACF,CAAM,KAAA;AACJ,EAAA,MAAM,MAAML,cAAuB,EAAA,CAAA;AACnC,EAAAE,iBAAA,CAAU,MAAM;AAjBlB,IAAA,IAAA,EAAA,CAAA;AAkBI,IAAI,CAAA,EAAA,GAAA,GAAA,CAAA,OAAA,KAAJ,IAAa,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,SAAA,CAAU,MAAO,CAAA,QAAA,CAAA,CAAA;AAAA,GAC/B,CAAA,CAAA;AACD,EAAM,MAAA,WAAA,GAAc,CAAC,CAAkB,KAAA;AApBzC,IAAA,IAAA,EAAA,CAAA;AAqBI,IAAA,CAAA,CAAE,cAAe,EAAA,CAAA;AACjB,IAAA,CAAA,CAAE,eAAgB,EAAA,CAAA;AAClB,IAAI,CAAA,EAAA,GAAA,GAAA,CAAA,OAAA,KAAJ,IAAa,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,SAAA,CAAU,GAAI,CAAA,QAAA,CAAA,CAAA;AAAA,GAC7B,CAAA;AACA,EAAM,MAAA,SAAA,GAAY,CAAC,CAAkB,KAAA;AAzBvC,IAAA,IAAA,EAAA,CAAA;AA0BI,IAAA,CAAA,CAAE,cAAe,EAAA,CAAA;AACjB,IAAA,CAAA,CAAE,eAAgB,EAAA,CAAA;AAClB,IAAA,KAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,KAAA,EAAA,CAAA;AACA,IAAI,CAAA,EAAA,GAAA,GAAA,CAAA,OAAA,KAAJ,IAAa,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,SAAA,CAAU,MAAO,CAAA,QAAA,CAAA,CAAA;AAAA,GAChC,CAAA;AACA,EAAO,OAAAC,YAAA,CAAA;AAAA;AAAA,eAAA,EAEQ,GAAG,CAAA,aAAA,EAAgB,WAAW,CAAA,WAAA,EAAc,SAAS,CAAA;AAAA,QAAA,EAAA,CAC5D,yCAAeU,iBAAQ,CAAA;AAAA;AAAA;AAAA,QAAA,EAAA,CAGvB,+CAAkBC,iBAAQ,CAAA;AAAA;AAAA;AAAA,EAAA,CAAA,CAAA;AAIpC,CAAA,CAAA;AAEA,oBAAA,CAAqB,KAAQ,GAAA;AAAA,EAC3B,IAAM,EAAA,OAAA;AAAA,EACN,KAAO,EAAA,QAAA;AAAA,EACP,OAAS,EAAA,QAAA;AAAA,EACT,UAAY,EAAA,QAAA;AACd,CAAA,CAAA;AAEa,MAAA,kBAAA,GAAqBV,UAAE,oBAAoB,CAAA;;;;;;;;;AClDxD,IAAA,QAAA,EAAA,SAAA,EAAA,IAAA,CAAA;AAcO,MAAM,eAAsC,CAAA;AAAA,EAKjD,WAAA,CAAY,KAAU,MAAiC,EAAA;AAJvD,IAAA,YAAA,CAAA,IAAA,EAAA,QAAA,CAAA,CAAA;AACA,IAAA,YAAA,CAAA,IAAA,EAAA,SAAA,CAAA,CAAA;AACA,IAAS,YAAA,CAAA,IAAA,EAAA,IAAA,CAAA,CAAA;AAmCT,IAAA,IAAA,CAAA,MAAA,GAAS,MAAM;AACb,MAAA,YAAA,CAAA,IAAA,EAAK,WAAU,MAAO,EAAA,CAAA;AAAA,KACxB,CAAA;AAEA,IAAA,IAAA,CAAA,OAAA,GAAU,MAAM;AACd,MAAA,YAAA,CAAA,IAAA,EAAK,WAAU,OAAQ,EAAA,CAAA;AACvB,MAAA,YAAA,CAAA,IAAA,EAAK,UAAS,MAAO,EAAA,CAAA;AAAA,KACvB,CAAA;AAEA,IAAA,IAAA,CAAA,KAAA,GAAQ,MAAM;AACZ,MAAA,MAAM,MAAM,YAAK,CAAA,IAAA,EAAA,IAAA,CAAA,CAAA;AACjB,MAAM,MAAA,IAAA,GAAO,GAAI,CAAA,GAAA,CAAIpC,kBAAa,CAAA,CAAA;AAClC,MAAI,IAAA,CAAC,KAAK,QAAS,EAAA;AACjB,QAAA,IAAA,CAAK,KAAM,EAAA,CAAA;AAEb,MAAM,MAAA,SAAEwB,OAAO,EAAA,QAAA,EAAa,GAAA,IAAA,CAAA;AAC5B,MAAM,MAAA,MAAA,GAAS,mBAAK,SAAU,CAAA,CAAA,MAAA,CAAA;AAC9B,MAAA,IAAI,CAAC,MAAA;AACH,QAAA,OAAA;AAEF,MAAA,MAAM,OAAO,MAAO,CAAA,IAAA,CAAA;AACpB,MAAA,MAAM,GAAM,GAAA,IAAA,CAAK,GAAM,GAAA,MAAA,CAAO,IAAK,CAAA,QAAA,CAAA;AACnC,MAAI,IAAA,EAAA,GAAKA,OAAM,CAAA,EAAA,CAAG,MAAO,CAAA,GAAA,EAAKvB,2BAAgB,IAAK,CAAA,GAAG,CAAE,CAAA,MAAA,EAAQ,CAAA,CAAA;AAChE,MAAK,EAAA,GAAA,EAAA,CAAG,aAAa8C,mBAAc,CAAA,IAAA,CAAK,GAAG,GAAI,CAAA,OAAA,CAAQ,GAAG,CAAC,CAAC,CAAA,CAAA;AAC5D,MAAS,QAAA,CAAA,EAAA,CAAG,gBAAgB,CAAA,CAAA;AAE5B,MAAA,YAAA,CAAA,IAAA,EAAK,WAAU,IAAK,EAAA,CAAA;AACpB,MAAA,GAAA,CAAI,IAAI,OAAQ,CAAA,GAAG,EAAE,IAAK,CAAA,EAAA,CAAG,UAAU,IAAI,CAAA,CAAA;AAAA,KAC7C,CAAA;AA5DE,IAAA,YAAA,CAAA,IAAA,EAAK,IAAO,EAAA,GAAA,CAAA,CAAA;AACZ,IAAM,MAAA,OAAA,GAAU,IAAI,kBAAmB,EAAA,CAAA;AACvC,IAAA,YAAA,CAAA,IAAA,EAAK,QAAW,EAAA,OAAA,CAAA,CAAA;AAChB,IAAK,YAAA,CAAA,IAAA,EAAA,QAAA,CAAA,CAAS,QAAQ,IAAK,CAAA,KAAA,CAAA;AAC3B,IAAK,YAAA,CAAA,IAAA,EAAA,QAAA,CAAA,CAAS,UAAU,MAAQ,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,MAAA,CAAA,aAAA,CAAA;AAChC,IAAK,YAAA,CAAA,IAAA,EAAA,QAAA,CAAA,CAAS,aAAa,MAAQ,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,MAAA,CAAA,cAAA,CAAA;AACnC,IAAK,YAAA,CAAA,IAAA,EAAA,SAAA,EAAY,IAAIC,mBAAc,CAAA;AAAA,MACjC,GAAA;AAAA,MACA,OAAA;AAAA,MACA,WAAW,MAAM,EAAA;AAAA,MACjB,YAAc,EAAA,CAAC,EAAE,MAAA,EAAQ,UAAe,KAAA;AACtC,QAAI,IAAA,MAAA,CAAO,IAAK,CAAA,IAAA,CAAK,IAAS,KAAA,SAAA;AAC5B,UAAO,OAAA,MAAA,CAAA;AAET,QAAA,IAAI,eAAkB,GAAA,CAAA,CAAA;AACtB,QAAO,MAAA,CAAA,IAAA,CAAK,WAAY,CAAA,CAAC,IAAS,KAAA;AAChC,UAAA,eAAA,IAAmB,IAAK,CAAA,UAAA,CAAA;AAAA,SACzB,CAAA,CAAA;AACD,QAAA,MAAM,MAAM,MAAO,CAAA,EAAA,CAAA;AACnB,QAAM,MAAA,OAAA,GAAU,IAAI,qBAAsB,EAAA,CAAA;AAC1C,QAAM,MAAA,UAAA,GAAa,SAAS,qBAAsB,EAAA,CAAA;AAClD,QAAM,MAAA,KAAA,GAAQ,MAAO,CAAA,gBAAA,CAAiB,GAAG,CAAA,CAAA;AACzC,QAAA,MAAM,aAAa,MAAO,CAAA,QAAA,CAAS,KAAM,CAAA,UAAA,EAAY,EAAE,CAAK,IAAA,CAAA,CAAA;AAC5D,QAAA,MAAM,gBAAgB,MAAO,CAAA,QAAA,CAAS,KAAM,CAAA,aAAA,EAAe,EAAE,CAAK,IAAA,CAAA,CAAA;AAClE,QAAM,MAAA,MAAA,GAAS,OAAQ,CAAA,MAAA,GAAS,UAAa,GAAA,aAAA,CAAA;AAC7C,QAAA,MAAM,eAAe,UAAW,CAAA,MAAA,CAAA;AAChC,QAAA,OAAO,eAAkB,GAAA,CAAA,IAAK,YAAe,GAAA,MAAA,GAAS,YAAe,GAAA,MAAA,CAAA;AAAA,OACvE;AAAA,KACD,CAAA,CAAA,CAAA;AACD,IAAA,IAAA,CAAK,MAAO,EAAA,CAAA;AAAA,GACd;AA+BF,CAAA;AAlEE,QAAA,GAAA,IAAA,OAAA,EAAA,CAAA;AACA,SAAA,GAAA,IAAA,OAAA,EAAA,CAAA;AACS,IAAA,GAAA,IAAA,OAAA,EAAA,CAAA;AAkEXR,oBAAA,CAAe,yBAAyB,kBAAkB,CAAA,CAAA;AAC1C,SAAA,oBAAA,CAAqB,KAAU,MAAiC,EAAA;AAC9E,EAAI,GAAA,CAAA,GAAA,CAAIS,kBAAY,GAAK,EAAA;AAAA,IACvB,WAAA,EAAa,CAAC,GAAQ,KAAA;AACpB,MAAA,MAAM,MAAS,GAAAC,gBAAA,CAAW,CAAQ,IAAA,KAAA,CAAC,OAAS,EAAA,YAAY,CAAE,CAAA,QAAA,CAAS,IAAK,CAAA,IAAA,CAAK,IAAI,CAAC,EAAE,GAAG,CAAA,CAAA;AACvF,MAAI,IAAA,MAAA;AACF,QAAO,OAAA,KAAA,CAAA;AAET,MAAO,OAAA,IAAA,CAAA;AAAA,KACT;AAAA,GACD,CAAA,CAAA;AACD,EAAI,GAAA,CAAA,GAAA,CAAIC,YAAM,GAAK,EAAA;AAAA,IACjB,IAAM,EAAA,MAAM,IAAI,eAAA,CAAgB,KAAK,MAAM,CAAA;AAAA,GAC5C,CAAA,CAAA;AACH;;AC/Ca,MAAA,aAAA,GAAuD,CAAC,MAAA,EAAQ,MAAW,KAAA;AACtF,EACG,MAAA,CAAA,MAAA,CAAO,SAAO,oBAAqB,CAAA,GAAA,EAAK,MAAM,CAAC,CAAA,CAC/C,OAAO,CAAO,GAAA,KAAA,aAAA,CAAc,KAAK,MAAM,CAAC,EACxC,GAAI,CAAA,OAAO,EACX,GAAI,CAAAA,WAAK,CACT,CAAA,GAAA,CAAI,IAAI,CAAA,CAAA;AACb;;;;"}
1
+ {"version":3,"file":"index-vNNxr8yy.js","sources":["../../src/feature/block-edit/menu/utils.ts","../../src/feature/block-edit/menu/group-builder.ts","../../src/feature/block-edit/menu/config.ts","../../src/feature/block-edit/menu/component.ts","../../src/feature/block-edit/menu/index.ts","../../src/feature/block-edit/handle/component.ts","../../src/feature/block-edit/handle/index.ts","../../src/feature/block-edit/index.ts"],"sourcesContent":["import type { html } from 'atomico'\nimport type { Ctx } from '@milkdown/kit/ctx'\nimport type { Command, Transaction } from '@milkdown/kit/prose/state'\nimport type { Attrs, NodeType } from '@milkdown/kit/prose/model'\nimport { findWrapping } from '@milkdown/kit/prose/transform'\n\nexport interface MenuItem {\n index: number\n key: string\n label: string\n icon: ReturnType<typeof html>\n onRun: (ctx: Ctx) => void\n}\n\ntype WithRange<T, HasIndex extends true | false = true> = HasIndex extends true ? T & { range: [start: number, end: number] } : T\n\nexport type MenuItemGroup<HasIndex extends true | false = true> = WithRange<{\n key: string\n label: string\n items: HasIndex extends true ? MenuItem[] : Omit<MenuItem, 'index'>[]\n}, HasIndex>\n\nexport function clearRange(tr: Transaction) {\n const { $from, $to } = tr.selection\n const { pos: from } = $from\n const { pos: to } = $to\n tr = tr.deleteRange(from - $from.node().content.size, to)\n return tr\n}\n\nexport function setBlockType(tr: Transaction, nodeType: NodeType, attrs: Attrs | null = null) {\n const { from, to } = tr.selection\n return tr.setBlockType(from, to, nodeType, attrs)\n}\n\nexport function wrapInBlockType(tr: Transaction, nodeType: NodeType, attrs: Attrs | null = null) {\n const { $from, $to } = tr.selection\n\n const range = $from.blockRange($to)\n const wrapping = range && findWrapping(range, nodeType, attrs)\n if (!wrapping)\n return null\n\n return tr.wrap(range, wrapping)\n}\n\nexport function addBlockType(tr: Transaction, nodeType: NodeType, attrs: Attrs | null = null) {\n const node = nodeType.createAndFill(attrs)\n if (!node)\n return null\n\n return tr.replaceSelectionWith(node)\n}\n\nexport function clearContentAndSetBlockType(nodeType: NodeType, attrs: Attrs | null = null): Command {\n return (state, dispatch) => {\n if (dispatch) {\n const tr = setBlockType(clearRange(state.tr), nodeType, attrs)\n dispatch(tr.scrollIntoView())\n }\n return true\n }\n}\n\nexport function clearContentAndWrapInBlockType(nodeType: NodeType, attrs: Attrs | null = null): Command {\n return (state, dispatch) => {\n const tr = wrapInBlockType(clearRange(state.tr), nodeType, attrs)\n if (!tr)\n return false\n\n if (dispatch)\n dispatch(tr.scrollIntoView())\n\n return true\n }\n}\n\nexport function clearContentAndAddBlockType(nodeType: NodeType, attrs: Attrs | null = null): Command {\n return (state, dispatch) => {\n const tr = addBlockType(clearRange(state.tr), nodeType, attrs)\n if (!tr)\n return false\n\n if (dispatch)\n dispatch(tr.scrollIntoView())\n\n return true\n }\n}\n","import type { MenuItem, MenuItemGroup } from './utils'\n\nexport class GroupBuilder {\n #groups: MenuItemGroup<false>[] = []\n\n clear = () => {\n this.#groups = []\n return this\n }\n\n #getGroupInstance = (group: MenuItemGroup<false>) => {\n const groupInstance = {\n group,\n addItem: (key: string, item: Omit<MenuItem, 'key' | 'index'>) => {\n const data = { key, ...item }\n group.items.push(data)\n return groupInstance\n },\n clear: () => {\n group.items = []\n return groupInstance\n },\n }\n return groupInstance\n }\n\n addGroup = (key: string, label: string) => {\n const items: Omit<MenuItem, 'index'>[] = []\n const group: MenuItemGroup<false> = {\n key,\n label,\n items,\n }\n this.#groups.push(group)\n\n return this.#getGroupInstance(group)\n }\n\n getGroup = (key: string) => {\n const group = this.#groups.find(group => group.key === key)\n if (!group)\n throw new Error(`Group with key ${key} not found`)\n\n return this.#getGroupInstance(group)\n }\n\n build = () => {\n return this.#groups\n }\n}\n","import { editorViewCtx } from '@milkdown/kit/core'\nimport {\n blockquoteSchema,\n bulletListSchema,\n codeBlockSchema,\n headingSchema,\n hrSchema,\n listItemSchema,\n orderedListSchema,\n paragraphSchema,\n} from '@milkdown/kit/preset/commonmark'\nimport { NodeSelection } from '@milkdown/kit/prose/state'\nimport { imageBlockSchema } from '@milkdown/kit/component/image-block'\nimport { createTable } from '@milkdown/kit/preset/gfm'\nimport {\n bulletListIcon,\n codeIcon,\n dividerIcon,\n h1Icon,\n h2Icon,\n h3Icon,\n h4Icon,\n h5Icon,\n h6Icon,\n imageIcon,\n orderedListIcon,\n quoteIcon,\n tableIcon,\n textIcon,\n todoListIcon,\n} from '../../../icons'\nimport type { BlockEditFeatureConfig } from '../index'\nimport type { MenuItemGroup } from './utils'\nimport {\n clearContentAndAddBlockType,\n clearContentAndSetBlockType,\n clearContentAndWrapInBlockType,\n clearRange,\n} from './utils'\nimport { GroupBuilder } from './group-builder'\n\nexport function getGroups(filter?: string, config?: BlockEditFeatureConfig) {\n const groupBuilder = new GroupBuilder()\n groupBuilder\n .addGroup('text', config?.slashMenuTextGroupLabel ?? 'Text')\n .addItem('text', {\n label: config?.slashMenuTextGroupLabel ?? 'Text',\n icon: config?.slashMenuTextIcon?.() ?? textIcon,\n onRun: (ctx) => {\n const view = ctx.get(editorViewCtx)\n const { dispatch, state } = view\n\n const command = clearContentAndSetBlockType(paragraphSchema.type(ctx))\n command(state, dispatch)\n },\n })\n .addItem('h1', {\n label: config?.slashMenuH1Label ?? 'Heading 1',\n icon: config?.slashMenuH1Icon?.() ?? h1Icon,\n onRun: (ctx) => {\n const view = ctx.get(editorViewCtx)\n const { dispatch, state } = view\n\n const command = clearContentAndSetBlockType(headingSchema.type(ctx), { level: 1 })\n command(state, dispatch)\n },\n })\n .addItem('h2', {\n label: config?.slashMenuH2Label ?? 'Heading 2',\n icon: config?.slashMenuH2Icon?.() ?? h2Icon,\n onRun: (ctx) => {\n const view = ctx.get(editorViewCtx)\n const { dispatch, state } = view\n\n const command = clearContentAndSetBlockType(headingSchema.type(ctx), { level: 2 })\n command(state, dispatch)\n },\n })\n .addItem('h3', {\n label: config?.slashMenuH3Label ?? 'Heading 3',\n icon: config?.slashMenuH3Icon?.() ?? h3Icon,\n onRun: (ctx) => {\n const view = ctx.get(editorViewCtx)\n const { dispatch, state } = view\n\n const command = clearContentAndSetBlockType(headingSchema.type(ctx), { level: 3 })\n command(state, dispatch)\n },\n })\n .addItem('h4', {\n label: config?.slashMenuH4Label ?? 'Heading 4',\n icon: config?.slashMenuH4Icon?.() ?? h4Icon,\n onRun: (ctx) => {\n const view = ctx.get(editorViewCtx)\n const { dispatch, state } = view\n\n const command = clearContentAndSetBlockType(headingSchema.type(ctx), { level: 4 })\n command(state, dispatch)\n },\n })\n .addItem('h5', {\n label: config?.slashMenuH5Label ?? 'Heading 5',\n icon: config?.slashMenuH5Icon?.() ?? h5Icon,\n onRun: (ctx) => {\n const view = ctx.get(editorViewCtx)\n const { dispatch, state } = view\n\n const command = clearContentAndSetBlockType(headingSchema.type(ctx), { level: 5 })\n command(state, dispatch)\n },\n })\n .addItem('h6', {\n label: config?.slashMenuH6Label ?? 'Heading 6',\n icon: config?.slashMenuH6Icon?.() ?? h6Icon,\n onRun: (ctx) => {\n const view = ctx.get(editorViewCtx)\n const { dispatch, state } = view\n\n const command = clearContentAndSetBlockType(headingSchema.type(ctx), { level: 6 })\n command(state, dispatch)\n },\n })\n .addItem('quote', {\n label: config?.slashMenuQuoteLabel ?? 'Quote',\n icon: config?.slashMenuQuoteIcon?.() ?? quoteIcon,\n onRun: (ctx) => {\n const view = ctx.get(editorViewCtx)\n const { dispatch, state } = view\n\n const command = clearContentAndWrapInBlockType(blockquoteSchema.type(ctx))\n command(state, dispatch)\n },\n })\n .addItem('divider', {\n label: config?.slashMenuDividerLabel ?? 'Divider',\n icon: config?.slashMenuDividerIcon?.() ?? dividerIcon,\n onRun: (ctx) => {\n const view = ctx.get(editorViewCtx)\n const { dispatch, state } = view\n\n const command = clearContentAndAddBlockType(hrSchema.type(ctx))\n command(state, dispatch)\n },\n })\n\n groupBuilder.addGroup('list', config?.slashMenuListGroupLabel ?? 'List')\n .addItem('bullet-list', {\n label: config?.slashMenuBulletListLabel ?? 'Bullet List',\n icon: config?.slashMenuBulletListIcon?.() ?? bulletListIcon,\n onRun: (ctx) => {\n const view = ctx.get(editorViewCtx)\n const { dispatch, state } = view\n\n const command = clearContentAndWrapInBlockType(bulletListSchema.type(ctx))\n command(state, dispatch)\n },\n })\n .addItem('ordered-list', {\n label: config?.slashMenuOrderedListLabel ?? 'Ordered List',\n icon: config?.slashMenuOrderedListIcon?.() ?? orderedListIcon,\n onRun: (ctx) => {\n const view = ctx.get(editorViewCtx)\n const { dispatch, state } = view\n\n const command = clearContentAndWrapInBlockType(orderedListSchema.type(ctx))\n command(state, dispatch)\n },\n })\n .addItem('todo-list', {\n label: config?.slashMenuTaskListLabel ?? 'Todo List',\n icon: config?.slashMenuTaskListIcon?.() ?? todoListIcon,\n onRun: (ctx) => {\n const view = ctx.get(editorViewCtx)\n const { dispatch, state } = view\n\n const command = clearContentAndWrapInBlockType(listItemSchema.type(ctx), { checked: false })\n command(state, dispatch)\n },\n })\n\n groupBuilder.addGroup('advanced', config?.slashMenuAdvancedGroupLabel ?? 'Advanced')\n .addItem('image', {\n label: config?.slashMenuImageLabel ?? 'Image',\n icon: config?.slashMenuImageIcon?.() ?? imageIcon,\n onRun: (ctx) => {\n const view = ctx.get(editorViewCtx)\n const { dispatch, state } = view\n\n const command = clearContentAndAddBlockType(imageBlockSchema.type(ctx))\n command(state, dispatch)\n },\n })\n .addItem('code', {\n label: config?.slashMenuCodeBlockLabel ?? 'Code',\n icon: config?.slashMenuCodeBlockIcon?.() ?? codeIcon,\n onRun: (ctx) => {\n const view = ctx.get(editorViewCtx)\n const { dispatch, state } = view\n\n const command = clearContentAndAddBlockType(codeBlockSchema.type(ctx))\n command(state, dispatch)\n },\n })\n .addItem('table', {\n label: config?.slashMenuTableLabel ?? 'Table',\n icon: config?.slashMenuTableIcon?.() ?? tableIcon,\n onRun: (ctx) => {\n const view = ctx.get(editorViewCtx)\n const { dispatch, state } = view\n const tr = clearRange(state.tr)\n const table = createTable(ctx, 3, 3)\n tr.replaceSelectionWith(table)\n const { from } = tr.selection\n const pos = from - table.nodeSize + 2\n dispatch(tr)\n requestAnimationFrame(() => {\n const selection = NodeSelection.create(view.state.tr.doc, pos)\n dispatch(view.state.tr.setSelection(selection).scrollIntoView())\n })\n },\n })\n\n config?.buildMenu?.(groupBuilder)\n\n let groups = groupBuilder.build()\n\n if (filter) {\n groups = groups\n .map((group) => {\n const items = group\n .items\n .filter(item =>\n item\n .label\n .toLowerCase()\n .includes(filter.toLowerCase()))\n\n return {\n ...group,\n items,\n }\n })\n .filter(group => group.items.length > 0)\n }\n\n const items = groups.flatMap(groups => groups.items)\n items.forEach(((item, index) => {\n Object.assign(item, { index })\n }))\n\n groups.reduce((acc, group) => {\n const end = acc + group.items.length\n Object.assign(group, {\n range: [acc, end],\n })\n return end\n }, 0)\n\n return {\n groups: groups as MenuItemGroup[],\n size: items.length,\n }\n}\n","import type { Component } from 'atomico'\nimport { c, html, useCallback, useEffect, useHost, useMemo, useRef, useState } from 'atomico'\nimport type { Ctx } from '@milkdown/kit/ctx'\nimport type { BlockEditFeatureConfig } from '../index'\nimport { getGroups } from './config'\n\nexport interface MenuProps {\n ctx: Ctx\n show: boolean\n filter: string\n hide: () => void\n config?: BlockEditFeatureConfig\n}\n\nexport const menuComponent: Component<MenuProps> = ({\n show,\n hide,\n ctx,\n filter,\n config,\n}) => {\n const { groups, size } = useMemo(() => getGroups(filter, config), [filter])\n\n const host = useHost()\n const [hoverIndex, setHoverIndex] = useState(0)\n\n const root = useMemo(() => host.current.getRootNode() as HTMLElement, [host])\n\n const prevMousePosition = useRef({ x: -999, y: -999 })\n\n const onMouseMove = useCallback((e: MouseEvent) => {\n const prevPos = prevMousePosition.current\n if (!prevPos)\n return\n\n const { x, y } = e\n prevPos.x = x\n prevPos.y = y\n }, [])\n\n useEffect(() => {\n if (size === 0 && show)\n hide?.()\n }, [size, show])\n\n const onHover = useCallback((\n index: number | ((prev: number) => number),\n after?: (index: number) => void,\n ) => {\n setHoverIndex((prev) => {\n const next = typeof index === 'function' ? index(prev) : index\n\n after?.(next)\n return next\n })\n }, [])\n\n const scrollToIndex = useCallback((index: number) => {\n const target = host\n .current\n .querySelector<HTMLElement>(`[data-index=\"${index}\"]`)\n const scrollRoot = host.current.querySelector<HTMLElement>('.menu-groups')\n\n if (!target || !scrollRoot)\n return\n\n scrollRoot.scrollTop = target.offsetTop - scrollRoot.offsetTop\n }, [])\n\n const runByIndex = useCallback((index: number) => {\n const item = groups.flatMap(group => group.items).at(index)\n if (item && ctx)\n item.onRun(ctx)\n\n hide?.()\n }, [groups])\n\n const onKeydown = useCallback((e: KeyboardEvent) => {\n if (e.key === 'Escape') {\n e.preventDefault()\n hide?.()\n return\n }\n\n if (e.key === 'ArrowDown') {\n e.preventDefault()\n return onHover(index => (index < size - 1) ? index + 1 : index, scrollToIndex)\n }\n\n if (e.key === 'ArrowUp') {\n e.preventDefault()\n return onHover(index => index <= 0 ? index : index - 1, scrollToIndex)\n }\n\n if (e.key === 'ArrowLeft') {\n e.preventDefault()\n return onHover((index) => {\n const group = groups.find(group => group.range[0] <= index && group.range[1] > index)\n if (!group)\n return index\n\n const prevGroup = groups[groups.indexOf(group) - 1]\n if (!prevGroup)\n return index\n\n return prevGroup.range[1] - 1\n }, scrollToIndex)\n }\n\n if (e.key === 'ArrowRight') {\n e.preventDefault()\n return onHover((index) => {\n const group = groups.find(group => group.range[0] <= index && group.range[1] > index)\n if (!group)\n return index\n\n const nextGroup = groups[groups.indexOf(group) + 1]\n if (!nextGroup)\n return index\n\n return nextGroup.range[0]\n }, scrollToIndex)\n }\n\n if (e.key === 'Enter') {\n e.preventDefault()\n runByIndex(hoverIndex)\n }\n }, [hide, groups, hoverIndex])\n\n const onMouseEnter = useCallback((index: number) => {\n return (e: MouseEvent) => {\n const prevPos = prevMousePosition.current\n if (!prevPos)\n return\n\n const { x, y } = e\n if (x === prevPos.x && y === prevPos.y)\n return\n\n onHover(index)\n }\n }, [])\n\n useEffect(() => {\n if (show)\n root.addEventListener('keydown', onKeydown, { capture: true })\n\n else root.removeEventListener('keydown', onKeydown, { capture: true })\n\n return () => {\n root.removeEventListener('keydown', onKeydown, { capture: true })\n }\n }, [show, onKeydown])\n\n return html`\n <host onmousedown=${(e: MouseEvent) => e.preventDefault()}>\n <nav class=\"tab-group\">\n <ul>\n ${groups.map(group =>\n html`<li\n key=${group.key}\n onmousedown=${() => onHover(group.range[0], scrollToIndex)}\n class=${hoverIndex >= group.range[0] && hoverIndex < group.range[1] ? 'selected' : ''}\n >\n ${group.label}\n </li>`)}\n </ul>\n </nav>\n <div class=\"menu-groups\" onmousemove=${onMouseMove}>\n ${groups.map((group) => {\n return html`\n <div key=${group.key} class=\"menu-group\">\n <h6>${group.label}</h6>\n <ul>\n ${group.items.map(item =>\n html`<li\n key=${item.key}\n data-index=${item.index}\n class=${hoverIndex === item.index ? 'hover' : ''}\n onmouseenter=${onMouseEnter(item.index)}\n onmousedown=${() => {\n host\n .current\n .querySelector(`[data-index=\"${item.index}\"]`)\n ?.classList.add('active')\n }}\n onmouseup=${() => {\n host\n .current\n .querySelector(`[data-index=\"${item.index}\"]`)\n ?.classList.remove('active')\n runByIndex(item.index)\n }}\n >\n ${item.icon}\n <span>${item.label}</span>\n </li>`,\n )}\n </ul>\n </div>\n `\n })}\n </div>\n </host>\n `\n}\n\nmenuComponent.props = {\n ctx: Object,\n config: Object,\n show: Boolean,\n filter: String,\n hide: Function,\n}\n\nexport const MenuElement = c(menuComponent)\n","import type { PluginView } from '@milkdown/kit/prose/state'\nimport type { EditorView } from '@milkdown/kit/prose/view'\nimport { SlashProvider, slashFactory } from '@milkdown/kit/plugin/slash'\nimport type { Ctx } from '@milkdown/kit/ctx'\nimport type { AtomicoThis } from 'atomico/types/dom'\nimport { $ctx } from '@milkdown/kit/utils'\nimport { defIfNotExists, isInCodeBlock, isInList } from '../../../utils'\nimport type { BlockEditFeatureConfig } from '../index'\nimport type { MenuProps } from './component'\nimport { MenuElement } from './component'\n\nexport const menu = slashFactory('CREPE_MENU')\n\nexport interface MenuAPI {\n show: (pos: number) => void\n hide: () => void\n}\n\nexport const menuAPI = $ctx({\n show: () => {},\n hide: () => {},\n} as MenuAPI, 'menuAPICtx')\n\ndefIfNotExists('milkdown-slash-menu', MenuElement)\nexport function configureMenu(ctx: Ctx, config?: BlockEditFeatureConfig) {\n ctx.set(menu.key, {\n view: view => new MenuView(ctx, view, config),\n })\n}\n\nclass MenuView implements PluginView {\n readonly #content: AtomicoThis<MenuProps, HTMLElement>\n readonly #slashProvider: SlashProvider\n #programmaticallyPos: number | null = null\n\n constructor(ctx: Ctx, view: EditorView, config?: BlockEditFeatureConfig) {\n this.#content = new MenuElement()\n this.#content.hide = this.hide\n this.#content.ctx = ctx\n this.#content.config = config\n // eslint-disable-next-line ts/no-this-alias\n const self = this\n this.#slashProvider = new SlashProvider({\n content: this.#content,\n debounce: 20,\n shouldShow(this: SlashProvider, view: EditorView) {\n if (isInCodeBlock(view.state.selection) || isInList(view.state.selection))\n return false\n\n const currentText = this.getContent(view, node =>\n ['paragraph', 'heading'].includes(node.type.name))\n\n if (currentText == null)\n return false\n\n const pos = self.#programmaticallyPos\n\n self.#content.filter = currentText.startsWith('/') ? currentText.slice(1) : currentText\n\n if (typeof pos === 'number') {\n if (view.state.doc.resolve(pos).node() !== view.state.doc.resolve(view.state.selection.from).node()) {\n self.#programmaticallyPos = null\n\n return false\n }\n\n return true\n }\n\n if (!currentText.startsWith('/'))\n return false\n\n return true\n },\n offset: 10,\n })\n\n this.#slashProvider.onShow = () => {\n this.#content.show = true\n }\n this.#slashProvider.onHide = () => {\n this.#content.show = false\n }\n this.update(view)\n\n ctx.set(menuAPI.key, {\n show: pos => this.show(pos),\n hide: () => this.hide(),\n })\n }\n\n update = (view: EditorView) => {\n this.#slashProvider.update(view)\n }\n\n show = (pos: number) => {\n this.#programmaticallyPos = pos\n this.#content.filter = ''\n this.#slashProvider.show()\n }\n\n hide = () => {\n this.#programmaticallyPos = null\n this.#slashProvider.hide()\n }\n\n destroy = () => {\n this.#slashProvider.destroy()\n this.#content.remove()\n }\n}\n","import { type Component, c, html, useEffect, useRef } from 'atomico'\nimport { menuIcon, plusIcon } from '../../../icons'\nimport type { Icon } from '../../shared'\n\nexport interface BlockHandleProps {\n show: boolean\n onAdd: () => void\n addIcon: Icon\n handleIcon: Icon\n}\n\nconst blockHandleComponent: Component<BlockHandleProps> = ({\n onAdd,\n addIcon,\n handleIcon,\n}) => {\n const ref = useRef<HTMLDivElement>()\n useEffect(() => {\n ref.current?.classList.remove('active')\n })\n const onMouseDown = (e: MouseEvent) => {\n e.preventDefault()\n e.stopPropagation()\n ref.current?.classList.add('active')\n }\n const onMouseUp = (e: MouseEvent) => {\n e.preventDefault()\n e.stopPropagation()\n onAdd?.()\n ref.current?.classList.remove('active')\n }\n return html`\n <host>\n <div ref=${ref} onmousedown=${onMouseDown} onmouseup=${onMouseUp} class=\"operation-item\">\n ${addIcon?.() || plusIcon}\n </div>\n <div class=\"operation-item\">\n ${handleIcon?.() || menuIcon}\n </div>\n </host>\n `\n}\n\nblockHandleComponent.props = {\n show: Boolean,\n onAdd: Function,\n addIcon: Function,\n handleIcon: Function,\n}\n\nexport const BlockHandleElement = c(blockHandleComponent)\n","import type { PluginView } from '@milkdown/kit/prose/state'\nimport { TextSelection } from '@milkdown/kit/prose/state'\nimport { BlockProvider, block, blockConfig } from '@milkdown/kit/plugin/block'\nimport type { Ctx } from '@milkdown/kit/ctx'\nimport type { AtomicoThis } from 'atomico/types/dom'\nimport { editorViewCtx } from '@milkdown/kit/core'\nimport { paragraphSchema } from '@milkdown/kit/preset/commonmark'\nimport { findParent } from '@milkdown/kit/prose'\nimport { menuAPI } from '../menu'\nimport { defIfNotExists } from '../../../utils'\nimport type { BlockEditFeatureConfig } from '../index'\nimport type { BlockHandleProps } from './component'\nimport { BlockHandleElement } from './component'\n\nexport class BlockHandleView implements PluginView {\n #content: AtomicoThis<BlockHandleProps>\n #provider: BlockProvider\n readonly #ctx: Ctx\n\n constructor(ctx: Ctx, config?: BlockEditFeatureConfig) {\n this.#ctx = ctx\n const content = new BlockHandleElement()\n this.#content = content\n this.#content.onAdd = this.onAdd\n this.#content.addIcon = config?.handleAddIcon\n this.#content.handleIcon = config?.handleDragIcon\n this.#provider = new BlockProvider({\n ctx,\n content,\n getOffset: () => 16,\n getPlacement: ({ active, blockDom }) => {\n if (active.node.type.name === 'heading')\n return 'left'\n\n let totalDescendant = 0\n active.node.descendants((node) => {\n totalDescendant += node.childCount\n })\n const dom = active.el\n const domRect = dom.getBoundingClientRect()\n const handleRect = blockDom.getBoundingClientRect()\n const style = window.getComputedStyle(dom)\n const paddingTop = Number.parseInt(style.paddingTop, 10) || 0\n const paddingBottom = Number.parseInt(style.paddingBottom, 10) || 0\n const height = domRect.height - paddingTop - paddingBottom\n const handleHeight = handleRect.height\n return totalDescendant > 2 || handleHeight < height ? 'left-start' : 'left'\n },\n })\n this.update()\n }\n\n update = () => {\n this.#provider.update()\n }\n\n destroy = () => {\n this.#provider.destroy()\n this.#content.remove()\n }\n\n onAdd = () => {\n const ctx = this.#ctx\n const view = ctx.get(editorViewCtx)\n if (!view.hasFocus())\n view.focus()\n\n const { state, dispatch } = view\n const active = this.#provider.active\n if (!active)\n return\n\n const $pos = active.$pos\n const pos = $pos.pos + active.node.nodeSize\n let tr = state.tr.insert(pos, paragraphSchema.type(ctx).create())\n tr = tr.setSelection(TextSelection.near(tr.doc.resolve(pos)))\n dispatch(tr.scrollIntoView())\n\n this.#provider.hide()\n ctx.get(menuAPI.key).show(tr.selection.from)\n }\n}\n\ndefIfNotExists('milkdown-block-handle', BlockHandleElement)\nexport function configureBlockHandle(ctx: Ctx, config?: BlockEditFeatureConfig) {\n ctx.set(blockConfig.key, {\n filterNodes: (pos) => {\n const filter = findParent(node => ['table', 'blockquote'].includes(node.type.name))(pos)\n if (filter)\n return false\n\n return true\n },\n })\n ctx.set(block.key, {\n view: () => new BlockHandleView(ctx, config),\n })\n}\n","import { block } from '@milkdown/kit/plugin/block'\nimport type { DefineFeature, Icon } from '../shared'\nimport { configureBlockHandle } from './handle'\nimport { configureMenu, menu, menuAPI } from './menu'\nimport type { GroupBuilder } from './menu/group-builder'\n\ninterface BlockEditConfig {\n handleAddIcon: Icon\n handleDragIcon: Icon\n buildMenu: (builder: GroupBuilder) => void\n\n slashMenuTextGroupLabel: string\n slashMenuTextIcon: Icon\n slashMenuTextLabel: string\n slashMenuH1Icon: Icon\n slashMenuH1Label: string\n slashMenuH2Icon: Icon\n slashMenuH2Label: string\n slashMenuH3Icon: Icon\n slashMenuH3Label: string\n slashMenuH4Icon: Icon\n slashMenuH4Label: string\n slashMenuH5Icon: Icon\n slashMenuH5Label: string\n slashMenuH6Icon: Icon\n slashMenuH6Label: string\n slashMenuQuoteIcon: Icon\n slashMenuQuoteLabel: string\n slashMenuDividerIcon: Icon\n slashMenuDividerLabel: string\n\n slashMenuListGroupLabel: string\n slashMenuBulletListIcon: Icon\n slashMenuBulletListLabel: string\n slashMenuOrderedListIcon: Icon\n slashMenuOrderedListLabel: string\n slashMenuTaskListIcon: Icon\n slashMenuTaskListLabel: string\n\n slashMenuAdvancedGroupLabel: string\n slashMenuImageIcon: Icon\n slashMenuImageLabel: string\n slashMenuCodeBlockIcon: Icon\n slashMenuCodeBlockLabel: string\n slashMenuTableIcon: Icon\n slashMenuTableLabel: string\n}\n\nexport type BlockEditFeatureConfig = Partial<BlockEditConfig>\n\nexport const defineFeature: DefineFeature<BlockEditFeatureConfig> = (editor, config) => {\n editor\n .config(ctx => configureBlockHandle(ctx, config))\n .config(ctx => configureMenu(ctx, config))\n .use(menuAPI)\n .use(block)\n .use(menu)\n}\n"],"names":["findWrapping","__privateAdd","__privateSet","__privateGet","group","textIcon","editorViewCtx","paragraphSchema","h1Icon","headingSchema","h2Icon","h3Icon","h4Icon","h5Icon","h6Icon","quoteIcon","blockquoteSchema","dividerIcon","hrSchema","bulletListIcon","bulletListSchema","orderedListIcon","orderedListSchema","todoListIcon","listItemSchema","imageIcon","imageBlockSchema","codeIcon","codeBlockSchema","tableIcon","state","createTable","NodeSelection","items","groups","useMemo","useHost","useState","useRef","useCallback","useEffect","html","c","_content","slashFactory","$ctx","defIfNotExists","SlashProvider","view","isInCodeBlock","isInList","plusIcon","menuIcon","TextSelection","BlockProvider","blockConfig","findParent","block"],"mappings":"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"}
@@ -9,7 +9,7 @@ var commonmark = require('@milkdown/kit/preset/commonmark');
9
9
  var clsx = require('clsx');
10
10
  var linkTooltip = require('@milkdown/kit/component/link-tooltip');
11
11
  var gfm = require('@milkdown/kit/preset/gfm');
12
- var todoList = require('./todoList-YYRQo7wG.js');
12
+ var todoList = require('./todoList-Qb2JsRGC.js');
13
13
 
14
14
  const toolbarComponent = ({
15
15
  ctx,
@@ -164,4 +164,4 @@ const defineFeature = (editor, config) => {
164
164
  };
165
165
 
166
166
  exports.defineFeature = defineFeature;
167
- //# sourceMappingURL=index-TGmNEvsj.js.map
167
+ //# sourceMappingURL=index-wORIFtqa.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index-TGmNEvsj.js","sources":["../../src/feature/toolbar/component.ts","../../src/feature/toolbar/index.ts"],"sourcesContent":["import type { Component } from 'atomico'\nimport { c, html, useEffect, useUpdate } from 'atomico'\nimport type { Ctx } from '@milkdown/kit/ctx'\nimport { commandsCtx, editorViewCtx } from '@milkdown/kit/core'\nimport {\n emphasisSchema,\n inlineCodeSchema,\n linkSchema,\n strongSchema,\n toggleEmphasisCommand,\n toggleInlineCodeCommand,\n toggleStrongCommand,\n} from '@milkdown/kit/preset/commonmark'\nimport type { MarkType } from '@milkdown/kit/prose/model'\nimport clsx from 'clsx'\nimport { linkTooltipAPI } from '@milkdown/kit/component/link-tooltip'\nimport { strikethroughSchema, toggleStrikethroughCommand } from '@milkdown/kit/preset/gfm'\nimport { boldIcon, codeIcon, italicIcon, linkIcon, strikethroughIcon } from '../../icons'\nimport type { ToolbarFeatureConfig } from './index'\n\nexport interface ToolbarProps {\n ctx: Ctx\n hide: () => void\n show: boolean\n config?: ToolbarFeatureConfig\n}\n\nexport const toolbarComponent: Component<ToolbarProps> = ({\n ctx,\n hide,\n show,\n config,\n}) => {\n const update = useUpdate()\n useEffect(() => {\n update()\n }, [show])\n\n const onClick = (fn: (ctx: Ctx) => void) => (e: MouseEvent) => {\n e.preventDefault()\n ctx && fn(ctx)\n update()\n }\n\n const isActive = (mark: MarkType) => {\n if (!ctx)\n return false\n const view = ctx.get(editorViewCtx)\n const { state: { doc, selection } } = view\n return doc.rangeHasMark(selection.from, selection.to, mark)\n }\n\n return html`<host>\n <button\n class=${clsx('toolbar-item', ctx && isActive(strongSchema.type(ctx)) && 'active')}\n onmousedown=${onClick((ctx) => {\n const commands = ctx.get(commandsCtx)\n commands.call(toggleStrongCommand.key)\n })}\n >\n ${config?.boldIcon?.() ?? boldIcon}\n </button>\n <button\n class=${clsx('toolbar-item', ctx && isActive(emphasisSchema.type(ctx)) && 'active')}\n onmousedown=${onClick((ctx) => {\n const commands = ctx.get(commandsCtx)\n commands.call(toggleEmphasisCommand.key)\n })}\n >\n ${config?.italicIcon?.() ?? italicIcon}\n </button>\n <button\n class=${clsx('toolbar-item', ctx && isActive(strikethroughSchema.type(ctx)) && 'active')}\n onmousedown=${onClick((ctx) => {\n const commands = ctx.get(commandsCtx)\n commands.call(toggleStrikethroughCommand.key)\n })}\n >\n ${config?.strikethroughIcon?.() ?? strikethroughIcon}\n </button>\n <div class=\"divider\"></div>\n <button\n class=${clsx('toolbar-item', ctx && isActive(inlineCodeSchema.type(ctx)) && 'active')}\n onmousedown=${onClick((ctx) => {\n const commands = ctx.get(commandsCtx)\n commands.call(toggleInlineCodeCommand.key)\n })}\n >\n ${config?.codeIcon?.() ?? codeIcon}\n </button>\n <button\n class=${clsx('toolbar-item', ctx && isActive(linkSchema.type(ctx)) && 'active')}\n onmousedown=${onClick((ctx) => {\n const view = ctx.get(editorViewCtx)\n const { selection } = view.state\n\n if (isActive(linkSchema.type(ctx))) {\n ctx.get(linkTooltipAPI.key).removeLink(selection.from, selection.to)\n return\n }\n\n ctx.get(linkTooltipAPI.key).addLink(selection.from, selection.to)\n hide?.()\n })}\n >\n ${config?.linkIcon?.() ?? linkIcon}\n </button>\n </host>`\n}\n\ntoolbarComponent.props = {\n ctx: Object,\n hide: Function,\n show: Boolean,\n config: Object,\n}\n\nexport const ToolbarElement = c(toolbarComponent)\n","import { TooltipProvider, tooltipFactory } from '@milkdown/kit/plugin/tooltip'\nimport type { EditorState, PluginView } from '@milkdown/kit/prose/state'\nimport { TextSelection } from '@milkdown/kit/prose/state'\nimport type { Ctx } from '@milkdown/kit/ctx'\nimport type { EditorView } from '@milkdown/kit/prose/view'\nimport type { AtomicoThis } from 'atomico/types/dom'\nimport type { DefineFeature, Icon } from '../shared'\nimport { defIfNotExists } from '../../utils'\nimport type { ToolbarProps } from './component'\nimport { ToolbarElement } from './component'\n\ninterface ToolbarConfig {\n boldIcon: Icon\n codeIcon: Icon\n italicIcon: Icon\n linkIcon: Icon\n strikethroughIcon: Icon\n}\n\nexport type ToolbarFeatureConfig = Partial<ToolbarConfig>\n\nconst toolbar = tooltipFactory('CREPE_TOOLBAR')\n\nclass ToolbarView implements PluginView {\n #tooltipProvider: TooltipProvider\n #content: AtomicoThis<ToolbarProps>\n constructor(ctx: Ctx, view: EditorView, config?: ToolbarFeatureConfig) {\n const content = new ToolbarElement()\n this.#content = content\n this.#content.ctx = ctx\n this.#content.hide = this.hide\n this.#content.config = config\n\n this.#tooltipProvider = new TooltipProvider({\n content: this.#content,\n debounce: 20,\n offset: 10,\n shouldShow(view: EditorView) {\n const { doc, selection } = view.state\n const { empty, from, to } = selection\n\n const isEmptyTextBlock = !doc.textBetween(from, to).length && selection instanceof TextSelection\n\n const isNotTextBlock = !(selection instanceof TextSelection)\n\n const activeElement = (view.dom.getRootNode() as ShadowRoot | Document).activeElement\n const isTooltipChildren = content.contains(activeElement)\n\n const notHasFocus = !view.hasFocus() && !isTooltipChildren\n\n const isReadonly = !view.editable\n\n if (\n notHasFocus\n || isNotTextBlock\n || empty\n || isEmptyTextBlock\n || isReadonly\n )\n return false\n\n return true\n },\n })\n this.#tooltipProvider.onShow = () => {\n this.#content.show = true\n }\n this.#tooltipProvider.onHide = () => {\n this.#content.show = false\n }\n this.update(view)\n }\n\n update = (view: EditorView, prevState?: EditorState) => {\n this.#tooltipProvider.update(view, prevState)\n }\n\n destroy = () => {\n this.#tooltipProvider.destroy()\n this.#content.remove()\n }\n\n hide = () => {\n this.#tooltipProvider.hide()\n }\n}\n\ndefIfNotExists('milkdown-toolbar', ToolbarElement)\nexport const defineFeature: DefineFeature<ToolbarFeatureConfig> = (editor, config) => {\n editor\n .config((ctx) => {\n ctx.set(toolbar.key, {\n view: view => new ToolbarView(ctx, view, config),\n })\n })\n .use(toolbar)\n}\n"],"names":["useUpdate","useEffect","editorViewCtx","html","strongSchema","ctx","commandsCtx","toggleStrongCommand","boldIcon","emphasisSchema","toggleEmphasisCommand","italicIcon","strikethroughSchema","toggleStrikethroughCommand","strikethroughIcon","inlineCodeSchema","toggleInlineCodeCommand","codeIcon","linkSchema","linkTooltipAPI","linkIcon","c","tooltipFactory","TooltipProvider","view","TextSelection","defIfNotExists"],"mappings":"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"}
1
+ {"version":3,"file":"index-wORIFtqa.js","sources":["../../src/feature/toolbar/component.ts","../../src/feature/toolbar/index.ts"],"sourcesContent":["import type { Component } from 'atomico'\nimport { c, html, useEffect, useUpdate } from 'atomico'\nimport type { Ctx } from '@milkdown/kit/ctx'\nimport { commandsCtx, editorViewCtx } from '@milkdown/kit/core'\nimport {\n emphasisSchema,\n inlineCodeSchema,\n linkSchema,\n strongSchema,\n toggleEmphasisCommand,\n toggleInlineCodeCommand,\n toggleStrongCommand,\n} from '@milkdown/kit/preset/commonmark'\nimport type { MarkType } from '@milkdown/kit/prose/model'\nimport clsx from 'clsx'\nimport { linkTooltipAPI } from '@milkdown/kit/component/link-tooltip'\nimport { strikethroughSchema, toggleStrikethroughCommand } from '@milkdown/kit/preset/gfm'\nimport { boldIcon, codeIcon, italicIcon, linkIcon, strikethroughIcon } from '../../icons'\nimport type { ToolbarFeatureConfig } from './index'\n\nexport interface ToolbarProps {\n ctx: Ctx\n hide: () => void\n show: boolean\n config?: ToolbarFeatureConfig\n}\n\nexport const toolbarComponent: Component<ToolbarProps> = ({\n ctx,\n hide,\n show,\n config,\n}) => {\n const update = useUpdate()\n useEffect(() => {\n update()\n }, [show])\n\n const onClick = (fn: (ctx: Ctx) => void) => (e: MouseEvent) => {\n e.preventDefault()\n ctx && fn(ctx)\n update()\n }\n\n const isActive = (mark: MarkType) => {\n if (!ctx)\n return false\n const view = ctx.get(editorViewCtx)\n const { state: { doc, selection } } = view\n return doc.rangeHasMark(selection.from, selection.to, mark)\n }\n\n return html`<host>\n <button\n class=${clsx('toolbar-item', ctx && isActive(strongSchema.type(ctx)) && 'active')}\n onmousedown=${onClick((ctx) => {\n const commands = ctx.get(commandsCtx)\n commands.call(toggleStrongCommand.key)\n })}\n >\n ${config?.boldIcon?.() ?? boldIcon}\n </button>\n <button\n class=${clsx('toolbar-item', ctx && isActive(emphasisSchema.type(ctx)) && 'active')}\n onmousedown=${onClick((ctx) => {\n const commands = ctx.get(commandsCtx)\n commands.call(toggleEmphasisCommand.key)\n })}\n >\n ${config?.italicIcon?.() ?? italicIcon}\n </button>\n <button\n class=${clsx('toolbar-item', ctx && isActive(strikethroughSchema.type(ctx)) && 'active')}\n onmousedown=${onClick((ctx) => {\n const commands = ctx.get(commandsCtx)\n commands.call(toggleStrikethroughCommand.key)\n })}\n >\n ${config?.strikethroughIcon?.() ?? strikethroughIcon}\n </button>\n <div class=\"divider\"></div>\n <button\n class=${clsx('toolbar-item', ctx && isActive(inlineCodeSchema.type(ctx)) && 'active')}\n onmousedown=${onClick((ctx) => {\n const commands = ctx.get(commandsCtx)\n commands.call(toggleInlineCodeCommand.key)\n })}\n >\n ${config?.codeIcon?.() ?? codeIcon}\n </button>\n <button\n class=${clsx('toolbar-item', ctx && isActive(linkSchema.type(ctx)) && 'active')}\n onmousedown=${onClick((ctx) => {\n const view = ctx.get(editorViewCtx)\n const { selection } = view.state\n\n if (isActive(linkSchema.type(ctx))) {\n ctx.get(linkTooltipAPI.key).removeLink(selection.from, selection.to)\n return\n }\n\n ctx.get(linkTooltipAPI.key).addLink(selection.from, selection.to)\n hide?.()\n })}\n >\n ${config?.linkIcon?.() ?? linkIcon}\n </button>\n </host>`\n}\n\ntoolbarComponent.props = {\n ctx: Object,\n hide: Function,\n show: Boolean,\n config: Object,\n}\n\nexport const ToolbarElement = c(toolbarComponent)\n","import { TooltipProvider, tooltipFactory } from '@milkdown/kit/plugin/tooltip'\nimport type { EditorState, PluginView } from '@milkdown/kit/prose/state'\nimport { TextSelection } from '@milkdown/kit/prose/state'\nimport type { Ctx } from '@milkdown/kit/ctx'\nimport type { EditorView } from '@milkdown/kit/prose/view'\nimport type { AtomicoThis } from 'atomico/types/dom'\nimport type { DefineFeature, Icon } from '../shared'\nimport { defIfNotExists } from '../../utils'\nimport type { ToolbarProps } from './component'\nimport { ToolbarElement } from './component'\n\ninterface ToolbarConfig {\n boldIcon: Icon\n codeIcon: Icon\n italicIcon: Icon\n linkIcon: Icon\n strikethroughIcon: Icon\n}\n\nexport type ToolbarFeatureConfig = Partial<ToolbarConfig>\n\nconst toolbar = tooltipFactory('CREPE_TOOLBAR')\n\nclass ToolbarView implements PluginView {\n #tooltipProvider: TooltipProvider\n #content: AtomicoThis<ToolbarProps>\n constructor(ctx: Ctx, view: EditorView, config?: ToolbarFeatureConfig) {\n const content = new ToolbarElement()\n this.#content = content\n this.#content.ctx = ctx\n this.#content.hide = this.hide\n this.#content.config = config\n\n this.#tooltipProvider = new TooltipProvider({\n content: this.#content,\n debounce: 20,\n offset: 10,\n shouldShow(view: EditorView) {\n const { doc, selection } = view.state\n const { empty, from, to } = selection\n\n const isEmptyTextBlock = !doc.textBetween(from, to).length && selection instanceof TextSelection\n\n const isNotTextBlock = !(selection instanceof TextSelection)\n\n const activeElement = (view.dom.getRootNode() as ShadowRoot | Document).activeElement\n const isTooltipChildren = content.contains(activeElement)\n\n const notHasFocus = !view.hasFocus() && !isTooltipChildren\n\n const isReadonly = !view.editable\n\n if (\n notHasFocus\n || isNotTextBlock\n || empty\n || isEmptyTextBlock\n || isReadonly\n )\n return false\n\n return true\n },\n })\n this.#tooltipProvider.onShow = () => {\n this.#content.show = true\n }\n this.#tooltipProvider.onHide = () => {\n this.#content.show = false\n }\n this.update(view)\n }\n\n update = (view: EditorView, prevState?: EditorState) => {\n this.#tooltipProvider.update(view, prevState)\n }\n\n destroy = () => {\n this.#tooltipProvider.destroy()\n this.#content.remove()\n }\n\n hide = () => {\n this.#tooltipProvider.hide()\n }\n}\n\ndefIfNotExists('milkdown-toolbar', ToolbarElement)\nexport const defineFeature: DefineFeature<ToolbarFeatureConfig> = (editor, config) => {\n editor\n .config((ctx) => {\n ctx.set(toolbar.key, {\n view: view => new ToolbarView(ctx, view, config),\n })\n })\n .use(toolbar)\n}\n"],"names":["useUpdate","useEffect","editorViewCtx","html","strongSchema","ctx","commandsCtx","toggleStrongCommand","boldIcon","emphasisSchema","toggleEmphasisCommand","italicIcon","strikethroughSchema","toggleStrikethroughCommand","strikethroughIcon","inlineCodeSchema","toggleInlineCodeCommand","codeIcon","linkSchema","linkTooltipAPI","linkIcon","c","tooltipFactory","TooltipProvider","view","TextSelection","defIfNotExists"],"mappings":"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"}